--- linux-ppc-3.8.0.orig/Makefile +++ linux-ppc-3.8.0/Makefile @@ -1,8 +1,8 @@ VERSION = 3 PATCHLEVEL = 8 -SUBLEVEL = 0 -EXTRAVERSION = -NAME = Unicycling Gorilla +SUBLEVEL = 13 +EXTRAVERSION = .8 +NAME = Remoralised Urchins Update # *DOCUMENTATION* # To see a list of typical targets execute "make help" @@ -349,6 +349,12 @@ AFLAGS_KERNEL = CFLAGS_GCOV = -fprofile-arcs -ftest-coverage +# Prefer linux-backports-modules +ifneq ($(KBUILD_SRC),) +ifneq ($(shell if test -e $(KBUILD_OUTPUT)/ubuntu-build; then echo yes; fi),yes) +UBUNTUINCLUDE := -I/usr/src/linux-headers-lbm-$(KERNELRELEASE) +endif +endif # Use USERINCLUDE when you must reference the UAPI directories only. USERINCLUDE := \ @@ -361,12 +367,16 @@ # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option LINUXINCLUDE := \ + $(UBUNTUINCLUDE) \ -I$(srctree)/arch/$(hdr-arch)/include \ -Iarch/$(hdr-arch)/include/generated \ $(if $(KBUILD_SRC), -I$(srctree)/include) \ -Iinclude \ $(USERINCLUDE) +# UBUNTU: Include our third party driver stuff too +LINUXINCLUDE += -Iubuntu/include $(if $(KBUILD_SRC),-I$(srctree)/ubuntu/include) + KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ @@ -518,7 +528,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/ @@ -912,6 +922,7 @@ $(error Headers not exportable for the $(SRCARCH) architecture)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= PHONY += headers_check_all headers_check_all: headers_install_all @@ -921,6 +932,7 @@ headers_check: headers_install $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= HDRCHECK=1 # --------------------------------------------------------------------------- # Modules --- linux-ppc-3.8.0.orig/dropped.txt +++ linux-ppc-3.8.0/dropped.txt @@ -0,0 +1,50 @@ +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 +UBUNTU: SAUCE: (no-up) PM report driver and device suspend/resume times. +UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content until vt switch +UBUNTU: SAUCE: vt -- allow grub to request automatic vt_handoff +UBUNTU: SAUCE: headers_install: fix #include "..." usage for userspace +UBUNTU: SAUCE: Remove redundant sun/cassini firmware +UBUNTU: SAUCE: Yama: add link restrictions +UBUNTU: SAUCE: security: unconditionally chain to Yama LSM +UBUNTU: SAUCE: firmware: Remove cxgb3 files duplicated in linux-firmware +UBUNTU: SAUCE: firmware: Remove matrox files duplicated in linux-firmware +UBUNTU: SAUCE: firmware: Remove r128 files duplicated in linux-firmware +UBUNTU: SAUCE: firmware: Remove radeon files duplicated in linux-firmware +UBUNTU: SAUCE: drm/i915: Explicitly disable RC6 for certain models + +Dropped for 3.8-rc1 rebase: +UBUNTU: SAUCE: async_populate_rootfs: move rootfs init earlier +UBUNTU: SAUCE: async_populate_rootfs: fix build warnings +UBUNTU: SAUCE: input: add a key driver for highbank +UBUNTU: SAUCE: Remove redundant emi26 firmware +UBUNTU: SAUCE: Remove redundant 3com/typhoon.bin firmware +UBUNTU: SAUCE: ata_piix: add a disable_driver option +UBUNTU: SAUCE: net: calxedaxgmac: use relaxed i/o accessors in rx and tx paths +UBUNTU: SAUCE: net: calxedaxgmac: drop some unnecessary register writes +UBUNTU: SAUCE: net: calxedaxgmac: rework transmit ring handling +Revert "UBUNTU: SAUCE: input: add a key driver for highbank" +Revert "UBUNTU: SAUCE: async_populate_rootfs: fix build warnings" +Revert "UBUNTU: SAUCE: async_populate_rootfs: move rootfs init earlier" +UBUNTU: ubuntu: AUFS +UBUNTU: SAUCE: omap3 clocks .dev_id = NULL +UBUNTU: SAUCE: efi: Add support for a UEFI variable filesystem +UBUNTU: SAUCE: efi: add efivars kobject to efi sysfs folder +UBUNTU: SAUCE: efivars: efivarfs_create() ensure we drop our reference on inode on error +Revert "UBUNTU: ubuntu: AUFS" +UBUNTU: ubuntu: AUFS (no-squash) -- aufs3-standalone.patch + - apw: this is needed, wiggled a version of this back on +Revert "UBUNTU: SAUCE: omap3 clocks .dev_id = NULL" +UBUNTU: SAUCE: Remove emi62 files duplicated in linux-firmware +UBUNTU: SAUCE: Remove whiteheat files duplicated in linux-firmware +UBUNTU: SAUCE: firmware: Remove last vestiges of dabusb +UBUNTU: SAUCE: fsnotify: use reference counting for groups +UBUNTU: SAUCE: fsnotify: pass group to fsnotify_destroy_mark() +UBUNTU: SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and fsnotify_remove_mark() +UBUNTU: SAUCE: drm: Fix possible EDID memory allocation oops +UBUNTU: SAUCE: i915: intel_set_mode: Reduce stack allocation from 500 bytes to 2 pointers +Revert "[SCSI] sd: Implement support for WRITE SAME" +Revert "Revert "[SCSI] sd: Implement support for WRITE SAME"" +exec: use -ELOOP for max recursion depth + --- linux-ppc-3.8.0.orig/MAINTAINERS +++ linux-ppc-3.8.0/MAINTAINERS @@ -5666,6 +5666,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 --- linux-ppc-3.8.0.orig/tools/hv/Makefile +++ linux-ppc-3.8.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-ppc-3.8.0.orig/tools/hv/hv_kvp_daemon.8 +++ linux-ppc-3.8.0/tools/hv/hv_kvp_daemon.8 @@ -0,0 +1,26 @@ +.\" This page Copyright (C) 2012 Andy Whitcroft +.\" Distributed under the GPL v2 or later. +.TH HV_KVP_DAEMON 8 +.SH NAME +hv_kvp_daemon \- Hyper-V Key Value Pair daemon +.SH SYNOPSIS +.ft B +.B hv_kvp_daemon +.br +.SH DESCRIPTION +\fBhv_kvp_daemon\fP +is the userspace component of the Hyper-V key value pair functionality, +communicating via a netlink socket with the kernel HV-KVP driver. +This pairing allows the Hyper-V host to pass configuration information +(such as IP addresses) to the guest and allows the host to obtain guest +version information. + +.SH FILES +.ta +.nf +/var/opt/hyperv/.kvp_pool_* +.fi + +.SH AUTHORS +.nf +Written by K. Y. Srinivasan --- linux-ppc-3.8.0.orig/tools/hv/hv_kvp_daemon.c +++ linux-ppc-3.8.0/tools/hv/hv_kvp_daemon.c @@ -35,7 +35,7 @@ #include #include #include -#include +#include "../../include/linux/hyperv.h" #include #include #include @@ -1012,9 +1012,10 @@ if (sn_offset == 0) strcpy(sn_str, cidr_mask); - else + else { + strcat((char *)ip_buffer->sub_net, ";"); strcat(sn_str, cidr_mask); - strcat((char *)ip_buffer->sub_net, ";"); + } sn_offset += strlen(sn_str) + 1; } @@ -1423,7 +1424,9 @@ char *if_name; struct hv_kvp_ipaddr_value *kvp_ip_val; +#if 0 /* It's much easier to manage from upstart if we don't fork */ daemon(1, 0); +#endif openlog("KVP", 0, LOG_USER); syslog(LOG_INFO, "KVP starting; pid is:%d", getpid()); /* --- linux-ppc-3.8.0.orig/tools/perf/Makefile +++ linux-ppc-3.8.0/tools/perf/Makefile @@ -276,13 +276,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 $(OUTPUT)util/pmu-bison.c $(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-ppc-3.8.0.orig/tools/perf/ui/hist.c +++ linux-ppc-3.8.0/tools/perf/ui/hist.c @@ -463,11 +463,15 @@ if (!perf_hpp__format[i].cond) continue; + /* + * If there's no field_sep, we still need + * to display initial ' '. + */ if (!sep || !first) { ret = scnprintf(hpp->buf, hpp->size, "%s", sep ?: " "); advance_hpp(hpp, ret); + } else first = false; - } if (color && perf_hpp__format[i].color) ret = perf_hpp__format[i].color(hpp, he); --- linux-ppc-3.8.0.orig/tools/perf/scripts/python/net_dropmonitor.py +++ linux-ppc-3.8.0/tools/perf/scripts/python/net_dropmonitor.py @@ -40,9 +40,9 @@ def get_sym(sloc): loc = int(sloc) - for i in kallsyms: - if (i['loc'] >= loc): - return (i['name'], i['loc']-loc) + for i in kallsyms[::-1]: + if loc >= i['loc']: + return (i['name'], loc - i['loc']) return (None, 0) def print_drop_table(): @@ -64,7 +64,7 @@ # called from perf, when it finds a correspoinding event def skb__kfree_skb(name, context, cpu, sec, nsec, pid, comm, - skbaddr, protocol, location): + skbaddr, location, protocol): slocation = str(location) try: drop_log[slocation] = drop_log[slocation] + 1 --- linux-ppc-3.8.0.orig/tools/perf/util/parse-events.y +++ linux-ppc-3.8.0/tools/perf/util/parse-events.y @@ -1,5 +1,4 @@ %pure-parser -%name-prefix "parse_events_" %parse-param {void *_data} %parse-param {void *scanner} %lex-param {void* scanner} --- linux-ppc-3.8.0.orig/tools/perf/util/pmu.y +++ linux-ppc-3.8.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-ppc-3.8.0.orig/tools/usb/ffs-test.c +++ linux-ppc-3.8.0/tools/usb/ffs-test.c @@ -38,7 +38,7 @@ #include #include -#include "../../include/linux/usb/functionfs.h" +#include "../../include/uapi/linux/usb/functionfs.h" /******************** Little Endian Handling ********************************/ --- linux-ppc-3.8.0.orig/tools/power/x86/turbostat/turbostat.c +++ linux-ppc-3.8.0/tools/power/x86/turbostat/turbostat.c @@ -1397,6 +1397,10 @@ case 0x2D: /* SNB Xeon */ case 0x3A: /* IVB */ case 0x3E: /* IVB Xeon */ + case 0x3C: /* HSW */ + case 0x3F: /* HSW */ + case 0x45: /* HSW */ + case 0x46: /* HSW */ return 1; case 0x2E: /* Nehalem-EX Xeon - Beckton */ case 0x2F: /* Westmere-EX Xeon - Eagleton */ @@ -1488,6 +1492,10 @@ switch (model) { case 0x2A: case 0x3A: + case 0x3C: /* HSW */ + case 0x3F: /* HSW */ + case 0x45: /* HSW */ + case 0x46: /* HSW */ do_rapl = RAPL_PKG | RAPL_CORES | RAPL_GFX; break; case 0x2D: @@ -1724,6 +1732,10 @@ case 0x2D: case 0x3A: /* IVB */ case 0x3E: /* IVB Xeon */ + case 0x3C: /* HSW */ + case 0x3F: /* HSW */ + case 0x45: /* HSW */ + case 0x46: /* HSW */ return 1; } return 0; @@ -2248,7 +2260,7 @@ cmdline(argc, argv); if (verbose) - fprintf(stderr, "turbostat v3.0 November 23, 2012" + fprintf(stderr, "turbostat v3.1 January 8, 2013" " - Len Brown \n"); turbostat_init(); --- linux-ppc-3.8.0.orig/debian.ppc/NOTES +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/control.stub +++ linux-ppc-3.8.0/debian.ppc/control.stub @@ -0,0 +1,383 @@ +Source: linux-ppc +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), device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison, libunwind8-dev, openssl, u-boot-tools [powerpc] +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-raring.git + +Package: linux-ppc-source-3.8.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-ppc-source, linux-ppc-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.8.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.8.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-ppc-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-ppc-doc-3 +Replaces: linux-ppc-doc-3 +Description: Linux kernel specific documentation for version 3.8.0 + This package provides the various documents in the 3.8.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-ppc-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-ppc-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-ppc-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.8.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: linux-ppc-headers-3.8.0-16 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 3.8.0 + This package provides kernel header files for version 3.8.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details + +Package: linux-ppc-tools-3.8.0-16 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-ppc-tools-common +Description: Linux kernel version specific tools for version 3.8.0-16 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.8.0-16 on + PowerPC (32 bit userspace). + + +Package: linux-image-3.8.0-16-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc64-smp +Description: Linux kernel image for version 3.8.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.8.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc64-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.8.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.8.0-16-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-kexec +Suggests: fdutils, linux-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc-e500 +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.8.0-16-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc-e500, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.8.0-16-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides kernel header files for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc-e500-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides a kernel debug image for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.8.0-16-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-kexec +Suggests: fdutils, linux-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc-e500mc +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.8.0-16-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc-e500mc, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.8.0-16-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 32-bit Freescale Power e500mc + This package provides kernel header files for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc-e500mc-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 32-bit Freescale Power e500mc + This package provides a kernel debug image for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.8.0-16-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-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc-smp +Description: Linux kernel image for version 3.8.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.8.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.8.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-ppc-3.8.0.orig/debian.ppc/control.stub.in +++ linux-ppc-3.8.0/debian.ppc/control.stub.in @@ -0,0 +1,79 @@ +Source: linux-ppc +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), device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison, libunwind8-dev, openssl, u-boot-tools [powerpc] +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-raring.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 PGKVER. + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version PKGVER + This package provides kernel header files for version PKGVER, for sites + that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details + +Package: SRCPKGNAME-tools-PKGVER-ABINUM +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, SRCPKGNAME-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + --- linux-ppc-3.8.0.orig/debian.ppc/copyright +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/control +++ linux-ppc-3.8.0/debian.ppc/control @@ -0,0 +1,383 @@ +Source: linux-ppc +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), device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison, libunwind8-dev, openssl, u-boot-tools [powerpc] +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-raring.git + +Package: linux-ppc-source-3.8.0 +Architecture: all +Section: devel +Priority: optional +Provides: linux-ppc-source, linux-ppc-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.8.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.8.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-ppc-doc +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: linux-ppc-doc-3 +Replaces: linux-ppc-doc-3 +Description: Linux kernel specific documentation for version 3.8.0 + This package provides the various documents in the 3.8.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-ppc-doc/00-INDEX for a list of what is + contained in each file. + +Package: linux-ppc-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-ppc-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.8.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PGKVER. + +Package: linux-ppc-headers-3.8.0-16 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 3.8.0 + This package provides kernel header files for version 3.8.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details + +Package: linux-ppc-tools-3.8.0-16 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-ppc-tools-common +Description: Linux kernel version specific tools for version 3.8.0-16 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.8.0-16 on + PowerPC (32 bit userspace). + + +Package: linux-image-3.8.0-16-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: yaboot +Suggests: fdutils, linux-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc64-smp +Description: Linux kernel image for version 3.8.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc64-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.8.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc64-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.8.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.8.0-16-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-kexec +Suggests: fdutils, linux-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc-e500 +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.8.0-16-powerpc-e500 +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc-e500, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500v1 and e500v2 processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.8.0-16-powerpc-e500 +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides kernel header files for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc-e500-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 32-bit Freescale Power e500v1 and e500v2 + This package provides a kernel debug image for version 3.8.0 on + 32-bit Freescale Power e500v1 and e500v2. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.8.0-16-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), module-init-tools (>= 3.3-pre11-4ubuntu3) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-kexec +Suggests: fdutils, linux-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc-e500mc +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.8.0-16-powerpc-e500mc +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc-e500mc, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 32-bit Freescale Power e500mc + This package contains the Linux kernel image for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports 32-bit Freescale Power e500mc processors. + . + Geared toward server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-powerpc-e500mc meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.8.0-16-powerpc-e500mc +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 32-bit Freescale Power e500mc + This package provides kernel header files for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc-e500mc-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 32-bit Freescale Power e500mc + This package provides a kernel debug image for version 3.8.0 on + 32-bit Freescale Power e500mc. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-image-3.8.0-16-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-ppc-doc-3.8.0 | linux-ppc-source-3.8.0, linux-ppc-tools, linux-headers-3.8.0-16-powerpc-smp +Description: Linux kernel image for version 3.8.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.8.0-16-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.8.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.8.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.8.0-16-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-ppc-headers-3.8.0-16, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.8.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.8.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-ppc-headers-3.8.0-16/debian.README.gz for details. + +Package: linux-image-3.8.0-16-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.8.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.8.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-ppc-3.8.0.orig/debian.ppc/changelog.historical +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/changelog +++ linux-ppc-3.8.0/debian.ppc/changelog @@ -0,0 +1,11590 @@ +linux-ppc (3.8.0-16.22) raring; urgency=low + + * Release Tracking Bug + - LP: #1223627 + + [ Ubuntu: 3.8.0-31.46 ] + + * Release Tracking Bug + - LP: #1223406 + * UBUNTU: [Config] KUSER_HELPERS=y for armhf + * Revert "cpuidle: Quickly notice prediction failure in general case" + - LP: #1221794 + * Revert "cpuidle: Quickly notice prediction failure for repeat mode" + - LP: #1221794 + * Revert "zram: use zram->lock to protect zram_free_page() in swap free + notify path" + - LP: #1215513 + * x86 thermal: Delete power-limit-notification console messages + - LP: #1215748 + * x86 thermal: Disable power limit notification interrupt by default + - LP: #1215748 + * mwifiex: do not create AP and P2P interfaces upon driver loading + - LP: #1212720 + * ARM: 7810/1: perf: Fix array out of bounds access in + armpmu_map_hw_event() + - LP: #1216442 + - CVE-2013-4254 + * ARM: 7809/1: perf: fix event validation for software group leaders + - LP: #1216442 + - CVE-2013-4254 + * veth: reduce stat overhead + - LP: #1201869 + * veth: extend device features + - LP: #1201869 + * veth: avoid a NULL deref in veth_stats_one + - LP: #1201869 + * veth: fix a NULL deref in netif_carrier_off + - LP: #1201869 + * veth: fix NULL dereference in veth_dellink() + - LP: #1201869 + * Bluetooth: Add support for Atheros [0cf3:3121] + - LP: #1202477 + * uvcvideo: quirk PROBE_DEF for Dell SP2008WFP monitor. + - LP: #1217957 + * usb: dwc3: gadget: don't prevent gadget from being probed if we fail + - LP: #1221794 + * usb: dwc3: fix wrong bit mask in dwc3_event_type + - LP: #1221794 + * ASoC: max98088 - fix element type of the register cache. + - LP: #1221794 + * ata: Fix DVD not dectected at some platform with Wellsburg PCH + - LP: #1221794 + * Tools: hv: KVP: Fix a bug in IPV6 subnet enumeration + - LP: #1221794 + * ALSA: usb-audio: 6fire: return correct XRUN indication + - LP: #1221794 + * usb: serial: cp210x: Add USB ID for Netgear Switches embedded serial + adapter + - LP: #1221794 + * USB: storage: Add MicroVault Flash Drive to unusual_devs + - LP: #1221794 + * USB: misc: Add Manhattan Hi-Speed USB DVI Converter to sisusbvga + - LP: #1221794 + * USB: option: append Petatel NP10T device to GSM modems list + - LP: #1221794 + * usb: cp210x support SEL C662 Vendor/Device + - LP: #1221794 + * USB: cp210x: add MMB and PI ZigBee USB Device Support + - LP: #1221794 + * USB: EHCI: Fix resume signalling on remote wakeup + - LP: #1221794 + * drm/radeon: fix endian issues with DP handling (v3) + - LP: #1221794 + * drm/radeon: Another card with wrong primary dac adj + - LP: #1221794 + * drm/radeon: improve dac adjust heuristics for legacy pdac + - LP: #1221794 + * drm/radeon: fix combios tables on older cards + - LP: #1221794 + * ARM: footbridge: fix overlapping PCI mappings + - LP: #1221794 + * [SCSI] isci: Fix a race condition in the SSP task management path + - LP: #1221794 + * [SCSI] qla2xxx: Properly set the tagging for commands. + - LP: #1221794 + * [SCSI] sd: fix crash when UA received on DIF enabled device + - LP: #1221794 + * nfsd: nfsd_open: when dentry_open returns an error do not propagate as + struct file + - LP: #1221794 + * USB: option: add D-Link DWM-152/C1 and DWM-156/C1 + - LP: #1221794 + * staging: comedi: COMEDI_CANCEL ioctl should wake up read/write + - LP: #1221794 + * staging: comedi: fix a race between do_cmd_ioctl() and read/write + - LP: #1221794 + * staging: android: logger: Correct write offset reset on error + - LP: #1221794 + * usb: option: add TP-LINK MA260 + - LP: #1221794 + * USB: ti_usb_3410_5052: fix dynamic-id matching + - LP: #1221794 + * usb: serial: option: Add ONYX 3G device support + - LP: #1221794 + * md/raid10: remove use-after-free bug. + - LP: #1221794 + * md/raid5: fix interaction of 'replace' and 'recovery'. + - LP: #1221794 + * drm/i915: initialize gt_lock early with other spin locks + - LP: #1221794 + * xhci: Avoid NULL pointer deref when host dies. + - LP: #1221794 + * usb: host: xhci: Enable XHCI_SPURIOUS_SUCCESS for all controllers with + xhci 1.0 + - LP: #1221794 + * xhci: fix null pointer dereference on ring_doorbell_for_active_rings + - LP: #1221794 + * usb: serial: option: blacklist ONDA MT689DC QMI interface + - LP: #1221794 + * usb: serial: option: add Olivetti Olicard 200 + - LP: #1221794 + * usb: serial: option.c: remove ONDA MT825UP product ID fromdriver + - LP: #1221794 + * USB: mos7840: fix memory leak in open + - LP: #1221794 + * usb: Clear both buffers when clearing a control transfer TT buffer. + - LP: #1221794 + * nl80211: fix mgmt tx status and testmode reporting for netns + - LP: #1221794 + * mac80211: fix ethtool stats for non-station interfaces + - LP: #1221794 + * mac80211: fix duplicate retransmission detection + - LP: #1221794 + * iwlwifi: mvm: refuse connection to APs with BI < 16 + - LP: #1221794 + * iwlwifi: add DELL SKU for 5150 HMC + - LP: #1221794 + * ath9k_htc: do some initial hardware configuration + - LP: #1221794 + * ath9k_htc: reboot firmware if it was loaded + - LP: #1221794 + * ARM: 7790/1: Fix deferred mm switch on VIVT processors + - LP: #1221794 + * ARM: 7791/1: a.out: remove partial a.out support + - LP: #1221794 + * mwifiex: Add missing endian conversion. + - LP: #1221794 + * USB: mos7840: fix race in register handling + - LP: #1221794 + * USB: mos7840: fix device-type detection + - LP: #1221794 + * USB: mos7840: fix race in led handling + - LP: #1221794 + * serial/mxs-auart: fix race condition in interrupt handler + - LP: #1221794 + * serial: mxs: fix buffer overflow + - LP: #1221794 + * serial/mxs-auart: increase time to wait for transmitter to become idle + - LP: #1221794 + * serial: arc_uart: Fix module alias + - LP: #1221794 + * firewire: fix libdc1394/FlyCap2 iso event regression + - LP: #1221794 + * USB: mos7840: fix pointer casts + - LP: #1221794 + * ixgbe: Fix Tx Hang issue with lldpad on 82598EB + - LP: #1221794 + * ALSA: compress: fix the return value for SNDRV_COMPRESS_VERSION + - LP: #1221794 + * rt2x00: fix stop queue + - LP: #1221794 + * USB: serial: ftdi_sio: add more RT Systems ftdi devices + - LP: #1221794 + * drm/nouveau: fix semaphore dmabuf obj + - LP: #1221794 + * ACPI / battery: Fix parsing _BIX return value + - LP: #1221794 + * drm/radeon/atom: initialize more atom interpretor elements to 0 + - LP: #1221794 + * drm/i915: fix missed hunk after GT access breakage + - LP: #1221794 + * ARM: poison the vectors page + - LP: #1221794 + * ARM: poison memory between kuser helpers + - LP: #1221794 + * ARM: move vector stubs + - LP: #1221794 + * ARM: use linker magic for vectors and vector stubs + - LP: #1221794 + * mm: mempolicy: fix mbind_range() && vma_adjust() interaction + - LP: #1221794 + * powerpc/windfarm: Fix noisy slots-fan on Xserve (rm31) + - LP: #1221794 + * drm/i915: Make data/link N value power of two + - LP: #1221794 + * virtio/console: Quit from splice_write if pipe->nrbufs is 0 + - LP: #1221794 + * virtio/console: Add pipe_lock/unlock for splice_write + - LP: #1221794 + * x86/iommu/vt-d: Expand interrupt remapping quirk to cover x58 chipset + - LP: #1221794 + * s390/bitops: fix find_next_bit_left + - LP: #1221794 + * x86, fpu: correct the asm constraints for fxsave, unbreak mxcsr.daz + - LP: #1221794 + * ext4: make sure group number is bumped after a inode allocation race + - LP: #1221794 + * ext4: destroy ext4_es_cachep on module unload + - LP: #1221794 + * virtio: console: fix race with port unplug and open/close + - LP: #1221794 + * virtio: console: fix race in port_fops_open() and port unplug + - LP: #1221794 + * virtio: console: clean up port data immediately at time of unplug + - LP: #1221794 + * virtio: console: fix raising SIGIO after port unplug + - LP: #1221794 + * virtio: console: return -ENODEV on all read operations after unplug + - LP: #1221794 + * KVM: s390: move kvm_guest_enter,exit closer to sie + - LP: #1221794 + * ext4: fix retry handling in ext4_ext_truncate() + - LP: #1221794 + * spi: spi-davinci: Fix direction in dma_map_single() + - LP: #1221794 + * [SCSI] megaraid_sas: megaraid_sas driver init fails in kdump kernel + - LP: #1221794 + * ACPI / PM: Fix /proc/acpi/wakeup for devices w/o bus or parent + - LP: #1221794 + * ACPI / PM: Walk physical_node_list under physical_node_lock + - LP: #1221794 + * regmap: Add missing header for !CONFIG_REGMAP stubs + - LP: #1221794 + * userns: unshare_userns(&cred) should not populate cred on failure + - LP: #1221794 + * userns: limit the maximum depth of user_namespace->parent chain + - LP: #1221794 + * drm/cirrus: Invalidate page tables when pinning a BO + - LP: #1221794 + * drm/mgag200: Invalidate page tables when pinning a BO + - LP: #1221794 + * drm/ast: invalidate page tables when pinning a BO + - LP: #1221794 + * drm/i915: do not disable backlight on vgaswitcheroo switch off + - LP: #1221794 + * ALSA: 6fire: fix DMA issues with URB transfer_buffer usage + - LP: #1221794 + * drm: Don't pass negative delta to ktime_sub_ns() + - LP: #1221794 + * ALSA: usb-audio: do not trust too-big wMaxPacketSize values + - LP: #1221794 + * hwmon: (adt7470) Fix incorrect return code check + - LP: #1221794 + * powerpc: On POWERNV enable PPC_DENORMALISATION by default + - LP: #1221794 + * Btrfs: release both paths before logging dir/changed extents + - LP: #1221794 + * sched: Ensure update_cfs_shares() is called for parents of + continuously-running tasks + - LP: #1221794 + * cifs: extend the buffer length enought for sprintf() using + - LP: #1221794 + * perf/x86: Fix intel QPI uncore event definitions + - LP: #1221794 + * cifs: don't instantiate new dentries in readdir for inodes that need to + be revalidated immediately + - LP: #1221794 + * ext4: allow the mount options nodelalloc and data=journal + - LP: #1221794 + * ext4: fix mount/remount error messages for incompatible mount options + - LP: #1221794 + * microblaze: fix clone syscall + - LP: #1221794 + * fs/proc/task_mmu.c: fix buffer overflow in add_page_map() + - LP: #1221794 + * arcnet: cleanup sizeof parameter + - LP: #1221794 + * sysctl net: Keep tcp_syn_retries inside the boundary + - LP: #1221794 + * ipv6: take rtnl_lock and mark mrt6 table as freed on namespace cleanup + - LP: #1221794 + * usbnet: do not pretend to support SG/TSO + - LP: #1221794 + * net_sched: Fix stack info leak in cbq_dump_wrr(). + - LP: #1221794 + * af_key: more info leaks in pfkey messages + - LP: #1221794 + * atl1c: use custom skb allocator + - LP: #1221794 + * net_sched: info leak in atm_tc_dump_class() + - LP: #1221794 + * ndisc: Add missing inline to ndisc_addr_option_pad + - LP: #1221794 + * 8139cp: Add dma_mapping_error checking + - LP: #1221794 + * net/mlx4_core: VFs must ignore the enable_64b_cqe_eqe module param + - LP: #1221794 + * Linux 3.8.13.7 + - LP: #1221794 + * mac80211: fix infinite loop in ieee80211_determine_chantype + - LP: #1221794 + * cfg80211/mac80211: disconnect on suspend + - LP: #1221794 + * cfg80211: fix P2P GO interface teardown + - LP: #1221794 + * iwl4965: set power mode early + - LP: #1221794 + * iwl4965: reset firmware after rfkill off + - LP: #1221794 + * ASoC: cs42l52: Reorder Min/Max and update to SX_TLV for Beep Volume + - LP: #1221794 + * can: pcan_usb: fix wrong memcpy() bytes length + - LP: #1221794 + * ALSA: 6fire: make buffers DMA-able (pcm) + - LP: #1221794 + * ALSA: 6fire: make buffers DMA-able (midi) + - LP: #1221794 + * jbd2: Fix use after free after error in jbd2_journal_dirty_metadata() + - LP: #1221794 + * USB: EHCI: accept very late isochronous URBs + - LP: #1221794 + * USB-Serial: Fix error handling of usb_wwan + - LP: #1221794 + * USB: mos7840: fix big-endian probe + - LP: #1221794 + * USB: adutux: fix big-endian device-type reporting + - LP: #1221794 + * USB: ti_usb_3410_5052: fix big-endian firmware handling + - LP: #1221794 + * m68k/atari: ARAnyM - Fix NatFeat module support + - LP: #1221794 + * m68k: Truncate base in do_div() + - LP: #1221794 + * usb: add two quirky touchscreen + - LP: #1221794 + * USB: mos7720: fix broken control requests + - LP: #1221794 + * USB: keyspan: fix null-deref at disconnect and release + - LP: #1221794 + * ASoC: tegra: fix Tegra30 I2S capture parameter setup + - LP: #1221794 + * ALSA: hda - Add a fixup for Gateway LT27 + - LP: #1221794 + * mm: fix the TLB range flushed when __tlb_remove_page() runs out of + slots + - LP: #1221794 + * arch, mm: Remove tlb_fast_mode() + - LP: #1221794 + * Fix TLB gather virtual address range invalidation corner cases + - LP: #1221794 + * s390: Fix broken build + - LP: #1221794 + * x86 get_unmapped_area: Access mmap_legacy_base through mm_struct member + - LP: #1221794 + * Bluetooth: Add support for Foxconn/Hon Hai [0489:e04d] + - LP: #1221794 + * Bluetooth: ath3k: Add support for Fujitsu Lifebook UH5x2 [04c5:1330] + - LP: #1221794 + * Bluetooth: ath3k: Add support for ID 0x13d3/0x3402 + - LP: #1221794 + * Bluetooth: Add support for Atheros [0cf3:e003] + - LP: #1221794 + * iwlwifi: dvm: fix calling ieee80211_chswitch_done() with NULL + - LP: #1221794 + * iwlwifi: pcie: disable L1 Active after pci_enable_device + - LP: #1221794 + * zd1201: do not use stack as URB transfer_buffer + - LP: #1221794 + * Hostap: copying wrong data prism2_ioctl_giwaplist() + - LP: #1221794 + * ARM: at91/DT: fix at91sam9n12ek memory node + - LP: #1221794 + * drm/i915: Move num_pipes to intel info + - LP: #1221794 + * drm/i915: Don't deref pipe->cpu_transcoder in the hangcheck code + - LP: #1221794 + * drm/i915: Invalidate TLBs for the rings after a reset + - LP: #1221794 + * libata: apply behavioral quirks to sil3826 PMP + - LP: #1221794 + * ARM: davinci: nand: specify ecc strength + - LP: #1221794 + * ARM: allow kuser helpers to be removed from the vector page + - LP: #1221794 + * ARM: 7816/1: CONFIG_KUSER_HELPERS: fix help text + - LP: #1221794 + * arm64: perf: fix array out of bounds access in armpmu_map_hw_event() + - LP: #1221794 + * arm64: perf: fix event validation for software group leaders + - LP: #1221794 + * sata_fsl: save irqs while coalescing + - LP: #1221794 + * xen/events: initialize local per-cpu mask for all possible events + - LP: #1221794 + * xen/events: mask events when changing their VCPU binding + - LP: #1221794 + * block: Add bio_for_each_segment_all() + - LP: #1221794 + * [SCSI] sg: Fix user memory corruption when SG_IO is interrupted by a + signal + - LP: #1221794 + * of: fdt: fix memory initialization for expanded DT + - LP: #1221794 + * [SCSI] zfcp: fix lock imbalance by reworking request queue locking + - LP: #1221794 + * [SCSI] zfcp: fix schedule-inside-lock in scsi_device list loops + - LP: #1221794 + * drivers/platform/olpc/olpc-ec.c: initialise earlier + - LP: #1221794 + * nilfs2: remove double bio_put() in nilfs_end_bio_write() for + BIO_EOPNOTSUPP error + - LP: #1221794 + * nilfs2: fix issue with counting number of bio requests for + BIO_EOPNOTSUPP error detection + - LP: #1221794 + * Linux 3.8.13.8 + - LP: #1221794 + * drm/nouveau: fix reclocking on nv40 + - LP: #1222898 + * mfd: rtsx: Read vendor setting from config space + - LP: #1201698 + * SAUCE: Bluetooth: use hci_send_cmd instead of usb_control_msg + - LP: #1065400 + + -- Ben Collins Wed, 11 Sep 2013 05:27:42 +0000 + +linux-ppc (3.8.0-15.21) raring; urgency=low + + * Release Tracking Bug + - LP: #1215675 + + [ Ubuntu: 3.8.0-30.44 ] + + * Release Tracking Bug + - LP: #1215596 + * Don't attempt to send extended INQUIRY command if skip_vpd_pages is set + - LP: #1215155 + + [ Ubuntu: 3.8.0-30.43 ] + + * Release Tracking Bug + - LP: #1215095 + * [Packaging] supply perf with appropriate prefix to ensure use of local + config + - LP: #1206200 + - CVE-2013-1060 + * Start new release + * Revert "SAUCE: (no-up) AppArmor: Disable Add PR_{GET,SET}_NO_NEW_PRIVS + to prevent execve from granting privs" + - LP: #1202161 + * SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops + - LP: #1210848 + * SAUCE: (no-up) Revert "SAUCE: (no-up) drm/i915: quirk no PCH_PWM_ENABLE + for Dell XPS13 backlight" + * [Config] Include rbd and kvm in the virtual inclusion list + - LP: #1206961 + * Revert "drm/i915: Workaround incoherence between fences and LLC across + multiple CPUs" + - LP: #1207977 + * xen/blkback: Check device permissions before allowing OP_DISCARD + - LP: #1207977 + * ASoC: sglt5000: Fix the default value of CHIP_SSS_CTRL + - LP: #1207977 + * ASoC: sglt5000: Fix SGTL5000_PLL_FRAC_DIV_MASK + - LP: #1207977 + * drm/i915: Correct obj->mm_list link to + dev_priv->dev_priv->mm.inactive_list + - LP: #1207977 + * drm/i915: fix up ring cleanup for the i830/i845 CS tlb w/a + - LP: #1207977 + * Partially revert "drm/i915: unconditionally use mt forcewake on + hsw/ivb" + - LP: #1207977 + * drm/i915: Fix write-read race with multiple rings + - LP: #1207977 + * drm/i915: merge {i965, sandybridge}_write_fence_reg() + - LP: #1207977 + * drm/i915: Fix incoherence with fence updates on Sandybridge+ + - LP: #1207977 + * drm/i915: rename sdvox_reg to hdmi_reg on HDMI context + - LP: #1207977 + * drm/i915: don't setup hdmi for port D edp in ddi_init + - LP: #1207977 + * drm/i915: Preserve the DDI_A_4_LANES bit from the bios + - LP: #1207977 + * drm/radeon/hdmi: make sure we have an afmt block assigned + - LP: #1207977 + * drm/radeon: allocate SA bo in the requested domain + - LP: #1207977 + * drm/radeon: allow selection of alignment in the sub-allocator + - LP: #1207977 + * ACPI / memhotplug: Fix a stale pointer in error path + - LP: #1207977 + * PM / Sleep: avoid 'autosleep' in shutdown progress + - LP: #1207977 + * ext4: fix error handling in ext4_ext_truncate() + - LP: #1207977 + * radeon kms: do not flush uninitialized hotplug work + - LP: #1207977 + * ALSA: asihpi: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ALSA: atiixp: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ALSA: 6fire: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ALSA: ua101: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ALSA: usx2y: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ALSA: pxa2xx: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ASoC: atmel: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * ASoC: s6000: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * saa7134: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * staging: line6: Fix unlocked snd_pcm_stop() call + - LP: #1207977 + * x86, suspend: Handle CPUs which fail to #GP on RDMSR + - LP: #1207977 + * ALSA: hda - Add new GPU codec ID to snd-hda + - LP: #1207977 + * drm/i915: fix long-standing SNB regression in power consumption after + resume v2 + - LP: #1207977 + * ACPI / video: ignore BIOS initial backlight value for Fujitsu E753 + - LP: #1207977 + * arm64: mm: don't treat user cache maintenance faults as writes + - LP: #1207977 + * Btrfs: fix lock leak when resuming snapshot deletion + - LP: #1207977 + * Btrfs: re-add root to dead root list if we stop dropping it + - LP: #1207977 + * drm/i915: inverted brightness quirk for Acer Aspire 4736Z + - LP: #1207977 + * drm/i915: quirk no PCH_PWM_ENABLE for Dell XPS13 backlight + - LP: #1162026, #1163720, #1207977 + * drm/i915: Serialize almost all register access + - LP: #1207977 + * drm/i915: fix up gt init sequence fallout + - LP: #1207977 + * powerpc/modules: Module CRC relocation fix causes perf issues + - LP: #1207977 + * sparc32: vm_area_struct access for old Sun SPARCs. + - LP: #1207977 + * sparc64 address-congruence property + - LP: #1207977 + * sparc: tsb must be flushed before tlb + - LP: #1207977 + * bridge: fix switched interval for MLD Query types + - LP: #1207977 + * ipv4: Fixed MD5 key lookups when adding/ removing MD5 to/ from TCP + sockets. + - LP: #1207977 + * ipv6: don't call addrconf_dst_alloc again when enable lo + - LP: #1207977 + * macvtap: fix recovery from gup errors + - LP: #1207977 + * ipv6: ip6_sk_dst_check() must not assume ipv6 dst + - LP: #1207977 + * af_key: fix info leaks in notify messages + - LP: #1207977 + * sh_eth: fix unhandled RFE interrupt + - LP: #1207977 + * neighbour: fix a race in neigh_destroy() + - LP: #1207977 + * x25: Fix broken locking in ioctl error paths. + - LP: #1207977 + * net: Swap ver and type in pppoe_hdr + - LP: #1207977 + * vti: remove duplicated code to fix a memory leak + - LP: #1207977 + * ipv6,mcast: always hold idev->lock before mca_lock + - LP: #1207977 + * l2tp: add missing .owner to struct pppox_proto + - LP: #1207977 + * ipv6: call udp_push_pending_frames when uncorking a socket with AF_INET + pending data + - LP: #1207977 + * ipv6: ip6_append_data_mtu did not care about pmtudisc and frag_size + - LP: #1207977 + * sunvnet: vnet_port_remove must call unregister_netdev + - LP: #1207977 + * ifb: fix rcu_sched self-detected stalls + - LP: #1207977 + * tuntap: correctly linearize skb when zerocopy is used + - LP: #1207977 + * macvtap: correctly linearize skb when zerocopy is used + - LP: #1207977 + * ipv6: in case of link failure remove route directly instead of letting + it expire + - LP: #1207977 + * 9p: fix off by one causing access violations and memory corruption + - LP: #1207977 + * dummy: fix oops when loading the dummy failed + - LP: #1207977 + * ifb: fix oops when loading the ifb failed + - LP: #1207977 + * atl1e: fix dma mapping warnings + - LP: #1207977 + * atl1e: unmap partially mapped skb on dma error and free skb + - LP: #1207977 + * ipv4: set transport header earlier + - LP: #1207977 + * tuntap: do not zerocopy if iov needs more pages than MAX_SKB_FRAGS + - LP: #1207977 + * macvtap: do not zerocopy if iov needs more pages than MAX_SKB_FRAGS + - LP: #1207977 + * vlan: fix a race in egress prio management + - LP: #1207977 + * Linux 3.8.13.6 + - LP: #1207977 + * Fix HDIO_DRIVE_* ioctl() Linux 3.9 regression + - LP: #1182247 + * block/partitions: optimize memory allocation in check_partition() + - LP: #1206837 + * ALSA: hda - Add power state filtering + - LP: #1183125 + * ALSA: hda - Yet another fix for broken HSW HDMI pin connections + - LP: #1183125 + * ALSA: hda - Apply pin-enablement workaround to all Haswell HDMI codecs + - LP: #1183125 + + -- Ben Collins Thu, 29 Aug 2013 15:29:14 -0400 + +linux-ppc (3.8.0-14.20) raring; urgency=low + + * Release Tracking Bug + - LP: #1212055 + + [ Ubuntu: 3.8.0-29.42 ] + + * Release Tracking Bug + - LP: #1211934 + * Revert "veth: avoid a NULL deref in veth_stats_one" + * Revert "veth: extend device features" + * Revert "veth: reduce stat overhead" + + [ Ubuntu: 3.8.0-28.41 ] + + * Release Tracking Bug + - LP: #1205373 + * [Config] add iwldvm to nic-modules + - LP: #1204194 + * [Config] added qlcnic driver to d-i modules + - LP: #1196597 + * SAUCE: ARM: highbank: Only touch common coherency control register + fields + - LP: #1196946 + * hp-wmi: add more definitions for new event_id's + - LP: #1152458 + * MFD: rtsx_pcr: Fix probe fail path + - LP: #1201321 + * mfd: rtsx: Add support for RTL8411B + - LP: #1201321 + * veth: reduce stat overhead + - LP: #1201869 + * veth: extend device features + - LP: #1201869 + * veth: avoid a NULL deref in veth_stats_one + - LP: #1201869 + * Input: elantech - fix for newer hardware versions (v7) + - LP: #1166442 + * UBIFS: correct mount message + - LP: #1204666 + * zfcp: fix adapter (re)open recovery while link to SAN is down + - LP: #1204666 + * zfcp: block queue limits with data router + - LP: #1204666 + * zfcp: status read buffers on first adapter open with link down + - LP: #1204666 + * ahci: Add AMD CZ SATA device ID + - LP: #1204666 + * i2c-piix4: Add AMD CZ SMBus device ID + - LP: #1204666 + * sata_highbank: increase retry count but shorten duration for Calxeda + controller + - LP: #1204666 + * clocksource: dw_apb: Fix error check + - LP: #1204666 + * zram: avoid invalid memory access in zram_exit() + - LP: #1204666 + * zram: use zram->lock to protect zram_free_page() in swap free notify + path + - LP: #1204666 + * zram: destroy all devices on error recovery path in zram_init() + - LP: #1204666 + * zram: avoid access beyond the zram device + - LP: #1204666 + * zram: protect sysfs handler from invalid memory access + - LP: #1204666 + * pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status + - LP: #1204666 + * PCI: Fix refcount issue in pci_create_root_bus() error recovery path + - LP: #1204666 + * ahci: remove pmp link online check in FBS EH + - LP: #1204666 + * usb: gadget: f_mass_storage: add missing memory barrier for + thread_wakeup_needed + - LP: #1204666 + * x86, efi: retry ExitBootServices() on failure + - LP: #1204666 + * libata: skip SRST for all SIMG [34]7x port-multipliers + - LP: #1204666 + * ASoC: wm8962: Remove remaining direct register cache accesses + - LP: #1204666 + * xen/pcifront: Deal with toolstack missing 'XenbusStateClosing' state. + - LP: #1204666 + * ACPICA: Do not use extended sleep registers unless HW-reduced bit is + set + - LP: #1204666 + * ALSA: hda - Cache the MUX selection for generic HDMI + - LP: #1204666 + * cgroup: fix umount vs cgroup_cfts_commit() race + - LP: #1204666 + * cgroup: fix umount vs cgroup_event_remove() race + - LP: #1204666 + * xhci: check for failed dma pool allocation + - LP: #1204666 + * powerpc/eeh: Fix fetching bus for single-dev-PE + - LP: #1204666 + * ata_piix: IDE-mode SATA patch for Intel Coleto Creek DeviceIDs + - LP: #1204666 + * ahci: AHCI-mode SATA patch for Intel Coleto Creek DeviceIDs + - LP: #1204666 + * ARM: 7765/1: perf: Record the user-mode PC in the call chain. + - LP: #1204666 + * mpt2sas: Fix for issue Missing delay not getting set during system + bootup + - LP: #1204666 + * mpt2sas: Fix for device scan following host reset could get stuck in a + infinite loop + - LP: #1204666 + * mpt2sas: fix firmware failure with wrong task attribute + - LP: #1204666 + * usb: host: xhci-plat: release mem region while removing module + - LP: #1204666 + * USB: option,qcserial: move Novatel Gobi1K IDs to qcserial + - LP: #1204666 + * powerpc/hw_brk: Fix setting of length for exact mode breakpoints + - LP: #1204666 + * crypto: algboss - Hold ref count on larval + - LP: #1204666 + * x86: Fix /proc/mtrr with base/size more than 44bits + - LP: #1204666 + * futex: Take hugepages into account when generating futex_key + - LP: #1204666 + * pch_uart: Add uart_clk selection for the MinnowBoard + - LP: #1204666 + * perf: Disable monitoring on setuid processes for regular users + - LP: #1204666 + * sd: Fix parsing of 'temporary ' cache mode prefix + - LP: #1204666 + * Handle big endianness in NTLM (ntlmv2) authentication + - LP: #1204666 + * sd: Update WRITE SAME heuristics + - LP: #1204666 + * aacraid: Fix for arrays are going offline in the system. System hangs + - LP: #1204666 + * genirq: Fix can_request_irq() for IRQs without an action + - LP: #1204666 + * timer: Fix jiffies wrap behavior of round_jiffies_common() + - LP: #1204666 + * xen/time: remove blocked time accounting from xen "clockchip" + - LP: #1204666 + * UBIFS: prepare to fix a horrid bug + - LP: #1204666 + * UBIFS: fix a horrid bug + - LP: #1204666 + * powerpc/smp: Section mismatch from smp_release_cpus to __initdata + spinning_secondaries + - LP: #1204666 + * ext4: fix corruption when online resizing a fs with 1K block size + - LP: #1204666 + * jbd2: move superblock checksum calculation to jbd2_write_superblock() + - LP: #1204666 + * ext3,ext4: don't mess with dir_file->f_pos in htree_dirblock_to_tree() + - LP: #1204666 + * jbd2: fix theoretical race in jbd2__journal_restart + - LP: #1204666 + * tick: Prevent uncontrolled switch to oneshot mode + - LP: #1204666 + * md/raid10: fix two bugs affecting RAID10 reshape. + - LP: #1204666 + * HID: apple: Add support for the 2013 Macbook Air + - LP: #1204666 + * Input: bcm5974 - add support for the 2013 MacBook Air + - LP: #1204666 + * drivers/dma/pl330.c: fix locking in pl330_free_chan_resources() + - LP: #1204666 + * ocfs2: xattr: fix inlined xattr reflink + - LP: #1204666 + * block: do not pass disk names as format strings + - LP: #1204666 + - CVE-2013-2851 + * crypto: sanitize argument for format string + - LP: #1204666 + * mm/memory-hotplug: fix lowmem count overflow when offline pages + - LP: #1204666 + * drivers/rtc/rtc-rv3029c2.c: fix disabling AIE irq + - LP: #1204666 + * nbd: correct disconnect behavior + - LP: #1204666 + * hpfs: better test for errors + - LP: #1204666 + * ext3: fix data=journal fast mount/umount hang + - LP: #1204666 + * netfilter: xt_TCPOPTSTRIP: fix possible mangling beyond packet boundary + - LP: #1204666 + * netfilter: ipt_ULOG: fix non-null terminated string in the nf_log path + - LP: #1204666 + * netfilter: add nf_ipv6_ops hook to fix xt_addrtype with IPv6 + - LP: #1204666 + * ipvs: Fix reuse connection if real server is dead + - LP: #1204666 + * netfilter: xt_LOG: fix mark logging for IPv6 packets + - LP: #1204666 + * ipvs: info leak in __ip_vs_get_dest_entries() + - LP: #1204666 + * netfilter: nfnetlink_cttimeout: fix incomplete dumping of objects + - LP: #1204666 + * netfilter: nfnetlink_acct: fix incomplete dumping of objects + - LP: #1204666 + * netfilter: xt_TCPMSS: Fix violation of RFC879 in absence of MSS option + - LP: #1204666 + * netfilter: xt_TCPOPTSTRIP: don't use tcp_hdr() + - LP: #1204666 + * netfilter: xt_TCPMSS: Fix missing fragmentation handling + - LP: #1204666 + * netfilter: xt_TCPMSS: Fix IPv6 default MSS too + - LP: #1204666 + * ipvs: SCTP ports should be writable in ICMP packets + - LP: #1204666 + * tracing: Use current_uid() for critical time tracing + - LP: #1204666 + * ext4: fix overflow when counting used blocks on 32-bit architectures + - LP: #1204666 + * ext4: fix data offset overflow in ext4_xattr_fiemap() on 32-bit archs + - LP: #1204666 + * ext4: fix overflows in SEEK_HOLE, SEEK_DATA implementations + - LP: #1204666 + * ext4: fix data offset overflow on 32-bit archs in + ext4_inline_data_fiemap() + - LP: #1204666 + * iommu/vt-d: add quirk for broken interrupt remapping on 55XX chipsets + - LP: #1204666 + * iommu: Fix compile warnings with forward declarations + - LP: #1204666 + * dma: tegra: avoid channel lock up after free + - LP: #1204666 + * drivers/cdrom/cdrom.c: use kzalloc() for failing hardware + - LP: #1204666 + * printk: Fix rq->lock vs logbuf_lock unlock lock inversion + - LP: #1204666 + * charger-manager: Ensure event is not used as format string + - LP: #1204666 + * drm/radeon: add backlight quirk for hybrid mac + - LP: #1204666 + * b43: ensue that BCMA is "y" when B43 is "y" + - LP: #1204666 + * ath9k_hw: Assign default xlna config for AR9485 + - LP: #1204666 + * ath9k: Do not assign noise for NULL caldata + - LP: #1204666 + * iwlwifi: pcie: fix race in queue unmapping + - LP: #1204666 + * iwlwifi: pcie: wake the queue if stopped when being unmapped + - LP: #1204666 + * rtlwifi: rtl8192cu: Add new USB ID for TP-Link TL-WN8200ND + - LP: #1204666 + * media: dmxdev: remove dvb_ringbuffer_flush() on writer side + - LP: #1204666 + * MIPS: Octeon: Don't clobber bootloader data structures. + - LP: #1204666 + * iommu/amd: Only unmap large pages from the first pte + - LP: #1204666 + * rt2x00: read 5GHz TX power values from the correct offset + - LP: #1204666 + * rtlwifi: rtl8723ae: Fix typo in firmware names + - LP: #1204666 + * writeback: Fix periodic writeback after fs mount + - LP: #1204666 + * drm/i915: Fix context sizes on HSW + - LP: #1204666 + * drm/i915: Only clear write-domains after a successful wait-seqno + - LP: #1204666 + * nfsd4: fix decoding of compounds across page boundaries + - LP: #1204666 + * svcrpc: fix handling of too-short rpc's + - LP: #1204666 + * svcrpc: don't error out on small tcp fragment + - LP: #1204666 + * ARM: shmobile: emev2 GIO3 resource fix + - LP: #1204666 + * Btrfs: fix unlock after free on rewinded tree blocks + - LP: #1204666 + * Btrfs: hold the tree mod lock in __tree_mod_log_rewind + - LP: #1204666 + * Btrfs: only do the tree_mod_log_free_eb if this is our last ref + - LP: #1204666 + * uprobes: Fix return value in error handling path + - LP: #1204666 + * module: do percpu allocation after uniqueness check. No, really! + - LP: #1204666 + * libceph: Fix NULL pointer dereference in auth client code + - LP: #1204666 + - CVE-2013-1059 + * use sensible file nlink values if unprovided + - LP: #1204666 + * drm/nouveau: use vmalloc for pgt allocation + - LP: #1204666 + * drm/nva3/disp: Fix HDMI audio regression + - LP: #1204666 + * ACPI / power: add missing newline to debug messages + - LP: #1204666 + * megaraid_sas: fix memory leak if SGL has zero length entries + - LP: #1204666 + * iscsi-target: Fix tfc_tpg_nacl_auth_cit configfs length overflow + - LP: #1204666 + * mpt3sas: fix for kernel panic when driver loads with HBA conected to + non LUN 0 configured expander + - LP: #1204666 + * mpt3sas: Infinite loops can occur if MPI2_IOCSTATUS_CONFIG_INVALID_PAGE + is not returned + - LP: #1204666 + * parisc: Fix gcc miscompilation in pa_memcpy() + - LP: #1204666 + * ARM: 7778/1: smp_twd: twd_update_frequency need be run on all online + CPUs + - LP: #1204666 + * dm mpath: fix ioctl deadlock when no paths + - LP: #1204666 + * dm ioctl: set noio flag to avoid __vmalloc deadlock + - LP: #1204666 + * dm verity: fix inability to use a few specific devices sizes + - LP: #1204666 + * CIFS: Fix a deadlock when a file is reopened + - LP: #1204666 + * perf: Clone child context from parent context pmu + - LP: #1204666 + * perf: Remove WARN_ON_ONCE() check in __perf_event_enable() for valid + scenario + - LP: #1204666 + * perf: Fix perf_lock_task_context() vs RCU + - LP: #1204666 + * x86, efivars: firmware bug workarounds should be in platform code + - LP: #1204666 + * x86, efi: remove duplicate code in setup_arch() by using, + efi_is_native() + - LP: #1204666 + * x86,efi: Implement efi_no_storage_paranoia parameter + - LP: #1204666 + * Modify UEFI anti-bricking code + - LP: #1204666 + * x86/efi: Fix dummy variable buffer allocation + - LP: #1204666 + * lockd: protect nlm_blocked access in nlmsvc_retry_blocked + - LP: #1204666 + * ext4: don't show usrquota/grpquota twice in /proc/mounts + - LP: #1204666 + * ext4: don't allow ext4_free_blocks() to fail due to ENOMEM + - LP: #1204666 + * svcrdma: underflow issue in decode_write_list() + - LP: #1204666 + * Linux 3.8.13.5 + - LP: #1204666 + * fanotify: info leak in copy_event_to_user() + - LP: #1188356 + - CVE-2013-2148 + * ipv6: only static routes qualify for equal cost multipathing + - LP: #1202990 + - CVE-2013-4125 + * vhost-net: fix use-after-free in vhost_net_flush + - LP: #1202992 + - CVE-2013-4127 + + [ Ubuntu: 3.8.0-27.40 ] + + * UBUNTU: [Config] CONFIG_ARM_ERRATA_643719=y + + -- Ben Collins Thu, 15 Aug 2013 22:25:27 -0400 + +linux-ppc (3.8.0-13.19) raring; urgency=low + + * Release Tracking Bug + - LP: #1199253 + + [ Ubuntu: 3.8.0-27.39 ] + + * Release Tracking Bug + - LP: #1199128 + * [Config] CONFIG_ATH9K_LEGACY_RATE_CONTROL=y + * SAUCE: Work around broken ACPI backlight on ThinkPad T430 + - LP: #1183856 + * (d-i) Add dm-snapshot to md-modules + - LP: #1191726 + * [Config] CONFIG_SUNRPC_DEBUG=y + - LP: #1127319 + * Revert "ath9k_hw: Update rx gain initval to improve rx sensitivity" + - LP: #1193126 + * Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - LP: #1190967 + * mac80211: close AP_VLAN interfaces before unregistering all + - LP: #1193126 + * ath9k: use correct OTP register offsets for AR9550 + - LP: #1193126 + * regulator: palmas: Fix "enable_reg" to point to the correct reg for + SMPS10 + - LP: #1193126 + * net: can: kvaser_usb: fix reception on "USBcan Pro" and "USBcan R" type + hardware. + - LP: #1193126 + * tg3: Add read dma workaround for 5720 + - LP: #1193126 + * xhci-mem: init list heads at the beginning of init + - LP: #1193126 + * xhci: fix list access before init + - LP: #1193126 + * xhci - correct comp_mode_recovery_timer on return from hibernate + - LP: #1193126 + * xhci: Disable D3cold for buggy TI redrivers. + - LP: #1193126 + * usb: dwc3: pci: PHY should be deleted later than dwc3 core + - LP: #1193126 + * usb: dwc3: gadget: free trb pool only from epnum 2 + - LP: #1193126 + * usb: musb: make use_sg flag URB specific + - LP: #1193126 + * USB: revert periodic scheduling bugfix + - LP: #1193126 + * USB: serial: fix Treo/Kyocera interrrupt-in urb context + - LP: #1193126 + * USB: visor: fix initialisation of Treo/Kyocera devices + - LP: #1193126 + * USB: mos7720: fix DMA to stack + - LP: #1193126 + * USB: mos7840: fix DMA to stack + - LP: #1193126 + * USB: ark3116: fix control-message timeout + - LP: #1193126 + * USB: iuu_phoenix: fix bulk-message timeout + - LP: #1193126 + * USB: mos7720: fix message timeouts + - LP: #1193126 + * USB: zte_ev: fix control-message timeouts + - LP: #1193126 + * USB: Serial: cypress_M8: Enable FRWD Dongle hidcom device + - LP: #1193126 + * USB: serial: Add Option GTM681W to qcserial device table. + - LP: #1193126 + * USB: zte_ev: fix broken open + - LP: #1193126 + * USB: keyspan: fix bogus array index + - LP: #1193126 + * USB: mos7720: fix hardware flow control + - LP: #1193126 + * x86/PCI: Map PCI setup data with ioremap() so it can be in highmem + - LP: #1193126 + * USB: whiteheat: fix broken port configuration + - LP: #1193126 + * USB: option: blacklist network interface on Huawei E1820 + - LP: #1193126 + * USB: option,zte_ev: move most ZTE CDMA devices to zte_ev + - LP: #1193126 + * ecryptfs: fixed msync to flush data + - LP: #1193126 + * dmaengine: ste_dma40: fix pm runtime ref counting + - LP: #1193126 + * cifs: fix off-by-one bug in build_unc_path_to_root + - LP: #1193126 + * ACPI video: ignore BIOS backlight value for HP dm4 + - LP: #1193126 + * ACPI video: ignore BIOS initial backlight value for HP 1000 + - LP: #1193126 + * ACPI / video: ignore BIOS initial backlight value for HP m4 + - LP: #1193126 + * ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 + - LP: #1193126 + * ALSA: usb-audio: fix Roland/Cakewalk UM-3G support + - LP: #1193126 + * drm: fix a use-after-free when GPU acceleration disabled + - LP: #1193126 + * drm/mgag200: Add missing write to index before accessing data register + - LP: #1193126 + * drm/i915: no lvds quirk for hp t5740 + - LP: #1193126 + * radeon: Fix system hang issue when using KMS with older cards + - LP: #1193126 + * drm/radeon: don't allow audio on DCE6 + - LP: #1193126 + * ALSA: usb-audio - Apply Logitech QuickCam Pro 9000 quirk only to audio + iface + - LP: #1193126 + * drm/i915/sdvo: Use &intel_sdvo->ddc instead of intel_sdvo->i2c for DDC. + - LP: #1193126 + * ALSA: usb-audio - Fix invalid volume resolution on Logitech HD webcam + c270 + - LP: #1193126 + * eCryptfs: Check return of filemap_write_and_wait during fsync + - LP: #1193126 + * acpi-cpufreq: set current frequency based on target P-State + - LP: #1193126 + * ARM: 7742/1: topology: export cpu_topology + - LP: #1193126 + * ARM: 7743/1: compressed/head.S: work around new binutils warning + - LP: #1193126 + * ARM: 7747/1: pcpu: ensure __my_cpu_offset cannot be re-ordered across + barrier() + - LP: #1193126 + * hwmon: (adm1021) Strengthen chip detection for ADM1021, LM84 and + MAX1617 + - LP: #1193126 + * hpfs: fix warnings when the filesystem fills up + - LP: #1193126 + * powerpc/eeh: Don't check RTAS token to get PE addr + - LP: #1193126 + * xen/smp: Fixup NOHZ per cpu data when onlining an offline CPU. + - LP: #1193126 + * ceph: fix statvfs fr_size + - LP: #1193126 + * libceph: must hold mutex for reset_changed_osds() + - LP: #1193126 + * ceph: add cpu_to_le32() calls when encoding a reconnect capability + - LP: #1193126 + * ceph: ceph_pagelist_append might sleep while atomic + - LP: #1193126 + * rbd: don't destroy ceph_opts in rbd_add() + - LP: #1193126 + * drm/gma500/psb: Unpin framebuffer on crtc disable + - LP: #1193126 + * drm/gma500/cdv: Unpin framebuffer on crtc disable + - LP: #1193126 + * drm/i915: prefer VBT modes for SVDO-LVDS over EDID + - LP: #1193126 + * Bluetooth: Fix missing length checks for L2CAP signalling PDUs + - LP: #1193126 + * Bluetooth: Fix mgmt handling of power on failures + - LP: #1193126 + * ath9k: Disable PowerSave by default + - LP: #1193126 + * ath9k: Use minstrel rate control by default + - LP: #1193126 + * b43: stop format string leaking into error msgs + - LP: #1193126 + - CVE-2013-2852 + * x86: Fix typo in kexec register clearing + - LP: #1193126 + * CPU hotplug: provide a generic helper to disable/enable CPU hotplug + - LP: #1193126 + * reboot: rigrate shutdown/reboot to boot cpu + - LP: #1193126 + * kmsg: honor dmesg_restrict sysctl on /dev/kmsg + - LP: #1193126 + * audit: wait_for_auditd() should use TASK_UNINTERRUPTIBLE + - LP: #1193126 + * cciss: fix broken mutex usage in ioctl + - LP: #1193126 + * drivers/rtc/rtc-twl.c: fix missing device_init_wakeup() when booted + with device tree + - LP: #1193126 + * swap: avoid read_swap_cache_async() race to deadlock while waiting on + discard I/O completion + - LP: #1193126 + * mm/page_alloc.c: fix watermark check in __zone_watermark_ok() + - LP: #1193126 + * mm: migration: add migrate_entry_wait_huge() + - LP: #1193126 + * md/raid1: consider WRITE as successful only if at least one non-Faulty + and non-rebuilding drive completed it. + - LP: #1193126 + * md/raid1,raid10: use freeze_array in place of raise_barrier in various + places. + - LP: #1193126 + * md/raid1,5,10: Disable WRITE SAME until a recovery strategy is in place + - LP: #1193126 + * Linux 3.8.13.3 + - LP: #1193126 + * mfd: lpc_ich: Add support for Intel Avoton SoC + - LP: #1196658 + * tg3: Add support for new 5762 ASIC + - LP: #1178899 + * tg3: Add NVRAM support for 5762 + - LP: #1178899 + * tg3: missing break statement in tg3_get_5720_nvram_info() + - LP: #1178899 + * tg3: Fix 5762 NVRAM sizing + - LP: #1178899 + * tg3: Fix data corruption on 5725 with TSO + - LP: #1178899 + * Drivers: hv: Execute shutdown in a thread context + - LP: #1180419 + * usb: dwc3: gadget: req->queued must be forced to false in cleanup + - LP: #1199100 + * idr: fix top layer handling + - LP: #1199100 + * Bluetooth: Add support for atheros 04ca:3004 device to ath3k + - LP: #1199100 + * Bluetooth: Device 0cf3:3008 should map AR 3012 + - LP: #1199100 + * regulator: fixed regulator_bulk_enable unwinding code + - LP: #1199100 + * perf: Fix error return code + - LP: #1199100 + * netrom: fix invalid use of sizeof in nr_recvmsg() + - LP: #1199100 + * r8169: honor jumbo settings when chipset is requested to start. + - LP: #1199100 + * nfsd4: don't allow owner override on 4.1 CLAIM_FH opens + - LP: #1199100 + * net: qmi_wwan: fixup missing ethernet header (firmware bug workaround) + - LP: #1199100 + * net: qmi_wwan: fixup destination address (firmware bug workaround) + - LP: #1199100 + * net: qmi_wwan: prevent duplicate mac address on link (firmware bug + workaround) + - LP: #1199100 + * Kirkwood: Enable PCIe port 1 on QNAP TS-11x/TS-21x + - LP: #1199100 + * ARM: plat-orion: Fix num_resources and id for ge10 and ge11 + - LP: #1199100 + * staging:iio:light:tsl2x7x: fix the error handling in tsl2x7x_probe() + - LP: #1199100 + * tg3: Skip powering down function 0 on certain serdes devices + - LP: #1199100 + * jfs: fix a couple races + - LP: #1199100 + * reiserfs: fix deadlock with nfs racing on create/lookup + - LP: #1199100 + * reiserfs: fix problems with chowning setuid file w/ xattrs + - LP: #1199100 + * reiserfs: fix spurious multiple-fill in reiserfs_readdir_dentry + - LP: #1199100 + * xen-netback: remove skb in xen_netbk_alloc_page + - LP: #1199100 + * xen-netback: fix sparse warning + - LP: #1199100 + * xen-netback: coalesce slots in TX path and fix regressions + - LP: #1199100 + * xen-netback: don't disconnect frontend when seeing oversize packet + - LP: #1199100 + * xen-netback: remove redundent parameter in netbk_count_requests + - LP: #1199100 + * xen-netback: avoid allocating variable size array on stack + - LP: #1199100 + * xen-netback: better names for thresholds + - LP: #1199100 + * xen-netfront: reduce gso_max_size to account for max TCP header + - LP: #1199100 + * iommu/amd: Re-enable IOMMU event log interrupt after handling. + - LP: #1199100 + * xen/events: Handle VIRQ_TIMER before any other hardirq in event loop. + - LP: #1199100 + * klist: del waiter from klist_remove_waiters before wakeup waitting + process + - LP: #1199100 + * drm/gma500: Increase max resolution for mode setting + - LP: #1199100 + * libceph: clear messenger auth_retry flag when we authenticate + - LP: #1199100 + * libceph: fix authorizer invalidation + - LP: #1199100 + * libceph: add update_authorizer auth method + - LP: #1199100 + * libceph: wrap auth ops in wrapper functions + - LP: #1199100 + * libceph: wrap auth methods in a mutex + - LP: #1199100 + * MODSIGN: do not send garbage to stderr when enabling modules signature + - LP: #1199100 + * Input: cyttsp - fix memcpy size param + - LP: #1199100 + * clk: remove notifier from list before freeing it + - LP: #1199100 + * USB: f81232: fix device initialisation at open + - LP: #1199100 + * USB: spcp8x5: fix device initialisation at open + - LP: #1199100 + * USB: pl2303: fix device initialisation at open + - LP: #1199100 + * drm/radeon: do not try to uselessly update virtual memory pagetable + - LP: #1199100 + * tg3: Wait for boot code to finish after power on + - LP: #1199100 + * target/iscsi: don't corrupt bh_count in iscsit_stop_time2retain_timer() + - LP: #1199100 + * tcm_qla2xxx: Fix residual for underrun commands that fail + - LP: #1199100 + * powerpc: Fix stack overflow crash in resume_kernel when ftracing + - LP: #1199100 + * powerpc: Fix emulation of illegal instructions on PowerNV platform + - LP: #1199100 + * powerpc: Fix missing/delayed calls to irq_work + - LP: #1199100 + * tilepro: work around module link error with gcc 4.7 + - LP: #1199100 + * ALSA: usb-audio: work around Android accessory firmware bug + - LP: #1199100 + * ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam + c310 + - LP: #1199100 + * ARM: 7752/1: errata: LoUIS bit field in CLIDR register is incorrect + - LP: #1199100 + * ARM: 7754/1: Fix the CPU ID and the mask associated to the PJ4B + - LP: #1199100 + * ARM: 7755/1: handle user space mapped pages in flush_kernel_dcache_page + - LP: #1199100 + * KVM: x86: remove vcpu's CPL check in host-invoked XCR set + - LP: #1199100 + * x86: fix build error and kconfig for ia32_emulation and binfmt + - LP: #1199100 + * x86: kvmclock: zero initialize pvclock shared memory area + - LP: #1199100 + * USB: serial: ti_usb_3410_5052: new device id for Abbot strip port cable + - LP: #1199100 + * perf: arm64: Record the user-mode PC in the call chain. + - LP: #1199100 + * drm/radeon: update lockup tracking when scheduling in empty ring + - LP: #1199100 + * tcp: fix tcp_md5_hash_skb_data() + - LP: #1199100 + * gianfar: add missing iounmap() on error in gianfar_ptp_probe() + - LP: #1199100 + * vxlan: Update vxlan fdb 'used' field after each usage + - LP: #1199100 + * ipv6: fix possible crashes in ip6_cork_release() + - LP: #1199100 + * netlabel: improve domain mapping validation + - LP: #1199100 + * r8169: fix offloaded tx checksum for small packets. + - LP: #1199100 + * 8139cp: reset BQL when ring tx ring cleared + - LP: #1199100 + * tcp: bug fix in proportional rate reduction. + - LP: #1199100 + * tcp: xps: fix reordering issues + - LP: #1199100 + * ip_tunnel: fix kernel panic with icmp_dest_unreach + - LP: #1199100 + * net: phy: fix a bug when verify the EEE support + - LP: #1199100 + * ipv4: fix redirect handling for TCP packets + - LP: #1199100 + * net: Block MSG_CMSG_COMPAT in send(m)msg and recv(m)msg + - LP: #1199100 + * net/core/sock.c: add missing VSOCK string in af_family_*_key_strings + - LP: #1199100 + * tuntap: forbid changing mq flag for persistent device + - LP: #1199100 + * net: force a reload of first item in hlist_nulls_for_each_entry_rcu + - LP: #1199100 + * ipv6: assign rt6_info to inet6_ifaddr in init_loopback + - LP: #1199100 + * vhost_net: clear msg.control for non-zerocopy case during tx + - LP: #1199100 + * net: sctp: fix NULL pointer dereference in socket destruction + - LP: #1199100 + * tuntap: set SOCK_ZEROCOPY flag during open + - LP: #1199100 + * team: check return value of team_get_port_by_index_rcu() for NULL + - LP: #1199100 + * team: move add to port list before port enablement + - LP: #1199100 + * packet: packet_getname_spkt: make sure string is always 0-terminated + - LP: #1199100 + * l2tp: Fix PPP header erasure and memory leak + - LP: #1199100 + * l2tp: Fix sendmsg() return value + - LP: #1199100 + * sctp: fully initialize sctp_outq in sctp_outq_init + - LP: #1199100 + * net: sh_eth: fix incorrect RX length error if R8A7740 + - LP: #1199100 + * hw_breakpoint: Fix cpu check in task_bp_pinned(cpu) + - LP: #1199100 + * hw_breakpoint: Use cpu_possible_mask in {reserve,release}_bp_slot() + - LP: #1199100 + * s390/ipl: Fix FCP WWPN and LUN format strings for read + - LP: #1199100 + * ARM: 7772/1: Fix missing flush_kernel_dcache_page() for noMMU + - LP: #1199100 + * libata-acpi: add back ACPI based hotplug functionality + - LP: #1199100 + * iwlwifi: dvm: fix chain noise calibration + - LP: #1199100 + * rt2800: fix RT5390 & RT3290 TX power settings regression + - LP: #1199100 + * Bluetooth: Fix crash in l2cap_build_cmd() with small MTU + - LP: #1199100 + * Bluetooth: Fix invalid length check in l2cap_information_rsp() + - LP: #1199100 + * ath9k_htc: Handle IDLE state transition properly + - LP: #1199100 + * dlci: acquire rtnl_lock before calling __dev_get_by_name() + - LP: #1199100 + * dlci: validate the net device in dlci_del() + - LP: #1199100 + * KVM: x86: fix deadlock in clock-in-progress request handling + - LP: #1199100 + * Linux 3.8.13.4 + - LP: #1199100 + + -- Ben Collins Tue, 09 Jul 2013 13:33:23 -0400 + +linux-ppc (3.8.0-12.18) raring; urgency=low + + * Release Tracking Bug + - LP: #1192033 + + [ Ubuntu: 3.8.0-26.38 ] + + * Release Tracking Bug + - LP: #1191955 + * SAUCE: ncpfs: fix rmdir returns Device or resource busy + - LP: #1035226 + * ARM: S5PV210: Fix PL330 DMA controller clkdev entries + - LP: #1187551 + * NFSv4: Handle NFS4ERR_DELAY and NFS4ERR_GRACE in + nfs4_lock_delegation_recall + - LP: #1187551 + * blkcg: fix "scheduling while atomic" in blk_queue_bypass_start + - LP: #1187551 + * audit: Syscall rules are not applied to existing processes on non-x86 + - LP: #1187551 + * menuconfig: Fix memory leak introduced by jump keys feature + - LP: #1187551 + * iommu/amd: Workaround for ERBT1312 + - LP: #1187551 + * drivers/rtc/rtc-at91rm9200.c: fix missing iounmap + - LP: #1187551 + * drm/mm: fix dump table BUG + - LP: #1187551 + * ASoC: wm8994: missing break in wm8994_aif3_hw_params() + - LP: #1187551 + * tile: support new Tilera hypervisor + - LP: #1187551 + * sd: fix array cache flushing bug causing performance problems + - LP: #1187551 + * ath9k: fix key allocation error handling for powersave keys + - LP: #1187551 + * target: Use FD_MAX_SECTORS/FD_BLOCKSIZE for blockdevs using fileio + - LP: #1187551 + * ext4: limit group search loop for non-extent files + - LP: #1187551 + * xen/vcpu/pvhvm: Fix vcpu hotplugging hanging. + - LP: #1187551 + * ALSA: HDA: Fix Oops caused by dereference NULL pointer + - LP: #1187551 + * iscsi-target: Fix processing of OOO commands + - LP: #1187551 + * audit: vfs: fix audit_inode call in O_CREAT case of do_last + - LP: #1187551 + * ACPICA: Fix possible buffer overflow during a field unit read operation + - LP: #1187551 + * qmi_wwan, cdc-ether: add ADU960S + - LP: #1187551 + * qmi_wwan/cdc_ether: add device IDs for Dell 5804 (Novatel E371) WWAN + card + - LP: #1187551 + * B43: Handle DMA RX descriptor underrun + - LP: #1187551 + * mwifiex: clear is_suspended flag when interrupt is received early + - LP: #1187551 + * mwifiex: fix memory leak issue when driver unload + - LP: #1187551 + * mwifiex: fix setting of multicast filter + - LP: #1187551 + * ARM: OMAP: RX-51: change probe order of touchscreen and panel SPI + devices + - LP: #1187551 + * hp_accel: Ignore the error from lis3lv02d_poweron() at resume + - LP: #1187551 + * KVM: VMX: fix halt emulation while emulating invalid guest sate + - LP: #1187551 + * nfsd: fix oops when legacy_recdir_name_error is passed a -ENOENT error + - LP: #1187551 + * shm: fix null pointer deref when userspace specifies invalid hugepage + size + - LP: #1187551 + * dm stripe: fix regression in stripe_width calculation + - LP: #1187551 + * dm snapshot: fix error return code in snapshot_ctr + - LP: #1187551 + * mm: teach mm by current context info to not do I/O during memory + allocation + - LP: #1187551 + * dm bufio: avoid a possible __vmalloc deadlock + - LP: #1187551 + * dm table: fix write same support + - LP: #1187551 + * tick: Cleanup NOHZ per cpu data on cpu down + - LP: #1187551 + * ACPI / EC: Restart transaction even when the IBF flag set + - LP: #1187551 + * drm/mgag200: Fix writes into MGA1064_PIX_CLK_CTL register + - LP: #1187551 + * drm/mgag200: Fix framebuffer base address programming + - LP: #1187551 + * drm/radeon: check incoming cliprects pointer + - LP: #1187551 + * arm64: debug: clear mdscr_el1 instead of taking the OS lock + - LP: #1187551 + * ARM: 7720/1: ARM v6/v7 cmpxchg64 shouldn't clear upper 32 bits of the + old/new value + - LP: #1187551 + * powerpc/kexec: Fix kexec when using VMX optimised memcpy + - LP: #1187551 + * powerpc: Bring all threads online prior to migration/hibernation + - LP: #1187551 + * arm64: mm: Fix operands of clz in __flush_dcache_all + - LP: #1187551 + * timer: Don't reinitialize the cpu base lock during CPU_UP_PREPARE + - LP: #1187551 + * target: close target_put_sess_cmd() vs. core_tmr_abort_task() race + - LP: #1187551 + * tracing: Fix leaks of filter preds + - LP: #1187551 + * usermodehelper: check subprocess_info->path != NULL + - LP: #1187551 + * drivers/char/ipmi: memcpy, need additional 2 bytes to avoid memory + overflow + - LP: #1187551 + * ipmi: ipmi_devintf: compat_ioctl method fails to take ipmi_mutex + - LP: #1187551 + * btrfs: don't stop searching after encountering the wrong item + - LP: #1187551 + * watchdog: Fix race condition in registration code + - LP: #1187551 + * pch_dma: Use GFP_ATOMIC because called from interrupt context + - LP: #1187551 + * ARM: EXYNOS5: Fix kernel dump in AFTR idle mode + - LP: #1187551 + * drivers/rtc/rtc-pcf2123.c: fix error return code in pcf2123_probe() + - LP: #1187551 + * tcp: force a dst refcount when prequeue packet + - LP: #1187551 + * sfc: Fix naming of MTD partitions for FPGA bitfiles + - LP: #1187551 + * net: tun: release the reference of tun device in tun_recvmsg + - LP: #1187551 + * net: mac802154: comparision issue of type cast, finding by + EXTRA_CFLAGS=-W + - LP: #1187551 + * tcp: reset timer after any SYNACK retransmit + - LP: #1187551 + * 3c509.c: call SET_NETDEV_DEV for all device types (ISA/ISAPnP/EISA) + - LP: #1187551 + * net_sched: act_ipt forward compat with xtables + - LP: #1187551 + * net: use netdev_features_t in skb_needs_linearize() + - LP: #1187551 + * net: vlan,ethtool: netdev_features_t is more than 32 bit + - LP: #1187551 + * bridge: fix race with topology change timer + - LP: #1187551 + * packet: tpacket_v3: do not trigger bug() on wrong header status + - LP: #1187551 + * virtio: don't expose u16 in userspace api + - LP: #1187551 + * 3c59x: fix freeing nonexistent resource on driver unload + - LP: #1187551 + * 3c59x: fix PCI resource management + - LP: #1187551 + * if_cablemodem.h: Add parenthesis around ioctl macros + - LP: #1187551 + * macvlan: fix passthru mode race between dev removal and rx path + - LP: #1187551 + * ipv6: do not clear pinet6 field + - LP: #1187551 + * ipv6,gre: do not leak info to user-space + - LP: #1187551 + * xfrm6: release dev before returning error + - LP: #1187551 + * drm/i915: add HAS_DDI check + - LP: #1187551 + * drm/i915: don't intel_crt_init on any ULT machines + - LP: #1187551 + * Linux 3.8.13.1 + - LP: #1187551 + * drbd: fix memory leak + - LP: #1191065 + * drbd: Fix build error when CONFIG_CRYPTO_HMAC is not set + - LP: #1191065 + * drbd: fix for deadlock when using automatic split-brain-recovery + - LP: #1191065 + * Input: egalax_ts - ABS_MT_POSITION_Y not reported well + - LP: #1191065 + * cifs: only set ops for inodes in I_NEW state + - LP: #1191065 + * staging: vt6656: use free_netdev instead of kfree + - LP: #1191065 + * hwmon: fix error return code in abituguru_probe() + - LP: #1191065 + * avr32: fix relocation check for signed 18-bit offset + - LP: #1191065 + * crypto: caam - fix inconsistent assoc dma mapping direction + - LP: #1191065 + * ARM: at91/dt: fix macb node declaration + - LP: #1191065 + * ARM: at91/trivial: fix model name for SAM9X25-EK + - LP: #1191065 + * USB: xHCI: override bogus bulk wMaxPacketSize values + - LP: #1191065 + * USB: UHCI: fix for suspend of virtual HP controller + - LP: #1191065 + * USB: fix latency in uhci-hcd and ohci-hcd + - LP: #1191065 + * USB: OHCI: fix logic for scheduling isochronous URBs + - LP: #1191065 + * cfg80211: fix wiphy_register error path + - LP: #1191065 + * mac80211: fix AP-mode frame matching + - LP: #1191065 + * staging: vt6656: [bug] Fix missing spin lock in iwctl_siwpower. + - LP: #1191065 + * usb, chipidea: fix link error when USB_EHCI_HCD is a module + - LP: #1191065 + * USB: reset resume quirk needed by a hub + - LP: #1191065 + * usb: option: Add Telewell TW-LTE 4G + - LP: #1191065 + * USB: Blacklisted Cinterion's PLxx WWAN Interface + - LP: #1191065 + * USB: option: add device IDs for Dell 5804 (Novatel E371) WWAN card + - LP: #1191065 + * i2c: designware: fix RX FIFO overrun + - LP: #1191065 + * i2c: designware: always clear interrupts before enabling them + - LP: #1191065 + * ath9k_hw: Use helper routines to simplify ar9003_hw_init_cal() + - LP: #1191065 + * ath9k_hw: Enable manual peak calibration for AR9485 + - LP: #1191065 + * USB: ftdi_sio: Add support for Newport CONEX motor drivers + - LP: #1191065 + * virtio_console: fix uapi header + - LP: #1191065 + * drm/nouveau/bios: fix thinko in ZM_MASK_ADD opcode + - LP: #1191065 + * drm/nvc0/ce: disable ce1 on a number of chipsets + - LP: #1191065 + * drm/radeon: Fix VRAM size calculation for VRAM >= 4GB + - LP: #1191065 + * USB: cxacru: potential underflow in cxacru_cm_get_array() + - LP: #1191065 + * TTY: Fix tty miss restart after we turn off flow-control + - LP: #1191065 + * drm/i915: add more VLV IDs + - LP: #1191065 + * drm/i915: Adding more reserved PCI IDs for Haswell. + - LP: #1191065 + * SUNRPC: Prevent an rpc_task wakeup race + - LP: #1191065 + * ARM: 7626/1: arm/crypto: Make asm SHA-1 and AES code Thumb-2 compatible + - LP: #1191065 + * ARM: 7723/1: crypto: sha1-armv4-large.S: fix SP handling + - LP: #1191065 + * perf: net_dropmonitor: Fix trace parameter order + - LP: #1191065 + * perf: net_dropmonitor: Fix symbol-relative addresses + - LP: #1191065 + * ACPI / video: Add "Asus UL30A" to ACPI video detect blacklist + - LP: #1191065 + * ARM: at91/dt: fix macb pinctrl_macb_rmii_mii_alt definition + - LP: #1191065 + * cifs: fix potential buffer overrun when composing a new options string + - LP: #1191065 + * fat: fix possible overflow for fat_clusters + - LP: #1191065 + * wait: fix false timeouts when using wait_event_timeout() + - LP: #1191065 + * mm: mmu_notifier: re-fix freed page still mapped in secondary MMU + - LP: #1191065 + * mm: memcg: remove incorrect VM_BUG_ON for swap cache pages in uncharge + - LP: #1191065 + * rapidio/tsi721: fix bug in MSI interrupt handling + - LP: #1191065 + * mm compaction: fix of improper cache flush in migration code + - LP: #1191065 + * mm/rmap: rename anon_vma_unlock() => anon_vma_unlock_write() + - LP: #1191065 + * mm/THP: use pmd_populate() to update the pmd with pgtable_t pointer + - LP: #1191065 + * drivers/leds/leds-ot200.c: fix error caused by shifted mask + - LP: #1191065 + * drivers/block/brd.c: fix brd_lookup_page() race + - LP: #1191065 + * nilfs2: fix issue of nilfs_set_page_dirty() for page at EOF boundary + - LP: #1191065 + * drivers/char/random.c: fix priming of last_data + - LP: #1191065 + * random: fix accounting race condition with lockless irq entropy_count + update + - LP: #1191065 + * ocfs2: goto out_unlock if ocfs2_get_clusters_nocache() failed in + ocfs2_fiemap() + - LP: #1191065 + * mm/pagewalk.c: walk_page_range should avoid VM_PFNMAP areas + - LP: #1191065 + * ata_piix: add PCI IDs for Intel BayTail + - LP: #1191065 + * libata: make ata_exec_internal_sg honor DMADIR + - LP: #1191065 + * cgroup: fix a subtle bug in descendant pre-order walk + - LP: #1191065 + * ASoC: wm5110: Correct DSP4R Mixer control name + - LP: #1191065 + * ASoC: cs42l52: fix default value for MASTERA_VOL. + - LP: #1191065 + * drm/radeon: fix typo in cu_per_sh on verde + - LP: #1191065 + * drm/radeon: fix card_posted check for newer asics + - LP: #1191065 + * NFSv4: Fix a thinko in nfs4_try_open_cached + - LP: #1191065 + * ib_srpt: Call target_sess_cmd_list_set_waiting during shutdown_session + - LP: #1191065 + * xfs: kill suid/sgid through the truncate path. + - LP: #1191065 + * x86: Allow FPU to be used at interrupt time even with eagerfpu + - LP: #1191065 + * m68k/mac: Fix unexpected interrupt with CONFIG_EARLY_PRINTK + - LP: #1191065 + * arm64: don't kill the kernel on a bad esr from el0 + - LP: #1191065 + * powerpc/32bit:Store temporary result in r0 instead of r8 + - LP: #1191065 + * powerpc/pseries: Always enable CONFIG_HOTPLUG_CPU on PSERIES SMP + - LP: #1191065 + * Linux 3.8.13.2 + - LP: #1191065 + + -- Ben Collins Tue, 25 Jun 2013 08:54:15 -0400 + +linux-ppc (3.8.0-11.17) raring; urgency=low + + * Release Tracking Bug + - LP: #1188462 + + [ Ubuntu: 3.8.0-25.37 ] + + * Release Tracking Bug + - LP: #1187857 + * iwlwifi: dvm: fix zero LQ CMD sending avoidance + - LP: #1186932 + + [ Ubuntu: 3.8.0-24.35 ] + + * Release Tracking Bug + - LP: #1186236 + * SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam + - LP: #1180409 + * drm/i915: Use MLC (l3$) for context objects + * xhci: Don't warn on empty ring for suspended devices. + - LP: #1177865 + * USB: serial: option: Added support Olivetti Olicard 145 + - LP: #1178361 + * USB: option: add a D-Link DWM-156 variant + - LP: #1178361 + * staging: zsmalloc: Fix link error on ARM + - LP: #1178361 + * ARM: omap3: cpuidle: enable time keeping + - LP: #1178361 + * ARM: u300: fix ages old copy/paste bug + - LP: #1178361 + * ARM: at91/at91sam9260.dtsi: fix u(s)art pinctrl encoding + - LP: #1178361 + * ARM: at91: remove partial parameter in bootargs for at91sam9x5ek.dtsi + - LP: #1178361 + * ARM: at91: Fix typo in restart code panic message + - LP: #1178361 + * ARM: at91/trivial: fix model name for SAM9G15-EK + - LP: #1178361 + * ARM: at91/trivial: typos in compatible property + - LP: #1178361 + * powerpc: Add isync to copy_and_flush + - LP: #1178361 + * powerpc: Fix hardware IRQs with MMU on exceptions when HV=0 + - LP: #1178361 + * powerpc/power8: Fix secondary CPUs hanging on boot for HV=0 + - LP: #1178361 + * powerpc/spufs: Initialise inode->i_ino in spufs_new_inode() + - LP: #1178361 + * iwlwifi: fix freeing uninitialized pointer + - LP: #1178361 + * iwlwifi: dvm: don't send zeroed LQ cmd + - LP: #1178361 + * mwifiex: Use pci_release_region() instead of a pci_release_regions() + - LP: #1178361 + * mwifiex: Call pci_release_region after calling pci_disable_device + - LP: #1178361 + * mac80211: fix station entry leak/warning while suspending + - LP: #1178361 + * usb/misc/appledisplay: Add 24" LED Cinema display + - LP: #1178361 + * USB: add ftdi_sio USB ID for GDM Boost V1.x + - LP: #1178361 + * USB: ftdi_sio: correct ST Micro Connect Lite PIDs + - LP: #1178361 + * USB: ftdi_sio: enable two UART ports on ST Microconnect Lite + - LP: #1178361 + * usbfs: Always allow ctrl requests with USB_RECIP_ENDPOINT on the ctrl + ep + - LP: #1178361 + * usb: chipidea: udc: fix memory access of shared memory on armv5 + machines + - LP: #1178361 + * usb: chipidea: udc: fix memory leak in _ep_nuke + - LP: #1178361 + * usb: remove redundant tdi_reset + - LP: #1178361 + * usb-storage: CY7C68300A chips do not support Cypress ATACB + - LP: #1178361 + * s390/memory hotplug: prevent offline of active memory increments + - LP: #1178361 + * xen/time: Fix kasprintf splat when allocating timer%d IRQ line. + - LP: #1178361 + * xen/smp: Fix leakage of timer interrupt line for every CPU + online/offline. + - LP: #1178361 + * xen/smp/spinlock: Fix leakage of the spinlock interrupt line for every + CPU online/offline + - LP: #1178361 + * serial_core.c: add put_device() after device_find_child() + - LP: #1178361 + * arm: set the page table freeing ceiling to TASK_SIZE + - LP: #1178361 + * gianfar: do not advertise any alarm capability. + - LP: #1178361 + * tty: fix up atime/mtime mess, take three + - LP: #1178361 + * fbcon: when font is freed, clear also vc_font.data + - LP: #1178361 + * tracing: Use stack of calling function for stack tracer + - LP: #1178361 + * tracing: Fix stack tracer with fentry use + - LP: #1178361 + * tracing: Remove most or all of stack tracer stack size from + stack_max_size + - LP: #1178361 + * tracing: Fix off-by-one on allocating stat->pages + - LP: #1178361 + * tracing: Check return value of tracing_init_dentry() + - LP: #1178361 + * tracing: Reset ftrace_graph_filter_enabled if count is zero + - LP: #1178361 + * i2c: xiic: must always write 16-bit words to TX_FIFO + - LP: #1178361 + * crypto: crc32-pclmul - Use gas macro for pclmulqdq + - LP: #1178361 + * sysfs: fix use after free in case of concurrent read/write and readdir + - LP: #1178361 + * Fix initialization of CMCI/CMCP interrupts + - LP: #1178361 + * PCI / ACPI: Don't query OSC support with all possible controls + - LP: #1178361 + * PCI/PM: Fix fallback to PCI_D0 in pci_platform_power_transition() + - LP: #1178361 + * rt2x00: Fix transmit power troubles on some Ralink RT30xx cards + - LP: #1178361 + * Wrong asm register contraints in the futex implementation + - LP: #1178361 + * Wrong asm register contraints in the kvm implementation + - LP: #1178361 + * fs/fscache/stats.c: fix memory leak + - LP: #1178361 + * mm: allow arch code to control the user page table ceiling + - LP: #1178361 + * TPM: Retry SaveState command in suspend path + - LP: #1178361 + * ALSA: emu10k1: Fix dock firmware loading + - LP: #1178361 + * ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT + - LP: #1178361 + * ALSA: usb: Add quirk for 192KHz recording on E-Mu devices + - LP: #1178361 + * ALSA: usb-audio: disable autopm for MIDI devices + - LP: #1178361 + * ALSA: usb-audio: Fix autopm error during probing + - LP: #1178361 + * ALSA: USB: adjust for changed 3.8 USB API + - LP: #1178361 + * ALSA: hda - Add the support for ALC286 codec + - LP: #1178361 + * ASoC: max98088: Fix logging of hardware revision. + - LP: #1178361 + * hrtimer: Fix ktime_add_ns() overflow on 32bit architectures + - LP: #1178361 + * hrtimer: Add expiry time overflow check in hrtimer_interrupt + - LP: #1178361 + * swap: redirty page if page write fails on swap file + - LP: #1178361 + * mm: swap: mark swap pages writeback before queueing for direct IO + - LP: #1178361 + * drivers/rtc/rtc-cmos.c: don't disable hpet emulation on suspend + - LP: #1178361 + * libata: acpi: make ata_ap_acpi_handle not block + - LP: #1178361 + * ACPI: Fix wrong parameter passed to memblock_reserve + - LP: #1178361 + * ACPI / thermal: do not always return THERMAL_TREND_RAISING for active + trip points + - LP: #1178361 + * cgroup: fix an off-by-one bug which may trigger BUG_ON() + - LP: #1178361 + * cgroup: fix broken file xattrs + - LP: #1178361 + * localmodconfig: Process source kconfig files as they are found + - LP: #1178361 + * clockevents: Set dummy handler on CPU_DEAD shutdown + - LP: #1178361 + * sata_highbank: Rename proc_name to the module name + - LP: #1178361 + * inotify: invalid mask should return a error number but not set it + - LP: #1178361 + * fs/dcache.c: add cond_resched() to shrink_dcache_parent() + - LP: #1178361 + * exec: do not abuse ->cred_guard_mutex in threadgroup_lock() + - LP: #1178361 + * LOCKD: Ensure that nlmclnt_block resets block->b_status after a server + reboot + - LP: #1178361 + * md: bad block list should default to disabled. + - LP: #1178361 + * MD: ignore discard request for hard disks of hybid raid1/raid10 array + - LP: #1178361 + * NFSv4: Handle NFS4ERR_DELAY and NFS4ERR_GRACE in + nfs4_open_delegation_recall + - LP: #1178361 + * nfsd4: don't close read-write opens too soon + - LP: #1178361 + * nfsd: don't run get_file if nfs4_preprocess_stateid_op return error + - LP: #1178361 + * nfsd: Decode and send 64bit time values + - LP: #1178361 + * wireless: regulatory: fix channel disabling race condition + - LP: #1178361 + * ipc: sysv shared memory limited to 8TiB + - LP: #1178361 + * ixgbe: fix EICR write in ixgbe_msix_other + - LP: #1178361 + * ext4/jbd2: don't wait (forever) for stale tid caused by wraparound + - LP: #1178361 + * jbd2: fix race between jbd2_journal_remove_checkpoint and + ->j_commit_callback + - LP: #1178361 + * ext4: fix journal callback list traversal + - LP: #1178361 + * ext4: fix big-endian bug in metadata checksum calculations + - LP: #1178361 + * ext4: fix online resizing for ext3-compat file systems + - LP: #1178361 + * ext4: fix Kconfig documentation for CONFIG_EXT4_DEBUG + - LP: #1178361 + * mmc: at91/avr32/atmel-mci: fix DMA-channel leak on module unload + - LP: #1178361 + * Give the OID registry file module info to avoid kernel tainting + - LP: #1178361 + * KVM: X86 emulator: fix source operand decoding for 8bit mov[zs]x + instructions + - LP: #1178361 + * x86: Eliminate irq_mis_count counted in arch_irq_stat + - LP: #1178361 + * mmc: core: Fix bit width test failing on old eMMC cards + - LP: #1178361 + * mmc: atmel-mci: pio hang on block errors + - LP: #1178361 + * rcutrace: single_open() leaks + - LP: #1178361 + * mfd: adp5520: Restore mode bits on resume + - LP: #1178361 + * Linux 3.8.12 + - LP: #1178361 + * xen/arm: actually pass a non-NULL percpu pointer to request_percpu_irq + - LP: #1179514 + * powerpc: Emulate non privileged DSCR read and write + - LP: #1179514 + * powerpc: fix numa distance for form0 device tree + - LP: #1179514 + * pwm: spear: Fix checking return value of clk_enable() and clk_prepare() + - LP: #1179514 + * autofs - remove autofs dentry mount check + - LP: #1179514 + * hugetlbfs: fix mmap failure in unaligned size request + - LP: #1179514 + * iommu/amd: Properly initialize irq-table lock + - LP: #1179514 + * net/eth/ibmveth: Fixup retrieval of MAC address + - LP: #1179514 + * perf/x86/intel: Add support for IvyBridge model 58 Uncore + - LP: #1179514 + * perf/x86/intel: Fix unintended variable name reuse + - LP: #1179514 + * perf/x86/intel/lbr: Fix LBR filter + - LP: #1179514 + * perf/x86/intel/lbr: Demand proper privileges for + PERF_SAMPLE_BRANCH_KERNEL + - LP: #1179514 + * PCI/PM: Clear state_saved during suspend + - LP: #1179514 + * e1000e: fix runtime power management transitions + - LP: #1179514 + * e1000e: fix accessing to suspended device + - LP: #1179514 + * ipvs: ip_vs_sip_fill_param() BUG: bad check of return value + - LP: #1179514 + * netfilter: nf_nat: fix race when unloading protocol modules + - LP: #1179514 + * netfilter: ipset: list:set: fix reference counter update + - LP: #1179514 + * netfilter: nf_ct_sip: don't drop packets with offsets pointing outside + the packet + - LP: #1179514 + * netfilter: ipset: "Directory not empty" error message + - LP: #1179514 + * netfilter: nf_ct_helper: don't discard helper if it is actually the + same + - LP: #1179514 + * netfilter: ctnetlink: don't permit ct creation with random tuple + - LP: #1179514 + * netfilter: xt_rpfilter: skip locally generated broadcast/multicast, too + - LP: #1179514 + * netfilter: ip6t_NPT: Fix translation for non-multiple of 32 prefix + lengths + - LP: #1179514 + * ext4: add check for inodes_count overflow in new resize ioctl + - LP: #1179514 + * r8169: fix 8168evl frame padding. + - LP: #1179514 + * RDMA/cxgb4: Fix SQ allocation when on-chip SQ is disabled + - LP: #1179514 + * arm64: Ignore the 'write' ESR flag on cache maintenance faults + - LP: #1179514 + * block: fix max discard sectors limit + - LP: #1179514 + * drm/cirrus: deal with bo reserve fail in dirty update path + - LP: #1179514 + * drm/mgag200: deal with bo reserve fail in dirty update path + - LP: #1179514 + * drm/gma500: fix backlight hotkeys behaviour on netbooks + - LP: #1179514 + * drm/prime: keep a reference from the handle to exported dma-buf (v6) + - LP: #1179514 + * drm/ast: deal with bo reserve fail in dirty update path + - LP: #1179514 + * drm/i915: Fix detection of base of stolen memory + - LP: #1179514 + * drm/i915: Fix sdvo connector get_hw_state function + - LP: #1179514 + * drm/i915: Add no-lvds quirk for Fujitsu Esprimo Q900 + - LP: #1179514 + * drm/i915: Fix SDVO connector and encoder get_hw_state functions + - LP: #1179514 + * drm/i915: Workaround incoherence between fences and LLC across multiple + CPUs + - LP: #1179514 + * drm/i915: set CPT FDI RX polarity bits based on VBT + - LP: #1179514 + * drm/i915: ensure single initialization and cleanup of backlight device + - LP: #1179514 + * drm/i915: Fixup Oops in the pipe config computation + - LP: #1179514 + * drm/i915: Fall back to bit banging mode for DVO transmitter detection + - LP: #1179514 + * drm/radeon: don't use get_engine_clock() on APUs + - LP: #1179514 + * drm/radeon: use frac fb div on RS780/RS880 + - LP: #1179514 + * drm/radeon: fix typo in rv515_mc_resume() + - LP: #1179514 + * drm/radeon/dce6: add missing display reg for tiling setup + - LP: #1179514 + * drm/radeon: update wait_for_vblank for r5xx-r7xx + - LP: #1179514 + * drm/radeon: update wait_for_vblank for evergreen+ + - LP: #1179514 + * drm/radeon: properly lock disp in mc_stop/resume for evergreen+ + - LP: #1179514 + * drm/radeon: properly lock disp in mc_stop/resume for r5xx-r7xx + - LP: #1179514 + * drm/radeon: update wait_for_vblank for r1xx-r4xx + - LP: #1179514 + * drm/radeon: disable the crtcs in mc_stop (evergreen+) (v2) + - LP: #1179514 + * drm/radeon: add some new SI PCI ids + - LP: #1179514 + * drm/radeon/evergreen+: don't enable HPD interrupts on eDP/LVDS + - LP: #1179514 + * drm/radeon: cleanup properly if mmio mapping fails + - LP: #1179514 + * drm/radeon: fix hdmi mode enable on RS600/RS690/RS740 + - LP: #1179514 + * drm/radeon: fix typo in si_select_se_sh() + - LP: #1179514 + * drm/radeon: Always flush the VM + - LP: #1179514 + * drm/radeon: disable the crtcs in mc_stop (r5xx-r7xx) (v2) + - LP: #1179514 + * drm/radeon: fix endian bugs in atom_allocate_fb_scratch() + - LP: #1179514 + * drm/radeon: fix possible segfault when parsing pm tables + - LP: #1179514 + * drm/radeon: add new richland pci ids + - LP: #1179514 + * drm/radeon: fix handling of v6 power tables + - LP: #1179514 + * tracing: Fix ftrace_dump() + - LP: #1179514 + * Btrfs: compare relevant parts of delayed tree refs + - LP: #1179514 + * Btrfs: fix extent logging with O_DIRECT into prealloc + - LP: #1179514 + * EDAC: Don't give write permission to read-only files + - LP: #1179514 + * NFSv4.x: Fix handling of partially delegated locks + - LP: #1179514 + * kernel/audit_tree.c: tree will leak memory when failure occurs in + audit_trim_trees() + - LP: #1179514 + * x86/mm: account for PGDIR_SIZE alignment + - LP: #1179514 + * Linux 3.8.13 + - LP: #1179514 + * iwlwifi: add new pci id for 6x35 series + - LP: #1180256 + * be2net: fix re-loaded PF driver to re-gain control of its VFs + - LP: #1180217 + * be2net: update driver version to 4.6.x + - LP: #1180217 + * be2net: remove BUG_ON() in be_mcc_compl_is_new() + - LP: #1180217 + * benet: Wait f/w POST until timeout + - LP: #1180217 + * be2net: use CSR-BAR SEMAPHORE reg for BE2/BE3 + - LP: #1180217 + * be2net: Update copyright year + - LP: #1180217 + * be2net: enable interrupts in be_probe() (RoCE and other ULPs need them) + - LP: #1180217 + * be2net: Use new F/W mailbox cmd to manipulate interrupts. + - LP: #1180217 + * be2net: remove unused variable 'sge' + - LP: #1180217 + * be2net: take care of __vlan_put_tag return value + - LP: #1180217 + * be2net: Use TXQ_CREATE_V2 cmd + - LP: #1180217 + * be2net: Don't log "Out of MCCQ wrbs" error + - LP: #1180217 + * be2net: Avoid flashing BE3 UFI on BE3-R chip. + - LP: #1180217 + * be2net: Use GET_PROFILE_CONFIG V1 cmd for BE3-R + - LP: #1180217 + * be2net: enable IOMMU pass through for be2net + - LP: #1180217 + * be2net: Add support for setting and getting rx flow hash options + - LP: #1180217 + * be2net: Renamed rx_address_mismatch_errors to rx_address_filtered + - LP: #1180217 + * be2net: Avoid diagnostic test in certain versions of firmware to avoid + NIC freeze. + - LP: #1180217 + * be2net: Fixed memory leak + - LP: #1180217 + * be2net: Fix to show wol disabled/enabled state correctly. + - LP: #1180217 + * be2net: Use GET_FUNCTION_CONFIG V1 cmd + - LP: #1180217 + * be2net: FLR must be first cmd issued to Lancer FW + - LP: #1180217 + * be2net: Fix to use version 2 of cq_create for SkyHawk-R devices + - LP: #1180217 + * be2net: Fix to use 32-bit stats to report rx_drops_no_fragment + - LP: #1180217 + * be2net: Fix to show tx priority pause counter in ethtool -S + - LP: #1180217 + * be2net: Fix to receive Multicast Packets when Promiscuous mode is + enabled on certain devices + - LP: #1180217 + * be2net: Fix firmware download for Lancer + - LP: #1180217 + * be2net: avoid napi_disable() when it has not been enabled + - LP: #1180217 + * be2net: Fix to fail probe if MSI-X enable fails for a VF + - LP: #1180217 + + [ Ubuntu: 3.8.0-23.34 ] + + * Release Tracking Bug + - LP: #1185136 + * iscsi-target: fix heap buffer overflow on error + - CVE-2013-2850 + + -- Ben Collins Mon, 10 Jun 2013 02:52:27 -0400 + +linux-ppc (3.8.0-10.16) raring; urgency=low + + * Release Tracking Bug + - LP: #1181305 + + [ Ubuntu: 3.8.0-22.33 ] + + * Release Tracking Bug + - LP: #1180483 + * merged back all changes which were in 20.31 + + [ Ubuntu: 3.8.0-21.32 ] + + * Release Tracking Bug + - LP: #1180058 + * Based on 3.8.0-19.30 release + - entire delta from 19.30 to 20.31 removed + - CVE release is based on updates+fix + * perf: Treat attr.config as u64 in perf_swevent_init() + - LP: #1179943 + - CVE-2013-2094 + + [ Ubuntu: 3.8.0-20.31 ] + + * Release Tracking Bug + - LP: #1176953 + * SAUCE: (no-up) alx: disables MSI generation + - LP: #927782 + * SAUCE: (no-up) Fix oops in patch_hdmi due to missing hda_gen_spec + struct + - LP: #1169984 + * SAUCE: (no-up) drm/i915: revert PCH_PWM_ENABLE quirk for XPS13-FHD + - LP: #1169376 + * SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo + ThinkPads + - LP: #1098216 + * SAUCE: (no-up) alx: Don't check netif_running() before powering up + - LP: #1172415 + * enable tools build for armhf + - LP: #1171580 + * [packaging] Bump ABI for every new release + * Revert "MIPS: page.h: Provide more readable definition for PAGE_MASK." + - LP: #1173170 + * tg3: Add 57766 device support. + - LP: #1162665 + * powerpc: add a missing label in resume_kernel + - LP: #1173170 + * kvm/powerpc/e500mc: fix tlb invalidation on cpu migration + - LP: #1173170 + * ARM: Do 15e0d9e37c (ARM: pm: let platforms select cpu_suspend support) + properly + - LP: #1173170 + * kthread: Prevent unpark race which puts threads on the wrong cpu + - LP: #1173170 + * hrtimer: Don't reinitialize a cpu_base lock on CPU_UP + - LP: #1173170 + * can: mcp251x: add missing IRQF_ONESHOT to request_threaded_irq + - LP: #1173170 + * can: sja1000: fix handling on dt properties on little endian systems + - LP: #1173170 + * hugetlbfs: stop setting VM_DONTDUMP in initializing vma(VM_HUGETLB) + - LP: #1173170 + * hugetlbfs: add swap entry check in follow_hugetlb_page() + - LP: #1173170 + * fs/binfmt_elf.c: fix hugetlb memory check in vma_dump_size() + - LP: #1173170 + * kernel/signal.c: stop info leak via the tkill and the tgkill syscalls + - LP: #1173170 + * hfsplus: fix potential overflow in hfsplus_file_truncate() + - LP: #1173170 + * md: raid1,10: Handle REQ_WRITE_SAME flag in write bios + - LP: #1173170 + * KVM: Allow cross page reads and writes from cached translations. + - LP: #1173170 + * ARM: i.MX35: enable MAX clock + - LP: #1173170 + * ARM: clk-imx35: Bugfix iomux clock + - LP: #1173170 + * sched: Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s + - LP: #1173170 + * sched/debug: Fix sd->*_idx limit range avoiding overflow + - LP: #1173170 + * ARM: 7696/1: Fix kexec by setting outer_cache.inv_all for Feroceon + - LP: #1173170 + * ARM: 7698/1: perf: fix group validation when using enable_on_exec + - LP: #1173170 + * ath9k_htc: accept 1.x firmware newer than 1.3 + - LP: #1173170 + * ath9k_hw: change AR9580 initvals to fix a stability issue + - LP: #1173170 + * mac80211: fix cfg80211 interaction on auth/assoc request + - LP: #1173170 + * ssb: implement spurious tone avoidance + - LP: #1173170 + * crypto: algif - suppress sending source address information in recvmsg + - LP: #1173170 + * perf: Treat attr.config as u64 in perf_swevent_init() + - LP: #1173170 + * perf/x86: Fix offcore_rsp valid mask for SNB/IVB + - LP: #1173170 + * vm: add vm_iomap_memory() helper function + - LP: #1173170 + * vm: convert snd_pcm_lib_mmap_iomem() to vm_iomap_memory() helper + - LP: #1173170 + * vm: convert fb_mmap to vm_iomap_memory() helper + - LP: #1173170 + * vm: convert HPET mmap to vm_iomap_memory() helper + - LP: #1173170 + * vm: convert mtdchar mmap to vm_iomap_memory() helper + - LP: #1173170 + * Btrfs: make sure nbytes are right after log replay + - LP: #1173170 + * s390: move dummy io_remap_pfn_range() to asm/pgtable.h + - LP: #1173170 + * Linux 3.8.9 + - LP: #1173170 + * Linux 3.8.10 + - LP: #1175391 + * aio: fix possible invalid memory access when DEBUG is enabled + - LP: #1175391 + * TTY: fix atime/mtime regression + - LP: #1175391 + * sparc64: Fix race in TLB batch processing. + - LP: #1175391 + * atm: update msg_namelen in vcc_recvmsg() + - LP: #1175391 + * ax25: fix info leak via msg_name in ax25_recvmsg() + - LP: #1175391 + * Bluetooth: fix possible info leak in bt_sock_recvmsg() + - LP: #1175391 + * Bluetooth: RFCOMM - Fix missing msg_namelen update in + rfcomm_sock_recvmsg() + - LP: #1175391 + * Bluetooth: SCO - Fix missing msg_namelen update in sco_sock_recvmsg() + - LP: #1175391 + * caif: Fix missing msg_namelen update in caif_seqpkt_recvmsg() + - LP: #1175391 + * irda: Fix missing msg_namelen update in irda_recvmsg_dgram() + - LP: #1175391 + * iucv: Fix missing msg_namelen update in iucv_sock_recvmsg() + - LP: #1175391 + * l2tp: fix info leak in l2tp_ip6_recvmsg() + - LP: #1175391 + * llc: Fix missing msg_namelen update in llc_ui_recvmsg() + - LP: #1175391 + * netrom: fix info leak via msg_name in nr_recvmsg() + - LP: #1175391 + * NFC: llcp: fix info leaks via msg_name in llcp_sock_recvmsg() + - LP: #1175391 + * rose: fix info leak via msg_name in rose_recvmsg() + - LP: #1175391 + * tipc: fix info leaks via msg_name in recv_msg/recv_stream + - LP: #1175391 + * cbq: incorrect processing of high limits + - LP: #1175391 + * net IPv6 : Fix broken IPv6 routing table after loopback down-up + - LP: #1175391 + * net: count hw_addr syncs so that unsync works properly. + - LP: #1175391 + * atl1e: limit gso segment size to prevent generation of wrong ip length + fields + - LP: #1175391 + * bonding: fix bonding_masters race condition in bond unloading + - LP: #1175391 + * bonding: IFF_BONDING is not stripped on enslave failure + - LP: #1175391 + * bonding: fix l23 and l34 load balancing in forwarding path + - LP: #1175391 + * af_unix: If we don't care about credentials coallesce all messages + - LP: #1175391 + * netfilter: don't reset nf_trace in nf_reset() + - LP: #1175391 + * ipv6/tcp: Stop processing ICMPv6 redirect messages + - LP: #1175391 + * rtnetlink: Call nlmsg_parse() with correct header length + - LP: #1175391 + * tcp: incoming connections might use wrong route under synflood + - LP: #1175391 + * tcp: Reallocate headroom if it would overflow csum_start + - LP: #1175391 + * net: mvmdio: add select PHYLIB + - LP: #1175391 + * esp4: fix error return code in esp_output() + - LP: #1175391 + * net: mvneta: fix improper tx queue usage in mvneta_tx() + - LP: #1175391 + * net: cdc_mbim: remove bogus sizeof() + - LP: #1175391 + * tcp: call tcp_replace_ts_recent() from tcp_ack() + - LP: #1175391 + * net: rate-limit warn-bad-offload splats. + - LP: #1175391 + * net: drop dst before queueing fragments + - LP: #1175391 + * tracing: Fix selftest function recursion accounting + - LP: #1175391 + * ARM: 7699/1: sched_clock: Add more notrace to prevent recursion + - LP: #1175391 + * ARM: 7692/1: iop3xx: move IOP3XX_PERIPHERAL_VIRT_BASE + - LP: #1175391 + * Linux 3.8.11 + - LP: #1175391 + + [ Ubuntu: 3.8.0-19.30 ] + + * Add file_ns_capable() helper function for open-time capability checking + (CVE-2013-1959) + - LP: #1174590 + - CVE-2013-1959 + * userns: Don't let unprivileged users trick privileged users into + setting the id_map (CVE-2013-1959) + - LP: #1174590 + - CVE-2013-1959 + * userns: Check uid_map's opener's fsuid, not the current fsuid + (CVE-2013-1959) + - LP: #1174590 + - CVE-2013-1959 + * net: fix incorrect credentials passing (CVE-2013-1979) + - LP: #1174827 + - CVE-2013-1979 + * userns: Changing any namespace id mappings should require privileges + (CVE-2013-1979) + - LP: #1174827 + - CVE-2013-1979 + + -- Ben Collins Sat, 18 May 2013 10:27:42 -0400 + +linux-ppc (3.8.0-9.15) raring; urgency=low + + [ Ubuntu: 3.8.0-19.29 ] + + * UBUNTU: [Config] disable PL330_DMA + - LP: #1168039 + * UBUNTU: SAUCE: (no-up) ARM: highbank: fix cache flush ordering for cpu hotplug + - LP: #1169956 + * SAUCE: (no-up) x86: reboot: Make Dell Optiplex 390 use reboot=pci + - LP: #800660 + * SAUCE: [media] uvcvideo: quirk PROBE_DEF for Dell Studio / OmniVision + webcam + - LP: #1168430 + * Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" + - LP: #1168506 + * Revert "PCI/ACPI: Request _OSC control before scanning PCI root bus" + - LP: #1168506 + * Revert "tty/8250_pnp: serial port detection regression since v3.7" + - LP: #1168506 + * ALSA: hda - fixup D3 pin and right channel mute on Haswell HDMI audio + - LP: #1167270 + * ASoC: imx-ssi: Fix occasional AC97 reset failure + - LP: #1168506 + * ASoC: dma-sh7760: Fix compile error + - LP: #1168506 + * ASoC: spear_pcm: Update to new pcm_new() API + - LP: #1168506 + * regmap: Initialize `map->debugfs' before regcache + - LP: #1168506 + * regmap: cache Fix regcache-rbtree sync + - LP: #1168506 + * MIPS: Fix logic errors in bitops.c + - LP: #1168506 + * HID: magicmouse: fix race between input_register() and probe() + - LP: #1168506 + * spi/s3c64xx: modified error interrupt handling and init + - LP: #1168506 + * spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts + - LP: #1168506 + * gpio: stmpe: pass DT node to irqdomain + - LP: #1168506 + * UBIFS: make space fixup work in the remount case + - LP: #1168506 + * reiserfs: Fix warning and inode leak when deleting inode with xattrs + - LP: #1168506 + * ALSA: hda - bug fix on return value when getting HDMI ELD info + - LP: #1168506 + * ALSA: hda - Enabling Realtek ALC 671 codec + - LP: #1168506 + * ALSA: hda - fix typo in proc output + - LP: #1168506 + * drm/nouveau: fix handling empty channel list in ioctl's + - LP: #1168506 + * drm/i915: Be sure to turn hsync/vsync back on at crt enable (v2) + - LP: #1168506 + * drm: correctly restore mappings if drm_open fails + - LP: #1168506 + * mm: prevent mmap_cache race in find_vma() + - LP: #1168506 + * EISA/PCI: Init EISA early, before PNP + - LP: #1168506 + * EISA/PCI: Fix bus res reference + - LP: #1168506 + * ixgbe: fix registration order of driver and DCA nofitication + - LP: #1168506 + * libata: Use integer return value for atapi_command_packet_set + - LP: #1168506 + * libata: Set max sector to 65535 for Slimtype DVD A DS8A8SH drive + - LP: #1168506 + * MIPS: Unbreak function tracer for 64-bit kernel. + - LP: #1168506 + * alpha: Add irongate_io to PCI bus resources + - LP: #1168506 + * PCI/ACPI: Always resume devices on ACPI wakeup notifications + - LP: #1168506 + * PCI/PM: Disable runtime PM of PCIe ports + - LP: #1168506 + * ata_piix: Fix DVD not dectected at some Haswell platforms + - LP: #1168506 + * ftrace: Consistently restore trace function on sysctl enabling + - LP: #1168506 + * powerpc: pSeries_lpar_hpte_remove fails from Adjunct partition being + performed before the ANDCOND test + - LP: #1168506 + * mwifiex: limit channel number not to overflow memory + - LP: #1168506 + * mac80211: fix remain-on-channel cancel crash + - LP: #1168506 + * x86: remove the x32 syscall bitmask from syscall_get_nr() + - LP: #1168506 + * hwspinlock: fix __hwspin_lock_request error path + - LP: #1168506 + * remoteproc/ste: fix memory leak on shutdown + - LP: #1168506 + * remoteproc: fix error path of handle_vdev + - LP: #1168506 + * remoteproc: fix FW_CONFIG typo + - LP: #1168506 + * spinlocks and preemption points need to be at least compiler barriers + - LP: #1168506 + * crypto: ux500 - add missing comma + - LP: #1168506 + * crypto: gcm - fix assumption that assoc has one segment + - LP: #1168506 + * drm/mgag200: Index 24 in extended CRTC registers is 24 in hex, not + decimal. + - LP: #1168506 + * block: avoid using uninitialized value in from queue_var_store + - LP: #1168506 + * SUNRPC: Remove extra xprt_put() + - LP: #1168506 + * NFSv4: Fix a memory leak in nfs4_discover_server_trunking + - LP: #1168506 + * NFSv4/4.1: Fix bugs in nfs4[01]_walk_client_list + - LP: #1168506 + * drm/i915: Fix build failure + - LP: #1168506 + * x86: Fix rebuild with EFI_STUB enabled + - LP: #1168506 + * thermal: return an error on failure to register thermal class + - LP: #1168506 + * msi-wmi: Fix memory leak + - LP: #1168506 + * cpufreq: exynos: Get booting freq value in exynos_cpufreq_init + - LP: #1168506 + * ARM: EXYNOS: Fix crash on soft reset on EXYNOS5440 + - LP: #1168506 + * drm/i915: add quirk to invert brightness on eMachines G725 + - LP: #1168506 + * drm/i915: add quirk to invert brightness on eMachines e725 + - LP: #1168506 + * drm/i915: add quirk to invert brightness on Packard Bell NCL20 + - LP: #1168506 + * r8169: fix auto speed down issue + - LP: #1168506 + * vfio-pci: Fix possible integer overflow + - LP: #1168506 + * NFSv4: Doh! Typo in the fix to nfs41_walk_client_list + - LP: #1168506 + * can: gw: use kmem_cache_free() instead of kfree() + - LP: #1168506 + * mwifiex: complete last internal scan + - LP: #1168506 + * Linux 3.8.7 + - LP: #1168506 + * ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_* + - LP: #1169930 + * ASoC: core: Fix to check return value of snd_soc_update_bits_locked() + - LP: #1169930 + * ASoC: wm5102: Correct lookup of arizona struct in SYSCLK event + - LP: #1169930 + * ASoC: wm8903: Fix the bypass to HP/LINEOUT when no DAC or ADC is + running + - LP: #1169930 + * tracing: Fix double free when function profile init failed + - LP: #1169930 + * ARM: Kirkwood: Fix typo in the definition of ix2-200 rebuild LED + - LP: #1169930 + * ARM: imx35 Bugfix admux clock + - LP: #1169930 + * dmaengine: omap-dma: Start DMA without delay for cyclic channels + - LP: #1169930 + * PM / reboot: call syscore_shutdown() after disable_nonboot_cpus() + - LP: #1169930 + * ipc: set msg back to -EAGAIN if copy wasn't performed + - LP: #1169930 + * GFS2: Fix unlock of fcntl locks during withdrawn state + - LP: #1169930 + * GFS2: return error if malloc failed in gfs2_rs_alloc() + - LP: #1169930 + * SCSI: libsas: fix handling vacant phy in sas_set_ex_phy() + - LP: #1169930 + * cifs: Allow passwords which begin with a delimitor + - LP: #1169930 + * target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition + CDBs + - LP: #1169930 + * vfs: Revert spurious fix to spinning prevention in prune_icache_sb + - LP: #1169930 + * kobject: fix kset_find_obj() race with concurrent last kobject_put() + - LP: #1169930 + * gpio: fix wrong checking condition for gpio range + - LP: #1169930 + * x86-32: Fix possible incomplete TLB invalidate with PAE pagetables + - LP: #1169930 + * tracing: Fix possible NULL pointer dereferences + - LP: #1169930 + * udl: handle EDID failure properly. + - LP: #1169930 + * ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section + - LP: #1169930 + * sched_clock: Prevent 64bit inatomicity on 32bit systems + - LP: #1169930 + * x86, mm, paravirt: Fix vmalloc_fault oops during lazy MMU updates + - LP: #1169930 + * x86, mm: Patch out arch_flush_lazy_mmu_mode() when running on bare + metal + - LP: #1169930 + * tty: don't deadlock while flushing workqueue + - LP: #1169930 + * Linux 3.8.8 + - LP: #1169930 + * Release Tracking Bug + - LP: #1168504 + + [ Ubuntu: 3.8.0-18.28 ] + + * (debian) fix internal linkage for separated header packages + - LP: #1165259 + * SAUCE: Bluetooth: Add support for Broadcom 413c:8143 + - LP: #1166113 + * SAUCE: (no-up) apparmor: Fix quieting of audit messages for network + mediation + - LP: #1163259 + * SAUCE: (no-up) drm/i915: quirk no PCH_PWM_ENABLE for Dell XPS13 + backlight + - LP: #1162026, #1163720 + * [Config] Disable CONFIG_PARPORT_PC_FIFO + - LP: #339752 + * SAUCE: (no-up) mac80211_hwsim: Register and bind to driver + - LP: #1166250 + * [Config] RTC_DRV_PL031=y + * (debian) Abort build on unresolved symbols + - LP: #1166197 + * [Config] Add libceph to inclusion list + * [Config] Drop all inclusion list modules with unsatisfied dependencies + * SAUCE: (no-up) Remove emi62 files duplicated in linux-firmware + * SAUCE: (no-up) Remove emi26 files duplicated in linux-firmware + * SAUCE: (no-up) Remove whiteheat files duplicated in linux-firmware + * Release Tracking Bug + - LP: #1168040 + * TTY: do not update atime/mtime on read/write + - LP: #1097680 + - CVE-2013-0160 + * KVM: x86: Convert MSR_KVM_SYSTEM_TIME to use gfn_to_hva_cache functions + (CVE-2013-1797) + - LP: #1158258 + - CVE-2013-1797 + * KVM: Fix bounds checking in ioapic indirect register reads + (CVE-2013-1798) + - LP: #1158262 + - CVE-2013-1798 + * drm/i915: HDMI/DP - ELD info refresh support for Haswell + - LP: #1011438 + * ALSA - HDA: New PCI ID for Haswell ULT + - LP: #1011438 + * ALSA: hda - Support rereading widgets under the function group + - LP: #1011438 + * ALSA: hda - Add fixup for Haswell to enable all pin and convertor + widgets + - LP: #1011438 + * libata: fix DMA to stack in reading devslp_timing parameters + - LP: #1031173 + * dmaengine: dw_dmac: remove CLK dependency + - LP: #1031163 + * dmaengine: dw_dmac: Enhance device tree support + - LP: #1031163 + * dmaengine: dw_dmac: amend description and indentation + - LP: #1031163 + * dw_dmac: change dev_printk() to corresponding macros + - LP: #1031163 + * dw_dmac: don't call platform_get_drvdata twice + - LP: #1031163 + * dw_dmac: change dev_crit to dev_WARN in dwc_handle_error + - LP: #1031163 + * dw_dmac: introduce to_dw_desc() macro + - LP: #1031163 + * dw_dmac: absence of pdata isn't critical when autocfg is set + - LP: #1031163 + * dw_dmac: check for mapping errors + - LP: #1031163 + * dw_dmac: remove redundant check + - LP: #1031163 + * dw_dmac: update tx_node_active in dwc_do_single_block + - LP: #1031163 + * dma: dw_dmac: add dwc_chan_pause and dwc_chan_resume + - LP: #1031163 + * dmaengine: introduce is_slave_direction function + - LP: #1031163 + * dmaengine: add possibility for cyclic transfers + - LP: #1031163 + * dma: dw_dmac: check direction properly in dw_dma_cyclic_prep + - LP: #1031163 + * dma: ep93xx_dma: reuse is_slave_direction helper + - LP: #1031163 + * dma: ipu_idmac: reuse is_slave_direction helper + - LP: #1031163 + * dma: ste_dma40: reuse is_slave_direction helper + - LP: #1031163 + * dw_dmac: call .probe after we have a device in place + - LP: #1031163 + * dw_dmac: store direction in the custom channel structure + - LP: #1031163 + * dw_dmac: make usage of dw_dma_slave optional + - LP: #1031163 + * dw_dmac: backlink to dw_dma in dw_dma_chan is superfluous + - LP: #1031163 + * dw_dmac: allocate dma descriptors from DMA_COHERENT memory + - LP: #1031163 + * dw_dmac: don't exceed AHB master number in dwc_get_data_width + - LP: #1031163 + * dw_dmac: move soft LLP code from tasklet to dwc_scan_descriptors + - LP: #1031163 + * dw_dmac: print out DW_PARAMS and DWC_PARAMS when debug + - LP: #1031163 + * dw_dmac: remove unnecessary tx_list field in dw_dma_chan + - LP: #1031163 + * dw_dmac: introduce total_len field in struct dw_desc + - LP: #1031163 + * dw_dmac: fill individual length of descriptor + - LP: #1031163 + * dw_dmac: return proper residue value + - LP: #1031163 + * dw_dmac: apply default dma_mask if needed + - LP: #1031163 + * dw_dmac: add support for Lynxpoint DMA controllers + - LP: #1031163 + * dw_dmac: adjust slave_id accordingly to request line base + - LP: #1031163 + + -- Ben Collins Wed, 17 Apr 2013 16:15:30 -0400 + +linux-ppc (3.8.0-8.14) raring; urgency=low + + [ Ubuntu: 3.8.0-17.27 ] + + * SAUCE: (no-up) Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + * SAUCE: (no-up) Bluetooth: Add support for 105b:e065 + - LP: #1161261 + * SAUCE: (no-up) tools/power turbostat: additional Haswell CPU-id + - LP: #1083993 + * Revert "SAUCE: (no-up) seccomp: forcing auditing of kill condition" + Replaced by upstream patch. + * Release Tracking Bug + - LP: #1165746 + * rebase to v3.8.6 + * Revert "brcmsmac: support 4313iPA" + - LP: #1157190 + * tools/power turbostat: support Haswell + - LP: #1083993 + * net: calxedaxgmac: fix rx ring handling when OOM + * cpufreq: check OF node /cpus presence before dereferencing it + * Input: cypress_ps2 - fix trackpadi found in Dell XPS12 + - LP: #1103594 + * ARM: OMAP2+: Limit omap initcalls to omap only on multiplatform kernels + * ARM: OMAP2+: Use omap initcalls + * ARM: OMAP: Fix i2c cmdline initcall for multiplatform + * ARM: OMAP: Fix dmaengine init for multiplatform + * ARM: OMAP2+: Add multiplatform debug_ll support + * ARM: OMAP2+: Disable code that currently does not work with + multiplaform + * ARM: OMAP2+: Enable ARCH_MULTIPLATFORM support + * ARM: OMAP2+: Add minimal support for booting vexpress + * ARM: OMAP2+: Remove now obsolete uncompress.h and debug-macro.S + * davinci: do not include mach/hardware.h + * clk: export __clk_get_name for re-use in imx-ipu-v3 and others + * [SCSI] storvsc: avoid usage of WRITE_SAME + - LP: #1157952 + * ACPICA: Fix possible memory leak in dispatcher error path. + * KVM: x86: fix for buffer overflow in handling of MSR_KVM_SYSTEM_TIME (CVE-2013-1796) + - LP: #1158254 + - CVE-2013-1796 + * SAUCE: (no-up) Bluetooth: Add a load_firmware callback to struct hci_dev + - LP: #1065400 + * SAUCE: (no-up) Bluetooth: Implement broadcom patchram firmware loader + - LP: #1065400 + * SAUCE: (no-up) Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Ben Collins Mon, 08 Apr 2013 18:16:48 -0400 + +linux-ppc (3.8.0-7.13) raring; urgency=low + + [ Ubuntu: 3.8.0-16.26 ] + + * SAUCE: intel_idle: additional Haswell CPU-id + - LP: #1083993 + * SAUCE: cpufreq: OMAP: instantiate omap-cpufreq as a platform_driver + * Rebase to 3.8.5 + * Release Tracking Bug + - LP: #1162956 + * iwlwifi: add 7000 series device configuration + - LP: #1011422 + * mac80211: prevent spurious HT/VHT downgrade message + + -- Ben Collins Mon, 01 Apr 2013 20:33:09 -0400 + +linux-ppc (3.8.0-6.12) raring; urgency=low + + [ Ben Collins ] + + * [Config] Make ds3232 and udl built-in on e500mc + + [ Ubuntu: 3.8.0-15.25 ] + + * [Config] annotations -- track move to -generic for armhf + * [Config] annotations -- resync with updated armhf -generic flavour + * [Config] annotations -- clean up redundant annotations + * Revert "SAUCE: add option to hand off all kernel parameters to init" + * SAUCE: add option to hand off all kernel parameters to init + Clean up compile warnings. + - LP: #586386 + * Revert "SAUCE: isapnp_init: make isa PNP scans occur async" + * SAUCE: isapnp_init: make isa PNP scans occur async + Clean up compile warnings. + * [Config] HIHGBANK=y + * [Config] SATA_HIGHBANK=y + * [Config] NET_CALXEDA_XGMAC=y + * [Config] EDAC_HIGHBANK_[MC|L2]=y + * SAUCE: cpufreq: check OF /cpus presence before dereferencing it + * [Config] CONFIG_CPU_IDLE_CALXEDA=y, CONFIG_SWP_EMULATE=y + * [Config] ARM_HIGHBANK_CPUFREQ=y + * [Config] CPU_IDLE_MULTIPLE_DRIVERS=y, CPU_FREQ_DEFAULT_GOV_ONDEMAND=y + * SAUCE: ARM: cache-l2x0: fix masking of RTL revision numbering and + set_debug init + * SAUCE: ahci: remove calxeda ahci controller + * SAUCE: cpuidle: calxeda: disable power gating by default + * SAUCE: net: calxedaxgmac: fix rx ring handling when OOM + * SAUCE: dm-raid45: Fix incompatible ptr assignments + Clean up compile warnings. + * [Config] Removed modules from ABI + * [Config] CONFIG_SATA_HIGHBANK=n for x86 + * [Config] Remove highbank as a flavour + * [Config] CONFIG_MAILBOX=y + * SAUCE: acpi/video.c: Fix compile warnings + * SAUCE: apparmor: Fix compile warnings + * SAUCE: vesafb: Cleanup compile warnings + * Release Tracking Bug + - LP: #1161054 + * i2c: iSMT: add Intel Avoton DeviceIDs + - LP: #1083965 + * ARM: use device tree to get smp_twd clock + * clk / highbank: Prevent glitches in non-bypass reset mode + * ARM / highbank: add support for pl320 IPC + * cpufreq / highbank: add support for highbank cpufreq + * PM / OPP: switch exported symbols to GPL variant + * PM / OPP: Export more symbols for module usage + * mailbox, pl320-ipc: remove __init from probe function + * SAUCE: PCI: define macro for marvell vendor ID + - LP: #1159863 + * SAUCE: PCI: fix system hang issue of Marvell SATA host controller + - LP: #1159863 + + [ Ubuntu: 3.8.0-14.24 ] + + * [Config] rename omap flavour to generic + * [Config] USB_MUSB_HDRC=m + * SAUCE: mfd: omap-usb-host: Fix clk warnings at boot + * SAUCE: Revert "brcmsmac: support 4313iPA" + - LP: #1157190 + * [Config] CONFIG_SERIAL_8250_DW=m across all arches + - LP: #1031162 + * [debian] Build extras package only for specific arches + * [config] Set do_extras_package=true for x86en + * Rebase to 3.8.4 + * Release Tracking Bug + - LP: #1158863 + * Input: ALPS - document the alps.h data structures + - LP: #1089413 + * Input: ALPS - copy "model" info into alps_data struct + - LP: #1089413 + * Input: ALPS - move alps_get_model() down below hw_init code + - LP: #1089413 + * Input: ALPS - introduce helper function for repeated commands + - LP: #1089413 + * Input: ALPS - rework detection sequence + - LP: #1089413 + * Input: ALPS - use function pointers for different protocol handlers + - LP: #1089413 + * Input: ALPS - move {addr,nibble}_command settings into + alps_set_defaults() + - LP: #1089413 + * Input: ALPS - rework detection of Pinnacle AGx touchpads + - LP: #1089413 + * Input: ALPS - fix command mode check + - LP: #1089413 + * Input: ALPS - move pixel and bitmap info into alps_data struct + - LP: #1089413 + * Input: ALPS - make the V3 packet field decoder "pluggable" + - LP: #1089413 + * Input: ALPS - add support for "Rushmore" touchpads + - LP: #1089413 + * Input: ALPS - enable trackstick on Rushmore touchpads + - LP: #1089413 + * Input: ALPS - remove unused argument to alps_enter_command_mode() + - LP: #1089413 + * Input: ALPS - add "Dolphin V1" touchpad support + - LP: #1089413 + * serial: 8250_dw: Use ifdef with ACPI + - LP: #1031162 + * rebase to v3.8.4 + + -- Ben Collins Sun, 31 Mar 2013 12:45:15 -0400 + +linux-ppc (3.8.0-6.11) raring; urgency=low + + [ Ben Collins ] + + * SAUCE: 8250: Wrap ACPI calls with ifdefs for non-ACPI systems + + [ PPC-Ubuntu-3.8.0-6.10 follows ] + + [ Ubuntu: 3.8.0-13.23 ] + + * Revert "drm/i915: enable irqs earlier when resuming" + - LP: #1156310 + * Revert "drm/i915: reorder setup sequence to have irqs for output setup" + - LP: #1156310 + * x86/apic: Remove noisy zero-mask warning from + default_send_IPI_mask_logical() + - LP: #1100202 + * drm/i915: Fix races in gen4 page flip interrupt handling + - LP: #1116587 + * drm/i915: Revert hdmi HDP pin checks + - LP: #1135668 + * signal: always clear sa_restorer on execve + - LP: #1153813 + - CVE-2013-0914 + + [ Ubuntu: 3.8.0-13.22 ] + + * Revert "SAUCE: fireware: add NO_MSI quirks for o2micro controller" + * SAUCE: alx: use github.com/qca/alx repo + - LP: #1154238 + * [packaging] do not use ../.$(series)-env file + * SAUCE: Convert bnx2x firmware files to ihex format + * SAUCE: alx: Update to heads/master + - LP: #1154238 + * SAUCE: efivars: Allow disabling use as a pstore backend + * [Config] Re-enable CONFIG_PSTORE for x86 + * Drop efivarfs reverts in favor of 3.8.3 stable updates + Revert "efivarfs: Validate filenames much more aggressively" + Revert "efivarfs: guid part of filenames are case-insensitive" + * [Config] CONFIG_I2C_ISMT=m + - LP: #1011449 + * [Config] CONFIG_SERIAL_8250_DMA=y,CONFIG_SERIAL_8250_DW=m for x86en + - LP: #1031162 + * Release Tracking Bug + - LP: #1155680 + * net/sctp: Validate parameter size for SCTP_GET_ASSOC_STATS + - LP: #1152791 + - CVE-2013-1828 + * mfd: rtsx: Implement driving adjustment to device-dependent callbacks + - LP: #1153618 + * mfd: rtsx: Support RTS5227 + - LP: #1153618 + * mmc: rtsx: remove driving adjustment + - LP: #1153618 + * i2c: Adding support for Intel iSMT SMBus 2.0 host controller + - LP: #1011449 + * i2c: fix i2c-ismt.c printk format warning + - LP: #1011449 + * serial: quatech: add the other serial identifiers and preliminary + control code + - LP: #1031162 + * serial: Remove RM9000 series serial driver. + - LP: #1031162 + * serial: 8250_pci: remove __devexit usage + - LP: #1031162 + * serial: 8250: Allow drivers to deliver capabilities + - LP: #1031162 + * serial: 8250_dw: Don't use UPF_FIXED_TYPE + - LP: #1031162 + * serial: 8250_dw: Map IO memory + - LP: #1031162 + * serial: 8250_dw: Move device tree code to separate function + - LP: #1031162 + * serial: 8250_dw: Set FIFO size dynamically + - LP: #1031162 + * serial: 8250_dw: Add ACPI 5.0 support + - LP: #1031162 + * serial: 8250: Add support for dmaengine + - LP: #1031162 + * serial: 8250_dw: Enable DMA support with ACPI + - LP: #1031162 + * rebase to v3.8.3 + + [ Ubuntu: 3.8.0-12.21 ] + + * [Config] CONFIG_PSTORE=n for x86 + * Release Tracking Bug + - LP: #1152228 + * Revert "efivarfs: guid part of filenames are case-insensitive" + - LP: #1146988 + * Revert "efivarfs: Validate filenames much more aggressively" + - LP: #1146988 + * mfd: rtsx: Optimize card detect flow + - LP: #1148892 + * mfd: rtsx: Fix issue that booting OS with SD card inserted + - LP: #1148892 + + [ Ubuntu: 3.8.0-11.20 ] + + * Release Tracking Bug + - LP: #1147659 + * [Config] CONFIG_SPI_PXA2XX_PCI=m + - LP: #1031169 + * CONFIG_SATA_ZPODD=y + - LP: #1031180 + * CONFIG_GPIO_LYNXPOINT=y + - LP: #1031174 + * spi/pxa2xx-pci: switch to use pcim_* interfaces + - LP: #1031169 + * spi/pxa2xx: embed the ssp_device to platform data + - LP: #1031169 + * spi/pxa2xx: allow building on a 64-bit kernel + - LP: #1031169 + * spi/pxa2xx: fix warnings when compiling a 64-bit kernel + - LP: #1031169 + * spi/pxa2xx: convert to the pump message infrastructure + - LP: #1031169 + * spi/pxa2xx: convert to the common clk framework + - LP: #1031169 + * spi/pxa2xx: break out the private DMA API usage into a separate file + - LP: #1031169 + * spi/pxa2xx: add support for DMA engine + - LP: #1031169 + * spi/pxa2xx: add support for runtime PM + - LP: #1031169 + * spi/pxa2xx: add support for SPI_LOOP + - LP: #1031169 + * spi/pxa2xx: add support for Intel Low Power Subsystem SPI + - LP: #1031169 + * spi/pxa2xx: add support for Lynxpoint SPI controllers + - LP: #1031169 + * i2c-designware: always set the STOP bit after last byte + - LP: #1031166 + * i2c-designware: add minimal support for runtime PM + - LP: #1031166 + * i2c-designware: add support for Intel Lynxpoint + - LP: #1031166 + * remove can_power_off flag from scsi_device + - LP: #1031180 + * sr: support runtime pm + - LP: #1031180 + * libata: identify and init ZPODD devices + - LP: #1031180 + * libata: move acpi notification code to zpodd + - LP: #1031180 + * libata: check zero power ready status for ZPODD + - LP: #1031180 + * libata: handle power transition of ODD + - LP: #1031180 + * libata: expose pm qos flags for ata device + - LP: #1031180 + * libata: do not suspend port if normal ODD is attached + - LP: #1031180 + * pm: differentiate system and runtime pm for ata port + - LP: #1031180 + * PM code cleanup for ata port + - LP: #1031180 + * scsi: no poll when ODD is powered off + - LP: #1031180 + * Set proper SK when CK_COND is set. + - LP: #1031180 + * fix smatch warning for zpodd_wake_dev + - LP: #1031180 + * gpio/lynxpoint: add chipset gpio driver. + - LP: #1031174 + + [ Ubuntu: 3.8.0-10.19 ] + + * [Config] annotate CONFIG_PATA_ACPI + * rebase to v3.8.2 + * NFC: Fixed nfc core and hci unregistration and cleanup + - LP: #1083994 + * NFC: Added error handling in event_received hci ops + - LP: #1083994 + * NFC: Changed event_received hci ops result semantic + - LP: #1083994 + * NFC: Fixed skb leak in tm_send() nfc and hci ops implementations + - LP: #1083994 + * NFC: Add HCI quirks to support driver (non)standard implementations + - LP: #1083994 + * USB: Don't use EHCI port sempahore for USB 3.0 hubs. + - LP: #1011415 + * USB: Prepare for refactoring by adding extra udev checks. + - LP: #1011415 + * USB: Rip out recursive call on warm port reset. + - LP: #1011415 + * USB: Fix connected device switch to Inactive state. + - LP: #1011415 + * USB: Use helper function hub_set_port_link_state + - LP: #1011415 + * USB: Refactor hub_port_wait_reset. + - LP: #1011415 + * usb/core: consider link speed while looking at bMaxPower + - LP: #1011415 + * usb/core: update power budget for SuperSpeed + - LP: #1011415 + * usb: Add driver/usb/core/(port.c,hub.h) files + - LP: #1011415 + * usb: fix compilation error and warning of driver/usb/core/port.c on arm + and blackfin + - LP: #1011415 + * usb: Add "portX/connect_type" attribute to expose usb port's connect + type + - LP: #1011415 + * usb: Create link files between child device and usb port device. + - LP: #1011415 + * USB: Set usb port's DeviceRemovable according acpi information + - LP: #1011415 + * USB: fix sign-extension bug in the hub driver + - LP: #1011415 + * usb: add runtime pm support for usb port device + - LP: #1011415 + * usb: add usb port auto power off mechanism + - LP: #1011415 + * usb: expose usb port's pm qos flags to user space + - LP: #1011415 + * usb: enable usb port device's async suspend. + - LP: #1011415 + * drm: add prime helpers + - LP: #1138440 + * drm/nouveau: use prime helpers + - LP: #1138440 + * drm/radeon: use prime helpers + - LP: #1138440 + * rebase to v3.8.2 + - LP: #961286 + * Release Tracking Bug + - LP: #1144449 + + -- Ben Collins Wed, 20 Mar 2013 02:40:53 -0400 + +linux-ppc (3.8.0-5.9) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] apply v3.8 final configuration review changes + + [ Ben Collins ] + + * [Config] Revert some changes from previous sync + + [ Ubuntu: 3.8.0-8.18 ] + + * [Config] CONFIG_PATA_ACPI=m + - LP: #1084783 + * intel_idle: stop using driver_data for static flags + - LP: #1083993 + * intel_idle: support Haswell + - LP: #1083993 + * i2c: i801: SMBus patch for Intel Avoton DeviceIDs + - LP: #1083965 + * ahci: AHCI-mode SATA patch for Intel Avoton DeviceIDs + - LP: #1083965 + * ata_piix: IDE-mode SATA patch for Intel Avoton DeviceIDs + - LP: #1083965 + + [ Ubuntu: 3.8.0-8.17 ] + + * Release Tracking Bug + - LP: #1133552 + * Bump ABI to fix armhf FTBS + * d-i: Add hid-logitech-dj to input-modules + - LP: #975198 + + [ Ubuntu: 3.8.0-7.16 ] + + * [Config] all new menu aligned annotations + * [Config] v3.8 configuration review -- pass 1 + * [Config] v3.8 configuration review -- pass 2 + * [Config] apply v3.8 final configuration review changes + * [Config] annotation: ALX does not build on powerpc + * [Config] CONFIG_DEBUG_INFO=y + * SAUCE: sock_diag: Fix out-of-bounds access to sock_diag_handlers[] + - LP: #1132896 + - CVE-2013-1763 + + [ Ubuntu: 3.8.0-7.15 ] + + * [Config] Add CONFIG_PS2_CYPRESS + * SAUCE: Input: Cypress PS/2 Trackpad simulated multitouch + * SAUCE: Input: fix Cypress PS/2 Trackpad in Dell XPS12 + - LP: #1103594 + * Input: increase struct ps2dev cmdbuf[] to 8 bytes + * Input: add support for Cypress PS/2 Trackpads + - LP: #978807 + + [ Ubuntu: 3.8.0-7.14 ] + + * [Config] CONFIG_RCU_USER_QS=n + * [Config] CONFIG_MTD_ONENAND_SIM=n + * annotations: add annotations for CONFIG_CC_STACKPROTECTOR + * rebase to v3.8 + * Release Tracking Bug + - LP: #1130111 + * UBUNTU: SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access failure once + - LP: #1128840 + + [ Ubuntu: 3.8.0-6.13 ] + + * Release Tracking Bug + - LP: #1125364 + * Add ahci modules to d-i + - LP: #1124415 + * SAUCE: drm/i915: Wait for pending flips to complete before tearing down + the encoders + - LP: #1097315 + + [ Ubuntu: 3.8.0-6.12 ] + + * perf: NO_LIBPERL=1 + * Fix linux-headers dependency + * Release Tracking Bug + - LP: #1124362 + * [Config] enable CONFIG_AUFS_EXPORT to allow nfs exports + - LP: #1121699 + * SAUCE: drm/i915: write backlight harder + - LP: #954661 + + -- Ben Collins Thu, 28 Feb 2013 11:35:42 -0500 + +linux-ppc (3.8.0-4.8) raring; urgency=low + + [ Ubuntu: 3.8.0-6.11 ] + + * Release Tracking Bug + - LP: #1122071 + * rebase to v3.8-rc7 + * Add libaudit-dev as a build dependency + * Build perf with NO_LIBPYTHON=1 to avoid a python build dependency. + * [Config] Remove CONFIG_SATA_AHCI annotation + + [ Ubuntu: 3.8.0-5.10 ] + + * Release Tracking Bug + - LP: #1118568 + * Bump ABI to fix install issue with 3.8.0-4.8. + Moving drivers/ata/*ahci* to linux-image caused an + install conflict with linux-image-extras without an + ABI bump. + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + [ Ubuntu: 3.8.0-4.9 ] + + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + * SAUCE: ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1113547 + * SAUCE: alx driver import script + * SAUCE: alx: Update to heads/master + * Release Tracking Bug + - LP: #1117673 + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + * [Config] Add alx to d-i nic-modules + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + + -- Ben Collins Wed, 13 Feb 2013 09:01:48 -0500 + +linux-ppc (3.8.0-3.7) raring; urgency=low + + [ Ubuntu: 3.8.0-4.8 ] + + * SAUCE: imx6: dts: Add IMX6Q AHCI support + * rebase to v3.8-rc6 + * updateconfigs following rebase to v3.8-rc6 + * Release Tracking Bug + - LP: #1112573 + * SAUCE: imx6: enable sata clk if SATA_AHCI_PLATFORM + * [Config] SERIAL_AMBA_PL011=y (vexpress serial console) + * [Config] MMC_ARMMMCI=y (vexpress mmc) + * [Config] FB_ARMCLCD=y (vexpress framebuffer) + * [Config] CONFIG_MAC80211_MESSAGE_TRACING=y + * rebase to v3.8-rc6 + - LP: #1107477 + + [ Ubuntu: 3.8.0-3.7 ] + + * SAUCE: ARM: OMAP2+: add cpu id register to MAC address helper + * SAUCE: ARM: omap2 add mac address allocation register api + * SAUCE: ARM: omap2 panda register ethernet and wlan for automatic mac + allocation + * rebase to v3.8-rc5 + * Release Tracking Bug + - LP: #1111486 + * SAUCE: davinci: vpss: compilation fix + * [Config] enable TI OMAP4 support (Pandaboard/ES) + * [Config] OMAP_USB2=y (since TWL6030_USB depends on it) + * [Config] enable Freescale IMX6 support (SabreLite) + * [Config] SERIAL_IMX_CONSOLE=y + * [Config] MMC_*_IMX=y + * [Config] disable USB_SUSPEND + * [Config] USB_MXS_PHY=y + * [Config] USB_CHIPIDEA=y + * SAUCE: DTB: add support for multiple DTBs + * SAUCE: DTB: build imx6q-sabrelite + * SAUCE: DTB: build beaglexm + * SAUCE: DTB: build panda/panda es + * [Config] disable CPU_FREQ + * [Config] PANEL_TFP410=y (video DVI output) + * [Config] SND_OMAP_SOC*=y + * [Config] SND_IMX_SOC*=y + * [Config] I2C_IMX=y + * [Config] SPI_IMX=m + * [Config] Move 9p modules into generic package + - LP: #1107658 + * SAUCE: ARM: OMAP2+: Limit omap initcalls to omap only on multiplatform + kernels + * SAUCE: ARM: OMAP2+: Use omap initcalls + * SAUCE: ARM: OMAP: Fix i2c cmdline initcall for multiplatform + * SAUCE: ARM: OMAP: Fix dmaengine init for multiplatform + * SAUCE: ARM: OMAP2+: Add multiplatform debug_ll support + * SAUCE: ARM: OMAP2+: Disable code that currently does not work with + multiplaform + * SAUCE: ARM: OMAP2+: Enable ARCH_MULTIPLATFORM support + * SAUCE: ARM: OMAP2+: Add minimal support for booting vexpress + * SAUCE: ARM: OMAP2+: Remove now obsolete uncompress.h and debug-macro.S + * rebase to v3.8-rc5 + - LP: #1096789 + + -- Ben Collins Sat, 02 Feb 2013 17:43:31 -0500 + +linux-ppc (3.8.0-2.6) raring; urgency=low + + [ Ubuntu: 3.8.0-2.6 ] + + * Fix up linux-tools -> SRCPKGNAME-tools rename + * [Config] re-disable CONFIG_SOUND_OSS + - LP: #1105230 + * SAUCE: brcmsmac: fix tx status processing + * Release Tracking Bug + - LP: #1105104 + + -- Ben Collins Tue, 29 Jan 2013 10:25:29 -0500 + +linux-ppc (3.8.0-1.5) raring; urgency=low + + [ Ben Collins ] + + * SAUCE: Remove __devinit and __devexit annotations + * SAUCE: Add op emulation to allow newer kernels to run under e500 + qemu-kvm + + [ PPC Ubuntu: 3.8.0-1.4 ] + + [ Adam Conrad ] + + * Sync build-deps with master to avoid future FTBFS + * Fix up linux-tools -> SRCPKGNAME-tools rename + * Add a debian/source/options file to ignore cruft + + [ Andy Whitcroft ] + + * [Config] enable various HVC consoles + - LP: #1102206 + * [Config] linux-image-* should Suggests: linux-headers-* + - LP: #1029730 + + [ Ubuntu: 3.8.0-1.5 ] + + * Release Tracking Bug + - LP: #1101235 + * SAUCE: Input: add support for Cypress PS/2 Trackpads + - LP: #978807 + * SAUCE: Input: increase struct ps2dev cmdbuf[] to 8 bytes + * SAUCE: Input: Cypress PS/2 Trackpad simulated multitouch + * [Config] Add CONFIG_PS2_CYPRESS + * rebase to v3.8-rc4 + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + [ Ubuntu: 3.8.0-0.4 ] + + * [Config] Update CONFIG_TOUCHSCREEN_EGALAX build annotation + * [Config] Update CONFIG_IIO build annotation + * [Config] Update CONFIG_TOUCHSCREEN_EETI annotation + * [Config] Remove CONFIG_SPI_DW_MMIO annotation + * [Config] Remove CONFIG_SPI_PL022 annotation + * [Config] Update CONFIG_EZX_PCAP annotation + * [Config] Update CONFIG_SENSORS_AK8975 annotation + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + [ Ubuntu: 3.8.0-0.3 ] + + * Revert "SAUCE: (no-up) trace: add trace events for open(), exec() and + uselib()" + * SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() + (for v3.7+) + - LP: #1085766, #462111 + + -- Ben Collins Tue, 22 Jan 2013 20:41:25 -0500 + +linux-ppc (3.8.0-0.2) raring; urgency=low + + * [Config] Sync configs + + [ Ubuntu: 3.8.0-0.1 ] + + * rebase to v3.8-rc3 + - LP: #1096789 + * rebase to v3.8-rc2 + - LP: #1082357 + - LP: #1075882 + + -- Ben Collins Wed, 09 Jan 2013 10:34:05 -0500 + +linux-ppc (3.7.0-6.16) raring; urgency=low + + [ Ben Collins ] + + * SAUCE: Implement button power off in CTS-1000 driver + + [ Ubuntu: 3.7.0-7.15 ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + * Add ceph to linux-image for virtual instances + - LP: #1063784 + * SAUCE: net: dev_change_net_namespace: send a KOBJ_REMOVED/KOBJ_ADD + * [Config] CONFIG_SLUB_DEBUG=y + - LP: #1090308 + * Revert "[SCSI] sd: Implement support for WRITE SAME" + - LP: #1089818 + + -- Ben Collins Mon, 17 Dec 2012 09:51:13 -0500 + +linux-ppc (3.7.0-5.15) raring; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: p4080ds: Add mechanism for GPIO triggered system + poweroff" + * SAUCE: New driver for Servergy CTS-1000 systems (system halt/poweroff + support) + * [Config] Re-enable KVM and 8250_CONSOLE + + -- Ben Collins Thu, 13 Dec 2012 11:11:28 -0500 + +linux-ppc (3.7.0-4.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Configs] apply annotation updates to PPC configs (top section) + + [ Ubuntu: 3.7.0-6.14 ] + + * [Config] annotations: all new annotations scheme including defaults + * [Configs] apply annotation updates to main configs (top section) + * Revert "SAUCE: include and for mmc_core arm + build" + * Revert "SAUCE: [arm] fixup __aeabi_uldivmod undefined build error" + * Temporarily disable module check for build + * ubuntu: dm-raid45: Adapt to upstream interface changes + * Re-enable build of dm-raid45 + * SAUCE: Moved scripts/fw-to-ihex.sh to debian/scripts/misc + * SAUCE: ACPICA: Fix ACPI mutex object allocation memory leak on error + * SAUCE: drm: Fix possible EDID memory allocation oops + * SAUCE: ttm: Fix possible _manager memory allocation oops + * SAUCE: iwlwifi: iwlagn_request_scan: Fix check for priv->scan_request + * SAUCE: i915: intel_set_mode: Reduce stack allocation from 500 bytes to + 2 pointers + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + * rebase to v3.7 + + -- Ben Collins Tue, 11 Dec 2012 08:15:02 -0500 + +linux-ppc (3.7.0-3.13) raring; urgency=low + + [ Ubuntu: 3.7.0-5.13 ] + + * SAUCE: inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #922906 + * SAUCE: fsnotify: introduce fsnotify_get_group() + - LP: #922906 + * SAUCE: fsnotify: use reference counting for groups + - LP: #922906 + * SAUCE: fsnotify: take groups mark_lock before mark lock + - LP: #922906 + * SAUCE: fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed + - LP: #922906 + * SAUCE: fsnotify: use a mutex instead of a spinlock to protect a groups + mark list + - LP: #922906 + * SAUCE: fsnotify: pass group to fsnotify_destroy_mark() + - LP: #922906 + * SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #922906 + * SAUCE: fsnotify: dont put marks on temporary list when clearing marks + by group + - LP: #922906 + * SAUCE: fsnotify: change locking order + - LP: #922906 + * [Config] CONFIG_NFC_LLCP=y + * [Config] get-firmware: Filter new files through fwinfo + * [Config] CONFIG_MTD_NAND_DOCG4=m for all arches + * [Config] CONFIG_DRM_EXYNOS_HDMI=y + * [Config] CONFIG_XEN=y for all arches + * [Config] CONFIG_SND_OMAP_SOC_ZOOM2=m + * [Config] CONFIG_MMC_DW_EXYNOS=m + * [Config] CONFIG_GPIO_ADNP=m + * [Config] find-obsolete-firmware: Use correct path + * rebase to v3.7-rc8 + - LP: #1084640 + * Revert "VFS: don't do protected {sym,hard}links by default" + - LP: #1084192 + + -- Ben Collins Tue, 04 Dec 2012 15:53:21 -0500 + +linux-ppc (3.7.0-2.12) raring; urgency=low + + [ Ubuntu: 3.7.0-4.12 ] + + * Revert "[Config] Use -j1 for headers_install" + * Revert "[Config] install-arch-headers needs a valid config" + Strayed into the weeds in search of the root cause of the periodic + build failure. + Fixes powerpc FTBS introduced in -4.11. + * [Config] hmake -j1 + The kernel makefile appears to have parallel dependency + problems for the install_headers target. This appears to be root + cause for a periodic build failure on N-way machines. + + [ Ubuntu: 3.7.0-4.11 ] + + * [Config] Use -j1 for headers_install + Also fixes a powerpc FTBS introduced by + "[Config] install-arch-headers needs a valid config". + + [ Ubuntu: 3.7.0-4.10 ] + + * [Config] add rebuild-test support for autopkgtest + - LP: #1081500 + * [tests] move build tests out of the way + - LP: #1081500 + * [tests] add an autopkgtest rebuild test + - LP: #1081500 + * rebase to v3.7-rc7 + * SAUCE: Remove emi62 files duplicated in linux-firmware + * SAUCE: Remove sb16 files duplicated in linux-firmware + * SAUCE: Remove whiteheat files duplicated in linux-firmware + * SAUCE: Remove yamaha files duplicated in linux-firmware + * SAUCE: Remove dsp56k files used only by m68k + * SAUCE: firmware: Remove last vestiges of dabusb + * SAUCE: Remove vicam files duplicated in linux-firmware + * [Config] install-arch-headers needs a valid config + * rebase to v3.7-rc7 + - LP: #1076840 + - LP: #1081466 + + -- Ben Collins Wed, 28 Nov 2012 22:38:08 -0500 + +linux-ppc (3.7.0-1.11) raring; urgency=low + + [ Ben Collins ] + + * [Config] Fixup nic-firmware udeb to not require bnx2 firmware + * Re-upload of 1.10 to fix build failure + + [ Ben Collins ] + + * [Config] Disable Xilinx ethernet drivers (not needed) + * Re-upload of 1.9 to fix build failure + + [ Ubuntu: 3.7.0-3.9 ] + + * [Config] Enable CONFIG_X86_CPUFREQ_NFORCE2=y + - LP: #1079900 + * Add nfsv3 to nfs-modules udeb + * [Config] SND_OMAP_SOC*=y + - LP: #1019321 + * SAUCE: (no-up) xen/netfront: handle compound page fragments on transmit + - LP: #1078926 + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + * Revert "SAUCE: omap3 clocks .dev_id = NULL" + * rebase to v3.7-rc6 + * SAUCE: script to detect obsolete firmware + * SAUCE: Remove yam files duplicated in linux-firmware + * SAUCE: Remove tehuti files duplicated in linux-firmware + * SAUCE: Remove matrox files duplicated in linux-firmware + * SAUCE: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: Remove r128 files duplicated in linux-firmware + * SAUCE: Remove acenic files duplicated in linux-firmware + * SAUCE: Remove keyspan files duplicated in linux-firmware + * SAUCE: Remove sun files duplicated in linux-firmware + * SAUCE: Remove radeon files duplicated in linux-firmware + * SAUCE: Update bnx2x firmware to 7.8.2.0 + * [Config] generic.inclusion-list: econet has disappeared + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * rebase to v3.7-rc6 + + -- Ben Collins Wed, 21 Nov 2012 15:18:21 -0500 + +linux-ppc (3.7.0-0.8) raring; urgency=low + + [ Ubuntu: 3.7.0-2.8 ] + + * Revert "overlayfs: disable until FTBS is fixed" + * Revert "ubuntu: overlayfs" + * Revert "ubuntu: AUFS" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- ovl: switch to __inode_permission() + * ubuntu: overlayfs -- overlayfs: copy up i_uid/i_gid from the underlying + inode + - LP: #944386 + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS (no-squash) -- aufs3-base.patch + * ubuntu: AUFS (no-squash) -- aufs3-standalone.patch + * ubuntu: AUFS: aufs-update -- follow the uapi header changes + * ubuntu: AUFS -- update to f2873474324d0a31af4340554b9715f51331bc7f + * ubuntu: AUFS (no-squash) -- reenable + - LP: #1079193 + * ubuntu: overlayfs -- overlayfs: implement show_options + * ubuntu: overlayfs -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Ubuntu: 3.7.0-1.7 ] + + * [Config] Drop dependency on libaudit-dev + Its a universe package which causes an FTBS on the builders. + libaudit-dev is not strictly required for the perf tools build. + + [ Ubuntu: 3.7.0-1.6 ] + + * [Config] enforce -- switch CONFIG_NVRAM to more readable form + * [Config] better encode the CONFIG_NVRAM constaint + * enforcer -- fix debugging output + * [Config] Add custom_override rule to allow for alternate kernel + file/install + * [Config] Use SRCPKGNAME as prefix for indep linux headers package + * [Config] Dropped armel + * Drop highbank from ABI fetch list + * [Config] Use dh_prep instead of 'dh_clean -k' + * [Config] Build depend on libaudit-dev, libunwind8-dev for tools + * [Config] Document binary-indep dependency chain + * rebase to v3.7-rc5 + * rebase to v3.7-rc5 + + [ Ubuntu: 3.7.0-0.5 ] + + * [Config] CONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + * [Config] CONFIG_MTD_ONENAND_SIM=n for armel + Fixes FTBS + + [ Ubuntu: 3.7.0-0.4 ] + + * [Config] Update enforce rule for CONFIG_NVRAM to better suit flavours + * [Config] do_tools=false for arm + + [ Ubuntu: 3.7.0-0.3 ] + + * [Config] CONFIG_DRM_EXYNOS_HDMI=n for armhf + * [Config] CONFIG_MTD_NAND_DOCG4=n for armel/armhf + * [Config] Drop highbank harder + + [ Ubuntu: 3.7.0-0.2 ] + + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + * [Config] drop highbank builds + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + * Reinstate dropped.txt from Ubuntu-3.7.0-0.1-rc1 + * [Config] Dropped powerpc/ppc64 in favour of the community kernel + * [Config] CONFIG_MODULE_SIG=y for amd64,i386, and highbank + * rebase to v3.7-rc4 + * SAUCE: MODSIGN: Emit error for incorrectly signed module + * rebase to v3.7-rc4 + + -- Ben Collins Thu, 15 Nov 2012 11:23:43 -0500 + +linux-ppc (3.7.0-0.7) raring; urgency=low + + [ Ben Collins ] + + * [Config] On clean, remove the right location for d-i-(arch) + * [Config] Make linux-ppc-headers package Arch: powerpc + + -- Ben Collins Tue, 13 Nov 2012 16:23:58 -0500 + +linux-ppc (3.7.0-0.6) raring; urgency=low + + [ Ben Collins ] + + * [Config] Set do_common_headers_indep to force build linux-ppc-headers + on powerpc build + + -- Ben Collins Tue, 13 Nov 2012 10:16:38 -0500 + +linux-ppc (3.7.0-0.5) raring; urgency=low + + [ Ben Collins ] + + * [Config] Update udeb excludes for ppc + + -- Ben Collins Mon, 12 Nov 2012 08:41:55 -0500 + +linux-ppc (3.7.0-0.4) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] build-depend on u-boot-tools to get mkimage + + [ Ben Collins ] + + * [Config] Remove traces on ppc64, and linux-libc-dev package (we don't + build it) + + -- Andy Whitcroft Mon, 12 Nov 2012 11:31:50 +0000 + +linux-ppc (3.7.0-0.3) raring; urgency=low + + [ Ben Collins ] + + * [Config] Create correct linux-headers package with $(src_pkg_name) + prefix + * [Config] e500*: Enable 8250 serial console (built-in) and disable + PCCARD + * [Config] Fix header package names + * [Config] Disable ABI and modules check until ABI=1 + * Rebase on master:Ubuntu-3.7.0-0.5 + + -- Ben Collins Fri, 09 Nov 2012 15:48:35 -0500 + +linux-ppc (3.7.0-0.2) raring; urgency=low + + [ Andy Fleming ] + + * SAUCE: net: Add support for handling queueing in hardware + * SAUCE: of_mdio: Add of_phy_attach function + * SAUCE: phy: Add support for VSC8234 + + [ Andy Whitcroft ] + + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + * [Config] drop highbank builds + * [Config] linux-image-* should Suggests: linux-headers-* + - LP: #1029730 + + [ Ben Collins ] + + * [Config] Update enforce rule for CONFIG_NVRAM to better suit flavours + * [Config] Enable powerpc for linux-libc-dev builds only + * [Config] Remove ppc64 (native 64-bit port we don't have) + * [Config] Add powerpc-e500 and powerpc-e500mc configurations + * [Config] Final configs and rules for PowerPC + * [Config] Set do_tools=false for powerpc (for now) + * [Config] Add custom_override rule to allow for alternate kernel + file/install + * [Config] Update features enabled on PowerPC build + * [Config] Update ABI files for all initial powerpc flavours + * [Config] Enable abi and module checks + * SAUCE: net/phy: Export function for use by dpaa_eth + * SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit + ptr/64-bit rsrcs + * SAUCE: PPC: Make ppc_progress only output when not quiet and when + printk is on + * SAUCE: p4080ds: Add mechanism for GPIO triggered system poweroff + * SAUCE: gpio: Check for ppc-halt-gpio node and callback to enable + poweroff + * [Config] Enable [FQB]MAN on e500 and e500mc + * [Config] Use SRCPKGNAME for prefix on indep linux-headers package and + deps + * [Config] Use SRCPKGNAME as prefix for indep linux headers package + + [ Emil Medve ] + + * SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work + with 10G "fixed-link"s + + [ Jeremy Kerr ] + + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Kumar Gala ] + + * SAUCE: powerpc/pamu: Add driver to initialize PAMU tables + * SAUCE: fsl_qbman: Add drivers for Freescale DPAA Qman & Bman + * SAUCE: fsl_pme2: Add support for DPAA PME + * SAUCE: fmd: FMD14 integration + * SAUCE: dpaa_eth: Ethernet driver for Freescale QorIQ DPA Architecture + * SAUCE: powerpc/85xx: Add DPAA/networking support for P4080DS + + [ Leann Ogasawara ] + + * Reinstate dropped.txt from Ubuntu-3.7.0-0.1-rc1 + + [ Madalin Bucur ] + + * SAUCE: net/flow: remove sleeping and deferral mechanism from + flow_cache_flush + * SAUCE: net/phy: avoid reaching an unsupported speed and duplex + combination + * SAUCE: net/phy: abort genphy_read_status when link changes during speed + and duplex reading + * SAUCE: net/phy: added autocross feature for forced links on VSC82x4 + + [ Tim Gardner ] + + * [Config] Dropped powerpc/ppc64 in favour of the community kernel + * [Config] CONFIG_MODULE_SIG=y for amd64,i386, and highbank + * rebase to v3.7-rc4 + * SAUCE: MODSIGN: Emit error for incorrectly signed module + * Ubuntu-3.7.0-0.2 + * [Config] CONFIG_DRM_EXYNOS_HDMI=n for armhf + * [Config] CONFIG_MTD_NAND_DOCG4=n for armel/armhf + * [Config] Drop highbank harder + * Ubuntu-3.7.0-0.3 + * [Config] do_tools=false for arm + * [Config] remove ndiswrapper from Provides: + - LP: #1076395 + * Ubuntu-3.7.0-0.4 + * [Config] CONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + * [Config] CONFIG_MTD_ONENAND_SIM=n for armel + * Created debian.ppc + + [ Upstream Kernel Changes ] + + * fixup: Correct errors in gpio-poweroff callback + + -- Ben Collins Wed, 07 Nov 2012 08:07:32 -0700 + +linux-ppc (3.7.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc3 + - LP: #1056078 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc2 + - LP: #1060729 + - LP: #1059523 + - LP: #1006690 + - LP: #1049623 + - LP: #1046512 + - LP: #1052499 + - LP: #1037642 + - LP: #559939 + - LP: #1052460 + - LP: #939161 + - LP: #1046734 + + -- Tim Gardner Tue, 02 Oct 2012 08:13:07 -0600 + +linux (3.6.0-0.1) UNRELEASED; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.6 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc6 + - LP: #1000424 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc5 + - LP: #1040077 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc3 + - LP: #1038651 + - LP: #1034779 + + -- Leann Ogasawara Tue, 24 Jul 2012 06:37:09 -0700 + +linux (3.5.0-6.6) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION enable IPv6 + experimental features + * SAUCE: highbank -- export clock functions for modules + * [Config] highbank -- reenable CONFIG_TOUCHSCREEN_W90X900 + * [Config] highbank -- renenable CONFIG_SERIO_AMBAKMI + * [Config] highbank -- reenable CONFIG_RFKILL_GPIO + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_KEYBOARD_SAMSUNG + * [Config] highbank -- reenable CONFIG_FB_ARMCLCD + * [Config] highbank -- reenable CONFIG_DW_DMAC + * [Config] highbank -- reenable CONFIG_USB_R8A66597_HCD + * [Config] highbank -- reenable CONFIG_USB_MV_UDC + * [Config] highbank -- reenable CONFIG_USB_DWC3 + * [Config] highbank -- reenable CONFIG_SATA_MV + * [Config] highbank -- reenable CONFIG_PATA_ARASAN_CF + * [Config] highbank -- CONFIG_CAN_C_CAN_PLATFORM + * [Config] highbank -- reenable CONFIG_MMC_ARMMMCI + * [Config] highbank -- reenable CONFIG_SERIAL_AMBA_PL010 + * [Config] highbank -- reenable CONFIG_ATMEL_PWM + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] highbank -- enable CONFIG_EXPERT + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] enable CONFIG_USB_DYNAMIC_MINORS + * [Config] enable CONFIG_USB_EHCI_TT_NEWSCHED + * [Config] enable CONFIG_USB_ETH_EEM + * [Config] enable CONFIG_USB_HCD_BCMA/CONFIG_USB_HCD_SSB + * [Config] disable CONFIG_USB_M66592 + * [Config] enable CONFIG_USB_NET2272 + * [Config] enable CONFIG_USB_R8A66597 + * [Config] annotate: CONFIG_USB_OMAP not required for our h/w + * [Config] set CONFIG_USB_MUSB_HDRC=m for omap + * [Config] annotate: CONFIG_USB_G_MULTI fix rule + * [Config] CONFIG_USB_GPIO_VBUS=m for OMAP + * [Config] Enable CONFIG_DRM_AST/_CIRRUS_QEMU/_MGAG200 + * [Config] sync configuration armhf omap -> armel omap + * [Config] annotate: CONFIG_IIO triggers build failures on OMAP4 + * [Config] disable CONFIG_OMAP_IOVMM is deprecated + + [ Bryan Wu ] + + * [Config] change default IO scheduler from CFQ to Deadline + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc" + * [Config] Disable CONFIG_MOUSE_INPORT + + [ Tim Gardner ] + + * SAUCE: firmware: Update bnx2x to current firmware version 7.2.51 + * [Config] Add bnx2x firmware to nic-modules udeb + * SAUCE: Add script to convert firmware to ihex format + * SAUCE: firmware: Upgrade bnx2 to current versions + * [Config] Add tigon firmware to nic-modules udeb + * [Config] CONFIG_EARLY_PRINTK_DBGP=y + - LP: #1026761 + * SAUCE: Remove redundant cis firmware + * SAUCE: Remove redundant emi26 firmware + * SAUCE: Remove redundant ttusb-budget firmware + * SAUCE: Remove redundant sun/cassini firmware + * SAUCE: Remove redundant ositech/Xilinx7OD firmware + * SAUCE: Remove redundant 3com/typhoon.bin firmware + * SAUCE: Remove redundant yamaha/ds1 firmware + * SAUCE: Remove redundant keyspan_pda firmware + * rebase to v3.5 + + [ Upstream Kernel Changes ] + + * rebase to v3.5 + - LP: #1027828 + + -- Leann Ogasawara Mon, 23 Jul 2012 05:57:04 -0700 + +linux (3.5.0-5.5) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: initial import of configuration annotations + + [ Bryan Wu ] + + * [Config] enforcer -- add CONFIG_I2C_DESIGNWARE_PLATFORM enforce checker + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc7 + + [ Manoj Iyer ] + + * SAUCE: Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 + - LP: #1010281 + + [ Tim Gardner ] + + * [Config] enable CONFIG_I2C_HELPER_AUTO for all flavours as policy + expects + * [Config] CONFIG_I2O_CONFIG_OLD_IOCTL=n + * [Config] CONFIG_BRIDGE_EBT_ULOG=n + * [Config] CONFIG_IP_NF_QUEUE=n + * [Config] CONFIG_MTD_DOC2000=n + * [Config] CONFIG_PRINT_QUOTA_WARNING=n + * [Config] CONFIG_PRISM54=n + * [Config] CONFIG_SCx200_I2C=n + * [Config] CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc7 + + -- Leann Ogasawara Mon, 16 Jul 2012 15:38:41 -0700 + +linux (3.5.0-4.4) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] getabis should be extracting all packages + - LP: #1021174 + * [Config] getabis -- series uses linux-image-extra + - LP: #1021174 + * rebase to v3.5-rc6 + + [ Bryan Wu ] + + * [Config] built-in CONFIG_MICREL_PHY as other PHY drivers for all + flavours + * [Config] sync CONFIG_MOUSE_PS2_ config for all flavours + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_RT2800USB_RT35XX and CONFIG_RT2800USB_RT53XX + - LP: #1019561 + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC, SND_OMAP_SOC_MCBSP and SND_OMAP_SOC_OMAP3_BEAGLE =y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (pre-up) net: dont use __netdev_alloc_skb for bounce buffer + - LP: #1018456 + * (config) Disable ACPI_PROCFS_POWER + + [ Tim Gardner ] + + * [Config] CONFIG_ACPI_BGRT=y + * Extract firmware module info during getabi + - LP: #1021174 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc6 + + -- Leann Ogasawara Mon, 09 Jul 2012 08:50:20 -0700 + +linux (3.5.0-3.3) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_MEMTEST=y + - LP: #1004535 + * [Config] config-check: add support for a cut operation + * [Config] enforcer -- switch to cut where appropriate + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc5 + * [Config] Updateconfigs after rebase to v3.5-rc5 + + [ Luis Henriques ] + + * SAUCE: ocfs2: Fix NULL pointer dereferrence in + __ocfs2_change_file_space + - LP: #1006012 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) drm/i915: ignore pipe select bit when checking + for LVDS register initialization + - LP: #1012800 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc5 + - LP: #1013183 + - LP: #1017017 + - LP: #884652 + + -- Leann Ogasawara Mon, 02 Jul 2012 06:41:58 -0700 + +linux (3.5.0-2.2) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5-rc4 + + [ Arend van Spriel ] + + * SAUCE: (drop after 3.5) brcmsmac: fix NULL pointer crash in + brcms_c_regd_init() + - LP: #950320 + + [ Bryan Wu ] + + * [Config] Sync CONFIG_CGROUP_MEM_RES_CTLR_SWAP for ARM + + [ Chris J Arges ] + + * PACKAGING: add .gnu_debuglink sections to .ko files + - LP: #669641 + + [ Leann Ogasawara ] + + * d-i: Add hid-generic to input-modules + - LP: #1017879 + + [ Ming Lei ] + + * SAUCE: Revert "mmc: omap_hsmmc: Enable Auto CMD12" + - LP: #1017717, #225 + + [ Paolo Pisati ] + + * SAUCE: Revert "Fix OMAP EHCI suspend/resume failure (i693)" + - LP: #1017718 + * [Config] Disable generic USB_EHCI_HCD_PLATFORM on omap3 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) brcm80211: smac: don't set up tx power limits + during initialization + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: always set channel specified + by mac80211 + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: remove unused code for 40MHz + channels + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: clean up channel.c + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: inform mac80211 of the X2 + regulatory domain + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: enable/disable radio on + regulatory updates + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use mac80211 channel data for + tx power limits + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: don't validate channels + against internal regulatory data + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use current regulatory domain + when checking whether OFDM is allowed + - LP: #950320 + + [ Tim Gardner ] + + * [Config] Enable CONFIG_CGROUPS for highbank + - LP: #1014692 + * [Config] FB_OMAP*=y and PANEL_TFP410=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc4 + + -- Leann Ogasawara Tue, 26 Jun 2012 06:21:05 -0700 + +linux (3.5.0-1.1) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] highbank -- enable CONFIG_RFKILL=y and CONFIG_CAN=m + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc1 + * [Config] Remove USB_DEVICEFS from the config enforcer + * [Config] Updateconfigs after rebase to v3.5-rc1 + * [Config] Temporarily disable CONFIG_MACH_NOKIA_RX51 on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_GPIO_EM on arm + * [Config] Temporarily disable CONFIG_SERIAL_8250_EM on armhf + * [Config] Temporarily disable CONFIG_STMMAC_ETH on armhf + * [Config] Temporarily disable CONFIG_HW_RANDOM_ATMEL on armhf + * Rebase to v3.5-rc2 + * [Config] Updateconfigs after rebase to v3.5-rc2 + * [Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc + * Rebase to v3.5-rc3 + * [Config] Updateconfigs after rebase to v3.5-rc3 + + [ Paul Mundt ] + + * SAUCE: fix bug.h's inclusion of kernel.h + + [ Stefan Bader ] + + * SAUCE: Fix compile failures of dm-raid45 + * [Config] Enable dm-raid45 + * Move dependency on crda to extra package + - LP: #657901 + * SAUCE: Mask CR4 writes on older Xen hypervisors + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc3 + - LP: #993162 + - LP: #925577 + * rebase to v3.5-rc2 + * rebase to v3.5-rc1 + - LP: #955892 + - LP: #978038 + - LP: #987371 + - LP: #929545 + - LP: #942316 + - LP: #903853 + + -- Leann Ogasawara Fri, 08 Jun 2012 14:28:46 -0700 + +linux (3.4.0-5.11) quantal-proposed; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ARM_LPAE + - LP: #1009061 + + [ Oleksij Rempel ] + + * SAUCE: b43: do not call ieee80211_unregister_hw if we are not registred + - LP: #1008905 + + [ Paolo Pisati ] + + * [Config] omap3: MFD_OMAP_USB_HOST is usb host in omap2+. + - LP: #1009061 + + -- Leann Ogasawara Tue, 05 Jun 2012 08:06:28 -0700 + +linux (3.4.0-4.10) quantal; urgency=low + + [ Leann Ogasawara ] + + * Temporarily disable ABI and module check + + -- Leann Ogasawara Mon, 04 Jun 2012 20:27:31 -0700 + +linux (3.4.0-4.9) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix config split to avoid the shared config + * [Config] updateconfigs following split config fix + * [Config] linux-image-extras needs full postinst + * [Config] CONFIG_BLK_DEV_NVME commonise across architectures + * [Config] CONFIG_HP_WATCHDOG enable as module + * [Config] CONFIG_PDC_ADMA is not boot essential + * [Config] CONFIG_XEN_ACPI_PROCESSOR should be enabled on x86 + * [Config] CONFIG_VT6655/CONFIG_VT6656=m + * [Config] CONFIG_TRANZPORT=m commonise + * [Config] CONFIG_R3964=m commonise + * [Config] CONFIG_SCSI_DH=m commonise + * [Config] CONFIG_SCSI_IBMVSCSIS=m commonise + * [Config] CONFIG_AMD_PHY=y phys are not autoloadable + * [Config] CONFIG_SCSI_QLA_ISCSI=m commonise + * [Config] CONFIG_SCSI_SPI_ATTR=m commonise + * [Config] CONFIG_USB_SN9C102 is deprecated disable + * [Config] CONFIG_USB_SI470X=m commonise + * [Config] CONFIG_USB_ET61X251=m commonise + * [Config] CONFIG_RTS_PSTOR=m commonise + * [Config] CONFIG_SCANLOG=m commonise + * [Config] CONFIG_SCSI_SYM53C8XX_2=m commonise + * [Config] CONFIG_SM_FTL=m commonise + * [Config] CONFIG_SOLO6X10=m commonise + * [Config] CONFIG_SND_PCM_OSS=n using pulseaudio emulation instead + * [Config] CONFIG_SPI_DESIGNWARE=m commonise + * [Config] CONFIG_SPI_SPIDEV=m commonise + * [Config] CONFIG_TABLET_USB_WACOM=m commonise + * [Config] CONFIG_TPS65010=m commonise + * [Config] CONFIG_STE10XP=y commonise + * [Config] CONFIG_X25_ASY=m commonise + * [Config] CONFIG_USB_MON=m commonise + * [Config] CONFIG_VME_BUS=m commonise + * [Config] CONFIG_W35UND=m commonise + * [Config] -CONFIG_TCG_TPM=y commonise + * [Config] highbank -- commonise filesystems + * [Config] highbank -- commonise subsystems + * [Config] highbank -- commonise network protocols + * [Config] highbank -- commonise input drivers + * [Config] highbank -- commonise CRYPTO options + * [Config] highbank -- commonise HID options + * [Config] highbank -- commonise sensors options + * [Config] highbank -- commonise EXPORTFS/FHANDLE + * [Config] highbank -- commonise CONFIG_CRYPTO_LZO + * [Config] highbank -- commonise ENCRYPTED_KEYS + * [Config] highbank -- commonise CONFIG_ATALK + * [Config] highbank -- commonise INET/INET6 + * [Config] highbank -- commonise NLS + * [Config] highbank -- commonise BLK/CHR + * [Config] highbank -- CONFIG_EXT2_FS=y boot essential on highbank + * [Config] highbank -- commonise INET/INET6 part 2 + * [Config] highbank -- commonise PHY settings + * [Config] highbank -- commonise CRC settings + * [Config] highbank -- commonise BINFMT settings + * [Config] highbank -- commonise DM settings + * [Config] highbank -- commonise RTC_DRV settings + * [Config] highbank -- commonise KEYBOARD/MOUSE settings + * [Config] highbank -- commonise USB settings + * [Config] highbank -- commonise GPIO settings + * [Config] highbank -- commonise I2C settings + * [Config] highbank -- commonise numerous subsystem selectors + * [Config] highbank -- commonise A-C modules missmatches + * [Config] highbank -- commonise D-F modules missmatches + * [Config] CONFIG_AUDIT_LOGINUID_IMMUTABLE incompatible with upstart + * [Config] highbank -- commonise G-I modules missmatches + * [Config] highbank -- commonise J-L modules missmatches + * [Config] highbank -- commonise M modules missmatches + * [Config] highbank -- commonise N-P modules missmatches + * [Config] highbank -- commonise Q-R modules missmatches + * [Config] highbank -- commonise S modules missmatches -- part 1 + * [Config] highbank -- commonise S modules missmatches -- part 2 + * [Config] highbank -- commonise T modules missmatches + * [Config] highbank -- commonise U-Z modules missmatches + + [ Ike Panhc ] + + * [Config] add highbank flavour + - LP: #1000831 + + [ Mark Langsdorf ] + + * SAUCE: arm highbank: add support for pl320-ipc driver + - LP: #1000831 + + [ Rob Herring ] + + * SAUCE: input: add a key driver for highbank + - LP: #1000831 + * SAUCE: ARM: highbank: Add smc calls to enable/disable the L2 + - LP: #1000831 + * SAUCE: force DMA buffers to non-bufferable on highbank + - LP: #1000831 + * SAUCE: net: calxedaxgmac: fix net timeout recovery + - LP: #1000831 + + [ Tim Gardner ] + + * [Config] CONFIG_IWLWIFI_EXPERIMENTAL_MFP=n + * [Config] CONFIG_PCI_REALLOC_ENABLE_AUTO=y + * [Config] CONFIG_CIFS_EXPERIMENTAL has disappeared + * [Config] Homogenize CIFS configs across all arches + * [Config] armhf should not be skipabi or skipmodules + - LP: #1006913 + + -- Leann Ogasawara Mon, 04 Jun 2012 05:52:49 -0700 + +linux (3.4.0-3.8) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] include include/generated/compile.h + - LP: #942569 + * [Config] fix up postinst to ensure we know which error is which + - LP: #1002388 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: async_populate_rootfs: fix build warnings + - LP: #1003417 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: Add the ability to mediate mount" + * SAUCE: apparmor: Add the ability to mediate mount + * SAUCE: AppArmor: basic networking rules + * SAUCE: apparmor: fix profile lookup for unconfined + - LP: #978038, #987371 + * SAUCE: apparmor: fix long path failure due to disconnected path + - LP: #955892 + + [ Mario Limonciello ] + + * SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - LP: #901410 + + [ Stefan Bader ] + + * (config) Built-in xen-acpi-processor + + [ Tim Gardner ] + + * [Config] CONFIG_NET_DSA=m + - LP: #1004148 + * [Config] Ensure CONFIG_XEN_ACPI_PROCESSOR=y for amd64 + + -- Leann Ogasawara Fri, 25 May 2012 11:38:33 -0700 + +linux (3.4.0-3.7) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] drop the virtual flavour in favour of a split generic et al + * [Config] enforcer -- drop IDLE enforcement + * [Config] enable CONFIG_SCSI_VIRTIO=m for amd64 + * [Config] updateconfigs following removal of -virtual + + [ Leann Ogasawara ] + + * Rebase to v3.4 + + [ Seth Forshee ] + + * [Config] disable CONFIG_B43_BCMA_EXTRA + + [ Tim Gardner ] + + * [Config] Check for extras when building udebs + * [Config] Collapsed generic-pae into generic [i386] + + [ Upstream Kernel Changes ] + + * rebase to v3.4 + + -- Leann Ogasawara Mon, 21 May 2012 07:23:47 -0700 + +linux (3.4.0-2.6) quantal; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- overlayfs: update touch_atime() usage" + * Revert "ubuntu: overlayfs -- overlayfs: switch from d_alloc_root() to + d_make_root()" + * Revert "ubuntu: overlayfs -- overlayfs: follow header cleanup" + * Revert "ubuntu: overlayfs -- overlayfs: apply device cgroup and + security permissions to overlay files" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "ubuntu: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "ubuntu: overlayfs -- vfs: add i_op->open()" + * Revert "ubuntu: overlayfs -- vfs: pass struct path to __dentry_open()" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- inode_only_permission: export inode level + permissions checks + * ubuntu: overlayfs -- overlayfs: switch to use inode_only_permissions + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Tim Gardner ] + + * [Config] perarch and indep tools builds need separate build directories + * Prevent upgrading a non-PAE CPU + * perf is not parallel build safe + + -- Leann Ogasawara Wed, 16 May 2012 08:43:18 -0700 + +linux (3.4.0-2.5) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] perarch and indep tools builds need separate build directories + + [ Tim Gardner ] + + * Prevent upgrading a non-PAE CPU + * [Config] build debug + * [Config] perf tools are not parallel build safe + + -- Leann Ogasawara Tue, 15 May 2012 11:37:53 -0700 + +linux (3.4.0-2.4) quantal; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: fsam7400: use UMH_WAIT_PROC consistently" + * Revert "ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86" + * Revert "ubuntu: fsam7400: Depend on CHECK_SIGNATURE" + * Revert "ubuntu: fsam7400 -- Cleanup Makefile" + * Revert "ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M + 7400" + * Revert "ubuntu: omnibook: fix source file newline" + * Revert "ubuntu: omnibook -- update BOM" + * Revert "SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} + depend on X86" + * Revert "ubuntu: omnibook -- Added missing BOM file" + * Revert "ubuntu: omnibook -- support Toshiba (HP) netbooks" + * Revert "ubuntu: nx-emu - i386: mmap randomization for executable + mappings" + * Revert "SAUCE: disable_nx should not be in __cpuinitdata section for + X86_32" + * Revert "ubuntu: nx-emu - i386: NX emulation" + * Revert "ubuntu: rfkill drivers -- version 1.3" + * Temporarily disable module check + * [Config] Remove CONFIG_FSAM7400 + * [Config] Remove CONFIG_OMNIBOOK + * [Config] Update configs + * Rebase to v3.4-rc7 + * SAUCE: genirq: export handle_edge_irq() and irq_to_desc() + + [ Tim Gardner ] + + * Updated generic-pae description + * Rebase to v3.4-rc6 + * install-tools depends on build targets + + [ Upstream Kernel Changes ] + + * kconfig: in debug mode some 0 length message prints occur + * rebase to v3.4-rc7 + * rebase to v3.3-rc6 + + -- Leann Ogasawara Mon, 14 May 2012 08:22:56 -0700 + +linux (3.4.0-1.3) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] control.stub is an intermediate product not a dependancy + - LP: #992414 + + [ Leann Ogasawara ] + + * remove i386 generic from getabis + + [ Upstream Kernel Changes ] + + * (pre-stable) b43: only reload config after successful initialization + - LP: #950295 + + -- Leann Ogasawara Wed, 02 May 2012 09:48:14 -0700 + +linux (3.4.0-1.2) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] add build depends for flex, bison and pkg-config + + -- Andy Whitcroft Tue, 01 May 2012 13:15:41 +0100 + +linux (3.4.0-1.1) quantal; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Leann Ogasawara ] + + * Open Q + * Rebase to v3.4-rc5 + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_MFD_OMAP_USB_HOST on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_USB_EHCI_HCD_PLATFORM on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_AX88796 on arm + + [ Upstream Kernel Changes ] + + * vfs: pass struct path to __dentry_open() + * vfs: add i_op->open() + * vfs: export do_splice_direct() to modules + * vfs: introduce clone_private_mount() + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + * overlayfs: follow header cleanup + * overlayfs: switch from d_alloc_root() to d_make_root() + * overlayfs: update touch_atime() usage + * rebase to v3.4-rc5 + - LP: #950490 + * rebase to v3.4-rc4 + * rebase to v3.4-rc3 + * rebase to v3.4-rc2 + * rebase to v3.4-rc1 + * rebase to v3.3 + * rebase to v3.3-rc7 + * rebase to v3.3-rc6 + * rebase to v3.3-rc5 + * rebase to v3.3-rc4 + - LP: #900802 + - LP: #930842 + * rebase to v3.3-rc3 + - LP: #924320 + - LP: #923316 + - LP: #923409 + - LP: #918254 + * rebase to v3.3-rc2 + * rebase to v3.3-rc1 + - LP: #795823 + - LP: #909419 + - LP: #910792 + - LP: #878701 + - LP: #724831 + + -- Leann Ogasawara Wed, 25 Jan 2012 06:50:04 -0800 + +linux (3.2.0-10.18) precise; urgency=low + + [ Tim Gardner ] + + * SAUCE: ecryptfs: Print inode on metadata error + + [ Upstream Kernel Changes ] + + * Revert "proc: enable writing to /proc/pid/mem" + - LP: #919115 + - CVE-2012-0056 + * (pre-stable) ALSA: HDA: Use LPIB position fix for Macbook Pro 7, 1 + - LP: #909419 + + -- Andy Whitcroft Tue, 24 Jan 2012 10:15:12 +0000 + +linux (3.2.0-10.17) precise; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: overlayfs -- fs: limit filesystem stacking depth" + * Revert "SAUCE: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: overlayfs -- overlayfs: implement show_options" + * Revert "SAUCE: overlayfs -- overlayfs: add statfs support" + * Revert "SAUCE: overlayfs -- overlay filesystem" + * Revert "SAUCE: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "SAUCE: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "SAUCE: overlayfs -- vfs: add i_op->open()" + * ensure debian/ is not excluded from git by default + * add new scripting to handle buglinks in rebases + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * Revert "SAUCE: dmar: disable if ricoh multifunction detected" + * [Config] Disable CONFIG_INTEL_IOMMU_DEFAULT_ON + - LP: #907377, #911236 + * [Config] Enable CONFIG_IRQ_REMAP + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Upstream Kernel Changes ] + + * (pre-stable) x86/PCI: amd: factor out MMCONFIG discovery + - LP: #647043 + * (pre-stable) PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that + breaks USB + - LP: #647043 + + -- Leann Ogasawara Mon, 16 Jan 2012 07:10:08 -0800 + +linux (3.2.0-9.16) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] Enable numerous CONFIG_VIDEO_* cards on ARM + * [Config] pull ARM sound modules =m + * [Config] CONFIG_RTC_DRV_TEST is for testing only + * [Config] CONFIG_USB_DUMMY_HCD is testing only + * [Config] CONFIG_USB_FILE_STORAGE is deprecated + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_CAN_TI_HECC on armel" + * [Config] Enable CONFIG_HW_RANDOM_PASEMI=m + * [Config] Enable CONFIG_MMC_TMIO=m + * [Config] Enable CONFIG_MTD_NAND_FSL_ELBC=m + * [Config] Enable CONFIG_ISI=m + * [Config] Enable CONFIG_MMC=y + * [Config] Enable CONFIG_LIRC_PARALLEL=m + * [Config] Enable CONFIG_MAC_EMUMOUSEBTN=m + * [Config] Enable CONFIG_CHR_DEV_SG=y + * [Config] Enable CONFIG_GPIO_PCA953X=m + * [Config] Enable CONFIG_GPIO_TWL4030=m + * [Config] Enable CONFIG_INET_DIAG=m + * [Config] Enable CONFIG_NLS_ISO8859_1=m + * [Config] Enable CONFIG_NVRAM=m + * [Config] Enable CONFIG_SLIP=m + * [Config] Enable CONFIG_PC300TOO=m + * [Config] Enable CONFIG_TUN=y + * [Config] Enable CONFIG_NET_CLS_CGROUP=m + * [Config] Enable CONFIG_THERMAL=y + * [Config] Enable CONFIG_PPP=y + * [Config] Enable CONFIG_PCI_STUB=m + * Rebase to v3.2.1 + * [Config] Enable CONFIG_RTL8192E=m + * [Config] Enable CONFIG_RTS5139=m + + [ Stefan Bader ] + + * [Config] Make CONFIG_VIRTIO_(NET|BLK)=y + + [ Upstream Kernel Changes ] + + * ARM: restart: add restart hook to machine_desc record + * ARM: restart: allow platforms more flexibility specifying restart mode + * ARM: restart: move reboot failure handing into machine_restart() + * ARM: restart: remove argument to setup_mm_for_reboot() + * ARM: 7159/1: OMAP: Introduce local common.h files + * ARM: restart: only perform setup for restart when soft-restarting + * ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq + function + * ARM: idmap: populate identity map pgd at init time using .init.text + * ARM: suspend: use idmap_pgd instead of suspend_pgd + * ARM: proc-*.S: place cpu_reset functions into .idmap.text section + * ARM: idmap: use idmap_pgd when setting up mm for reboot + * ARM: head.S: only include __turn_mmu_on in the initial identity mapping + * ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting + * ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM + restart changes + * ARM: lib: add call_with_stack function for safely changing stack + * ARM: reset: implement soft_restart for jumping to a physical address + * ARM: stop: execute platform callback from cpu_stop code + * ARM: kexec: use soft_restart for branching to the reboot buffer + * ARM: restart: omap: use new restart hook + * topdown mmap support + - LP: #861296 + + [ Upstream Kernel Changes ] + + * Rebase to v3.2.1 + + -- Leann Ogasawara Fri, 13 Jan 2012 20:32:08 +0100 + +linux (3.2.0-8.15) precise; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ACPI_PROCFS + * Remove server from getabis + * Temporarily disable module check + * [Config] Disable CONFIG_MTD_TESTS + * [Config] Disable CONFIG_X86_E_POWERSAVER + * [Config] Set CONFIG_ARCNET=m + * [Config] Enable CONFIG_ATM_DUMMY=m + * [Config] Enable CONFIG_BLK_DEV_MD=y + * ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86 + * [Config] Enable CONFIG_BLK_DEV_SD=y + * [Config] Enable CONFIG_BLK_DEV_SR=y + * [Config] Enable CONFIG_BLK_DEV_UB=m + * [Config] Enable CONFIG_COPS=m + * [Config] Enable CONFIG_DVB_USB_EC168=m + * [Config] Enable CONFIG_ENC28J60=m + * [Config] Enable CONFIG_FB_UVESA=m + * [Config] Enable CONFIG_FB_ATY=m + * [Config] Enable CONFIG_BROADCOM_PHY=y + * [Config] Enable CONFIG_CICADA_PHY=y + * [Config] Enable CONFIG_DAVICOM_PHY=y + * [Config] Enable CONFIG_ICPLUS_PHY=y + * [Config] Enable CONFIG_LSI_ET1011C_PHY=y + * [Config] Enable CONFIG_LXT_PHY=y + * [Config] Enable CONFIG_MARVELL_PHY=y + * [Config] Enable CONFIG_NATIONAL_PHY=y + * [Config] Enable CONFIG_QSEMI_PHY=y + * [Config] Enable CONFIG_SMSC_PHY=y + * [Config] Enable CONFIG_VITESSE_PHY=y + * Add 3w-sas to scsi-modules + - LP: #776542 + + [ Mathieu Trudel-Lapierre ] + + * SAUCE: ipv6: make the net.ipv6.conf.all.use_tempaddr sysctl propagate + to interface settings + + [ Paolo Pisati ] + + * Revert "SAUCE: omap3: beagle: if rev unknown, assume xM revision C" + - LP: #912199 + * Revert "SAUCE: omap3: beagle: detect new xM revision B" + - LP: #912199 + * Revert "SAUCE: omap3: beaglexm: fix DVI initialization" + - LP: #912199 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add support for BCM20702A0 [0a5c:21e3] + - LP: #906832 + + -- Leann Ogasawara Fri, 06 Jan 2012 10:02:03 -0800 + +linux (3.2.0-8.14) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_SND_USB_6FIRE + - LP: #912197 + * rebase to mainline v3.2 final release + * updateconfigs following rebase to v3.2 final + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- fix undefined security_path_link + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * [Config] linux-virtual -- should include the extX modules + - LP: #912308 + + [ Tyler Hicks ] + + * SAUCE: eCryptfs: Improve statfs reporting + - LP: #885744 + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2 + + -- Leann Ogasawara Mon, 26 Dec 2011 20:24:30 -0800 + +linux (3.2.0-7.13) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream 3.2-rc7 + + -- Leann Ogasawara Mon, 19 Dec 2011 09:14:34 -0800 + +linux (3.2.0-6.12) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2-rc6 + + -- Leann Ogasawara Fri, 16 Dec 2011 10:19:02 -0800 + +linux (3.2.0-5.11) precise; urgency=low + + [ Andy Whitcroft ] + + * enforcer -- allow arch and flavour predicates to take lists + * enforcer -- simplify armel/armhf specific options + * enforcer -- fix incorrectly specified flavour matches + + [ Leann Ogasawara ] + + * [Config] Disable IRQ_REMAP + * [Config] Enable CONFIG_SENSORS_LM95245=m + * [Config] Enable CONFIG_SENSORS_MAX1668=m + * [Config] Enable CONFIG_SENSORS_NTC_THERMISTOR=m + * [Config] Enable CONFIG_SENSORS_MAX6639=m + * [Config] Enable CONFIG_SENSORS_MAX6642=m + * [Config] Enable CONFIG_SENSORS_LINEAGE=m + * [Config] Enable CONFIG_CRYPTO_SALSA20=m + * [Config] Enable CONFIG_PATA_TOSHIBA=m + * [Config] Enable CONFIG_POHMELFS=m + * [Config] Enable CONFIG_NET_PACKET_ENGINE=y + * [Config] Enable CONFIG_PATA_OPTI=m + * add overlayfs to virtual inclusion list + - LP: #903897 + * add veth to virtual inclusion list + - LP: #903897 + * SAUCE: resolve WARNING: at drivers/block/floppy.c:2929 do_fd_request + + [ Paolo Pisati ] + + * [Config] DEFAULT_MMAP_MIN_ADDR=32k on arm + - LP: #903346 + + [ Tim Gardner ] + + * [Config] CONFIG_LOCKUP_DETECTOR=y + - LP: #903615 + + [ Upstream Kernel Changes ] + + * rebase to upstream 55b02d2f + + -- Leann Ogasawara Mon, 12 Dec 2011 07:08:10 -0800 + +linux (3.2.0-4.10) precise; urgency=low + + [ Kyle McMartin ] + + * SAUCE: dmar: disable if ricoh multifunction detected + - LP: #894070 + + [ Seth Forshee ] + + * SAUCE: dell-wmi: Demote unknown WMI event message to pr_debug + - LP: #581312 + + [ Tim Gardner ] + + * Start new release, Bump ABI, rebase to 3.2-rc5 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_AK8975=m + + -- Tim Gardner Sat, 10 Dec 2011 08:57:04 -0700 + +linux (3.2.0-3.9) precise; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ext4: correct partial write discard size calculation + - LP: #894768 + + [ Leann Ogasawara ] + + * Revert "SAUCE: x86, microcode, AMD: Restrict microcode reporting" + - LP: #892615 + + [ Matthew Garrett ] + + * SAUCE: pci: Rework ASPM disable code + + [ Upstream Kernel Changes ] + + * x86: Fix boot failures on older AMD CPU's + - LP: #892615 + * EHCI : Fix a regression in the ISO scheduler + - LP: #899165 + + -- Leann Ogasawara Mon, 05 Dec 2011 10:37:36 -0800 + +linux (3.2.0-3.8) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- add d-i configuration + * armhf -- disable ABI checks for armhf + * armhf -- add arch to getabis config + + -- Andy Whitcroft Sat, 03 Dec 2011 14:22:52 +0000 + +linux (3.2.0-3.7) precise; urgency=low + + [ Stefan Bader ] + + * SAUCE: x86/paravirt: PTE updates in k(un)map_atomic need to be + synchronous, regardless of lazy_mmu mode + - LP: #854050 + + [ Tim Gardner ] + + * rebase to v3.2-rc4 + + -- Leann Ogasawara Fri, 02 Dec 2011 11:53:56 -0800 + +linux (3.2.0-2.6) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- fix omap flavour to build on armhf + * [Config] CONFIG_PATA_MACIO=y to fix MAC qemu boot + + [ Borislav Petkov ] + + * SAUCE: x86, microcode, AMD: Restrict microcode reporting + - LP: #892615 + + [ Colin Watson ] + + * Add pata_macio to pata-modules + + [ Tim Gardner ] + + * [Config] Prefer crda over wireless-crda + * [Config] Fix virtual inclusion list. + - LP: #897795 + + -- Leann Ogasawara Wed, 30 Nov 2011 06:09:35 -0800 + +linux (3.2.0-2.5) precise; urgency=low + + [ Paolo Pisati ] + + * [Config] PANEL_DVI=y + + -- Leann Ogasawara Mon, 28 Nov 2011 09:13:24 -0800 + +linux (3.2.0-2.4) precise; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.2-rc3 + + [ Leann Ogasawara ] + + * Revert "SAUCE: xen: Do not use pv spinlocks on HVM" + * Revert "fix ERROR: __devcgroup_inode_permission undefined" + * Revert "olpc_dcon_xo_1_5 needs delay.h" + * Revert "olpc_dcon_xo_1 needs delay.h" + * rebase to 6fe4c6d4 + * [Config] updateconfigs after rebase to 6fe4c6d4 + + [ Tim Gardner ] + + * [Config] Replace wireless-crda with crda,wireless-regdb + - LP: #856421 + * [Config] Relax the dependencies on crda + + [ Upstream Kernel Changes ] + + * (pre-stable) HID: bump maximum global item tag report size to 96 bytes + - LP: #724831 + * Ubuntu: remove coreutils|fileutils package dependency + - LP: #892814 + * iio: iio_event_getfd -- fix ev_int build failure + + [ Upstream Kernel Changes ] + + * Rebase to v3.2-rc3 + + -- Andy Whitcroft Thu, 24 Nov 2011 16:20:45 +0000 + +linux (3.2.0-1.3) precise; urgency=low + + [ Upstream Kernel Changes ] + + * Ubuntu: Add ext2 to fs-core-modules + - LP: #893395 + + -- Leann Ogasawara Mon, 21 Nov 2011 20:42:33 -0800 + +linux (3.2.0-1.2) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_NFC and associated devices + * SAUCE: allow brcmsmac and b43 to both build + + [ Soren Hansen ] + + * Add ixgbe driver to d-i + - LP: #891969 + + -- Leann Ogasawara Mon, 21 Nov 2011 08:33:46 -0800 + +linux (3.2.0-1.1) precise; urgency=low + [ Andy Whitcroft ] + + * armhf -- enable armhf and create the first flavours + * SAUCE: ensure root is ready before running usermodehelpers in it + * [Config] enforcer -- ensure CONFIG_FAT_FS is built-in on arm + + [ Leann Ogasawara ] + + * Temporarily ignore module check + * [Config] Enable PCI_IOV on powerpc + * [Config] Temporarily disable CONFIG_PASEMI_MAC on powerpc + * rebase to v3.2-rc2 + * SAUCE: include for cpuidle34xx arm build + * SAUCE: include for linux/mtd/map.h arm build + * SAUCE: include and for mmc_core arm build + * SAUCE: select ARM_AMBA if OMAP3_EMU + * [Config] updateconfigs after select ARM_AMBA + * [Config] Temporarily disable CONFIG_KVM_BOOK3S_32 on powerpc + * [Config] Enable CONFIG_EXT2_FS=m + * [Config] Build in CONFIG_SATA_AHCI=y + * Resolve linux-image-extra's install dependency + + [ Seth Forshee ] + + * [Config] Enable EVENT_POWER_TRACING_DEPRECATED=y for powertop + * SAUCE: (drop after 3.2) Input: ALPS - move protocol information to + Documentation + * SAUCE: (drop after 3.2) Input: ALPS - add protocol version field in + alps_model_info + * SAUCE: (drop after 3.2) Input: ALPS - remove assumptions about packet + size + * SAUCE: (drop after 3.2) Input: ALPS - add support for protocol versions + 3 and 4 + * SAUCE: (drop after 3.2) Input: ALPS - add semi-MT support for v3 + protocol + * SAUCE: (drop after 3.2) Input: ALPS - add documentation for protocol + versions 3 and 4 + + [ Stefan Bader ] + + * [Config] Built-in xen-netfront and xen-blkfront + * Fix build of dm-raid45 and re-enable it + + [ Tim Gardner ] + + * [Config] CONFIG_USB_XHCI_HCD=y + - LP: #886167 + * [Config] CONFIG_R6040=m + - LP: #650899 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Consolidated amd64 server flavour into generic + * [Config] updateconfigs after rebase to 3.2-rc1 + * [Config] Disabled dm-raid4-5 + * [Config] Disabled ndiswrapper + * [Config] Disable vt6656 + * [Config] exclude ppp-modules for virtual flavour + * [Config] CONFIG_MEMSTICK_R592=m + - LP: #238208 + + [ Upstream Kernel Changes ] + + * CHROMIUM: seccomp_filter: new mode with configurable syscall filters + - LP: #887780 + * CHROMIUM: seccomp_filter: add process state reporting + - LP: #887780 + * CHROMIUM: seccomp_filter: Document what seccomp_filter is and how it + works. + - LP: #887780 + * CHROMIUM: x86: add HAVE_SECCOMP_FILTER and seccomp_execve + - LP: #887780 + * CHROMIUM: arm: select HAVE_SECCOMP_FILTER + - LP: #887780 + * CHROMIUM: seccomp_filters: move to btrees + * CHROMIUM: enable CONFIG_BTREE + * CHROMIUM: seccomp_filter: kill NR_syscall references + * CHROMIUM: seccomp_filters: guard all ftrace wrapper code + * CHROMIUM: seccomp_filters: clean up warnings; kref mistake + * CHROMIUM: seccomp_filter: remove "skip" from copy and add drop helper + * CHROMIUM: seccomp_filter: allow CAP_SYS_ADMIN management of execve + * CHROMIUM: seccomp_filter: inheritance documentation + * CHROMIUM: seccomp_filter: make inherited filters composable + * CHROMIUM: Fix seccomp_t compile error + - LP: #887780 + * CHROMIUM: Fix kref usage + - LP: #887780 + * CHROMIUM: enable CONFIG_SECCOMP_FILTER and CONFIG_HAVE_SECCOMP_FILTER + * rebase to v3.2-rc2 + + -- Leann Ogasawara Mon, 31 Oct 2011 09:24:39 -0400 + +linux (3.1.0-2.3) precise; urgency=low + + [ Tim Gardner ] + + * Add postinit and postrm scripts to the extras package + - LP: #882120 + + -- Leann Ogasawara Fri, 28 Oct 2011 12:48:33 -0700 + +linux (3.1.0-2.2) precise; urgency=low + + [ Andy Whitcroft ] + + * debian: add locking to protect debian/files from parallel update + + [ Leann Ogasawara ] + + * rebase to v3.1 + + [ Upstream Kernel Changes ] + + * rebase to v3.1 + + -- Leann Ogasawara Wed, 19 Oct 2011 07:12:38 -0700 + +linux (3.1.0-1.1) precise; urgency=low + + [ Andiry Xu ] + + * SAUCE: (drop during 3.2 merge) xHCI: AMD isoc link TRB chain bit quirk + - LP: #872811 + + [ Andy Whitcroft ] + + * Revert "ubuntu: compcache -- follow changes to bd_claim/bd_release" + - LP: #832694 + * Revert "ubuntu: compcache -- version 0.5.3" + - LP: #832694 + * [Config] standardise CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + * [Config] Enable CONFIG_MACVTAP=m + - LP: #822601 + * record the compiler in the ABI and check for inconsistant builds + * [Config] move ECRYPT_FS back to =y for all architectures + - LP: #827197 + * [Config] enable CONFIG_DRM_VMWGFX=m + - LP: #698009 + * [Config] re-fix ECRYPT_FS=y + - LP: #827197 + * enforcer -- ensure we have CONFIG_ECRYPT_FS=y + - LP: #827197 + * [Config] dropping compcache configuration options + * [Config] standardise on HZ=250 + * SAUCE: headers_install: fix #include "..." usage for userspace + - LP: #824377 + * make module-inclusion selection retain the left overs + * add a new linux-image-extras package for virtual + + [ Colin Watson ] + + * Deliver more Atheros, Ralink, and iwlagn NIC drivers to d-i + + [ edwin_rong ] + + * SAUCE: Staging: add driver for Realtek RTS5139 cardreader + - LP: #824273 + + [ Greg Kroah-Hartman ] + + * SAUCE: staging: rts5139: add vmalloc.h to some files to fix the build. + - LP: #824273 + + [ Jesse Sung ] + + * SAUCE: Unregister input device only if it is registered + - LP: #839238 + + [ Jiri Kosina ] + + * SAUCE: HID: add MacBookAir4, 2 to hid_have_special_driver[] + + [ Joshua V. Dillon ] + + * SAUCE: HID: add support for MacBookAir4,2 keyboard. + + [ Kees Cook ] + + * [Config] enable and enforce SECCOMP_FILTER on x86 + + [ Keng-Yu Lin ] + + * [Config] Enable CONFIG_RTS5139=m on i386/amd64 + - LP: #824273 + + [ Leann Ogasawara ] + + * Revert "ubuntu: overlayfs -- ovl: make lower mount read-only" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- ovl: improve stack use of lookup and + readdir" + * Revert "ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: ARM: OMAP: Add macros for comparing silicon revision" + * Revert "SAUCE: OMAP: DSS2: check for both cpu type and revision, rather + than just revision" + * Revert "SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX" + * Revert "ubuntu: fsam7400 disable driver" + - LP: #876030 + * rebase to v3.1-rc1 + * [Config] updateconfigs after rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * [Config] Updateconfigs after rebase to v3.1-rc2 + * ubuntu: Yama - update calls to generic_permission() and + inode->i_op->permission() + * ubuntu: ndiswrapper -- remove netdev_priv macro + * ubuntu: aufs -- Temporarily disable due to build failure + * [Config] Diable INTEL_MID_PTI on armel + * [Config] Temporarily disable CONFIG_FTMAC100 on armel + * [Config] Temporarily disable CONFIG_FTGMAC100 on armel + * [Config] Temporarily disable CONFIG_CAN_TI_HECC on armel + * [Config] Temporarily disable CONFIG_VIDEO_OMAP2_VOUT on armel + * [Config] Set CONFIG_DM_MIRROR=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_MULTIPATH=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_SNAPSHOT=m on amd64, i386, and arm + * [Config] Enable CONFIG_EDAC_AMD8111=m on powerpc + * [Config] Enable CONFIG_EDAC_AMD8131=m on powerpc + * [Config] Enable CONFIG_EDAC_CPC925=m on powerpc + * [Config] Enable CONFIG_EDAC_PASEMI=m on powerpc + * [Config] Enable CONFIG_ECHO=m on powerpc + * [Config] Enable CONFIG_ET131X=m on powerpc + * [Config] Set CONFIG_FB_MATROX=m + * [Config] Enable CONFIG_FB_UDL=m on powerpc + * [Config] Set CONFIG_FB_VIRTUAL=n + * [Config] Enable CONFIG_FB_VGA16=m on powerpc + * [Config] Enable CONFIG_GPIO_MAX732X=m on arm + * [Config] Enable CONFIG_GPIO_PCF857X=m on arm + * [Config] Set CONFIG_HOTPLUG_PCI_FAKE=m + * [Config] Enable CONFIG_HOTPLUG_PCI=y on powerpc + * [Config] Enable CONFIG_HOTPLUG_PCI_CPCI=y on powerpc + * [Config] Enable CONFIG_HP_ILO=m on powerpc-smp + * [Config] Enable CONFIG_I2C_PASEMI=m on powerpc + * [Config] Enable CONFIG_IBM_BSR=m on powerpc + * [Config] Enable CONFIG_IBMVETH=m on powerpc + * [Config] Enable CONFIG_IDE_PHISON=m on powerpc + * [Config] Enable CONFIG_IGB=m on powerpc + * [Config] Enable CONFIG_IIO=m on powerpc + * [Config] Enable CONFIG_INFINIBAND_NES=m + * [Config] Enable CONFIG_IPMI_HANDLER=m on arm + * [Config] Enable CONFIG_IWL3945=m on powerpc + * [Config] Disable CONFIG_KVM_BOOK3S_64 + * [Config] Enable CONFIG_LAPBETHER=m on arm + * [Config] Enable CONFIG_LEDS_GPIO=m on powerpc + * [Config] Enable CONFIG_LEDS_CLEVO_MAIL=m all arch's + * [Config] Enable CONFIG_LEDS_PCA9532=m on powerpc + * [Config] Enable CONFIG_LEDS_PCA955X=m on powerpc + * [Config] Enable CONFIG_LEDS_TRIGGER_DEFAULT_ON=m on powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_HEARTBEAT=m on arm and powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_TIMER=m on powerpc + * [Config] Enable CONFIG_LINE6_USB=m on arm and powerpc + * [Config] Enable CONFIG_MEMSTICK=m on arm + * [Config] Enable CONFIG_MTD_AFS_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ALAUDA=m on arm + * [Config] Enable CONFIG_MTD_AR7_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ARM_INTEGRATOR=m on arm + * [Config] Enable CONFIG_MOXA_SMARTIO=m on powerpc + * [Config] Enable CONFIG_MTD_DATAFLASH=m on arm + * [Config] Enable CONFIG_MTD_GPIO_ADDR=m on arm + * [Config] Enable CONFIG_MTD_IMPA7=m on arm + * [Config] Enable CONFIG_MTD_NAND_GPIO=m on arm + * [Config] Enable CONFIG_MTD_NAND_NANDSIM=m on arm + * [Config] Enable CONFIG_MTD_NAND_PASEMI=m on powerpc + * [Config] Enable CONFIG_MTD_NAND_PLATFORM=m on arm + * [Config] Enable CONFIG_MTD_NAND_TMIO=m on arm + * [Config] Enable CONFIG_MTD_SST25L=m on arm + * [Config] Enable CONFIG_NET_CLS_CGROUP=y on arm + * [Config] Enable CONFIG_NET_CLS_FLOW=m on arm + * [Config] Enable CONFIG_NET_CLS_U32=m on arm + * [Config] Enable CONFIG_NET_DCCPPROBE=m on arm + * [Config] Enable CONFIG_NET_SCH_INGRESS=m on arm + * [Config] Enable CONFIG_NET_TCPPROBE=m on arm + * [Config] Enable CONFIG_PASEMI_MAC=m on powerpc + * [Config] Enable CONFIG_PATA_NS87410=m on powerpc + * [Config] Enable CONFIG_I2C_GPIO=m on powerpc64-smp + * [Config] Enable CONFIG_PANEL=m on powerpc + * [Config] Enable CONFIG_PATA_CMD640_PCI=m on powerpc + * SAUCE: x86: reboot: Make Dell Latitude E6520 use reboot=pci + - LP: #833705 + * [Config] Add CONFIG_EFI_VARS=y to the enforcer + - LP: #837332 + * [Config] Update CONFIG_EFI_VARS enforcer check + * [Config] Add aufs to virtual flavor inclusion list + - LP: #844159 + * SAUCE: x86: reboot: Make Dell Optiplex 790 use reboot=pci + - LP: #818933 + * SAUCE: x86: reboot: Make Dell Optiplex 990 use reboot=pci + - LP: #768039 + * SAUCE: x86: reboot: Make Dell Latitude E6220 use reboot=pci + - LP: #838402 + * [Config] Add igbvf to the virtual flavor inclusion list + - LP: #794570 + * [Config] Add ixgbevf to the virtual inclusion list + - LP: #872411 + * [Config] Transition -generic and -server to be identical + * rebase to v3.1-rc10 + + [ Luke Yelavich ] + + * [Config] Disable legacy IDE drivers on powerpc + + [ Ming Lei ] + + * SAUCE: fireware: add NO_MSI quirks for o2micro controller + - LP: #801719 + * SAUCE: ata_piix: make DVD Drive recognisable on systems with Intel + Sandybridge chipsets(v2) + - LP: #737388, #782389, #794642 + + [ Paolo Pisati ] + + * [Config] Compile-in vfat support for armel + - LP: #853783 + + [ Randy Dunlap ] + + * SAUCE: staging: fix rts5139 depends & build + - LP: #824273 + + [ Rene Bolldorf ] + + * SAUCE: (drop after 3.0) ideapad: Check if acpi already handle backlight + power in 'ideapad_backlight_notify_power' to avoid a page fault + + [ Seth Forshee ] + + * SAUCE: (no-up) Input: elantech - Add v3 hardware support + - LP: #681904 + * SAUCE: (drop after 3.1) usb_storage: Don't freeze in usb-stor-scan + - LP: #810020 + + [ Stefan Bader ] + + * (config) Package macvlan and macvtap for virtual + * [Config] Force perf to use libiberty for demangling + - LP: #783660 + * SAUCE: xen: Do not use pv spinlocks on HVM + - LP: #838026 + + [ Tim Gardner ] + + * [Config] Clean up tools rules + * [Config] Package x86_energy_perf_policy and turbostat + - LP: #797556 + * rebase to v3.1-rc3 + * [Config] Simplify binary-udebs dependencies + * [Config] kernel preparation cannot be parallelized + * [Config] Linearize module/abi checks + * [Config] Linearize and simplify tree preparation rules + * [Config] Build kernel image in parallel with modules + * [Config] Set concurrency for kmake invocations + * [Config] Improve install-arch-headers speed + * [Config] Fix binary-perarch dependencies + * [Config] Removed stamp-flavours target + * [Config] Serialize binary indep targets + * [Config] Use build stamp directly + * [Config] Restore prepare-% target + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * [Config] Disable makedumpfile for i386/amd64 + * rebase to v3.1-rc6 + * [Config] Fix binary-% build target + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Enable ftrace support in the mac80211 layer + - LP: #865171 + * rebase to v3.1-rc9 + * SAUCE: usb/core/devio.c: Check for printer class specific request + - LP: #872711 + + [ Upstream Kernel Changes ] + + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + + [ Will Drewry ] + + * SAUCE: seccomp_filter: new mode with configurable syscall filters + * SAUCE: seccomp_filter: add process state reporting + * SAUCE: seccomp_filter: Document what seccomp_filter is and how it + works. + * SAUCE: seccomp_filter: add HAVE_SECCOMP_FILTER and seccomp_execve + + [ Upstream Kernel Changes ] + + * rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * rebase to v3.1-rc3 + +CONFIG_BLK_DEV_BSGLIB=y + +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 + -CONFIG_VIDEO_OMAP2_VOUT_VRFB=y + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * rebase to v3.1-rc6 + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * rebase to v3.1-rc9 + * rebase to v3.1-rc10 + + -- Leann Ogasawara Wed, 10 Aug 2011 15:43:38 -0700 + +linux (3.1.0-1.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open P-series + + -- Leann Ogasawara Wed, 10 Aug 2011 13:42:40 -0700 + +linux (3.0.0-8.10) oneiric; urgency=low + + [ Adam Jackson ] + + * SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting + - LP: #753994 + + [ John Johansen ] + + * [Config] Enable missing IPv6 options + + [ Leann Ogasawara ] + + * [Config] Disable config IWLWIFI_DEVICE_SVTOOL + - LP: #819925 + * Rebase to 3.0.1 + + [ Upstream Kernel Changes ] + + * x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message + * ALSA: hda - Turn on extra EAPDs on Conexant codecs + - LP: #783582 + * KVM: Remove SMEP bit from CR4_RESERVED_BITS + - LP: #796476 + * KVM: Add SMEP support when setting CR4 + - LP: #796476 + * KVM: Mask function7 ebx against host capability word9 + - LP: #796476 + * KVM: Add instruction fetch checking when walking guest page table + - LP: #796476 + + [ Upstream Kernel Changes ] + + * rebase to v3.0.1 + + -- Leann Ogasawara Fri, 05 Aug 2011 11:32:25 -0700 + +linux (3.0.0-7.9) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] add local prefix to oss local change_bits" + * Revert "SAUCE: add tracing for user initiated readahead requests" + * Revert "SAUCE: vfs: Add a trace point in the mark_inode_dirty function" + * Revert "SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47" + * Revert "SAUCE: fix documentation strings for struct input_keymap_entry" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range checks + (grub)" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range + checks" + * Revert "SAUCE: vt -- allow grub to request automatic vt_handoff" + * Revert "SAUCE: vt -- maintain bootloader screen mode and content until + vt switch" + * [Config] enable CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 + - LP: #816035 + * ubuntu: Yama: if an underlying filesystem provides a permissions op use + it + * SAUCE: (no-up) add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + + [ Arjan van de Ven ] + + * SAUCE: (no-up) vfs: Add a trace point in the mark_inode_dirty function + + [ Kees Cook ] + + * Revert "SAUCE: (no-up) Disable building the ACPI debugfs source" + * [Config] enforce ACPI_CUSTOM_METHOD disabled + + [ Keng-Yu Lin ] + + * SAUCE: (no-up) Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_BLK_DEV_CMD64X=m on powerpc + - LP: #513131 + * [Config] Enable CONFIG_RT2800PCI_RT53XX=y + - LP: #815064 + + [ Rezwanul Kabir ] + + * SAUCE: (no-up) Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * Revert "yama: if an underlying filesystem provides a permissions op use + it" + * Revert "Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops" + * Revert "tty: include linux/slab.h for kfree" + * Revert "gpio/ml_ioh_gpio: include linux/slab.h for kfree" + * Revert "pch_dma: add include/slab.h for kfree" + * mmc: Added quirks for Ricoh 1180:e823 lower base clock frequency + - LP: #773524 + * oss: rename local change_bits to avoid powerpc bitsops.h definition + + -- Leann Ogasawara Mon, 25 Jul 2011 09:08:01 -0700 + +linux (3.0.0-7.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: add statfs support + * [Config] enable CONFIG_OVERLAYFS + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_ALIM7101_WDT=m on powerpc + * [Config] Enable CONFIG_ASUS_OLED=m on powerpc + * [Config] Disable CONFIG_ATM_DUMMY on arm + * [Config] Enable CONFIG_BLK_DEV_DRBD=m on powerpc + * Temporarily disable module check on arm + * Rebase to 3.0 final + * [Config] Enable CONFIG_CAN_TI_HECC=m on arm + * [Config] Set CONFIG_CDROM_PKTCDVD=m on amd64 and i386 + * [Config] Enable CONFIG_CRYPTO_CCM=m on powerpc + * [Config] Enable CONFIG_CRYPTO_DEV_HIFN_795X=m on powerpc + * [Config] Enable CONFIG_CRYPTO_GCM=m on powerpc + * [Config] Set CRYPTO_LZO=m on powerpc64-smp + * [Config] Enable CONFIG_DM9000=m on arm + * [Config] Set CONFIG_DISPLAY_SUPPORT=m on arm + * [Config] Enable CONFIG_DL2K=m on amd64 and i386 + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs + * ubuntu: overlayfs -- ovl: improve stack use of lookup and readdir + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- ovl: make lower mount read-only + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] Add enic/fnic to udebs + - LP: #801610 + + [ Upstream Kernel Changes ] + + * yama: if an underlying filesystem provides a permissions op use it + + [ Major Kernel Changes ] + + * Rebase to 3.0 final + + -- Leann Ogasawara Thu, 21 Jul 2011 07:01:32 -0700 + +linux (3.0.0-6.7) oneiric; urgency=low + + [ Eagon Yager ] + + * [Config] Fix misspelled 'skipmodule' in arm makefile. + + [ Keng-Yu Lin ] + + * SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_SMC91X on armel-omap" + * Revert "[Config] Temporarily Disable CONFIG_BRCMSMAC on arm" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on powerpc" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on arm" + * Revert "[Config] Temporarily disable CONFIG_BRCMSMAC on powerpc" + * [Config] Set CONFIG_ACPI_PCI_SLOT=m + * [Config] Set CONFIG_ACPI_SBS=m + * [Config] Set CONFIG_ACPI_WMI=m + * [Config] Set CONFIG_AD7150=m on arm + * [Config] Set CONFIG_AD7152=m on arm + * [Config] Drop CONFIG_GPIO_S5PV210 + * [Config] Drop CONFIG_GPIO_S5PC100 + * [Config] Drop CONFIG_GPIO_PLAT_SAMSUNG + * [Config] Drop CONFIG_GPIO_EXYNOS4 + + [ Stefan Bader ] + + * SAUCE: Re-enable RODATA for i386 virtual + - LP: #809838 + + [ Upstream Kernel Changes ] + + * Revert "Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15" + * (drop after 3.0.0) acer-wmi: Add support for Aspire 1830 wlan hotkey + - LP: #771758 + + -- Leann Ogasawara Wed, 20 Jul 2011 06:36:02 -0700 + +linux (3.0.0-5.6) oneiric; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_RTL8192CU=m + * Rebase to -rc7 + + -- Tim Gardner Mon, 11 Jul 2011 22:13:50 +0100 + +linux (3.0.0-4.5) oneiric; urgency=low + + [ Ming Lei ] + + * SAUCE: fix yama_ptracer_del lockdep warning + - LP: #791019 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.0) asus-wmi: Add callback for hotkey filtering + * SAUCE: (drop after 3.0) eeepc-wmi: Add support for T101MT Home/Express Gate key + * SAUCE: (drop after 3.0) asus-wmi: Enable autorepeat for hotkey input device + * [Config] CONFIG_{ASUS,ASUS_NB,EEEPC}_WMI=m + - LP: #805218 + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to -rc6+ + Rebased against 4dd1b49c6d215dc41ce50c80b4868388b93f31a3 + * Adopt a 3 digit verion, e.g., 3.0.0-x.x + * Revert "UBUNTU: add dependancies for module-init-tools" + This dependency is no longer required for a 3 digit version. + + -- Tim Gardner Tue, 05 Jul 2011 14:03:04 +0100 + +linux (3.0-3.4) oneiric; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Revert: "dell-laptop: Toggle the unsupported hardware + killswitch" + - LP: #775281 + + [ Leann Ogasawara ] + + * rebase to v3.0-rc5 + * [Config] updateconfigs after rebase to 3.0-rc5 + + [ Tim Gardner ] + + * [Config] Remove ubuntu/rtl8192se + * [Config] Added armel ABI files + * [Config] Removed armel versatile flavour + * [Config] CONFIG_INTEL_MEI=m + - LP: #716867 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Enable auto-parser as default for Conexant codecs + + [ Upstream Kernel Changes ] + + * rebase to v3.0-rc5 + + -- Leann Ogasawara Thu, 30 Jun 2011 14:27:10 +0100 + +linux (3.0-2.3) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to 0e2bafab74f0d1463383faeb93f9fc5eb8c2c54e + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + * [Config] updateconfigs after rebase to 3.0-rc4 + * fix ERROR: __devcgroup_inode_permission undefined + + [ Stefan Bader ] + + * SAUCE: iscsitarget: Remove driver from the kernel + + [ Tim Gardner ] + + * SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel + * [Config] Add grub-efi as a recommended bootloader for server and + generic + - LP: #800910 + + [ Upstream Kernel Changes ] + + * Fix node_start/end_pfn() definition for mm/page_cgroup.c + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + + -- Leann Ogasawara Fri, 24 Jun 2011 11:51:12 -0700 + +linux (3.0-1.2) oneiric; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_CAN_CALC_BITTIMING + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + * [Config] updateconfigs after rebase to 3.0-rc3 + + [ Upstream Kernel Changes ] + + * perf: clear out make flags when calling kernel make kernelver + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + + -- Leann Ogasawara Tue, 14 Jun 2011 07:25:35 -0700 + +linux (3.0-0.1) oneiric; urgency=low + + [ Andy Whitcroft ] + + * use the packaging version in the kernel + * use the kernels idea of its version for version_signature + * add dependancies for module-init-tools + * update control files to version 3 + * printchanges/insertchanges allow override of prev_release + * correct Vcs-Git: to point to oneiric + + [ Leann Ogasawara ] + + * rebase to v3.0-rc1 + * [Config] updateconfigs after rebase to 3.0-rc1 + * ubuntu: dm-raid4-5 fix up build failure + * [Config] Temporarily Disable CONFIG_GPIO_EXYNOS4 on arm + * [Config] Temporarily Disable CONFIG_GPIO_PLAT_SAMSUNG on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PC100 on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PV210 on arm + * [Config] Temporarily disable CONFIG_BRCMSMAC on powerpc + * [Config] Temporarily Disable CONFIG_BRCMSMAC on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on powerpc + * [Config] Temporarily disable CONFIG_SMC91X on armel-omap + * rebase to v3.0-rc2 + + [ Manoj Iyer ] + + * SAUCE: mmc: Enable MMC card reader for RICOH [1180:e823] + - LP: #790754 + + [ Upstream Kernel Changes ] + + * Revert "x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM + demands it" + * drm/i915: fix regression after clock gating init split + + [ Major Kernel Changes ] + + * rebase from v2.6.39 to v3.0-rc1 + * rebase from v3.0-rc1 to v3.0-rc2 + + -- Andy Whitcroft Thu, 09 Jun 2011 15:18:33 +0100 + +linux (2.6.39-3.10) oneiric; urgency=low + + [ Colin Ian King ] + + * SAUCE: S3 early resume debug via keyboard LEDs + + [ Ingo Molnar ] + + * ubuntu: nx-emu - i386: NX emulation + * ubuntu: nx-emu - i386: mmap randomization for executable mappings + + [ Leann Ogasawara ] + + * Revert "[Config] Disable CONFIG_FT1000 on powerpc64-smp" + * Revert "[Config] Disable CONFIG_DM_RAID45" + * [Config] enable CONFIG_BRCMFMAC=y + * [Config] enable CONFIG_MDIO_BITBANG=m across all arch's and flavors + * [Config] enable CONFIG_VIDEO_OUTPUT_CONTROL=m on armel-omap + + [ Robert Nelson ] + + * SAUCE: omap3: beagle: detect new xM revision B + - LP: #770679 + * SAUCE: omap3: beagle: detect new xM revision C + - LP: #770679 + * SAUCE: omap3: beagle: if rev unknown, assume xM revision C + - LP: #770679 + + [ Stefan Bader ] + + * SAUCE: Convert dm-raid45 to new block plugging + + -- Leann Ogasawara Mon, 23 May 2011 11:46:43 -0700 + +linux (2.6.39-3.9) oneiric; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_SCSI_LPFC_DEBUG_FS + * rebase to v2.6.39 + * [Config] enable CONFIG_LLC2=m across all arch's and flavours + * [Config] enable CONFIG_INPUT_APANEL=m + + [ Thomas Schlichter ] + + * SAUCE: vesafb: mtrr module parameter is uint, not bool + - LP: #778043 + * SAUCE: vesafb: enable mtrr WC by default + - LP: #778043 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc7 to v2.6.39 + + -- Andy Whitcroft Fri, 20 May 2011 09:52:32 +0100 + +linux (2.6.39-2.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37" + * Revert "ubuntu: AUFS -- aufs2-base.patch aufs2.1-37" + * Revert "[Config] Disable CONFIG_AUFS_FS" + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-39 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-39 + * ubuntu: AUFS -- update to c6b76974311efc5bf3eddf921cd015b6aae46935 + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + + [ Kees Cook ] + + * ubuntu: Yama - LSM hooks + * ubuntu: Yama - create task_free security callback + * ubuntu: Yama - add ptrace relationship tracking interface + * ubuntu: Yama - unconditionally chain to Yama LSM + + [ Leann Ogasawara ] + + * Revert "SAUCE: Fix drivers/staging/easycap FTBS" + * Revert "[Config] Disable CONFIG_EASYCAP" + * ubuntu: fsam7400 disable driver + * ubuntu: omnibook disable driver + * ubuntu: rfkill disable driver + + [ Tim Gardner ] + + * SAUCE: Fix extra reference in fb_open() + + -- Leann Ogasawara Mon, 16 May 2011 09:23:56 -0700 + +linux (2.6.39-2.7) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc7 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc6 to v2.6.39-rc7 + + -- Leann Ogasawara Tue, 10 May 2011 10:18:28 +0200 + +linux (2.6.39-1.6) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc6 + * SAUCE: [arm] fixup __aeabi_uldivmod undefined build error + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to 2.6.39-rc6 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc5 to v2.6.39-rc6 + - LP: #740126 + + -- Leann Ogasawara Thu, 05 May 2011 09:46:12 -0700 + +linux (2.6.39-0.5) oneiric; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Revert "x86, hibernate: Initialize mmu_cr4_features during boot" + - LP: #764758 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc5 + * [Config] updateconfigs following rebase to v2.6.39-rc5 + + [ Paolo Pisati ] + + * [Config] s/USB_MUSB_TUSB6010/USB_MUSB_OMAP2PLUS/ on omap3 to get musb + - LP: #759913 + + [ Stefan Bader ] + + * Include nls_iso8859-1 for virtual images + - LP: #732046 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc4 to v2.6.39-rc5 + + -- Leann Ogasawara Wed, 27 Apr 2011 06:39:42 -0700 + +linux (2.6.39-0.4) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc4 + * [Config] updateconfigs following rebase to v2.6.39-rc4 + * fixup powerpc implicit declaration of function + 'crash_kexec_wait_realmode' + * [Config] Disable CONFIG_FT1000 on powerpc64-smp + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=y + - LP: #769503 + * [Config] Add cachefiles.ko to virtual flavour + - LP: #770430 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc3 to v2.6.39-rc4 + + -- Leann Ogasawara Tue, 19 Apr 2011 06:25:20 -0700 + +linux (2.6.39-0.3) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc3 + * crash_kexec_wait_realmode() undefined when !SMP + + [ Tim Gardner ] + + * [Config] CONFIG_PM_ADVANCED_DEBUG=y for i386/amd64 + - LP: #632327 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc2 to v2.6.39-rc3 + + -- Leann Ogasawara Tue, 12 Apr 2011 06:52:24 -0700 + +linux (2.6.39-0.2) oneiric; urgency=low + + [ Gustavo F. Padovan ] + + * SAUCE: Revert "Bluetooth: Add new PID for Atheros 3011" + - LP: #720949 + + [ John Johansen ] + + * AppArmor: Fix masking of capabilities in complain mode + - LP: #748656 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc2 + * [Config] updateconfigs following rebase to v2.6.39-rc2 + * hv_mouse needs delay.h + * olpc_dcon_xo_1 needs delay.h + * olpc_dcon_xo_1_5 needs delay.h + * Update dropped.txt for Oneiric + + [ Steve Langasek ] + + * [Config] Make linux-libc-dev coinstallable under multiarch + - LP: #750585 + + [ Upstream Kernel Changes ] + + * x86, hibernate: Initialize mmu_cr4_features during boot + - LP: #752870 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc1 to v2.6.39-rc2 + + -- Leann Ogasawara Wed, 06 Apr 2011 11:04:15 -0700 + +linux (2.6.39-0.1) oneiric; urgency=low + + [ Brad Figg ] + + * [Config] Set CONFIG_NR_CPUS=256 for amd64 generic + - LP: #737124 + + [ Henrik Rydberg ] + + * SAUCE: HID: hid-ntrig: add support for 1b96:0006 model + * SAUCE: HID: ntrig: fix suspend/resume on recent models + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (drop after 2.6.39) v4l: make sure drivers supply a zeroed + struct v4l2_subdev + - LP: #745213 + + [ Kees Cook ] + + * [Config] packaging: adjust perms on vmlinuz as well + * SAUCE: nx-emu: further clarify dmesg reporting + - LP: #745181 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc1 + * [Config] updateconfigs following rebase to v2.6.39-rc1 + * [Config] Disable CONFIG_DM_RAID45 + * [Config] Disable CONFIG_SCSI_ISCSITARGET + * [Config] Disable CONFIG_EASYCAP + * [Config] Disable CONFIG_AUFS_FS + * update bnx2 firmware files in d-i/firmware/nic-modules + * xhci-pci.c resolve implicit declaration of kzalloc + * [Config] Enable CONFIG_DRM_PSB for only x86 + * [Config] Enable CONFIG_RTS_PSTOR for only x86 + * mfd/asic3: Fix typo, s/irq_data/data/ + + [ Luke Yelavich ] + + * [Config] Disable CONFIG_CRASH_DUMP on 32-bit powerpc kernels + - LP: #745358 + * [Config] Disable CONFIG_DRM_RADEON_KMS on powerpc kernels + * [Config] Build some framebuffer drivers as modules for powerpc kernels. + + [ Manoj Iyer ] + + * SAUCE: thinkpad-acpi: module autoloading for newer Lenovo ThinkPads. + - LP: #745217 + + [ Tim Gardner ] + + * SAUCE: INR_OPEN=4096 + - LP: #663090 + * SAUCE: Increase the default hard limit for open FDs to 4096 + - LP: #663090 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.39-rc1) arm: versatile : Fix typo introduced in irq + namespace cleanup + * (drop after 2.6.39-rc1) [media] staging: altera-jtag needs delay.h + * ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + + [ Major Kernel Changes ] + + * rebase from v2.6.38 to v2.6.39-rc1 + + -- Leann Ogasawara Thu, 31 Mar 2011 12:50:10 -0700 + +linux (2.6.39-0.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open Oneiric + + -- Leann Ogasawara Thu, 31 Mar 2011 12:29:23 -0700 + +linux (2.6.38-7.39) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-7ubuntu1. + + -- Leann Ogasawara Thu, 24 Mar 2011 09:27:45 -0700 + +linux (2.6.38-7.38) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload take 2. 2.6.38-7.37 was accidentally uploaded before + gcc-4.5.2-6ubuntu5 finished building on all arches. + + -- Leann Ogasawara Tue, 22 Mar 2011 06:12:47 -0700 + +linux (2.6.38-7.37) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-6ubuntu5. + + -- Leann Ogasawara Sun, 20 Mar 2011 16:02:48 -0700 + +linux (2.6.38-7.36) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler + optimisation" + * purge last vestiges of maverick + * [Config] switch CONFIG_FB_VESA back to module + + [ Chris Wilson ] + + * SAUCE: drm/i915: Fix pipelined fencing + - LP: #717114 + + [ Loïc Minier ] + + * Include nls_cp437 module in virtual for fat + - LP: #732046 + * Support arch= cross-compilation for any arch + * Fix couple of typos in 0-common-vars.mk + * Enforce DEFAULT_MMAP_MIN_ADDR on armhf + * Add armhf to Debian -> Linux arch map + * Add initial armhf.mk + * Enable common packages for armhf + + [ Upstream Kernel Changes ] + + * Yama: fix default relationship to check thread group + - LP: #737676 + + -- Andy Whitcroft Fri, 18 Mar 2011 18:18:02 +0000 + +linux (2.6.38-7.35) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 2fbfac4e053861925fa3fffcdc327649b09af54c + * rebase fixes bug #715330 + * [Config] disable CONFIG_SCSI_QLA_ISCSI for powerpc 32bit to fix FTBS + * rebase to v2.6.38 final + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Apply OPTION_BLACKLIST_SENDSETUP also for ZTE MF626 + - LP: #636091 + + [ Tim Gardner ] + + * [Confg] CONFIG_BOOT_PRINTK_DELAY=y + + [ Upstream Kernel Changes ] + + * Yama: use thread group leader when creating match + - LP: #729839 + * (drop after 2.6.38) ahci: AHCI mode SATA patch for Intel Patsburg SATA + RAID controller + - LP: #735240 + * (drop after v2.6.38) x86, quirk: Fix SB600 revision check + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc8 to v2.6.38 final + - LP: #715330 + + -- Andy Whitcroft Tue, 15 Mar 2011 19:04:19 +0000 + +linux (2.6.38-6.34) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] normalise CONFIG_INTEL_TXT + * SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler optimisation + - LP: #730860 + * rebase to mainline v2.6.38-rc8 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc7 + fb62c00a6d8942775abc23d1621db1252e2d93d1 + to v2.6.38-rc8 + + -- Andy Whitcroft Tue, 08 Mar 2011 11:54:48 +0000 + +linux (2.6.38-6.33) natty; urgency=low + + [ Andy Whitcroft ] + + * d-i -- enable speakup-modules udeb + - LP: #672699 + * rebase to 493f3358cb289ccf716c5a14fa5bb52ab75943e5 + * [Config] debian PPC64 configuration + * [Config] cleanup powerpc config fixing unexpected inconsistancies + * [Config] resync ppc64 configuration + * SAUCE: match up ENTRY/END naming for 32/64 bit + * rebase to fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] update configs after rebase to + fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] pps_gen_parport no longer built + + [ Corentin Chary ] + + * SAUCE: (drop after 2.6.38) eeepc-wmi: reorder keymap + - LP: #689393 + * SAUCE: (drop after 2.6.38) eeepc-wmi: add wlan key found on 1015P + - LP: #689393 + + [ John Johansen ] + + * SAUCE: Fix aufs calling of security_path_mknod + - LP: #724456 + + [ Kees Cook ] + + * SAUCE: proc: hide kernel addresses via %pK in /proc//stack + + [ Tim Gardner ] + + * rebase to 2.6.38-rc7 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing" + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc6 to v2.6.38-rc7 + + fb62c00a6d8942775abc23d1621db1252e2d93d1 + - LP: #721389 + - LP: #722925 + - LP: #723672 + - LP: #723676 + - LP: #715318 + + -- Andy Whitcroft Mon, 07 Mar 2011 15:33:17 +0000 + +linux (2.6.38-5.32) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline 6f576d57f1fa0d6026b495d8746d56d949989161 + * [Config] updateconfigs following rebase to v2.6.38-rc6 + * [Config] enable CONFIG_DMAR + - LP: #552311 + + [ Upstream Kernel Changes ] + + * drm/i915: skip FDI & PCH enabling for DP_A + - LP: #561802, #600453, #681877 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc5 to v2.6.38-rc6 + - LP: #718402 + - LP: #719524 + - LP: #721126 + - LP: #719691 + - LP: #722689 + - LP: #722310 + + -- Andy Whitcroft Tue, 22 Feb 2011 13:28:39 +0000 + +linux (2.6.38-4.31) natty; urgency=low + + [ Andy Whitcroft ] + + * add in bugs closed by upstream patches pulled in by rebases + * rebase to 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 + * [Config] enable CONFIG_VSX to allow use of vector instuctions + * resync with maverick 98defa1c5773a3d7e4c524967eb01d5bae035816 + * rebase to mainline v2.6.38-rc5 + * SAUCE: ecryptfs: read on a directory should return EISDIR if not + supported + - LP: #719691 + + [ Colin Ian King ] + + * SAUCE: Dell All-In-One: Remove need for Dell module alias + + [ Manoj Iyer ] + + * SAUCE: (drop after 2.6.38) add ricoh 0xe823 pci id. + - LP: #717435 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRC32C_INTEL=y + + [ Upstream Kernel Changes ] + + * Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15 + - LP: #702434 + * vfs: fix BUG_ON() in fs/namei.c:1461 + + [ Vladislav P ] + + * SAUCE: Release BTM while sleeping to avoid deadlock. + - LP: #713837 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc4 to v2.6.38-rc5 + - LP: #579276 + - LP: #715877 + - LP: #713769 + - LP: #716811 + * resync with Maverick Ubuntu-2.6.35-27.47 + + -- Andy Whitcroft Fri, 11 Feb 2011 17:24:09 +0000 + +linux (2.6.38-3.30) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.38-rc4 + * ppc64 -- add basic architecture + * ubuntu: AUFS -- update to 65835da20b77c98fb538c9114fc31f5de1328230 + + [ Colin Ian King ] + + * SAUCE: Add WMI hotkeys support for Dell All-In-One series + - LP: #676997 + * SAUCE: Add WMI hotkeys support for another Dell All-In-One series + - LP: #701530 + * SAUCE: Dell WMI: Use sparse keymaps and tidy up code. + - LP: #701530 + + [ Dan Rosenberg ] + + * SAUCE: (drop after 2.6.38) Convert net %p usage %pK + + [ Kees Cook ] + + * Revert "SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of + attacking" + * SAUCE: (drop after 2.6.38) use %pK for /proc/kallsyms and /proc/modules + + [ Tim Gardner ] + + * [Config] CONFIG_BLK_CGROUP=y + - LP: #706394 + * [Config] CONFIG_DELL_WMI_AIO=m + + [ Upstream Kernel Changes ] + + * drm/i915/lvds: Restore dithering on native modes for gen2/3 + - LP: #711568 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc3 to v2.6.38-rc4. + - LP: #701271 + - LP: #708521 + - LP: #710371 + + -- Andy Whitcroft Tue, 08 Feb 2011 02:07:18 +0000 + +linux (2.6.38-2.29) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 1f0324caefd39985e9fe052fac97da31694db31e + * [Config] updateconfigs following rebase to + 1f0324caefd39985e9fe052fac97da31694db31e + * rebase to 70d1f365568e0cdbc9f4ab92428e1830fdb09ab0 + * [Config] reenable HIBERNATE + - LP: #710877 + * rebase to v2.6.38-rc3 + * [Config] reenable CONFIG_CRASH_DUMP + + [ Kamal Mostafa ] + + * SAUCE: rtl8192se: fix source file perms + * SAUCE: rtl8192se: fix source file newline + * SAUCE: omnibook: fix source file newline + + [ Kees Cook ] + + * [Config] packaging: really make System.map mode 0600 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: OMAP3630: PM: don't warn the user with a trace in case of + PM34XX_ERRATUM + + [ Soren Hansen ] + + * SAUCE: nbd: Remove module-level ioctl mutex + + [ Tim Gardner ] + + * SAUCE: Disable building the ACPI debugfs source + + [ Upstream Kernel Changes ] + + * Set physical start and alignment 1M for virtual i386 + - LP: #710754 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + to v2.6.38-rc3 + - LP: #707902 + + -- Andy Whitcroft Fri, 28 Jan 2011 16:30:32 +0000 + +linux (2.6.38-1.28) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to b1cee06249dfa0ab30951e7f06490a75c155b620 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: omap3: beaglexm: fix DVI initialization + * [Config] omap: move CONFIG_PANEL_GENERIC_DPI to build in to make + display work at Beagle + + -- Andy Whitcroft Fri, 28 Jan 2011 10:51:57 +0000 + +linux (2.6.38-1.27) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- update to c5021514085a5d96364e096dbd34cadb2251abfd + * SAUCE: ensure root is ready before running usermodehelpers in it + * correct the Vcs linkage to point to natty + * rebase to linux tip e78bf5e6cbe837daa6ab628a5f679548742994d3 + * [Config] update configs following rebase + e78bf5e6cbe837daa6ab628a5f679548742994d3 + * SAUCE: Yama: follow changes to generic_permission + * ubuntu: compcache -- follow changes to bd_claim/bd_release + * ubuntu: iscsitarget -- follow changes to open_bdev_exclusive + * ubuntu: ndiswrapper -- fix interaction between __packed and packed + * ubuntu: AUFS -- update to 806051bcbeec27748aae2b7957726a4e63ff308e + * update package version to match payload version + * rebase to e6f597a1425b5af64917be3448b29e2d5a585ac8 + * rebase to v2.6.38-rc1 + * [Config] updateconfigs following rebase to v2.6.38-rc1 + * SAUCE: x86 fix up jiffies/jiffies_64 handling + * rebase to linus tip 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] updateconfigs following rebase to + 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] disable CONFIG_TRANSPARENT_HUGEPAGE to fix i386 boot crashes + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * [Config] CONFIG_NR_CPUS=256 for amd64 -server flavour + * rebase to v2.6.38-rc2 + * rebase to mainline d315777b32a4696feb86f2a0c9e9f39c94683649 + * rebase to c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] update configs following rebase to + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] disable CONFIG_AD7152 to fix FTBS on armel versatile + * [Config] disable CONFIG_AD7150 to fix FTBS on armel versatile + * [Config] disable CONFIG_RTL8192CE to fix FTBS on armel omap + * [Config] disable CONFIG_MANTIS_CORE to fix FTBS on armel versatile + + [ Kees Cook ] + + * SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of attacking + + [ Stefan Bader ] + + * Temporarily disable RODATA for virtual i386 + - LP: #699828 + + [ Tim Gardner ] + + * [Config] CONFIG_NLS_DEFAULT=utf8 + - LP: #683690 + * [Config] CONFIG_HIBERNATION=n + * update bnx2 firmware files in d-i/firmware/nic-modules + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon/bo: add some fallback placements for VRAM only + objects." + * packaging: make System.map mode 0600 + * thinkpad_acpi: Always report scancodes for hotkeys + - LP: #702407 + * sched: tg->se->load should be initialised to tg->shares + * Input: sysrq -- ensure sysrq_enabled and __sysrq_enabled are consistent + * brcm80211: include linux/slab.h for kfree + * pch_dma: add include/slab.h for kfree + * i2c-eg20t: include linux/slab.h for kfree + * gpio/ml_ioh_gpio: include linux/slab.h for kfree + * tty: include linux/slab.h for kfree + * winbond: include linux/delay.h for mdelay et al + + [ Upstream Kernel Changes ] + + * mark the start of v2.6.38 versioning + * rebase v2.6.37 to v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + - LP: #689886 + - LP: #702125 + - LP: #608775 + - LP: #215802 + - LP: #686333 + - LP: #677830 + - LP: #677652 + - LP: #696493 + - LP: #697240 + - LP: #689036 + - LP: #705323 + - LP: #686692 + + -- Andy Whitcroft Sun, 09 Jan 2011 13:44:52 +0000 + +linux (2.6.37-12.26) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc8 + * [Config] armel -- reenable omap flavour + * [Config] disable CONFIG_MACH_OMAP3517EVM to fix FTBS on armel omap + * [Config] disable CONFIG_GPIO_VX855 to fix FTBS on omap armel + * [Config] disable CONFIG_WESTBRIDGE_ASTORIA to fix FTBS on omap armel + * [Config] disable CONFIG_TI_DAVINCI_EMAC to fix FTBS on omap armel + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * [Config] track missing modules + * rebase to v2.6.37 final + + [ Chase Douglas ] + + * SAUCE: (drop after 2.6.37) HID: magicmouse: Don't report REL_{X, Y} for + Magic Trackpad + + [ Stefan Bader ] + + * Revert "SAUCE: blkfront: default to sd devices" + - LP: #684875 + + [ Tim Gardner ] + + * Revert "SAUCE: (no-up) libata: Ignore HPA by default." + - LP: #380138 + * [Config] Added autofs4.ko to -virtual flavour + - LP: #692917 + + [ Upstream Kernel Changes ] + + * Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series + Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc8 + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * rebase to v2.6.37 final + + -- Andy Whitcroft Thu, 23 Dec 2010 18:34:13 +0000 + +linux (2.6.37-11.25) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add hpsa to the list of block devices + - LP: #684304 + * [Config] add vmw-balloon driver to -virtual flavour + - LP: #592039 + * rebase to v2.6.37-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc7 + + -- Andy Whitcroft Tue, 21 Dec 2010 13:35:28 +0000 + +linux (2.6.37-10.24) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc6 + * updateconfigs following rebase to v2.6.37-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc6 + + -- Andy Whitcroft Thu, 16 Dec 2010 12:34:19 +0000 + +linux (2.6.37-9.23) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks + - LP: #689606 + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks (grub) + - LP: #689606 + + [ Kees Cook ] + + * SAUCE: RO/NX protection for loadable kernel, fix ftrace + - LP: #690190 + + -- Andy Whitcroft Wed, 15 Dec 2010 19:29:57 +0000 + +linux (2.6.37-9.22) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.35-rc5 + * [Config] updateconfigs following rebase to v2.6.37-rc5 + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: dm-raid4-5 -- follow changes to bio flags + * ubuntu: dm-raid4-5 -- re-enable + * ubuntu: omnibook -- update BOM + * ubuntu: ndiswrapper -- update BOM to match actual version + * ubuntu: ndiswrapper -- follow removal of the BKL and locked ioctl + * ubuntu: ndiswrapper -- re-enable + * ubuntu: iscsitarget -- re-instate copy_io_context + * ubuntu: iscsitarget -- follow changes to semaphore initialisation + * ubuntu: iscsitarget -- convert NIPQUAD to %pI4 + * ubuntu: iscsitarget -- re-enable + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 13 + - LP: #685015 + + [ Tim Gardner ] + + * [Config] CONFIG_9P_FSCACHE=y,CONFIG_9P_FS_POSIX_ACL=y + * [Config] CONFIG_CRYPTO_CRC32C=y + - LP: #681819 + * [Config] CONFIG_9P_FSCACHE=n + * [Config] Add nfsd modules to -virtual flavour + - LP: #688070 + + [ Upstream Kernel Changes ] + + * Revert "Staging: zram: work around oops due to startup ordering snafu" + * NFS: Fix panic after nfs_umount() + - LP: #683938 + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + * x86: Resume trampoline must be executable + * x86: RO/NX protection for loadable kernel, jump_table fix + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc5 + + -- Andy Whitcroft Thu, 09 Dec 2010 18:15:35 +0000 + +linux (2.6.37-8.21) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- include the aufs_types.h file in + linux-libc-headers" + * Revert "(no-up) add support for installed header files to ubuntu + directory" + + -- Andy Whitcroft Sun, 05 Dec 2010 17:33:28 +0000 + +linux (2.6.37-8.20) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] drivers/serial/mfd.c: Fix ARM compile error" + * Revert "SAUCE: Nouveau: Disable acceleration on MacBook Pros" + * Revert "SAUCE: Nouveau: Add quirk framework to disable acceleration" + * Revert "SAUCE: i915 -- disable powersave by default" + * SAUCE: enable Marvell 9128 PCIe SATA controller + - LP: #658521 + * [Config] evtchn has been renamed + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + + [ Tim Gardner ] + + * [Config] MISS: evtchn, NEW : xen-evtchn + * rebase to v2.6.37-rc4 + + [ Upstream Kernel Changes ] + + * drm/i915: Clean conflicting modesetting registers upon init + - LP: #683775 + * rebase to v2.6.37-rc4 + + -- Andy Whitcroft Fri, 03 Dec 2010 18:42:07 +0000 + +linux (2.6.37-7.19) natty; urgency=low + + [ Tim Gardner ] + + * [Config] Add bnx2 firmware to nic-modules udeb + - LP: #676245 + + -- Andy Whitcroft Fri, 26 Nov 2010 17:53:45 +0000 + +linux (2.6.37-7.18) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID" + * Revert "SAUCE: Add extra headers to linux-libc-dev" + * Revert "SAUCE: Enable speedstep for sonoma processors." + * [Config] enable CONFIG_BT_HCIUART_ATH3K + * [Config] enable CONFIG_IWLWIFI_DEBUGFS + * [Config] standardise CONFIG_MII + * [Config] standardise CONFIG_PRISM2_USB + * [Config] standardise CONFIG_SCSI_QLA_ISCSI + * [Config] build in CONFIG_AGP + * [Config] build in CONFIG_AGP_INTEL + * [Config] build in CONFIG_AGP_AMD + * [Config] build in CONFIG_AGP_AMD64 + * [Config] build in CONFIG_AGP_NVIDIA + * [Config] build in CONFIG_AGP_VIA + * [Config] disable CONFIG_SCSI_QLA_ISCSI for FTBS (arm) + * (no-up): document the new ## scheme + * [Config] harmonise CONFIG_SERIAL_8250_NR_UARTS + * [Config] update CONFIG_SERIAL_8250_RUNTIME_UARTS=32 + - LP: #675453 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * nx-emu: fix inverted report of disable_nx + + -- Andy Whitcroft Tue, 23 Nov 2010 21:00:39 +0000 + +linux (2.6.37-6.17) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch + aufs2.1-36-UNRELEASED-20101103" + * Revert "ubuntu: AUFS -- aufs2-base.patch + aufs2.1-36-UNRELEASED-20101103" + * [Config] standardise CONFIG_BT + * [Config] standardise CONFIG_IRDA + * [Config] standardise CONFIG_LAPB + * [Config] standardise CONFIG_RDS + * [Config] standardise CONFIG_RFKILL + * [Config] standardise CONFIG_TIPC + * [Config] standardise CONFIG_X25 + * [Config] standardise CONFIG_INPUT_EVDEV + * [Config] standardise CONFIG_INPUT_JOYDEV + * [Config] standardise CONFIG_INPUT_JOYSTICK + * [Config] standardise CONFIG_INPUT_TOUCHSCREEN + * [Config] CONFIG_INPUT_TOUCHSCREEN=n for FTBS (arm) + * [Config] CONFIG_IRDA=n for FTBS (arm) + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-37 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37 + * ubuntu: AUFS -- update to 097bf62d6f49619359d34bf17f242df38562489a + + [ Tim Gardner ] + + * SAUCE: Fix drivers/staging/easycap FTBS + * [Config] CONFIG_EASYCAP=m after fixing FTBS + + [ Upstream Kernel Changes ] + + * Revert "x86: Add NX protection for kernel data" + + -- Andy Whitcroft Mon, 22 Nov 2010 18:09:10 +0000 + +linux (2.6.37-6.16) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] update config for CONFIG_DEBUG_SET_MODULE_RONX" + * rebase to v2.6.37-rc3 + + [ Tim Gardner ] + + * [Config] CONFIG_SCHED_AUTOGROUP=y + + [ Upstream Kernel Changes ] + + * Revert "x86: Add RO/NX protection for loadable kernel modules" + * sched: automated per session task groups + * rebase to v2.6.37-rc3 + + -- Andy Whitcroft Mon, 22 Nov 2010 10:11:13 +0000 + +linux (2.6.37-6.15) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] standardise CONFIG_CEPH_FS + * [Config] standardise CONFIG_SCSI_LPFC_DEBUG_FS + * [Config] standardise CONFIG_SCSI_PROC_FS + * [Config] standardise CONFIG_UBIFS_FS + * [Config] standardise CONFIG_USB_GADGET_DEBUG_FS + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 11 + - LP: #677210 + * SAUCE: enable rfkill for rtl8192se driver + - LP: #640992 + + [ Tim Gardner ] + + * [Config] CONFIG_EASYCAP=n for FTBS + * Rebase to v2.6.32-rc2+git + + [ Upstream Kernel Changes ] + + * x86: Fix improper large page preservation + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + + [ Upstream Kernel Changes ] + + * Rebase to Linus 2.6.37-rc2+git + + -- Andy Whitcroft Sat, 20 Nov 2010 11:40:00 +0000 + +linux (2.6.37-5.14) natty; urgency=low + + [ Upstream Kernel Changes ] + + * PCI: fix offset check for sysfs mmapped files + - LP: #676963 + + -- Andy Whitcroft Thu, 18 Nov 2010 18:12:27 +0000 + +linux (2.6.37-5.13) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.37-rc2 + * updateconfigs following rebase to v2.6.37-rc2 + + [ Tim Gardner ] + + * [Config] Added NFS and related modules to virtual flavour + - LP: #659084 + + [ Upstream Kernel Changes ] + + * x86, cpu: Rename verify_cpu_64.S to verify_cpu.S + * x86, cpu: Clear XD_DISABLED flag on Intel to regain NX + * x86, cpu: Call verify_cpu during 32bit CPU startup + * x86, cpu: Only CPU features determine NX capabilities + + [ Upstream Changes ] + + * rebased to v2.67.37-rc2 + + -- Andy Whitcroft Tue, 16 Nov 2010 13:13:29 +0000 + +linux (2.6.37-4.12) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] HID: magicmouse: add param for scroll speed" + * Revert "[Upstream] HID: magicmouse: properly account for scroll + movement in state" + * Revert "[Upstream] HID: magicmouse: disable and add module param for + scroll acceleration" + * Revert "[Upstream] HID: magicmouse: scroll on entire surface, not just + middle of mouse" + + [ Henrik Rydberg ] + + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Upstream Kernel Changes ] + + * Revert "mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume" + * Revert "[ARM] implement arch_randomize_brk()" + * Revert "ARM: stack protector: change the canary value per task" + * Revert "ARM: initial stack protector (-fstack-protector) support" + * Revert "ALSA: hda - Handle pin NID 0x1a on ALC259/269" + * Revert "ALSA: hda - Handle missing NID 0x1b on ALC259 codec" + * Revert "perf probe: Add kernel source path option" + * hid: ntrig: Support single-touch devices + * hid: ntrig: Mask pen switch events + * net: rtnetlink.h -- only include linux/netdevice.h when used by the + kernel + - LP: #673073 + * Fix userspace build of linux/fs.h + + -- Andy Whitcroft Mon, 15 Nov 2010 19:31:44 +0000 + +linux (2.6.37-3.11) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- update to + b37c575759dc4535ccc03241c584ad5fe69e3b25" + * Revert "ubuntu: AUFS -- track changes to the arguements to fop fsync()" + * Revert "ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601" + * Revert "ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601" + * Revert "ubuntu: AUFS -- aufs2 base patch for linux-2.6.34" + * [Config] Disable intel_idle for -virtual kernels + - LP: #651370 + * [Config] enforcer -- ensure we never enable CONFIG_IMA + * debian -- pass the correct flavour name when checking configs + * [Config] enforcer -- ensure CONFIG_INTEL_IDLE is off for -virtual + * [Config] ensure CONFIG_IPV6=y for powerpc + * [Config] enforcer -- ensure CONFIG_IPV6=y + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- update to aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- re-enable + * ubuntu: AUFS -- track changes to work queue initialisation + * ubuntu: AUFS -- track changes to llseek in v2.6.37-rc1 + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + * SAUCE: drm -- stop early access to drm devices + + [ Jeremy Kerr ] + + * [Config] Build-in powermac ZILOG serial driver + - LP: #673346 + + [ Kees Cook ] + + * SAUCE: nx-emu: use upstream ASLR when possible + + [ Tim Gardner ] + + * [Config] Use correct be2iscsi module name in d-i/modules/scsi-modules + - LP: #628776 + + [ Upstream Kernel Changes ] + + * i386: NX emulation + * nx-emu: drop exec-shield sysctl, merge with disable_nx + * nx-emu: standardize boottime message prefix + * mmap randomization for executable mappings on 32-bit + * exec-randomization: brk away from exec rand area + + -- Andy Whitcroft Thu, 11 Nov 2010 23:46:37 +0000 + +linux (2.6.37-2.10) natty; urgency=low + + [ Andy Whitcroft ] + + * reinstate armel config changes: + * [Config] CONFIG_GPIO_PCH=n for armel FTBS + * [Config] CONFIG_GPIO_VX855=n for armel FTBS + + -- Andy Whitcroft Wed, 03 Nov 2010 22:20:35 +0000 + +linux (2.6.37-2.9) natty; urgency=low + + [ Andy Whitcroft ] + + * config -- fix genportsconfig + * [Config] move powerpc over from ports to distro + * bump master version number to match contained kernel + * SAUCE: fix documentation strings for struct input_keymap_entry + * usb: gadget: goku_udc: add registered flag bit + + -- Andy Whitcroft Tue, 02 Nov 2010 15:14:11 +0000 + +linux (2.6.36-2.8) natty; urgency=low + + [ Tim Gardner ] + + * [Config]: fix changed CONFIG_SYSFS_DEPRECATED_V2 enforcement rules + * [Config]: TWL4030_CORE=n for FTBS + * [Config]: CONFIG_ATH6K_LEGACY=n for FTBS + * [Config]: CONFIG_SOLO6X10=n for FTBS + * [Config]: CONFIG_GPIO_PCH=n for armel FTBS + * [Config]: CONFIG_GPIO_VX855=n for armel FTBS + * [Config]: CONFIG_DRM_NOUVEAU=n for armel FTBS + * [Config]: CONFIG_LINE6_USB=n for armel FTBS + * [Config]: CONFIG_SENSORS_AK8975=n for armel FTBS + * [Config]: CONFIG_I2C_I801=n for armel FTBS + * UBUNTU: SAUCE: AppArmor: Fix unpack of network tables. + * AppArmor: compatibility patch for v5 interface + * AppArmor: compatibility patch for v5 network controll + * Dropped (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: libata: Add ALPM power state accounting to the AHCI driver + * Dropped: UBUNTU: SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + * Dropped: hid: 3m: Convert to MT slots + * Dropped: HID: magicmouse: don't allow hidinput to initialize the device + * Dropped: HID: magicmouse: simplify touch data bit manipulation + * Dropped: HID: magicmouse: simplify touch down logic + * Dropped: HID: magicmouse: enable Magic Trackpad support + * Dropped: UBUNTU: SAUCE: hid: ntrig: remove sysfs nodes + * Dropped: UBUNTU: SAUCE: hid: ntrig: Setup input filtering manually + * Dropped: UBUNTU: SAUCE: hid: ntrig: New ghost-filtering event logic + * Dropped: UBUNTU: SAUCE: hid: ntrig: identify firmware version (wiggled) + * Dropped: UBUNTU: (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: KMS: cache the EDID information of the LVDS + * Dropped: UBUNTU: SAUCE: fbcon -- fix race between open and removal of framebuffers + * Dropped: UBUNTU: SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + * Dropped: UBUNTU: SAUCE: x86: implement cs-limit nx-emulation for ia32 + * Dropped: UBUNTU: SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * Dropped: UBUNTU: SAUCE: [um] Don't use nx_enabled under UML + * Dropped: UBUNTU: SAUCE: x86: brk away from exec rand area + + [ Upstream Kernel Changes ] + + * rebased against 2.6.27-rc1 + + -- Tim Gardner Fri, 22 Oct 2010 19:35:05 -0600 + +linux (2.6.36-1.7) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.36 final + * [Config] update configs following rebase to v2.6.36 final + * [Config] update ports configs following rebase to v2.6.36 final + + [ Upstream Kernel Changes ] + + * rebased to v2.6.36 final + + -- Andy Whitcroft Thu, 21 Oct 2010 14:28:57 +0100 + +linux (2.6.36-1.6) natty; urgency=low + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "Staging: Add initial release of brcm80211 - Broadcom 802.11n + wireless LAN driver." + + -- Andy Whitcroft Wed, 20 Oct 2010 10:41:25 +0100 + +linux (2.6.36-1.5) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.36-rc8 + * updateconfigs following rebase to v2.6.36-rc8 + * updateportsconfigs following rebase to v2.6.36-rc8 + * config -- simplify the kernelconfig interface + * config -- add new config mode 'dumpconfigs' + + [ Tim Gardner ] + + * Simplify the use of CROSS_COMPILER + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "staging: brcm80211: Make compiling of brcm80211.ko and + brcmfmac.ko mutually exclusive." + * Revert "staging: brcm80211: Fix compile issue when BRCM80211_PCI is not + set." + * Revert "Staging: brcm80211: remove driver specific -W options" + * Revert "Staging: brcm80211: clean up makefile cflag lines" + * Revert "staging: brcm80211: add fullmac driver" + * Revert "staging: brcm80211: use string native library" + * Revert "staging: brcm80211: use native ctype library" + * Revert "staging: brcm80211: fix remaining checkpatch errors." + * Revert "staging: brcm80211: fix "ERROR: trailing whitespace."" + * Revert "staging: brcm80211: fix "ERROR: spaces required around that + ..."" + * Revert "staging: brcm80211: fix "ERROR: spaces prohibited around that + ':' ..."" + * Revert "staging: brcm80211: fix "ERROR: space required before that + ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that close + brace"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited before + ...close square bracket"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited after that + ..."" + * Revert "staging: brcm80211: fix "ERROR: need consistent spacing around + '*'"" + * Revert "staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"'" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... + do - while loop"" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise statics to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise globals to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: while should follow close brace + '}'"" + * Revert "staging: brcm80211: fix "ERROR: that open brace { ... prev + line"" + * Revert "staging: brcm80211: fix "ERROR: trailing statements should be + on next line"" + * Revert "staging: brcm80211: fix "ERROR: do not use assignment in if + condition"" + * Revert "staging: brcm80211: fix "ERROR: return is not a function, + paren..."" + * Revert "staging: brcm80211: fix "ERROR: open brace '{' following + function dec..."" + * Revert "staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo + *bar"'" + * Revert "staging: brcm80211: Fix URLs for firmware files." + * Revert "staging: brcm80211: use '%pM' format to print MAC address" + * Revert "staging: brcm80211: Add contact info to TODO list." + * Revert "staging: brcm80211: Fix some initialisation failure paths" + * Export dump_{write,seek} to binary loader modules + * rebase to v2.6.36-rc8. + + -- Andy Whitcroft Tue, 19 Oct 2010 18:58:11 +0100 + +linux (2.6.36-0.4) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: perf: increase stack footprint to avoid stack-protector warning + (fixes FTBS on powerpc) + + -- Andy Whitcroft Thu, 14 Oct 2010 13:16:16 +0100 + +linux (2.6.36-0.3) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_SCSI_QLA_ISCSI to fix FTBS on powerpc + + -- Andy Whitcroft Thu, 14 Oct 2010 03:01:30 +0100 + +linux (2.6.36-0.2) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateportsconfigs following rebase to 2.6.36-rc7 + (fix FTBS on powerpc) + + -- Andy Whitcroft Wed, 13 Oct 2010 23:25:12 +0100 + +linux (2.6.36-0.1) natty; urgency=low + + [ Andy Whitcroft ] + + * reduce disk usage during buildd builds + - LP: #645653 + * [Config] enforcer -- ensure CONFIG_INIT_PASS_ALL_PARAMS is y + * [Config] armel -- drop omap flavour + + [ Tim Gardner ] + + * Added dropped patch list + * more dropped patches + * [Config] Disable aufs, dmraid-4.5, ndis-wrapper + * [Config] Add support for cross compiling armel + * [Config] CONFIG_SCSI_QLA_ISCSI=n for armel + * [Upstream] drivers/serial/mfd.c: Fix ARM compile error + * [Config]: updateconfigs after adding brcm80211 + * staging: brcm80211: Fix Makefile syntax error + * rebased to v2.6.36-rc7 + + [ Upstream Kernel Changes ] + + * (upstream) IPS driver: don't toggle CPU turbo on unsupported CPUs + * (upstream) IPS driver: verify BIOS provided limits + * intel_ips: Print MCP limit exceeded values. + * Staging: Add initial release of brcm80211 - Broadcom 802.11n wireless + LAN driver. + * staging: brcm80211: Fix some initialisation failure paths + * staging: brcm80211: Add contact info to TODO list. + * staging: brcm80211: use '%pM' format to print MAC address + * staging: brcm80211: Fix URLs for firmware files. + * staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo *bar"' + * staging: brcm80211: fix "ERROR: open brace '{' following function + dec..." + * staging: brcm80211: fix "ERROR: return is not a function, paren..." + * staging: brcm80211: fix "ERROR: do not use assignment in if condition" + * staging: brcm80211: fix "ERROR: trailing statements should be on next + line" + * staging: brcm80211: fix "ERROR: that open brace { ... prev line" + * staging: brcm80211: fix "ERROR: while should follow close brace '}'" + * staging: brcm80211: fix "ERROR: do not initialise globals to 0 or NULL" + * staging: brcm80211: fix "ERROR: do not initialise statics to 0 or NULL" + * staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis" + * staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... do - + while loop" + * staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"' + * staging: brcm80211: fix "ERROR: need consistent spacing around '*'" + * staging: brcm80211: fix "ERROR: space prohibited after that ..." + * staging: brcm80211: fix "ERROR: space prohibited before ...close square + bracket" + * staging: brcm80211: fix "ERROR: space required after that close brace" + * staging: brcm80211: fix "ERROR: space required after that ..." + * staging: brcm80211: fix "ERROR: space required before that ..." + * staging: brcm80211: fix "ERROR: spaces prohibited around that ':' ..." + * staging: brcm80211: fix "ERROR: spaces required around that ..." + * staging: brcm80211: fix "ERROR: trailing whitespace." + * staging: brcm80211: fix remaining checkpatch errors. + * staging: brcm80211: use native ctype library + * staging: brcm80211: use string native library + * staging: brcm80211: add fullmac driver + * Staging: brcm80211: clean up makefile cflag lines + * Staging: brcm80211: remove driver specific -W options + * staging: brcm80211: Fix compile issue when BRCM80211_PCI is not set. + * staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko + mutually exclusive. + + -- Andy Whitcroft Tue, 12 Oct 2010 16:00:27 +0100 + +linux (2.6.35-22.33) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops" + - LP: #641320 + + [ Brian Rogers ] + + * SAUCE: ir-core: Fix null dereferences in the protocols sysfs interface + - LP: #624701 + + [ Christopher James Halse Rogers ] + + * SAUCE: Nouveau: Add quirk framework to disable acceleration + - LP: #544088, #546393 + * SAUCE: Nouveau: Disable acceleration on MacBook Pros + - LP: #546393 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: allow newer tools to load policy on older + kernels" + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + + [ Mathieu J. Poirier ] + + * SAUCE: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * ALSA: HDA: Enable internal speaker on Dell M101z + - LP: #640254 + + -- Leann Ogasawara Fri, 17 Sep 2010 13:21:28 -0700 + +linux (2.6.35-22.32) maverick; urgency=low + + [ Arjan van de Ven ] + + * SAUCE: libata: Add ALPM power state accounting to the AHCI driver + + [ David Henningsson ] + + * SAUCE: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510 + - LP: #605047, #628961 + + [ John Johansen ] + + * [Upstream] AppArmor: Fix splitting an fqname into separate namespace + and profile names + - LP: #615947 + * [Upstream] AppArmor: Fix locking from removal of profile namespace + - LP: #615947 + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + * SAUCE: Improve Amazon EBS performance for EC2 + - LP: #634316 + + [ Leann Ogasawara ] + + * Revert "SAUCE: i915 KMS -- blacklist i855" + * Revert "SAUCE: i915 KMS -- blacklist i845g" + * Revert "SAUCE: i915 KMS -- blacklist i830" + * Revert "SAUCE: i915 KMS -- support disabling KMS for known broken + devices" + * execute module-inclusion within a subshell + - LP: #621175 + + [ Upstream Kernel Changes ] + + * (pre-stable) bounce: call flush_dcache_page() after bounce_copy_vec() + - LP: #633227 + * (pre-stable) drm/i915: don't enable self-refresh on Ironlake + - LP: #629711 + * (pre-stable) mm: Move vma_stack_continue into mm.h + * x86, hwmon: Fix unsafe smp_processor_id() in thermal_throttle_add_dev + - LP: #601073 + * PM / Runtime: Make runtime_status attribute not debug-only (v. 2) + * PM / Runtime: Add runtime PM statistics (v3) + * compat: Make compat_alloc_user_space() incorporate the access_ok() + - CVE-2010-3081 + * x86-64, compat: Test %rax for the syscall number, not %eax + - CVE-2010-3301 + * x86-64, compat: Retruncate rax after ia32 syscall entry tracing + - CVE-2010-3301 + + -- Leann Ogasawara Tue, 14 Sep 2010 08:46:49 -0700 + +linux (2.6.35-21.31) maverick; urgency=low + + [ Andy Whitcroft ] + + * bodge linux-libc-dev package version due to ti-omap4 error + * linux-libc-dev -- ensure we can only build this on debian.master + + -- Leann Ogasawara Mon, 13 Sep 2010 09:54:31 -0700 + +linux (2.6.35-21.30) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + + [ Daniel Lezcano ] + + * SAUCE: fix compilation warning when CONFIG_SECURITY is not set + + [ Henrik Rydberg ] + + * SAUCE: Input: wacom - add fuzz parameters to features + * SAUCE: Input: wacom - collect device quirks into single function + * SAUCE: Input: wacom - add support for the Bamboo Touch trackpad + * SAUCE: Input: wacom - add a quirk for low resolution Bamboo devices + * SAUCE: hid: ntrig: Remove unused device ids + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Correct logic for quirks + * SAUCE: hid: ntrig: zero-initialize ntrig struct + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Leann Ogasawara ] + + * SAUCE: ndiswrapper: Initialize buffer index and check its value + - LP: #613796 + + [ Manoj Iyer ] + + * SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops + - LP: #632884 + + [ Ping Cheng ] + + * SAUCE: Input: wacom - parse the Bamboo device family + + [ Rafi Rubin ] + + * SAUCE: hid: ntrig: identify firmware version (wiggled) + + [ Tim Gardner ] + + * [Config] CONFIG_NL80211_TESTMODE=n + + [ Upstream Kernel Changes ] + + * Revert "input: mt: Add support for the Bamboo Touch trackpad" + * e1000e: initial support for 82579 LOMs + * e1000e: correct MAC-PHY interconnect register offset for 82579 + * (pre-stable) ALSA: hda - Add a new hp-laptop model for Conexant 5066, + tested on HP G60 + - LP: #587388 + * DSS2: Don't power off a panel twice + - LP: #588243 + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Input: i8042 - reset keyboard controller wehen resuming from S2R + - LP: #86820 + * ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs + - LP: #414795 + * agp/intel: Support the extended physical addressing bits on + Sandybridge. + - LP: #632488 + * drm/i915,intel_agp: Add support for Sandybridge D0 + - LP: #632488 + * (pre-stable) intel_agp,i915: Add more sandybridge graphics device ids + - LP: #632488 + * mmc: omap: fix for bus width which improves SD card's peformance. + + -- Leann Ogasawara Tue, 07 Sep 2010 09:58:52 -0700 + +linux (2.6.35-20.29) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: i915 KMS -- support disabling KMS for known broken devices + - LP: #563277 + * SAUCE: i915 KMS -- blacklist i830 + - LP: #542208, #563277 + * SAUCE: i915 KMS -- blacklist i845g + - LP: #541492, #563277 + * SAUCE: i915 KMS -- blacklist i855 + - LP: #511001, #541511, #563277 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_PKGTEMP=m + - LP: #601073 + * ARM: Temporarily disable module check for armel + * rebase to v2.6.35.4 + * [Config] update configs following rebase to v2.6.35.4 + + [ Ricardo Salveti de Araujo ] + + * [Config] Change CONFIG_LEDS_TRIGGER_HEARTBEAT from module to built-in + in Omap + + [ Tim Gardner ] + + * [Config] Added be2net, be2scsi to udebs + - LP: #628776 + + [ Upstream Kernel Changes ] + + * x86, cpu: Package Level Thermal Control, Power Limit Notification + definitions + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp hwmon driver + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: thermal throttling handler + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: power limit + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp documentation + - LP: #601073 + * hid: 3m: Adjust to sequential MT HID protocol + * hid: 3m: Convert to MT slots + * hid: 3m: Correct touchscreen emulation + * hid: 3m: Adjust major / minor axes to scale + * input: bcm5974: Adjust major / minor to scale + * HID: magicmouse: don't allow hidinput to initialize the device + * HID: magicmouse: simplify multitouch feature request + * HID: magicmouse: simplify touch data bit manipulation + * HID: magicmouse: simplify touch down logic + * HID: magicmouse: remove timestamp logic + * HID: magicmouse: enable Magic Trackpad support + * HID: magicmouse: Adjust major / minor axes to scale + * mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume + - LP: #477106 + * drm/i915: fix VGA plane disable for Ironlake+ + - LP: #602281 + + -- Leann Ogasawara Mon, 30 Aug 2010 08:38:01 -0700 + +linux (2.6.35-19.28) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.27. Some armel udebs were accidentally deleted + from the archive and a no-change rebuild was attempted. However, the ABI + did not get bumped and resulted in build failures for 2.6.35-19.27. Fix + up the ABI and re-upload. + + -- Leann Ogasawara Sat, 28 Aug 2010 16:42:27 -0700 + +linux (2.6.35-19.27) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.26. Some armel udebs were accidentally deleted + from the archive. + + -- Leann Ogasawara Fri, 27 Aug 2010 08:58:35 -0700 + +linux (2.6.35-19.26) maverick; urgency=low + + [ Upstream Kernel Changes ] + + * ARM: OMAP: Beagle: revision detection + * ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect + * ARM: OMAP: Beagle: no gpio_wp pin connection on xM + + -- Leann Ogasawara Thu, 26 Aug 2010 09:15:09 -0700 + +linux (2.6.35-19.25) maverick; urgency=low + + [ Jarod Wilson ] + + * SAUCE: Bring in staging/lirc from 2.6.36 + - LP: #609234 + * SAUCE: Update ir-core to linuxtv/other which should be merged for + 2.6.36. + - LP: #609234 + * SAUCE: Fix memleaks in imon and mceusb drivers + - LP: #609234 + * SAUCE: Bring in streamzap support from linuxtv/other + - LP: #609234 + + [ Mario Limonciello ] + + * Remove ubuntu/lirc in favor of staging/lirc from 2.6.36 + - LP: #609234 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: adding i2c eeprom driver to read EDID + - LP: #608279 + + [ Upstream Kernel Changes ] + + * intel_idle: disable module support + - LP: #615265 + * (pre-stable) ALSA: hda - Ensure codec patch files are checked for the + correct codec ID + * (pre-stable) ALSA: hda - Rename iMic to Int Mic on Lenovo NB0763 + - LP: #605101 + * (pre-stable) ALSA: HDA: Use model=auto for LG R510 + - LP: #495134 + * (pre-stable) ALSA: HDA: Add Sony VAIO quirk for ALC269 + - LP: #519066 + * (pre-stable) ALSA: HDA: Fix front mic on Dell Precision M6500 + - LP: #519066 + * input: mt: Initialize slots to unused (rev2) + * input: mt: Add support for the Bamboo Touch trackpad + * hid: Add a hid quirk for input sync override + + -- Leann Ogasawara Mon, 23 Aug 2010 12:42:52 -0700 + +linux (2.6.35-18.24) maverick; urgency=low + + [ Colin Watson ] + + * Pass DEB_MAINT_PARAMS to hook scripts + + [ Leann Ogasawara ] + + * [Config] Add CONFIG_INPUT_UINPUT=y to config enforcer + - LP: #584812 + * rebase to v2.6.35.3 + + [ Upstream Kernel Changes ] + + * (pre-stable) dell-wmi: Add support for eject key on Dell Studio 1555 + - LP: #609234 + * can: add limit for nframes and clean up signed/unsigned variables + - CVE-2010-2959 + * drm: Initialize ioctl struct when no user data is present + - CVE-2010-2803 + * ARM: initial stack protector (-fstack-protector) support + * ARM: stack protector: change the canary value per task + * [ARM] implement arch_randomize_brk() + * [ARM] add address randomization to mmap() + * ARM: fix ASLR of PIE executables + + -- Leann Ogasawara Sun, 22 Aug 2010 19:22:04 -0700 + +linux (2.6.35-17.23) maverick; urgency=low + + [ Jeremy Kerr ] + + * [Config] build-in uinput module + - LP: #584812 + + [ Leann Ogasawara ] + + * Revert "[Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS" + * Revert "[Config] [FTBS] ia64: Temporarily disable gpiolib" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MTD_NAND_DENALI" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MFD_JANZ_CMODIO" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_INFINIBAND_QIB" + * [Config] Enable INTEL_IPS + - LP: #601057 + * Remove ia64 support + * [Config] Update portsconfigs after removing ia64 support + * Remove sparc support + * [Config] Update portsconfigs after removing sparc support + + [ Linus Torvalds ] + + * (pre-stable) mm: fix page table unmap for stack guard page properly + + [ Mathieu J. Poirier ] + + * SAUCE: (no-up) ARM: Resetting power_mode to its original value. + - LP: #591941 + + [ Upstream Kernel Changes ] + + * timer: add on-stack deferrable timer interfaces + - LP: #601057 + * x86 platform driver: intelligent power sharing driver + - LP: #601057 + * IPS driver: add GPU busy and turbo checking + - LP: #601057 + * X86: intel_ips, check for kzalloc properly + - LP: #601057 + * ips driver: make it less chatty + - LP: #601057 + + -- Leann Ogasawara Tue, 17 Aug 2010 09:38:08 -0700 + +linux (2.6.35-16.22) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- more agressivly clean up after depmod on purge + - LP: #618591 + + [ Henrik Rydberg ] + + * SAUCE: hid: 3m: Simplify touchsreen emulation logic + + [ Leann Ogasawara ] + + * ubuntu: iscsitarget -- version 1.4.20.2 + * ubuntu: rtl8192se -- update to version 0017.0507.2010 + * rebase to v2.6.35.2 + * [Config] update configs following rebase to v2.6.35.2 + * [Config] update ports configs following rebase to v2.6.35.2 + + [ Luke Yelavich ] + + * [Config] Enable new firewire stack on powerpc + + [ Mathieu J. Poirier ] + + * SAUCE: (drop after 2.6.35) ARM: Using gpmc function to init nand flash. + - LP: #608266 + + -- Leann Ogasawara Thu, 12 Aug 2010 09:58:01 -0700 + +linux (2.6.35-15.21) maverick; urgency=low + + [ Luke Yelavich ] + + * [Config] CONFIG_SND_USB_UA101=m for all architectures + + [ Upstream Kernel Changes ] + + * Input: introduce MT event slots + * Input: document the MT event slot protocol + * (pre-stable) sched: Revert nohz_ratelimit() for now + * (pre-stable) drm/radeon/kms: add missing copy from user + - LP: #606081 + + [ Leann Ogasawara ] + + * rebase to v2.6.35.1 + + -- Leann Ogasawara Mon, 09 Aug 2010 09:24:04 -0700 + +linux (2.6.35-14.20) maverick; urgency=low + + [ Andy Whitcroft ] + + * update Vcs-Git to point to maverick repo + * debian -- include the debian packaging in the -source package + - LP: #608674 + * select debian source format 1.0 + * add support for building selected stages of kernel + - LP: #603087 + * cleanup conditional dependancy handling + - LP: #603087 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Handle missing NID 0x1b on ALC259 codec + - LP: #582199, #586418, #588031 + * ALSA: hda - Handle pin NID 0x1a on ALC259/269 + - LP: #582199, #586418, #588031 + * sched: Revert nohz_ratelimit() for now + + -- Leann Ogasawara Tue, 03 Aug 2010 08:46:47 -0700 + +linux (2.6.35-14.19) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35 + + -- Leann Ogasawara Sun, 01 Aug 2010 10:35:56 -0700 + +linux (2.6.35-13.18) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: (no-up) Modularize vesafb -- fix initialisation + * SAUCE: add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: drm -- stop early access to drm devices + + [ Bryan Wu ] + + * CONFIG: compile in OTG driver and Transceiver driver + - LP: #566645 + * remove OTG modules from modules list file + + [ John Johansen ] + + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-27 + - LP: #581525, #599450 + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace + * SAUCE: fix pv-ops for legacy Xen + * SAUCE: blkfront: default to sd devices + * [Config] Build in drivers required for Xen pv-ops + + [ Leann Ogasawara ] + + * Revert "[Upstream] i915: Use the correct mask to detect i830 aperture + size." + + [ Lee Jones ] + + * SAUCE: ARM: OMAP: Add macros for comparing silicon revision + - LP: #608095 + * SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than + just revision + - LP: #608095 + * SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + - LP: #608095 + * SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM + - LP: #608095 + + [ Upstream Kernel Changes ] + + * agp/intel: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + -- Leann Ogasawara Fri, 30 Jul 2010 15:46:59 -0700 + +linux (2.6.35-12.17) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + * [Config] update configs following rebase to v2.6.35-rc6 + * [Config] update ports configs following rebase to v2.6.35-rc6 + * SAUCE: [FTBS] armel: define KEY_F10 and KEYF11 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + + -- Leann Ogasawara Fri, 23 Jul 2010 16:16:38 +0200 + +linux (2.6.35-11.16) maverick; urgency=low + + [ Leann Ogasawara ] + + * Bump ABI for new compiler update + + -- Leann Ogasawara Fri, 23 Jul 2010 10:24:58 +0200 + +linux (2.6.35-10.15) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: ensure vga16fb loads if no other driver claims the VGA + device" + * [Config] Enable CONFIG_M686=y + - LP: #592495 + + [ Upstream Kernel Changes ] + + * tracing: Add alignment to syscall metadata declarations + + -- Leann Ogasawara Tue, 20 Jul 2010 18:18:49 +0200 + +linux (2.6.35-9.14) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25 + + [ John Johansen ] + + * [Config] Enable DRBD as a module + + [ Kees Cook ] + + * SAUCE: Yama: verify inode is symlink to avoid bind mounts + - LP: #604407 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] ports: Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + * [Config] ports: Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + + [ Lee Jones ] + + * Stop ARM boards crashing when CUPS is loaded + - LP: #601226 + + [ Upstream Kernel Changes ] + + * perf probe: Support tracing an entry of array + * perf probe: Support static and global variables + + -- Leann Ogasawara Fri, 16 Jul 2010 14:38:17 -0700 + +linux (2.6.35-8.13) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: Yama: check PTRACE using thread group leader + * SAUCE: Yama: search for PTRACE exceptions via thread group leader + - LP: #603716 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc5 + * [Config] update configs following rebase to v2.6.35-rc5 + + [ Nicolas Pitre ] + + * SAUCE: make ndiswrapper available on X86 only + + [ Tim Gardner ] + + * [Config] Added ums-cypress to udeb + - LP: #576066 + * SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n + * [Config] CONFIG_NDISWRAPPER=m across all configs + + [ Upstream Kernel Changes ] + + * HID: magicmouse: report last touch up + * rebase to 2.6.35-rc5 + + -- Leann Ogasawara Tue, 13 Jul 2010 18:57:59 -0700 + +linux (2.6.35-7.12) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] i915: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35) drm/radeon/kms: add ioport register access + (squashed) + + -- Tim Gardner Thu, 08 Jul 2010 09:53:13 -0600 + +linux (2.6.35-7.11) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_X86_MRST=n + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35-rc5) writeback: remove writeback_inodes_wbc + * (drop after 2.6.35-rc5) writeback: split writeback_inodes_wb + * (drop after 2.6.35-rc5) writeback: simplify the write back thread queue + + -- Tim Gardner Tue, 06 Jul 2010 18:39:08 -0600 + +linux (2.6.35-7.10) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: security: create task_free security callback + * SAUCE: Yama: add PTRACE exception tracking and interface + * SAUCE: security: unconditionally chain to Yama LSM + * Revert "SAUCE: ptrace: restrict ptrace scope to children" + * Revert "SAUCE: fs: block hardlinks to non-accessible sources" + * Revert "SAUCE: fs: block cross-uid sticky symlinks" + * [Upstream] security: Yama LSM + * [Config] Enable CONFIG_SECURITY_YAMA=y + + [ Tim Gardner ] + + * [Config] updateconfigs/updateportsconfigs after rebase to 2.6.35-rc4 + + [ Upstream Kernel Changes ] + + * rebase to 2.6.35-rc4 + + -- Leann Ogasawara Thu, 01 Jul 2010 08:55:57 -0700 + +linux (2.6.35-6.9) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] direct_splice_actor() should not use pos in sd + - LP: #588861 + + -- Leann Ogasawara Mon, 28 Jun 2010 12:35:49 -0700 + +linux (2.6.35-6.8) maverick; urgency=low + + [ Mathieu J. Poirier ] + + * ARM: Adding regulator supply for vdds_sdi. + - LP: #597904 + + -- Leann Ogasawara Sun, 27 Jun 2010 16:34:43 -0700 + +linux (2.6.35-6.7) maverick; urgency=low + + [ Alberto Milone ] + + * [Upstream] Add support for the ATIF ACPI method to the radeon driver + + [ Chase Douglas ] + + * [Upstream] HID: magicmouse: scroll on entire surface, not just middle + of mouse + * [Upstream] HID: magicmouse: disable and add module param for scroll + acceleration + * [Upstream] HID: magicmouse: properly account for scroll movement in + state + * [Upstream] HID: magicmouse: add param for scroll speed + * [Upstream] HID: magicmouse: enable horizontal scrolling + + [ Henrik Rydberg ] + + * [Upstream] Input: evdev - convert to dynamic event buffer + * [Upstream] Input: evdev - use driver hint to compute size of event + buffer + * [Upstream] Input: bcm5974 - set the average number of events per MT + event packet + * [Upstream] Input: hid-input - use a larger event buffer for MT devices + * [Upstream] Input: evdev - never leave the client buffer empty after + write + + [ John Johansen ] + + * SAUCE: AppArmor: -- mainline 2010-06-23 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: fs: block hardlinks to non-accessible sources AppArmor portion + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_INTR_REMAP=y + - LP: #597091 + * [Config] Enable CONFIG_X86_X2APIC + - LP: #597091 + + [ Mathieu J. Poirier ] + + * [Config] ARM: Turning off CONFIG_CPU_IDLE on omap + - LP: #594382 + + -- Leann Ogasawara Thu, 24 Jun 2010 12:19:48 -0700 + +linux (2.6.35-5.6) maverick; urgency=low + + [ Amit Kucheria ] + + * [Config] update omap flavour description + + [ Andy Whitcroft ] + + * update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac + - LP: #570500, #576274 + * SAUCE: add option to hand off all kernel parameters to init + - LP: #586386 + * [Config] enable passing all kernel command line to init + - LP: #586386 + * [Config] disable CONFIG_VMI + - LP: #537601 + * [Config] enable CONFIG_IPV6_SIT_6RD + - LP: #591869 + * [Config] enable CONFIG_VMWARE_BALOON as module + - LP: #592039 + + [ Leann Ogasawara ] + + * Revert "SAUCE: pm: Config option to disable handling of console during + suspend/resume" + - LP: #594885 + * [Config] Remove CONFIG_PM_DISABLE_CONSOLE + * [Config] ports: enable passing all kernel command line to init + - LP: #586386 + * [Config] Enable CONFIG_FB_VESA=y for x86 + * [Config] Add CONFIG_FRAMEBUFFER_CONSOLE=y to config enforcer + * [Config] Add CONFIG_FB_VESA=y for x86 to config enforcer + * [Config] Enable CONFIG_TASK_DELAY_ACCT=y + - LP: #493156 + + [ Mathieu Poirier ] + + * ARM: Adding MosChip MCS7830 to nic-usb + - LP: #584920 + + [ Upstream Kernel Changes ] + + * Revert "[Upstream] docbook: need xmldoclinks for all doc types" + * docbook: need xmldoclinks for all doc types + * perf probe: Add kernel source path option + + -- Leann Ogasawara Thu, 17 Jun 2010 08:05:29 -0700 + +linux (2.6.35-4.5) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "[Upstream] (evdev) Use driver hint to compute the evdev buffer + size (rev2)" + * Revert "[Upstream] (evdev) Convert to dynamic event buffer (rev4)" + * Revert "[Upstream] (evdev) Use multi-reader buffer to save space + (rev4)" + * Revert "SAUCE: drivers: Remove some duplicate device entries in various + modules" + * [Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID + * [Upstream] Revert "USB: Adding support for HTC Smartphones to ipaq" + * [Upstream] p54usb: Comment out duplicate Medion MD40900 device id + + [ Tim Gardner ] + + * [Config] CONFIG_NFS_FSCACHE=y + - LP: #440522 + * [Config] CONFIG_FSCACHE_STATS=y, CONFIG_FSCACHE_HISTOGRAM=y + - LP: #440522 + + -- Leann Ogasawara Wed, 16 Jun 2010 08:43:07 -0700 + +linux (2.6.35-3.4) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- ensure the version number is clean + + [ Henrik Rydberg ] + + * [Upstream] Introduce MT event slots (rev 5) + * [Upstream] Document the MT event slot protocol (rev5) + * [Upstream] (evdev) Use multi-reader buffer to save space (rev4) + * [Upstream] (evdev) Convert to dynamic event buffer (rev4) + * [Upstream] (evdev) Use driver hint to compute the evdev buffer size + (rev2) + + [ Leann Ogasawara ] + + * Revert "SAUCE: Add MODULE_ALIAS for Dell WMI module" + * Revert "SAUCE: hostap: send events on data interface as well as master + interface" + * Revert "Fix webcam having USB ID 0ac8:303b" + * Revert "SAUCE: toshiba_acpi -- pull in current -dev version of driver" + * rebase to v2.6.35-rc3 + + [ Maxim Levitsky ] + + * [Config] Enable new Smartmedia/xD translation layer + - LP: #202490 + + [ Upstream Kernel Changes ] + + * net: fix deliver_no_wcard regression on loopback device + + [ Upstream changes ] + + * rebased to v2.6.35-rc3 + + -- Leann Ogasawara Thu, 10 Jun 2010 16:15:22 -0700 + +linux (2.6.35-2.3) maverick; urgency=low + + [ Bryan Wu ] + + * CONFIG: enforce -- make sure we disable CONFIG_LOCALVERSION_AUTO + + [ Leann Ogasawara ] + + * [Config] armel: Enable CONFIG_BNX2=m + * [Config] ports: Enable CONFIG_BNX2X=m + * SAUCE: armel: define get_dma_ops to fix FTBS + + [ Tim Gardner ] + + * [Upstream] net: Print num_rx_queues imbalance warning only when there + are allocated queues + - LP: #591416 + + -- Leann Ogasawara Wed, 09 Jun 2010 08:27:41 -0700 + +linux (2.6.35-2.2) maverick; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i: make armel configuration versatile flavour specific + - LP: #588805 + * [Config] d-i: enable .udebs for omap flavour + - LP: #588805 + + [ Kees Cook ] + + * ptrace: limit scope to attach only (allow read) + - LP: #589656 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc2 + * [Config] update configs following rebase to v2.6.35-rc2 + * [Config] update port configs following rebase to v2.6.35-rc2 + + [ Lee Jones ] + + * Enable perf to be more helpful when perf_ does not exist. + - LP: #570500 + * 'fdr editconfig' modification. Easily skip over unwanted menuconfigs. + + [ Tim Gardner ] + + * [Config] Update bnx2 udeb firmware files + - LP: #589304 + + [ Upstream changes ] + + * rebased to v2.6.35-rc2 + + -- Leann Ogasawara Mon, 07 Jun 2010 09:45:04 -0700 + +linux (2.6.35-1.1) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601 + - LP: #587888 + * ubuntu: AUFS -- track changes to the arguements to fop fsync() + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc1 + * [Config] update configs following rebase to v2.6.35-rc1 + * [Config] update port configs following rebase to v2.6.35-rc1 + * SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: convert multicast list to list_head + * [Config] [FTBS] armel: Temporarily disable CONFIG_GPIO_JANZ_TTL + * [Config] [FTBS] ia64: Temporarily disable gpiolib + * [Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS + * [Config] [FTBS] sparc: Temporarily disable CONFIG_INFINIBAND_QIB + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_DT3155 + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MTD_NAND_DENALI + * [Config] [FTBS] armel: Temporarily disable bnx2 + * [Config] [FTBS] armel: Temporarily disable CONFIG_SERIAL_UARTLITE + * SAUCE: [FTBS] armel: Don't include asm/agp.h for ttm + * SAUCE: [FTBS] armel: include linux/dma-mapping.h + * SAUCE: [FTBS] armel: replace omap_set_gpio_debounce with + gpio_set_debounce + + [ Upstream Kernel Changes ] + + * of/usb: fix build error due to of_node pointer move + * n2_crypto: Fix build after of_device/of_platform_driver changes. + * powerpc/fsl-booke: fix the case where we are not in the first page + * powerpc/fsl-booke: Move the entry setup code into a seperate file + * powerpc/kexec: Add support for FSL-BookE + * greth: Fix build after OF device conversions. + + [ Upstream changes ] + + * rebased to v2.6.35-rc1 + + -- Leann Ogasawara Fri, 04 Jun 2010 23:01:52 -0700 + +linux (2.6.35-1.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 02 Jun 2010 15:17:41 -0700 + +linux (2.6.34-5.14) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] Added module inclusion support + * [Config] Added virtual flavour module inclusion list and d-i package + definitions + + -- Leann Ogasawara Wed, 02 Jun 2010 12:58:14 -0700 + +linux (2.6.34-5.13) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2 20091209" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-standalone.patch)" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-base.patch)" + * ubuntu: AUFS -- aufs2 base patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- aufs2 standalone patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601 + - LP: #587888 + * [Config] AUFS -- enable aufs options + - LP: #587888 + + -- Leann Ogasawara Tue, 01 Jun 2010 08:56:43 -0700 + +linux (2.6.34-5.12) maverick; urgency=low + + [ Andy Whitcroft ] + + * enforce -- ensure SYSFS compatibility is disabled + + [ Chase Douglas ] + + * build with libdw-dev for perf probe symbol support + * maverick ftrace configuration changes + + [ Kees Cook ] + + * Revert "SAUCE: x86: brk away from exec rand area" + * Revert "SAUCE: [um] Don't use nx_enabled under UML" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: x86: implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + * SAUCE: ptrace: restrict ptrace scope to children + + [ Leann Ogasawara ] + + * Add new omap flavour to getabis + * [Config] Enable CONFIG_FRAMEBUFFER_CONSOLE=y for all archs + - LP: #585490 + * build/modules: Temorarily add ignore.modules + * ubuntu: iscsitarget -- version 1.4.20.1 + + [ Loïc Minier ] + + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + -- Leann Ogasawara Fri, 28 May 2010 08:27:17 -0700 + +linux (2.6.34-4.11) maverick; urgency=low + + [ Amit Kucheria ] + + * SAUCE: omap: remove calls to usb_nop_xceiv_register from board files + * [Config] Add support for OMAP-mainline flavour + + [ Andy Whitcroft ] + + * SAUCE: powerpc: fix compile error when ptrace.h is included from + userspace + - LP: #583733 + + [ Chase Douglas ] + + * Revert "SAUCE: Don't register vga16fb framebuffer if other framebuffers + are present" + * Revert "SAUCE: Disable function tracing after hitting __schedule_bug" + * Revert "SAUCE: drm/i915: don't change DRM configuration when releasing + load detect pipe" + + [ Kees Cook ] + + * SAUCE: fs: block cross-uid sticky symlinks + * SAUCE: fs: block hardlinks to non-accessible sources + + [ Koen Kooi ] + + * SAUCE: board-omap3-beagle: add DSS2 support + + [ Leann Ogasawara ] + + * Revert "staging/go7007 -- disable" + * Revert "[Config] staging/winbond -- disable" + * Revert "Disable 4MB page tables for Atom, work around errata AAE44" + * Revert "SAUCE: sync before umount to reduce time taken by ext4 umount" + * Revert "SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit + controller" + * Revert "SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT" + * Revert "SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros" + * Revert "SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps" + * Revert "SAUCE: r8169: disable TSO by default for RTL8111/8168B + chipsets." + * Revert "[Upstream] b43: Declare all possible firmware files." + * Revert "add Breaks: against hardy lvm2" + * Revert "SAUCE: Guest OS does not recognize a lun with non zero target + id on Vmware ESX Server" + * Revert "SAUCE: Catch nonsense keycodes and silently ignore" + * [Config] Enable CONFIG_ECRYPT_FS=y for ports + * [Config] Enable CONFIG_USB=y for armel and sparc + * [Config] Enable CONFIG_SCSI=y for ia64 and sparc + * [Config] Enable CONFIG_RFKILL=y for ports + * [Config] Enable CONFIG_ATH9K_DEBUGFS=y + * [Config] Enable CONFIG_IWMC3200TOP_DEBUGFS=y + * [Config] Enable CONFIG_RCU_FAST_NO_HZ=y + * [Config] Enable CONFIG_IWLWIFI_DEVICE_TRACING=y + * [Config] Enable CONFIG_LIBERTAS_MESH=y + * [Config] Enable CONFIG_MMC_RICOH_MMC=y + * [Config] CONFIG_RT2800USB_UNKNOWN=y + * [Config] Enable CONFIG_VGA_SWITCHEROO=y + * [Config] Enable CONFIG_CEPH_FS=m + * [Config] Enable CONFIG_CRYPTO_PCRYPT=m + * [Config] Enable CONFIG_EEEPC_WMI=m + * [Config] Enable CONFIG_RT2800PCI=m + * [Config] Enable CONFIG_SCSI_HPSA=m + * [Config] Enable CONFIG_VHOST_NET=m + * [Config] Disable CONFIG_SND_HDA_INPUT_BEEP_MODE by default + - LP: #582350 + * [Config] Disable CONFIG_SOUND_OSS* and CONFIG_SND_*OSS + - LP: #579300 + * [Config] Enable CONFIG_PCIEASPM=y + - LP: #333990 + * [Config] updateconfigs for OMAP flavour + + [ Loïc Minier ] + + * Enable perf tools on armel + + [ Tim Gardner ] + + * SAUCE: Updated ndiswrapper to 1.56 + - LP: #582555 + * [Config] Added virtual flavour + * [Config] Remove support for sub-flavours + * [Config] Removed amd64 preempt flavour + * [Config] updateconfigs, updateportsconfigs after flavour munging + + -- Leann Ogasawara Tue, 25 May 2010 09:34:55 -0700 + +linux (2.6.34-3.10) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34 + + [ Upstream changes ] + + * rebased to v2.6.34 + + -- Leann Ogasawara Tue, 18 May 2010 17:35:35 -0700 + +linux (2.6.34-2.9) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] [FTBS] Disable comedi for armel + + -- Leann Ogasawara Thu, 13 May 2010 23:20:55 +0200 + +linux (2.6.34-2.8) maverick; urgency=low + + [ Leann Ogasawara ] + + * Drop lpia + * [Config] [FTBS] disable KVM + * [Config] [FTBS] disable ipr for armel + + -- Leann Ogasawara Thu, 13 May 2010 16:07:52 +0200 + +linux (2.6.34-2.7) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] disable CONFIG_SCSI_IPR on powerpc + * [Config] Remove 386 flavour per UDS discussion + + -- Leann Ogasawara Wed, 12 May 2010 18:26:43 +0200 + +linux (2.6.34-1.6) maverick; urgency=low + + [ Chase Douglas ] + + * enforce CONFIG_TMPFS_POSIX_ACL=y + - LP: #575940 + * don't force module dependency checking + - LP: #577029 + + [ Kees Cook ] + + * SAUCE: mmap_min_addr check CAP_SYS_RAWIO only for write + - LP: #568844 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ata: blacklist FUJITSU MHW2160BH PL" + * rebase to v2.6.34-rc7 + * [Config] update configs following rebase to v2.6.34-rc7 + * [Config] update port configs following rebase to v2.6.34-rc7 + * Add btrfs to the udebs + + [ Tim Gardner ] + + * [Config] Add atl1c to nic-modules udeb + - LP: #557130 + + [ Upstream changes ] + + * rebased to v2.6.34-rc7 + + -- Leann Ogasawara Tue, 11 May 2010 11:29:08 +0200 + +linux (2.6.34-1.5) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc6 + * [Config] update configs following rebase to v2.6.34-rc6 + * [Config] update port configs following rebase to v2.6.34-rc6 + + [ Upstream changes ] + + * rebased to v2.6.34-rc6 + + -- Leann Ogasawara Fri, 30 Apr 2010 15:54:05 +0100 + +linux (2.6.34-1.4) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc5 + * [Config] update ports configs following rebase to v2.6.34-rc5 + + [ Upstream changes ] + + * rebased to v2.6.34-rc5 + + -- Leann Ogasawara Thu, 22 Apr 2010 15:36:12 -0700 + +linux (2.6.34-1.3) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc4 + * [Config] update configs following rebase to v2.6.34-rc4 + * [Config] update port configs following rebase to v2.6.34-rc4 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc4 + + [ Upstream changes ] + + * rebased to v2.6.34-rc4 + + -- Leann Ogasawara Tue, 13 Apr 2010 18:33:44 -0700 + +linux (2.6.34-1.2) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Temorarily disable building linux-doc + * rebase to v2.6.34-rc3 + * [Config] update configs following rebase to v2.6.34-rc3 + * [Config] update port configs following rebase to v2.6.34-rc3 + + [ Upstream changes ] + + * rebased to v2.6.34-rc3 + + -- Leann Ogasawara Tue, 30 Mar 2010 16:55:44 -0700 + +linux (2.6.34-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc2 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc2 + * [Config] update port configs following rebase to v2.6.34-rc2 + * [Config] update configs following rebase to v2.6.34-rc2 + + [ Upstream changes ] + + * rebased to v2.6.34-rc2 + + -- Leann Ogasawara Wed, 24 Mar 2010 23:00:39 -0700 + +linux (2.6.33-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * ubuntu: dm-raid4-5 -- update to compile with 2.6.33 + * ubuntu: lirc -- drop explicit include of linux/autoconf.h + * ubuntu: lirc -- pass kfifo to kfifo_alloc and move spinlock + * ubuntu: lirc -- rename kfifo_put and kfifo_get + * ubuntu: iscsitarget -- rename daddr inet_sock field + * rebased to v2.6.33 + * [Config] update configs following rebase to v2.6.33 + * [Config] update ports configs following rebase to v2.6.33 + + [ Upstream changes ] + + * rebased to v2.6.33 + + -- Leann Ogasawara Tue, 23 Mar 2010 03:55:46 -0700 + +linux (2.6.33-0.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 17 Mar 2010 07:48:56 -0700 + +linux (2.6.32-16.25) lucid; urgency=low + + [ Andy Whitcroft ] + + * linux-tools -- move to Suggests: with explicit seeding + - LP: #534635 + + [ Tim Gardner ] + + * [Config] CONFIG_HID=m + + [ Upstream Kernel Changes ] + + * (pre-stable) sched: Fix SMT scheduler regression in + find_busiest_queue() + * KVM: introduce kvm_vcpu_on_spin + * KVM: VMX: Add support for Pause-Loop Exiting + + -- Andy Whitcroft Tue, 09 Mar 2010 14:13:51 +0000 + +linux (2.6.32-16.24) lucid; urgency=low + + [ Andy Whitcroft ] + + * armel -- perf userspace does not support arm + * ia64 -- libelf-dev/binutils-dev to not provide necessary libraries + + -- Andy Whitcroft Sat, 06 Mar 2010 11:42:12 +0000 + +linux (2.6.32-16.23) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: PM report driver and device suspend/resume times -- move config + * update to standards version 3.8.4.0 + * printenv -- expose all of the package selectors + * source package -- cleanup source content control + * doc package -- ensure we do build package content on buildd + * lintian -- correct the address in the debian/copyright + * lintian -- update debhelper package version dependancy + * lintian -- fix ghostscript dependancy + * lintian -- add required misc:Depends + * lintian -- move our debhelper compat level to debian/compat + * perf -- build the kernel carried tools + * perf -- add linux-tools carrying the version switches and manuals + * SAUCE: fix up Kconfig for staging drivers + * [Config] enable NOUVEAU etc following drm backport + * update DRM to mainline v2.6.33 + * [Config] Remove AppArmor config options that no longer exist (ports) + * [Config] updateportsconfigs following drm update + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-03-04 + * SAUCE: AppArmor: Reintroduce AppArmor 2.4 compatibility + * SAUCE: AppArmor: replace strim with strstrip for 2.6.32 kernels + * [Config] Remove AppArmor config options that no longer exist + + [ Manoj Iyer ] + + * ubuntu: rtl8192se -- version 2010-0115,0014 + - LP: #530275 + * [Config] added CONFIG_RTL8192SE module. + - LP: #530275 + + [ Tim Gardner ] + + * [Config] Added vmw_pvscsi to d-i/scsi-modules + - LP: #531017 + * [Upstream] netfilter: xt_recent: Add an entry reaper + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86 emulator: Check CPL level during privilege instruction + emulation" + * Revert "KVM: x86 emulator: Fix popf emulation" + * Revert "KVM: x86 emulator: Check IOPL level during io instruction + emulation" + * Revert "KVM: x86 emulator: Add Virtual-8086 mode of emulation" + * Revert "KVM: fix memory access during x86 emulation." + * Add vlan (8021.Q) module package for d-i. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + * [Upstream] docbook: need xmldoclinks for all doc types + * x86: set_personality_ia32() misses force_personality32 + * lib: Introduce generic list_sort function + * drm/nv50: Implement ctxprog/state generation. + * drm/nv50: Remove redundant/incorrect ctxvals initialisation. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + + -- Andy Whitcroft Fri, 05 Mar 2010 15:40:38 +0000 + +linux (2.6.32-15.22) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT" + * Revert "SAUCE: PM report driver and device suspend/resume times." + * [Config] set CONFIG_SR_REPORT_TIME_LIMIT + + [ Manoj Iyer ] + + * SAUCE: PM report driver and device suspend/resume times. + + -- Andy Whitcroft Tue, 02 Mar 2010 01:35:37 +0000 + +linux (2.6.32-15.21) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/i915: Increase fb alignment to 64k" + * Revert "[Config] lenovo-sl-laptop -- enable" + * Revert "ubuntu: lenovo-sl-laptop -- git tip (b19a08f81f)" + * armel -- cramfs module will no longer be built + * d-i -- make all modules optional + * rename the debug packages to match archive standard + - LP: #527837 + * lenovo-sl-laptop is no longer built + + [ Colin Ian King ] + + * Disable 4MB page tables for Atom, work around errata AAE44 + - LP: #523112 + + [ Colin Watson ] + + * ubuntu: dm-raid4-5: Depend on XOR_BLOCKS + * ubuntu: fsam7400: Depend on CHECK_SIGNATURE + + [ Jesse Barnes ] + + * SAUCE: drm/i915: don't change DRM configuration when releasing load + detect pipe + - LP: #488328 + + [ Loïc Minier ] + + * [Config] armel Update versatile initrd configs + - LP: #524893 + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + [ Manoj Iyer ] + + * [Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT + + [ Mario Limonciello ] + + * SAUCE: v3 - Add Dell Business Class Netbook LED driver + + [ Rafael J. Wysocki ] + + * SAUCE: PM report driver and device suspend/resume times. + + [ Surbhi Palande ] + + * Revert "[Upstream] e1000e: enhance frame fragment detection" + - CVE-2009-4538 + * Revert "[Upstream] e1000: enhance frame fragment detection" + - CVE-2009-4536 + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_LEDS_DELL_NETBOOKS=m + * SAUCE: (pre-stable) netfilter: xt_recent: fix buffer overflow + * SAUCE: (pre-stable) netfilter: xt_recent: fix false match + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) eCryptfs: Add getattr function" + * Fix potential crash with sys_move_pages + * futex_lock_pi() key refcnt fix + * futex: Handle user space corruption gracefully + * futex: Handle futex value corruption gracefully + * Fix race in tty_fasync() properly + * hwmon: (w83781d) Request I/O ports individually for probing + * hwmon: (lm78) Request I/O ports individually for probing + * hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT + * ALSA: ctxfi - fix PTP address initialization + * drm/i915: disable hotplug detect before Ironlake CRT detect + * drm/i915: enable self-refresh on 965 + * drm/i915: Disable SR when more than one pipe is enabled + * drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + * drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list + * drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop + * drm/i915: Add MALATA PC-81005 to ACPI LID quirk list + * usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers. + * i2c-tiny-usb: Fix on big-endian systems + * drm/i915: handle FBC and self-refresh better + * drm/i915: Increase fb alignment to 64k + * drm/i915: Update write_domains on active list after flush. + * regulator: Fix display of null constraints for regulators + * ALSA: hda-intel: Avoid divide by zero crash + * CPUFREQ: Fix use after free of struct powernow_k8_data + * freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb + * cciss: Make cciss_seq_show handle holes in the h->drv[] array + * ioat: fix infinite timeout checking in ioat2_quiesce + * resource: add helpers for fetching rlimits + * fs/exec.c: restrict initial stack space expansion to rlimit + * cifs: fix length calculation for converted unicode readdir names + * NFS: Fix a reference leak in nfs_wb_cancel_page() + * NFS: Try to commit unstable writes in nfs_release_page() + * NFSv4: Don't allow posix locking against servers that don't support it + * NFSv4: Ensure that the NFSv4 locking can recover from stateid errors + * NFS: Fix an Oops when truncating a file + * NFS: Fix a umount race + * NFS: Fix a bug in nfs_fscache_release_page() + * NFS: Fix the mapping of the NFSERR_SERVERFAULT error + * md: fix 'degraded' calculation when starting a reshape. + * V4L/DVB: dvb-core: fix initialization of feeds list in demux filter + * Export the symbol of getboottime and mmonotonic_to_bootbased + * kvmclock: count total_sleep_time when updating guest clock + * KVM: PIT: control word is write-only + * tpm_infineon: fix suspend/resume handler for pnp_driver + * amd64_edac: Do not falsely trigger kerneloops + * netfilter: nf_conntrack: fix memory corruption with multiple namespaces + * netfilter: nf_conntrack: per netns nf_conntrack_cachep + * netfilter: nf_conntrack: restrict runtime expect hashsize modifications + * netfilter: xtables: compat out of scope fix + * netfilter: nf_conntrack: fix hash resizing with namespaces + * drm/i915: remove full registers dump debug + * drm/i915: add i915_lp_ring_sync helper + * drm/i915: Don't wait interruptible for possible plane buffer flush + * dasd: remove strings from s390dbf + * crypto: padlock-sha - Add import/export support + * wmi: Free the allocated acpi objects through wmi_get_event_data + * dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value + * /dev/mem: introduce size_inside_page() + * devmem: check vmalloc address on kmem read/write + * devmem: fix kmem write bug on memory holes + * SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead + of value 0. + * sh: Couple kernel and user write page perm bits for CONFIG_X2TLB + * ALSA: hda - use WARN_ON_ONCE() for zero-division detection + * dst: call cond_resched() in dst_gc_task() + * ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support + * befs: fix leak + * rtc-fm3130: add missing braces + * Call flush_dcache_page after PIO data transfers in libata-sff.c + * ahci: add Acer G725 to broken suspend list + * pktgen: Fix freezing problem + * x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt + * x86/amd-iommu: Fix deassignment of a device from the pt_domain + * x86: Re-get cfg_new in case reuse/move irq_desc + * Staging: fix rtl8187se compilation errors with mac80211 + * ALSA: usb-audio - Avoid Oops after disconnect + * serial: 8250: add serial transmitter fully empty test + * sysfs: sysfs_sd_setattr set iattrs unconditionally + * class: Free the class private data in class_release + * USB: usbfs: only copy the actual data received + * USB: usbfs: properly clean up the as structure on error paths + * rtl8187: Add new device ID + * ACPI: Add NULL pointer check in acpi_bus_start + * ACPI: fix High cpu temperature with 2.6.32 + * drm/radeon/kms: use udelay for short delays + * NFS: Too many GETATTR and ACCESS calls after direct I/O + * eCryptfs: Add getattr function + * b43: Fix throughput regression + * ath9k: Fix sequence numbers for PAE frames + * mac80211: Fix probe request filtering in IBSS mode + * iwlwifi: Fix to set correct ht configuration + * dm stripe: avoid divide by zero with invalid stripe count + * dm log: userspace fix overhead_size calcuations + * Linux 2.6.32.9 + * sfc: Fix SFE4002 initialisation + * sfc: Fix sign of efx_mcdi_poll_reboot() error in efx_mcdi_poll() + * sfc: SFE4002/SFN4112F: Widen temperature and voltage tolerances + * (pre-stable) HID: handle joysticks with large number of buttons + - LP: #492056 + * (pre-stable) HID: extend mask for BUTTON usage page + - LP: #492056 + * PM: Measure device suspend and resume times + * e1000: enhance frame fragment detection + - CVE-2009-4536 + * e1000e: enhance frame fragment detection + - CVE-2009-4538 + * KVM: fix memory access during x86 emulation. + - CVE-2010-0306 + * KVM: x86 emulator: Add Virtual-8086 mode of emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check IOPL level during io instruction emulation + - CVE-2010-0306 + * KVM: x86 emulator: Fix popf emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check CPL level during privilege instruction + emulation + - CVE-2010-0306 + * Input: wacom - ensure the device is initialized properly upon resume + * Input: wacom - add defines for packet lengths of various devices + * Input: wacom - add support for new LCD tablets + - LP: #516777 + + -- Andy Whitcroft Mon, 01 Mar 2010 22:56:28 +0000 + +linux (2.6.32-14.20) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebuild following the GCC update to match compiler for out of tree modules + * Revert "[Config] drbd -- enable" + * Revert "ubuntu: drbd -- version 8.3.1" + * SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU + - LP: #510937 + + -- Andy Whitcroft Fri, 19 Feb 2010 18:47:18 +0000 + +linux (2.6.32-14.19) lucid; urgency=low + + [ Andy Whitcroft ] + + * ensure we build the source package contents when enabled + - LP: #522308 + * [Config] enable CONFIG_X86_MCE_XEON75XX + * SAUCE: AppArmor -- add linux/kref.h for struct kref + * [Config] enable CONFIG_HID_ORTEK + * enable udeb generation for arm versatile flavour + - LP: #522515 + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-02-18 + - LP: #439560, #496110, #507069 + + [ Johnathon Harris ] + + * SAUCE: HID: add support for Ortek WKB-2000 + - LP: #405390 + + [ Upstream Kernel Changes ] + + * tpm_tis: TPM_STS_DATA_EXPECT workaround + - LP: #490487 + * x86, mce: Xeon75xx specific interface to get corrected memory error + information + * x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll + * x86, mce: Make xeon75xx memory driver dependent on PCI + * drm/edid: Unify detailed block parsing between base and extension + blocks + - LP: #500999 + * (pre-stable) eCryptfs: Add getattr function + - LP: #390833 + + -- Andy Whitcroft Thu, 18 Feb 2010 19:22:02 +0000 + +linux (2.6.32-13.18) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "enforcer -- make the enforcement configuration common" + * Revert "(pre-stable) Input: ALPS - add interleaved protocol support + (Dell E6x00 series)" + * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390" + * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to + 0755" + * Revert "SAUCE: Adds support for COMPAL JHL90 webcam" + * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching" + * Revert "SAUCE: make fc transport removal of target configurable" + * enforcer -- make the enforcement configuration common + * getabis -- add preempt flavour to the list + * [Config] enforce DEVTMPFS options + * [Config] armel -- cleanup to-be builtin modules + * [Config] cleanup ports configs + * [Config] enable CRYPTO_GHASH_CLMUL_NI_INTEL + - LP: #485536 + * add printdebian target to find branch target + * distclean -- do not remove debian.env + * [Config] generic-pae switch to M586TSC + - LP: #519448 + * git-ubuntu-log -- commonise duplicated log handling + * git-ubuntu-log -- tighten up Bug: NNNN matching + * git-ubuntu-log -- sort the bug numbers + + [ Chris Wilson ] + + * (pre-stable) drm/i915: Increase fb alignment to 64k + - LP: #404064 + + [ Eric Miao ] + + * arm -- enable ubuntu/ directory + + [ Huang Ying ] + + * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation + * SAUCE: crypto: ghash-intel - Fix building failure on x86_32 + + [ Loïc Minier ] + + * [Config] cleanup preempt configuration + * [Config] versatile: Fix video output + - LP: #517594 + * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768 + * [Config] Large update to armel/versatile + * [Config] versatile: Add RTC support + * [Config] armel: Enable NEON + * [Config] versatile: Builtin MMC support + * [Config] versatile Builtin SCSI controller + * [Config] armel Disable dma_cache_sync callers + * [Config] armel Disable asm/time.h users + * [Config] armel Disable out of range udelay() + * [Config] armel Disable flush_cache_range() users + * [Config] armel -- Enable ubuntu/ drivers + + [ Steve Conklin ] + + * SAUCE: drm/i915: Add display hotplug event on Ironlake + * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake + + [ Upstream Kernel Changes ] + + * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support" + * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions + in IRQ handler"" + * clockevent: Don't remove broadcast device when cpu is dead + * clockevents: Add missing include to pacify sparse + * ACPI: don't cond_resched if irq is disabled + * be2net: Add support for next generation of BladeEngine device. + * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. + * mpt2sas: New device SAS2208 support is added + * ar9170: Add support for D-Link DWA 160 A2 + * powerpc/fsl: Add PCI device ids for new QoirQ chips + * davinci: dm646x: Add support for 3.x silicon revision + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + * Driver-Core: devtmpfs - set root directory mode to 0755 + * driver-core: fix devtmpfs crash on s390 + * vfs: get_sb_single() - do not pass options twice + * ALSA: hda - Add PCI IDs for Nvidia G2xx-series + * V4L/DVB (13569): smsusb: add autodetection support for five additional + Hauppauge USB IDs + * USB: mos7840: add device IDs for B&B electronics devices + * USB: ftdi_sio: add USB device ID's for B&B Electronics line + * V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 + SubVendor ID: 0x1043 Device ID: 0x4847) + * iTCO_wdt: Add support for Intel Ibex Peak + * atl1c:use common_task instead of reset_task and link_chg_task + * atl1e:disable NETIF_F_TSO6 for hardware limit + * V4L/DVB (13680a): DocBook/media: copy images after building HTML + * V4L/DVB (13680b): DocBook/media: create links for included sources + * netfilter: xtables: fix conntrack match v1 ipt-save output + * partitions: read whole sector with EFI GPT header + * partitions: use sector size for EFI GPT + * ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ + * sched: Fix isolcpus boot option + * sched: Fix missing sched tunable recalculation on cpu add/remove + * nohz: Prevent clocksource wrapping during idle + * nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups + * timers, init: Limit the number of per cpu calibration bootup messages + * PCI: Always set prefetchable base/limit upper32 registers + * iscsi class: modify handling of replacement timeout + * NFS: Revert default r/wsize behavior + * HID: fixup quirk for NCR devices + * scsi_devinfo: update Hitachi entries (v2) + * scsi_dh: create sysfs file, dh_state for all SCSI disk devices + * scsi_transport_fc: remove invalid BUG_ON + * lpfc: fix hang on SGI ia64 platform + * libfc: fix typo in retry check on received PRLI + * libfc: fix ddp in fc_fcp for 0 xid + * fcoe: remove redundant checking of netdev->netdev_ops + * libfc: Fix wrong scsi return status under FC_DATA_UNDRUN + * libfc: lport: fix minor documentation errors + * libfc: don't WARN_ON in lport_timeout for RESET state + * fcoe: initialize return value in fcoe_destroy + * libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data + * libfc: fix memory corruption caused by double frees and bad error + handling + * libfc: fix free of fc_rport_priv with timer pending + * libfc: remote port gets stuck in restart state without really + restarting + * fcoe, libfc: fix an libfc issue with queue ramp down in libfc + * fcoe: Fix checking san mac address + * fcoe: Fix getting san mac for VLAN interface + * qlge: Remove explicit setting of PCI Dev CTL reg. + * qlge: Set PCIE max read request size. + * qlge: Don't fail open when port is not initialized. + * qlge: Add handler for DCBX firmware event. + * qlge: Bonding fix for mode 6. + * PCI: AER: fix aer inject result in kernel oops + * DMI: allow omitting ident strings in DMI tables + * Input: i8042 - remove identification strings from DMI tables + * Input: i8042 - add Gigabyte M1022M to the noloop list + * Input: i8042 - add Dritek quirk for Acer Aspire 5610. + * ALSA: hda - select IbexPeak handler for Calpella + * ALSA: hda - Fix quirk for Maxdata obook4-1 + * ALSA: hda - Add missing Line-Out and PCM switches as slave + * iTCO_wdt.c - cleanup chipset documentation + * iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC + * iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs + * ahci: disable SNotification capability for ich8 + * ata_piix: fix MWDMA handling on PIIX3 + * md: fix small irregularity with start_ro module parameter + * V4L/DVB (13826): uvcvideo: Fix controls blacklisting + * cio: fix double free in case of probe failure + * cio: dont panic in non-fatal conditions + * netiucv: displayed TX bytes value much too high + * ipc ns: fix memory leak (idr) + * ALSA: hda - Fix HP T5735 automute + * hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog + * UBI: fix memory leak in update path + * UBI: initialise update marker + * ASoC: fix a memory-leak in wm8903 + * mac80211: check that ieee80211_set_power_mgmt only handles STA + interfaces. + * cfg80211: fix channel setting for wext + * KVM: S390: fix potential array overrun in intercept handling + * KVM: only allow one gsi per fd + * KVM: Fix race between APIC TMR and IRR + * KVM: MMU: bail out pagewalk on kvm_read_guest error + * KVM: x86: Fix host_mapping_level() + * KVM: x86: Fix probable memory leak of vcpu->arch.mce_banks + * KVM: x86: Fix leak of free lapic date in kvm_arch_vcpu_init() + * KVM: fix lock imbalance in kvm_*_irq_source_id() + * KVM: only clear irq_source_id if irqchip is present + * IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() + * x86: Reenable TSC sync check at boot, even with NONSTOP_TSC + * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C + - LP: #516325 + * iwlwifi: Fix throughput stall issue in HT mode for 5000 + * fnctl: f_modown should call write_lock_irqsave/restore + * x86, msr/cpuid: Pass the number of minors when unregistering MSR and + CPUID drivers. + * Linux 2.6.32.7 + * scsi_lib: Fix bug in completion of bidi commands + * mptsas: Fix issue with chain pools allocation on katmai + * mm: add new 'read_cache_page_gfp()' helper function + * drm/i915: Selectively enable self-reclaim + * firewire: ohci: fix crashes with TSB43AB23 on 64bit systems + * S390: fix single stepped svcs with TRACE_IRQFLAGS=y + * x86: Set hotpluggable nodes in nodes_possible_map + * x86: Remove "x86 CPU features in debugfs" (CONFIG_X86_CPU_DEBUG) + * libata: retry FS IOs even if it has failed with AC_ERR_INVALID + * zcrypt: Do not remove coprocessor for error 8/72 + * dasd: fix possible NULL pointer errors + * ACPI: Add a generic API for _OSC -v2 + * ACPI: Add platform-wide _OSC support. + * ACPI: fix OSC regression that caused aer and pciehp not to load + * ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes + * UBI: fix volume creation input checking + * e1000/e1000e: don't use small hardware rx buffers + * drm/i915: Reload hangcheck timer too for Ironlake + * Fix a leak in affs_fill_super() + * Fix failure exits in bfs_fill_super() + * fix oops in fs/9p late mount failure + * fix leak in romfs_fill_super() + * Fix remount races with symlink handling in affs + * fix affs parse_options() + * Fix failure exit in ipathfs + * mm: fix migratetype bug which slowed swapping + * FDPIC: Respect PT_GNU_STACK exec protection markings when creating + NOMMU stack + * Split 'flush_old_exec' into two functions + * sparc: TIF_ABI_PENDING bit removal + * x86: get rid of the insane TIF_ABI_PENDING bit + * Input: winbond-cir - remove dmesg spam + * x86: Disable HPET MSI on ATI SB700/SB800 + * iwlwifi: set default aggregation frame count limit to 31 + * drm/i915: only enable hotplug for detected outputs + * firewire: core: add_descriptor size check + * SECURITY: selinux, fix update_rlimit_cpu parameter + * regulator: Specify REGULATOR_CHANGE_STATUS for WM835x LED constraints + * x86: Add Dell OptiPlex 760 reboot quirk + - LP: #488319 + * x86: Add quirk for Intel DG45FC board to avoid low memory corruption + * x86/amd-iommu: Fix possible integer overflow + * clocksource: fix compilation if no GENERIC_TIME + * tcp: update the netstamp_needed counter when cloning sockets + * sky2: Fix oops in sky2_xmit_frame() after TX timeout + * net: restore ip source validation + * af_packet: Don't use skb after dev_queue_xmit() + * ax25: netrom: rose: Fix timer oopses + * KVM: allow userspace to adjust kvmclock offset + * oprofile/x86: add Xeon 7500 series support + * oprofile/x86: fix crash when profiling more than 28 events + * libata: retry link resume if necessary + * mm: percpu-vmap fix RCU list walking + * mm: purge fragmented percpu vmap blocks + * block: fix bio_add_page for non trivial merge_bvec_fn case + * Fix 'flush_old_exec()/setup_new_exec()' split + * random: drop weird m_time/a_time manipulation + * random: Remove unused inode variable + * block: fix bugs in bio-integrity mempool usage + * usb: r8a66597-hdc disable interrupts fix + * connector: Delete buggy notification code. + * be2net: Bug fix to support newer generation of BE ASIC + * be2net: Fix memset() arg ordering. + * mm: flush dcache before writing into page to avoid alias + * mac80211: fix NULL pointer dereference when ftrace is enabled + * imxfb: correct location of callbacks in suspend and resume + * mx3fb: some debug and initialisation fixes + * starfire: clean up properly if firmware loading fails + * kernel/cred.c: use kmem_cache_free + * uartlite: fix crash when using as console + * pktcdvd: removing device does not remove its sysfs dir + * ath9k: fix eeprom INI values override for 2GHz-only cards + * ath9k: fix beacon slot/buffer leak + * powerpc: TIF_ABI_PENDING bit removal + * NET: fix oops at bootime in sysctl code + * Linux 2.6.32.8 + + -- Andy Whitcroft Wed, 10 Feb 2010 18:56:52 +0000 + +linux (2.6.32-12.17) lucid; urgency=low + + [ Andy Whitcroft ] + + * restore linux-image prefix -- master + * enforce -- we require SELINUX enabled -- master + * enforce -- ensure APPARMOR is our default LSM -- master + * make doc package completely optional -- master + * make source package completely optional -- master + * make linux-libc-dev completly optional -- master + * convert package disable to a deps list -- master + * allow common headers to switch from indep to arch -- master + * convert binary package disable to a deps list -- master + * add configuration option for a full source build tree -- master + * add support for uImage kernels in package control scripts + * getabis -- cleanup and parameterise repository list -- master + * getabis -- move configuration to etc/getabi -- master + * kernelconfig -- move configuration to etc -- master + * rules -- make debian/debian.env master for branch name + * set the current branch name -- master + * pull back common debian.master files into debian -- master + * enforcer -- make the enforcement configuration common + * insert-changes -- correctly link to debian/rules in DROOT + + [ Colin Watson ] + + * future-proof ddeb handling against buildd changes + + [ Eric Miao ] + + * SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on + X86 + + [ Loïc Minier ] + + * Add modules.builtin.bin to prerm rm list + - LP: #516584 + + [ Tim Gardner ] + + * [Config] Implement the amd64 preempt flavour + + [ Upstream Kernel Changes ] + + * syslog: distinguish between /proc/kmsg and syscalls + - LP: #515623 + * sfc: Fix polling for slow MCDI operations + * sfc: Fix conditions for MDIO self-test + * sfc: QT202x: Remove unreliable MMD check at initialisation + * sfc: Add workspace for GMAC bug workaround to MCDI MAC_STATS buffer + * sfc: Use fixed-size buffers for MCDI NVRAM requests + + -- Andy Whitcroft Fri, 05 Feb 2010 07:09:31 +0000 + +linux (2.6.32-12.16) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: acpi battery -- delay first lookup of the battery until + first use" + * SAUCE: acpi battery -- move first lookup asynchronous + - LP: #507211 + * [Config] update configs to cleanup generic configs + * [Config] disable CONFIG_X86_CPU_DEBUG for amd64 + * [Config] enable USER_NS + - LP: #480739, #509808 + + [ Heiko Carstens ] + + * (pre-stable) driver-core: fix devtmpfs crash on s390 + - LP: #512370 + + [ John Johansen ] + + * [Config] for server and virtual flavours make CONFIG_SCSI_SYM53C8XX_2=y + - LP: #494565 + * [Config] VIRTIO=y for server/virtual flavours + - LP: #494565 + + [ Kay Sievers ] + + * (pre-stable) Driver-Core: devtmpfs - set root directory mode to 0755 + - LP: #512370 + + [ Kees Cook ] + + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + + [ Leann Ogasawara ] + + * [Upstream] e1000: enhance frame fragment detection + - CVE-2009-4536 + * [Upstream] e1000e: enhance frame fragment detection + - CVE-2009-4538 + + [ Sebastian Kapfer ] + + * (pre-stable) Input: ALPS - add interleaved protocol support (Dell E6x00 + series) + - LP: #296610 + + [ Upstream Kernel Changes ] + + * inotify: do not reuse watch descriptors + - LP: #485556 + * inotify: only warn once for inotify problems + * revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC + Framebuffer" + * memcg: ensure list is empty at rmdir + * drm/i915: remove loop in Ironlake interrupt handler + * block: Fix incorrect reporting of partition alignment + * x86, mce: Thermal monitoring depends on APIC being enabled + * futexes: Remove rw parameter from get_futex_key() + * page allocator: update NR_FREE_PAGES only when necessary + * x86, apic: use physical mode for IBM summit platforms + * edac: i5000_edac critical fix panic out of bounds + * x86: SGI UV: Fix mapping of MMIO registers + * mfd: WM835x GPIO direction register is not locked + * mfd: Correct WM835x ISINK ramp time defines + * ALSA: hda - Fix missing capture mixer for ALC861/660 codecs + * V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. + * reiserfs: truncate blocks not used by a write + * HID: add device IDs for new model of Apple Wireless Keyboard + * PCI/cardbus: Add a fixup hook and fix powerpc + * Input: pmouse - move Sentelic probe down the list + * asus-laptop: add Lenovo SL hotkey support + * sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK + * sparc64: Fix NMI programming when perf events are active. + * sparc64: Fix Niagara2 perf event handling. + * i2c: Do not use device name after device_unregister + * i2c/pca: Don't use *_interruptible + * serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device + * sched: Fix task priority bug + * vfs: Fix vmtruncate() regression + * Linux 2.6.32.5 + * x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers + * V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. + * Staging: asus_oled: fix oops in 2.6.32.2 + * Staging: hv: fix smp problems in the hyperv core code + * tty: fix race in tty_fasync + * ecryptfs: use after free + * ecryptfs: initialize private persistent file before dereferencing + pointer + * nozomi: quick fix for the close/close bug + * serial: 8250_pnp: use wildcard for serial Wacom tablets + * usb: serial: fix memory leak in generic driver + * USB: fix bitmask merge error + * USB: Don't use GFP_KERNEL while we cannot reset a storage device + * USB: EHCI: fix handling of unusual interrupt intervals + * USB: EHCI & UHCI: fix race between root-hub suspend and port resume + * USB: add missing delay during remote wakeup + * USB: add speed values for USB 3.0 and wireless controllers + * ACPI: EC: Accelerate query execution + * ACPI: EC: Add wait for irq storm + * SCSI: enclosure: fix oops while iterating enclosure_status array + * drm/i915: Read the response after issuing DDC bus switch command + * drm/i915: try another possible DDC bus for the SDVO device with + multiple outputs + * block: bdev_stack_limits wrapper + * DM: Fix device mapper topology stacking + * x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled + * USB: fix usbstorage for 2770:915d delivers no FAT + * vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE + * perf timechart: Use tid not pid for COMM change + * perf events: Dont report side-band events on each cpu for + per-task-per-cpu events + * perf: Honour event state for aux stream data + * Linux 2.6.32.6 + + -- Andy Whitcroft Wed, 27 Jan 2010 16:40:23 +0000 + +linux (2.6.32-11.15) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/radeon/kms: fix crtc vblank update for r600" + * Revert "(pre-stable) sched: Fix balance vs hotplug race" + * Revert "[Upstream] acerhdf: Limit modalias matching to supported + boards" + * Revert "[Upstream] mmc: prevent dangling block device from accessing + stale queues" + * Revert "SAUCE: Fix nx_enable reporting" + * Revert "SAUCE: [x86] fix report of cs-limit nx-emulation" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: i915 -- disable powersave by default + - LP: #492392 + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Tim Gardner ] + + * [Upstream] b43: Declare all possible firmware files. + - LP: #488636 + * [Config] updateconfigs after adding pvscsi + - LP: #497156 + * [Config] CONFIG_BT=m + + [ Upstream Kernel Changes ] + + * Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu + for pre-Pentium" + * SCSI: ipr: fix EEH recovery + * SCSI: qla2xxx: dpc thread can execute before scsi host has been added + * SCSI: st: fix mdata->page_order handling + * SCSI: fc class: fix fc_transport_init error handling + * sched: Fix task_hot() test order + * x86, cpuid: Add "volatile" to asm in native_cpuid() + * sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE + * clockevents: Prevent clockevent_devices list corruption on cpu hotplug + * pata_hpt3x2n: fix clock turnaround + * pata_cmd64x: fix overclocking of UDMA0-2 modes + * ASoC: wm8974: fix a wrong bit definition + * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer + * ALSA: hda - Fix missing capsrc_nids for ALC88x + * acerhdf: limit modalias matching to supported + - LP: #435958 + * ACPI: EC: Fix MSI DMI detection + * ACPI: Use the return result of ACPI lid notifier chain correctly + * powerpc: Handle VSX alignment faults correctly in little-endian mode + * ASoC: Do not write to invalid registers on the wm9712. + * drm/radeon: fix build on 64-bit with some compilers. + * USB: emi62: fix crash when trying to load EMI 6|2 firmware + * USB: option: support hi speed for modem Haier CE100 + * USB: Fix a bug on appledisplay.c regarding signedness + * USB: musb: gadget_ep0: avoid SetupEnd interrupt + * Bluetooth: Prevent ill-timed autosuspend in USB driver + * USB: rename usb_configure_device + * USB: fix bugs in usb_(de)authorize_device + * drivers/net/usb: Correct code taking the size of a pointer + * x86: SGI UV: Fix writes to led registers on remote uv hubs + * md: Fix unfortunate interaction with evms + * dma: at_hdmac: correct incompatible type for argument 1 of + 'spin_lock_bh' + * dma-debug: Do not add notifier when dma debugging is disabled. + * dma-debug: Fix bug causing build warning + * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS + referrals + * x86/amd-iommu: Fix initialization failure panic + * ioat3: fix p-disabled q-continuation + * ioat2,3: put channel hardware in known state at init + * KVM: MMU: remove prefault from invlpg handler + * KVM: LAPIC: make sure IRR bitmap is scanned after vm load + * Libertas: fix buffer overflow in lbs_get_essid() + * iwmc3200wifi: fix array out-of-boundary access + * mac80211: fix propagation of failed hardware reconfigurations + * mac80211: fix WMM AP settings application + * mac80211: Fix IBSS merge + * cfg80211: fix race between deauth and assoc response + * ath5k: fix SWI calibration interrupt storm + * ath9k: wake hardware for interface IBSS/AP/Mesh removal + * ath9k: Fix TX queue draining + * ath9k: fix missed error codes in the tx status check + * ath9k: wake hardware during AMPDU TX actions + * ath9k: fix suspend by waking device prior to stop + * ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on + 64-bit + * ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value + in 0x4054 + * iwl3945: disable power save + * iwl3945: fix panic in iwl3945 driver + * iwlwifi: fix EEPROM/OTP reading endian annotations and a bug + * iwlwifi: fix more eeprom endian bugs + * iwlwifi: fix 40MHz operation setting on cards that do not allow it + * mac80211: fix race with suspend and dynamic_ps_disable_work + * NOMMU: Optimise away the {dac_,}mmap_min_addr tests + * 'sysctl_max_map_count' should be non-negative + * kernel/sysctl.c: fix the incomplete part of + sysctl_max_map_count-should-be-non-negative.patch + * V4L/DVB (13596): ov511.c typo: lock => unlock + * x86/ptrace: make genregs[32]_get/set more robust + * memcg: avoid oom-killing innocent task in case of use_hierarchy + * e100: Fix broken cbs accounting due to missing memset. + * ipv6: reassembly: use seperate reassembly queues for conntrack and + local delivery + * netfilter: fix crashes in bridge netfilter caused by fragment jumps + * hwmon: (sht15) Off-by-one error in array index + incorrect constants + * b43: avoid PPC fault during resume + * Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture + support + * sched: Fix balance vs hotplug race + * drm/radeon/kms: fix crtc vblank update for r600 + * drm: disable all the possible outputs/crtcs before entering KMS mode + * S390: dasd: support DIAG access for read-only devices + * xen: fix is_disconnected_device/exists_disconnected_device + * xen: improvement to wait_for_devices() + * xen: wait up to 5 minutes for device connetion + * orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled + * udf: Try harder when looking for VAT inode + * Add unlocked version of inode_add_bytes() function + * quota: decouple fs reserved space from quota reservation + * ext4: Convert to generic reserved quota's space management. + * ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) + * x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus + * cpumask: use modern cpumask style in drivers/edac/amd64_edac.c + * amd64_edac: unify MCGCTL ECC switching + * x86, msr: Add support for non-contiguous cpumasks + * x86, msr: msrs_alloc/free for CONFIG_SMP=n + * amd64_edac: fix driver instance freeing + * amd64_edac: make driver loading more robust + * amd64_edac: fix forcing module load/unload + * sched: Sched_rt_periodic_timer vs cpu hotplug + * ext4: Update documentation to correct the inode_readahead_blks option + name + * lguest: fix bug in setting guest GDT entry + * vmscan: do not evict inactive pages when skipping an active list scan + * ksm: fix mlockfreed to munlocked + * rt2x00: Disable powersaving for rt61pci and rt2800pci. + * generic_permission: MAY_OPEN is not write access + * Linux 2.6.32.3 + * untangle the do_mremap() mess + * fasync: split 'fasync_helper()' into separate add/remove functions + * ASoC: fix params_rate() macro use in several codecs + * modules: Skip empty sections when exporting section notes + * exofs: simple_write_end does not mark_inode_dirty + * nfsd: make sure data is on disk before calling ->fsync + * sunrpc: fix peername failed on closed listener + * SUNRPC: Fix up an error return value in + gss_import_sec_context_kerberos() + * SUNRPC: Fix the return value in gss_import_sec_context() + * sunrpc: on successful gss error pipe write, don't return error + * drm/i915: Update LVDS connector status when receiving ACPI LID event + * drm/i915: fix order of fence release wrt flushing + * drm/i915: Permit pinning whilst the device is 'suspended' + * drm: remove address mask param for drm_pci_alloc() + * drm/i915: Enable/disable the dithering for LVDS based on VBT setting + * drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in + pipeconf on Ironlake + * drm/i915: Select the correct BPC for LVDS on Ironlake + * drm/i915: fix unused var + * rtc_cmos: convert shutdown to new pnp_driver->shutdown + * drivers/cpuidle/governors/menu.c: fix undefined reference to + `__udivdi3' + * cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() + * lib/rational.c needs module.h + * dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with + DMA_FROM_DEVICE and + * kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + * mmc_block: add dev_t initialization check + * mmc_block: fix probe error cleanup bug + * mmc_block: fix queue cleanup + * ALSA: hda - Fix ALC861-VD capture source mixer + * ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense + blacklist + * ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 + - LP: #498863 + * ASoC: Fix WM8350 DSP mode B configuration + * netfilter: ebtables: enforce CAP_NET_ADMIN + * netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() + * hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs + * hwmon: (adt7462) Fix pin 28 monitoring + * quota: Fix dquot_transfer for filesystems different from ext4 + * xen: fix hang on suspend. + * iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr + * ath5k: Fix eeprom checksum check for custom sized eeproms + * cfg80211: fix syntax error on user regulatory hints + * iwl: off by one bug + * mac80211: add missing sanity checks for action frames + * drm/i915: remove render reclock support + * libertas: Remove carrier signaling from the scan code + * kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr + * mac80211: fix skb buffering issue (and fixes to that) + * fix braindamage in audit_tree.c untag_chunk() + * fix more leaks in audit_tree.c tag_chunk() + * module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y + * ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). + * agp/intel-agp: Clear entire GTT on startup + * Linux 2.6.32.4 + * ethtool: Add reset operation + * gro: Name the GRO result enumeration type + * gro: Change all receive functions to return GRO result codes + * sfc: 10Xpress: Initialise pause advertising flags + * sfc: 10Xpress: Report support for pause frames + * sfc: Remove redundant header gmii.h + * sfc: Remove redundant hardware initialisation + * sfc: Rename Falcon-specific board code and types + * sfc: Remove boards.h, moving last remaining declaration to falcon.h + * sfc: Remove versioned bitfield macros + * sfc: Move RX data FIFO thresholds out of struct efx_nic_type + * sfc: Update hardware definitions for Siena + * sfc: Rename register I/O header and functions used by both Falcon and + Siena + * sfc: Eliminate indirect lookups of queue size constants + * sfc: Define DMA address mask explicitly in terms of descriptor field + width + * sfc: Move all TX DMA length limiting into tx.c + * sfc: Change order of device removal to reverse of probe order + * sfc: Remove declarations of nonexistent functions + * sfc: Move efx_xmit_done() declaration into correct stanza + * sfc: Move shared members of struct falcon_nic_data into struct efx_nic + * sfc: Maintain interrupt moderation values in ticks, not microseconds + * sfc: Removed kernel-doc for nonexistent member of efx_phy_operations + * sfc: Remove pointless abstraction of memory BAR number + * sfc: Remove incorrect assertion from efx_pci_remove_main() + * sfc: Remove unnecessary tests of efx->membase + * sfc: Move MTD probe after netdev registration and name allocation + * sfc: Remove unused code for non-autoneg speed/duplex switching + * sfc: Rename 'xfp' file and functions to reflect reality + * sfc: Really allow RX checksum offload to be disabled + * sfc: Feed GRO result into RX allocation policy and interrupt moderation + * sfc: Enable heuristic selection between page and skb RX buffers + * sfc: Remove pointless abstraction of memory BAR number (2) + * sfc: Remove redundant gotos from __efx_rx_packet() + * sfc: Remove ridiculously paranoid assertions + * sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() + * sfc: Record RX queue number on GRO path + * sfc: SFT9001: Reset LED configuration correctly after blinking + * sfc: Use a single blink implementation + * sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T + * sfc: Make board information explicitly Falcon-specific + * sfc: Move definition of struct falcon_nic_data into falcon.h + * sfc: Move struct falcon_board into struct falcon_nic_data + * sfc: Move all I2C stuff into struct falcon_board + * sfc: Gather link state fields in struct efx_nic into new struct + efx_link_state + * sfc: Remove unnecessary casts to struct sk_buff * + * sfc: Remove redundant efx_xmit() function + * sfc: Combine high-level header files + * sfc: Log interrupt and reset type names, not numbers + * sfc: Fix descriptor cache sizes + * sfc: Treat all MAC registers as 128-bit + * sfc: Strengthen EFX_ASSERT_RESET_SERIALISED + * sfc: Comment corrections + * sfc: Remove unused constant + * sfc: Clean up struct falcon_board and struct falcon_board_data + * sfc: Fix bugs in RX queue flushing + * sfc: Remove unused function efx_flush_queues() + * sfc: Only switch Falcon MAC clocks as necessary + * sfc: Hold MAC lock for longer in efx_init_port() + * sfc: Split MAC stats DMA initiation and completion + * sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c + * sfc: Simplify XMAC link polling + * sfc: Change MAC promiscuity and multicast hash at the same time + * sfc: Move inline comment into kernel-doc + * sfc: Do not set net_device::trans_start in self-test + * sfc: Simplify PHY polling + * sfc: QT202x: Reset before reading PHY id + * sfc: Replace MDIO spinlock with mutex + * sfc: Always start Falcon using the XMAC + * sfc: Limit some hardware workarounds to Falcon + * sfc: Remove EFX_WORKAROUND_9141 macro + * sfc: Remove another unused workaround macro + * sfc: Remove some redundant whitespace + * sfc: Decouple NIC revision number from Falcon PCI revision number + * sfc: Move descriptor cache base addresses to struct efx_nic_type + * sfc: Clean up RX event handling + * sfc: Remove redundant writes to INT_ADR_KER + * sfc: Remove duplicate hardware structure definitions + * sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO + * sfc: Move Falcon NIC operations to efx_nic_type + * sfc: Refactor link configuration + * sfc: Generalise link state monitoring + * sfc: Add power-management and wake-on-LAN support + * sfc: Implement ethtool reset operation + * sfc: Add efx_nic_type operation for register self-test + * sfc: Add efx_nic_type operation for NVRAM self-test + * sfc: Add efx_nic_type operation for identity LED control + * sfc: Separate shared NIC code from Falcon-specific and rename + accordingly + * sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() + * sfc: Extend loopback mode enumeration + * sfc: Remove static PHY data and enumerations + * sfc: Extend MTD driver for use with new NICs + * sfc: Allow for additional checksum offload features + * sfc: Rename falcon.h to nic.h + * sfc: Move shared NIC code from falcon.c to new source file nic.c + * sfc: Add firmware protocol definitions (MCDI) + * sfc: Add support for SFC9000 family (1) + * sfc: Add support for SFC9000 family (2) + * sfc: Implement TSO for TCP/IPv6 + * sfc: Update version, copyright dates, authors + * drivers/net/sfc: Correct code taking the size of a pointer + * sfc: Move PHY software state initialisation from init() into probe() + * sfc: Include XGXS in XMAC link status check except in XGMII loopback + * sfc: Fix DMA mapping cleanup in case of an error in TSO + * sfc: QT2025C: Work around PHY bug + * sfc: QT2025C: Switch into self-configure mode when not in loopback + * sfc: QT2025C: Work around PHY firmware initialisation bug + * sfc: QT2025C: Add error message for suspected bad SFP+ cables + * sfc: Disable TX descriptor prefetch watchdog + * [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. + - LP: #497156 + + -- Andy Whitcroft Tue, 19 Jan 2010 16:12:47 +0000 + +linux (2.6.32-10.14) lucid; urgency=low + + [ Alex Deucher ] + + * SAUCE: drm/radeon/kms: fix LVDS setup on r4xx + - LP: #493795 + + [ Andy Whitcroft ] + + * Revert "(pre-stable) acpi: Use the ARB_DISABLE for the CPU which model + id is less than 0x0f." + * config-check -- ensure the checks get run at build time + * config-check -- check the processed config during updateconfigs + * config-check -- CONFIG_SECCOMP may not be present + * TUN is now built in ignore + * SAUCE: acpi battery -- delay first lookup of the battery until first + use + * SAUCE: async_populate_rootfs: move rootfs init earlier + * ubuntu: AppArmor -- update to mainline 2010-01-06 + * SAUCE: move RLIMIT_CORE pipe dumper marker to 1 + - LP: #498525 + + [ Dave Airlie ] + + * (pre-stable) drm/radeon/kms: fix crtc vblank update for r600 + + [ Leann Ogasawara ] + + * Add asix to nic-usb-modules file + - LP: #499785 + + [ Peter Zijlstra ] + + * (pre-stable) sched: Fix balance vs hotplug race + + [ Tim Gardner ] + + * [Config] Enable CONFIG_FUNCTION_TRACER + - LP: #497989 + * [Config] Drop lpia from getabis + * [Config] Build in TUN/TAP driver + - LP: #499491 + * [Config] DH_COMPAT=5 + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) drm/i915: Avoid NULL dereference with + component_only tv_modes" + * Revert "(pre-stable) drm/i915: Fix sync to vblank when VGA output is + turned off" + * USB: usb-storage: fix bug in fill_inquiry + * USB: option: add pid for ZTE + * firewire: ohci: handle receive packets with a data length of zero + * rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling + of ->completed counter + * rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed + counter + * rcu: Fix note_new_gpnum() uses of ->gpnum + * rcu: Remove inline from forward-referenced functions + * perf_event: Fix invalid type in ioctl definition + * perf_event: Initialize data.period in perf_swevent_hrtimer() + * perf: Don't free perf_mmap_data until work has been done + * PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() + * sched: Check for an idle shared cache in select_task_rq_fair() + * sched: Fix affinity logic in select_task_rq_fair() + * sched: Rate-limit newidle + * sched: Fix and clean up rate-limit newidle code + * x86/amd-iommu: attach devices to pre-allocated domains early + * x86/amd-iommu: un__init iommu_setup_msi + * x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking + up the PCI tree + * x86: Fix iommu=nodac parameter handling + * x86: GART: pci-gart_64.c: Use correct length in strncmp + * x86: ASUS P4S800 reboot=bios quirk + - LP: #366682 + * x86, apic: Enable lapic nmi watchdog on AMD Family 11h + * ssb: Fix range check in sprom write + * ath5k: allow setting txpower to 0 + * ath5k: enable EEPROM checksum check + * hrtimer: Fix /proc/timer_list regression + * ALSA: hrtimer - Fix lock-up + * ALSA: hda - Terradici HDA controllers does not support 64-bit mode + * KVM: x86 emulator: limit instructions to 15 bytes + * KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c + * KVM: s390: Make psw available on all exits, not just a subset + * KVM: fix irq_source_id size verification + * KVM: x86: include pvclock MSRs in msrs_to_save + * x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage + * x86: Use -maccumulate-outgoing-args for sane mcount prologues + * x86, mce: don't restart timer if disabled + * x86/mce: Set up timer unconditionally + * x86: SGI UV: Fix BAU initialization + * x86: Fix duplicated UV BAU interrupt vector + * x86: Add new Intel CPU cache size descriptors + * x86: Fix typo in Intel CPU cache size descriptor + * pata_hpt{37x|3x2n}: fix timing register masks (take 2) + * s390: clear high-order bits of registers after sam64 + * V4L/DVB: Fix test in copy_reg_bits() + * bsdacct: fix uid/gid misreporting + * UBI: flush wl before clearing update marker + * jbd2: don't wipe the journal on a failed journal checksum + * USB: xhci: Add correct email and files to MAINTAINERS entry. + * USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again + * USB: option.c: add support for D-Link DWM-162-U5 + * USB: usbtmc: repeat usb_bulk_msg until whole message is transfered + * USB: usb-storage: add BAD_SENSE flag + * USB: Close usb_find_interface race v3 + * pxa/em-x270: fix usb hub power up/reset sequence + * hfs: fix a potential buffer overflow + * SUNRPC: IS_ERR/PTR_ERR confusion + * NFS: Fix nfs_migrate_page() + * md/bitmap: protect against bitmap removal while being updated. + * futex: Take mmap_sem for get_user_pages in fault_in_user_writeable + * devpts_get_tty() should validate inode + * debugfs: fix create mutex racy fops and private data + * Driver core: fix race in dev_driver_string + * Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN + * mac80211: Fix bug in computing crc over dynamic IEs in beacon + * mac80211: Fixed bug in mesh portal paths + * mac80211: Revert 'Use correct sign for mesh active path refresh' + * mac80211: fix scan abort sanity checks + * wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC + * rtl8187: Fix wrong rfkill switch mask for some models + * x86: Fix bogus warning in apic_noop.apic_write() + * mm: hugetlb: fix hugepage memory leak in mincore() + * mm: hugetlb: fix hugepage memory leak in walk_page_range() + * powerpc/windfarm: Add detection for second cpu pump + * powerpc/therm_adt746x: Record pwm invert bit at module load time] + * powerpc: Fix usage of 64-bit instruction in 32-bit altivec code + * drm/radeon/kms: Add quirk for HIS X1300 board + * drm/radeon/kms: handle vblanks properly with dpms on + * drm/radeon/kms: fix legacy crtc2 dpms + * drm/radeon/kms: fix vram setup on rs600 + * drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size + * drm/ttm: Fix build failure due to missing struct page + * drm/i915: Set the error code after failing to insert new offset into mm + ht. + * drm/i915: Add the missing clonemask for display port on Ironlake + * xen/xenbus: make DEVICE_ATTR()s static + * xen: re-register runstate area earlier on resume. + * xen: restore runstate_info even if !have_vcpu_info_placement + * xen: correctly restore pfn_to_mfn_list_list after resume + * xen: register timer interrupt with IRQF_TIMER + * xen: register runstate on secondary CPUs + * xen: don't call dpm_resume_noirq() with interrupts disabled. + * xen: register runstate info for boot CPU early + * xen: call clock resume notifier on all CPUs + * xen: improve error handling in do_suspend. + * xen: don't leak IRQs over suspend/resume. + * xen: use iret for return from 64b kernel to 32b usermode + * xen: explicitly create/destroy stop_machine workqueues outside + suspend/resume region. + * Xen balloon: fix totalram_pages counting. + * xen: try harder to balloon up under memory pressure. + * dm exception store: free tmp_store on persistent flag error + * dm snapshot: only take lock for statustype info not table + * dm crypt: move private iv fields to structs + * dm crypt: restructure essiv error path + * dm: avoid _hash_lock deadlock + * dm snapshot: cope with chunk size larger than origin + * dm crypt: separate essiv allocation from initialisation + * dm crypt: make wipe message also wipe essiv key + * slc90e66: fix UDMA handling + * tcp: Stalling connections: Fix timeout calculation routine + * ip_fragment: also adjust skb->truesize for packets not owned by a + socket + * b44 WOL setup: one-bit-off stack corruption kernel panic fix + * sparc64: Don't specify IRQF_SHARED for LDC interrupts. + * sparc64: Fix overly strict range type matching for PCI devices. + * sparc64: Fix stack debugging IRQ stack regression. + * sparc: Set UTS_MACHINE correctly. + * b43legacy: avoid PPC fault during resume + * tracing: Fix event format export + * ath9k: Fix TX hang poll routine + * ath9k: fix processing of TX PS null data frames + * ath9k: Fix maximum tx fifo settings for single stream devices + * ath9k: fix tx status reporting + * mac80211: Fix dynamic power save for scanning. + * drm/i915: Fix sync to vblank when VGA output is turned off + * memcg: fix memory.memsw.usage_in_bytes for root cgroup + * thinkpad-acpi: fix default brightness_mode for R50e/R51 + * thinkpad-acpi: preserve rfkill state across suspend/resume + * ipw2100: fix rebooting hang with driver loaded + * matroxfb: fix problems with display stability + * acerhdf: add new BIOS versions + * asus-laptop: change light sens default values. + * vmalloc: conditionalize build of pcpu_get_vm_areas() + * ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + * net: Fix userspace RTM_NEWLINK notifications. + * ext3: Fix data / filesystem corruption when write fails to copy data + * V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + * bcm63xx_enet: fix compilation failure after get_stats_count removal + * x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value + * drm/i915: Avoid NULL dereference with component_only tv_modes + * drm/i915: PineView only has LVDS and CRT ports + * drm/i915: Fix LVDS stability issue on Ironlake + * mm: sigbus instead of abusing oom + * ipvs: zero usvc and udest + * jffs2: Fix long-standing bug with symlink garbage collection. + * intel-iommu: Detect DMAR in hyperspace at probe time. + * intel-iommu: Apply BIOS sanity checks for interrupt remapping too. + * intel-iommu: Check for an RMRR which ends before it starts. + * intel-iommu: Fix oops with intel_iommu=igfx_off + * intel-iommu: ignore page table validation in pass through mode + * netfilter: xtables: document minimal required version + * perf_event: Fix incorrect range check on cpu number + * implement early_io{re,un}map for ia64 + * Linux 2.6.32.2 + + -- Andy Whitcroft Thu, 07 Jan 2010 15:28:43 +0000 + +linux (2.6.32-9.13) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_B43_PHY_LP + - LP: #493059 + * include modules.builtin in the binary debs + * config-check -- add a configuration enforcer + * config-check -- add a unit-test suite to the checker + * [Config] Enable CONFIG_SYN_COOKIES for versatile + * [Config] Enable CONFIG_SECURITY_SMACK for ports + * [Config] Enable CONFIG_SECURITY_FILE_CAPABILITIES for ports + * [Config] Disable CONFIG_COMPAT_BRK for ports + * getabis -- add armel versatile to the list + + [ Brad Figg ] + + * SAUCE: Increase the default prealloc buffer for HDA audio devices + (non-modem) + + [ Manoj Iyer ] + + * ubuntu: onmibook -- Added missing BOM file + + [ Tim Gardner ] + + * ubuntu: fsam7400 -- Cleanup Makefile + + [ Upstream Kernel Changes ] + + * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT" + * signal: Fix alternate signal stack check + * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects + * SCSI: osd_protocol.h: Add missing #include + * SCSI: megaraid_sas: fix 64 bit sense pointer truncation + * ext4: fix potential buffer head leak when add_dirent_to_buf() returns + ENOSPC + * ext4: avoid divide by zero when trying to mount a corrupted file system + * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails + * ext4: fix lock order problem in ext4_move_extents() + * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT + * ext4: plug a buffer_head leak in an error path of ext4_iget() + * ext4: make sure directory and symlink blocks are revoked + * ext4: fix i_flags access in ext4_da_writepages_trans_blocks() + * ext4: journal all modifications in ext4_xattr_set_handle + * ext4: don't update the superblock in ext4_statfs() + * ext4: fix uninit block bitmap initialization when s_meta_first_bg is + non-zero + * ext4: fix block validity checks so they work correctly with meta_bg + * ext4: avoid issuing unnecessary barriers + * ext4: fix error handling in ext4_ind_get_blocks() + * ext4: make trim/discard optional (and off by default) + * ext4: make "norecovery" an alias for "noload" + * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT + * ext4: initialize moved_len before calling ext4_move_extents() + * ext4: move_extent_per_page() cleanup + * jbd2: Add ENOMEM checking in and for + jbd2_journal_write_metadata_buffer() + * ext4: Return the PTR_ERR of the correct pointer in + setup_new_group_blocks() + * ext4: Avoid data / filesystem corruption when write fails to copy data + * ext4: wait for log to commit when umounting + * ext4: remove blocks from inode prealloc list on failure + * ext4: ext4_get_reserved_space() must return bytes instead of blocks + * ext4: quota macros cleanup + * ext4: fix incorrect block reservation on quota transfer. + * ext4: Wait for proper transaction commit on fsync + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) + * Linux 2.6.32.1 + * kbuild: generate modules.builtin + * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off + - LP: #494461 + * (pre-stable) drm/i915: Avoid NULL dereference with component_only + tv_modes + - LP: #494045 + + [ Zhao Yakui ] + + * (pre-stable) acpi: Use the ARB_DISABLE for the CPU which model id is + less than 0x0f. + - LP: #481765 + + -- Andy Whitcroft Thu, 17 Dec 2009 15:41:21 +0000 + +linux (2.6.32-8.12) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: AppArmor -- add linux/err.h for ERR_PTR + + -- Andy Whitcroft Sat, 12 Dec 2009 10:56:16 +0000 + +linux (2.6.32-8.11) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches + up" + * Revert "SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition." + * Revert "SAUCE: AppArmor: Fix refcounting bug causing leak of creds" + * Revert "SAUCE: AppArmor: Fix cap audit_caching preemption disabling" + * Revert "SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds" + * Revert "SAUCE: AppArmor: Fix oops after profile removal" + * Revert "SAUCE: AppArmor: AppArmor disallows truncate of deleted files." + * Revert "SAUCE: AppArmor: AppArmor fails to audit change_hat correctly" + * Revert "SAUCE: AppArmor: Policy load and replacement can fail to alloc + mem" + * Revert "SAUCE: AppArmor: AppArmor wrongly reports allow perms as + denied" + * Revert "SAUCE: AppArmor: Fix mediation of "deleted" paths" + * Revert "SAUCE: AppArmor: Fix off by 2 error in getprocattr mem + allocation" + * Revert "SAUCE: AppArmor: Set error code after structure + initialization." + * Revert "AppArmor -- fix pstrace_may_access rename" + * Revert "ubuntu: AppArmor security module" + * Revert "SAUCE: Add config option to set a default LSM" + * Revert "ubuntu: fsam7400 -- sw kill switch driver" + * Revert "[Config] fsam7400 -- enable" + * Revert "[Config] AUFS -- enable" + * Revert "ubuntu: AUFS -- aufs2-30 20090727" + * Revert "ubuntu: AUFS -- export various core functions -- fixes" + * Revert "ubuntu: AUFS -- export various core functions" + * Revert "[Config] ubuntu/iscsitarget -- disable" + * Revert "[Config] iscsitarget -- enable" + * Revert "ubuntu: iscsitarget -- SVN revision r214" + * update Vcs-Git to point to the correct repository + - LP: #493589 + * update build environment overrides to lucid + - LP: #493589 + * [Config] enable CONFIG_DEVTMPFS + * [Config] update all configs following AppArmor 2009-12-08 update + * SAUCE: isapnp_init: make isa PNP scans occur async + * [Config] fsam7400 -- enable + * [Config] omnibook -- enable + * [Config] cleanup CONFIG_AUDIT + * ubuntu: AUFS -- export various core functions (aufs2-base.patch) + * ubuntu: AUFS -- export various core functions (aufs2-standalone.patch) + * ubuntu: AUFS -- aufs2 20091209 + * [Config] AUFS -- enable + * [Config] iscsitarget -- enable + + [ Arjan van de Ven ] + + * SAUCE: KMS: cache the EDID information of the LVDS + + [ Colin Watson ] + + * bnx2: update d-i firmware filenames + - LP: #494052 + * add cdc_ether to nic-usb-modules udeb + - LP: #495060 + + [ John Johansen ] + + * ubuntu: AppArmor -- mainline 2009-10-08 + + [ Manoj Iyer ] + + * ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400 + * ubuntu: omnibook -- support Toshiba (HP) netbooks + * ubuntu: iscsitarget --- version 1.4.19 + - LP: #494693 + + [ Surbhi Palande ] + + * SAUCE: Make populate_rootfs asynchronous + + [ Tim Gardner ] + + * Parallelize flavour builds and packaging + * [Config] Enable CONFIG_KSM + + [ Upstream Kernel Changes ] + + * Config option to set a default LSM + * LSM: Add security_path_chroot(). + * LSM: Add security_path_chroot(). + * LSM: Move security_path_chmod()/security_path_chown() to after + mutex_lock(). + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + + -- Andy Whitcroft Fri, 11 Dec 2009 17:45:19 +0000 + +linux (2.6.32-7.10) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_THUMB2_KERNEL to fix arm FTBFS + + -- Andy Whitcroft Sun, 06 Dec 2009 12:56:48 +0000 + +linux (2.6.32-7.9) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: set /proc/acpi/video/*/DOS to 4 by default + - LP: #458982 + * SAUCE: ensure vga16fb loads if no other driver claims the VGA device + * [Config] update configs following versatile switch to V7 + * rebased to v2.6.32 + * [Config] update configs following rebase to v2.6.32 + * [Config] update ports configs following rebase to v2.6.32 + * SAUCE: default ATI Radeon KMS to off until userspace catches up + + [ Arjan van de Ven ] + + * SAUCE: vfs: Add a trace point in the mark_inode_dirty function + + [ Leann Ogasawara ] + + * [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable + permissions + - CVE-2009-3939 + + [ Loic Minier ] + + * SAUCE: select a v7 CPU for versatile + + [ Takashi Iwai ] + + * SAUCE: ALSA: hda - Add power on/off counter + + [ Upstream changes ] + + * rebased to v2.6.32 + + -- Andy Whitcroft Fri, 04 Dec 2009 10:44:50 +0000 + +linux (2.6.32-6.8) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable SSB devices for armel + + -- Andy Whitcroft Sat, 28 Nov 2009 12:16:40 +0000 + +linux (2.6.32-6.7) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches up" + * Revert "SAUCE: Dell XPS710 reboot quirk" + * Revert "SAUCE: Link acpi-cpufreq.o first" + * Revert "SAUCE: LPIA Logical reset of USB port on resume" + * Revert "SAUCE: LPIA Reboot fix for Intel Crownbeach development boards" + * Revert "SAUCE: Enable HDMI audio codec on Studio XPS 1340" + * Revert "SAUCE: Dell laptop digital mic does not work, PCI 1028:0271" + * Revert "Add Dell Dimension 9200 reboot quirk" + * Revert "SAUCE: Correctly blacklist Thinkpad r40e in ACPI" + * Revert "SAUCE: tulip: Define ULI PCI ID's" + * Revert "SAUCE: Lower warning level of some PCI messages" + * Revert "mac80211: fix two issues in debugfs" + Drop a number of known redundant commits as identified in the Ubuntu + delta review blueprint. + + * reenable armel versatile flavour + * [Config] disable CONFIG_USB_DEVICEFS + + [ Tim Gardner ] + + * [Config] udeb: Add squashfs to fs-core-modules + - LP: #352615 + * [Config] Create a real squashfs udeb + - LP: #352615 + + + -- Andy Whitcroft Fri, 27 Nov 2009 17:31:16 +0000 + +linux (2.6.32-5.6) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc8 + * update configs following rebase to v2.6.32-rc8 + * update ports configs since rebase to v2.6.32-rc8 + * [Config] enable cgroup options + - LP: #480739 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc8 + + -- Andy Whitcroft Mon, 23 Nov 2009 11:16:14 +0000 + +linux (2.6.32-4.5) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * rebase to v2.6.32-rc7 + * resync with Karmic proposed + + [ John Johansen ] + + * SAUCE: AppArmor: Fix oops after profile removal + - LP: #475619 + * SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds + - LP: #437258 + * SAUCE: AppArmor: Fix cap audit_caching preemption disabling + - LP: #479102 + * SAUCE: AppArmor: Fix refcounting bug causing leak of creds + - LP: #479115 + * SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition. + - LP: #480112 + + [ Ubuntu Changes ] + + * resync with Karmic proposed (ddbc670a86a3dee18541a3734149f250ff307adf) + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc7 + + -- Andy Whitcroft Fri, 13 Nov 2009 11:35:13 +0000 + +linux (2.6.32-3.4) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * [Upstream] add local prefix to oss local change_bits + + [ Upstream Kernel Changes ] + + * mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ + * mtd/maps: gpio-addr-flash: depend on GPIO arch support + + -- Andy Whitcroft Wed, 11 Nov 2009 14:47:04 +0000 + +linux (2.6.32-3.3) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc6 + * [Config] update configs following rebase to v2.6.32-rc6 + * [Config] update ports configs following rebase to v2.6.32-rc6 + * resync with Karmic Ubuntu-2.6.31-15.49 + * [Config] add module ignores for broken drivers + + [ John Johansen ] + + * SAUCE: AppArmor: AppArmor wrongly reports allow perms as denied + - LP: #453335 + * SAUCE: AppArmor: Policy load and replacement can fail to alloc mem + - LP: #458299 + * SAUCE: AppArmor: AppArmor fails to audit change_hat correctly + - LP: #462824 + * SAUCE: AppArmor: AppArmor disallows truncate of deleted files. + - LP: #451375 + + [ Kees Cook ] + + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Scott James Remnant ] + + * Revert "SAUCE: trace: add trace_event for the open() syscall" + * SAUCE: trace: add trace events for open(), exec() and uselib() + - LP: #462111 + + [ Stefan Bader ] + + * SAUCE: Fix sub-flavour script to not stop on missing directories + - LP: #453073 + + [ Ubuntu Changes ] + + * resync with Karmic Ubuntu-2.6.31-15.49 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc6 + - LP: #464552 + + -- Andy Whitcroft Tue, 10 Nov 2009 15:00:57 +0000 + +linux (2.6.32-2.2) lucid; urgency=low + + [ Andy Whitcroft ] + + * install the full changelog with the binary package + * changelog -- explicitly note rebases and clean history + * reinstate armel.mk with no flavours + - LP: #449637 + * [Upstream] block: silently error unsupported empty barriers too + - LP: #420423 + * [Config] udate configs following karmic resync + * [Config] update ports configs following karmic resync + * [Upstream] lirc -- follow removal of .id element + + [ Colin Watson ] + + * Use section 'admin' rather than 'base' + * Add more e100 firmware to nic-modules + - LP: #451872 + * Add qla1280 firmware to scsi-modules + - LP: #381037 + + [ John Johansen ] + + * SAUCE: AppArmor: Set error code after structure initialization. + - LP: #427948 + * SAUCE: AppArmor: Fix off by 2 error in getprocattr mem allocation + - LP: #446595 + * SAUCE: AppArmor: Fix mediation of "deleted" paths + + [ Kees Cook ] + + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + + [ Leann Ogasawara ] + + * SAUCE: (drop after 2.6.31) input: Add support for filtering input + events + - LP: #430809 + * SAUCE: (drop after 2.6.31) dell-laptop: Trigger rfkill updates on wifi + toggle switch press + - LP: #430809 + + [ Luke Yelavich ] + + * SAUCE: Add sr_mod to the scsi-modules udeb for powerpc + * [Config] Add sd_mod to scsi-modules udeb for powerpc + + [ Mario Limonciello ] + + * SAUCE: Update to LIRC 0.8.6 + - LP: #432678 + * SAUCE: dell-laptop: Store the HW switch status internally rather than + requerying every time + - LP: #430809 + * SAUCE: dell-laptop: Blacklist machines not supporting dell-laptop + - LP: #430809 + + [ Stefan Bader ] + + * [Upstream] acerhdf: Limit modalias matching to supported boards + - LP: #435958 + + [ Tim Gardner ] + + * [Upstream] i915: Fix i2c init message + - LP: #409361 + * [Config] Add sym53c8xx.ko to virtual sub-flavour + - LP: #439415 + * [Config] Add d101m_ucode.bin to d-i/firmware/nic-modules + - LP: #439456 + * [Config] Set default I/O scheduler back to CFQ for desktop flavours + - LP: #381300 + * SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros + - LP: #430694 + * SAUCE: Use MODULE_IMPORT macro to tie intel_agp to i915 + - LP: #430694 + * [Config] CONFIG_GFS2_FS_LOCKING_DLM=y + - LP: #416325 + * SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT + - LP: #430694 + * SAUCE: Raise the default console 'quiet' level to 2 + * [Config] CONFIG_X86_PAT=y + * [Config] Add armel arch to linux-libc-dev arches. + - LP: #449637 + * [Config] CONFIG_X86_MCE + * [Upstream] (drop after 2.6.31) Input: synaptics - add another Protege + M300 to rate blacklist + - LP: #433801 + + [ Upstream Kernel Changes ] + + * sgi-gru: Fix kernel stack buffer overrun, CVE-2009-2584 + * drm/i915: Fix FDI M/N setting according with correct color depth + - LP: #416792 + + -- Andy Whitcroft Thu, 22 Oct 2009 16:53:33 +0100 + +linux (2.6.32-1.1) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc3 + * [Config] update configs following rebase to 2.6.32-rc3 + * [Config] update ports configs following rebase to 2.6.32-rc3 + * AppArmor -- fix pstrace_may_access rename + * staging/android -- disable + * ubuntu: dm-raid-45 -- update to compile with 2.6.32 + * ubuntu: drbd -- disable + * staging/comdi -- disable + * staging/go7007 -- disable + * [Config] staging/winbond -- disable + * [Config] ubuntu/iscsitarget -- disable + * [d-i] cbc and ecb are builtin make them optional in udebs + * rebase to v2.6.32-rc5 + * [Config] update configs following rebase to v2.6.32-rc5 + * [Config] update ports configs following rebase to v2.6.31-rc5 + + [ Tim Gardner ] + + * [Config] Add cpio as a build dependency. + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc3 + * rebase to v2.6.32-rc5 + + -- Andy Whitcroft Mon, 05 Oct 2009 15:48:58 +0100 + +linux (2.6.31-11.37) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Increase kernel log buffer to 256K for amd64 flavours + - LP: #424810 + * [Config] Set HZ=100 for amd64 flavours + - LP: #438234 + * [Upstream] e1000e: Emit notice instead of an error when + pci_enable_pcie_error_reporting() fails + - LP: #436370 + + [ Upstream Kernel Changes ] + + * n_tty: honor opost flag for echoes + * n_tty: move echoctl check and clean up logic + - LP: #438310 + + * Revert "[Upstream] drm/i915: Check that the relocation points to within + the target" - Use upstream cherry-pick. + * drm/i915: Check that the relocation points to within the target + - LP: #429241 + + * drm/i915: fix tiling on IGDNG + * drm/i915: add B43 chipset support + * agp/intel: Add B43 chipset support + Intel request from kernel team mailing list. + + * HID: completely remove apple mightymouse from blacklist + - LP: #428111 + + -- Tim Gardner Mon, 28 Sep 2009 11:47:29 -0600 + +linux (2.6.31-11.36) karmic; urgency=low + + [ Brian Rogers ] + + * SAUCE: (drop after 2.6.31) em28xx: ir-kbd-i2c init data needs a + persistent object + * SAUCE: (drop after 2.6.31) saa7134: ir-kbd-i2c init data needs a + persistent object + + [ Takashi Iwai ] + + * [Upstream] ALSA: hda - Add another entry for Nvidia HDMI device + - LP: #416482 + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.31) eCryptfs: Prevent lower dentry from going + negative during unlink + + [ Upstream Kernel Changes ] + + * sg: fix oops in the error path in sg_build_indirect() + * mpt2sas : Rescan topology from Interrupt context instead of work thread + * mpt2sas: Prevent sending command to FW while Host Reset + * mpt2sas: setting SDEV into RUNNING state from Interrupt context + * mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg + * SCSI: fix oops during scsi scanning + * SCSI: libsrp: fix memory leak in srp_ring_free() + * cfg80211: fix looping soft lockup in find_ie() + * ath5k: write PCU registers on initial reset + * binfmt_elf: fix PT_INTERP bss handling + * TPM: Fixup boot probe timeout for tpm_tis driver + * md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! + * x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices + * fix undefined reference to user_shm_unlock + * perf_counter: Fix buffer overflow in perf_copy_attr() + * perf_counter: Start counting time enabled when group leader gets + enabled + * powerpc/perf_counters: Reduce stack usage of power_check_constraints + * powerpc: Fix bug where perf_counters breaks oprofile + * powerpc/ps3: Workaround for flash memory I/O error + * block: don't assume device has a request list backing in nr_requests + store + * agp/intel: remove restore in resume + * ALSA: cs46xx - Fix minimum period size + * ASoC: Fix WM835x Out4 capture enumeration + * sound: oxygen: work around MCE when changing volume + * mlx4_core: Allocate and map sufficient ICM memory for EQ context + * perf stat: Change noise calculation to use stddev + * x86: Fix x86_model test in es7000_apic_is_cluster() + * x86/i386: Make sure stack-protector segment base is cache aligned + * PCI: apply nv_msi_ht_cap_quirk on resume too + * x86, pat: Fix cacheflush address in change_page_attr_set_clr() + * ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() + with highmem + * KVM guest: do not batch pte updates from interrupt context + * KVM: Fix coalesced interrupt reporting in IOAPIC + * KVM: VMX: Check cpl before emulating debug register access + * KVM guest: fix bogus wallclock physical address calculation + * KVM: x86: Disallow hypercalls for guest callers in rings > 0 + * KVM: VMX: Fix cr8 exiting control clobbering by EPT + * KVM: x86 emulator: Implement zero-extended immediate decoding + * KVM: MMU: make __kvm_mmu_free_some_pages handle empty list + * KVM: x86 emulator: fix jmp far decoding (opcode 0xea) + * KVM: limit lapic periodic timer frequency + * libata: fix off-by-one error in ata_tf_read_block() + * PCI quirk: update 82576 device ids in SR-IOV quirks list + * PCI: Unhide the SMBus on the Compaq Evo D510 USDT + * powerpc/pseries: Fix to handle slb resize across migration + * Linux 2.6.31.1 + + -- Tim Gardner Thu, 24 Sep 2009 13:04:28 -0600 + +linux (2.6.31-10.35) karmic; urgency=low + + [ Amit Kucheria ] + + * Disable CONFIG_UEVENT_HELPER_PATH + + [ Andy Whitcroft ] + + * [Config] Enable CONFIG_USB_GADGET_DUMMY_HCD + * remove the tlsup driver + * remove lmpcm logitech driver support + + [ Bryan Wu ] + + * Add 3 missing files to prerm remove file list + - LP: #345623, #415832 + + [ Chris Wilson ] + + * [Upstream] drm/i915: Check that the relocation points to within the + target + - LP: #429241 + + [ Luke Yelavich ] + + * [Config] Set CONFIG_EXT4_FS=y on ports architectures + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Tim Gardner ] + + * Revert "[Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) white-list" + Upstream suggests that this is not the right approach. + + * [Config] Set default I/O scheduler to DEADLINE + CFQ seems to have some load related problems which are often exacerbated by sreadahead. + - LP: #381300 + + [ ubuntu@tjworld.net ] + + * SAUCE: ipw2200: Enable LED by default + - LP: #21367 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Add support for new AMD HD audio devices + - LP: #430564 + + -- Andy Whitcroft Wed, 16 Sep 2009 15:37:49 +0100 + +linux (2.6.31-10.34) karmic; urgency=low + + [ Ted Tso ] + + * [Upstream] ext3: Don't update superblock write time when filesystem is + read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 16:00:45 -0600 + +linux (2.6.31-10.33) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] dvb-usb: fix tuning with Cinergy T2 + - LP: #421258 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + (really, really fix it this time) + - LP: #423426 + * [Config] Set CONFIG_CACHEFILES=m for all flavours + + [ Upstream Kernel Changes ] + + * ext4: Don't update superblock write time when filesystem is read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 07:50:21 -0600 + +linux (2.6.31-10.32) karmic; urgency=low + + [ Eric Miao ] + + * [Config] enable module support for memory stick + - LP: #159951 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + - LP: #423426 + + -- Tim Gardner Thu, 10 Sep 2009 15:57:55 -0600 + +linux (2.6.31-10.31) karmic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.31 final + + [ Colin Watson ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + + [ Ike Panhc ] + + * [Upstream] Pull latest update of lenovo-sl-laptop + + [ Peter Feuerer ] + + * [Upstream] (drop after 2.6.31) acerhdf: fix fan control for AOA150 + model + - LP: #426691 + + [ Tim Gardner ] + + * [Config] De-macro some package names. + + [ Upstream Changes ] + + * rebase to 2.6.31 final. + + -- Andy Whitcroft Thu, 10 Sep 2009 09:38:10 +0100 + +linux (2.6.31-10.30) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Enable CONFIG_USB_DEVICEFS + - LP: #417748 + * [Config] Populate the config-update template a bit more + + [ Andy Whitcroft ] + + * rebase to v2.6.31-rc9 + * [Config] update configs following rebase to v2.6.31-rc9 + * [Config] update ports configs following rebase to v2.6.31-rc9 + + [ Colin Ian King ] + + * SAUCE: wireless: hostap, fix oops due to early probing interrupt + - LP: #254837 + + [ Jerone Young ] + + * [Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) + white-list + - LP: #281732 + + [ John Johansen ] + + * SAUCE: AppArmor: Fix profile attachment for regexp based profile names + - LP: #419308 + * SAUCE: AppArmor: Return the correct error codes on profile + addition/removal + - LP: #408473 + * SAUCE: AppArmor: Fix OOPS in profile listing, and display full list + - LP: #408454 + * SAUCE: AppArmor: Fix mapping of pux to new internal permission format + - LP: #419222 + * SAUCE: AppArmor: Fix change_profile failure + - LP: #401931 + * SAUCE: AppArmor: Tell git to ignore generated include files + - LP: #419505 + + [ Stefan Bader ] + + * [Upstream] acpi: video: Loosen strictness of video bus detection code + - LP: #333386 + * SAUCE: Remove ov511 driver from ubuntu subdirectory + + [ Tim Gardner ] + + * [Config] Exclude char-modules from non-x86 udeb creation + * SAUCE: Notify the ACPI call chain of AC events + * [Config] CONFIG_SATA_VIA=m + - LP: #403385 + * [Config] Build in all phylib support modules. + * [Config] Don't fail when sub-flavour files are missing + - LP: #423426 + * [Config] Set CONFIG_LSM_MMAP_MIN_ADDR=0 + - LP: #423513 + + [ Upstream ] + + * Rebased against v2.6.31-rc9 + + -- Andy Whitcroft Mon, 07 Sep 2009 11:33:45 +0100 + +linux (2.6.31-9.29) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] agp/intel: support for new chip variant of IGDNG mobile + - LP: #419993 + * [Config] d-i/modules: Add new char-modules file, initialize with + intel-agp + - LP: #420605 + + [ Upstream ] + + * Rebased against 2.6.31-rc8 plus some inotify regression patches: + up through git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git + adda766193ea1cf3137484a9521972d080d0b7af. + + -- Tim Gardner Fri, 28 Aug 2009 06:31:30 -0600 + +linux (2.6.31-8.28) karmic; urgency=low + + [ Ike Panhc ] + + * [Config] Let nic-shared-modules depends on crypto-modules + - LP: #360966 + + [ Leann Ogasawara ] + + * [Upstream] (drop after 2.6.31) drm/i915: increase default latency + constant + - LP: #412492 + + [ Mario Limonciello ] + + * [Upstream]: (drop after 2.6.31) dell-laptop: don't change softblock + status if HW switch is disabled + - LP: #418721 + * [Upstream]: (drop after 2.6.31) compal-laptop: Add support for known + Compal made Dell laptops + * [Upstream]: (drop after 2.6.31) compal-laptop: Replace sysfs support + with rfkill support + + [ Tim Gardner ] + + * [Config] Add acpiphp to virtual sub-flavour + - LP: #364916 + * Drop KSM patch set for now because of instabilities with encrypted swap. + - LP: #418781 + + -- Tim Gardner Wed, 26 Aug 2009 08:14:26 -0600 + +linux (2.6.31-7.27) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] updateconfigs updateportsconfigs after 2.6.31-rc7 rebase + * SAUCE: (drop after 2.6.31) Added KSM from mmotm-2009-08-20-19-18 + Replaces previous ksm patches from 2.6.31-6.25 + * [Config] KSM=y + + [ Upstream ] + + * Rebased against v2.6.31-rc7 + + -- Tim Gardner Sat, 22 Aug 2009 20:32:11 -0600 + +linux (2.6.31-6.26) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_BR_RAMFS + - LP: #414738 + * split out debian directory ready for abstraction + * add printdebian target to find branch target + * abstracted debian -- debian/files is not abstracted + * abstracted debian -- packages must be built in debian/ + * abstracted debian -- kernel-wedge needs to work in debian/ + * abstracted debian -- ensure we install the copyright file + * abstracted-debian -- drop the debian directories from headers + * abstracted-debian -- drop the debian directories from headers part 2 + * SAUCE: ubuntu-insert-changes -- follow abstracted debian + * [Upstream] aoe: ensure we initialise the request_queue correctly V2 + - LP: #410198 + + [ Luke Yelavich ] + + * [Config] Ports: Disable CONFIG_CPU_FREQ_DEBUG on powerpc-smp + * [Config] Ports: Re-enable windfarm modules on powerpc64-smp + - LP: #413150 + * [Config] Ports: Build all cpu frequency scaling governors into ports + kernels + * [Config] Ports: Build ext2 and ext3 modules into ports kernels + * [Config] Ports: CONFIG_PACKET=y for all ports kernels + * [Config] Ports: Enable PS3 network driver + + [ Stefan Bader ] + + * abstracted debian -- call $(DEBIAN)/rules using make + + [ Tim Gardner ] + + * [Config] Abstract the debian directory + * SAUCE: Improve error reporting in postinst + - LP: #358564 + + -- Tim Gardner Sun, 16 Aug 2009 20:33:28 -0600 + +linux (2.6.31-6.25) karmic; urgency=low + + [ Andy Whitcroft ] + + * script to generate Ubuntu changes from changelog + * [Config] standardise ANDROID options + * [Config] standardise CONFIG_ATM as module + * [Config] standardise CONFIG_LIB80211 as module + * [Config] disable CONFIG_PRINT_QUOTA_WARNING + * [Config] set CONFIG_CRAMFS as module + * [Config] enable CONFIG_DAB and modules + * [Config] set CONFIG_MAC80211_HWSIM as module + * [Config] set CONFIG_NET_CLS_FLOW as module + * [Config] set CONFIG_NF_CONNTRACK_SANE as module + * [Config] set CONFIG_NF_CT_PROTO_DCCP as module + * [Config] set CONFIG_RTC_DRV_DS1511 as module + * [Config] set CONFIG_RTC_DRV_R9701 as module + * [Config] set CONFIG_RTC_DRV_S35390A as module + * [Config] set CONFIG_TOIM3232_DONGLE as module + * [Config] standardise CONFIG_USB_MIDI_GADGET as module + * [Config] standardise CONFIG_USB_G_PRINTER as module + * [Config] standardise CONFIG_USB_SERIAL_IR as module + * [Config] set CONFIG_USB_SERIAL_IUU as module + * [Config] standardise CONFIG_USB_STORAGE_CYPRESS_ATACB as module + * [Config] standardise CONFIG_USB_STORAGE_ONETOUCH as module + * cleanup remains of dm-loop + * drop thinkpad ec and smapi support + * drop appleir + * [Config] update configs following rebase to v2.6.31-rc6 + * rebase to v2.6.31-rc6 + + [ Hugh Dickins ] + + * SAUCE: ksm patch 1, drop after 2.6.31 + * SAUCE: ksm patch 2, drop after 2.6.31 + * SAUCE: ksm patch 3, drop after 2.6.31 + * SAUCE: ksm patch 4, drop after 2.6.31 + * SAUCE: ksm patch 5, drop after 2.6.31 + * SAUCE: ksm patch 7, drop after 2.6.31 + + [ Izik Eidus ] + + * SAUCE: ksm patch 0, drop after 2.6.31 + * SAUCE: ksm patch 6, drop after 2.6.31 + * SAUCE: ksm patch 8, drop after 2.6.31 + * SAUCE: ksm patch 9, drop after 2.6.31 + + [ Luke Yelavich ] + + * [Config] Ports: Re-add PS3 modules to udebs + + [ Michael Casadevall ] + + * [Config] Update SPARC config and d-i files to reflect what can be built + + [ Tim Gardner ] + + * [Config] Removed armel package support + * [Config] Enabled CONFIG_KSM=y + + [ Upstream Kernel Changes ] + + * Rebased against v2.6.31-rc6 + * ARM: Cleanup: Revert "ARM: Add more cache memory types macros" + * ARM: Cleanup: Revert "Do not use OOB with MLC NAND" + * ARM: Cleanup: Revert "ARM: Make ARM arch aware of ubuntu/ drivers" + * ARM: Cleanup: Revert "ARM: IMX51: Make video capture drivers compile" + * ARM: Cleanup: Revert "ARM: IMX51: Fix isl29003 HWMON driver for i2c + changes" + * ARM: Cleanup: Revert "ARM: IMX51: IPU irq handler deadlock fix" + * ARM: Cleanup: Revert "ARM: IMX51: Babbage 2.5 needs a different system + revision" + * ARM: Cleanup: Revert "ARM: IMX51: Compile-in the IMX51 cpufreq driver + by default" + * ARM: Cleanup: Revert "ARM: IMX51: Enable ZONE_DMA for ARCH_MXC" + * ARM: Cleanup: Revert "ARM: IMX51: Make ARCH_MXC auto-enable + ARCH_MXC_CANONICAL" + * ARM: Cleanup: Revert "ARM: IMX51: Unconditionally disable + CONFIG_GPIOLIB" + * ARM: Cleanup: Revert "ARM: IMX51: Minimal changes for USB to work on + 2.6.31" + * ARM: Cleanup: Revert "ARM: IMX51: Fix plat-mxc/timer.c to handle imx51" + * ARM: Cleanup: Revert "ARM: IMX51: Make it compile." + * ARM: Cleanup: Revert "ARM: IMX51: Clean-up the craziness of including + mxc_uart.h _everywhere_" + * ARM: Cleanup: Revert "ARM: IMX51: Move board-mx51* header files to the + correct location" + * ARM: Cleanup: Revert "ARM: IMX51: Changed from snd_card_new to + snd_card_create" + * ARM: Cleanup: Revert "ARM: IMX51: Fix up merge error in Kconfig" + * ARM: Cleanup: Revert "ARM: IMX51: mxc_timer_init prototype" + * ARM: Cleanup: Revert "ARM: IMX51: Removed the mxc_gpio_port structure." + * ARM: Cleanup: Revert "ARM: IMX51: Added external declaration for + mxc_map_io." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: snd_soc_machine structure replaced + with snd_soc_card." + * ARM: Cleanup: Revert "ARM: IMX51: codec structure was moved to the card + structure" + * ARM: Cleanup: Revert "ARM: IMX51: Hack to add defines for + DMA_MODE_READ/WRITE/MASK" + * ARM: Cleanup: Revert "ARM: IMX51: Add SoC and board support for + Freescale mx51 platform" + * Driver core: add new device to bus's list before probing + * [Upstream] (drop after 2.6.31) ALSA: hda - Reduce click noise at + power-saving + - LP: #381693, #399750, #380892 + + -- Andy Whitcroft Fri, 14 Aug 2009 11:32:23 +0100 + +linux (2.6.31-5.24) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Make video capture drivers compile + * [Config] IMX51: Config updates + + [ Andy Whitcroft ] + + * remove leftovers of dm-bbr + + [ Leann Ogasawara ] + + * Add pata_cs5535 to pata-modules + - LP: #318805 + + [ Luke Yelavich ] + + * [Config] CONFIG_PPC64=y for powerpc64-smp + * [Config] Set the maximum number of CPUs to 1024 for powerpc64-smp + * [Config] CONFIG_PPC_PS3=y for powerpc64-smp + * [Config] CONFIG_PPC_MAPLE=y on powerpc64-smp + * [Config] CONFIG_PPC_PASEMI=y on powerpc64-smp + * [Config] CONFIG_CPU_FREQ_PMAC64=y on powerpc64-smp + * [Config] Enable all PS3 drivers in powerpc64-smp + + [ Mario Limonciello ] + + * LIRC -- fix lirc-i2c 2.6.31 compilation + + [ Matthew Garrett ] + + * [Upstream] dell-laptop: Fix rfkill state queries + + [ Tim Gardner ] + + * [Config] Ignore armel ABI and module changes + * [Config] Update configs after rebase against 2.6.31-rc5 + + [ Upstream ] + + * Rebased to 2.6.31-rc5 + + -- Andy Whitcroft Tue, 28 Jul 2009 10:10:09 +0100 + +linux (2.6.31-4.23) karmic; urgency=low + + [ Andy Whitcroft ] + + * AUFS -- update to aufs2-30 20090727 + * [Config] enable AUFS FUSE support + + [ Luke Yelavich ] + + * [Config] CONFIG_JFS_FS=m on sparc + + [ Tim Gardner ] + + * [Upstream] dell-laptop: Fix rfkill state setting. + + -- Andy Whitcroft Mon, 27 Jul 2009 11:11:47 +0100 + +linux (2.6.31-4.22) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Add SoC and board support for Freescale mx51 platform + * ARM: IMX51: Move board-mx51* header files to the correct location + * ARM: IMX51: Clean-up the craziness of including mxc_uart.h _everywhere_ + * ARM: IMX51: Make it compile. + * ARM: IMX51: Unconditionally disable CONFIG_GPIOLIB + * ARM: IMX51: Make ARCH_MXC auto-enable ARCH_MXC_CANONICAL + * ARM: IMX51: Enable ZONE_DMA for ARCH_MXC + * ARM: IMX51: Compile-in the IMX51 cpufreq driver by default + * ARM: IMX51: Fix isl29003 HWMON driver for i2c changes + * ARM: USB: musb: Refer to musb_otg_timer_func under correct #ifdef + * ARM: staging: udlfb: Add vmalloc.h include + * UBUNTU [Config]: Bring imx51 config upto date with other flavours + + [ Brad Figg ] + + * ARM: IMX51: Hack to add defines for DMA_MODE_READ/WRITE/MASK + * ARM: IMX51: codec structure was moved to the card structure + * ARM: IMX51: snd_soc_machine structure replaced with snd_soc_card. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Added external declaration for mxc_map_io. + * ARM: IMX51: Removed the mxc_gpio_port structure. + * ARM: IMX51: mxc_timer_init prototype + * ARM: IMX51: Fix up merge error in Kconfig + * ARM: IMX51: Changed from snd_card_new to snd_card_create + + [ Dinh Nguyen ] + + * ARM: IMX51: Fix plat-mxc/timer.c to handle imx51 + * ARM: IMX51: Minimal changes for USB to work on 2.6.31 + * ARM: IMX51: Babbage 2.5 needs a different system revision + * ARM: IMX51: IPU irq handler deadlock fix + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_CAN=m + - LP: #327243 + * [Config] Enabled CONFIG_SERIAL=m + - LP: #397189 + + -- Tim Gardner Fri, 24 Jul 2009 06:19:10 -0600 + +linux (2.6.31-4.21) karmic; urgency=low + + [ Amit Kucheria ] + + * dm-raid-4-5: Add missing brackets around test_bit() + + [ John Johansen ] + + * AppArmor: Fix change_profile failing lpn401931 + * AppArmor: Fix determination of forced AUDIT messages. + * AppArmor: Fix oops in auditing of the policy interface offset + + -- Andy Whitcroft Thu, 23 Jul 2009 19:18:30 +0100 + +linux (2.6.31-4.20) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: iscsitarget -- update to SVN revision r214 + * SAUCE: iscsitarget -- renable driver + * [Config] consolidate lpia/lpia and i386/generic configs + * [Config] enable CRYPTO modules for all architectures + * [Config] enable cryptoloop + * [Config] enable various filesystems for armel + * [Config] sync i386 generic and generic-pae + * [Config] add the 386 (486 processors and above) flavour + * [Config] re-set DEFAULT_MMAP_MIN_ADDR + - LP: #399914 + * add genconfigs/genportsconfigs to extract the built configs + * updateconfigs -- alter concatenation order allow easier updates + * intelfb -- INTELFB now conflicts with DRM_I915 + * printchanges -- rebase tree does not have stable tags use changelog + * AppArmor: fix argument size missmatch on 64 bit builds + + [ Ike Panhc ] + + * Ship bnx2x firmware in nic-modules udeb + - LP: #360966 + + [ Jeff Mahoney ] + + * AppArmor: fix build failure on ia64 + + [ John Johansen ] + + * AppArmour: ensure apparmor enabled parmater is off if AppArmor fails to + initialize. + * AppArmour: fix auditing of domain transitions to include target profile + information + * AppArmor: fix C99 violation + * AppArmor: revert reporting of create to write permission. + * SAUCE: Add config option to set a default LSM + * [Config] enable AppArmor by default + * AppArmor: Fix NULL pointer dereference oops in profile attachment. + + [ Keith Packard ] + + * SAUCE: drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class + hardware + - LP: #351756 + + [ Luke Yelavich ] + + * [Config] add .o files found in arch/powerpc/lib to all powerpc kernel + header packages + - LP: #355344 + + [ Michael Casadevall ] + + * [Config] update SPARC config files to allow success build + + [ Scott James Remnant ] + + * SAUCE: trace: add trace_event for the open() syscall + + [ Stefan Bader ] + + * SAUCE: jfs: Fix early release of acl in jfs_get_acl + - LP: #396780 + + [ Tim Gardner ] + + * [Upstream] Fix Soltech TA12 volume hotkeys not sending key release + - LP: #397499 + * [Upstream] USB Option driver - Add USB ID for Novatel MC727/U727/USB727 + refresh + - LP: #365291 + * [Config] SSB/B44 are common across all arches/flavours. + + [ Upstream ] + + * Rebased to 2.6.31-rc4 + + -- Andy Whitcroft Thu, 23 Jul 2009 08:41:39 +0100 + +linux (2.6.31-3.19) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Disabled NDISWRAPPER" + * ndiswrapper -- fix i386 compilation failures on cmpxchg8b + * AUFS -- export various core functions + * AUFS -- export various core functions -- fixes + * AUFS -- core filesystem + * AUFS -- track changes in v2.6.31 + * [Config] Enable AUFS + * droppped 'iwl3945: do not send scan command if channel count zero' as it + is already upstream but failed to auto-drop on rebase. + + [ Eric Paris ] + + * SAUCE: fsnotify: use def_bool in kconfig instead of letting the user + choose + * SAUCE: inotify: check filename before dropping repeat events + * SAUCE: fsnotify: fix inotify tail drop check with path entries + + -- Andy Whitcroft Tue, 14 Jul 2009 12:52:55 +0100 + +linux (2.6.31-3.18) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Add splice-2.6.23.patch from AUFS to export a symbol needed by + AUFS" + * Revert "Add put_filp.patch from AUFS to export a symbol needed by AUFS" + * Revert "Add sec_perm-2.6.24.patch from AUFS - export + security_inode_permission" + * clear out left over AUFS files and modifications + + [ Luke Yelavich ] + + * [Config] Enable CONFIG_USB_ISP116X_HCD on sparc + * SAUCE: Explicitly include header files to allow apparmor to build on + powerpc + * [Config] Enable CONFIG_BLK_DEV_IDECD on powerpc + + [ Tim Gardner ] + + * [Config] Dropped ubuntu/misc/wireless/acx + * [Config] Disabled NDISWRAPPER until the compile issues are fixed. + + [ Upstream ] + + * Rebased to 2.6.31-rc3 + + -- Andy Whitcroft Fri, 10 Jul 2009 18:59:33 +0100 + +linux (2.6.31-2.17) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_BLK_DEV_CRYPTOLOOP=m for sparc + * compcache -- remove redundant Kconfig entries part 2 + * compcache -- clean up CCFLAGS declarations + * [Config] enable AppArmor + * AppArmor: fix operator precidence issue in as_path_link + + [ John Johansen ] + + * AppArmor security module + * AppArmor: Correct mapping of file permissions. + * AppArmor: Turn auditing of ptrace on + + [ Luke Yelavich ] + + * [Config] disable CONFIG_DM_RAID45 on powerpc + + -- Andy Whitcroft Fri, 10 Jul 2009 15:02:05 +0100 + +linux (2.6.31-2.16) karmic; urgency=low + + [ Andy Whitcroft ] + + * compcache -- remove redundant Kconfig entries + added ignore and ignore.modules for all arches since the compcache update + changes the modules names as well as some compcache ABI values. + + [ Manoj Iyer ] + + * SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3) + * SAUCE: update compcache version to 0.5.3 + + [ Tim Gardner ] + + * [Config]: Fix sparc FTBS by adding ignore.modules + + -- Tim Gardner Mon, 06 Jul 2009 13:35:29 -0600 + +linux (2.6.31-2.15) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: default ATI Radeon KMS to off until userspace catches up + * [Config] Update configs following rebase to 2.6.31-rc2 + * [Config] update ports configs following update to 2.6.31-rc2 + + [ Luke Yelavich ] + + * [Config] powerpc - Disable CONFIG_RDS + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + [ Upstream Kernel Changes ] + + * rebased to mainline 2.6.31-rc2 + + -- Andy Whitcroft Sat, 04 Jul 2009 17:39:13 +0100 + +linux (2.6.31-1.14) karmic; urgency=low + + [ Andy Whitcroft ] + + * update ndiswrapper to 1.55 + * remove leftovers of gfs + * [Config] powerpc: enable CONFIG_PPC_DISABLE_WERROR + + [ Luke Yelavich ] + + * [Config] re-enable and build the ide-pmac driver into powerpc kernels + * [Config] Build the ServerWorks Frodo / Apple K2 SATA driver into the + kernel + + [ Manoj Iyer ] + + * Remove snd-bt-sco ubuntu driver + + [ Michael Casadevall ] + + * [Config] updates ia64 config and d-i folders to allow succesful build + * [Config] Update powerpc and sparc for 2.6.31 + + [ Upstream Kernel Changes ] + + * intel-iommu: fix Identity Mapping to be arch independent + - LP: #384695 + * ACPI: video: prevent NULL deref in acpi_get_pci_dev() + + -- Andy Whitcroft Tue, 30 Jun 2009 17:47:32 +0100 + +linux (2.6.31-1.13) karmic; urgency=low + + [ Andy Whitcroft ] + + * REBASE: rebased to mainline 2.6.31-rc1 + - "UBUNTU: SAUCE: UHCI USB quirk for resume" + no longer applies, using deprecated interfaces, LPIA only, dropped + - "UBUNTU: SAUCE: Mask off garbage in Dell WMI scan code data" + changes now upstream, dropped + * [Config] Update configs following rebase to 2.6.31-rc1 + * [Config] update ports configs following update to 2.6.31-rc1 + + * [Config] disable broken staging driver CONFIG_STLC45XX + * SAUCE: fix compcache to use updates accessors + * [Config] disable staging driver CONFIG_VT6655 + * SAUCE: fix DRDB to use updates accessors + * [Disable] ndiswrapper needs update + * [Disable] LIRC I2C needs update + * [Disable] CONFIG_LENOVO_SL_LAPTOP needs update + * [Config] disable I2C_DESIGNWARE does not compile + * [Config] disable CONFIG_TLSUP for lpia + * [Config] disable CONFIG_FB_UDL for arm + * SAUCE: disable adding scsi headers to linux-libc-dev + + [ Mario Limonciello ] + + * SAUCE: Add LIRC drivers + + -- Andy Whitcroft Thu, 25 Jun 2009 12:06:22 +0100 + +linux (2.6.30-10.12) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] split out the ports configs into their own family + * [Config] update configs following introduction of ports family + + [ Upstream Kernel Changes ] + + * Revert "Rename linux-doc-PKGVER to linux-doc and clean up its + description". Fixes linux-doc package name conflicts for now. + - LP: #382115 + + -- Tim Gardner Mon, 22 Jun 2009 09:17:14 -0600 + +linux (2.6.30-10.11) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Comment splitconfig.pl and misc cleanup + * [Config] Rename all configs to the new naming scheme + * [Config] Splitconfig rework + * [Config] Rename scripts/misc/oldconfig to kernelconfig + * [Config] Fix build system for new config split + * [Config] Run updateconfigs after the splitconfig rework + + [ Andy Whitcroft ] + + * Revert "SAUCE: Default to i915.modeset=0 if CONFIG_DRM_I915_KMS=y" + * [Config] standardise CONFIG_STAGING=y + * [Config] standardise CONFIG_RD_LZMA=y + * [Config] CONFIG_PCI_IOV=y + * [Config] CONFIG_PCI_STUB=m + * [Config] merge kernel configs more agressively + + [ Colin Watson ] + + * [Config] Run kernel-wedge in $(builddir) rather than at the top level + * [Config] Add support for including firmware in udebs + * [Config] Ship bnx2 firmware in nic-modules udeb + - LP: #384861 + + [ Luke Yelavich ] + + * [Config] ports - Import of ports architectures into kernel packaging + infrastructure + * [Config] ports - Do not update ports kernel configurations by default + * [Config] ports - Disable ABI checking for ports architectures + * [Config] ports - Build drivers in ubuntu sub-directory on powerpc + * [Config] ports - Add control.d/vars.* files for ports architectures + * [Config] ports - Add ports architectures for linux-libc-dev + * [Config] ports - Create powerpc specific message-modules and + block-modules udebs + * [Config] ports - Add configuration files for ports architectures + + [ Manoj Iyer ] + + * [Config] Enable CONFIG_BLK_DEV_AEC62XX=m for amd64 and i386 + - LP: #329864 + + [ Michael Casadevall ] + + * [Config] ports - Fix compression of kernels + + [ Stefan Bader ] + + * [Upstream] mmc: prevent dangling block device from accessing stale + queues + - LP: #383668 + + [ Tim Gardner ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + * [Config] Implement i386 generic and generic-pae flavours + * [Config] ports - Add control info after integrating ports arches + * [Config] Removed auto-generated files from git + * [Config] Added netxen_nic to nic-modules + - LP: #389603 + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + -- Tim Gardner Mon, 15 Jun 2009 14:38:26 -0600 + +linux (2.6.30-9.10) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_SECURITY_TOMOYO=y (amd64, i386, lpia) + * [Config] CONFIG_KEXEC_JUMP=y (amd64, lpia) + * [Config] CONFIG_LENOVO_SL_LAPTOP=m (amd64, lpia) + * [Config] CONFIG_POHMELFS_CRYPTO=y (i386, amd64) + * [Config] CONFIG_SERIAL_MAX3100=m (i386, amd64, lpia) + * [Config] CONFIG_VIDEO_GO7007=m (amd64, i386) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30 final + + -- Andy Whitcroft Fri, 05 Jun 2009 11:42:53 +0100 + +linux (2.6.30-8.9) karmic; urgency=low + + [ Andy Whitcroft ] + + * Config update removed the following options: + CONFIG_EDAC_AMD8111=m + CONFIG_EDAC_AMD8131=m + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc8 + + -- Andy Whitcroft Wed, 03 Jun 2009 09:21:13 +0100 + +linux (2.6.30-7.8) karmic; urgency=low + + [ Andy Whitcroft ] + + * Enabled NEW configration options: + Paravirtualization layer for spinlocks (PARAVIRT_SPINLOCKS) [N/y/?] Y + Cisco FNIC Driver (FCOE_FNIC) [N/m/y/?] M + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc7 + + -- Andy Whitcroft Sat, 23 May 2009 23:47:24 +0100 + +linux (2.6.30-6.7) karmic; urgency=low + + [ Andy Whitcroft ] + + * Dropped: UBUNTU: SAUCE: input: Blacklist digitizers from joydev.c (now + upstream) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc6 + + -- Andy Whitcroft Mon, 18 May 2009 18:05:54 +0100 + +linux (2.6.30-5.6) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enable Keyspan USB serial device firmware in kernel module + - LP: #334285 + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc5 + + -- Tim Gardner Mon, 11 May 2009 12:02:16 -0600 + +linux (2.6.30-4.5) karmic; urgency=low + + [ Colin Watson ] + + * Build-Conflict with findutils (= 4.4.1-1ubuntu1), to avoid + /usr/include/asm/* going missing + - LP: #373214 + + -- Stefan Bader Fri, 08 May 2009 11:09:08 +0200 + +linux (2.6.30-3.4) karmic; urgency=low + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + + [ Stefan Bader ] + + * SAUCE: input: Blacklist digitizers from joydev.c + - LP: #300143 + + -- Tim Gardner Fri, 01 May 2009 14:00:42 -0600 + +linux (2.6.30-2.3) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enabled CC_STACKPROTECTOR=y for all x86en + - LP: #369152 + * SAUCE: Default to i915_modeset=0 if CONFIG_DRM_I915_KMS=y + * [Config] CONFIG_DRM_I915_KMS=y + * [Config] Set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR to appropriate ARCH + minimums + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc4 + + -- Tim Gardner Thu, 30 Apr 2009 09:17:05 -0600 + +linux (2.6.30-1.2) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] armel: disable staging drivers, fixes FTBS + * [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS + + [ Upstream Kernel Changes ] + + * mpt2sas: Change reset_type enum to avoid namespace collision. + Submitted upstream. + + -- Tim Gardner Tue, 28 Apr 2009 16:54:41 -0600 + +linux (2.6.30-1.1) karmic; urgency=low + + * Initial release after rebasing against v2.6.30-rc3 + + -- Tim Gardner Thu, 12 Mar 2009 19:16:07 -0600 --- linux-ppc-3.8.0.orig/debian.ppc/d-i/package-list +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/kernel-versions.in +++ linux-ppc-3.8.0/debian.ppc/d-i/kernel-versions.in @@ -0,0 +1,8 @@ +# arch version flavour installedname suffix bdep + +# Ports +# arch version flavour installedname suffix bdep +powerpc PKGVER-ABINUM powerpc-smp PKGVER-ABINUM-powerpc-smp - +powerpc PKGVER-ABINUM powerpc64-smp PKGVER-ABINUM-powerpc64-smp - +powerpc PKGVER-ABINUM powerpc-e500 PKGVER-ABINUM-powerpc-e500 - +powerpc PKGVER-ABINUM powerpc-e500mc PKGVER-ABINUM-powerpc-e500mc - --- linux-ppc-3.8.0.orig/debian.ppc/d-i/exclude-modules.powerpc +++ linux-ppc-3.8.0/debian.ppc/d-i/exclude-modules.powerpc @@ -0,0 +1,7 @@ +efi-modules +fb-modules +acpi-modules +serial-modules +nic-pcmcia-modules +pcmcia-modules +pcmcia-storage-modules --- linux-ppc-3.8.0.orig/debian.ppc/d-i/kernel-versions +++ linux-ppc-3.8.0/debian.ppc/d-i/kernel-versions @@ -0,0 +1,8 @@ +# arch version flavour installedname suffix bdep + +# Ports +# arch version flavour installedname suffix bdep +powerpc 3.8.0-16 powerpc-smp 3.8.0-16-powerpc-smp - +powerpc 3.8.0-16 powerpc64-smp 3.8.0-16-powerpc64-smp - +powerpc 3.8.0-16 powerpc-e500 3.8.0-16-powerpc-e500 - +powerpc 3.8.0-16 powerpc-e500mc 3.8.0-16-powerpc-e500mc - --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/fs-core-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/fs-core-modules @@ -0,0 +1,4 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/pcmcia-storage-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/pcmcia-storage-modules @@ -0,0 +1,6 @@ +pata_pcmcia ? +qlogic_cs ? +fdomain_cs ? +aha152x_cs ? +nsp_cs ? +sym53c500_cs ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/fb-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/virtio-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/fs-secondary-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/ipmi-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/fat-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/nic-usb-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/firewire-core-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/ppp-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/mouse-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/input-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/scsi-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/plip-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/floppy-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/nic-pcmcia-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/pcmcia-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/pata-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/squashfs-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/nic-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/nic-modules @@ -0,0 +1,166 @@ +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 ? +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 ? +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-ppc-3.8.0.orig/debian.ppc/d-i/modules/vlan-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/serial-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/serial-modules @@ -0,0 +1,3 @@ +generic_serial ? +serial_cs ? +synclink_cs ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/multipath-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/multipath-modules @@ -0,0 +1,2 @@ +dm-multipath ? +dm-round-robin ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/usb-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/sata-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/md-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/crypto-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/speakup-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/storage-core-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/irda-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/message-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/nfs-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/nfs-modules @@ -0,0 +1,5 @@ +nfs ? +nfs_acl ? +lockd ? +sunrpc ? +cifs ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/parport-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules/nic-shared-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules/block-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/firmware/README.txt +++ linux-ppc-3.8.0/debian.ppc/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-ppc-3.8.0.orig/debian.ppc/d-i/firmware/scsi-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin +qlogic/12160.bin +qlogic/1280.bin --- linux-ppc-3.8.0.orig/debian.ppc/d-i/firmware/nic-modules +++ linux-ppc-3.8.0/debian.ppc/d-i/firmware/nic-modules @@ -0,0 +1,14 @@ +e100/d101m_ucode.bin +e100/d101s_ucode.bin +e100/d102e_ucode.bin +bnx2/bnx2-mips-09-6.2.1b.fw +bnx2/bnx2-rv2p-06-6.0.15.fw +bnx2/bnx2-mips-06-6.2.3.fw +bnx2/bnx2-rv2p-09-6.0.17.fw +bnx2/bnx2-rv2p-09ax-6.0.17.fw +bnx2x/bnx2x-e1h-7.2.51.0.fw ? +bnx2x/bnx2x-e1-7.2.51.0.fw ? +bnx2x/bnx2x-e2-7.2.51.0.fw ? +tigon/tg3_tso5.bin +tigon/tg3_tso.bin +tigon/tg3.bin --- linux-ppc-3.8.0.orig/debian.ppc/d-i/modules-powerpc/scsi-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules-powerpc/nic-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules-powerpc/storage-core-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules-powerpc/message-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/d-i/modules-powerpc/block-modules +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/fwinfo +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/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: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: BT3CPCC.bin +firmware: RTL8192E/boot.img +firmware: RTL8192E/data.img +firmware: RTL8192E/main.img +firmware: RTL8192U/boot.img +firmware: RTL8192U/data.img +firmware: RTL8192U/main.img +firmware: acenic/tg1.bin +firmware: acenic/tg2.bin +firmware: adaptec/starfire_rx.bin +firmware: adaptec/starfire_tx.bin +firmware: advansys/3550.bin +firmware: advansys/38C0800.bin +firmware: advansys/38C1600.bin +firmware: advansys/mcode.bin +firmware: agere_ap_fw.bin +firmware: agere_sta_fw.bin +firmware: aic94xx-seq.fw +firmware: ar5523.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/data.patch.bin +firmware: ath6k/AR6003/hw2.0/otp.bin.z77 +firmware: ath6k/AR6003/hw2.1.1/athwlan.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/fw.ram.bin +firmware: ath6k/AR6004/hw1.2/bdata.bin +firmware: ath6k/AR6004/hw1.2/fw.ram.bin +firmware: ath6k/AR6004/hw1.3/bdata.bin +firmware: ath6k/AR6004/hw1.3/fw.ram.bin +firmware: atmel_at76c502-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502_3com.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmel_at76c506.bin +firmware: atmsar11.fw +firmware: av7110/bootcode.bin +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: bfubase.frm +firmware: bnx2/bnx2-mips-06-6.2.3.fw +firmware: bnx2/bnx2-mips-09-6.2.1b.fw +firmware: bnx2/bnx2-rv2p-06-6.0.15.fw +firmware: bnx2/bnx2-rv2p-09-6.0.17.fw +firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw +firmware: bnx2x/bnx2x-e1-7.8.2.0.fw +firmware: bnx2x/bnx2x-e1h-7.8.2.0.fw +firmware: bnx2x/bnx2x-e2-7.8.2.0.fw +firmware: brcm/bcm43xx-0.fw +firmware: brcm/bcm43xx_hdr-0.fw +firmware: brcm/brcmfmac-sdio.bin +firmware: brcm/brcmfmac-sdio.txt +firmware: brcm/brcmfmac43143.bin +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac43242a.bin +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cbfw-3.1.0.0.bin +firmware: cis/3CCFEM556.cis +firmware: cis/3CXEM556.cis +firmware: cis/COMpad2.cis +firmware: cis/COMpad4.cis +firmware: cis/DP83903.cis +firmware: cis/LA-PCM.cis +firmware: cis/MT5634ZLX.cis +firmware: cis/NE2K.cis +firmware: cis/PCMLM28.cis +firmware: cis/PE-200.cis +firmware: cis/PE520.cis +firmware: cis/RS-COM-2P.cis +firmware: cis/SW_555_SER.cis +firmware: cis/SW_7xx_SER.cis +firmware: cis/SW_8xx_SER.cis +firmware: cis/tamarack.cis +firmware: cp204unx.cod +firmware: cpia2/stv0672_vp4.bin +firmware: ct2fw-3.1.0.0.bin +firmware: ctfw-3.1.0.0.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: digiface_firmware.bin +firmware: digiface_firmware_rev11.bin +firmware: dvb-cx18-mpc718-mt352.fw +firmware: dvb-fe-af9013.fw +firmware: dvb-fe-ds3000.fw +firmware: dvb-fe-tda10071.fw +firmware: dvb-fe-xc5000-1.6.114.fw +firmware: dvb-fe-xc5000c-4.1.30.7.fw +firmware: dvb-usb-af9015.fw +firmware: dvb-usb-af9035-02.fw +firmware: dvb-usb-dib0700-1.20.fw +firmware: dvb-usb-ec168.fw +firmware: dvb-usb-it9135-01.fw +firmware: dvb-usb-it9135-02.fw +firmware: dvb-usb-it9137-01.fw +firmware: dvb-usb-lme2510-lg.fw +firmware: dvb-usb-lme2510-s0194.fw +firmware: dvb-usb-lme2510c-lg.fw +firmware: dvb-usb-lme2510c-rs2000.fw +firmware: dvb-usb-lme2510c-s0194.fw +firmware: dvb-usb-lme2510c-s7395.fw +firmware: dvb-usb-terratec-h7-az6007.fw +firmware: e100/d101m_ucode.bin +firmware: e100/d101s_ucode.bin +firmware: e100/d102e_ucode.bin +firmware: ea/3g_asic.fw +firmware: ea/darla20_dsp.fw +firmware: ea/darla24_dsp.fw +firmware: ea/echo3g_dsp.fw +firmware: ea/gina20_dsp.fw +firmware: ea/gina24_301_asic.fw +firmware: ea/gina24_301_dsp.fw +firmware: ea/gina24_361_asic.fw +firmware: ea/gina24_361_dsp.fw +firmware: ea/indigo_dj_dsp.fw +firmware: ea/indigo_djx_dsp.fw +firmware: ea/indigo_dsp.fw +firmware: ea/indigo_io_dsp.fw +firmware: ea/indigo_iox_dsp.fw +firmware: ea/layla20_asic.fw +firmware: ea/layla20_dsp.fw +firmware: ea/layla24_1_asic.fw +firmware: ea/layla24_2A_asic.fw +firmware: ea/layla24_2S_asic.fw +firmware: ea/layla24_dsp.fw +firmware: ea/loader_dsp.fw +firmware: ea/mia_dsp.fw +firmware: ea/mona_2_asic.fw +firmware: ea/mona_301_1_asic_48.fw +firmware: ea/mona_301_1_asic_96.fw +firmware: ea/mona_301_dsp.fw +firmware: ea/mona_361_1_asic_48.fw +firmware: ea/mona_361_1_asic_96.fw +firmware: ea/mona_361_dsp.fw +firmware: edgeport/boot.fw +firmware: edgeport/boot2.fw +firmware: edgeport/down.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: emi26/bitstream.fw +firmware: emi26/firmware.fw +firmware: emi26/loader.fw +firmware: emi62/bitstream.fw +firmware: emi62/loader.fw +firmware: emi62/spdif.fw +firmware: emu/audio_dock.fw +firmware: emu/emu0404.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/emu1010b.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +firmware: ess/maestro3_assp_kernel.fw +firmware: ess/maestro3_assp_minisrc.fw +firmware: f2255usb.bin +firmware: 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-usb-1.5.sbcf +firmware: i6050-fw-usb-1.5.sbcf +firmware: icom_asc.bin +firmware: icom_call_setup.bin +firmware: icom_res_dce.bin +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2100-1.3.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isdn/ISAR.BIN +firmware: isi4608.bin +firmware: isi4616.bin +firmware: isi608.bin +firmware: isi608em.bin +firmware: isi616em.bin +firmware: isight.fw +firmware: isl3886pci +firmware: isl3886usb +firmware: isl3887usb +firmware: iwlwifi-100-5.ucode +firmware: iwlwifi-1000-5.ucode +firmware: iwlwifi-105-6.ucode +firmware: iwlwifi-135-6.ucode +firmware: iwlwifi-2000-6.ucode +firmware: iwlwifi-2030-6.ucode +firmware: iwlwifi-3160-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: iwlwifi-7260-6.ucode +firmware: kaweth/new_code.bin +firmware: kaweth/new_code_fix.bin +firmware: kaweth/trigger_code.bin +firmware: kaweth/trigger_code_fix.bin +firmware: keyspan/mpr.fw +firmware: keyspan/usa18x.fw +firmware: keyspan/usa19.fw +firmware: keyspan/usa19qi.fw +firmware: keyspan/usa19qw.fw +firmware: keyspan/usa19w.fw +firmware: keyspan/usa28.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: keyspan_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.fw +firmware: korg/k1212.dsp +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +firmware: libertas/cf8305.bin +firmware: libertas/cf8381.bin +firmware: libertas/cf8381_helper.bin +firmware: libertas/cf8385.bin +firmware: libertas/cf8385_helper.bin +firmware: libertas/gspi8385.bin +firmware: libertas/gspi8385_helper.bin +firmware: libertas/gspi8385_hlp.bin +firmware: libertas/gspi8686.bin +firmware: libertas/gspi8686_hlp.bin +firmware: libertas/gspi8686_v9.bin +firmware: libertas/gspi8686_v9_helper.bin +firmware: libertas/gspi8688.bin +firmware: libertas/gspi8688_helper.bin +firmware: libertas/sd8385.bin +firmware: libertas/sd8385_helper.bin +firmware: libertas/sd8686_v8.bin +firmware: libertas/sd8686_v8_helper.bin +firmware: libertas/sd8686_v9.bin +firmware: libertas/sd8686_v9_helper.bin +firmware: libertas/sd8688.bin +firmware: libertas/sd8688_helper.bin +firmware: libertas/usb8388.bin +firmware: libertas/usb8388_v5.bin +firmware: libertas/usb8388_v9.bin +firmware: libertas/usb8682.bin +firmware: libertas_cs.fw +firmware: libertas_cs_helper.fw +firmware: matrox/g200_warp.fw +firmware: matrox/g400_warp.fw +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mixart/miXart8AES.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: multiface_firmware.bin +firmware: multiface_firmware_rev11.bin +firmware: mwl8k/fmimage_8363.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8366_ap-2.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: 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: rpm_firmware.bin +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.bin +firmware: rtl_nic/rtl8105e-1.fw +firmware: rtl_nic/rtl8106e-1.fw +firmware: rtl_nic/rtl8168d-1.fw +firmware: rtl_nic/rtl8168d-2.fw +firmware: rtl_nic/rtl8168e-1.fw +firmware: rtl_nic/rtl8168e-2.fw +firmware: rtl_nic/rtl8168e-3.fw +firmware: rtl_nic/rtl8168f-1.fw +firmware: rtl_nic/rtl8168f-2.fw +firmware: rtl_nic/rtl8168g-1.fw +firmware: rtl_nic/rtl8402-1.fw +firmware: rtl_nic/rtl8411-1.fw +firmware: rtlwifi/rtl8192cfw.bin +firmware: rtlwifi/rtl8192cfwU.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192sefw.bin +firmware: rtlwifi/rtl8712u.bin +firmware: rtlwifi/rtl8723fw.bin +firmware: rtlwifi/rtl8723fw_B.bin +firmware: s2250.fw +firmware: s2250_loader.fw +firmware: sd8385.bin +firmware: sd8385_helper.bin +firmware: sd8686.bin +firmware: sd8686_helper.bin +firmware: sd8688.bin +firmware: sd8688_helper.bin +firmware: softing-4.6/bcard.bin +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard.bin +firmware: softing-4.6/ldcard2.bin +firmware: solos-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-db-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tehuti/bdx.bin +firmware: ti-connectivity/wl1271-nvs.bin +firmware: ti-connectivity/wl127x-fw-5-mr.bin +firmware: ti-connectivity/wl127x-fw-5-plt.bin +firmware: ti-connectivity/wl127x-fw-5-sr.bin +firmware: ti-connectivity/wl128x-fw-5-mr.bin +firmware: ti-connectivity/wl128x-fw-5-plt.bin +firmware: ti-connectivity/wl128x-fw-5-sr.bin +firmware: ti-connectivity/wl18xx-fw.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: tigon/tg3.bin +firmware: tigon/tg3_tso.bin +firmware: tigon/tg3_tso5.bin +firmware: tlg2300_firmware.bin +firmware: ttusb-budget/dspbootcode.bin +firmware: ueagle-atm/930-fpga.bin +firmware: ueagle-atm/CMV4i.bin +firmware: ueagle-atm/CMV4i.bin.v2 +firmware: ueagle-atm/CMV4p.bin +firmware: ueagle-atm/CMV4p.bin.v2 +firmware: ueagle-atm/CMV9i.bin +firmware: ueagle-atm/CMV9i.bin.v2 +firmware: ueagle-atm/CMV9p.bin +firmware: ueagle-atm/CMV9p.bin.v2 +firmware: ueagle-atm/CMVei.bin +firmware: ueagle-atm/CMVei.bin.v2 +firmware: ueagle-atm/CMVep.bin +firmware: ueagle-atm/CMVep.bin.v2 +firmware: ueagle-atm/DSP4i.bin +firmware: ueagle-atm/DSP4p.bin +firmware: ueagle-atm/DSP9i.bin +firmware: ueagle-atm/DSP9p.bin +firmware: ueagle-atm/DSPei.bin +firmware: ueagle-atm/DSPep.bin +firmware: ueagle-atm/adi930.fw +firmware: ueagle-atm/eagle.fw +firmware: ueagle-atm/eagleI.fw +firmware: ueagle-atm/eagleII.fw +firmware: ueagle-atm/eagleIII.fw +firmware: ueagle-atm/eagleIV.fw +firmware: usb8388.bin +firmware: v4l-cx231xx-avcore-01.fw +firmware: v4l-cx23418-apu.fw +firmware: v4l-cx23418-cpu.fw +firmware: v4l-cx23418-dig.fw +firmware: v4l-cx2341x-dec.fw +firmware: v4l-cx2341x-enc.fw +firmware: v4l-cx2341x-init.mpg +firmware: v4l-cx23885-avcore-01.fw +firmware: v4l-cx23885-enc.fw +firmware: v4l-cx25840.fw +firmware: v4l-pvrusb2-24xxx-01.fw +firmware: v4l-pvrusb2-29xxx-01.fw +firmware: v4l-pvrusb2-73xxx-01.fw +firmware: vicam/firmware.fw +firmware: vntwusb.fw +firmware: vx/bd56002.boot +firmware: vx/bd563s3.boot +firmware: vx/bd563v2.boot +firmware: vx/bx_1_vp4.b56 +firmware: vx/bx_1_vxp.b56 +firmware: vx/l_1_v22.d56 +firmware: vx/l_1_vp4.d56 +firmware: vx/l_1_vx2.d56 +firmware: vx/l_1_vxp.d56 +firmware: vx/x1_1_vp4.xlx +firmware: vx/x1_1_vx2.xlx +firmware: vx/x1_1_vxp.xlx +firmware: vx/x1_2_v22.xlx +firmware: vxge/X3fw-pxe.ncf +firmware: vxge/X3fw.ncf +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wl1251-fw.bin +firmware: xc3028-v27.fw +firmware: xc3028L-v36.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: yamaha/ds1_ctrl.fw +firmware: yamaha/ds1_dsp.fw +firmware: yamaha/ds1e_ctrl.fw +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/abiname +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/abiname @@ -0,0 +1 @@ +15 --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500.compiler +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc64-smp.compiler +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc64-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500mc +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500mc @@ -0,0 +1,13688 @@ +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 0x956a332c suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x6a73dcda uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x05ff7f16 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xd2943484 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/paride/paride 0x084fd74a pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x0d38d5c2 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x1f1ec6d8 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x2ab8a985 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x3d632534 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3faf9cfc pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x6240b801 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x78a8c32c pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xaf4807e9 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc9fb8589 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xddd48f08 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xf9afd4e2 pi_write_regr +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 0x1a835814 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x3238d3e1 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 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 0x645d29d6 ipmi_smi_watcher_unregister +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 0xa97c71c6 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 0xe76e47a8 ipmi_register_smi +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/crypto/caam/caam 0x212e54d7 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam 0x65f50bc9 caam_jr_register +EXPORT_SYMBOL drivers/crypto/caam/caam 0x919def52 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam 0x9b378a4c caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam 0xb3ca2649 caam_jr_deregister +EXPORT_SYMBOL drivers/crypto/caam/caam 0xbb030d6e caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam 0xfd2b02dc caam_get_era +EXPORT_SYMBOL drivers/crypto/talitos 0xfe4ca176 talitos_submit +EXPORT_SYMBOL drivers/dma/dw_dmac 0x2dde85d5 dw_dma_generic_filter +EXPORT_SYMBOL drivers/dma/dw_dmac 0x46adcfa6 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8743b61f dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0xb3fc2070 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xb948b72d dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0xcaeae834 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xe3f5c038 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/edac/edac_core 0x9e4bbce1 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x01334529 mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d898088 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x106371a6 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x19b5aca0 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x26799994 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2eb72b95 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x30e00976 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3922079f fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3dd08034 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3eed3656 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x45c41586 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x47001991 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x503a8c9c fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5897ce1a fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6421ab51 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6fee1e97 fw_iso_context_create +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 0x8796ae9f fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x88fa72e3 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8d99a620 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x91393cf8 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94f5061e fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ad15647 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa3816565 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xab35ab4c fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc3f5317c fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd9f8cd30 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe7cb7518 fw_card_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00b26833 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00dc4239 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x027b5e50 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02861a02 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02e6e099 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03d94113 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08382eeb drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0927cd6b drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b4ab7c1 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd84d88 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e200aa7 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x105b293c drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10fae918 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11065515 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x135eee21 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14675731 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c30c31 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14ffaf3f drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16c8154c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17e6eba1 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19610e53 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19621a52 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a42f707 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d55c9d4 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d5648ae drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4b0632 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20935c42 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x212c19de drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2158f64d drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x218ee857 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2326610c drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a356a5 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2453c175 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2848fef5 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28c23080 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bd9e02b drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d1de0e4 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d7f0788 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f86fdea drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3115210d drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3814a590 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x386e81c5 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3922539a drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b037fad drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b5dc776 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c719fb6 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cc0e49c drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cce3ae3 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d3d4b8f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d44c991 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f14397a drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f3188ae drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fc9f91d drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40bc9e94 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x414643e5 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41cb0085 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4221b982 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4339b103 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43ea5bf2 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a0c113 drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x464e071e drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46e1a14c drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477cf500 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47d8e102 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4819a054 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b400c76 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4be59a2f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d7f24d5 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f1adec8 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fac15cc drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50ce5daf drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x510a1af6 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5118a47d drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x590cfc29 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b7e2613 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c30c410 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e6ece4a drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e81a46f drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eafb8e9 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f81261b drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6070bbf0 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x650c3c3c drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b14bccc drm_mode_cea_vic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bfaaed7 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c218869 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cae5f61 drm_mm_search_free_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d573423 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f484a63 drm_mm_search_free_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716222bd drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7169a7db drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x720cfe2d drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e8efc2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74155723 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75e9d1cb drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7793ca0d drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ac81039 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ae6adb8 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b42b5d4 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3f7420 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83604849 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83de7606 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87c0de16 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x888f32bb drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x890af2af drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8be47a71 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c5312f3 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dc35db6 drm_ati_pcigart_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 0x95dd060a drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98f25d98 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bbe81ed drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c664f48 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d401d3e drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9db4bd23 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ee9d405 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f07b258 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f1ee1f7 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fcbc5d7 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa02a3958 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa03feab8 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0dc08b7 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa23173b8 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2bf4e17 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3055470 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa64460c2 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9ce7b31 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadb5398b drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf581db1 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf95403e drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb18b114d drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb68e3b77 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6a613af drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77145e6 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8384501 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba2d0719 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba9b7938 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe21f194 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf0ab690 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc25a61ec drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2ad1a87 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4b82cb7 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc54ffd84 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7bc99d5 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f72081 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7fd355b drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc81d6d17 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc832947e drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a2d03c drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc92455b7 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9b57ad4 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9fcfb15 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca19cb26 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca3f8fa1 drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb1beab5 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb40ecb3 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcda91c46 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcff64977 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f7c3c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2736943 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2eb15b7 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd31a78dd drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6716c52 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd73eea35 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd775ee68 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd845b8cd drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda65a58d drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb3aeab0 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd695452 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdde97e14 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdef52069 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5755e71 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5bd6412 drm_free_agp +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 0xe863f825 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea29ce47 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec8cc1e6 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed2b0244 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee6548a7 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf139ebb5 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf379d165 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4a857a9 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf59d9fdb drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6abbeba drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7cf1f66 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf97dfca9 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbac5321 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd16366 drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc203fe8 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcfe1c0f drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe5594b0 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff5869ba drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a0f9b25 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10e67162 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16d74cbe drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1747a20a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1eb91c81 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b15e923 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4bbf9cca drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55a968bc drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ca3759d drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62327d88 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66b004cf drm_fb_helper_restore_fbdev_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 0x731e1ff1 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a30ec09 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ff1cd20 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97a4741b drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97ec6f39 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa27d031a i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacc398b0 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad800c0b drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbcd5fb2 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfc6cbac drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc00d5e65 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc131156d drm_fb_helper_check_var +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 0xcd239bd3 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf7fba76 drm_helper_resume_force_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 0xd9387292 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd94e6ee4 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdeaa8f10 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe021fbf9 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2e35bed drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf37993c8 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf38fc408 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfec20968 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x5b912155 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x80732fdd drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x8cdb1934 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01015a8b ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x015ee644 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x089241fa ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x08a044f6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x09985c16 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0adbca4c ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c72fb84 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d1180f3 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fb1b559 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12a7fe78 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17e48a1d ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e649bc2 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21bd0845 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x249cf621 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27a1234b ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b4f2a3c ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2d511a85 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2eaacea5 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30c0be06 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36990d88 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3af40e27 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c9540e2 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3cddd340 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3eb6b049 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44060ccc ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d1eea63 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5457e912 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57aabd9b ttm_agp_tt_unpopulate +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 0x61eeb96c ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x654ee823 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67e51a5a ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6aec5709 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ba7245d ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70733478 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7bab1e24 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8180951f ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86ff5173 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ccb4389 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94265b07 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x973d6986 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a3914bc ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c9c7b7f ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa80d68cf ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb03a02db ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7902d7f ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1d10c5d ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1eb206e ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc456427b ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc73a01c3 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc788a63f ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9704310 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f035b1 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8da4248 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe52336b8 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe86e7adf ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeba0c6c0 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec3536f8 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec379096 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed169609 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4c0b33 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf072507b ttm_bo_swapout_all +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 0x6e60c5d6 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xd31a24a1 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xdc9209fa amd756_smbus +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1c40adbf hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7533f2ef hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x777247ba hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7914fc58 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb4448584 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5c93ba0f hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe6d3e2ce hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xb58116c1 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xbe99497f adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x014d0f9d iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x03f01be4 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x07a27495 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x0f93db4c iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x181d9bcb iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1a47caea iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f14ada4 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x378257b2 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x3e39f76a iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4f2b9dfc iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x6d1b0b93 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x76033680 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x76df2668 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x7fc8014f iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x90278fed iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x9960c6a6 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x9d96178b iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xa142f2c9 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xacf34976 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xb4e0c82e iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbbba9af6 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe56d5c77 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xf0e72c99 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xf635d9e7 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x8b9f4d28 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xbb5ff811 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x7c73df39 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x88267b52 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 0xe939a440 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x016f8a80 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x10163c71 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2cc4aeeb cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4610c765 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4ff40f35 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x68d675a0 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6a91eedd ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x70499c4f ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x78cd65d3 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8a6911b0 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8b01d9eb ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9330208a ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbbcbe631 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc6f0b4e8 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcea4523f ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeb727dc3 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xecfcccf4 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03afb704 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14c3e8cb ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14d7e22f ib_alloc_pd +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 0x1781f850 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x186e3794 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20a9e796 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22aedac8 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25a1caf2 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c50ef12 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32f9f1e3 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36a34782 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37a69254 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e2042c0 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ef3ee02 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4395dc43 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x494308f9 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e2a2339 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50d94c5e ib_create_ah +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 0x573b059e ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59178301 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5aece012 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6277bbf1 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x644ff008 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x651a2865 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x651d2718 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c5f6272 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f208ae5 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74f59d4a ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7626bc11 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x763e2f5d ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x771a8513 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ab7ae55 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81353b57 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8368d027 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84d0b95d ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86b3d866 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9075fe1c ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x932db4e9 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93f97101 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98a1344c ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c4ae6e8 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa31fd0e4 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4586fe8 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa842bbbe ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa19efdd ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabc1cff8 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb43e730c ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5f5bfd6 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba1147c0 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc9aa29f ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc050b287 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0919c9b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1343395 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2cdb8e3 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc384f07b ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6fb6973 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7704267 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8092ae4 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb239e1c ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfd068e1 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0462bb5 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4807168 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb5c98c9 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdded0705 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe28a325d ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4a54f7f ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6d0bb14 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb6e8589 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeda0d2a8 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2f23af5 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf364d5aa ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3781598 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf76cd859 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0273d178 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0caba049 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1b51b600 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1d3bd884 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x69a2d93b ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7e168f8e ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa80f7827 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8853e37 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbaa12dc9 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc073f89c ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xded9f2d4 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfd36d9ce ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x103247c3 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x41ac32f5 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 0x68ec21fd ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x750f1fdc ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7907577b ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8f4ade04 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe39101f8 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 0x23415647 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2f17eac3 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4493de71 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x82fe18e5 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8edb4376 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc8ae349b iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcb6197bd iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcb94bf74 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0d309810 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0f2b9fb0 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x20909d5a rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2dcc2e8c rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3762577c rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x51eeccc1 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5eb732aa rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x65242e03 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x68112b1e rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8009a954 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x87d94f05 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8f9fe5cb rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x960f8e97 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa129721a rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xac06b12c rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb7f71cee rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd3b01b41 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd580e967 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe57cf474 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe32693f rdma_set_service_type +EXPORT_SYMBOL drivers/input/gameport/gameport 0x07250ba8 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0f0736b4 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x21bf167f gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3ffcb3d7 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5d1876bb __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x903d8202 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd602041c gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdee56975 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xeadded4e gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x2643c669 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb14898a7 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb42f7252 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xeb45b8ea input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xfc8b3486 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1ab701f5 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x3277cf5e ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x709db3ce ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x92f76805 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xae0e12c4 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x194376ed sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x22d01509 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xba30c046 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc7cd00f1 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xca5336fa sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xeb88b5d1 sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc8266a0c ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xef2f4cb4 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0aaa0959 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x12d40420 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x13baa747 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x44520cd2 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x91af25c7 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb3c1ec4c capi20_register +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 0xcd1967c9 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd3f29fdc capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed3b8d35 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xef04c247 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0d2e5be6 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x19520d92 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x19724f75 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1d87a776 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2ce57a58 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3599034f avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3b594258 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3d5354db b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x473dc957 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4dc9e076 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8e4d14cc b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91688e88 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa40917dc b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb11841ec b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcfd5399e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x14e3905d b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x39a0b76c b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5713e0fe b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7c3018f6 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8c0755d0 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaf04806d t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd56a445f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xded70749 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfe82b2a8 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0xdde82686 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x0e8dc150 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x12b854a0 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x43bab51c mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x9bc99c5d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x014eb15b mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xea4084fa 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 0x4195b46c hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4d9a01db isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7f81262d isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa5203520 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xad756c5c isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd3737cbc isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0c990175 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe1a0d7ff register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe7cb2e41 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 0x07e56b87 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1d49fc37 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26295f15 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c6e050f mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2e31c00a recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2ee0880d bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x342aa2c0 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x35a5e891 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4411a73a mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f24975e create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6d897a97 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x77981af9 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8833191b recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a734266 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x94d844b9 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x99b84881 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaa84d2cc mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc37675bf recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc5d30fac queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe7a2d3fd bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe87943cf mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xed81223c get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf900323c mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfca9b4f2 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x17bf870b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x6d1ccaad dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x9ff180de dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xb24e8d1b dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2a887661 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2d4bf3d5 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8f98b84b dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaab3ba93 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaf069766 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcc8d8e9b dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/raid456 0x7bf528e0 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x077fe6fc flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0c9fb09a flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x16d29496 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x230422ce flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x62dab6f3 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8926da9d flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8969bfab flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8dba929e flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x962de88d flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb144aeb8 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc90c7ab1 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe22fbbcd flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe7fcf30c flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0f52b774 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x13d2fa6e dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1eee55c6 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x294294eb dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x297e7f33 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45cdacb5 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x46a0a205 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e77f35b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x679d91cc dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6a7068b4 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6cff6555 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70a539fd dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x73e3f1c4 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x784ef604 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81f8d553 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x86100b09 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9b3ba226 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9d96d1e1 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9db320c2 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3069b48 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3bcab45 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3934419 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xba5338fd dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd3d9ed1e dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8a0bea6 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe1f8d621 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf098e4fb dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf2df7232 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xa0db7aa1 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xf05aa27f af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x58457987 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x43eff82e atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1bbbb332 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4083431b au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5fb6dfb6 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7dba6880 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9b16a449 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa7141a07 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe418e7ff au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe97e8cf4 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfabbd91b au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xbd92b446 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xda537be3 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xe4a861ad cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x32bbf3b3 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xab070c33 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x67db9d56 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x8da6b259 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x1098627d cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x4790b10e cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x8ce88bc2 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x083fcddc cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1e5e1ca5 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x283e0483 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8cc527a8 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe82c3cdf dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xea760ae1 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0bd51a63 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0d833013 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x468a1f95 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x48227f49 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5378758a dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x57d040b7 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x64aa2ae2 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6eb25ce7 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7bbfd102 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9e255f10 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbffa108b dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3e4a1bf dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe60b3b7a dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xebd5165f dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfaecf3d0 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x31b420bf dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7a667c92 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xbb451745 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc7313fb0 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xcc2fed80 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe3e4d99e dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf306b543 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2fc5267e dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x48770e44 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9253a80e dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb49f4078 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x146f16ff dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x36a8b927 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x38501b01 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3bbd8334 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3f22180d dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x48f47f1b dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5be04d7d dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x5c681c4e dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x65fdad5c dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6c74340e dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xac420978 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb83f8eeb dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbbb032f4 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc0bcff59 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd458f96b dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x17935ab7 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x30f9ee32 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x373fe50d dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x38ba2824 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x4eae553d dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5296d45d dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x57b20a05 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5aee536d dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x6a96dbbf dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x6c78dbfd dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x71332f0e dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7d6c3fa0 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x82086f96 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x92c54198 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa05be253 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xc62ec05f dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xcbb9bc43 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xeda1804b dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf48bcdbe dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2c5533b3 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x40a881e3 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9acce916 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc4c37da9 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe3a53706 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x0d0b1308 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xc07fa79f drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x2e2ecb37 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xe74836b6 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xe942ba98 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x567f3ea0 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xfd25e38e isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x0b98974c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x670c3bd7 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x58b446da it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x4d6fbdd1 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x4ee1f01b ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x99ed4dba l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xaeef06c6 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x22f20ffe lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x4bcbe682 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x54a02fc0 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x4a0bb11f lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x9c127415 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xb8b520c8 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xa97bc503 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x96c67888 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x376c097a mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xa5d73002 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x553537bd mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xcb5d4192 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x9152d8e4 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x571ac407 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x297fe707 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x6232f887 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x94c58924 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x05f2d290 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x69ddc90a s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x11118a48 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x6dd8c8ff s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xbb08a4cb s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x77c129ca s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x104ef20b si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x22af07ab sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xba98bd49 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x9b79c1bd stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xfada43f5 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xf8a803e2 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xf85f3927 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xe19b5109 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xa44c1fb0 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x227cb9cd stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xb8b621e2 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x25096d4a stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xf20be79d stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xfacd040d stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x4fde278d stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x6e4451e8 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x6e64308b tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xb0fec7a6 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x115ab48e tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x4a7f2a2d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x7cd470d7 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x2184fe51 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xcadc3dae tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x8225a2a7 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x6b50dce9 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xf6c5c9b5 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x3934fe77 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xb2165230 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xdd5ddedf ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x6a491b61 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x681175c9 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xa207e937 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x5c7a6287 zl10353_attach +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x145491d3 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x38c2eede btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x06abd469 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x528da03a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x84650b79 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xceedf1f7 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x4ba34b01 tveeprom_read +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x659b6e26 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x635f397d flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa8443f18 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb4e05f5d flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbe0c86f5 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc8aa401c flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd47685e3 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd4c80a1f flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2870cd12 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2cb08f92 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6db69146 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x76f12c1a bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x3c4a82af bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x4d177b9b bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe7ff56d7 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x222fec64 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x33229d27 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3da7e375 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4bac0f6f rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x79bc5538 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x90f021dc dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb872d5fd dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf6138275 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf80429e5 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x6f3db56f dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1a693912 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x30dd63f8 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x63de001d cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe5343442 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xef518744 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x49ea4e7c altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x860e301a altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xc3ad5721 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0797c426 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x2f2a3940 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4149a923 cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x65b6519f cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7ae88155 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x85759312 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa26c8a5c cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd7312a73 cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf4fd8d1b cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xbfdaf6d1 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf8cb366e vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x2052ed83 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8620ef5b cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xa1b8a421 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xab427843 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x06f731c0 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x90e1445b cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9f57874e cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbc5e9db7 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbdba0fdc cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcef34311 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x09525cef cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0a7cd1c4 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0ab73d49 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x185983d3 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2eb494b4 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2fba6e33 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c87b4fc cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4245eb1e cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x46de570d cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x55839a23 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6dd3e7e7 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x771d137b cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8a72d42e cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8aacf603 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9ede89a1 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa77e97a8 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbae65d98 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc844c996 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcb3c1089 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xea4a78a3 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xed847353 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfadbd658 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0413130d ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0bfef082 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x283d1884 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x37a94c0f ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x474e2081 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4a9334e4 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x64f2b2a1 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x68bf0b61 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8a1f1328 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xac04637e ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb498c509 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbe0d6740 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe38a4bd3 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe9d14e7b ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf0ea3b4e ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf0f4539b ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfdc7a115 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0ac22244 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2a915e24 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x41867661 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x708a91c4 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8403f7e3 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9f4f241b saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa9dad29e saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xafc8896c saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb20932d9 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc80537b4 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcfd099c8 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdd16685e saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x32565f8b ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x2c05ea73 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x382eff04 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x86bf1852 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x99287877 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4562d425 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x60c93943 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x61b13e3d soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x702deb57 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7319f737 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x84016ee0 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x990f6745 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb35f21a4 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2fc57265 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x31477397 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x569d385b lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x57291a26 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7510bc27 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7f16cc73 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb320e8c6 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xdc1ec243 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xec5db580 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf12c5bf3 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0x1aefefd3 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xb038dda3 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x3f355f8a e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xf7917b0c fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x785877bf fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x34fa4b79 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x99e4d639 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb76143ab fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x1dd17ca7 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x4f35f7a9 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x99e4a8f1 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x026767ca mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x2443588c mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xda20c6cf mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xd96de9ba mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x2685e34f qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x4b74b32c tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xce76006d tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0x3ac8f4a0 tua9001_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xff2588e6 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x13f38999 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x670213b1 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x66cfbf1f cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xced6f4ba cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0x55166f4e usbv2_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0xf5c4630a dvb_usbv2_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1588bec6 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1a20e184 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x25c90ee5 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2cf67169 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4f14b28a dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8a966953 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb8859c7 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1e8987cf usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2db40c19 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2f207ac1 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8468f125 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x86bc161d dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa98221a0 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xce02870e dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x75a9cad2 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x06f045dc dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x43ab59fc dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4b67c47c dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5b941e8f dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x700aa06b dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7100e34f dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa15c6889 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xabfc6283 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbae84a01 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd42029f0 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfb386776 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x7671f8f1 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xe6e1fcbb em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1994b527 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6cb2d1b5 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8ecdb962 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa5c2533f gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa9b22adc gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb2c14561 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb5121846 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf81eb324 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x55da3cc2 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa69cf9da tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb8384a54 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x57d9e400 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x7c1ee5ca ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x72305f82 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x79a29c75 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x5dd3bf96 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x653e16ae v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x78486a62 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2c19d7cd videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x2d97007d videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3a3d857b videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4d7975a9 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x78b739db videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8562001c videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x59df9d71 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04684a31 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04c76cd2 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04fdd134 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f33a032 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x137fa394 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x201d8d7d v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2428edd8 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x272720f4 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a66ed8f v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d604761 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3027cdec v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30563508 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31abe769 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ae0b7ec v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b6f4065 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4de459ff v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x579cfb15 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58dde19a video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x592adeec video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5cd671ed v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x620c31c1 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x698f7203 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d88327e v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78a225cb v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c855d18 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c923750 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x81749b68 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8335fc6c v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x837abad5 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90456c20 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x948cbdcc v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96d76b00 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f70c8d4 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa35433ab video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa5ea1671 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaafbf679 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb970a662 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc124b739 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca03ea67 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd71bbd6 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd37e4992 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd808b11c video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd9aee05 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe612ac38 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeae171ad v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf402a6d4 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf80d5588 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb258dfc v4l2_queryctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1856dec0 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2502ab9b memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x42d93aa8 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c9564c9 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6437675c memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7eda9eae memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9c287b19 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9f9c6674 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa70090df memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc608b4c9 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xde3bcbe3 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfc27098b memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x13c81ff8 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x16829c25 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x207b87ba mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2d5cf43d mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x455d5725 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47cf700d mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x501c29e4 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x53a05e2b mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x562d40f9 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x59ae1744 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5d3a63fa mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6c4d15ec mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8638f10d mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8af2165b mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8e3d92a7 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8f8ecb3a mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90f17272 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa1c4bb1e mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa4c1bbb4 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa882e0b5 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb2dddc44 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd91de13b mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a40111 mpt_send_handshake_request +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 0xe3635b12 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe8c7d28f mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe96f5424 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xed7923ff mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xed9d6ebc mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xef84e21a mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1fe5d3d6 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x22981fef mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x472e9301 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x563bfb14 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x585fe970 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ad8d03b mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5ce9a3ce mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x61ddbcaa mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x62059c9f mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x68cc61f4 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a2b50e7 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x72f4791a mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x78494475 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c33e06c mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c8913c2 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x99678d63 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa0d16e3f mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa33c73ff mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa799b6e5 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa87d4698 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaad88f1f mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xadffa924 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbd5ba116 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xce9e7a54 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd6a614b9 mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf383967c mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfd85c4d4 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x00832237 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0cc2dae2 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x121ae331 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x28edd3f4 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x40d88fd7 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x43b173be i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x838d910a i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x875b4b88 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x89061aeb i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x914782e5 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xab3891a1 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc1ac32ec i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc3035f92 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc91591fd i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcf37281a i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe5f2af30 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf1d92646 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfd2d6490 i2o_status_get +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x3f9ec678 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa12ebc4d pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x108bc3d9 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1b59fce0 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x270455cb mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x40eaa0eb mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4143130b mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x73d5077b mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7cb711d0 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x81c0e593 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x99f1c279 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc365995d mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd2756540 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd39ac42f mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd64b8fd2 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/tps6105x 0x10648605 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x7019527f tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8d0d60b1 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 0x468527b2 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x8927922b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xb08f6dcc 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 0x51eddfdc c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xfd734ca8 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x45652957 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xfab2c6f4 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x11711def tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x19368448 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x2fc3ddc3 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x408d9ac2 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x47d43f59 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7155f53a tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x9934ce06 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x9a35ffb9 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x9ed4430e tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xa2a20e42 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xa92e6926 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xb1602827 tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x3c5e99af mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1c0face1 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x65139cb8 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcc4297c6 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0a87a77c map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x40ec5d31 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb64ff354 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xff024bcb do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xb09fe781 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xe0c2d6b5 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xc8b899b2 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x3c78bf0f mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xfab2f1f0 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x7f1dd1ee denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x99f26fe2 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3533f847 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4341d0a3 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x66ed479e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6a20dd4e nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc65675c0 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xee481943 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf1b70c58 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x0896525a nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x13bd7650 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xe3668ce7 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x477d69ab nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x52a40455 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 0x05aebc72 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1a8ed4f5 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x220b9f3c onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb27fc1b6 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1713d126 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1ba6f415 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x57059b56 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x578271cb arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5a74dc43 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5ce22ac5 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x78f73aa4 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9ecdc808 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb2e1dcf6 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfde55a9d arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1f726c09 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x926dca06 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd26b80a7 com20020_check +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0x02b49cf0 dpa_ptp_cleanup +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0x630596bd dpa_ptp_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0cc8ba5c ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x15bc9200 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1880daaa ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x31ecac1f __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x33b4ba47 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x896f6a45 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x93ead7a4 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa380cb2a ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa908032b ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd088f80c ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x951bd7a9 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x05a5d7fd t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x186fb126 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1f8d9b9f cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x21c872d0 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x370b96c5 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6004fcb5 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x633638e1 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8f3e96c8 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x995f0109 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xac3a31d7 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb3512cde t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbc43fdb6 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc6877ecb dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdfcd2c4d cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xed7e2149 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfc518ced cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0a97c093 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16a30e8f cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1d8c638b cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x21211872 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2381c426 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x42e9f2b4 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c2e3573 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x52d8fee2 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8bf80d0a cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f41eb20 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x980e2c7e cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9cc53a7a cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa776dac0 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb25ea337 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb935a2fd cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca51c787 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcdab71fa cxgb4_dbfifo_count +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 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf68d90bc cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4092c46e be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7d4fb043 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0807f98a mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x233775a8 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23644bfa mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x236e18eb mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x255045b0 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25985134 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32266558 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47055cbc mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c5a8e78 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4efb493e mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7139df4b mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f877f7a mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92ad5de2 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c6a36a2 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaaa05a7f mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbaf9e16 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8dcc9d3 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe72a2924 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8c11379 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee60a792 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3ed1d70 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4eb95f64 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6253962c hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x6fe9edcd hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xca58fc09 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xfe713b94 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x23e3aff5 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x308741e6 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3220bb80 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5edb7c05 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5ff7ee62 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7456cc4e irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa6409f63 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xadb091d6 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc0abafab sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcce945d1 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/ppp/pppox 0x0aba2489 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x8f21abfb pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xab2a6651 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xc9525bb5 sungem_phy_probe +EXPORT_SYMBOL drivers/net/usb/usbnet 0x26c0cc6d usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd2a9d022 usbnet_manage_power +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 0x2f08e451 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x39e0cdca unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4c5fa069 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x57443e89 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x70bbc1b6 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x737720c2 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x739d993c hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8a8c9190 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8c32aaa6 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbb548d4f register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc7002110 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x738e3fb2 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x3d908ea5 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x573511af reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xb2e6ffef stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x23e28701 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x323a7a79 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x50f66b3b ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x56e98df6 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x773b4e13 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x82922790 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x90c7beeb ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xadbd8bec ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcd5beef3 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd246b8a7 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1f928aeb ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2c85bf62 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3b83cfc0 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x51125c62 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5b8d23b9 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9eec3d61 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb81f5594 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9ce7b3d ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc0586e97 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd89fb1f9 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x269c09f4 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xf6efb88e ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xf7b094bf ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x133abd14 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x59275983 ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x713f8a4d ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8741790f ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb0215269 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03f19b93 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04bd6742 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c7e8170 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ed5512e ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fe0b3a9 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x104661f3 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17b0cf35 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x193020e2 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19b2ac89 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b69cb82 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b6ec557 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d35890c ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x209b6667 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22c9f63e ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2841b59c ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c17ff2a ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d1849dd ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e84fe94 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x332f59dd ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35a0a1d9 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x363b67e8 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x397ef074 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39840975 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39c04c50 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b348f4d ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c8ef007 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d5ee6e9 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f5df592 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4942820a ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b709977 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d823479 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x622006ce ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62645676 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x651f19c9 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x688c1589 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69cd1c43 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b411d32 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72597702 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7415605d ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x755984cd ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bb153f0 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ec52ee1 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80455511 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80d14403 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81525864 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8257a107 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x837d95a0 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x853f4feb ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x892ab692 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b522de1 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b9e8444 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ba81dcd ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f9d7ff2 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97b4aaa5 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x980b1a22 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9824f38d ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9dc2192c ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0a7d602 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0b83e4d ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1e9e294 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1fda1fd ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5aa7e49 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa73e1c9f ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaae1efd0 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab55ea43 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab8a5dc7 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb402a44a ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6c7a029 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb75136fa ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7e9d3a4 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8145ce9 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb84bc579 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb88a4c18 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbac3dc09 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4e0f845 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7eb9480 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc93e37f4 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbbcd5af ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf9855a3 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd025acdf ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd073ed00 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0bac929 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1598f16 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd25f23aa ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4e93603 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd64a879e ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8218f5d ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4e11507 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5437bf4 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8b20b49 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeccfefc5 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf360b344 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf55e8122 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf60fc167 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6986bad ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9fd0c29 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff1f2d8b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/atmel 0x0d2be5ae atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x270a7072 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x89ccd4cb stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x926673d1 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xfd749637 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x080b37a0 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0a284136 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1eb3c933 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x20a5b8e4 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4ac94d9f brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x86bf12b9 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8e188116 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8f1e610a brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x955675ff brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa320f836 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcc071be3 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd89553c4 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0820a02b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0add1653 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0bfc6a63 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x223fef50 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x29b7538d hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x37e01e5d hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x52d54d58 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5d1637dd hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7d292e8e hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x85a9c5a4 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d6f109e hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa432a003 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb295baaf hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc409626d prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc7c47243 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcfa931bd hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd2026f48 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd308ec06 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5f20750 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd7213eec hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdcf512de hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf15fd243 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4ab8022 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf8925dbf hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfbd3158e hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x09fd4f40 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x156877f6 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x21d4f6b9 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x245e5bc1 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x254d07e2 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x28f6b955 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2b6e16d1 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5c6070d4 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x66d46826 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x78496ba8 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8d34a798 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9bb19b78 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa8bdf30e libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbfd37f54 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc4b64816 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc84ac823 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xca61297d libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcfe89ac8 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcfeda72c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd7a806c8 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf34923ff libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05bcabeb _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06142b1a il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06c5486c il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07cfef94 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c977340 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e3b756c il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1128d0b1 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x112fae3f il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17ce8ada il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2063e8e6 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21cfd054 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x224e0886 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x245f7c4e il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fbd8617 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x306ac621 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3286a6a6 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34a5f811 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x350f57f1 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35a2a74f il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35bb5659 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x382859c7 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39364e14 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b6aadd5 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x414e60f5 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x451f498f il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48fd51d9 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a794b3e il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c783dff il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e51d047 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e8169c5 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x502d837a il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x558ab7d7 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x562e8e75 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x574927fe il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5778aaf0 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x586a80db il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58bb11c1 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b7b72d4 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f4aa3b4 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60915c41 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60f3c9c6 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62e18b26 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65974420 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66e284e9 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x671ee03e il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e9b0cbb il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x727cd5f9 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75974b63 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79a457c8 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79f32d3c il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7df4c713 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81c619a5 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x829e9572 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x83c4d486 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84209d92 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85b0eaf0 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85e66390 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x884731c8 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88c83037 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88e49b0f il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e1a16e3 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90284162 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94a9f92f il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x978384f0 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9918b881 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa06223ca il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3153617 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa370d570 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8d1fe1e il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa95252cc il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2c745a0 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2eaa753 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb44c0481 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb741a775 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3edf352 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc4d751df il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc77553d3 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4a24a71 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd69a98ef _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd75f991f il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd87d6c37 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb340d6e il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc24ff72 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf6fd1a3 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdfb2099f il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2b5b0ef il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe95686f1 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec1163e0 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef49fd4d il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf21ecce9 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf447ee59 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf44b8df9 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5c81bc7 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf66edd52 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9a1ecbd il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa4b41b1 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x03f5c38f orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0a07de16 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1f3bbea9 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x29a58e0c orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x56f49b07 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x603310fd free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x73f0e5e6 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x83a141c1 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x93092323 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9f33ddff orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa4f30808 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb894a833 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc05e1b71 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd06921b8 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xef06c1c9 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf756894d orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06cd8f86 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x08fdb964 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0bd0067d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x10823f0b _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2a466cf0 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2a5e9213 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3696ce95 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3a15093c rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4036f3ca rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x50f82541 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5713a025 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5dc005e2 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x66417dee rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71e77f6c _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x73eb77b2 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x791dc07d rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x836c80e3 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b0d9e01 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d69737c rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d8e3a6f rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x932ba868 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94269421 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae6f9ef5 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb61d2db6 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbf85cb91 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc4f0a50a rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc9fdee03 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd157e0c7 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd164d862 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd274a64a rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd59a90fc rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdea06e54 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe26d413c rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe39e0ea9 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe8bc2828 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe9af58be rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee79ede6 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeed1bcae _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf04e13ab _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf7f30f3a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfe5bfaf0 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfef42ba7 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ffedb60 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1708e1a5 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2e033549 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x389b185b rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3b3afca2 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4a7ee336 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4f0f5d22 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4f6ea0b1 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5011d133 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x58a8a804 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5e7c1b23 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72f5b4fc rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7e46970b rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x822870cb rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8359a7d9 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8aaca9d6 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8fda9cb3 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9f15a1cd rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb19c1d18 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc0abb773 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc2cae633 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc78740f4 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcfed5f69 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd134d936 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe5074011 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfa6e3089 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0486b34f wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x07f0e4cd wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9004fa32 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcc767a4d wlcore_tx_complete +EXPORT_SYMBOL drivers/parport/parport 0x0822a8d0 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x1fde33b0 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x204fa682 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x24d608b7 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x2b71ee74 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x2ed15fe4 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x304361c7 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x3b95ca26 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x3bb65abe parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x4b3b407c parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4febb0ee parport_read +EXPORT_SYMBOL drivers/parport/parport 0x5725ae08 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x5d4d0de4 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x8f42649e parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x9315e66d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x9458e0ac parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x98937bc2 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa15bfac7 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xa21c85b1 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xa258649f parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xa8d34c17 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xaad5f501 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xab673318 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xc738211e parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xd00c0ec1 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xda660bf3 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xeefaabfc parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xf464785e parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xf662030d parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xf8134989 parport_find_number +EXPORT_SYMBOL drivers/parport/parport_pc 0x73eb80af parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xe2dac25d parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x043d5b51 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0a4607a6 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x206332ec pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x20865f96 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x23fd5abd pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x244e3ed4 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2fbcd8a6 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x30254593 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x461a054a pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x513bbe87 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6768ca2c pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xab4b65a3 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb57c215c pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xba86be2f pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbbc9e8ea pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc18528b8 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc3c31dd3 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc57f60d5 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfab8fff6 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0b36e2c2 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0edac240 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1e73b49e pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5d025a3e pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5d6e053f pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x76255867 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8c0e94ad pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdbb5629f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe338a068 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xffb05604 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xa6d96394 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xbe0a2e4c pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x12e2e048 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x280be87b pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xd515fd0f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xe575ae2e pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x1cf1e34d ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x32ee2b2e ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x8bba4315 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xa3c1fb09 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x1e8e6a8c pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x43778624 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x45c07383 pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x4aad1afa pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x70526e3a pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x9ad4b8ae pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xae14543c pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xce6ef2c3 pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xe672f168 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x24b1f2b9 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2a064bd8 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3a8cd9d8 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4c2cc8a2 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb8b744b0 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xba7dde1d rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd326dbec rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xec3603e3 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf19dc59b rproc_shutdown +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xbc9811c7 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x091e2982 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x56a2660f fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x589d78a0 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x82db8b04 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9a22a42b fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb03d2bec fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc4b25acd fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcca725c7 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd853440b fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd87d6341 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf6661575 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00641a88 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x093eb525 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09862d49 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c4dee9c fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d090012 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x124f368e fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c7136a6 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x235edb81 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x266562bb fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a4ef927 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3c982005 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x434bfc4c fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46f09727 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x535768a7 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a28d8a2 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b743673 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c451d34 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ed57ffe libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76da06ac fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a306e89 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dc56568 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96e8ede0 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97b2706b fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1a47da0 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4ea4823 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa73f21b2 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb2d63c9d fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb60877c5 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8148bef fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb95369d6 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbabd1de9 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd5b1ae6 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd7c8a18 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdd86508 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe283cb8 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe967a9d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf4b270f fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0d23584 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2bbaf3e fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7c168cb fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd92c7c02 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdfa603b4 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1176489 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1d9952a fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe64a0dde fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebe1591a fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee10a7fe fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf3636bdb fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf3b42e02 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf5d69f37 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x22402a06 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x425bb801 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6f1151d6 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x88436bc1 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x7445d6e2 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x046b9102 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0a9bde31 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13eb11b6 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x151e6ecd osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x188e4e3d osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d489c06 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x20ca5484 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c0142ea osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x30a22dcf osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ec210bf osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49fd9f7a osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5f5f738f osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x61be006f osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x62ed93ea osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x630efeae osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x63bb2675 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x667ced52 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x69db5314 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6a2b9c3e osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6fddef62 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86fb220f osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8dfd6580 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x90a5853e osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x915f1368 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x933ca9ff osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x97086b83 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e093554 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9fb55809 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa35c6842 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa654bed0 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaaf1b772 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xadc79374 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2a4932a osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd40fa7a4 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe6b54b13 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xedfb772b osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/osd 0x17f356fb osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x277097f0 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x55b81f4d osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x64f9019b osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x757870bb osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8b3128b1 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x00bb3fc9 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x053659dc qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x22ead693 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x589ee7d3 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6e8e9d84 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x71078f1b qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x79aa9134 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x803c476d qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x829cc425 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbb78bd07 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf335039b qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2143f86f qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x907a610a qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9e0e7654 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc78824bd qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdb042c7b qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfa955f58 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/raid_class 0x268874a1 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xb7b2a7cd raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe082a3e5 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0c63ad54 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x17144171 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1cf0b168 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x37570ecb fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x618771fb fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6578d594 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x683cc311 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x901ce31c fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbc9a4869 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbd16ed2b fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe1deaa1d scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe2021803 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf64b960e fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02196a27 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b8bc2d8 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0f1cb3cb sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17ac663c scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x186f7402 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x19db00d6 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1aafae26 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f5cd41a sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ede9248 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4a94292d sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4cacfead sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x51395791 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x55d98472 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a34e714 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x624d1d93 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x71da13fd sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8c07f945 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x90ed71b1 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9cca3153 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fa84bab sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa5fbb1f7 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc25a8365 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcba2d1a3 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcd3b8547 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc48fa4d sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6ca7c67 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf7eef5cf sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfe6a968c sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0cceb2b4 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42db4711 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x51f13823 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa168a0a1 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf13ed963 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/ssb/ssb 0x0d9dea90 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x23ee6ce7 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x255271f7 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x338e582f ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x349f01c9 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x3f19b73a ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x42358ee9 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x54b509e1 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x682ed404 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x6f834bab ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x8008ed28 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x9651a6ea ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xa24017c3 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xb12c3971 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc46da2cd ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc60a79c9 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xcf97215f ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd970fe05 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xe2da2681 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xef44a2bc ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xfe07d174 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x3f8b2f48 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x6d7e80c2 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x19e516c1 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xf2057722 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x15ecb745 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa941faf2 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x2f6cbada iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xcfc49194 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xd3d9ad65 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0b05e44a go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x2943041c go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x3a2376ab go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x5daa89fc go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x66b91fa2 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa7822fb5 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa8b9e339 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb433c7e7 go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf334d310 go7007_alloc +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03fe9cfa rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06620841 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07e12a29 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x08045908 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x123f172d rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x165b6c8d rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x178d2b26 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x17a2f2e9 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cddeb56 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1e78e7f1 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x230d83ee rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2abc8978 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3484c974 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x376969cd rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37d7e747 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ce55e2c rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x44559d79 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x44778b5e rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52c8543a Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5c69f0c5 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e473c80 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x60cab173 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6aed24e4 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70aa145a rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x75497c66 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7cda855d rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e03ad0b rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e0e3db2 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ec404ff rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80f86175 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81c122ed rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83bbe9f2 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x933330ad HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9383a180 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b75c6ff rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa76c9972 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa0c8c38 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xae0965f1 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xafa859fb rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc8ff37d rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc81c02f6 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9f6f471 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd447ed55 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd70614a9 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd7f7f02c rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2cb420b rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe94eb7d1 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec8f6650 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf143652b rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5bec4d9 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00627ab3 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a80778a ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0cf6a7a2 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0d28c654 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1641ac44 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24b9410d ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26f3a723 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x28dca672 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2cb72c08 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x300ac887 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32d0932d ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x334737a3 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3611c2ae ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3795865b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x452e1392 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4763ab05 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x491c683e ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4c48c01c ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x545ca827 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5f4b161d ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x609cb715 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62d8ff17 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x637cf091 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6519c5b7 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6798eaa0 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70a92584 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74245c98 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75e39f7e ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x77381df6 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79e19e80 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81f3e36d notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82bef7ba ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82e07b47 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x845fa0e4 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f7add22 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x96004d4d ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9bb1a893 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac9e3ce1 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad5df538 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbdc868bb ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc3d5ba39 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc695af8e ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcb6f56cd DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4e4751d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd4a5c96 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe8900030 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe9776b18 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeafed122 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec6ea307 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeeffaa1a ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6abea5e ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfdf90644 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff8727b2 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff901060 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/target/target_core_mod 0x00f30878 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x092e7c76 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x098689e0 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c18b300 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x10d62816 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a0dbec6 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bf42935 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c75692f target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x1dffdb2a target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1fa24799 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2303ca14 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x236ff6e8 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x237988bb iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2414343d sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x273cbc38 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x28bdecaf transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x32397228 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x39665d51 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b95180b spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d077eec fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x48078bfd sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x493da8b9 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x57bd384c transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x62c10b2f sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x64f1a7d3 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x657d7348 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x68e3304e transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x6acaa297 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x75e5848e sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x76ac9d21 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x791d2477 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c2011d1 spc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x82065a3a target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x8225d174 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x830fa2bc transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86ea0870 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x875608c7 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x88995633 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a5fd771 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bae5657 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x91b9e08f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9204f6cc core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5d2b8aa target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xaad0f72b core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xab70d459 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1d654e4 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xb862b5ab transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xc419e46a spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcad316f8 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xccedc78b core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xcdcb9465 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd39f8dde transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xde5ba551 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xde7502af core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfa2c7a1 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6b41adf core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8a3c82e transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8b69fc2 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xed42ab44 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf15f3ee0 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc5020f7 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd9b97d5 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xff39c4f5 transport_free_session +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x7ed7a4dc usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x3919870f 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 0x180e70c1 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x261eb4bb usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2a77bbe9 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3bb18d2e usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x91b112a3 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x96421883 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9c68dd87 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa17eb8f1 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb6c89e16 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb77082ea usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd813747a usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xda9c821f usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf04e0bc1 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x412a5a4e usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf3d78eb1 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x2a36767b lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd2166016 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x51bc30c4 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 0xa9996028 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xc74ee1cb matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xcf1abc29 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x1ce0163b matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x62131af8 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xaf89ce76 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcf20a236 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x5665b00f matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x90669caf matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x4aa953be matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x4fca54c7 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x51f27db2 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xdbf0ab14 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x6d600666 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xe86c438a matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x06c9265c matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2ff61434 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x32774a30 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5b14ee09 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x942c38aa matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x73e81f51 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x3841d2a4 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0x41c1e001 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 0x200a4736 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x33c01fe0 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x43853d9a svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6558f5ae svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xc1dc77ab svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xc7836b69 svga_tilefill +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 0xf71c9866 svga_tilecursor +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x2b6dc543 fsl_hv_failover_register +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x520919c3 fsl_hv_failover_unregister +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x0304c5e4 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x046082cf vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0a98817f vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x39fe2cd8 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x3c4ec53d vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x3f284092 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fa54a1a vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x87957b07 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x8a1f55ca vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9fd6d547 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0xa1ac71ed vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xaeb60354 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xceda62c2 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0xd07d3c44 vme_slave_request +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 0xe80b2374 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xeab9e9cb vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0xed055abb vme_master_request +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 0xfaeff72e vme_register_driver +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x431ee0f8 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x87aaa301 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xab811657 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc76b432f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x4eecdb01 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9a486491 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x2fc97072 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7d906d58 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x338ad9db w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x5144104e w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x7f1babb5 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xcb3e59d1 w1_add_master_device +EXPORT_SYMBOL fs/btrfs/btrfs 0x02897198 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x09dceb4d ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x09fa4bcc ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x34b9e4c4 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0x35490e9d ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xe4423912 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xedf03da5 ulist_reinit +EXPORT_SYMBOL fs/configfs/configfs 0x026bd473 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x0326c4ee config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x03aed63f config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x042e8943 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x38316297 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x851f0446 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8bec81fe configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xae146cdb configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xba27deee config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xdd796dce configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xde4d60cb configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xe88c024c config_item_init +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x386488f3 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x4aa04acf ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4fcdb3a9 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x5fb83acf ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x62585d61 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x822800b6 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa2f1d19b ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xaa316dd2 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xaab2d291 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xc4601216 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x0604677c fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0ac2f1f0 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x0c6cab8a __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x130daf34 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1bd93a04 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2907f9a1 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2eab7ced __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x43d6f8e5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x483da1fb fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x56b29be1 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x5ed888b8 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x63d417db fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6b317033 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7caf3b37 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x7fdf9fc1 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x841ac720 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x980ee647 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa73431f8 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xa7b04cb0 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc2596c5c __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xd19b267a __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xdaec8608 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xdc3afdb4 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe5d3b80d fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xe8367252 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xe8be1101 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xec77ec72 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xfabf012e __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xfda4427e __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xfec8889c fscache_put_operation +EXPORT_SYMBOL fs/nfsd/nfsd 0x13d93eda nfs4_acl_posix_to_nfsv4 +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 0x83585203 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x3ec3cf50 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x4d709a51 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x67c7ed9e qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x752ed7ce qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9c00395a 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 0x0409300d lc_reset +EXPORT_SYMBOL lib/lru_cache 0x04c619c1 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x109fe1b9 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x10fa0ccd lc_put +EXPORT_SYMBOL lib/lru_cache 0x27dbd620 lc_create +EXPORT_SYMBOL lib/lru_cache 0x3fdf7d77 lc_set +EXPORT_SYMBOL lib/lru_cache 0x68047920 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x6f221457 lc_del +EXPORT_SYMBOL lib/lru_cache 0x767f0e6a lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x7f99205a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x8d71f96e lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x94c91b07 lc_get +EXPORT_SYMBOL lib/lru_cache 0xe0624e62 lc_find +EXPORT_SYMBOL lib/lru_cache 0xf472e209 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xfa28e808 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xffa59875 lc_try_get +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 0xc405f178 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xe59c40ec register_8022_client +EXPORT_SYMBOL net/802/p8023 0xc8afa292 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xe306efe7 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x57d6eac9 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xd89a8629 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0091ad59 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x00ec49e6 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x0d3a7a18 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x13b50214 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1aa66579 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1ba0bec6 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x1d78a85d p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x26b93fb8 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x309cf08f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x30dbabaa p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37e6ad8b p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x37e930fa p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x4071d930 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x45c0910a p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x4bc098d3 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4d017ba9 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x50a421d4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x59fd313f p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x6895313c p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x6e0cc9ac p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x6f815e0e p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x72f08ba9 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x7ad1627c p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x90e89b01 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x91d5f512 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x98c947d3 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x9f4ed791 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xa0c94bd7 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xac662b75 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc0cf7081 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc907917e p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xca8666aa v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xcd67eac9 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xcd8da90d p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdde82d4b p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe20de054 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xe476936f p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe66a2e3f p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xf28a0ec7 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xf31522aa p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5ce5df1 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf8f232ac p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x3ce5570c alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xc84c5994 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xcde6641b atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xd33f9d53 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x00a2de5d atm_charge +EXPORT_SYMBOL net/atm/atm 0x0cc0cc81 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x20775126 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2f091368 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x436aaf2e atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x46523387 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x7c655469 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x97868d88 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb1151003 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xb5079e47 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xbcc0b0aa atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xc0fa9eaa atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xce341926 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xe5e40f61 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x0a9eb4e8 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x13e0d5e8 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x20afa9db ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2ad7a4c3 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x42016924 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4a363a79 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x657118c2 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9f35ed1f ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xb7eec59c ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc01bedfe ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0dc67b34 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x12afe0b0 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x13b4ecfc bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37f6409b hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4b4d5087 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x538e7a13 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62456cb7 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d048d74 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86651cf8 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b1187d9 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9d4d0439 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa512fc55 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa760aaa1 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf75349d bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb629fcc8 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe288179 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf3cebf2 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc269f220 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2c54ed8 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc913429b hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca39f010 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3905515 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc0bf0cb hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc0d638a hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdef735d5 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe24e100d hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2de3547 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb09d3a3 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb0fb3aa bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf210cdcd bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa0c6f03 hci_free_dev +EXPORT_SYMBOL net/bridge/bridge 0xdbc60371 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00cae740 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5e4f0ba3 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x64337b55 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x788f94f4 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x8896a9a3 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xcbd2be99 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xcd4e52c5 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xe86d9d0c caif_connect_client +EXPORT_SYMBOL net/can/can 0x2b107ed8 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x3e97dee8 can_send +EXPORT_SYMBOL net/can/can 0x5b67bb7e can_ioctl +EXPORT_SYMBOL net/can/can 0x5d59891f can_rx_unregister +EXPORT_SYMBOL net/can/can 0x708cdfc6 can_rx_register +EXPORT_SYMBOL net/can/can 0xcaf16ef7 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x013e8747 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x03777fef ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bd5dcf4 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x0d4de321 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x17dcb809 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x19f2176b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x1aa229d8 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x222dea4c ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x28198e06 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x2df30874 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x35f37412 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x37d165b4 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x3975c50b ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x3ab70e9d ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e9ffb9a ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3ea93e24 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x3f40c8ce ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x45623acc ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4a56a977 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x4bf97d7e ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x4c923b6d ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x50c29f3b ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57b7ef39 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5afe920a ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x5f516f58 ceph_get_direct_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 0x65b77447 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x69526315 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x6eef76a7 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x73fe0499 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x746a85d3 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x7627d173 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7a54b492 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x7bb2728d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7bd234b8 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x80158152 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x81cd3234 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x86ac89cd ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x87b33327 ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0x946f2baf ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa21c195a ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa4f4afc0 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xa5a80aa9 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa89351c4 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xaa74b91a ceph_osdc_create_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 0xbe701929 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc61616ba ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc8d8029b ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd88c5248 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdd237c87 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdeb3bdeb ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe5a89b0e ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe7d4baf1 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xec1a6a91 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xf6ab9050 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf6d385b6 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xf9b1f393 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xf9c37ee1 ceph_osdc_build_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x0ff06806 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x19565f9a ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2d8f38bd ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x300945f3 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x539ff7e1 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x588acd44 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x64826b8d ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8b076dc7 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x99738207 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9de54e18 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa4d40000 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xba8543c2 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc0037c20 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec877b0a wpan_phy_register +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0aa0f783 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x5de8706d arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe95e5978 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x801c01f2 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x96b7e009 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf69a5fdd ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x6d4e90dd xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xc55fddba xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x1f38add7 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa84a1c8e ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0abb5ddc ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd3e65fc8 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xf7245553 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x43d90f58 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x628c2898 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3bb757b5 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xa2caab50 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x21f4eb60 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x52de4c97 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5a08c473 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x931daca9 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xbfe04563 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc521f077 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdf0a4deb ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xea959421 ircomm_data_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 0x0c0c5bae irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x0dd507fc async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x41b59c8d irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x554bef8a irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x59009bd4 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5fc22b6a irttp_dup +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x61d0342e irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7eafa326 irlap_close +EXPORT_SYMBOL net/irda/irda 0x8287b0cf irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x83b78b50 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x86dd9a06 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x89bde68c irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9a2e1c1b irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x9dfe80e5 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa226ffab iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xa3a7c27b proc_irda +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xac2f5ad3 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xb73c8d0a irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc15b29d8 irlap_open +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd15302b2 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd38165ff irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdd9fd301 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xde266c0d irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe0f53634 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 0xed7cb40f iriap_close +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 0xfed808b1 alloc_irdadev +EXPORT_SYMBOL net/l2tp/l2tp_core 0xe7b79ad2 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x2148c76c lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x4516353f lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x65901e54 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x66b98e31 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x7c0b966b lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x7d2bb188 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xb9e6a1fd lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xc7520e3b lapb_register +EXPORT_SYMBOL net/llc/llc 0x131405b2 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x1d7984ca llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x2414816c llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3cfc8ce9 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x3ed9118e llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x8631b152 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xb29f197a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/mac80211/mac80211 0x0439e6e0 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x07b99e73 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x10216cb7 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x20dada7f ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x22f320cc ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x237645a0 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x25a515c8 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x2655ece1 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x2973273d ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x3686d6f8 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x445fb09b ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x45a46abc ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x484f8b81 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2be1c3 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x59522683 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5995eacd ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x5bad2eb2 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5c54e284 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x61c2a36b ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x65326d70 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x658b4647 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x67251c47 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x690f9136 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x693e1b1e wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6c80df04 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x70b32f48 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x70bb079f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x72380e85 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x7344e354 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x8c1014bc ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8e3312b9 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x909da5ef ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x9d40cc2e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa19e1128 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa411fb94 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa4aa4faa ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xa54e8f94 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa5b2adb9 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e9aebb ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xab782662 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb0cae866 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb114991c ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xb4dcc600 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xb64ea760 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xb7f99273 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xbff6bab6 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc328b1fa ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc8f8d2df ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xcbfd2789 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xd16f557e __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd19f5c60 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd2b6ad41 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xd7d79487 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfcdd9ee ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xe5450b91 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe7bc2c34 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0xe7fccd32 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xe820a7ad ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xea146f46 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xef0af0be ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xf0fb97f6 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf66af6a8 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xfb5e80d6 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xfb984075 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xfcdc6eec ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac802154/mac802154 0x1e707191 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x2b438994 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x6a3e127e ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0xa94603cc ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0xe1cdbdd1 ieee802154_alloc_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00c9ab14 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2d6bdd22 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x30a25312 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7f0da9c0 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8a026fac ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9ef4f56a register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaeef396e ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaf6294b6 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaf8179ff ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc12585f5 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe37ae540 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xed4afd6b ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf5ffc09c unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf7ecd379 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x1fa0ee0c __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xc671f137 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xe409291f nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x7de86e7c nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x1dd06822 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x5f935e8c __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x75818d6d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xaa87bd80 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xcbd998d9 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xdd8538bb nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/x_tables 0x046c1e96 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x1935b5b6 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x33b9a892 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3deefe02 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x8486aade xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8f7a69bc xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa9cb17fc xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xab57a82e xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xc2e84eb6 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xf2953e56 xt_find_match +EXPORT_SYMBOL net/nfc/hci/hci 0x064069ad nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x0e159f82 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x191c63e1 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x25e28446 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x28a461c0 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x44aa7abb nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x49e5ef55 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4a98b478 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x6318caaf nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x664623ca nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x6c8689bd nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x905a6944 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x983ae2c4 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xb661745e nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb9a9ecb9 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc2f8aade nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xe50f4c0b nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xf20e0608 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x05ef17aa nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1c1c50ed nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x3c5dd975 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc5a7e8a6 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xf83ad36f nci_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x00483b74 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x064b7e03 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x555f8880 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x5c83d43e nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x6943f1e7 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x6aaba284 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x7e6155ad nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x887cac72 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x91bc2354 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa39517f0 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xafef8db7 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xc67591fa nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xcbaa6137 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xce274925 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xfd9f3bdc nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xff023801 nfc_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x144814b2 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x1656f1ba pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x18f84a71 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xa2c2d78e phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xbb06722d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xdf37d84a pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xf5155dff pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xfcbfca5c pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0a360ae3 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x38461744 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x50203f11 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x59e2b77a key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x746dba4c rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x94ca596c rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa2e48b1e rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb3e83ed4 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbb239bdd rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc021eb61 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc788e6b6 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd191d6f7 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe7ab3f48 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xeaf478ea rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf2ddd9f4 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0x92fb32cf sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd6f64dab svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x1f2ee487 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0xe25dedd6 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xec43e493 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x005e4ca3 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x040d7c06 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x073acf66 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x185a3f80 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x208fd849 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x2209bf89 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x236bd21f wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2c2235f7 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2d08440b cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x2fa74410 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x31fe25ba cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x33ba979d cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x3a40d898 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x3c2217de cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x51e749a7 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x5517768e cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x552c118a wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x58f4da83 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x590268cb ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x5abeed38 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x5c04eef9 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x5cc88516 cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x5ef218d9 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x62312c68 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6afc651a cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x6c912b84 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x6d4e77a4 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x7128ce59 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x74e5d338 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7a55bf37 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7b440782 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f09518e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80a02aa5 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x80eebd95 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x81404b48 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8177100a cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x85dee7eb __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x87b69983 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x88391fba cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x8a16911a cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8c4a598e cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x905bbbf1 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x90b67516 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x92afce96 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x94f6dac5 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9b1f8436 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9d525523 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9f80f9f6 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x9fc3a6f7 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa62f636a cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xa6587c1d cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xaa372a45 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xb4b2d4a4 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb8a7309e cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xbb9fdd49 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xbe92fa8a __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xc0bb68b4 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xc5c0c38a cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd4ae6424 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xd879e07a cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xdadd195a cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xdae54ca7 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdfeb6f57 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xe1ecc430 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0xe4749d68 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xe7ff4c73 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xeb870bce cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0xef892aad regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xf0bca547 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xf33af577 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xf96be340 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xf9c8a30d cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xfa7d87f9 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x1ca2735d lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x265f4a5f lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0xb7a8b003 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xcf3f40e4 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xe3516447 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xf6379346 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x939cb171 ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x12062304 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 0x2bd46edf snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0x877d982e 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 0xba982f4d snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x16d7eb5b snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb7954641 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xccaf4861 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0305dfc3 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x08cfb344 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x0a44dbb9 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x0e5103a5 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x11d3170d snd_device_new +EXPORT_SYMBOL sound/core/snd 0x13c9efdd snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x21946742 snd_info_create_card_entry +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 0x372999ca snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x37fd41f8 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x40143602 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x48815341 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4af5f065 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4b67b298 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x4d8c813f snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x4eda4461 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x541f1ea4 snd_card_create +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x646c7997 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x709dba10 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7103b270 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x771300c3 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x77a6e239 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x78d6aecb snd_device_free +EXPORT_SYMBOL sound/core/snd 0x7aad9433 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x7f80fd9e snd_component_add +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x85eddf48 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x8b33cb3e snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x94bcc1ec snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x9e47dd81 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x9e630d2f snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa038d79f snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xad479223 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xae12efe8 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb30e98d9 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xb551486f snd_cards +EXPORT_SYMBOL sound/core/snd 0xc4d31cfe snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xc95658ab snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcec7a29e snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xcf61b4cb snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xdc9a8ec7 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xe483bfe8 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xe7404f9d snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xe7a58b98 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xf803daee snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xf86e3c07 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xfbfd3e82 snd_jack_report +EXPORT_SYMBOL sound/core/snd-hwdep 0x3528eef8 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x0ebd59e4 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x100a1c63 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1a2eac13 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x50b5feeb snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x8aadf696 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x1b7b4cc8 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x24cd75d6 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x2515d4db snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x2bc798f7 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x2c710b25 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x2fcdadbc snd_pcm_set_ops +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 0x408772a0 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x4bb4824b snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4cfa1fcd snd_pcm_lib_read +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 0x5052e904 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x528a136f _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x52b01a27 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x54f9b67f snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x5d2fea8a snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x60d64963 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x63defc3d snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7564533a snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x88c3ed25 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x8ac136bb snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x8ad972b6 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x8cb7a6d5 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa2561130 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xa4c4ff74 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xaf936020 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xb1dd5249 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xb2849d00 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc096f518 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xc3617bf9 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xc887216b snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xcbe47865 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xcc3c2a85 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xd30e83b8 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd5384578 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd745692a snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xd796d3ae snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd854fdbf snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd9bddb68 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xe1b8ede0 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xedb327b9 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf7f5f9ef snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xfb1c7897 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xfb7ed47e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x24f01e22 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x413d8bee snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x49046572 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x636685c6 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7fdbad76 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x810186ed snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8e906ee9 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9017c93f snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa68f9274 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb2f01dd0 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc1263da1 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcdc303f7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd29d3302 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe8f35c3c snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea016ee4 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea4c68fa snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf138cec5 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-timer 0x0eb2bab8 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x157e7784 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x1f31f196 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x31ffda43 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x32692cab snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x4b0d346a snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x5afd08d4 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x6bc995de snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x7023ef13 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x771d7dc2 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x89af4e47 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xd7feb2a1 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xf2edcc23 snd_timer_global_register +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x318b6c1c snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1a490d47 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x252278cb snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5116e155 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x53f7a7f0 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5be6bcf8 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6a3ad6f8 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6e172143 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x70f4a00c snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x74871901 snd_opl3_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1b46901b snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x356c67ea snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x86d61a67 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xaafc01ae snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb157ad7c snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb29648f9 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb5b0eb84 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd1e42ae0 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd7aa0fe5 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05c33d06 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x09b2c653 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x184d93af amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1942b9c4 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x25818c56 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32ea4bb3 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x33ec5496 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35a83752 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3af47d38 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4008f1e3 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x44f79029 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x503e1711 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53761e4e amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x621f97b2 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x72a82033 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7878782d fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x818e8823 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x90de854b cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x933ef6b9 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9acf55f3 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbab90df7 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf2690af amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc30e1ab5 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc9287ab4 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe2a2dcf9 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeda0d118 iso_packets_buffer_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1d896f3b snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x27abb0ac snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5b4d9a8e snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd1d79cec snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf83c8399 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf9f87c48 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x09fed007 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x18e8375d snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2c0515c8 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x799e62cc snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8861a89a snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xefa51946 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x7d403d75 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x87f4ff0b snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd89ff1bd snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe2febb3f snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x2b17ad69 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xedcef967 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x8a5ee138 snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xd28deed5 snd_tea575x_set_freq +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xdb10475f snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4222b434 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6cabac1b snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7b32b91c snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xaacdb254 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf28ee6e3 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x11fe141d snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x15ea06ce snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x25598d3f snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5d06f2c5 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xafce5ca6 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xcd86ed70 snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x363adf60 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3ab5e788 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4206fdfa snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x42a71d16 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4b3b74f8 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x51001918 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7e03fb82 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8ea15358 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbe36c4fd snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd6c03934 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x0e2a667e snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x602ea5f1 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xd00c8721 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 0x312d4193 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3f8f5a33 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f0969f4 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x568c9aeb snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x577fb6c6 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5b0388cb snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x813c129f snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa685d763 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb3018ae1 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb56cddfb snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbabb34dc snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbd6e191e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc880f608 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xceb62369 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd33cfc5f snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xeed086f0 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfccbb912 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1b2638b4 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3df58821 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x605f3bc3 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x762973e6 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8f99ca5a snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9daff1f8 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xae87e23c snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbe6ab081 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdfeb9d9d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xaa593ce3 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4b5cf878 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x70de4453 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xdf712cc7 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x088c8d19 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0ccf2285 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2585e0c9 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x33672797 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x38437d36 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44d30ffa oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4c4f938d oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x51c4303c oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x695f49b9 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6e18893a oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x81498524 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9b312c8d oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa7a74498 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb589e5e0 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb84897d3 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc0f39aca oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc8ac99f5 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdf4e0e7a oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xede87659 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfae15c97 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2004b004 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6014e083 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x66b924be snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x781232bd snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc115c45c snd_trident_start_voice +EXPORT_SYMBOL sound/soundcore 0x3eb600ab sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x05c58053 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x451d2b8c snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x51e082a3 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x569459eb 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 0xd916ded8 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe34468da snd_emux_register +EXPORT_SYMBOL sound/synth/snd-util-mem 0x22e857a7 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3872f2ae __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4ea63a78 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4ff375b0 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7b0c4def snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7e5f084f snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x890a0eeb snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb90440ec snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x54fcc026 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 0x002203ff qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0x00285870 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x0046da11 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x00473734 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x0055cf88 journal_set_features +EXPORT_SYMBOL vmlinux 0x00673308 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x006ff008 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x007e8a34 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x008d7b68 inet6_getname +EXPORT_SYMBOL vmlinux 0x0095697b kill_pid +EXPORT_SYMBOL vmlinux 0x00975109 pme_ctx_is_dead +EXPORT_SYMBOL vmlinux 0x00b99c9d gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0103b696 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x01078825 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011eb80a simple_transaction_get +EXPORT_SYMBOL vmlinux 0x0125b221 pci_set_master +EXPORT_SYMBOL vmlinux 0x013a17fb lease_get_mtime +EXPORT_SYMBOL vmlinux 0x0142858c mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x016894b2 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x018a8058 inet_addr_type +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019ba1c3 sock_update_classid +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01b19c73 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x01b6bc0a dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x01c660cb inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x022705fa bio_reset +EXPORT_SYMBOL vmlinux 0x022bc546 sk_stream_error +EXPORT_SYMBOL vmlinux 0x022e5399 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x022ea0ff blkdev_fsync +EXPORT_SYMBOL vmlinux 0x023442d9 _dev_info +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026a22d7 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a61c55 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02d9ea2b wireless_send_event +EXPORT_SYMBOL vmlinux 0x02e634b0 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x0314de80 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03383736 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03757c9b of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037bdf32 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x03a6f227 of_get_property +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c3e80b dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x040b38d2 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x0416efb5 sock_no_connect +EXPORT_SYMBOL vmlinux 0x041f9a5e kthread_stop +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045416cc mach_p5040_ds +EXPORT_SYMBOL vmlinux 0x04603b95 phy_attach +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x047321b1 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04fb4c79 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0539b555 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x0550bfb6 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x0551ea40 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x05606d84 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x056fcdc7 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x057acea5 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05b14aff skb_clone +EXPORT_SYMBOL vmlinux 0x05c233f8 inet_bind +EXPORT_SYMBOL vmlinux 0x05c7c35e qman_get_null_cb +EXPORT_SYMBOL vmlinux 0x05d4bea2 icmp_send +EXPORT_SYMBOL vmlinux 0x05e63a8a twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x05fd3788 do_splice_to +EXPORT_SYMBOL vmlinux 0x060c609d tty_port_destroy +EXPORT_SYMBOL vmlinux 0x06121cc8 setattr_copy +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064150f4 dev_set_group +EXPORT_SYMBOL vmlinux 0x06482d48 __frontswap_store +EXPORT_SYMBOL vmlinux 0x06489d52 bman_rcr_is_empty +EXPORT_SYMBOL vmlinux 0x065022b7 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067e1f50 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x068f45a7 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x0697c4b5 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x0698412e dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x06a2b7d6 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x06a62c6d dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06ce6052 dquot_acquire +EXPORT_SYMBOL vmlinux 0x06d53eba ether_setup +EXPORT_SYMBOL vmlinux 0x06e951cd skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x06ec521f sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x06fa3f03 genl_register_ops +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06fe604c __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x0701123d mutex_lock +EXPORT_SYMBOL vmlinux 0x0706b279 set_nlink +EXPORT_SYMBOL vmlinux 0x071ab9f0 input_allocate_device +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x073db22b dquot_free_inode +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075451aa devm_usb_get_phy +EXPORT_SYMBOL vmlinux 0x0755a70d ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x077e4091 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07ae2d2c jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x07bbc5aa buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x08134554 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08409ccb pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x0842184b pipe_to_file +EXPORT_SYMBOL vmlinux 0x0854f7d5 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x0878f6a9 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x08a79bc1 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x08d0e49d padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x08d91141 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x08ea9622 nf_reinject +EXPORT_SYMBOL vmlinux 0x09201e26 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x09243ea8 put_disk +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09882f98 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09970108 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x09a47c56 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c79f9c journal_stop +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09fd93b4 qman_create_fq +EXPORT_SYMBOL vmlinux 0x0a17c24a dma_direct_ops +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a6b3334 input_set_capability +EXPORT_SYMBOL vmlinux 0x0a6c5479 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x0a75f397 xfrm_input +EXPORT_SYMBOL vmlinux 0x0a784e5e __module_get +EXPORT_SYMBOL vmlinux 0x0a9f6d59 pme_attr_set +EXPORT_SYMBOL vmlinux 0x0ab6f648 udp_seq_open +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af5db0f neigh_event_ns +EXPORT_SYMBOL vmlinux 0x0af96124 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1a4c8f of_match_device +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b25a16d key_validate +EXPORT_SYMBOL vmlinux 0x0b2cdbc7 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5d0592 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x0b5e06d0 blk_peek_request +EXPORT_SYMBOL vmlinux 0x0b6142c8 rt6_lookup +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7a18cd devm_iounmap +EXPORT_SYMBOL vmlinux 0x0b84a707 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x0bbb8c3d inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c07ebf2 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c4dca88 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x0c57d3e8 ida_destroy +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c6ac1f2 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x0c6ed2b4 phy_detach +EXPORT_SYMBOL vmlinux 0x0c77563d follow_down +EXPORT_SYMBOL vmlinux 0x0c84b43d mmc_erase +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 0x0cc95c16 kill_anon_super +EXPORT_SYMBOL vmlinux 0x0ce92876 try_to_release_page +EXPORT_SYMBOL vmlinux 0x0ce9a783 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x0cf4c8a5 input_reset_device +EXPORT_SYMBOL vmlinux 0x0d2824c9 neigh_destroy +EXPORT_SYMBOL vmlinux 0x0d2e303e set_bh_page +EXPORT_SYMBOL vmlinux 0x0d403b9f devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x0d51adff filp_open +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d6dbe24 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x0d95af4b blk_requeue_request +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db7c5c6 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x0dd0ee8c sk_common_release +EXPORT_SYMBOL vmlinux 0x0e300bf7 schedule_work +EXPORT_SYMBOL vmlinux 0x0e39f9dc pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0e487a50 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x0e566368 skb_dequeue +EXPORT_SYMBOL vmlinux 0x0e6057ac vfs_rename +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e96e9f8 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x0ea0ab13 textsearch_register +EXPORT_SYMBOL vmlinux 0x0ec1e612 vga_put +EXPORT_SYMBOL vmlinux 0x0ee32f80 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x0ef69857 pme_ctx_pmtcc +EXPORT_SYMBOL vmlinux 0x0ef75b4d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x0f0bfcd6 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x0f1baf8b phy_attach_direct +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f42dd9e padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f8c0149 pme2_have_control +EXPORT_SYMBOL vmlinux 0x0f9316c8 fm_mutex_unlock +EXPORT_SYMBOL vmlinux 0x0f953732 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x0fa230dc pci_iomap +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fc734bf ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x0fcad5ef serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x0fd1930f pci_enable_ido +EXPORT_SYMBOL vmlinux 0x102cf726 __sock_create +EXPORT_SYMBOL vmlinux 0x103145b7 sock_register +EXPORT_SYMBOL vmlinux 0x10329f38 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x10424c5b bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x105bbca8 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x106cb48b agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x1075a83c tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x107c2e4e path_is_under +EXPORT_SYMBOL vmlinux 0x10b7ddcc sk_free +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f42a7f release_pages +EXPORT_SYMBOL vmlinux 0x110582dd blk_put_queue +EXPORT_SYMBOL vmlinux 0x110635c1 seq_vprintf +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11138b48 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112c79f8 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x11398531 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x113e12a4 module_put +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1170740f dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x11a17222 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x11b6e51e flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11ef500c max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fd693 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x120ff3da find_get_page +EXPORT_SYMBOL vmlinux 0x1217177c freeze_bdev +EXPORT_SYMBOL vmlinux 0x12655ba4 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x12785155 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12c29bb9 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x12cba7be dev_deactivate +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12daa685 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x12dfcfd4 register_console +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x12fc7ac8 vfs_open +EXPORT_SYMBOL vmlinux 0x1323aca6 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13625ce5 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x1369b0a8 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x13767956 qman_enqueue +EXPORT_SYMBOL vmlinux 0x138b9ad3 skb_store_bits +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13c586d7 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13da469b of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x1417e0f8 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x144b85a5 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x1462892b sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x147e5e09 d_find_alias +EXPORT_SYMBOL vmlinux 0x148ea187 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x14996e0b input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x14a134d5 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x14aa9bb5 register_key_type +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x14fbda39 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x14fff040 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x152a96b6 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x153becfb end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x153c75ab set_page_dirty +EXPORT_SYMBOL vmlinux 0x1549ff31 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x154b53bb phy_disconnect +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154faec0 journal_init_dev +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15534d90 switch_mmu_context +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x1571f881 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x157fcd40 __find_get_block +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x159e5517 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x15be44dc tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x15e42445 skb_append +EXPORT_SYMBOL vmlinux 0x15e66771 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x15eccd65 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x164451ef pme_ctx_reconfigure_rx +EXPORT_SYMBOL vmlinux 0x164bd884 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x16785b11 md_check_recovery +EXPORT_SYMBOL vmlinux 0x168cb64a datagram_poll +EXPORT_SYMBOL vmlinux 0x168cf419 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x168f02f9 fm_get_handle +EXPORT_SYMBOL vmlinux 0x16931c9c pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x169f22f7 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x16a1c532 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x16a58108 log_start_commit +EXPORT_SYMBOL vmlinux 0x16a70e11 noop_qdisc +EXPORT_SYMBOL vmlinux 0x16af620b generic_file_mmap +EXPORT_SYMBOL vmlinux 0x16c0a774 unbind_con_driver +EXPORT_SYMBOL vmlinux 0x16d05833 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x16e2d3d7 __bio_clone +EXPORT_SYMBOL vmlinux 0x1728a7ef kern_unmount +EXPORT_SYMBOL vmlinux 0x172b53fd mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x172edf69 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1734f1f2 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x173c14fa revert_creds +EXPORT_SYMBOL vmlinux 0x1756b52a block_invalidatepage +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1790ad84 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +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 0x180333a4 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x1816e09c mdio_bus_type +EXPORT_SYMBOL vmlinux 0x181e2efa mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x18265aac vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x182e78e5 input_flush_device +EXPORT_SYMBOL vmlinux 0x1831ab3e dquot_scan_active +EXPORT_SYMBOL vmlinux 0x183f6d25 mmc_remove_host +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 0x184fb3bd block_commit_write +EXPORT_SYMBOL vmlinux 0x18648729 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x1868af5e alloc_disk_node +EXPORT_SYMBOL vmlinux 0x1870f8c1 qman_fqid_pool_alloc +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18ac5d11 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x18de81f6 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x1903902d tcp_make_synack +EXPORT_SYMBOL vmlinux 0x1914024a account_page_dirtied +EXPORT_SYMBOL vmlinux 0x194cb0b7 elv_rb_add +EXPORT_SYMBOL vmlinux 0x19570ee5 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x19704917 dma_pool_create +EXPORT_SYMBOL vmlinux 0x19717ef3 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x198039e2 generic_write_end +EXPORT_SYMBOL vmlinux 0x19932eab dcb_getapp +EXPORT_SYMBOL vmlinux 0x199e2fe8 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b9715e xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d7cfe6 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x19e317b1 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x19e5f43d __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x19eeb8ee pcim_enable_device +EXPORT_SYMBOL vmlinux 0x19fac4dd pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x19fb730a atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x19fe0d3e inet_select_addr +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a253cbb ata_dev_printk +EXPORT_SYMBOL vmlinux 0x1a7e232e ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x1a816537 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x1a93ed32 km_state_expired +EXPORT_SYMBOL vmlinux 0x1a945a6c phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x1aad8041 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x1abca249 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x1ac97a18 file_remove_suid +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad23975 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1ad479eb blk_sync_queue +EXPORT_SYMBOL vmlinux 0x1adad1cb scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x1ade844c thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x1ae59f97 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b09e53f blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b0b9f11 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b346842 register_netdev +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6d2cee scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1b6e3305 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8b9645 d_delete +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bf3ae59 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x1c09aba3 qman_static_dequeue_get +EXPORT_SYMBOL vmlinux 0x1c1a350c blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x1c1e97dd generic_permission +EXPORT_SYMBOL vmlinux 0x1c33ebc2 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x1c56e52a dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x1c6a4cf8 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x1c6b45ff mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x1c716152 tty_write_room +EXPORT_SYMBOL vmlinux 0x1c71fda3 proc_symlink +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c9294ba iunique +EXPORT_SYMBOL vmlinux 0x1cb94fc7 finish_no_open +EXPORT_SYMBOL vmlinux 0x1cbb03bb __devm_release_region +EXPORT_SYMBOL vmlinux 0x1cbe1b60 block_write_full_page +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cf27a8b simple_transaction_set +EXPORT_SYMBOL vmlinux 0x1d2c2f01 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x1d434030 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x1d68602e pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x1d6aed0a security_path_unlink +EXPORT_SYMBOL vmlinux 0x1d6e6c01 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x1d84720e mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x1d94167f __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1d98caaa nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x1d99d73d padata_add_cpu +EXPORT_SYMBOL vmlinux 0x1da56949 simple_rename +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db0063b __i2c_transfer +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd46b90 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de4c400 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x1debf617 dump_seek +EXPORT_SYMBOL vmlinux 0x1dfa6a37 file_open_root +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e5b3722 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x1e6295e3 tty_check_change +EXPORT_SYMBOL vmlinux 0x1e69be85 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x1e6a66f3 phy_init_eee +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e856bea jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb6b8ad dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x1ed65f03 dev_mc_del +EXPORT_SYMBOL vmlinux 0x1f5ad908 pme_attr_get +EXPORT_SYMBOL vmlinux 0x1f6c3bff twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8a1a22 mb_cache_create +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcd306a input_unregister_handler +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20056746 ifla_policy +EXPORT_SYMBOL vmlinux 0x201a1fdd __break_lease +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207db5b3 dentry_open +EXPORT_SYMBOL vmlinux 0x208b4746 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x20906af6 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20c3161b key_put +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c8ce4b handle_edge_irq +EXPORT_SYMBOL vmlinux 0x20ce6946 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x20f6f2d9 __register_binfmt +EXPORT_SYMBOL vmlinux 0x21058868 sock_create +EXPORT_SYMBOL vmlinux 0x210bc4cb devm_gpio_request +EXPORT_SYMBOL vmlinux 0x21176c85 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x211861be xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x2120aee4 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x213f412a __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2142c9d3 I_BDEV +EXPORT_SYMBOL vmlinux 0x2143b15a pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x215f5e5c pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x216f7c5d blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x21794bdb ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x218ef0cd blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x21ad37bc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2256d9c9 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x2262c470 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x2265b514 qman_get_portal_config +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22a2e614 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d73c62 bman_get_params +EXPORT_SYMBOL vmlinux 0x22f4378c file_sb_list_del +EXPORT_SYMBOL vmlinux 0x22f7960e tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2329b345 seq_write +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2371c5ba phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x238425f5 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x2394ef8e skb_seq_read +EXPORT_SYMBOL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ae8b51 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23d73e98 dquot_release +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2407f4bd scsi_register +EXPORT_SYMBOL vmlinux 0x240a2ba5 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x240bc561 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x241514c4 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242eb48b pci_disable_ido +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24439e62 kobject_get +EXPORT_SYMBOL vmlinux 0x2446536d generic_write_sync +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x245b79fd vfs_readv +EXPORT_SYMBOL vmlinux 0x246e66d7 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x248c348b unregister_console +EXPORT_SYMBOL vmlinux 0x2497d32a sg_miter_next +EXPORT_SYMBOL vmlinux 0x24a2c5e7 vc_cons +EXPORT_SYMBOL vmlinux 0x24a972c4 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x24bcedaf f_setown +EXPORT_SYMBOL vmlinux 0x24d38564 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x24d690f9 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x24df0291 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x24eaf918 netdev_update_features +EXPORT_SYMBOL vmlinux 0x24f2ac5e skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25042375 tty_free_termios +EXPORT_SYMBOL vmlinux 0x2506b784 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x251c42a9 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252bcf37 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x2533dda1 bman_query_pools +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25663bfe ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a72560 clear_inode +EXPORT_SYMBOL vmlinux 0x25aa11c9 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25c8d1e0 simple_rmdir +EXPORT_SYMBOL vmlinux 0x25cc3724 inet6_release +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x25f9b648 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x26050eed led_blink_set +EXPORT_SYMBOL vmlinux 0x26084caa ps2_end_command +EXPORT_SYMBOL vmlinux 0x262391ab uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x26324402 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2663870b do_splice_from +EXPORT_SYMBOL vmlinux 0x266e8f88 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26972ea8 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26cbc3f8 iterate_mounts +EXPORT_SYMBOL vmlinux 0x26dc91c0 journal_update_format +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ef6779 __serio_register_port +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26f8a84e dev_uc_del +EXPORT_SYMBOL vmlinux 0x27279fe6 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x273f4276 phy_device_register +EXPORT_SYMBOL vmlinux 0x27434820 cdrom_release +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2753ee3d serio_interrupt +EXPORT_SYMBOL vmlinux 0x27674be4 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x2778c7d5 fget_raw +EXPORT_SYMBOL vmlinux 0x2778c81a dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x277acc78 sock_no_poll +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27966e81 dquot_file_open +EXPORT_SYMBOL vmlinux 0x279ac530 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x27b2d695 agp_backend_release +EXPORT_SYMBOL vmlinux 0x27b53139 pme_fd_cmd_pmtcc +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27cd924e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27faed3e proto_register +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281ea116 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x282df919 neigh_table_init +EXPORT_SYMBOL vmlinux 0x282ffa11 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x284fee32 noop_llseek +EXPORT_SYMBOL vmlinux 0x2865dcb9 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x2880a649 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x288f3f4d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x28993924 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28be1b78 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x28d4bff7 sock_create_lite +EXPORT_SYMBOL vmlinux 0x29034b09 fm_port_bind +EXPORT_SYMBOL vmlinux 0x2926d30d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29547e2b phy_stop +EXPORT_SYMBOL vmlinux 0x299b9390 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x29a67db1 bman_recovery_cleanup_bpid +EXPORT_SYMBOL vmlinux 0x29ae2ffc kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x29e6d0b0 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3da3ee validate_sp +EXPORT_SYMBOL vmlinux 0x2a5df6e7 simple_release_fs +EXPORT_SYMBOL vmlinux 0x2a639620 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x2a8f8908 finish_open +EXPORT_SYMBOL vmlinux 0x2a9484c8 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x2a94d404 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aba0607 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x2abdc35f filp_close +EXPORT_SYMBOL vmlinux 0x2abecb61 lock_may_write +EXPORT_SYMBOL vmlinux 0x2ac35d93 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x2ad64fd0 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x2aec6ac0 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x2afd06e8 blkdev_put +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12f94e scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x2b21d2db scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x2b29eb81 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b333f69 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x2b39aee0 bman_release +EXPORT_SYMBOL vmlinux 0x2b42220a netif_napi_del +EXPORT_SYMBOL vmlinux 0x2b54d6c2 skb_split +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bae8c79 init_buffer +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2bdfe5a0 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2c00bdf3 kset_register +EXPORT_SYMBOL vmlinux 0x2c011ea2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x2c04dc02 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x2c085e1a fb_show_logo +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c15b412 get_super_thawed +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c323670 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x2c45c250 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x2c6344be dev_uc_init +EXPORT_SYMBOL vmlinux 0x2c720a29 km_state_notify +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7bd8bb __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2c97e439 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x2ca8ecd9 dev_alert +EXPORT_SYMBOL vmlinux 0x2cb4d604 soft_cursor +EXPORT_SYMBOL vmlinux 0x2cd5adac nf_register_hooks +EXPORT_SYMBOL vmlinux 0x2ce6c013 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x2cf07716 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x2cf2ebf0 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x2cfb8378 qman_stop_dequeues +EXPORT_SYMBOL vmlinux 0x2d106744 journal_abort +EXPORT_SYMBOL vmlinux 0x2d109599 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d20ccc8 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d4c2ba8 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x2d6145d2 blk_start_queue +EXPORT_SYMBOL vmlinux 0x2d722203 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d9f87ba __block_write_begin +EXPORT_SYMBOL vmlinux 0x2db33ad4 iget5_locked +EXPORT_SYMBOL vmlinux 0x2de827e9 pci_get_device +EXPORT_SYMBOL vmlinux 0x2deb69cb mapping_tagged +EXPORT_SYMBOL vmlinux 0x2ded79bd mmc_free_host +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df677e8 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x2e149d78 simple_getattr +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e24a851 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x2e2911e3 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3066e0 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x2e48bdcf qman_poll_dqrr +EXPORT_SYMBOL vmlinux 0x2e7adfb5 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x2e7e3e3a seq_read +EXPORT_SYMBOL vmlinux 0x2e94a3b9 softnet_data +EXPORT_SYMBOL vmlinux 0x2e994f26 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x2eb30ae8 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecdfff5 tty_unlock +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2ef9b411 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0fc1c1 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x2f236715 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x2f29851f md_register_thread +EXPORT_SYMBOL vmlinux 0x2f3e0df9 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x2f566cce of_match_node +EXPORT_SYMBOL vmlinux 0x2f66ad21 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x2f70bfbd blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc11c61 vfs_getattr +EXPORT_SYMBOL vmlinux 0x2fcc8869 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x2fdb5416 bdevname +EXPORT_SYMBOL vmlinux 0x2fe0a910 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x3010816b nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x30158ef7 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30317b55 d_splice_alias +EXPORT_SYMBOL vmlinux 0x3040440e inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x304b2b73 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x30520897 padata_free +EXPORT_SYMBOL vmlinux 0x30763a17 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30c683a9 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31057f3e __dquot_free_space +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310fa909 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314eef5b phy_device_create +EXPORT_SYMBOL vmlinux 0x316feaf1 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a6e7f7 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x31c15689 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x31ecc990 __ps2_command +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f0e727 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x31f7d40a pme_fd_cmd_fcw +EXPORT_SYMBOL vmlinux 0x320aa5b0 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x322425e7 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x32424b34 qman_query_wq +EXPORT_SYMBOL vmlinux 0x3259333f bdget +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x32860d7e qman_fqid_pool_free +EXPORT_SYMBOL vmlinux 0x3287a3d9 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32ad64b7 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x32b83e13 simple_fill_super +EXPORT_SYMBOL vmlinux 0x32bb04c8 from_kqid +EXPORT_SYMBOL vmlinux 0x32ce2182 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x32d7b256 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x32f954dc __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x330cd5c6 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x330db015 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x3317dbb6 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x3334f5a3 kernel_connect +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x337fe359 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x33aa48f2 qman_static_dequeue_del +EXPORT_SYMBOL vmlinux 0x33b2518f alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c41702 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3402d1c9 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x340cd625 vmap +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342037e1 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x344b10fb writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x34561905 pme_ctx_enable +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x3498e1a8 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x349c8d62 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349d760a generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x34a5e13f freeze_super +EXPORT_SYMBOL vmlinux 0x34ac810b mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x34c3ca44 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x34cf48aa register_con_driver +EXPORT_SYMBOL vmlinux 0x34d20874 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x34db937b set_create_files_as +EXPORT_SYMBOL vmlinux 0x34e9e888 ping_prot +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3512fcf3 single_release +EXPORT_SYMBOL vmlinux 0x352543d1 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x35362ebb swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x354181f6 address_space_init_once +EXPORT_SYMBOL vmlinux 0x3557fbca elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x356887a4 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x358b6a8a inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35b9ac38 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35f4e367 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x363e5059 kernel_listen +EXPORT_SYMBOL vmlinux 0x36427da6 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x3648a47e flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x365dbbe1 devm_clk_get +EXPORT_SYMBOL vmlinux 0x366191f5 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x3678f716 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x36815df7 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x3683e8a1 security_inode_permission +EXPORT_SYMBOL vmlinux 0x36841cc3 netlink_set_err +EXPORT_SYMBOL vmlinux 0x368f8cc4 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bc55ae ps2_command +EXPORT_SYMBOL vmlinux 0x36d8e843 flush_old_exec +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f9cd94 rcu_is_cpu_idle +EXPORT_SYMBOL vmlinux 0x36f9f72b xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x36fa15a6 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x370d37ba eth_header_parse +EXPORT_SYMBOL vmlinux 0x371762cf kunmap_high +EXPORT_SYMBOL vmlinux 0x3718d900 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3745629e generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x375c76e2 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x3774c9b7 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x3777ca4e fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x377fd9ee ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x378acc77 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x37908163 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x37a7af1d __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x37a9eb07 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x37ab0188 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f9c000 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381b82ee inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x38358306 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x3862dfe2 page_address +EXPORT_SYMBOL vmlinux 0x386e3c70 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x386f69f9 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x388051dc input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388e39ce qman_oos_fq +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38e96773 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x39094f69 arp_tbl +EXPORT_SYMBOL vmlinux 0x390c519f dev_uc_sync +EXPORT_SYMBOL vmlinux 0x39237c1f notify_change +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3942b6f7 release_firmware +EXPORT_SYMBOL vmlinux 0x3955ab65 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x395af0e6 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x3978c9a6 register_qdisc +EXPORT_SYMBOL vmlinux 0x397b86c4 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3980d307 neigh_lookup +EXPORT_SYMBOL vmlinux 0x398b83e4 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x39a6d144 nobh_writepage +EXPORT_SYMBOL vmlinux 0x39b4f60d blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39dc8ee5 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x3a1605a0 vm_insert_page +EXPORT_SYMBOL vmlinux 0x3a55d42b pci_map_rom +EXPORT_SYMBOL vmlinux 0x3a60c210 register_filesystem +EXPORT_SYMBOL vmlinux 0x3a664fcf cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x3a6e0a67 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x3a8b5373 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x3a8c3b35 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x3a93862d flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x3a98333f generic_fillattr +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa295b4 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x3abdcecd tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x3ac0fe6c pipe_unlock +EXPORT_SYMBOL vmlinux 0x3ac238d6 ilookup +EXPORT_SYMBOL vmlinux 0x3ae74294 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b36fe3d pme_hw_residue_new +EXPORT_SYMBOL vmlinux 0x3b53a29d of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b6a7f2e unlock_page +EXPORT_SYMBOL vmlinux 0x3b73b243 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x3b95f829 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x3b9bc096 fasync_helper +EXPORT_SYMBOL vmlinux 0x3bb191d6 lock_rename +EXPORT_SYMBOL vmlinux 0x3bbd6fe6 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd685c8 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfe176c nla_reserve +EXPORT_SYMBOL vmlinux 0x3c07c73c tty_unthrottle +EXPORT_SYMBOL vmlinux 0x3c3193b1 sock_create_kern +EXPORT_SYMBOL vmlinux 0x3c322dd5 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x3c509c73 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x3c645467 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cd44dc3 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x3cd6280d xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd8b34e key_revoke +EXPORT_SYMBOL vmlinux 0x3deb18c1 end_page_writeback +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1407c8 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x3e2450fb inet_frags_init +EXPORT_SYMBOL vmlinux 0x3e25af38 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x3e2cf200 bio_map_user +EXPORT_SYMBOL vmlinux 0x3e2fcec9 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x3e379720 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4d223c pme_ctx_init +EXPORT_SYMBOL vmlinux 0x3e69b342 elv_rb_find +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e977b58 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ec91fea inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee7d413 journal_destroy +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f23c4b4 get_super +EXPORT_SYMBOL vmlinux 0x3f33148c elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f580583 __elv_add_request +EXPORT_SYMBOL vmlinux 0x3f69f5a3 drop_nlink +EXPORT_SYMBOL vmlinux 0x3f7eb0c7 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x3f841b6b nonseekable_open +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fd3d759 simple_write_end +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3fed1815 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x3ff349cb tcp_connect +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x3ffd5b98 update_time +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406e0a44 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x407504e5 abort_creds +EXPORT_SYMBOL vmlinux 0x40801047 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x408f9806 neigh_for_each +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 0x40b57158 pme_initfq +EXPORT_SYMBOL vmlinux 0x40beb95b gen_pool_free +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40e32c3e pci_request_region +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40f2c82d input_open_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41561064 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x415cf622 d_make_root +EXPORT_SYMBOL vmlinux 0x4162edfe __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x4168619e bman_pool_max +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418f6cf2 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x41973d65 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x41d66f67 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x4204f377 get_disk +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x4213b3b7 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x42581bcb generic_writepages +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427b65b6 pci_find_bus +EXPORT_SYMBOL vmlinux 0x428f24f9 posix_acl_create +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ab315b pci_enable_device +EXPORT_SYMBOL vmlinux 0x42c25027 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x42c65986 qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0x42fa24b5 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x430154ae bman_irqsource_remove +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43086875 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x430e16d2 machine_id +EXPORT_SYMBOL vmlinux 0x4318a264 sys_imageblit +EXPORT_SYMBOL vmlinux 0x43201462 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x432e5af1 tty_kref_put +EXPORT_SYMBOL vmlinux 0x43488ca6 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43769361 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438cffbe inode_get_bytes +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43a1f497 alloc_disk +EXPORT_SYMBOL vmlinux 0x43b82b05 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x43bca3c4 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x43e052de nf_log_register +EXPORT_SYMBOL vmlinux 0x43f2215b elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL vmlinux 0x44098b28 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x4410f936 have_submounts +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4413e249 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x442e867f cdev_del +EXPORT_SYMBOL vmlinux 0x4433c854 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x445c52d2 netdev_err +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x4484c9f6 fm_mutex_lock +EXPORT_SYMBOL vmlinux 0x44a30f4c tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x44c13b3a tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f7929b qm_fq_new +EXPORT_SYMBOL vmlinux 0x4501ac87 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x450684cf cad_pid +EXPORT_SYMBOL vmlinux 0x4511c1b0 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x4538e8b0 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454cc698 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x455107d1 install_exec_creds +EXPORT_SYMBOL vmlinux 0x4552365a fs_bio_set +EXPORT_SYMBOL vmlinux 0x456dcebe splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457976be d_drop +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x45978d15 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45b3b5de log_wait_commit +EXPORT_SYMBOL vmlinux 0x45bbc307 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45ed55e5 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x46081bc8 pci_release_region +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462382ed __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46577bac __pagevec_release +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468c6cba dst_release +EXPORT_SYMBOL vmlinux 0x46c1147d qman_poll_slow +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46d701ff xfrm_lookup +EXPORT_SYMBOL vmlinux 0x46f15720 mpage_writepages +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470c3bca pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x4712046f con_copy_unimap +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x477410c7 do_sync_read +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47992010 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a7dd76 devm_ioremap +EXPORT_SYMBOL vmlinux 0x47ab355a skb_push +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b546a0 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x47c509f1 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x47d9275c __brelse +EXPORT_SYMBOL vmlinux 0x47dab646 i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x47dec894 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x47ece0ed pme_ctx_ctrl_read_flow +EXPORT_SYMBOL vmlinux 0x47f22c38 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x47f5aa42 lease_modify +EXPORT_SYMBOL vmlinux 0x47fae989 giveup_fpu +EXPORT_SYMBOL vmlinux 0x480c3291 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x481f57af __invalidate_device +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485fe3f2 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x486ef147 blk_put_request +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48821c51 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x488a5623 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x492b7f15 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x494549dc touch_atime +EXPORT_SYMBOL vmlinux 0x49557db7 unregister_key_type +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4962de85 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x49762e1e idr_replace +EXPORT_SYMBOL vmlinux 0x497bb759 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x4989d2a7 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x4992d97d scsi_add_device +EXPORT_SYMBOL vmlinux 0x49a72214 agp_enable +EXPORT_SYMBOL vmlinux 0x49ade4ef i2c_transfer +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b29cb5 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x49b83225 inet_frag_find +EXPORT_SYMBOL vmlinux 0x49dc437a sk_reset_txq +EXPORT_SYMBOL vmlinux 0x4a1b463c inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x4a290d4d cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a61e170 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x4a6b8d5b inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x4a74e2ca consume_skb +EXPORT_SYMBOL vmlinux 0x4a845567 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x4a8b1b6a __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x4aa70a30 km_new_mapping +EXPORT_SYMBOL vmlinux 0x4ab2b453 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x4ab4cdea simple_unlink +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac6ba5d tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4aeef6ed dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b12a2c5 mdiobus_register +EXPORT_SYMBOL vmlinux 0x4b13ea1f pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b25b6f5 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b4e6aed elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x4b56fb7a dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b65bfa7 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x4b75ad0e __quota_error +EXPORT_SYMBOL vmlinux 0x4b7d5ef3 ata_print_version +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b88ff2d read_cache_pages +EXPORT_SYMBOL vmlinux 0x4b966ba3 inet_del_offload +EXPORT_SYMBOL vmlinux 0x4bcd264b flush_dcache_page +EXPORT_SYMBOL vmlinux 0x4bd63b00 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4be8c641 udp_poll +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bef478f i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c323a70 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x4c53a42e journal_force_commit +EXPORT_SYMBOL vmlinux 0x4c84a94f sock_alloc_file +EXPORT_SYMBOL vmlinux 0x4cb41835 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x4cb87c8e __destroy_inode +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4ce6d704 cdrom_open +EXPORT_SYMBOL vmlinux 0x4cf936a1 generic_write_checks +EXPORT_SYMBOL vmlinux 0x4cfe664d dev_remove_pack +EXPORT_SYMBOL vmlinux 0x4d09e721 notify_thermal_framework +EXPORT_SYMBOL vmlinux 0x4d18990c tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d5f355c kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x4d62c339 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d7a7971 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9dcda5 qman_fqid_pool_destroy +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4dd76d4a xfrm_state_update +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4dedc6e8 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfd7fee journal_wipe +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e05a667 tcf_register_action +EXPORT_SYMBOL vmlinux 0x4e19a9c7 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x4e29a9ed twl6040_power +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e5f5e4a napi_gro_flush +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e710af8 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eaa3764 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x4eac63a2 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x4ede5156 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x4f1a6578 generic_listxattr +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2d3d19 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f420499 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f73cd9a dev_notice +EXPORT_SYMBOL vmlinux 0x4f85718a dcache_readdir +EXPORT_SYMBOL vmlinux 0x4fbfbaea tcf_exts_change +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe52765 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501a2f71 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x503733b8 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x5043ce9a kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x50459b9b agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x5051d809 __f_setown +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509e4867 request_firmware +EXPORT_SYMBOL vmlinux 0x50d14f83 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x50d5a702 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x50f16a9c xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x51044b06 journal_init_inode +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5127391d ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x513a56ed i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x513fb3b7 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x514cd40e __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x5150fabc bio_integrity_split +EXPORT_SYMBOL vmlinux 0x515d2ead d_find_any_alias +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x5168e38d fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x518e2720 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51af919f journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x51b030ef agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x51b38b21 phy_device_free +EXPORT_SYMBOL vmlinux 0x51c93ad0 fm_get_rtc_handle +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 0x520490e2 user_path_create +EXPORT_SYMBOL vmlinux 0x52124be8 locks_init_lock +EXPORT_SYMBOL vmlinux 0x521c1163 generic_show_options +EXPORT_SYMBOL vmlinux 0x521d7eb6 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x52378876 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5248ee86 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x527b11e4 quota_send_warning +EXPORT_SYMBOL vmlinux 0x527e9752 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52b19f0f splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e83309 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x52faf1b6 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x53061a39 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x531f9c08 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x5331b722 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534ffb39 vfs_readlink +EXPORT_SYMBOL vmlinux 0x535f7247 mutex_unlock +EXPORT_SYMBOL vmlinux 0x536155c1 sock_no_listen +EXPORT_SYMBOL vmlinux 0x536d0ee3 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x538e7135 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x53984165 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x53986192 simple_open +EXPORT_SYMBOL vmlinux 0x53c752c8 pci_find_capability +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540d9612 tcp_child_process +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x542109e1 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54711ac1 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x5481dab5 create_syslog_header +EXPORT_SYMBOL vmlinux 0x548cb517 bman_poll +EXPORT_SYMBOL vmlinux 0x5491abef mmc_can_trim +EXPORT_SYMBOL vmlinux 0x54a98c31 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54be71b3 set_disk_ro +EXPORT_SYMBOL vmlinux 0x54c9dc8e qman_fq_fqid +EXPORT_SYMBOL vmlinux 0x54d2d7aa mdiobus_free +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550413ac tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x550ff0cc mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5547215e dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x55508571 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x5565391b __breadahead +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55983ed3 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x55a59aa4 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x55b871c4 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5631cbcb tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x565a3576 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x56609d81 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x56750300 backlight_device_register +EXPORT_SYMBOL vmlinux 0x56872106 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56bf38e2 fb_get_mode +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d9b9c3 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x56df8120 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x56e09cc8 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x56f03af4 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x57130d47 skb_pull +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57444c65 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x57924ad4 ata_port_printk +EXPORT_SYMBOL vmlinux 0x57941dd6 sk_run_filter +EXPORT_SYMBOL vmlinux 0x579f65c8 pme_fd_cmd_fcr +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57a01e3d irq_stat +EXPORT_SYMBOL vmlinux 0x5814e055 bm_pool_free +EXPORT_SYMBOL vmlinux 0x581f4c83 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5844b822 dquot_drop +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x5875b82f find_lock_page +EXPORT_SYMBOL vmlinux 0x5877d8ef qman_static_dequeue_add +EXPORT_SYMBOL vmlinux 0x58c1c780 dev_load +EXPORT_SYMBOL vmlinux 0x58c26dbc pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58d1bfe2 aio_complete +EXPORT_SYMBOL vmlinux 0x58d41b66 vfs_writev +EXPORT_SYMBOL vmlinux 0x58f18c30 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x591ab091 elv_register_queue +EXPORT_SYMBOL vmlinux 0x592c774c __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593d26bd journal_release_buffer +EXPORT_SYMBOL vmlinux 0x593db13f register_cdrom +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596834fd __d_drop +EXPORT_SYMBOL vmlinux 0x596989e2 kobject_set_name +EXPORT_SYMBOL vmlinux 0x5972c9bc xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x59859f44 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x59b02692 fput +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x59ee2a45 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x59f94123 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5a0a2e5c pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x5a15f798 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x5a17556e dm_put_device +EXPORT_SYMBOL vmlinux 0x5a185699 skb_queue_head +EXPORT_SYMBOL vmlinux 0x5a28d4d0 unlock_buffer +EXPORT_SYMBOL vmlinux 0x5a36523e pme_ctx_ctrl_nop +EXPORT_SYMBOL vmlinux 0x5a36c12f lock_sock_fast +EXPORT_SYMBOL vmlinux 0x5a52399f bdi_destroy +EXPORT_SYMBOL vmlinux 0x5a6b149a d_path +EXPORT_SYMBOL vmlinux 0x5a7b4aa1 blk_run_queue +EXPORT_SYMBOL vmlinux 0x5a963714 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5ac7755a usb_put_phy +EXPORT_SYMBOL vmlinux 0x5aeb6f62 console_start +EXPORT_SYMBOL vmlinux 0x5afc690d __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x5b0b8205 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b40870c dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x5b6307aa mmc_add_host +EXPORT_SYMBOL vmlinux 0x5b8a66fc blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba25e18 give_up_console +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb2b886 uart_resume_port +EXPORT_SYMBOL vmlinux 0x5bc3cbe7 pci_get_class +EXPORT_SYMBOL vmlinux 0x5bf1b226 ip6_xmit +EXPORT_SYMBOL vmlinux 0x5c160a26 register_nls +EXPORT_SYMBOL vmlinux 0x5c2cd926 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c4084de generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x5c5bfcf6 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x5c9c93a9 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x5ca8a982 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x5cac953c tcp_close +EXPORT_SYMBOL vmlinux 0x5cb028bd input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x5cb0e123 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x5cd3486f textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5cd38f4c ppc_md +EXPORT_SYMBOL vmlinux 0x5cd53f69 sock_no_bind +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d350be7 pci_save_state +EXPORT_SYMBOL vmlinux 0x5d3c8bae bio_phys_segments +EXPORT_SYMBOL vmlinux 0x5d41859f i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x5d419bbd mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d6e5d51 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x5d79a6d6 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x5d995f55 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x5da9f7c4 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5dbf663a jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x5dda7d7d xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x5ddbbef7 __get_user_pages +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e34a3e3 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e483e83 mdiobus_write +EXPORT_SYMBOL vmlinux 0x5e4c80de d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x5e518473 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e99304b migrate_page +EXPORT_SYMBOL vmlinux 0x5eaaad4f pci_domain_nr +EXPORT_SYMBOL vmlinux 0x5eaf570a security_path_symlink +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb324c1 arp_send +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed4fc4c proc_mkdir +EXPORT_SYMBOL vmlinux 0x5ee60a70 pci_bus_type +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f1e8341 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f5b079e ps2_handle_response +EXPORT_SYMBOL vmlinux 0x5f6a8b7b eth_type_trans +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f7814b4 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f982d55 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x5fd2e0ec netdev_crit +EXPORT_SYMBOL vmlinux 0x5fdd6743 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x5ff09269 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60131fee phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x601e319e tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6022fdaa clear_nlink +EXPORT_SYMBOL vmlinux 0x6050c40e mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x60578333 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60707ee4 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x60876f7a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x608f961f agp_free_memory +EXPORT_SYMBOL vmlinux 0x6099ec61 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a54ef8 tc_classify +EXPORT_SYMBOL vmlinux 0x60b5c7cd follow_pfn +EXPORT_SYMBOL vmlinux 0x60d3e6d9 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x60e9ad7b ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x60fbf371 scsi_free_command +EXPORT_SYMBOL vmlinux 0x61093a81 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x610b23e6 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612b8fa7 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x6138fb24 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x614fd975 d_alloc +EXPORT_SYMBOL vmlinux 0x61601d84 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x6172d456 __free_pages +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617b692c idr_for_each +EXPORT_SYMBOL vmlinux 0x61948a99 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x619bd71d skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x61a45de4 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x61b4c268 bman_poll_slow +EXPORT_SYMBOL vmlinux 0x61b72645 skb_trim +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bf1b28 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6233aa3c phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x624e2074 __pskb_copy +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x625c1133 of_device_alloc +EXPORT_SYMBOL vmlinux 0x625fd64b page_follow_link_light +EXPORT_SYMBOL vmlinux 0x62666e47 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x6270405e __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62779afd fb_set_suspend +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628b75f3 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x62996cf0 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x62c67656 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x62c8911a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x62d60007 journal_clear_err +EXPORT_SYMBOL vmlinux 0x62e5ccab input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6325acb2 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63447731 kmap_to_page +EXPORT_SYMBOL vmlinux 0x634d8020 qman_enqueue_orp +EXPORT_SYMBOL vmlinux 0x63505dfe poll_initwait +EXPORT_SYMBOL vmlinux 0x635b363e blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x635c31f6 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x637c9c16 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x638b509e dev_emerg +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63a3b9e9 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x63cc6c52 pme_map_error +EXPORT_SYMBOL vmlinux 0x63d0902f linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x63d0b9a3 search_binary_handler +EXPORT_SYMBOL vmlinux 0x63df3e52 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641150b4 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x642701ec twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x6457b84f fb_find_mode +EXPORT_SYMBOL vmlinux 0x6478d5a5 vfs_write +EXPORT_SYMBOL vmlinux 0x64880fad blk_start_request +EXPORT_SYMBOL vmlinux 0x6490f798 __nla_put +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649d753f sock_rfree +EXPORT_SYMBOL vmlinux 0x649d77d1 inode_init_once +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64daf6a9 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x64dbba13 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x64dd7f6f pipe_lock +EXPORT_SYMBOL vmlinux 0x64e88896 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x64f29acc ps2_drain +EXPORT_SYMBOL vmlinux 0x650a6767 prandom_u32_state +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65454100 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x65641ea3 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x6565618e dev_addr_del +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x65740aa4 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x6585f1d2 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x658b383d __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d524cb jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e65a41 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x65e768fa __scsi_put_command +EXPORT_SYMBOL vmlinux 0x65eff62d find_vma +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65ffb203 of_device_is_available +EXPORT_SYMBOL vmlinux 0x66173c61 truncate_setsize +EXPORT_SYMBOL vmlinux 0x66176318 vm_map_ram +EXPORT_SYMBOL vmlinux 0x66189cff seq_bitmap +EXPORT_SYMBOL vmlinux 0x6641bae4 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x666cc55e scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x6679c3e1 sock_from_file +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a644b6 padata_alloc +EXPORT_SYMBOL vmlinux 0x66dffc45 __inet6_hash +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67426eb3 fm_get_mem_region +EXPORT_SYMBOL vmlinux 0x675b1fc2 bman_get_portal_config +EXPORT_SYMBOL vmlinux 0x679a48cb skb_queue_purge +EXPORT_SYMBOL vmlinux 0x679c2e00 sg_miter_start +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d863ae grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x67dfad99 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x67e562f3 udp_proc_register +EXPORT_SYMBOL vmlinux 0x67e67672 load_nls_default +EXPORT_SYMBOL vmlinux 0x67f1a081 arp_xmit +EXPORT_SYMBOL vmlinux 0x68104516 netif_device_detach +EXPORT_SYMBOL vmlinux 0x6823ea6f dev_open +EXPORT_SYMBOL vmlinux 0x6826a23d iget_failed +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68659bbc tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x686cc3ae mnt_pin +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687bf1d3 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x6888fd0e inet6_add_offload +EXPORT_SYMBOL vmlinux 0x68aa2533 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x68b9e64c register_md_personality +EXPORT_SYMBOL vmlinux 0x68cde4fb call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x68ce2df8 bio_init +EXPORT_SYMBOL vmlinux 0x68d9bef5 ida_pre_get +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x69029ce6 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6952c818 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x6956ac4f dev_addr_init +EXPORT_SYMBOL vmlinux 0x696207c9 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x696def7a jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6988f80b pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x69935399 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x6998ac6b generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a01389a bdi_init +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a38c446 __put_cred +EXPORT_SYMBOL vmlinux 0x6a417ef4 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6a4b04b7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a6433e3 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7dc7c6 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad2ca0f tty_unregister_device +EXPORT_SYMBOL vmlinux 0x6ad3d838 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x6ae3ad4f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x6afbcb2d dquot_disable +EXPORT_SYMBOL vmlinux 0x6b01c168 simple_lookup +EXPORT_SYMBOL vmlinux 0x6b063186 lookup_bdev +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0eb23d set_device_ro +EXPORT_SYMBOL vmlinux 0x6b0f56fb phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2ac988 cdev_alloc +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b3e169c udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x6b42679f mpage_readpages +EXPORT_SYMBOL vmlinux 0x6b4b9f53 dqget +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd53207 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x6bd9eff5 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c1a3e00 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c1e046e blk_free_tags +EXPORT_SYMBOL vmlinux 0x6c353f00 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x6c3c047e pme_ctx_exclusive_inc +EXPORT_SYMBOL vmlinux 0x6c4f964c netlink_unicast +EXPORT_SYMBOL vmlinux 0x6c59ceed fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6c5d2818 idr_find +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 0x6c839669 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6caa898d dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x6cadfdb8 register_exec_domain +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cff63b4 register_framebuffer +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0c7c57 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d25d75b tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d32aec7 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x6d43be60 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x6d67fb1c genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x6d6cb214 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x6d79879b tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x6d7b0fa6 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x6d83e97f of_device_unregister +EXPORT_SYMBOL vmlinux 0x6d8604fb led_set_brightness +EXPORT_SYMBOL vmlinux 0x6d983f98 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x6d995d01 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dba98cb pci_restore_state +EXPORT_SYMBOL vmlinux 0x6dd5fae6 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x6dd96bde phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x6de698b3 netdev_printk +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df8b912 eth_header_cache +EXPORT_SYMBOL vmlinux 0x6e31b3af seq_puts +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e5bbb03 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x6e68912a ip_options_compile +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e8733f0 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eaf0c99 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x6eb11822 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ec55a14 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x6ef02431 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6efa3397 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f22228e pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x6f268538 bman_acquire +EXPORT_SYMBOL vmlinux 0x6f2af585 kernel_bind +EXPORT_SYMBOL vmlinux 0x6f4ec834 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x6f60b4f3 flush_signals +EXPORT_SYMBOL vmlinux 0x6f76f0a0 dquot_alloc +EXPORT_SYMBOL vmlinux 0x6f7fed5c replace_mount_options +EXPORT_SYMBOL vmlinux 0x6fa12a7f skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x6fbc2255 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x6fbe6d75 km_report +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6ff5df72 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x7020f04d set_groups +EXPORT_SYMBOL vmlinux 0x7023e118 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x70306020 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x703f3b9e scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x7045dea9 qman_modify_cgr +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7060906d mdiobus_read +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70bcfa30 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x70c375d2 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x70c7d468 iput +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d0866c blk_init_queue +EXPORT_SYMBOL vmlinux 0x70d26286 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x70d6caa1 bdget_disk +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70e73bd2 ilookup5 +EXPORT_SYMBOL vmlinux 0x710c1aa8 dev_change_flags +EXPORT_SYMBOL vmlinux 0x710ebc0a mmc_can_discard +EXPORT_SYMBOL vmlinux 0x7110da88 blk_rq_init +EXPORT_SYMBOL vmlinux 0x7120f6c0 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714647ec blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x716343a1 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7180b2c0 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x71894bcc block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x718de877 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x7194d3b7 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c557a6 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71cfa42f truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x71dd5348 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x72246689 write_inode_now +EXPORT_SYMBOL vmlinux 0x72253fa1 prepare_creds +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x7244d192 would_dump +EXPORT_SYMBOL vmlinux 0x724bcabb tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x726453cf netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x727fdb8b devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x728be926 kdb_current_task +EXPORT_SYMBOL vmlinux 0x728ce230 qm_fq_free_flags +EXPORT_SYMBOL vmlinux 0x72a70b7f pme_ctx_scan_orp +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bfcf77 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e671f5 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f00338 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x72f4b376 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x730184bf dma_sync_wait +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731d511e dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734a5a2c vga_get +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x7365b0da security_path_chown +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7385979c netif_napi_add +EXPORT_SYMBOL vmlinux 0x73891e44 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x73acb892 submit_bio +EXPORT_SYMBOL vmlinux 0x73c20054 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x73cc68bc irq_to_desc +EXPORT_SYMBOL vmlinux 0x73ceb624 posix_test_lock +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x740f595c elevator_change +EXPORT_SYMBOL vmlinux 0x741879a2 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x7425b379 arp_find +EXPORT_SYMBOL vmlinux 0x743afc61 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x744c4b4d mii_nway_restart +EXPORT_SYMBOL vmlinux 0x7464ecb2 kset_unregister +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747969a8 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7494c430 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x749767ac dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x749ca3a8 contig_page_data +EXPORT_SYMBOL vmlinux 0x74a162b1 genphy_read_status +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c18983 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x74cacc0e bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d27449 d_alloc_name +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f452e4 sock_edemux +EXPORT_SYMBOL vmlinux 0x75057c31 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7522d545 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75447b91 blk_register_region +EXPORT_SYMBOL vmlinux 0x7545aa66 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x755a1f05 dentry_unhash +EXPORT_SYMBOL vmlinux 0x755d7c0d __sb_end_write +EXPORT_SYMBOL vmlinux 0x75630e63 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x756afcda blk_complete_request +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x75701621 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x758252d9 inet6_protos +EXPORT_SYMBOL vmlinux 0x75884c1b journal_flush +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x7596a7b5 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75a06b6e scsi_register_driver +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75cd7d50 sk_filter +EXPORT_SYMBOL vmlinux 0x75d71c62 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x75eff5b3 elevator_init +EXPORT_SYMBOL vmlinux 0x75f0dadb neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x760f3882 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x762b3f22 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x762ea54c icmpv6_send +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764d8342 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x766c5214 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x767e83ec inode_permission +EXPORT_SYMBOL vmlinux 0x76843c58 fm_port_enable +EXPORT_SYMBOL vmlinux 0x768fa925 pid_task +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76ca363e override_creds +EXPORT_SYMBOL vmlinux 0x76cbefa1 security_path_mknod +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL vmlinux 0x76daa314 sock_wake_async +EXPORT_SYMBOL vmlinux 0x76e63242 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x76eb6fb6 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x76f7d6e9 netpoll_setup +EXPORT_SYMBOL vmlinux 0x76f937df sock_no_getname +EXPORT_SYMBOL vmlinux 0x77026382 bdi_unregister +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x771d9449 scsi_execute +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x777d877a posix_lock_file +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a19078 get_fs_type +EXPORT_SYMBOL vmlinux 0x77ac082d n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x77ac0dbf tty_throttle +EXPORT_SYMBOL vmlinux 0x77b3d07e nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bb5c54 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c687b6 find_or_create_page +EXPORT_SYMBOL vmlinux 0x77ce93b3 qid_lt +EXPORT_SYMBOL vmlinux 0x77d22ca8 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77e66762 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f4f5ab napi_get_frags +EXPORT_SYMBOL vmlinux 0x78530a2a pci_dev_driver +EXPORT_SYMBOL vmlinux 0x78572291 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x785cbd0f dcb_setapp +EXPORT_SYMBOL vmlinux 0x7867d76e dev_crit +EXPORT_SYMBOL vmlinux 0x78788f51 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b3c782 tcf_em_register +EXPORT_SYMBOL vmlinux 0x78c0cb15 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x78c36167 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x78c773ab pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x78d9a9c4 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x78db141b generic_setlease +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78dfdd9f pme_hw_residue_free +EXPORT_SYMBOL vmlinux 0x78e8a775 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7930c471 input_register_handler +EXPORT_SYMBOL vmlinux 0x79316c09 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x7937619b seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x7941e724 get_io_context +EXPORT_SYMBOL vmlinux 0x794a142f scm_fp_dup +EXPORT_SYMBOL vmlinux 0x794f5c9c should_remove_suid +EXPORT_SYMBOL vmlinux 0x7950179a elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79714e24 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x798e3164 fm_port_get_handle +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bc6599 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x79bdb7bf pci_remove_bus +EXPORT_SYMBOL vmlinux 0x79c48df1 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x79e71ef4 seq_path +EXPORT_SYMBOL vmlinux 0x79ee1939 mii_check_link +EXPORT_SYMBOL vmlinux 0x7a043200 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a25bf49 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2e227d bio_endio +EXPORT_SYMBOL vmlinux 0x7a357f97 init_task +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4bc3ea tty_port_close +EXPORT_SYMBOL vmlinux 0x7a715d09 dump_write +EXPORT_SYMBOL vmlinux 0x7a811465 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x7a91e6fe invalidate_partition +EXPORT_SYMBOL vmlinux 0x7a9546cd simple_readpage +EXPORT_SYMBOL vmlinux 0x7aa06d6e security_d_instantiate +EXPORT_SYMBOL vmlinux 0x7aa19827 proto_unregister +EXPORT_SYMBOL vmlinux 0x7aa7356e jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad33b95 mach_p2041_rdb +EXPORT_SYMBOL vmlinux 0x7ad41bf9 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae8c879 free_netdev +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b177a62 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5d2bc0 __page_symlink +EXPORT_SYMBOL vmlinux 0x7b6f5a02 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7b8f79cb drop_super +EXPORT_SYMBOL vmlinux 0x7b903b55 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x7b906f87 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7b9e74fa bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x7bbc68ba pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x7bc634fb uart_add_one_port +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7bf0ca5c scsi_prep_return +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c239010 pci_disable_obff +EXPORT_SYMBOL vmlinux 0x7c25729d bio_put +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4ed609 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x7c560387 blk_get_request +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c7b1f08 follow_up +EXPORT_SYMBOL vmlinux 0x7c7efebd of_phy_attach +EXPORT_SYMBOL vmlinux 0x7c7ff534 get_user_pages +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 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cf4901b free_buffer_head +EXPORT_SYMBOL vmlinux 0x7cf62f08 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d17a950 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x7d2c549b inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x7d4b3d15 tcp_prot +EXPORT_SYMBOL vmlinux 0x7d4d6814 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x7d707eaf fb_set_var +EXPORT_SYMBOL vmlinux 0x7d7c7aa3 brioctl_set +EXPORT_SYMBOL vmlinux 0x7d7cc239 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7de05fe7 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfeb97e generic_read_dir +EXPORT_SYMBOL vmlinux 0x7dff7aa2 md_flush_request +EXPORT_SYMBOL vmlinux 0x7e07f20a seq_release_private +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3a972b sockfd_lookup +EXPORT_SYMBOL vmlinux 0x7e7539d5 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8f8b24 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x7eb32d25 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x7ec18431 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed9cc56 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x7edbb50b input_get_keycode +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f0936db key_type_keyring +EXPORT_SYMBOL vmlinux 0x7f0a1270 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x7f0b2960 qman_fqid_pool_create +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f33b10b blk_init_tags +EXPORT_SYMBOL vmlinux 0x7f3ad7bd jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x7f8e9daf seq_printf +EXPORT_SYMBOL vmlinux 0x7f93ab40 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x7fb4e808 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x7fb78f72 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7febac16 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x7ffed921 netdev_info +EXPORT_SYMBOL vmlinux 0x800a469a ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x8021ef8f __napi_complete +EXPORT_SYMBOL vmlinux 0x8043f4b0 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x808035af dev_activate +EXPORT_SYMBOL vmlinux 0x80863286 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x808bfc49 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x809b4f59 dm_io +EXPORT_SYMBOL vmlinux 0x80b8d34d swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80e8b309 commit_creds +EXPORT_SYMBOL vmlinux 0x8138f837 netif_skb_features +EXPORT_SYMBOL vmlinux 0x8141c443 kernel_accept +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81528a50 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x8165e6f0 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x81660c1c neigh_seq_next +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a1a4cc udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x81b08f60 unregister_con_driver +EXPORT_SYMBOL vmlinux 0x81b94d89 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x81cdf7d3 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x81d667da journal_revoke +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821bfa82 cdev_add +EXPORT_SYMBOL vmlinux 0x822caa93 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x823656be pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8274f331 scsi_host_get +EXPORT_SYMBOL vmlinux 0x827b5002 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bfa047 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82ee4597 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x830fb3e3 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x83200ab9 sk_wait_data +EXPORT_SYMBOL vmlinux 0x832e4405 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x8350e652 mntget +EXPORT_SYMBOL vmlinux 0x83721335 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x83787b6d inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x837bbf51 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a04453 kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b257a8 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x83b6072e page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x83c5d9ab security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83c8ab4e fm_set_tx_port_params +EXPORT_SYMBOL vmlinux 0x83d8a937 qman_fqid_pool_used +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x84527f75 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x845b51d3 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x84ae6490 vfs_read +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x8500b14f pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x85563589 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856b8a2e scsi_init_io +EXPORT_SYMBOL vmlinux 0x857251f1 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x859ca97a mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x859e76db clk_get +EXPORT_SYMBOL vmlinux 0x85adc07c pcim_iomap +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d26f79 __lock_page +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85e9e8b0 follow_down_one +EXPORT_SYMBOL vmlinux 0x86208a19 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x862e5e1c bmap +EXPORT_SYMBOL vmlinux 0x862e8474 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x864d615d find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8650ac0e dquot_enable +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8664ff23 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x866e51c0 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c275f8 nobh_write_end +EXPORT_SYMBOL vmlinux 0x86d7cb22 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x86d97b78 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x86dc7933 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x86f88300 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871e507b ip6_frag_init +EXPORT_SYMBOL vmlinux 0x872aa72a blk_make_request +EXPORT_SYMBOL vmlinux 0x874e8007 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x875d0723 account_page_redirty +EXPORT_SYMBOL vmlinux 0x87681862 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879b0be6 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x87d9bbec tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x88072121 is_bad_inode +EXPORT_SYMBOL vmlinux 0x8807487a journal_ack_err +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x882326c5 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8840117d ip6_route_output +EXPORT_SYMBOL vmlinux 0x88630094 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x888ccb90 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x88b8a1af __netif_schedule +EXPORT_SYMBOL vmlinux 0x88dc834f netif_receive_skb +EXPORT_SYMBOL vmlinux 0x88f82480 sock_no_accept +EXPORT_SYMBOL vmlinux 0x88fe17dc swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8925d103 kill_litter_super +EXPORT_SYMBOL vmlinux 0x8926cb6f xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x89466bbe block_read_full_page +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x895d23f0 napi_complete +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x899bb910 get_phy_device +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b85085 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x89c9d405 vga_client_register +EXPORT_SYMBOL vmlinux 0x89ce5228 generic_file_open +EXPORT_SYMBOL vmlinux 0x89cea273 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x89d03724 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89dd4c8d swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x8a0834b9 netif_rx +EXPORT_SYMBOL vmlinux 0x8a13aa24 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a28d0e8 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a509a9a of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x8a5493bb qman_recovery_cleanup_fq +EXPORT_SYMBOL vmlinux 0x8a5aba98 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x8a7527e1 bm_pool_new +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a90f2ed scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9c9cdf kfree_skb +EXPORT_SYMBOL vmlinux 0x8aa43f54 __mutex_init +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad6c184 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x8b0ba744 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b2333e6 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x8b2f2ebf dm_get_device +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b4073be dev_mc_init +EXPORT_SYMBOL vmlinux 0x8b5861fb kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x8b5f2f23 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7a1ae2 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x8b8eb56c framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x8bdc2cb7 qman_query_cgr +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0bdaab mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c2b2227 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x8c580670 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c74a8bb bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8c85b1f5 d_move +EXPORT_SYMBOL vmlinux 0x8c8d7854 vfs_mknod +EXPORT_SYMBOL vmlinux 0x8c9f74f3 lock_fb_info +EXPORT_SYMBOL vmlinux 0x8ca0a669 serio_reconnect +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ce99849 input_close_device +EXPORT_SYMBOL vmlinux 0x8d144a6d dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x8d1bb925 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x8d264ab4 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x8d477702 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d5ee86d rtnl_notify +EXPORT_SYMBOL vmlinux 0x8d9177e9 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x8d98f64d cfb_imageblit +EXPORT_SYMBOL vmlinux 0x8d9a866a ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x8d9f5f64 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x8dc4a9f8 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x8dc9a0e2 framebuffer_release +EXPORT_SYMBOL vmlinux 0x8dda5de1 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2cd6f bman_irqsource_get +EXPORT_SYMBOL vmlinux 0x8dfd3e6b dev_disable_lro +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e2e3423 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x8e419ad4 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x8e56f2e0 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x8e6ef0da idr_get_new +EXPORT_SYMBOL vmlinux 0x8e77ef2f locks_delete_block +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8e95cc56 release_sock +EXPORT_SYMBOL vmlinux 0x8eae2f45 bio_add_page +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ecef8b5 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x8ed03247 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x8ed7fb6b i2c_release_client +EXPORT_SYMBOL vmlinux 0x8f11d6ba __ip_dev_find +EXPORT_SYMBOL vmlinux 0x8f246af7 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x8f428fc6 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x8f5afe59 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f9bf6ac pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fd107fb dst_destroy +EXPORT_SYMBOL vmlinux 0x8ff75db1 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9012efbe phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x9013ebd6 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x902afbec put_page +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x9075d4cd scsi_execute_req +EXPORT_SYMBOL vmlinux 0x9076a52d scsi_host_put +EXPORT_SYMBOL vmlinux 0x90b1860b d_set_d_op +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90e09e6e xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90f243cb xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x90f40d07 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x91114c6e simple_dir_operations +EXPORT_SYMBOL vmlinux 0x911738eb keyring_search +EXPORT_SYMBOL vmlinux 0x9126449b mfd_add_devices +EXPORT_SYMBOL vmlinux 0x9139ffa6 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x9143d5b3 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91535465 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x915cc67a ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x915f5582 write_cache_pages +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917b940f jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x918ac1b4 scsi_print_result +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91d30057 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x91d88e48 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0x91d937de security_path_rename +EXPORT_SYMBOL vmlinux 0x91e50f80 input_event +EXPORT_SYMBOL vmlinux 0x9207db8e inet_put_port +EXPORT_SYMBOL vmlinux 0x921485d7 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x921bd509 get_gendisk +EXPORT_SYMBOL vmlinux 0x921e1be5 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x92311f01 idr_remove +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924b155c skb_queue_tail +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x929b7d57 __lock_buffer +EXPORT_SYMBOL vmlinux 0x929f281b of_allnodes +EXPORT_SYMBOL vmlinux 0x92a7e6c5 bman_new_pool +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92f784dc schedule_work_on +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93097331 mount_ns +EXPORT_SYMBOL vmlinux 0x9312f076 of_phy_connect +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x9336323b __devm_request_region +EXPORT_SYMBOL vmlinux 0x933e10ec qman_ip_rev +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93484d2d dev_get_stats +EXPORT_SYMBOL vmlinux 0x935d00a9 igrab +EXPORT_SYMBOL vmlinux 0x93a3ac6a scsi_get_command +EXPORT_SYMBOL vmlinux 0x93a6198b pci_disable_device +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93d5767d skb_checksum +EXPORT_SYMBOL vmlinux 0x93e6d213 i2c_use_client +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9408f0e4 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x9448cb8a xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x94513f7c dev_driver_string +EXPORT_SYMBOL vmlinux 0x94631b98 qman_irqsource_get +EXPORT_SYMBOL vmlinux 0x9466bae6 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x946b8ab7 kobject_put +EXPORT_SYMBOL vmlinux 0x94799294 agp_copy_info +EXPORT_SYMBOL vmlinux 0x947fc322 lro_flush_all +EXPORT_SYMBOL vmlinux 0x9485d9fd submit_bh +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a34de1 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x94abb86c tty_register_device +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94c4fbed kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x94d0efc5 devm_free_irq +EXPORT_SYMBOL vmlinux 0x94d767a3 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x94d78b7c qman_create_cgr +EXPORT_SYMBOL vmlinux 0x94d9bf41 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x94dbddbb devfreq_add_device +EXPORT_SYMBOL vmlinux 0x94e03006 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x9510e9f4 tcp_poll +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9523721b dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x952485b1 pme_fd_cmd_nop +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954705f8 security_path_truncate +EXPORT_SYMBOL vmlinux 0x9551f6ce keyring_clear +EXPORT_SYMBOL vmlinux 0x95714234 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x9580f7bc vm_event_states +EXPORT_SYMBOL vmlinux 0x959c2ed7 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0x959f06cd mmc_can_reset +EXPORT_SYMBOL vmlinux 0x95b44f16 single_open +EXPORT_SYMBOL vmlinux 0x95ba92e4 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x95cbc7b3 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x961cb665 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x961f738d alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x962cb321 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x963f30bb sk_dst_check +EXPORT_SYMBOL vmlinux 0x9646c8b5 get_task_io_context +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x966cd599 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9694eb66 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x969ec31c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x96a1e1ef write_one_page +EXPORT_SYMBOL vmlinux 0x96aa9542 send_sig +EXPORT_SYMBOL vmlinux 0x96bc17dd unload_nls +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x971be88b blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9741a9f3 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97553063 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x97671b42 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x97711e1a genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x977a22c2 dquot_transfer +EXPORT_SYMBOL vmlinux 0x977e85a1 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97ec13a3 dev_mc_add +EXPORT_SYMBOL vmlinux 0x97fe156f padata_do_serial +EXPORT_SYMBOL vmlinux 0x9840f1e7 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x984453fd dquot_commit_info +EXPORT_SYMBOL vmlinux 0x98668903 pme_sw_flow_init +EXPORT_SYMBOL vmlinux 0x986c9bc6 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x98999f66 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x98b58264 set_user_nice +EXPORT_SYMBOL vmlinux 0x98c803f3 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x98d49894 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x98e2e8b7 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x99024b87 check_disk_change +EXPORT_SYMBOL vmlinux 0x991f94cd swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x9935a988 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x994ff814 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x99686191 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999be48e i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afcbc7 dquot_initialize +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99ba5ab7 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x99bb0276 update_devfreq +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99dae440 kern_path +EXPORT_SYMBOL vmlinux 0x99dc34db ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x99e41f23 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x99e4497d pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x99e9a879 fm_bind +EXPORT_SYMBOL vmlinux 0x99e9f113 get_write_access +EXPORT_SYMBOL vmlinux 0x9a0c6d37 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x9a0fcb02 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x9a100f82 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a33f7ee bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x9a5106e1 key_link +EXPORT_SYMBOL vmlinux 0x9a5b9352 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a73e69c pci_get_slot +EXPORT_SYMBOL vmlinux 0x9a76d523 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x9a83052c pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x9a8ee7ab __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x9a95c0f4 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x9acd69b2 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x9acdb968 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x9ae27fce vlan_vid_del +EXPORT_SYMBOL vmlinux 0x9ae89493 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x9aef8f7d vlan_vid_add +EXPORT_SYMBOL vmlinux 0x9b02fea1 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x9b0ee0d9 fb_pan_display +EXPORT_SYMBOL vmlinux 0x9b10d8ac neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9b15debd agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b429b61 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x9b43cd7f tcp_ioctl +EXPORT_SYMBOL vmlinux 0x9b5de19f devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x9b5ee771 journal_extend +EXPORT_SYMBOL vmlinux 0x9b6c1896 of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b89434e vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x9b9bee3a bio_pair_release +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9b9e08c6 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9baa95eb inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x9bb6b7df of_get_next_child +EXPORT_SYMBOL vmlinux 0x9bdacd51 setup_new_exec +EXPORT_SYMBOL vmlinux 0x9be25a00 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9be99df0 set_blocksize +EXPORT_SYMBOL vmlinux 0x9c1e00cc of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x9c2d4666 __neigh_create +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4def48 pme_fd_cmd_scan +EXPORT_SYMBOL vmlinux 0x9c556ad1 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9c845cdf bh_submit_read +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cae8eba rtnl_unicast +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc99288 fm_unbind +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ce672ad tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1dee30 idr_get_next +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d8ffce4 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x9d9e2da6 tty_name +EXPORT_SYMBOL vmlinux 0x9da01691 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9dadbc1d tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x9dbac73b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x9dc35949 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x9dcb3b26 udp_prot +EXPORT_SYMBOL vmlinux 0x9dd1ce4d freezing_slow_path +EXPORT_SYMBOL vmlinux 0x9de42fa2 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x9de6d916 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x9dee18a1 simple_empty +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9df24312 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x9dfc1edd bman_irqsource_add +EXPORT_SYMBOL vmlinux 0x9e0222b0 md_write_start +EXPORT_SYMBOL vmlinux 0x9e0452e3 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1fabd2 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e2c00d8 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x9e30a26d tcp_init_sock +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e50e967 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6ba897 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x9e6f501b fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ea65b2b __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebeded2 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x9ec9b8c8 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9ecfd6d1 kern_path_create +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9efaef02 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x9f0d847a inet_frag_kill +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f412968 security_file_permission +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f57e0b5 i2c_master_send +EXPORT_SYMBOL vmlinux 0x9f723d63 aio_put_req +EXPORT_SYMBOL vmlinux 0x9f81fa70 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x9f921c5b create_empty_buffers +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fb860a5 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9fccbfa9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feacca9 do_SAK +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00ae98f __frontswap_load +EXPORT_SYMBOL vmlinux 0xa0190039 ppp_input_error +EXPORT_SYMBOL vmlinux 0xa01b7a73 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xa01d217b rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa059d941 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06c1482 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa08d9f3c unlock_new_inode +EXPORT_SYMBOL vmlinux 0xa09f8be2 qman_affine_cpus +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0f94160 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa101493a jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa110c934 ns_capable +EXPORT_SYMBOL vmlinux 0xa1196b68 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xa119e258 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1702212 vfs_llseek +EXPORT_SYMBOL vmlinux 0xa1743324 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xa17e0ae8 set_anon_super +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1dce8a9 account_page_writeback +EXPORT_SYMBOL vmlinux 0xa1de9657 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xa1e065d4 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xa1e36f6e kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xa1ee5ff2 tty_lock +EXPORT_SYMBOL vmlinux 0xa1f45368 phy_connect +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20d7f89 files_lglock +EXPORT_SYMBOL vmlinux 0xa2150818 bdput +EXPORT_SYMBOL vmlinux 0xa24c6cb0 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa25d4e42 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xa2818d57 kill_fasync +EXPORT_SYMBOL vmlinux 0xa281e16b __skb_checksum_complete_head +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 0xa2c79389 vc_resize +EXPORT_SYMBOL vmlinux 0xa2eaa770 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f93a4f kobject_del +EXPORT_SYMBOL vmlinux 0xa2fcaa18 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31b0fc5 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xa31b1830 done_path_create +EXPORT_SYMBOL vmlinux 0xa31c067f agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xa3210ed3 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa33e225b dev_printk_emit +EXPORT_SYMBOL vmlinux 0xa34a921a sock_no_mmap +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36f2e2a secpath_dup +EXPORT_SYMBOL vmlinux 0xa37b863a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3c1050c kthread_bind +EXPORT_SYMBOL vmlinux 0xa3d43a19 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3eefe9f inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xa4084b94 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa44e39ca security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa478236c generic_readlink +EXPORT_SYMBOL vmlinux 0xa482092d devm_clk_put +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c13185 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4fb2ddf i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xa51fb0d0 dst_alloc +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56c1ff2 send_sig_info +EXPORT_SYMBOL vmlinux 0xa572de08 key_alloc +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5dd45f3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xa60d905a vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xa619c181 pme_ctx_reconfigure_tx +EXPORT_SYMBOL vmlinux 0xa6236669 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xa6260b5e swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xa629f0ca inet_del_protocol +EXPORT_SYMBOL vmlinux 0xa63bdaf7 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa672d85c jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6919364 vfs_readdir +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6af1a94 pme2_exclusive_unset +EXPORT_SYMBOL vmlinux 0xa6b2ddfd ida_simple_get +EXPORT_SYMBOL vmlinux 0xa6d966da journal_start_commit +EXPORT_SYMBOL vmlinux 0xa7099b80 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7213066 bioset_create +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7422c20 __scm_send +EXPORT_SYMBOL vmlinux 0xa76027e4 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xa76d72ff padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7ab6ecb inode_init_always +EXPORT_SYMBOL vmlinux 0xa7ae6d42 register_quota_format +EXPORT_SYMBOL vmlinux 0xa7b83fc2 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xa7be614f dget_parent +EXPORT_SYMBOL vmlinux 0xa7cea976 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa818555a wake_up_process +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa830e501 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa86f7333 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8778bed simple_write_begin +EXPORT_SYMBOL vmlinux 0xa8786d20 ip_defrag +EXPORT_SYMBOL vmlinux 0xa8887b06 default_llseek +EXPORT_SYMBOL vmlinux 0xa88adae8 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8bcb876 vfs_create +EXPORT_SYMBOL vmlinux 0xa8be69f7 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xa8cb9300 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xa8f084be dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa95a79f1 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xa977329b dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xa99e6eaf dquot_commit +EXPORT_SYMBOL vmlinux 0xa9ac8c20 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa9b300c6 names_cachep +EXPORT_SYMBOL vmlinux 0xa9d450fb proc_net_netfilter +EXPORT_SYMBOL vmlinux 0xaa29fd2d md_unregister_thread +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4d258f scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xaa51be75 pci_choose_state +EXPORT_SYMBOL vmlinux 0xaa5592b9 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xaa5f16ed devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xaa634856 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xaa63b6e4 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa697977 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa902d20 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaab1eda1 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xaabc5757 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xaad69e23 qman_fq_state +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab3dbb5a filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xab5aa0f6 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab74e83e seq_putc +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabeb9561 ida_init +EXPORT_SYMBOL vmlinux 0xac054ad1 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac335a69 skb_unlink +EXPORT_SYMBOL vmlinux 0xac35a291 dma_set_mask +EXPORT_SYMBOL vmlinux 0xac446a6b mii_check_media +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac951c60 idr_init +EXPORT_SYMBOL vmlinux 0xac96f10c simple_setattr +EXPORT_SYMBOL vmlinux 0xac981409 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd0a79a of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xacde6340 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad1c1209 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xad38f0fd mmc_request_done +EXPORT_SYMBOL vmlinux 0xad3bf74b block_write_begin +EXPORT_SYMBOL vmlinux 0xad55aa7c tty_port_close_end +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad856614 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xad90f33a fm_port_get_base_addr +EXPORT_SYMBOL vmlinux 0xad914bbc devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xad9a4fbf tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadbca9a9 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xadbee415 vfs_statfs +EXPORT_SYMBOL vmlinux 0xadd16521 ipv4_specific +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xade81b34 inet_listen +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xadfec836 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0xae1ca97d __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xae1cd8ee fd_install +EXPORT_SYMBOL vmlinux 0xae25d272 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xae347b40 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xae386f5d read_dev_sector +EXPORT_SYMBOL vmlinux 0xae4569bc skb_tx_error +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae88daff genphy_update_link +EXPORT_SYMBOL vmlinux 0xae8dce43 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xae8fe144 inet_add_offload +EXPORT_SYMBOL vmlinux 0xaea3cafb locks_free_lock +EXPORT_SYMBOL vmlinux 0xaec526f1 pme_ctx_scan +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaef1ae60 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xaf051982 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xaf05767a __inode_permission +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b7f75 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf425676 journal_forget +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafbd5fb4 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xafc2e4ee dev_uc_add +EXPORT_SYMBOL vmlinux 0xafd01e14 qman_retire_fq +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd6d6ce mii_link_ok +EXPORT_SYMBOL vmlinux 0xafd70bf2 qman_dca +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0248d90 vfs_fsync +EXPORT_SYMBOL vmlinux 0xb03b43d9 of_device_register +EXPORT_SYMBOL vmlinux 0xb0415155 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb04315b9 task_nice +EXPORT_SYMBOL vmlinux 0xb04b394f simple_statfs +EXPORT_SYMBOL vmlinux 0xb05d2668 mntput +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0838661 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xb0aaedff cdrom_check_events +EXPORT_SYMBOL vmlinux 0xb0b5491e pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0d5c5b1 inode_init_owner +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb103f176 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xb1157cc0 vm_mmap +EXPORT_SYMBOL vmlinux 0xb11c372d input_release_device +EXPORT_SYMBOL vmlinux 0xb128e8cf netdev_emerg +EXPORT_SYMBOL vmlinux 0xb12f0a9b pci_dev_get +EXPORT_SYMBOL vmlinux 0xb158e0c8 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xb15ba120 dev_printk +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb183b262 mmc_resume_host +EXPORT_SYMBOL vmlinux 0xb18d9e28 of_dev_get +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a92a63 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xb1a938ac mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xb1c05f50 fib_default_rule_pref +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 0xb1e26fec tty_port_hangup +EXPORT_SYMBOL vmlinux 0xb1ff39ae scsi_block_requests +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb25cf52f tty_port_init +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb271d60c get_tz_trend +EXPORT_SYMBOL vmlinux 0xb280d241 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xb29d32c8 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xb2acf19d pme_ctx_finish +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d953c5 journal_restart +EXPORT_SYMBOL vmlinux 0xb2db71b0 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xb2eb0dcc mount_pseudo +EXPORT_SYMBOL vmlinux 0xb301c388 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xb304567f con_is_bound +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34c746a pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xb3505149 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xb371103f __scsi_add_device +EXPORT_SYMBOL vmlinux 0xb39975e3 scsi_put_command +EXPORT_SYMBOL vmlinux 0xb3ab962f tcf_hash_check +EXPORT_SYMBOL vmlinux 0xb3d123d6 fm_get_tx_port_channel +EXPORT_SYMBOL vmlinux 0xb3d349b6 misc_register +EXPORT_SYMBOL vmlinux 0xb3e005ee tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xb3f184ea block_write_end +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4180cc0 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb44aaa85 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xb44c3f1c xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xb4583921 console_stop +EXPORT_SYMBOL vmlinux 0xb4624559 save_mount_options +EXPORT_SYMBOL vmlinux 0xb46713fc input_free_device +EXPORT_SYMBOL vmlinux 0xb467a296 input_unregister_device +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4832f6c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xb499c33d sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xb4a0bacd ata_link_printk +EXPORT_SYMBOL vmlinux 0xb4b315bb blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xb4bc672d empty_aops +EXPORT_SYMBOL vmlinux 0xb502a098 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xb5046b5b do_sync_write +EXPORT_SYMBOL vmlinux 0xb54088a3 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb56478fb ps2_init +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57d9a5b try_module_get +EXPORT_SYMBOL vmlinux 0xb5807d93 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a5353f add_disk +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ab146f pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xb5af6bf3 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xb5b1de17 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xb5d22408 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5dac15f tc_classify_compat +EXPORT_SYMBOL vmlinux 0xb5e11eb6 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xb5f96ab5 dma_find_channel +EXPORT_SYMBOL vmlinux 0xb5fd27ec skb_make_writable +EXPORT_SYMBOL vmlinux 0xb6054ca8 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xb616e7a1 dquot_destroy +EXPORT_SYMBOL vmlinux 0xb6189172 phy_find_first +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64d268f qman_schedule_fq +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb6652280 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67b743b inet_ioctl +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 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb697dd42 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ab87bb default_file_splice_read +EXPORT_SYMBOL vmlinux 0xb6abd649 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xb6ad904a xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xb6c1973f abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d2eafb qman_irqsource_add +EXPORT_SYMBOL vmlinux 0xb6df5123 input_grab_device +EXPORT_SYMBOL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL vmlinux 0xb6e6ef71 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xb6efb95e i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xb6f16eea jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xb6fccac5 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xb6ff5bf5 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xb71c8136 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xb729fe37 mount_nodev +EXPORT_SYMBOL vmlinux 0xb74681df __nla_reserve +EXPORT_SYMBOL vmlinux 0xb747fca1 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb7846cd0 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xb79dc04e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7b6051d mmc_detect_change +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7bf4e8d iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xb7f0d75e sock_kmalloc +EXPORT_SYMBOL vmlinux 0xb7fde971 pme_map +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb831aed7 netdev_notice +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8549447 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xb85aa116 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xb86afbd5 fsync_bdev +EXPORT_SYMBOL vmlinux 0xb8e3b807 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xb8e5f665 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8ed9689 mmc_start_req +EXPORT_SYMBOL vmlinux 0xb911a80b __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xb9257bb4 idr_pre_get +EXPORT_SYMBOL vmlinux 0xb925a473 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0xb9268d61 da9052_i2c_fix +EXPORT_SYMBOL vmlinux 0xb93578e2 scsi_unregister +EXPORT_SYMBOL vmlinux 0xb93ae7b9 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xb96062b4 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xb9793b20 sys_fillrect +EXPORT_SYMBOL vmlinux 0xb97cf8dd xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9afb4ab ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb9b5fd2f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xb9ba1fb0 sync_inode +EXPORT_SYMBOL vmlinux 0xb9d5e027 qman_eqcr_is_empty +EXPORT_SYMBOL vmlinux 0xb9e49134 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xb9fa4ed7 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xb9fbf8b1 bio_sector_offset +EXPORT_SYMBOL vmlinux 0xba1dc22a start_tty +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba55e3e7 arp_create +EXPORT_SYMBOL vmlinux 0xba625447 inet_release +EXPORT_SYMBOL vmlinux 0xba669e0c sock_init_data +EXPORT_SYMBOL vmlinux 0xba86210f input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xba9d83df dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xbaeffa05 qid_eq +EXPORT_SYMBOL vmlinux 0xbb03cfb5 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xbb0ea952 mount_bdev +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb5182f3 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb63ff97 cdev_init +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb9280ae unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbd3b5ae dev_get_by_name +EXPORT_SYMBOL vmlinux 0xbbeaa8dd dev_err +EXPORT_SYMBOL vmlinux 0xbbec2721 d_genocide +EXPORT_SYMBOL vmlinux 0xbbedb29f ip_fragment +EXPORT_SYMBOL vmlinux 0xbc1137ad generic_getxattr +EXPORT_SYMBOL vmlinux 0xbc130e3d arp_invalidate +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3d0163 keyring_alloc +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc7b7d9f security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xbca00f20 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xbca8a628 tty_port_open +EXPORT_SYMBOL vmlinux 0xbcb21f84 elv_rb_del +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccd358a path_get +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbccfc42f cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xbd48b99e pci_select_bars +EXPORT_SYMBOL vmlinux 0xbd4da0c2 __seq_open_private +EXPORT_SYMBOL vmlinux 0xbd575b61 make_bad_inode +EXPORT_SYMBOL vmlinux 0xbd59b9ba netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8a8139 sock_wfree +EXPORT_SYMBOL vmlinux 0xbd9bdb5c blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdbb644f scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xbdbbf3a7 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdbf66b3 do_splice_direct +EXPORT_SYMBOL vmlinux 0xbdcece8e inet_stream_ops +EXPORT_SYMBOL vmlinux 0xbdf7a5ed pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1ccac7 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe27abca pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbed602ac mdiobus_scan +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbeed0b04 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef4fc08 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xbf0edcc6 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xbf1f0a55 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xbf3cd629 mach_p4080_ds +EXPORT_SYMBOL vmlinux 0xbf3d03cd input_inject_event +EXPORT_SYMBOL vmlinux 0xbf54fd53 __kfree_skb +EXPORT_SYMBOL vmlinux 0xbf6916f1 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfd5a2af scsi_device_put +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc002ea1d __neigh_event_send +EXPORT_SYMBOL vmlinux 0xc0044427 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xc0384667 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xc039b4da i2c_clients_command +EXPORT_SYMBOL vmlinux 0xc04cf332 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xc04f1a9e generic_removexattr +EXPORT_SYMBOL vmlinux 0xc05a1c0a fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc05cf8e0 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0xc062bbb4 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xc0632179 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xc066650e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a6f470 mddev_congested +EXPORT_SYMBOL vmlinux 0xc0b72977 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc0ca6045 set_security_override +EXPORT_SYMBOL vmlinux 0xc0cda003 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc0d1b909 usb_remove_phy +EXPORT_SYMBOL vmlinux 0xc0f8cd1d dev_get_flags +EXPORT_SYMBOL vmlinux 0xc10a6a64 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc11e68ea pci_match_id +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1357d10 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xc1398bc6 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0xc15e7c9f scsi_print_command +EXPORT_SYMBOL vmlinux 0xc1a4039a of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xc1be5ecf swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1cbf81f bio_copy_kern +EXPORT_SYMBOL vmlinux 0xc1cc9dfd fget +EXPORT_SYMBOL vmlinux 0xc1ce53c5 __napi_schedule +EXPORT_SYMBOL vmlinux 0xc1d1f6a2 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xc1d6e7f9 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xc1d7be66 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xc1e1441b of_create_pci_dev +EXPORT_SYMBOL vmlinux 0xc1f95668 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xc2053f7e inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xc2059545 agp_bridge +EXPORT_SYMBOL vmlinux 0xc2096b33 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xc2177f5d km_query +EXPORT_SYMBOL vmlinux 0xc217c55a dev_add_pack +EXPORT_SYMBOL vmlinux 0xc22669c2 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xc22a940d sk_stop_timer +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc2347d53 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xc23669c6 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xc23adc2d dev_remove_offload +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc247dba3 vfs_symlink +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc27ca1df elv_abort_queue +EXPORT_SYMBOL vmlinux 0xc29ea263 file_ns_capable +EXPORT_SYMBOL vmlinux 0xc29ef399 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xc2bbe3ab decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e14172 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2f9d74b tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xc310172d uart_match_port +EXPORT_SYMBOL vmlinux 0xc325f2c1 tty_lock_pair +EXPORT_SYMBOL vmlinux 0xc329beb0 d_add_ci +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc35af932 phy_driver_register +EXPORT_SYMBOL vmlinux 0xc35b690e inet_sendpage +EXPORT_SYMBOL vmlinux 0xc365c524 inode_change_ok +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc36d315f rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xc3c19c9a mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xc3cf2def inode_needs_sync +EXPORT_SYMBOL vmlinux 0xc3f19ae3 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xc3ff216a i2c_verify_client +EXPORT_SYMBOL vmlinux 0xc40705eb check_disk_size_change +EXPORT_SYMBOL vmlinux 0xc412bb19 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4337c3f journal_lock_updates +EXPORT_SYMBOL vmlinux 0xc4360778 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xc43b9024 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xc43f1ab2 key_unlink +EXPORT_SYMBOL vmlinux 0xc448d09e agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xc44fd921 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc45c48f9 skb_find_text +EXPORT_SYMBOL vmlinux 0xc46777ba tty_set_operations +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48bbf48 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4d3a2d8 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xc4f2aa32 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xc4fc6472 idr_remove_all +EXPORT_SYMBOL vmlinux 0xc500f0e7 udp_ioctl +EXPORT_SYMBOL vmlinux 0xc5086d35 idr_destroy +EXPORT_SYMBOL vmlinux 0xc50aae79 cpufreq_cooling_unregister +EXPORT_SYMBOL vmlinux 0xc51d7c92 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xc52a15f5 fb_class +EXPORT_SYMBOL vmlinux 0xc540eb04 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xc54232e5 inode_dio_done +EXPORT_SYMBOL vmlinux 0xc54a71aa i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc562264d tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xc565e896 path_put +EXPORT_SYMBOL vmlinux 0xc592f87c twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xc5a97a3d iget_locked +EXPORT_SYMBOL vmlinux 0xc5ab8d0f pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xc5c08eab dpa_uio_bman +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5efdb96 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0xc61b3dae __serio_register_driver +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc639a307 bdev_read_only +EXPORT_SYMBOL vmlinux 0xc6418b46 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xc64e5e9b pci_request_regions +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc65ad762 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666b9bf sync_blockdev +EXPORT_SYMBOL vmlinux 0xc6789033 block_truncate_page +EXPORT_SYMBOL vmlinux 0xc678f00c i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xc684598e swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc68cfd16 skb_put +EXPORT_SYMBOL vmlinux 0xc69e021a ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xc6ab28b0 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b28769 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xc6b48642 fm_set_rx_port_params +EXPORT_SYMBOL vmlinux 0xc6b9f3dc ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d357f0 tty_register_driver +EXPORT_SYMBOL vmlinux 0xc6ddfc48 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xc6eb2e2a tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72a7f2a dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0xc732f21a rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xc748bb68 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79c58b3 bio_map_kern +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7bdaf52 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xc7cb9afc scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xc7dc88f6 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fab04f scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xc81e5dc6 qman_query_fq +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc835db83 genphy_resume +EXPORT_SYMBOL vmlinux 0xc83926f4 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xc83a122a tty_port_close_start +EXPORT_SYMBOL vmlinux 0xc842ee79 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85112d6 __get_page_tail +EXPORT_SYMBOL vmlinux 0xc862494f genlmsg_put +EXPORT_SYMBOL vmlinux 0xc8670b8d alloc_file +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b9a76b bman_recovery_exit +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8d41eff tty_mutex +EXPORT_SYMBOL vmlinux 0xc8d4485f mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xc8eb21c4 tcp_check_req +EXPORT_SYMBOL vmlinux 0xc91b7ae9 elv_add_request +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc9386873 request_key_async +EXPORT_SYMBOL vmlinux 0xc96fb6d0 qman_start_dequeues +EXPORT_SYMBOL vmlinux 0xc97479d3 sget +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9acf85b cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc9c76634 km_policy_notify +EXPORT_SYMBOL vmlinux 0xc9cab971 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xca5967e3 vm_stat +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca608728 thaw_bdev +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa4ceea dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xcab263c9 inet6_bind +EXPORT_SYMBOL vmlinux 0xcab46aad redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcada2215 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xcaf18dcf twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xcaf2f1a8 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb14b89a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xcb1b6be9 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xcb218b87 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xcb25d19c alloc_fcdev +EXPORT_SYMBOL vmlinux 0xcb3512f6 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xcb527d4b del_gendisk +EXPORT_SYMBOL vmlinux 0xcb59f376 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcba4d485 netdev_alert +EXPORT_SYMBOL vmlinux 0xcbbab69e tty_devnum +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd52969 dquot_operations +EXPORT_SYMBOL vmlinux 0xcbd944a9 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xcc164d63 pci_release_regions +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc44e42f skb_checksum_help +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc55278e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc9d03ab no_llseek +EXPORT_SYMBOL vmlinux 0xccb4ad4c devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xccb876e8 file_update_time +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccf21b7e eth_header +EXPORT_SYMBOL vmlinux 0xccf60b81 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xcd04a8cf scsi_print_sense +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd234315 d_lookup +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd390932 lookup_one_len +EXPORT_SYMBOL vmlinux 0xcd395df6 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xcd502432 fb_blank +EXPORT_SYMBOL vmlinux 0xcd5c339f inetdev_by_index +EXPORT_SYMBOL vmlinux 0xcd864b90 journal_load +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd96b62a page_put_link +EXPORT_SYMBOL vmlinux 0xcdac66ab shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdf0b90e genphy_suspend +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce22df34 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b214f nf_afinfo +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5aee9e remap_pfn_range +EXPORT_SYMBOL vmlinux 0xce6119a9 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xce62e829 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xceced889 dst_discard +EXPORT_SYMBOL vmlinux 0xcee2141f cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xcee4cc7c thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1a1fb8 unregister_netdev +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf39d83d dev_mc_sync +EXPORT_SYMBOL vmlinux 0xcf436260 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xcf5074e1 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xcf5376c5 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xcf541568 blk_get_queue +EXPORT_SYMBOL vmlinux 0xcfa04a0a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xcfc9bc31 flush_tlb_range +EXPORT_SYMBOL vmlinux 0xcff0d69a pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xcff1cc68 new_inode +EXPORT_SYMBOL vmlinux 0xcff2d704 dev_warn +EXPORT_SYMBOL vmlinux 0xd0037aa5 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xd009f976 dev_add_offload +EXPORT_SYMBOL vmlinux 0xd0177edc put_io_context +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0401f6d thaw_super +EXPORT_SYMBOL vmlinux 0xd044cfcc cont_write_begin +EXPORT_SYMBOL vmlinux 0xd04ca0aa jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd05d2d73 ida_get_new +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07a82ac skb_pad +EXPORT_SYMBOL vmlinux 0xd07df623 elevator_exit +EXPORT_SYMBOL vmlinux 0xd0a116d3 mem_map +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bf5ace tcp_disconnect +EXPORT_SYMBOL vmlinux 0xd0ce9d38 nf_setsockopt +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 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd11d3a6a __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xd11d83a2 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xd138719c qman_recovery_exit +EXPORT_SYMBOL vmlinux 0xd13b5518 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xd1569af7 journal_errno +EXPORT_SYMBOL vmlinux 0xd15eae25 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xd170a449 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xd17719da dqput +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1ad7173 generic_setxattr +EXPORT_SYMBOL vmlinux 0xd1cf2fb4 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xd1e3076a force_sig +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd20d1d50 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xd20df5d1 mach_p5020_ds +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd23db629 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd288693b kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xd292dd3a ida_remove +EXPORT_SYMBOL vmlinux 0xd29caa51 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xd2ab8a6f generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xd2af5a45 agp_create_memory +EXPORT_SYMBOL vmlinux 0xd2b7f9e3 fm_port_unbind +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2eb1912 journal_create +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd33f4775 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xd3440397 load_nls +EXPORT_SYMBOL vmlinux 0xd3577071 iterate_fd +EXPORT_SYMBOL vmlinux 0xd375d741 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xd385141c generic_delete_inode +EXPORT_SYMBOL vmlinux 0xd3b36125 ppp_input +EXPORT_SYMBOL vmlinux 0xd3c747a1 qman_irqsource_remove +EXPORT_SYMBOL vmlinux 0xd3cb474e ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd3d3a477 posix_acl_init +EXPORT_SYMBOL vmlinux 0xd3e92052 mnt_unpin +EXPORT_SYMBOL vmlinux 0xd3f5826c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xd407180b twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xd4359f94 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xd44fc209 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd4611d4a sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd4a0505f eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xd4a2c91d pci_target_state +EXPORT_SYMBOL vmlinux 0xd4a58e1d kill_bdev +EXPORT_SYMBOL vmlinux 0xd4ad91b4 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xd4c6d7b0 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xd4d2cfbc init_net +EXPORT_SYMBOL vmlinux 0xd4e2303e udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd52239ad qman_set_null_cb +EXPORT_SYMBOL vmlinux 0xd5270f90 mount_single +EXPORT_SYMBOL vmlinux 0xd54a70a2 from_kqid_munged +EXPORT_SYMBOL vmlinux 0xd574ca7c netdev_set_master +EXPORT_SYMBOL vmlinux 0xd580eb81 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xd59185aa pci_iounmap +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5c4fa47 free_task +EXPORT_SYMBOL vmlinux 0xd5cdbe91 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd608696d vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xd612ae45 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62286a5 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd692cd89 key_task_permission +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a02213 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xd6a79bed bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xd6a7e17a nla_put +EXPORT_SYMBOL vmlinux 0xd6b2d499 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xd6b53088 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xd6c343f1 pme_ctx_disable +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6eaee56 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f5e442 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xd6ff8470 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xd72ef95d journal_dirty_data +EXPORT_SYMBOL vmlinux 0xd73668be xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xd73e141f bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7726f85 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xd77a2f5c pme_stat_get +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd78620ef genl_register_family +EXPORT_SYMBOL vmlinux 0xd7962861 md_integrity_register +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79dd8f0 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xd7ad6a48 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd7c0c038 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xd7c217e2 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd81a9d18 security_path_chmod +EXPORT_SYMBOL vmlinux 0xd839a75e blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd851eaf7 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd86492f5 da903x_query_status +EXPORT_SYMBOL vmlinux 0xd8655c1b pci_pme_active +EXPORT_SYMBOL vmlinux 0xd87e222f usb_get_phy +EXPORT_SYMBOL vmlinux 0xd898f3e2 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8dc775e locks_remove_posix +EXPORT_SYMBOL vmlinux 0xd8e35095 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e82410 seq_lseek +EXPORT_SYMBOL vmlinux 0xd8f3ab31 may_umount_tree +EXPORT_SYMBOL vmlinux 0xd919926c jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd948758f generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd94c3058 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a37607 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xd9a6cd54 may_umount +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c4bc4c d_instantiate +EXPORT_SYMBOL vmlinux 0xd9ce4256 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9e565c1 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xd9e5f520 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xd9e61fcb qid_valid +EXPORT_SYMBOL vmlinux 0xda02c6eb netdev_warn +EXPORT_SYMBOL vmlinux 0xda03ea6e serio_unregister_port +EXPORT_SYMBOL vmlinux 0xda29267d dput +EXPORT_SYMBOL vmlinux 0xda2a9c7c bd_set_size +EXPORT_SYMBOL vmlinux 0xda34272d poll_freewait +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4fc359 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9d443b d_invalidate +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4ab08 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb31c6ad agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xdb322203 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xdb4f75a6 phy_print_status +EXPORT_SYMBOL vmlinux 0xdb517ebf pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb69dda4 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xdb73fcd4 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb97ed3e scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xdb9ec8bd abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbb66a9d bio_copy_user +EXPORT_SYMBOL vmlinux 0xdbc52fab inet_getname +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbe0169a xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xdbf11c01 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xdbfffbd5 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0baf30 serio_open +EXPORT_SYMBOL vmlinux 0xdc14b51c inet_shutdown +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc261371 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc321a51 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xdc342da7 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xdc349df4 simple_link +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4d7a75 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xdc643279 nf_log_packet +EXPORT_SYMBOL vmlinux 0xdc647e7b pci_clear_master +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc70bd5e pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xdc720a4b __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xdc7f8ce0 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xdc898108 sys_copyarea +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca9fece qdisc_reset +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcd1998f inet_accept +EXPORT_SYMBOL vmlinux 0xdced1fac phy_drivers_register +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd79b385 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xddba4b5b ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xddd44b84 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xde057bcc update_region +EXPORT_SYMBOL vmlinux 0xde2e3f7a d_rehash +EXPORT_SYMBOL vmlinux 0xde3ab8fa insert_inode_locked +EXPORT_SYMBOL vmlinux 0xde40a344 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4a8e26 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xde4dba31 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xde56654c inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xded1e7e7 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xdede1d7f __blk_end_request +EXPORT_SYMBOL vmlinux 0xdee76ff8 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xdefa0ad8 qman_testwrite_cgr +EXPORT_SYMBOL vmlinux 0xdf0d5f39 kill_block_super +EXPORT_SYMBOL vmlinux 0xdf13971c dpa_uio_qman +EXPORT_SYMBOL vmlinux 0xdf26e7c0 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf39529a sock_sendmsg +EXPORT_SYMBOL vmlinux 0xdf4df294 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xdf5b81d9 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfa09063 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xdfa734c4 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xdfb2ce26 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xdfb72f13 cpufreq_cooling_register +EXPORT_SYMBOL vmlinux 0xdfd180db tty_vhangup +EXPORT_SYMBOL vmlinux 0xdfe687f9 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xdff32acf register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdff32d96 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xe00e023e netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0xe011d10a bio_split +EXPORT_SYMBOL vmlinux 0xe0139def of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xe017146a pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe0223a50 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xe0427367 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xe045c57b unlock_rename +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0707db2 find_inode_number +EXPORT_SYMBOL vmlinux 0xe072a2a6 take_over_console +EXPORT_SYMBOL vmlinux 0xe07554b5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0a1dc30 netlink_ack +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b2992e vfs_link +EXPORT_SYMBOL vmlinux 0xe0cb7032 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe1001d23 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe126fe5a blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xe1318870 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xe16ad2b1 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xe170760d page_symlink +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1a64bfa xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xe1af561e pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xe1b1ca5d dev_trans_start +EXPORT_SYMBOL vmlinux 0xe1d2e9d2 genl_notify +EXPORT_SYMBOL vmlinux 0xe1ef8583 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe230aeb8 pci_enable_obff +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23c396b register_gifconf +EXPORT_SYMBOL vmlinux 0xe24222e5 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25aa03c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe25bb62b sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xe25ed2ae skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xe2652ca0 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xe28936c5 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2baa989 pci_set_ltr +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 0xe2eedff6 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xe2f0d0e9 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xe2f30099 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3048e6a udplite_prot +EXPORT_SYMBOL vmlinux 0xe30ba487 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xe30f6d28 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xe3219bfb ihold +EXPORT_SYMBOL vmlinux 0xe337d450 neigh_update +EXPORT_SYMBOL vmlinux 0xe33ec992 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xe35a3700 agp_free_page_array +EXPORT_SYMBOL vmlinux 0xe37c21bc __nlmsg_put +EXPORT_SYMBOL vmlinux 0xe37ec311 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xe385ef1a kobject_init +EXPORT_SYMBOL vmlinux 0xe38896bc noop_fsync +EXPORT_SYMBOL vmlinux 0xe3c7f531 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3de50bd qman_destroy_fq +EXPORT_SYMBOL vmlinux 0xe3f5f298 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xe402dfae posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xe40cbca1 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xe4238079 key_invalidate +EXPORT_SYMBOL vmlinux 0xe4501ed7 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xe45e21d4 tcf_hash_release +EXPORT_SYMBOL vmlinux 0xe4708bc6 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xe478202a scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4884ce8 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xe49808b4 qman_poll +EXPORT_SYMBOL vmlinux 0xe49c7f9b alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4e9660a netdev_state_change +EXPORT_SYMBOL vmlinux 0xe4f56c18 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xe4f8c430 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5342366 phy_start +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe55fbb22 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5b45f9a devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xe5c7211e dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5ea70fb jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f3f644 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xe600a326 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xe606ad51 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0xe6572c2e jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe6670437 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xe690d00c dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xe69503f1 serio_close +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6a444e1 ll_rw_block +EXPORT_SYMBOL vmlinux 0xe6bb87ab __bforget +EXPORT_SYMBOL vmlinux 0xe6c31e6b d_validate +EXPORT_SYMBOL vmlinux 0xe6ccb53f vfs_unlink +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe705182b scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xe729b9f0 of_get_parent +EXPORT_SYMBOL vmlinux 0xe72e4e4e padata_stop +EXPORT_SYMBOL vmlinux 0xe737045d filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xe74fc659 netdev_features_change +EXPORT_SYMBOL vmlinux 0xe7575cc0 pme_ctx_exclusive_dec +EXPORT_SYMBOL vmlinux 0xe77b941f pme2_exclusive_set +EXPORT_SYMBOL vmlinux 0xe77f518a sk_reset_timer +EXPORT_SYMBOL vmlinux 0xe788302d dquot_resume +EXPORT_SYMBOL vmlinux 0xe789c154 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0xe78fcadd tty_unlock_pair +EXPORT_SYMBOL vmlinux 0xe7a277b4 stop_tty +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b8b0e6 fget_light +EXPORT_SYMBOL vmlinux 0xe7bccc23 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e52e98 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe84b1153 skb_insert +EXPORT_SYMBOL vmlinux 0xe84f1747 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xe8614c54 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xe8777201 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xe8a03e31 seq_open +EXPORT_SYMBOL vmlinux 0xe8af26d7 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b82fe0 bman_ip_rev +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d1dfed set_binfmt +EXPORT_SYMBOL vmlinux 0xe904b6fd md_done_sync +EXPORT_SYMBOL vmlinux 0xe90e7f32 mutex_trylock +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe924bad2 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xe926ecaf textsearch_prepare +EXPORT_SYMBOL vmlinux 0xe9427192 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0xe950499d qman_release_fqid_range +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe978b78d pme_hw_flow_new +EXPORT_SYMBOL vmlinux 0xe988ee5b nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xe994d580 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xe99e9d6d vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xe9b0989b input_register_handle +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea6cbc2a uart_register_driver +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a6937 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xea825453 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xea880b2e __dst_free +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa28ee2 build_skb +EXPORT_SYMBOL vmlinux 0xeab0819b pme_ctx_is_disabled +EXPORT_SYMBOL vmlinux 0xeaeacee2 dev_close +EXPORT_SYMBOL vmlinux 0xeaeb3ed2 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xeb0e1320 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xeb1995a7 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xeb1e0720 filemap_fault +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb393f97 redraw_screen +EXPORT_SYMBOL vmlinux 0xeb48dcc8 skb_copy +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb8be519 clear_user_page +EXPORT_SYMBOL vmlinux 0xeb90af61 journal_start +EXPORT_SYMBOL vmlinux 0xeba7ba9f kill_pgrp +EXPORT_SYMBOL vmlinux 0xebbfcd93 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xebcc281b bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0xebda898d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe3f635 sk_alloc +EXPORT_SYMBOL vmlinux 0xec06d47b bdi_register +EXPORT_SYMBOL vmlinux 0xec085ca4 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec221302 module_refcount +EXPORT_SYMBOL vmlinux 0xec232ac4 of_dev_put +EXPORT_SYMBOL vmlinux 0xec41a7db mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0xec4411d0 pci_dev_put +EXPORT_SYMBOL vmlinux 0xec482de1 of_find_property +EXPORT_SYMBOL vmlinux 0xec70b0cc tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xec81010d fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xec990811 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xecc1449e bm_pool_set +EXPORT_SYMBOL vmlinux 0xecc2f6ca sock_i_uid +EXPORT_SYMBOL vmlinux 0xeccf309d serio_rescan +EXPORT_SYMBOL vmlinux 0xecd67cec schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecea3254 mount_subtree +EXPORT_SYMBOL vmlinux 0xed04e628 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xed43ac00 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xed7c290c km_policy_expired +EXPORT_SYMBOL vmlinux 0xed7d581d dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xed8b211c kick_iocb +EXPORT_SYMBOL vmlinux 0xed9232c4 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedad0286 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc2728c seq_release +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedcc5ab8 scsi_device_get +EXPORT_SYMBOL vmlinux 0xedfa9653 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xee0860e0 padata_start +EXPORT_SYMBOL vmlinux 0xee1093dd nf_register_hook +EXPORT_SYMBOL vmlinux 0xee1cb70d inet_sendmsg +EXPORT_SYMBOL vmlinux 0xee1fa497 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xee28ce38 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xee2b0d81 fm_port_pcd_bind +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3c1210 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xee5f58d6 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xee6bb060 udp_disconnect +EXPORT_SYMBOL vmlinux 0xee8721d7 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xee95a2ed posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xee9cae0a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xee9f2cde __pci_register_driver +EXPORT_SYMBOL vmlinux 0xeea430b9 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaadb1a tty_port_put +EXPORT_SYMBOL vmlinux 0xeed42421 bdgrab +EXPORT_SYMBOL vmlinux 0xeedae5f3 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xeefad7c0 vga_tryget +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef1b5a99 revalidate_disk +EXPORT_SYMBOL vmlinux 0xef401135 netdev_change_features +EXPORT_SYMBOL vmlinux 0xef911813 get_agp_version +EXPORT_SYMBOL vmlinux 0xef9677a9 kmap_high +EXPORT_SYMBOL vmlinux 0xefa55d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xefadf164 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe55850 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xefef2f38 proc_create_data +EXPORT_SYMBOL vmlinux 0xeffd12e7 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00154cf __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xf008a183 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xf030cbfe sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xf041c421 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xf0502dc8 put_tty_driver +EXPORT_SYMBOL vmlinux 0xf05a812b bioset_free +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0b248ed __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf0d57af3 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xf0e57a9f bman_flush_stockpile +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf1144157 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf141bf26 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xf1604085 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1d7cd37 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20c2aa0 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2274624 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22d27c4 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24405dd led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xf26c08c3 nla_append +EXPORT_SYMBOL vmlinux 0xf2cee9f1 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xf2d0d501 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf2e16ee8 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xf3061a90 kobject_add +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31d12b9 read_cache_page_async +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3253f51 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf32c602d usb_add_phy +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf343db24 __getblk +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf35604f8 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xf36c4577 seq_escape +EXPORT_SYMBOL vmlinux 0xf3712909 qman_query_congestion +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3947311 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xf3ae2b57 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e1ed40 prepare_binprm +EXPORT_SYMBOL vmlinux 0xf3e2cd56 request_key +EXPORT_SYMBOL vmlinux 0xf3f3444c rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xf4131623 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xf4200be6 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xf42c1eca tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf445593a agp_find_bridge +EXPORT_SYMBOL vmlinux 0xf45a4e52 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xf45b5a23 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xf45c4ef5 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xf45c776e pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xf4b4ba8c md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xf4b8444a qman_init_fq +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c9458e cfb_copyarea +EXPORT_SYMBOL vmlinux 0xf4cacb76 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xf4e5330b scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xf4ede2cd page_readlink +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fce8df ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xf50886bd ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf534d79b registered_fb +EXPORT_SYMBOL vmlinux 0xf53a44d3 misc_deregister +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf582857c register_netdevice +EXPORT_SYMBOL vmlinux 0xf5838013 mmc_release_host +EXPORT_SYMBOL vmlinux 0xf58e584a insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xf59f1a20 __scm_destroy +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5a7e0bd blk_end_request +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5d2d74d tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xf5d6c71b scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ec3d03 create_proc_entry +EXPORT_SYMBOL vmlinux 0xf5fcd320 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xf6111939 init_special_inode +EXPORT_SYMBOL vmlinux 0xf625783d qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xf637f6cc wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf68e3ddc get_thermal_instance +EXPORT_SYMBOL vmlinux 0xf693423e jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xf699e387 complete_request_key +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d3806e sock_kfree_s +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf7170f1c __bread +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf761a809 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0xf770fd1b jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xf7832c85 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7d0e42d user_revoke +EXPORT_SYMBOL vmlinux 0xf7d394cf pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xf7fe0fad blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82db528 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf831fd02 sock_i_ino +EXPORT_SYMBOL vmlinux 0xf83510bf kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xf83ba5e4 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xf83df1b4 sock_release +EXPORT_SYMBOL vmlinux 0xf86007b9 mac_find_mode +EXPORT_SYMBOL vmlinux 0xf867f231 security_path_link +EXPORT_SYMBOL vmlinux 0xf86be0d2 unregister_nls +EXPORT_SYMBOL vmlinux 0xf86d9c60 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf89a3d62 bman_affine_cpus +EXPORT_SYMBOL vmlinux 0xf8e0b630 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf8e26cb9 netif_device_attach +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8eca5d3 mpage_writepage +EXPORT_SYMBOL vmlinux 0xf8f01015 filemap_flush +EXPORT_SYMBOL vmlinux 0xf901858f tcf_action_exec +EXPORT_SYMBOL vmlinux 0xf9081581 md_error +EXPORT_SYMBOL vmlinux 0xf91cc653 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf94c4783 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xf9530e8d sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xf96299a7 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xf98717f6 read_cache_page +EXPORT_SYMBOL vmlinux 0xf9885eca current_fs_time +EXPORT_SYMBOL vmlinux 0xf98fe6b9 tty_hangup +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c9a561 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9eeaa0b alloc_fddidev +EXPORT_SYMBOL vmlinux 0xf9ff70ce dmam_pool_create +EXPORT_SYMBOL vmlinux 0xfa03308e input_register_device +EXPORT_SYMBOL vmlinux 0xfa3b3a26 __alloc_skb +EXPORT_SYMBOL vmlinux 0xfa67fca1 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xfa680dca simple_pin_fs +EXPORT_SYMBOL vmlinux 0xfa6c8623 pme_ctx_ctrl_update_flow +EXPORT_SYMBOL vmlinux 0xfa7f2b64 fm_port_disable +EXPORT_SYMBOL vmlinux 0xfa965c84 backlight_force_update +EXPORT_SYMBOL vmlinux 0xfa972b53 md_write_end +EXPORT_SYMBOL vmlinux 0xfa9ba891 module_layout +EXPORT_SYMBOL vmlinux 0xfa9d95f7 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xfa9dffb2 deactivate_super +EXPORT_SYMBOL vmlinux 0xfaab2d28 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xfabb167a inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xfac83e16 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf3e5e3 irq_set_chip +EXPORT_SYMBOL vmlinux 0xfaf72385 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfafdbf1f open_exec +EXPORT_SYMBOL vmlinux 0xfb1a310a ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xfb2456c6 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xfb29b326 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xfb2d31ab dev_uc_flush +EXPORT_SYMBOL vmlinux 0xfb30596c vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xfb51a447 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb8853b1 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xfb8a129c dev_mc_flush +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbafe408 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xfbbc5dde i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xfbc696d4 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xfbf13221 do_truncate +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc090416 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc4a6459 dm_register_target +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc8ec689 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xfc932ae1 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xfc9d2186 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb08e98 user_path_at +EXPORT_SYMBOL vmlinux 0xfcc01b84 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd03db4b gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xfd192654 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xfd2c9963 inc_nlink +EXPORT_SYMBOL vmlinux 0xfd30f1b5 generic_make_request +EXPORT_SYMBOL vmlinux 0xfd359c99 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xfd5437d2 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xfd58e425 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd635dfe directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc5b9ba cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xfdcb496e pme_hw_flow_free +EXPORT_SYMBOL vmlinux 0xfde559d1 blkdev_get +EXPORT_SYMBOL vmlinux 0xfdeac76a dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xfdeb4f19 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdf4843f lock_may_read +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe13f60f bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xfe50427f bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xfe5c12c8 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfe87b326 security_mmap_file +EXPORT_SYMBOL vmlinux 0xfe97b6e4 __register_chrdev +EXPORT_SYMBOL vmlinux 0xfe9d13b9 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xfed7505a mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff46643a bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xff472d5e seq_open_private +EXPORT_SYMBOL vmlinux 0xff5b36fb mach_p3041_ds +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff841102 kernel_read +EXPORT_SYMBOL vmlinux 0xff866c76 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xff8cbeb1 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xff9339d1 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb7944e dev_addr_add +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffd6125c __sb_start_write +EXPORT_SYMBOL vmlinux 0xffe50726 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xffeadd58 devm_usb_put_phy +EXPORT_SYMBOL_GPL crypto/af_alg 0x0a3092ca af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x21dae107 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x296e8bc5 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x2a7e711c af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x9316991f af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa5f39805 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xcaaf2c96 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x5c0cb779 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x91d1e998 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe3a6b94a async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x896da3ac async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xb2386a3d async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x02401741 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x4e955a7a async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8fc08ed5 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf8117f56 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc24c85f0 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xf7afd653 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x804eab28 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xbbfd188e cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x786ef6e8 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x092183ee cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x1a00d44b cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x24e96b43 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x283a3889 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x8de8c45f cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x95a4583b cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa176f737 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xd45e1969 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xe14bfd6e cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xff867da6 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x30fdaeb3 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 0x59560dfc serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x8a3d02cd twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x6050ca24 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1023b385 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x27ad07d7 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2d7412d9 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58ff4ce4 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x74e57081 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7b978ae4 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f4bc430 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9e6fdea8 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa3d48d31 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa812a261 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb25cf497 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc1a52dc5 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdcf66011 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdf744ac8 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe11b48e6 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe6e65590 ahci_reset_controller +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 0xf713056d ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfe42fc4f ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xca334c98 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x6fdc972a 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 0x086703c7 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0a38e6fd bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1660fb35 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x26c51d83 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3e0286a8 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x434fa636 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x536a3b01 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x859767a1 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x86f1924f bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x89cd4b17 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa90da96e bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb858f5c5 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbb0c8299 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd4a34d70 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd66de212 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe9f40e69 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeabf10e2 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0775e9cd btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x30aa3878 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4b4a1f28 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5c6a7836 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x863489d8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb7d6932b btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc2e27c07 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd23896ce btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd29b8bf4 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xec4daef1 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0130fd66 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a01ca26 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x39d89249 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3e99dad2 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69d61160 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x72e9c665 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x74a2a29a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7d15c97d edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7e1fc370 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x85725256 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8df7afd8 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaef9eab5 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb12e34de edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb29f915d find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc02818d0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc49c8dcd edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcbb95df2 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf1ad7b9 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdac52ba0 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe6e0a72e edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xea7dfe75 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf850ac64 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x0e55d06d bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x838c8269 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x848d7fa7 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x8888d67d __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x507b0eda drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6779c99a drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x2f640884 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x7c878a2d ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x876a8270 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x076564a3 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11411b0f hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1624e34f hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2a427e74 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2b1a3e19 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x413663be hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x577c61ee hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x631abdef hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x669ca269 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x68801352 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x70a7d447 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x731f5f24 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7a50cc56 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x81a66888 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84135141 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x99a2be2d hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xab82c958 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaf7c3ca0 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb1fc90d8 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xba76a2f5 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc2cac910 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8d961f2 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdcea307c hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe16e1930 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe749fbda hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xead16ad1 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xecb5a78c hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf45c7f08 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf73dfeb8 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf9365e7c hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa0979e3 hid_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 0xaae2d151 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x50f0983c roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xab77fe4d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc1470fcb roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0f9e3aed sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x1283f95c sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6247c55f sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7ef70ba2 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9617c085 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf531c721 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x60093171 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x6c32ae3c usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xa7b24916 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xae7cd901 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x076d035d hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x40649000 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5ee0d2a0 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x613560df hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x72c14a7e hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8f0d0a2d hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x903eb037 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa41c2b49 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc129fc69 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdd8c2a7b hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe369040e hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xecebde86 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xff1f978e hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x07bf9f42 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0f39a904 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1095ce73 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2fb484c5 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x30b92813 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x55f0e4bd pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x774985be pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc355c3a7 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd4a9e453 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd56b91c9 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe0087e29 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x196457e0 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x22dd8d2b i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x235149b4 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x46a8cef0 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4bf07c0a i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5c355092 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd696f9cb i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdeca898b i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe2b0a8f9 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x006b51ae i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd37f818d i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x6b39658f i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xca040c64 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x098cd789 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1c8180d3 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1f2d6058 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x272385ae ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa2abb495 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb1d9b9bc ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb8b2e0d9 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc5a78d33 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf15733b1 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0037fb02 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1126af82 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1a2d9fed adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2018025c adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7da231d6 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x814de46b adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaa376419 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd6c798b0 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdcfbfb00 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf0b46b00 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfdb0585e adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfeb399e8 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00e75161 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x029b084a iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x14513e5d iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x25b0fa43 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27b8335f iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4f84a2d7 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x581b4993 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5e1d3653 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5fb833ed iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61a62e22 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x639306b0 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68979cfe iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x772aaf4c iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x87ea98ad iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8be22122 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9da31610 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb97c8fc6 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc01cf139 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdcbb9858 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe166773e iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe67dbffe iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7331bd3 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed19d7ff iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf206718e iio_enum_write +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xaaf47478 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 0x91f66352 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa4ac94ab cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xacccf9e5 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xea93d1d4 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1a6cffa6 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x24c1c323 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2f23b9ec wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6250495d wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7e71ea31 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x90a8a734 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa44bd403 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xaf65f7f5 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb2dbeaaf wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb49d8219 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xddf675fe wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeade777f wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x06dfca9e ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x09583b37 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x22546935 ipack_device_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x363b0ad5 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd258c19e ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe41872d4 ipack_driver_unregister +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 0x23fef05c gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x25b278c3 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2e361cf4 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x31fdbfab gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4307120b gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x70ca4d41 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x783f4c6f gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8c7b549c gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x969a088d gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9b4a304b gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa8e59dff gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa98cfa64 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xada9d482 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb5cb20cc gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbebd579e gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc25fdc15 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe421234b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0976bc8f wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4d17e9d0 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7e449bc5 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x90fe8865 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa0069d04 wf_put_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 0xc5d07d64 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd2737ef3 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd3e59262 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf366727d wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf9ddb9c4 wf_find_control +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0cb4a0c6 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa49228da dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcfa01a18 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe4fa52c7 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x1e3cc483 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x434f22ae dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd0080026 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 0x1061bc8d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6f311a5b dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x87ea24d6 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa1ea521a 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 0xaba7d009 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb650f473 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x67521436 dm_tm_create_with_sm +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 0x7dc38fc6 dm_tm_open_with_sm +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 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xadff8d67 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xe4038ee6 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x941ce0ab md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x6eaeb3d9 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x062401bc saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5b9f11f0 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x62697c44 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6e93d28b saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x866968c6 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9dfb76ec saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa4dd51ee saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xad73f079 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe34960a2 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf085b1d8 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x03cf0d2c saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0472c560 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x23dd8c8a saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4a02efb3 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4b0f0d61 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6ed64673 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xefb6abd9 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x03ea8862 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x14b74623 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x48aec0be smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5dde8311 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5e05c04e sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5f8ec090 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x60b4f105 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6522afac smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x683fe1bc smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7cfc4a86 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x87394cac smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa7530ebc smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc4834b73 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcf87ef05 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd4ac0125 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf50a14b3 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf7c1e460 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x621306b0 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xbb08a105 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x02ba5c1b mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x099e9796 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1bdd05ed mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x24a59347 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2cac364a mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3400d1f2 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3d8a8718 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x48e8f0e8 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6dda5134 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa11b4035 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc33c1f67 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcb622bc8 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcc3de2b3 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd1cd1db8 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xed607243 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xee508a14 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf23b3d09 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x35e65766 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x717dfef0 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xad71f770 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xce7ae5cd saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe85cdce2 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x16f10330 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2a36e5c8 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x341384c9 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x738058d9 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7a4b590d ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x940c2511 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xac2722ee ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x1f342a10 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xbe33a21b radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x08f9ac75 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x20755183 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x32c7889a rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4d965862 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4e495c94 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x65a7122b rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ccfdeab ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8e9fc634 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9026bb06 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x95f4745b ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa3f1ca47 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa5dbcfec ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf25105c5 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf63f60d0 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x59ff36d7 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x6515e2ce microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x1ec5921f mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xb89619e8 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xbdc6100c tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x2652c692 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x383d3ab3 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x1ca0da2c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8408a237 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xb4473391 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x1a23c0bf tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xedd77db3 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x10cd654f simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x059a0161 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x27f613fb cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2c25e1fd cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4759a26d cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b918e30 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6c673fa6 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x857e219c cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x88f9301f cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x893629c1 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x922b5ce3 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x98a65203 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9eb56f05 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xab110643 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb298d27f cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbe49ee59 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc00ff991 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd806e71d cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf69fff04 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff1cac1c cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x96487357 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x123c8e5e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x07277080 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0b0a654b em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x304edfe7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x335702f2 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x37e98fd5 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3d237009 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4370df3e em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x49c8325d em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6175b3f1 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa11e0d82 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa5354dde em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xaa539055 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc1a37451 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf832aeeb em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x15ac9478 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x6d8c9d12 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8aaa3cd9 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd37f5d81 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x05f4660f v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x085048e5 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3adf5691 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4a173cce v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5d9d3491 v4l_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6ccadf36 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xafd5650e v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x09bdacc9 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x275fb585 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x27cf75ec v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x6b8fed84 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1e319397 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1faa1327 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2244676c v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3473dee1 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x35688a7d v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4898308d v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58f97e3c v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5efe9b37 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8aa2818c v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb2dff3dd v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb64f1d2a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbb34eba5 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd0b7d9d1 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x07b0d43f videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1ece9b92 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2703ebe4 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x291c0f54 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x335a7410 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3f81747d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x411628ae videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4c7a9765 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x53fdb183 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5b9b3a57 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6101d50e videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x64c61132 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6bd84314 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x722b1921 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x77fbfbee videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b2af7f0 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa2b574e7 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb65fbb8e videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc649d481 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd0f69df9 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd199c9ee videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe50cf343 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef7f9f4a videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf9c31a91 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x1dc1a124 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x67a7f083 videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xcb091b6a videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xdb6a6013 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x15e204e3 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x2852c808 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4b32b207 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5b14153e videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8cc25153 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x95aca9fc videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9ff4e4e7 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xbe5d8719 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd1b92d46 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x385d01f9 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x679081d8 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xdd556f25 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0bcecf96 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0ef68e65 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x13af2bdf vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1682c532 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1afc3042 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1bc7b056 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2318dae2 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2609fecd vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x27695696 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d90875f vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2da349e7 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2f331e0b vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2f85deab vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x30f271c2 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x34a274e9 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x46b5dd0a vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4ba97864 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d0e169c vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x503d0896 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52b7fdd1 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x597857d6 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5a78473d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7b439b6c vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x803566bd vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x85a6532f vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x894dcfaa vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8a155a80 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8f6f91c2 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9cffe027 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa24b1012 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa3f5b9aa vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6c1bbe7 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe782020d vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf28090c0 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3d78db74 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x8ffef8f6 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x8ec0e8b8 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa9863da9 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xccd7f6fb vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xdd92b5dc vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x53566346 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0aecf4af v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0bbcd4ea v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0bdff4fc v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1c89a0c8 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1d5da24c v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2921830b v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x33c73892 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x34d22635 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d807cf3 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x458195d9 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4890c49a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4a3a7250 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5ef3352d v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7afb23ea v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c2541c6 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb0a4c00f v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb5c0cdc1 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb6fc97a1 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc266924a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc8a421e7 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdfa298f7 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf7bb3dcd v4l2_device_put +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x09f65b27 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1a8d26ce i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4065d5fe i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6d0e2170 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x72dec1a4 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x76bdbbb9 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xcfb8ff18 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xfb1ba2b8 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2628dead pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6afb80fa pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x8da79f48 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb89e1c11 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x1204fab5 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x28658ffa lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe255bd88 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x035a0898 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x47235746 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x554c8c06 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x70ee2c9e lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x90837230 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9866d0a0 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf93ad32a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x05c0bf54 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x120002f2 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4501ad0e mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x88eab032 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9ae5455a mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc850fb12 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2a8e307d pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5325b1a6 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x647c1943 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x759d746f pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x969acd0a pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9f8a3430 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb179827c pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbbc5c44e pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc7fb435d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcc57d7f9 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe226b37c pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x9f97d32d pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf79ba57c pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x317c1cfb pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x6cc8b29b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8dc3f3d6 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xadb30c52 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf589615a pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0f6e3a98 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1c83975a rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d4d5378 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d588d27 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x239b4b71 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3b17d6ff rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5b87839a rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5f953a14 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x62eaa808 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7d7b3209 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb529596e rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb963f68f rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbfe57344 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcbb7467a rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcfc7351b rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd7461d9b rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd83a6a76 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe656df92 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8039bdc rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf7898b11 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfde6a5e8 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x4400562a sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7c9c97da sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa047a728 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa2557e0b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcc73f821 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x362c2dca tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb618e29b tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbe6ac55a tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe9baead8 tps65217_reg_write +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 0x11cc6d40 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3aa5d9e6 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6105fa8a cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa08a119a cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd2463093 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 0x1450fdd0 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3fd78eb5 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6050ca1a enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x697d9199 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8b1ca9c3 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc36f81e4 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xedf4517a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1ce02b45 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3c130d75 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4c69ee35 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x697fcdad lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7b4b535b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7caa829b lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9b7536a6 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb958cf95 lis3_dev +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 0x110dd9e9 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xd90325c0 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x063a014c sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x070fcb83 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0abf4464 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2b57dd2d sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5ec35833 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa8b3f033 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaea782d7 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc90431ea sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf6b204a7 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0969ecbf sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x131d05cc sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8be27ce0 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8eca77af sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9f48b14e sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xda8a0adb sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1ab0e16b cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4554fbde cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xe3ce89c7 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x37f5026a cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x67325a7b cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd8fa6f11 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x3c4ad6bd cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x51d4a44c cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x88279a91 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf70dd4cb cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x82428909 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0034dca1 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d342a2f get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d40791a mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16c32ad0 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x180ee834 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a7981de mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2310f986 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x24d150a7 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2b158f48 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3f2e36bc mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x455a5af7 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a70cb2c mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x502e07b8 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x576ee255 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x585cb9a7 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63400610 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x67b0b7c2 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x681cc0d6 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6fac45f5 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c176739 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7f810edb mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b86cea7 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d0e509b get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9115e546 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9e37d7d0 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa22a1864 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xae1b9189 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb3cd80ee mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb5341fcd mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb5df7bfd mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc0686bc5 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1ffeb75 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd78f4fc0 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd80f1048 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb75ba35 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe2398dcf mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe2a9270c mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe36c8bb9 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4f3716f mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf72f3b3c kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe8cfbf9 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0630b3d4 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3d964317 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x690fba54 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc1179672 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe600791a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x0c53186c nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x52350c19 nand_update_bbt +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x81343d22 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xf6a25ecb sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4f9e6ca8 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xadfd4563 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x002f8db9 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x117b02f0 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x28752b4a ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x287938fe ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3fe97d9d ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5182c721 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x554069d0 ubi_leb_change +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 0x7256ec8a ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x72e19d99 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8158f2e5 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaab0bbd1 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb28044a5 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf38f4e0f ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x27210453 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x39c1ba87 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x50ce0dc3 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe67b3609 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf5241997 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xfb2bc6da register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x43efbf05 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4f5d24e0 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x51bc78c1 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7c106ec0 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x838a2f2a can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x83a6fcba can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9189477a can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa0e81384 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xafea0095 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb8117625 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb9ed7a9e alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbd678ed9 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x13c1e9fc unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc79696f4 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xcbaaea50 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xfa156c48 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x61048aa8 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6967b85a unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x741c4d9d free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xcb6a6d52 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x0f2d0a7c macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x35585098 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x3cf7ea94 macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x4e4cd298 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x82f9d264 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xa2b4c172 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xd837da83 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08278c99 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bd914d8 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c8e8bf8 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dbe26d0 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f8cf469 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1553c281 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19f3aeba mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b222ece mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f278019 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26ca9d78 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27f3df43 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27f84235 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b14d8d9 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ea41782 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fa9f882 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30c81deb mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30e1ac89 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30f8d46c mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3264fb1b mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32880f66 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b4aa84d mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42e11afd mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43325400 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x438b5098 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x438f7e96 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x481031a5 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x482ead4d mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4de39fcb mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5124c070 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x531dacb6 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5371bf18 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x542e6f61 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x549e61da mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55899edf mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c4665b8 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62090fe5 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62f9a707 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66235116 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6676f504 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6faf8d46 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71c07770 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74464f14 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x749daf79 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74bdfc01 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c57a4d mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77336c90 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x782acd53 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79f9f255 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a03a514 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7af416cf mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x850334d2 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86cafd47 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9eaa2651 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa034ff1e mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0a05006 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa32fd1d2 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4b44627 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb18318c5 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb22b0c48 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8a11f1a mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd5809c0 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0525c4d __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc483e7a3 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5b50c02 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd230abde mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3e7db45 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4474c1d mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8ecaa64 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe18512a9 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1ab2358 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4505cd6 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe777eae7 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecc7d899 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf370bd09 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5848f4f mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7e314c0 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfaa15389 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe1d34c9 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x18c8033d macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1f4a9261 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x29a7568b macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6618076e macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe8d2848d macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x00b13b79 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x18ff7ad7 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x779c7bc5 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa20beb76 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb3e24e20 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x072371ea cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3e519431 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x843dca00 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa4363d81 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xecd39958 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf2247632 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x176bf45a rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x49a209b6 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4e2a9c79 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9fd1d302 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb0180e2b rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb469151b rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d7f7e51 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0eef5f68 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1b9e5d62 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2007e569 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x23b17c4c usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x30459c68 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x42e8b2fd usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x430de303 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x44d9c755 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x550d3f68 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5bcc5c70 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x67834ff6 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x706249e8 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7b7a0522 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7fd9934a usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84686eda usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87b94cd9 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x94e35020 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9845ce03 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9897a57e usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa30fbfb9 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab5afb55 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcfd56e95 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2a6e183 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe03a1720 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1919233 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb9e39e1 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7893c37 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf8d95608 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1ab33266 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1dbf2fb7 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4ca1e4c8 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4d5137ad i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x52fd4ffd i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6657570b i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7816f47b i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9296c440 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9782c76b i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa268c4eb i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb3188eec i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xba60eee8 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc262c966 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe56d0db8 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe8a60cb0 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xee96e17f i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x7375ff2e libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x62c776d5 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x71e25f96 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8f8fe154 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa803d0f8 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xed6d911b _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0eaa5062 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1e330c98 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ef538a9 iwl_set_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x20d32358 iwl_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x20dd1cfb iwl_test_parse +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x235826eb iwl_test_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2c35420e iwl_grab_nic_access_silent +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x31d4b277 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3230b3b2 iwl_set_bits_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x350f7a00 iwl_write_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3a0ce043 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x424122df iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x47a80571 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x521600cf _iwl_read_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5724de8b iwl_test_handle_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6afc399f iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6f923020 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x82690cae iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x85fb8a16 iwl_test_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x94ea8e96 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x95d6f74a iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9799c577 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9bcfe1ac iwl_test_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa5d685c3 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa9c28bda __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb2d56ce8 iwl_test_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb93668ea iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc1f01b8e iwl_read_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc4ede6e9 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcd856242 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcde0814e iwl_clear_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd12ee3d3 iwl_release_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd9d23b78 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe98bf5e7 _iwl_write_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfddca046 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x09e17766 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x14fa3544 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x17790c78 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3230a23d lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3dc2fe57 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50f97d86 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x53f5465c lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x70721304 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x72e0b57e lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7f464180 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x80071af4 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa1c60f96 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb0e5ba7e lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc37e85ed lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe8c8f435 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf0ef204e lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x25a21961 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x640c3eec lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7182b56e __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x803dc0b3 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x869ee03b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb0a0182d lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc0b1464d lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xcdddf18a lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x1f6b1ef0 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x255cc244 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x057ac2f2 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x07d2763f mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1edc3744 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2727499e mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x417e3b64 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5fd1e559 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8716619f mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8ba5c15a mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8ed9d863 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x96c161f8 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc721a2a8 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xce5599da mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe88045bc mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf71866e2 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0368989a p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2323e3d5 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x36381c3e p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x749b6cbe p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x85512a5f p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x85acbe6f p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa2c7b8c5 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xaf67fe97 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf893a91b p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00f5aafa rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0101fabd rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x069c24a8 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x072fd8df rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07b581d3 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1335abe9 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1a72560c rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24cc1326 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f6726ec rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x374902a2 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x374e1206 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3dbb3770 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e8454b1 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x426fa0c9 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a925ac5 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x531564e3 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x63b9d448 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66316844 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a3ceb9e rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7003207e rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74f5cd5c rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8edfc932 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x953a9768 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99ab98d6 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xabb967b8 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb2fb9383 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb50bd5a9 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc41a523f rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcae86966 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcda102b3 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3b75c56 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd52a689e rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdce2336b rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe096cb99 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xebf235f8 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf5a7378d rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbc86042 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0882b0a1 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x11ab2754 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x122e95c0 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x13c0eab2 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b68c1d5 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29538f62 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2cbfd7ee rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35e3a4ed rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40a07ab6 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44c37acf rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4806bb3c rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4a275b07 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x509be8c6 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5219c196 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53267acd rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x596ca439 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5bfad491 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c1292e8 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5dbc6b3c rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x670725b8 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67ebbc55 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7319e222 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82256d74 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x83fe3c8a rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8625c01d rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b1fe4f4 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x962bbaec rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa876a845 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaa7608e6 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xafc1a50c rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb141c643 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5eb82a8 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf468feb rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc31d632d rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc339752f rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4448c58 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdbbb3bad rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddfce48f rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe10104b5 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe8a0c81a rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeafbec04 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xebe1929a rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeef3d1f0 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf3295f85 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf437dc2d rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb7e7b45 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x007a3b69 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x27c61fe6 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2f4438d3 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x41c39948 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6c71d4dc rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x772bcb12 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xad1ef8cb rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb8793157 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc4f0cad9 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2539d3f9 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x28308701 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x31e3b0f8 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3c3fda25 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x53478b55 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x759f4d0e rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7c455ec3 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8a432901 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8f42c18a rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x907dfd26 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x913d244f rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x92689c28 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcd331d3d rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd9161ec8 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe80706f0 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf3d547c9 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0ab6e964 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x8c7f263c wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xbac1cf52 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0137e016 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0392ff21 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05294fba wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x218b4820 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3b6d49d9 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3c5b9b9b wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46a7206a wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x501cf1ef wlcore_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x57cfc798 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5b278da4 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x706c6f62 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77314d94 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x80af0ccd wlcore_wake_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8111b6c6 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x897b65d2 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f06d75a wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9dfa3227 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xab09ffa4 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadc8acf8 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaea9d7d7 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb155f676 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb418871a wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb5c1d488 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb6462170 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0430176 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe783c2af wlcore_remove +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x38111d86 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x466c9f85 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf3c41e12 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x686d90b2 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x8a456cb6 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb2bfd5c1 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xdfb8a18e mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf3c48130 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1aed394b wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7c05fcdb wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x952e7474 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb596e3a0 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdb50fc2c wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfc17fc6f wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x0b905aa1 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x07457775 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x189c03e0 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x304685fa cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34843a27 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a41668a cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3be40d76 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3c33fb55 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e87706f cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44d9b84e cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47ea7d99 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x520bda32 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b16d319 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63cc0407 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6676f6b5 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6a9c38b0 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6de3e14a cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75ea041a cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7de6c2d6 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fac32ab cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x86b459b9 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x91234c21 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94b716df cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9577767c cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95bab219 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x988fd268 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9a28ef18 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9fc7e0b3 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa109044f cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2b5d89f cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaba6b49e cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xac1e4074 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb22e0241 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb37aa38f cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7a6d700 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbbf4a631 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe14dc0d cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc78980da cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd09c017e cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd198d3af cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdac1b37d cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde737ba6 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeee3a9f0 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf359f15b cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf909fce6 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0256cd35 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x29aaf5ea scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x45d02d54 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x57db1363 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8f896e0e scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa87aba36 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xbb279dfe scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x05ce1ec2 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x08731100 __fcoe_get_lesb +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 0x4e9c5c5b fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x50707cdf fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5b5a4ff1 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7a587e21 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x87a7e59a fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8ca79e01 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9d3b680b fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaa54e60e fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb14d6172 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbfba6b75 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xcd6bbabd fcoe_libfc_config +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 0x0bac75c1 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a32f83d iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ace7af0 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d293ffd iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d50b747 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d85a47c iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22bcc748 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x248253e4 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24cc2f36 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c012893 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c926b6f iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ac5b149 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4403367d iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fcd97ed iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fcdae1d iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50477f2c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x504df842 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5091aaf7 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a57894b __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a597177 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b27627e iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x74f5ffcf iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a165935 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b69f1ad iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x917e4c4f iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x940ad14b iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x95af56ae iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9bc73c20 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6f5455a iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac71a43d iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb4549ceb iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc48ff94 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6bdf884 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca60b6ae __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc668915 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd26a1138 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd52bb6c5 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda703fa1 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf9dd3ea iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe749c5cd iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeabb156b iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfb999ac1 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbb5525e iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x04051b62 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x05369fd6 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x19e18c33 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x21b568e4 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x252cc54b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2ec6401a iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x615377a9 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x62494539 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x65e4b106 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7785eaf4 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x82b67d3d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x94ba4e42 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa4fcfc52 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd61941ba iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe0af89d1 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe57d1065 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf772e23e iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x021c389c sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x02c8235a sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x11113b12 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x175909ff sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1c993732 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x223291d3 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2b2eb4a5 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32c1cd50 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x41f3a33d sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x49476e7b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7600eb20 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x791855c8 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x80d442be sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x82fe3afc sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x982c083a sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb154c03 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbef28bfc sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc6b67570 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd2c3a38b sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf82f859 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe09250fb sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe1df16bb sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe3a30621 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf8972f9c sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfe4da117 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x160b83ca srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x2be62344 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4bcc8240 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x7d32cefb srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x876900b7 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb3bef7ff srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0d59b6c1 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x311cc30e scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x3135feff scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x3d0ca645 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x47601881 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa6ba70a3 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xbd9161b8 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc6643da9 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xf7c63b57 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0af918ce iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16262534 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1bb58630 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2901f8a9 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29b5af0e iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d73d021 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44ccc9e1 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4967c572 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e9df37b iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x51f5472c iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x524f43ff iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ebf9a6b iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5fd0f00c iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x61a4c80e iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x658a49a7 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d97d597 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x770791e9 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79b3bff1 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8514eef6 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91961254 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9a8a84f8 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9ed6a628 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9eec2052 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8e7ae8e iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xae036705 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb685a5b7 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8879216 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd35bf53f iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7a93b19 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda4510af iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe592b8e9 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xedbf4f41 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x37f59d29 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x73ec46e8 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x92ba1422 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe9913c3b 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 0x066b65cd srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x06d0a334 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x651e35b0 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x87b5cc98 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xab1a355a srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6171c287 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7d3f860d spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb9f715c2 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc0e47aae spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcb8ba129 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcfcc670a spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x62b6fc84 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xad88b2d5 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcd88f0f6 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd1179745 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd5a968b0 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xa4cc4f4f ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x043993b8 CsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x063ce8fd CsrMemCpySer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1a2f4153 CsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1b112e5a CsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x20ed5d24 CsrMemCpyDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x25d71627 CsrWifiEventCsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x2e32b4fa CsrWifiEventCsrUint16CsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x35ee09da CsrWifiEventSizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4a44d987 CsrCharStringSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4b702d3b CsrWifiEventCsrUint16CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x5bef3871 CsrCharStringDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x71d701be CsrThreadSleep +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x7b2ce3fd CsrWifiEventCsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x80cc6f40 CsrTimeGet +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x83653836 CsrWifiEventCsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x92b87e22 CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x99c3117b CsrWifiEventCsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xa914520b CsrMsgConvFindEntry +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xad2a353d CsrWifiEventCsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xb39bdd0a CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc47d071c CsrMsgConvInsert +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc79e2f1d CsrWifiEventSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc9691b01 CsrMsgConvInit +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xde3f2c0f CsrWifiEventCsrUint16Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xdf5f5f67 CsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe258383d CsrWifiEventCsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe2e90b5d CsrMsgConvCustomLookupRegister +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe90cfd08 CsrWifiEventCsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xeb229892 CsrWifiEventDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xfd995761 CsrWifiEventCsrUint32Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xfe9f5512 CsrWifiEventCsrUint16CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x12e6177b oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14523351 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14c4b6b0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3c6ec396 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xca667daa oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeb94de18 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeec034fb oslec_free +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x28a97a71 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 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 0x2140d2bd dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x32d97274 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x36b3c6fc usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x526af54d usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x656f7762 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6e855ff3 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7f12a570 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x86fcf181 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8fb4a4e9 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x950b1116 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xac702b05 usbip_event_add +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 0xed40ae6b usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf5848515 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x1168e346 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x502d8e7b uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xae83deec __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xc93673a3 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x86242cef usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xba7b5ba3 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x9cff1ccf usbmisc_unset_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0xbcd67f15 usbmisc_get_init_data +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0xde97e71b usbmisc_set_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x5e971a07 ci13xxx_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x6e666494 ci13xxx_add_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1921954b usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1f735eb5 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x23e31558 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2c8707e7 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x42774a54 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x498f4c53 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6327c34d usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x68beb55b usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x78856023 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7c6dc984 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7dc3c691 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8502e35e usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8bb06939 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa5d31d9a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaf399446 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb1268789 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb84fdf5a usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc40ac606 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x1d9cdcc0 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x2592cc42 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x511d67ba usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7b54872f usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe692f923 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf1357d96 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x606042c2 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xa3869f69 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x171c2839 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x295e2d27 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4af6375d usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6b631634 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7127a779 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc9ae5c1a usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf273c469 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf820dc9e usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfd8b098e ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x92758141 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x3a556323 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x73d47c95 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x3a1ee614 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00571a7f usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x033b3185 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1524f11b usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x220a77c0 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x226f5ffc usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3720e152 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6dfc024d usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x729a9e8e usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9000b22b usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9c63457d usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa409bab4 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6971520 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc6a5fb66 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc7cd96f5 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcc29fed3 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xecd1c957 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xee2786f4 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3d446ca usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x09a7217c usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d1da615 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0e6fc211 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x125afb65 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 0x2746adb9 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2ac49da6 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x30501c0d usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3687edcd usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4966f571 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4bd8155e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58b00edf fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7bc0c37a usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x908deb95 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x98c0f37e usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa9984891 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb836cd50 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb8e9902 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbc92cac2 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe4698b5e usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe92e8638 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2b6b397 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf47f5b2c usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x287b8fde wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5ccedb7a rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x78b1687c __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xa0fd099a wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc488e47d wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2c18b304 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x55073c04 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6118caf2 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8a561fb1 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9577b434 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x95e290cd wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9f6048a7 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa9b526c2 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xae16ea07 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbaed311b wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbb913e12 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbe81a497 wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc4fa94b1 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe6d547a4 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf01b099c wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf1125437 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x19f9b1d6 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x37d37cfb i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x9d012851 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0aa1527f umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x30567b98 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3c5fea23 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x530947cd umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5e6660aa umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x84e7fe0f umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdad41084 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xeba8b58e umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0502d479 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x087e2425 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0892d655 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x15ec66df uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x18d24ecf uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2661663c uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2bdbfd81 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33d8fff6 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x342e1ea7 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x387e0660 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x440d876e uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49de971b uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4f34393b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x55f3ce89 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b8fdaf8 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b08f918 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6be71b5d uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ce1d1f7 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e6d0abf uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dd370e7 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ba9e9a2 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8dd0b656 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98b33d01 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa8119617 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb53c8542 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc1579cb uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbda95987 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbef5fd95 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc11c7720 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcb2dc3ac uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc6cc370 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd1b34361 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd6e2217b uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0451dc1 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0b05c9d uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xec16aa95 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf113bd3d uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x488e3569 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x222f16b1 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x2bed9d99 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x50db66ce auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6c7b0e38 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6ff5ddfb auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7a6d6f45 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb55f51f6 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc789ea6c auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xefa70266 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfa8f3740 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3040b766 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x58a38a53 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6ff6f6d7 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa230f2f6 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb26f841f ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xca56f644 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd7b6a43b ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x2e9c67da sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x3f532137 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x32c32268 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x9a9014c5 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xded78c15 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xedf309c1 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xefdab8a5 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x076423b5 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x2715f2e0 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x47e73690 virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6b75531d virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x849a6341 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x878786ee virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8dfd6937 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8f8bf975 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x9344e0f8 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xb476e4c2 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd4d1587d virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd718751c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xfc3cd0f3 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0dab8ee6 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1128f191 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1b15b67a w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x59d79407 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x92bd48dd w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa154c0cf w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb70c5e20 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xec4d862c w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf270ec48 w1_reset_resume_command +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2f583d6c dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x3c58ee9a 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 0xcb8ac833 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fat/fat 0x02c38a5c fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0x07a404a7 fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0x13f0141a fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0x15aded0f fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x1ddcb791 fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0x2fc42443 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0x3af4ca71 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x402ad543 fat_sync_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0x54f45c7c fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fat/fat 0x6330e215 fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0x6bf373d8 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0x74e68b17 fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x83ffb99c __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0x8970e39d fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0xbefe490c fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0xc6d24608 fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0xd082c96d fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0xf59da8c4 fat_setattr +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x02242ac6 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0dbbd10e lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3a6c3dfd locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7785d423 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x92b77c79 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb873aa11 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc4c9c7cc nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc73ad929 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe9fba3c0 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02332aca nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x040480b2 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x043e853a nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05100aa2 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x063111e0 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06b24ace nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08a8e64e nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09b6c1d2 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b59a3ba nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b74c9fe nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e7a1537 nfs_dns_resolve_name +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0eabc2a5 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fb4a6b9 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x104cfcfb nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14f6bd3a nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16e29def nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d53f421 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ea57dd9 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2315c8c6 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23615463 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2751f092 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27ff7ee2 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29eef07d nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c721fe9 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f6f4087 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31dd2648 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x328cfc81 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x335da12e nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x339d2056 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x348d80bd nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3759dd22 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3808f70d nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b3a7393 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c1f3164 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ce62d01 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cf53089 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d680f8a nfs_fscache_set_inode_cookie +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d75a2ba nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e5b0cb5 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45993e8c nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45a9e2f8 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b846d4a nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c8b02d6 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cf77f8b nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e16a81a nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f27a619 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51faf777 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x537eda7e nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53c8d3f6 nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56621542 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x586aea4f nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b3c3265 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63037b97 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65451e26 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65f32946 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c692342 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f3bf291 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f6e98d4 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x712d68e2 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75cd654b nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x764e1408 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x765b080d alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7772404d nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79a9fac6 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ba527ba nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d12d28d nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d18fe63 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e6904ff nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fe19df1 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80f03767 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8269cb5e nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x827f9d5e nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85c37325 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8850ae70 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89e51a5c nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89e537e1 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c5c74ce nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cfe72d1 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94843558 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x957f8fa0 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9747b896 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9818ab5b nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98c05ffc nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99a1606c nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99d07db3 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a0820dd nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9be33e70 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d97bc39 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa168a891 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1ece275 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa40db749 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa678fae6 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6cd79b0 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa88480b4 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaef9814c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf8622fa nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafa20d43 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1249c0c nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1d992c7 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2535d33 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc499ca6 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdfa855b nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf4baeff nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5e46910 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc60439b8 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc74955fd nfs_sb_deactive_async +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9a7ab8a nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca4a2653 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca7fedb7 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb4416bd nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2743643 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3d8f1f6 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3e95fd9 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8525a76 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8c1eac1 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc93e7e1 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc98f78f nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd8753e0 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf030015 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5362dda nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe56e2257 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe94a658f nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebdc5717 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef0da346 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf05bd9d7 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8d436d3 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd6f83af nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x00bbf2ae pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2255e510 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a8deba4 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42fc6a81 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43e5e76c nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49c1b6e8 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4fbf2f98 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x570336d0 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60a1ae2c pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6207fa9b nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a888627 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71cbe207 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x81a4a352 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8421606e nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cbadfac pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8fc63b65 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94b63fed pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95b48f21 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9725a9f1 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d12fb96 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9ece407b pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa71c0d2e nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa7716255 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2e09e2d nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb41bb5cd pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb596c18 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcf03fd2 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc203ebbe nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4b56cfb pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce78bd8b nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc81be0d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdcd4ffc6 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe195e78e pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe900b8d1 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf27cab4c pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x46073424 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x8a8aeed7 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3351829e o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x48f1e390 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x60ab51f4 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x92a9d43e o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa0b97496 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0xc70916b3 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xec69b279 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 0x26f904d8 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3ca5e0ba dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x489f828a dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x61f22bd2 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a2a07c9 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x84b46d1b dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x91bf6162 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb407e234 ocfs2_stack_glue_unregister +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 0xe2da54e6 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x874c0835 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xc17229cd notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x281b7b34 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x2eda308b garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8db1ab2c garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x9a11c5cf garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xea9d9e07 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xec73d0d3 garp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x9e50adce stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xabb2a1e1 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa7156191 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xa9e21f65 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 0x40a0c513 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 0xac14d559 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x07fd14b5 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x087f7502 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x10e20e68 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29ffc455 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2adb729f dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e725666 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x307ea4ad dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35f2b3f8 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x362fd19c dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3f59a3db dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ca2f776 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 0x4ed10feb dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5306c66c dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x535b2bf8 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x62642600 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6882c7c7 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6fded2d6 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fde1391 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8f14685d dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97c4dc3b dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9edd4442 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa08de725 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xac863af2 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaede0f23 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0ba2fdb dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb631658e dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb7748fb9 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc1731c16 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc9b00de5 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcceaab9a dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2ff2e06 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe65cd3d5 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe7372157 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf8cdc50e inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2070018c dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x32119631 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x322bfe53 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3b555cb9 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa6c88538 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf07b2011 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1e558db9 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbe8ab080 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x875154b0 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xdcc32ac9 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x20a913ca inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2b851d5e inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x664e4e3f inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb234fde8 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb5f803ef inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe02cdbdd inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x72d636ad arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x6bbbcbf7 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xce4c2340 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 0x2119af4c tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x21c54257 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6047e968 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6a19017f tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe77f527a tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x28e3d2a5 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x711713ef xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x256cf191 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa07ba218 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa510b12e ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd3e23b66 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe07fa6b2 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2b77c35f ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x2fdeb143 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0d47b98f l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x13e061f0 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x141a6c20 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1845ea66 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x23afb725 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x63aa77cd l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7e6f45b5 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x857c196d l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x874ed777 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa56f0c58 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa81fc581 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc831dd1f l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xccdafd32 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd68b3ab1 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x178f5c55 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x49fab4cc ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x524b7f5d ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x776c6215 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8345a434 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8670c653 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa035640f ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbdfd75b4 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc4c6a985 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf4e4a723 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x061264fb ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2ecada2d ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4e220b9e ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5e8799b5 ip_set_type_unregister +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 0x87ab4e46 ip_set_test +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 0xa538467a ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb8943b00 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 0xe069072c ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfc0b2078 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x03143836 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x58400f66 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb3ad6c79 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xcebb5c27 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0019e309 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0635c5af nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06c4fcc3 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a306fe6 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fb618e6 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x10d34a41 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x120f68e7 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x179414bb nf_ct_dying_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1830dbc6 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cfdea2a nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1eb36b35 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2dca0c4b nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ecb88a8 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f29bcaf seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41e5a97d nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4702e987 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x484de3d8 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d6784ae __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d90384a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50460801 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5af8a71b nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x654dbe68 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65e8c12e nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73d3cbff nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d8919b2 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83a88a54 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87ae4da1 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d666a59 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f85858b nf_conntrack_l3proto_generic +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 0x98974224 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e73d9ca nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f1cf809 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f3e7185 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa18d1835 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa402fbe2 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7a5f21b nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa83fd15 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaca604d2 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae3d4403 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1b9016c nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1fea1ab nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb846b80f __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbdb38ea3 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc00ba52c nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0d34667 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1490701 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc253039b nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3107bf7 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3acf610 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3e66c6a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7a0fa76 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc863f8ea nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcbbcc524 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd545f95d nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6565c28 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd93ee923 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd99d93d6 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdaffa78a nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdfa7ff7a nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4ee9ee3 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeda931f3 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefa40ea7 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4693ff7 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5984a9f nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf79ce76f nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd919054 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xd7ccb145 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xd42d3ea9 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xc7eceacc nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x186ea073 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x200b83f5 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3fb85f7b set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x61e97e9d set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x86945701 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9602c4c6 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa95e24b0 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaeb92cf4 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc37ea1f7 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeb083919 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf9dc6076 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x03509789 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6e77e413 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9c119276 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe3399e95 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x4f3cb092 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb85299a9 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2f593d51 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x37d8f2dd ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3c186884 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3eb906ee nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x61e211d6 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x637f93b3 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x755a8898 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x78dc2106 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7916d53f ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8686d2de ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc017fd1d nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcc821e76 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd8be48a2 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xe7de6b2d nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x2fba1948 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0e36cf31 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x53357cdb nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5847ce5f nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x60ce9a32 nf_nat_tcp_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8bbcef6e nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x999b0e26 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xab971056 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb55ea6ff nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf784a5eb nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0xc38b3538 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1b6fe4ba nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2a94e7dc nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2bb8ae4d nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3b05cfca nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x987476a6 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc9f03b2a nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xa6dacebe nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x5fa8ede9 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x37262f5e xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4074c4b1 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x43ee46bf xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x51eaa2f3 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5aec7c5b xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x70f68a5a xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7ddd57a8 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8597f509 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x97d18c1c xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9e4fd846 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbff542a2 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xecf71c62 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf322348b xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x1754232c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xa8c2131a xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x2948f4e2 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x2a049700 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2e171508 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x31fa41ec rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3c2e4d14 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4bf50501 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5502957d rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x5dd2c05d rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x5f0d0320 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7b4685ce rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x7d138412 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x8bc0a291 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x97086f27 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xaaf9ca1c rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xac4d2410 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xad8c125a rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xb0bf21b3 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xb2b91009 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcc022fde rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xd0b909c7 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd31703ef rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xf840301a rds_conn_create +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x6445f831 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xc9e1601f rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0039c6a7 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x052a3fdc gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x14817fd3 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2eb93598 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4a41dd25 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5b37268a svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9ad4bbb2 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb2f11b4b gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd19beee3 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd702d96d gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe2e430d6 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x029510f4 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04e1edba rpc_shutdown_client +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 0x06dcb36c svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06df9f0a xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c38a1ff svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ccea766 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f3f4710 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fc8c080 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12374685 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1389b660 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13b53152 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x142b0f29 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14493146 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14597728 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1491b3f8 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15c8d1d0 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a0a396a auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a94c2bd xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bc896a0 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dd0c012 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fb06589 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x202d1464 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23d80f14 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2558b548 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x276ef5cb rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28eb0698 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29d28ee0 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a6cab01 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b3feac9 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bae88ae rpcauth_lookup_credcache +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 0x318d1037 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x333beb6f xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33c18370 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x344f3382 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3462fba3 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3696df40 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36c0c0b4 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37888b74 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3974043a svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a910bce svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e638e38 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa8429a svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x413782e4 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42487914 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43e01c30 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47e05613 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a7cd4e6 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bfde939 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d42a893 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d5bfa26 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d75f1a7 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dd70dfe svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f6cc128 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x529d30fe xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52f6809c svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5687b065 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57458d19 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f6cca4 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a3828b3 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a400b07 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5aabc433 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ac661d4 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ae6be8d rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bfc7ba7 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d4ee818 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f2ef85e sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x602e0d6b xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x603020f9 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61be3243 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62f3469c rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6577bc69 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69c00160 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a7f9f83 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d8db380 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dd42104 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70170546 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7170c69d put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73f81824 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7575699b cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75c953ea svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75d2d764 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7730880b xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77d6efd5 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79b09081 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a1adc8a svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ddb72e0 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de7bb86 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ec72722 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fe5fefb rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x815b773d rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x816b981e xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81a7bb8a bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x824e2dcb xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8292235e sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82e45366 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83cd47bc rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83d6d1f7 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85765e12 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86d37486 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93b6e56b xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94a12e9a rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95ebf82e xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9770ebe2 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97f69cf6 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9931b1cb xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a80923f svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aded140 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d5bb229 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d68cdae rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ecdd594 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa00b4233 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa394937b rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8f8f86f svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9bd2138 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacbdf2b6 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaea8388a svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf9446f0 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1694b1b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1776345 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5113e86 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb604f429 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6486fe9 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9f18586 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe7115f6 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe90ac9f xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc09f2bb3 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc276c22c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc30b1fb3 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3f95b78 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4a8d204 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4e2e0c1 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4fd0120 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5b40ec8 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7d6c3d2 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc85dd90e rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca795dcf rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb94d577 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcca38d8b svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd0259eb svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd22bfec1 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3a7c6be rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd63e8f3b svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd854e462 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda009783 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb1dc536 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdeadf76a xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf576798 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfe8abe0 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe12d8323 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe29e3ddd svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2d0e916 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe414e63b rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5f709ed rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe94fda9b csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9ed1363 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea17eb64 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb833dff xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebf301e7 xprt_set_retrans_timeout_rtt +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 0xf0d1278b sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf22302b9 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf39ba2e7 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3af4cd2 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6cfe245 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8bbec6d auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf95aedd4 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd758a3d auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe87b0fd rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff35a60e xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/wimax/wimax 0x034c7904 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2b4f01b4 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x50070893 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5ffe09b5 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x624e81ac wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7be18120 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9fa45315 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbf5ceeb2 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc11c4175 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc6f313f4 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcd37b2ef wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf8054957 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfaee2104 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x10d1c655 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x41bef762 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4875d3aa cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8f60805e cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x96ae455a cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa2f5bd18 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbf681188 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc255dafa cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd3ec5b70 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe0ff97b8 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf0c71f83 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0ef84bce pskb_put +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_ipcomp 0x30c5ae45 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc640c0b3 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc782fb65 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xdeaaf352 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x33e9eaff snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x62228a83 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xa1494d04 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xd11b4cfe snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xfc8922c0 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x3020269d snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x995fbcc8 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xefceecfc snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9ff5819e snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xaaa7acc9 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x65b4f86c snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x70cc3c1b snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7b9765b6 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7bafb422 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8b741330 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfda6ffe5 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00f5a2d5 snd_hda_jack_set_gating_jack +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 0x06ea5b28 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0761d0b8 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08c31a17 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0937ea10 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0944897c snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09abe202 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09cf0b2a snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b8cfe9d snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cfc7ed8 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0dde840c snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ff937e4 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14666a0e snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1496a5ed snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14d54fcb snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x156a5b72 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15777031 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17ff5785 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ae15cc8 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ebf44d1 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x237f1e25 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27fe018a snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28a5dee7 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b9c1a9d _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d2dfe03 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30f13f2a snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x310253df snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x316b7043 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x345625a6 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35093762 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x369f2fcb snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3703bd2c snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37378aa4 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39936244 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39cb6fb4 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a39725e snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3aadaa38 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b5c613c snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d02e3d0 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41a953a6 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x422ceff4 snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42551cef snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46894064 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x479ced84 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49071ef2 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4965aeb8 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a72d087 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e2b682b snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e68487e snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ea1e959 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55866242 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5766a6a3 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59f05002 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c34a4be snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f330fd9 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f416acb snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x602e8bdf snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61c14ba3 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61faaa7a snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62e67bda snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x630bb0a1 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64638aad snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64c94348 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x655a44ff snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c86d06d snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d81287d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f03b6d7 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72a91835 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77e786db snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a05689b snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a8646e6 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a8d0a1e snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d731024 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e24c69e snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f50c3d1 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x800e5249 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82bbe405 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8307c1ca snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83d2bccd snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x858498e3 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e5d4ea7 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ee1df8f snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f5b32f9 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9248275b snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x985a8138 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98f9ad3d snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9aa9fd1f snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d5e360a snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f7561f2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa45219e4 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7c470ba snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadce8a86 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae5a5d7c snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaece07d7 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0deee8c snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb14c2591 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb35ffe53 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3cba4b8 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbdb979b snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc3b99eb snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0f7d828 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc179950d snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc387f940 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8aee873 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca94929f snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccf0fa22 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd48605c snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf76e29c snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0e34659 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd19dcc08 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf9cf331 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe564903c snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6e349ae snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6ea6010 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8ea17e5 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee0a6dc2 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef1eaba8 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0e10228 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5c3ce5f snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd441491 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdcf69dd snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x4311dd88 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xfbcf1995 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0x24f08d31 ab8500_audio_set_ear_cmv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0xc3165d6b ab8500_audio_setup_mics +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x0fc304fe arizona_in_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1f8ea94a arizona_out_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x217308cf arizona_init_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x32c43a07 arizona_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x3603ef7d arizona_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x5e8e6067 arizona_mixer_texts +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x66cef518 arizona_set_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x73f9f1d5 arizona_lhpf3_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x78355a2b arizona_mixer_values +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7e59c88a arizona_out_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x93ed4d8b arizona_in_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x96f30c1a arizona_out_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xafe5fc36 arizona_init_dai +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xb65ecf5b arizona_lhpf4_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc9c29637 arizona_mixer_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xd58efa61 arizona_lhpf2_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xe466e0fc arizona_lhpf1_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf23a2c4b arizona_in_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x421f62ef v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x4f0c1bff max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x3493e80b max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x93d5b838 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xc0e62d51 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x0016bd72 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x2dd32a19 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x465be4f9 twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x7c791c49 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xc20398eb twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xf06f5233 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x32ed6504 wm_adsp1_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x442e92a9 wm_adsp2_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x6685fb3b wm_adsp2_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x07820831 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x1ee2accf wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x3e5e6bda wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x6e1c21ba 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 0x95e7eb1a wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x994ebe10 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x9b6d07ef wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf36c78af wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x6f32f5c6 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x88c3c098 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x19895d93 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xf139fc89 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x3ba04fa3 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xeb8b2339 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xde4e5691 wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0108a180 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x045c5ee9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09600585 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19f6f77f snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fdcd421 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x241f74e2 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24da6bdb snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25669088 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26347b3a snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b10f28e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e87beb1 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f09a529 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f59cd77 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30578667 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30ae9fa9 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x320071db snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3439c775 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35e2a548 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37f6dd17 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x396de159 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ad7b680 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bc87096 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x400fabf2 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x420cf6b1 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x480d898d snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4946a1a0 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49c1eacd snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bb4cda5 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d26ff79 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ddeb265 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x509ca33d snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53ac6c91 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54ed7689 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55adf8ba snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5789a916 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x579d9746 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b528a6e snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ba46bae snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c8be400 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60b4e394 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62c38d8a snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64432498 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6739bba2 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67571cd6 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a2d916c snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b3ba01d snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b884c38 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e80e539 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ee6c76c snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x743baf1c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7496fdce snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74cef245 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x752fea05 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75f1707d snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7696497d snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x769adefb snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77214d87 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78c7f903 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78e05378 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x791f5f0d snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b754ad5 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7bc82534 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d28c8b6 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7dc5b867 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f0a905d dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f23dc95 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8098412b snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x817c11f8 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83eb7803 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84155280 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x853eefdc snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b060219 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bf58ffa snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ce6fd6d snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ea0126b dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92ec256e dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x936a0572 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ac8da0f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c2bbd24 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e3c7e0f snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f3984cc snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa00fa461 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0cec716 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3528a18 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa354cdb0 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa36a5290 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3da2097 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaad8120b snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab3e8962 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab6d557f snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1e27a8d snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2955e54 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5147e41 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb766fc70 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcbcbc16 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd4804a4 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe0b4bfe snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe80c30e snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbed2211b snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc15ec18e snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc871d179 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfe0cf04 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0dad598 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2dae09a snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd46e087c snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6b9a1ab snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7738219 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda11a210 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb4cebdb snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe24fd446 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe39435f6 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4d5f0c4 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe50c2d29 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe55e8181 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5957b22 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeafd4c4c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeba55379 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebb583bf snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebbeb7d4 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedc935b0 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeeeace3f snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefa285cf snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf094392d snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa0d9da2 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa2aa47b snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfaec500a snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb5c97e9 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd86025b snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfde305f8 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe08e92b snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe9f822c snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x00220964 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00236a9e __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x002aa4c9 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x0047a13e usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x008ff7de get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x00a26f81 usb_enable_lpm +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 0x012aa31b __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x015cb5bd __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01bd6bb0 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x01d306a9 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x01db85ba crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x020040ef class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x02037014 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0254fbb8 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x029a10cc ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x029a8049 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x029da8f7 device_create +EXPORT_SYMBOL_GPL vmlinux 0x02a68210 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x02cf0d68 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x02fb2e3d platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03745394 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x039918ec public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044b7893 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x04504422 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x0453047b ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0474dd3f extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x048283eb ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04b0e1e4 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0512a6b5 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x051e7243 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x0543e794 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0555bb71 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x055b75f4 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x05708acd blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x05834074 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05e86bcc ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05e8e6b6 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x060a26f0 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x06300131 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0633e5a2 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x0641cc9a tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067521dd kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x06804b57 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x068b2930 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x06a8ab52 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x06ddac50 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x06f22ca2 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x07381b3b ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x0760476f regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07860e15 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x07899b61 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x07993202 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x07adeeef kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07eba5a1 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x07f60153 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x07fa7554 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0805f612 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x0855b40b pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x08c03f85 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x08de5087 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x08ffddaf max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x090041d8 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x0912f861 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092c2a7a irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x09334de1 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x0938ba43 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0987f604 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x0992bc9b __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x09b4b2da usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x09dbf366 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x09e42b26 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x09eb5c9f dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x0a0bfb7e regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0a34a53f debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x0a46a1c0 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a58cbaa kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x0a807573 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x0a85c5dc regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x0a8fb547 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x0a9224bf devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0aaf0d0b wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b093be1 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x0b10beb6 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x0b2712e7 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x0b33a967 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x0b342cd3 regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b92a4cc blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x0b9b2a04 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x0bed035c ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1ab082 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c7a55b4 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x0ca737f6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cf353a7 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d01121c crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x0d539886 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d9b2d8d ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0d9ceede mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x0dad799a crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x0dbb7791 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x0ddbd5a8 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0de3b8d8 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0def8ece __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x0e05a772 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x0e0a5e0a put_device +EXPORT_SYMBOL_GPL vmlinux 0x0e247d48 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0e2afa63 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x0e447a88 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x0e5b68f4 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x0e5be9ba crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x0e78ee94 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0e99bb63 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x0ea45b1f ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x0f026e41 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x0f30eba8 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8523aa ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fc6758e shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0fe7978b da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x101010e3 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x103119b8 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x1044404e transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10456290 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x104c15f1 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x10561df6 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x10add1b7 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x10b7e8c1 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x10c9d678 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10efc23e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x114798cc locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x11589a69 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x11985e0b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x11bb90ef __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11cac7c9 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x11e89e25 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x122e97e3 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x122ff347 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x12330747 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x123876c9 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x1245c6cc debugfs_create_u16 +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 0x126d9294 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x1273cfa0 user_match +EXPORT_SYMBOL_GPL vmlinux 0x12a69077 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x12f6d30f rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x131a5598 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132f938e kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13b2fa3c blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x13d92acc usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x13dda167 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x14109d4e dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x144ec1fa crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x1476e257 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x148bf677 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x14b50362 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x15469bcb pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x157ce216 __pm_runtime_resume +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 0x15ca4767 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1638b49e adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16640229 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x16873329 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x1696abee key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x169b5a0a sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x16a89de6 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x16eafe57 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x17097653 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x172244f1 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x173f2234 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x17645e99 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x1779a0c9 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17955573 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x17dc73b4 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1802bd45 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x180ec5d1 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x182c9e3d serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1837ffba net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x184d7ea0 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187b2b6d ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x18a713f9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x18aa8b7a __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x18c364be usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1909daeb irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x190f12a9 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x1917de76 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x195ff55b rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1996d75c queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ae173a dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x19cefa1f rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a16013c xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x1a21fe91 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a4177bc gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x1a472bb4 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1a49ba60 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x1a506fdc pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x1a89059d blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ab3e0a1 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x1ac0d3aa sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1ac57cf7 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1b01cb8e srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1b07c429 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x1b133321 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x1b3e8f29 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x1b4317fb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1c0028c6 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x1c00f57f ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x1c0c6da7 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1c17ee49 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1c5a04e0 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5fea09 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8bb575 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x1cb97019 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1cc0dda7 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1cffc4df RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0x1d5308b4 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d58c227 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7d1308 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1da18663 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x1dba58fb usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x1dc50aaa rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x1dd78b6f console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1dff5d7d cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e375283 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x1e49d3b4 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x1e58fa90 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x1e5f4aea tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x1e6b77a9 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e83d073 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1eab0ace unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ef3cf9f blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1f02f396 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x1f35fc95 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f989026 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fdd73e4 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x200dde07 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x204267f8 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x2048919a usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x20b16c2e flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20e04d7c serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x20e1e399 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x20ea83af da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x20ec1e2b platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2113247d devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x2141849a inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x21afc874 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x2205517a platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x22245706 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2293375c device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x22938996 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22c61d97 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x22e0a404 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x22ed82be key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x231dde6d dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x2328e5b4 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x234f48af class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x23534b74 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2373ecaf cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23ab2922 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x2475d26a simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248e8b30 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24e5bb64 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x256e8a74 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x257ea57f dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26389b21 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x2642ed2e sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x264d378a led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x265152f9 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2664afb1 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x26695409 device_add +EXPORT_SYMBOL_GPL vmlinux 0x26726253 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2673817b fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270662bf pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x2724a9bf dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x27371799 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x276692cb vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279fc469 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x27a44932 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x27b0137e ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x27be7b2b sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27cfce8a power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x27dae59f device_register +EXPORT_SYMBOL_GPL vmlinux 0x27dfde63 queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x27e41f56 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x280c7fdb tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x2838d9b3 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x287d712b vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x2884fab4 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28b5ce32 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x28b7bde5 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x28bd25d8 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x28c204ac tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28df43f5 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x2914674f rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x29276085 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x292ecfdb bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x293f1aea skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x29a66548 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x29b56674 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x29c0065e swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x29ce5ba0 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x2a0547fc add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x2a386ff0 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x2a464a8c fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x2a49daef cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a69c312 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x2a956f6f sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x2aa3676e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x2aada1ec pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ae0ca7f usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ae5aa46 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2afd510a pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x2b3c7955 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x2b4022a2 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x2b4b05be crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b7e08d9 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x2bbccaa6 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x2bd64487 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c15d019 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x2c1a8324 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c5f84d2 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x2c63c34b __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c673b22 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x2c6c200d rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c6c4cfe __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8ea433 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c99cec1 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb20685 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cf64632 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2ebfb3 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d4487f9 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x2d4b2f89 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2d4c1634 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d6a667c dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x2d885286 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x2d983014 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2de5f3b4 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x2e157c75 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e271a54 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e62b1f8 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x2e86ecae usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x2e8a6a78 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x2eb7be95 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec24ef5 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x2edaf5b2 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x2f13e0fc fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x2f36466d usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x2f3f9399 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f4b4a1f sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x2f6a2c82 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x2fd2b3e0 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x2fe87089 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x301bb229 inet6_csk_bind_conflict +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 0x30908788 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x310148be gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3126508f disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31283b0b ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x316c9932 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x318ff8bb tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x31914c98 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x31b9f15c tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c12a21 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x31eef910 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x3224b9dd transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x32670948 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x3273c464 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x32771a18 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x3284f35d securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32a074fe call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32cae0b9 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x331729f5 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x332798fd kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x334c1dd7 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3369428f dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x337196f2 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x337470a9 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x3385d987 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33b45bf8 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x33cc5f9d dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x33e78505 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x33ecc31c sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x342b0add __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x342e3d13 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x344b05a6 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x344d54cb __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x344d6ddb preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3459d754 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x346c0a18 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3492d49d tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x34a212f0 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b23fbf srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x353d8853 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x3549d399 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x3560bfbd jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35b8479a xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x36104ca6 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361f8f8f get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x365dcf4e usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x36860db8 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x36e6dd40 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x3700154c pkey_hash_algo +EXPORT_SYMBOL_GPL vmlinux 0x37078605 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x371f4dc0 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x37269f49 kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x3732d79a spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x3737b85c tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x37789895 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x37a0d9b6 device_move +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x383cd4f9 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x384702c4 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x38741396 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x388e50ad pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38c68be9 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x39181855 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x3929f42c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x39383120 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x394abb9f devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39838265 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x398483ea ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +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 0x3a67e4fa dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x3a6fff0c bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x3a81993a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x3aae55a8 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x3aca4d25 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x3acd40f0 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ae3a6cf pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x3af0c47b __css_put +EXPORT_SYMBOL_GPL vmlinux 0x3b25af8a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x3b594336 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x3b6e1bec kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x3ba6db57 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3bbb56b7 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3bbba41b ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x3bd80f96 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bf2d520 xfrm_audit_state_icvfail +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 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd98456 devm_regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x3ce7af9f ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3cffedf5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x3d16ce9d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x3d209c4c fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x3d2a6a32 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3d9044 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x3d55b5be inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3dba2ff4 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x3dc53d5e usb_register_driver +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 0x3e0b2420 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x3e5f3fec regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3ea6d20a ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x3ec21507 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3ecfe23a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x3ef069e7 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f1e6975 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f372fc1 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x3f47107e pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x3f5cf604 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f631c94 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x3fe1532a ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x3ff3fbb4 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x40045b3c devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x404bca51 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x40712800 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ce5027 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x41787b97 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41892fbf wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x41894557 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x41a2182a __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x41c6cbb4 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x41d2dfaf dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x41f7a363 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420bbab7 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x421742a4 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x423b99d1 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x426de7ec pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x4270515e agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42b29305 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x42dfdc9d filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x42f36621 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x43296fb5 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x43305b6b tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x4330764b crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x433c138b regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x4363b0b6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x436d4405 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x436e7499 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x43758705 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x4396b273 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43e3d28f led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44401749 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4454887f pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x445b3316 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44b28c52 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x44f2b227 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x44f5d529 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x450d4a93 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x450dec0a power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x450f8c72 thermal_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x4523a248 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x45332914 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457f84a8 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x45a51e08 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x45a8be34 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x45a8d938 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c36914 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4607705f ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x460cf6ed fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x462b3748 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x46482dae inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4689b918 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4692f303 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x46c47e9a extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4704ddd8 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x47155669 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x474527fb bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x476fee6b fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x47952d57 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x47a2c5aa ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x47a7fe6e dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x47ad111f sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x47b40b1e bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x48401bf8 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x488083b7 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x488bf639 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x488c0b95 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x488c8d0d regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48ab5da7 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x48ae8e48 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x48d2c7be srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x4903501a ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x49052475 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x49333f85 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x49470a14 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x496ed5db class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498ac397 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499e8984 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x49c08a1a css_id +EXPORT_SYMBOL_GPL vmlinux 0x49c80932 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x49e18c2e spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x49f02097 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x4a60fc6e perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ae6f92e rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x4ae78148 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b076147 uncache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x4b0f1e7e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x4b1bf99a rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4b3943a1 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4b82c1b7 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x4b93df89 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4bbc52bc netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4be4826d tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x4beef354 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x4c150674 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x4c29d628 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x4c2d8775 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x4c32e176 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c79151e __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4c7a9c84 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x4c7ff7a4 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x4c8beff3 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4c9966a6 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x4cbb7619 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4cc83872 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x4cc949eb blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4ce91451 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x4ceb334c tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4dbbb15a usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x4dc5b1cb clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4dcb703b crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4dd42e1e ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e19dc79 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4ed6e61c subsys_dev_iter_exit +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 0x4f663a35 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4fb1685c shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x4fc5a2bf __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x4fc73f61 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fddcea4 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x50183c65 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x503eeb55 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5048e5dc rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x504f09e8 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a6ee4d pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cb909d md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x50d6dd64 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51429687 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x517cf8d3 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c378bf kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x51f9b69d usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5206d4ed tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52119f72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x52160cec led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x5216cd02 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x522cb9f9 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x525b7fdd usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x52702044 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x528077c5 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x52c46e73 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x52ca4260 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x52d7567d gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x53127f0c bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x532539a3 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x532e8153 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53ce216e ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x53d3a204 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x53d95857 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x53e52562 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x53f25e63 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x541348f3 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5438c718 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x54473ca6 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x545a9641 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546329a0 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x5468c23a seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5476babc transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54ae255b part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x54affbdd class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x54c80e9c skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x54d2bfee devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x5523bdff cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x554ac22f pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x5577db1b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55794bed crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x55869643 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x559e0c3a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x55b4ab82 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x5690c278 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x56920768 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x569d89c7 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x569feb0f exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x56afdad2 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56dabcbd rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56eb895e dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5704ad9b ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x574f158a sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x579d8787 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57ca54c8 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x57caac1f adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x58051fb9 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x581d4efd power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x58247347 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5883e528 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58f48480 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x58f93c1b ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x592890e0 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x5936eaae platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x593c1bd3 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x596cce94 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x597b2126 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x59c2d052 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a66b707 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8c523d platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b05ecf8 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b12411c gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x5b31becc srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5b31c985 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b715f72 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x5b84fd60 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x5bb0e1ac crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5bed6e92 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bf483ed ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bffcd55 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x5c14b077 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c2d9bf9 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x5c2e27d5 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x5c3423a1 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x5c6ad92f rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d21be4f usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5d269e55 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d41324c blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5d5bfc85 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d83b015 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x5dc8c8ed crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x5dd18380 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5df67f76 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x5e0bd67d driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5e426c04 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5e4c2935 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x5e4dcd9e crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5ed1b328 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5ed4d8f8 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f398fdd ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x5f60a35e usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x5f6bef82 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5f96b5a7 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x5f9f4b7e securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5fa184c8 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5fa4418d crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x5facd8ca pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x5fe057c5 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x5fec8973 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x5ff6cca3 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x5ff8e7d0 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x600df7d8 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x6014454b cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x604b2fd7 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x608419fb rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6088ef89 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x608e4cb0 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x6105157d blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x610ca630 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x6169f02b kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x61a1713a spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61afd29d balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x61ce544b zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x622b1630 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x625d9649 mmput +EXPORT_SYMBOL_GPL vmlinux 0x62a447e8 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x62dc3110 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x6300f572 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63707206 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x63833409 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x63a3d200 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x63a9280f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x63d54632 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x640f5b1a uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x641f412a dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x6449e233 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6475d864 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x647db555 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x64924605 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x64cf6767 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x64d48049 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x64f9be71 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x64ffe042 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x655c6efd wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x655ed6ff anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x657cdbea of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x65b1de0d pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x65c46c8b rio_mport_read_config_32 +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 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6653f37e perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x665d5b14 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66ac52c4 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66bc380f hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x66c78bd2 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x66d0fae7 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x66d4db92 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66d9fe19 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x66da4f53 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x66e74a11 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x66fcc138 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x671e78d4 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6741e35e dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x674ebcfb fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x6779cd0e screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x67862a59 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x678d49f0 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a9a45a tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x67bcf2b3 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x67c9ad1b single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x67e9c9d0 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x68139207 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x6850103d sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68bb8a6e ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x68d3c9d0 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x68d70f37 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69434b69 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6955ac3e ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x697a420c timerqueue_del +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 0x698c7d23 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x699027d7 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x69941a96 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x69a461fa dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x69a64d2d regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69fc6a7c pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a245c7e dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6a2c4f49 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x6a39980b crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x6a536ba7 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a726639 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a7fa075 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a876834 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6ac9e4ae crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x6af7b6a8 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b03e21b power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x6b264960 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b43a007 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x6b7bd525 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6ba82994 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x6bc1df09 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x6bc6cc85 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c597158 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c8c01cb platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cac5e08 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6cc3c854 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6ccc6184 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d3278e8 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x6d37bf78 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x6d481f4c uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x6d49769f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x6d7e0cdf handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d8a3490 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x6d97c9c1 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x6d9d32c7 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6db0423e rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x6db3e6df blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x6db9fef0 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6dc5a9db regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6dd3ff03 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x6dd3ff65 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x6ddec8f1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6dff030f proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x6e02e4ea ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6e097379 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6e1e53d2 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x6e2b3129 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x6e428aa0 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x6e78296e user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6e7c24ff gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ecd7de2 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x6eeca89b pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x6f0282e9 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x6f0ccb6f crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f4a5055 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x6f6d3172 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x6f7b28ff wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x6f855844 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6f9b5693 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x6fa9b37c ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6fc407c4 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6fcc6fa2 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70274512 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x702b5932 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x703904c9 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x706f127a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x7073fa9e devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708bd95d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x709831c8 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL vmlinux 0x70acd0bc tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dd08df dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x70f74813 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x711c955b device_del +EXPORT_SYMBOL_GPL vmlinux 0x712be840 __netpoll_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x716ba4d7 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x71cea670 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71ddf123 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x71f7925a __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x72324a87 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x72378643 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x723b0267 __mmc_switch +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 0x72a016a5 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72b702c6 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x72c57a83 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x73248a8b class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7350ed02 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x7358f8bd inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x736a1622 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7373835f fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73915108 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b3a554 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x74254b44 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x74392999 mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74460eda platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x74553154 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x747732d7 find_symbol +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 0x74b31d53 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d9355c serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x751251ef pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753aec23 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x756444e7 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x756b011b bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x756c6ac0 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x758392ea dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x75891551 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x75b12232 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d7ddc1 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75f98234 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x76060625 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x76245e38 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x7649805b __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x76537e4d ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x766890dc regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x766da429 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x7695d782 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x76974615 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x76b5c22e watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x76dfc420 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x76e5b171 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x76fe6155 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x77051559 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771a6abc crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x772ee9a0 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x772fd9a8 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x77558b87 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x7758a0ca pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x77743065 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x77ba6233 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x77c33d58 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x77d0c512 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x77e78218 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x77ff4a8c ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x782b30cf ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x782d8ae0 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x783457d2 usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x784030ad sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x784d7e2d usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x7851bedc crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x78614486 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x7879b9a5 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x787a0f01 get_device +EXPORT_SYMBOL_GPL vmlinux 0x788ec47d __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x78a80b52 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x78ae2426 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x78e8c398 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x78fd0aa9 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x7930fac0 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x793cac4c dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79499672 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x795df1ef wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x798eebb5 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x798f63a4 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79dff326 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7a180c92 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x7a27a82f device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a3d0692 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a44d6d6 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x7a8e2a1d platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ad05db8 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af41237 wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7b0c406c regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b19fdf6 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b3436cd extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x7bb63990 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x7bbfb353 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7bc7a7dc usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7c149c10 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7c152a7b trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7c20c4b0 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7c27d29c crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x7c65cc7f wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7c66dadc shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7c820e69 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x7c9494f7 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x7ca3c15f ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x7cbd8f00 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cc60bab wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x7ce6779a sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x7ce8deb1 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d29ef9d xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x7d3dba94 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc07c0f blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x7dc27ea2 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x7dc55729 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dc62e84 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7defee20 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7e0ef97c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e416592 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x7e5b81cd raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e8b3373 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x7e96dcb3 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x7eceefe6 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x7ee85a1b dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f089c9c cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x7f09aba5 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x7f128392 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x7f27789e simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x7f3c0fe1 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x7f59e5f6 of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f889f82 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x7fa20d57 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x7fd2868d debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x80228965 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x80845fe1 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80b306d7 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x80c3adcf __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x80cca015 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fbb166 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81700884 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x8184fb2a blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x81c4b18e skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x81f6db54 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x81f7162f ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x820f7ba8 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8245b9c5 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x82772d86 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829f18d4 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x82d30dfd rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e307c4 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8321fe7d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x8337381e __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x83390d95 cgroup_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x834f83a6 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x835cf663 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x837229e3 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839e28b3 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a623a5 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x841f7e3f ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x8457e502 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x847026d9 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x84846eab ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x849e2f21 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x84a621e4 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x84a7702e adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x84a9e8ac tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x84e4b369 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852bd5f0 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a5a688 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85f0b72c usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x85f4cd8a ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x861357d4 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8624988c device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x862f0db3 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8635ede4 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x863c552c cache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x864127a0 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x86420402 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x864880f7 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868be4fd xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x86a22f39 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x86a55f0f dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x86c7f810 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8704eb06 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x871bcaa4 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x871c280b ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8720f2e3 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874b996a tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8794bb30 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87c51fbb wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x87c99a2f pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x87d6f590 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x87f8e60b xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x888a2069 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88af035a hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x88c382b2 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x88c63fee usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x88cccca6 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x88d064fc power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89263c0a crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x8927a97c crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x89299aef usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x893d4a41 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x89919ddc yield_to +EXPORT_SYMBOL_GPL vmlinux 0x89cb3d5b digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x89de5019 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x89e4b665 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x89f2b24f pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x89fc0639 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a359353 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a673b1d inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x8a8ccb13 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abd4937 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8ad788f6 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afbf7b1 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8b01112f subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b0937a7 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x8b3144ee bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x8b5debf2 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b821778 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x8bbcfae3 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c1b52d0 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8c41fee6 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8c5896ec regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8c5e2ffa tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x8cdedd90 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x8cf2e07a crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8d2dd063 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8d408baa flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8d56e73f spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x8d5d4200 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d764de0 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dbe87ec spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x8dbfc622 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x8deaee35 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e6d3a90 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x8e77d4e3 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8e952f87 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x8ec6444c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x8f037d09 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x8f050b75 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f12669a irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x8f1d8e10 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x8f3d84b3 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x8f416ddb unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x8f444afe event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fdc9605 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x900cc15e noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9045119b device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x907dd747 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x908bd862 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x90988668 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ae46ad md_run +EXPORT_SYMBOL_GPL vmlinux 0x90bd21e4 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x90ef5743 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x912fa333 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x91812957 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c1d99c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91ecd94d devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x91ee7686 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x92122afc hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x92377a1b tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x9249dab9 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926afcc1 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x926e9b6c netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x927db25c sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9286fded usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x92a35152 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92b6cd3b of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x92c4184d cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x92c90e22 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92efb2d0 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x93226faa irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x9334ad1a debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x9342798c device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x938cb68d vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93c4944f ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x93c52427 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93e4e2eb tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942ab8ee dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x9441b75e sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x944b737e fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x94655a4c spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x94755215 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a79904 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94ccc7c0 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x94e8f914 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x951bab3a rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95957347 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x95a86d1e pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x95a9a7bd locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x95b7c5a2 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cca336 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x95d2f26f scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x95dde3b1 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x95e6d81e key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x95f28794 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964758ae sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9666cf3c blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96f17b76 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x971a5a06 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x974065a1 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x974b5535 pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x979affd5 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97d05c2b fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x97d3a7c6 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x97e1982b tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x980f3ac0 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x981a6613 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x984287f5 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986ade9f debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x986eb4c8 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x98a9b4ad sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x98ac22ec add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98e4ec29 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x98ee6ba8 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x990a59aa usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x9913be10 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99294084 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x995138d1 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9963192e da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x999aede9 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x99e144c1 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a369281 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a5c76f8 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a629867 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ace9e99 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b094c1f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x9b1ba7cc of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x9b53e349 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9bdc4d83 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c190aa6 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c4a1e20 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x9cb3fa2e ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9cbae5a3 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x9cc4db1b crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x9cc67a54 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9ccb1788 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9cfd2c55 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d19c3fd led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x9d37ce79 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9d5492a8 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d8e18a1 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9de70ca5 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x9dfadbb9 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e144c8e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x9e17be07 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x9e1c9b0b sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x9e35d729 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x9e3dc775 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x9e577d0a __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9e8444d8 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x9e894455 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x9e8ccd56 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9eb5c67b watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9eb6539a ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9eb990dc __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9ec1c6c3 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x9f07cbde fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9f360918 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f73be9e dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x9f7e2621 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x9fb2763f devres_add +EXPORT_SYMBOL_GPL vmlinux 0x9fba4e80 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd8eb00 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa022cc13 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xa024e34d pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xa06605c6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa066896e __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0xa0672599 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa07e9152 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa157a3cf led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa160e49f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xa1a1cc21 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xa1a39dc2 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1c9d8ab xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xa1e3a8de kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0xa1e4add4 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xa1eb6c6d sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa22b90ad fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa2415e04 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xa246a8f4 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xa24f9c63 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xa251867b kvm_init +EXPORT_SYMBOL_GPL vmlinux 0xa26fe86a dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa2ac7a05 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xa2bce27c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xa2d7a279 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xa30dec84 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa313c8ca ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa320e77d skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xa33350fa swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xa333df02 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa33984a8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xa34fd8a6 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xa3544ec9 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa378b6b9 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa39d9220 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3bd6f1e ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f23d83 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa3f34c81 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa3fd2320 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa40c98f9 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xa40d49f7 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4828952 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa4842e70 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa4bf378d dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xa4e07cfe posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa51bed9b kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xa5561b49 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa56dbe53 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xa59e1831 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b5f065 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xa5e0cda8 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xa5e7f029 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5fff6d5 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xa6011132 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa603137c sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xa603e5ff ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xa614bcb8 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6445013 input_class +EXPORT_SYMBOL_GPL vmlinux 0xa65d94ca ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xa66e7c4d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xa6840d42 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xa686f0e6 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa697df42 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c4c658 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa6d9f9bd usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ff6466 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa7401686 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa74f9fb7 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa765e323 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xa78e02e1 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0xa7d33233 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xa7dd634a stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa7f84149 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa81cf34a ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xa82a4590 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa83f44b3 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa84ba28d debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa8a42b62 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xa8de8273 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xa8e41994 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xa8f1b169 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9250c83 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xa985b4a0 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xa99c031c perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xa9a684eb init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa9b214f3 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xa9b74eef kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9c87fe2 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaa129756 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa547e26 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0xaa66fb7c ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xaa818b71 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaacb75cd cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xaae8a7cc kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xaae8efc4 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xab220c15 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7e3362 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xab810e3e rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xabd3ffd3 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xabd708ad ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xabed478f pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xac789867 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xaca76e7e sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xacddcad9 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf7943b __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad12ce18 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xad149d37 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xad16454e dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xad16df16 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xad6f7e1d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xad6fb16f shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xad85b053 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xad9c19c0 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xada1aec3 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade09352 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xadf5e67a rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae05d0dc vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae1499c4 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xae4161fe extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0xae67ebd3 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7251f8 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7f4781 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xae907146 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xaec26729 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xaec5a6e7 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xaec7121e user_update +EXPORT_SYMBOL_GPL vmlinux 0xaee0de25 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaef7519f __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xaf1bafcc regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xaf378478 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaf76c4b6 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xaf8828ef pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xafa30233 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xafdf5784 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xaff3c8a0 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xb03f0090 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xb058cc0a fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0aac4af ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bacc7f gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xb0e6793d kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xb0f76f0c __module_address +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb1111dd2 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb12b614f ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb131073d sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xb13d539e cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15efbe3 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1e88080 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xb1f1afd7 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xb211c108 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb251f1a7 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb25f6b27 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb2804c2e vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xb2890fba tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb2961b7c debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xb2d18838 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0xb2f657b0 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xb30ca00b wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb3117993 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb313016a cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xb323ce7a cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb37f163f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xb38d5326 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xb39cf7d6 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb449466f blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb45a59e1 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb4ce25da netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xb4e4d2fa crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51a3537 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5766742 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a603de inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5fb80d5 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb61432f4 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6928414 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xb69ef767 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xb6a9e953 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6ff27f5 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xb7090509 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xb71aa82a cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xb73fca07 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7bc3fd2 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb7df2e0e relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xb8163455 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xb81dec00 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb84d3887 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb871cc57 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xb8a478ee mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xb8a7651b tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xb8b58f0c ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xb8c4ab55 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb8ddc57a ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb916ecad skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb9394463 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb9436193 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xb9534a97 cgroup_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xb97f3fe1 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xb98a037c usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d9047d hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fc708b queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xba21cefb rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xba2605bd da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xbab85bdc driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb853406 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb8bf5fc ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xbb9f2f79 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xbba0c9c2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xbbc0c09f ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xbbdbf3bd sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbbe8496d devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xbbf29863 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbc08d2e9 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xbc2214b9 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xbc3bbb8f fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc7d19fe rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xbc9ee326 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xbcd93d85 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xbce66d28 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xbd19f450 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xbd25328b rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbd39dc75 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xbd43fd3f pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd75e28a debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbd8838a7 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbd8896aa bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd89ba98 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xbd911887 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbd94bcb6 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbd9da235 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbdaba5d5 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde5cb54 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe26ae74 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xbe5e5d3d cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbe65c2bf attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xbe7feeb5 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbee8160e extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xbf146d7e pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf4e14c4 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xbf7a2527 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xbf89d6f7 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xbface2cd pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xbfb70d5c sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0xbfe158a3 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc013de1e tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc0457118 sync_page_io +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 0xc0c80a4e crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xc0cb2c6f irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e2a68e fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ff0832 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13913b9 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc140b77c __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xc16d1d19 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc19c8fda pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2416b8c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28ed85d pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xc2904d03 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc2d94ac4 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xc30342f2 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc340345a usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc377a1a8 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc389be3e md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xc3aa86f8 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xc3dac83b class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xc3fe72f2 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc414cdaf crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42e4a2a tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc4351e39 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xc436579c spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc455edfa of_alias_get_id +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 0xc49e5869 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc4a93b9d fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xc4d68a96 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xc55e9de6 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc567862c ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc567cbde usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc585eb00 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0xc58b1956 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xc590b5e8 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xc5ca1fd5 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc62cc1ec bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xc6531cd4 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc681c4eb fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6c8e115 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xc7000cc9 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc74806d6 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xc784f378 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a72281 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xc7c47d60 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7da17be timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e4c538 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc80da618 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xc83fedea transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc8510157 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xc85d2349 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xc871a13e ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xc8a06b68 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc8a16e99 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8f06b6f user_read +EXPORT_SYMBOL_GPL vmlinux 0xc8fea4ec invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xc9045a62 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9274da3 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc92beacd ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9807362 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xc9964ac7 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc9e34529 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ee547e devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xca07906a __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xca0911d2 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xca7bf0f0 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca9c03f1 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xcaa03a3c usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xcaa09d16 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcb0ff1e1 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xcb121f1c sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb3722e6 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xcb85a790 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xcb9128e0 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xcbae28b5 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbcbe2d1 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2fd714 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcc301356 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcc3c897c cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xccc9b024 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccde620f ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xcce4ef2d rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcd55c0e0 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xcd7b82f4 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd15087 of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0xcdf8162c hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce17c6cc wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce4a9edd isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6da6a8 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xce7e5ad6 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xce8c5fd1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xceb28203 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xcec503bf __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xced0bb53 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xced321cf usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef0a923 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xcef59d89 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xcf0b76eb find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0xcf1f6ea3 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xcf371459 kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0xcf3918f9 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcf543a0a usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xcf7d4d96 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xcf969d1a device_store_bool +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 0xcfdf96c9 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xcff25a97 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd0319b7b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd05ee21d rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xd06891fd n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c154c3 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd0c1f49d ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd12b7b8a max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xd12d27bf dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21d2759 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xd21d6582 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2ca4994 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xd2f9e27b usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xd31f1914 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd32bd741 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd350c986 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd39fbdfe blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xd3d5dd6d generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xd3e70685 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd3eecd18 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xd3ef32e3 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xd3f7faed debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd401327d kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c1ee2 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xd4572d16 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xd4761cfd crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd48db2cf ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd4bdc018 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c2b4b6 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xd4de3f3f regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd4f7f67a lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xd513ddbf timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xd52502ac thermal_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xd541c885 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xd5548db1 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd56584f0 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd590e6b5 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5e2460b ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5ec7c64 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd5edfe87 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd5f98d38 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xd5ff3acd blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xd62074b6 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd64aa46c stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd6525e85 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd69220ec ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd6b565f9 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd70bfc62 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xd7233e8d __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xd732148d ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xd7348fcb regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xd74a9b16 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xd761042e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77b2fa4 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd798ce9c md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xd7aa2de1 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xd7b059ff input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xd7ba8842 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xd7d5023b ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e9f69e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82ea830 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xd8423b01 usb_get_status +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 0xd8a1d1ed regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd8b78bf8 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xd90bd013 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xd93a5105 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd9690e45 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xd972a5d1 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xd9be3224 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd9d7f623 pkey_id_type +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda050109 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda0c1794 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xda0ee039 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda255e04 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xda35f47c of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda4e9137 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xda5f58bf inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xda691874 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xda7e8f81 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xda7ef7d3 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdaa2aa8c pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb094c52 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xdb1dd4af i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xdb37fb8c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb4058e6 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb947dc3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbb43e82 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xdbd65e8b kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfe0418 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdc035845 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xdc041189 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xdc0fd411 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xdc183e5a platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc85579c stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdc892caf device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcd3cebb srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xdd11d0f6 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd30382e dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xdd548c31 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xdd61c420 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xdd96d88b usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde31ffeb wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xde4fd6bd crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xde523102 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1c78fc pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xdf27877b register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdfc8aaae unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0197fa8 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03525ac of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe083ea30 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09a8777 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe0adbd07 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xe0bc6496 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xe0e4160e stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xe1100862 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe1275818 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe166e349 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xe181d487 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xe1a411f5 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xe1c9ee27 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xe1ddafaa regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe1fcc92b regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe272dad0 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xe290d62f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xe2bf6652 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2f2a43a pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe2f36df2 usb_get_current_frame_number +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 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39bdb60 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe3b45387 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xe3babe86 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe3c79a56 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe40ef36b debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xe418ead0 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe41c3138 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xe4286286 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe435af96 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xe4630b80 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xe47ffddc put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe4a022da usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xe4a16f2d driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe4a9c7bc tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xe4b6c0fb key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4df9be1 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xe4f2b3fa gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe542340b of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xe54a6325 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xe552f3b5 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xe57316be regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe579497c ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5a14fe1 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe5a3bb61 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xe5b50504 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe5bf94f2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe5d741d8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xe5db0e09 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xe5ffa94e xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xe601f7af platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xe602f9e5 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xe61e683c relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xe6360ebd sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6b5771a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe6d8101d get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe72c58cd sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe75e0ae1 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77e4344 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe7941df1 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xe7e041fd sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xe7e0d356 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xe7fa0d63 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8140cf0 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8271d30 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe82a6fa4 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xe830d0df sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xe832e145 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8ce1070 find_module +EXPORT_SYMBOL_GPL vmlinux 0xe92066dd ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xe93ce613 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9521920 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9831a74 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe98649eb static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe9c0affa ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xe9c484e5 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xea057a0e spi_async +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 0xea9fc1fb cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xeaba18bf pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb6b7176 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb94fd54 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb5b47f usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xebbd2c28 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xebc9121b kick_process +EXPORT_SYMBOL_GPL vmlinux 0xebdde0f1 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xebe6af10 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xebeabd3f sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec073a67 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xec1a083f pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1cf9e1 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec4081a1 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xec7173ec blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xec930ca9 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xec94abf5 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xeca36adf pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xecc1c5b7 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xecd9e64a crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xecf884af cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xed094826 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xed12bd2f led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xed150872 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xed19d1c9 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xed25d1b0 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xed25f170 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xed920944 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xedbf3cbb of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xedfa0073 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xee193e80 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xee697ab8 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xeecd28e7 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xeee9fb1b usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xeefa4d06 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xeefd6f26 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xef2193cc crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xef3190e2 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xef390fa7 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464bff tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xef4664b3 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa969e3 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xefbad45d sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xefc91531 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf001dc80 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xf00c2649 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xf0113dd4 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf02dc0e7 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xf0753b28 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf085e2e6 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf1177b66 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xf11f9913 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf14dd161 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xf156e325 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b14b1b blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1df9a00 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xf1e5d80f async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0xf1e92080 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xf2127fbc of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0xf2181499 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xf2361234 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xf23fd204 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf24d41ab inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xf26a0b60 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf2b1d212 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf2d6add5 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf3044aa5 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3a01764 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf3a399e9 inet6_hash_connect +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 0xf42cadeb usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xf43d403c task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xf457916b wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf4619277 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf46820d4 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xf47c7a69 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b05b8f pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xf4b6e651 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4e9003f rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf50d01b6 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xf51eddad tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54c2082 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf565c2c0 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5e5f27d cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf6051b78 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xf617091c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xf6221fe5 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xf628c6fb tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xf62f0c33 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xf6390d5b crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf6491d4c do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf657f45b cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf66c8785 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf6dbb833 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ebb1f4 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xf7446a6e blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xf74656ab regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf747b1d6 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf75872a3 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf7b6fcb4 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf7d6a7ad bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf7d9d66a pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xf7f62b59 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xf7f85601 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf8154640 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf853f4fd file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xf86f325a inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88459b2 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xf88f80f1 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xf8d350e0 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xf8e2edae pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xf8ee7450 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xf8f0af2c kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fc4bec pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90752d8 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf90dfc1c bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf941cc85 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d3fea9 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0xf9e420ac usb_bus_start_enum +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 0xfa4dbe81 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xfa85bd0e __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xfa95a07b driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfacd9502 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfb05c9b4 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xfb15bf91 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb50d39f bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb976324 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbdb95b9 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xfbe0d499 menu_hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbfaf4a3 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xfc26ab8e spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xfc811b14 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xfc973e0e pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce0bc0f ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfd255686 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfd5abb28 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xfd68bdd3 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xfd68c90b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfd79fca3 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xfd87cdeb subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfd89d40a device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfd9088c9 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfde534c0 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xfdee2e68 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xfe5fa333 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xfe76511e sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xfe86e497 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea93650 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xfebadb9f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfedde0da regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff33d0b6 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xff5587d7 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xff577e9a __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6dbed0 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffa646c6 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xffae75d5 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xffb0054b udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xffbabfd6 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xffbf8b0a inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xfff12595 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xfff215b6 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfffd01d0 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xffffe3b4 device_bind_driver --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500mc.compiler +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500mc.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500 +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500 @@ -0,0 +1,13685 @@ +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 0x1fe895b2 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xf2481509 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x39699426 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xd2943484 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/paride/paride 0x1355290c pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x305271d2 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x336d1737 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x422b32f0 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x521ec855 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x564b2e6c pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x68386a30 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x82828664 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x94bdac64 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xa980fe17 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xbccbaaf7 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xcc8c4cf2 pi_write_regr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x05a1167a ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12068c97 ipmi_smi_watcher_register +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 0x6e118dd3 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb462ad89 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd8bab003 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/crypto/caam/caam 0x55255e94 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam 0x5d9a7d54 caam_jr_deregister +EXPORT_SYMBOL drivers/crypto/caam/caam 0xb437e061 caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam 0xbb030d6e caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam 0xdf31a9ae caam_jr_register +EXPORT_SYMBOL drivers/crypto/caam/caam 0xfd2b02dc caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam 0xfec869f3 gen_split_key +EXPORT_SYMBOL drivers/crypto/talitos 0x2f7bcb68 talitos_submit +EXPORT_SYMBOL drivers/dma/dw_dmac 0x09a0a591 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0x5a68f8a9 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw_dmac 0x73e2dce2 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0x7d5a7588 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xc97a2186 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xd214bcbe dw_dma_generic_filter +EXPORT_SYMBOL drivers/dma/dw_dmac 0xdd82539f dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/edac/edac_core 0x767801ce edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x22505fdb mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x053cdcfe fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0b6585ce fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x12c3bd1e fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1e0918b2 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1fce7800 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x31c54c37 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3d9f4dd1 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4cd85ecc fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x53297936 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5c130c2f fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5ea7c162 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ce6f77c fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x77c53134 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7972ba0f fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a0cf04c fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a444de9 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9a461f1a fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa83548e7 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb673aebf fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbb4069ca fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcaaf4a35 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcafac1cf fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd595eea6 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd910c8b0 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd9135a44 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf243c450 fw_send_response +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02861a02 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02e6e099 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03ebe6f3 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x048d7871 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04b283e9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0524169e drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05bbe97c drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x089c2a82 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09f29cdb drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d7c2343 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x102b77bd drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11065515 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1384a0c4 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1773a4ee drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18830d49 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18fc4450 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19621a52 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19da3502 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a230695 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c40ec0f drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1df50272 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e65ec7f drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f770a36 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20935c42 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2158f64d drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x230ae880 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23e6f195 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24c0d369 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25e37848 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b5c58f6 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d9cd07b drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x301b58f8 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3115210d drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x335db272 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x359ac435 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36d5bbcd drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x373949fb drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3909afd2 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x396d5747 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac2477e drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44536d10 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a0c113 drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4626d34b drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x467c6209 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477cf500 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4819a054 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a08bfa4 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b49af3b drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d811560 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4eeeb3f9 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f534966 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ff155ea drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5118a47d drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5218e5c0 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5282769e drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53f74200 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e9581b drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c6f109c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5da8cf39 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e3bb250 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e81a46f drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eafb8e9 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60be784e drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60d4cb8c drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60e1471e drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x641277a6 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x649f9e03 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64fbb4f0 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6647f333 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66c79bc3 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66f7f2f6 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x679dcbec drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68314eb8 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a44f5b4 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b14bccc drm_mode_cea_vic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bde67cd drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cae5f61 drm_mm_search_free_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d573423 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6de17987 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e287638 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e4e80ce drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f484a63 drm_mm_search_free_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7020b9ab drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70b18e5c drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71557af1 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716222bd drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x723685f4 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e8efc2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7759c80c drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7773d56a drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78090928 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78a9b108 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78df727f drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a61261d drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ac81039 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b42b5d4 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3f7420 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e6a4eae drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f752c88 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f84459b drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x820ca58e drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82709e20 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82affbbb drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83604849 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86582ea1 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89c0e6d8 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c3f6d75 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cf96941 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d3163a5 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d77cc25 drm_vblank_pre_modeset +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 0x8e6a0cf0 drm_i2c_encoder_init +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 0x90ea3f61 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93538078 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93e1e8fa drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dd060a drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x991945dd drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x993de9e2 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99eb52d7 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a147ce6 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b3363b5 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c36bc7d drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c8a25cd drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa15da21f drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1ac6bae drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3e13718 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa431c5af drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4a5381b drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa845d438 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8d01dba drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad1b252e drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae0b6c5e drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae3c85fd drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae8deff9 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaec1bfe7 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb10525ac drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb14ab56b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb17f2db0 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1baf70d drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb499aec5 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7c9a53a drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb88134ab drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba2d0719 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb482bb drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc12ca5e drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf0fd397 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0ad91ab drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0ea548d drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc25a61ec drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2d05192 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3b01ef8 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc447eb69 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6d44c10 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc97039f7 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca19cb26 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb1beab5 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2a4683 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb9aec5e drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcda91c46 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf05bb50 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd06004bb drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2a6da72 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd71e76cd drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc16e980 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0891f45 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe20f0f5d drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe303e965 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3fd28a7 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4117849 drm_gem_prime_fd_to_handle +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 0xe7a8fe4f drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9177075 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea8f1cf4 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaa86577 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb700562 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecd80204 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee7916bd drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf139ebb5 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3071c51 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b9ee45 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf50f452e drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf54b1dc3 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5c3dc62 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf623c065 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6c16c42 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf86226bd drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf939e71d drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf96546a7 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe521ea3 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe5594b0 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff202f98 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x007c7bfd drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04c7176b drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a26c397 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0abde5b1 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d49b21e drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12f773d2 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21d07700 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38c5e6a4 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f07890e drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f59c645 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46b556f3 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48a2b466 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x581dce18 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5afead43 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a40c5ae drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x724d41b5 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75b6473b drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80912ba4 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f7726c2 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97f6ecce drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cb3b8ff drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3776137 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa41db0b9 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9d9616c drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae7e6e0a 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 0xb9a9d82b drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd24750a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfe8dcc8 drm_fb_helper_fill_var +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 0xd1421017 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3dae6ee drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe378c19a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea2c9f53 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4b042e7 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x35aa942c drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xb2292103 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xcf8ff396 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x08a044f6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c4b08d5 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c72fb84 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d1180f3 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12a7fe78 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17e48a1d ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17fada95 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x19ea6217 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d503173 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x20d6e859 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x212af5bb ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26eed4a3 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29f2d129 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2cccd128 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f6c138b ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36990d88 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39a10fca ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3af40e27 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e631223 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3eb6b049 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46511834 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d1eea63 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ed003ef ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x52573bc0 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5739bfc8 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x588edb7d ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5910a943 ttm_tt_init +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 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a960a64 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ba7245d ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70733478 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72e56500 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x76f30ea9 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ad66e6b ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7eeb4c9b ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x835dce23 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e2d805e ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9efc54b3 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4ce2317 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabeef719 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaea63524 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf44f7f8 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb03a02db ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb26bcb34 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb59a9ab6 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7902d7f ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaa4d46c ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe385b75 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1eb206e ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc27bc59a ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f7eea3 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc65b9f2a ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc73a01c3 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9704310 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc5d514b ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe05c47bc ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe12cfb28 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6e37bcc ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe86e7adf ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4c0b33 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef55a660 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5142f74 ttm_agp_tt_unpopulate +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 0x64fb2ace i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xc7f5d7c2 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xa2673936 amd756_smbus +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1f84334d hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x73d9501a hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9472db7e hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xdc8453f1 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf8e566d4 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe8a5f8a9 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xf8dd8504 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x670ec8f8 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x73d1c96b adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x07a27495 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x07ba1e28 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x0c9042d0 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x0f0fd480 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x155fb6f1 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x20c95b13 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x296845e5 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3849239e iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x41481225 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x500d3062 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x6c4b734f iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x6f32bd07 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x85201460 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x8a1997d4 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8bfeec29 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x9cb6512d iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xacb9da25 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xb48d32dc iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xb55ac7cc iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xb5773df7 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xd041b895 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe136a6d8 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xe56c01ed iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xf54329ef iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x00d80d71 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x1225af1d iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x88267b52 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xb148eec6 iio_kfifo_allocate +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 0x9f6ae721 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa8f6808f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x06839e32 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0c16d269 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x12b69f55 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1f1d3a32 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2b80b98a ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4b5eb3e7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7a40fe8c ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7b3af602 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9ca0de89 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9caf494d ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaacd15cd ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb817e8e4 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb860550f ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdbc5ac55 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe6239e5b ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf71f13d1 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xffe6c38e ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0090e690 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0267f257 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x042ba112 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08062fb3 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08120a28 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14b5b486 ib_modify_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 0x1ba1e5fe ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1cb43d74 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20f44f2a ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x297740a8 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c79bae1 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30a48e0e ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30a50ebc ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3781eaf4 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439a16db ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45c4a0cb ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4623b3f6 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47291694 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x475eef96 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bf1f974 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d96b732 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x511cbb34 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b16fdde ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b4eb3ef ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dd2d593 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f719f1a ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f987abd ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x626a37c7 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x665a9269 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66ba1661 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6898869d ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b74f2a3 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cfb760b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71c4b370 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x766469a4 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7711385c ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x783af14a ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78dc7095 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ff3e3a3 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x847b62e3 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84abce45 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85e9a26a ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87ce8e66 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x918c8f65 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91b5ee39 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93a16f5f ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9be19c37 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d8b9f81 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5df5ad1 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6a41f8a ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa98b98c8 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb457337e ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb70a5d93 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb86336b5 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb87560a2 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbad64061 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcf4b185 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc124c5c7 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2ef4f08 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7d500f7 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca870281 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb9ab51d ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1fa78bb ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4288960 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd980e55e ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0388a40 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0789013 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe19d9ddc ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9df9d75 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb384ab9 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedada2da ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf63e44c5 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfeb7c2c8 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0b1a5ab4 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x201bb5b7 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3ce84a37 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x532a08f6 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x614110b0 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7d9ec52c ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x89456b06 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8dc8b735 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9aa9bab9 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbcdd77da ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd0f53d84 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd4418e4c ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x00c45ab3 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4824c612 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 0x68bcca92 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8b2f28b1 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc3d10843 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xcf00ebc7 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xeff68e39 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 0x59b74aa9 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x74c16aa9 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7bf737b1 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x88510576 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8a022ca4 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8d35b2f4 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x93dc252b iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x993790a4 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x02543022 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x08d7ae3a rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1df88406 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x268fb35d rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2b866731 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2c768308 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2e234f44 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3773910a rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x562dfb69 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d657c7c rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6ae2fd8d rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6cf5d7cd rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x79b68946 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x87da396f rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa937ee0a rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb6265fbe rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc3263811 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe03dc501 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xea5b642a rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf7fe9334 rdma_create_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x08e44e4d gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x094672af gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x244951ef __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x394977c8 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9e944a90 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xca4dc300 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd4f58601 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe16a3fe1 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf1632780 gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x6d7c621f input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb734e187 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf79473fc input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xff26fb8a input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x1bf9ffd8 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x25fb9124 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x87aa9f86 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xb3fa898b ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xfd855ddd ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x2bbeb898 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 0x275ee825 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x49a6bb16 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x4b10f60b sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x974d7f82 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa793efb1 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xffe0674a sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2d9624bd ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x89cb2a49 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 0x04a63e4a capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1328673b capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x23f1f937 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3438b5ca capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3fd4de92 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x40dcd3f0 detach_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 0x5c8918dd capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x65593525 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x68cac2bf capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72c55a5f attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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/hardware/avm/b1 0x168158f9 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1dc07f53 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2b91785f b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2f7e65b9 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x31e9d5e5 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3f4706ab b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4f9f8e6a b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5afdb54b b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5f7a90d3 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7ba0528f b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc075d0cc b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc3224291 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd231cb0a avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf1678e82 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf30f2b1e b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x515a7e4f b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x98ef514d b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x994e775d b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9cd75651 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9e20b387 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xacefc0c0 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdf767753 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf181edee b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfc70b846 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x53b6fb27 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x80deaf41 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb1ed84db mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xe557b58a mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xeecd0722 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x2bd80584 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x58d52326 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 0x1d7d26da 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 0x0bff028e isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1cbdfa98 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x71158eaa isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9c50aa40 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd5c16317 isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x099146d3 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x552aa2a0 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa58fd1e7 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 0x044fb3ef mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0718cae1 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1b95979f dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x276953c1 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 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x593959de bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5976571a mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6e220c0f recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x70920920 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7e20d610 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8cf13bb1 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8f57fd4c mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x971b49ac recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa2d2636e recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb4bb2477 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbbf4b830 queue_ch_frame +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 0xd36bf9b1 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd6d569e1 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd8a30fcd mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda81d30c mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdd73ad3b mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdff04b1b mISDN_initbchannel +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 0xf4d14c70 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6549467 recv_Dchannel +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 0x2af952cc dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x6fc07741 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x83de65b3 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xb493c5f5 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5b49f5bd dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6db445ab dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa36d8940 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcc7c167f dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd4d6334a dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe7d7d01d dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x6643de55 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1d9676fa flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2c27bd04 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x311b7730 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x452cd4f2 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x49959f20 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5eef38c5 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x68842ae2 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x850dacc1 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x90a1ae29 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc79ef734 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd7775d58 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf56bc73a flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf6a9eb77 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x09fcc47d dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0bb225d8 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1dc05174 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1f4d189f dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2bb7e83c dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2fa17708 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x422faebe dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45d618fd dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4a1fe45b dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x569250ee dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2c5154 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7369fabf dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x77f28f07 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x862c4246 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d955557 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x93387e8e dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9461b8ec dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb4b3c09e dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc113bd60 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc166d325 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcdc60f72 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd160aeb8 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd6b1f391 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdd8236bc dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xde4c8fae dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe8ecb0b7 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeba64ad6 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf2fd0602 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xfe5bda5b a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xc9d13d00 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0xaa29262e af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x69ad5872 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x018bbd2e au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x110d8026 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2787e81a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5192e22d au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa71cff64 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb119e74f au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf1fa6225 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf53db195 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf5eb175a au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x3eecb4f1 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x9b0472c8 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x544de3cc cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x0a3e07ec cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x1be28e52 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x7211b234 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb3167bdd cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xff00a122 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x45da8027 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5cbc67d9 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xcd09f553 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1d6ca29a dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x639617b8 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x781d33b1 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8382e049 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe2490c41 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x024655a5 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x04c48d27 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2e31a24b dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x49e58649 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4f625241 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x54f7847e dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7807fe3b dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x896843f0 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9ed4c70c dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xacde5ece dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb9c4df82 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd68eca5b dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdf7c1c62 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe0609a0a dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfbe4e947 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x96ff10dc dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2fa5c432 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5e5b354c dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x955bc94d dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x95ecfc1e dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe802a8e3 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xea781f94 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x63b1e186 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x651b1267 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x6933ddad dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9322da52 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x06fd05ed dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x10e70ea3 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x13b54464 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x18a71786 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x49ddc763 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x582d41b5 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x60319d4b dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6829acbe dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x8962a81a dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa5bbd070 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbce1ad11 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc3df69be dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xda2faebf dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe42d6ade dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xee88867e dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1186d4f0 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1277f1d3 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1e473eb7 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x224e60ea dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x35e6dcdb dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3792104d dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3d83652b dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x467aff6a dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x56d86202 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7052c1b1 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8ce5cec3 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x96f02882 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x986619bc dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa2afd3e0 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb9d1a0cc dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb9fa5579 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xbd73ccb9 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdcb36511 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdfbce8a4 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0a0afd49 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x835165fc dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb03ec5ec dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbede09c0 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf63ace38 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x1d9ebf22 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xb35fa10e drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb5425d3a drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x821aae8f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x8a12050c dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xc3838feb ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x6f40e1a6 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x99fd9564 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd2b359c7 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x3637fb1c it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x10592673 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x5b0c33e9 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x3606cd92 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xd0c516ed lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xef8083f6 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x835948e5 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x48bc7d7b lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x2b9ec7d9 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x841af66f lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xcce26baa lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x616c1764 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xf394e0b1 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xb09f4661 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xa01612ef mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xead9e025 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x1b100acc nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x52495168 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x87578f59 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x60c4a7df or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x6078c9ae rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x83826794 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0xc4872c57 rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x50565675 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xa47b686c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x1b504f41 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x6f92f9d6 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe5e18ba2 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x28cb0654 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xe2779c59 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x7a4026bb sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x50f0188d stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xed02c086 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x33105151 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x601449ed stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xccc6f8ec stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xd095c485 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x353b577d stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xaff1cf52 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xd2f6eb2b stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa25dafd1 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa72b1b95 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x10984f72 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xd3f3d5ea stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe9977f90 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xcbd7a778 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x77faf00f tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x40ae95a1 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x7605cf5b tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x77b5df9d tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xdf31fe5c tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x48924e0a tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xdbb55e88 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x7c7054b5 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xb84d6fd9 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xa5ced143 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x5932bfd7 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x7eaa775f ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xf3a0976d zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xcd3ad9a9 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x7f82c112 zl10353_attach +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x21b39ee5 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xdc0496ea btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x00c92eb5 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x13a5899e cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x5ee4c401 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xc44d80ad cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x04e72124 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0xea023c40 tveeprom_read +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x016757e7 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1dfc9194 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2e26d9f6 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x373dcaaa flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x76553a83 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf5aa3af5 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf6b3e15a flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x60f3e43d bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xcd963761 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xdebd13bf bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfd8f24ee bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x801dc814 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x87e894d4 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x948bd24e bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0170b65e dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x141eae33 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1816793e dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x272b4672 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2c041ad1 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x53cd9ef9 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x70a2120d write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xca9cfdf6 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf768b518 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xfd333988 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x067cae53 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1a583b8d cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdb14ff16 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf31ab88c cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf8470e92 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xa402cee7 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xd66c8f6a altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xfffa05f6 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x002070b7 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x15db9eb6 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9eed9e99 cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc8817d8c cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcf70620e cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xda2d572e cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe086a05a cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe7ace19e cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf7d6ab6d cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x614fc936 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf36a2ea4 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x16aa20bc cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x84f9a61e cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xae07f027 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb2a30b8a cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1d2fe2be cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x2ba41a69 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x38ec052a cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x489cdec8 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7b32da5b cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8046c04b cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x11eb6345 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x25caf798 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2ccc0633 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3ccdc199 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x49062dfc cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4c078dc4 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5bb6b6cc cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7376b55a cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x94d28acf cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c505ed3 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9eb10893 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa7d1d3f3 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaa8aa039 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xae03bbc2 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb92a2951 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbda7da4d cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbf8df830 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbfc4b957 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc1005920 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc6b768db cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc14f93f cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf25307e5 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1f031670 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x29589dcf ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2beb6c1b ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x31b9df17 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x37de741b ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3d0edc17 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4af16714 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x685d1b78 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7c0e195f ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9d9990e6 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaf4a92af ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc96d8998 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdba20496 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe33b27d0 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeceeaa2f ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf79e38f5 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfd3edc3f ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x229fac5b saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2eb9aa79 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x31f05005 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x438ab732 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x456dd6ce saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7eb217c2 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x89cc9e2a saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc8e55efa saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcec9bbfd saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe058dfdb saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfd50e4c6 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfdc19204 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xd96d0019 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x6401dce1 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x8ceb49a3 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x9ae37db5 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xac4a5773 videocodec_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0bc95dc7 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0feb63e4 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x627c7e5c soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x83a54a57 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8d31aa4b soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbd5bf7f9 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc31140d4 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd06fc045 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2fc57265 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x31477397 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0227d409 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x07901400 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2450ef7f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x51c700f1 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x58202df5 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5f061060 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x93a62a96 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbbe60050 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/rc-core 0x98ec244b ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xb37afe74 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/e4000 0x3c677052 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x7d7341af fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xbd6e4f30 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x1824a4d4 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x9ad7a0d8 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf1cc73f6 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc2580 0xffe10dbb fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xad0586b5 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x58915636 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xe88c903a mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xcea8af7c mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x847932b7 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x1a71541f mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x78dc1737 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0xc1c12e2c tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x91306892 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xbdc582d8 tua9001_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x48beb4fd xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xa6996bbd xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x4c24cd9c xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x65fa2eb6 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x74a4f779 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0x18cfd7fc dvb_usbv2_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0x384db917 usbv2_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1a3342ae dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2f84618a dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x72c77ad1 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x923ad11c dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa87ef30f dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe04a2bdb dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf55fdccb dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0d08b936 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1abc3f9d dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x39419fea dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6cae9ec2 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x923c7bed dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa60f60d0 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xae0a7b67 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xb7b9fb86 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x169c0104 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x225592a3 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4052f794 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x507fce62 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x63607c09 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7b5a5862 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93884468 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa63b9094 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdff44f1a dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf42aaf8d dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf92a9f2c dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x551c7039 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xca203e2f em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x06cffb0f gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x10e3873f gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1372c1f1 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x17f052c2 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8c0e917e gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xaa1a583e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xac5139b4 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd5d38c95 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3e2846fb tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x4cfd239d tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xe66b0ca5 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xd40053a5 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xffc7526f ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x755f806e v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x8a98ec8c v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x1c3c0353 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x545dcde7 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9d63a588 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x19df22d2 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5b8fd754 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5d804616 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xab22665c videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbe0baf0d videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd7b0bf0e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x147e9d9b vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0305b963 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1513f908 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b416f61 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ed230ce v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21864720 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34507bea v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x351ebd9e v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x354bcbd2 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e1de782 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x425c1a90 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42b1a3bb v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x437d329f v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4af87320 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x51bf800c v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54dbd11b v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x56124c09 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x59927a3e v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5db2938f v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5fc45ac7 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6067b0ed v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x614252d5 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x633db7fd v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63ae38b8 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e218102 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x742cd1ba v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x74f47721 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82846476 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88fe6e11 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c4fc379 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9176eda2 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94a338ac video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x97452a1a video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf8e34ab v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6196839 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc399cbd v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcf916c1 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe0c54ff v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1a03c69 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc4cac679 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7a1ab84 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda0e07b1 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda293aee v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde79f3a8 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeae8bb93 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec018d6d v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee656797 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6fb9ce4 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfdf0e401 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/memstick/core/memstick 0x39bd9f50 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x50caaecb memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x51cd019c memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x69f7134a memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7fdaa48e memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8f48f28c memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa6bcfb06 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb34dfc89 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb9f87c96 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xba0668e9 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc4b15abc memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf6330300 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x062a31a7 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x09b06c59 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0b532f9b mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26af4892 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x28d3dfab mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x44b36a78 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4774a906 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x478ae9a5 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d3985cb mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x51efca52 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x55294e30 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x558e7a11 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x561bc1f0 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5ab74ad4 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63cb9d5b mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x696703ac mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x741a668f mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x76efc51e mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82dafdee mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x87d12678 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8b051412 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8fca9f12 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x91f171d0 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab87bd7a mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb59278c2 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe581c641 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe71d5c9e mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf941fc9d mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfc7bfa9b mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0fb893fb mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x106b5b99 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x121409e7 mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x23342e48 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x258d72e1 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x32ba5510 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x36db9f07 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4f401051 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x50a8900e mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63496b55 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63763ec8 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65fe2336 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x887ea56f mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8d76068a mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4358a47 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaa610687 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xadbde4c5 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb8820dfd mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbb5362f9 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbdbdb30d mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc12075ad mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc2e1c2ad mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc6c2fa41 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcdf09784 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd8bb1434 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe8cb952f mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf495fcae mptscsih_info +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0097ced4 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0672f432 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x15a5baaf i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x19cb0269 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x23a3d33e i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3b25447d i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x46ce81d4 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x62267d98 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x752100b1 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x825bdde3 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8a22a0d4 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x93d0c1a5 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x95b0175f i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9c44d2c5 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa288720e i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa3186f95 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe8eed21f i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfa7b630c i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x4f33a2a7 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8be091dd pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x22834bdb mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x24df4cba mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x36aa7b02 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4f8d3682 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5e867a83 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7340a7c0 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x92436da7 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9925e627 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ccc85a3 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb05d1484 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb6cc1576 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcd755b9a mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd62f599f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x0ccdc013 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x3bbbac2c tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x5022ffcd 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 0x0e7d7d55 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6362668a ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xb08f6dcc 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 0xa1e9000b c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xddb9ae97 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x2afe5fed ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x34ff5e8d ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x06b27619 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x0ddd3845 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x3c6b966b tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x3f3626d3 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x4a96b41e tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x7db66e58 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x849529c6 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x956d219e tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xb5138625 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc6269c36 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe96f740e tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xf7678c87 tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xaebc9cd3 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x07ea65d1 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2b62f2c0 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x98710585 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x17838213 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x73d071bf unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa49c35e0 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xed585f94 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x93a306b8 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x8ffb6bff lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x78b5a2bf simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xa5c045fe mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xa9af7c1b mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x3837d9c2 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0x5d988c98 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x041cce47 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1d55adee nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x81294d50 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x88c4f081 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x97e32e2b nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaddc21f7 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc6cddbdc nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x271da034 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xa132223c nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xd7c0216c nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x9c4cecd1 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xefdf87cb 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 0x69448404 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x73c43562 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa5f0e87f onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd809a16b onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0386f8db arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2bb6bccf arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x30331bce arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3aa11db4 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x56c8cbe0 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7856367e arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8c52a132 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbd533049 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc656fbe2 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd9c74bb9 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x2a61fae1 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa233c69e com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf14fb5af com20020_netdev_ops +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0xd15d4d6f dpa_ptp_init +EXPORT_SYMBOL drivers/net/dpa/dpaa_1588 0xd5f53290 dpa_ptp_cleanup +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x08d950a9 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0a650166 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x13e9667c NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x39d9401c __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x62ec5636 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x70ac3b10 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x95b063d1 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xaa27c549 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdb2b032b ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf320df8c ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x7d5adac3 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x01294e3b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2d0481f9 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x316a882c t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4ce052bc cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5d798ec1 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64ad3ca0 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7309aaf4 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7accd3af cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc97982b1 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcf96d685 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdc7b85ce cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe62f28b8 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe98fa465 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xead87050 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfaf1d6fc t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfc2291d4 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2978c6e9 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x38b61326 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f78ea7d cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x439757d8 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a7b55bd cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cec7bef cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x74d07994 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x750b20ab cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84ce48e1 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x964e7df0 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x969f8f5b cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa53b7ba1 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa5e6017d cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc0f0641 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc637d25c cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xda5ee81d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde515cb1 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe43689e9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedf62d47 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef3c26fb cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef45c299 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf76e4d96 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfffa694e cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x094fb161 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x9494f33d be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x004b672e mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07263631 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x171cae60 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x232a1539 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d3bcac4 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56d31b6e mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60c01968 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x769bd747 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77d1e1dc mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95eacecd mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9af5d7ee mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0361126 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6f1a099 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa75e134e mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcf3412d mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9208b09 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0515033 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed84ae23 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeeddb38a mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf11b8b8a mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3c6490f mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x108bbf99 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdbf06194 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xde717075 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xeb5ff4cb hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xfe6a0677 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x099cb617 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x352d8dee irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x39676ca0 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5bd68921 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7c5f2553 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb1b6daed sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc2c2b1a4 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc7ea37ae sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc9f6bcaa irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xef09a2c8 sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/ppp/pppox 0x95cd3c5f pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xbe3ab3bf pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xded5d146 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x7e79d98f sungem_phy_probe +EXPORT_SYMBOL drivers/net/usb/usbnet 0x01673a1e usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xac2732cd usbnet_device_suggests_idle +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 0x2909f931 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x44f57ff2 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x483756e6 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5543f51b detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6a3072db unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x792cb0ff register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8bebcb05 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9d18b5a1 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa4ece6ec hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xaf8f676a hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd19fde4d attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xe8f662af i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x09f50492 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x81e5148d init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xc6a5a119 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x05579afc ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1778785a ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1cf23d76 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2d61c951 ath_hw_cycle_counters_update +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 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5dba8820 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x600b6663 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7de6aee2 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8bcbce3c ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8ca3f120 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe6e3820e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1a384458 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2bbe9ec3 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x30b1336a ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x94b176bc ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa75ba3b1 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa880dfdd ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb5109ceb ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbacc9ddc ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe9d3137b ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf12637f8 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x6080b5dd ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xc7b0b8c7 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xd719d0a5 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1a78e652 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x35688fc3 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x59275983 ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x882415f0 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_common 0xf7ab64e0 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00e32d84 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03d677fc ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06ec7a0d ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x077a5149 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0823d6a7 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08cd71d5 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b3c76ff ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x110dc9de ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18909306 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b0e7f80 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2058dafc ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2112c63a ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x227cb80d ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2335db00 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23fc23c8 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24c3001d ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28d9a1e1 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28edf8ff ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29b757f0 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e07547c ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e5193c3 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31369d83 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31811878 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x323cedf5 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32e8c01b ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33d6de77 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x354b5adf ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39041844 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f2d9c86 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40017ce9 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4041ceaf ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4475b71e ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46d99045 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ca44779 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e3f3d49 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x503577ec ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x503f8763 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5179c5f2 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x528c9ac6 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x575a42b7 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58078e99 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a508551 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5dc30546 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e77e6f2 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ecc09fa ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x638e77aa ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64399658 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66401d15 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66421452 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67b09a0c ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67b6fb80 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b861ed4 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b934f26 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c36c917 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c5e947e ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d73cfef ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x778523a4 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7806f3bf ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x797355a7 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ca2e730 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x817d6fd4 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87105351 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e7e7910 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f7a680c ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95bf4a5a ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x970c1425 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97e2dfd3 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98575204 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98650565 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98b504b3 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa042cbdd ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1bbbcba ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa23463af ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8b2f033 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac53e609 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1e7da96 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1e7dd06 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc2b44ba ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbcf28ab5 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfa97475 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc183e140 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc52717cb ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5341930 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6c4f278 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9492ced ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf603969 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd07c5f09 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3a0b1ce ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9792f23 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe13eb3c8 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9c31654 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xebd69450 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeeb9fe22 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3723f8f ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3ae700d ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf74c259c ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7f31f6e ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/atmel 0x64c9e310 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x9f0e8a29 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf989e31d init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x37b7d161 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x71dca8f3 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x298db781 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7616f520 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa57e2b2e brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa7581bd7 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xadcd8c2e brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xae2f02aa brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb9002268 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbe51a386 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc104927a brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc404fb5f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe1573091 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe480c99f brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0c5afcf3 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2318339e hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x23943d43 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x304bc75d hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x332c2899 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x39a95c84 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x39fa8f14 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4355c161 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x46221f2f hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5d070b85 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d75f314 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7e811220 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7f9f3dbc hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7fc2aecc hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9a16cd6a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa1a4dc6d hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb35de61d hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb7e00fb6 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc4d0297f hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc57f559d hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcf2bf89e hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd6b02a6d hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9c5a04c hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xec8fee7c hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4676237 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x01fd4b28 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1d483691 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ddc4e8e libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x39f089a8 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3a993b24 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x546466cb libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5f7c068c libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60d48536 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x77564864 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8186cd4a libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b7cf5dd libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9b88af21 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9d430beb libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9fa8ba98 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaa63b040 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb3e0312a libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb5b41638 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb8592bd1 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcaf97caf libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe4334c76 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf5ef150d libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00b0cfc8 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x015bf2a0 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x045b0ef6 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07899291 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1247ea0b il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15c305b4 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16c8212a il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ae7ffb6 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cc0b33b il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cd65807 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2001664a il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27931bb8 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27cbd068 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3517cfcb il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3890e03e il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e4e4172 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f7dae65 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4447bb77 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x46e0354f il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4831a791 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x485c632b il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b69f765 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x620395bf il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6265920c il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62f41b76 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63ba2256 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x642ad447 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67e8b86a il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b197466 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x74a7544c il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77b1ef3e _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x784aac78 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a46c6f3 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c128d05 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80e67938 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8443017d il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86b67168 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a70aaa7 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8db7da92 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ddbca88 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e36fb09 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94e54c5a il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x965d4a20 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x97ddcb35 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a82bcda il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aee9b6c il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1645a99 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa170c7b6 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa19e86a8 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1baea2d il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa25c595f il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa29bbefe il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3d37646 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3e45219 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa40e54b0 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa63e0bfe il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9215e50 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9e0486e il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9fd7e1b il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab957ad1 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab9fbc50 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafa6f1e1 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb06e22a6 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0bde35a il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb32635f1 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb41392bd il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5363a54 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb781e5cf il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0c98540 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc10ede86 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2196468 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc33a3101 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc50cc313 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7225823 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc765d0c0 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc78da913 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8caa3b9 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd078ad5 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd804f23 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce7afd6a il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7318fd0 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7c4ff9a il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd190b44 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0030042 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe05914e3 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3bc4e40 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7e5a47f il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8a682a5 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea0115a9 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea2a0142 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb3b3b58 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee9a03a9 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf003b64d il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf04c5d36 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd4d3550 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfedd92f8 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0783edec orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0cd6aafe orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x23e04849 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x270148c9 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x38d86d5b __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3d6d2915 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4759bda0 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4b4a887d orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7e26d977 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x82fc16df orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x844b5696 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa1dc7f76 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa7b31b29 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbedbd298 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe1e49163 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xefe7a5ee free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0d0c1dbb rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x15f8da51 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1863723a _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1cc48ca6 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2217fc47 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2527b2ea rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x392cbd3a rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4d9032fc rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x53c612f0 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x644e7d2d _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x665f4d4d rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6f71bbaf rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71f3e77f rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x740994bf rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x761fe37d rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x786c0522 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c58ef56 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7fbe4aec rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86e13892 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x87e995d3 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9785a4fd _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99e06e56 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a23f93c rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa25631e0 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4e3da01 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4edaa6a rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb440a9f7 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbd5b2597 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc4329d9a rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc669a9b1 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcf06268a _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb6b55db rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdcaf6b50 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe99b79b8 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe9bd7d4e rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xec3a9ae2 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf0a76d8c rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf16af6bd rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf68740e2 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf7ce6ca5 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf9770f07 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfb046cc6 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x038c1e02 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x05ad9c27 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x246fa451 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4ba2a680 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4fdb4f9c rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x550a501a rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5a221dc8 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5d098c90 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x631ff6f8 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6535ca46 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6f391646 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7612e370 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8484a57f rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa35862da rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa36ed630 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa9784530 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc3318b1f rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcb881fb7 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xce3f382f rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe28eeb35 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe723cd7b efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe95f8bcf rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf4f3aa82 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf658a651 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf885cbe5 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfee87094 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x395c23db wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7b3eb9ee wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xdc53dac4 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xee7a920c wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x08b2a650 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x13226fc1 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x1dc7b6a7 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x29c7a2f7 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x30b159af parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x32eb29e2 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x3c4cebfe parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x439a059e parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4f3ecad4 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x5419f45c parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x5421efa7 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6ed4d818 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x6f90b472 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x750d96dc parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x7810ce15 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x806ff227 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x88abbfe5 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x9536aa60 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x9c926945 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xa0672b0f parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa0a1bd85 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xa1a6b404 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xb77c592f parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xbb24fbfd parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xc77bc465 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xcea9c59b parport_write +EXPORT_SYMBOL drivers/parport/parport 0xdf922bf0 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe1cc1026 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xec1e5fc7 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xf7203cfe parport_remove_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x46b1c01d parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x6ee2f4c7 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x09e8c1cb pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0e9a348d pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x17d6f666 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x268e69d1 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x31803dd3 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4646a0ad pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x61a3007b pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x67349deb pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6aaddd89 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7cf30d5e pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x92190d03 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xafa9f40d pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbed24d63 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc4982ed8 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc941390d pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xce15430b pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe309663b pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe63847de pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xec2d9336 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0f9a7556 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x131d175f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1f9ee9a1 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3c6d28b9 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x842844a1 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa2d72b9a pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa891ecda pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xad3e986a pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdd45e585 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xec5c267a pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x61424599 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd395ef5e pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x3d9d0a63 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x638f3355 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x808992b3 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x9b7bb53f pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x00ad7ddd ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x2d4305d2 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x9a94d69f ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xcee86f99 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x01e1ebcf pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x0dd48f19 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x5101ac36 pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x749744b8 pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x7afc5672 pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x7ed209f7 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x99b01548 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xc656324d pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xe3c0383d pch_ch_event_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x26feefda rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x493dfe71 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5d8abb87 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x91b221a1 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9243b387 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9b50ce17 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xba0f4eff rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xddf4eb2b rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xde33d27c rproc_put +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xccee976b bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0eefea26 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x293e7444 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x35785812 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x42a861de fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x79376b17 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x85ea6924 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8e632ccf fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xab9d7bba fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcae6af48 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf636cef2 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf96a789e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0388536f fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0636bd20 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c7136a6 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x221f7079 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22c4fdcc fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2556847c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c5a0605 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d1f51b7 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3003560a fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3136a9a1 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39a8ce3c fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4611547b fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46f0acac fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a817c91 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c5e834d fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c967b46 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x518518c7 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5896e0ca fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c4a1381 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x712c241c fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x73ad1f14 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7beddfb5 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ecfc8c4 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84fde623 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bab4b71 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dc28962 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x93990ab1 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97b2706b fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x98be4d64 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e032139 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0439f0b fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb35e025d fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb70ab4fc fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbafd7be3 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd7c8a18 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdd86508 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe967a9d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc1b378e5 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4d1e8f2 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc63366b0 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce0cf331 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1aa8b8b fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6afefcc fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7c168cb fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd92c7c02 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd93f80df fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe81f7b3b fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee384f8a fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf598e6e7 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf64db691 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0b0ad004 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0c5bd55e sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x280204c3 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x947c84eb sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xe4d624cd mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06e79677 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0bbaac9a osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0dc1bf9e osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f779e1f osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17f1815a osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1993169b osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c509377 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2ba25736 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x34520c39 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x36944a3c osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x391f1087 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f2c9a20 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51babd5f osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x53da7572 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x76f9b7be osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x80daceda osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x82b4643c osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85ae3049 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x88de4a22 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8c575986 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ed7409a osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c13ac04 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa0dccd15 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaa105232 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbdda7b80 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe1edd29 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xca38b540 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdb913ac1 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdcc4c7b5 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe0478428 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe6679cca osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xecf43fe8 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0bb7bad osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf8ca7421 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff9e4b41 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff9fa779 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3af8ad33 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x705ff96e osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa0c5ceff osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb4bd1c68 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb90d7c77 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xfd1face9 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x02bdb284 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x036f7a35 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x23f042a1 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2cb11292 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5244d49d qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x721af5be qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8184a095 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc126e8b6 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc9df0bd2 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xee942d8e qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xefeeba6a qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3b7c16bd qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5681ef82 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x63e7b9a3 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x895491c9 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xbd906c00 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xd31b9c41 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x12d9bc66 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x31d5d936 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x78bf7d44 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0cc4740d fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x13d35653 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x19b92484 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1bca88f0 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2552fdcf fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x275ec1c7 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x36f74f1a fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d35eb97 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x61021edd scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6d6db7d2 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdbd60243 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xecd31ffc fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfb879229 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0bb07bcb sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0fb374e6 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x117b90bd sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1d256ee7 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1e9f66c0 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x20e9d0c2 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x379a99a8 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b4dbd9f sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4418958a sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x444cb56c sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x47f588ec sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f11613e sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4fbb1986 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x503c70d9 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6854a47c sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x68aaf6cb scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6ab33ea8 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6e838d05 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x71a6c612 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81dc0fbd sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8df33b03 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95ecf4fc sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xabc62feb sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc318c8a8 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc478107f sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcaabfbd2 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe0cf0dd4 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe71c1d78 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x152896a2 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2d1ce41b spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x837f94cd spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa678d6e1 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe2276498 spi_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x060e39bf ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x089db6fe ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x172a1d4f ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x19650960 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x22789b5d ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4e41bfd7 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x67a18a8c ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x799df9bc ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x96db4886 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x9c74b9fc ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb7b804bb ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xb94dd981 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xbcf1b55c ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc109c2fa ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xc64a3b8a ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc72c82fc ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd987d381 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xf13d7fe1 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf196c99f ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xf80ff010 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xff3e0311 ssb_commit_settings +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xddb4d3c4 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xf6980bb0 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x1202538c adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xb39486a4 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x400cc4ec ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xf482fcbc ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xcfc49194 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xe2ff7858 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xec769623 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x15e5cd7d go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x66bae39e go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9abb277e go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xaf8a8b23 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xca29a164 go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcde2911c go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcfb0dbd4 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd30afa4b go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf2e9586f go7007_snd_remove +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c24996d rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c350f31 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0eed3616 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x105323c1 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x10dcba6e rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1211fb15 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x232b64d7 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25220b5c rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2570f3cb rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x263089fc rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3181c410 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x34148b99 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x39ba45b0 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x436e67d1 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x448f43ee RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d74d28e rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51481f7b rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d4be800 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x77f2c84c rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x780bd1ac rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7aedc549 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8cb37078 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d5c5599 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x917c1d79 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x94e3b857 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97ddc4fc rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa3939fdf rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad4461c4 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8542dc9 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbcd74907 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc95d91b8 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9c4fec2 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb31aee0 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcdbe89e8 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcdc2b230 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5e28f14 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd683a6b9 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd96af6c0 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdde06611 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde9d52c2 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe37143ae rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4a40ae7 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7925bfe rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe79afac3 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4e445e2 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7a53c86 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf99f4877 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe3488a1 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe46c438 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfeb98935 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0df7c04a ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f0f81c0 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a6ebf96 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b5a0bc7 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2712b1d0 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30046440 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30484432 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x312e67f3 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32b36566 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x33847a8f ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c8c82d7 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cf6141c DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3eb44987 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x40b33f7a ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x42a6c6a7 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4423df64 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x491d55a5 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x51de8832 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5722ef4c ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x59ba0cc0 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ab59b2e ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60ca88af ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61b6b364 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x675ea4e4 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6907c19d ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x720f0512 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x737c2dd5 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76238f67 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a8f2393 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x863e8796 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9cfde7f5 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2e94085 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa33c9b89 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6c64dc5 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac115c85 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac31bb66 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad10748f ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad94b61f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaed57ca9 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1dc38e6 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3d26a65 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb755dfb3 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7936d0a ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7ea5891 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7fc3b38 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbd5e1477 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc5a71dad ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcdf1e88a ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3713c06 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4e778c0 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe41b2d93 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xebe020ff ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0097c32 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff36e3e7 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/target/target_core_mod 0x01cca108 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02f075cb core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0336fdf3 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0455321f transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b22f1f9 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b50c66a fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f2afbbe transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f828682 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f9f6307 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x10f8d363 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x14a370d5 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x1627b68d spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x1680fb16 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f7fa640 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x21b24fed target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x24f4bf38 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a3ee169 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b680a8e core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x342edf50 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x34b9ccd5 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x40dba361 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x414ecaa4 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x445f0267 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x4496fc67 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a95f444 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b2d6651 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x51b23381 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5724c164 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x58525186 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b61c53f spc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e361ff1 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x631e1a3e core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x683921b8 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d01949a target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d3bd9a4 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6deab9e4 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e6216e3 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x7be8011c transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x815af25c transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8672f91e core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x898f3b24 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f480ec2 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x9268e111 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x9bd3e723 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xa910f02d fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa36dd7e transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xaeeba072 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb92075d2 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb9cd9986 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc44d3091 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xc655c8c4 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8ce6468 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9da2691 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb487607 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xdd909cd6 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xdda74b43 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xe45ec044 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xeabb6fcd core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb2e82c4 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb6c3ed7 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb80489c iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf442f867 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe423625 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xd3c947c8 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x07eb4ba6 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 0x005af79a usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x10de2385 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3fc6d929 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x42bb0d00 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5bda4260 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6a8f9026 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x758597d1 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x99fe1b2e usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xba0df37f usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbc2ce39e usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc386e1f2 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc7894d38 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xceaac98f usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1a26d40b usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1f760b1e usb_serial_resume +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x20a92e95 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd1a18d53 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x284e6a1e 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 0x726e5a55 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xca58673e matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xfd4b0f02 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x38a52007 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x849f4fdc matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xa88a5630 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xf764242f DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x98327ccc matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0xae55e0dd matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x04e3e322 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x11c0ef76 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xc03583c9 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xc0d01c6b matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xab540e04 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xe9f3cb0a matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x53ca5e0f matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x830ee9e4 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xbb95919e matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xca1cab0f matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xeda64528 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x12c1787c mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0xd1fe31bd video_output_register +EXPORT_SYMBOL drivers/video/output 0xf16098f6 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x481aaa80 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x53053533 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x5ce2fb55 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x84745a58 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x8b17c5cf svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xaf695663 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xfb3f639e svga_tilefill +EXPORT_SYMBOL drivers/video/syscopyarea 0x66e6f5a2 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xf0822a7b sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x2410dd1c sys_imageblit +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x2b6dc543 fsl_hv_failover_register +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x520919c3 fsl_hv_failover_unregister +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 0x1614b08b vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x2043f3e3 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x28a8ea45 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x2beeaa2d vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x2d46a6e5 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x5c534d93 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x5c57f70f vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x75f40578 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x7a031901 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x88444c3a vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x93809672 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9da090e4 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x9ed7bcb0 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xa0721175 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xc67cdfcc vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xce6a117e vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xde7cbc00 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfee5e9fc vme_slave_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x44b64a1e w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x661547ce w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6bdc8f81 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9f855127 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6297e17e w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfb32b69b w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x081bedef w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xd07d4475 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x469c1bcb w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x48e3e6be w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xe7f0c0cd w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xef9fec4d w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x02897198 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x09dceb4d ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x09fa4bcc ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x34b9e4c4 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0x35490e9d ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xe4423912 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xedf03da5 ulist_reinit +EXPORT_SYMBOL fs/configfs/configfs 0x1727fad3 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x2d5c722f config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x34d996a5 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x36947b66 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x7f01ef8c configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x8894ca99 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xcf16e023 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xd541ee5c config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xd7400675 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xd8e30daf config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xd97f785f config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xf675f29e config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x1c2d56d1 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x20e7c8c4 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x22ad414a ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x887fa295 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x91980a27 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x94611ee4 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa88a552e ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xb52b51d3 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xe57d7031 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xea4c04d7 ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x05cad1cf fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x1a9188c1 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x1ee6a9c2 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x2271646a __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x246fde24 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x291a8a65 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2efd4890 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x3180bfac fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x59675309 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x5a285f1a __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x6824d680 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x69b67c17 __fscache_uncache_page +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 0x782de4b9 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x908ceecc fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x91eb145a __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9cad3a34 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xaafc78e7 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xab54bdf9 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xc14a6bfe __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xc68f5484 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xcbf638d7 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcdd0774c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xcf3a729d __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd6d45c3e __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xeb5bdbf0 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf464d75b __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xfaabfe89 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfe15153e fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xfeae4e29 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xff2beaf1 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/nfsd/nfsd 0x13d93eda nfs4_acl_posix_to_nfsv4 +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 0x83585203 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x09c86393 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x2a03d78c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x6925f899 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x94a13ed6 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xed28a46b qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0xa7587646 crc7 +EXPORT_SYMBOL lib/crc7 0xd80c3603 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0409300d lc_reset +EXPORT_SYMBOL lib/lru_cache 0x04c619c1 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x10fa0ccd lc_put +EXPORT_SYMBOL lib/lru_cache 0x27dbd620 lc_create +EXPORT_SYMBOL lib/lru_cache 0x3fdf7d77 lc_set +EXPORT_SYMBOL lib/lru_cache 0x68047920 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x6f221457 lc_del +EXPORT_SYMBOL lib/lru_cache 0x74e4c231 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x767f0e6a lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x8d71f96e lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x94c91b07 lc_get +EXPORT_SYMBOL lib/lru_cache 0xe0624e62 lc_find +EXPORT_SYMBOL lib/lru_cache 0xefef877d lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xf472e209 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xfa28e808 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xffa59875 lc_try_get +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 0x280edcf1 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x6c7c66f7 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x03d1bda6 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x6108d5c5 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x566725b9 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xba315302 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x03a55d03 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0d7027e1 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x0fcc820a p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x18c35942 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x2a85cc17 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x33a686b7 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3b5b4aa4 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3dfb70e1 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x4d017ba9 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4d5b4342 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x50a421d4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x554564a4 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x574f5ff8 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x616fd8ad v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x631769ad p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x6640f4aa p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x6895313c p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x69f72c82 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x81bd8613 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x8c8cd176 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x90ca6d78 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x90e89b01 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x940a23be p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x992c9c68 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x9a96b997 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x9f9d386d p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xb6845032 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xb77fcce8 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xbbf48b3d p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbd07d101 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc24aaa70 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc5f5a5f7 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xca982007 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xccf5d4a4 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xd2bc92f0 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xdcff01e5 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xdf885f8f p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xe44f0cdc p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe93e7b8b v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xebabccfb 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 0xfc1a1a70 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xff786a43 p9_is_proto_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x386d637a alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x6d514d01 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xe7e034ab aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xfc9ca6c7 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x1a261976 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x220cdf05 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x29e33695 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x47b6ab56 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x663f26a0 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x9e756d98 atm_charge +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa9f6b115 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xba35dfc5 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xc94c6fdc atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcb6b864d vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xf0ac4f19 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xf260ff55 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf992c864 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf9fcb39c vcc_process_recv_queue +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x0a952a09 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x13e0d5e8 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x16b95add ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x23c58044 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2d79257b ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x38d0b28d ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9e1cd310 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xbd67e6d5 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc43eadac ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf36fe1e5 ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x10a44b78 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1638a71e bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c942f2d hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x22d51f7f hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x289a0c55 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d2385f8 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f9a70de bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x345b3ef8 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3845a308 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a31db21 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48e7d684 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4a74ae6d hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4b07c594 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c01aa23 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50fcb3f3 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x61b6538f hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73c2eec5 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74fb280c hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x766742d9 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x78573f78 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b4183c0 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x83bb347d bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8bfa66e2 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8cf92542 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99fc5a0c hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf5948d8 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb40ae8a3 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc00f6172 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc074f7e1 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd30744ca bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd58a0b28 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bridge/bridge 0xae251895 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x27e7f8e7 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x4b1ee876 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xfe9921b8 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1346ec31 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x16e04608 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 0x45744a4c caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb27b6aa8 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe6292e5f cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x2d127d0d can_proto_register +EXPORT_SYMBOL net/can/can 0x2f0b16fc can_proto_unregister +EXPORT_SYMBOL net/can/can 0x78b716a6 can_rx_register +EXPORT_SYMBOL net/can/can 0x8bb945f0 can_send +EXPORT_SYMBOL net/can/can 0x9e84c22b can_ioctl +EXPORT_SYMBOL net/can/can 0xcc7add7b can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x04013c1e ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x056b2081 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x06ce08c5 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bd5dcf4 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x0dd2a208 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x0e96426e ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x11136aab ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x146c8f7f ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x15b8a617 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1d56c08e ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x2fc85c7f ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3d764b9b ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x412344c1 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x428e5295 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x4d38b98d ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4dac3b83 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x4e2d3b48 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x50c29f3b ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x548cef48 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x57749c54 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59f28f27 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6520ad78 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x672771ca ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x6af07597 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x6fcac2ce ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7bb2728d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7d63b692 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x7e58c520 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7f754177 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x8155ee87 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x840a102e ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x87b33327 ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0x8a8b45a4 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8d597449 ceph_put_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 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa5d8ea2b ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0xaa7fd787 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xada1f8c2 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xae6793b9 ceph_osdc_stop +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 0xb685fc15 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xbb7818a4 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc2f95ac1 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc7b097ce __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcaa9c94e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xcb3311fa ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb9e6e75 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xcbce5537 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xd1ffbd39 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5e73b75 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xdbe72795 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdf45921c ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe1bdab85 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf37228bd ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xf7a5e15a ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf7e8833d ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf81f91d1 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0xf99b22e8 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xfc924a5e ceph_client_id +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xcc7f74c1 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x114278c2 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x36d90191 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x370f039e ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3b64493d ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x84ef5eed wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8da1a857 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8ef0f64a wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa356e27f wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbdc52ccc wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc37e0c72 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcb36f7b8 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xea8106e3 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xed096187 wpan_phy_alloc +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6198aae9 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x90484e31 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xda8a5def arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x29d05326 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x37c8be92 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x93bb5477 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x4f46906c xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x705eb556 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3876d0b8 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xca406e40 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3f0cafb6 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x46008769 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xcef6dc3e ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x7019a2b8 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xdf0f1d30 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x0bcd4527 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x5741d85a xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x08234991 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x125445aa ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8436ed79 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x87698f80 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x980a7b69 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb157fbb5 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdb83ba3f ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xec45beab ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x061394e4 iriap_close +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x143be387 proc_irda +EXPORT_SYMBOL net/irda/irda 0x1508acce async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2067d30d irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x292b2c91 irlap_open +EXPORT_SYMBOL net/irda/irda 0x3b23ca6f irlap_close +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x454598f0 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x5322141a irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x55859f44 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x584ab6ac irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6178496e async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x6810bede irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x702f9d17 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70bfca6d irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x7127b7d6 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x71762983 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 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x98dbc467 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9b61a551 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb109b1bf irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc518991a irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd88a763a irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdf506486 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xe176b9c4 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xe6844619 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf418ec77 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf7bf51aa iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0x2d318780 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x2941e643 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x545d0a32 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x7f122786 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x8865d369 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x977f059a lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xa5754331 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xb373453a lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xfb69cb1b lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3f74e8aa llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x866e4ad8 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x96fa1efc llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xb93723fc llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xce069c1d llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xdc06115b llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xf9ebcee5 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x003f8e76 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x01b222e5 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x02769956 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x174628eb ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x1dca2dce ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x20c69fc8 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x22f320cc ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x29213d0e ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x2f50bc4f ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x322fab31 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x342464da ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3686d6f8 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3e821f7d ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x42854669 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x445fb09b ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x45a46abc ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x47c4d50f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x484f8b81 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4a9a69ba __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4fc9e245 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x56faa100 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5f7dfe18 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x5f845dc3 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x60e8d67e ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x65326d70 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x658b4647 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x70bb079f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x72380e85 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x7344e354 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7906567f ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x79b57ead ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x7f6f3e52 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x85406650 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x864b6f1e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x876b27bc ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8c640621 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x909da5ef ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x90e4b35b ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x9a26abea ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9d40cc2e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa6585377 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa66ef52c ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e9aebb ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xae1c59d7 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xb9210482 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xbededf40 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xc163a06b ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xc44da900 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc7a9a3ce wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7ccbb8d ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xd19f5c60 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd68e9680 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xd70e1763 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xda724a53 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xdcfe0ebf ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfcdd9ee ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xe62e5b13 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xef0af0be ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf46fdc70 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf54dac41 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xf5ff30bb ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf66af6a8 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf7ce8634 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfb5e80d6 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xfb984075 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac802154/mac802154 0x309f1768 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x663bdca8 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xc4eee5fc ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0xf96829e9 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xfb34d897 ieee802154_unregister_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x13c00278 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x21c6a601 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x260dea55 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2aab88f4 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3762393b ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x395762e6 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x48f34883 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6f991d93 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x79c688ae register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x97f26437 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9a5c5147 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb127fde5 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbba64efc ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe2807af0 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x3c23a486 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf073d6cb __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf18da574 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x599d4dbc nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x1bd52858 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x200ac7a4 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x40d51b78 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x64f91006 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xe6a39872 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe902d92d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x22631b79 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x2fe04019 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3f501b92 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x400a78c5 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xa449c60b xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd2694a99 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xe0f090ec xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xe50b3f4a xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xed60822a xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xf387c0f3 xt_register_match +EXPORT_SYMBOL net/nfc/hci/hci 0x0b80ce6e nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x15287a5e nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x19101e9f nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x2fb05138 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4e4254be nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x75b8b8e5 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x86117a51 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8e558407 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x97adf752 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xa4d0e7b3 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xafc6dc0f nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xb458f484 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc7034a20 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xc9481a9b nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xcd39f4b7 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xcef14464 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xe1f28654 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xeb569162 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x0165ee96 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x777c4743 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa0de1506 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xa32925cb nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa5ad5df7 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x00733822 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x0fac1c9d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x1d9f0f84 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x2ec60aa2 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x308e6923 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x388c2ca5 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x44455646 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x62518912 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x6d9f8bbd nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x94a84f93 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x9bb0ae67 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xadc0e1ac nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc2585093 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xcb6a7e8f nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xe604aa3e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xe91b2b90 nfc_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x27355c80 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x5a9a6d53 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x6c72a0e9 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x78ec8577 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x89a8fea8 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x947a3ac2 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xc735920d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe36dc5f1 pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x026f5317 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x04a29cdc rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1837d503 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x335d7aa2 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x387eaf6f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x52db59a5 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x58c1dd2b rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x655caa81 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7a8cd01e key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x97ae26e4 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x98f24166 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbd461822 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd9550e17 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe43eb1dc rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4532a66 rxrpc_get_null_key +EXPORT_SYMBOL net/sctp/sctp 0xf756fa53 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x8ec4a58b svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x16a55c06 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x452daaf6 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xdfef83cf wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x039facb8 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x06873958 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x07306cc8 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a15a868 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x0e87d689 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x16585f85 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a33191d cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1c5e0fb1 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x251d62c5 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x285e48f9 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x2c2031da wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x2f061ab8 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x33e0ed5d __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x3a32b919 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x3bdc1a9b cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x3c2217de cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3e28350a cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x43f79751 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x456ac22b cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x4c29b2d1 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x590268cb ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x59612b34 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x5cc88516 cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x63934eae cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x67ccdb60 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x69ac8fa3 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x764ca2f0 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x776a58a8 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x7a03e389 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x7a3a4d20 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x7ea06e6e 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 0x81404b48 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x82befc54 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x89c8b7e9 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x8f4b9749 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x8f780ecf ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x9065cb40 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x92effb99 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x96f9e307 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x97c38768 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x97f9717c cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99c6733d wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x9c35bbc1 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x9da5b210 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa6238a3a cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xa964cede cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa9b63538 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xae730022 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb4f359a4 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb5121d6d cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xb5e10383 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xb8345871 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0xc034c760 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc4d4092d cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc65baa81 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc7792202 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xccb72704 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcde711b3 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd08f653d cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xd4ae6424 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xd9569d7c cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xdb9e1072 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe478ae23 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb870bce cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0xef2bc17e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf08ab279 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xf1314198 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xf1beeee8 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xf615d14a cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xf7779a76 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xf9888a48 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xfa7d87f9 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfb883c8a cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x3c9aa277 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x9e2fc05a lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xd2aadedb lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xd42136fb lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf1bd34a8 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xfddbb065 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xf6c587c6 ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x13a88f90 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 0x498d787a snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x52499441 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd0260e32 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 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 0xbd4a8b02 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xe706c1b1 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xe6b3507b snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x032a6674 snd_cards +EXPORT_SYMBOL sound/core/snd 0x050d13c9 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x0d8314cc snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x14262ee4 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x18379ae4 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1976f2db _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x1b608395 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x1c7f1161 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x1e593f3a snd_card_disconnect +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 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x5199d2e8 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x595f9a99 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x665a7230 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x667c8555 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x6aef22b9 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x71f0b19f snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x7368fd70 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x7e10f6a5 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x824aa934 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x8341ffa8 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x83feda5d snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x84790f0b snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x88500437 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x8a0f3ae4 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x8aa18b67 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x8c62581e snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9acad60d snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x9b88ba74 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa4a48098 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xb1277bdc snd_device_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb40e17cb snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xc1532959 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xcc249dd4 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xcc694422 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcf013331 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xe086a07b snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xe5329024 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xe571c81d snd_card_register +EXPORT_SYMBOL sound/core/snd 0xe59ada3c snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xed72c21b snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xf204d8fe snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xf2bc35db snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xf9a3b47a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xfc24bd1e snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xfda73b10 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xfdf3e4a9 snd_seq_root +EXPORT_SYMBOL sound/core/snd-hwdep 0xa55c061c snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x57d1a598 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x6594303e snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x6a4ffad2 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xd702af96 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xe23d8408 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x03b83528 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0962447d snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x12787ff3 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x176037a6 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x21108961 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2ab6e008 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x2dd582f6 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x333f7153 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 0x3bf89565 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x3d1cd82c snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x43951b5c snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x4c9fc610 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4e1c10b6 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x4f266f72 snd_pcm_hw_rule_noresample +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 0x5f39a680 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x64643b31 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x65349689 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x656513ea snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x664ee0b1 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6a9c1ccb snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7219aa2a snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x7b0c61a9 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x7c7dfdf2 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x8ef03bd8 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x97fde92b snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x9d350310 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa03b0724 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xa413eef6 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa9e8b05c snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xb1d20585 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xb5e08f85 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xb78031bb snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbac4e5c0 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xbf53e201 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xcdb48403 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd832575f snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xd8bb5de5 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xe201e593 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe96f9a82 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xf0021646 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xfbbf3acc snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xfd85b8b7 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2901efcb snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2cdb77ea snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x348864c3 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x656c4da2 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x84c1d6ac snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x94140e37 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9f4da01f snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xac37e352 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaf733ea5 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb9a849f3 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc7525702 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc9130825 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd8d66166 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd9893ce6 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf1b7b2de snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf90a910d snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfd46039d snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-timer 0x1c6a9ca7 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x279bdfc0 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x333bc8d3 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x37750310 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x4795a22e snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x60e7f134 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x73d52658 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xa65c1fc7 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xaa9bbecd snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xafdb695d snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xb5feae87 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xb9a68381 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xcc042e8a snd_timer_stop +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x9bee03f6 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 0x19515220 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x402b9491 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x45bf087c snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6b8457a1 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xaedc7f14 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcd84487f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe15cfcab snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe1dd88c7 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf582ecc6 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x035ce92c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3f586c0b snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x500c6924 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x55986ddc snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x782f3b03 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x93c83ecb snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9a206a14 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe2050013 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xee0000e8 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0cce6647 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x17acfc09 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18dfa0e2 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d4341ae cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x203beebb fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32a0fe14 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x362b69ad cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4988fa39 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x529e85b9 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6915c13a iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x71966889 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7d9f9b61 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8c31ba8e amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa104c815 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa1977ee1 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb2e6a376 amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb8f11752 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc810b477 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca874eb1 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcba9585e cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xce8b726d amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd21fe8fe amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xde5d2169 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe45f0998 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf9949ca6 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfdd62874 cmp_connection_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x162f1e40 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x26484c20 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2c4a47ef snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x509ffcab snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8def9a48 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd54dd495 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x161c4b5c snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x3d9a0fad snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7d2b31d9 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x96d486e4 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9db9f11d snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf6d23cb7 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x77830431 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc029c0b8 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xda7c05ea snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xefa8b3f0 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x154e9f8f snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x9ab91ca5 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x3b80e836 snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x94c3c3e9 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xbe68006f snd_tea575x_set_freq +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x257f60a4 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x39fba734 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x97d04a7d snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdb46a4f3 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xed776f68 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x15fd61e0 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x71d15af9 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8cd2deb6 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9c26fc9e snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9e2def75 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd79957d3 snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x58856046 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x72501b96 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7649cab9 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7e740333 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa458bdeb snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa85fc319 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd3b8a5d0 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd45f52d8 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe4186889 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf3cb0e9f snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x1b64a5cf snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x465e1e70 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x99d17175 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x072b8850 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x231e637e snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3431ea3f snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3e9c3dc2 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5e6b1974 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x680724b6 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7363885e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa6688eea snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb2e89571 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb483a585 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb933af93 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc7385537 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdd8127a7 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe6a9fb4c snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf025e30a snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf06a44d4 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf8b70175 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x23ad2c77 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x470fc8aa snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4c2b625c snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4e6848d2 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x568297f3 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x806392f8 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9d22ddcc snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa13f0287 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa32885f2 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0x6e55b28d snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4f40dc82 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcafafb11 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe59e61a7 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x036602f1 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0d1e0430 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0de5be2f oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x366e1602 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x41480316 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5e8ae13b oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x62e008e4 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x79e5e123 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x87619e52 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8acc5ea0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9c83f80b oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f5fd9f8 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbcf4840d oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc1166eb1 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd437ade2 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe4773ed1 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeb1d2734 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeca33a19 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf3dc583a oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfa53e439 oxygen_read32 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x13257c75 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1eb98921 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x22e8c2fe snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x49fdeb3a snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x776c13e8 snd_trident_stop_voice +EXPORT_SYMBOL sound/soc/fsl/snd-soc-fsl-utils 0x141f875d fsl_asoc_get_dma_channel +EXPORT_SYMBOL sound/soundcore 0x329a8c17 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3b137683 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x64b6a31f 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 0x7a99513d snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdfb28033 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe38fe08a snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf5faa18e snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x09b1a320 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7b316702 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9eebb3dd snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb19892d2 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xba851596 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbd8af729 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xedb335d2 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf355b8c2 __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x7d51fffc snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x001c0a79 security_path_chmod +EXPORT_SYMBOL vmlinux 0x002203ff qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0x0028d3d7 backlight_force_update +EXPORT_SYMBOL vmlinux 0x004e315b blk_get_request +EXPORT_SYMBOL vmlinux 0x00518b10 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x006b44e8 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x007f480a tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00848322 kern_unmount +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x00b28091 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x00bb9219 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x00de3fb8 md_error +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00e977a3 fb_set_var +EXPORT_SYMBOL vmlinux 0x00fc690c sk_common_release +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01081ba5 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011c2da7 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x011cbf31 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x012475ed journal_init_inode +EXPORT_SYMBOL vmlinux 0x01293630 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x01614d48 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x01785b2a input_free_device +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x0192aaa6 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x019ea830 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x01a03869 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x01c00645 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x01cc652e i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x0201bfef agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x021578f0 dev_uc_add +EXPORT_SYMBOL vmlinux 0x023e0ceb unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x023f0c47 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x025121b6 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026b588d write_inode_now +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0278670b arp_invalidate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ac3599 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02eb258c mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x03022725 irq_to_desc +EXPORT_SYMBOL vmlinux 0x031df284 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03355633 put_page +EXPORT_SYMBOL vmlinux 0x0339793f jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0360b5c4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x036507a0 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03757c9b of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03b9d5bb mach_sbc8548 +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03ea1edc of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x03f228fc create_empty_buffers +EXPORT_SYMBOL vmlinux 0x03f23317 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x04171d41 scsi_print_result +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04be92d8 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x04c2c8d2 tc_classify +EXPORT_SYMBOL vmlinux 0x04d77932 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x0504c07b free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052d1d22 may_umount_tree +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05b9ec31 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x05c242c9 giveup_fpu +EXPORT_SYMBOL vmlinux 0x05c7c35e qman_get_null_cb +EXPORT_SYMBOL vmlinux 0x05d89862 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x05de902e serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x05ee5007 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062f28f4 revalidate_disk +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063b0acc splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x06489d52 bman_rcr_is_empty +EXPORT_SYMBOL vmlinux 0x067353b5 phy_device_free +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069d975e mdiobus_register +EXPORT_SYMBOL vmlinux 0x06a9a0cb scsi_target_resume +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06c73c02 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x06dce17e dma_set_mask +EXPORT_SYMBOL vmlinux 0x06e60b18 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x06eda67c vfs_getattr +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07017a6d add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x0710aace vfs_mkdir +EXPORT_SYMBOL vmlinux 0x0714ff29 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f1fb6 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x0748c3b8 vc_cons +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075d7237 mach_p2020_rdb +EXPORT_SYMBOL vmlinux 0x07646cf0 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x0788155f mach_ksi8560 +EXPORT_SYMBOL vmlinux 0x078dbc5b of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x0793c249 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x079c0af0 machine_id +EXPORT_SYMBOL vmlinux 0x07a6bad2 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b82ec1 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x080d9640 skb_insert +EXPORT_SYMBOL vmlinux 0x081654a7 dev_addr_del +EXPORT_SYMBOL vmlinux 0x08296030 kick_iocb +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0837dd29 kill_fasync +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0873ed4d vm_insert_page +EXPORT_SYMBOL vmlinux 0x08ab4508 key_type_keyring +EXPORT_SYMBOL vmlinux 0x08e09357 netdev_warn +EXPORT_SYMBOL vmlinux 0x090c0414 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x0916aa2d i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x092b3497 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x094f3318 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x09627bb5 lock_fb_info +EXPORT_SYMBOL vmlinux 0x09725066 check_disk_change +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099184bf bio_integrity_split +EXPORT_SYMBOL vmlinux 0x09a92deb directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x09ba17ef init_special_inode +EXPORT_SYMBOL vmlinux 0x09c3780f file_ns_capable +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d22274 fsync_bdev +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09dd0e3d dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x09e0da31 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09fd93b4 qman_create_fq +EXPORT_SYMBOL vmlinux 0x0a0fe481 iterate_fd +EXPORT_SYMBOL vmlinux 0x0a120199 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x0a1adf1d page_readlink +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49d3d2 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x0a60c2f4 security_path_link +EXPORT_SYMBOL vmlinux 0x0a942fe6 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x0ab3996a scsi_host_put +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad230d3 kern_path +EXPORT_SYMBOL vmlinux 0x0ad3c41e pci_choose_state +EXPORT_SYMBOL vmlinux 0x0adb4499 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x0ae83926 phy_start +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b112ed7 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b249845 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x0b2a30f5 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x0b2ba386 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b57829a tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8255e0 dquot_drop +EXPORT_SYMBOL vmlinux 0x0b964f8d dm_put_device +EXPORT_SYMBOL vmlinux 0x0bb32a83 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bce3162 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x0bf64c83 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x0bf9219f sync_inode +EXPORT_SYMBOL vmlinux 0x0c1001e1 ll_rw_block +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c252fea sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x0c37e1d3 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x0c568699 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x0c57d3e8 ida_destroy +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c667605 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x0c756a6d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x0c802795 posix_test_lock +EXPORT_SYMBOL vmlinux 0x0c88f4ed dev_driver_string +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 0x0cdd75ae disk_stack_limits +EXPORT_SYMBOL vmlinux 0x0d08e480 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x0d273c9b journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x0d3f8c58 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d556ab3 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dbffd55 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x0dd71f86 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x0dd9a30e udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x0dfd68ac vga_get +EXPORT_SYMBOL vmlinux 0x0e00c2b5 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x0e06a0cd filp_open +EXPORT_SYMBOL vmlinux 0x0e094078 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x0e142c31 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x0e142ee5 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x0e1469f2 napi_complete +EXPORT_SYMBOL vmlinux 0x0e300bf7 schedule_work +EXPORT_SYMBOL vmlinux 0x0e3c34ee vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x0e4eefff generic_file_fsync +EXPORT_SYMBOL vmlinux 0x0e5bb837 seq_escape +EXPORT_SYMBOL vmlinux 0x0e6476ea inet_accept +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eaaae26 seq_open_private +EXPORT_SYMBOL vmlinux 0x0ee19fad pci_set_power_state +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f38546f mach_p1010_rdb +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f9316c8 fm_mutex_unlock +EXPORT_SYMBOL vmlinux 0x0f95c347 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb6170f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x0fbaccfd tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x0fdc4036 udplite_prot +EXPORT_SYMBOL vmlinux 0x0ff6e901 vfs_read +EXPORT_SYMBOL vmlinux 0x100092da genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x1033f64f tcp_parse_options +EXPORT_SYMBOL vmlinux 0x10437467 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x10469be5 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x1079a143 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x108c6335 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x10be1887 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x10c2333e mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10dcbc3b __mutex_init +EXPORT_SYMBOL vmlinux 0x10dcc156 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x10de8ee6 xfrm_input +EXPORT_SYMBOL vmlinux 0x10e23b26 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x10e661d1 fd_install +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1121dfbe input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x1161206b bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1194d3cc locks_remove_posix +EXPORT_SYMBOL vmlinux 0x11b99cfd follow_up +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11e88d0b mdiobus_free +EXPORT_SYMBOL vmlinux 0x11f12622 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120695f6 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x12194199 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x124cf1a8 __pagevec_release +EXPORT_SYMBOL vmlinux 0x126323da __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x1276d1da dcache_dir_open +EXPORT_SYMBOL vmlinux 0x12956d9b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x12976c28 poll_freewait +EXPORT_SYMBOL vmlinux 0x12977955 aio_put_req +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b043b9 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f81c21 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131df92f __lock_page +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133f9087 bio_init +EXPORT_SYMBOL vmlinux 0x13767956 qman_enqueue +EXPORT_SYMBOL vmlinux 0x137f849e blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x1390893d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13befcaa freeze_bdev +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x14082a4d kernel_getsockname +EXPORT_SYMBOL vmlinux 0x14087521 bdev_read_only +EXPORT_SYMBOL vmlinux 0x140c3715 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143c6bbe dev_printk_emit +EXPORT_SYMBOL vmlinux 0x144f5f18 __getblk +EXPORT_SYMBOL vmlinux 0x146c816c invalidate_partition +EXPORT_SYMBOL vmlinux 0x1490b08a mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x14b1b51c enable_kernel_spe +EXPORT_SYMBOL vmlinux 0x14bf7704 of_phy_connect +EXPORT_SYMBOL vmlinux 0x14c7d585 vmap +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x14feb55f cdrom_release +EXPORT_SYMBOL vmlinux 0x151ef14c pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x15446e4f ppp_unregister_channel +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 0x156afe6c bdi_init +EXPORT_SYMBOL vmlinux 0x15777d40 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x157f78dc udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x158f4594 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x15ae676c alloc_disk_node +EXPORT_SYMBOL vmlinux 0x15b16b08 udp_prot +EXPORT_SYMBOL vmlinux 0x15c38989 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x15e472fc mmc_can_trim +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x15f664b1 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x16027305 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x163d15bf scsi_add_device +EXPORT_SYMBOL vmlinux 0x164c621f padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x166d47e1 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x168f02f9 fm_get_handle +EXPORT_SYMBOL vmlinux 0x16b87655 phy_init_eee +EXPORT_SYMBOL vmlinux 0x16b9c9a7 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x16cbc3fc qdisc_destroy +EXPORT_SYMBOL vmlinux 0x1718c987 noop_llseek +EXPORT_SYMBOL vmlinux 0x171949bc tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x173c14fa revert_creds +EXPORT_SYMBOL vmlinux 0x17431ac7 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x17562bb0 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x17869aa1 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x178a4ec0 d_add_ci +EXPORT_SYMBOL vmlinux 0x1790ad84 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x1795a643 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x179d111b of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17d77a09 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x17da5274 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x17db7ac3 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17e8d418 md_done_sync +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fd9efe block_write_begin +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1830ecc4 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184345ca bmap +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1870f8c1 qman_fqid_pool_alloc +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a36d65 scsi_put_command +EXPORT_SYMBOL vmlinux 0x18b6c6c6 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x18cc8e18 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x18e0cd80 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x19055ab1 kthread_stop +EXPORT_SYMBOL vmlinux 0x1905d5d0 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x1907eba4 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1914088c blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x19264cf7 input_unregister_device +EXPORT_SYMBOL vmlinux 0x19440e73 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x1947d44b con_is_bound +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x19913f27 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x199e7e81 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19f881c6 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a3021bc block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1a5ff919 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x1a9878fb powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x1a9f5d26 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1abc7559 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x1ac2ef49 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad9712e copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x1af5c747 mount_bdev +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b052bf9 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b20bacf inet6_bind +EXPORT_SYMBOL vmlinux 0x1b273554 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x1b2a6117 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x1b4d9433 poll_initwait +EXPORT_SYMBOL vmlinux 0x1b593f06 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x1b5ae58b nobh_writepage +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b7250be __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x1b806b49 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b863920 input_grab_device +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b911a94 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba8ec3d security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1bba2046 dump_seek +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bf3d9cd xfrm_register_km +EXPORT_SYMBOL vmlinux 0x1c00728f agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x1c09aba3 qman_static_dequeue_get +EXPORT_SYMBOL vmlinux 0x1c0ea908 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x1c10eec3 sock_i_ino +EXPORT_SYMBOL vmlinux 0x1c25ada1 put_io_context +EXPORT_SYMBOL vmlinux 0x1c284bf5 dev_addr_add +EXPORT_SYMBOL vmlinux 0x1c50604b journal_update_format +EXPORT_SYMBOL vmlinux 0x1c65f4de i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x1c6d9fb0 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x1c80b8cd eth_header +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c94f293 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x1ca13086 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x1ca59962 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x1cc1a3d9 usb_add_phy +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1ce43ba3 __register_chrdev +EXPORT_SYMBOL vmlinux 0x1cf89964 clear_inode +EXPORT_SYMBOL vmlinux 0x1cfbdb2a generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x1d11c79f nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x1d1f7b3d ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x1d5651d6 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x1d58b43a netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x1d7c46f1 register_quota_format +EXPORT_SYMBOL vmlinux 0x1da8cf16 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db2e418 bdget_disk +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd7ab66 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e28eff1 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x1e2b1f1e set_bh_page +EXPORT_SYMBOL vmlinux 0x1e551cb1 __seq_open_private +EXPORT_SYMBOL vmlinux 0x1e65702c vfs_create +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6dfb39 register_key_type +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ed8286f skb_seq_read +EXPORT_SYMBOL vmlinux 0x1eececdf splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x1f0115ae get_super +EXPORT_SYMBOL vmlinux 0x1f06c841 mach_ge_imp3a +EXPORT_SYMBOL vmlinux 0x1f090d8e i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x1f1c8cfb pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x1f43b096 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x1f496821 netdev_alert +EXPORT_SYMBOL vmlinux 0x1f4c39f2 tty_unlock +EXPORT_SYMBOL vmlinux 0x1f6269ca key_put +EXPORT_SYMBOL vmlinux 0x1f62b87c inet_del_offload +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9c791d md_check_recovery +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd4728f writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x1fded21a skb_checksum_help +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200072b6 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x20056746 ifla_policy +EXPORT_SYMBOL vmlinux 0x200c41a7 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x2026ef98 devm_iounmap +EXPORT_SYMBOL vmlinux 0x202bcce0 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2073ca9c fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x2077898c wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x2079709d netlink_unicast +EXPORT_SYMBOL vmlinux 0x2080a587 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x20842372 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x2085ce57 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20bb49e4 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x20c2ae68 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d5df3d freeze_super +EXPORT_SYMBOL vmlinux 0x20dbed1e journal_load +EXPORT_SYMBOL vmlinux 0x20ea8213 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x211ce5d4 fget_light +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216d7840 mach_mpc8544_ds +EXPORT_SYMBOL vmlinux 0x216f4704 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x218fffca scsi_scan_target +EXPORT_SYMBOL vmlinux 0x21923e59 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x21a1777d n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x21a63481 log_wait_commit +EXPORT_SYMBOL vmlinux 0x21a6e359 console_stop +EXPORT_SYMBOL vmlinux 0x21c89e3d unregister_netdev +EXPORT_SYMBOL vmlinux 0x21cf58a0 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x21d52308 dqget +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x21f9952d kmem_cache_free +EXPORT_SYMBOL vmlinux 0x2200305c scsi_execute_req +EXPORT_SYMBOL vmlinux 0x221ae06c scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2255053b have_submounts +EXPORT_SYMBOL vmlinux 0x2265b514 qman_get_portal_config +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22a0ae9d uart_update_timeout +EXPORT_SYMBOL vmlinux 0x22adab0a simple_readpage +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b88785 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x22d73c62 bman_get_params +EXPORT_SYMBOL vmlinux 0x22e45413 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x22f2abea __frontswap_store +EXPORT_SYMBOL vmlinux 0x2303b40b pipe_lock +EXPORT_SYMBOL vmlinux 0x230f8f13 start_tty +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f6bca dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x233288b3 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x236fa20d mach_socrates +EXPORT_SYMBOL vmlinux 0x2386abe1 create_proc_entry +EXPORT_SYMBOL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL vmlinux 0x2397b814 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x23a0c1e3 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23eb7dcc pci_target_state +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x243f2b4c ip6_frag_init +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24439e62 kobject_get +EXPORT_SYMBOL vmlinux 0x244aab56 cdev_alloc +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x247696fa kern_path_create +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2486f4ac mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x24884953 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x24a886d7 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x24b2b82a __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25036ab0 follow_pfn +EXPORT_SYMBOL vmlinux 0x25110f73 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x2515f17a insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x251a2ee5 proc_create_data +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2529429b locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x2533dda1 bman_query_pools +EXPORT_SYMBOL vmlinux 0x253a5356 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25613971 unregister_console +EXPORT_SYMBOL vmlinux 0x2570524b scsi_init_io +EXPORT_SYMBOL vmlinux 0x25762053 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x2578d3b9 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25e1afab dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x25ebb719 igrab +EXPORT_SYMBOL vmlinux 0x25eeefb1 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x25f195f6 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x262e527e pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264d8c6b inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2655a269 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x26692abb __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x2695e92a dquot_commit +EXPORT_SYMBOL vmlinux 0x26a63341 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26ce762a inet_add_offload +EXPORT_SYMBOL vmlinux 0x26d191d0 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x2707c663 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27549948 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x2760b512 keyring_search +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27c78aba of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e25876 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x2802b00a jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x28115aec mount_single +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2825dbd9 skb_put +EXPORT_SYMBOL vmlinux 0x28298f6e complete_request_key +EXPORT_SYMBOL vmlinux 0x2834d8c3 dm_get_device +EXPORT_SYMBOL vmlinux 0x283e16fa tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x28545c9c generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x28553d56 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x286e2b60 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2882862a generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x288f3f4d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28b9ff4e mach_mpc8572_ds +EXPORT_SYMBOL vmlinux 0x28c4b9de tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x28d7f1d3 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x28d81276 alloc_disk +EXPORT_SYMBOL vmlinux 0x28e14c95 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x28e72061 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x28e95e2c names_cachep +EXPORT_SYMBOL vmlinux 0x28f3777d tty_port_hangup +EXPORT_SYMBOL vmlinux 0x290097ec bd_set_size +EXPORT_SYMBOL vmlinux 0x29045fd6 arp_xmit +EXPORT_SYMBOL vmlinux 0x29125beb dev_uc_del +EXPORT_SYMBOL vmlinux 0x29142a2c nf_log_packet +EXPORT_SYMBOL vmlinux 0x2914c4a7 padata_start +EXPORT_SYMBOL vmlinux 0x2918ee67 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x298ca806 tty_port_close +EXPORT_SYMBOL vmlinux 0x2996a2ba max8925_reg_write +EXPORT_SYMBOL vmlinux 0x29a0639d truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x29a67db1 bman_recovery_cleanup_bpid +EXPORT_SYMBOL vmlinux 0x29d0d1be ip6_route_output +EXPORT_SYMBOL vmlinux 0x29e17167 misc_deregister +EXPORT_SYMBOL vmlinux 0x29f12d84 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a092380 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a37eeb0 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x2a634144 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x2a738636 d_invalidate +EXPORT_SYMBOL vmlinux 0x2a8224c4 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2a9d3e31 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aac8cc7 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x2aae4f50 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x2ad79a5f seq_release +EXPORT_SYMBOL vmlinux 0x2ada14ef tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x2ae3502e devm_gpio_request +EXPORT_SYMBOL vmlinux 0x2ae4eb89 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x2b05c304 find_vma +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b10f182 sock_create_lite +EXPORT_SYMBOL vmlinux 0x2b22a02a seq_puts +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b39a6d7 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x2b39aee0 bman_release +EXPORT_SYMBOL vmlinux 0x2b39bc45 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x2b3af599 validate_sp +EXPORT_SYMBOL vmlinux 0x2b5201c9 dquot_initialize +EXPORT_SYMBOL vmlinux 0x2b5b8f2a write_one_page +EXPORT_SYMBOL vmlinux 0x2b5ec1ef dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x2b803f1d dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x2b936f48 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x2b94c04b pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x2b9b9938 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba8bdef netdev_emerg +EXPORT_SYMBOL vmlinux 0x2bb244b9 __break_lease +EXPORT_SYMBOL vmlinux 0x2bbe2d48 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2bc07889 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2bc7f73e xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x2bd2b237 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2bd6ddfa skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x2bdac90f mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x2c00bdf3 kset_register +EXPORT_SYMBOL vmlinux 0x2c071c4d nf_hook_slow +EXPORT_SYMBOL vmlinux 0x2c0ee58a tty_vhangup +EXPORT_SYMBOL vmlinux 0x2c12e637 udp_poll +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c15b596 do_SAK +EXPORT_SYMBOL vmlinux 0x2c195821 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4983bd thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x2c4bef4d mutex_unlock +EXPORT_SYMBOL vmlinux 0x2c514147 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7e12dc journal_revoke +EXPORT_SYMBOL vmlinux 0x2c7ffcca scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2c9541ca sk_alloc +EXPORT_SYMBOL vmlinux 0x2cbd28ea inet_recvmsg +EXPORT_SYMBOL vmlinux 0x2cd1e157 seq_printf +EXPORT_SYMBOL vmlinux 0x2cd5d9e7 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x2cd7df00 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x2ce0f74d cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x2cfb8378 qman_stop_dequeues +EXPORT_SYMBOL vmlinux 0x2d07b068 pci_dev_get +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d55d6da proto_register +EXPORT_SYMBOL vmlinux 0x2d61af16 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x2d781f2e security_path_chown +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2db2fd75 journal_forget +EXPORT_SYMBOL vmlinux 0x2db45265 cdev_init +EXPORT_SYMBOL vmlinux 0x2dd93e06 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x2dea6b42 get_super_thawed +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dede380 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e48bdcf qman_poll_dqrr +EXPORT_SYMBOL vmlinux 0x2e6a5d25 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2e827f70 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x2e9ebe39 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x2eb7215f generic_setlease +EXPORT_SYMBOL vmlinux 0x2eb8e5bb sget +EXPORT_SYMBOL vmlinux 0x2ec2ae60 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x2ec3277d module_layout +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 0x2f07686f file_open_root +EXPORT_SYMBOL vmlinux 0x2f0d7ad5 iget_failed +EXPORT_SYMBOL vmlinux 0x2f3e4e3d bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x2f406de0 journal_abort +EXPORT_SYMBOL vmlinux 0x2f9639fa pci_write_vpd +EXPORT_SYMBOL vmlinux 0x2f9ea3f7 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x2fadd76b scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe8c9a1 vfs_link +EXPORT_SYMBOL vmlinux 0x2ff90f6d drop_nlink +EXPORT_SYMBOL vmlinux 0x3016db84 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30232fbf ppp_input_error +EXPORT_SYMBOL vmlinux 0x302481aa sg_miter_start +EXPORT_SYMBOL vmlinux 0x3053e1c0 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x305fd969 path_put +EXPORT_SYMBOL vmlinux 0x3063220a simple_write_begin +EXPORT_SYMBOL vmlinux 0x306a722d tcp_close +EXPORT_SYMBOL vmlinux 0x30797258 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307f17f2 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x30a56419 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d0adfd eth_validate_addr +EXPORT_SYMBOL vmlinux 0x30dd52fb empty_aops +EXPORT_SYMBOL vmlinux 0x30e6c7e2 d_alloc +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3160c362 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x316b8145 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31c579a5 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x31d303f9 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x31d4aa8b fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x31d61c19 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31fb45bb fb_set_cmap +EXPORT_SYMBOL vmlinux 0x3205659b kill_pgrp +EXPORT_SYMBOL vmlinux 0x3231800e get_task_io_context +EXPORT_SYMBOL vmlinux 0x32424b34 qman_query_wq +EXPORT_SYMBOL vmlinux 0x3244ba2d km_query +EXPORT_SYMBOL vmlinux 0x32667393 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x32860d7e qman_fqid_pool_free +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32bb04c8 from_kqid +EXPORT_SYMBOL vmlinux 0x32c2a85d jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x32d681b3 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x330a6905 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x3311c243 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x33153fc1 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x3330055c __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x333fdbf9 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x335f6afa pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x336aa696 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x3384e4c7 md_integrity_register +EXPORT_SYMBOL vmlinux 0x338a0d66 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x33aa48f2 qman_static_dequeue_del +EXPORT_SYMBOL vmlinux 0x33ac6753 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33d8d991 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33dc1abe genl_register_family +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f51d0e xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x34269ac0 lock_rename +EXPORT_SYMBOL vmlinux 0x342fb89b tty_port_close_end +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x345bb4ac journal_check_available_features +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34707d30 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34c47f73 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x34cfd77f md_finish_reshape +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350819ec module_refcount +EXPORT_SYMBOL vmlinux 0x351d4759 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x352255b4 skb_checksum +EXPORT_SYMBOL vmlinux 0x3530526b nla_put +EXPORT_SYMBOL vmlinux 0x354d39a3 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x35690e15 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x357a76dd of_allnodes +EXPORT_SYMBOL vmlinux 0x357c774c ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x3583639e mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0x358a67fd locks_init_lock +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35cfee33 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x35d0b90f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x35d510cf netif_receive_skb +EXPORT_SYMBOL vmlinux 0x35e7cff3 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x35f58852 single_release +EXPORT_SYMBOL vmlinux 0x3615d116 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x3619fbc2 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x361ed029 get_fs_type +EXPORT_SYMBOL vmlinux 0x365030f0 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x365dbbe1 devm_clk_get +EXPORT_SYMBOL vmlinux 0x3667ae6d flush_tlb_range +EXPORT_SYMBOL vmlinux 0x366802d3 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x366e8ecc pci_set_ltr +EXPORT_SYMBOL vmlinux 0x36815df7 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x36a14f45 skb_tx_error +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f9cd94 rcu_is_cpu_idle +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x3727ff49 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x3730fdc9 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3754707d pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x37583147 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x377b939c pci_iomap +EXPORT_SYMBOL vmlinux 0x3788d3e0 journal_wipe +EXPORT_SYMBOL vmlinux 0x3788da11 log_start_commit +EXPORT_SYMBOL vmlinux 0x37901fb4 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x3799ab59 icmpv6_send +EXPORT_SYMBOL vmlinux 0x37b29c69 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c2b887 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x37d62591 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x37de207a pci_restore_state +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37eac678 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x3806f04d bdput +EXPORT_SYMBOL vmlinux 0x380ae39e fget_raw +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 0x38264f9b i2c_register_driver +EXPORT_SYMBOL vmlinux 0x385a5678 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x38644d61 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x386ce516 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x386e12a8 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x3885a264 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388e39ce qman_oos_fq +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38e96773 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x390212fc blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x39113fd8 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x39265a63 md_write_end +EXPORT_SYMBOL vmlinux 0x3926a73b dev_get_flags +EXPORT_SYMBOL vmlinux 0x392c3dda vlan_vid_add +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393a549e abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x39405af2 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x3959763d inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x396688cc scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x39832895 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x39868060 ps2_end_command +EXPORT_SYMBOL vmlinux 0x39895113 skb_find_text +EXPORT_SYMBOL vmlinux 0x39c70167 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x3a2552a1 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x3a29bf34 eth_header_parse +EXPORT_SYMBOL vmlinux 0x3a36cd38 bdi_destroy +EXPORT_SYMBOL vmlinux 0x3a724392 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x3a857524 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x3a8fa1ce km_state_notify +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aaf4787 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x3acbf05a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x3ad9dd2a backlight_device_register +EXPORT_SYMBOL vmlinux 0x3ae24a93 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x3ae7feac dev_uc_sync +EXPORT_SYMBOL vmlinux 0x3b105a4c sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x3b11ce9b seq_release_private +EXPORT_SYMBOL vmlinux 0x3b189a03 dev_change_flags +EXPORT_SYMBOL vmlinux 0x3b1df6e2 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b367c9c ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x3b560c71 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x3b5b2749 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b6afbd5 filp_close +EXPORT_SYMBOL vmlinux 0x3b7f3fb8 udp_ioctl +EXPORT_SYMBOL vmlinux 0x3b892852 pci_bus_type +EXPORT_SYMBOL vmlinux 0x3b93f6fd neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x3bc58a71 sync_blockdev +EXPORT_SYMBOL vmlinux 0x3bccf896 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x3bd11c34 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c121af8 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x3c148eb1 mach_p1020_mbg_pc +EXPORT_SYMBOL vmlinux 0x3c1f0fd5 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x3c50a770 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x3c645467 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c6b23fb ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x3c71c6f6 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x3c7459ca pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8883af pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cb063bf fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cced0ab netif_napi_add +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d6ac7c4 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x3d7125d0 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x3d7b677e kvm_read_guest_atomic +EXPORT_SYMBOL vmlinux 0x3d7dd622 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x3d7f823b __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x3d7fb6e4 tcp_connect +EXPORT_SYMBOL vmlinux 0x3d995d5d inode_change_ok +EXPORT_SYMBOL vmlinux 0x3db73eda xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd6059e __ip_select_ident +EXPORT_SYMBOL vmlinux 0x3de50b22 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfccc9f phy_find_first +EXPORT_SYMBOL vmlinux 0x3e25af38 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x3e2fc82e sk_wait_data +EXPORT_SYMBOL vmlinux 0x3e331496 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x3e3e4fbf new_inode +EXPORT_SYMBOL vmlinux 0x3e41a4f8 save_mount_options +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4e4a35 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x3e5fb2a6 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x3e6c3486 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e9729b2 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x3eaaba65 blk_peek_request +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ebaefd1 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ecac549 load_nls +EXPORT_SYMBOL vmlinux 0x3ed04ef2 mach_p1020_rdb +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3efd1d95 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f073819 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x3f32c05a ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5595da agp_bridge +EXPORT_SYMBOL vmlinux 0x3f631aef of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x3f68fd10 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x3f719fb9 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x3f774da0 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb721d5 journal_destroy +EXPORT_SYMBOL vmlinux 0x3fbb1488 set_device_ro +EXPORT_SYMBOL vmlinux 0x3fd9d83c agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x3fdabcba inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff42532 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x401a7d21 tty_kref_put +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4042f044 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407504e5 abort_creds +EXPORT_SYMBOL vmlinux 0x408df2d9 local_flush_tlb_page +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 0x40afc857 dma_find_channel +EXPORT_SYMBOL vmlinux 0x40beb95b gen_pool_free +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40cc6128 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40edb604 netlink_set_err +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40f4d407 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x4119ddfd xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x41480098 framebuffer_release +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x415b9089 address_space_init_once +EXPORT_SYMBOL vmlinux 0x416715b2 mach_mpc8569_mds +EXPORT_SYMBOL vmlinux 0x4168619e bman_pool_max +EXPORT_SYMBOL vmlinux 0x416eb5d2 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x4171395e __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x4177d37a dquot_quota_off +EXPORT_SYMBOL vmlinux 0x418783fb skb_copy_expand +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41a07ecf __secpath_destroy +EXPORT_SYMBOL vmlinux 0x41a362f2 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x41a70e79 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x41b71186 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x41da8153 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x41dc5fe1 d_rehash +EXPORT_SYMBOL vmlinux 0x41dcc687 migrate_page +EXPORT_SYMBOL vmlinux 0x41e67c81 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x420c13f3 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x420f7490 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421c2d37 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x4242e591 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425cdb6e sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x427a2f10 consume_skb +EXPORT_SYMBOL vmlinux 0x427cce5a dev_crit +EXPORT_SYMBOL vmlinux 0x4287cce1 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x428f24f9 posix_acl_create +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42bcff30 dquot_operations +EXPORT_SYMBOL vmlinux 0x42c65986 qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0x430154ae bman_irqsource_remove +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431d637c tcp_init_sock +EXPORT_SYMBOL vmlinux 0x432186d7 skb_dequeue +EXPORT_SYMBOL vmlinux 0x4339c41f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x43463d9d mach_xes_mpc8548 +EXPORT_SYMBOL vmlinux 0x4350b312 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436324e8 md_flush_request +EXPORT_SYMBOL vmlinux 0x436a939c kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43749c61 unbind_con_driver +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4392fc6b nonseekable_open +EXPORT_SYMBOL vmlinux 0x439a3ef2 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43b469d9 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x43be3412 __bread +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL vmlinux 0x43ff017b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x4405bc7c scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x440cfadd nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44272634 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443bed2b page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x446b2966 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x446cd729 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x44786171 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x4478a00d of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x4484c9f6 fm_mutex_lock +EXPORT_SYMBOL vmlinux 0x449dabce of_device_unregister +EXPORT_SYMBOL vmlinux 0x449e08f1 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x44ad4785 lookup_one_len +EXPORT_SYMBOL vmlinux 0x44bb0c0f __bio_clone +EXPORT_SYMBOL vmlinux 0x44da6038 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ea9fd5 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f7929b qm_fq_new +EXPORT_SYMBOL vmlinux 0x450fcb87 sg_miter_next +EXPORT_SYMBOL vmlinux 0x4511c1b0 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x451ead15 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x452b086e skb_free_datagram +EXPORT_SYMBOL vmlinux 0x4538b653 i2c_transfer +EXPORT_SYMBOL vmlinux 0x453c78fd pci_dev_put +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x4561155d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x456a0521 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457d4478 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x45978d15 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x459b3229 input_release_device +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aee566 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c3b940 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45d39bdd seq_path +EXPORT_SYMBOL vmlinux 0x45d91951 inet_frags_init +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x4656b078 blk_make_request +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x465df932 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466d68a4 follow_down_one +EXPORT_SYMBOL vmlinux 0x468a9016 dquot_disable +EXPORT_SYMBOL vmlinux 0x46917f3a bdi_register +EXPORT_SYMBOL vmlinux 0x46a81b98 mach_mpc8536_ds +EXPORT_SYMBOL vmlinux 0x46aa682e inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x46c1147d qman_poll_slow +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e17b84 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47004ea6 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x4704c09e netlink_broadcast +EXPORT_SYMBOL vmlinux 0x4709aa66 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x4715a071 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x47242909 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x474022b6 nf_log_register +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x4751741a security_mmap_file +EXPORT_SYMBOL vmlinux 0x476399d7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x47902737 input_set_keycode +EXPORT_SYMBOL vmlinux 0x479270cd pneigh_lookup +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 0x47b546a0 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x47e4ea51 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x47eb45b9 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x4824710c pci_fixup_device +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x48511794 genl_register_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486b501e qdisc_reset +EXPORT_SYMBOL vmlinux 0x487a5303 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48b15c9f fb_class +EXPORT_SYMBOL vmlinux 0x48b8aa7d xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x48b9299f scsi_scan_host +EXPORT_SYMBOL vmlinux 0x48d81f5c tcp_child_process +EXPORT_SYMBOL vmlinux 0x48ef2da7 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x48f46129 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x48fa4fe3 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x48fe8af0 skb_pull +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490a8af1 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4939efd7 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x4959d881 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49762e1e idr_replace +EXPORT_SYMBOL vmlinux 0x497fa769 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x4990aa3a xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b18529 mmc_add_host +EXPORT_SYMBOL vmlinux 0x49e0224c proto_unregister +EXPORT_SYMBOL vmlinux 0x49f4ec55 set_blocksize +EXPORT_SYMBOL vmlinux 0x49f74362 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x49f9a84c skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x49fa77e2 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4a0edf21 key_revoke +EXPORT_SYMBOL vmlinux 0x4a14a0b1 finish_no_open +EXPORT_SYMBOL vmlinux 0x4a1fe049 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x4a245600 bdevname +EXPORT_SYMBOL vmlinux 0x4a290d4d cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a3d1487 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x4a61e170 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x4a889bea elevator_change +EXPORT_SYMBOL vmlinux 0x4a927785 kernel_connect +EXPORT_SYMBOL vmlinux 0x4aa161c2 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x4abb2f71 make_bad_inode +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4aef87eb jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5dc99c sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b665e81 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x4b69092e scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x4b77f38b agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b849510 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf35f16 get_phy_device +EXPORT_SYMBOL vmlinux 0x4bf3f8bd register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x4bfe9a57 wake_up_process +EXPORT_SYMBOL vmlinux 0x4c0cffe4 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2df353 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x4c951d15 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce08ab2 set_anon_super +EXPORT_SYMBOL vmlinux 0x4ce1b4d4 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf78d23 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x4cf9f09f udp_sendmsg +EXPORT_SYMBOL vmlinux 0x4cfc8e8e led_blink_set +EXPORT_SYMBOL vmlinux 0x4d02f6ea pci_find_capability +EXPORT_SYMBOL vmlinux 0x4d37b172 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d54a460 da903x_query_status +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9dcda5 qman_fqid_pool_destroy +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df51c82 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e0643e8 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x4e1936d0 blk_get_queue +EXPORT_SYMBOL vmlinux 0x4e1ea6de agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x4e2dd714 generic_listxattr +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e36fdc8 sock_create +EXPORT_SYMBOL vmlinux 0x4e5a6a0f mii_check_link +EXPORT_SYMBOL vmlinux 0x4e697169 mach_p1022_ds +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7258bb vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eb31ed8 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x4eb52574 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x4ee6e12f __kfree_skb +EXPORT_SYMBOL vmlinux 0x4ef23c1a scsi_ioctl +EXPORT_SYMBOL vmlinux 0x4ef9468f ip_setsockopt +EXPORT_SYMBOL vmlinux 0x4f019904 dev_notice +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f23f028 tty_hangup +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7d5794 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x4f83d139 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4fb2ea83 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x4fcc95d8 inet_addr_type +EXPORT_SYMBOL vmlinux 0x4fcf9e65 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff44ef2 mpage_readpages +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x50244d14 sock_wfree +EXPORT_SYMBOL vmlinux 0x5036045c dentry_open +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x504b02c3 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x5064452b __inode_permission +EXPORT_SYMBOL vmlinux 0x506e3b21 blkdev_put +EXPORT_SYMBOL vmlinux 0x507b1811 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x5090bda4 unlock_page +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509f7412 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x50a24714 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x50f85d7a bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x514294e1 truncate_setsize +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5145c453 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x5159e3d6 pipe_to_file +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x5194a19f jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x5195ac80 seq_vprintf +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a95062 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x51aaace5 pci_request_regions +EXPORT_SYMBOL vmlinux 0x51ae1d78 uart_match_port +EXPORT_SYMBOL vmlinux 0x51c5cf26 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x51c93ad0 fm_get_rtc_handle +EXPORT_SYMBOL vmlinux 0x51cda977 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x51d43cdb journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x51d83a66 generic_readlink +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e0485b fm_port_pcd_bind +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52018ac2 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52118111 simple_link +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x527919da unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x527b11e4 quota_send_warning +EXPORT_SYMBOL vmlinux 0x527de6fb swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x529c97ae splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x52bef0ba inet_ioctl +EXPORT_SYMBOL vmlinux 0x52bf3955 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52d87107 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x52ec88a2 usb_put_phy +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53217123 mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x532f4339 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x534065ca of_get_next_child +EXPORT_SYMBOL vmlinux 0x534c178b iterate_mounts +EXPORT_SYMBOL vmlinux 0x53669296 dev_alert +EXPORT_SYMBOL vmlinux 0x5372120f genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x53a99955 notify_thermal_framework +EXPORT_SYMBOL vmlinux 0x53b709d5 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ed649c km_policy_expired +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5427deb6 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x5436ba81 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5443635a flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x548541fa inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x54883d70 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x548cb517 bman_poll +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54bb4367 __nla_put +EXPORT_SYMBOL vmlinux 0x54c9dc8e qman_fq_fqid +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f51259 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x550a1401 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552aca01 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL vmlinux 0x557261d0 mapping_tagged +EXPORT_SYMBOL vmlinux 0x5576edf5 add_disk +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55fab4d4 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x5604e91a nla_append +EXPORT_SYMBOL vmlinux 0x56056085 ps2_sendbyte +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 0x5648bda4 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x564a7f2a tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x566032bd bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x56729e27 __find_get_block +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56b360f6 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x56c50d97 mntget +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ce5c40 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x56cfab32 find_or_create_page +EXPORT_SYMBOL vmlinux 0x56dd1ce7 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x56f95869 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x57127884 phy_detach +EXPORT_SYMBOL vmlinux 0x571bfd94 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5732458c get_user_pages +EXPORT_SYMBOL vmlinux 0x5742076f scsi_unregister +EXPORT_SYMBOL vmlinux 0x5756274f simple_transaction_release +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576d79f2 dst_discard +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57a5b2ff vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x580af441 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x580cc3a6 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x5814e055 bm_pool_free +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585a8bea i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x5867ba9a pci_enable_device +EXPORT_SYMBOL vmlinux 0x5874bf23 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x5877d8ef qman_static_dequeue_add +EXPORT_SYMBOL vmlinux 0x58adc82e sock_wake_async +EXPORT_SYMBOL vmlinux 0x58c6f960 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x590ba9ef shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x591637bf xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x59248696 neigh_table_init +EXPORT_SYMBOL vmlinux 0x592c33f3 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593d84d8 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596989e2 kobject_set_name +EXPORT_SYMBOL vmlinux 0x596ddd9e ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x59835a4d tty_unregister_device +EXPORT_SYMBOL vmlinux 0x598573c6 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x59886b6f sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x59a97c5b neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x59ae29bb locks_delete_block +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59b58272 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x59cce3eb inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d77034 sock_i_uid +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x59eab6d5 mach_p1023_rds +EXPORT_SYMBOL vmlinux 0x5a1f361d dma_pool_create +EXPORT_SYMBOL vmlinux 0x5a253bc9 dput +EXPORT_SYMBOL vmlinux 0x5a294411 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x5a4811d2 do_sync_read +EXPORT_SYMBOL vmlinux 0x5a4b30c2 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x5a54bf9a vfs_statfs +EXPORT_SYMBOL vmlinux 0x5a775a4e input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x5a7bbb57 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x5a7d6856 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x5a939a93 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x5ab20150 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5ac78a77 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5ad405af journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b90ffda pci_release_region +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9b1b81 sock_no_listen +EXPORT_SYMBOL vmlinux 0x5b9c1bc8 inet_sendpage +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5be17662 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x5c0ad83a alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x5c1a7894 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x5c1f3cb8 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x5c2b43f4 fb_show_logo +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3bd182 key_invalidate +EXPORT_SYMBOL vmlinux 0x5c4fa2d2 uart_register_driver +EXPORT_SYMBOL vmlinux 0x5c5e406e scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x5c691ffe kunmap_high +EXPORT_SYMBOL vmlinux 0x5c893582 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x5c8b0367 del_gendisk +EXPORT_SYMBOL vmlinux 0x5c9756b7 d_validate +EXPORT_SYMBOL vmlinux 0x5ce44ef3 tcf_em_register +EXPORT_SYMBOL vmlinux 0x5cf017f2 pci_release_regions +EXPORT_SYMBOL vmlinux 0x5cf52f5e pci_claim_resource +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d1902bb vm_map_ram +EXPORT_SYMBOL vmlinux 0x5d1f3a85 inet_release +EXPORT_SYMBOL vmlinux 0x5d2e10d3 tcp_check_req +EXPORT_SYMBOL vmlinux 0x5d364d49 vga_tryget +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d6cb935 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x5d81e108 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x5d9dabf2 pci_get_class +EXPORT_SYMBOL vmlinux 0x5df9a756 end_page_writeback +EXPORT_SYMBOL vmlinux 0x5dfa1461 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x5e0f015c blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x5e229307 skb_clone +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e414a44 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x5e5247d3 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e5d743e dev_addr_init +EXPORT_SYMBOL vmlinux 0x5e5fe6f2 __f_setown +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e766bd2 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x5e79c446 mnt_pin +EXPORT_SYMBOL vmlinux 0x5e8c56d9 mem_map +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec16e0c netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed1b82e blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x5ee44bf3 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x5ee9cd9c fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x5ef9cfdd phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f274c3e netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x5f2a94ad jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f4326fd __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x5f4819fc inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x5f6e9df0 cad_pid +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8e8b01 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x5fb456f2 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x5fbe08a6 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x5fbf410a update_region +EXPORT_SYMBOL vmlinux 0x5fd09457 blk_init_tags +EXPORT_SYMBOL vmlinux 0x5feab8ac kernel_getpeername +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60701259 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x60851ae4 fb_pan_display +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x6088c2a9 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x6099ec61 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60c242e9 simple_write_end +EXPORT_SYMBOL vmlinux 0x60c5555c of_n_size_cells +EXPORT_SYMBOL vmlinux 0x60c7991c __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x60d67d8a pid_task +EXPORT_SYMBOL vmlinux 0x60e10b9c dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x6117027c lease_get_mtime +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61350071 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x61389281 phy_device_register +EXPORT_SYMBOL vmlinux 0x61546e1f unload_nls +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617b692c idr_for_each +EXPORT_SYMBOL vmlinux 0x619314b1 deactivate_super +EXPORT_SYMBOL vmlinux 0x61a0450a pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x61a50b35 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x61a827c7 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x61aadfa4 file_update_time +EXPORT_SYMBOL vmlinux 0x61b4c268 bman_poll_slow +EXPORT_SYMBOL vmlinux 0x61b6dcdd mfd_add_devices +EXPORT_SYMBOL vmlinux 0x61b7aaf4 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c473c0 neigh_lookup +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x62209f97 d_path +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x62710af5 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62eb0b7b scsi_device_get +EXPORT_SYMBOL vmlinux 0x62f15a81 of_get_property +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631ae178 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x632449fc tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63335819 serio_rescan +EXPORT_SYMBOL vmlinux 0x634d8020 qman_enqueue_orp +EXPORT_SYMBOL vmlinux 0x63713a39 scsi_execute +EXPORT_SYMBOL vmlinux 0x6380e087 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x6398b01a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x639e7c8c locks_free_lock +EXPORT_SYMBOL vmlinux 0x63a2cf82 ihold +EXPORT_SYMBOL vmlinux 0x63ddb369 vfs_rename +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63fa867d cfb_imageblit +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64111e7a tty_lock_pair +EXPORT_SYMBOL vmlinux 0x641c0520 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x6427c11f vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x643cdec0 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x6460d7e3 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x64658e0c __blk_run_queue +EXPORT_SYMBOL vmlinux 0x646ae7bf tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x646b5179 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x646deff3 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a05be0 ilookup5 +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64e0e1ed unregister_con_driver +EXPORT_SYMBOL vmlinux 0x64f24a88 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x650a6767 prandom_u32_state +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65651b3a unregister_nls +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x656baa10 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c7c0df generic_read_dir +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65eec046 skb_pad +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f659b2 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x6601d359 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x660b41e9 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x660e261c block_write_end +EXPORT_SYMBOL vmlinux 0x662cc599 __dst_free +EXPORT_SYMBOL vmlinux 0x666791e8 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x667263bc of_dev_get +EXPORT_SYMBOL vmlinux 0x66783358 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x667b2f73 simple_setattr +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669aeb1c module_put +EXPORT_SYMBOL vmlinux 0x66a5a654 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x66b65cf4 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x66d3043b inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x66f96478 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x66fb1d43 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x6731990c elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x673914bb neigh_table_clear +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67426eb3 fm_get_mem_region +EXPORT_SYMBOL vmlinux 0x674bec9e phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x675b1fc2 bman_get_portal_config +EXPORT_SYMBOL vmlinux 0x6769b176 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x677165cf sock_from_file +EXPORT_SYMBOL vmlinux 0x677822ce account_page_redirty +EXPORT_SYMBOL vmlinux 0x679874d6 mutex_trylock +EXPORT_SYMBOL vmlinux 0x679f11aa netdev_update_features +EXPORT_SYMBOL vmlinux 0x67aeb48c pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c5a557 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x67e80a1a ppp_register_channel +EXPORT_SYMBOL vmlinux 0x67f97ccb netdev_set_master +EXPORT_SYMBOL vmlinux 0x67fb9e87 d_set_d_op +EXPORT_SYMBOL vmlinux 0x6817d495 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688b5cde ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x68bf85c3 __serio_register_port +EXPORT_SYMBOL vmlinux 0x68cc88ec iget5_locked +EXPORT_SYMBOL vmlinux 0x68cde4fb call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x68d9bef5 ida_pre_get +EXPORT_SYMBOL vmlinux 0x68ddcbfe i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x691eb616 input_reset_device +EXPORT_SYMBOL vmlinux 0x692536fb filemap_fault +EXPORT_SYMBOL vmlinux 0x6949cea6 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bee94c padata_alloc +EXPORT_SYMBOL vmlinux 0x69c42cad find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x69cb7664 input_allocate_device +EXPORT_SYMBOL vmlinux 0x69cc14fc thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69fb7aa6 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a15dad3 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x6a38c446 __put_cred +EXPORT_SYMBOL vmlinux 0x6a417ef4 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6a534a3d read_dev_sector +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6a887976 iunique +EXPORT_SYMBOL vmlinux 0x6a9dac13 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b9f3e20 skb_store_bits +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd348f1 scsi_print_command +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be7fdb0 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x6bf2215d thaw_super +EXPORT_SYMBOL vmlinux 0x6bf3b27a jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x6bf7c4ed serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x6bfe2e08 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x6c0ece91 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c22122b mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x6c44229a __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x6c5d2818 idr_find +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 0x6c78eb62 padata_stop +EXPORT_SYMBOL vmlinux 0x6c7de2a1 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cfe127e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x6cffe8a3 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d117688 dev_close +EXPORT_SYMBOL vmlinux 0x6d255532 dev_printk +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d43be60 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x6d4fd348 d_alloc_name +EXPORT_SYMBOL vmlinux 0x6d5d2c81 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x6d8d676e update_time +EXPORT_SYMBOL vmlinux 0x6d9d0a3c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x6da10f91 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dd0ea2d scsi_prep_return +EXPORT_SYMBOL vmlinux 0x6de1eaa2 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e1ddf41 mach_p1025_rdb +EXPORT_SYMBOL vmlinux 0x6e358d7c vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e394b8f clear_user_page +EXPORT_SYMBOL vmlinux 0x6e3d0603 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x6e4ab371 skb_copy +EXPORT_SYMBOL vmlinux 0x6e5c6f3c skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x6e64e23d udp_seq_open +EXPORT_SYMBOL vmlinux 0x6e703966 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e75c733 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x6e9856fc registered_fb +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea4d509 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x6eb144e7 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ebf1304 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x6ec0a7cb xfrm_register_type +EXPORT_SYMBOL vmlinux 0x6ec674ef kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6ef31055 ppp_input +EXPORT_SYMBOL vmlinux 0x6ef5d199 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x6ef618db inode_dio_done +EXPORT_SYMBOL vmlinux 0x6f0af7cf pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f268538 bman_acquire +EXPORT_SYMBOL vmlinux 0x6f2ea9b8 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x6f33938d kill_block_super +EXPORT_SYMBOL vmlinux 0x6f40115c pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x6f7be79b agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x6f8e92a7 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x6fa5a99c register_md_personality +EXPORT_SYMBOL vmlinux 0x6fbe5c9a input_inject_event +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd879e0 lease_modify +EXPORT_SYMBOL vmlinux 0x6fe8437c inode_needs_sync +EXPORT_SYMBOL vmlinux 0x7020f04d set_groups +EXPORT_SYMBOL vmlinux 0x70264c50 dquot_enable +EXPORT_SYMBOL vmlinux 0x7027ae1c mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x703c1cef xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x703edcae __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x7045dea9 qman_modify_cgr +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x70a9e8e3 seq_lseek +EXPORT_SYMBOL vmlinux 0x70b31b09 scsi_host_get +EXPORT_SYMBOL vmlinux 0x70b61bf9 generic_error_remove_page +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 0x70ddbf0b cfb_fillrect +EXPORT_SYMBOL vmlinux 0x70fc9a93 netpoll_setup +EXPORT_SYMBOL vmlinux 0x710c55b0 ether_setup +EXPORT_SYMBOL vmlinux 0x710d6583 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x711609ae tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7149d8ee vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71716adf seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x7180b2c0 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x71864b23 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x7188b56c mach_mpc85xx_cds +EXPORT_SYMBOL vmlinux 0x71916ede ppc_md +EXPORT_SYMBOL vmlinux 0x7194d3b7 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b95f78 blk_rq_init +EXPORT_SYMBOL vmlinux 0x71c498cf generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e9f15a journal_restart +EXPORT_SYMBOL vmlinux 0x71ec5c93 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x720eab59 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x7216f40b dquot_alloc +EXPORT_SYMBOL vmlinux 0x72253fa1 prepare_creds +EXPORT_SYMBOL vmlinux 0x722cd879 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x726f46cb phy_connect_direct +EXPORT_SYMBOL vmlinux 0x728882f1 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x728ce230 qm_fq_free_flags +EXPORT_SYMBOL vmlinux 0x72a00980 __invalidate_device +EXPORT_SYMBOL vmlinux 0x72a458e2 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x72a6ecd9 pci_get_slot +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b79de1 usb_remove_phy +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ee0650 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c1f92 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x736523f9 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x736dd0ef kernel_accept +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7378ed01 file_remove_suid +EXPORT_SYMBOL vmlinux 0x737dae56 padata_do_serial +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73b24c21 simple_getattr +EXPORT_SYMBOL vmlinux 0x73e1cc84 inet_shutdown +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73ff5fd7 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x74007c8e arp_create +EXPORT_SYMBOL vmlinux 0x74295639 cont_write_begin +EXPORT_SYMBOL vmlinux 0x7439397d tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x74459cda xfrm_state_add +EXPORT_SYMBOL vmlinux 0x744a829c __get_user_pages +EXPORT_SYMBOL vmlinux 0x744e5e92 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x7464ecb2 kset_unregister +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x746db5c2 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x7475a52c __free_pages +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748c559d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x74be9604 mount_ns +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fe2b98 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x75057c31 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750f8b10 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7531bdf9 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x75504e1f dget_parent +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7573b0e0 find_get_page +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x7593abb1 vfs_writev +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759eb878 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x75bca7bd napi_gro_receive +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d986fd tty_name +EXPORT_SYMBOL vmlinux 0x75e955ff iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x75fd8591 simple_release_fs +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x762567e6 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x7640fb6a led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76595cbd bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x76768610 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x767bb4b0 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x767d1042 udp_proc_register +EXPORT_SYMBOL vmlinux 0x76843c58 fm_port_enable +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76a3468b rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x76a98c0d input_set_capability +EXPORT_SYMBOL vmlinux 0x76b8b52e prepare_binprm +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c15438 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x76c95590 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x76ca363e override_creds +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL vmlinux 0x76e50299 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772ebace rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x775893e7 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x77887cf8 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x778b17b0 stop_tty +EXPORT_SYMBOL vmlinux 0x779384c6 km_report +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77be01c9 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x77c59a81 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x77ce93b3 qid_lt +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77ef9a3d scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x77fdc864 do_splice_to +EXPORT_SYMBOL vmlinux 0x78094361 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x7857b3de jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b740c6 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x78d93955 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x792684f4 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x7966b415 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x7969b9de blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7979e7a5 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x798e3164 fm_port_get_handle +EXPORT_SYMBOL vmlinux 0x79a9fa62 soft_cursor +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c74efb pci_select_bars +EXPORT_SYMBOL vmlinux 0x7a1352de journal_errno +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a3e1d4b inet_sendmsg +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4997c6 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x7a4dbf2a __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x7a513896 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x7a574aa3 fm_bind +EXPORT_SYMBOL vmlinux 0x7a863106 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad41bf9 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af567d6 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b7fb32c vm_mmap +EXPORT_SYMBOL vmlinux 0x7b9f793e nf_ct_attach +EXPORT_SYMBOL vmlinux 0x7bbdf01e journal_lock_updates +EXPORT_SYMBOL vmlinux 0x7bd9341b devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x7bdfee54 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7be37108 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7bfe0bf0 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c0656dd agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c168e6a vga_client_register +EXPORT_SYMBOL vmlinux 0x7c244cd7 rtnl_notify +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c502498 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x7c52d5f0 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x7c55ef16 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c68b8cf __napi_schedule +EXPORT_SYMBOL vmlinux 0x7c73ed17 journal_clear_err +EXPORT_SYMBOL vmlinux 0x7c8bd763 devm_ioremap +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 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cdfb6e4 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x7ce70e7f of_get_parent +EXPORT_SYMBOL vmlinux 0x7d0486e4 iput +EXPORT_SYMBOL vmlinux 0x7d063ad6 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x7d0762dc dst_release +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d33ac43 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x7d6371f9 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7dd38efa blk_run_queue +EXPORT_SYMBOL vmlinux 0x7dd3bfc8 kernel_read +EXPORT_SYMBOL vmlinux 0x7dec8e55 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0b2758 simple_fill_super +EXPORT_SYMBOL vmlinux 0x7e160a0b dev_disable_lro +EXPORT_SYMBOL vmlinux 0x7e2240fa tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x7e267dff journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3dffce devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x7e5b2302 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x7e5eab3b free_task +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e93f593 fm_port_bind +EXPORT_SYMBOL vmlinux 0x7eca83df bioset_free +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed61ef7 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x7edffbef flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ee92323 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x7eedcb63 sock_rfree +EXPORT_SYMBOL vmlinux 0x7ef419c8 kmap_high +EXPORT_SYMBOL vmlinux 0x7ef98a22 d_move +EXPORT_SYMBOL vmlinux 0x7f0b2960 qman_fqid_pool_create +EXPORT_SYMBOL vmlinux 0x7f169f53 genphy_suspend +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f497502 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x7f52c320 of_find_property +EXPORT_SYMBOL vmlinux 0x7f5e549f twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x7f7db316 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x7f84d4e5 request_key_async +EXPORT_SYMBOL vmlinux 0x7f9c890f blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x7fa8aa89 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x7fd4255a remove_proc_entry +EXPORT_SYMBOL vmlinux 0x7fd8aeed tcp_seq_open +EXPORT_SYMBOL vmlinux 0x7fdfd13e datagram_poll +EXPORT_SYMBOL vmlinux 0x7fe1fdeb vfs_symlink +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x800a53e8 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x800cc634 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x80167a1b simple_empty +EXPORT_SYMBOL vmlinux 0x803942ac phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x803d95d5 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x804c5add devm_gpio_free +EXPORT_SYMBOL vmlinux 0x808bde9f replace_mount_options +EXPORT_SYMBOL vmlinux 0x80abe738 d_lookup +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d30af2 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x80e8b309 commit_creds +EXPORT_SYMBOL vmlinux 0x8123c72d tty_port_open +EXPORT_SYMBOL vmlinux 0x8127919a filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x817796f6 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a2f871 find_inode_number +EXPORT_SYMBOL vmlinux 0x81a916fa jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x81b9b343 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81f480f4 release_firmware +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82282970 skb_trim +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8253e412 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x82a3e8af devfreq_add_device +EXPORT_SYMBOL vmlinux 0x82a58dfc sock_init_data +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82d6ef39 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x83029db2 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x83390049 d_drop +EXPORT_SYMBOL vmlinux 0x834d2c35 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x834f8ad6 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x8351a572 elevator_exit +EXPORT_SYMBOL vmlinux 0x835af02a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x8366e998 inet6_release +EXPORT_SYMBOL vmlinux 0x8371577c xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x83843799 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x838a2767 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83c8ab4e fm_set_tx_port_params +EXPORT_SYMBOL vmlinux 0x83d8a937 qman_fqid_pool_used +EXPORT_SYMBOL vmlinux 0x83f73a97 posix_lock_file +EXPORT_SYMBOL vmlinux 0x841bf20b blk_register_region +EXPORT_SYMBOL vmlinux 0x8426ec55 keyring_alloc +EXPORT_SYMBOL vmlinux 0x842f38ed dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x84400378 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x84648c0f pci_set_master +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x848ba4d1 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x849b6209 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x84a2a1f8 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x84a9e6e9 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84d3ef25 generic_write_checks +EXPORT_SYMBOL vmlinux 0x84dfe7b1 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x84f0e679 submit_bio +EXPORT_SYMBOL vmlinux 0x85047bdb netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x8526fdca xfrm_init_state +EXPORT_SYMBOL vmlinux 0x853b94ad load_nls_default +EXPORT_SYMBOL vmlinux 0x8545b873 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x855dc789 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x859e76db clk_get +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d70cb0 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x85deada0 dev_mc_init +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e3e961 init_task +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x86068d76 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x86202fff phy_print_status +EXPORT_SYMBOL vmlinux 0x86316a2b i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x864e2071 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8659794c generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x8662a5a7 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868c7248 get_write_access +EXPORT_SYMBOL vmlinux 0x868db15e redraw_screen +EXPORT_SYMBOL vmlinux 0x869044a6 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x8695ba82 dst_destroy +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a668e5 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x86c26bc8 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x86d77982 kthread_bind +EXPORT_SYMBOL vmlinux 0x86dd6517 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x86ecf6e7 do_sync_write +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8702d1e2 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x870a64f6 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872c8ec5 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x8755ff31 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x8760436b inode_set_bytes +EXPORT_SYMBOL vmlinux 0x8772d276 security_path_rename +EXPORT_SYMBOL vmlinux 0x877f5328 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x8784e58f seq_write +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878d9a0e scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x879227a7 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87a587bb ps2_init +EXPORT_SYMBOL vmlinux 0x87d222d1 dcache_readdir +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x882510e3 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8838836c udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x88448840 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x886348d5 block_write_full_page +EXPORT_SYMBOL vmlinux 0x887b91aa scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x887fb0bf jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x88b5ef7b alloc_file +EXPORT_SYMBOL vmlinux 0x88b6c907 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x88e4182c genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x88f2bc3e pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x890416fe pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x8916f9d1 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892eb4b6 __inet6_hash +EXPORT_SYMBOL vmlinux 0x895104ac blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x89532df5 follow_down +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8961896f agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897ede5e nf_reinject +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89c62f53 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x89cea273 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x89d03724 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89f21d67 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8a0ba0a7 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a3bc617 mach_mpc8568_mds +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4ca0b3 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x8a509a9a of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x8a5493bb qman_recovery_cleanup_fq +EXPORT_SYMBOL vmlinux 0x8a67e969 should_remove_suid +EXPORT_SYMBOL vmlinux 0x8a7527e1 bm_pool_new +EXPORT_SYMBOL vmlinux 0x8a79131c __brelse +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7ff43d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x8a8c9f6c mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x8a90f2ed scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa337f7 force_sig +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8abbc00f journal_init_dev +EXPORT_SYMBOL vmlinux 0x8abd295a __sb_start_write +EXPORT_SYMBOL vmlinux 0x8ac42d01 create_syslog_header +EXPORT_SYMBOL vmlinux 0x8ac7d2e5 contig_page_data +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad3c58d sock_setsockopt +EXPORT_SYMBOL vmlinux 0x8add57f2 simple_rmdir +EXPORT_SYMBOL vmlinux 0x8aeb4753 eth_header_cache +EXPORT_SYMBOL vmlinux 0x8aef2869 put_tty_driver +EXPORT_SYMBOL vmlinux 0x8b0c2306 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b337611 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3f67d5 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x8b412b9b devm_free_irq +EXPORT_SYMBOL vmlinux 0x8b454b86 register_gifconf +EXPORT_SYMBOL vmlinux 0x8b46a44c invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6d3d5f mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x8b7d6daf tcp_make_synack +EXPORT_SYMBOL vmlinux 0x8b883ac3 tty_free_termios +EXPORT_SYMBOL vmlinux 0x8b9fb795 mach_xes_mpc8540 +EXPORT_SYMBOL vmlinux 0x8bc7503b simple_rename +EXPORT_SYMBOL vmlinux 0x8bcf2376 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x8bdc00d6 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8bdc2cb7 qman_query_cgr +EXPORT_SYMBOL vmlinux 0x8be2e013 console_start +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0b7145 journal_start +EXPORT_SYMBOL vmlinux 0x8c12aa82 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c24d58c ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x8c3b6124 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x8c4f2124 __d_drop +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c8c7402 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x8c960850 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x8caa007d ilookup +EXPORT_SYMBOL vmlinux 0x8cba5273 may_umount +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccd67c4 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x8cdfbc54 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8d138230 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x8d162549 take_over_console +EXPORT_SYMBOL vmlinux 0x8d1c7589 dquot_acquire +EXPORT_SYMBOL vmlinux 0x8d2d8925 nf_afinfo +EXPORT_SYMBOL vmlinux 0x8d4500f4 i2c_master_send +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d564c85 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x8db5b2ab __block_write_begin +EXPORT_SYMBOL vmlinux 0x8dbd5c81 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2cd6f bman_irqsource_get +EXPORT_SYMBOL vmlinux 0x8e0196b3 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e0e7921 kill_anon_super +EXPORT_SYMBOL vmlinux 0x8e153343 release_pages +EXPORT_SYMBOL vmlinux 0x8e1c84ca blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e36c21e mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x8e503456 generic_file_open +EXPORT_SYMBOL vmlinux 0x8e6aff9d of_match_node +EXPORT_SYMBOL vmlinux 0x8e6ef0da idr_get_new +EXPORT_SYMBOL vmlinux 0x8e7aefae page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8e838cb0 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8e90c2cc do_splice_from +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ee80ef2 input_event +EXPORT_SYMBOL vmlinux 0x8efef28c blk_recount_segments +EXPORT_SYMBOL vmlinux 0x8f3e3983 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x8f64efe0 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f77b396 security_inode_permission +EXPORT_SYMBOL vmlinux 0x8f7ec3db ata_link_printk +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f8e022c prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x8fa32404 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x8fa9ca84 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc9dce3 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x8ff43cad serio_close +EXPORT_SYMBOL vmlinux 0x8ff6afbf no_llseek +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90163b8d phy_disconnect +EXPORT_SYMBOL vmlinux 0x902358a0 cpufreq_cooling_unregister +EXPORT_SYMBOL vmlinux 0x90265774 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x902bc4d2 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x9031c62b vfs_unlink +EXPORT_SYMBOL vmlinux 0x9036dae9 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x9038b4fa mutex_lock +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x9089af69 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x90ab84c2 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x90b5ee0d pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x90b89778 arp_find +EXPORT_SYMBOL vmlinux 0x90bd2d61 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90ca4994 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x90caea4a wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x90cf724d tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x90d946fb alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90f1d402 set_disk_ro +EXPORT_SYMBOL vmlinux 0x9116f616 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x91195005 skb_unlink +EXPORT_SYMBOL vmlinux 0x91290870 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9175f62c km_state_expired +EXPORT_SYMBOL vmlinux 0x919058c6 netdev_printk +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91d88e48 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0x91e6af69 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x91f87613 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x91fd801e input_unregister_handle +EXPORT_SYMBOL vmlinux 0x9208f0ba blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x920b93e4 lock_may_write +EXPORT_SYMBOL vmlinux 0x92161e99 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x92181919 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x921acc67 mmc_erase +EXPORT_SYMBOL vmlinux 0x9224c4da rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x922670b4 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x92311f01 idr_remove +EXPORT_SYMBOL vmlinux 0x92377151 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924a6e5c blk_put_queue +EXPORT_SYMBOL vmlinux 0x925469d9 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x925579ee fb_validate_mode +EXPORT_SYMBOL vmlinux 0x9259a654 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x925d5118 giveup_spe +EXPORT_SYMBOL vmlinux 0x92770eb7 blkdev_get +EXPORT_SYMBOL vmlinux 0x9287a0f9 inet_listen +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x92941b6f inet_register_protosw +EXPORT_SYMBOL vmlinux 0x929f8165 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x92a7e6c5 bman_new_pool +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bd3951 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x92daf768 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x92e62947 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x92e80903 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x92eb03ea jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x92f784dc schedule_work_on +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x933e10ec qman_ip_rev +EXPORT_SYMBOL vmlinux 0x9343e0bb tty_check_change +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x936ce136 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x937c5de1 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x9386d47c of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x9387ac66 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93dcb383 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x93e2bdf6 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9418f8b2 inet_select_addr +EXPORT_SYMBOL vmlinux 0x941f850e of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x942a9272 mmc_request_done +EXPORT_SYMBOL vmlinux 0x944e6efe tty_lock +EXPORT_SYMBOL vmlinux 0x9450d3d8 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x94631b98 qman_irqsource_get +EXPORT_SYMBOL vmlinux 0x946b8ab7 kobject_put +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949c6264 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x94a676bb padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x94a8b467 mddev_congested +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94c0c7ef __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94d2d556 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x94d78b7c qman_create_cgr +EXPORT_SYMBOL vmlinux 0x94de9f45 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x94f2fdb1 page_put_link +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951b259b tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954e2f1b of_parse_phandle +EXPORT_SYMBOL vmlinux 0x954f969f iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x9579ef06 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x9580f7bc vm_event_states +EXPORT_SYMBOL vmlinux 0x959c2ed7 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0x95a0ca83 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x95d528c7 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x95e93dac jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x96329748 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x963f71c1 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x965497a9 sock_no_getname +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96c97e5f __pci_register_driver +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96f4ce5c xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x96fdc509 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x970859eb icmp_send +EXPORT_SYMBOL vmlinux 0x971a21f4 page_address +EXPORT_SYMBOL vmlinux 0x97226217 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97497c41 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x97506b32 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97910672 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x9792187c elv_register_queue +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a8e503 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x97ab9805 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x97ae61e5 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b864a4 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x97ed418b __quota_error +EXPORT_SYMBOL vmlinux 0x97fd61ba pci_assign_resource +EXPORT_SYMBOL vmlinux 0x982a7e05 dev_mc_del +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x989e20f6 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x98a5648d tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x98bbf027 netlink_ack +EXPORT_SYMBOL vmlinux 0x98f2c718 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x991a0251 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995b4be7 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x9975555b blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99ffa8a1 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x9a0839af serio_reconnect +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a26ff37 tty_throttle +EXPORT_SYMBOL vmlinux 0x9a275bb5 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x9a440c6f bio_sector_offset +EXPORT_SYMBOL vmlinux 0x9a50e387 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x9a55b09f inc_nlink +EXPORT_SYMBOL vmlinux 0x9a5adc04 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a6ec135 eth_type_trans +EXPORT_SYMBOL vmlinux 0x9a7a2393 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x9a8d3511 block_commit_write +EXPORT_SYMBOL vmlinux 0x9ad0e2c9 input_register_device +EXPORT_SYMBOL vmlinux 0x9adbff27 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x9adfa636 dev_add_offload +EXPORT_SYMBOL vmlinux 0x9ae6e9cf gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x9ae7f7ac fput +EXPORT_SYMBOL vmlinux 0x9b2c8c0a key_task_permission +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b41c73d simple_pin_fs +EXPORT_SYMBOL vmlinux 0x9b4bd89a rtnl_create_link +EXPORT_SYMBOL vmlinux 0x9b655050 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b74597a mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba55f79 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9beb7d8e security_file_permission +EXPORT_SYMBOL vmlinux 0x9bf496ed find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x9bfa9bbd security_path_symlink +EXPORT_SYMBOL vmlinux 0x9c2591c9 generic_permission +EXPORT_SYMBOL vmlinux 0x9c3849a2 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x9c45bbd3 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc99288 fm_unbind +EXPORT_SYMBOL vmlinux 0x9ccdead9 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x9cd02fe9 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x9cdc26d5 give_up_console +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ce81f01 noop_fsync +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cec5961 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d02272c tty_write_room +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1dee30 idr_get_next +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6cb67d sock_edemux +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d88b34e mdio_bus_type +EXPORT_SYMBOL vmlinux 0x9d9922f9 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x9da01691 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9dc0653e bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x9deabc83 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x9deb7810 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9df5d817 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x9dfc1edd bman_irqsource_add +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e114291 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x9e1e1dde find_lock_page +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e586d14 __nla_reserve +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6c008c genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x9e7235eb security_task_getsecid +EXPORT_SYMBOL vmlinux 0x9e765f4e cpufreq_cooling_register +EXPORT_SYMBOL vmlinux 0x9e992210 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x9e9bba23 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb33ead phy_device_create +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9ed8b23d nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x9ef74ae2 inet_put_port +EXPORT_SYMBOL vmlinux 0x9f0b1229 sock_create_kern +EXPORT_SYMBOL vmlinux 0x9f0c5ecf fm_set_rx_port_params +EXPORT_SYMBOL vmlinux 0x9f106929 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f3b78c4 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f788a5d sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x9f8d2ca0 simple_statfs +EXPORT_SYMBOL vmlinux 0x9f958d73 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa9cbc9 __elv_add_request +EXPORT_SYMBOL vmlinux 0x9fafe6b2 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fcaf4e6 keyring_clear +EXPORT_SYMBOL vmlinux 0x9fdd1d3b get_gendisk +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe8bd1d blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x9ff0f7f4 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa02814ca qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0xa029c788 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xa03cc750 md_register_thread +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04c8710 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07d5415 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0805c16 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xa082ee82 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xa09a911a fasync_helper +EXPORT_SYMBOL vmlinux 0xa09f8be2 qman_affine_cpus +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b978da insert_inode_locked +EXPORT_SYMBOL vmlinux 0xa0cc465b tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d23729 bio_reset +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa110c934 ns_capable +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12f1aa3 bioset_create +EXPORT_SYMBOL vmlinux 0xa13f915e input_unregister_handler +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1a1c962 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c30450 skb_split +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1da8597 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1fa40e6 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20d7f89 files_lglock +EXPORT_SYMBOL vmlinux 0xa2146153 netdev_info +EXPORT_SYMBOL vmlinux 0xa24ed932 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa27dd4f4 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xa2801567 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28c95a5 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2ac0b15 journal_flush +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2d1b4ec fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xa2da54b0 mach_p1022_rdk +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f65b04 d_make_root +EXPORT_SYMBOL vmlinux 0xa2f93a4f kobject_del +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa30e2eff inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa3448f84 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa35df983 do_truncate +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b7e81b end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xa3c1eabd blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa405ea75 elv_rb_del +EXPORT_SYMBOL vmlinux 0xa40c890f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xa41e8ccf textsearch_prepare +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4401ab8 mach_p1021_rdb_pc +EXPORT_SYMBOL vmlinux 0xa444f8da security_inode_readlink +EXPORT_SYMBOL vmlinux 0xa445f5ca generic_write_end +EXPORT_SYMBOL vmlinux 0xa44d8032 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xa46c8180 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47be1d1 pci_clear_master +EXPORT_SYMBOL vmlinux 0xa47e2fdd ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xa482092d devm_clk_put +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4aaf32a __pskb_copy +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f42748 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa50d328a nf_log_unregister +EXPORT_SYMBOL vmlinux 0xa52eb976 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xa52f3bd6 vfs_fsync +EXPORT_SYMBOL vmlinux 0xa531cd10 mdiobus_write +EXPORT_SYMBOL vmlinux 0xa534db40 of_device_register +EXPORT_SYMBOL vmlinux 0xa536590f generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xa53cf804 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xa5410ce4 mach_p1024_rdb +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa554a404 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa578f7a1 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xa57d1091 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xa585faa3 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xa58baf25 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xa591737e fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xa5969be5 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59f26e8 serio_interrupt +EXPORT_SYMBOL vmlinux 0xa5b2c56c dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xa5dd45f3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xa605d0ab noop_qdisc +EXPORT_SYMBOL vmlinux 0xa6503cd2 set_user_nice +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa6732b42 get_disk +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa691f168 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa698b1d8 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xa6b2ddfd ida_simple_get +EXPORT_SYMBOL vmlinux 0xa6bbe7e3 dev_err +EXPORT_SYMBOL vmlinux 0xa6f1750c fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xa716c9bf mdiobus_read +EXPORT_SYMBOL vmlinux 0xa71849cd tcf_hash_create +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72c271b bio_put +EXPORT_SYMBOL vmlinux 0xa7338763 agp_copy_info +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa73d289c blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa73e4650 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xa75d0512 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xa773b6f0 elv_rb_find +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7debcb2 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa854c51b textsearch_register +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87bfc9c journal_check_used_features +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa91a9860 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa953297d __frontswap_load +EXPORT_SYMBOL vmlinux 0xa9568345 _dev_info +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa95e820e devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xa96fc6c7 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xa97a89aa setattr_copy +EXPORT_SYMBOL vmlinux 0xa9a86385 tty_register_driver +EXPORT_SYMBOL vmlinux 0xa9bb875e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xa9d75b60 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xa9fb9081 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xaa0268db inet_getname +EXPORT_SYMBOL vmlinux 0xaa2642ee tty_devnum +EXPORT_SYMBOL vmlinux 0xaa3b4bc9 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4e9c90 page_symlink +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa851344 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xaa8ab53a xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xaa97dcb3 vga_put +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaac3187e xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xaad69e23 qman_fq_state +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab056a34 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab42a29a unregister_filesystem +EXPORT_SYMBOL vmlinux 0xab5b1d3a sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab7b1486 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xab7c55b8 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xab8a43b1 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xab8d286a blk_delay_queue +EXPORT_SYMBOL vmlinux 0xab92b54a vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xab9774e4 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xabbb0b3c journal_ack_err +EXPORT_SYMBOL vmlinux 0xabc359fa blk_start_request +EXPORT_SYMBOL vmlinux 0xabc65972 path_get +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabeb9561 ida_init +EXPORT_SYMBOL vmlinux 0xac08ce53 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a5912 unlock_rename +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac280786 elv_rb_add +EXPORT_SYMBOL vmlinux 0xac2882ca xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xac664d9f fs_bio_set +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac7b5725 i2c_release_client +EXPORT_SYMBOL vmlinux 0xac951c60 idr_init +EXPORT_SYMBOL vmlinux 0xaca8cde4 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd0a79a of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xacde6340 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xace1aeab serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad08c058 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad3379e0 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad85f875 get_tz_trend +EXPORT_SYMBOL vmlinux 0xad88290b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xad90f33a fm_port_get_base_addr +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb4b6c0 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xadd3d9ad scsi_device_put +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xadfc958f swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xae03cf1b pci_enable_bridges +EXPORT_SYMBOL vmlinux 0xae28d4fe sk_run_filter +EXPORT_SYMBOL vmlinux 0xae2a690a netdev_features_change +EXPORT_SYMBOL vmlinux 0xae2ff98e mach_p1021_mds +EXPORT_SYMBOL vmlinux 0xae403d5f sock_no_accept +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae5db83f sock_kmalloc +EXPORT_SYMBOL vmlinux 0xae637e35 register_qdisc +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae787a45 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xae7b4a67 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xaea84b0e seq_putc +EXPORT_SYMBOL vmlinux 0xaebd8b29 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaecf00c9 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xaeec4cf6 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf1b3bf4 setup_new_exec +EXPORT_SYMBOL vmlinux 0xaf238051 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xaf256219 misc_register +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf30d33c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf46d2db pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xaf644204 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xaf7972b3 drop_super +EXPORT_SYMBOL vmlinux 0xaf7dd0ba neigh_compat_output +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafd01e14 qman_retire_fq +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd70bf2 qman_dca +EXPORT_SYMBOL vmlinux 0xafe23811 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb01b3148 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xb02a33a4 generic_getxattr +EXPORT_SYMBOL vmlinux 0xb031b1a2 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0adbc17 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xb0b4c73b agp_backend_release +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0bd94f0 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xb0d71eb4 mach_stx_gp3 +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb158e0c8 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb160d3c3 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb183c2f7 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xb185447a elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xb1975ddd tcp_prot +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb19e5de8 dev_get_stats +EXPORT_SYMBOL vmlinux 0xb1c29da2 inode_permission +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 0xb1e715cd input_flush_device +EXPORT_SYMBOL vmlinux 0xb1f7ca86 netif_skb_features +EXPORT_SYMBOL vmlinux 0xb1f8424f inode_init_once +EXPORT_SYMBOL vmlinux 0xb1fc507d skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xb1fea5f1 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xb20daa54 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xb20f703a mpage_writepages +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2544232 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb258a7d1 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xb25b22cc kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb26321cc __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26d0cd4 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xb272994e skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2f0f417 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0xb2f2435e input_open_device +EXPORT_SYMBOL vmlinux 0xb2fa14a3 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xb32c2442 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xb32d5d1e dev_mc_add +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb33b0efb mach_p1020_rdb_pc +EXPORT_SYMBOL vmlinux 0xb35bbb75 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xb36d42ea inode_get_bytes +EXPORT_SYMBOL vmlinux 0xb37d3d65 input_register_handler +EXPORT_SYMBOL vmlinux 0xb3c4c92e pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb3d123d6 fm_get_tx_port_channel +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4138db4 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4286ea6 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0xb43c9411 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4c2f25e abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb4dfdc6a sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xb4f686d6 bdgrab +EXPORT_SYMBOL vmlinux 0xb50cd902 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xb5172ce8 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xb5190003 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb5199ded mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xb51ababe netif_rx +EXPORT_SYMBOL vmlinux 0xb525fd7f blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xb54088a3 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb549466a generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57e1ad8 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c7c022 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xb5c92ec0 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5ef49da mac_find_mode +EXPORT_SYMBOL vmlinux 0xb6010439 send_sig_info +EXPORT_SYMBOL vmlinux 0xb60bad74 flush_signals +EXPORT_SYMBOL vmlinux 0xb6223dae vfs_write +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64d268f qman_schedule_fq +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb6694005 genphy_resume +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67d98a8 check_disk_size_change +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 0xb690fa57 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cb8ea9 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0xb6d2eafb qman_irqsource_add +EXPORT_SYMBOL vmlinux 0xb6d43af9 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xb6db2161 agp_free_page_array +EXPORT_SYMBOL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL vmlinux 0xb7256f1c mark_info_dirty +EXPORT_SYMBOL vmlinux 0xb72fbf28 __devm_release_region +EXPORT_SYMBOL vmlinux 0xb7416276 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xb746b099 of_device_is_available +EXPORT_SYMBOL vmlinux 0xb7481522 bio_split +EXPORT_SYMBOL vmlinux 0xb74ddc7c tty_port_init +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb75ab0cd page_follow_link_light +EXPORT_SYMBOL vmlinux 0xb75c655d alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xb775d092 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb77a831c security_path_mknod +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7dbcdf0 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xb7dfc18b inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xb806d8cc mb_cache_create +EXPORT_SYMBOL vmlinux 0xb80ce51a mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8228141 genl_notify +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb85183b8 dm_io +EXPORT_SYMBOL vmlinux 0xb8654f91 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xb887a991 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xb89ab9f9 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xb89e5474 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb8a5f501 md_write_start +EXPORT_SYMBOL vmlinux 0xb8a9c3dc lock_sock_fast +EXPORT_SYMBOL vmlinux 0xb8d892ad register_netdevice +EXPORT_SYMBOL vmlinux 0xb8d9021e dmam_pool_create +EXPORT_SYMBOL vmlinux 0xb8e43289 mmc_resume_host +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb903c045 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xb91a82d0 pci_disable_device +EXPORT_SYMBOL vmlinux 0xb9257bb4 idr_pre_get +EXPORT_SYMBOL vmlinux 0xb94877ca pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xb95c06a8 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xb967e96e flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xb97b94ab input_get_keycode +EXPORT_SYMBOL vmlinux 0xb97ef9f4 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb999a40a dqput +EXPORT_SYMBOL vmlinux 0xb9c7e10a padata_add_cpu +EXPORT_SYMBOL vmlinux 0xb9d5e027 qman_eqcr_is_empty +EXPORT_SYMBOL vmlinux 0xba120ca7 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xba2625ea mach_p2020_ds +EXPORT_SYMBOL vmlinux 0xba2eed42 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5f149b __neigh_create +EXPORT_SYMBOL vmlinux 0xba8b1436 sk_dst_check +EXPORT_SYMBOL vmlinux 0xbaac3c69 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xbab24e1f neigh_seq_next +EXPORT_SYMBOL vmlinux 0xbaddef7d blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xbaeffa05 qid_eq +EXPORT_SYMBOL vmlinux 0xbaf7fc18 mount_subtree +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb235610 nf_register_hook +EXPORT_SYMBOL vmlinux 0xbb282fd1 arp_tbl +EXPORT_SYMBOL vmlinux 0xbb3e71f7 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5d3977 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xbb672c3f kill_bdev +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb73de81 mount_pseudo +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbb18bf4 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xbbb46979 pci_request_region +EXPORT_SYMBOL vmlinux 0xbbbdd45d generic_writepages +EXPORT_SYMBOL vmlinux 0xbbd3ec82 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xbbef6b4e mach_xes_mpc8572 +EXPORT_SYMBOL vmlinux 0xbc090d0f dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xbc135a61 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3a4d2b scsi_free_command +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc4a4daa uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xbc5e49c5 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xbc922943 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0xbcaeebf0 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xbcaff43f kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xbcb9dab4 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xbcbe65e8 netif_napi_del +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbd05bcdb send_sig +EXPORT_SYMBOL vmlinux 0xbd110835 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xbd3cc8bf bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xbd6b96db blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdacef61 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xbdb7f3e4 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdc43cf0 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xbdf271cc scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xbdf9e2b1 try_module_get +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe14d6e7 arp_send +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe3c8737 read_cache_page +EXPORT_SYMBOL vmlinux 0xbe43f58d filemap_flush +EXPORT_SYMBOL vmlinux 0xbe4454fa nobh_write_end +EXPORT_SYMBOL vmlinux 0xbe4dbecf blk_complete_request +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe82f30f abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xbe83f78f tty_mutex +EXPORT_SYMBOL vmlinux 0xbe9ec7ed generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xbeafcf8a netif_device_attach +EXPORT_SYMBOL vmlinux 0xbebd20cc ppp_unit_number +EXPORT_SYMBOL vmlinux 0xbed117df pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf24cf20 vfs_readv +EXPORT_SYMBOL vmlinux 0xbf636d58 wireless_send_event +EXPORT_SYMBOL vmlinux 0xbf702281 key_link +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf82dfdb write_cache_pages +EXPORT_SYMBOL vmlinux 0xbf8430a9 __module_get +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbf9c921f get_agp_version +EXPORT_SYMBOL vmlinux 0xbf9cae43 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xbfa5625e sock_no_bind +EXPORT_SYMBOL vmlinux 0xbfb60aa5 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc3b31b __page_symlink +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfc45b4e sk_free +EXPORT_SYMBOL vmlinux 0xbfddc042 pci_get_device +EXPORT_SYMBOL vmlinux 0xbfe499b9 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc032cd3c pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xc0595ce5 netdev_err +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07c72ab get_unmapped_area +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0846850 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xc087460e key_alloc +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a88859 vfs_open +EXPORT_SYMBOL vmlinux 0xc0bc0b07 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xc0be9714 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xc0ca6045 set_security_override +EXPORT_SYMBOL vmlinux 0xc0f75a7b inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xc109498f ___pskb_trim +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12c63dc request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1694807 bdi_unregister +EXPORT_SYMBOL vmlinux 0xc19625ba scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xc19eb435 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xc1a60711 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xc1ba8179 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d90f76 __alloc_skb +EXPORT_SYMBOL vmlinux 0xc1fa7284 sock_no_connect +EXPORT_SYMBOL vmlinux 0xc22222bb mii_link_ok +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc22dfda4 bh_submit_read +EXPORT_SYMBOL vmlinux 0xc23dc0de kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24e7d9a fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2b9c17b fail_migrate_page +EXPORT_SYMBOL vmlinux 0xc2bbe3ab decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xc2c3e448 ip_fragment +EXPORT_SYMBOL vmlinux 0xc2ce30a0 blk_start_queue +EXPORT_SYMBOL vmlinux 0xc2d04d78 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc2d0f6ad pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f14e20 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fa769f dev_mc_flush +EXPORT_SYMBOL vmlinux 0xc314eb9f devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xc340c808 security_path_unlink +EXPORT_SYMBOL vmlinux 0xc34dd693 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc350cbfc fifo_set_limit +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc39ddc87 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xc3a8d533 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xc3f170db security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xc40b426a uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xc40eb367 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc43ac8ac bio_map_user +EXPORT_SYMBOL vmlinux 0xc447e94f tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xc453bcfd pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc46ed43c swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc49723dc jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49bddf8 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc4a0c2d8 scsi_get_command +EXPORT_SYMBOL vmlinux 0xc4a1fccb sock_alloc_file +EXPORT_SYMBOL vmlinux 0xc4a5dc0b mach_p2020_rdb_pc +EXPORT_SYMBOL vmlinux 0xc4bc6e47 unlock_buffer +EXPORT_SYMBOL vmlinux 0xc4d681ae generic_removexattr +EXPORT_SYMBOL vmlinux 0xc4f862d5 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xc4fc6472 idr_remove_all +EXPORT_SYMBOL vmlinux 0xc5086d35 idr_destroy +EXPORT_SYMBOL vmlinux 0xc515d976 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xc52fe87f i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc55ff9eb tty_port_put +EXPORT_SYMBOL vmlinux 0xc567d2cc pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc57ef188 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xc5b9422e unregister_key_type +EXPORT_SYMBOL vmlinux 0xc5c08eab dpa_uio_bman +EXPORT_SYMBOL vmlinux 0xc5c9ef88 simple_unlink +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ede5c5 journal_extend +EXPORT_SYMBOL vmlinux 0xc5f31943 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xc5f938e8 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xc6094df6 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xc6162973 __ps2_command +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6439606 task_nice +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc6907159 d_find_alias +EXPORT_SYMBOL vmlinux 0xc69fe189 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b533a0 free_buffer_head +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d316d9 default_llseek +EXPORT_SYMBOL vmlinux 0xc6e9effb seq_open +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc71f1c74 release_sock +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc73f8637 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xc7422351 neigh_for_each +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc78a943a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xc78b3f43 blk_put_request +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c353b7 blk_free_tags +EXPORT_SYMBOL vmlinux 0xc7d9bca1 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ee605c lro_receive_skb +EXPORT_SYMBOL vmlinux 0xc7fe4d9d __devm_request_region +EXPORT_SYMBOL vmlinux 0xc8082942 km_policy_notify +EXPORT_SYMBOL vmlinux 0xc81e5dc6 qman_query_fq +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83fa871 vfs_mknod +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc8862c5c phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xc88a4794 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xc88e4948 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a5d63a blk_end_request_all +EXPORT_SYMBOL vmlinux 0xc8a917ae qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xc8b38d82 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b9a76b bman_recovery_exit +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8ca104d eth_change_mtu +EXPORT_SYMBOL vmlinux 0xc8d08f83 tcp_poll +EXPORT_SYMBOL vmlinux 0xc8f4a97e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc9231ab1 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xc925a733 kfree_skb +EXPORT_SYMBOL vmlinux 0xc93daf81 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xc9450f81 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xc966dc62 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc96fb6d0 qman_start_dequeues +EXPORT_SYMBOL vmlinux 0xc974fab4 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xc97d1808 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xc9879026 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9add29c dev_deactivate +EXPORT_SYMBOL vmlinux 0xc9aeb68f pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xc9caa73f __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc9eb98ce ping_prot +EXPORT_SYMBOL vmlinux 0xc9fe8889 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xca1b6b41 proc_symlink +EXPORT_SYMBOL vmlinux 0xca31fd89 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xca3e4cb7 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xca4cd29c of_dev_put +EXPORT_SYMBOL vmlinux 0xca5967e3 vm_stat +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca887005 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xca8cdd2d free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcaed0e95 aio_complete +EXPORT_SYMBOL vmlinux 0xcaf5c7b8 mmc_release_host +EXPORT_SYMBOL vmlinux 0xcafdab38 tty_set_operations +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb19df9c ip6_frag_match +EXPORT_SYMBOL vmlinux 0xcb2e7f47 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xcb38cbd3 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xcb413a2b dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb993b22 elevator_init +EXPORT_SYMBOL vmlinux 0xcba16712 dquot_resume +EXPORT_SYMBOL vmlinux 0xcbaaf367 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xcbb5e57d switch_mmu_context +EXPORT_SYMBOL vmlinux 0xcbc46a51 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xcbc6a611 request_firmware +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbdb5537 agp_enable +EXPORT_SYMBOL vmlinux 0xcbed30b5 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xcc00ba31 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xcc13c7c7 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7ddd76 blk_end_request +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcca6489c dquot_release +EXPORT_SYMBOL vmlinux 0xccb16b5c register_exec_domain +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd35475 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xccdcd76f padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xccef5c57 sock_register +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd11d949 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3a5771 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xcd64a61b cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xcd6ab17a d_instantiate +EXPORT_SYMBOL vmlinux 0xcd6cf7a8 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xcd7fa3fd get_io_context +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd918962 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xcd94028b flush_icache_user_range +EXPORT_SYMBOL vmlinux 0xcd97e3a7 free_netdev +EXPORT_SYMBOL vmlinux 0xcd99f6af dev_warn +EXPORT_SYMBOL vmlinux 0xcdabafe7 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xcdb31a22 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xcdc04540 register_nls +EXPORT_SYMBOL vmlinux 0xcdc1985f input_close_device +EXPORT_SYMBOL vmlinux 0xcddddc99 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xcddfe10a netif_device_detach +EXPORT_SYMBOL vmlinux 0xcde0cef6 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdf2eed3 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3636b0 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xce580620 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce666d8f mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xce8325d0 done_path_create +EXPORT_SYMBOL vmlinux 0xced51bbd inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf059929 cdev_add +EXPORT_SYMBOL vmlinux 0xcf0d4ced I_BDEV +EXPORT_SYMBOL vmlinux 0xcf109001 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf5ad2a3 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xcf6c6e8f journal_start_commit +EXPORT_SYMBOL vmlinux 0xcf7c9645 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xcf92eec4 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xcf94235a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xcfaa75b8 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xcfcb24c6 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xcfd4114f abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xcfdc9b41 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xd0143faa do_splice_direct +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0219477 phy_connect +EXPORT_SYMBOL vmlinux 0xd0467bd4 kdb_current_task +EXPORT_SYMBOL vmlinux 0xd05d2d73 ida_get_new +EXPORT_SYMBOL vmlinux 0xd06c4c14 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0abc780 nla_reserve +EXPORT_SYMBOL vmlinux 0xd0c9ea44 fsl_lbc_ctrl_dev +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 0xd0fd516a register_con_driver +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10682c9 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xd116d403 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd1174d29 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd138719c qman_recovery_exit +EXPORT_SYMBOL vmlinux 0xd13faca8 km_new_mapping +EXPORT_SYMBOL vmlinux 0xd14f78f6 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1b0c81c register_framebuffer +EXPORT_SYMBOL vmlinux 0xd1d038ac of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xd1d269fb tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1ef4284 ip_defrag +EXPORT_SYMBOL vmlinux 0xd1f234ca generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xd1f439c0 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xd208ebae skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd253519d cdev_del +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25811f7 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xd25951e9 dquot_file_open +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd260542f read_cache_pages +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2928cc2 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xd292dd3a ida_remove +EXPORT_SYMBOL vmlinux 0xd2985b70 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xd2b7f9e3 fm_port_unbind +EXPORT_SYMBOL vmlinux 0xd2cad79c f_setown +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2d6729d would_dump +EXPORT_SYMBOL vmlinux 0xd2e15df4 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd326ae2d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xd337d094 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xd381c912 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xd3848d73 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xd3a8f257 bio_pair_release +EXPORT_SYMBOL vmlinux 0xd3bcd551 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xd3c14961 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xd3c6b3e2 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xd3c747a1 qman_irqsource_remove +EXPORT_SYMBOL vmlinux 0xd3cd7276 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xd3d3a477 posix_acl_init +EXPORT_SYMBOL vmlinux 0xd3f605d3 skb_push +EXPORT_SYMBOL vmlinux 0xd3fc2579 scsi_register +EXPORT_SYMBOL vmlinux 0xd404571c blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xd41ea51f ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xd4259149 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xd43a44e3 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd43e2d0e of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xd462fb69 proc_mkdir +EXPORT_SYMBOL vmlinux 0xd478790d bio_add_page +EXPORT_SYMBOL vmlinux 0xd47e505a build_skb +EXPORT_SYMBOL vmlinux 0xd48b6bb4 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd4a6f7ad udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xd4b3f540 of_match_device +EXPORT_SYMBOL vmlinux 0xd4ee5068 seq_read +EXPORT_SYMBOL vmlinux 0xd52239ad qman_set_null_cb +EXPORT_SYMBOL vmlinux 0xd54a70a2 from_kqid_munged +EXPORT_SYMBOL vmlinux 0xd566f997 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xd5788f36 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd608366d sockfd_lookup +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd636f926 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xd6442d0b ip_options_compile +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6776c40 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xd6852327 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xd68528dc sk_filter +EXPORT_SYMBOL vmlinux 0xd6942835 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd697ea7f init_buffer +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd69dfef3 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xd6b1f16e ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd6c25f50 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xd6c961cb mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xd6d0247f dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6de4ff5 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd7119409 dev_trans_start +EXPORT_SYMBOL vmlinux 0xd711fc35 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xd728d9fc swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xd72a38a2 elv_add_request +EXPORT_SYMBOL vmlinux 0xd75b544b neigh_destroy +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd77dc60b tcf_register_action +EXPORT_SYMBOL vmlinux 0xd7854624 sock_release +EXPORT_SYMBOL vmlinux 0xd790461a pci_dev_driver +EXPORT_SYMBOL vmlinux 0xd7971539 udp_disconnect +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7aa36d8 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd7b788d8 simple_open +EXPORT_SYMBOL vmlinux 0xd7c217e2 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd8000511 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xd804d3eb d_genocide +EXPORT_SYMBOL vmlinux 0xd80dbd11 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xd80f5f9a writeback_in_progress +EXPORT_SYMBOL vmlinux 0xd81ee570 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd8209df0 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xd823da9b mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xd839119c xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd889e049 dquot_destroy +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f9f11d kernel_listen +EXPORT_SYMBOL vmlinux 0xd8fcbe7f generic_ro_fops +EXPORT_SYMBOL vmlinux 0xd9087366 account_page_writeback +EXPORT_SYMBOL vmlinux 0xd90a3dba simple_lookup +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd94292b0 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xd942a69c truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd94a9425 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xd94d4ff0 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xd95c537b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xd964597d gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd9855241 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98d6546 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd9a7d7d8 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9cc6d7e vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d2c38e d_delete +EXPORT_SYMBOL vmlinux 0xd9e61fcb qid_valid +EXPORT_SYMBOL vmlinux 0xd9f55785 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xd9f5a39f generic_fillattr +EXPORT_SYMBOL vmlinux 0xda1ab648 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4e4835 skb_make_writable +EXPORT_SYMBOL vmlinux 0xda64d6bb elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8d83c7 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xda8db686 __bforget +EXPORT_SYMBOL vmlinux 0xda8f4038 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xda9731e9 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabed926 __breadahead +EXPORT_SYMBOL vmlinux 0xdac8bbd9 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xdad4f694 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb134b1b swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xdb13d33f journal_force_commit +EXPORT_SYMBOL vmlinux 0xdb1b2f7b blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xdb1f3625 rt6_lookup +EXPORT_SYMBOL vmlinux 0xdb528e49 input_register_handle +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb79da27 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xdb7e3fa5 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xdb817de7 mach_mpc85xx_ads +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbb9a2cc pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xdbc1a586 devm_usb_get_phy +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc05e24b clear_nlink +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4f9384 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc732024 irq_stat +EXPORT_SYMBOL vmlinux 0xdc748933 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xdc88b1aa input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca90d5e of_phy_attach +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcbeab0d dev_activate +EXPORT_SYMBOL vmlinux 0xdcc70d22 set_binfmt +EXPORT_SYMBOL vmlinux 0xdccda5b9 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xdce83f68 mach_bsc9131_rdb +EXPORT_SYMBOL vmlinux 0xdd021f0d blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0fe395 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd1d5cbb xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd32bc11 vc_resize +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd54e4f7 inet6_getname +EXPORT_SYMBOL vmlinux 0xdd853483 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xdd8a2bb7 set_create_files_as +EXPORT_SYMBOL vmlinux 0xdda9cbd1 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xddb55c4b submit_bh +EXPORT_SYMBOL vmlinux 0xddbfec02 single_open +EXPORT_SYMBOL vmlinux 0xddcfbfe3 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xddd325f4 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xdddb85e9 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xddf24a79 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xddf713e1 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xddfceafb mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xde05f04c netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xde0cf3c3 journal_stop +EXPORT_SYMBOL vmlinux 0xde1592d2 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde9260ee pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde939136 genphy_read_status +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb48658 pci_pme_active +EXPORT_SYMBOL vmlinux 0xded9dbd3 key_unlink +EXPORT_SYMBOL vmlinux 0xdefa0ad8 qman_testwrite_cgr +EXPORT_SYMBOL vmlinux 0xdf0f5c0f jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xdf13971c dpa_uio_qman +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4bcb4e led_set_brightness +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6a5c5d fddi_type_trans +EXPORT_SYMBOL vmlinux 0xdf6adc91 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5808a mntput +EXPORT_SYMBOL vmlinux 0xdfcf3a29 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xe00b9c53 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe0270d58 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xe0453270 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xe046a29f generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0527995 __netif_schedule +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0630f24 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xe06595e7 pci_map_rom +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0809ef5 dev_add_pack +EXPORT_SYMBOL vmlinux 0xe0858fea mmc_free_host +EXPORT_SYMBOL vmlinux 0xe0963241 dev_emerg +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c25c97 generic_show_options +EXPORT_SYMBOL vmlinux 0xe0cb7032 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe0eb2ee1 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xe0fdd2eb security_path_rmdir +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe14015bf mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xe1474106 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18268fc inet_bind +EXPORT_SYMBOL vmlinux 0xe196c573 secpath_dup +EXPORT_SYMBOL vmlinux 0xe1a29761 __scm_send +EXPORT_SYMBOL vmlinux 0xe1c4992c mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xe1d3a2c7 dev_set_group +EXPORT_SYMBOL vmlinux 0xe1dd6feb i2c_use_client +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2173242 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe265d476 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xe27b030d journal_set_features +EXPORT_SYMBOL vmlinux 0xe27fd2ac register_filesystem +EXPORT_SYMBOL vmlinux 0xe286d6b9 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xe297888f sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xe29835ab ps2_begin_command +EXPORT_SYMBOL vmlinux 0xe299d496 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xe2a9a185 dentry_unhash +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2b13236 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2c0bc9d remove_arg_zero +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 0xe319a5a4 dev_open +EXPORT_SYMBOL vmlinux 0xe31aa3a2 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe350dfd1 register_cdrom +EXPORT_SYMBOL vmlinux 0xe37ec17e pci_iounmap +EXPORT_SYMBOL vmlinux 0xe382cd8f simple_transaction_read +EXPORT_SYMBOL vmlinux 0xe385ef1a kobject_init +EXPORT_SYMBOL vmlinux 0xe385f82d mount_nodev +EXPORT_SYMBOL vmlinux 0xe39f0c57 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xe3cefae0 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3de1b6b sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xe3de50bd qman_destroy_fq +EXPORT_SYMBOL vmlinux 0xe3e3cf8f alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xe3ee8880 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xe412d5d2 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xe4328be8 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xe45e21d4 tcf_hash_release +EXPORT_SYMBOL vmlinux 0xe4761593 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe492e46c devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xe49808b4 qman_poll +EXPORT_SYMBOL vmlinux 0xe4a20f51 agp_free_memory +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4b73148 pci_disable_obff +EXPORT_SYMBOL vmlinux 0xe4b79bc3 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xe4b7e785 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0xe4beac32 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xe4c22669 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5268340 dm_register_target +EXPORT_SYMBOL vmlinux 0xe527e0ee __napi_complete +EXPORT_SYMBOL vmlinux 0xe53bd52e xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5557c33 lock_may_read +EXPORT_SYMBOL vmlinux 0xe55abe1c sg_miter_stop +EXPORT_SYMBOL vmlinux 0xe564c9fd lookup_bdev +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5899216 pipe_unlock +EXPORT_SYMBOL vmlinux 0xe594b7ac bio_endio +EXPORT_SYMBOL vmlinux 0xe599e8b2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xe5a0e256 set_page_dirty +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ca5576 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xe5cfe885 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5e3be93 agp_create_memory +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f0a1e4 security_path_truncate +EXPORT_SYMBOL vmlinux 0xe6358310 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe63a2acc __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe65009c0 phy_attach +EXPORT_SYMBOL vmlinux 0xe662dbcc zero_fill_bio +EXPORT_SYMBOL vmlinux 0xe68854df twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xe69366a7 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xe6970eb2 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6b960d2 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6deb2cf security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe70f5969 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xe7148710 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xe71a83c2 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xe71dde04 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xe7273fb1 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe73fa0a5 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xe76cd05a max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe7875f33 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xe7949fa2 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b94e82 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7ea3c23 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xe7f613cf blk_init_queue +EXPORT_SYMBOL vmlinux 0xe7f736c6 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xe7fad5e4 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xe803ed59 init_net +EXPORT_SYMBOL vmlinux 0xe8066939 inode_init_owner +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe822bdd5 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xe8236c85 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe8491795 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xe85e6b86 skb_queue_head +EXPORT_SYMBOL vmlinux 0xe8641ed1 ata_port_printk +EXPORT_SYMBOL vmlinux 0xe88057a0 mmc_start_req +EXPORT_SYMBOL vmlinux 0xe884c845 __get_page_tail +EXPORT_SYMBOL vmlinux 0xe8a3883c inet6_protos +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b82fe0 bman_ip_rev +EXPORT_SYMBOL vmlinux 0xe8bdd0c9 user_path_create +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe94c70c4 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xe950499d qman_release_fqid_range +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe960c8d8 phy_driver_register +EXPORT_SYMBOL vmlinux 0xe96ee616 mpage_writepage +EXPORT_SYMBOL vmlinux 0xe978354e thaw_bdev +EXPORT_SYMBOL vmlinux 0xe9963748 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xe9a03ca3 open_exec +EXPORT_SYMBOL vmlinux 0xe9a5f343 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xe9e3b437 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe9e64919 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe9f3880e block_truncate_page +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea238b5f try_to_release_page +EXPORT_SYMBOL vmlinux 0xea40d16e kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xea5cb428 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea8d686b twl6040_power +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa9bc97 search_binary_handler +EXPORT_SYMBOL vmlinux 0xeac6a1eb dev_load +EXPORT_SYMBOL vmlinux 0xeac90d8a of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xeade4923 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xeb0f5600 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xeb183d0a of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb47e982 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5ad42a request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xeb5ecb61 tty_register_device +EXPORT_SYMBOL vmlinux 0xeb61ee15 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xeb658f5a serio_unregister_port +EXPORT_SYMBOL vmlinux 0xeb685451 netdev_state_change +EXPORT_SYMBOL vmlinux 0xeb72406d i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xeb784ca5 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xeba67583 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebded2a9 __sock_create +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec5a41b9 brioctl_set +EXPORT_SYMBOL vmlinux 0xec655bda kill_litter_super +EXPORT_SYMBOL vmlinux 0xec8354cd mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xeca7b9d8 dump_write +EXPORT_SYMBOL vmlinux 0xecb90020 mach_tqm85xx +EXPORT_SYMBOL vmlinux 0xecc1449e bm_pool_set +EXPORT_SYMBOL vmlinux 0xecce1006 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0xecd67cec schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed009a73 netdev_crit +EXPORT_SYMBOL vmlinux 0xed0a681d mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xed0a70db xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xed265d8f bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xed423091 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xed4bca78 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed955972 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xed988334 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedb70354 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc6b713 fb_get_mode +EXPORT_SYMBOL vmlinux 0xedcb0a32 touch_atime +EXPORT_SYMBOL vmlinux 0xedf77662 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xee028254 inet_frag_find +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee7895a0 path_is_under +EXPORT_SYMBOL vmlinux 0xee78fa0d scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xee95a2ed posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xee9e7a49 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xeea0c496 uart_resume_port +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeee527db scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef2cc503 key_validate +EXPORT_SYMBOL vmlinux 0xef683a8c __blk_end_request +EXPORT_SYMBOL vmlinux 0xefa2e5c0 bdget +EXPORT_SYMBOL vmlinux 0xefc1ae23 netdev_change_features +EXPORT_SYMBOL vmlinux 0xefd2b19c ip6_xmit +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe1cc5e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00da992 journal_release_buffer +EXPORT_SYMBOL vmlinux 0xf0365f19 generic_make_request +EXPORT_SYMBOL vmlinux 0xf03a960d serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xf03ff711 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0b88829 phy_stop +EXPORT_SYMBOL vmlinux 0xf0c908ce devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xf0c922cc cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xf0d3f945 devm_usb_put_phy +EXPORT_SYMBOL vmlinux 0xf0e072e8 dcb_setapp +EXPORT_SYMBOL vmlinux 0xf0e57a9f bman_flush_stockpile +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fa56a7 update_devfreq +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf10195f0 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf141bf26 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xf157aff5 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xf15a3cf4 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xf16f40bf dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xf18d08f0 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xf18e6590 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1d77ea0 ata_print_version +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f33221 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22a3e82 padata_free +EXPORT_SYMBOL vmlinux 0xf233bd2c set_nlink +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf26c3266 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xf2e84728 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf3061a90 kobject_add +EXPORT_SYMBOL vmlinux 0xf30afa18 dma_common_mmap +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 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34affdd set_bdi_congested +EXPORT_SYMBOL vmlinux 0xf3520920 napi_get_frags +EXPORT_SYMBOL vmlinux 0xf35d46c0 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xf3712909 qman_query_congestion +EXPORT_SYMBOL vmlinux 0xf37b64ef kernel_bind +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3d73450 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xf3e13f2d blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xf411024e sock_no_poll +EXPORT_SYMBOL vmlinux 0xf42df059 user_revoke +EXPORT_SYMBOL vmlinux 0xf43ce4b5 da9052_i2c_fix +EXPORT_SYMBOL vmlinux 0xf43e0b42 d_splice_alias +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf447451e seq_bitmap +EXPORT_SYMBOL vmlinux 0xf45a4e52 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xf45af91c kmap_to_page +EXPORT_SYMBOL vmlinux 0xf473c25c unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xf47a4d98 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xf47e583b blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xf4a0612f inode_dio_wait +EXPORT_SYMBOL vmlinux 0xf4aaaa89 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf4b8444a qman_init_fq +EXPORT_SYMBOL vmlinux 0xf4bafd1b vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xf4bd171f inet6_add_offload +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c78417 fget +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fb801b dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53de8f8 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xf546a313 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xf553e33b inet6_ioctl +EXPORT_SYMBOL vmlinux 0xf55c2052 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf56be6b1 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xf57fe4ff dst_alloc +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5de9ea9 user_path_at +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e59d14 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf60d171d rfkill_alloc +EXPORT_SYMBOL vmlinux 0xf60fe8bd scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xf6319078 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf65739c4 __scm_destroy +EXPORT_SYMBOL vmlinux 0xf6850122 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xf687ce1a netdev_notice +EXPORT_SYMBOL vmlinux 0xf68831b0 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xf68f3743 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xf6973acd inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xf6adcd5c bio_copy_user +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6bfa572 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xf6d5f5bc pci_save_state +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf71a2c2a generic_write_sync +EXPORT_SYMBOL vmlinux 0xf71a6894 notify_change +EXPORT_SYMBOL vmlinux 0xf71aa53f mach_p1020_utm_pc +EXPORT_SYMBOL vmlinux 0xf7495173 __destroy_inode +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf778d269 usb_get_phy +EXPORT_SYMBOL vmlinux 0xf77e659c tcp_proc_register +EXPORT_SYMBOL vmlinux 0xf7891b4a pagecache_write_end +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7aa99b6 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xf7b6b7a8 bio_map_kern +EXPORT_SYMBOL vmlinux 0xf7c7e167 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xf7d6db16 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xf7e4bd27 put_disk +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812384b md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xf818cbb2 inode_init_always +EXPORT_SYMBOL vmlinux 0xf81a2eb7 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83480d0 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xf83866d6 skb_append +EXPORT_SYMBOL vmlinux 0xf8469bbf mii_check_media +EXPORT_SYMBOL vmlinux 0xf84dc291 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xf8854b0b udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xf89a3d62 bman_affine_cpus +EXPORT_SYMBOL vmlinux 0xf8ae6f39 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xf8caaf12 kill_pid +EXPORT_SYMBOL vmlinux 0xf8dc1deb kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8ebab39 pci_match_id +EXPORT_SYMBOL vmlinux 0xf8f4aec7 lro_flush_all +EXPORT_SYMBOL vmlinux 0xf9084bf9 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf9250c0a seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xf92d0b03 __sb_end_write +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf94e90cb serio_open +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ab7cbb blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xf9dd1c5a request_key +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa64fa3f fb_find_mode +EXPORT_SYMBOL vmlinux 0xfa697ec9 ps2_command +EXPORT_SYMBOL vmlinux 0xfa789e16 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xfa7f2b64 fm_port_disable +EXPORT_SYMBOL vmlinux 0xfa90ee6c finish_open +EXPORT_SYMBOL vmlinux 0xfa9da707 iget_locked +EXPORT_SYMBOL vmlinux 0xfaa17867 __lock_buffer +EXPORT_SYMBOL vmlinux 0xfab12d5b vfs_readdir +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf3e5e3 irq_set_chip +EXPORT_SYMBOL vmlinux 0xfaf8a4a3 genphy_update_link +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfafe6038 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xfb094a2c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xfb215612 __register_binfmt +EXPORT_SYMBOL vmlinux 0xfb2d93b6 dev_uc_init +EXPORT_SYMBOL vmlinux 0xfb2f7112 pci_find_bus +EXPORT_SYMBOL vmlinux 0xfb45a286 journal_create +EXPORT_SYMBOL vmlinux 0xfb5e0b61 current_fs_time +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb84605b remap_pfn_range +EXPORT_SYMBOL vmlinux 0xfb8b63d3 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xfb9415c4 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xfb989c8a sock_update_classid +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb115b2 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xfbdac095 pcim_iomap +EXPORT_SYMBOL vmlinux 0xfbe10ead gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xfbfb098f dcb_getapp +EXPORT_SYMBOL vmlinux 0xfc019484 install_exec_creds +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc101749 is_bad_inode +EXPORT_SYMBOL vmlinux 0xfc2fa6bb cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xfc368752 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc4b5719 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfc4e74d3 flush_old_exec +EXPORT_SYMBOL vmlinux 0xfc533534 block_read_full_page +EXPORT_SYMBOL vmlinux 0xfc59e259 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6bdfd9 dquot_transfer +EXPORT_SYMBOL vmlinux 0xfc6df81e cdrom_open +EXPORT_SYMBOL vmlinux 0xfca40d53 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcab123e softnet_data +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc61855 sk_stream_error +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd05114a vfs_llseek +EXPORT_SYMBOL vmlinux 0xfd05cb45 register_console +EXPORT_SYMBOL vmlinux 0xfd2f3437 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xfd34222d skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xfd4d8b91 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xfd52f76b sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6595ed ipv4_specific +EXPORT_SYMBOL vmlinux 0xfdaa5619 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xfdb47d3d mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb8d89e neigh_update +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdcd1522 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xfdcecd6a ps2_drain +EXPORT_SYMBOL vmlinux 0xfdd7efcc tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xfdd834a2 generic_setxattr +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdf68a36 fb_blank +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe095222 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xfe1e9b07 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5f20e7 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xfe649492 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfe945baf scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xfe97678d register_netdev +EXPORT_SYMBOL vmlinux 0xfe9c3258 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xfeb0f579 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xfebf097e vfs_readlink +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff0879a6 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xff12b07e mnt_unpin +EXPORT_SYMBOL vmlinux 0xff1e320c journal_get_write_access +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff255cac i2c_verify_client +EXPORT_SYMBOL vmlinux 0xff3fc641 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xff5cc0ab sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8d74ea set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL_GPL crypto/af_alg 0x0094c3ec af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x31e8ae4f af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3c9a0615 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x5777d628 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x84226eca af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xc46bb0b4 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xd589478a af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc2cedba7 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x57020776 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb04023e5 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x4f1b5ce5 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8b7de3a7 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x0f2a992b async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x794b1754 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8cf4394e async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xcb8ae851 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x0ff09978 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xaf32a079 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x526113fd blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x796fac71 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x7593540d cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x026f5517 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x1bc0ad61 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x298fbf30 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x41feb9ae cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x7dcf3b7f cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x85f3f804 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x91871783 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x9c337d77 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc8982d12 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe0a2898f cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x37a7e485 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 0x22bf9e19 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xc8dd93da twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x78ab6096 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x010d2726 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x02372fc7 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x051c8450 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0a2f7cf5 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0b1cb8f0 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0ef4ff0b ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x174f4b87 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2d1e9921 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x33bde0b9 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3e18bd3d ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4810116a ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8c7582ba ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xab181e52 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb9be91df ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd0882b04 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd2ad7e77 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe37b263f ahci_shost_attrs +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 0xfe367015 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xd486fe3a __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x364e16df 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 0x10d1ab32 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x12ad52ed bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1aef5bb1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1e526c47 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x39c6a2c3 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x46a26b9a bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7fe846c5 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8254e47c bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x85c8d5e6 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9a9c0bf0 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9bf7a5ca bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa323aa7f bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb093d6ce bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb738d08b bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbbb919d7 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xca1c4bcd bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeb00514e bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x03839893 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x45a7cdb8 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5a69bce0 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5d374cd6 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fb62005 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbc6cb77c btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc5ce6243 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd035daea btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd21c347e btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd6a721aa btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x00fc9028 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x05a743a4 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0aae1de6 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c2b0ba2 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1536b878 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x169d3c79 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1cd7123e edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3d6ddeff edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3e6c79b6 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3fb37191 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x64b5b46f edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6d76601d edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7446809d edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7ca7d62f edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8e569a2e edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9c5650dc edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9feb1ec9 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbbb2a454 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbec1733d edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcc262adf edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfd045115 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfed10585 edac_mc_free +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x4ae0e16a bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x7c882b5b bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x30f746da __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd53a9dfb __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1f95c2b6 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc9a0605f drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x411d9d69 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x5219f1f8 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xbb2452df ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0621248a hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09f0349a hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0aba093a hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b393e46 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x24444eaa hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31f58cff hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x32f3c1c1 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x352b8ecc hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40edf168 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43e532bc hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x44473025 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47598b8d hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d865973 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a3f1515 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c040cc1 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6a887566 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d1fb6de hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7284cfea hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7851cb87 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84edf778 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8846f348 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8c72b64d hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9e470267 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f196efe hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa939527b hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb94a949 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc26db710 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc3041a6c hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdbe2b0d5 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef6cbde2 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfd43bcad hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x787781d1 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x11248c04 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc6bb9a36 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd6065b84 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x027c6174 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x98876d20 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa45406b4 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe1adbd99 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf7db743f sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xfc6f6f81 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x1db3333e hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x3250c4bc usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x5eacddf1 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x733a53a7 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x01ebba65 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12b9510c hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1870d224 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1df4f8fa hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x44c52f3c hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x68371051 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x69556524 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6f7880f4 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x716a745b hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae4422e4 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd92dc92e hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe3987c9a hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf88868ac hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0281340b pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1bb2c41e pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4b6538f3 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x700e678d pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x74d8cb4c pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x904f7a55 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x99c4c0ad pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa90c89ad pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xca3dca6e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe98888b3 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf21bce7f pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1c7203fc i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2aaae415 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x60d11015 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x77fefcb2 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x87c55371 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa400fd03 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc310d7fb i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd2bc0eb7 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe6f03d50 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x1ec570a6 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xc958ebbb i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x06d76bf0 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x503fbbd1 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1652feed ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2d4e658b ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x308c7196 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x46e11b5a ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5640bbcc ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5a2eb5d5 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7cee031e ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8d48d4b1 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd90fc3e9 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x08edd7c0 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0f6b5fa1 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x33faf684 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3e56fcbd adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x567da311 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x721f4441 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x90f1546f adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa7f53df5 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb7300163 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd69af40f adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdf37ef11 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf9b8ff98 adis_init +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00e75161 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x100fb3c5 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x123a7de9 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x14513e5d iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x178cdf03 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2278f46a iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27b8335f iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x283afd10 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x581b4993 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5e1d3653 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61a62e22 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x639306b0 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x87be12dd iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x87ea98ad iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8be22122 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9b3a1e25 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9da31610 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbb464524 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc79c735a iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd46f0c2 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe67dbffe iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7331bd3 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed19d7ff iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf788dca9 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xf5a7932e 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 0xfcf2d4be adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x411cda1a cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x518dd915 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf3d6bb23 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x018ee1b3 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2461264e wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3cf0458d wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x53b2516f wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x672e965c wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x743b3cac wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7a908b06 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7d81efa6 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xab8496c2 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb933f38d wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe3c2fc15 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfa097c93 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0e50e54e ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1aa687e2 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8127815e ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc28726b0 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd581d4ce ipack_device_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf1e5d44c ipack_driver_unregister +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 0x145dd54f gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x17089d97 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x278d07dd gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2f98fdaf gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3c941e99 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45a46448 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5b20605c gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5f28dbe0 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7e34e43d gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x876c11c3 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9575f7e6 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa36b23c0 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc0262b25 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc04747d4 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd05cb4cd gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4e970de gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdc25c4c8 gigaset_start +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x158917c6 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x17a5b481 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x20416909 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x216c62d0 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x229fce81 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x26aff254 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x44144b9f wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaf15726f wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd16261ff wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf3dc19d5 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf4295ddf wf_register_control +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x31048cf8 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x78120d96 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb44aeae8 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcfa01a18 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 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 0x7872b5d8 dm_bufio_client_create +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 0x4b24e76f dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xe23c08ae 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 0x24135b72 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2554faa9 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3c29ccfb dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7007cd1c dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x70b20b49 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xaad7fad8 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0x55d7cd1b dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x67521436 dm_tm_create_with_sm +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 0x7dc38fc6 dm_tm_open_with_sm +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 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xee0285a6 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x42dcde6e md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x32d7b243 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1e521c5a saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x22740fdd saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4d73cd23 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4fedbf62 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5eed0112 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8b936996 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x90928a7a saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9eb67061 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa8a14671 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb6d41ba8 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1636f57f saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2b677cf3 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x38df97a6 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3a82810e saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x7f9c71ce saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe2eed629 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe8591a02 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x018678e7 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0564eeb3 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x19f178b9 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x59aa4aa2 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5a03c9c5 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x643e8fbf sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x66af97c8 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x789bdd34 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x88bc5414 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8a999b79 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9f620ee7 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd58ebb8d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd7482d69 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe2c5d00d smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe5a04803 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe99e0d83 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xffa9c2e4 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x32d866cb tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xf58f66d3 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x08ba6cc5 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0f26cee3 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x13a4699f mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1aeef94b mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1d48f5e7 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x33697288 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3779fde6 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x53402ef3 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6cceed8e mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7a3dbe8b mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7d99422e mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7fe2b144 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x812d6008 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x97d91871 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcd9f2a9c mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd73d5f1d mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xde77cfc9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x09ced81e saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x13aeb3d3 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x30ceeffc saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x578f34b6 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdaabc8fc saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0790ba6e ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3dcf85e6 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x54a30d59 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x560afca7 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbdae00d8 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc85c13ee ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd31fea16 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xae1055e8 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xc7657636 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x013b49a2 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0502aa2c rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1a26d4fb ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1df4de64 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3d0c95c9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x54efbdae rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x750366de rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x77adf132 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x77f7838c rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7a0bb969 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87276d26 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaf51fb78 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf17f5736 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfcf68143 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x988ac810 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xac0e1acb microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x3d5d8ed8 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xfdae0219 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x1b47da62 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xc0f1f1ee tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xe87071ed tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x3b595ab9 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xe652c434 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xeb3592a9 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x066fd31c tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x751ef021 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xbb50a29c simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0365817a cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x14735b07 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1b46d1f6 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x24829437 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3a94ae9e cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4d741a39 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4e2763e2 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4ee283d5 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x78de8dba cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x99c6e4b1 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa808a93d cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xabe5e1ff cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb05dd693 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb0bbf147 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd4197726 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe2797d10 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xebeb9e8f cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf4cc9063 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf8c612cd cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x6a5f926b mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x98619d71 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x21088bd3 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x28a41ae0 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5411358c em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x585d7fa9 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x66faec59 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x764721ca em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7e74437a em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x90a11e6e em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa1715b10 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa39a88fd em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb9d0c0b5 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbbe51c2c em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf4d5f9c2 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfde26639 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x395c3243 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa227e079 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc81b4ecb tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe49d70f8 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x1cf8769e v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x32bd0274 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x475b081f v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5c2b14ea v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5d9d3491 v4l_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x868d9cb5 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa9bb3d6f v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x4440c857 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x7b11a588 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xb6fbd9d4 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xc7cc6263 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0593b8c7 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x074d3c65 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0efd26ca v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1fd8b5d1 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x284455df v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2c0cbc6a v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c0be8dc v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58970ed9 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9f00ad8e v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa373655b v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa59cbd1d v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe2bb96af v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed4adf6a v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0c6a49a1 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d71455b videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2be32bc9 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x50d9ec53 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5280c700 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5aa76f38 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5fcc3124 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x70bfa40a videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x73f4bb0b videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7401ea29 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8dcf1a38 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9bb27807 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa3a1c9bb videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa415be16 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb1232ae8 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcdef549b videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd0152d04 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe3a23232 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xebd71acf videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec76778f videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeefb7262 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfa0b57b0 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfd1925c8 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfda94435 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x3dc61891 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x427690d4 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xbd02bec7 videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xf779a953 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1c55cb79 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x251c822b videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3efb2dcb videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4682145e videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5d35e12f videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6a2ef398 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x7d61f1bf videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x92de0a7c videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xef5945fc videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x0fea8e4f videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x4ca076ce videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xf4db4cd7 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x01fbafb3 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x07ec692a vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1024ade2 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x11fbd830 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1bd4aa8a vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1fe8e1a6 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x20486d1e vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x35f51d81 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3c0baca3 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3d01e231 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3e7cf52d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4b659361 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x55cfa826 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5eda146f vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60b8bb5c vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6f094156 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x70d346ac vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7526b1dd vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x758dcef3 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7b68081b vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x83d4d1b4 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c074fb5 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ea48def vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9ea3fd68 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa04ea624 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaa852f29 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab63b8be vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xad72188b vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb19a2576 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb9fdfff0 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd96d59d1 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xde1eb6fe vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe6b2ffb0 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1fbfadc vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x5bc97bd1 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x83470d4c vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x0af93887 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x0ed32707 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x1bc16740 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x96501190 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x5a48e8d9 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06c4fd12 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x089a57da v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x126a0178 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x133fac61 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x147bd88b v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15fbebee v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a0b479c v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x35cce4f7 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c9b8f3d v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x472734ec v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51a2772e v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bb6914f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x97c7a7a5 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9914e911 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xad6efb35 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xba8c0259 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbabe99e9 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbb409271 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc832f603 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd3eaa54c v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedd8b65d v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf17267f0 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x0510d122 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1a8d26ce i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x505e5931 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x5ae4f404 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb40ec4ff i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xd41f9dd5 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xdbf8e45b i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xfb1ba2b8 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x19a075ff pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x49907a3f pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x83af178c pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x87042b1f pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x0db6a9fb lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xcb5cd5af lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd536a767 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2e54a7de lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3052b352 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x54a1208e lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5d461029 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc2255f67 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe24d28da lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf7e8ce54 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3651997f mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x847f9ef7 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8c44d0ff mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8e6734e8 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9e4b2597 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xdef16eb7 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x400f06d9 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5513ec25 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x56b9ccb1 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6c860bbb pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7cbd2c1b pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbbd16bcd pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc5905641 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xde8cf39b pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe0b589d5 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb6ea3a2 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfa10ee6d pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x005c8834 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x91de4a17 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x38da1495 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x39bd028c pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4da8a4cc pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8cd9e15e pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xcfb94cf2 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x017a9631 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x219d597d rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2d1305d8 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x394e5c20 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4c599359 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x61eca529 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7d901d1b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x87e2bea9 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x92ffde8b rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3278199 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa8b3184c rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaac4b54a rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb00c91d2 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc635742f rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcfce4fe6 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd5b87005 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xde59192f rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe82cd973 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe913c7ec rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf0d4747e rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfcd37f6e rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x20ba1c61 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x76534fb4 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8cd29808 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8f2cdb01 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfcdf7b82 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0574b4a8 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5bf96b9e tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9817b873 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe11e5d25 tps65217_reg_write +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 0xba59931e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x29003dd7 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2d72b768 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x66b5984c cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf5e9ceaf 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 0x0b182b42 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x12ecac21 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x43a444a7 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5f070eaa enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7d699414 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9c06ab5e enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xcb2a085d enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1da55d17 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3b65e1e6 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x77a76c78 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xadd853ba lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcb913329 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd739ab08 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe37e060c lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf13dd301 lis3lv02d_poweroff +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 0x110dd9e9 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xd90325c0 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x06b4ef64 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1a4cb7f7 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4e7bac55 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5eb128a4 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6e537c6b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x86901d64 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x92a6d690 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9a7fe61e sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf5ef9fee sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x02c954b7 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x33f9ac0a sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x48663672 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4b059d3b sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x93bcb71e sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb3fafd13 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x21d89e26 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8742ec3f cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd8a6f68a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x1aec78f0 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa5244d9a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf5e3158b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xfe5cc15c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x1871899b cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdb551e74 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xeee40b14 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x67a3346d DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01e7fd18 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x135fe841 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15b548ac __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17330346 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1941eca7 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f38c4f2 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1fc35959 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ceac93a mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2feceb08 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x31463dde mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3185b241 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x31a77497 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3803dfb7 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x427bc50f mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x52afc171 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x52dc0482 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5defa4b4 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x64784cd0 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x694ebfcf __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6b008640 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f283491 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x73df216e mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78d578b1 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8436f64a mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x950b0bb2 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x95b60e3d mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x975b2b52 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a3bbd0f mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b3e2621 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba8e2bfa mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbba134a5 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc9780915 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xca68bba8 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd0206c82 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd1afceeb mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc081fe9 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xde6f1737 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0eff61b mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe4994e08 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeaa23b8d mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed20fdab put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2e101c87 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x54999f3a register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x87bb63d9 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd5676670 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf0512566 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x0405e272 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x0b1a6d37 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x220705b1 nand_update_bbt +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x60cfb93d sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x2c9cbc94 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xb044af43 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0a00a86d ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1ce2bc28 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x275cf0b0 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2f4c9c1b ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4624f96a ubi_close_volume +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 0x7bfcaca4 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7fef3da1 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8274b11a ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9b0ae7cd ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb847acd5 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbf2aa27d ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xed2608ec ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf59db647 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 0x12e1e94c register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7b8dfebf free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7ff02a1e alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8dd318d7 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc61d034b unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xee431508 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x04cd7b51 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0afb6cc1 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x10240605 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x202b52e9 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x311b24eb alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x61492983 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x63c25a41 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71d05c9c alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc23b4c5f can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd53b1d61 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd9323bf5 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf5e08b6a can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x18817d19 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x358e95e9 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7254708a register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xcf22de26 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x55781618 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x71a5d9a9 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x93bb431f alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xef15b0e0 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x0ce027bc macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x4a178020 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x51daa883 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xa1e6ecf6 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xcd07fd64 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xdeedeef7 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xe23d394f macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x000351d6 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bd3d7b8 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f9a33d7 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x149d7275 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19bc0bdd mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19f02744 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20e4d8b6 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21c2de6e mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23784bbb mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2378b932 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26a4597b mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b150bbb mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e1ec132 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ec74bc0 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f642235 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f710305 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3089983e mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30eb31e9 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ac3f660 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b660b45 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bb04dbd mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41400f67 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42247011 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x435901ed mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45821455 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x472fc2c1 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ecf0010 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x522c5d85 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x549fca96 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bc768b6 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60676e00 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x621f471f mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64dd6163 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6885e9c3 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f0b4472 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71e52070 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x738bb0d1 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74f4bdff mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x765edb82 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e0e2cd8 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x830d44f2 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8988bdee mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8afdc784 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c0311fc mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dfd387f mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e3249b7 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9024ffec mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9417eab8 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95b55b90 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99bd343a mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ac8ad0b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b5ecf86 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2dfd1ae mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa638d2a4 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa87afd5f mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9a1386c mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac5bf9ac mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5e629ae mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb987481d mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbaf255b3 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfb9a02b mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce3ae6cd mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf356f1a mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0f0aee2 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd15b88d2 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6987d96 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6fd2c26 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8785f00 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdada997e mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddd1fbd8 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdeff6843 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe218feab mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4908de0 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec58fbf4 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeef5b576 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4400206 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf49f7ad0 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf75e3a5b mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5bb6543e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x862cd06b macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8871391e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xac75db16 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb06c888d macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xf9cd7e2e macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x58aa86b3 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x87e50dd6 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb5d1f334 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe7cab92a usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x16bbc6b4 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x33d41c99 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x33ede782 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x403fbc54 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x44cf5693 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa5aab480 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0369adb7 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4b22c688 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x65f97e4a rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xac7dcd2e generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc5d2970e rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xfb73acbb rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x271ab592 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2dd7888a usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2dedb710 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38557042 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x398aab4e usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x443bd082 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x47489a1d usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54d0d487 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x58dfa638 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5dee70af usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x629960ca usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65603bdc usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6f4f317e usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x74b316fa usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c8ef8be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87f8da97 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x91c75fea usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x99e1d489 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaa49607d usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad114258 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaff4d29b usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0e0d5f8 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb921059f usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xca212fe7 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcd435b1b usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe46e819b usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe47a742a usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed6fd6d2 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xefbaa6ca usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x05a287ce i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2341f398 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2759b9b8 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x29678333 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x30927756 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x31dfec62 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3b82c533 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x54a81425 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x58471747 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x682102c4 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x725ec776 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x88513a5f i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x962a9cbb i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb821bcce i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe97bf13c i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xeea3a23f i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x89aff6c4 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3006b83c il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x51eae465 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x61dad7a2 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x7638fe9f il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xbedc7df6 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x15d6830b iwl_test_handle_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x17ba8706 _iwl_read_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x183664de iwl_test_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x33e1154d iwl_release_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3fced60d __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x44105011 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x44a1104f iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4f099c98 iwl_set_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x50505b5b iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5408ac44 iwl_set_bits_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x56f31271 _iwl_write_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x61d6d21f iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x693a66a3 iwl_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x74508f6a iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x78cd34c0 iwl_test_parse +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7be8ad32 iwl_test_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x80c1c043 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x820b4373 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x95d6f74a iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9820684b iwl_write_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x986089ec iwl_clear_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9f4e59b5 iwl_grab_nic_access_silent +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xac760a8f iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb20aef3d iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc1a324fe __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc418a1fb iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc43a041e iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc7495d31 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcf6fbf57 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd204b790 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd32925e1 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xed23d6fd iwl_test_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xeea5bb19 iwl_test_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfaedfc7f iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfbbade6c iwl_read_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x01069c5f lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x011467ef lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x09828703 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2082163a lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2365d06a lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x250ce8b9 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3615fc47 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x54adf4ea lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x64ac84d1 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x717ba3d8 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x86e89a04 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xac632615 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xadd8851d lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb7c0d3ba lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe79a587b lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf0f920f2 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0f6a1e22 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3fcb8532 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5e0367dc lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6f9cd8c5 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73d50f2b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7de20583 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbd36706d 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 0xf6ec166f lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x882dea26 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xaee32ab4 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1098a4bd mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x16b9e4cd mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x17d7bcd3 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3842bf09 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x41891690 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x62bfb7a1 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8802e21a mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9189448b mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9d50e25f mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaabb3678 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xda106849 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf0860bd2 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf221480c mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfe414f3d mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2209cdad p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x24e2ce1b p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4614c23b p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x574f5f5f p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x64be0b3d p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb5349433 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbe5ef1db p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd012a947 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xec543b04 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x035ec9cd rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x08bc25c5 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0b07bfc4 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0c9c7150 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x115acbc7 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1c3528a1 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1c7fe058 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x22cf5e3f rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32b41f3a rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3397f774 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x35fd4e73 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4470bf92 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a5c57a4 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4dc663ab rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62dff721 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ac5991f rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6b387334 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fa90b95 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72c00e92 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74b01010 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b69ebab rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x813f9ec9 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x857ca50a rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x865ed166 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87a0aac3 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x887994ad rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8e65290d rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x942475f3 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa73b9b9 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaca03322 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1276039 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbaf29d59 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb9b46cd rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe0e2435e rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe48f1ade rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeab969ad rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf1438977 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ac75447 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c6b8968 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f116e54 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x21cd6016 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x26e4dc72 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c6b84bc rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2edcde8a rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x32d10608 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x338602fc rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x367e1266 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b428c41 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x438c4b70 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4617b30d rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x50e1bd89 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x57f499c4 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f0f0d9a rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x727aa137 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74c8e0ae rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77d931c9 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x78b8572d rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x827dceaf rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x89cfe5c8 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x913f57ad rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x965c2267 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x99568435 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa037e509 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa205ec5d rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa80a2ef0 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcea2a95 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf511e18 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc4bfefb1 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd0a738cd rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4948c57 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdbef8e58 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf6b4fd2 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf7772e9 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe10f741f rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe158fa77 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe61e1a4d rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9bb1c08 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xedf1b96a rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf12c23b7 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa2ae3f5 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa41a0ec rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfca08693 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfdb10b11 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x132d7ec6 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2bd173bb rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2bff46c8 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x41d08121 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x465b042c rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7d0341d0 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa54bf624 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xceff3564 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd9283b50 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x13cc1293 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1a3e3e89 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x34388696 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3ad9e01d rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x600cfc05 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x67c1fe20 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6b1acee0 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x75eea1b8 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8275a82f rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x93e55323 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd89cd11d rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdaf3bf4e rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xebe631ad rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xed01971b rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf33f2dcf rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf97c3ec8 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1012c626 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa34e742c wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf0573599 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04d73683 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05294fba wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x098be38e wlcore_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x119a59fc wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x19bb132e wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f181db4 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x23e0a660 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2418d0f7 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3826790a wlcore_wake_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x383dcc5d wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39d5d511 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x40a0b951 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53c8cc43 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 0x5b2f326a wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76dfd3fa wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7ae0b6b7 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83fa877a wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x967fdff1 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x979dcba6 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac27724b wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3ecc05f wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc51cc74b wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2ce9f0a wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd71c1c74 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd95a2fb0 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe867f9f7 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x29809ae9 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa8f00bed pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd59a25bf pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x86a8030a mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x96ecd45e mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa6b61a2c mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe89e9768 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf3c63c1b mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x021cef37 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x581d4416 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x95e58127 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa84ec88d wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc6cc5eca wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcb9af2f0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x0c2cdfb6 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x01ca65d0 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02202fc8 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0417a587 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0af6931d cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cdf4433 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x105c951d cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x280251dd cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x302ff5af cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4f10b6f7 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51f0ed6b cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x598a0e81 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ff67e81 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6089a1f8 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x60fee94b cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x613cbaa2 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66a50987 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6c31bf78 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cf533b4 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x708e7435 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7a2b05ec cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7d8c979a cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x85a3bee8 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88bd44df cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x92e7a822 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x92e7cc88 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99562e45 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ea9fe0b cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa4a809dc cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad1b6685 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae9fb3d7 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaff39e90 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc1dab8a7 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc27d229e cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc946d9a4 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd521b2c5 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb7a34ec cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1150781 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe2399192 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7300b05 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf1fc9dc3 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4856edb cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa27fda2 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfcdc016d cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfe5aeb18 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0b39b7a6 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0bee6a7a scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x14ba37ff scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5a557658 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x64dd4a2c scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x67d33faa scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa30413d6 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x190553a4 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2b983fa6 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3090b16c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x34342ac8 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x39ad4598 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4a91889f fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6ffba0e7 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x877c3d14 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8d7cdd33 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9d9c2967 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbf87d2ea fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe03800bf fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe809bb4e fcoe_get_wwn +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 0x034f2e27 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x05b3b246 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06bf18e2 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0c788efd iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e696b88 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x118b34e7 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x11af6e13 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1257262d iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18f49243 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1c61142b iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22a3408e __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x28edd6fe iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f7ea1f7 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x307604ca iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x30de634f iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a5995b6 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a85a714 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x40b4fd22 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49e0dd86 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f49de4a iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54ce2844 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6192944c iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7e9d6f3b iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x81167025 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x84ce7344 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x886ae0bf iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9433ed28 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99be7039 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b625da8 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9cb8bd44 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa772c805 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa63dbef iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb76d910a iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbcd5b65e iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc2647fd0 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc680aec3 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcda8039f iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd4ef4fce iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdc03a222 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe44717a9 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee68f29e iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf36462dd iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xffd4c3ca iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1b9726ed iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x20c6a3ac iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x27208a72 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x27f6315d iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x408b3934 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x528d8ae2 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x73ff9c69 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x76286221 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8df27cfa iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8e5b005d iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9aad774e iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9af14824 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa241f30c iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaeb543e4 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc0500387 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe3fc73d1 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfd45f002 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x16f94f1d sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1ea3fced sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x280900db sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3f2431cd sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5b606ecb sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x612280c2 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x62f7ba47 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6c01fe8b sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6edfd3e2 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x766997ee sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8161d79e sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x913827fe sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x96e86b5b sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa4add95e sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaac9ba22 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb37067ed sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb1bec50 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd0606bd5 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd0774018 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd564fd5a sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdbf86e11 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xecc37850 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf1851757 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf672a36c sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfacbb308 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x2f5d64ca srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x623b9e0a srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x7683dbff srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xac995687 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xad0f6a3c srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe054352b srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1dd8e57f scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x289d7cf6 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x670695fe scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x682b4c12 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6ab4e325 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x756e12e4 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x8e5ae32c scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc2b78e08 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcdf8fc12 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x059f00dd iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0d5aa90d iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0edd5378 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1068e7d5 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18cca09b iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1e285e54 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x20369eb6 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x27e1acb6 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2aae0ade iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ea28b53 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50beb15e iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x542e1c27 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x54771445 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x557218fa iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55c3bdde iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7a3a4001 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x896b627c iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b477390 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x926f0968 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb442ee98 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbd8fe5f iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc90075c0 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc920f0e8 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd003bed1 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd22d43f3 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3c82cf7 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc4a2f77 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe08d32c7 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2ab7c01 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfa1a47eb iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfa22b14f iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd809cc9 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x31d0c4e1 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x53c957f9 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x910077de sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbc0451fb 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 0x3dd5963f srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x725a01bf srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb8a2ed51 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc275b07b srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xed66601a srp_attach_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x06c80183 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0c431832 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x404a3e42 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9b378d9a spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa275c79f spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdd4dbf7b spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x3df7055a dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x506449c2 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xae67f4f5 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xef9c2568 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfe21e164 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xa1534400 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x043993b8 CsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x063ce8fd CsrMemCpySer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1a2f4153 CsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1b112e5a CsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x20ed5d24 CsrMemCpyDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x25d71627 CsrWifiEventCsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x2e32b4fa CsrWifiEventCsrUint16CsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x35ee09da CsrWifiEventSizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4a44d987 CsrCharStringSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4b702d3b CsrWifiEventCsrUint16CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x5bef3871 CsrCharStringDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x71d701be CsrThreadSleep +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x7b2ce3fd CsrWifiEventCsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x80cc6f40 CsrTimeGet +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x83653836 CsrWifiEventCsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x92b87e22 CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x99c3117b CsrWifiEventCsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xa914520b CsrMsgConvFindEntry +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xad2a353d CsrWifiEventCsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xb39bdd0a CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc47d071c CsrMsgConvInsert +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc79e2f1d CsrWifiEventSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc9691b01 CsrMsgConvInit +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xde3f2c0f CsrWifiEventCsrUint16Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xdf5f5f67 CsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe258383d CsrWifiEventCsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe2e90b5d CsrMsgConvCustomLookupRegister +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe90cfd08 CsrWifiEventCsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xeb229892 CsrWifiEventDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xfd995761 CsrWifiEventCsrUint32Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xfe9f5512 CsrWifiEventCsrUint16CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x12e6177b oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14523351 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14c4b6b0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3c6ec396 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xca667daa oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeb94de18 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeec034fb oslec_free +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x0b805413 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 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 0x0b5a4939 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x64fae2db sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6ab46a2f usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8b5cf2ed usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x98699461 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9b08bc5f usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa355f53a usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb87f4ef8 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc76c7a6d usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xca58efbb usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xce3303ea usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdfc37edf dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe53517b7 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 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 0xf864dd01 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa3e1db00 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb51a6c52 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd64f5ec7 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x37320902 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa01445f7 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x14b53ab2 usbmisc_get_init_data +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x3ad8c486 usbmisc_set_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0xd84b7274 usbmisc_unset_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xaff6dc06 ci13xxx_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf86bbc0e ci13xxx_remove_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x12c57bca usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3083247e usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x31869756 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x54cdabc6 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a05916b usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6b415d2a usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7b82863b usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7cbcc951 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7d396257 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7f48de9f usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x822fd9c9 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82917fdf usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82b14fe6 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x970bb000 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb2672fcf usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf9a0a54 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcfc20de5 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdb764312 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x09d082ad usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x21424022 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xbeb728b2 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xcee31867 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd59253a5 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe470800a usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x6f966b7e ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x7840bf92 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x21e1ccba ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2c6d9798 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3138bf04 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4296fd99 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5f9537f9 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x67635b96 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x76e43a88 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x96f9bf55 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9df166b7 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x41ee0c2d musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0xb1f44ec2 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xdf413a3c isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x69046781 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x06f023a0 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x131a9814 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x21f33690 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x233824de usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2cc0cbef usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x385d6107 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x42db3f7d usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4758e05a usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5e671c4c usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7551c91b usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e412461 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8494709d usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6bfda51 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcb16b4e0 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd8aec958 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xef7d10ca usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf56611a1 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfebe7c68 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06ad5089 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x08c6af71 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x15bfa263 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x29701879 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x36e0c4a9 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5015ac90 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x60aa5f3f usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7c8377d3 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x801ecefa usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x80fa58b2 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x85d71d1c usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x94096fb8 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaa1d80d6 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xabaeb4d2 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc5f01cf9 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd00cdbe3 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdf5144ea usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe3a6e90f usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe6572d50 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xea542364 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeb5d4394 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xee0076fd usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x352bd69f wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5f2f7169 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9adf28bc wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd5ce8be4 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xece048c6 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0c090483 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0fc8794b __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2281d4af wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x26f6415c wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3de99254 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x52fa244f wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x62bfd85d wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x681686bb wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6f524982 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x706b0822 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x78990e57 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa1c12bc4 wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa44f25ef wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa91dfeba wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcdfafc00 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdd3b09d6 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x248e503c i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x31961681 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xfb136e01 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x39b63e56 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x70c7accb umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7134e09c umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8be3f449 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd37012df umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd9a336a1 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdb27e094 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe2802e74 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0892d655 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x15ec66df uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x22129e63 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x24a90386 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2661663c uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2bdbfd81 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x342e1ea7 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x44025293 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x49de971b uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x55f3ce89 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b8fdaf8 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x64a3bcf9 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b08f918 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6be71b5d uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ce1d1f7 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x700268d5 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7e903ca6 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ba9e9a2 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8cb22e7d uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8dd0b656 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98b33d01 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb56cd9f4 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc1579cb uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbda95987 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbef5fd95 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc11c7720 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcb2dc3ac uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc6cc370 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcd06827a uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd6e2217b uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0255cb7 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe03f6a46 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0451dc1 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0b05c9d uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf113bd3d uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4df28a7 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf79f6ebc uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x5874549d whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x120c0b67 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1d246d7d auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1dc3c7cc auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x29dc493e auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x4ee7455e auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x5042bf4f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x87629047 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8b64ad61 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe2440338 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe5ad3d1c auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x01ed4877 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0c6e7faf ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x23a521dd ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x254298cd ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x45208acb ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x59cd3f70 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfd8d948f ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x1da7ed0d fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x512bf9a9 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x8956469f sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x8bcc5f8d sis_malloc_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x4be18848 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x6f5e7062 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x9cb48d6a virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xd9d6fdda unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xf6963d8c register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x226fa85f virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x26f0da91 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x49896240 virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x4a953d0e virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x558bf052 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x73a9e8f7 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x93d50239 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xb69aa189 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc0af15a1 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd95944ce vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xdc2935e5 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe7d165b9 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xed44417e vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x009d3436 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x28c15bcb w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x28cfb5ed w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x494647d8 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x83371459 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x89fa05dc w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xcf9d8891 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xeee63f2d w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe38d23a w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4a35dc4f dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8416fe4e 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 0xda797f88 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fat/fat 0x0961e632 fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0x22dc2e2a fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x331b1fa0 fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0x4549eeb2 fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0x459783dc fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x4abf0636 fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x5a0ab175 fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0x5e95ba09 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x6ca47784 fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x7d7b6964 fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0x8728cd4c fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0x9518a502 fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xb3d773f1 fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fat/fat 0xc653bedc fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0xd321670e __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0xd800ba2a fat_sync_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xd90b9080 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0xdd6ad755 fat_fill_super +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 0x2755779e lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x28db8df9 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x365cd732 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x40c00cb8 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x40ce177f nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb400edbb nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcd4f7206 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf01ead8d locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf206af3a nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x004ac9a4 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00829a10 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02d5543d alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07230c37 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0797050d nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0892f3b3 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0adcffd4 nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fc02082 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11eb81f1 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13cc3f71 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1572cd73 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15ae86fa nfs_fscache_set_inode_cookie +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18029ca0 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cafd1e6 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1de9e98e nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x214f5d51 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x216ad692 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23eb0aa6 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24d98e0a nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x258c7918 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2746a5b4 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28a670e0 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x328cfc81 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32ea6a5b nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3806c9ba nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38639b49 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e52c51 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b5ab255 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bd896ea nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e709e66 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f9deb1 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x435fa1bc nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45fbb3ed nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x491a84c0 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a86d8de nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ab14eae nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b3760ba nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b56d656 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4babafb2 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bd08ad4 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb8ae12 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ecdaa82 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fa692d6 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fe6a040 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52e95c1c nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x544ed068 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54679253 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5492ff77 nfs_sb_deactive_async +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54c2c672 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54ed3fbc nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59b6ff97 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a1ad314 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5aeecf22 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fcd1801 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fdf32cc nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60227093 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x612a84f6 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66e4981f nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68bc5c15 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a516480 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cc87bd9 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cdea564 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70a0d31e nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x751e7f7a nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x765e27eb nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77c1bd72 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x784392a8 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79cd48be nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c6a5803 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c7412d5 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fe33aec nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x828a1588 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8687f8bf nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87bc145c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a29a610 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8be74bd4 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8bfa3dc3 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f62828a nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f8d8de3 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9230bd4a nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9470a7a9 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95bfbd7a nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98c05ffc nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9acd02d6 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dace8a8 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1fe3562 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa38ec3df nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa59c1d5e nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa71a68bb nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa79f69e7 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7fcb3a3 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb43b8718 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5a2be9f nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6a40165 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6e823f9 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8585395 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb87fc340 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbae4fa6e nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbee1f276 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc07b1c66 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc37c6281 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3bf9451 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc46e031b nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ac7a91 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4c5703c nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb3cc94a nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfc9eb46 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd071f7f8 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1b987da nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4b4b9fc nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8624bb8 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcadb4f4 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe24e0ffe nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6dc40ca nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb09aa57 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb143620 nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee351031 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee37a10f nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef4cace7 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2f6ecb1 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5e2e993 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf74ffc70 nfs_dns_resolve_name +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf86903d5 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf86aa3de nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb33d206 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc6da190 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc980542 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0972155e pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ba02b74 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x10eaa5e9 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f22aae6 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f8a4964 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2894f2e1 pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x308fe70e nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x38ca01e3 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4754565d pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ea2b7bd nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x602afd1d pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6052cf64 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x612853e3 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63e0f6d7 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x699a123c nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e00b20b pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7310b6b5 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x947c803e pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9701d5b3 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99361be6 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e2aa62e nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa590c07b nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb397ec6e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6ce336a nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb762cb78 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb79e757d pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc84f398b pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb0b97dc nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd5dedd74 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf725123 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf99058a nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe7dda656 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef4ae860 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0114781 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfea70617 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x196bd50b nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x1a354a1e nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x092f497d o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5c714f83 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5d1fd7e9 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x688b5a00 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x856a122a o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb754545e o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe289805d o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3d14461b dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x63728328 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9884a5ca dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xab9305ab dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc5bce12b dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xea714ca7 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5469ce31 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7083dbd5 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x89502fe7 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb0eaf1d8 ocfs2_stack_glue_unregister +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 0xc20732db ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xfd02aa5a ocfs2_plock +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x69678c70 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x87a44e46 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x5a2d7820 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x878d16a3 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x8af7e45a garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xcff11963 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xd30c1d1c garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xf1a9c578 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x57105f56 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xc37e9eb4 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x7e2aff04 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x8592d5a2 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 0x1abbf530 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 0xd8e10523 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01334b2e dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03003d30 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0cb4cf5f dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0f4b0cd2 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x189f2094 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21456c32 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2501e7a9 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2592302b dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2895d9f2 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ab3fad0 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3005b472 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35b8e585 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x365b4997 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36df5f6d dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3a0f951a dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x550a8c11 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5bde947b dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d0fbd20 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6db2d6e6 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a21ef9a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x818c7f93 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x821f01c3 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x89ecb005 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9dbabf0d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9df147aa dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa3061225 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xadad513a dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf343429 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b2af38 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcda7996b dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd4a8270e dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe23ab038 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeacc9d2a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe8a6d92 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x25e9b452 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x575c3ed2 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8ed810a0 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9d27b8ca dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa7d4a726 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcf6d8aad dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3ae157bf unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xd8007db6 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0xbec942bf gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcbe57878 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x22009922 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4b8f8d69 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa492979c inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa7dfffe6 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa805409d inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfdd7fd59 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x1b3b5e2e arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x598c0a87 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc41da1e4 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 0x28ceb110 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x327be64b tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5f45d2e2 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x82e73d9a tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x85060f68 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x57902b22 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x6925759d xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x054f3fc7 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x28fd6de9 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5eab96df ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7bee99ee ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xed6d6064 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x626bb62f ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xce0ddb09 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b0d12ed l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0bc1e0ab l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x185ce68e l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3cfe6ce6 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x488ecf4a l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x68b49a39 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x737cea85 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7c8b6d51 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7d8136f0 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8e120e9c l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9ae03988 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc0e4ac9a l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf7ab13f0 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfcdab230 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x13ded762 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2a56a290 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2c0e5e38 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x49fab4cc ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5910adcc ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8670c653 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbdfd75b4 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc4c6a985 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xeba5a640 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf10a496e ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1070f1ef ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x16f55cb1 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1bb30a78 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x25899fa5 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3f9f2e7c ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x557fc6bf ip_set_test +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 0x84d855e0 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 0x88d04046 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbbd8badf ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x3599c84c register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xaac62fd3 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xeadc8b72 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf8a17d92 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04ea4237 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06229f2d nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06c1d3e0 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09afe6cc nf_ct_dying_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e4393ae nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0eb8e926 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11dae46c nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14228d40 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17c2ef7a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18f84a60 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d0d875d nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2907543a nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2eb1d648 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2eb68235 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3414fdaf nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x348c77dc nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36419b79 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37ee330f nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3901a91a nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e9ff790 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3eac3ad8 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41581ccd nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4215ad74 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x458f0096 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5005466e nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x545f911c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55847a37 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x579919b5 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ec5f629 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6460018b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6566c060 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x683b3b5e nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69e0d0aa __nf_ct_kill_acct +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 0x75bbe212 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x76b748d1 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x797e96f9 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x870a70e8 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b169d3e nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c87b268 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x946f02db nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b92fe6f nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d35a547 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa391fde3 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6329571 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7dc6af9 nf_ct_expect_alloc +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 0xad472c67 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb562c7d9 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbbe3157f nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe0e73f3 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbeb1d0ea nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbec45acf nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf68b875 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 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4c330f5 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2f56317 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd81c2192 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd916d702 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdaf6dfa2 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec0d84dc nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee422b96 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef88eaf6 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4a009ac nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf52f9a7d __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7760e5a nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe989e9a __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff6e6535 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff702aee nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x410e5e13 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x5b6eb3a3 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x5e7f1377 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1817c3f0 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x26d50ba2 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x287fc605 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x47ad7393 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x80a65f10 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9a276851 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa6dda367 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcf5cac9e nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe05f49ac nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf61eba24 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf79ac9f7 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x04b4669d nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x75610a8d nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8bec37b7 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb26e8128 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb40f909a nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd4519701 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x04e7bafc nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0ba921db ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x17fc7eca ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1b350034 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3c8bdb36 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4a4fe361 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4ee561b4 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x59e2bb7d nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5fd9dab9 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x84c1db81 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9fdd9472 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc925f01a nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd6e25b79 nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xd54dd6a9 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xa4e18548 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7fbca7a3 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x81e52734 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x884cd872 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8ef4fa6f nf_nat_tcp_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9a2c8e47 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xad1513f4 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb318cc3b nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbc28500b nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9b15ba9 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0xf66b2021 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2ad5d455 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x95b1e59c nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa50d75d0 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd0ba54dd nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf70b291f nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf7958ba0 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x47142ddf nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x75369216 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0cbb11c8 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2471f8d2 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x26f5c408 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x584da3e8 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5ddb5f96 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x692580c0 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6aff667e xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x75757bbe xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x81e8e929 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa9beca11 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xca5f5a8a xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xca736246 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe86bd6c9 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x1754232c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xa8c2131a xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00328bbd rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x052c47a9 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2fbe497e rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x30a83e02 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x36e06743 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5fea91fb rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6d97db5a rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7406db84 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x749b471f rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x877fc849 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9e2e5e9e rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xa37e6c5f rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa5c2f59c rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xaf316125 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xbb06cf88 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc41355ba rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xc609efff rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xcd7c9cf8 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xd23e7973 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xdd07f164 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xe62dade2 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf82e30ca rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xad56cba5 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xbd0eeab6 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 0x120ad702 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x41e3fc89 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4eb16e8e gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x572147b2 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x769e1d24 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x839a14f6 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 0x9c2b60ac gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa8f9ba44 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd2630d35 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf48180e0 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf4a2ddcf gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0010288d svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01cd2931 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01f74b9b xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02c09394 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03c97b3c xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x040dfb00 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04a986b2 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04e9d34e svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x063f2521 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0db9285f xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x106e4b18 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10ed2285 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x132f1c15 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14ea1bdb svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1713ea11 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18694502 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19f85e4a xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c5b7cf4 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eefcf69 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f0c8a5e svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23823b0a bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2386fb76 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23acb407 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x243059c9 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244dae30 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24c34a02 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2518623f rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25dc83c0 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x273901d7 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27b32ed5 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ae15f05 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d6efadd rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e2d9a31 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e3d9c7a rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3468414a cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3546820d rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37e5a2e1 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x384ead9d rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c6c862d svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40590594 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40d1f2ee sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4361cb49 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x438360a2 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48b67b0a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a130f5f rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a55a1c5 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c1e81e2 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ecb5425 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x512d7a5f svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51638811 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x526deb4e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53341b5b xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55d84e58 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a5762e7 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5aaa4e7f svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ea4f15f rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5efe32f8 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63269579 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63e53872 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6562b72a svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65f04689 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65f47435 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6708f96b svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a19d96b rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ba11fdf svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e2b7cda sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e4524f9 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70970cd4 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71e14c78 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73898d8e xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73f19ed5 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7409b425 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x741b9640 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75222ccf _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708eb7f svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78697056 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78b4ee94 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78d12a6a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b9d99b7 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c6b52a5 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7db46c39 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f776a40 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808ed869 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8159ce7f xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x816c3b9c rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8232d843 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x841a76ad xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84544aef svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86196182 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x870a225f rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x873be88d svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x877cffb3 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87bb3732 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89e5d00b svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c9a7114 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d3d2ee1 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d948a61 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e1a0772 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9094c3d5 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9235a046 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9326ce17 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x949bf1f8 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97c3b933 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b5ded4 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x992fb226 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99ad13f0 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a2260a6 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a5e7458 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9adc947a rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bf38f3d xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e00fcf6 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa105b8fa sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa18cdc04 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6202f6d xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa83fef4b svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab85f39c xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacd0b124 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7bf37d xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae64a7f3 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaff5b712 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0b5b682 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2108fab rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3e3550b rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5db021f auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9bb349a xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba8628a9 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaf4e912 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbafc0ff5 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb18d51e xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc9b3cc7 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd10b6aa svc_xprt_init +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 0xc4c7302b xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc55f1242 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5e49ff0 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc78dc108 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc978a0e5 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca795dcf rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbe40ef2 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc10d052 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc34ec30 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd241b0b5 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4e552f8 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd78c9573 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8f89ef8 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda3686b1 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda95a797 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdad0c3b6 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe07c102e rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe17d3718 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2467b8f rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe29715e8 write_bytes_to_xdr_buf +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 0xea2bb7e9 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea585b69 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee345f8d rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee58905e rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefcb6b52 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0086f9c svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0c9183b svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf15fcb99 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7552e14 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7c9ace7 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf86fec6b rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa7ee470 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb1c49aa rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb9e5b17 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfca1ea25 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd0640ec sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdae1f6d xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0fe73f96 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1244dd90 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1ac6fc26 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1be6967d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3b837728 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x407b4341 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4d52f5d3 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x52ee1698 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6e2e133c wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xda07727d wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf4936397 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfd36c818 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xffe08de6 wimax_dev_add +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x133fb385 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x20e9fa78 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x564f6322 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5cdf48dc cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6a373ea4 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7dc0e8cb cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7ec31b66 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x90662926 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x99018bd7 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xef09cfa3 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf8a5901f cfg80211_wext_giwretry +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 0x36fae880 pskb_put +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 0x95ba50c1 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x96c7529d ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb4c892dd ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xeceee281 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x143e2aa2 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x298afe02 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x5e1a953b snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x6aaebda6 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x990c7a53 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x0fbf6e29 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xa3744d03 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xbded71c6 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x606b715f snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xaf96705f snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1230aff7 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x18c0d9d3 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7e5bde05 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9118e51b snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb032252e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd3d372f1 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00318982 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05130483 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a54e91a snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0acb54d2 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0afb74e1 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b7afb3d snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e740132 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0eea2178 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f1b0d17 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f7a3421 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fd7b474 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1380a8d0 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14b7db40 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15346a80 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16431624 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17363b45 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x174868e2 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a357791 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1dc18191 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ee7aa6c snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x245b380b snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24ae60f9 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24b69158 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25f2285b snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x264d138a snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2985f21a snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29bc44ed snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a49508a snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e2dfd27 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ed108fa snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30254cdf snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3498226d snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3566b363 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3691f284 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3772bea3 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e3b0cdd snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4338c7ce snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48d2dd40 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4946226a snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ebe5fa5 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fcab0a3 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x507dbb82 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53c15817 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55643287 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5573586c snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a0cdfd9 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b8601ed snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c0b5414 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60496e51 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x613b5faa snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6511ab5f snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66d04275 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67a9ab9d snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x683ff431 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68c1b67d snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6afe377e snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b460215 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x704d18bd snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74ac66e6 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x764ff653 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x793ddf93 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ce80d2f snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e28d312 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e8bc1d4 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e9d6858 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8007073e snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x834e9307 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84db4f60 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84e56f1f snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x852f2b64 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8774e9d8 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x878190c1 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87dccbe2 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8bb61d9d snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8bf6bf18 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c667941 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x915d5276 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94605bb3 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x964b79ab snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98687616 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a306491 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8f1898 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ce658af snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9dc30af9 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1bc4640 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3f82ca2 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8798f2b snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad881996 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0a41f96 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb183be48 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6f464e8 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb71e099c snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb73556eb snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbf01f88 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf02b300 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc03f91c2 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5c8bb43 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc92103dc snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcba47dd3 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc1df24f snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2ac9d76 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd31e2250 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3d17cd3 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5564849 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda565ba7 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf40373c __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0342385 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe32569d5 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe791a508 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea67d184 snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb6208e4 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedc6a82a snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0801210 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf31f836c snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf513ce94 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf51e985b snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa835b2b snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfae08960 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbc71722 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc25b393 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdcceb5c snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x1f34a064 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x3ed7d3f6 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0x4c2a085a ab8500_audio_set_ear_cmv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0xbce51d95 ab8500_audio_setup_mics +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1f8ea94a arizona_out_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x5e8e6067 arizona_mixer_texts +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x675f3d98 arizona_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x6c2697fa arizona_in_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x73f9f1d5 arizona_lhpf3_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x76e3db92 arizona_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x78355a2b arizona_mixer_values +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7e59c88a arizona_out_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8134813f arizona_out_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x93ed4d8b arizona_in_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xb65ecf5b arizona_lhpf4_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xbc4a522c arizona_set_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc9c29637 arizona_mixer_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xccdefc7f arizona_init_dai +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xd58efa61 arizona_lhpf2_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xdf829c4c arizona_init_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xe466e0fc arizona_lhpf1_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf23a2c4b arizona_in_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x6e0fcc4a v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x7159ef80 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x5827660d max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x27239fb5 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x6af4bd01 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x53b17286 twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x54c0bca7 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x785af545 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x7cf585a6 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x80dea51e twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xcd2a6ff0 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x37acdfc3 wm_adsp2_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x8592f6a5 wm_adsp1_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x9229a6ad wm_adsp2_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2041f3b7 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x31152535 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x4f74828a wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc21210b2 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xcb2d6d4e wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xd48e8522 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdbaef9fb wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf2f10ea5 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x1bfed22c wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x1efd4cbd wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xa578a113 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xe5a356a4 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x26ad8f57 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x28e0c4e4 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x77968974 wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04fc9e2b snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a9b8669 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b5c699a snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ce86c5d snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e197d1a snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f4809be snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10d04182 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11540f78 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11cfc393 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x136c9acb snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x165ee52d dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a0c5ffe snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c6d234d snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1db2979b snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x299abc92 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d34dba0 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x349a36b1 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3573134d snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b36b2ec snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b5ae4e1 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41ac3fbb snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4253a25c snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42542780 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44952087 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44bace77 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44e6eee5 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45ab43f8 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4638cc47 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4646df92 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47a94e5c snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48a351ce snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d1ffe73 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d853327 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51583273 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51a6507a snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52ae7e0b snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5470ce36 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5518caed snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5744ae06 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x593b0773 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5aedd671 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b02eac7 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c492fbf snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cf74598 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d748b57 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5da19345 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5fc473d9 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x605de4c0 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x624a8dd0 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x676264cf snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x683fec44 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73632c29 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75c9384b snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x773c9dc7 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7771a2b6 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x782be53e snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78c22f33 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7982a7e5 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79f915b8 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7db2ec4f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x801e7a98 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x814a5f2a snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81e61c7a snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85b5ca6a snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87824c53 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88cb8519 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8914cf64 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cd55aab snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8da68642 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e15a923 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e1f928c snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91937ae3 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9282f396 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92e55d6c snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93ad5d7b snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95f7bd69 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98834725 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99a27f8e snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d036291 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9dc45962 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0eb43d3 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1753dc0 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa246c607 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa391a7e2 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa83a910f snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa93834ee snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9b75d5c snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa4c54b7 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadce51b3 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb12e43b7 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb428f088 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6f3aad3 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcef6f38 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe4f29af snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbebdc15a snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd24ed57 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfe1abbd snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0c0366f snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd38b4431 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4b76274 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4c01e05 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4eed7a8 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5e59ab6 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd82e8e2c dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd85ae5b2 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda069209 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdad5d698 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbe7bf44 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0bf7a2 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc34c8c0 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde08972f snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0680baf dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2815cf7 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe41ab6a7 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5dcc229 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5eea7a6 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7124493 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8faf4a6 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9d63da7 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaf00c75 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed7a9b36 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed90d7a8 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1a4d17a snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf416cee0 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf43b95ce snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4f23351 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6cf6878 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9e22eab snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb1a0cb0 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd926901 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe79b179 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x002e8711 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0035487b usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x003d85ec __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x0044dbc0 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x006b60b2 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x008880f1 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x00ab2d00 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00df00bf ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ff2dbc pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0127e7fc ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x0129f287 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x012f13b4 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x013631dd __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x016a64dd rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x016ca41c inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01ac809d da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e42713 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0228d757 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x026631e1 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x028825aa dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x02a6445c tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x02b7dc3b sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x02d21fcd led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x03239c94 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035951a3 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x03b80c89 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x03c49958 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x03e2e32b pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x04606df7 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046774f7 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x0468b837 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x046d14c0 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04c0b0c3 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x05249e62 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05374263 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x0537ba39 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058b97ff ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x05973420 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05f082d5 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0665c2d4 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x066967b5 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x068e6c41 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x06af0857 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x06f22ca2 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0702f3ca agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x070514f4 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0753aad5 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0774ee53 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x077757ff wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0778c6a8 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x07942413 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x079c2bf2 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x07adeeef kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07cfe58b fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x081d0b11 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x0857fb3d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x08689c08 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x0877ca8c wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x08780665 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x08b592aa ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x08d303f1 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x08e6f6ff __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x08fd070e mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092c2a7a irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x0942161c usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09a5bb16 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x09c8586b spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x0a2267d4 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x0a4bed25 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a573c81 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x0a5a2991 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x0a79ee80 regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x0a82f19b devres_get +EXPORT_SYMBOL_GPL vmlinux 0x0a8f92ad ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0ab5dc68 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0abecfbf vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x0ac75016 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0aef8bce crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x0af58836 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b093be1 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x0b0c430e tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x0b308414 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b78e9cb of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x0b870333 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x0b9b2a04 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x0bc0b04e regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0bcf384d lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x0be1be92 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x0bf1088e sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c06dafc pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c907c71 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x0ca737f6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d088c6e rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x0d0e6465 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d60699b crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0d641919 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x0d6cea88 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d7878b3 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x0d7a7ba4 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x0dcfa449 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e001f5c cgroup_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x0e027717 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0e078289 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0e247d48 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0e459c5b crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0e4d65fd sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x0e4dd234 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x0e571d58 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e6d1bb2 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x0eba9cd9 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x0edc07d4 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x0f07a827 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x0f2bc17d put_pid +EXPORT_SYMBOL_GPL vmlinux 0x0f651a67 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fa0892a serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x0fad90fe pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x0fb63b55 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0ffc2c4f spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1044404e transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10621b95 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x10876789 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x10becca3 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x10c53ad6 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x10c9d678 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x10d0050d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x10d5bcc4 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10e42b7c pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10eefa61 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x10efc23e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x10fc34d4 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x10fd9e9a rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11299bab tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x112af917 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x11371e95 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x1141b397 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x11735a2b handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x119a06cb shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x11a6e332 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11ebd084 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x11f4881d pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x11f82001 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x122e97e3 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1233c699 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x12385de8 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x125970af of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x1260dead regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12a95960 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x12d4c3ce usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x12e52663 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x130c63ef srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x13137c75 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1339640b proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x133a076c dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x135f45f4 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13a3ff4f usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13d44789 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x13d6ce23 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x13e211e3 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x14109d4e dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x1441f741 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x14449a61 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x14725218 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x14bfe307 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x14c3a9b2 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x14c6b2b0 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x14d95500 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x1522b828 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x1534e143 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x15428969 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x15592975 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x157f651f usb_string +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1597fd6e dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159abb63 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x15c0d655 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x15d2bc21 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x15e5a29a wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x15eaba13 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16175a1c led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x163acaaf rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x1640e166 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165ca129 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x1665ca05 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x16900820 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x16afdf73 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x16b72578 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x16d6ad7e usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x16f63126 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x17079e38 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x171ee6a8 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x172244f1 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x172ae6a5 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x174a4372 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x17540143 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x17645e99 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1790fbfe bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x179b7a1f lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x17a3bec5 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x17c69d25 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x17ea2519 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x17ee9bc1 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x18082e67 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x180e1ed6 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x1837980a ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x183aaa17 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x183f3a28 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188387cf n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x188a8e7d get_device +EXPORT_SYMBOL_GPL vmlinux 0x1899878c sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x18a713f9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x18be317f single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x18c2299c sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x18c7b982 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18f41dc7 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x190ec05f device_create +EXPORT_SYMBOL_GPL vmlinux 0x190f12a9 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x1912bcef __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x192b9986 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x195aa663 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x198ddc21 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x19931807 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ad641c regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x19b75001 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a09dbc8 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x1a176c7a usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x1a268d89 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a35dbbc sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1aa7259c fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x1aa7f948 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x1ab1eb86 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x1ac5d662 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1ac72d19 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x1acd20d6 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afe3c39 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x1b4317fb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b5917c9 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x1b80673f tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x1b96f2cf posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1baa406d hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bb6967a pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x1bd47e52 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1c14ab4a vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x1c520e09 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x1c54463d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x1c5a04e0 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c70297a vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c810427 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8bb274 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x1cabf58f sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1cb185d5 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x1cb97019 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1ccd6bd5 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x1cf3925c pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1cffc4df RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7e2bfe crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1d845dc3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x1d8d6538 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d93c96b seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x1d9488ab ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x1db38012 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e688899 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1ea70c83 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec7a6c8 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x1eda9927 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1eee9d00 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x1f167a1d yield_to +EXPORT_SYMBOL_GPL vmlinux 0x1f2626a8 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1f35fc95 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f97f569 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x1fb0c987 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1fba4660 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1ffe4ca7 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x20089477 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x202185a2 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2082daf2 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20c40345 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x20d98a12 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x210c9c1a pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x211b6fd3 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x215eef42 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x21938020 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x21c4d260 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x21d22155 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21e4efb2 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x220990a3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x221fd468 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x22861008 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22e7229f da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x22f47fa6 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x230e6213 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x2330232c user_describe +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2375fa19 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2388edff swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x239511a9 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24425842 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x2447eb3e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x245c36e5 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x245c7328 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x24629e94 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x2476884c fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b41e71 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x24c547c0 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x24de1666 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x24e0ca03 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x24e4f35d da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x250469fb usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25438f8d extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x2546b6de blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x259047cd srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x25bab74f usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x260f9c69 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x2615000b sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x2615da0a crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2648554f bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x264cacb2 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x264eac74 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2664afb1 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x266a67ac tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2690387f ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x269e1b94 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x2704df5b ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x27169107 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x274b981d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x2779a11e crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27dfde63 queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x280a0d9c fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x280a9115 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x28135081 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x282102c6 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x2832c835 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x2850ca3d __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x287db352 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x287e6d14 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28f31602 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x294af5fd bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x29627210 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2965f900 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x29d92306 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x29f23643 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x2a366f7c swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x2a49daef cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x2a5791af part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6986a2 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x2a95349f led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x2a9b87be pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x2ab6a4fe crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ad318b2 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x2ae22c12 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x2ae5aa46 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x2af2f527 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2afd510a pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x2b007134 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2b0933cd regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x2b3eff13 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x2b50be10 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b638f2f pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b7e08d9 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x2be92730 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2bfc2fa1 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x2bfcf371 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x2c05a545 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c101b86 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x2c1972ec pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x2c1df9e6 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3cc6f7 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x2c430301 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb73b8d platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2cd5052e gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x2ce7813d device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1dd96e sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d6c707c devres_add +EXPORT_SYMBOL_GPL vmlinux 0x2d6fc62d pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x2d8272b1 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2de9055f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e76d6e9 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f3d2aeb smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f9809b5 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x2f9b5658 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x2fa6cbb7 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2fae03c7 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2fb61e1c sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x2fc0e553 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x2ff243e8 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x305d3658 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30971576 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30f57719 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314d2115 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x31b7f5ec kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x31bc0a75 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d919d8 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x31f845e1 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x32098da2 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x320cbc2c of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x3224b9dd transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x324a5c7b ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x32792f20 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x328b2d18 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329c4151 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x32a074fe call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x32a3d449 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ef0d03 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x332798fd kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3330bf9f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x335ccb34 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33d49546 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x33de8195 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x33e580ae security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x340f2860 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x342bd3c9 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x3438f8ba hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x345749aa i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3480a5b0 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x349f1e0a inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b23fbf srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x34f267f5 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x34f57b54 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x35049e4b blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x350eab50 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x355a8c9f kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x355cdd8a ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x3560bfbd jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x356ff331 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35af0e91 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x35ba51b7 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x35f8b5c4 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x36186ea7 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362b15e7 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x3677d42f devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x36966668 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x369b1e55 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x36b0742b dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x36e68974 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x36ef0009 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3700154c pkey_hash_algo +EXPORT_SYMBOL_GPL vmlinux 0x37073a49 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x37078605 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x37383459 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x373fcb4a device_rename +EXPORT_SYMBOL_GPL vmlinux 0x37713c70 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x377b9bd0 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x383d12e4 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x384056fd pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x389ba0d7 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x38a8253f devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38adc94a of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x38c7b7b8 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x38fb1e23 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x39244a0e wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x39263c03 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x3929f42c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x395f7386 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3992d0c9 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x39ad1bf7 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x39bcd5ab crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39ddde1a rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x39df73b2 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x39eccc89 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x3a0c5b57 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x3a24f30e hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2a21d6 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a57b52d crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x3a81993a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x3a915d04 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x3a91a983 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3aee6447 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x3b087b16 user_update +EXPORT_SYMBOL_GPL vmlinux 0x3b23a9d4 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3b5c35ee tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3b5cd1c1 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x3b9e4a5c input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x3ba6db57 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c000d00 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3c057678 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x3c1bf595 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x3c55d426 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3c73acf2 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x3c84412a filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca7bf26 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cbe4446 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x3ccbc86f tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdbf434 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x3cf0682f remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x3cfcf52c blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3cffedf5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x3d319c71 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d78bbdf cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x3d8feaee dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dca4b98 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df971c1 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x3e09376f find_module +EXPORT_SYMBOL_GPL vmlinux 0x3e4947e6 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x3e52db3b crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x3e56ad05 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x3e5b2780 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3e62906c debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e82bf9f swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3ebbac90 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x3ec0b2af unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0d1a15 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f65fbbd max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3f757579 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x3f80a040 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x3f91f560 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x3fc783e4 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x3fc79574 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x3fcdfde1 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x400883de tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x409e5791 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x409fd633 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ba9bad debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x40c68981 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x40ca82de cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40fcd7da blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4107180b dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x410afb45 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x41285556 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x4145d37a __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41892fbf wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x41ab8e84 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x41ef0e85 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420d6837 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x425c9520 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42f36621 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4341d54b cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x438feae6 user_read +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x4396b273 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43eb49a2 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x43effe7d of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x43f2d05a tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4408bd03 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448500ff i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x449617c3 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x44ac8a69 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x44c8ed34 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x44ce72ea cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x44f5d529 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x4507bff2 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4525f3a1 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x455566bc simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x4555df00 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458583ef evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c1f419 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x45e61dc9 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x462b3748 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x462ec04b da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x4649d220 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46839d6c regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4693b194 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x46cec32f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x46eee244 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x47156622 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4751319b sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x478e553d tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4810c648 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x482c3d92 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x484ea0b3 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x48934da6 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x489a3fc1 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48ab5da7 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x48b06792 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x48b31c6e zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x48c4b486 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x48d2c7be srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x48d47e8b ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x4902e4bf ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x4924bca5 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4931d33d __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x497ecc1e mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498ac397 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x498de975 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4995b969 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x49c80932 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x49c8a5fa sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x49d5fd82 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x4a4af283 device_move +EXPORT_SYMBOL_GPL vmlinux 0x4a6563e0 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x4a755ee9 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x4a832938 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x4a871113 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x4aa38e91 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab2142c __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4ad8a558 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4b076147 uncache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x4b32c776 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x4b651e87 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4b722ecf crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4b742b8a usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x4b77564a ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x4b93df89 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4bade689 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bcfc0dc regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4bf3b36c ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x4c07ad63 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x4c434185 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c91ef2c inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x4c9250e7 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x4d14a941 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4d166897 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d51a459 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4d68971f usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x4d7dcf1d sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4db9d9cb sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x4dbba250 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4dc5b1cb clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4dd7519f sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x4df546dd usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4df85d18 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4e09c6da rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e27ba4b skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x4e342f4e devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4e88b46e platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x4eaa3ae8 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4eecdcc3 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f11ebe6 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f2d2250 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x4f49237e ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4f663a35 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x4f827640 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x4f858136 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe18d83 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4ff17a6e usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x501bb9d5 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x5027e57a tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x503a7efc skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50942fac ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x50c20117 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cb909d md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x50db6c1c fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5111fdd1 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5148aa27 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x51579b5a tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x517a6a7c usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51cfee92 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x51d204fb pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x52010f5e regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52119f72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x521f2e66 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x52629e63 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x526a1741 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x52846094 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x529ff3f6 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x52c6676d cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x52cdf955 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x5308b36b __module_address +EXPORT_SYMBOL_GPL vmlinux 0x53092842 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x531c9e13 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x53367db1 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x539ef210 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53d52b0c spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x542d52fc crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5467d47c gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5476babc transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x548c655e crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x550b8aa4 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55d921f6 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x55e275a9 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5636951b blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x5644c175 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565a5c1e show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569d89c7 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x56afdad2 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c10b1d sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x56c38f94 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e00c3f inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56efa0cf tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572e0c4e dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57ba3d2c xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x57bb2ca9 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x57e3a3b1 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x585529c6 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5862227d crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58bde786 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x58c889f6 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x58e443a2 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x58fb9c8e sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x590ddf2b tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594d8813 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x598253f6 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x5996d130 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x59e058a4 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e5d9cd pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a225003 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5a2e667b ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a659899 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9ee032 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5abeb1ca device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x5ac91d80 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x5aeabc21 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x5af015fc pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x5b0b3e0b class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b120cda dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b7dce9e platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5b9e74be pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x5babd164 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x5bd8bbc3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5bed6e92 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bffcd55 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c3ee82a pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x5c6e3187 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x5cb2dfe6 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x5cc701e5 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x5cf5c3e0 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x5d030bc1 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5d095663 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d7820ff cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d88959f pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x5dc7dff4 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x5dd07266 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5dd18380 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5dd494bb pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de30032 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x5de6086f usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x5dfc3c5a led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x5e0909a0 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x5e20c95d event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5e4c2935 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e571a0c __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5e8d1e24 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x5ed1b328 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5ef46191 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x5efa7ae0 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x5f17ed1f inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x5f1cb87d fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f288a08 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x5f4791e4 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x5fa184c8 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5fa62460 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5ffb7f78 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x602f8de2 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6046e7d9 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x604f6776 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60717acc of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x607477ed ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60c26de5 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x60d4a621 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x60d527bd usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x60ed53c4 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x60fd0e87 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x60fe7220 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x613706f6 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x615e48c0 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616d2f58 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x617b64f7 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61b6e822 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61e6d3b6 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x62291b82 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x625cb203 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6265cde7 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x626ba157 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x62921a9f ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x629e485e ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x62a00bfb hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62c01764 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x6300f572 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x634b16c4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6354ceeb pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x635d6024 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x63833409 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6387cef5 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63a9280f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x63db4002 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x64029ff6 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x641f412a dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x644d5d0f da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x646a44a2 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x646bcdee perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x6471f13f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6475d864 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x64924605 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x64af2749 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x64d5a4c1 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x64f3919e tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x64fa3a08 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x655c6efd wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x655ed6ff anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x6564d56f pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x65cc201b sysfs_notify_dirent +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 0x65f9d9a3 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661c394b ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x6626a135 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668a2548 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x668b8b49 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66a07b8b thermal_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66c78bd2 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66dce464 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x66fe76df crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x67147a4e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x673954da usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x6741e35e dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67583e57 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x6790d8d0 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679ffd56 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x67aa2a9b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x67c35d09 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x67e12dbb pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x680e9946 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681def64 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x68486807 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68bce854 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x68f43fc3 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x6901e820 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x691e23db usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x6920fc5e usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694f8a04 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x6974e415 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x697a420c timerqueue_del +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 0x699d676a inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x699e6632 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69a4c483 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x69a522d7 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x69d63adb arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x69e1e22f rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69ebd074 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x69f47974 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x69fc6a7c pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a0988ba get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x6a0bf578 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8a6331 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6ab94229 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6acde5db ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x6ad4d91f cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x6b264960 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b74c6e1 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x6b811324 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6b8a5b13 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x6b9e00d8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6bb36082 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x6bba32fb wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6bccd7ca get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x6c08babb device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c61afb6 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6ca4d837 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x6cafc562 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x6cc3c854 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6cdb6ce8 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6ce0beab xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x6d1a695b ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x6d27b82f tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d30fdeb cgroup_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d6477e4 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x6d888756 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6db67d82 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x6dc765ee cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6de293e6 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x6deaba3d inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x6e0dc42c cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x6e242a29 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x6e2e46ee serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x6e57b3cc regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x6e5f1d10 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x6e622c92 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eb546f8 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x6efc637f ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x6f17ffe4 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x6f1a0d15 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f41d21b usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6f51b3ea rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6fd60f8d pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6fea130b dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7029a0ca register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x704cc82a find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70863de1 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x708bd95d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f8c754 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x70f915b3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x70fdb550 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x714b93e7 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71b61437 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71ec4202 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x71f9d327 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x7211a99e rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x72204992 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +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 0x728ef4db subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x728f4f87 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x72903e1b pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x72a401ad tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c6df87 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x7314dc14 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x73152cdd isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x734703ae arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x737c28db arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c5e1f2 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e07fff crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x73f3b8b3 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x74005052 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x74228bef tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x7423c22b rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x74392999 mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +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 0x74b73e6a user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752f6bc7 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x7532bd41 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x753b4587 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x75458fae power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7552e892 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x75ac423d disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d6c28c of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75f98234 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x761b01f0 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x76402b3f __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x7644b238 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x76495608 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x7649805b __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x765b68d9 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x765f120c unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x766e8af3 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x768fd28e rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x76bd5439 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x76e406e3 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x76ede3c0 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x772403db mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x77515fbe raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x77865764 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x77b00001 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x77d0cff3 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x77e78218 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x7813bfbe kvm_resched +EXPORT_SYMBOL_GPL vmlinux 0x78174907 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x781e9b33 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x788b244d tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x78f163f4 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x7903fa52 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x79270d4f ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x795b26e5 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797add25 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x797d48cc usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x798638bc dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x798b118d ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79d99b00 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x7a1317ca invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x7a296c6e elv_register +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a3141b7 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x7a3a8055 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a958645 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b4c3b73 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7b4cbf4c extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x7bb70168 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x7bb90083 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7c1a9a2a sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7c3b2664 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7ca93ce5 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x7cb7aada mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7ccbd02a md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d13a49c pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x7d268aa9 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x7d4ceb5d inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d650995 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7d8e6514 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db8f21f crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x7dc47b46 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dd97ac5 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x7df10a97 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x7e0ef97c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6ec5bf regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x7e718077 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x7ebb20cc driver_register +EXPORT_SYMBOL_GPL vmlinux 0x7ebde799 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7eca870b debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x7ee444b7 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x7ee4fdaa crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f128392 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x7f262e13 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x7f275e8a uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x7f35840c nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7f361b40 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x7f413b41 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7f5f500c pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f889f82 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x7fb307a0 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x7fb749d8 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x7fd41b5f extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x7fd74fa4 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x7fda7754 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x7fded29a agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x801bb742 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x8072663c pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x8077f70c br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fbb166 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x810730b3 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x8112d866 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x811f0d4a bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x819f13f2 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x81c6cc4e rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x823d4ad3 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x827f98ae shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x82883f35 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x828b71e9 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f69953 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x831c0930 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x83368602 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x83391091 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x83687486 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838ec7e1 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83b676ef ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x83d17617 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x83d5e8f8 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x83dfbfb9 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x83ee09bf of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x83f198a1 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x841d9837 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x8461d206 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x846db2fd led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x847a0802 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x849e75d1 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x84a9cadc debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x84b6b462 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x84de03ab tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x853324ce elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85a7a831 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x85acc79c ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cc8e08 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x85edddad sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x863c552c cache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x86437a6d mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x8651de29 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x86777114 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86956417 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x86eb3d8d cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87016572 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x8704eb06 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x870bdb3d usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x871bcaa4 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x87212fbf pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x873728d3 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8765e827 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87c99a2f pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882005aa serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x88251aea register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x8830d2fd sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x884f5a7e usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88d94e31 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x88ee40b0 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x88f95d20 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x8904b159 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x890fb36b verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x89195e19 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8948e78b __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x89822240 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x89cb3d5b digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x89f8db13 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a4a7902 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a835b8c wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x8a9be6c3 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afbf7b1 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8b2a0e47 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8b393548 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8b61735e posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b821778 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x8bc911d4 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8bcce567 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x8bd9836f crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8be7200e kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x8bea511f max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c16cffe shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x8c33a1c5 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x8c36b038 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8c43011e inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x8c605df4 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x8c65a4e7 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c852f5a ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x8cb22dbd wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x8cc89450 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8d16cb8d of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8d2964ea crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8d2e1682 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8e147cc4 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e21ec5a cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8e261296 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8e39bf6a da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8e4b4462 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x8e6fcae7 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x8ea84801 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x8f037d09 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x8f050b75 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f122cfc rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x8f12669a irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x8f1b63b8 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x8f278061 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x8f467710 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x8f4916c4 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x8f4a94b6 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x8f4bd200 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f861483 put_device +EXPORT_SYMBOL_GPL vmlinux 0x8f98cdfd ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8fc1a06d ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x9015aa48 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x903b6ce6 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x905f467c disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x908c9bb0 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90db000a security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x90ef5743 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x90f36b88 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x9111ef11 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x91387839 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x913c749a tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x9142f6c0 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x91495f0b dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x915a1f4f rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9168b740 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x918a29aa sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91adee3f devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x91b2f79e usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x91c1d99c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x92122afc hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c90e22 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d3a81a __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x93160ac2 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x931648d5 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x931c0f3c sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x93226faa irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x933f2529 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x93451c30 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x9346a8d0 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x93482909 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93dd98f9 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x93e3ef8a perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942a602d bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x942ab8ee dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x947abe44 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x949341ea unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x94a6184a proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94bb3f0d relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f2db26 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x94f9df85 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x951970e4 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952a75b2 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9535efe7 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e6d81e key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x95ea18a6 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x95ecb824 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962e5b93 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x9633639e crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x963d6d5a thermal_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x964008aa set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x9648372c usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x964edd2d extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x967b308d ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x96b23b5a get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96d98202 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97050e88 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x9705618e pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x974b5535 pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x97501a95 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97c9c97d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x97e31e49 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x9803799f usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x980f3ac0 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x981239f8 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x98320dfa wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986f46ee da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98e9b117 devm_regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x98ee6ba8 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x994374f1 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9961fc3e blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x997a66c9 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x99ca75e9 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2a3a69 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x9a41d07a irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a60af77 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9a7a0442 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x9a86d8b7 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8feba7 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9aa3b892 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9acb4aa2 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x9adcd339 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b04b209 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x9b6c424b usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x9b811767 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x9b9124fd da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9b9c250a relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9bad36bd crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x9bb35b9f vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x9bce223c ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x9bd8f0e9 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c0797e3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9c1aec00 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x9c2c792a blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x9c57bec5 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x9c71ddfe pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x9c7dcd45 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c7e206d ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9caf9e79 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x9ccb1788 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9cdb1038 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9ce880f0 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x9cf13ca8 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d0c5cf7 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x9d59fbb6 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x9d7ea498 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9dc22b67 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x9dc94100 gfn_to_pfn_async +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e47bbbf spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x9e554fc9 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x9e67ea75 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x9e73cf3e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x9e8c6ab8 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9ea162df da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9eb052e8 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x9eea2914 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f4bd91b device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x9f6b1900 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x9f71277a spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x9fac7cff bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fdbcf90 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa024e34d pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xa025dbe2 __netpoll_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa05854bf tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xa06605c6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa0699a33 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa093d39d unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0b2248f rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xa13a976f trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xa13ca268 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1451f87 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xa1552c31 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xa1661cc7 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xa18ad1bd fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bf269f rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa1c394dd sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa1d742ee unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa1eb654e dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xa1ed4ced kvm_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa1f7c64b tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xa22b90ad fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa2374e98 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa246a8f4 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xa246e9ba queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa26007cc class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa260b00e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa26fe86a dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xa27eb55e udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa2992fb8 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa2aa7576 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xa2b0c452 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xa2c4066e crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xa2d19e8b tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa30df025 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa333df02 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa33984a8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xa3544ec9 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa37e4f13 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa39d9220 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40a50dd blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xa40c98f9 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48c98db spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xa4b8a30b perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xa4c6d265 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa4d5672b fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xa50ca1f0 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0xa50eb9b0 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xa51bed9b kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xa55a25b2 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xa560dc5e exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5d9b528 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa5e0cda8 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xa5e7ecab driver_find +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f3b326 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xa5fdbe66 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62ee6c0 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa63032e1 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa63b97ed tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xa6479bb1 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa649cdc6 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xa6739b12 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6dc16cd inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f85ed0 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xa6ff6466 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa727db96 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xa7315e66 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xa73c9a0d ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xa7499808 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75ab664 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xa77a15ea spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xa77b9a75 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7d03dec srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xa7dd634a stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa81a9962 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xa81d3696 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa822e45e __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xa8276030 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xa8c9cd6e vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa916ab4d led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xa9a684eb init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9c87fe2 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaa066d26 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xaa160c69 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa22ab39 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa46fda7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xaa547e26 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaba59b1 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xaabd9196 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xaac7c439 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0xaaee2ef2 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xab020f5e pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xab077a5b debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7e3362 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xabb996e2 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xabc8291b usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xabc91090 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xabe5b9fb ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xabee75b5 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xabef469a __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xac01b781 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xac26773d cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xac3865b0 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xac4a9921 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xac789867 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xaccef3e9 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xacd443df timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xace41183 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad25d362 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xad36d15b attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xad8bb177 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xad93eaa3 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb5d75d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xadbd5cee ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcc037a sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xade0f675 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae502c13 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xae504716 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xae55d186 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xae607b80 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7f4781 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xae907146 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xae90fe5c input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xae98841a kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xaefd974e dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xaefdfe13 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xaf0a47bb extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaf1db05b bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xaf29ff84 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaf59012c evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xaf7c0b6f usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xaf8ccf58 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xaf8d8009 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xafc056f5 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xafcf369b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xafd96ed5 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaff3c8a0 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xb02cd5f0 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb046c873 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb04cf3dc blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb063afc1 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb06c20a1 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xb06f730e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bacc7f gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xb0c93d09 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xb0e93ff4 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xb0efe302 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb1211c74 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1500d8e usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xb17c500d fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18c1536 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1d50e6f tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb1d61c25 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xb217b7b1 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb21a4e6e pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb23b6636 css_id +EXPORT_SYMBOL_GPL vmlinux 0xb29e8ec2 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb2c751b0 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3197abd exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xb32dbdf8 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb335594d rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb3369d27 __css_put +EXPORT_SYMBOL_GPL vmlinux 0xb35f0f9f tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb37bd3fd ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xb3bbc172 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb3deaefb __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb436403a of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb43da9ba cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xb4445396 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb461a630 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xb47468df i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xb4c28f78 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb4c475f8 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb4e203cf relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4fd1776 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb51b58ff devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb532f032 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5658aac __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a8a4fd ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xb5c6a495 user_match +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5de80ce device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb600e007 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb600fd0a tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb62c6197 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xb62c61b1 regmap_init +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 0xb6cdfd2c spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xb6dd5418 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xb6e6891e tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb6f5f477 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xb704214d class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xb76b012e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xb76fcf2f gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb79c9a80 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7ce9698 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xb814f769 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb8163455 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xb821cbd3 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xb821e35f pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb82f209f skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xb84d3887 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb8628196 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xb89b4e5d device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xb8c5b811 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xb8dbb562 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb918b1ca ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xb9679f90 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xb9814eb2 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb9845ae5 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xb989cd56 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c1fe96 regulator_is_enabled_regmap +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 0xb9dabd94 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xb9e4cb59 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0xb9fc708b queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xba081359 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xba0ef329 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xba3a7486 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xba62f245 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xba6f1f80 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xba846bc7 usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xba94d4e9 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xbabc687b crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0c00ff flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbba1f7f0 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbbbfd809 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xbbcb1fc3 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbbccff2e ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xbbe54a01 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xbbe59db1 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbc2fa700 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc8f39c1 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbc95950e wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbcadbbeb class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcb27bf0 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xbcd8db45 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xbce66d28 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xbcf993e0 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xbd045cab pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xbd0e1ae6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xbd10b399 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbd3c971a spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd77b40f dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xbd80e3ce pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xbd83c466 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xbd9cf751 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xbdc5069d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdf8f799 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xbe117f59 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0xbe1395b0 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xbe185787 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2dc8d1 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xbe78573d inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xbe830e6d ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xbe92207d ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xbe9b4fbb irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbec8826b sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf2bed8b scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xbf4a9a05 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbf7752d4 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xbfb2c9bc wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbfc68866 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbfcb88d0 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xbfcb9be5 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbfe85f50 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xbfff2816 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc033bc24 input_class +EXPORT_SYMBOL_GPL vmlinux 0xc03d3a0d device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc0729933 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d05199 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc109f235 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1140eee ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1919ef1 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22f6566 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xc26b90b6 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29e378b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xc2b87741 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc2d773f5 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc2e009a0 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc30af0a6 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xc34032fa class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3876fc0 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3bfba7f fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xc3e343cf device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xc40a8286 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43166da fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xc4463b93 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4697331 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc46d877e schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xc46fb972 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc492c59a tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xc4b3dcf8 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xc4dca86e ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xc5143711 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc57cfb2a adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xc57f7057 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xc58038ab swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xc58f1512 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xc5a3f9a7 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xc5bcca9a skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xc5d00e5f regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc5d3b412 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc6531cd4 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69e3a34 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc6aac088 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc6beb640 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xc6ce1bd1 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xc6d7273b __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xc6fed188 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xc7039696 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc79e723e inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c87ca6 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc7da17be timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e4c538 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc7f21f26 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc807dac4 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc839fd6c __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc83fedea transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc840aa05 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xc89bb498 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xc8a06b68 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8c935b3 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc9045a62 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc917ae64 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xc9274da3 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95fcdc8 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9e34529 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc9e374fd pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca2d8385 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca961ea4 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xcab975d1 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac5c13a ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xcadcdc55 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1ebb77 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xcb491cc4 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xcb9d6716 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xcbbce4f5 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbcaad7c __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc25fb80 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcc645cf4 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccdcc9b4 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xcce15192 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcd292857 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xcd53def4 mmput +EXPORT_SYMBOL_GPL vmlinux 0xcd635c2f sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xcd6dd8a1 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xcd7d19bf usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdae135f anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdc466df net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcb85b6 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xcdd15087 of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0xcde5ac1c device_register +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce247f1a __bus_register +EXPORT_SYMBOL_GPL vmlinux 0xce386b8c blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce60a7f5 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6e3421 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xce793e95 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xce8c5fd1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xceb1f48a pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xcec99428 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xcee11ce3 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcefb4758 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xcf0b76eb find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0xcf1f6ea3 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xcf3c4e20 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xcf96dfc3 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xcf9dd9c6 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc952d0 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfecab0c register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xcff963a3 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xd0319b7b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0b343ec blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xd0bcf095 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd10c8fae kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xd12d27bf dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd193ccc9 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd198baeb devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd1aea53b usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1b6444a blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xd1cb205e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd1dde6a7 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xd1eda6b9 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd22bacb7 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xd2448570 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2857e8a rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xd2920c71 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2e5b193 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd310120b netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xd31f1914 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd333cfe9 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xd338dec6 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xd33f1d88 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd3416751 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xd356fdc0 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd380e3ec usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd3a6399e ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xd3b4b307 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xd3ede7fe rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xd3f05cd3 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46decdf ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd473b875 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xd4746d94 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd4a84364 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c248d1 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xd4f44a18 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xd4fb7221 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xd513ddbf timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xd5697551 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5a600b6 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5e4be5a scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xd5fc35ee adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd61ad7a9 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xd61b4640 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xd6316de8 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xd64360a5 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xd64aa46c stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd6525e85 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd675ddbc inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd6a8550b crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xd6b6062f __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c36497 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xd6f1f89e __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd6ffcbd4 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xd70e5bef power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xd720c9c0 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd73b7be9 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd75d21cc xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77b2fa4 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f84927 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd832c927 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd867af18 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87ef663 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd8b851ab fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xd8f5b188 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd9116a53 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd99728c5 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xd9d7f623 pkey_id_type +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda050109 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda323ff8 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda5df468 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xda8ad8bd rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xda8e5d69 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdacbadd1 wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdace6dd2 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xdaf3fb45 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c814 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xdafcdf3e sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb35e605 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdb37fb8c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb620ede kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbacfdd9 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xdbd65e8b kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf39860 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc2b822b ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xdc55ad08 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc85579c stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcb8f6c6 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xdcbd9de1 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xdcc1e52b task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdccd8fd0 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xdd166c4f dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd30382e dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xdd54faa3 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd75829e inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xdd8daf84 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde16e5a blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xde20770a inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xde4347be debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xde4cb7ca aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdeb51b86 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf27877b register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdf50139a sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xdf91b164 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xdfa29915 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xdfa45d38 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xdfb926c1 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xdfc3812c balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xdfe0721b rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xdfe7d0ff tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0240fa4 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03525ac of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe0626f9f xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0bf7cb6 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xe0e4160e stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xe110dda3 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe12fd43a devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xe14abe62 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0xe14c90df pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xe1625d46 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe18b5b69 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xe1c61cdb ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xe21b74b2 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe2253f9f relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xe24c227e pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xe2907930 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +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 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe33c65d6 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe362af1a usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39b45d8 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3b45387 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xe3c51073 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe3dd1df7 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xe3e21354 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xe4191d39 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xe42bcefa irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe437c15a sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xe45e4eb6 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe4638401 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xe4abf757 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c52490 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xe4e28fc9 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe5375979 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xe53ca79b pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xe56e9c8e tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe603044c mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xe6182e11 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xe629cc9d ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xe62f6abb ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xe6431ecd rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65d1c12 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xe666858f device_add +EXPORT_SYMBOL_GPL vmlinux 0xe667ba9d relay_open +EXPORT_SYMBOL_GPL vmlinux 0xe66b39c7 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe6833eb7 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xe68d3321 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xe696a792 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe69f902e fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xe6ab86a5 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe6b5771a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe70c9080 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xe7114136 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe71fd48c crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xe7264bae extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe73c0ac3 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xe750f363 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe782f1a1 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe7a36368 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xe7cddd6f da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8277737 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xe82bc52c blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8a1421b scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe8cc740d __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe8fdc342 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xe90274bb blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xe909049f ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe93f1665 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe96a163a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xe98649eb static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e80c27 single_release_net +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 0xea60fe23 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xea8035c6 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xea8f4198 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xeaba18bf pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xeac09197 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xeac38d24 device_del +EXPORT_SYMBOL_GPL vmlinux 0xeac5f3a3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xeaf5565b sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb4d35c3 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xeb676214 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb949938 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebd962bf regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xebda6343 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf50644 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xec10f172 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xec1a083f pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec20a8e1 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec45bc0d max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xec73576e da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xec82056d device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xec91af4f usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xec930ca9 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xeca673ee rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xecc9a2e7 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xed1bf877 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xed3596b7 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xed419904 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xed4826b2 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xedbf3cbb of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xedd35e3d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xee425bb3 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xeeaa7dbe tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xeed70721 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xeefa4d06 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef649287 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa7ac75 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xefc91531 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xefe6eec5 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xf001dc80 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xf0767563 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xf07e0865 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf0886e7c usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf0dd88be md_run +EXPORT_SYMBOL_GPL vmlinux 0xf0f11624 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf136acb2 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xf1372c72 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a48e32 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1baf32c pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xf1e5d80f async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0xf1e7ec8c tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf1f3084f get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xf20b9400 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xf212fb7f of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf2269399 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf23f30e9 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf2b88afc crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf342ad2c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf36bc31b serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xf36f0330 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xf3ac3c16 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3bab3be mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3f97f58 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf40b5e57 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xf40cb235 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xf422cfa0 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf48ccda8 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf48ffd5d class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf49872fb aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf498c853 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b40818 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf5531f84 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf58be427 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b8f94a ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf5d01c58 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xf5d59bf3 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf5d6080f smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf60cb516 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xf63a3f92 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf6bd9994 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ece15d led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xf6f647f2 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xf7432eb8 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xf74656ab regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf75872a3 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf7b544e4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf7d18413 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xf80f1fa2 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xf81b9f69 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf866d928 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xf873f9a9 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88459b2 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf927a141 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf941cc85 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xf966355a crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xf98e426f usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9ea1d4b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xf9f01bfa ata_pci_device_suspend +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 0xfa2fee26 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xfa4d3e24 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xfa4efe8e sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfb05c9b4 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xfb29f1d7 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb81a2a1 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xfb8f9194 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbc27f76 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfbe0d499 menu_hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc34de7f wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xfc41ff33 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xfc47d2b8 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xfc89d6a9 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xfc8e8101 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xfc8f605e max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd255686 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfd993393 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xfdc80b90 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xfdc8c90f ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xfe077ec1 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe1b33d7 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xfe3f6f10 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xfe5354db usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfe920bd4 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xfe950c08 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea939ae hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff005874 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6e7db6 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffd01819 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xffe97144 ata_bmdma_error_handler --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc64-smp.modules +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc64-smp.modules @@ -0,0 +1,3419 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8390 +842 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7180 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +amc6821 +amd-rng +amd5536udc +amd8111_edac +amd8111e +amd8131_edac +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as5011 +asc7621 +asix +ast +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_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 +bcm_wimax +bcma +bcma-hcd +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 +bpctl_mod +bpqether +bq2415x_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bsr +bt3c_cs +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 +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_imx +ci13xxx_msm +ci13xxx_pci +ci_hdrc +cifs +cirrus +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-pci +com20020_cs +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpc925_edac +cpia2 +cpu-notifier-error-inject +cpufreq_spudemand +cpufreq_stats +cramfs +crc-ccitt +crc-itu-t +crc7 +crc8 +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +csiostor +csr_helper +csr_wifi +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 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +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-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-verity +dm-zero +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +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 +dvb_usb_cypress_firmware +dvb_usb_v2 +dw_dmac +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +electra_cf +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +fat +faulty +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +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 +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gpio_vbus +grcan +gre +grip +grip_mp +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-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-holtek-kbd +hid-holtekff +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-ps3remote +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hidp +hih6130 +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-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hid +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-viperboard +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 +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +ibmveth +ibmvfc +ibmvscsi +ibmvstgt +icom +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +ip_tables +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +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 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +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-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp8788 +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-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3630_bl +lm3639_bl +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 +lp8788-charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max77686 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memory-notifier-error-inject +memstick +metro-usb +metronomefb +mfd +mga +michael_mic +microtek +minix +mip6 +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mmc_spi +mms114 +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdchar +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_tproxy_core +nfc +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nftl +ngene +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 +notifier-error-inject +nouveau +nozomi +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +nvidiafb +nvme +nx-compress +nx-crypto +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_mmc_spi +of_serial +ofpart +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +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 +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-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm8001 +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544_i2c +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +ps3-lpm +ps3_gelic +ps3disk +ps3flash +ps3rom +ps3stor_lib +ps3vram +pseries-rng +pseries_energy +psmouse +psnap +pt +pti +ptp +ptp_pch +pvrusb2 +pwc +pwm-beeper +pwm-twl +pwm-twl-led +pwm_bl +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +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-shark +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 +rbtree_test +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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 +rc5t583-regulator +rcar-phy +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +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-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-ps3 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s2mps11 +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +sata_highbank +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 +sbp_target +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 +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 +shark2 +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-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ab8500-codec +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-arizona +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-da732x +snd-soc-da9055 +snd-soc-dfbmcs320 +snd-soc-isabelle +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98090 +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-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-sta529 +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-wm-adsp +snd-soc-wm-hubs +snd-soc-wm0010 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm5102 +snd-soc-wm5110 +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-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +snd_ps3 +soc_camera +soc_camera_platform +soc_mediabus +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 +spi-dw +spi-dw-midpci +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +spufs +squashfs +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_drv +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcm_vhost +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 +ti-adc081c +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_infineon +tpm_ibmvtpm +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +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 +usb-storage +usb8xxx +usb_debug +usb_gigaset +usb_wwan +usbatm +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx6q +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdrtas +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +wimax +winbond-840 +windfarm_ad7417_sensor +windfarm_core +windfarm_cpufreq_clamp +windfarm_fcu_controls +windfarm_lm75_sensor +windfarm_lm87_sensor +windfarm_max6690_sensor +windfarm_pid +windfarm_pm112 +windfarm_pm121 +windfarm_pm72 +windfarm_pm81 +windfarm_pm91 +windfarm_rm31 +windfarm_smu_controls +windfarm_smu_sat +windfarm_smu_sensors +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zte_ev --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-smp +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-smp @@ -0,0 +1,13565 @@ +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 0x6f6532f0 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x1679d7b0 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xb42f1c1b bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xd2943484 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/paride/paride 0x135b6bab pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x392862cf pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x783271c5 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x950cfd9c pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9ce82173 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xa3be7917 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xaeda507e pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xba213146 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xc02bba5c pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xcd4311b2 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd9410c59 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xf5c3a65a paride_register +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 0x2eb489a9 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x36f11959 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x37802ca8 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4ffcde94 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x53183674 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +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/dma/dw_dmac 0x10f758f0 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x160c8ef8 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw_dmac 0x259fe6ee dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8c6e4884 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0xd7818670 dw_dma_generic_filter +EXPORT_SYMBOL drivers/dma/dw_dmac 0xe32ce60e dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0xe65c9bf7 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x938644fe edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0c2aa0cf fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0c3c2e03 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1637053f fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x22deae0f fw_card_initialize +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 0x3f0324fa fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x475ca959 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x48d92297 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5cfbf9d9 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6048102c fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x697c1dfa fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7252a392 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7b26545a fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8352acfa fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9469c76b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x98e35d35 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8b9e348 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xafd36b4a fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbb94ec37 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc015b237 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xce942fe0 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe02e9ad1 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe04b8377 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe6bd6b2b fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee651aa3 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf262f2b1 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb2162a8 fw_core_remove_card +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00001460 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x006718c6 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01951043 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0267820b drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0273c7e9 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02861a02 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02e6e099 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04f44f0b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x060f676e drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x094e30c5 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a7a771d drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0be74d3e drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c79b500 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c7afdfc drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10cbb6ae drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11065515 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13653454 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16a47d0b drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x179d8495 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19621a52 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aa0ffa3 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b0e670b drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b2b61bd drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b8810d8 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cfdd284 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dec0003 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1edbc3e9 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f583004 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20935c42 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2158f64d drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24dac6b8 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28a92203 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28b1b70e drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ab4eed drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ec0646 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c9bd109 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ff8b3d4 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3115210d drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3158b982 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x317be51f drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x320ca835 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x330ab005 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33415693 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x355771e1 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36574de4 drm_prime_lookup_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x367da2a8 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3822bb7b drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x391b3feb drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a34b4cb drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b5b10b8 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba39b2b drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cd9d172 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d9fa5da drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f05b669 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x402757e7 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x402c5219 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40928cb4 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x426ae2c3 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42d54901 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42e84661 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42edbddc drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43a38666 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43ac719d drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a0c113 drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477cf500 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4819a054 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b1de085 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f883f31 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5118a47d drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x514ff488 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x538f0810 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x554dbf36 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55571161 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55a7bc41 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5abdcb66 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b8aa39d drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cc36eda drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cea5c7f drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e81a46f drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eafb8e9 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x600ee130 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60ca7315 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60dc8d88 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61661bf9 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x632453a4 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63648680 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64b77d41 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x650c28c6 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65adfe5f drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65f2659a drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68cc94e1 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b14bccc drm_mode_cea_vic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cae5f61 drm_mm_search_free_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d573423 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d5e51da drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e2cf25d drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e85500c drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f484a63 drm_mm_search_free_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70db976e drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716222bd drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71b0f266 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e8efc2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73078981 drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74eb60b6 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x773ac739 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ac81039 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b42b5d4 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b80a148 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3f7420 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e8c864a drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ef95055 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fd66df4 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x826443d0 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83604849 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x839e5d32 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88ea84f9 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b666089 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d515a3c drm_get_minor +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 0x8f2cb207 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fc9e371 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x937bed69 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dd060a drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x965f0ec2 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9767bf1b drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x979210cb drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x983d5aca drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98c32486 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9aacc911 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bc8c5b0 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dbedd65 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ff74dea drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa16d9d35 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2c276dd drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa658b0f6 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa80f7015 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8f1c304 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad416b3 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf2728c3 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafd38aeb drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb29e45d1 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5a8b9d0 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8174f60 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba2d0719 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba692b6d drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb874f75 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc25a61ec drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc48b41b1 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5f3a1e1 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc72893e9 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc87b80d6 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc914e627 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc969721b drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca19cb26 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb1367c8 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb1beab5 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb3f1a31 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbb87ddc drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc0e5860 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccffbf64 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd31b831 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcda91c46 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce466b9c drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd052c3d5 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd203a886 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2b560d3 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d390ff drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8e083f9 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda87b19e drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc43d4b3 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdd5434 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe41b474a drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe538325e drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe59a9dad drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe622f220 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6e3c7eb drm_gem_prime_export +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 0xe7bc3499 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe889175a drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed7e518f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee780d5c drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef5eff1f drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefd52847 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf01e7197 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c6c6eb drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf139ebb5 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3a69684 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4877c7f drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4f21508 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcba2ab1 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe5594b0 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x017f718a drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01bcb9df drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c423cdb drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cab28ab drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d32f0cd drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ee52b62 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46b7668c drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e717788 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71b03b8c drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ad347cd drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f135333 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87c74cf5 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8955947b drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8dbcbacb drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8df5256a drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90e41442 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9302749b drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97d76eb2 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c286e55 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f87ecf7 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac589cb5 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3d54db7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7522d1e drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb1d86b8 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcc88081 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1e91cfb drm_fb_helper_check_var +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 0xcc56af49 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xccec627f drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcddc39ea drm_helper_encoder_in_use +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 0xe1820664 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf73a1b3d drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf899f033 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcb70a29 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x5c5220b4 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x911a2ff6 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xdafb2cc6 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05c60b80 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x08a044f6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c72fb84 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d1180f3 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0edb820a ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ff1be54 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12a7fe78 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17e48a1d ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25601444 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25b7157e ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29e9f6b7 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a152edc ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a4f8e7b ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ac43ab1 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e3c21ee ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f90c56b ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31c31286 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x339fc4b5 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36990d88 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ab54ad0 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3af40e27 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3eb6b049 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b1cdb5a ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d1eea63 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51a1f3ad ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59383e4d ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60dc0836 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6888f854 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ba7245d ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70733478 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80402d61 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80ba10ba ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x868cff8e ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88639864 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x900c15c8 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d6f8b76 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9dd3a681 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa153fd83 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa16941e5 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa83d71c9 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb03a02db ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb3a7210e ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7902d7f ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1eb206e ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc73a01c3 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9704310 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9c39136 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccbe4d79 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd1e3554a ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3fd947f ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5ccb769 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda41faf6 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe47da9e6 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe86e7adf ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe93079f9 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec15f9fb ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4c0b33 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2756e70 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf331f06c ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff3186df ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffbce779 ttm_bo_wait_unreserved +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 0xa2024913 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xfc362940 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xb05820da amd756_smbus +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x13237727 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3a3a6cca hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x97a0aa8b hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc04cbfcf hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe867a45c hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0471855b hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x775f4af0 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x33652976 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xaa0573fd adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0160cb4e iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x042414e8 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x049ed068 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x07a27495 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x1a4436ee iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x1df8ffb6 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x28f467db iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2d7b276f iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d8379ea iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x485527c7 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x62dc8752 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x83177b91 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x945c1811 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x94849a9a iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa8c64244 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xbca52052 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xbf65487a iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xc0fba918 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xce5873b8 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xd125bba8 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xeac5805b iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xf004d2f3 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xf69b62c9 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xf93ba19c iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x3c2827bf iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xda7f0f5a iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x88267b52 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xe8e06b26 iio_kfifo_allocate +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 0x7d7a9739 rdma_copy_addr +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 0x30f661a2 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x36c72a82 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4855382b cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6817f3af ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76590a5e ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76d5a583 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7a5c2ff2 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x914170f8 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x960213ba ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9bfd7928 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa1cc5aee ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xac0bdf90 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb0d48a11 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc08fcd91 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd35e9361 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdb14ce5a ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdb60b3bd ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x016cf8fd ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x019577ad ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d8c3ff0 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d935a6c ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f33faaa ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1114e163 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11404d7d ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x129d9745 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13905da9 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x152e6359 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15ee3bf5 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20de878e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25d7a367 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28d0e3da ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d89f5e0 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f4472fe ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a4c3ce1 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f5abe0f ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4549fac5 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46e7cd8b ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46feb9f1 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x490f9dc7 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ae9a694 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c38f40a ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d4f9eed ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x506d4a54 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51612666 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59c4a1c6 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c91cb47 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x622b2cb0 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x634dbf21 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cca98e7 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x723e4725 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72697000 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x742c4c26 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79343422 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82c36794 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85d98f7c ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b3821c4 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c4747b3 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c6ed9d1 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8cbae468 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x918361b3 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x999ea8a7 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a0d49c5 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fdd5430 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2a09739 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa54b1d52 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5c11a30 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae9b7dc1 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1c83f69 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb249e083 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7408a22 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8643dbf ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb94b875a ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9f75a37 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc3c3039 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 0xce1e7ede ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd38b2820 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd480b42d ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0a48116 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2a29996 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6739cb1 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7224b6b ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea663433 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeed43981 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf314c10d ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf520482c ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf63a9545 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6644b19 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf79f3ef4 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8f82be9 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd1aa7fe ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0694f2d7 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1604963a ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6725f799 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x69f8cd3f ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x765e47b6 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7fd0f6eb ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb125a0c4 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb7d8fd73 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe01b809a ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xedd6c5b1 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf74f137c ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xff926415 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22406336 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x272e6402 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x377dc892 ib_init_ah_from_mcmember +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 0x62fdece8 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x71a458f2 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb143a6d7 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd2d90e64 ib_sa_path_rec_get +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 0x48d62e6d iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4e13bb5d iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x58e2ef35 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7457850c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x879261d3 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb7c00132 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcc199035 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfda4e881 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x014e6317 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x092526ad rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3536a306 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x43b9ea60 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4b155d45 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5c4110b8 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x678e5019 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x687d6a1e rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7ee2dce4 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x88f854eb rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9019c95b rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbb6df385 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbdce2e54 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd5a2111f rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdb4e176c rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc004476 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe1932681 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe3e38162 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe6d6d7ce rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeedf2935 rdma_destroy_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x22b56f7d gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x38c53093 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6e2a2b05 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8fa5c043 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa5c46e71 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb119a780 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xef76074a gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf72fb7c7 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xffd1af8e gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x1591c9c3 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x1fe72659 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x54744028 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x610d2367 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x7693c0a5 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x27176a89 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xaed55b5a ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xb93b8106 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc66c63d7 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x46d612ae 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 0x4d049de3 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x52be98a3 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa5025184 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xabb0cc09 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb876d37b sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc7f9af73 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x3a1bbff0 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc5535f29 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x377ed788 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 0x68ddc6ff attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7210e923 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x728bc65d capi20_register +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 0x839e7991 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x849ad3a0 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8c172751 capi_ctr_resume_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 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 0xb3c3f035 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb454c8cb capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd0139128 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 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x26c486b1 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x40f57fce avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4126631c b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x498419d6 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5bf59877 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x63d0cfb3 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6fbbcf4e b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x70c282b3 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x999fbf29 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xafe33031 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc74eebca b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd27e0484 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd443affd b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe442f2f3 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf06bdfe0 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x180dfca0 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x40691a40 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7c561e2b b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7cb7cf00 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa6362090 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa9a0203b b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbb80d8fc b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc15656ce t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf36ca86b b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0xf09b0f5b proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x30f69074 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x50426852 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xac52db28 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xce508b2f mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3bd61862 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x5faab206 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 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xffe6ec7d hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2c70ebda isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x5e7debab isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x954ee243 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9fb02063 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xffd49c68 isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x028cc9cc register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3bcecf72 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa48d68da isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x08593d34 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x129c06be mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a5b513f create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3dbc645b mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x52014f1c mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x55e910e4 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5784969d recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5c0303dd queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5f368beb recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6f1a6312 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x74576d72 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x75fd8027 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x82e3bc8e mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8771db85 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8b58ccea recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa24af3cc mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa8df1db1 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb86d712b bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbcf53325 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc982443f mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcffc2de8 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd3b662e2 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd8651924 mISDN_ctrl_bchannel +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 0x00a9ed13 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x529735f4 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x5c9566ac dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x6a31c975 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2e922144 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x802022a1 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa0fa7917 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa724643f dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa95c6312 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe40c08b7 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x5b8edfa3 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0549975e flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0659aa30 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x168ecfb2 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1c4550d3 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1ff139eb flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3a19c787 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x46c01662 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4e4d28bf flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5178580d flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x51a8c4c5 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb24f7c22 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf1816175 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xffaa26df flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x03bb2574 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a0afe96 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1128ce3c dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x115c6465 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19003398 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x298600b1 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f13296a dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3077c6d2 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3c7b9d12 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4b4f1d5f dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5b78c51f dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x601ea7c1 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7831da27 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7878f71f dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x87aef342 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e6d331e dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x93ccf985 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xab34565c dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaeaa5ee9 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb83f2823 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb9688458 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbc627d1a dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3a8701c dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9b0ae77 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd1c1d4fe dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe384cae0 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe6b68628 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf54b3bb4 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x95785e06 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xaeb243e9 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0x6ca60c32 af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xb6c4e6b2 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x196f1a71 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4d309944 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa4c70cc0 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa5c9f5f3 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa7bcdca6 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa9185c76 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa9e93828 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xac833395 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xca66d519 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x97b9d292 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x80da507f bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xf7b02034 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xeffe08ef cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xb81f4daa cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x4977f76e cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x6117c203 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x1e829ad3 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x0e45d697 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xd6b4c81a cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x34bfb168 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x38527714 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x49740c5d dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x870a57f5 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa7f1788d dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd2a915b5 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x07e1f55b dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x25ca9bbc dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x27c1417d dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3b3b0666 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x519ecdf2 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x726a1f46 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7ee9a0b4 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x976377bd dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x982e105e dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa3926ec0 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb1104a9e dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb9162310 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd2258f81 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd4755428 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xed19099d dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x1b1b0837 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4930d461 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x54b44cec dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5b92900a dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x73752636 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xca522b6f dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf0d71566 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x34c49cbd dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4e3d8d7e dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5e7ec2e7 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x788e02b9 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x085b4c27 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x10a8444a dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x113c4e19 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1abd61dc dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1ea8ba58 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x2f670c4d dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4a53f9c9 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x6b196ccb dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7bd2848b dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x8717e21b dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa7f2c084 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xadc95d33 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbab460a9 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe5042aeb dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xfb321584 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x0282b5df dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x10536e45 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x11595ef5 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1ac52c8e dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1f13dbcc dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2977ec59 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x3899e218 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x54a9ca2f dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x598df2e8 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x61119bca dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x6225ddcb dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x8b3836f6 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x994b9e5c dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9a93b3b0 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa04a1307 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa87c7923 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xae9ada00 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe1caa9d7 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xe2e91986 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x183e76cc dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4782840e dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8f296e30 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x964cd945 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9ddfca85 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9cbeece7 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xe86fe014 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xaa25efcc drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xf2910edc ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x0395967b dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xdd6841df ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x1c2b5026 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xea9624e4 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x1a968ff2 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x2d6bdb14 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x05e828be itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xb3c45e7c ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xf1f0cf39 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x84042676 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x89f4990c lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xe4df610f lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x2e6e5e8d lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x9c39c45e lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xfc8f7217 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xb4480392 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x596d6499 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x831f40e2 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x0b0dedf3 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x2a2e0c24 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xc28a34a1 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x80bda285 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xdb527079 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x1cfa2710 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x68d0da22 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x3915114c rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xf3168193 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x99500b4c rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x3735289c s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x16616a5d s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x9aae75d1 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xfcfcb1eb s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x0cfa2026 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xcd0b0957 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x05540af5 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x9d63b017 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xcef3ec76 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x0635a9c0 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xd7635cd3 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x76a671ae stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x05ac012c stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x505e4571 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x1566b98a stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x8fac21a5 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xbbfd3810 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x2fe49be4 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x89208a13 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x76410901 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x37ac1d5b stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x5205d402 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x2414056a tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x2da8741c tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x57fdffe4 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x6156a51e tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x6612fc02 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x37f993c9 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xbee4a2e0 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x78489d70 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xed46c193 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x3d256ccd tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x4ef9b805 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x791942c0 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xc1966ea5 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x8f299101 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xf465a06c zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x74bafdd8 zl10353_attach +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x2a700e06 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x8114549e btcx_riscmem_free +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x3f8f41eb cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x6ef288a8 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xb16a2738 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xb5b50046 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x183a0827 tveeprom_read +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x7d09c8be tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1c76bd76 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x847a324a flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9f16259c flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa9a40c94 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc8b260e9 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf00d2fce flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf0c473ad flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x12564da2 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7e9e0ba2 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x84be509f bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xab0719db bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x583666ee bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8e16606b bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe9621342 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3e92b580 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x457b267d dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x49a362df dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x68a04dca dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6ede20f5 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x80fbe751 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa1f4f7e9 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc64b93ff read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf4967e9e dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x990eca54 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4e076c77 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x586bc1bf cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa052984f cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xbdfb31be cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf6daa719 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x24dcf2d5 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x32f63881 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe98e60da altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x175af140 cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1a70df42 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x24ad318c cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6a7a438c cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7197eff4 cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa507fd61 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa7276d1a cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb40466fb cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfbe17124 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x850df6aa vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8a157880 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0c11efa8 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x4f8e1d0d cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x524626c8 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x690af75a cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x05e95bf4 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4560bcbc cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6fa7a6f6 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x84e11d3f cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb3dbecda cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf7a457ce cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0266cc50 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x04ab3c19 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x057f4de3 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x19075d26 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1cea5854 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2474a4dd cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3192bc4d cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x328983cd cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4138aae0 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x63494e7e cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x72286053 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x799a9e24 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8940d0a6 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8f69c913 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9b08bb71 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xad2b1d70 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbecff2d2 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc93d33b4 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd7ce26fc cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf6a6b13f cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf6a9e57d cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe835b9b cx88_reset +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0442354f ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x065112db ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2b27edea ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5106020b ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5eb0387c ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x65fdad35 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x66e261ff ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8a961e75 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8e7268d7 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9f6eacfa ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xad8c0d37 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbba9fd0b ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc598789e ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcfa17e3a ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd61399ef ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe38226f0 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe7a0a31c ivtv_api +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x037c32bc saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1b76d428 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3d43befc saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x577c5004 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8438cb36 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8769fb90 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x93a7b7b1 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9a92b01d saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9e911746 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa4c59787 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbe34ba35 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc358a52b saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xe8367334 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x16e7b6b3 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x611c18f8 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x9a4d4357 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd1774cc3 videocodec_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x11a92c02 soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1e5c61ae soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x365174ff soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x63a0724f soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x64f06822 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xadb5d782 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc466bf94 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xee90072d soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2fc57265 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x31477397 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x346991c9 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4c02836c lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x66240c49 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x76a56365 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8d1fef0f lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xad9107e4 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbd9c30b8 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcfd6df3d lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/rc-core 0xae97b1af ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xfeecce9d ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x23d7ca07 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x63c9216c fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x44d80b0b fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x087a37cd fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x6eae73c0 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x80055353 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x1399e188 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x417d6a86 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x0546712d mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x89356e50 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xaf115116 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xccac9be7 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x29cc8f6b mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x3009be67 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x50f7bb0a tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xf7e92ee1 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xda5a997f tua9001_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x845a066d xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x1483698c xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x189a3b9c xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x78c71438 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x9b6e2422 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0xb38e5d21 dvb_usbv2_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0xdc59d955 usbv2_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2bdbf118 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6e2aedb9 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x77ecdbd2 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb18c1112 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe792f62f dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe7d38d65 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf7d14bd8 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0aa9ff35 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0df6be20 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x28b7393f dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x538dec49 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb184a08e dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc223d2ec usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xecd1e833 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x6766003d af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1f1e5e32 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x20e63d33 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x87886f16 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x955cff7c dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa7c31578 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa9e5a00f dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb3b7fa5c dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xba6b4382 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbd965743 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd3f91ef4 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xecf584d7 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xb42dab52 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xffb5185f em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1d11c974 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x25e02e66 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4f51c065 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x636234b4 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9b8206e8 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb2411b83 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb7c3ee6f gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc423906d gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x28ec7f9d tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3c2f29f8 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc7724c47 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x05ef9d34 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x2e289cfe ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x49014d80 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x49f352d1 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x8ce52509 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x94228d6b v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa102cae2 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0ce60ffe videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6db15d6d videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8e38fa5d videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9a2addd4 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb9d83fb8 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc97859be videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x9188df5e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07218bb1 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08b0d77f video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08ceefad v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ce98f27 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f7120c5 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x14579de9 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b6c2003 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37a020f0 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x475c5a18 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x49f57f44 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c1cd9ef v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f464b61 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ef7e030 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f713af5 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65f1cce2 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e4c5623 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71f9ac6e v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7622ed7d v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b27f627 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d443b5b v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f9b3163 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x804fec82 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8dc3a6c9 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f601dba v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x997ff936 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9983e637 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a5dae98 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9cf39dd2 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa03395b7 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2f71588 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8ea3e5c v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaabb35fc v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaefd6dab v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8d74076 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba77723f v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbea44795 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc63362ed video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9db672c v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8f07714 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda0c5095 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xddad622b v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe0be3dba v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2d7f9ee v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4a21862 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeaf1c7ca v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf10718c1 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8276138 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc48645b v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/memstick/core/memstick 0x41d3399c memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5c36d05b memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5dde812f memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x61731f0a memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x758f5fa8 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8988bd12 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa0ec9d78 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa94e09c6 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd1ad874d memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdbb61727 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdebcdc35 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xeeab245a memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0421787f mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x092cd115 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0a48ae86 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x185e4949 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a093afb mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1e904e43 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x23a9eb68 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25054eb3 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25c0c5be mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26c66c1e mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x433a595c mpt_suspend +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 0x54de0947 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5a8a2643 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5b7922de mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e1388b4 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xabe88906 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xabf3650c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaf599682 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc5cd07dc mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xca5d047a mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcbd3dc13 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd5206ebb mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xda2fc424 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xedf79505 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf2e94105 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf4222d96 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf780305a mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf9fbd7d5 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfc0f36cb mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x07af550e mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x111c2c2a mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x134438ca mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x192a92e7 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2302d0c3 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x278393c6 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x36f5339d mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48555fce mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4d1a3325 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x54a61f8e mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x558c322f mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6c22f19b mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x72b013fd mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c807e52 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7e1dfd11 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c154c51 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9efd2072 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xab92c06e mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb8c7813c mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd514f626 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd63caa1e mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdda81e43 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe3b3d56f mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xefdbbea0 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xefe66075 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf45e03f9 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfb80ed34 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3005146b i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x455860fc i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5b8d8e0d i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f594e80 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7e2cb3f0 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x83cf7ccd i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x96e4bc50 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa3d43db3 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xad60993e i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc41d00bf i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd2c30811 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd7ab4879 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe9378732 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xee4454cb i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xee79f52c i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xef0b53e7 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf40247b7 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf5d5e235 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb25ad4cc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xcc61967c pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1723201b mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1a957f2c mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x24829c9a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x284d196d mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2e0fadcf mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x52745e54 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x66f1f932 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6fb6f2c7 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7f7ac12a mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x98bcb316 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa580478f mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbeed3533 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdeae5779 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/tps6105x 0x02c9078b tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x2be2458f tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa896fb98 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 0x5fafc911 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x9acf49a3 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xb08f6dcc altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x4369779b c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x9d1343c6 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x8eb09cd0 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa8ea5dfa ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x151f953e tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x1cdfb7ec tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x37ddec1f tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x4f5f70b4 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x5b33ab12 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x60ba3be6 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x6c889623 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x734a7ae5 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x85d33596 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x8a0b8e64 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd6db7e5a tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xee5bd827 tifm_map_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x92b345a0 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5c10a5b4 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb41a3d8a cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf6a29b36 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0b45f8bb do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1d5d7108 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3d036b7b map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x6ea0d2ad unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xa30fb928 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xcfef7b06 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x7b2f2970 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x3843eba4 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x8ca84ad8 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x272afa80 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xf633fffc denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x158e9fde nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x26bc759b nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2a36bb8f nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x85537ea0 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9f9bc0d4 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaa88f435 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd62f0b70 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x083fd1b8 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xc6eadec9 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xd71b375e nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x2b06bdce nand_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 0xcfc086ff 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 0x233fc460 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5718e0b8 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x842e90eb flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xbf5b44ad onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x077e4ff7 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0974c647 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0f8b8982 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x60eab779 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6ceea545 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8c3bb18d arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8d6fadfa alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc6eaa507 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xeed08e28 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfb35d507 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xad0064e8 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xbc773dd6 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf5b401e3 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x009c45d0 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0afa5196 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3d36d20c ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x493c458b ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x52bdac2d ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6be7e6b3 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa0bfe124 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdb478883 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdfb03e7b ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfcf9b1a3 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xa91532e9 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0110bda1 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0d51af8f t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x257cbc32 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x32cbe8c5 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x36dd790d cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x471a2298 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x67e1ae69 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6b508d94 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7f14c4db dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7fb26d46 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x989e2ab8 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9b6dd049 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa5698ad1 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcf9a9cdf t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd2f950f6 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfafc4747 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0e83f19b cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3453a732 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54f1026f cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6224d9fb cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x62834aed cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x64f98ff5 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cec7bef cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e448f00 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84ce48e1 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x930ad631 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93e38a15 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x95de3749 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b2bf28c cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b2e53a5 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0af88ac cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa2c5dd37 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb5aa57e2 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc0f0641 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc637d25c cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcbd78601 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd5efe431 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde515cb1 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe43689e9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x0054a06b be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x60add9f0 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 0x11210f37 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12433a95 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20b0eb82 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fc16592 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32fa89ce mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c06048e mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d07d781 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68dd0821 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fb4a011 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86aeea20 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x872600ff mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8859b177 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dab1f48 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9edebdd5 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0753fbf mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd5ad2a4 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd854c069 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdbed3bbb mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7723f10 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee4ea70d mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1739794 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x051bd332 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1073919c hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2a1bdcf2 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2f105798 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xff71904b hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0592e257 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x105fb534 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1b3a4da3 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3e40f791 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x601969ed sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x855b0c54 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaf2878bb sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdadaef38 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xec69f813 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfbccb3db sirdev_write_complete +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/ppp/pppox 0x21e7b8f8 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x22d3b609 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xbb2f5814 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x4440789f sungem_phy_probe +EXPORT_SYMBOL drivers/net/usb/usbnet 0x2d1c0d2a usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe1e2a093 usbnet_device_suggests_idle +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 0x360ed101 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x60d1f5b2 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6c079ddf unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x747c05f4 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x75ff646e alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x95b54ea1 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9beed7b6 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcd06919c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe000fe02 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe46dafe0 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfb41c484 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x3b55fec2 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x59c68e0f stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5c3d3e2c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xa3d01b40 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4bc95f03 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5e2d67a6 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x63e7293d ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x86ad1aab ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8a6e5e33 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x98a0b9de ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcb12b45b ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd440100a ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf4240dae ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfee2613e ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x056eb9a0 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3660d610 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x43b5ef40 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x56529070 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b4043f1 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7fc624f1 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x87562ec0 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 0x9c1aade9 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb711653 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf4e5402b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x52f9b67f ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x59f67e76 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xaef0283e ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x188026c4 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x284281a9 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x40294fae ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4b206655 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x59275983 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 0x05b9d700 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09d34da9 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bd85aba ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ce4ac17 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f4f4b27 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x10e40e3d ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12bc6677 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12bfbd60 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14d67701 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x167d1065 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16ac1344 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a185e92 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b5ddaa6 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22fc5dd1 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2343afd8 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2526efe1 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28847f60 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2beb524b ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c49211d ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d93d950 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dd17ae3 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33f9f8b2 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3921a421 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c1d27a9 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c5854e2 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3faaf0b1 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4954f164 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a91f815 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5161161c ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55bc0fd3 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56865a9d ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5733f6f5 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57bbcdee ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f388516 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x607b40a7 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60a1fe95 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64518163 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64e2f036 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x656e807b ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6965b2c4 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6bb7cd64 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c5d7384 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x711b8f21 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x722989c1 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7369a51f ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75b4ab27 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7829c7aa ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79d1b333 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f86bca7 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8889a58e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a7bc66b ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f23fc68 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90c8c5fe ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92c2457a ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x962f7535 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a9007f3 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ae9d8a1 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e7204dd ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa39d2913 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3ec2c80 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3f2e41c ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6a71f1f ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa739b028 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9a270f1 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa7c867d ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaabcebfd ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb14d9d50 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb288a295 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3c8f1f9 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3d9d3b3 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb774e3ca ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc780426 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd849a1d ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdb7aa6d ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbecd762c ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0a47c46 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3c9a898 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3c67126 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3f743e6 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd50bb38e ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd813746f ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8877fd0 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd90689bc ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdad39ebb ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdcb82852 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe186752e ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe292581d ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe40e7a3a ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe472e37c ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe73298e0 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf40da2f5 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4853e71 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4b485a2 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5177ebc ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf961ba06 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd31c349 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffb530ef ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/atmel 0x33dbecdb init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x38653896 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x7fbecfaa atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xbb79a729 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xf33ee796 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2c294873 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x59d79a9e brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5c653899 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x63dff9a3 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x65d34e97 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x67518555 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x912cb67c brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xabe9ef91 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb3135ed1 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc6aa7f40 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcd87ca09 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe18c43fa brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0590b9d5 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x289b3c78 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x308976c4 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x351d5a5a hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x384cbca1 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3b27099e hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3b950049 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x49e25d46 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x632b061c hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x691a2149 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6b36c3dd hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6c3c5c4c hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c73d787 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9505282a hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xac03fce0 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xace70c0e hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb3775782 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc487bc97 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc56d8866 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd8d6c0a9 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda83d09b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe3b9206c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xea35ae1d hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xed73beed hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xedf7c4c6 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x174b7d58 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1ed7c1c5 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x24ec3317 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2983350e libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2b9998fc libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x39062eb6 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f9410e9 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5153eab4 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x53b3f291 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x57f588f0 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5d68438b libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x654563e5 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6b42ce17 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74ad0a77 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x751a9ba6 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7d556354 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x83099839 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8841782d libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9a01b330 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa0319f4c libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdebda0fb libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02874e46 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04de9699 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x059e464f il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0aa5b5c3 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f39f649 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10985f74 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10f826cd il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19da89a1 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1bb43fbc il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x237c7b88 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25f060e9 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28a8c917 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x291a285b il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d233ac3 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d8c6f9c il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e71b31a il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34813a24 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36537b7d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36956d4f il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36f7de59 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ce2f71e il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3df33b42 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4153dee5 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43a9094b il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x466ad1d5 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48915b9e il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f4e6512 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4fa23dd3 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55888ec2 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a4231c2 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c22d660 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dcb2ea5 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e614579 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x605a95cb il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61ba6f8a il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6209c64a il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63791311 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x689c1480 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x689f880e il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68c470af il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7675c551 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78317398 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x790a84e6 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b4254c0 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d107ccf il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f5d24c4 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80ff0f72 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x855244fb il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8617d3a4 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c018058 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c687092 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99120383 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9967f795 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x998a71ca il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa03bc61d il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa480e85b il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5d99ae4 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb13f9de0 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2f9bcd9 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb425f248 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4597c22 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7ad4b19 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb3b10a1 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc7f87fa il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf756630 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0a2553c il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc387c68c il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc69b1dfc il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7816ea3 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7d49542 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8ac23bf il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca6b7069 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccada2ea il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1d47d1c il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5a6c633 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5bcf6cc il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6cfb562 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda0b4c94 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda9c3f7c il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd74f1dd il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2fa2394 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe34b928d il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3f2444b il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe758d263 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7e7b6ce il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecc7f592 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedfb76af il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2e1e115 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4aaf924 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7809947 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7884c48 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7fbe814 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9ca0873 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc222c4e il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff17ff3b il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xffe231cc il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0e7bc05f __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x201337b4 __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x249e4b06 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x4919d1a5 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x79e9bf26 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8bfcc307 __tracepoint_iwlwifi_info +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xda36f3a4 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0cf14d25 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1b2a7018 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x20c81304 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x381773c9 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4693d4a4 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x46e1100d __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x64e10ad8 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7985c42c orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x985af805 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9a076ab3 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc71ad7ad orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc80913d6 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcae8c870 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd58455b5 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe0f3ae64 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf9b45ee9 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0835c223 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0ff1e696 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1504b6ca _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x22758eca rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30afe6c0 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x310ae6dc rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x34f508ac rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3e387ba4 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3f67f097 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4b1586fd _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x55aab9ba rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x56f2eb36 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e51e8ae rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x643d79b4 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6771cb1c rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x743dd3c8 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f8cfb21 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x80b5b0ab rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x86a0b58c rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88a780d3 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89ace48c rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x89e4f121 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x96f97a74 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a5dddee _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa0faa18 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb1ceccba 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 0xb39e2d36 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb435b91e rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbb635ed6 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc0fce18d rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc41b95fb rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc98e0ccc rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd3ad220e _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd70ca707 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc3c70a1 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf0ddb44 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf51bae0 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe81a089a rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeb78170f rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xec0fbe8c rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed641710 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6e9463b _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0bd025b1 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x14ceed50 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x21578bbf rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x237ad97b rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2d4a2b2a rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x35cc009e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4843941c rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4f57d9f6 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5197118d rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5328aead rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6e040b74 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72c9a211 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x84183614 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9d8b9668 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9dc9a954 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa74672ac rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb25c481e rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb839b7fb rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc110f0c8 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc37d080e rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcedb01f8 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd8ef58a5 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xddc4a851 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe932140a rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf2c1c590 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xffeab17a rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x18164372 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4abd24de wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc2aaee64 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe86e8e23 wl1271_free_tx_id +EXPORT_SYMBOL drivers/parport/parport 0x0b05f37d parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x0c461286 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x159b5069 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x2dbdd734 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x3813b4e8 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x3ecde1a7 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x469171c5 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x4bda8e62 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5b49b588 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6a3c665d parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x6f847988 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x72016d23 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x745199b4 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x7a2ecc08 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8cbd8570 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x95784bea parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa037ad10 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xa47ec865 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xaafbcf44 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xad09af47 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xb50f5463 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc3678aed parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xdd354b2b parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xe6ea77a2 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xe7615bcd parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xea724ba5 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xed23d03d parport_write +EXPORT_SYMBOL drivers/parport/parport 0xf09b52c4 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xfcddaec3 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xfda6cac5 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport_pc 0x3467b4d8 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x7ea06daa parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x02b4bef0 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x05ff45e1 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1038ff5d pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x20c027ee pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x24be51a5 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4252b8a4 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5895ef6a pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7d45ca24 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x84a2aeb2 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x947034bf pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x950dc60c pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa4ba1cc4 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa86efc2d pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa948dcb1 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbf2ea1dc pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcc3a5fb1 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xea76329e pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xec0d1b39 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeffef3b5 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0502ccc1 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0ac333e5 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x296096fb pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x39bc9c0a pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x66cb14d1 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8c9f24ee pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcc5d44af pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xccc805a7 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf2a67a7a pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf9c31839 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x95122e41 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xbd6d68ba pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x24a06d40 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x76984b53 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xd2bfa6a8 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xdf16db06 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x0264d6e7 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x78375ae1 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x971f3c45 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xdb29d84d ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x0aa9dbef pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x10f3a69f pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x2f83e51c pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x4b81ec70 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x531e70b3 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x749ac7d9 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x90e0c20c pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xaf706492 pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xc0016a48 pch_ch_control_read +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x424489c9 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5ab394dc rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x767f1cbd rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x80cd895b rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x99f49d07 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9d6b4663 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbf7bbc22 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc8222234 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfd9759e1 rproc_alloc +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xf27577f6 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x238fa3ea fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2788788f fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x563feeba fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x77d48241 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x883ee976 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaada3da9 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc75ee0e0 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd94965d1 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe5d4b503 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf456ae86 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf4be59c7 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ba87749 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c29a3e0 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ee956b7 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11eb6abb fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16d83558 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c4b6f82 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c7136a6 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22cb2823 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ad5bfe1 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x347ff5b6 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3785b222 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x435b6bf8 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a179ac7 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b30e7c1 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x58d27d30 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68491594 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x73cf56f7 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7781ad54 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c2f6ce8 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cd1bd42 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x848291de fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x872e9db9 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8976671e fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96f63a20 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97b2706b fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a30ba1e fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ffe73e5 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa390a3c8 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad6d0cb1 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb5a89c85 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb770ea9b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd7c8a18 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdd86508 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe967a9d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc6a7d346 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcbeaa3eb fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd16e5827 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7c168cb fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd92c7c02 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdf2eec1e fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8986c33 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebe35f48 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xecd81366 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xefce5622 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0570c81 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6c16e84 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf993e398 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa9cc034 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfaafbee7 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfaf65420 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7276c104 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe55d5456 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf2ec5f52 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf8240b07 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x22d4b8e0 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x025dcdb2 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0e76abfa osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x119bc457 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x11ce4e82 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x14928bbe osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19013377 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1f79809a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22dbe0c9 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x27a56bf4 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x42fa89e4 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x44855de5 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x51272dd4 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5932a949 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5a5f220a osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6050811c osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x68aa4f02 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x69f40d6f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6be1e60e osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7946817e osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x79a0d4a7 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7a6056cb osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7cdaa440 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9345cb1d osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96614553 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c2ef5a9 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa492c647 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaf1546a6 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb19ea1d4 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb907102c osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xca9ec346 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb8ca14e osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd949dc49 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd45a431 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeda5485f osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf56bda4c osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xffbdb8a8 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2059d664 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x812fec83 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x92efb60b osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9cfb3984 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd444e9fd osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf00d1ed3 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1405e2da qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x43236743 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x55bc7578 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x695376f3 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7cd197e7 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x88e338d9 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x94a3e716 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbaaefe0c qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc0e6b0b0 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd9dbab1d qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe027620e qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x393e722e qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5c13627a qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8feda268 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa4a34672 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xec4feb26 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xedce7cd7 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x9af04a7c raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xa54bcf34 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xc41e945a raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1f7418df fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x230508ca fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x276bf891 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x45601bcb fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5395bf4f fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x64a2d021 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x64b39dcc fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x69b79c38 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x846bdb52 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99686d26 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xba7ea187 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcfc1dce4 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe2a42788 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b18d293 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0d0d8c27 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1617bbec sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x180ee96d sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ac906f8 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1b662107 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1bd34e90 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x20ebf4c7 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21eb5fb5 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x22217f7d sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2230551a sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b50dd14 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2bdbeaf5 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2f18aa9b sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3e92f67c sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x51a4078c scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d0af56a sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6582892a scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6ce4a593 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x855f4733 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8eaacbb6 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb50939c8 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe305bf73 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe8e11a98 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed7acdb3 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf4761b78 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd6352e6 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xff7e51e2 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3f91fdc2 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x71bda632 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x85e54b74 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x95d3f4bd spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xec443b8f spi_attach_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x00327cac ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x0961b644 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x115d2c5d ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x2a79f3ad ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x50730b52 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x54716ff0 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x591e16f9 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x5f7c5522 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x6153bd25 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x6f9eccfe ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x83a10d5d __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xa2bec7c3 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xab5bc740 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xb2a1d96a ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xbe13b4f4 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc6bf67c4 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd9f3a7f3 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xda3307a1 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xe1abc889 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf3c3507e ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xfab1eed8 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x27805119 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xf6fb02dd fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x1af1ce9f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x3f03a411 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x32b5d804 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xbb19829f ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x41a24f9c iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xcfc49194 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x6473b635 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x39eb73b5 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x3e7c04c4 go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7dc3b3c0 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9b924ec5 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa306c6eb go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa47e0463 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb4fe651e go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcc1b8054 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd2f3db4d go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03d90d54 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x186c3307 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2242680f rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2344e592 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x277d806b rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28846b8e rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x298c6723 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x29e6e399 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x34be020f free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x356029c7 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3bd10578 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e130eac rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f1da045 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x423453d7 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x430f6ee3 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4aded7d6 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50d5c641 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d9ae97d rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5fe7a824 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x623b6a8d rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x626f7c01 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66e2941b notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x68d9399d rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x71c5967a rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ef7f81f rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7f5df452 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86debb87 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x926e1ce6 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x961f6e82 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98a69e57 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9bb92e71 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9caaccc5 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa366d22d rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa7ceebbc rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa7d0af1d HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb928c8e1 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbcc8bd33 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4ca0302 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc90cfa70 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd8412c8 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcffcba6f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd64b919b rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd96cca3e Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc9f1be1 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe47f2a2c rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe81df574 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb03abf6 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeeecea54 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4442d80 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf91c4d88 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00647c60 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x05028879 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12b620be ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1499d93e ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16b07c0d ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17c95c39 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x183375d5 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x18f612f4 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1ba697f3 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1dae2053 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c1bdba7 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x371affbf ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ba61da7 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f6cf8a0 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41e49904 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x516b1241 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x517847b2 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55579a09 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c9156f6 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6326afbf ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x633cd2ea HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x64455edc ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x68f1d0c5 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b102071 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71de5303 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d55d109 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x834cbd3e ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x84f18092 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x87a49672 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x889bd8bf ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8959ed0b ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x896de65c DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c73f3f3 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e30f634 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x917e8333 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x930354e9 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1430bed ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb4a2c6f1 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb4a320c2 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc135700 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe5bd8ea ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbecea6c1 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc33c4529 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1d736f3 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2ce420c ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd34116e1 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda7d69ae IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdab679e3 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdc14b9ce ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde0361cb ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4dd2dfd ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb5a4d14 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeca3ccf1 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee60cfba ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03ab61b3 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x0594f0c6 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x06484daa target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x12e16733 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x14d70a67 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b39f93d transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f01d5df core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x227a0122 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x245fcecd sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b430ff4 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ba04b0d transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x32c89b26 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x35b10d96 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x376dc307 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x37fcdb0e transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x3868a373 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b8a027b target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x448bed57 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x4df2b83f spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5302aeaa transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x55d9c630 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x586d0230 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x59e0b7b4 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b1bb759 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x63a76bad sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x67b5f0ad iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x68ec7f0b transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x69e9bceb core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x70848060 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x716ef6eb transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x729e63ed fc_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 0x81474474 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x823867b8 spc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x828790e1 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x83bbb0d3 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x875dc356 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c8f873d transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f442bb5 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x94796267 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x964b435e target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1598e71 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa52b8cdb __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xade0c1ff core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xb20ced86 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xb73b6ecb transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb3d4482 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xbeb1fb82 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xc952ac40 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd10f56b transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcef2bf51 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd11f77da iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd44f48dc target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xd4b9e1b1 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6528643 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8121458 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9b987b8 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb3b5281 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xdda2928a target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xddd34250 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8d05307 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xeec9e9c7 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4f405ac transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xff99e8bb core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x0b87b4ed usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x888d418d 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 0x126d5beb usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2e3603d4 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x49c72157 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x528b934c usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5bc1b57c usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x71906482 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x81157ded usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x867e623a usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9080eef3 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x97a98f12 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc7793252 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe4470da3 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe64fddae usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1fa05019 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x27fa18f0 usb_serial_resume +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x5a2dc688 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x951486d7 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 0xbc00d27d cyber2000fb_attach +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x2d55b999 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x82664087 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xd6c1ccf7 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x10082f2e matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x53c2ff34 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xa92d3fd9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xf03f2ed0 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xf30a0a3c matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0xbb76fb38 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x835e86fe matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xda9ee3e0 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf2117666 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf671efc6 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x4f142402 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x79925d26 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x04846d95 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x08ec1879 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0a46ad78 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x3be8a543 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xd3437a1d matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x2f005bb6 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x35650248 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xabc66fb2 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 0x0e4b88d8 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x16f882b0 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x3e30ccfa svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x50948816 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x6665ee71 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xcb6b7b05 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xf7da73ef svga_tilefill +EXPORT_SYMBOL drivers/video/syscopyarea 0xbf26eb76 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xd831e0fe sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xfd56b28e 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 0x011171f6 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x07890369 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x1214931b vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x17579f18 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2340f4f9 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x2527a087 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0x30d00030 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x61f14c70 vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x68f0ef2c vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x6a20e631 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7e279f36 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x84a69fdc vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x86a56bc3 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x9214dd80 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x94b2590f vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x99746342 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa583b770 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xb02ce617 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xb0cda1d2 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xc9540468 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0xd797b9a5 vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe5faaa73 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0xe693a6ce vme_get_size +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 0x2f12476b w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa1813ccd w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xca99bf1b w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf2299688 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5f730d3c w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xb9eab030 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1f5a1f81 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xe2e6d64a w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x0fc68046 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x4c32bd48 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x8cb3c821 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf3299821 w1_remove_master_device +EXPORT_SYMBOL fs/btrfs/btrfs 0x02897198 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x09dceb4d ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x09fa4bcc ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x34b9e4c4 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0x35490e9d ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xe4423912 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xedf03da5 ulist_reinit +EXPORT_SYMBOL fs/configfs/configfs 0x35b9f55f config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x53863217 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x63b2a21e config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x6b748cfe config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x74a23eb2 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xa5cc0b6f configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xac3788d0 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb6f45c1f config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xce248981 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe728070b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xf9cf9977 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xfcda57c6 config_group_init +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x01445401 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x117f47c1 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x11cd4ef4 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2f4458ad ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x587530c0 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x66ca1301 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x894e6f46 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xad280005 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xb42bb019 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xc7ed1a85 ore_truncate +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0866d914 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x0b0b867a __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x14477cf9 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x27d69c72 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x33e6b3d1 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x3f356691 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x44b21518 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x45071ce7 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x460b2836 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4d584d53 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x59e74733 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x5bd35545 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x638f1e45 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x73d54d2e fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x8ddc46b7 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x921ad077 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa60b6c68 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb0d0299e __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb0fd8a40 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xbe1c32a8 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xcb5b31f0 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xce7f0d21 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xced3065e __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xdd5e40d8 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xdf814067 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xe23e8f79 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xe7370ccc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf1b360e6 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xfab41349 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfc1e0c9b __fscache_write_page +EXPORT_SYMBOL fs/nfsd/nfsd 0x13d93eda nfs4_acl_posix_to_nfsv4 +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 0x83585203 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2a67d962 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x36dd35ab qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x82d6d270 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x87997fa6 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd6d63b30 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 0x0409300d lc_reset +EXPORT_SYMBOL lib/lru_cache 0x04c619c1 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x10fa0ccd lc_put +EXPORT_SYMBOL lib/lru_cache 0x27dbd620 lc_create +EXPORT_SYMBOL lib/lru_cache 0x2aa146e0 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x3fdf7d77 lc_set +EXPORT_SYMBOL lib/lru_cache 0x68047920 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x6f221457 lc_del +EXPORT_SYMBOL lib/lru_cache 0x767f0e6a lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x8d71f96e lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x94c91b07 lc_get +EXPORT_SYMBOL lib/lru_cache 0xe0624e62 lc_find +EXPORT_SYMBOL lib/lru_cache 0xe22615ef lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xf472e209 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xfa28e808 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xffa59875 lc_try_get +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 0x09eee6b3 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x8dba1a04 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x70853cc0 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xfa1c4d84 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x80e44bb1 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xdb290703 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00c3d33b p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x01acb9cc p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x0d586afd p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x1088b8c2 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x1601b66b p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1b8b1a23 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x1f5b8100 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x21ea9069 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x2784d1db p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x289d830b p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x33931083 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36a0d3d7 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x473a551c v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x4d017ba9 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4d4caf18 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x4fb7e576 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x50a421d4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x579ce45e v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x5d56bda4 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x5d7751ef p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x5de45bd5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x5f4bc972 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x603b95fd p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x6895313c p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x69fb5e35 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x760b67df p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x886b559d p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x90e89b01 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x982b29d7 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9993678e p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x9e467d13 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa49c19b0 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xa51a1718 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xa993d37c p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xae1ab7b7 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xb0a2f1d5 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd7b176f2 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe5e23410 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe82e4db6 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf037e1e5 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf4ec45de p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfadf8cbd p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x1e94f273 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x22ad2a34 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x8eb2a85a aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xe8180fd6 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x0eaf8206 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x1d00cc18 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x269853ab atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2941c3ac atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x2b1dca73 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x48ebf3bd vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x6ee563ad deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x796e823b register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa2cea280 atm_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xce4593ff atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe2fd7033 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xe682d0bc vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xef617250 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf29de886 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 0x13e0d5e8 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3277131c ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x63c41b77 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x7be93638 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x7da644f7 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x8612902a ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x8ff1a389 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xa2eef104 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcc69495c ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xff49e360 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0be06f7e hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x13f299ab hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d70a32f bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25948415 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27a6a859 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e67182e hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3fb050be hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x491ca2a8 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4bb50b6c hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c896c24 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6092e5dd hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ae4a731 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ef4ca72 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x75e990b6 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x768e215f hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x793742b2 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80e332e8 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x825e1855 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8669695a hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9be0f527 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa6ae6d7d hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa974ca49 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaac9bab6 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0e45237 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb6d4f533 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc4039b74 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc651c4f1 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc6ea1292 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd84c932a hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2cb5058 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf4aecc0e bt_sock_poll +EXPORT_SYMBOL net/bridge/bridge 0x01173145 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x25fb8596 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3ad3e132 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbc5aabac ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x2effd28e caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x58dd4b68 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x704436c8 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xd0931ad2 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xf20cf8f8 caif_connect_client +EXPORT_SYMBOL net/can/can 0x0f426b64 can_proto_register +EXPORT_SYMBOL net/can/can 0x1ac183d9 can_ioctl +EXPORT_SYMBOL net/can/can 0x3f8c3c95 can_send +EXPORT_SYMBOL net/can/can 0x85237304 can_rx_register +EXPORT_SYMBOL net/can/can 0x8ba10744 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xb02b14ef can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x06912095 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0bd5dcf4 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x10849604 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x11ff029a ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x19a5640b ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x1cf52349 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2198fc57 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x28566caa ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x292dbdc0 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2a88c998 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x307b1e38 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3178c161 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x333dca0a ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x34f0b8d0 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3aecd813 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x404a4117 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x41aa8cb2 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x420d7d6f ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x48749c2c ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x498c65eb ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x4e12f83a ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x50c29f3b ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x56665019 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x5706b262 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x6328587e ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6662e7ae ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6975ea03 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x69aa1175 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x6ee57ab2 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x738e9ffd ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x73ba8e79 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x76acb408 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7bb2728d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x8563adf4 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x87b33327 ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0x8b89b0ec ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x8e3f3ef4 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x8e7de3ca ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x928139d7 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x93dd735b ceph_release_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 0xa1b52af5 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0xa3512f9f ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa9f91413 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb18ddf03 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0xb387ba74 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb5ce3895 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbd4f2cbe ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xbd9adb72 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xc1218095 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc7c26e4e ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc846b1b3 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd21dd096 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5939dba ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xdc49b9e6 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe3eddd21 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe71e9b2f ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfef03c8b ceph_osdc_new_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x7c2dfa68 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x290fd033 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x38f013c4 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4b974b58 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5bc58b07 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5e2832bf ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x68dc0884 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x71fd7540 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7ca632c6 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7f9aba68 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x915b3fbe ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa60d8813 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdb042a01 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe29c2ab9 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x3a927329 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xba8e70f0 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd9be3edb arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8a9eb14e ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x9f08f471 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xbd24df57 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x3f1604ec xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xe3d2c410 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x02635ca3 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xff598de5 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x20f97abc ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x563f210d ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb029a55c ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x00c6f3e8 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x13153cf2 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x436208d0 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xb8d76701 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2a232af7 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2e383f6b ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x49e56b3a ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7cf95e10 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x82ec150d ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8b646629 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa124281c ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb1f47788 ircomm_connect_response +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x17cf1636 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x189b5a6c irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x19b5a7cc irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x32b371f6 iriap_open +EXPORT_SYMBOL net/irda/irda 0x33f03aa1 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x39170e5c irlap_open +EXPORT_SYMBOL net/irda/irda 0x3a168b7c irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3fbaf663 iriap_close +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4fa224c8 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x50d28440 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x5d1f3e5c irlap_close +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x617bc166 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x67005fe4 irlmp_connect_response +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 0x6c6e67c3 irda_device_set_media_busy +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 0x7b41c57b irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x9086474a irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa6b3db81 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc49d6e07 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc8430a43 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xc9047185 proc_irda +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd50e12f1 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xd53f92e6 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdf89e103 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xe66b3bf1 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf39b7fe0 irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf70d409a irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xf72d81b5 irlmp_connect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1c8e0cfd l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x33b06600 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x393617f6 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x4e628423 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x53240317 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x78df46ba lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xd22e1954 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xe20235b8 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf1fbe2ad lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3ff10776 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x46d1dd93 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5e8807fd llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x8b3d514b llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x9a2ad31d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xd8e220cc llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xf161893b llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x0c9caca1 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x115027e1 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x12c91b7a ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x13aba049 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x189b33b0 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x1bf61d9d __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1ef01fe3 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x1f8b5587 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x22f320cc ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x2394b1e1 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x273f138a wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x31fcfb52 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x32e9120c ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x32efc6e1 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x3487a338 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x35a144c5 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x3686d6f8 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x445fb09b ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x457689ac ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x45a46abc ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x46b57fa6 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x484f8b81 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x49cbd3d3 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4a0dd666 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x4bc38677 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5f792e95 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x63dcf333 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x6476649a ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x65326d70 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x658b4647 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x699ec8eb ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x70bb079f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x7223967d ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x72380e85 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x7344e354 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7ffad41e ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x907b2dee __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x909da5ef ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x9115d2e5 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x924df4bd ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x92c31a8f ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x9cf670e4 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9d40cc2e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa53e8c34 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e9aebb ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xba0324cf __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbff5c540 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc09a2963 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xc196ef3a ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xc3eec6ac ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc5f8fd30 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xc62895ef ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xc6ca8a97 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xd19f5c60 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd72cb815 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xd7894e45 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd99639f4 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xdd051a31 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfcdd9ee ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xe4683e53 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe9ef2ed4 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xef0af0be ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf66af6a8 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xfb5e80d6 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xfb984075 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac802154/mac802154 0x47ccc654 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0x8538d114 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xa3e07b13 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xe3237587 ieee802154_unregister_device +EXPORT_SYMBOL net/mac802154/mac802154 0xe4d07e3b ieee802154_register_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x04e44124 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x09372bea ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3c42fb57 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x48377240 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x50b75e1f unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5b8cf54c register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7e156712 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8856ff51 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9cc5208b ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa5246f36 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb4c7874f register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdd37da88 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe691753f ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeaec5962 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x4b45b550 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5b062a0e nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xff910f9a __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xe8de4203 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x0b1d6253 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x3cef4705 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x7933723d nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x7a7577a2 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x84608502 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xbe5c64a0 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x01b0370c xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x0667e023 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0d5d378f xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x32c7a83f xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7c614390 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7fee72de xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8c89ac2a xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd711667e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe0b8bac3 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xe9df37b5 xt_register_target +EXPORT_SYMBOL net/nfc/hci/hci 0x1645eb14 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x28f32c7d nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x2dc1af24 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x344966b2 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3624e6d6 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x3f8a8981 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4b9dbda9 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x5b814c6d nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5ba72373 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x63a8a5df nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x6cc91321 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x75f87a40 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xa4175498 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xde36256b nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xf161b4ee nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xf47edc1c nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf5b52713 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xfe2df219 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x1f396e1b nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4f697d71 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6289dea4 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x7d49d019 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa7d3d183 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x160ac808 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x1ba2330b nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x285a7883 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x29101e86 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x35dab737 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x435ebf4c nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x475ca772 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x7b9716cf nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x8db7ecab nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8db86299 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xaccdfbe6 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xaf806062 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xc2bae41b nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xd52c7dea nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xe7dc91d8 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xec1ddcca nfc_dep_link_is_up +EXPORT_SYMBOL net/phonet/phonet 0x33c1ea84 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x3ee0ff3f pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x4789c6f4 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x73d11366 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x796be36d pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x80cc0815 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xcbb0e5ca pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xe42dfecb pn_sock_get_port +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x062c9e69 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x06939b08 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x29d07209 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x32b4eb58 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3b76f92d rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x50465b06 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x63a410da rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x68878349 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9cfc35e3 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa8ddb1f1 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb91e111f rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd6803cd9 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd96941f5 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe80559a6 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfea55ef3 key_type_rxrpc +EXPORT_SYMBOL net/sctp/sctp 0xa0029d00 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0xb287f038 svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x79237b18 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x28eb13ca wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xf9d1cb0c wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x031426c6 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x06093316 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a5b1627 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x154c654f cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1e672045 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x235868fc cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x24428239 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x26e0343f wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x2ad04433 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x2ed9f5c6 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x368eb264 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x3c2217de cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3eee593a cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x406656f4 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4322b35c cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x44fe8753 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x4c67e0ca wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x4db69a10 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x590268cb ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x5cc88516 cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x65567315 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x66b53edf cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x69bb6d73 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x6e0704bc cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x718f69dc cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7441691d cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x745693f0 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x78dc4e2b wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x79467987 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x7bceddd9 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7e49faa5 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7eb27663 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f1f0acd cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x809e9ec8 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x81404b48 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x83db1e23 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x862a2357 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x8675f850 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x86f92f81 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x87161fc0 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x87cbe5d4 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x8b22836b wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x9136bdc9 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9738492f cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xa0126412 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2863a8e ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xa350d291 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa8ca426f cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xa9cbb43f cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xb3a8e1d0 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xb7ed5ef7 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xba5abd2e cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0xbd97a0a6 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xbdf5a82a cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbeb6d487 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xcac86aec cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd048d476 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xd0e93e33 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd28820b8 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xd4ae6424 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xd5326f82 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd724af24 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xdb5d6090 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xe759e778 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe813b4c7 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xe96a42a7 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe9adb982 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xeb870bce cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0xeeeb2385 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xf2b221ea cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xf5855a95 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xf64f6737 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xfa7d87f9 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x057ad84b lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x1d50fdce lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x3f9c060a lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x586fd888 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb13f8d42 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xcbe888c9 lib80211_get_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xb4802778 ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x58c64267 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xaece6a2e snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc5987cff snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf77d35b9 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x0aaa93d0 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 0xdee916c7 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x08fd104c snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00bb5f07 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x03fb8ad2 snd_cards +EXPORT_SYMBOL sound/core/snd 0x05b819d3 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x098bb6f6 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x1962d9e6 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x1a0d4fe8 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2bdd6238 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x2e67deef snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x37942ab0 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3af2c588 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x3c56efd6 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x3ec31cee snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x4020563a snd_device_register +EXPORT_SYMBOL sound/core/snd 0x4764af5c 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 0x4d5c8bc1 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x4d8fd57e snd_info_register +EXPORT_SYMBOL sound/core/snd 0x60181926 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x601ac604 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6dfc09a3 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8684b930 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8e49e370 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9921f9eb snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x9be4bc00 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x9dba47ab snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa042a86d snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa548ece9 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xa6410e44 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xa7123776 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xa8e4c24d snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xb260ff9d snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xba2b59d3 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xbd31ebdb snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xbe7b123f snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xc4c0406a snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xc7d98bab snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xc989b604 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xcaf9904e snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xcb24179a snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcf4e3eeb snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xd0f3e53e snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xd29df839 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xdb22a5cd snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xdc85f2d9 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xdd9ac5be snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xef16a4a5 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd-hwdep 0x2e670b4a snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x2cd238a1 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x36524b9b snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5f9de0fa snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x7b387e73 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xc05bc6cb snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0fe8e467 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x1617ab95 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x18cb19b2 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1ef137e9 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x28050c02 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2c832b1b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x2d21d1f0 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x392582e2 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 0x3c98fc43 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3f634c77 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x41961220 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x4376825a snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x4670cff9 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x4b29f98c snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x4b8c63af snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x4c434759 snd_pcm_lib_get_vmalloc_page +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 0x5023a8f0 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x59955079 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5ebab7f4 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69910b82 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x69ffa7fe snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x6d29b670 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7e634d97 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x85f5ed0e snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x8a0d9ac5 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x8e19591d snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x938626f9 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa41a638c snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xa5c0fef1 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xacf93689 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc0909efb snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xc555a61b snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd191e15b snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xd2de70a4 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xd43909e1 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd70cdce0 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xd916eebb snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xde4d8cad snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xe0620a2c snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xe49ba883 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf55dd524 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xf5cc0545 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x06112630 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0da4111e snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0f933fc2 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1dc98bd9 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x291f8f44 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2f5433c4 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3b37ac78 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x705be87f snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x71f84a83 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x83df53eb snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ddd6863 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaf478a23 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb2cc9ad4 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb4e3ca13 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbe7dece1 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc63a2018 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfcfa6347 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-timer 0x0589885c snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x1677a3e5 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x1907adf7 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x36f7e1aa snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x3baa7d1a snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x520fe632 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x61ac6aa8 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x65492ad4 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x7648a79d snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xae39f8a2 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xc424c961 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xc506ca26 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xc54df268 snd_timer_pause +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xe0ca51d5 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1a3420f0 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1f5096a2 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x43010992 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7a43c154 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7e302cb2 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xbc6aad35 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xec5a6a89 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xed4678f1 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf3211447 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0ac47c86 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1e67e94c snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x24b716b5 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3aa4a8cf snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5193db8b snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x78c84eee snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9e99575a snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa8552ff8 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xfe008af7 snd_vx_load_boot_image +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x115ff75b amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c26242c amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x207a985a amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2bf0a755 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3bd7144d fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3f3ca5c8 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4dda815d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x62d12948 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64c9c6b3 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x765beb82 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a026a62 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x85110e72 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d1a56ee cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8fe82127 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9703ee06 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b9920b6 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf4a7b89 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc0c36783 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc2ec12ea fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca6d1ff0 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcd923465 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd00238d8 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe669fbc0 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe6f4d2c0 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xefbd3a4c amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xff791a14 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3488a3e5 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5fc7ef4c snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xab6b8824 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xaeb6e830 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbf936e6c snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc2bc3fee snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x32bea928 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x3540113f snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x4742741d snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8d182570 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8d59fd1a snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa6fd38ab snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x327d0923 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x5903b9d1 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x885dde5d snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd05e9e01 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xabe93b36 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xdb669968 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x715ff493 snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x76be09e2 snd_tea575x_set_freq +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xefeed574 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x35229465 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7133e28d snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xcae2083b snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xed79856f snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xff1ed19d snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x11841dad snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1a7a21ec snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x38fdac6d snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x61c273a5 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd0cdb961 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf1565c6e snd_i2c_readbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2e169e7a snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3c087a2d snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4f79f4d9 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x580ad71f snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5901cdd3 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7591f9ff snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x93757321 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xabf63427 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb7688181 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcad49ddc snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x68d943a2 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xd0ae657f snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xf361cc1b snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x05669ec5 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1ddeafb4 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2f650eb3 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x344e103a snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x53b95721 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5f9ee864 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x69ee529e snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7b3f72ea snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7de849a3 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7dfff480 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x93d99256 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd7773644 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe5c784fd snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe969372b snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xec6d6616 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xef1d6889 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff4cdf16 snd_ac97_resume +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0bd74bfd snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x11a4ca11 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1db16ce3 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x41c8c47f snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4ea7589d snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7d8f2540 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9cdf39a8 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xede5d428 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf6db7576 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0x2c9a2120 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xda2e1bab snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe37f240e snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xf66bf9cd snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0c663168 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1144dc04 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2697a3d9 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x34668c76 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x379b3bb7 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3b77c598 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4372d4fb oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x58852914 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x793b541e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7cda6297 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8049fe93 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x81ad3378 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa7b0081d oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaa05c08e oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb7876d71 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb805acb8 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc2d25673 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdc4b9ebe oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xee70f1a6 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfda239de oxygen_write32_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x391d4281 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x46679c67 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb48324d3 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbe10f613 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc78e2c5d snd_trident_start_voice +EXPORT_SYMBOL sound/soundcore 0xbfaf6f9f sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x10d91264 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x24952015 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5fae78fb snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x7ad74f91 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x7b5d4baa snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb16c9531 snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x065d7be3 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1033cd50 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2236b805 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x57f97f76 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc955ae25 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd28e0ceb snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf7675272 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfb4a32f6 __snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb21683a4 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x0002e160 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x00123017 dump_seek +EXPORT_SYMBOL vmlinux 0x002275df scm_fp_dup +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x008afc84 __nla_put +EXPORT_SYMBOL vmlinux 0x00a3e36a dev_mc_init +EXPORT_SYMBOL vmlinux 0x00ae5e91 input_grab_device +EXPORT_SYMBOL vmlinux 0x00d5c2b5 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x00e2c3d2 __pagevec_release +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01104a75 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01169a46 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x01393d9c scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x0156f488 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x0160add0 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019d9a52 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01d17a24 ilookup +EXPORT_SYMBOL vmlinux 0x01d655d9 kill_block_super +EXPORT_SYMBOL vmlinux 0x01ebeeb4 nobh_write_end +EXPORT_SYMBOL vmlinux 0x01ecc78b __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x0202757b rt6_lookup +EXPORT_SYMBOL vmlinux 0x022bf898 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x02552773 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x025b2521 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0284b2e2 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x02903160 pid_task +EXPORT_SYMBOL vmlinux 0x0293fa52 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e0c3d6 genl_register_family +EXPORT_SYMBOL vmlinux 0x02e85464 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02eef555 module_put +EXPORT_SYMBOL vmlinux 0x02f2885d __break_lease +EXPORT_SYMBOL vmlinux 0x02fad02e dev_mc_flush +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036b9069 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x03757c9b of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ceabf generic_getxattr +EXPORT_SYMBOL vmlinux 0x0386b5bf scsi_print_sense +EXPORT_SYMBOL vmlinux 0x03944306 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03bfd108 inet_frag_find +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03ee8a91 mem_map +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04012422 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x04096cf8 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x0418c4d0 request_key_async +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042500f8 bdevname +EXPORT_SYMBOL vmlinux 0x044161cd put_page +EXPORT_SYMBOL vmlinux 0x0444de21 bdi_destroy +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044944de __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048f80c1 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x04bf4b6e netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x04cb5a95 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f2d13e dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x04fefb09 elv_rb_find +EXPORT_SYMBOL vmlinux 0x04ff29df mmc_free_host +EXPORT_SYMBOL vmlinux 0x05187d60 tty_port_close +EXPORT_SYMBOL vmlinux 0x0521d005 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x0578519b single_open +EXPORT_SYMBOL vmlinux 0x05793fa2 tty_lock_pair +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ad5d1d vfs_rmdir +EXPORT_SYMBOL vmlinux 0x060d50cd jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062e0117 __invalidate_device +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063a8c27 lock_rename +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068cdfce phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06c30060 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x06d914bd pci_target_state +EXPORT_SYMBOL vmlinux 0x06f2338b revalidate_disk +EXPORT_SYMBOL vmlinux 0x06f59a68 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x073179c1 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x074738f3 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x076be307 ilookup5 +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c37601 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x07c6de2f tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07e5a5f8 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x07f858a1 current_fs_time +EXPORT_SYMBOL vmlinux 0x0812abdb blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0856a001 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x086bd3d5 sock_create_kern +EXPORT_SYMBOL vmlinux 0x0896b507 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x08b59386 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x08c93acd pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x08ec5d92 add_disk +EXPORT_SYMBOL vmlinux 0x0927e84b truncate_setsize +EXPORT_SYMBOL vmlinux 0x0940917b redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x094d1c58 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098eaf59 dev_alert +EXPORT_SYMBOL vmlinux 0x09bee792 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x09c25fcc xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a0f9dee filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x0a149f05 __scm_destroy +EXPORT_SYMBOL vmlinux 0x0a2364ee __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a3c0956 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a4f4354 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x0a5ca433 uart_resume_port +EXPORT_SYMBOL vmlinux 0x0a8642f6 tcp_close +EXPORT_SYMBOL vmlinux 0x0aac12ba phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x0ac34d7c iunique +EXPORT_SYMBOL vmlinux 0x0ac90031 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae8d23b netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x0b02b81e pci_restore_state +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b32dea8 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4c221a pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b765c68 d_lookup +EXPORT_SYMBOL vmlinux 0x0b961dc9 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x0ba4a5df set_bdi_congested +EXPORT_SYMBOL vmlinux 0x0bc25dfd fb_get_mode +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c1461e5 get_disk +EXPORT_SYMBOL vmlinux 0x0c28ad80 __nla_reserve +EXPORT_SYMBOL vmlinux 0x0c2e80c6 pcim_iomap +EXPORT_SYMBOL vmlinux 0x0c57d3e8 ida_destroy +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5d8327 i2c_use_client +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c860880 add_to_page_cache_locked +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 0x0cbb46fe jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x0cbd6124 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x0ccd3fa6 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x0cf23497 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x0cf3f8cf mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x0cfc1d08 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x0d0a37b2 elv_add_request +EXPORT_SYMBOL vmlinux 0x0d44e01a proto_register +EXPORT_SYMBOL vmlinux 0x0d48fb43 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5c64a3 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x0d5e384e xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x0d7c034f put_tty_driver +EXPORT_SYMBOL vmlinux 0x0d83d433 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x0d9a1f6a journal_lock_updates +EXPORT_SYMBOL vmlinux 0x0d9bda8a file_remove_suid +EXPORT_SYMBOL vmlinux 0x0da03ee9 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db5ba27 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0dc59eed jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x0ded7a1a inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x0e01a7d6 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x0e04dbeb pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x0e1ece52 scsi_device_put +EXPORT_SYMBOL vmlinux 0x0e21cc28 blk_register_region +EXPORT_SYMBOL vmlinux 0x0e2a7ab8 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x0e2c4c94 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x0e300bf7 schedule_work +EXPORT_SYMBOL vmlinux 0x0e692e90 tty_devnum +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e73fade input_flush_device +EXPORT_SYMBOL vmlinux 0x0e84cf92 skb_unlink +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ecc48cd block_truncate_page +EXPORT_SYMBOL vmlinux 0x0ecf1a5f alloc_fddidev +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0f00fd1b unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x0f01dbb3 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x0f21f04d address_space_init_once +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f45549e security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x0f47129e invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f8713a9 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fc4d11c blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x0fd3f2ec __blk_end_request +EXPORT_SYMBOL vmlinux 0x10248c60 ping_prot +EXPORT_SYMBOL vmlinux 0x1032867b genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x1037f311 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x104c1365 netlink_unicast +EXPORT_SYMBOL vmlinux 0x107565e5 dst_release +EXPORT_SYMBOL vmlinux 0x107b0f27 udp_prot +EXPORT_SYMBOL vmlinux 0x107ce0cd bdi_init +EXPORT_SYMBOL vmlinux 0x1080c3e8 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fd7049 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x1102011b netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x11067ce1 vfs_fsync +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112df22b nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x11523106 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11660f22 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x11663cec adb_register +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11718f4f genphy_resume +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x11853e00 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x11a1812e pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x11b5d54d fs_bio_set +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11cbecc4 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x11d42bbb agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x11e15f12 padata_stop +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f83b1b swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x11f9897c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x1208b9e9 blk_init_queue +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121ee6f9 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x12305fe9 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x126282a8 sk_filter +EXPORT_SYMBOL vmlinux 0x127fa76e dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x129b4eeb locks_init_lock +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b2af8e dev_notice +EXPORT_SYMBOL vmlinux 0x12c28da4 nobh_writepage +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x1304945b __getblk +EXPORT_SYMBOL vmlinux 0x1309a91d page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1323ea3c truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133fad88 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x13498c06 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x13632af7 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x1369c76c vfs_getattr +EXPORT_SYMBOL vmlinux 0x137b46e5 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x137b47af bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x13aaaf69 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13cef331 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x140bc753 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1426c8eb neigh_ifdown +EXPORT_SYMBOL vmlinux 0x14272ec3 blk_run_queue +EXPORT_SYMBOL vmlinux 0x142bda02 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x143f2996 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x145df07f cfb_copyarea +EXPORT_SYMBOL vmlinux 0x146cd214 vfs_unlink +EXPORT_SYMBOL vmlinux 0x14714aa3 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x147ac5e8 blk_complete_request +EXPORT_SYMBOL vmlinux 0x14a0759c scsi_init_io +EXPORT_SYMBOL vmlinux 0x14beba59 pci_release_region +EXPORT_SYMBOL vmlinux 0x14d25d45 skb_dequeue +EXPORT_SYMBOL vmlinux 0x14ea15da agp_free_page_array +EXPORT_SYMBOL vmlinux 0x14fb37aa scsi_target_resume +EXPORT_SYMBOL vmlinux 0x14fcaebf splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x150e6214 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x152b3e48 kunmap_high +EXPORT_SYMBOL vmlinux 0x152ba1c9 agp_enable +EXPORT_SYMBOL vmlinux 0x1539c5ce genl_notify +EXPORT_SYMBOL vmlinux 0x1539d040 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x1548daf8 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x155aee6a __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x15660f7e ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x1582f928 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x15928f20 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x159cc3c0 inet_bind +EXPORT_SYMBOL vmlinux 0x159e127a journal_get_create_access +EXPORT_SYMBOL vmlinux 0x15e09cea tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x15f6e98b inode_init_once +EXPORT_SYMBOL vmlinux 0x15fe75b0 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x163e5c89 dquot_transfer +EXPORT_SYMBOL vmlinux 0x166a2829 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x167f82c6 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x16955b94 sock_rfree +EXPORT_SYMBOL vmlinux 0x169ecd0b dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x16a28ae3 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x16a2c100 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x16b9d0a8 security_path_symlink +EXPORT_SYMBOL vmlinux 0x16c5f628 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x16caf9a8 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1701a491 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x171d106e sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x173a08ea netdev_info +EXPORT_SYMBOL vmlinux 0x173c14fa revert_creds +EXPORT_SYMBOL vmlinux 0x174498dd simple_lookup +EXPORT_SYMBOL vmlinux 0x175c789b end_page_writeback +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x177592b6 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x17796200 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1790ad84 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b239a6 scsi_device_get +EXPORT_SYMBOL vmlinux 0x17bf633c __blk_run_queue +EXPORT_SYMBOL vmlinux 0x17c5540a ihold +EXPORT_SYMBOL vmlinux 0x17cb36dd __alloc_skb +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f0b116 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x180d85db xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x1813ff89 netdev_crit +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1833b272 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x1835735b dst_discard +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184aadb8 md_integrity_register +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1858dc0b neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x186189ea filp_close +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189f7b71 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18caabca fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x18eb1a44 set_binfmt +EXPORT_SYMBOL vmlinux 0x190e6008 __devm_release_region +EXPORT_SYMBOL vmlinux 0x193c8b3f usb_add_phy +EXPORT_SYMBOL vmlinux 0x19449509 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1946f8c3 mount_subtree +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x1998713a ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x199acf0a agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19db689b scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x1a0b1b9f blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a172659 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x1a5b0c9c tcp_connect +EXPORT_SYMBOL vmlinux 0x1a60fb54 i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x1a9cb092 unregister_key_type +EXPORT_SYMBOL vmlinux 0x1ab80864 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b0fcca2 of_dev_get +EXPORT_SYMBOL vmlinux 0x1b400925 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b7c18a3 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8db29b gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x1b8faa67 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x1b9d9ea1 napi_complete +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba5c8d0 register_filesystem +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bf07827 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x1bf4c789 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x1c0fc9a9 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x1c196f79 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x1c2478a0 dev_uc_init +EXPORT_SYMBOL vmlinux 0x1c37314e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c7003e5 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1ca22e80 key_alloc +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cd07b7e softnet_data +EXPORT_SYMBOL vmlinux 0x1ce0d966 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x1cf3beeb replace_mount_options +EXPORT_SYMBOL vmlinux 0x1d200387 skb_make_writable +EXPORT_SYMBOL vmlinux 0x1d2d8424 of_device_alloc +EXPORT_SYMBOL vmlinux 0x1d3094ef pci_domain_nr +EXPORT_SYMBOL vmlinux 0x1d435bf3 key_validate +EXPORT_SYMBOL vmlinux 0x1d54962c scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x1d6ec4f1 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1daf54c9 mmc_resume_host +EXPORT_SYMBOL vmlinux 0x1db85ca1 inet_select_addr +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcff602 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd65217 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x1df5e6e4 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x1e0299d2 block_write_end +EXPORT_SYMBOL vmlinux 0x1e0a0d95 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x1e0c0c31 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x1e0dabc2 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x1e1689fe __i2c_transfer +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e6cd2d2 bh_submit_read +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e928c4a agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x1e97b09e inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ecf1763 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x1ee554da fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x1eede6dc input_reset_device +EXPORT_SYMBOL vmlinux 0x1f04d7b4 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fa730fb block_commit_write +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc45344 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd09a90 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1feb4ef7 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x20056746 ifla_policy +EXPORT_SYMBOL vmlinux 0x200a561d netdev_change_features +EXPORT_SYMBOL vmlinux 0x200ac2af nf_getsockopt +EXPORT_SYMBOL vmlinux 0x2018ebe4 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x203e10e4 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x20565aae skb_copy_bits +EXPORT_SYMBOL vmlinux 0x2058b0bf textsearch_register +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209d74cb phy_start_aneg +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20f0221f backlight_device_register +EXPORT_SYMBOL vmlinux 0x20fe2992 mdiobus_register +EXPORT_SYMBOL vmlinux 0x2106d325 register_gifconf +EXPORT_SYMBOL vmlinux 0x212dbe44 phy_device_register +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x214c8c12 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x214e76d9 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21785707 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x21a7dd92 generic_read_dir +EXPORT_SYMBOL vmlinux 0x21cf7f6d kill_pgrp +EXPORT_SYMBOL vmlinux 0x21e20640 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x220133e3 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x22039001 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2269e400 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x228ca9d6 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bb3e13 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x22d4edb7 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x22d80b4e path_get +EXPORT_SYMBOL vmlinux 0x22e7d7dd nf_reinject +EXPORT_SYMBOL vmlinux 0x22ee8a38 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x231238a8 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232c96e5 I_BDEV +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x239d794d ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23f183e0 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f68893 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24439e62 kobject_get +EXPORT_SYMBOL vmlinux 0x244f241f devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x245053f5 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x247f497c seq_escape +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24919b4a cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x2499de20 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x24bbb8e4 generic_fillattr +EXPORT_SYMBOL vmlinux 0x24da9c8d ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x24e6e5f7 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2511370f crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x2524876d tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2538d2c8 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x257c0654 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2591470d serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x2592f9b9 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25da823d dev_load +EXPORT_SYMBOL vmlinux 0x25e95b52 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x26309ecb md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x26326656 search_binary_handler +EXPORT_SYMBOL vmlinux 0x26360827 udp_poll +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263d6ac7 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26516d10 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x26519fda tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x26692b7a __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26b82334 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ebb210 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x26f1fe87 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x270cc689 simple_empty +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x27516b49 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x276c4237 scsi_host_put +EXPORT_SYMBOL vmlinux 0x277614c9 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x2778b67a tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x2782f5b1 simple_getattr +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27a2caf3 lock_fb_info +EXPORT_SYMBOL vmlinux 0x27ac2a3e serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x27b3c78c sock_wfree +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27c45977 create_proc_entry +EXPORT_SYMBOL vmlinux 0x27c78988 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x27dbce22 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281d3f9d neigh_direct_output +EXPORT_SYMBOL vmlinux 0x285f148a sock_wake_async +EXPORT_SYMBOL vmlinux 0x2888411b kill_anon_super +EXPORT_SYMBOL vmlinux 0x288f3f4d pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a63a78 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x28c1f022 sock_create +EXPORT_SYMBOL vmlinux 0x28d72ed7 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x28d8d6cd keyring_alloc +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29b1c366 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x29ef6b00 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x29f36683 dev_deactivate +EXPORT_SYMBOL vmlinux 0x29fc1310 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a0e0eee skb_split +EXPORT_SYMBOL vmlinux 0x2a13205e blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x2a2658fc sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a320f3b blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x2a407b9d d_path +EXPORT_SYMBOL vmlinux 0x2a468e8d scsi_ioctl +EXPORT_SYMBOL vmlinux 0x2a516a7e md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x2a602804 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a858d07 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x2a863c9e devm_gpio_free +EXPORT_SYMBOL vmlinux 0x2a86976b do_sync_write +EXPORT_SYMBOL vmlinux 0x2aa0ae02 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa23a30 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x2ab708e8 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b18bc47 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b48800c ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x2b4cb7b0 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x2b80fca0 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2bf212bb fb_set_var +EXPORT_SYMBOL vmlinux 0x2bfa7932 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x2c00bdf3 kset_register +EXPORT_SYMBOL vmlinux 0x2c0457a3 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1af175 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x2c21138d max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3498fb sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x2c3f6b2e netif_napi_del +EXPORT_SYMBOL vmlinux 0x2c6e7581 noop_llseek +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c84300e sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2c96bd07 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d26d66e scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x2d29a03c journal_start_commit +EXPORT_SYMBOL vmlinux 0x2d3fb12b abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x2d419101 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x2d5646da qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x2d62a89d contig_page_data +EXPORT_SYMBOL vmlinux 0x2d7c7990 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d9c0eeb dev_uc_del +EXPORT_SYMBOL vmlinux 0x2dcb5489 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e1ad1a0 free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e2d4f54 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x2e4cd113 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x2e540189 dev_get_flags +EXPORT_SYMBOL vmlinux 0x2e54343f fb_validate_mode +EXPORT_SYMBOL vmlinux 0x2e5b8b0b abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x2e854daf vfs_mknod +EXPORT_SYMBOL vmlinux 0x2ead1c1b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ed896c6 sock_update_classid +EXPORT_SYMBOL vmlinux 0x2ee8ed7b __sk_dst_check +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef514ad tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0d6fb9 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x2f0dbde2 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x2f1f7879 phy_device_free +EXPORT_SYMBOL vmlinux 0x2f27bcf0 bio_pair_release +EXPORT_SYMBOL vmlinux 0x2f3e1735 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x2f4de463 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x2f56780e devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2f5b77cd max8925_reg_write +EXPORT_SYMBOL vmlinux 0x2f700312 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2f789756 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x2f7c06ad uart_register_driver +EXPORT_SYMBOL vmlinux 0x2f8d8d54 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x2f92cb15 phy_find_first +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fceb8a3 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x2fd80158 scsi_free_command +EXPORT_SYMBOL vmlinux 0x2fe50b55 set_page_dirty +EXPORT_SYMBOL vmlinux 0x300b3910 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x300decf2 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x307a3851 journal_abort +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30a6225d vfs_statfs +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b2000d ip_defrag +EXPORT_SYMBOL vmlinux 0x30bc5d04 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x30bcb761 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310eb455 find_inode_number +EXPORT_SYMBOL vmlinux 0x31218257 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x31286c49 bio_map_user +EXPORT_SYMBOL vmlinux 0x314129f7 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314eb332 pci_iomap +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x318d462f unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319f312d user_path_create +EXPORT_SYMBOL vmlinux 0x31b2f8c9 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x31cf12a1 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x31d1d389 tty_set_operations +EXPORT_SYMBOL vmlinux 0x31d4ba2f skb_gso_segment +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x322f1805 d_invalidate +EXPORT_SYMBOL vmlinux 0x325c01c5 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x3267065d inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x3267c08e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32bb04c8 from_kqid +EXPORT_SYMBOL vmlinux 0x32bf5e21 cdev_del +EXPORT_SYMBOL vmlinux 0x32c71208 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x32e99ed2 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x33177a6f cdev_alloc +EXPORT_SYMBOL vmlinux 0x332482d9 vfs_readlink +EXPORT_SYMBOL vmlinux 0x33253cc6 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x3349bc4d tty_port_open +EXPORT_SYMBOL vmlinux 0x334ad2df tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x334c0d87 done_path_create +EXPORT_SYMBOL vmlinux 0x33719f57 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33a148b5 bdi_register +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33b91f0a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33dd13e2 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34100254 pci_get_device +EXPORT_SYMBOL vmlinux 0x3411ee76 udp_disconnect +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x342a3a3e sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x342c8942 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x343ab4dd input_release_device +EXPORT_SYMBOL vmlinux 0x3442c6e5 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3461261e page_symlink +EXPORT_SYMBOL vmlinux 0x34630fb2 clear_user_page +EXPORT_SYMBOL vmlinux 0x34674cf7 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x346b21b5 misc_register +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34777142 create_syslog_header +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a68a85 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x34af07a1 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x34e4fd8b inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350199c0 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x35159d4e input_event +EXPORT_SYMBOL vmlinux 0x3519a65a framebuffer_release +EXPORT_SYMBOL vmlinux 0x35345017 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x353a159b twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x354ad8af uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x3563eb32 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x356d9306 cdrom_release +EXPORT_SYMBOL vmlinux 0x35b5d7d0 input_open_device +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35c9a8bc of_get_mac_address +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3605f889 __block_write_begin +EXPORT_SYMBOL vmlinux 0x363d5b33 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x368ae9e6 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f9cd94 rcu_is_cpu_idle +EXPORT_SYMBOL vmlinux 0x371699a1 simple_release_fs +EXPORT_SYMBOL vmlinux 0x37193a43 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3753d2d2 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x37863263 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x379fd461 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37bd5981 proc_mkdir +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6fee5 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3829fd74 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x382e160f xfrm_register_type +EXPORT_SYMBOL vmlinux 0x38519593 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x3879650c inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x388229e4 simple_statfs +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38899f28 get_tz_trend +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38e96773 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x38f4b63f blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x390a9baf have_submounts +EXPORT_SYMBOL vmlinux 0x39196483 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x39266a6f tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x392b0d9a sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x3933af1c jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3962b4fb lro_receive_skb +EXPORT_SYMBOL vmlinux 0x3978f7b7 inode_change_ok +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x398b067c dquot_operations +EXPORT_SYMBOL vmlinux 0x398e4219 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x3994503a __kfree_skb +EXPORT_SYMBOL vmlinux 0x39bbc4d0 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39e1cce4 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x3a3f01ff iterate_fd +EXPORT_SYMBOL vmlinux 0x3a5ab074 sock_register +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab857af pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x3ac86651 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x3af858e2 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x3afa41d0 d_find_alias +EXPORT_SYMBOL vmlinux 0x3afad07e rtnl_create_link +EXPORT_SYMBOL vmlinux 0x3b1c285e security_inode_init_security +EXPORT_SYMBOL vmlinux 0x3b2394b5 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x3b24daae xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b421aa1 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x3b586f59 vfs_readdir +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b699a18 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x3b728875 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x3b753e43 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x3b7f3235 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x3ba71603 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf21d93 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x3bf47cb5 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x3c0504bf zero_fill_bio +EXPORT_SYMBOL vmlinux 0x3c3670a2 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x3c4091ec tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x3c49c6b8 proc_create_data +EXPORT_SYMBOL vmlinux 0x3c542fcb scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x3c61b168 set_create_files_as +EXPORT_SYMBOL vmlinux 0x3c645467 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x3c6516b8 __inet6_hash +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c7c9dbc sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca540ff register_cdrom +EXPORT_SYMBOL vmlinux 0x3cac15b0 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x3cbc36c2 submit_bh +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc667d0 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x3ce1a831 ether_setup +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce8f7e4 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x3d5f1c69 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x3d76be1d dquot_alloc +EXPORT_SYMBOL vmlinux 0x3d97a985 do_truncate +EXPORT_SYMBOL vmlinux 0x3d9c6353 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x3dbe1c97 f_setown +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd08600 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x3de1cb0d skb_copy +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e027b79 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x3e0f801f xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x3e3a3f71 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e71fd4e filemap_fault +EXPORT_SYMBOL vmlinux 0x3e78ca60 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x3e7e1e62 input_allocate_device +EXPORT_SYMBOL vmlinux 0x3e8115f6 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x3e83dded sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea71358 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ec76a1b jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x3ecf7281 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x3ed25f84 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee8b998 seq_bitmap +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f3ffde8 __mutex_init +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f689703 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x3fab5ed6 dquot_disable +EXPORT_SYMBOL vmlinux 0x3fad064e kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb832a5 sync_blockdev +EXPORT_SYMBOL vmlinux 0x3fcdb97c agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x3fd08f2e twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe29e92 dev_addr_init +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x40125b2d eth_type_trans +EXPORT_SYMBOL vmlinux 0x4016d19f blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402f7170 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407492b4 skb_clone +EXPORT_SYMBOL vmlinux 0x407504e5 abort_creds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409dfbd7 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x40a01497 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a281a5 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40beb95b gen_pool_free +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c2a12b dev_driver_string +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40ebff9e mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x40f2d5dc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x41063dec unregister_console +EXPORT_SYMBOL vmlinux 0x41170cb6 sk_common_release +EXPORT_SYMBOL vmlinux 0x411e2cc3 get_task_io_context +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4151eead xfrm_input +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41b3fe1f kernel_read +EXPORT_SYMBOL vmlinux 0x41bc4629 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x41e72580 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x41f8b526 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x4215a78a blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x42244bf7 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x422509fa netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427adc38 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x4280f9aa i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x428ce424 bio_add_page +EXPORT_SYMBOL vmlinux 0x428f24f9 posix_acl_create +EXPORT_SYMBOL vmlinux 0x4294c793 aio_complete +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a9f56b mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x42ac0a79 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x42c4f8d0 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x42e0be03 register_nls +EXPORT_SYMBOL vmlinux 0x42fb6ff7 update_region +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4304956b dev_addr_add +EXPORT_SYMBOL vmlinux 0x4334746e ppp_channel_index +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435dbabf agp_generic_enable +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4376e98c neigh_destroy +EXPORT_SYMBOL vmlinux 0x437f4daf dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x438029ad mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4414a83f md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x443460cc xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44379447 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444e36c5 rtnl_notify +EXPORT_SYMBOL vmlinux 0x445e4c0a pci_remove_bus +EXPORT_SYMBOL vmlinux 0x446f91a0 put_disk +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x447bf1ab release_sock +EXPORT_SYMBOL vmlinux 0x4485e9a4 elv_rb_del +EXPORT_SYMBOL vmlinux 0x449fb17b nf_log_register +EXPORT_SYMBOL vmlinux 0x44d258f4 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x45001e86 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x45010f15 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x450ea45b of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x4511c1b0 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x453010d1 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x4531cadd sk_free +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4549f152 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x4555cfb1 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x455ea43a free_task +EXPORT_SYMBOL vmlinux 0x45748433 bio_split +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x45978d15 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x45981ec8 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x45a99227 inet_ioctl +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45e42571 seq_vprintf +EXPORT_SYMBOL vmlinux 0x45f9e245 twl6040_power +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x463912fa udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x463b21ec install_exec_creds +EXPORT_SYMBOL vmlinux 0x464ff04b vfs_readv +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x46665f45 vfs_link +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46850113 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x469671b2 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46d33be4 neigh_update +EXPORT_SYMBOL vmlinux 0x46d49e13 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x4759db66 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x475c22e9 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x4770d6ae generic_removexattr +EXPORT_SYMBOL vmlinux 0x477c88c3 of_device_is_compatible +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 0x47b521e6 usb_put_phy +EXPORT_SYMBOL vmlinux 0x47b546a0 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x47d24bc1 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x47ead189 vc_cons +EXPORT_SYMBOL vmlinux 0x48025762 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x48159c73 blk_peek_request +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x48548cc1 __frontswap_store +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485ae7f2 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x4865628a lock_sock_nested +EXPORT_SYMBOL vmlinux 0x48741c7a d_drop +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x487f19d4 km_report +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x48923928 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x48afec7d insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x48fb4803 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491703cb tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49762e1e idr_replace +EXPORT_SYMBOL vmlinux 0x497b7801 netdev_warn +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c90968 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x4a1a9288 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x4a2609eb tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x4a290d4d cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x4a33607a poll_freewait +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a3c5509 iget_locked +EXPORT_SYMBOL vmlinux 0x4a43954c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x4a5242e6 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x4a5973f7 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x4a61e170 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x4aa2cda5 i2c_release_client +EXPORT_SYMBOL vmlinux 0x4aaf2da9 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x4aba0a95 mount_bdev +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abc9593 mount_single +EXPORT_SYMBOL vmlinux 0x4ac916bc macio_request_resources +EXPORT_SYMBOL vmlinux 0x4ae86bde eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x4aecd446 vga_get +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0f3164 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x4b1c0bf3 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2d6054 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b72869e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4bab1cbf inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x4bad4888 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x4bb7464f gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x4bc3dc80 pci_request_region +EXPORT_SYMBOL vmlinux 0x4bc61dd1 blk_put_queue +EXPORT_SYMBOL vmlinux 0x4be0cbc1 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c1892a3 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c44bab4 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x4c58e0c9 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x4c8f4e7d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x4caaf7e2 blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cd802b6 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4ceffd27 of_allnodes +EXPORT_SYMBOL vmlinux 0x4cf1ec99 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x4cf4ee64 of_device_register +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d558bda generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x4d58f5b2 ip_options_compile +EXPORT_SYMBOL vmlinux 0x4d5b26f8 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x4d82050d of_get_property +EXPORT_SYMBOL vmlinux 0x4d919673 __register_chrdev +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9ac8ad genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4db71028 sock_i_ino +EXPORT_SYMBOL vmlinux 0x4dbd9590 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x4dc1d6a8 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df13400 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e125b8b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4e13a7dc inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x4e155538 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x4e1cf131 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x4e2090f8 file_update_time +EXPORT_SYMBOL vmlinux 0x4e35285e elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e437b06 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x4e5271af netif_carrier_off +EXPORT_SYMBOL vmlinux 0x4e6e0270 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ec5f832 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x4ec93327 skb_insert +EXPORT_SYMBOL vmlinux 0x4f1836f6 inode_permission +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f310843 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4f3f28 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7c3cd2 __sock_create +EXPORT_SYMBOL vmlinux 0x4f89e8bf vmap +EXPORT_SYMBOL vmlinux 0x4fb8bf47 netdev_notice +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe4d6ae netdev_state_change +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ffec9cd __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500ae74c pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x500b8e1e serio_rescan +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x50660e52 journal_ack_err +EXPORT_SYMBOL vmlinux 0x507fd99c skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x508ae07b ip6_frag_init +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509bf845 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x50f6bb2a register_key_type +EXPORT_SYMBOL vmlinux 0x50fd784a iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x50fedf70 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5145505d da9052_i2c_fix +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x518a72c7 __dst_free +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51bf66e5 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x51c90bd8 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51ff37d3 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x522ff65d tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x5231fa62 usb_remove_phy +EXPORT_SYMBOL vmlinux 0x5235fbf2 tty_write_room +EXPORT_SYMBOL vmlinux 0x523e11f2 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52543b6e __breadahead +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x527b11e4 quota_send_warning +EXPORT_SYMBOL vmlinux 0x5284e6a2 mpage_readpages +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x529a331d cdev_init +EXPORT_SYMBOL vmlinux 0x52c32a39 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e416cf xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x5301d455 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530c4f34 journal_set_features +EXPORT_SYMBOL vmlinux 0x530e530a simple_transaction_read +EXPORT_SYMBOL vmlinux 0x53248875 pci_find_capability +EXPORT_SYMBOL vmlinux 0x532e83be update_time +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5337e880 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x53866207 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x5397183d inode_set_bytes +EXPORT_SYMBOL vmlinux 0x53c59444 dm_get_device +EXPORT_SYMBOL vmlinux 0x53d070f0 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x53e51f3a rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f188cb insert_inode_locked +EXPORT_SYMBOL vmlinux 0x5405f5dd vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5432f886 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x5437e321 file_ns_capable +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54561b75 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x549798c3 unregister_netdev +EXPORT_SYMBOL vmlinux 0x54a720aa mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ab1164 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x54b40fcc bdgrab +EXPORT_SYMBOL vmlinux 0x54d32fb8 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550b3c9b bdi_register_dev +EXPORT_SYMBOL vmlinux 0x551048ea swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5521d92c tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x55485e90 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5571df9e devm_usb_put_phy +EXPORT_SYMBOL vmlinux 0x55756d94 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55ad1123 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x55c50306 sock_init_data +EXPORT_SYMBOL vmlinux 0x55d3ee41 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x55d58c2c sk_wait_data +EXPORT_SYMBOL vmlinux 0x55ecd22e padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x56350de5 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x5642bb59 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x5664ce80 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x566674b2 journal_load +EXPORT_SYMBOL vmlinux 0x56690cd3 netdev_update_features +EXPORT_SYMBOL vmlinux 0x566ba0c3 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x5677920d generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x567cae01 security_path_truncate +EXPORT_SYMBOL vmlinux 0x56916523 sg_miter_next +EXPORT_SYMBOL vmlinux 0x56993554 dev_add_pack +EXPORT_SYMBOL vmlinux 0x56a0cc55 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a3eeeb sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x56aaffc4 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x56c1788b mpage_writepage +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56db9b0e scsi_print_command +EXPORT_SYMBOL vmlinux 0x56e305cb vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x5703f2a0 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573f3c0b ata_dev_printk +EXPORT_SYMBOL vmlinux 0x57543e23 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57719ab6 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x577ed767 switch_mmu_context +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x578ed622 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x57b6727e __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x57bcc8fb __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x57c13f18 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x57c60210 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x57ccd36a nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x57d95cf4 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0x5805e2e5 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x5816fa7f filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x581f7a91 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587387e2 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x587abea2 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x58835b61 __serio_register_port +EXPORT_SYMBOL vmlinux 0x5888f1fb clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x588eaea8 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x589e88ec posix_test_lock +EXPORT_SYMBOL vmlinux 0x58a069cb mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x58b391a8 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x58c2cdfe dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58fba5f4 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x590f20f2 write_cache_pages +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x5938d030 dquot_resume +EXPORT_SYMBOL vmlinux 0x5949f75f alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x594b4236 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5959d751 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x595afaa9 kill_pid +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596989e2 kobject_set_name +EXPORT_SYMBOL vmlinux 0x598b6a15 pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x59977b7e sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x59adec7d journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59d9231a phy_connect_direct +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a0a7c2e skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x5a0bbcfa __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x5a2288f7 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x5a2e3be6 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x5a3114d6 blk_start_request +EXPORT_SYMBOL vmlinux 0x5a35e7ac jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x5a50387b tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5a53ebf5 vfs_open +EXPORT_SYMBOL vmlinux 0x5a61063e jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x5a644ac0 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x5a7f6473 kfree_skb +EXPORT_SYMBOL vmlinux 0x5a8b97b7 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x5a905039 seq_putc +EXPORT_SYMBOL vmlinux 0x5a90703d tty_free_termios +EXPORT_SYMBOL vmlinux 0x5aaae7b6 drop_nlink +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5adb9792 dqput +EXPORT_SYMBOL vmlinux 0x5addf008 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x5af88369 d_add_ci +EXPORT_SYMBOL vmlinux 0x5afc9589 give_up_console +EXPORT_SYMBOL vmlinux 0x5b0d6fd0 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x5b174259 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1ec938 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x5b2c6e59 backlight_force_update +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b45ff8c __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x5b70527d netdev_emerg +EXPORT_SYMBOL vmlinux 0x5b70667a bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bba5f3b cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x5bdd0459 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x5bdea191 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x5bf1cbe8 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x5c02b7a1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x5c183d59 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c2c130c blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c407a14 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x5c51188b agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x5c5735b3 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x5c735ff9 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x5c7ac076 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x5c85f279 keyring_clear +EXPORT_SYMBOL vmlinux 0x5c8acfa5 journal_stop +EXPORT_SYMBOL vmlinux 0x5ca3b875 __d_drop +EXPORT_SYMBOL vmlinux 0x5cc4902e ll_rw_block +EXPORT_SYMBOL vmlinux 0x5cd428e0 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x5cd46088 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x5cd8ddfb i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d15242c fb_show_logo +EXPORT_SYMBOL vmlinux 0x5d263f9c tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x5d2956b5 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x5d29e545 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x5d2c45e3 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x5d3ea9a2 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x5d4c70dc mmc_remove_host +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d758803 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x5d97701f default_file_splice_read +EXPORT_SYMBOL vmlinux 0x5d9a1fcc invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x5d9cee31 __lock_page +EXPORT_SYMBOL vmlinux 0x5dacea59 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x5e1b9498 input_set_capability +EXPORT_SYMBOL vmlinux 0x5e20c075 __f_setown +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3c213f balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x5e4f3f3d sock_no_bind +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e7c740a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecfd48c pci_match_id +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed389a8 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x5ef48a1a journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f31f779 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f3ee979 pci_clear_master +EXPORT_SYMBOL vmlinux 0x5f41f475 bio_put +EXPORT_SYMBOL vmlinux 0x5f47487a inetdev_by_index +EXPORT_SYMBOL vmlinux 0x5f47e83d inet_getname +EXPORT_SYMBOL vmlinux 0x5f56118b gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8925aa poll_initwait +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9104db scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x5fa3ebd3 __pskb_copy +EXPORT_SYMBOL vmlinux 0x5fc9c8ec jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x5ff5bbea inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x60020671 scsi_register +EXPORT_SYMBOL vmlinux 0x60062764 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60362fe6 sock_no_accept +EXPORT_SYMBOL vmlinux 0x60465811 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x606a70e8 vfs_writev +EXPORT_SYMBOL vmlinux 0x606c82aa input_inject_event +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60d49fae gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x60da6858 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x60eb1ede mutex_trylock +EXPORT_SYMBOL vmlinux 0x60f81868 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x60f96f40 simple_unlink +EXPORT_SYMBOL vmlinux 0x61119402 mount_ns +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613136fb kick_iocb +EXPORT_SYMBOL vmlinux 0x61551309 inet6_release +EXPORT_SYMBOL vmlinux 0x615d4d8f pci_fixup_device +EXPORT_SYMBOL vmlinux 0x6162713d __inode_permission +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617b692c idr_for_each +EXPORT_SYMBOL vmlinux 0x6180ddb3 set_bh_page +EXPORT_SYMBOL vmlinux 0x619c9abd __neigh_event_send +EXPORT_SYMBOL vmlinux 0x61a0e18b dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x61b49e0a pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ee3e11 seq_path +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622dac7f __page_symlink +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x62407aa1 md_write_start +EXPORT_SYMBOL vmlinux 0x62420505 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x624b7694 try_module_get +EXPORT_SYMBOL vmlinux 0x624dab4a tty_name +EXPORT_SYMBOL vmlinux 0x62506cb8 sock_i_uid +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x62576f92 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x62580c70 setattr_copy +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x6271d1c6 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x628332e8 pmu_power_flags +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62864217 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x629437f9 get_write_access +EXPORT_SYMBOL vmlinux 0x62cffa9c phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x6316bcac locks_delete_block +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631b85c6 dma_find_channel +EXPORT_SYMBOL vmlinux 0x63216fd9 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x6377aa37 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x6385c064 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x6385d8a6 blk_get_queue +EXPORT_SYMBOL vmlinux 0x6390e9e6 ps2_init +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x6399ae88 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x63a63865 notify_thermal_framework +EXPORT_SYMBOL vmlinux 0x63b02c9d request_key +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63f26ee2 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x63f6220d mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6441c559 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64825c6d lro_flush_all +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64b683b4 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x64bd7317 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x64dbdc5e fget_light +EXPORT_SYMBOL vmlinux 0x6508f385 tcp_prot +EXPORT_SYMBOL vmlinux 0x650a6767 prandom_u32_state +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x6516b879 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652a6f81 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x652cbabb journal_force_commit +EXPORT_SYMBOL vmlinux 0x652f526e mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6547af62 i2c_master_send +EXPORT_SYMBOL vmlinux 0x65559592 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x655f9c32 blk_rq_init +EXPORT_SYMBOL vmlinux 0x6565f807 tty_port_put +EXPORT_SYMBOL vmlinux 0x657201b9 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x657f95a4 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x658c551c bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x65a2dcf8 nla_put +EXPORT_SYMBOL vmlinux 0x65a90252 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x65ad9d7f send_sig_info +EXPORT_SYMBOL vmlinux 0x65b16e16 __bread +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d6c3bd i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65ebf106 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6631e112 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x6645d6cb __get_user_pages +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66907617 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x669f78f3 start_tty +EXPORT_SYMBOL vmlinux 0x66a5b87a md_done_sync +EXPORT_SYMBOL vmlinux 0x66b6f78f iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x66c18d3e fput +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66d01597 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x66d1053d registered_fb +EXPORT_SYMBOL vmlinux 0x66dc4985 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x66df229e dquot_scan_active +EXPORT_SYMBOL vmlinux 0x671b7090 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x671c6151 mount_pseudo +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x677f4c8c unlock_page +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bdde78 inc_nlink +EXPORT_SYMBOL vmlinux 0x67cb47bb sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x67d605e2 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x67f6286e scsi_unregister +EXPORT_SYMBOL vmlinux 0x681586c6 blkdev_get +EXPORT_SYMBOL vmlinux 0x6830f8b6 fget_raw +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687e6f25 set_disk_ro +EXPORT_SYMBOL vmlinux 0x68a1eb77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x68b5b1f2 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x68cde4fb call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x68d9bef5 ida_pre_get +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x692fc02d sock_from_file +EXPORT_SYMBOL vmlinux 0x696c368e serio_interrupt +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x698fdb9f abx500_register_ops +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a32021 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6da5d sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e95ef3 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a14726f security_path_link +EXPORT_SYMBOL vmlinux 0x6a2bbc52 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x6a38c446 __put_cred +EXPORT_SYMBOL vmlinux 0x6a417ef4 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a85247f simple_write_end +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad44dc3 skb_store_bits +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1f1f14 pci_bus_type +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b457969 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x6b4b6608 filp_open +EXPORT_SYMBOL vmlinux 0x6b631cf0 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b989242 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bfe8d5b d_rehash +EXPORT_SYMBOL vmlinux 0x6c1968bc directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c21aca3 unload_nls +EXPORT_SYMBOL vmlinux 0x6c2554e6 freeze_bdev +EXPORT_SYMBOL vmlinux 0x6c2f3f39 get_gendisk +EXPORT_SYMBOL vmlinux 0x6c5d2818 idr_find +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c700dae i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c760844 sock_no_listen +EXPORT_SYMBOL vmlinux 0x6c85881b names_cachep +EXPORT_SYMBOL vmlinux 0x6c90e4bd fifo_set_limit +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6cb743fc of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x6cbae792 pipe_to_file +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cf71dc8 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x6d035588 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d08e58d genl_register_ops +EXPORT_SYMBOL vmlinux 0x6d0b8b6b tty_check_change +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 0x6d43be60 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x6d464175 __sg_free_table +EXPORT_SYMBOL vmlinux 0x6d6e3985 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x6d743117 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x6d8cef23 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x6d9903b4 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dd05124 input_close_device +EXPORT_SYMBOL vmlinux 0x6dddf6bc bio_map_kern +EXPORT_SYMBOL vmlinux 0x6ddf647a swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x6de65aec poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x6de98524 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e33f315 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e8c85ee unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x6e9b39c6 arp_find +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea63e26 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6edd209c key_link +EXPORT_SYMBOL vmlinux 0x6ef2d482 account_page_redirty +EXPORT_SYMBOL vmlinux 0x6ef736a7 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f264190 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x6f269110 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x6f34502f of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x6faf7c7f __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x6fb85fb2 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x6fc2895c sock_no_mmap +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd0038b tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x6fd458da thaw_super +EXPORT_SYMBOL vmlinux 0x6fd81e4f dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6fefca1f new_inode +EXPORT_SYMBOL vmlinux 0x6ffd0b89 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x70009207 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x7020f04d set_groups +EXPORT_SYMBOL vmlinux 0x70211adc generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062072c get_fs_type +EXPORT_SYMBOL vmlinux 0x708b7680 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x708d7f09 inet_shutdown +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 0x70e2090f blk_fetch_request +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x710b5f52 mdiobus_free +EXPORT_SYMBOL vmlinux 0x711cc872 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ac496 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x714251c3 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x714eae5f d_make_root +EXPORT_SYMBOL vmlinux 0x71616d00 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x71683089 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7194d3b7 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a6000e rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71af2521 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x71b1c4dc finish_no_open +EXPORT_SYMBOL vmlinux 0x71c05cfa padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x71c5dbd7 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71d02d87 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x71dc5b5a i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x71de5e24 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x7203f98d nla_append +EXPORT_SYMBOL vmlinux 0x72058988 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x72090ab4 ppc_md +EXPORT_SYMBOL vmlinux 0x72253fa1 prepare_creds +EXPORT_SYMBOL vmlinux 0x7228713f mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b88317 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x72c88d34 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x72cc7e57 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x72cf77e5 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72d6a97e simple_rename +EXPORT_SYMBOL vmlinux 0x72dff5bb macio_release_resource +EXPORT_SYMBOL vmlinux 0x72dff5bc md_write_end +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f30276 deactivate_super +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733c9fba block_write_full_page +EXPORT_SYMBOL vmlinux 0x733df7c3 vm_event_states +EXPORT_SYMBOL vmlinux 0x734afbf7 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x73764f09 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x737ace15 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738caa17 security_file_permission +EXPORT_SYMBOL vmlinux 0x738d580a i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x7398a91f flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x739cee0b kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x73a41ca4 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x73b869e6 netdev_err +EXPORT_SYMBOL vmlinux 0x73c3689a phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x73c7710d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x741fbfff mii_check_link +EXPORT_SYMBOL vmlinux 0x7431881d register_netdevice +EXPORT_SYMBOL vmlinux 0x743705e7 pci_get_slot +EXPORT_SYMBOL vmlinux 0x7443931f pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x744d6e67 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x7464ecb2 kset_unregister +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7472f8b3 tcf_register_action +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748606e2 netpoll_setup +EXPORT_SYMBOL vmlinux 0x74971e9f elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x74a7792f follow_pfn +EXPORT_SYMBOL vmlinux 0x74be03d2 generic_writepages +EXPORT_SYMBOL vmlinux 0x74bf83b3 dev_uc_add +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74cc1cc8 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f37cad nf_hook_slow +EXPORT_SYMBOL vmlinux 0x74f82585 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x75057c31 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751088f1 would_dump +EXPORT_SYMBOL vmlinux 0x751be391 phy_detach +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x75236332 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x752525eb jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x752f8d33 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x752fd38e journal_dirty_data +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x7554dd61 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x75697049 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x756d2460 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x757ebbcb phy_disconnect +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c27845 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x75c7f5b8 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x75d5ea61 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x75dd206d dev_addr_del +EXPORT_SYMBOL vmlinux 0x75eb04ed inet_del_offload +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7677a08c dquot_release +EXPORT_SYMBOL vmlinux 0x76b11503 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76ca363e override_creds +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d68b1b nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x76efb233 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x76f68128 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x772b9e39 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x774de255 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x775cf18c nf_afinfo +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77ce93b3 qid_lt +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f9e24d kernel_getpeername +EXPORT_SYMBOL vmlinux 0x77fd6264 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7803e237 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x7805bc84 journal_init_inode +EXPORT_SYMBOL vmlinux 0x781fa003 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x783e3d57 d_set_d_op +EXPORT_SYMBOL vmlinux 0x785620a5 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x785762c1 locks_free_lock +EXPORT_SYMBOL vmlinux 0x78630b31 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x787310ee macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x787ee1c4 unlock_buffer +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x78905cb0 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78bdac69 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x78c7feaa mddev_congested +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e4eb5c devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7928d784 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x79399451 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x793af0a3 security_path_chmod +EXPORT_SYMBOL vmlinux 0x794decd4 kernel_connect +EXPORT_SYMBOL vmlinux 0x79577c1b dev_uc_flush +EXPORT_SYMBOL vmlinux 0x795b8697 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797aad8c pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x79893c5d ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x798ea385 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bc99f6 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x79cc4340 load_nls +EXPORT_SYMBOL vmlinux 0x79ffea7c dev_warn +EXPORT_SYMBOL vmlinux 0x7a028372 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x7a0f5c8d nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a190afc kernel_getsockname +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2e6b48 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x7a2eb025 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x7a370089 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a61713b kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x7a62fcda tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x7a69fc85 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x7a713072 should_remove_suid +EXPORT_SYMBOL vmlinux 0x7a7cb768 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac013a8 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x7ac0229a dev_alloc_name +EXPORT_SYMBOL vmlinux 0x7ad41bf9 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ad41ecb __dquot_transfer +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b07dc7c dev_get_by_name +EXPORT_SYMBOL vmlinux 0x7b2af9cd register_netdev +EXPORT_SYMBOL vmlinux 0x7b3c5cdf sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x7b44b235 do_sync_read +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b627cbc jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x7b70ccd8 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x7b75e36f tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x7b7decd1 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x7be3d65f netpoll_print_options +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7bed93cc inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x7bef3388 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c12089b inet_stream_ops +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c37fe86 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c562ee2 bio_init +EXPORT_SYMBOL vmlinux 0x7c6c8f18 serio_open +EXPORT_SYMBOL vmlinux 0x7c81708f kernel_recvmsg +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 0x7caa6ba3 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbf54cb pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x7ccec393 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x7cd62373 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d249632 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x7d42cdd7 kill_bdev +EXPORT_SYMBOL vmlinux 0x7d58ef2b bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x7d6fbc73 kthread_bind +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7d8c5df1 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x7d8ebdf2 do_SAK +EXPORT_SYMBOL vmlinux 0x7db30c8c jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dd000fd tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x7de48174 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfa6f59 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x7e20b79c security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x7e2df6a0 key_type_keyring +EXPORT_SYMBOL vmlinux 0x7e2ef5cb security_inode_readlink +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3ec477 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x7e7725a1 mmc_request_done +EXPORT_SYMBOL vmlinux 0x7e81e516 kernel_listen +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e92c3c1 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x7ec0a1e4 inode_init_owner +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef0bd91 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f935c07 do_splice_direct +EXPORT_SYMBOL vmlinux 0x7fa9fc2c seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x7fd178e0 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x801fc509 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x8031b68e ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x8035acf8 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x803a75ae inet_register_protosw +EXPORT_SYMBOL vmlinux 0x8065083c generic_listxattr +EXPORT_SYMBOL vmlinux 0x8085588d input_get_keycode +EXPORT_SYMBOL vmlinux 0x80c5e46a pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d1f8cb tty_throttle +EXPORT_SYMBOL vmlinux 0x80e8b309 commit_creds +EXPORT_SYMBOL vmlinux 0x80f64b28 pci_set_master +EXPORT_SYMBOL vmlinux 0x8102e0d5 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x81131e09 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x8117cae7 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x811845c6 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x8122adc1 input_register_handler +EXPORT_SYMBOL vmlinux 0x81455796 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x814e1d16 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x814f8d99 register_exec_domain +EXPORT_SYMBOL vmlinux 0x81516c5b key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x815811ae simple_transaction_release +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81709a36 phy_init_eee +EXPORT_SYMBOL vmlinux 0x8173ab81 clear_nlink +EXPORT_SYMBOL vmlinux 0x817d7d78 skb_push +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b14ddb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dc01d5 no_llseek +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8216d103 mmc_erase +EXPORT_SYMBOL vmlinux 0x8237f1ee pci_disable_msi +EXPORT_SYMBOL vmlinux 0x82458240 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x825828d9 d_validate +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x827c249e dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x82913009 agp_create_memory +EXPORT_SYMBOL vmlinux 0x829b28a3 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x82a267aa tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82be4b9a rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x82c98f78 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x82d92aa5 __module_get +EXPORT_SYMBOL vmlinux 0x82df9955 bdget +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x83459615 tty_hangup +EXPORT_SYMBOL vmlinux 0x837d8061 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x8394d201 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b29c02 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x8477c263 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x84837d96 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x84a71943 get_phy_device +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84cae917 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x84fef0e7 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x851557db __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x8529f1ba dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x853a0536 vga_put +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x855aa86d nobh_write_begin +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856b0f31 dev_open +EXPORT_SYMBOL vmlinux 0x85717ef8 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x857b0d92 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x857b9439 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x858843f9 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x85b357b9 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85e9ffea pcim_iounmap +EXPORT_SYMBOL vmlinux 0x8648331e devm_iounmap +EXPORT_SYMBOL vmlinux 0x864a0256 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8658c928 read_cache_page +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86769cac inet_csk_accept +EXPORT_SYMBOL vmlinux 0x8689d841 simple_rmdir +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86d7becb journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86dc6ef9 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x86de55d1 __devm_request_region +EXPORT_SYMBOL vmlinux 0x86df8e67 scsi_put_command +EXPORT_SYMBOL vmlinux 0x86eace7d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x86f23237 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87220961 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x876d3def is_bad_inode +EXPORT_SYMBOL vmlinux 0x877be7f9 netdev_alert +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87970e50 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879c9241 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x87a7c07f sock_no_getname +EXPORT_SYMBOL vmlinux 0x87dd1a7d filemap_flush +EXPORT_SYMBOL vmlinux 0x880fa0a0 simple_fill_super +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88536dc5 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x8869f8f2 iterate_mounts +EXPORT_SYMBOL vmlinux 0x8871bafa phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x887b9470 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x887ed6b2 kernel_bind +EXPORT_SYMBOL vmlinux 0x88834a06 page_readlink +EXPORT_SYMBOL vmlinux 0x888e2c10 pci_pme_active +EXPORT_SYMBOL vmlinux 0x88b8451a qdisc_destroy +EXPORT_SYMBOL vmlinux 0x88baa4e1 secpath_dup +EXPORT_SYMBOL vmlinux 0x88c3c039 journal_check_available_features +EXPORT_SYMBOL vmlinux 0x88cbf6b0 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x88cd025f dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x88d79f42 inode_init_always +EXPORT_SYMBOL vmlinux 0x890222fa security_task_getsecid +EXPORT_SYMBOL vmlinux 0x890ade3f open_exec +EXPORT_SYMBOL vmlinux 0x890dafee ps2_command +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x89226b78 led_set_brightness +EXPORT_SYMBOL vmlinux 0x8922d793 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x893a7e96 dget_parent +EXPORT_SYMBOL vmlinux 0x893e96ac __dquot_free_space +EXPORT_SYMBOL vmlinux 0x89523306 register_quota_format +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x896bcfd6 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x8983ed42 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x89a241a1 __scm_send +EXPORT_SYMBOL vmlinux 0x89ad537b genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89cea273 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x89d03724 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x89d210bb fb_blank +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89e2535a input_unregister_device +EXPORT_SYMBOL vmlinux 0x89e790f5 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x89fccb63 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x89fcec40 arp_create +EXPORT_SYMBOL vmlinux 0x89fe7561 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x8a12dc0b skb_put +EXPORT_SYMBOL vmlinux 0x8a162e78 elv_register_queue +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a2b8220 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a90f2ed scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9e747d i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad0000f input_free_device +EXPORT_SYMBOL vmlinux 0x8ae2645f scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1f0cc9 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x8b2e2fa3 mapping_tagged +EXPORT_SYMBOL vmlinux 0x8b5b5f8c ip_setsockopt +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b69c5db inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8b71f927 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x8b877a8f tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x8b8c8948 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x8bdd348b genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x8bf0f83a tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c3a8817 tcf_em_register +EXPORT_SYMBOL vmlinux 0x8c3e0d67 ppp_input +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c738a07 save_mount_options +EXPORT_SYMBOL vmlinux 0x8cbff95e pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccb2c7e simple_setattr +EXPORT_SYMBOL vmlinux 0x8ce9237c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x8cf1ac02 elevator_change +EXPORT_SYMBOL vmlinux 0x8d064b92 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x8d0837e3 cont_write_begin +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6c2c65 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x8d82b5c4 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x8d891d6a udp_proc_register +EXPORT_SYMBOL vmlinux 0x8d980a7f jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x8dab9f81 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x8db12a1a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x8db1a076 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x8db47e52 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x8dc47dc0 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8dec42b7 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8dfcbbe1 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x8e0ab188 scsi_add_device +EXPORT_SYMBOL vmlinux 0x8e0d0901 md_error +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e11eda2 init_task +EXPORT_SYMBOL vmlinux 0x8e191719 skb_tx_error +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e3b5107 journal_update_format +EXPORT_SYMBOL vmlinux 0x8e56fe06 finish_open +EXPORT_SYMBOL vmlinux 0x8e65465f __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x8e6ef0da idr_get_new +EXPORT_SYMBOL vmlinux 0x8e8ffcbe mb_cache_create +EXPORT_SYMBOL vmlinux 0x8e96f201 dentry_unhash +EXPORT_SYMBOL vmlinux 0x8ea53f22 generic_write_end +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec27fe3 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x8ed7beb4 __seq_open_private +EXPORT_SYMBOL vmlinux 0x8f08612e sock_edemux +EXPORT_SYMBOL vmlinux 0x8f4ea4e4 devm_ioremap +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f938bdd _dev_info +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fddae10 agp_free_memory +EXPORT_SYMBOL vmlinux 0x8fe8e81c macio_request_resource +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9014c80a noop_fsync +EXPORT_SYMBOL vmlinux 0x901f1ed6 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x9027a634 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x9031a021 flush_signals +EXPORT_SYMBOL vmlinux 0x9044adeb pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x904ac455 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x906083e0 phy_attach +EXPORT_SYMBOL vmlinux 0x9067c268 blk_start_queue +EXPORT_SYMBOL vmlinux 0x90702f10 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x90801ecc remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x908054a3 validate_sp +EXPORT_SYMBOL vmlinux 0x9082e734 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x90994d9c kill_litter_super +EXPORT_SYMBOL vmlinux 0x909aa857 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x909d4643 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x90b2d7aa file_sb_list_del +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90e61d4e simple_readpage +EXPORT_SYMBOL vmlinux 0x9113aecd pci_enable_ido +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91468e16 md_check_recovery +EXPORT_SYMBOL vmlinux 0x91522fdb log_start_commit +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x916119f8 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x919054d1 page_address +EXPORT_SYMBOL vmlinux 0x9195c198 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91d2bc3e mmc_detect_change +EXPORT_SYMBOL vmlinux 0x91d88e48 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0x91eb9daa generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x921b3ee6 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x92246393 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x922de982 set_user_nice +EXPORT_SYMBOL vmlinux 0x92311f01 idr_remove +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923bc40e sock_no_connect +EXPORT_SYMBOL vmlinux 0x926a8be5 notify_change +EXPORT_SYMBOL vmlinux 0x926b770b pipe_unlock +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x92916d37 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x9294f19e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x929dedd7 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92cc46e4 of_match_node +EXPORT_SYMBOL vmlinux 0x92d0ea54 of_phy_connect +EXPORT_SYMBOL vmlinux 0x92e256dd write_inode_now +EXPORT_SYMBOL vmlinux 0x92f784dc schedule_work_on +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932afec3 dm_io +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x935708f6 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x93575871 mount_nodev +EXPORT_SYMBOL vmlinux 0x93779b40 pci_release_regions +EXPORT_SYMBOL vmlinux 0x937e3008 mntput +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b92ff2 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x93dfba0f km_policy_expired +EXPORT_SYMBOL vmlinux 0x93e9e7a9 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x93f61ba5 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x940b346d skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x940f7004 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x94121f60 inet6_protos +EXPORT_SYMBOL vmlinux 0x941a3336 force_sig +EXPORT_SYMBOL vmlinux 0x9440774a free_netdev +EXPORT_SYMBOL vmlinux 0x9448f233 neigh_table_init +EXPORT_SYMBOL vmlinux 0x944ef85e of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x946b8ab7 kobject_put +EXPORT_SYMBOL vmlinux 0x946d9c20 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x94879c4e starget_for_each_device +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b03636 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x94b7d2d7 phy_start +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94e26ab3 security_path_rename +EXPORT_SYMBOL vmlinux 0x94fa77bb dev_change_flags +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95566272 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x957dc277 journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x958ead25 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x95ab2981 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x95e109b6 __frontswap_load +EXPORT_SYMBOL vmlinux 0x95e6e500 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x96128bf0 blkdev_put +EXPORT_SYMBOL vmlinux 0x96310afe inet_add_offload +EXPORT_SYMBOL vmlinux 0x964d1402 icmpv6_send +EXPORT_SYMBOL vmlinux 0x964ef4fa sk_receive_skb +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x966745ef fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96ae9bfe vm_map_ram +EXPORT_SYMBOL vmlinux 0x96cb412b blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96ec573a pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x96f7048c inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974afb1e skb_find_text +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976396a7 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x9771f848 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x9793bf92 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b56aef mmc_release_host +EXPORT_SYMBOL vmlinux 0x97b821fd km_policy_notify +EXPORT_SYMBOL vmlinux 0x97e2c39d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x98043bca ata_port_printk +EXPORT_SYMBOL vmlinux 0x981662ff input_set_abs_params +EXPORT_SYMBOL vmlinux 0x982e6c30 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x98353690 do_splice_from +EXPORT_SYMBOL vmlinux 0x9835e14c inet_sendpage +EXPORT_SYMBOL vmlinux 0x9836ac8f pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x983a7560 dcb_getapp +EXPORT_SYMBOL vmlinux 0x9846e68f pci_find_bus +EXPORT_SYMBOL vmlinux 0x9848b79e security_d_instantiate +EXPORT_SYMBOL vmlinux 0x9848c0d6 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986f85b5 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x98757808 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x98830d64 __ps2_command +EXPORT_SYMBOL vmlinux 0x9893c629 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x989a6854 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x989b357b devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x989cd795 find_get_page +EXPORT_SYMBOL vmlinux 0x98ce739a sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x98d3fd2a skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x98e341d8 pci_dev_put +EXPORT_SYMBOL vmlinux 0x98f79839 of_get_next_child +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x99161937 __sb_end_write +EXPORT_SYMBOL vmlinux 0x9933abd7 journal_errno +EXPORT_SYMBOL vmlinux 0x994b35d7 dev_mc_add +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9960d690 key_put +EXPORT_SYMBOL vmlinux 0x99613dac aio_put_req +EXPORT_SYMBOL vmlinux 0x9964ab82 kern_path +EXPORT_SYMBOL vmlinux 0x99658c45 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x99711130 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x998ed993 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c17d80 ipv4_specific +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2bb2e1 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9ac5915d sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x9accdf04 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x9aeef6af ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x9af21145 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x9af4a8ca __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9af5f615 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x9b1098a1 __quota_error +EXPORT_SYMBOL vmlinux 0x9b363359 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6b7505 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x9b6ba63c generic_delete_inode +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b80998a skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x9b8fffcd dquot_enable +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba3de54 nf_register_hook +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc15b10 generic_show_options +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bd9ec24 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x9bdd5da6 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bed4486 nf_log_packet +EXPORT_SYMBOL vmlinux 0x9bf3b69c dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x9c053c34 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x9c199b1f bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x9c8b1847 skb_seq_read +EXPORT_SYMBOL vmlinux 0x9c9139f8 vfs_read +EXPORT_SYMBOL vmlinux 0x9c93789a max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb6b3a2 __bio_clone +EXPORT_SYMBOL vmlinux 0x9cb8745d kmem_cache_create +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc2c8d2 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x9ccb719d mmc_can_discard +EXPORT_SYMBOL vmlinux 0x9cce0e2a rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x9ce388ac task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ce89078 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cf47766 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x9cfa27b0 pci_get_class +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d0a9b37 get_agp_version +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1927ad dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9d1b5e4e blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x9d1dee30 idr_get_next +EXPORT_SYMBOL vmlinux 0x9d23d825 find_or_create_page +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d49d519 try_to_release_page +EXPORT_SYMBOL vmlinux 0x9d564b2b tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6cd744 lookup_one_len +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d833b00 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x9d836c6e seq_open_private +EXPORT_SYMBOL vmlinux 0x9da01691 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9dbf7de1 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x9dbfbd02 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x9dcbfede iget5_locked +EXPORT_SYMBOL vmlinux 0x9de0b0cb __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x9deea8b3 genphy_suspend +EXPORT_SYMBOL vmlinux 0x9e082214 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e426c73 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5f4520 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e67496f sk_dst_check +EXPORT_SYMBOL vmlinux 0x9e69f361 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x9e8b7992 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea5d1fd vfs_llseek +EXPORT_SYMBOL vmlinux 0x9ebb8e5f ps2_end_command +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9ed98a14 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9edf45c9 tcp_check_req +EXPORT_SYMBOL vmlinux 0x9efd277b proto_unregister +EXPORT_SYMBOL vmlinux 0x9f1ff852 user_path_at +EXPORT_SYMBOL vmlinux 0x9f21a745 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0x9f290cf9 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f482b07 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x9f4d2ea9 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x9f61268c dev_printk +EXPORT_SYMBOL vmlinux 0x9f64ee7a unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa02651 d_alloc +EXPORT_SYMBOL vmlinux 0x9fa81548 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fbba3ac path_put +EXPORT_SYMBOL vmlinux 0x9fbc6cf4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x9fc243c2 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x9fcc00f9 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fea5945 blk_end_request +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffdb3cf submit_bio +EXPORT_SYMBOL vmlinux 0xa003037f vm_insert_page +EXPORT_SYMBOL vmlinux 0xa004532d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xa02a88e2 macio_dev_put +EXPORT_SYMBOL vmlinux 0xa04586cd journal_get_write_access +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05a866c scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05c9c8e seq_printf +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa0745ec9 pci_save_state +EXPORT_SYMBOL vmlinux 0xa0748d5c ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa07be83a pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0aaf6b7 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa0aea023 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b28e32 input_register_handle +EXPORT_SYMBOL vmlinux 0xa0b6fc73 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xa0c08bdd agp_find_bridge +EXPORT_SYMBOL vmlinux 0xa0c80cae get_super +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0e5c775 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xa0e86803 touch_atime +EXPORT_SYMBOL vmlinux 0xa0e9492c lease_modify +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10d3713 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xa110c934 ns_capable +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12eb6bb security_path_rmdir +EXPORT_SYMBOL vmlinux 0xa1358fc3 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xa13e056d delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa150e129 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xa15a0cba pipe_lock +EXPORT_SYMBOL vmlinux 0xa15d77e3 giveup_altivec +EXPORT_SYMBOL vmlinux 0xa1823f71 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c98d0e dev_mc_sync +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1d0a914 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xa1dfc6e1 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xa1e1ee6b skb_queue_head +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 0xa22cab5e inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xa2408319 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa263d2c1 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0xa278c125 log_wait_commit +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa284e5e0 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xa29d74c6 eth_header +EXPORT_SYMBOL vmlinux 0xa2a27fde journal_clear_err +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2d17595 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa2d3affe __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xa2da6a4b mpage_writepages +EXPORT_SYMBOL vmlinux 0xa2da73d0 padata_alloc +EXPORT_SYMBOL vmlinux 0xa2e5d33f netif_receive_skb +EXPORT_SYMBOL vmlinux 0xa2e771ab inet_accept +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f93a4f kobject_del +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa3221360 misc_deregister +EXPORT_SYMBOL vmlinux 0xa329d6f7 bioset_free +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3524588 __free_pages +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa37d94fa input_unregister_handler +EXPORT_SYMBOL vmlinux 0xa386d6f2 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa38ea1e6 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b1e737 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3f9442f bio_integrity_split +EXPORT_SYMBOL vmlinux 0xa43a1314 security_mmap_file +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa455dd23 d_genocide +EXPORT_SYMBOL vmlinux 0xa469f12c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xa46faeb7 bdev_read_only +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4780ebb tcf_hash_check +EXPORT_SYMBOL vmlinux 0xa47bdefa setup_new_exec +EXPORT_SYMBOL vmlinux 0xa4999ad1 pci_disable_device +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f82c2b blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xa500095c udp_sendmsg +EXPORT_SYMBOL vmlinux 0xa5103556 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xa539ec3e uart_suspend_port +EXPORT_SYMBOL vmlinux 0xa55247a9 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55401dc put_io_context +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa58d6c3c of_find_property +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5b8ee0d uart_match_port +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5d0ecbe md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xa5dd45f3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xa60362a2 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xa6039164 __sb_start_write +EXPORT_SYMBOL vmlinux 0xa6047049 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xa60bc562 dquot_destroy +EXPORT_SYMBOL vmlinux 0xa60d9205 init_buffer +EXPORT_SYMBOL vmlinux 0xa60f7adf ab3100_event_register +EXPORT_SYMBOL vmlinux 0xa6312538 bdput +EXPORT_SYMBOL vmlinux 0xa63bc277 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xa651f725 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa673fbcc wait_on_sync_kiocb +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 0xa6a11bb9 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xa6b2ddfd ida_simple_get +EXPORT_SYMBOL vmlinux 0xa6e5144f dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xa705701b netif_carrier_on +EXPORT_SYMBOL vmlinux 0xa708913d inet6_getname +EXPORT_SYMBOL vmlinux 0xa71d210b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xa71d990d pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74a7963 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xa75d1f8f pci_request_regions +EXPORT_SYMBOL vmlinux 0xa76daade mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7912f8a blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xa7e143c1 fb_find_mode +EXPORT_SYMBOL vmlinux 0xa7ea8a21 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xa7efed41 sg_miter_start +EXPORT_SYMBOL vmlinux 0xa803f27b pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa827ec77 get_super_thawed +EXPORT_SYMBOL vmlinux 0xa8301949 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xa8413506 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8898e38 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa89bd11c i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xa8dba7f7 serio_reconnect +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90f4312 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa92dd6ec tcf_action_exec +EXPORT_SYMBOL vmlinux 0xa954b952 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa97799d2 send_sig +EXPORT_SYMBOL vmlinux 0xa979de4b filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xa9ccb7b5 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xa9cdcf54 napi_get_frags +EXPORT_SYMBOL vmlinux 0xa9e1e938 user_revoke +EXPORT_SYMBOL vmlinux 0xa9ec2b9a qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xa9effda5 __first_cpu +EXPORT_SYMBOL vmlinux 0xa9f9a1eb agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xaa08cf9c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xaa0c2c3c abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa5f1bff netlink_set_err +EXPORT_SYMBOL vmlinux 0xaa62f588 journal_destroy +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6bcc63 dev_add_offload +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa96de7a register_console +EXPORT_SYMBOL vmlinux 0xaabe7b74 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xaabf0405 tty_kref_put +EXPORT_SYMBOL vmlinux 0xaacb947c scsi_execute_req +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad9ac6b dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0xaaec38da pci_claim_resource +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafde4e2 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab311a00 fsync_bdev +EXPORT_SYMBOL vmlinux 0xab40276a prepare_binprm +EXPORT_SYMBOL vmlinux 0xab447131 dqget +EXPORT_SYMBOL vmlinux 0xab5e12bf take_over_console +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab73e935 sget +EXPORT_SYMBOL vmlinux 0xab857c26 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xabba292d of_match_device +EXPORT_SYMBOL vmlinux 0xabc5fd68 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd69055 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xabe3ec70 security_path_unlink +EXPORT_SYMBOL vmlinux 0xabeb9561 ida_init +EXPORT_SYMBOL vmlinux 0xac014e9f jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac19c5fa jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac35fe2e tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xac429915 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xac4d7673 inet6_bind +EXPORT_SYMBOL vmlinux 0xac52953d twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xac584b04 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac7aa279 get_io_context +EXPORT_SYMBOL vmlinux 0xac951c60 idr_init +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacce0562 kthread_stop +EXPORT_SYMBOL vmlinux 0xacd0a79a of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xacd7cd8a dev_close +EXPORT_SYMBOL vmlinux 0xacde6340 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xace7d68e dquot_drop +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf82ffc of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad10b886 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xad42a368 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xad4ae3a8 set_nlink +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad6b01b7 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad88c727 seq_release +EXPORT_SYMBOL vmlinux 0xada5ec66 mac_find_mode +EXPORT_SYMBOL vmlinux 0xada6311f cad_pid +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc246b0 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xadcf2064 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadf92d74 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xae0b7caf jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xae0d0787 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xae368fff security_path_mkdir +EXPORT_SYMBOL vmlinux 0xae534c71 request_firmware +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae78270d skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xae7d0829 inet_listen +EXPORT_SYMBOL vmlinux 0xaea3865f napi_gro_frags +EXPORT_SYMBOL vmlinux 0xaeadb87d __nlmsg_put +EXPORT_SYMBOL vmlinux 0xaeb05660 ppp_input_error +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaef54176 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf221cd2 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf31a6b4 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xaf342c12 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf56383f wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xaf56b589 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa1efbe mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xafa83a1c tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0xafbb3ed0 i2c_transfer +EXPORT_SYMBOL vmlinux 0xafc6ca90 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00af4f2 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xb0292d16 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06c0833 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xb07ee342 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xb0884d13 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xb0af155c d_move +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eb1330 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xb0eea704 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xb0efa45a dev_addr_flush +EXPORT_SYMBOL vmlinux 0xb0f0fd8c unregister_con_driver +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb11f4e40 phy_stop +EXPORT_SYMBOL vmlinux 0xb14b5074 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xb158e0c8 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb17273ed vfs_symlink +EXPORT_SYMBOL vmlinux 0xb1827881 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb19bd4af igrab +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c52769 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xb1c5add1 fget +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d075cb sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xb1db1bd9 genphy_read_status +EXPORT_SYMBOL vmlinux 0xb1dc064f inet_release +EXPORT_SYMBOL vmlinux 0xb206cd38 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xb20bcd41 block_write_begin +EXPORT_SYMBOL vmlinux 0xb22c7a50 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb23564f9 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xb23877bb generic_setlease +EXPORT_SYMBOL vmlinux 0xb2675eb2 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb28d9286 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xb29c58d1 __lock_buffer +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2bb90f6 pci_dev_get +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d865b7 tcp_poll +EXPORT_SYMBOL vmlinux 0xb2f6f7cc ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xb310b103 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xb31526ee sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb339c422 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xb344728c tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xb3500c1f unregister_md_personality +EXPORT_SYMBOL vmlinux 0xb36c54c5 redraw_screen +EXPORT_SYMBOL vmlinux 0xb3b77216 generic_make_request +EXPORT_SYMBOL vmlinux 0xb3d3a793 irq_to_desc +EXPORT_SYMBOL vmlinux 0xb3d4d18e simple_write_begin +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4178dac led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb430e497 sk_alloc +EXPORT_SYMBOL vmlinux 0xb44df3be usb_get_phy +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb48f913d scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xb4b3e214 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xb4e1ec27 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xb4eee323 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xb50a70a3 key_revoke +EXPORT_SYMBOL vmlinux 0xb5222afd of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xb52480f0 journal_create +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb53b27fe generic_write_checks +EXPORT_SYMBOL vmlinux 0xb54088a3 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5de9953 __brelse +EXPORT_SYMBOL vmlinux 0xb6244d0c icmp_send +EXPORT_SYMBOL vmlinux 0xb63ff732 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb6705214 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb680d542 mdiobus_scan +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 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a33f30 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6e44cbe __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xb6e4cb08 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0xb70990c0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xb71be4af ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xb7332ff0 adb_client_list +EXPORT_SYMBOL vmlinux 0xb73b5fa4 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xb746d78c pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xb74906a7 vga_client_register +EXPORT_SYMBOL vmlinux 0xb74d7629 inet_frags_init +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb757397b mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0xb7824d15 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xb7a3c84d nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7c00f5e blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xb7c050da journal_flush +EXPORT_SYMBOL vmlinux 0xb7e99b66 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8197a33 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8509fdd netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb860d20e elevator_init +EXPORT_SYMBOL vmlinux 0xb87515f2 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xb87ffb64 dentry_open +EXPORT_SYMBOL vmlinux 0xb887f125 netdev_features_change +EXPORT_SYMBOL vmlinux 0xb891e12a iput +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8b269c9 lock_may_write +EXPORT_SYMBOL vmlinux 0xb8b9ab7b read_cache_pages +EXPORT_SYMBOL vmlinux 0xb8c75caf module_refcount +EXPORT_SYMBOL vmlinux 0xb8cf9078 set_device_ro +EXPORT_SYMBOL vmlinux 0xb8d8b323 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f38053 machine_id +EXPORT_SYMBOL vmlinux 0xb91d6560 journal_extend +EXPORT_SYMBOL vmlinux 0xb9257bb4 idr_pre_get +EXPORT_SYMBOL vmlinux 0xb939a28b of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xb948081d mach_chrp +EXPORT_SYMBOL vmlinux 0xb95a2c33 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xb96acd47 generic_readlink +EXPORT_SYMBOL vmlinux 0xb977401e mmc_start_req +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9eb6f59 blk_make_request +EXPORT_SYMBOL vmlinux 0xb9ff284b ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xba0f7e5e led_blink_set +EXPORT_SYMBOL vmlinux 0xba1fd4dc datagram_poll +EXPORT_SYMBOL vmlinux 0xba266fed mpage_readpage +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4f3f99 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xba77a29a backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xba7886f4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xba79348e ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xba7d2d43 fb_pan_display +EXPORT_SYMBOL vmlinux 0xba8ea97f pci_choose_state +EXPORT_SYMBOL vmlinux 0xba94f927 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xba9bb892 d_instantiate +EXPORT_SYMBOL vmlinux 0xbac5db77 sock_create_lite +EXPORT_SYMBOL vmlinux 0xbace47b1 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xbadf2200 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xbaeffa05 qid_eq +EXPORT_SYMBOL vmlinux 0xbaf5a119 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xbafdf872 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0xbb003a42 inode_dio_done +EXPORT_SYMBOL vmlinux 0xbb0bcbf1 kill_fasync +EXPORT_SYMBOL vmlinux 0xbb0c286b md_unregister_thread +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb3e0273 module_layout +EXPORT_SYMBOL vmlinux 0xbb4476e9 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb62500d neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xbb6d1f93 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9bc85f alloc_disk +EXPORT_SYMBOL vmlinux 0xbbbb6530 pci_disable_obff +EXPORT_SYMBOL vmlinux 0xbc056cfd arp_invalidate +EXPORT_SYMBOL vmlinux 0xbc05e6cd unregister_nls +EXPORT_SYMBOL vmlinux 0xbc1694f1 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xbc17f5a9 sk_stream_error +EXPORT_SYMBOL vmlinux 0xbc1c1105 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xbc1e40c7 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xbc30fe64 netif_rx +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc386e61 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc58dace init_special_inode +EXPORT_SYMBOL vmlinux 0xbcac6ad0 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xbcb33025 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xbcbab542 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbceeca29 dcache_readdir +EXPORT_SYMBOL vmlinux 0xbcfdbe21 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xbd1070da bio_endio +EXPORT_SYMBOL vmlinux 0xbd193c02 arp_tbl +EXPORT_SYMBOL vmlinux 0xbd22f460 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xbd2c61c2 unlock_rename +EXPORT_SYMBOL vmlinux 0xbd357270 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xbd4a0c4d mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdda13e6 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xbddd3dd0 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xbde34a84 ip6_route_output +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe0e9be9 skb_pad +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe27139d agp_bind_memory +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe3b4ea1 iget_failed +EXPORT_SYMBOL vmlinux 0xbe50d78b km_query +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe776cc1 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe9c770a find_lock_page +EXPORT_SYMBOL vmlinux 0xbec41252 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xbed05895 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xbed648e4 seq_lseek +EXPORT_SYMBOL vmlinux 0xbedc5d10 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef3edaa security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf7159e6 vfs_create +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf828249 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbf830087 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfcfa5a5 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xbfe74862 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0326079 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xc046272b input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xc05f5994 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xc065bcb3 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc0678b42 may_umount_tree +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc068b88f dev_mc_del +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07d1871 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b86a66 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xc0ca6045 set_security_override +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc0f20022 dump_write +EXPORT_SYMBOL vmlinux 0xc0f45d01 pci_map_rom +EXPORT_SYMBOL vmlinux 0xc0f6a27f free_buffer_head +EXPORT_SYMBOL vmlinux 0xc0f6aecd padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xc10dc475 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xc113edbe key_unlink +EXPORT_SYMBOL vmlinux 0xc11c505d input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc132038a del_gendisk +EXPORT_SYMBOL vmlinux 0xc13d1429 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc1bd4d3f tty_lock +EXPORT_SYMBOL vmlinux 0xc1c1aff5 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1ea5fe7 generic_setxattr +EXPORT_SYMBOL vmlinux 0xc1f119e1 phy_connect +EXPORT_SYMBOL vmlinux 0xc223fe0b journal_forget +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc236bb7d km_state_expired +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc26729ff __napi_complete +EXPORT_SYMBOL vmlinux 0xc276f3c9 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e3c14d skb_checksum +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc3684168 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc380cbf3 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xc3828178 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xc3b653f3 padata_do_serial +EXPORT_SYMBOL vmlinux 0xc3b74977 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xc3c47f79 register_md_personality +EXPORT_SYMBOL vmlinux 0xc3ead8c9 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xc3ebe855 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc434f11a pneigh_lookup +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc458b4a6 file_open_root +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc47efb8b napi_gro_receive +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a6b964 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc4ab9632 elevator_exit +EXPORT_SYMBOL vmlinux 0xc4ba26e1 security_path_chown +EXPORT_SYMBOL vmlinux 0xc4cba447 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xc4f1158e fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xc4fc6472 idr_remove_all +EXPORT_SYMBOL vmlinux 0xc5086d35 idr_destroy +EXPORT_SYMBOL vmlinux 0xc539a97a ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xc53ceee5 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc554d87b do_splice_to +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc575a854 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xc576fab5 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xc5773448 mutex_unlock +EXPORT_SYMBOL vmlinux 0xc586b7f3 journal_start +EXPORT_SYMBOL vmlinux 0xc5943e02 phy_print_status +EXPORT_SYMBOL vmlinux 0xc5c70a81 dma_set_mask +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e5b7d9 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xc5e73ddc netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xc5f64fd3 inet_put_port +EXPORT_SYMBOL vmlinux 0xc604215f vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xc62000c7 eth_header_cache +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6358a50 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc69da8fd generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xc6b145b3 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b26cbe vfs_rename +EXPORT_SYMBOL vmlinux 0xc6b3e49e key_payload_reserve +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d2eb60 get_user_pages +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc715af4b input_set_keycode +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72d80eb of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xc74ab02c i2c_verify_client +EXPORT_SYMBOL vmlinux 0xc7707d38 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc78d9970 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xc795e23e cpu_core_map +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c0c7f4 kmap_to_page +EXPORT_SYMBOL vmlinux 0xc7c8dd3b cdrom_open +EXPORT_SYMBOL vmlinux 0xc7eab6b6 register_con_driver +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7ec9ba8 blk_put_request +EXPORT_SYMBOL vmlinux 0xc7f154e2 ata_link_printk +EXPORT_SYMBOL vmlinux 0xc7fb8f82 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc82a09b0 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85031dc tcp_splice_read +EXPORT_SYMBOL vmlinux 0xc855b3a5 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xc860516a scsi_print_result +EXPORT_SYMBOL vmlinux 0xc8768a9d scsi_execute +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc891562f nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xc8a38956 sync_inode +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ba1c07 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8cc6d79 note_scsi_host +EXPORT_SYMBOL vmlinux 0xc8e18500 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc8fde418 task_nice +EXPORT_SYMBOL vmlinux 0xc91beace __bforget +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc93dc584 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xc9447ae5 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xc95e263b skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xc9735e51 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xc9894630 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xc98fa01e vga_tryget +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a0f051 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xc9b08f9e skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9c99e07 flush_hash_entry +EXPORT_SYMBOL vmlinux 0xc9de4f4d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xc9de649e dquot_commit +EXPORT_SYMBOL vmlinux 0xca0311cb pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xca2f81e1 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xca503c20 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xca58a517 macio_register_driver +EXPORT_SYMBOL vmlinux 0xca5967e3 vm_stat +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca7efa5a sock_release +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca8ea4e5 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9e6608 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xcab4867b mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xcac0af8a netif_device_attach +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcae33f99 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xcaed77fa __scsi_add_device +EXPORT_SYMBOL vmlinux 0xcaf33b02 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb41dbec xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xcb5cabf0 phy_device_create +EXPORT_SYMBOL vmlinux 0xcb60a608 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb9da991 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xcbaa4cb2 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xcbb4e2a1 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbf4c63e __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xcbfb7730 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1eac01 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2c44ce load_nls_default +EXPORT_SYMBOL vmlinux 0xcc2da43e mntget +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc3fac3e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xcc420036 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xcc454d39 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5abaaf max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xcc76287c read_cache_page_async +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc8d4c3d __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xccbfa0ce of_dev_put +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce6a503 blk_init_tags +EXPORT_SYMBOL vmlinux 0xcce995fd __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xccfc0133 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd086e5c ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd6f900c devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xcd7269c9 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xcd86b0da key_task_permission +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd95a02f phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xcd9cfd6f tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xcd9fa3c7 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xcde02d27 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdeb62f6 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce229c3f nla_reserve +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce367bb6 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xce3df95a lock_may_read +EXPORT_SYMBOL vmlinux 0xce3eae4b simple_transaction_set +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce5999d7 proc_symlink +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5c99a7 follow_down +EXPORT_SYMBOL vmlinux 0xce822234 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf4413d9 inet_addr_type +EXPORT_SYMBOL vmlinux 0xcf467681 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xcf5378d8 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xcf6538e2 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xcf671a94 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xcf90f436 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xcf94deab input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xcfb03261 single_release +EXPORT_SYMBOL vmlinux 0xcfb3f42e scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xcfd17d86 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xcfd554fb sg_miter_stop +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd01b037d mii_check_media +EXPORT_SYMBOL vmlinux 0xd04bcc26 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xd05d2d73 ida_get_new +EXPORT_SYMBOL vmlinux 0xd068f223 con_is_bound +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08a4fb4 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xd08d0d34 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0cdbe05 mnt_pin +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0e7c836 dev_printk_emit +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 0xd109a334 qdisc_reset +EXPORT_SYMBOL vmlinux 0xd10c6e3f inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd11d3b05 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd12c4827 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xd14ac2e0 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a84810 register_framebuffer +EXPORT_SYMBOL vmlinux 0xd1b0c46b pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xd1bbe2a9 da903x_query_status +EXPORT_SYMBOL vmlinux 0xd1c6ce6c tty_mutex +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd2010e8e ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xd217121a eth_validate_addr +EXPORT_SYMBOL vmlinux 0xd21e969f __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd24041b1 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25c3923 rtas +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2826bb3 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xd28b0dee inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xd292dd3a ida_remove +EXPORT_SYMBOL vmlinux 0xd2a2be2d udp_ioctl +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2b2bb2c netif_skb_features +EXPORT_SYMBOL vmlinux 0xd2bf094f brioctl_set +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2cf68a4 __lru_cache_add +EXPORT_SYMBOL vmlinux 0xd2cff99c dst_alloc +EXPORT_SYMBOL vmlinux 0xd2de6394 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd2ff94c7 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xd3071c0b seq_release_private +EXPORT_SYMBOL vmlinux 0xd310cd08 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd332fb8e dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xd3d3a477 posix_acl_init +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3ef5610 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xd3f55a5b blk_delay_queue +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd4110203 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd44d101f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xd44d7335 bio_copy_user +EXPORT_SYMBOL vmlinux 0xd48449de blk_get_request +EXPORT_SYMBOL vmlinux 0xd51d0033 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xd54a70a2 from_kqid_munged +EXPORT_SYMBOL vmlinux 0xd555f4af con_copy_unimap +EXPORT_SYMBOL vmlinux 0xd558e0f9 netdev_set_master +EXPORT_SYMBOL vmlinux 0xd5607592 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5e43e3b splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5ea52b3 block_read_full_page +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd6112c99 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6174f52 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63fdb0d mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xd640037e tcp_release_cb +EXPORT_SYMBOL vmlinux 0xd6463818 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64b5f4f tty_port_init +EXPORT_SYMBOL vmlinux 0xd65a9c56 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xd6657b22 udp_seq_open +EXPORT_SYMBOL vmlinux 0xd67106f3 flush_old_exec +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6b8cbc4 netif_device_detach +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e6d2a9 macio_release_resources +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6ffc655 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xd70a0e0b truncate_pagecache +EXPORT_SYMBOL vmlinux 0xd73b4629 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xd75828d9 register_qdisc +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7b248fc journal_revoke +EXPORT_SYMBOL vmlinux 0xd7c4d0ff mdiobus_write +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e7b271 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd80b19e2 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xd82af081 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd830e070 vc_resize +EXPORT_SYMBOL vmlinux 0xd8428e9a agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xd85fcc91 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xd86fbe37 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xd8719fa7 bio_sector_offset +EXPORT_SYMBOL vmlinux 0xd8944991 scsi_host_get +EXPORT_SYMBOL vmlinux 0xd89a6945 udplite_prot +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd89e8f42 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xd8c51219 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8d3f576 make_bad_inode +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8eba0a7 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xd9081da9 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xd90ae59f mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd9186155 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd94cf68e cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xd9637f7c __neigh_create +EXPORT_SYMBOL vmlinux 0xd972cfb3 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98d2edb fasync_helper +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9b7aa61 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d5b629 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xd9d95a34 ata_print_version +EXPORT_SYMBOL vmlinux 0xd9dddd16 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd9e1dd9d security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xd9e61fcb qid_valid +EXPORT_SYMBOL vmlinux 0xd9ec86d5 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xd9f78965 pci_set_ltr +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4e5c4b mmc_can_erase +EXPORT_SYMBOL vmlinux 0xda638662 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xda7c5257 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda857b48 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xda891783 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9bb680 freeze_super +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaae6cc3 follow_down_one +EXPORT_SYMBOL vmlinux 0xdab278d4 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xdab67159 cpufreq_cooling_register +EXPORT_SYMBOL vmlinux 0xdaba39b7 bdi_unregister +EXPORT_SYMBOL vmlinux 0xdabf5530 follow_up +EXPORT_SYMBOL vmlinux 0xdac8f83d mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xdacd76c3 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xdad955ac d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xdadf1b02 tty_unlock +EXPORT_SYMBOL vmlinux 0xdafc941b sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xdb1eb9a5 serio_close +EXPORT_SYMBOL vmlinux 0xdb2fd30f mutex_lock +EXPORT_SYMBOL vmlinux 0xdb3285bb __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xdb35dd8d inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xdb559d6d km_new_mapping +EXPORT_SYMBOL vmlinux 0xdb5e6aae con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6bbdfb neigh_parms_release +EXPORT_SYMBOL vmlinux 0xdb6d8028 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9200f3 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xdba4402d blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xdbad72e1 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xdbb22269 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbc1cd99 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcd85a7 mmc_add_host +EXPORT_SYMBOL vmlinux 0xdbf0a733 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0aba40 read_dev_sector +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43ae81 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xdc4f7a37 of_device_is_available +EXPORT_SYMBOL vmlinux 0xdc6bf435 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc732024 irq_stat +EXPORT_SYMBOL vmlinux 0xdc7f2a26 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xdc92c453 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xdc9377ee i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9b5486 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc9a562 lookup_bdev +EXPORT_SYMBOL vmlinux 0xdcd06c5f gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdcfc9d17 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd14a23e __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xdd1956d6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xdd1b7b26 phy_driver_register +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd3f34c9 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xdd4911c8 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd591eb5 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xdd5c051e posix_lock_file +EXPORT_SYMBOL vmlinux 0xdd79dd9a pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xddba156a inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xddc8c482 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xddfe0545 key_invalidate +EXPORT_SYMBOL vmlinux 0xde0b949a build_skb +EXPORT_SYMBOL vmlinux 0xde18d15b skb_pull +EXPORT_SYMBOL vmlinux 0xde247b73 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde83b25e skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xde898805 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea88fa9 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xdecc1503 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xdf0006d8 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2ff62d bd_set_size +EXPORT_SYMBOL vmlinux 0xdf3e9c75 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xdf4658c8 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf74f430 fb_class +EXPORT_SYMBOL vmlinux 0xdf85be8e tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9d0633 kernel_accept +EXPORT_SYMBOL vmlinux 0xdfa73ded alloc_file +EXPORT_SYMBOL vmlinux 0xdfc1f459 bio_reset +EXPORT_SYMBOL vmlinux 0xdfcdd4fa rfkill_alloc +EXPORT_SYMBOL vmlinux 0xdff1f416 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xdff32410 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xe00b7b27 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xe02c689b ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05607a4 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe05d0db7 console_start +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe091521c km_state_notify +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe0963c91 wake_up_process +EXPORT_SYMBOL vmlinux 0xe096bdf5 release_firmware +EXPORT_SYMBOL vmlinux 0xe099d00f security_path_mknod +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c4a718 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xe0cb7032 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe0e16f3b mmc_can_trim +EXPORT_SYMBOL vmlinux 0xe0e1cf72 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xe104fbaf keyring_search +EXPORT_SYMBOL vmlinux 0xe10bcecb __napi_schedule +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe122e1e6 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xe12f2394 dcb_setapp +EXPORT_SYMBOL vmlinux 0xe1366587 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xe1386245 agp_copy_info +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1811468 dev_activate +EXPORT_SYMBOL vmlinux 0xe18bc000 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe1ae7d21 pci_select_bars +EXPORT_SYMBOL vmlinux 0xe1cb0556 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xe1cf76a6 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe1e9306c bitmap_unplug +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20e90a1 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xe20f1ff7 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe22781fb arp_xmit +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250dc3e agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xe280a33f blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xe2a002c2 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2c08cef __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xe2c08f1e may_umount +EXPORT_SYMBOL vmlinux 0xe2cbacb6 dput +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2df814c find_vma +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2e16df9 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe30af940 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xe313fa92 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xe314ba08 __get_page_tail +EXPORT_SYMBOL vmlinux 0xe32e4c2d neigh_lookup +EXPORT_SYMBOL vmlinux 0xe33d645e agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xe36322d4 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xe385ef1a kobject_init +EXPORT_SYMBOL vmlinux 0xe3b3a1d1 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xe3c71473 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3eed5ba scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xe3fe571d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xe41bded2 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xe425cde4 console_stop +EXPORT_SYMBOL vmlinux 0xe434742b ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xe45adecd xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xe45dea73 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xe45e21d4 tcf_hash_release +EXPORT_SYMBOL vmlinux 0xe471ed9c skb_append +EXPORT_SYMBOL vmlinux 0xe4743478 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4d225ef tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xe4ebb990 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe50de31d nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5268c8b set_blocksize +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5495398 md_flush_request +EXPORT_SYMBOL vmlinux 0xe5581f35 wireless_send_event +EXPORT_SYMBOL vmlinux 0xe5586595 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xe5600d68 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57cd743 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5ab21cb default_llseek +EXPORT_SYMBOL vmlinux 0xe5bac1c2 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5e00645 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe5ec28ca cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe600f782 nonseekable_open +EXPORT_SYMBOL vmlinux 0xe605a10c eth_header_parse +EXPORT_SYMBOL vmlinux 0xe6375931 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xe643dcd2 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xe654ba59 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xe6570a7b path_is_under +EXPORT_SYMBOL vmlinux 0xe65c456e alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe65e9bd7 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe6750386 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xe68b808b journal_init_dev +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a046d bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xe6c8523b __register_binfmt +EXPORT_SYMBOL vmlinux 0xe6d1496c in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6e7fe0f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6ed8394 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe719ff9e kern_unmount +EXPORT_SYMBOL vmlinux 0xe72b010f __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xe72b3ac8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xe73018cf block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0xe7528fca bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xe75a0cb6 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xe76c8a58 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xe773166d agp_backend_release +EXPORT_SYMBOL vmlinux 0xe77ca563 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xe7a18cf0 generic_file_open +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a8f310 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7c0c296 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7fec987 dquot_file_open +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe81dd64b skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xe828a05d journal_wipe +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe8381346 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0xe8565c63 padata_start +EXPORT_SYMBOL vmlinux 0xe8583487 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xe86944c0 kdb_current_task +EXPORT_SYMBOL vmlinux 0xe882b71d skb_trim +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8beedab agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xe8c5b6e7 __find_get_block +EXPORT_SYMBOL vmlinux 0xe8c66189 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xe8fc5f6a pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9312c6e padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xe932c519 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xe936851d soft_cursor +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9715afc tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xe99257a3 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xe9a34e47 clear_inode +EXPORT_SYMBOL vmlinux 0xe9ae5db1 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xe9e96b3e bio_unmap_user +EXPORT_SYMBOL vmlinux 0xea02839a pci_enable_device +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea1b1735 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xea2c28fe dquot_initialize +EXPORT_SYMBOL vmlinux 0xea616a0e invalidate_partition +EXPORT_SYMBOL vmlinux 0xea6f2440 security_inode_permission +EXPORT_SYMBOL vmlinux 0xea70012c nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7d947f ppp_unit_number +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeab6e333 thaw_bdev +EXPORT_SYMBOL vmlinux 0xeadf1a41 generic_write_sync +EXPORT_SYMBOL vmlinux 0xeae503e9 release_pages +EXPORT_SYMBOL vmlinux 0xeb0eabea blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xeb107da2 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xeb178c85 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb467060 noop_qdisc +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb837607 sk_run_filter +EXPORT_SYMBOL vmlinux 0xeb84160c dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xeb87958d mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xeb880868 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xeb99d3b9 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebd7816c ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebde6a20 dev_emerg +EXPORT_SYMBOL vmlinux 0xebe0f3aa tty_register_driver +EXPORT_SYMBOL vmlinux 0xebf0a892 md_register_thread +EXPORT_SYMBOL vmlinux 0xec0b706c input_register_device +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec511f75 check_disk_change +EXPORT_SYMBOL vmlinux 0xec5b51d6 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xec6d822c pci_read_vpd +EXPORT_SYMBOL vmlinux 0xec6dd83e mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xec756a91 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xec857bfa of_phy_attach +EXPORT_SYMBOL vmlinux 0xecd67cec schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xecd9ffee write_one_page +EXPORT_SYMBOL vmlinux 0xecdb8b91 d_splice_alias +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecea3f3a xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xecf2efda ip_fragment +EXPORT_SYMBOL vmlinux 0xecf5c5a7 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xecfd0d6d dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xed07b63b dev_get_stats +EXPORT_SYMBOL vmlinux 0xed25116b lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xed252cc5 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xed3e692f bdget_disk +EXPORT_SYMBOL vmlinux 0xed405cb1 dma_pool_create +EXPORT_SYMBOL vmlinux 0xed670937 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedaabe6c scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xedb8e710 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xede27e3e tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xedea9a07 blk_free_tags +EXPORT_SYMBOL vmlinux 0xedfcc98e dev_uc_sync +EXPORT_SYMBOL vmlinux 0xedfd1fac of_get_parent +EXPORT_SYMBOL vmlinux 0xee2bc41a dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee4c03e1 mdiobus_read +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee69df0a dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xee6f85db pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xee8b4df3 arp_send +EXPORT_SYMBOL vmlinux 0xee95a2ed posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xeea3483e tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeef280b1 neigh_for_each +EXPORT_SYMBOL vmlinux 0xeef4715c powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xeefda52b elv_rb_add +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef27b194 mach_powermac +EXPORT_SYMBOL vmlinux 0xef7d8fe6 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xef931bf1 of_device_unregister +EXPORT_SYMBOL vmlinux 0xefa1b00a fb_set_suspend +EXPORT_SYMBOL vmlinux 0xefb3c6ee macio_dev_get +EXPORT_SYMBOL vmlinux 0xefd215be dev_crit +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 0xf034afcb stop_tty +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf07315c6 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xf08993c7 __destroy_inode +EXPORT_SYMBOL vmlinux 0xf0af7f64 simple_link +EXPORT_SYMBOL vmlinux 0xf0d09204 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xf0d86c1a skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xf0db250c cpufreq_cooling_unregister +EXPORT_SYMBOL vmlinux 0xf0e4c77c netdev_printk +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf122231e drop_super +EXPORT_SYMBOL vmlinux 0xf13b35a0 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf140632e alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0xf141bf26 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xf1683055 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1aee7ad nf_ct_attach +EXPORT_SYMBOL vmlinux 0xf1b4eed3 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xf1bb8fef seq_read +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2552651 dm_put_device +EXPORT_SYMBOL vmlinux 0xf2c19494 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xf3061a90 kobject_add +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3211832 ps2_drain +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf341e025 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3582a9a pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xf367b09d filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3ac81c3 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xf3b2941a ip6_xmit +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3fa4d10 mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0xf3fb5c49 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xf4023be6 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xf4079999 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf45a4e52 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xf45c9179 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c7340f pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xf4c91d2f input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xf4d94a61 tc_classify +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f78fe9 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xf4f96881 mnt_unpin +EXPORT_SYMBOL vmlinux 0xf51ef59b simple_open +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf5237b9f generic_block_bmap +EXPORT_SYMBOL vmlinux 0xf5265bcb netif_napi_add +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf54d0278 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xf57b49b8 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf58f8b97 d_delete +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5ca35f1 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xf5ce485b bioset_create +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e4ea56 sock_no_poll +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5eb925b generic_permission +EXPORT_SYMBOL vmlinux 0xf5f3330b generic_file_fsync +EXPORT_SYMBOL vmlinux 0xf5f69f2b __ip_dev_find +EXPORT_SYMBOL vmlinux 0xf5fb6d99 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xf5fc6514 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf621ab13 fd_install +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf639c9b2 complete_request_key +EXPORT_SYMBOL vmlinux 0xf64ba482 pci_iounmap +EXPORT_SYMBOL vmlinux 0xf67df7dc page_put_link +EXPORT_SYMBOL vmlinux 0xf67f4ed0 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xf6afacd2 init_net +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6bd3bfa devm_usb_get_phy +EXPORT_SYMBOL vmlinux 0xf6e72991 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf706eed0 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf710460a seq_puts +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf72714d6 elv_abort_queue +EXPORT_SYMBOL vmlinux 0xf738f83d swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xf73a0910 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75ee3ab of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7b12aee __next_cpu +EXPORT_SYMBOL vmlinux 0xf7b35926 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xf7c0f802 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xf7d51e13 devm_free_irq +EXPORT_SYMBOL vmlinux 0xf7ddefbb consume_skb +EXPORT_SYMBOL vmlinux 0xf7e44d31 padata_free +EXPORT_SYMBOL vmlinux 0xf7e8cb9d seq_open +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81ce570 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xf82a9e86 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf876848b update_devfreq +EXPORT_SYMBOL vmlinux 0xf890d331 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xf89800d9 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xf8a3da92 textsearch_destroy +EXPORT_SYMBOL vmlinux 0xf8a413fa __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xf8aa2590 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xf8acb1e2 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xf8b2fe8e uart_get_divisor +EXPORT_SYMBOL vmlinux 0xf8bb416e unregister_quota_format +EXPORT_SYMBOL vmlinux 0xf8cbbb7e journal_restart +EXPORT_SYMBOL vmlinux 0xf8f83814 seq_write +EXPORT_SYMBOL vmlinux 0xf918837e tcp_child_process +EXPORT_SYMBOL vmlinux 0xf9258fbe find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf945a8e2 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xf977850d __elv_add_request +EXPORT_SYMBOL vmlinux 0xf983075b eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xf9860493 vfs_write +EXPORT_SYMBOL vmlinux 0xf99394f7 cdev_add +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ab9283 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xf9ba1537 empty_aops +EXPORT_SYMBOL vmlinux 0xf9bf2d8b vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xf9dcb640 __netif_schedule +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa011482 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0xfa1537dd bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xfa1655ae genphy_update_link +EXPORT_SYMBOL vmlinux 0xfa1e513a __ip_select_ident +EXPORT_SYMBOL vmlinux 0xfa3c53c2 mmc_card_awake +EXPORT_SYMBOL vmlinux 0xfa49a8ed pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xfa9ab82f sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xfaaf46b6 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xfab9e97c scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc1ff3 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf8da5b agp_bridge +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb060d0c unbind_con_driver +EXPORT_SYMBOL vmlinux 0xfb073abc sk_reset_txq +EXPORT_SYMBOL vmlinux 0xfb0edae5 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xfb2f3dcb uart_update_timeout +EXPORT_SYMBOL vmlinux 0xfb327549 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xfb379e83 set_anon_super +EXPORT_SYMBOL vmlinux 0xfb4fe485 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xfb5632d8 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb81deba dm_register_target +EXPORT_SYMBOL vmlinux 0xfb855c61 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xfb87680e bmap +EXPORT_SYMBOL vmlinux 0xfb93367d dquot_acquire +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc5876a mii_link_ok +EXPORT_SYMBOL vmlinux 0xfbe2d061 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xfbf3d060 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0cf803 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xfc0d1b30 giveup_fpu +EXPORT_SYMBOL vmlinux 0xfc1bcc3a dst_destroy +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc4a0c1d pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc79a244 kmap_high +EXPORT_SYMBOL vmlinux 0xfca5d615 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfce15b7f __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd1333bf dev_trans_start +EXPORT_SYMBOL vmlinux 0xfd23d4af flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xfd2f5520 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xfd328bca jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xfd3bb05d ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xfd54771e kern_path_create +EXPORT_SYMBOL vmlinux 0xfd5ad3c7 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd65a0c6 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xfd6ac61a dev_err +EXPORT_SYMBOL vmlinux 0xfd7351bf migrate_page +EXPORT_SYMBOL vmlinux 0xfd8f1cbc of_get_min_tck +EXPORT_SYMBOL vmlinux 0xfd9160f2 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xfd920b85 scsi_get_command +EXPORT_SYMBOL vmlinux 0xfdb4fee8 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdc22dfb account_page_writeback +EXPORT_SYMBOL vmlinux 0xfdcf7cfd pci_enable_obff +EXPORT_SYMBOL vmlinux 0xfdecdc07 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdf4cdc4 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe06b334 netlink_ack +EXPORT_SYMBOL vmlinux 0xfe15a2ba inet6_ioctl +EXPORT_SYMBOL vmlinux 0xfe344541 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xfe4b6c5f vm_mmap +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6764af thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7f49dd vfs_follow_link +EXPORT_SYMBOL vmlinux 0xfea02469 d_alloc_name +EXPORT_SYMBOL vmlinux 0xfebfc2e0 dev_set_group +EXPORT_SYMBOL vmlinux 0xfedc79a2 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xfee28952 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0xfef7e9aa mfd_add_devices +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xfefbdb18 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff20c15b udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xff2d99c3 pci_disable_ido +EXPORT_SYMBOL vmlinux 0xff36e8a2 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xff63692c pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc37f6c tty_register_device +EXPORT_SYMBOL vmlinux 0xffcf800c remove_arg_zero +EXPORT_SYMBOL vmlinux 0xffd305ee fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x5bdc0794 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x5e928979 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa28ee9d8 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xa409460f af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc096e183 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xe0c81a8f af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf5a77d91 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc66d1ddd async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x887ff169 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc548400f async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x58d3fb26 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7496bf27 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x1a8cc899 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9b6f4a1c async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa69fcfa0 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb72cf058 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x21a42aff async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xfe4971d9 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x77ed9488 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xf126d0cf cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xf1bd94ff cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0d92c41b cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x3ca2ea8d cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x6425ec18 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x6abf04b6 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x88dd0f63 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8b174568 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x8c05e2f3 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xabb30108 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb7d1558c cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xfda2cded cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xaf71d669 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 0xb98d13b8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xa6685178 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xb2f6458d xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0786c5a5 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0912882a ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0f34958d ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x193b6c7a ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1d754ff9 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x21b32c21 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3fcbb040 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x47d9999d ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x501400db ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x52f647a0 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58e91917 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5be41cf5 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x62b3ca77 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa1974719 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa2f9dce6 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb63bedd4 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbfa0af32 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xef6db867 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x8e292a1a __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x5cf50f9e 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 0x0635ab4d bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0e73d5ce bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x10d8939c bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x145684ab bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1dd59cdc bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2fbbaac6 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x42073879 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4695f995 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x57653bcb bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x60c67b00 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7ac11480 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7cd515db bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x84d22708 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fb649d2 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9b6ff097 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc6950e06 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf6f42ffc bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x015058da btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x362b98da btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4fb5a080 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x56f52a1d btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x61673933 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6ebd8db7 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9e3b9521 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa82b5f9c btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd5daab05 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe89176a4 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x05dc29e5 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0d9fed5e edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e476000 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2152fe92 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x24bc06c9 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x27087842 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x30ef3279 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3149cc2e edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c545a32 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5b0fb336 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x66426183 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7c013bed edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7f62b8d7 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x88e7d2a6 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8cbf4e8f edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xae9e8185 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb085a977 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb5510af5 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb8fe8d1 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd12ca98 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf056c4cb edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf22ee21e edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x6ab9f39e bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xaeebc5a9 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x23f90141 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x7a2d7f8e __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x762318ff drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xfacb1a33 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8b5d830d ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x9574009f ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xaaa3751c ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x18a5febc __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e1da58a hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3ba33d2e hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3c51d10e hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x453696ca hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47865ecc hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x53e739d4 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5651ab14 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58d83a7f hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x59b4bbda hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x69ef77ae hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6b1700d0 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6cb50cd4 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7891553f hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7ba78efe hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e08d2f0 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x90eaaafd hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x970b74e5 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9cdc72ab hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xabdf64dc hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4015f0c hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb5d6d561 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc0e14b83 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcf4c7530 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd214cdf8 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd283887b hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdac61e79 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdec09fb9 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe086fcdc hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4e56267 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf0b79ae9 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xe08f92e2 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2806cc9c roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x954751dc roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc3e2b42b roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x03740534 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x29407985 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7438f764 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x76153075 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa81cf0d0 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd906a6da sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0f91c8d3 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x7ad81146 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xcef620e0 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xf830ff55 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3c23dad8 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x409bc893 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6930a2a0 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x75f7712d hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x82f278ae hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x94be0468 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9df1e2bb hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xacf684b0 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc6d7a7ed hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xde0c084a hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdfaa6c9e hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfa80511d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfaa64a38 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0e7ef4ac pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1fc02b74 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x681b985d pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8408db2b pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8cd7dd28 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x97b339b1 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa1c2418e pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaa66995e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbdfdf879 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe98dca1b pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfde1c382 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x255d4502 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2b224704 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2f149263 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2f7b3d49 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x32dab862 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 0x674d2a81 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x72512848 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd05e98ec i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd693bcbf i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x3e262a49 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x5b0c4ee9 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x24208a63 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc46cb8fa i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2110269f ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x26ce9843 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3b73b1ad ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5432328e ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x58c1a816 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7c899467 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x818e2608 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe0c13beb ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe927aa21 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x084c0e60 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0afed1b5 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x23aebaef adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2e11a452 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5701e9c3 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x59e33cb7 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6684700b adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6aa0cb6f adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x888ae265 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb8b68718 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc65941fa adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe3d72b39 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x019e465c iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x04cd50f5 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27ca0be2 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x31d092b8 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x38f0ea63 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3ff2e921 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5049998a iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50d4be8a iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61a62e22 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61d9a75e iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x62af00cc iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6470134a iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7ee6ced9 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x89eb8a66 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa638da03 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa68ff023 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa96ffc9b iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbba712ba iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc2eb92ed iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd0b40e39 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd63fd2bd iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed7d7372 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf2b5a571 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfa2de18e iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x6fe8a2f4 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x0e85b3b4 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 0xa62acb3a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa9d9a18e cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xff4d5081 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x29a9a4de wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2f72d9df wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x32ccc485 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x50517fb1 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x602bde00 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7a6bee8e wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x89167903 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9d79ac69 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xafba2f0b wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xca8724bd wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe3d8d941 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf009d981 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2b8409e1 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3b67c9ea ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6b4a7348 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x959b356a ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x959ef941 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdf68e6ce ipack_device_register +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 0x0530f2cc gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x07e0587d gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0bd0714c gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x165e13e3 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x17cde467 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x25442e69 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3439fa3c gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x407eac9d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4dd19551 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x512c189a gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7ca708ed gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8ffd9cb2 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x95f74efa gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xafe36f84 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc024862d gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe92240dd gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfc2eb45d gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x19f175a6 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x32b83541 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4310b077 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4fb76195 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x543e7849 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x58f04359 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaed49127 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaf15726f wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcbecf088 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcf3f5f4e wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe94ebc4a wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7e8f3492 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xaba88ce2 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcfa01a18 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd6fa4588 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2b16291c dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x26fe70a4 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x8e9a409c 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 0x0238cd4d dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x50667427 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 0x99e9a54b dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa36954ee dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xca669d7c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd0d8e248 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 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 0x550391c6 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x67521436 dm_tm_create_with_sm +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 0x7dc38fc6 dm_tm_open_with_sm +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 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x888f3f04 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x5844c6bc md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x5f9b3a9a md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0f7ab839 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x39bd9811 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x599ccc67 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7a9aa833 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x82b2bba2 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x898c7e0b saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8c4cbe77 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x94e317d0 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc55ae8b2 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc7eb871f saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x30a947d5 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x38ad5519 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4831abef saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x495137b5 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x688d9f04 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8d38489c saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb326c3df saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x011f7564 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0af355ee sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1055e53d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x22b80a8c smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2c5ee776 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5c2a4660 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x61f53ba0 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x80aad38c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x80b779c6 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x856518ce smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x93e0dfe8 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x987a8466 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c6a8d34 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa4c341d9 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe02e6a5b smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe6172cf2 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfd6d69a8 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x6c7e0a41 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xa40eb1dd cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x03283b55 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x068c1e48 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0c62f62a mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x10421ea4 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1f08d3db mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x34619e06 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x532c0a64 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5c66c71b mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x784a7927 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x859973a3 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9c789d77 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xba1538ba mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc6b984fe mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe05803f1 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe8182189 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xea0e7070 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xeecacd2d mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0a8c6a72 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x62c764ec saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa0ab7ddc saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc68a3399 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd85ce678 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3b7873d0 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x56d199e3 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6ea36d74 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9640e59b ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9670f25e ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe3377706 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfc75a189 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x1de00fe2 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xeaa278c4 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x007d6fc6 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09e3d7a5 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x12a7c4dc ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4d696fa2 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5eb596ed rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x66f1a5cd rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6c2d6852 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x85640544 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x85b7f682 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaa217aba ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbdf2186b rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xca4bfd6e rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdc42e364 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf6c81f19 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xc55def0b mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x335ac907 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xe49db5ea mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x53df110f tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xad244c1d tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x3c6ff9fc tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x73ddd9a4 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x011c58dc tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x620a9cf5 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xd26aeb6c tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x4c4189e4 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x771e1df1 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x9ec3e136 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x08f9a335 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x13da2090 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1fef0e42 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x34e9c4fc cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x39df81d8 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x55a54ae7 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5bb8eba4 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6fb0b188 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ddec78f cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8c7798cc cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa04363db cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb52bb90f cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbe32515e cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc7da1e6d cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc860e9bd cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd90bf0aa cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe459291d cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe9a89fa1 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf8d88a12 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xe68e9958 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x606c8fa6 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x09f7d4b9 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x390aa507 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3d3d877a em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3e45544a em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4e462d54 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x69ded6c4 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d79ab65 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7101586c em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7a7929d0 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x83896fad em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x909012f7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa0e64ad8 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xde5ed230 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe2406d24 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0cbac171 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x40632787 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4b1955f7 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4e527192 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5d9d3491 v4l_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9b7382a0 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa4432558 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa6002009 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xbac1f0ec v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xcdbfb93a v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xfed9f4bf v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x1862e00a v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x4b5c2d33 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x7a0de53a v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa72d64e6 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x036483f3 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1ad94813 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45d9f01b v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4fb95f7e v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6969606f v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x72eb04d7 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x755fbf70 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x914d3cc7 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x918f5b35 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x974b9088 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xae83b5b5 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf6eef2fa v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf821832a v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x018a750f videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1291cedc videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x166a495d videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1ef7c662 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3de291a1 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3e851cf9 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4eed5770 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5ccce79c videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f59f442 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x64c5b0c9 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x726c14cb videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7981a2f8 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x80007d60 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9176a1c6 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9ac0eb0b videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa724f083 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xade064c7 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbd660c8a videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc56f2d1f videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcf2c40b4 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef76a4ba videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xefcd4599 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf25c725b videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf8c96f8a videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x3e99a508 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x795172d5 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe385168b videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xf5cff5be videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x05e658fb videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x07cd42ec videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4566fff6 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x854887f1 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8ad7b7a4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8c6a59f0 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9710814b videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe4095383 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe5d06a7a videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x4a3cc32e videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x71d26fe3 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd74d4c4c videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x160e7bad vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1972b9b2 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1b27ff28 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x26fbdbcc vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2a418f5c vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x413c564c vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x44f53db5 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x463e82bb vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4b2bb3f7 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4dd5f866 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51b5b39c vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5217ebf9 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5c6c8785 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5d06a349 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f5d90eb vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60244dd6 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x618eb086 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d00ea98 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7532741b vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7730633e vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x87089eb1 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8f735e1b vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x95325bdf vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9dc438bf vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb710e916 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb7d6afe2 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb891c29c vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbfa2ef3e vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc21f190f vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6bd21a6 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd60d85cf vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd96a1555 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdc1471e1 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf2c1fdbc vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3ede5211 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x9ec4f6cd vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x2997f29a vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x3ed55882 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x47060513 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x9423f6c0 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x7f14b716 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x12246449 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x16f3ad80 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1906dbd0 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31275df3 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3dc463a5 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f41b71e v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x51310a0d v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5ab07152 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x63d93797 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x71159cda v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x757acc08 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8f87e3d5 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94edd54b v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x99af82a6 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9bc3d565 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa65508f4 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb7555e47 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbe9124b1 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdf89cd79 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xea253e71 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeda21ca1 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf28bd0d2 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1a8d26ce i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x9a4aacae i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xad3f029d i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xc918de48 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xcc8aabcc i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xeb4bc092 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf630945d i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xfb1ba2b8 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x3b4cbe81 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x577e194a pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xbfda91ab pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc0a87870 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x94b4a138 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xa831f48f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xf7fef071 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x24e790ff lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x399d9f38 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4600698c lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x84232e00 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc3b48880 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xef5c6aef lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf917b338 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x073f4d68 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1530b800 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x301d89ba mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4625fb47 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x558af320 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb86c8b72 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x236e66d1 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2862d3a8 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3c424783 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x578c3b1e pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7b782408 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x96e2455b pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa2568355 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa594a673 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc3e71fb4 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcc8df7e6 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdfeadd65 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x10b2a6a4 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x89368661 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x63450cf3 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x98c76c75 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc3c539a1 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd05794fe pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe13bd724 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x08b96fce rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0e023366 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1a2c5695 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1e8623ab rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x31aef6bc rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x56dd57bd rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x59a721ff rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x60e68490 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6fbf9b64 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8d782ca9 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8dcd090f rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9b4ed266 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3fdedd9 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5c449d9 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb12238a7 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb76e4e3a rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbfff9284 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc2b65d8d rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd0e978aa rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd7498862 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdef93b09 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0631e934 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x079370b1 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x123d1784 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x402ddbf2 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x566e8f70 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x081b0ad5 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x99e25b5d tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9e6d9dc2 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xacd1ba97 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 0x036c7e9e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x562c0488 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7ed3657b cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xad1588ee cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf7df8a25 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 0x3e40df38 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x42f77610 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x434e993e enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6d303229 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x70f5bdfd enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x760bb753 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xee0818d4 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x23976543 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x32c0169c lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x481f45ac lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7b23cd25 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x97ee7ae2 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9f683a91 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa8bc266c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd2985b5a lis3_dev +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 0x110dd9e9 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xd90325c0 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x200a6c7c sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3f9ea5ba sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x63bc3b24 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f2a2601 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x89b9a24f sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x971c31a0 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa43146f8 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa63a0e25 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc315140e sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5b630b76 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x636529e1 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x702a992d sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe42ae6ac sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfa0f0c0e sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfd124f8e sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x028100d1 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x5d651a64 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xfbff687d cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2fc4e3d0 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7f03bbc1 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc0cb8eab cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x247b3707 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x1ecb7b35 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x784c0fd9 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd791e0a4 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xaffeee76 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03c39fcd mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x09c450ef kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x14b056e7 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1501d033 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15bacf32 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2190a794 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x24e1cee2 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2a87fec5 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3335d8fb mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x418ce8ea mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x52db7ac5 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59f6163a unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5dbd2c9c mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x622d9487 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6c889b71 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x725efc6f mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7f088828 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x813637c0 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x898a3d29 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8ec1944f mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x91bfc213 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9e1a70f7 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9e2f3d18 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9ed5863e mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa28194c7 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa3c245c4 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa3c53f08 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaef1408b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb06188b9 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb621fc75 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbaba153c mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbc31869e mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc5ecae9f mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xca9b6f30 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xceb05040 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd591043f put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc273fb3 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd698bb6 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xee400314 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf942cef7 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfa880b55 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3ee03c0b del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8555686e deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8c7f9129 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb2ce2ce4 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe618e1d4 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x206beaac nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x2ae5ca45 nand_update_bbt +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xa90bf57f nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x6bebaabe sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x4add4772 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x731f6c5c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x18f85c34 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x191bb571 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x208e69a1 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3ca23cd4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42c49012 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4b5f5b40 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5d5a9612 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x630c231b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x635f485e ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x866e4ab0 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8be3ac6d ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbd045b41 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd48c4541 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 0x394624fd alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7fca3adb free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9253e4ca c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb7a62db4 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc62a6726 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe82c3594 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0cc1ac83 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x13514f09 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25fea289 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x27c961ce alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4efcd3dd alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6e56b045 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x825057c8 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x82a11076 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x851a48e5 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9904aa21 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe23aab4d can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf4c6c248 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1f57b28a alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x32481a24 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x80172959 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb4c1ee52 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x23104592 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc5e4ff9c register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd50d4dfc alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe0a52b6e unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x360ada66 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x370c6232 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x7078a87e macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xb78e2345 macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xdfaddd86 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xe6ed31db macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xfea98833 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0feac134 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13407b00 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a4f02cc mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e668f88 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bb08018 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x307989e0 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x316909cd mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31c091fd __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35332990 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35d788ec mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3678f38e mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a6161bf mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bc06395 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44a0b5a1 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48808844 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f9394c7 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50ab7063 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x537d9b91 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59d59947 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d1abb57 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e77ee39 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ef4858f mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63245b30 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63fe6bf8 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64853b3a mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64c6ef9d mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x672f0013 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x674d059f mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6881280b mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x699781f1 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x707d46f5 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7baeb7ae mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ceaa69b mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7dbdb9d1 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x808a3255 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x813a9eab mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a27b677 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ec0e1cb mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9147d274 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91b17903 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92a081bd mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94c221aa mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95302548 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a1f8c46 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ad82c7a mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ceb45e0 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d3d208c mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f2bb97f mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2601ca7 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa28908c6 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa38bcbdb mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5140e0e mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa53947a8 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5d29338 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa74f283d mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa90dff8f mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad616d7e mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaea9362c mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb967aa8 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe00df25 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2914c25 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2f0ee0c mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9e5ff8a mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd057b00a mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc78f486 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4ef06a0 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe503071a mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeaa3a1dc mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedf0e588 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0174941 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf02e7b2e mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf17a3fe9 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf416df75 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf53344e5 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7717a17 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf97e1d17 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd4bd5ce mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd9c9084 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x36e0c4e4 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x511911f7 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x839cbbc1 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xdd8d5b02 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe833322e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x123cd44d macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x063c8a15 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x17f3a646 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8f19f45c usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9d41ad8c usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2bd5c6bf cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x39137754 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4e205a33 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5e397ca1 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x67e3cca7 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe5d88134 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x29dcffa4 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3fc8a5ba generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x852bd246 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb557dd94 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xce063888 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xdb30e224 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x059c3eb2 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1375ca1e usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1b3c588f usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x26b9af16 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c2bd0f4 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x400867b5 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x40e9da7b usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41d3d1b2 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x44a50845 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4c56512c usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x56663666 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a4283c8 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e2e6a8b usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8cccd174 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8f009b61 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9bc140dc usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9de6d352 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa85ab1b4 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab04fe6f usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb8343502 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc9aebacc usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe74acb5e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe867a090 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xea78c5b1 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf25d6b08 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf3cefc00 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf9deb507 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfa042c77 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfaa509d1 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0b04636f i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1a893b5c i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x24e0eb30 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2e84b186 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x38daa3b9 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3a8ef1b3 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3d0b81d8 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3e51cd0e i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x419acf15 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4f46cda4 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x566779d5 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x74fe5d91 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x80be4c95 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa1acef2c i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf12c00a2 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf2edb22e i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x04ebcdf9 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x246e3a3b il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2dda5121 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2e8e01e0 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x60b47304 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xffda91bc il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x07d8e57e iwl_grab_nic_access_silent +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x17114061 iwl_test_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2575f012 _iwl_write_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3347d679 _iwl_read_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x36fbcae5 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x44e3535e iwl_release_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x49aa530a iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x545dde24 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x68636755 iwl_clear_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x75b9fd89 iwl_set_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7bd39314 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7ee615c2 iwl_test_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7eea5fae iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x86d0bc26 iwl_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x894c753c iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a5739c6 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8b474369 iwl_test_parse +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8b7199a9 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c8ac3e2 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8ec709e9 iwl_set_bits_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8f769df8 iwl_test_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x90858e3c __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x95d6f74a iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa891066a iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb438e959 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbb737f28 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc48c17c7 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc686f02a __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcfc58f2c iwl_write_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xddb7d595 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe28e6585 iwl_test_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe77182d8 iwl_test_handle_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf0bd4176 iwl_read_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf7e3e532 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf8f2a9fa __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x207a517c lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3726bf45 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x429bf058 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x584962e9 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x59b96f4f lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x66a714e9 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x752599e4 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x900503ea lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x912b4787 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa69535b2 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd170eafa lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd9a359e6 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdb8d898a lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe8ae275b lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf3a46824 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf6d3c2dd lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0ef34dae lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x120fc250 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x127531f7 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4bbc5361 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4f1ca6e8 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x57b10d5b lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xacbcc19e lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc286408b lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x36576cbe if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xbee32c93 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x15429916 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18e1a994 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x332752f6 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x493b2e4e mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5d937939 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8459b87d mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x91e77272 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc2562858 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcda37b3c mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd3be6565 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd90e246f mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe699d002 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe6a790a6 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe9656166 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x042b1fa8 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x09304315 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x12fe2754 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x230adeaf p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4af7c1bb p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5358ef0d p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x98a9e791 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb8f2088d p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb90660ce p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00116b25 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x08f08851 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x164394bb rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16959174 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x16d93941 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1c2b3cef rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1ebf35fe rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a973f86 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33615259 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33ac29e9 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3478ebf3 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a3e13b6 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3b3a642c rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c9cd71f rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x441d1e91 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x45e7ce99 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a91f207 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f46a328 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f57fc4b rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60c63f48 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x726d6489 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x75b912b1 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x79a7fc74 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82faff50 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b38543b rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9daff475 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad035cf6 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae8fc9ed rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb66103d4 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb72b4acd rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc14bf888 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4b699bb rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcfc47c78 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd45dee33 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf612f2e rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf1ed4237 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbbb99c6 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x03206b86 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x03d9637c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0800ac3c rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x134c3537 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1bd5cfa8 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1f3e0a97 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x21ae6c32 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2cdd1cc9 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e96af49 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3375c60e rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3730b1bc rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x38ffa33a rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3c04a171 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3f1328bd rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40604f88 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44e5b6c1 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46655620 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b44f382 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b791731 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4d8609f6 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f896406 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f8cb9bd rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x56f211b1 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d160ff4 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66117325 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x68869de7 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79cf52e2 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7b8a0e7a rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8052c084 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82f5e797 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x84e08585 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x866d27c0 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x89c92998 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a39e8f5 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f5d76f0 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4eeea38 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb69dc6c5 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb8f37b7d rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb81c52d rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe12f4a07 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4d741c4 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe4d9e9b9 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb1c111a rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb9d24a4 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xefd10450 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0f15aa6 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0548228d rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x06fa91e0 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x09a62cfb rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x0fce4666 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2f50d987 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa3b7d307 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb2aaf1d7 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc474d274 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf6bdb81f rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x099be491 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2ea85718 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4423236e rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4e4cad0c rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x673e8947 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x67a1e3f1 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x79ff41ca rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7d1b00ba rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8033e40e rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x99ba2a38 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa88e644b rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6cae225 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb95fcfe5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd5bf3c59 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe8a8c8cd rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xee3af921 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1dc83463 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x82ff68ed wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb4cf3074 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x016ffb3f wlcore_wake_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05294fba wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f87e097 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x306cad45 wlcore_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x32c05b33 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x330a5f30 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ae69691 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46a39a01 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x482eff9d wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4bb370e6 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5ba7fe93 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e68498f wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7532c4f3 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8fd60695 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x935f8bee wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x98d5c8e3 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9c2fb1c2 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9d51c6c2 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa167e98e wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1c14199 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc439123b wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6bc729c wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc75cea2b wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xde486131 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf697ac29 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb3ebb47 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6b41a944 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x89c9082d pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x8ffc15ef pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x480e7034 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x57b536c2 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb47b48de mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd6b6f602 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf5723333 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4f4a5c6b wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9110bc3a wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb3737444 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc8bbbb32 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd7c77aa6 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdafa7654 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x33da12b3 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0017278f cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0afc678c cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cafc022 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1349c379 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x196b3e68 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1a2d4a51 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x24607cf0 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x25ca0dd2 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2ad0cc29 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x322fe948 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x38d5bf43 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x40d0d421 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49ea5bb9 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a95c2de cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d96572d cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50b006ad cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5293ade5 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55b70b65 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5647dfde cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x635c7bf7 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63b66b67 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7d99f508 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e4894b8 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x803a9f3a cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8633a713 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8dfd1a7a cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x910385c6 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa6b9a281 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb046cd25 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0acf964 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4de00b1 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbbf4e7c1 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbcb60fa0 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3e25618 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd147a845 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd67d6d32 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb442134 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xddcd2e3f cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde7e0312 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe903eb12 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec62bf4e cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef9155e3 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf350c428 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa3a253b cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3b3af1ae scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3e8c58d1 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5a5ec72d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x71bcd15d scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa011155b scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb7b91167 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe643fa82 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0b8244a4 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0bf1b85e __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x208357b3 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x27541328 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x29f123ca fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x33e06755 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3a693e62 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x571a0519 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8b4df8f9 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa54b43e4 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xac062363 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeefa6505 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf8a24b74 fcoe_ctlr_device_add +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 0x06e9a2a3 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x127d14e6 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x135a5769 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13a7788d iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a8ea3d0 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20f8f8df iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x233edcf5 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x298860c2 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2a8bced3 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2dd41cf4 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37bc7586 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f62a2f3 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3fbfcf0a iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x40a00449 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x455b8fa5 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4737bd4a iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5078fed4 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x543a481d __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55d106d9 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a04705e iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78086226 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c2c04b1 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c5149d0 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d3f6c2d iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d928c13 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x88732fbb iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d6e6a9b iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x929f9522 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9630eaa3 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xadd6c165 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb69ab8d iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe2225b4 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca211426 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd342897b iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd6508286 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xde1b0128 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe5eff0f9 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xebea7eec iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xefe51b3f iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf00e9c4a iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf162a9f6 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf21734ea iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfab69df3 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x02185b4b iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x06d58880 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x264db838 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3099088b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3d84b557 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x485bef6f iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x59f62853 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6141cfdc iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69de137d iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6ee1ec77 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7ed9c402 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x80534ece iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9a5c92bf iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9fb86fcd iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc0ac6b61 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe9efaf10 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf8093ea4 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01433f01 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13df4143 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x391a3030 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3fd187f8 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42c02319 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x47117fad sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52f53547 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6869b341 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6d3f1d1d sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x739ce2af sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x889a7289 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8f106738 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa141f265 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa284092e sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xae3c9236 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc37c8ff5 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc5cd9e7f sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc8670b5d sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda6dd431 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf1e9ffa sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2480675 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2569be4 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee2f309c sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf38b58f0 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfea60b1b sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x219ae3b4 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x28f21d8a srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x32317aa0 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x5b0b10fa srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x5f3c2037 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x7d213b57 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0c9fff75 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0ea40d4d scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1def2ed1 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x4be21786 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x4cb966bc scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x5a01027d scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x69c6d617 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7af6970e scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7c4909b4 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x018a4608 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x084c65a5 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x09f016cf iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17a71acc iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2101db95 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35192e40 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3bcec74e iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3cf0ac46 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45cc71eb iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x511ad742 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x640e48d0 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x66fcf808 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x675cdf33 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d1384f3 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75988c33 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b6866bf iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b711515 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8d999d05 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x944353cb iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9699fac6 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xadd8364e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2f584c3 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbee3682 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbdaa637a iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc7964b4e iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcbaaa08f iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdf85adf0 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe113e5cc iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0c46d41 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf35fcfb1 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf452ae6d iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5807d7d iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3159ce54 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x5ef0b89f sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe9fdb216 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf8fd806c 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 0x788a0972 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb4a838af srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbd73fa9a srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf1cd7eec srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf9924f5e srp_rport_add +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x057d0386 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3a34fce0 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5f36b466 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xaa393124 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xabf0147b spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfbc48ba0 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8c8e1221 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc64984ab dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd5be488a dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe2290c0a dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfb56b4fd dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xfbaa2cb8 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x043993b8 CsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x063ce8fd CsrMemCpySer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1a2f4153 CsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1b112e5a CsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x20ed5d24 CsrMemCpyDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x25d71627 CsrWifiEventCsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x2e32b4fa CsrWifiEventCsrUint16CsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x35ee09da CsrWifiEventSizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4a44d987 CsrCharStringSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4b702d3b CsrWifiEventCsrUint16CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x5bef3871 CsrCharStringDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x71d701be CsrThreadSleep +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x7b2ce3fd CsrWifiEventCsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x80cc6f40 CsrTimeGet +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x83653836 CsrWifiEventCsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x92b87e22 CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x99c3117b CsrWifiEventCsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xa914520b CsrMsgConvFindEntry +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xad2a353d CsrWifiEventCsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xb39bdd0a CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc47d071c CsrMsgConvInsert +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc79e2f1d CsrWifiEventSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc9691b01 CsrMsgConvInit +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xde3f2c0f CsrWifiEventCsrUint16Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xdf5f5f67 CsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe258383d CsrWifiEventCsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe2e90b5d CsrMsgConvCustomLookupRegister +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xe90cfd08 CsrWifiEventCsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xeb229892 CsrWifiEventDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xfd995761 CsrWifiEventCsrUint32Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xfe9f5512 CsrWifiEventCsrUint16CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x12e6177b oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14523351 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14c4b6b0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3c6ec396 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xca667daa oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeb94de18 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeec034fb oslec_free +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x2854eb8c adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 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 0x04433eae usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x23e400c0 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2b2fc20b dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x30515789 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x38d30411 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x394e9403 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x692627be usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6fafa08b usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x786adc39 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8eabb345 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc55f3b01 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcc435be7 usbip_event_add +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 0xff211d1d usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x61b6cf6c pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2ee36197 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x7c3baca2 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x9aac535a uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x352c5c69 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x6bcd719b usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x0d4eb3c6 usbmisc_set_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x7a2e153f usbmisc_unset_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0xa0cd1359 usbmisc_get_init_data +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x4cc1f7dc ci13xxx_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x6abd8544 ci13xxx_add_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x03f9099a usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3b736df0 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x40cd93dd usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5484c455 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x59824b23 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5beddbea usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5db04444 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6c804d45 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d55304f usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x710ab649 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x87038ab0 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x916dc1fe usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa428844a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa4c25b27 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xadf8bd1f usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc1fb1ad5 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd3e0ac69 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd7ea65cb usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x5076508c usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x6c54f295 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xcbbb1c1b usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xce6c792f usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd95694e3 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf9d8b197 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8b0225d7 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9b01dc61 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1a1f1538 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6864ac55 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x803c690c usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaae6ce70 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7f619f4 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb9923a18 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc6151ea7 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xefec8f07 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfea21546 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x539b15b7 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x52723bc8 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x798de2b6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xa0f25f26 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x246e5426 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2fad3fd3 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x346a2f72 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x52eb6218 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5320c1dd usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x563f69a4 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6019954a usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7064c718 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8387493e usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8b85aac0 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x90b4a55f usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc728b482 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc9f6a4a5 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xda7435a1 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdeab27e4 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeb527ca0 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf1bd2791 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf2484845 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0af64e4a usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d7b0494 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2707c9aa usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x27c68edc usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2ceff82f usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x360ced05 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5064d488 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x51f96842 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59291f0d usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x615c3934 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x870d8bb9 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xae75921e usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaf66a7e2 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb329fe31 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb7536f72 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbeec0200 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcd2189c9 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd9629021 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdb1a3baf usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe8367b31 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeaf73509 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf3f2074e usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x185f5717 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2a7541a9 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x529dcf88 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9a568726 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb88094ac wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x10e793e0 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x18db892e wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5fd88af6 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6b535ed3 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f38042f wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x82fd6422 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa48683bb wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa65120ab __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaf73fd58 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaf8f211a wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb58ab851 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc6ddc801 wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc70e401b wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcdd2ab7c wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd545e112 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdcc203d4 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x7a820c62 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x92c3e83b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xceeb2f6c i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x29b8efa1 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x619ab185 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x65141181 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x742092e5 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7552c782 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x820dd93f umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb9648e82 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdef73528 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0414d314 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x07966a74 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x135abe37 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2d6148d3 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3080961a uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x31b43eb1 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x37518678 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46ef3eda uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e21e896 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e9b028b uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x50a6744f uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x50b443bf uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x58d3880b uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5a7cbf82 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ef73dc4 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6118399b uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ec4e1e8 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x70826d3e __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7de07033 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7f709d4d uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83051e72 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83bdd8e9 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x923a5c29 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1a9065c uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb066453e uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5e460d8 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb84f95a8 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1c7800d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc5495fb9 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc6ec8fc3 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd8f23c9c uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdc6bd747 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0706097 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe16ad3cc uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe7a76383 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee37e803 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf021a60c uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xbbd933a5 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x39706d8d auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x4129c8bf auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x5e74d06d auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6f17136b auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7521b180 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x79005c83 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x9a972250 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa9c93a2e auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc3ee174b auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xeaad709d auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x134c0770 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x410dc33f ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x77c5b516 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xddb87b26 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe50f3aa8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xea0a4982 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfa8f8cc7 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xb6d2fc60 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd2c16a5d fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x106de23f sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x40a7cc69 sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x389a2716 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x3b06fe81 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x3b892439 register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x5a68a541 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x6d58ba2f unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x067f32e7 virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x1271e6cc virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x30efe318 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x345d4b2e virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3fa02a3a vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x4a2c999a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x7f4d5a09 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xb196ceb7 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd817c76d vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xdac5e0c3 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xdfcf8ab7 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe29f7a68 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xed428dd5 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x13d1b6e9 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1b0fabe4 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2f727788 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3d28ae3e w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6a1d7f27 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xcc12ffbd w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xeae7ab14 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf253e605 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf92c37f8 w1_reset_resume_command +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x0947f674 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7106d019 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x88030c6b 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/fat/fat 0x105f062d fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x1a98f23b __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0x4ccae653 fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0x5cb6bd1a fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x5f3867fc fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fat/fat 0x60d87cda fat_sync_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0x643cbbb4 fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x8d286e93 fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0x8fe717b0 fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0x9c82b408 fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xac13bad3 fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0xcdd29249 fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0xd56afec1 fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0xd6f5bf93 fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0xe643c5b5 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0xe891ed0e fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0xeba81c4a fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0xef69c1e9 fat_search_long +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 0x20146818 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x32530fa4 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4a4cc104 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6dffeb56 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x72941cf3 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7e329ec6 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbd1ca456 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcb47e25e nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfa6e577a nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0052a99a nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01a6b3e1 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09c46e5c nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e970f58 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10e543fb nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13f69ad1 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x146c39eb put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x154850ab nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x182c2724 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a4b7fce nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ad5c5d7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b7219bb nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c6d4e65 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c7795e5 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e553d23 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22e49a36 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x260a9f9e nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26cf6373 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26d1ebc8 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2862351d nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x296f9875 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c5f95f8 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31119134 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x328cfc81 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32adf26b nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32e4912d nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3911a566 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c562b2c nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x430b5d6e nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43459be4 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43a974ef nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43e60032 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x456483cc nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48fe4e1f nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a3cbdc8 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b867334 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ba19cf1 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ddfe89a nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fffb196 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5208f676 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x545e615f nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x546cc91a nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55ad81f6 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58e6c09a nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x58f74a48 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a586f50 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5baf9641 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f845f52 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fc339bc nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x712168b2 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73302580 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73b9b7b2 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79f669ac nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ae27342 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b07b462 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f0c0dc4 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f4a4be9 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x804b6a75 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86f6dc60 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88a7ee4c nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88ac0e2a nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89607219 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b713a21 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c635a93 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90c24a67 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95d3dde8 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98c05ffc nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99bc549f nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a28c6db nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9acc0f91 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c986068 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d468386 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ed21c3f nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9efd5b7a nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa0537d7 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa0b8b56 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa6ae556 nfs_fscache_set_inode_cookie +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab31e49c nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadde3c48 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0e214b6 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb260df98 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba12f12f nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba42e3de nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdeec64b nfs_sb_deactive_async +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf270a68 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1680496 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1b0d670 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1cdd26f nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2ae1238 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc562fffc nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ac8fb0 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6713974 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc90587c7 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc95c4fec nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb46c24c nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc084542 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd409354 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd8ba9c1 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0720b5a nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd17621a6 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2d5e52d nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd375cf44 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd49d3d14 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd98b241e nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9efa649 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda152d79 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcb040a1 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1d6f43a nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe21685c5 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea07d4e9 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed4702e4 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee280e36 nfs_dns_resolve_name +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeece533f nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef671a76 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf01f4d96 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf145fed4 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1e5c66f nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf227bebf nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5e2fadd nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5e5a367 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6106cec nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf66561e2 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf680b235 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf919b92f nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb216ba2 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb425db6 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc330443 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x000467d8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0251e063 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03d9e409 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0549d0bf pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b2a1ccb pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1174d641 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1494eaac pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20cbef69 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31adfb25 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3830b0b3 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x428c2fdb nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4450e285 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x476f7f98 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x47a8aeba nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4a638342 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4aa9fa76 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x53106d5c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x56a5fb0a nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e6d38ef nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5eb0588e pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63484b92 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x702ea185 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x84c63bc1 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x851aa786 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a190f7e pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a3b04eb nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e22986e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa627ed57 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa96470dc nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbadf25e6 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc77a833 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc044e7ec pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd15c5e77 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde77240a pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf52a7ea2 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa1f83d27 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xefdbac73 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x14b513ca o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2757bd51 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8342b3b8 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x96d9d440 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xac10dd41 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb4942710 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe8415e9e o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x42919c6a dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6ab37bd7 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9eeb5061 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd465c0cc dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xdf3ea1c7 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe682c2b3 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 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 0x6058f52b 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 0xc81a168d 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 fs/ocfs2/ocfs2_stackglue 0xfeabd3ca ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x18d134c4 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xaa21e567 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x05513b71 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL 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 0x568a27f7 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x9d9de901 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xb13ae6d5 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xc8d02aec garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xded34f92 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe2346194 garp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x604ea311 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xc2f5887d stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x406cdc91 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x97eeaac0 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 0x9e870a4b 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 0x518aab66 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01076ab8 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x05df04ab inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0e96d8f3 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1654ca58 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2105a62c dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b157062 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3eb291e7 dccp_rcv_established +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 0x507b8c75 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5335e07f dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x533bc0bb dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x535dd4ba dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a1b8a75 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x655d5fad dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6661ee74 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x72c4d80d dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x746557ae dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7b7e91c0 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c1656aa dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8464f93c dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87424206 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa9cbeccf dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xac09e4cc dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6e6a00b dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd0132265 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf948b67 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe40a4faa dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe47fa8c5 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe6b1c6af dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf07d05f7 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf165e35e dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf47f5376 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5072a62 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf607133b dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf982b89a dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x58aaf37d dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6425f23c dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8868db34 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x889b38bc dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa9ead1a5 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xde54244b dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x212109dd unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3c27f48d register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4d6e565e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc0010e94 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5d07435a inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9ae11feb inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9d4fefae inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa096c350 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf2b2617c inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfb1ef2b9 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xb39454d7 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x4f9a811c ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x8245e154 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 0x136cf5fe tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x62eed03b tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x72c7a1ad tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xad93af81 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf1bf2bfd tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xa229da4d xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xab158f12 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x1df8c93d ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x20ce469a ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x63715ba5 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x727e6a2c ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb74ecdcc ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xf335a90a ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x0b8164bb nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0c477ee0 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x14fb0e47 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1cd8b324 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1dd7f2a3 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x288276c5 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3103c97a l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x43767569 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4bcd934b l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5951730d l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7654cbd2 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x869daf0f l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9bc9f939 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xabbffb1d l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd7fc768e l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11925c15 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x49fab4cc ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8670c653 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9d25ce1a ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbdfd75b4 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc4c6a985 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe1a05e03 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe9d74a73 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf09167d0 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf26dbb5e ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0ce1be10 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x371a7192 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4769d4e0 ip_set_get_byname +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 0x7771ef1a ip_set_test +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 0x83035c58 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8eb5adbb ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbdb3cab8 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce7d13f2 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf486fbb5 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x449ef38d unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x4ae77d38 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x51cdad6a ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc0b16fbc register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0178867a seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02e156c1 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03ddf641 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b7ebc16 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ff9bafd nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x107a230b nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x129ddb9d nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bac279a nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1eda100e nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25162273 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25a51a96 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x291355fc nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31d8d396 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3fa0c57c nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x478d381d nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49691a07 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49beca46 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x547018f6 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54e4b15c nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x591acd0c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dba6a44 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5df05667 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 0x679aad20 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72e35eb6 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x75dec71c nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x774b8a30 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c1fd681 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82c90f28 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82caabe3 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x865db481 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8abc9407 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f79dbf4 __nf_ct_try_assign_helper +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 0x9364cf8a nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93cc5abd nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96ba3835 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97d06f18 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa49da0a7 nf_ct_dying_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5d5f8e0 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5e60d9a nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab6386c8 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabe4bbb4 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb39ca50b nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb46bd603 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4735969 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba4a7d19 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb47f414 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc65372a nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbced4f9f nf_ct_port_tuple_to_nlattr +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 0xc2b4a57d nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xceb9713a __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf5db3a7 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcff3b6fc nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd083a7ec nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd09ac8e2 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5cb28d4 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda6fb9df nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd5803b5 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde92865a nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdef53db6 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe103766e nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe334d325 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe69bd341 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef482599 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef6f3202 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4373aef nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6e223b5 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x116249d2 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x30f2dcbc nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x8382fd75 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2c2bd691 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x703579ea set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb1021f36 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc2265c50 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcc7e09f7 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe1e22ff7 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe1f1c7e2 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe518474d nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf7855321 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfcb8db1b set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x68037477 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3adeb337 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x646d8cfd nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6bb499fd nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xda64e474 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x3a7f2e5a nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x70c09081 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x05646743 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0c58bfc0 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x17864e18 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4c2a6133 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x524b8d8d ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x57ba7922 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x801cb9fc nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x98fe8f52 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xafd7e950 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xba576319 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc5583b9f nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcc76b442 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcebd9d74 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x49c2647d nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x78a24c8a nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2da95310 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5a773749 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7b9f8bef nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x809572da __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8fc9d235 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9a53bcfc nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa9a4f6ac nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc1455ff8 nf_nat_tcp_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe82cb03f nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x1d6bf81a 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 0x3f8b9d0a nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x415a597a nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x455e557a nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x49083197 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5730bf73 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcf90b249 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x8d8d79f1 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x1fc31526 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x710a7418 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x869a3d86 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x87de6c08 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x891c2ee4 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x944a3363 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbe5a181f xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd5644021 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd8e89b56 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdf816dfa xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf10b8404 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf1dc727b xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf5f62dda xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf93159fc xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x1754232c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xa8c2131a xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x04f4408e rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x0af994b8 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x14582740 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x31a231c7 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x37f5ccd5 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x3c81f018 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x3f6bcef5 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x54070bd3 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x55b76b21 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x8ea3995b rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x905803a4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x9445e2b2 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa3bc8894 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xa9c00475 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xc169f300 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc505c98b rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc7be9c2b rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xca964ca9 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xcc192d4d rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xee7a5a95 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xf66c2926 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xf9a52257 rds_conn_drop +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x0c303180 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x27b63c65 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 0x066bd2ec gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0dae6fcc gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x387626f7 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x74a10db8 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7820eba9 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7e6f8a10 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x952f821b gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9c76faeb gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa05c79c8 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 0xc465ddfb gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf74a8771 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x019eaf0b rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x029eef89 sunrpc_destroy_cache_detail +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 0x09b39909 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a82d156 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0aea96af rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e4e18be rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10d0497b svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13e64ff5 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x167d0be9 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d1f3b95 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fd43c14 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x218e2156 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x229e2565 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x236a11f8 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b69cb51 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bc8aabc svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cfe5dfd xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2df43837 xdr_init_decode +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 0x2fdd5b28 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x339abef4 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3431b729 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3443681d rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34b173cd svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x351ee6e6 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38067ad0 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3830c67c rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x395d6b9c rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cce028f rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d22ae82 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fd8056c rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4197a7a5 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42008e9d rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42989fef xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4324413e rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x466ff114 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47cbadf1 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4948d2f8 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49ca33b6 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cc05465 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cc87f13 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ebf05e2 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51f07e57 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5343d45a rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53f1d6c0 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x555b4674 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f211f9 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58cf6796 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bbae7ce svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e156f65 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6007ebda xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6264ed14 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64313118 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65fd42b8 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66b3d8f7 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x676c52d6 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a4cf49c xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d65f4e9 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f6c11d5 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x727c6f16 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x727e598c xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73258b3b xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x745c4406 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a3b6e1 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76f31a51 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x787a9b75 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78c54041 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79927a69 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a9d8cc8 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aa13a68 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c916fe0 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ddea76a cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e750706 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f887274 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8087d059 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80e868a7 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83179ae5 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83a79ea2 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8461621e svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85e5aa58 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aebc225 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b786654 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dba82d4 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f1428e1 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fd20cb5 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92dbf4d2 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9987435a sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99fec57b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b4e0df1 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dbfb519 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9edd5da2 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f9b623e rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fe7d1b4 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1ad82af cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa20de7d3 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2cf35f7 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3baf447 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4d4dd1c xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7346604 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa5c5ded xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa973a5e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacd3230b rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae005bc6 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaecd93d6 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf7e798d svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb05414e0 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb055325e xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0cea4a4 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb162b92d rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb17e21c2 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2059689 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb22e5960 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2e4cba7 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb371af0a cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb43431f4 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5631977 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb591717a svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb644629c rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7af2734 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7dafa45 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe3f5da0 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc3d264 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfcbe6d2 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc524d759 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc866610d rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9eb1ad8 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca795dcf rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcecfe295 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceef5720 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceff4485 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf4252c3 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd12adf08 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1f85bf2 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd275fe28 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3aef275 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd71a7e21 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd851dfed xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda5fedea rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda854c61 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe012e17c read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe02c96e5 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe034f7ed sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe06d3820 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe124c575 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe365da1c svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5564795 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe58d73aa rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5912ce1 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5945075 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5967262 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb8ed862 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec71fdc1 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee03ba1d svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeac6591 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeefb57a6 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0431bb7 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf06bc9e1 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0e2c01a rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6428404 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf691e8d3 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf69950ce rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf747034d xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf78b7514 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa1a8baf xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa594497 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd331cfd rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdee05ea rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe36e2b8 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffb8c75b xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/wimax/wimax 0x42b21db9 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x573a5ae0 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6e210cad wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x81e074fa wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8d1a7e8c wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8dc21e01 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa1e24093 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xabb5efa5 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb4ace254 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc864a389 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xce2d3328 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xde83e536 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdf6d63d2 wimax_msg_data +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x04ff567b cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x48ac858a cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5fbe1cfc cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6ec744f4 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x89584f3f cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9e92f576 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb8e8c865 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbcd7ff75 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xeda7c41a cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf5840013 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfb4f87c5 cfg80211_wext_siwmode +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 0x9fc6cc95 pskb_put +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 0x3730b636 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x46166b98 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4cc52057 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x570ab756 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x009a6aa5 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x78a6c933 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x961ebbaa pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x9f119e6c aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xa1cda87e aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xb8a85e9a aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc3a0705a aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdf92c942 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xe5cc8088 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xea327e0b aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x16f5d7ed soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x19e996c8 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x5f7704cb soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x66dda06b soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xfd1366db soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xfd893385 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/core/snd 0x1d81b199 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x55b0c0e6 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x76f5a94a snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x845a54d9 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xb17d6d35 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x2b05e3ee snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x4a44f227 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x6b95e8e8 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x2cd519ee snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8ba8521c snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0e089221 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x11fd0961 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x16691a32 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5d1e0c69 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb1cf8ef3 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc4527c23 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00e91b0f snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02bfe358 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x052585e3 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05bdff85 snd_hda_find_mixer_ctl +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 0x07c3f7e8 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11caf3b1 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14063406 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16e2d482 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17063930 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19029e11 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ada2466 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b584667 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f44278a snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1fd50a73 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20b45307 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2774cf5d snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f315c2d snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x364aa96c snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3867caa1 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a8fcb88 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c7b172c snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fe67a30 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x412dba24 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x421f2742 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4546c4b4 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4687f604 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x471eab28 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47600545 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x484c17e7 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b86b434 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c094603 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c473943 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cae1b92 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5164c18a snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x534b7ab8 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54c49aac snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x594dc4bb snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x595cc4df snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x598f6ed0 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a26f24e snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e7819fa snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f63be46 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fcf7866 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60d13ade snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x619d635d snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x645ff8f7 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x652f38c5 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69c67c7a snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b7465d5 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d56a1fc snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7343cfab snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x740a5c13 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x748aa8a8 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x755fad22 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7561b9c7 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x762a477f snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x787d181b snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7acec8bf snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b6fdeb8 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7be0713b snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f80f54a snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f95301a snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8678c3ef snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8730d7ae snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x876cb360 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ad2636a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8bc6ff11 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c332ffc snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e565ccc snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ee0d661 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x917af8d7 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x934c7c51 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x946e9212 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ad14e0b snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ae4f124 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b379be7 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cb086b3 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9eea6c7c snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa563d058 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa79e16d0 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9d37816 snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf2707de snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb01c995b snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb164d064 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1a0b2d6 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb398b732 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb502462c snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6818931 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb890b45e snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd276b2b snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbed477be snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc00082f8 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1d0620b snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2372333 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 0xc9c8878a snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc1ca62c snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc670a6f snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdc9c7a4 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd07aaef4 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd16abef2 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1c12320 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd757513d snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd901dede snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbf111a7 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd562d46 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xded485fb snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdeffe853 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2d5fcdf snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3533c2c snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe446e5fd snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe57b4415 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8582210 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8d5d25b snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4165149 snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf629224e snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7d2a8a1 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf888da19 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb10fcc9 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe28b4ff snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe5250e7 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfff50aec snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xc7977449 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xddeb74e2 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0x8d79a47c ab8500_audio_set_ear_cmv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0xd5e70ca1 ab8500_audio_setup_mics +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1f8ea94a arizona_out_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x5e8e6067 arizona_mixer_texts +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x5ed337a5 arizona_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x73f9f1d5 arizona_lhpf3_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x78355a2b arizona_mixer_values +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7e59c88a arizona_out_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x93ed4d8b arizona_in_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xaf0619d9 arizona_out_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xafb6049e arizona_set_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xb3ff4fd3 arizona_init_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xb65ecf5b arizona_lhpf4_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc91d218e arizona_init_dai +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc9c29637 arizona_mixer_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xd131307f arizona_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xd58efa61 arizona_lhpf2_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xe466e0fc arizona_lhpf1_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xebd84260 arizona_in_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf23a2c4b arizona_in_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x7a892d3b v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x88657568 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0xfbea5b50 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x40b64a27 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xa011296f tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x0a4995af twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x0cdc303b twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xca6828fe twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xf49a410b twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xfb7d9f2f twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x6a4045c2 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x2485079d wm_adsp1_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x6a51fe37 wm_adsp2_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xc15fb208 wm_adsp2_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x20269ff8 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 0x609f8ce6 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x6fb531fb 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 0x865488b3 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x93767c4f wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xda2da827 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xddb2c792 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xe3f1cbcc wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xb22a37f8 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xd92bbc30 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x8faab1d5 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x0856a882 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x2e5082eb wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x8f70f92d wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x4922d8b2 wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0133e4a8 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x015c695f snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x034b1656 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x050f9459 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07472e94 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08b08b98 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a4e9c53 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0aff1c93 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cc75bd7 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0eab431f snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fe33da8 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x144f1af1 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x163d5954 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17fc8b15 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c36edd2 dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f3b549a snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fa9b544 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2543c225 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27d06e0f snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e459f05 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30455982 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30872d0c snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32007cda snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x332d299b snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x357e43f8 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x363b0979 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37c27d74 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b10501d snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d348606 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4143176a snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43d86961 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44535313 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47a0fc7a snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4860f0d4 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49baa5c7 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49c986c9 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cfc675a snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e9924b8 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x511aa4da snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51698964 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x572552be snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57f8c13a snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58682b47 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b6b8454 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5be3de52 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c9fc8a6 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d971f35 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e441ba6 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e62a2b0 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x609b0ad5 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61672127 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63ba5071 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x642f57d4 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6573521a snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x685ba08e snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x688c447e snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6aaee21e snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b3a695c dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f138bb2 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f82633d snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x727e51cb snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x747a19ea snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74f2a286 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7861f960 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a6c34f4 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8177e1bc snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x822e33d5 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84cb3ae3 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86475544 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88c233da snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8eab678b snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ff8896e snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90af2fd6 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92ad1637 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9569702a snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96021399 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aaad12a snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c2d411c snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9cb46239 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9db5f338 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fc1840e snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa13dfcef snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa45ebeee snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5448799 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5a7e571 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ee917f snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa75c9eba snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa76a8273 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7c775d3 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8704512 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa499f01 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaab51ad3 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaafa30b8 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab578bb8 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac05b3fc snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf0d640e snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb532144d snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8e67e0e snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5c448de snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc694b9f5 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca373683 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcadcf1f7 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcafbf0dc snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb32c570 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdd22370 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf5e31de snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd05fbc88 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6e42adb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd747c065 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8419beb snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0378e8 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0c5c95 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe261f40e snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4e1ed50 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6135a1f snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe70e3aa2 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe838ef3e snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9d9c9ca dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeab2d935 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed51ba40 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf03a61bb snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2f6beb0 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3e988ae snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4948a30 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8fb0da5 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa37deee snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa8172ac snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfbfd4986 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd1b42cc snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff59e03e snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffe7e115 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x0007f9e5 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x000a84d6 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x000e4022 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x0019f54a regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00305177 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0042434c dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x005d5c17 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d3b486 device_reprobe +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 0x013d4449 sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x014589c8 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x0177ae8e tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x018afd1f regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x019b0578 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01a75467 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01ff44cf rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x020eb94e page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x021e5860 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0231ad2e ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x02894680 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x028c7b58 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x02a03fa3 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x02a47525 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x02e0ce8b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x02e6918b devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x030be603 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x03275193 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03419a12 pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0347d897 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x03773002 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x037c6361 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x03a5959c ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x03db443c sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x040d6104 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x0414d446 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x0442c547 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x04469143 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046ed503 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x0472caae of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0497966e sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x049e7490 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04a8f56a dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04dbdf5c wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x04ef22fe __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x04f24c99 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0591527c crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05b3855f usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x05cba9f6 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x0605e1f8 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0616844e pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x06385a73 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x0641c6c8 user_read +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065ad189 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x06bc36bf dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x06f22ca2 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x06f468e1 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x07158b4a ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x07376287 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0784b341 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x079620aa srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x07adeeef kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c63cb9 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x07cfe58b fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x07e1bf94 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x07ef4436 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x08236499 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x08414894 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x085bfbdf __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x08adf669 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x090a019f ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091df7b6 mmput +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092c2a7a irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x09350995 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0938d614 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x099854e8 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x09ad6efe tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x0a01baae regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x0a071e98 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a579490 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0aa05c83 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x0abadad6 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b53d646 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0bca7b19 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x0be22dcc tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1a9e0c inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c330139 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0c94afa7 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x0ca737f6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccba2b4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0ccd916c irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0ce4ff4b i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d06ff8b pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x0d36e51d rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0dfe4622 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x0e152b92 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x0e45907a dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x0e5f4f04 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x0e6c1d81 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0e764670 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0e8ed3d5 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x0ef7988b free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0f0ac0d9 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x0f2f85e2 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0f3218dd crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0f7092f3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7f6fe5 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x0f9755df pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fe96896 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x107477a1 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x1074d627 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x109515f7 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x109e07e1 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x10c21096 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x10c68a97 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x10c9d678 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x11124896 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11548937 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x120b21bc fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x120d99a7 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x122061ea sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x122c2d84 serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x122e97e3 ata_sff_queue_delayed_work +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 0x12985145 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x12b99fe1 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x12c2a17a mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x12c3bb07 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x12ecac48 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x1301015d device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1329c556 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x137ae267 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x139742fa vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x13a077d2 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13c3b16b device_del +EXPORT_SYMBOL_GPL vmlinux 0x13c4084a __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x140b2130 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x142393bd class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x143eb7da get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x1447e806 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x14af7d3a wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x14b01cd7 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x14c9a355 pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0x14dade48 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x14e7b221 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x14f1aa27 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x152fa9a2 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x153252f0 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x1538b728 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158b4128 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159abb63 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x15e4f99a __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x15eaf57e sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x163ea45a pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166c393a debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x1683eb0d blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x16955da6 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x16a9ae20 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x16c1af1c usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x16df9236 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x16fecdfc usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x172244f1 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x17645e99 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177f1e61 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x17af69a9 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x17b97979 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x183105d0 crypto_mod_put +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 0x186c7940 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188312a3 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1896ea49 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x18a713f9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18ec228e i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x18f311ea regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x1904614a pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x190c2845 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1947032c console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x1970dc88 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x197191d3 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x197873e5 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x197dcb22 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x199d3fc1 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b08a6c pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x19b548c4 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x19c7f709 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x19d9977c crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a290ac0 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3b9c00 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1a415da1 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1ae80303 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x1b221479 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1b27887a do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x1b328abb usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x1b4d33bc hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b735f2b blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x1b89c8ee unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1baabee2 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bdc96f7 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x1bf5d529 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x1c006013 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x1c06017c tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x1c1f556c blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1c3d77f3 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x1c592824 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1c5a04e0 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c6f3c8f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c85ba8b ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cb97019 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1cdc0635 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1cffc4df RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0x1d041cad pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x1d3eca7b dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x1d47a6c3 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d63910a ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d89d3bd ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x1d983821 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x1d9c5f15 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x1da44fba attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1da98d09 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x1dbbb016 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1de9e1c2 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e01770d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x1e06d5f5 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e565586 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1e63744a get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x1e6e557d wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e80a7fa wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x1eac1325 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec8cf05 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x1ecb273a wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x1eebca41 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x1f35fc95 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8a986d init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x20124fac wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x203070fc regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x20362e92 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x207a9e87 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x20803480 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x20b20cc1 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20c1381d clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x20eae012 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x21c226c3 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x21c6736a device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x21d15f55 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21e43d08 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x21fb60bb pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x2203521a trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x2204cd08 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x2206d8f4 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x22259fd9 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b7c6e1 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x22baa343 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x22efddeb rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x2331e09b ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a49b51 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x23b6afe0 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x23c6cf7d uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x23d3eda8 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2404ecb3 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x240bc8cf sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x2420dcd2 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x2428642a ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x24402bfa tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2498df5d rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b2b5e4 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x24e2bddb pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x2504df72 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x25069d71 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2552e92d usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x2590c247 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x25fd5d12 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x25fe5bee vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x262d63b4 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26577458 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x2664afb1 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26ac1d51 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e1c454 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x272947e3 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x273ecb9f pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x2749451f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x274c551c usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x277875f8 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x277f455c inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27a63c6e spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27dfde63 queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x27e05b5c cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x280a0994 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x282121b3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x28465e58 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x284f3a3c pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x28a3c61d regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28d5f5d1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x29230f00 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x2958357d fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x29607832 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x29687add cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x2976729f pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x29a83238 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x29d34ce8 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x29de3f38 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x2a49daef cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x2a506c2a inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x2a647dfa da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2abfc235 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2b352af3 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x2b438bdb ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2badc0e5 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2bc6e45f __class_register +EXPORT_SYMBOL_GPL vmlinux 0x2be60b5b led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x2beb9f51 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x2bf1a340 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x2bfdfc85 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3e23f5 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x2c6002b0 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x2c60a30e max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2ca2d711 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cbe468b ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2cd098a8 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2cdd4107 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x2ce7cac4 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d3f35fc rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x2d528d13 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5ede50 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2d6e2b34 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x2d8e4661 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x2db8b141 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2dec73fc pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2e110f8f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e6c3575 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x2e766584 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x2e8d2f58 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ee8f8d1 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x2ef61a43 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f151654 user_update +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f471e01 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f7dbd05 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x2f87e0f3 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2ff8c315 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x2ffff02d pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x3023bc0d arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x302d86fd tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x303cd4dd usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x30621430 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x3087b093 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4d5f2 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30f382ef usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3121ba62 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31467c8c crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3181c68f ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x3182d17a driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x31a79eae wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x31bff74a fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d04cba pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x32241486 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x3227eace inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x3238e175 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x324ff5ef ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x32a074fe call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x32ab3a16 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c6ba2e ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x32ee2e99 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32faa42b inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x332798fd kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x3341abd2 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x336d0454 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x339f393b sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x33e7f8b4 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3475b7fa extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3476b92a tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b23fbf srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x34b6c127 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x34bfd08f sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x34cbed48 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x354e05ec ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x35579958 thermal_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x3560bfbd jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0x3586c380 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a4ae9f pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x35b52544 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x35b99ce7 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x35f46bba uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x35fdb3cf dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x361e9eca scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x3646d1ff devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x366f1a67 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x36828278 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x36dd09d3 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x36f0d8fe sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x36f7f1e6 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x36fd9037 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x3700154c pkey_hash_algo +EXPORT_SYMBOL_GPL vmlinux 0x37078605 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x371178bf cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x373295ca tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3736cfe0 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3787c403 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3798ff17 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x379a41a3 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x37a88b19 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x37c32737 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x37cf78e0 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x37d3e1e8 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x383e7d6a rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x383ed4ef single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x38430079 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x386b5384 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x389e5cb3 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x39087320 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x39144c57 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x3929f42c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x39686509 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x397cbb62 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39a5ad5a dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x39a7bada regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x39bf8b2a extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x39cfc880 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39defe93 cgroup_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0x3a044cd3 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x3a0f1e7d regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a382eca da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x3a4c6000 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5753b7 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x3a81993a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x3a8fd4d3 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x3aac9b82 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3ac82144 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b503415 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x3b66f737 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x3b86096c tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x3bb713b8 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c13c80f devres_release +EXPORT_SYMBOL_GPL vmlinux 0x3c35801f module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3c3688e5 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x3c55d426 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3c89a5e3 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cc50247 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cef2c14 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3cffedf5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x3d2657c1 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd7bf31 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfde3ac pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0x3e074727 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x3e3a15a1 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x3e5243c0 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e759b04 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e7a362d pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x3ec14468 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f07475a sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x3f0cd8b0 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x3f15f912 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x3f183b2a arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x3f4b6ef1 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f850418 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x3f9f8a46 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x4003f7e4 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x40118786 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4025f5d0 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x40370554 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045ff97 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x40703306 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x40763010 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x409385d3 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x409f6f64 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b7ff56 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x40bec45d debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x40c3b058 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40eb525d __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x40fc42ff inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x40fd7bed skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4106d39c spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x41094492 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x41143bd4 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x41243ba9 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x41282b03 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x41315116 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x4160b05b dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x4160e3c8 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x417c0b5c dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x417d6d85 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41892fbf wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x4194e60f dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x41a673ec spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x41ba9d0e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x41edebe6 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x41ef6daf rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420df4b7 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42231ccb tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x422c8c1a netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x426fba00 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428919d3 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x42a3eb8c pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42ead6ee dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42f36621 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4363f63e anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x4396b273 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x439de272 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b565c5 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44092b19 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x443b5aad scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x446f7e84 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448c0172 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x44b39dc9 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x44cf086a pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x44f5d529 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x452ab8d8 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x455020b6 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x456b1c16 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x4571fa42 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4594f0ac pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x459dd7ba dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x45a0d892 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d71a85 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x45f9b4be css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460c1e7f swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4615bf3c pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0x465d59f3 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x465e5bf8 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x4663dd2f dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x4664ccda rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46894e59 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4694772f led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x46a321d7 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x46a4b13f crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x46c90a5e __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x46eaeca5 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4758fa05 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x476b27c6 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x477a8369 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x477aa8c4 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x478cd929 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x47bcba4a sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x482f8fac regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x484316dc get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x4845c799 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x487f0fe2 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48a776ce tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x48a7ee07 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x48ab5da7 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x48c8348c led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x48d2c7be srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x49007d02 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x490ec39c crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x49194060 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x493813dc inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x4981c22a crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x49875200 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x498ac397 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49c136cd pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x4a0e7ece ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4a1600ea sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x4a2534dc input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a28e937 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4a2efe84 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x4a410bec crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x4a50e6c8 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4a55a91d tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x4aa10c4e sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4adbffe2 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4af015db xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x4b076147 uncache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x4b30f6ea scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x4b55cede wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x4b7f97c9 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x4b93df89 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0x4ba4f552 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bfaacb3 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x4c58046c of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x4c6f0896 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4ca2c5b1 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x4cd8e892 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4ceea48f dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d1cae23 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x4d77d3cd add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x4d810647 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x4d8bac5e devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4d912bac ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4d999e4a rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x4da8319d extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4dc2f6fb wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x4dc9a5a0 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4dcb5c68 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x4dd1c289 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x4dfb1c15 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e34b367 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x4e507e98 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x4e7f7172 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x4e99d7e3 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x4e9d9b24 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x4ec00442 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x4ed43767 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4ef38911 device_move +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 0x4f3974b0 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4f3c5996 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x4f48aa15 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x4f51a771 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x4f68cfd9 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x4f738867 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4feb8cb3 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x501eaadb fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x5034fc85 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x504f95c3 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5073d4f4 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x508659c7 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50991963 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cb909d md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x50cc532b save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f6f813 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x512bf913 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x51317b11 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x51576c97 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x51662175 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x51811049 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51befffd device_attach +EXPORT_SYMBOL_GPL vmlinux 0x51db10b2 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x51dc63c9 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52119f72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x52130dcd elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52139684 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x521d23ad usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x526ac1db serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x5270df83 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5279b843 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x52b1038b crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x52cedce7 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x52dbc884 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537bd7df dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54210fed debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x543da04d tcp_unregister_congestion_control +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 0x54bb635d unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x54e4c97f set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55d5b8ed vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x55ec4356 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x56067df2 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x561a501f __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x562fbcf3 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x564c446f sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5698e52c pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x56afdad2 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57374ddc da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5739471e dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x5782efe2 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x579e9274 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x57de3517 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x582e9123 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x5831937e disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x586bb12c fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5883b1e2 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59035ddd cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x590d6195 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x590e14d7 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x592edb41 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x59be293f ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x59d2f39c sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a54ce8f crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8208ae sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x5ac185c0 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x5afb47fc of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b318e8c fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b6b096d bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x5b6f869b crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x5ba04253 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5bef936d pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bffcd55 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c490855 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x5c5dbf86 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x5c6e2c91 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c7ab8f9 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5c8be9e9 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x5c9ed023 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x5caf1b3d wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x5cb4e64f power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x5cd7236b crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x5d06c7de da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1f2dc0 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x5d259ee2 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x5d2b4db5 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d3e0162 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d5342f5 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x5d711306 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d986c98 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x5dd18380 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e01a414 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x5e10d431 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5e4c2935 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5b85bf led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5e65ab3b tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x5e7006ef dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5ed1b328 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5ee397c7 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5eec567a put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5f180dab pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f4fa269 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x5f76d036 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x5f836de4 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x5fdc00eb blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x5fde7e60 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x5fdf8c5c blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x5fec0eb1 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x60085ab0 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x600c9263 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60733079 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x607437bc ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x607ca1b0 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x60897e88 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60ad3d7c dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x610c2f1b pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x610cb972 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6123aa54 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x6137d072 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x617cbb08 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61e0b14e regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x620ad734 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x623c4fa1 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x6248d109 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x62699c3d sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x626e489b blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x62bf5fb6 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x62ea1018 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x62f513f5 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x62f9a4e0 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6300f572 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x6304ac5c of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x63088330 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x631729f3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x6318d4c9 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6325e041 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6363065e arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x63833409 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x638f42ac tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x63a20241 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x63b04009 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x63bb6576 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x63c315be kick_process +EXPORT_SYMBOL_GPL vmlinux 0x63e5f133 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6405464f platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x640b6c6a ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x641df31e bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6427451a udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x642a019a class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x6475d864 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x648a05d2 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x648aefcf platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x64a7beb6 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x64a9575d rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x64b896a5 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6501d16b pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x65447dc8 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6558601a usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x655c6efd wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6590a6df pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x65b4ada7 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65b69a51 pci_hp_add_bridge +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 0x6607fb4f exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x6610adfb ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x6612f653 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662a273c agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x667c2a7b rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66abef9c scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66c6fc13 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x66c78bd2 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e5bdbb rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6721e8eb __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x672b5fc9 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x674f1e24 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x67668b26 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x6770a015 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679e7a84 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x67b5dae4 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x67b6b485 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x67ca57af bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x68148059 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x681de0fe pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x686e0faf input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68c6232c regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x68d0643b bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x691f2140 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692e9e17 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x6933bc24 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6959ba6c dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x697a420c timerqueue_del +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 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69fc6a7c pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x69fd319d simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +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 0x6ac42d0a device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x6b264960 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b5ed27d power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x6ba2bbe4 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x6ba2c5e4 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6bb3b058 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x6beac200 cgroup_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x6bf9099e inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x6c0fd948 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x6c1f4fc7 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c729625 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c7530ab cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6c9ae271 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6ccd1210 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x6cecdf78 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x6d102b9c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d2ff201 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d6bd8b7 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6d85ec63 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x6d91ce06 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x6da75d19 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x6dc62ec5 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6dd5557d crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x6df9612b vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x6e07df7c usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6e08099e regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x6e2d8043 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x6e35e348 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea01536 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x6ed075b4 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f9ec96a aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x6fd30a15 devm_regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x70463e7a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708bd95d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x709b91ef device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x70b149f7 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e72669 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x711a56b3 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7167e6b6 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x7174df31 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x718413e0 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x71901be9 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x7191e739 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x71935c00 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x719c2fd4 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x71d79b5f ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x720a778b usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x72202201 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x72425997 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x7267db00 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72701998 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x73897cc1 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b52c5e sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x73c4864a securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e20ef9 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x73eed137 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x73ef3d05 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x7407c093 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x742c6825 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x74392999 mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74496e07 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x748125c3 class_unregister +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 0x74ce6bdb fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x74de028b xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x74f51679 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x750a9853 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x750ba8ee ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x751e2a62 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752cbc60 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x7545623b shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x75593ccb proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x75623f1a ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x757583a2 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x75959b69 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x75ae2984 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +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 0x75f98234 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x761e81a9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x7649805b __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x765920d4 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x765e794b da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x76fa17f9 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x77214cea sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x77267ebf driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x77304650 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x77771476 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x77cf43be __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x77e78218 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x7800080f ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x7888dac7 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x788a1183 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x78f7e3c2 find_module +EXPORT_SYMBOL_GPL vmlinux 0x79275c16 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x795dbf3b __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x79659f10 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x796a2efd ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796e4008 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x79c0e7f1 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x79c4a713 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x79e442e5 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x7a046c42 get_device +EXPORT_SYMBOL_GPL vmlinux 0x7a1ac17e devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x7a1dcd7a usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a5027f6 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7a7942fb ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x7a875d86 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9f6623 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x7aa6dfad devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac1fa58 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b27bc7f __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7b2a9ed6 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x7b2d55ce __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x7b5ca715 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x7b5e60f9 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x7b6b9783 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x7bab0da6 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7babd3ea dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bdb5963 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x7bf0c8be fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x7c13a204 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7c23f0ec bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x7c369d17 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7c82ef27 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceb8033 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7cf58019 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7d3f9543 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d62ae20 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x7d99e4c9 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dae7f03 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x7dc079d4 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dcb318d md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x7dcb9821 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dd2f04c pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0x7dd2f66d dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x7de6dd61 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x7df2ed83 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x7e0ef97c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e1e1453 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x7e5b484e usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e64fcfc pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7e658b06 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7e777d1c css_id +EXPORT_SYMBOL_GPL vmlinux 0x7eb7b3f8 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f128392 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x7f16b581 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7f51a23c gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x7f702ba6 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f889f82 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x7faac5cb bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x80115a30 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x801dc17f crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x802789d7 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f02e46 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x80f040e0 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fa6b45 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x80fbb166 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x810a7b97 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x811fdc86 device_create +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x814d82f3 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x815072a3 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x81884d10 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x81afbb2a noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x822ccbbb arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8263d801 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x827a01c7 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x828f3c3b raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82958223 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x82a47c6a rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e14f9e devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x830224a6 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x830255f6 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x833963bf platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x835227ff relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x83662186 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x83730853 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83cec9dd ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x843bbc74 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x845471d2 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x8454a08c sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x84fb2f37 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8525e9d5 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x85349f7f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85879d5c debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x8593ca66 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x85ab5ded dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85ecade5 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x863c552c cache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x864db66e devres_get +EXPORT_SYMBOL_GPL vmlinux 0x8677b427 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868b6d56 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x86a9fc8b usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x86cae0df netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x86d236eb usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87041cd2 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x8704eb06 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x871bcaa4 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87473aa2 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x87474e38 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x876c4ac0 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x878c20d7 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8792a06e pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x879c2ab2 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x879df03c usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x87aea733 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x87c99a2f pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x87cdec87 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x87e0b058 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8863b5c0 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x888fa32e spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88c36ddc elv_register +EXPORT_SYMBOL_GPL vmlinux 0x88e228cb tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x890975c7 md_run +EXPORT_SYMBOL_GPL vmlinux 0x891b957a register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8965e807 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x897e64fb usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x8988f72c class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x89b0b415 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x89cb3d5b digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a70fd9f cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad743db ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afbf7b1 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b821778 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x8bad54e5 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x8bd510ef sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x8bf58170 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c5b2848 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8ce86402 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8d185f30 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x8d75b2ef dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8d918c06 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dd2575d rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8df974aa inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x8e333e17 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x8e44d5b8 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8ec86938 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x8ed38156 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8ed50a00 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8eebfd54 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x8f002cc9 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x8f00ef18 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x8f037d09 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x8f050b75 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f12669a irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x8f687325 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f748ada serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f93312e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x8fb3a04f ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x8ff3e888 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x900ec323 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x901063f7 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9096895c dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90af0fd4 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x90ca5054 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x90ef5743 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x9108c993 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x9110a93f device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x911302a6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x916c65d7 user_match +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919a1143 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x91c1d99c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x920136f0 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x92122afc hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x921db952 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x92222956 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x922b3f4d flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9267e7e5 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x926ad184 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x929be9a8 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c6583e sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x92c90e22 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x931799f7 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x93226faa irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x934481e9 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x9366eabb mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93e6a364 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x941706b7 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9421a00b rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9432d4b0 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x943b8ce0 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x943ba6e1 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x9443a0f5 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x945801f0 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x9477250b tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x94879d68 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x948c8338 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94aa1351 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94aeeb1d tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x94b04449 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x94b86ef2 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x94bc79ba usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x94be23f8 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x94d05174 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952ad5b3 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x954afa61 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c5f501 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x95d217a2 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x95e6d81e key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x95ed8443 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x96120e96 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9645a6aa cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x96bb2d45 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96ea8d56 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x96f92d75 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x97079d74 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9718c40c dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x973f5164 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x974b5535 pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x979aad13 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97bed673 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x97f04642 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x980f3ac0 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9819994f serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x981cfb65 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x98328d0c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9851f824 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x989aa464 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98ce737e __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x98d5f55e user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x990b2ad4 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x993fbd3f regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995d4149 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x9977d730 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x998d9cd0 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x99919ba4 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x99a7e51a sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x99bdeef6 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x99c632f4 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x99c7c173 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x99eb0a21 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1d3a59 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x9a32ebf0 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a45dd72 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a68a7b8 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9bc9ed pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae9d3d9 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b009a9c crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9b031e89 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x9b2426d0 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9b8723b5 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9b8dd94e xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x9b9bf03f usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x9b9c538c crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba49e4d fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x9bc2c042 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x9bdb1a4a default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9beae51b __css_put +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c270bf9 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x9c621e17 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x9c6cf091 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x9c6da7d2 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x9c707149 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9c86cb31 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x9ccb1788 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9cd07305 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x9ce49202 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x9d63f72c ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x9d723265 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x9d724ae4 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9db98394 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ddc214d bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x9de7b2aa ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e47a697 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9e4a5337 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9e73b09c sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x9e8b43f0 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9eb8dc78 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x9ec67943 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x9ee136be crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9ee1cb04 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9f35a30f sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f421a72 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9f90bf22 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9fa33b3b register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x9fc53ce8 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe6c834 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fecffde fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ff5e3d3 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xa00f7adf usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xa011c3c8 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa023302c __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xa05b5c4f sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xa09d0bd1 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa0ad2f25 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa0e0ccf6 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xa0e1df35 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xa0eb920b usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xa0f546ad skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xa18ccb6c device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa1938ac9 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xa1a79b19 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa1aeefb3 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xa1b96c14 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1cd86ad pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xa1d99196 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1f16a81 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xa2086fe6 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xa22b90ad fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa274918d md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xa31cf959 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xa333df02 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa33984a8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xa355b475 lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa39d9220 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3c30e26 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xa3cb768b sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa3cbb0b4 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa3d7239d edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa3dad7a6 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa408cb76 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xa40c98f9 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xa41461d1 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xa4343d2a platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xa44689f5 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa45e8792 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4b9ae11 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xa4cd9008 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa51af995 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xa51bed9b kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xa59aa76c wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5d62754 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xa5e0cda8 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xa5ec9e7a device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xa5ef96fd lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61ad472 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63a9895 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xa65ee092 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xa68668d6 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6a97ae2 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c304e0 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ff6466 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa722331a crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa74e8af7 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa7695806 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xa79c6711 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xa79c92d0 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xa7b62c8f da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xa7bfdcb4 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xa7d56a1f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa80b8e47 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xa84f8f17 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xa85df7f7 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa877a8aa inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa889341b get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xa889f47e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xa89bfcd0 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa8c0ad9a cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0xa8c2a0c0 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xa8df3469 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa94f8b6a pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa9a684eb init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa9b44f9c fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa282a9e __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa547e26 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa95f511 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xaa99596b dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xaa9ed184 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaad6bc7d usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xab2b30c6 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xab2eed0e __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xab41e3d1 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xab426ba5 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xab48070d perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7e3362 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xab89664a __class_create +EXPORT_SYMBOL_GPL vmlinux 0xab982261 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xabc91090 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xabdbcfeb rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xabf88884 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xac1241d1 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xac146c3d input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xac264141 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xac55225f blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xac789867 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xac7cd1a6 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xace701c6 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xacfd9aa4 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xad0b35f7 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xad12b57c rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xad28467f of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xad7ad041 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadda482a unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xade2f29c ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf7de9b regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xadf8e8bf of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xae0a4e9e serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae0e84c5 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xae367e18 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xae5243e7 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xae5460b6 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7f4781 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xae80a91d perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xae980b0e ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xaecf8c9f pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xaf9e4052 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xafd4b5b5 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xafe0bc5e blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xaff07572 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xb00e2bd2 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xb035ba98 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xb04c25ef swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b9b84b aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xb0ed9a07 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xb10cd968 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14837ae usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb185901b fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1eaf079 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xb21a54b4 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb2303d5c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb27c0fb5 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb2942d04 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xb2952cfa da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb2a465d0 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0xb2e63d7e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3073ee2 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xb30889f0 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb33c9122 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xb33dc537 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb367bf60 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb3691a29 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xb374afda uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb3897c65 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb38e194c devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb3a08d0a pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xb3c19a84 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xb43965b9 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb4757b01 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53a2520 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xb53e899f pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xb5551a17 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb5682748 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b27c41 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb5bcfa5f sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5ce0ab5 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xb5db0cd4 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5e8e1d7 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb612c65a pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xb62609c7 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb6355f51 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xb652aade usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb65c7c7b tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb679fc02 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb68b39bf usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb6960bf4 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb69c5e41 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b177e0 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb6c5e65f cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb6e902c7 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xb6fe3fa7 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xb71d51cd __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0xb723176d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb74ec4e3 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xb777e428 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xb784ffbe dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xb791a828 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7d46a17 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb84d3887 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb8593dd1 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xb89ec664 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xb8a7457e tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xb8b6c273 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xb8b97c32 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb8bc3af8 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xb908bfbd pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xb9173223 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb9191270 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xb936ac33 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xb9371c52 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xb954ab53 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xb9834dac tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xb99ae853 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb9a56c4a disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d330fd generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fa21eb show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xb9fc708b queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xb9fe8def relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba5942e5 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xba74408a pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xbaa6b6e8 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xbaacc443 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb3eb532 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xbb56d753 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbbc2ce0b crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xbc0eea2b scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc7ec0fb led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xbc8285b1 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xbc8da843 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xbcc2446e dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xbce456d2 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xbce66d28 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xbd136cd4 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xbd1949c7 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xbd2350bc pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xbd2aa3f3 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xbd300dc5 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd984932 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xbdba9011 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdefd03f proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xbe0ace26 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2d2f17 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xbe498380 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbe4a1d9c dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xbe6c5268 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xbe6e79f1 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbe79530e public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xbe960d28 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xbec9ce5e usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xbee62276 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc03625b3 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc03f2e85 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xc0451930 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xc047520b rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xc05baba0 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc0848ad9 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc09d0174 put_device +EXPORT_SYMBOL_GPL vmlinux 0xc0b36e50 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d07af0 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e04070 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1116e9d ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xc119e1ce skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1369514 pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc15dc97b driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc189fd87 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2108812 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc22610a8 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2604f8e dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc290fc3e gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xc309809d dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc3200c5a of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc3543486 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc377748b skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xc381ca2a devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xc3a7ae48 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xc3db287c skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4291d14 sysfs_rename_link +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 0xc4caa7f1 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc4ee3597 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc4f3bd3b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xc4f451e2 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xc539f75f unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xc561dd87 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xc5835af3 device_register +EXPORT_SYMBOL_GPL vmlinux 0xc58d3d61 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xc5a483b6 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xc6044cd1 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc6168231 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xc623efc8 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc628a1e6 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xc62a3fd4 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xc62f080d device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xc6531cd4 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xc65c0990 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6645c6a timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xc66d362e ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc673151d tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6d346d5 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xc6ed4210 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xc721f2d0 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc731b768 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc7603cd2 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7da17be timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc7da80cc perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e4c538 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc7e667ce ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xc84dfc7d ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xc8636258 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xc86a95f7 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xc86be6ba __netpoll_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc88760cf usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xc8a06b68 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b1d84d usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xc8bd62a4 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xc8c4e37c pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xc8ebbb71 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xc8efcffc nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc8f392b6 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xc8ff5a5a fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9190171 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xc91dc348 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xc91e35d3 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc91e649f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc9274da3 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9968daf ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca2ab126 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xca411eab shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad4ad08 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0xcb0a5ce8 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xcb13f610 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb708534 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xcb7207a1 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xcb8f9d06 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbab379e ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbe68f8e single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0b215e fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcc113109 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc212e94 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xcc7a3b68 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xccb915b7 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd7cd6e spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xcd09aaa7 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xcd204dc0 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcd79be90 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xcd7bf274 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd96ef43 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd15087 of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0xcdd9f81c blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xcddf8e17 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xce025c91 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce29c21e platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xce30ee62 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce4d5e67 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce8c5fd1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcea355cd of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf32519d spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xcf5821d4 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xcf888484 stmpe_disable +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 0xcfde7b6a sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xcfdf997e attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xd01dedd0 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04346fe crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd099ac27 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd0b48e3c tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d769ce debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd137cd10 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1632836 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1d5f9e4 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd218b7d0 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd2192a09 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd243e670 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2748621 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xd29823fe dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b9d5ab wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd2cb9a76 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd2d7ca18 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xd308f627 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xd31610b6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xd324d054 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd3353015 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xd3357eb3 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd3446057 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xd3454a75 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0xd360caec __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3917865 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd484e394 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4ce6d8f unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd4ee2ff6 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd513ddbf timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xd5572783 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd59d2311 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xd5a2f152 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c62718 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd5c8a70a ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xd5e478aa debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd5e51029 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xd6046d79 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd63a6452 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd65b362e watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67acfdc usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd69b908a user_describe +EXPORT_SYMBOL_GPL vmlinux 0xd6b767e8 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6eda321 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd6fff838 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd703d256 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xd7085c92 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xd7212005 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77b2fa4 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7bafcfc inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd8024d0d usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd834df61 ata_port_freeze +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 0xd893d6fe ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xd8a94685 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xd8bc639a tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd8c549e9 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd8ce70c1 macio_find +EXPORT_SYMBOL_GPL vmlinux 0xd8f4ad84 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xd9388299 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd9631142 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd9b2ac67 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xd9babf14 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xd9bbbbce led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd9d7f623 pkey_id_type +EXPORT_SYMBOL_GPL vmlinux 0xd9e90816 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda050109 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda167c6a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xda2c0ef8 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda5b3bcc usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xda761019 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xda7d98ca __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xdab85380 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xdac15e71 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafa0524 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb14429e ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xdb37fb8c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb38dac0 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xdb4da8c4 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xdb4fdca5 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xdb56ccfc sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xdb631710 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8e6266 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xdb91c32e device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xdb9f744f inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbd65e8b kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf5a984 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0832ed uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xdc0ded4c led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xdc0e31c7 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xdc23e7d2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xdc3241ed driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdc45a79d ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc54f4a1 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xdc608bd7 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xdc7e046b dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xdc8257a2 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9cf641 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xdcaa4a77 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xdcb861f1 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xdccc578e pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xdcd41d28 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0xdd04629b usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xdd174203 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd5a4c39 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdd7f056d tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xddc53713 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddef40fb inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xddfcf2a8 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xde193234 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xde1b5d25 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xde22acee crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xde257a0a pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xde3c64c8 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xde46e9ac dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xde6f0338 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdeba0ba0 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xdec665a3 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xded5406e blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf27877b register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdf381a5d balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xdf54f479 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xdf8dfaca pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xdf987ca0 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdfdd986f blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03525ac of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe055f902 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe0698983 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe091f2f6 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xe0b9ed61 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xe1085e98 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xe1123e70 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xe158b4c8 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xe1599cb1 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe194a8cd attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xe1deaa89 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe1e6ec10 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe2136287 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xe2437549 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe2443dad locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xe2533c56 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xe2630a31 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xe27c8eb7 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xe28f81b6 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0xe29f762d usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe2cffc7f crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +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 0xe3127cc8 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe32137fe usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe3225786 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xe344352a sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xe371ee7a invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xe3842803 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3863f9c pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xe39da2e4 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xe3b45387 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xe3b88859 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xe3ca66d4 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xe3db452b ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xe4087c81 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xe415b4ca posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe42255df ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe454a0aa skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xe473ea7f ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xe47499a6 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe47b647b regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xe47c9d2a wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xe4bf269a spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4ee7b32 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xe4f249a9 device_add +EXPORT_SYMBOL_GPL vmlinux 0xe4fe1ce7 sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xe5076242 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xe5314c77 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xe5493a82 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe5524eab of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xe552edfb bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5df340f map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xe5e0e80f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe608eae9 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe64eab0d timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65e09ed vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe6b5771a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6edcc24 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xe6fb5e3a raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe72ace60 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xe75102e4 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76f6fca page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe79205ae devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xe7b72f60 input_class +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe803fbd5 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81fd504 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8b05789 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe8e45845 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xe8fc7b21 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe98649eb static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe9ac2d97 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe9b07506 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe9b0fb4f ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d4132c sata_link_resume +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 0xea5b7485 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xea65ea96 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xea6b7985 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xeab40f82 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xeab60109 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xeaeb4eb9 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xeaf0ce67 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb3933d6 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xeb61e908 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xeb7c881f seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba7fd55 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xebdb4ef3 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec063aac wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xec14101a __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec4be3fa usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xec66c83b check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xec7e449d pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xecef0d98 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xecf124c9 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xed4d25e4 tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xed62cd42 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xed788aad stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xed99280a __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xed99d433 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xedbc53c9 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xedcc38c8 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xedeed9ef fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xedefb131 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xee12af94 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xee17e537 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xee1c5859 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xee408076 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xee40b914 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xee59603a tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xee5d1f82 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee94a76a mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xee992c12 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xeeaef4b9 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xeee46db4 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xeef31419 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xeefa4d06 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xef258083 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xef268b86 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xef268ea9 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef742a7d relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa4d7c5 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xefb636ed ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xefc91531 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xefea4870 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf001dc80 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xf006ca3b pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xf027d950 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0815d94 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xf09f28be rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf0b4d08a inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xf11d72dd crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf12a4bf4 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xf151fe8d tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf160edc5 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf190a67e devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf1971caa tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c4cf43 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf1dc5b52 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xf1e5d80f async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0xf1fed0a1 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0xf206a0d9 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xf266ab87 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xf2a4d6b4 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2af92c7 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf2d5e392 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30ae21f extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30e327c adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf310c981 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33d38a2 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xf34c93a4 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf357419b scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xf39ee74d class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf3aab663 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3c4b02b security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xf3d32795 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf40433e5 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xf407f7a3 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf44b8837 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xf47a3e26 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf4821d0f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a4be41 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xf4b27da4 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf4b79037 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf4e5e60b sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4ffc335 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xf50b8ae5 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf549e09d sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf556fea1 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf55e88fa inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xf56410bd alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xf569e8c2 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5ddaf61 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xf6244a5f dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xf65348a8 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf66f87ca __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ec73f2 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xf6f26489 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xf7172158 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xf72a0c1e platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xf74656ab regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf74b09fa usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf76dbbd2 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xf777fc35 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xf77e0110 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xf797ae34 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xf7ae9f0f wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf7e3d950 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf7f76548 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf81667f5 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf835d3dd get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf850fa49 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xf8520e8f perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xf87ed9ee usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8b4d343 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xf8efa38e ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90af472 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xf9250baf pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf941cc85 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xf99c4e3c sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9dc2d21 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xf9f00ee7 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2d2ecb ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xfa8c583a trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xfa90f69b security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xfa9539d5 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfab687ea srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfac37d4f invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xfaeb0058 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xfb0548a0 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xfb05c9b4 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb387890 ata_host_register +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 0xfb74adda thermal_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xfb9bd2d9 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xfbb457a0 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbe0d499 menu_hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbfc4713 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xfc04ad43 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xfc4928c0 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xfc4c8822 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xfc4cb347 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xfc7d961d usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xfc8437cc debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xfcc467cd blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfceb446d crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xfcffaf72 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd0d1100 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xfd255686 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfd2bb63b sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xfd43d12e usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xfdb48bd7 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xfdce9d35 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xfe04d862 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xfe0ae18a rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfe30e764 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfe43aa33 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfe54e19b rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xfe5522b7 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xfe55e3e6 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xfe896b76 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9bdec9 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfe9ec332 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfeb5c74a da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed7d3cf usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xfeda4e1c look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff0e1c28 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xff1be475 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xff4305c7 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xff4f70fe crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff980640 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc64-smp +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc64-smp @@ -0,0 +1,13953 @@ +EXPORT_SYMBOL arch/powerpc/kvm/kvm 0x19789f7b kvm_read_guest_atomic +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x3c24c79b suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xb941a82e bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xd2943484 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/paride/paride 0x001e5a93 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x0a1282bf pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x282338b2 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x43a13ea4 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x49e3d282 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4bd35548 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x5587fa90 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x6c21a88c pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xa95c9ec0 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xbbc55cc8 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xd35549f0 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xe1a83161 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 0x3b9f1039 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa37972d9 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa544ee85 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaf5e3f55 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb249e84c 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/dma/dw_dmac 0x160f4833 dw_dma_generic_filter +EXPORT_SYMBOL drivers/dma/dw_dmac 0x17e727e7 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0x295764fc dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x2c0160b1 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8ce78a77 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8d7117c7 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xba35f7ad dw_dma_cyclic_start +EXPORT_SYMBOL drivers/edac/edac_core 0x04448f37 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x012d22a4 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0839f66d fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x09897663 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0be74e70 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f855fba fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2170ee28 fw_iso_context_start +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 0x4566b672 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5f0be4a0 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x60c285de fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x695c460e fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7984e504 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8323cd27 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8e98dfbc fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x934c1143 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9730df30 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x982b4285 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9fbde9c2 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb16d90b4 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb62dc6ec fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb825b4a6 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc4052d77 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc70af6c0 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcbe115ff fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdcc07871 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde25c81b fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf592debc fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/gpu/drm/drm 0x009772d7 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01b1eac2 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x022e3108 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02861a02 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02e6e099 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x056bd281 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05c81216 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06018f1d drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06e77741 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06f0a018 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0738dbb3 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07749d08 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x091ed563 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10ca6c24 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11065515 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13d64b5f drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1653eaff drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1923687b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19621a52 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x198cc2d4 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d7179bb drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d7f5cbe drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20935c42 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2158f64d drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2163d1d5 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26f57d5a drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aa7dddf drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b665f93 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f9a9c27 drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3115210d drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3392b701 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33b6ee15 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33e8dfce drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3534729c drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x358d3ea6 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3750a158 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a280c45 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b66dd85 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c4206e4 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cca02fb drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d5d32dd drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ebc8610 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f71b00c drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f91938f drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x407937ca drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42991679 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434e74d7 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a0c113 drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45e7988a drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46b25f2b drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46d77606 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47564b9f drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477cf500 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4819a054 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49d235ba drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dc61bc2 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5074cd15 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5118a47d drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52c100b1 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x536ebd8f drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54613f34 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x554c730e drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56423213 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58054356 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59747de4 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b08827b drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d20f6ef drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d70cbb9 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e81a46f drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eafb8e9 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ebf617f drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eca14b3 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f94c652 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6007c7f2 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63c0bfc9 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63e09332 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ec22d6 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6686be85 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69f77467 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b14bccc drm_mode_cea_vic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cae5f61 drm_mm_search_free_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d573423 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ddbbc6f drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ebdb1c9 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f484a63 drm_mm_search_free_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716222bd drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x726a0681 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e8efc2 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73f70f00 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74ec5cc9 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76656aa2 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76873b72 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x785af48d drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x793a1425 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79c8f928 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a4e7297 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ac81039 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b42b5d4 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3f7420 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e9939bb drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e9ae08b drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ef92d9f drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81c3e68f drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82461035 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83604849 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84a22b0b drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x853c6de4 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8767fb4e drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89ed807b drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d4df472 drm_av_sync_delay +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 0x8ea54f59 drm_prime_lookup_buf_handle +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 0x92b6f08e drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dd060a drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9717fdb3 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9811b1a5 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x983fda01 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b89fcb6 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e5ce2c7 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ffca39a drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa082fff8 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa14adee6 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2f82640 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa40fc244 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa512f531 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa645f6d3 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa711bf1d drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8e97dd8 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab7c635e drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab945fcb drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadc11f0b drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae288aec drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf7fb1db drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafc8f536 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2da3357 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb311e17b drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb33d32dd drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb381aa05 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7b8ec16 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba2d0719 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac526ea drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb7d4147 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdce9314 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe08f335 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc025d15a drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc03947ac drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0e188ed drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1e0a220 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc25a61ec drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc270a8b1 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3a3e5a6 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5e3f714 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc63691c0 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8ef6ab7 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca19cb26 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb1beab5 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcda91c46 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdbf1a88 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce873561 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd12a2c2b drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2cd9be1 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd36c758a drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd407901c drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd420b8b9 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6711df6 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8351ebe drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9292c1c drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeecf462 drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe692e454 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6b5fe64 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6d3ed07 drm_mode_connector_list_update +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 0xe835ba1a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8577ba5 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe971c7d6 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea3e4d3a drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeabccd8b drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeac0b2b9 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef4cff54 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef66f35f drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08d6bd6 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf139ebb5 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1d1325e drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2d7c0ed drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf303b938 drm_prime_remove_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d64d8d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5e2a7d1 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa955c3c drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc2cddd5 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcb86c8b drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfda6865d drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe5594b0 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff6a6cbd drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09279431 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13ac568d drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1db56062 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x245308b5 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2954c1d1 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a247037 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f1c4ff2 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d64a944 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58caf5b3 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d3aeb44 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e6dc916 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83b2351d drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8928654d drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90894c19 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94240961 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x955cbc00 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96252924 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9baecf03 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1496d8c drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2780b05 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa2a8c56 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae23c0cd drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb04ff5e4 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2da3f4d drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbaf8d21f drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc657dfb drm_fb_helper_restore_fbdev_mode +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 0xc91ff496 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2b547ba drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd81fbb9a drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd942ac05 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3e31e35 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6eb93ce drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbd31343 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x1de2367b drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x26feafd8 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xf4ebc034 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x08a044f6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0c72fb84 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d1180f3 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12a7fe78 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16d5eae0 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17760531 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17e48a1d ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x20ff66dc ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ba4448f ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30725a9d ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31895300 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3810908f ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x39c22883 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3af40e27 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3eb6b049 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f1aeb46 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x41bbdccb ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44b2aa1f ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x48a135fc ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b00444e ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d1eea63 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ec81fe0 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50a8b9ad ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56331b20 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x575afbf4 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e975659 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f54985d ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x602e945e ttm_bo_move_memcpy +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 0x6ad020e9 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e04ec7b ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70733478 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x709e1aaa ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80c674f1 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x859b33d2 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c5ba72c ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ccf8fbd ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cf6ff32 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ef27cd1 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90e02eb4 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94f6fb0c ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x965a233a ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa19fac2f ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa51cdbd7 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4af848f ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb679ce17 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7902d7f ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb9597122 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb688314 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd12b3ca ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe791193 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1eb206e ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc24a8910 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc73a01c3 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd471d1a7 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd49a73ce ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe032799a ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe08cf7be ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe32d7e8f ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe86e7adf ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf78419aa ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa665db3 ttm_bo_unmap_virtual +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 0xc74619d4 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xda4183ec i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xba18e9ee amd756_smbus +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0fdad616 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1c9b8193 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4a658b10 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9ae18462 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd0712b0e hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb18edae2 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xbf618dc1 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x0d2df7eb adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x5337997b adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x1117d7f6 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x18558661 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1a13fbb3 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x1bceee80 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x1ed189a8 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4108dee0 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x43c4a911 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x4ceb67a5 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x54c6e327 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5c93a52b iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x5e4cbcab iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x6462ecb2 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x64ac672d iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x6b5b92b5 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x7ff06431 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x85c4ffc4 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa08c51be iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xb035c6e3 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xb1b5e4e0 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xb4fdad24 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xb9d6b211 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc910bc00 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xc9d8cbbd iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xf42cb333 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x54fbf2a1 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x9ea86cf5 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6eaf8436 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa2b38e57 iio_kfifo_allocate +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 0x7c77497f rdma_copy_addr +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 0x12c05323 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1eb908a8 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x23901d7a ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x49e1deb2 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x57c780ba cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x57e28d1e ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5e48d973 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7b6a2d8f ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8e01854e ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc07042d6 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd65befac ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd92348c2 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd9dbc0f0 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe4307d34 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xee188c0c ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xef3ca58d ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf09c407f ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x04a5be0e ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d69cb0d ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10831df9 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 0x1c2c0c82 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20408839 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x255e262f ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25fb1941 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2675a86b ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26e23595 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2874e416 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cae46f6 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d797089 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3215a6f9 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38d73f15 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c9670e5 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e87927c ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x415673db ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42880b24 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4553ee9f ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46200561 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4718b5b4 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x493defd4 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51833059 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x53c1ca2d ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x588161b0 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5abbe09c ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cff08cf rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dc93e5b ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6191f8a6 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6201abf0 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62f39957 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6989bb9b ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a2868a7 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bd05c94 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7090cbdf ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78311c9e ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x835f60d5 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85de8f91 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88a6d420 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x898452b9 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f951cc3 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91dae2c6 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9201bb9e ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9426a91c ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98c7fe82 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0eae69b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa418e120 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac34d4fd ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad0446c4 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad425c89 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaeee7ffd ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafb66e86 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4240533 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb821ea3a ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbdf857b2 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe39f7b1 ib_umem_get +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 0xc778707c ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7927e94 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc89134dc ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb2722d3 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xccb8e141 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce9a4640 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd00a520f ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1f26ace ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5707db7 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6ab5cf0 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdabe0b12 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdef03e4a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe17f54e1 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeafb554e ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebb5c155 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4a90eae ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfabdf3db ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0cb1a2a2 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x217f1b66 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x64568777 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 0x89175a0b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9a5541c7 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa75a0c12 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xac6d7fe3 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc468095c ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd1df2d4f ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd2ac28bb ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd5d80b0e ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf62be6bc ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x088464d4 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x25179e2a ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x34438288 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x47f38237 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4a149249 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7c577abb ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xefe43ddd ib_sa_service_rec_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 0x136280e0 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x18f26324 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x47d9b3be iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4b5814f3 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4d459309 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x78ae429c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xad64de0e iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc221362a iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0514b4a3 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x06f18865 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x19548849 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x26155119 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4f4c656f rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5445fcf5 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5be347fa rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5c460f14 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5ca83329 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x660e0669 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x704d4baf rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x845fcd7f rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc02f4cad rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc627d730 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc90480e0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd864156c rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xda3ada30 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe7c8dd6a rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2e09433 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe1663f9 rdma_disconnect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5401c995 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6b50b43e gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x73fd4267 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8492ff6b gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8b24a0cf __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9ab1b912 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb0968f18 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcb1e2dbf gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xeee0fe8f gameport_close +EXPORT_SYMBOL drivers/input/input-polldev 0xa9e0f34f input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xba2ed7d4 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xbb36ab30 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xed134ef3 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xe31b79de matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1799f3c4 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x63d87e4d ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xaf24b5dd ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf5f6d054 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x81153f6a 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 0x0049e810 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x07089d99 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2e1008f5 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9a89c262 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbdd54c0b sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xca5f74a0 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x0dfb5b11 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2b633963 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0f2d3215 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1df51e4c capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x224485ea capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x26c0c89b capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b9f78a5 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0xa94abfbc attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xacecdd1c detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb2215d8a capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd1a1d743 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd8dff1f7 capi_ctr_handle_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 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x00d20891 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x05dd896f b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1c4201e9 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x26433a4a b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x406a4cba avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6986eefb b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x812abe83 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa011201c b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbf4ec0dd b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc626032b b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcc5eb3b4 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcec9870e b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd82c5da0 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf845d8d3 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xff74849d b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x54498b45 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x572fd004 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6cdf2ccf t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x86ae8086 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x92788992 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x954a09bf b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x97818983 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9ac8f9e7 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb640bddd b1dma_reset +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 0x808b3150 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x082574cb mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x276b872c mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x62400358 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6e89019f mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x0c9a0699 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x6fe8aa2d mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x7f29ce36 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee446766 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 0x159d3774 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x17bae64f isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x180ae8e7 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x334f7ec9 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7f4f65c2 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0264fd61 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x30da3f78 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x73ff39fa isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0b4ccd28 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1217c96c recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1f5527a2 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x235031b7 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3cb28f61 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x483aec99 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x580fb6c3 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5fd50069 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x629ed422 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6564ed17 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x737219ba get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x82666e9e recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8803dd78 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x89da0724 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a7db0f9 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x92bea89d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab5ad7e3 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbdd52acd get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbf25fd5b recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd2d321c0 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd38407d1 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +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 0xfb1581c1 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfeea73bc mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0xcd9c2d3d dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xda2a8b10 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xdfd70b0e dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xe650e933 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1049f6e7 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x14240908 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4a94a0d8 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x58361c86 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe04ab334 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe9c69bbd dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0xbbbac67d raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1f599e3d flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2df99500 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3c366db0 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3fbab5ff flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4c24a0e6 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4e4805a1 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x73ee3e66 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7a37835a flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xab0e0e4b flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xac777792 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd3c69143 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe52b0043 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf3905f49 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0973fcd7 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x15d050ab dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1775d24a dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x23bab001 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x291f3b41 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f29d105 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x35634f88 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x403dba94 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d1a3aec dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66034d9e dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x671806b9 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x79d771cb dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7dad60fa dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ed1aa30 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85fbc717 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x89793a1f dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ddf6dcb dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9e512e3f dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa17b4e71 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd15e8f25 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd2f28ebe dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd6cf8e20 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xddb61a51 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe7351aa9 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe7fc483f dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe86aa646 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeca4c46d dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf649ba2c dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xf8b196aa a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xbcfdc4bd af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9033 0xbe146aee af9033_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x3e0ebf6e atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0117b10a au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x19ee615e au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3a5041ab au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4db34a0c au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x50852280 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x57a0541b au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x59867301 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8815466a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9578b184 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x2f7f2a27 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x5d4377b7 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x9d3b748b cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x78f3dc41 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xd2941915 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x888ba1d2 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x97b4a79f cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x8cf69907 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x824c026d cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x999b6b2c cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xcfa92659 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0dbf5ae6 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x422c80a0 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6bda8eda dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8728c7f1 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc5a619fe dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0c6165a3 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x10c2d086 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x28ae5a54 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2a78bf09 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3db4f014 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x54b3c4dd dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5f731723 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6043b83f dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x721621e0 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x76a84235 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa19ae0b2 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xac846ed1 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbd2c4c1f dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd414bdc4 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe696ed03 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xc874bf6a dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x35496804 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb641fd07 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc2a5daf7 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xdf998c0f dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xeb40ad94 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xeca7847f dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x16a4409f dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x3fce66d4 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd6ab8e8e dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdf20dec5 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x202fb9c4 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x26a06da4 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x37498c44 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3f923bf5 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x4dbd4d0c dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x536b929d dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x83c1d70b dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xacb355be dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xaf92fa31 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xbe0af94e dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc41372ce dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc4998ae4 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd524fd6a dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf54cf820 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xff451e0c dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1d02f5d7 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x222aaaec dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x238fefa8 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x24908430 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x58ddb061 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5e81189c dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x614c7133 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x694a8723 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7087bffc dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x90073446 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x973637e2 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa3fe335f dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb2b547d2 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb684d255 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xcec45b48 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xd3d7cd0d dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xdc436610 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfb40c97d dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfc4d7f71 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x13f11892 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2b6f3efe dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x40902fcf dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa133fb21 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc3583e1b dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x4b1cbe1f drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x89ab7f1b drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xa0a72e36 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x95c5278b ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x74dfbe13 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x6d696ea1 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xd6b1856a isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x200cf1a8 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x8e279b67 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/it913x-fe 0x2f4fa0ed it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xdae50eb5 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xf440f72d ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xeb9d1619 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xd966bfb5 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xc16bd8ea lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x8b3c3624 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x6c5a20b5 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xbc2e02af lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe6f80b51 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x38bffb5f lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xf466f805 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xe44b69b5 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xba37fd54 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xe3a07afd mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x8fbe6578 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x8c165a39 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xe4a14a4f nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x1051dfac or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x06e1e19d or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0x78a62318 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2830 0xa7ee4be4 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/rtl2832 0x1b06543f rtl2832_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x257aafc8 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xf532de8d s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x78d8cd59 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xa8047b9c s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x00c1ab82 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x5a06ddf9 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x3a6ee17c sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xa2595b9e sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x57bf0f4f stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x0fa54931 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x31d05be6 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x41efab57 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x184f85e7 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x42b3bcf7 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x54d58bde stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xce1f13f1 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xede36e46 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x323084c1 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x4ca11c2c stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x22d5a611 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x2badee29 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe33fc4a5 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xe0420608 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xaab7fb7d tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x112fe63f tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x2784bcc5 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xdfd99b2e tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x707d3a98 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xcae8253e tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x12c3c9cf tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xb162752a tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x79aebb85 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x476958f4 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x4a5972f3 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x9f3ddcf3 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xcb169669 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xd2c97a60 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x87b1bb86 zl10353_attach +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0x88291cd5 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xa95be8f4 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/i2c/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x0f09db98 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x48f1c3d2 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x49295b6f cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/i2c/cx2341x 0xdf4f67f2 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x08bbf2f7 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/i2c/tveeprom 0x40838880 tveeprom_read +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4408daeb flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4bb9d9d2 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x65893157 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x987999c0 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9d1ca8d1 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd71bfc28 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xfdb0a134 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x18c79a87 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4cd79865 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x88964a31 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfc7f0b10 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ba376cb bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xdf651ece bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe581f47d bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x03375531 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x24edb23f dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x402a72c5 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x47d442f1 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x499eb7b1 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8d93d265 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa4aa6f2b read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xab6f3d22 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcb9ee7c3 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x90300f13 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5101fc58 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x72bf2770 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9e2f941f cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xac449825 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc13a0d62 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x385cf536 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x611a82d9 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xd166dfdb altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0cff6160 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1c959545 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x22c7314d cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x29a08c12 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3629ed5c cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4329fb1c cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb33c9b0e cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc4c1ed38 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdd4344fe cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x5999a626 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x685e13da vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3e1daca0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5a37f348 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x95fe60b4 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x972a1066 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1a4b2a23 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6bc10957 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9c2f58d1 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe7db2115 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xee25eb60 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf837ea74 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x11ba5741 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x27ac9c72 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x317c993b cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x31d276c7 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x43108b41 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4d10512f cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4f897075 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x56f25eba cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x584f7148 cx88_free_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x60cc96cb cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x627307c7 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66739b25 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6bd71306 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6e7e07e9 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x83ce9168 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x89271cbc cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x938d006f cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbe5b9c21 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd4aad81d cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc035687 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xea9961bb cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf7dfde39 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x04ad51f4 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x25ffaa79 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x35c8f228 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x60d2fd50 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x657079c7 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x66b348c3 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x74d4c42d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x89ccc20e ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8be7d051 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa5bfdc1c ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb7b2df92 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbce00b8f ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe10b52d1 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe849f320 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf0554c71 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf5add674 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf6f9379e ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x03052031 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x302d042c saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x31860f35 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3c4adccf saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5a6a6847 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x678a5c1c saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x925cc0a8 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa0adfb0f saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb8826cf2 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xccf1fa3c saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcfa67e57 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdd87f0bf saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x38a736fb ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x35dd7ef3 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x597c1053 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5fc0ee90 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x78eb1a6b soc_camera_lock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8cf4a8a4 soc_camera_unlock +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbd063313 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe52029ba soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xefb981b9 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2fc57265 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x31477397 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x08c737c5 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3ebe572e lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x53ae3f88 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6446fc95 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7955573d lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa318b4a3 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb3a40ccb lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd51a527b lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x22f633ca ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xce093162 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/e4000 0x6cc7bd33 e4000_attach +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x2bca2d37 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xbfce9c3a fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x11555880 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc4b42fbb fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf36ca0fc fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc2580 0x66d2b9f0 fc2580_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x343632fe max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x87102e5e mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x78081071 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x5e2c2f37 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xd880dcf2 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xb2c15df5 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x2425f972 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18212 0x0cd30fb3 tda18212_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xa37d81f1 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tua9001 0xf741c363 tua9001_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x68ea41c2 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xf7d0dd5c xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xf27d1d02 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x5826e2b8 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd921ca2c cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0x2a6937ed dvb_usbv2_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_cypress_firmware 0xe21a3639 usbv2_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3e4c6d51 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5dd620d6 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8518bf2e dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa2113dd0 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xad1df7f9 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb5591c0e dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd81f3fd2 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1b5a21af dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x22e001ac dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5b659138 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x769c0914 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7e4aed41 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8946c773 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9d0be986 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x7eae2ff6 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x03f1dc10 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0785c7e6 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2712fd29 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x53d9a06d dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x610bab67 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x83529421 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9f6244f4 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbd96a49e dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc3633332 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcc682d1d dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xef14ff47 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x424c633a em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x8722eb5e em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x02bafe3e gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1d9c7799 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x35987bc3 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x404a0781 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x41802a63 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x49903a81 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4995a521 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc468c60f gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8060e742 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc7c181d7 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xd47abc3c tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x1903e232 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x32c4e3f8 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0x9210e146 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xa22a3a12 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x018da9b9 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x08fb09c0 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xeb589ed0 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x05d4790b videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x05fe4708 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x22cec318 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x31b16063 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xaa8138d2 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xdc973311 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xfc58dfa2 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02a12442 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03fe57f5 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06cf5e7e v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1fd26b3e v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20cee8b5 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x223813c3 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24ceb497 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x250c548a v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x26b2bc50 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f484812 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3361d276 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34159d77 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x361a1183 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x38f24337 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x450fda3a v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x49304f16 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5240ce90 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x599db9ed v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d054b36 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5fe70134 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64ca9842 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68efcfa9 v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6cf9ec8b v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75acc4a7 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f047182 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8470b294 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ceef9b5 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8cf34bde video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f130ef5 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8f620d9 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9e9ab02 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf8086cb v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb07611b9 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb10db6e9 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7faa13f v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8082634 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcad2972 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd481255 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe8e01e9 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc0d963e5 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1188eb2 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcebf120a v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde8501c4 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4e42e63 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe502ddd7 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xecb4a6eb v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf79f26f1 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfbc849b2 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0f1ff13f memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x199c0f51 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1d62b0c9 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7919dcf8 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa4beaeb0 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb84b4abd memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc70d54c7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc8b83e9e memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd0ce0f4d memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd12c1fd3 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe63db51c memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf9466499 memstick_new_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x00fbe14c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x03952fa4 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x07a76265 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x11b56679 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14f16704 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x17a381e1 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19e9058a mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1feac0ba mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1ff64181 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x201d78e7 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x208548f3 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x44b7df47 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47bfbfcb mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x64989945 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x65a7aedc mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x808dbccc mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x921ea348 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab20a7b7 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab33bf5d mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbaeb57f9 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbc38d5ea mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0f7a55a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd5a6b7b3 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd926ae03 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9e94ea7 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdf810489 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xee90d186 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf64962f0 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfbd26ede mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x091804e0 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1ffd451b mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2fd08647 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x304ce9ef mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x33fc5274 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x38cb40cd mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c7553fa mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3fe5fc33 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x43fb4df4 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4806515b mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x561bf6da mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x58df9c5a mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x61b4350c mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x64ba42c4 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x67fe4e95 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x701c21b4 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x70d72362 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x71aad948 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x876f092a mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8b3b498c mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93e08caf mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa472dcdc mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa8149b49 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc2d311dc mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd469f35c mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd5813760 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xed257f8c mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x092d78cb i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x13e06c0c i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x17ae3492 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1ce62982 i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x26035c11 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2673c21a i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2e224a9a i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3d6d7445 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4cd35174 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4f7781e8 i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4fd26280 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x60b6a7c1 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6343b399 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x80f05bb2 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x83ffc6f4 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x95bdd92e i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa47248f0 i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xae8fe474 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe2d3af31 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe62491be i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xea07204e i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xfba55517 i2o_device_claim +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x29ffdbbd pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8907aecd pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x09cbe7c4 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x18ee3f9b mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3eac8678 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x74ad6feb mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x805a08ea mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x85486533 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x92aebf01 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb5da9d33 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc9736496 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe8ebaae9 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xeace7813 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xef59e758 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf901c551 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/tps6105x 0x3f9d0a72 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x9b58339b tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa8cea502 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 0x476c2685 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6276ef3a ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x5950f9f6 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x57a4dc06 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xba980ac0 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x6f476822 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x8e37d14a ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x03584572 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x15cbcb58 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x16f9f058 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x1f92316e tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x4302eba1 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x49879df1 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x4bb769a0 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x5c1bbc9c tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x78a5a486 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x8460e2e7 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x8fef112e tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xfe8d8fb6 tifm_unregister_driver +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x1d28f049 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x240e9c67 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x7740f9b3 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x232f11f0 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x26208e20 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf5648dae cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x08153239 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x62999a6b do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb333f452 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe2817407 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x896d581a mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x607202f5 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x424c32ac simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x3d00f554 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x88ab0106 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x0a6e1e8c denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x40107c2a denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x46634090 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x50b9f7e9 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x51507835 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaf507940 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbdfbd966 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc9ac1bf9 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdb8a97a9 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x6d914d84 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8ed39074 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xfd6f3325 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x43da7cf6 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x63a06529 nand_correct_data +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 0x14c1e944 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x82776c89 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x84b21f6a onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe768f58a onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0654e1bb arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x236363c5 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x28d39e86 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9f6e58e9 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa6cb2258 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb73feea8 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc4e8ad03 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd004ea53 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd5324d25 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf71d0602 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x3bf420bf com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x43efe9b7 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf553ea67 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x067c882f ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5db625de ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x66dd1217 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8f9dfb09 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x908e3ea1 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9e448307 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xadd85f30 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xddc3d26d ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe6d28dc2 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfbcd6c2d __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x2fd0daf6 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1d4c7197 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1e764e25 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x29d93c31 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5dda4920 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x62a9ba7c t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x67c719de cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x76665291 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7a1bed73 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7f4b216a t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7fe0c037 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9c9f41ea cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcbd5cf21 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd2aa6fa9 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe2ce6c8a cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb683257 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfdc3a39f cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x10faef42 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x185d4625 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1892fe3d cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1eb267b9 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x293aa565 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x521cc8d0 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x61b523df cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x74a0015f cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x95152914 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x963ca72a cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96a50588 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a7110e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3035303 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb3506715 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbb0ccae4 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc9ad2911 cxgb4_create_server +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 0xda5637a8 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe02acb53 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe7b14596 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xff4c31f8 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x54c4a4bc be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb1af7b83 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 0x1d400d8c mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x315124de mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x392ecbb7 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c690968 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5163e520 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x534a3433 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96b12039 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c0fb015 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa91fb0f7 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd0a014d mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd474ce3 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2f73a98 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6dba7a8 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcccb0538 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda1f0941 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe294d814 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7932345 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb77cb74 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee7768de set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7cd10e3 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa25f617 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1885c691 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x33899095 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x344c85af hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa09ec91e hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc106e842 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0ef6b029 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x224a74fe sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x28d2400b sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4b6f0dde sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x503b5471 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x7b8c4f7f irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa76a93b0 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc3b068fa sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcc1cfbc2 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xec9180e2 sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xb34a7575 mdio45_ethtool_spauseparam_an +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/ppp/pppox 0x02281391 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x16454d92 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x18acd642 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x69dd48f5 sungem_phy_probe +EXPORT_SYMBOL drivers/net/usb/usbnet 0x7dc530d1 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf7f32f2b usbnet_manage_power +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 0x0883e82a hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0f1c749d hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6a7c92be detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7f19207e unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x91fa5c0d hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x926d3944 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x93bfa446 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcff9a8f7 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd7f6dd61 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdb280f27 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe806031b register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xc33dcc8d i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x27d71e71 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x7e108e1a reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xff2baddd init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x01887062 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1df2f10d ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x300c4685 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3b804ab9 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5296a95e ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53358ce3 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6fdbef10 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x718cb5c8 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb3026176 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb762f8c1 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfe1eba74 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x346480fe ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x36a65c25 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6416d89c ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7f4e966e 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 0x9d4f99bb ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9f2dd516 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaa37928d ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaa5e18c6 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe212e548 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe9304ffb ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x45678f4d ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0x91fc76f5 ath9k_hw_wow_event_to_string +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xab870bd8 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k 0xfc5f836c ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x36182e74 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x59275983 ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8f281628 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x96b70ee1 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd213f25a ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01512500 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x036ebe11 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05792b80 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x062121f0 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09e78bda ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a51f041 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ca6e1e2 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e74e3dd ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12f0ae9c ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1508f699 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18838a4b ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18e48493 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ed407af ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1fc96427 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a88b218 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bcd7855 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f60cc7b ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3470959b ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x367c9db4 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c3328d1 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e31ef48 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3fde4276 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x407d2a1b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4158ca2f ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x440f76fd ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4725c4f0 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4777af11 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47bb8cbd ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ad88f6a ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4df9687e ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4edf293a ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fbd51d9 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5025faad ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51f88340 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52e234de ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55529d0f ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e827bdc ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60aaeee5 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b699258 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70379c6b ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7588c9a5 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7644593c ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79136361 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7929ec67 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a242454 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7aaa65b9 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ca137f0 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ce910f0 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d01b268 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d8c4bc2 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fb38ebb ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81ba9b96 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8646ce30 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89db2179 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ae32c34 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ff0142d ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90bb5358 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9158a048 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98f042e8 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99fbfbf5 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e01dddd ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e4814fb ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f4b2903 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f5d4f3e ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa39d6b49 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7b0ebb0 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa886612b ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab9a5fdf ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb134004f ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb820ad03 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb19ff1e ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0734e05 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1c28b69 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc896577e ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc97a7da9 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcce05190 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf8925e2 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0ada31f ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3f1efb3 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd41f2c16 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7e54d45 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8688972 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda7a7c0f ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb1be441 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf551f7e ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf7904cd ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe02b50e8 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe143dfcf ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2ab6861 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8772f31 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeaef997f ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec7f1fd2 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf09c25b6 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0d48d63 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9e5bbad ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdc7b3bf ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff67926a ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/atmel 0x76ed454b stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xcb592325 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf780a82e init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x264d5d68 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xf5a69cf0 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x060f07c5 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x10523a5e brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x22b7f360 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x68356d2c brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6dd0e27f brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a51b257 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x83b52c37 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x866ba82b brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8d7cc2d9 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9ece5731 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xacf129b1 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfdc5ecd1 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0a89b3f1 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0c9e4f52 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x17daec71 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1bf99d09 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1c07211d hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x29220899 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x35b9688c hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x42673b76 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x430c8a1e hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4b564df3 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ed684fe hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x577a8d41 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6cbb3a09 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c3c05f4 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c41e302 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9370a054 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa2003ffa hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa8b94fbd hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa9a3c435 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 0xb7cb634f hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb8d2e09a hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc1693f66 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc21b9e08 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc2a33b4f hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf798a27e hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x022e22d9 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x08306f43 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x13207c77 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x16c184e8 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2112377b libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x33507e76 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3e624e4b libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4d0bed5d libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6752916a libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6d791ac2 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6dc62753 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8720dd9b alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8af097cc free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x98262da6 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa3281561 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaca27f3b libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd1d64891 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdf29a3d5 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe8dad9f9 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xefafa7b0 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfae72c43 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02bbbf09 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x043875cd il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x095463e5 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x110266a5 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12fe9890 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17494cc8 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a28f451 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ae06982 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b65f7c0 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c3ff897 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x273b88e2 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x280a1f92 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x302145b3 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30ac16ee il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30b6be05 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31ef431f il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x332b9137 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34bfa6cb il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x351f200a il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b76ae3e il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cd43d31 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cfc13ea il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e17be17 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f15b310 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x427c2d75 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x516dc117 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5394bb88 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55797e45 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55c4dc47 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56891cfe il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58cbc665 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b152608 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b962714 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5cc4636e il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5fbfcded il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60259cb2 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x609abde6 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6305d834 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67c66467 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d765a60 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7365cfcc il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73919c55 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7acdf149 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ad45739 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b070500 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ec4ac24 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88ab5ff7 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c6c0805 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d178213 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x928ab704 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96a5c7fa il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96e3bc2c il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99dd6a00 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e99c5dd _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f5b7402 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa0d1ab2b il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2dd68fd il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7ab5a3d il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9a96a9f il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad3c2740 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae0340de il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0cac882 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1ebe92c il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb29e4d96 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb520f87c il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb66b424c il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd00c8d3 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc06bcad3 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc17031a7 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3094e99 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3cb84de il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc75b09a4 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb117ff7 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf51bd30 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3b63b8e il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd44c22a0 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5e0d5d4 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb6714d3 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbd1ee77 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdea1b006 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf6c82fa il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf8cf23e il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe42c7411 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5f481ad il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe62bb6f3 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xee9a6792 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeeea321a il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf005fe4a il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf07bcede il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf369926a il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf573c217 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9ba14b6 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc680b3d il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd830524 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdb489ba il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe874ab2 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08dd8699 __tracepoint_iwlwifi_dev_rx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0c50fa2b __tracepoint_iwlwifi_dev_tx +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x1ecc5465 __tracepoint_iwlwifi_err +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x675bcb86 __tracepoint_iwlwifi_info +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x8de37664 __tracepoint_iwlwifi_dbg +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x954eb7a7 __tracepoint_iwlwifi_crit +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xe2dcc8de __tracepoint_iwlwifi_warn +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2520754f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3242f10c orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4cc6a629 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x60c593d1 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x64508915 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x685d0dfd orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6b0af497 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6f7e3159 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7ad774ae orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x80f6f375 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xab2bcc8d orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc0701c95 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd0abb9e2 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe7076800 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf0ba00d9 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xff89ff5d orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05fddbdd rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0b10b5c5 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0cfc3e43 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e53d803 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19780f63 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19dc2ce7 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19eed839 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x25bf46bc rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x28c19184 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x28f5143a rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30d45e09 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3e60e694 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4bbf607a rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x51057940 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x556683dd rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5b9da34f rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6697542a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x69a6ca31 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a69b870 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b85e5a2 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x713a7294 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x76982d55 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7b3bec76 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b1f9568 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d500032 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92b2ba0d _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9561c4b5 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9f7b9359 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa96f394d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xabf1f06a _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae0b46f5 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb214f841 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbba470da rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbf23a28f rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcbbb89dc rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc1807d9 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc6280ac _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea6dc4ea rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed106296 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefcd0fc1 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf07e684b rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfdd87361 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1a6ef73f rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1f27307b rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x38ff97ae efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x39c6839a rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3e143ee8 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4533795c rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x47bebaa1 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x524a4c7b rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5ab8bef6 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79295e27 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8303dc93 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x924779a4 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9620e60e rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa0e5dc05 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa94c209d rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb4bebb94 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb75fe800 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbe07c4bc rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xca4ed5b7 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0ee7adb rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe4271955 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe49a13c1 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf127a3d7 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf2515b90 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf3db6b9c rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf81bee53 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2f4a1ba4 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x82616587 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb1ebcdb3 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe484ccc9 wl1271_free_tx_id +EXPORT_SYMBOL drivers/parport/parport 0x0047359b parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x0558d1f7 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x12d9c189 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x136b28a5 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x1deff623 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x20729d1f parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x25b32a49 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x2ebf8e9e parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x427cb3d9 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x42cbfc81 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x45300968 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x4a370be1 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5204b1ef parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6e7816e1 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x6f99678e parport_read +EXPORT_SYMBOL drivers/parport/parport 0x75582c42 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x79064156 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x7ac5d8a7 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x80d87ac9 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x881c2234 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xa4c2b120 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xb2115c68 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc79caf09 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd74aedb2 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xe89b3309 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xeaa01ec9 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xeda536c6 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xee0b7aa5 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xf5c66dfb parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xfd6a7ba8 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x7e7b8829 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xb147302e parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06752986 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x08e632bb pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0cb431cd pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x18d05ba0 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x232900ec pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5d15c2c8 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6761b362 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6a99a080 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7bec2196 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8595de73 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x91e7b2d7 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa026345c pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa3222fa4 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb767fee5 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc818a346 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc84a7397 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd7a709a7 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe297d46d pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf3d60296 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x091e2042 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x0db1eab1 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2f7bfef9 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x551ec2c0 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x58c35a45 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x60e49cc5 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x688cd8c7 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9a1f5e3b pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa0581129 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf88b07b0 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x4c7382c0 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x659dbbff pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x0eed7e3a pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x33a27927 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x4e68ec74 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x7719a724 pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x17635be1 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x841a5cbb ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xafcda09b ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xc955e169 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x09a88b4c pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x0a9092f4 pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x40779fb5 pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x436e2a55 pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x6811504f pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb1c1e4c9 pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xb9de98c9 pch_set_station_address +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xd826bade pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xde16e957 pch_ch_event_write +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0894d384 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x16dc0e31 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x39b1a3e3 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3d8d4a9e rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa0045470 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe0a2fff0 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf9ac853d rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf9f769c5 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfd076545 rproc_report_crash +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xe981ccc1 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x06487df0 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1a071f72 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1f44d57e fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x26e75ee9 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41d27645 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x46d4ad3f fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5f63f3bc fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6efc692e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb4708b10 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc6ec410c fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda2e5fe2 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0e11dbb2 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x135574fe fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x162fa842 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19cafafa fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1d5b6165 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x234dd11b fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2623b6ba fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x294706da fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b93c95e fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4d2f97 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3409ea73 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36983aff fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x42cb33bf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4893a303 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x48aca2ba fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4dfe559e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4e5600ac fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5200c942 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5460d613 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x59399941 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61af7251 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x753d1c92 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75e08e8a fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7969d523 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c01b170 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81cdf80f fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9361c04f fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x984221a6 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9cd0f81a fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f9df67c fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa30fc4de fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac43d82a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8e07fad fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb945e724 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb5b101d fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc14673ca fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc15b4a45 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4ac9b4f fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc565d0db fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc61f603b fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf0edb8d fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe0362e4f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5da1827 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6b1d29d fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe74cd41a fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9092a95 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf78c5aab fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfbef8edc fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff14a637 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffdfd0e6 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x1a293c4c sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8aa2aa8b sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc99a6fcc sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf0a25c0b sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2b1a255b mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x068b3a88 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0a44ddb0 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0b030596 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13c8b61a osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22678f70 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x25be32f7 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3c59be39 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b11ba29 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4baf562f osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x54641460 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5d01c222 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x623345a6 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x676118b4 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6f64a786 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x71085e63 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7bb75d7e osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7bf9a6c2 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x80ed4d45 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8743005b osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa1e2dd9a osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaa478490 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe1ef8ef osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc59d0822 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc5fb0eba osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc93d11e0 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcc967418 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd083993d osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd4fd1ba2 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd8a81d2a osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xddd6b4c9 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf452cef osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2ac8e87 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe98d1ac2 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf5de35f8 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf8da8f55 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9b3fd7e osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6b3ee8b4 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7e475ca6 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc1c3472f osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xca962cf5 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe2a053e8 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf0c69ac7 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x109f7522 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x33d9bbb8 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3d1f63b6 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb79a02b6 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xca0ca7fa qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd5fc7838 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xda5445c6 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdded5c49 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xea91eb43 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf7686309 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf79eed64 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x33d117e1 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x7737908f qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9d2c3b5f qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb57555ba qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb5d5addb qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfa53a527 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/raid_class 0x78a0d7ca raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xaee001a8 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xb5e7bfd3 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0856792d fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x16ca3aa0 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x54db90c2 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x61168ea3 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x69c913ab fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa5ba385d fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa960dbe1 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xab0e3aaf fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb125e45 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdc8be3d6 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdff927cc fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xea962709 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfad39acd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x20e72589 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x315901ae sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x368e280e sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ba8aa15 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x41cfd390 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x42504382 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4397e499 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x471361c3 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d8cb671 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5af54cb4 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b433a49 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5c2d379b sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60ad6058 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x620ad6c5 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x69007479 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75112cfb sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8e8649ca sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x977e5421 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa0c15508 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab311d52 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xba0d6ed5 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc84fa886 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd2cf20d6 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd31f836e sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3edaf1d sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea0c37b2 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf22a30a0 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfa951306 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0eeca011 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2e7da88c spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5409918f spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9b692809 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfae3b43e spi_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x01d7010a ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x2039af6a ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2170fc5f ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x2500976a ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x356cdb2d ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x5542e55d ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x604cc3a3 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x6cde415c ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x6dc51836 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x6fe10c9a ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x7c6a67c7 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x7c951a52 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x7d45c988 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x9f05981d ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xad1a9909 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc9bbdb4f __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xce482eef ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd2ca85c5 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe159f414 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe1fcb606 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf523e559 ssb_clockspeed +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x3d146a78 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc31c1246 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x4b678cd0 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc0e1f2bf adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x1bb575c8 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb287fd0a ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x2d7c1345 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xc26497b9 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x87f82c7d cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x00273bde go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x13baf6ea go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x293c9179 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x631a0b7d go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x6a769a13 go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xa5aa0418 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd50df761 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd7ed736f go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xea2ba308 go7007_snd_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x012a658c rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x015a4474 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x083bb8c4 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d321bbc rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x12eed03c Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x141fee9b notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1880c238 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a68e5cd rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1ba5f434 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26d07af1 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e412e51 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x30fb13cf rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x447c2e16 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4932b54f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a6ae52e rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x545ee391 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57fe09c7 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6336a992 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63bef18e rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63c704d8 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a97226e rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6b62fe43 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c39f4b0 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x778ef11a rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7902c8be rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7fa4625f RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7fefcf3c rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8393b3f3 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86338d12 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8660b2fe rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e491ac8 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96d336a2 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a06b61d rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa3e0d8a3 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa36cbec rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb08af2dc rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb26465fb rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2f754ed rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb98b7676 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbac029ae rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf835695 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc427d396 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc6276f56 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc891f766 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd399487c rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe98ff06b rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeed4fa98 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xefc5b2db rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf443227a dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4ae6e71 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01a3185c Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06ee37b7 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c4d0d94 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0fbf7e48 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13cd1651 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1df056d6 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f9d8357 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x24dfe550 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26f77835 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x271fd549 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2914fc59 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32048c3f ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34e57394 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f2f532b ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4386b753 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d18146d ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f0f6ed2 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50a9284c ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x53074e58 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5457b2f9 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x618dd0ce Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61931c1c ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61abb462 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6801564c ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a476447 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a9cb882 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80ea9338 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x840beaf9 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f3d2066 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x900ebd28 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x941dd80d ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f1fc44b ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1599bb2 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa95dcf01 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaacbfcbb ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1535324 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb17b6b92 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb66fb540 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb6ddf9bb ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb6e551c5 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba5948db ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb434040 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc637c917 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc675efd5 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc8ab35a9 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd446cd79 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda9d58c8 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdbae5ff3 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe4a11caf ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeceeb379 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee105d32 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf056579a ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa9b8a76 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe9fb717 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0017f35f set_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x00ea0cde set_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x06d6f244 get_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x09df8f3e set_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x0a8d32c3 get_bypass_slave_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1936264c set_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x1d2eb8ca get_tap_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x203af1f7 reset_bypass_wd_timer_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2070f14a set_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x27b990ef get_bypass_info_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2ba7cd35 get_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2c3f1c17 get_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2f59e636 get_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x2fdb893a get_tap_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x361cf40a get_dis_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x45ca99c3 set_wd_autoreset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x550a188c set_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x5cb59e92 get_bypass_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x66b60122 set_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x675208c0 set_tx_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x692623f2 get_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x75131ec6 set_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x76c0b7d0 set_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e872825 get_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x7e8d701e get_wd_expire_time_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x86388b07 get_bp_disc_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x93ae4648 get_wd_set_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x95e42b0d is_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9df5f807 set_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0x9e21f42e set_std_nic_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xa689a214 get_bypass_wd_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xae117788 get_bp_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xc368d30d get_dis_tap_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xccab5de0 get_bypass_caps_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd3e034b3 get_bypass_pwoff_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9c1ccfc get_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xd9d38d97 set_wd_exp_mode_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xe640f06e set_bp_disc_pwup_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xecdaa456 set_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xedcd3c1b get_bypass_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf06d67bf set_bp_dis_disc_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf57c1671 get_bp_hw_reset_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf693c3a1 bp_if_scan_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xf8237882 get_bypass_change_sd +EXPORT_SYMBOL drivers/staging/silicom/bpctl_mod 0xfa59240d get_tpl_sd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05af3c4c set_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x05b08a42 set_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0b0d5ce0 get_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x0fc2e83c reset_bypass_wd_timer +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x123a8133 get_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x157ec89c get_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2440f05a get_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2b01d1d4 set_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2c27a2f0 set_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2da97f4b is_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x2e86c67b get_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37416370 get_bp_hw_reset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x37bdab27 get_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x3da96a18 get_bypass_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4025805e get_bypass_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4940a0cc get_bypass_info +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x4d21ff51 get_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5147360c get_bp_disc_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x515d4df1 get_bypass_slave +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5560267e set_wd_autoreset +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x5be44d44 set_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6653590c get_wd_exp_mode +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x6bda14ec get_bp_dis_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x72c618ae set_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x76d47e6f set_bp_disc_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x794e3815 set_tap_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x7c6cbc16 get_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x84a263dc set_tx +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x8a16f22c set_tpl +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x946ff795 get_wd_set_caps +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x94f6aff2 get_bypass_wd +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0x9d1ecf73 set_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xb1385629 set_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xbff68c45 set_bypass_pwup +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xc871c561 get_dis_bypass +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xcee528df set_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd202dd85 get_bypass_pwoff +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xd787f151 get_wd_expire_time +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xdb6a39d2 get_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xebd25ae5 get_std_nic +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf1e9f8c1 set_bp_disc +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf224abd9 get_tap_change +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf5a591b2 set_dis_tap +EXPORT_SYMBOL drivers/staging/silicom/bypasslib/bypass 0xf643fd4c get_bp_disc_pwup +EXPORT_SYMBOL drivers/target/target_core_mod 0x01c66c4d iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x046c3e71 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x0476766a transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x095c49ea target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x119e671c sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x11f253cb transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x14c64896 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x193b116c fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x19bfe49b transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b8712a8 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f88e7b2 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x24b5e798 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2649610b transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x27d4b00b target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x383a53c8 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c3974a8 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x41f8498a spc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x42c35a63 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x45e4e979 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x4bbbd98f iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x502226a3 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x52b1cfe7 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x548ed039 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cb19bc6 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d74dc86 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e6bf65a spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ecc215d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x5fa22857 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6115d241 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x65c2d7b1 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x6af02a7b transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x744dddbf transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x751e31cb transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x78d98fee core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7bc4e3d6 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x80c16667 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x85dc4dab fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x89a5ece3 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c3eaf63 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x96636045 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x96bef118 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d0e37e4 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5f0a2c5 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa953360e sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa9448a6 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2a45c73 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5c1d8a9 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xc02c1f1e iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xc9c19be6 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc3c757b target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1baa53b transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1e9d15a target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd42988ee core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe38abb2b transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe81a8e78 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe88998a1 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf21d5bb0 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xf490bf0b transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf54a1a06 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf5c78d03 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf88a6610 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbec6651 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xff62af02 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xf9730583 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x85c3a9fd 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 0x151665a0 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x17747ec4 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1a55deab usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1ce5f615 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x38b2e96f usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x59df8e22 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x67f787a2 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x92e79726 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xca979fdc usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd1a90924 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd61b05fc usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe3bb1232 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf70d831d usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x3b92b8f0 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x72ae432b usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0cbfb438 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x19e6321f 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 0x915482c2 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x35b62f16 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x4689e205 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xb32df409 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x2d798e91 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3051f228 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x5df54574 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xca81f500 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x5d32238a matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x1c1e3e82 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x2febee98 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x4cf5d623 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x9aae8f74 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xc8765030 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x52d9633b matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0xfa7e9fa6 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0f8bfcaf matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5728dbc6 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5b1d34fe matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x6cd9cd63 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xa80b571f matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xd5d1d4b9 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x5c1761c5 video_output_register +EXPORT_SYMBOL drivers/video/output 0xc2d49520 video_output_unregister +EXPORT_SYMBOL drivers/video/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/svgalib 0x33685016 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4ea33210 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x7010a9cf svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0x7dc0962d svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8b2128c9 svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x9f4f55f2 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0xb8df08de 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 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 0x0037f847 vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x00d7e722 vme_lm_count +EXPORT_SYMBOL drivers/vme/vme 0x039d1fda vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x102e65ad vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2c87a6e0 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x339a4c93 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0x354788c2 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x3ad79e7a vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x4493f81f 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 0x4baf35a7 vme_master_get +EXPORT_SYMBOL drivers/vme/vme 0x52983a4f vme_master_write +EXPORT_SYMBOL drivers/vme/vme 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x6f9247fd vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7b3f3f43 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa40e6802 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xb3514538 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xcaabe28f vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xd81615f9 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe25052ae vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0xe48f14ca vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0xe5d49971 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf12c34ff vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa837a23b w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdad58970 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf764016e w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xffcf34c7 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x37139c6d w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xd6178d0c w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x0bcf8ee6 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x820649ff w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x121b6f6e w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x5bcf380b w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x741c1cda w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xcfe27baa w1_add_master_device +EXPORT_SYMBOL fs/btrfs/btrfs 0x02897198 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x09dceb4d ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x09fa4bcc ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x34b9e4c4 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0x35490e9d ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xe4423912 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0xedf03da5 ulist_reinit +EXPORT_SYMBOL fs/configfs/configfs 0x012409f4 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x1f574a07 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x28dde4d0 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x2b051fac config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x3da5a01c config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x40b7a4d2 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x4515e43a configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x8f788a8d config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xc7c76b89 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xdf2f9eee config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xf60c3e09 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf6f508fa config_item_init +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x1639b0f5 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x25be56d0 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x26118213 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x696c0d12 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x7e142e21 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x808ca69f ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc51aad8e ore_read +EXPORT_SYMBOL fs/exofs/libore 0xeff25a6b ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xf2702a2f ore_create +EXPORT_SYMBOL fs/exofs/libore 0xf86df2e1 ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0e64e5b2 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x214d7c80 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x3a0fd19d fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x3fb82954 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x46d10f08 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x4a704750 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x570c9ee1 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x58a332b3 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x5caac8e4 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x5d7583e3 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x61494c11 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6992f8b5 fscache_obtained_object +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 0x7742a3d4 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x7ae1a5bf __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x804225c4 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x81e65ff6 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x8a4fa532 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x8ec6900c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x90a9a96d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x90b0ff3a fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x9dd0f9ce fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa937106b __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb5a4c4fb __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb9ddfa44 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xc9c71197 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcceb3c43 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xce49fcb3 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd48c1ff1 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe7a439ff __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xf165fcf1 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xfaeecb39 __fscache_uncache_page +EXPORT_SYMBOL fs/nfsd/nfsd 0x13d93eda nfs4_acl_posix_to_nfsv4 +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 0x83585203 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x051a3a2e qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x3b511594 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x6237a0db qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xb926c7ca qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe46d4c6b 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 0x0c9f2c65 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x1e4d605b lc_find +EXPORT_SYMBOL lib/lru_cache 0x2491492d lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x315eda81 lc_set +EXPORT_SYMBOL lib/lru_cache 0x57c1de6a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x79204e17 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xaf5e4105 lc_del +EXPORT_SYMBOL lib/lru_cache 0xc60002af lc_committed +EXPORT_SYMBOL lib/lru_cache 0xd06274cd lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xd6ab3e7f lc_create +EXPORT_SYMBOL lib/lru_cache 0xe443ae44 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xe623ba4b lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xe8918dc4 lc_put +EXPORT_SYMBOL lib/lru_cache 0xf1d84408 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xfabc7e57 lc_get +EXPORT_SYMBOL lib/lru_cache 0xfe4cb3c3 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 net/802/p8022 0x5de9e89a register_8022_client +EXPORT_SYMBOL net/802/p8022 0xd280fc7e unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0xa6ab9c2c destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xd17e3f4b make_8023_client +EXPORT_SYMBOL net/802/psnap 0x35ee20f0 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xbdb95c90 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0ae9678a p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x0ff06bbf p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x11c69ef8 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x18d9e2a1 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x29364d12 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x29bb0074 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x2a3fdaa6 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x2bb4f267 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3c394189 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3deb89c7 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x3e195418 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x45a83c54 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x4e8691d1 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x541dc2f0 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x54660827 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x54670299 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x574151a1 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5784ae03 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x57c4eea0 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x5de49ab5 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5eb4cb3f p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5fbe440f p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x64c266f0 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x6d282e78 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x7b2b01ed v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x7ef1563a p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x82e5637c p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x91841e09 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9b5de944 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xab1693e5 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xae1a8c7e p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xb5244e8f v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xb5e6dfb8 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xb83bc272 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xbaef4933 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xbe20f1b6 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc9206608 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xcdd83544 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xe1d86de3 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe7a2a241 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xea244c4d p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe425703 p9_client_getattr_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x28c0ef11 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x2b17f3c2 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x409f5dd6 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xe38b3ff8 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x2872796c register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x30dff8c7 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x3cc345c8 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x44e90c40 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x4bfd5796 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x56b5fa1e vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x6492fca8 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x77535ac6 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa23d03b8 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xa3d4af9d atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xab5902a8 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xbcaf23a3 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xeb49b8e8 atm_charge +EXPORT_SYMBOL net/atm/atm 0xec428277 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x13e0d5e8 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x18cf7e8c ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3f558b0d ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4b19eee6 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x8f15d7a4 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x99caae20 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xafbf53ab ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcfaffb0c ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf7bcb9ef ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xf7f619ee ax25_hard_header +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0098d556 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07d79eb0 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07e76274 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07efd818 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0bd1bd18 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x119ccd54 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a897768 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e8eb490 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ed8e090 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25530421 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x319314b4 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44db21d8 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47d6894c bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x497e32b1 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c8ddf46 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x63fefadd hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6c4b0dd1 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70b51fb2 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7eb7713d hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9486047b hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9507dfa3 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98dc17bc bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9993d4c3 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9be49d68 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7ba7387 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xce713fb2 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef7e7af9 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf34c9cd0 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf471a134 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf59714e0 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5a10308 hci_register_dev +EXPORT_SYMBOL net/bridge/bridge 0x40e999ec br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x672a8b2e ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa10ba801 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd8dcdfad ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x0b792e12 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x45ce2b09 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 0x7c05ff28 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 0xa5d9eda9 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe66954a4 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x3d84e325 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x3fb26a3a can_rx_register +EXPORT_SYMBOL net/can/can 0x72625139 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xc7d2d8f5 can_proto_register +EXPORT_SYMBOL net/can/can 0xea287926 can_ioctl +EXPORT_SYMBOL net/can/can 0xf22160f0 can_send +EXPORT_SYMBOL net/ceph/libceph 0x0004a8ef __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00e3626d ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x09371f1f ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x0b303eae ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x0bd5dcf4 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0fdc816a ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x10b2d787 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x16a20860 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1d62708e ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x1daa2c48 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x289c9d17 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x2ace5a37 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x2db309d8 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x3716bf56 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x37197d0b ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3fa48019 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x4205ffd7 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x4792980f ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4ca60813 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x50c29f3b ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x517a0ddb ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x55e9da27 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5b8f428f ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x60251634 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6bc87824 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x6fea993e ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x72d5ef51 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x7b759520 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x7bb2728d ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7f348d89 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x7f772ebe ceph_osdc_new_request +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 0x8789a33e ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x87b33327 ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0x8aa3bde6 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x8df48a78 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x8ea29ff3 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x96227ac7 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9a14f5e4 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x9b1d0924 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa4221d41 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xa530880a ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xa9bfb9df ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa9e9cb59 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xaa197716 ceph_open_session +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 0xb8561976 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0xbc66a273 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xc0889235 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc402e9f2 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc55de604 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xc76883a7 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xc96ac80b ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xc9707deb ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcdc46677 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xce0f4126 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xce16a683 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd482f35a ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0xdf94a6a7 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe4e74fc0 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf46273eb ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x4b283f13 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1c84fa8b wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1f17d396 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3172f994 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x47b7634b ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5cd9dd89 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x639e85d0 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x67f2524e ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6ff65788 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x97838c35 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa97dac20 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbcb1f6eb wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbf21105d ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc3009823 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1ca97729 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x38600773 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x86b3f1a7 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xbdf25505 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd76741f4 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe9ea5ae9 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x14ae98ae xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x72850f62 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x412a9adb ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xca990af8 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0f0e74a9 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x12e0fa82 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x5e25e1f6 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x867a131c xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xb4458f92 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x4927210b xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x5abddd71 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x02a76c86 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x28378024 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x384075ce ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x55c48eca ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8317f88f ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcadf9bec ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd845c99d ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf7bf61b9 ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x00358d3e irttp_connect_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 0x0da03a30 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x169289eb irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x18dd0683 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x42c01840 irttp_dup +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 0x59577291 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x5ade2bce irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x5ae33a3f iriap_close +EXPORT_SYMBOL net/irda/irda 0x5de3954b irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x5ecab29d irlap_open +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x601f4ba8 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x650dc9c9 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7babd30c irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x858f9bea irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8cbc9a10 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x956e97ab alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9c2734f8 iriap_open +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa1ec263a async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xa2e784a8 irlap_close +EXPORT_SYMBOL net/irda/irda 0xa5430126 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb5c4e4d1 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbee13354 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xc3f08153 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 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 0xe697ccef irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf62470ee irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xfbf974d0 proc_irda +EXPORT_SYMBOL net/l2tp/l2tp_core 0x7bc39525 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x28fdd1d3 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x3632c858 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x7d6ffceb lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x8376089b lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x982b35ae lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x9da391df lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xbe164686 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xe5a44473 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x3284c87b llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3cf8c9c3 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x3f9334e4 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x8ced49de llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xe6d20c58 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xe7919002 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xfb2ef642 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x05676dfb __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x0570f833 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0cecab5b ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x0fae890c ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x10646cd8 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x158974b3 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x16e67bfa ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x22f320cc ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x26cc52eb ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2f66e16c __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x30ee7c99 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3263867d ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x3686d6f8 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3999f942 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x3a559a50 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x403225de ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x41ed2336 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x491f28d3 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x52c205c2 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5663c1f5 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x5a5fe886 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x606a4d97 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x658b4647 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6aaab521 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x701ea1ad ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7279a264 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7344e354 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x79015e87 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x79fd1703 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x7ce3be67 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x83a24c29 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x858787ac ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8958feda ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x8bd5994a ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x916790a8 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x94bee2da ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x9a01823e ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x9aa62f89 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x9f39cab9 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa3faaeb3 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xacf99a3b ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xad724d50 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb2c3a57c ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xb397cd3e ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xb911a2df ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb9626627 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb9bebb13 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xbb626342 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xbbbff2a7 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbdd57d8d ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xc3122c29 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc5512732 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc864ffa4 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc9df33dc ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd7ff0561 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xdd0494ee ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe505a1c3 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xe8313049 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xeb4f873a ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xee9d7f34 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xef0af0be ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xf27c0e53 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xf3053232 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xf395de03 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xf3ba30d5 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf66af6a8 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac802154/mac802154 0x3312ab49 ieee802154_register_device +EXPORT_SYMBOL net/mac802154/mac802154 0x75445f36 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xb2b60018 ieee802154_alloc_device +EXPORT_SYMBOL net/mac802154/mac802154 0xcbef3f92 ieee802154_free_device +EXPORT_SYMBOL net/mac802154/mac802154 0xd9840717 ieee802154_unregister_device +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00212d7b register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0a81ea5c ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0bc54d85 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x187e07b0 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x480d02fb ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x49ffb4b3 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7c7f46b7 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x82f5dfa5 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9405459b ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb4ec07ed ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbdb72772 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc0a59f67 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc4921e85 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd760cc23 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x41e60a23 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x439e5210 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf5c694d7 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xfdf3c730 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/nf_nat 0x00538c7e nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x1f1ddacd nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x9c2604ab __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x9d810916 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xcd9584c4 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xf86783f9 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x15dfec3c xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x32b03706 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3f0e7fb0 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x4841ed58 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x999679f3 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xb392ac81 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb95637fd xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xc19711c6 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcec3438d xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xdc11bc07 xt_register_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0a792504 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x12e7cfd0 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x1dd153f4 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x223eb9ef nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x2f7e6249 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x33e03122 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x34a9db15 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x3db48df3 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x49fc4312 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x52f824a4 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x84f6fcb2 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x8e7c6a39 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x8f4b9bee nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x90d15c11 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xaf0366ad nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb6154581 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xdbdfe346 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf3de9146 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x3155317d nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x459ee522 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x9b36647a nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa389007c nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xde4de5f5 nci_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x12353df3 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x193b8a7f nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x19f9baac nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x1a419ab4 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x4f7b8749 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x51304f7e nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x53d7eca3 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x5cf93a2d nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x6488705e nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x6ac4d7ac nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x6e604176 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x7b356060 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x87a82372 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xed70c268 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xef30a8d9 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xfcc21e5f nfc_get_local_general_bytes +EXPORT_SYMBOL net/phonet/phonet 0x2604ee9b pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x364cc656 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x5eb4c91a pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x61224f00 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x6b4d97d0 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x95240b36 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc45382ea phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xd7c112fa pn_skb_send +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x08a47a52 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x27c3b557 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2d2c0380 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x39ab83ba rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x55353f79 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x64074e07 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6c836874 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x888f310e rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9451843a key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa2044d6a rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa26732bf rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa6747695 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbeb538d9 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc9b25b39 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfd3713c2 rxrpc_kernel_end_call +EXPORT_SYMBOL net/sctp/sctp 0x7baa2a9a sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x85954014 svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0xd8fea4d8 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x59013252 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xd744c4ea wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x04aec22f cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x0511531e cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x064fc5e8 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x06d3eb59 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x079beec2 cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x08ebb732 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c08afd7 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x153c162f cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x16c48442 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19936eed cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x19d7d4df cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x202eb213 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x24050412 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x252ba06b cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x2680766f __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x28eb4838 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x2f89da35 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x366e8ded cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x39375772 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x3c2217de cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3ed53fd8 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3ed92370 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x415097b1 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x42614343 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x4de3fdf2 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x590268cb ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x59360c7b cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x5bc9fae2 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x5cc88516 cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x5f6ee37f cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x60cea66e cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x643e3b13 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c35d27d ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x6c6fd2de wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x6d94c874 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x6fa7a975 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7563ed78 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x7808b416 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x795376c2 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7ab55960 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81404b48 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x828fb8bf wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x888ea7b1 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x89330779 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x8afcb7da wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x8bbd85b1 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x8c6bd62e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8e709369 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa27d500b cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa572ce3b cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa7099f58 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xa75b14e2 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xa76df777 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xac3fabf1 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb48027c8 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xc130573e freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6a36358 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc87902a7 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xce1ffd4a cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xcf618a57 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0xd06520e9 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xd1e20568 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xd4ae6424 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xd53a52a8 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd541da4f ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xda0075b3 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xdeaa91c5 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xe4c52e5c regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xeb870bce cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0xf3b5a72c cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xfa7d87f9 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfb7717ce wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xfbc24e57 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff7053ad cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/lib80211 0x0aff423d lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x4bf7a6ad lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x7077de6e lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x89355ea8 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa3f40818 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xbcda0b0d lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x88daaa94 ac97_bus_type +EXPORT_SYMBOL sound/core/seq/snd-seq 0x166ebdc4 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 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 0xa831b466 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 0xcc40f346 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 0xf4810048 snd_seq_event_port_attach +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 0x70e4fb1e snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x7d02aa57 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb90668b2 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xc622fb29 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xa029b463 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x02738e73 snd_cards +EXPORT_SYMBOL sound/core/snd 0x037a9758 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x06d57bf2 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x12f07224 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x17e908bf snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x180d1f8d snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x284ec713 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x2ab91864 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x32282c77 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a6a71a8 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x3bae9489 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x41a78711 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x439f2661 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x45882cbc snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x47b5b9f8 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x58db5a88 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x595144ec snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x59941c42 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x5a9c8d3d snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x6772acf2 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x695682af snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x6cf40b2c snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8834f027 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x8ad9133f _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x8b6952c7 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x8ea127d1 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x945aec54 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x9644b5b2 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x979c04bb snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x985104b1 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9fb22cdc snd_device_new +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa125e1f0 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xa16f2421 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xa93911bb snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xb1e0f066 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xb24deb38 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc79ea524 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xd2a19087 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xd40a096e snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xd4baeee9 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xd5c3e9bb snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xde33ed49 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xdea5b92d snd_card_create +EXPORT_SYMBOL sound/core/snd 0xe08d8c34 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xed09751f snd_component_add +EXPORT_SYMBOL sound/core/snd 0xf566f579 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xfea9fcc9 snd_device_free +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xb6c765ce snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1a4240e6 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x4fdf06e1 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x8f709350 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xb6174b78 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xf11e4557 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0aa0212b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x0ac6c1ae snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x0ea994b1 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x15eb9ab6 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x15f68e43 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x16aa0013 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x24c3bc3e snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x343df7ce snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x357f5d7e snd_pcm_suspend +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 0x457bf2aa snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x48efe55c snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4a213f0f snd_pcm_period_elapsed +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 0x595b416c snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x5dfea097 snd_pcm_limit_hw_rates +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 0x66eae47c snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6a965060 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6be19492 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x759c8a6e snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x78440878 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x78c56dad snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x79166f6a snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x7db959a0 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x7e068c47 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x886e1d04 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x914b20f6 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x948f0b45 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x976ed926 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x9bf3db93 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xa211ef21 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xa417b678 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa829dee9 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xa94970db snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbbeba5dd snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xbef17c73 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xd36bf100 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd8213871 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd9c49ac1 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xdaed333c snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xdbc175fd snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf4970d0f snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xf7d105c3 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xfb0040ce snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0136e5cf snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3057f2be snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3786e2ae snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5a774221 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5b346169 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x644be92a snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7c526be6 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x80f83c80 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9306c1aa snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x992c277e snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xad4b7294 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc5ccd5de snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xca3d35df snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd1720ec2 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd4d8643b snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb4858d7 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfcd589e3 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-timer 0x091639e0 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x2c0fcafb snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x440e9cec snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x79d9d529 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x96d3485a snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xa19afae3 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xaf066da5 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xc2a04eec snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xc4cf5c30 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xd5bdba4e snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xdddbe7f5 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xe89573e9 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xfa7b43df snd_timer_open +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x25971465 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0b7c9f1f snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x11b42e45 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x63347bcb snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x64718a04 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7e264223 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9c4a77d4 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xaad84450 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb39618bb snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdef093d5 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0ac286e9 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x17da47d6 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x23774d74 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4949c908 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6511f4b5 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x73ea7379 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x83497bcf snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8608d0ad snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd2a7db93 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0b549368 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0db236ea iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x102ee065 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x106a252a amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a78be3c amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2d80c035 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x43808f75 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4538f3a1 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ef551c1 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x75561d70 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8f83c9a9 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x907bee03 amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x98a7f9c7 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x99270507 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9be1dd5f amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9bf9d0a2 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa9ec4148 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb469124d amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb5fcc2a6 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc0459d88 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd39a2566 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd5997f14 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe2d5ddd9 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeaa32a16 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef9ba955 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf72b2371 cmp_connection_update +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x133458cd snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x45c9d621 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8b18222c snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb038b141 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf00e8822 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf70c0b8f snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x75dadcb2 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8213cf7b snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9e9072fc snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc58c928f snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd3588e1b snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xeafc6121 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x15fd4ded snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa4922cfb snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xcf6d9cf5 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe594e26e snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x0d60afbf snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf5f4babe snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x687fd10f snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x7de5cc5f snd_tea575x_set_freq +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x93c7266a snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x260e9522 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x633cb991 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7f565f2a snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa3bf8c56 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb2e72353 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0f421f26 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x535c27a0 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7e732673 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9b5ad163 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa965d7de snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf5c93758 snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x08979fa6 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2bd99a6c snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x52bec102 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7f8fbc8e snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbe0cab55 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc1903bb2 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xce3fc6fe snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd7c2f5c7 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe94dc480 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xff8d8abf snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x402f7712 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x4c0110f3 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xfcdad9fb snd_sb16dsp_configure +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x04be6f20 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x23285759 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2aada775 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2cd312af snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3092df50 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x405fc456 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x474e5722 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x522b1446 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5a616a85 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x78b46db4 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x796f88f4 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x91f60633 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9d7ff633 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc13da82f snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc3c15d75 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd2cd29c4 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xeafb829b snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x008b7549 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x06b7a515 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x19dd89ee snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x774040dc snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7da4a598 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x852abf19 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8e6ebff7 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb096da42 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xeacd9460 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xf19755e5 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0f05f91f snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc2265a93 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd460aa8d snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1fe6edd2 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x27e25e46 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x30fdbb42 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x31a17de8 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x346af1cf oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3fc21328 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5267f043 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x53055553 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5e17f8e3 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5f0bb2be oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5f1b8a0a oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x665dcda1 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x66714c4a oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x748562ac oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f415d98 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa950a6a3 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xafec1884 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbfee810f oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xed19689a oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfd4c85e6 oxygen_write8 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1623a53a snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x24e945bb snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7345f569 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7d55da69 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xcf7a9e5c snd_trident_stop_voice +EXPORT_SYMBOL sound/soundcore 0x4e36fd4f sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0d84fe20 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x10efe591 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x34c281ba 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 0x785d4e19 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x7e7124fd snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb927b264 snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2b306b9b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x387d9194 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x450837ad __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x47b0d27c __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x72009a98 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb1b9e157 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb5ffe831 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd9db231d snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x76c72429 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x0000a523 tty_port_put +EXPORT_SYMBOL vmlinux 0x00123da3 sock_register +EXPORT_SYMBOL vmlinux 0x0044464c of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x006de2a9 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x00773cd1 blk_free_tags +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00a1bfc5 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x00a75847 bio_init +EXPORT_SYMBOL vmlinux 0x00b16e33 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x00b2c6f6 fsync_bdev +EXPORT_SYMBOL vmlinux 0x00bdea35 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x00f53f4c __alloc_skb +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x010ea14a d_find_any_alias +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x012c85b5 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x012f937f __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x01478170 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x01599c53 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x015bee16 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x0161d555 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x017be47b netdev_emerg +EXPORT_SYMBOL vmlinux 0x018a436f find_get_page +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x0191d76c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x01984d41 scsi_unregister +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01ab959c blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x01ba4baf blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x01bf1239 get_write_access +EXPORT_SYMBOL vmlinux 0x01e0d9d8 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x0230422f security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x024fd602 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0271a163 kill_block_super +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0276421f netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x027df0ce jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x02992a9f agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x02a02321 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a68294 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a97fa6 __nla_put +EXPORT_SYMBOL vmlinux 0x02b7f32a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x02d3565b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e785b8 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x02eee56e md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x02fd52d5 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x03152550 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x032e620e sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x03310fc6 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0340d4f5 console_stop +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035bf98e __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03757c9b of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ce80c read_cache_pages +EXPORT_SYMBOL vmlinux 0x03aa5e5d security_path_mkdir +EXPORT_SYMBOL vmlinux 0x03aaab9d tty_free_termios +EXPORT_SYMBOL vmlinux 0x03b9da0a ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03d2a49a seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f34e8b scsi_calculate_bounce_limit +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 0x044aaed8 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x047c194a page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x047f65d4 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL vmlinux 0x04b8f3ff ida_get_new +EXPORT_SYMBOL vmlinux 0x04c0ac6b compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04efb9f3 dquot_operations +EXPORT_SYMBOL vmlinux 0x04f1ddcc skb_pull +EXPORT_SYMBOL vmlinux 0x04fdf898 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x0502d8e4 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x051013b8 create_proc_entry +EXPORT_SYMBOL vmlinux 0x05205e1e fget_raw +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052b0635 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x0555a63f generic_read_dir +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x0573d473 vfs_symlink +EXPORT_SYMBOL vmlinux 0x0578676c ilookup5 +EXPORT_SYMBOL vmlinux 0x058147f5 key_task_permission +EXPORT_SYMBOL vmlinux 0x05816bd7 sg_miter_next +EXPORT_SYMBOL vmlinux 0x059076f5 dquot_resume +EXPORT_SYMBOL vmlinux 0x0593a99b init_timer_key +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ad9d2a misc_deregister +EXPORT_SYMBOL vmlinux 0x05c10330 user_path_at +EXPORT_SYMBOL vmlinux 0x05d352be rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x0603e41f inode_init_once +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062ef646 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x064f0c23 blk_make_request +EXPORT_SYMBOL vmlinux 0x0672660c netdev_set_master +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x069da2e5 dev_trans_start +EXPORT_SYMBOL vmlinux 0x06a6c797 inet6_getname +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06c43b6b inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x06c91a5f d_move +EXPORT_SYMBOL vmlinux 0x06f5fdd3 elevator_init +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07030ed0 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x07258a6b d_prune_aliases +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x07384197 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x074eef2e write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x07616e96 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x0764158c jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x078f5afd dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a1af62 journal_update_format +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b760e5 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x07c71e86 of_device_register +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ce1bef tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x07dcc39c d_lookup +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x08133a93 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0836f9aa dev_open +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0882f2ab __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x08873d0e set_bdi_congested +EXPORT_SYMBOL vmlinux 0x088e929b blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x08bee3d6 tty_register_device +EXPORT_SYMBOL vmlinux 0x08cf1460 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x091714ee blk_bio_map_sg +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09547d11 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x096341c2 _lv1_connect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x097b4af7 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09aa2a37 sock_no_getname +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e807bf skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09fa338d tcp_child_process +EXPORT_SYMBOL vmlinux 0x09fd2c6d seq_release +EXPORT_SYMBOL vmlinux 0x0a1c137d sk_dst_check +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a4b60cb sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x0a8d6eb8 locks_free_lock +EXPORT_SYMBOL vmlinux 0x0a97b714 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x0aaa32aa dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x0ac18edc agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x0ac40063 __quota_error +EXPORT_SYMBOL vmlinux 0x0ac45693 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0acfb9c3 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x0ad8d682 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x0af8d173 keyring_clear +EXPORT_SYMBOL vmlinux 0x0afeafce generic_fillattr +EXPORT_SYMBOL vmlinux 0x0aff2512 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b85b84f idr_replace +EXPORT_SYMBOL vmlinux 0x0b9b7fcb phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x0b9c7109 secpath_dup +EXPORT_SYMBOL vmlinux 0x0bb84bb3 fb_pan_display +EXPORT_SYMBOL vmlinux 0x0bbd264a unregister_con_driver +EXPORT_SYMBOL vmlinux 0x0bc1b7bd inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcd80ee tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x0bf379b7 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x0c04b85a simple_fill_super +EXPORT_SYMBOL vmlinux 0x0c097d2c kernel_getsockname +EXPORT_SYMBOL vmlinux 0x0c162129 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c1cdcaf skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x0c2799a9 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x0c2e6b6f d_path +EXPORT_SYMBOL vmlinux 0x0c3331bf tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x0c3de405 nf_log_register +EXPORT_SYMBOL vmlinux 0x0c505afe netdev_update_features +EXPORT_SYMBOL vmlinux 0x0c506ff4 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6190e6 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c6f7139 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x0c7b07a5 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9693c1 do_sync_write +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc15282 register_console +EXPORT_SYMBOL vmlinux 0x0ce73030 nf_reinject +EXPORT_SYMBOL vmlinux 0x0cf216f6 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x0cff2210 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x0d06ed8f skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x0d1bace6 inet_shutdown +EXPORT_SYMBOL vmlinux 0x0d294124 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x0d38ef1c blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x0d433ad9 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x0d43cf39 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x0d46eeb8 mmc_free_host +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d652bb4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d96f496 mmc_add_host +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da72a0a path_put +EXPORT_SYMBOL vmlinux 0x0dcba3f0 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x0de81739 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x0e02c2e4 seq_open +EXPORT_SYMBOL vmlinux 0x0e0df0f8 inet_getname +EXPORT_SYMBOL vmlinux 0x0e116a7e udp_sendmsg +EXPORT_SYMBOL vmlinux 0x0e1a7a95 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x0e20715c compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x0e470d3c dev_get_by_index +EXPORT_SYMBOL vmlinux 0x0e5591f3 dquot_file_open +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e75379d md_unregister_thread +EXPORT_SYMBOL vmlinux 0x0e8a7d9f tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ec7e94e tty_port_close_start +EXPORT_SYMBOL vmlinux 0x0ecf5c70 vfs_getattr +EXPORT_SYMBOL vmlinux 0x0ed43605 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x0ed7dffb pipe_unlock +EXPORT_SYMBOL vmlinux 0x0f2eeb9c kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x0f32ce60 __register_chrdev +EXPORT_SYMBOL vmlinux 0x0f39f2bb blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x0f46e92a d_set_d_op +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f54e96d inet_del_protocol +EXPORT_SYMBOL vmlinux 0x0f5546eb alloc_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x0f74d2b2 blk_start_request +EXPORT_SYMBOL vmlinux 0x0f7e26a2 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x0f80e1e0 kobject_get +EXPORT_SYMBOL vmlinux 0x0f855325 kthread_stop +EXPORT_SYMBOL vmlinux 0x0facf5f8 set_groups +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fca90f5 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x0fd95037 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x0feabea3 update_devfreq +EXPORT_SYMBOL vmlinux 0x0feceb33 pci_restore_state +EXPORT_SYMBOL vmlinux 0x0ff76918 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x1002a888 filp_close +EXPORT_SYMBOL vmlinux 0x1009eedf udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x101026f2 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x101e589f seq_printf +EXPORT_SYMBOL vmlinux 0x102cf048 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x10302e01 vfs_llseek +EXPORT_SYMBOL vmlinux 0x1055df46 flush_old_exec +EXPORT_SYMBOL vmlinux 0x105c1ad6 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x106d3d60 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x107a5188 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x108d0b2e elv_rb_add +EXPORT_SYMBOL vmlinux 0x10a84c9b mac_find_mode +EXPORT_SYMBOL vmlinux 0x10ae06a1 journal_create +EXPORT_SYMBOL vmlinux 0x10e4dccb twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x10e4edea bdi_register_dev +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f68c83 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111abe5e sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x111c2958 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x11353c3f thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x113925fd thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x11426ea1 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x1145f2a0 km_policy_expired +EXPORT_SYMBOL vmlinux 0x11502505 dma_pool_create +EXPORT_SYMBOL vmlinux 0x115ae341 pci_dev_put +EXPORT_SYMBOL vmlinux 0x115d9f69 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x115f21ac mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1171b635 _lv1_delete_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0x11828964 iget5_locked +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1183dcfa pcibus_to_node +EXPORT_SYMBOL vmlinux 0x118f7cd8 sock_no_poll +EXPORT_SYMBOL vmlinux 0x119333d8 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x11a251c2 phy_device_free +EXPORT_SYMBOL vmlinux 0x11b70416 inet_release +EXPORT_SYMBOL vmlinux 0x11c9185c of_iomap +EXPORT_SYMBOL vmlinux 0x11eb3d1a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12062b59 seq_path +EXPORT_SYMBOL vmlinux 0x1209453e jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x1225081f lookup_one_len +EXPORT_SYMBOL vmlinux 0x126ac8ec sync_blockdev +EXPORT_SYMBOL vmlinux 0x12766372 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x128b1e89 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x1290b20a scsi_block_requests +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cb6622 _lv1_map_device_dma_region +EXPORT_SYMBOL vmlinux 0x12d109bf inet_csk_accept +EXPORT_SYMBOL vmlinux 0x12d66962 skb_append +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e4cfdf ida_simple_remove +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f1eb2b agp_put_bridge +EXPORT_SYMBOL vmlinux 0x12f97203 phy_find_first +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x1311c53e compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x1316e977 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x1321b55b blk_init_tags +EXPORT_SYMBOL vmlinux 0x132d68f4 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133288f3 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x138664bb write_one_page +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13cefe83 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13eacd09 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x140f8e95 sock_create +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x14217150 sock_edemux +EXPORT_SYMBOL vmlinux 0x142995e3 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x1429d092 blkdev_put +EXPORT_SYMBOL vmlinux 0x1436c76a skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x14640a22 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x14842144 vio_find_node +EXPORT_SYMBOL vmlinux 0x1494caa3 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x1499d4e2 udp_poll +EXPORT_SYMBOL vmlinux 0x149acc71 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x14b9e6a0 mach_powermac +EXPORT_SYMBOL vmlinux 0x14bcb3b2 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x14c0066d remove_arg_zero +EXPORT_SYMBOL vmlinux 0x14c9f535 blk_init_queue +EXPORT_SYMBOL vmlinux 0x14e00cb9 sock_wake_async +EXPORT_SYMBOL vmlinux 0x14e1b656 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1514196e fb_class +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x151752c3 unregister_key_type +EXPORT_SYMBOL vmlinux 0x151b9106 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x151f9455 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x152d9643 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x152e9473 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x1532bd32 __page_symlink +EXPORT_SYMBOL vmlinux 0x15413e96 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1559d9bf pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x15639811 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x158596c3 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x1598ed8e dev_set_group +EXPORT_SYMBOL vmlinux 0x159e5a18 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x15b47802 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x15ef1cb6 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x15f571ec blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x15f9bb05 dev_close +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x1620d16a phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x16229028 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x164035cf tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x1648dc8c __get_user_pages +EXPORT_SYMBOL vmlinux 0x1652d186 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x16782093 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x1683e8ae freeze_super +EXPORT_SYMBOL vmlinux 0x1684067b bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x16c20561 user_revoke +EXPORT_SYMBOL vmlinux 0x16caf0e5 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0x1734cf4d phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x1743db5b sk_wait_data +EXPORT_SYMBOL vmlinux 0x17507d46 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x1757810d mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x176b2701 release_sock +EXPORT_SYMBOL vmlinux 0x176cbb52 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x1773096b of_phy_connect +EXPORT_SYMBOL vmlinux 0x17908520 agp_enable +EXPORT_SYMBOL vmlinux 0x1790ad84 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x1799da0f release_firmware +EXPORT_SYMBOL vmlinux 0x17a1e036 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x17a96bb6 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x17b1864d agp_bridge +EXPORT_SYMBOL vmlinux 0x17ba17ea kill_litter_super +EXPORT_SYMBOL vmlinux 0x17bcb447 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x17c9cb3d scsi_print_result +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +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 0x1805cb57 agp_copy_info +EXPORT_SYMBOL vmlinux 0x18149394 pcim_iomap +EXPORT_SYMBOL vmlinux 0x181bcad8 cdev_del +EXPORT_SYMBOL vmlinux 0x1822bab5 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x183e69cc inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x183fc628 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184d8ffe i2c_del_driver +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185eff91 journal_load +EXPORT_SYMBOL vmlinux 0x18780a5c inode_needs_sync +EXPORT_SYMBOL vmlinux 0x187cd209 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a52d66 scsi_execute +EXPORT_SYMBOL vmlinux 0x18b1fa15 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18ff9b30 seq_write +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a6b257 pci_enable_obff +EXPORT_SYMBOL vmlinux 0x19b51401 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x19fc5e59 empty_aops +EXPORT_SYMBOL vmlinux 0x19fd8221 sget +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a204180 sk_common_release +EXPORT_SYMBOL vmlinux 0x1a2f60c1 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x1a2f6945 __next_cpu +EXPORT_SYMBOL vmlinux 0x1a480e14 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x1a62b492 phy_start +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1aac22bc md_register_thread +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ac7371d __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x1acb5d40 dscr_default +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1240f ps2_init +EXPORT_SYMBOL vmlinux 0x1ae1ef51 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x1ae8962e __pci_register_driver +EXPORT_SYMBOL vmlinux 0x1af4de77 input_get_keycode +EXPORT_SYMBOL vmlinux 0x1afb3446 page_symlink +EXPORT_SYMBOL vmlinux 0x1aff4b45 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b15b67d fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2c55e1 seq_lseek +EXPORT_SYMBOL vmlinux 0x1b38bf08 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x1b3e3b33 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1b404e16 kdb_current_task +EXPORT_SYMBOL vmlinux 0x1b4c66ea dm_unregister_target +EXPORT_SYMBOL vmlinux 0x1b5e944c dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9d5f8c jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba65bf5 nf_log_packet +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bc79e5c __serio_register_port +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c006cda clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4bbcf4 lro_flush_all +EXPORT_SYMBOL vmlinux 0x1c4dab93 _lv1_connect_irq_plug +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c82f580 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x1c9b329d igrab +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cd3a4e9 __frontswap_load +EXPORT_SYMBOL vmlinux 0x1cf6b91c blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x1cf6c107 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x1d14cefc tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x1d4220cf journal_restart +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d6d4b75 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x1d771b1e swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x1daca60d genl_notify +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db40e58 macio_release_resources +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc422cf scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de32821 __sock_create +EXPORT_SYMBOL vmlinux 0x1de9193c scsi_put_command +EXPORT_SYMBOL vmlinux 0x1deef8c7 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x1df0fe5e abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x1dfc8db8 pci_save_state +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3f0804 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x1e3f5a5a sock_sendmsg +EXPORT_SYMBOL vmlinux 0x1e3f6b85 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x1e4bc8c7 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x1e515c14 kill_bdev +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb5c81a compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x1ebf5ae0 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x1eefcf54 kobject_set_name +EXPORT_SYMBOL vmlinux 0x1f0ce746 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x1f208bbc generic_listxattr +EXPORT_SYMBOL vmlinux 0x1f7a1974 of_get_parent +EXPORT_SYMBOL vmlinux 0x1f822217 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x1f89d613 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x1fab0d9a netif_device_attach +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdd9314 file_open_root +EXPORT_SYMBOL vmlinux 0x1fe7b4ab pasemi_write_dma_reg +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1fee0de3 dentry_open +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200556ca thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x20056746 ifla_policy +EXPORT_SYMBOL vmlinux 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x2017c6fd register_netdevice +EXPORT_SYMBOL vmlinux 0x2017d2d7 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x202beab7 generic_writepages +EXPORT_SYMBOL vmlinux 0x205c246d netdev_alert +EXPORT_SYMBOL vmlinux 0x2062866d journal_force_commit +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207e6d50 __put_cred +EXPORT_SYMBOL vmlinux 0x20945a9e __elv_add_request +EXPORT_SYMBOL vmlinux 0x209a36cb rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20a86b3f of_get_pci_address +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c701b6 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x20d202db i2c_transfer +EXPORT_SYMBOL vmlinux 0x20ec5ba3 bdget_disk +EXPORT_SYMBOL vmlinux 0x20feff49 dev_deactivate +EXPORT_SYMBOL vmlinux 0x21291370 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216a25bf usb_get_phy +EXPORT_SYMBOL vmlinux 0x21857203 generic_show_options +EXPORT_SYMBOL vmlinux 0x21bda20d sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x21cadca9 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x21cea910 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x21fd3c63 of_device_alloc +EXPORT_SYMBOL vmlinux 0x221360c5 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22408950 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x2244de87 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x224aaeec softnet_data +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x2289643e security_path_truncate +EXPORT_SYMBOL vmlinux 0x228f8bbf pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x22ae418b tty_port_init +EXPORT_SYMBOL vmlinux 0x22af516f scsi_execute_req +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c54a06 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x22d3b84f dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x22e08044 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x22e0b65e remove_proc_entry +EXPORT_SYMBOL vmlinux 0x22e92b22 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2309b78f dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x23402f5c inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23618ebe bdgrab +EXPORT_SYMBOL vmlinux 0x23623d04 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x23683fcb skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x238d74e0 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ae26bc tty_port_close_end +EXPORT_SYMBOL vmlinux 0x23b1023a dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cf42c1 i2c_use_client +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f85635 put_io_context +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240a37b2 page_put_link +EXPORT_SYMBOL vmlinux 0x240ac8de filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x241dad57 set_user_nice +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242cb45f phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x24353f09 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244a2411 __first_cpu +EXPORT_SYMBOL vmlinux 0x2452ca7c sys_copyarea +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x246bfa3f serio_interrupt +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248a2794 sk_stream_error +EXPORT_SYMBOL vmlinux 0x2493ed96 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x249475de textsearch_register +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25038da1 scsi_register +EXPORT_SYMBOL vmlinux 0x2507b938 sock_no_accept +EXPORT_SYMBOL vmlinux 0x251f13b8 vfs_readv +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25609b8f simple_readpage +EXPORT_SYMBOL vmlinux 0x2566c128 block_truncate_page +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2586f9e5 inode_change_ok +EXPORT_SYMBOL vmlinux 0x258f1b33 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x259f6278 tty_throttle +EXPORT_SYMBOL vmlinux 0x25a7d339 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x25a93ce3 phy_disconnect +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25bfa931 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x25c33d1f of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25ec81ae __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x2601a5a2 serio_rescan +EXPORT_SYMBOL vmlinux 0x2609ff90 simple_setattr +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264aee9f agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265ff3c0 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x2661c3bc inode_get_bytes +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2673d9a9 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x2677af06 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x2679ef6a sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x26801601 __find_get_block +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x269b3a74 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26e6c6a2 sk_reset_txq +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f0453a blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x27034fe2 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x270566f4 __vio_register_driver +EXPORT_SYMBOL vmlinux 0x271a4c86 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x271b8d78 neigh_table_init +EXPORT_SYMBOL vmlinux 0x271db0c8 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x273d4edb mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x2743fb06 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27959a2d i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27c73921 __devm_release_region +EXPORT_SYMBOL vmlinux 0x27c7a30d dm_io +EXPORT_SYMBOL vmlinux 0x27ca07f6 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x280309be block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x28079dfa ping_prot +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281b77e9 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x28538e90 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x2859fecb neigh_lookup +EXPORT_SYMBOL vmlinux 0x2883e66e __lru_cache_add +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28bf399a kick_iocb +EXPORT_SYMBOL vmlinux 0x28cdcaaa journal_destroy +EXPORT_SYMBOL vmlinux 0x28eb4b75 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x28eb6ddd netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x28fc7852 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x290029c3 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x29103a73 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x2925b333 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2960019b eeh_check_failure +EXPORT_SYMBOL vmlinux 0x299935b5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x29a40168 start_tty +EXPORT_SYMBOL vmlinux 0x29aaae17 schedule_work +EXPORT_SYMBOL vmlinux 0x29d1f9a6 pipe_lock +EXPORT_SYMBOL vmlinux 0x29d88018 generic_make_request +EXPORT_SYMBOL vmlinux 0x2a1b8c11 udplite_prot +EXPORT_SYMBOL vmlinux 0x2a24db99 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a32e626 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a41e80f blk_recount_segments +EXPORT_SYMBOL vmlinux 0x2a58bb5e filemap_fault +EXPORT_SYMBOL vmlinux 0x2a666dbe nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x2a6bac78 km_report +EXPORT_SYMBOL vmlinux 0x2a91acbb invalidate_bdev +EXPORT_SYMBOL vmlinux 0x2abd8e6d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x2ae7b9a3 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x2b051ee6 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2b0855dd follow_down +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1b42e0 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x2b1e0782 deactivate_super +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b300ae6 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x2b349a87 generic_getxattr +EXPORT_SYMBOL vmlinux 0x2b5e47cb con_is_bound +EXPORT_SYMBOL vmlinux 0x2b65fc40 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x2b66af16 xfrm_input +EXPORT_SYMBOL vmlinux 0x2b6ee096 kern_unmount +EXPORT_SYMBOL vmlinux 0x2b83ccef __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2baf4ea8 qdisc_reset +EXPORT_SYMBOL vmlinux 0x2bc77ab4 lock_fb_info +EXPORT_SYMBOL vmlinux 0x2c1cd4a4 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x2c1f294e update_time +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c4c7997 _lv1_construct_lpm +EXPORT_SYMBOL vmlinux 0x2c5642df devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x2c63746c mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c7cceaa tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2cbc1cb2 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x2cbd675b blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x2cc82cbb pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2cd13d5a mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfb5c56 of_phy_attach +EXPORT_SYMBOL vmlinux 0x2d0f3dea dev_uc_flush +EXPORT_SYMBOL vmlinux 0x2d129892 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d22ca67 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x2d2a07a6 giveup_altivec +EXPORT_SYMBOL vmlinux 0x2d7299fb pci_iounmap +EXPORT_SYMBOL vmlinux 0x2d7c93e1 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2d81f24f path_get +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d9b9dcb __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x2da27363 giveup_vsx +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dc2a25b __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x2dc88a16 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e01dcec mii_link_ok +EXPORT_SYMBOL vmlinux 0x2e1bef92 eeh_subsystem_enabled +EXPORT_SYMBOL vmlinux 0x2e24a923 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e45d64b netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x2e832a3c mach_pseries +EXPORT_SYMBOL vmlinux 0x2e8a32d3 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x2e8c44c8 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2e9ab490 have_submounts +EXPORT_SYMBOL vmlinux 0x2eb4ebb0 vfs_statfs +EXPORT_SYMBOL vmlinux 0x2ee10472 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +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 0x2f12d3ed scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3e9219 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x2f82bc2d blk_peek_request +EXPORT_SYMBOL vmlinux 0x2f9b10df scsi_get_command +EXPORT_SYMBOL vmlinux 0x2fa29369 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x2fa6cb91 sys_fillrect +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x30113998 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302df7d5 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x304c841a generic_permission +EXPORT_SYMBOL vmlinux 0x305b4c99 cad_pid +EXPORT_SYMBOL vmlinux 0x30621a53 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x306d5302 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x30759b7e i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30c01c8e elv_abort_queue +EXPORT_SYMBOL vmlinux 0x30c10ce2 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30e0aa07 iterate_fd +EXPORT_SYMBOL vmlinux 0x30e0d12f wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x30fdca09 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x3102c5c2 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31197d5c lock_may_write +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x3141213f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x314445eb sk_receive_skb +EXPORT_SYMBOL vmlinux 0x3145128b skb_copy +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3152ffaa sock_no_bind +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x315e832b journal_revoke +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3199ef67 mpage_writepage +EXPORT_SYMBOL vmlinux 0x319cf351 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x319f914e netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x31a87930 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x31b51d5f kthread_bind +EXPORT_SYMBOL vmlinux 0x31b7f300 _lv1_set_lpm_signal +EXPORT_SYMBOL vmlinux 0x31b8bf2d vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x31c94a32 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x31cd509a _lv1_net_control +EXPORT_SYMBOL vmlinux 0x31d87618 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x31eb8abe single_open +EXPORT_SYMBOL vmlinux 0x31ee4966 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x31f8a9f3 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x3227645b neigh_update +EXPORT_SYMBOL vmlinux 0x32372f7f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x326bc9f8 get_gendisk +EXPORT_SYMBOL vmlinux 0x327388ce scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x32775550 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x327bf883 of_can_translate_address +EXPORT_SYMBOL vmlinux 0x328238ef pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x32865401 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x3289a571 md_error +EXPORT_SYMBOL vmlinux 0x32b2cd8d posix_test_lock +EXPORT_SYMBOL vmlinux 0x32bb04c8 from_kqid +EXPORT_SYMBOL vmlinux 0x32c1ebc5 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x32c8f00d sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x32e4e8ec dma_common_mmap +EXPORT_SYMBOL vmlinux 0x32f596c2 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x331aec22 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x331f40bf lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x3325fe13 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33a683fa __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x33b5a36e blkdev_get +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33d3b91f __destroy_inode +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x3421ec73 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3467dea9 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34909aa2 inode_permission +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a2e84d idr_get_new +EXPORT_SYMBOL vmlinux 0x34c2d8ae tcp_disconnect +EXPORT_SYMBOL vmlinux 0x34d9ec40 prepare_binprm +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350fdc81 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x356939e6 get_tz_trend +EXPORT_SYMBOL vmlinux 0x356b3248 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x356c1b0d tcf_action_exec +EXPORT_SYMBOL vmlinux 0x359c8c05 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x35a102fd gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35c62cc6 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35d9cd4e proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35fcd751 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x35ff924c misc_register +EXPORT_SYMBOL vmlinux 0x360597f8 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x361e9a67 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x36537989 cdev_init +EXPORT_SYMBOL vmlinux 0x365655c7 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x3667b153 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x367f45c7 save_mount_options +EXPORT_SYMBOL vmlinux 0x368a95c3 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x368cede0 dev_addr_del +EXPORT_SYMBOL vmlinux 0x3690f2ca get_disk +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36afc8fd dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36c368aa netpoll_print_options +EXPORT_SYMBOL vmlinux 0x36c86933 simple_release_fs +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f9cd94 rcu_is_cpu_idle +EXPORT_SYMBOL vmlinux 0x37150f7d tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37249f86 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x3730e2f9 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x375c0ef7 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x377a3a57 kernel_read +EXPORT_SYMBOL vmlinux 0x37ab1b7d iget_locked +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e90e99 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x37e9303e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x37f84a6c of_node_put +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x3859d091 input_register_handler +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a35920 free_netdev +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38b911b0 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x38e551c8 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x38e96773 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x392414f7 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x3937d2b2 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3955b9be input_reset_device +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39573eed neigh_for_each +EXPORT_SYMBOL vmlinux 0x39786ff3 dev_printk +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x399e2743 no_llseek +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39cf3343 tcp_connect +EXPORT_SYMBOL vmlinux 0x39de4e3a blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x39f173ad validate_sp +EXPORT_SYMBOL vmlinux 0x3a0ebbbc submit_bh +EXPORT_SYMBOL vmlinux 0x3a176768 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x3a17e5e4 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a235597 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x3a407277 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x3a52b5c1 mapping_tagged +EXPORT_SYMBOL vmlinux 0x3a66625a dev_get_stats +EXPORT_SYMBOL vmlinux 0x3a75899b neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa290b2 mmc_resume_host +EXPORT_SYMBOL vmlinux 0x3abeb8d8 dev_err +EXPORT_SYMBOL vmlinux 0x3ac6921b i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x3ae685ef kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x3af7d110 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x3b1823c0 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b4b0a97 mb_cache_create +EXPORT_SYMBOL vmlinux 0x3b5a954a __pskb_copy +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b66bf66 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x3baebeae pci_bus_type +EXPORT_SYMBOL vmlinux 0x3bb224ff generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x3bb4d9e7 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x3bc56292 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd99777 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x3bdd85ee dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfa59bc skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x3c176258 input_register_device +EXPORT_SYMBOL vmlinux 0x3c38fe43 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x3c47080e swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x3c6997bd dev_mc_del +EXPORT_SYMBOL vmlinux 0x3c6bc0a5 blk_end_request +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca7cb44 paca +EXPORT_SYMBOL vmlinux 0x3caf0133 tty_hangup +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d16e756 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x3d3f01b9 dev_notice +EXPORT_SYMBOL vmlinux 0x3d541ea5 follow_up +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d586708 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x3d66f05d ip_getsockopt +EXPORT_SYMBOL vmlinux 0x3d9d0e73 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x3db0f72d i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x3db61ab7 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcde53e netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x3dd735f3 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x3de30231 security_path_symlink +EXPORT_SYMBOL vmlinux 0x3de642f6 revert_creds +EXPORT_SYMBOL vmlinux 0x3de8c707 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x3deff652 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1b1467 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x3e25086e skb_store_bits +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e35ff84 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x3e39f7cc blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e5dcbbd account_page_dirtied +EXPORT_SYMBOL vmlinux 0x3e646df7 twl6040_power +EXPORT_SYMBOL vmlinux 0x3e6a0992 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +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 0x3ede45ff qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x3ee853a0 bdi_unregister +EXPORT_SYMBOL vmlinux 0x3eeb7605 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f1a9e6e jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x3f2c1e76 bio_map_kern +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5a0a7e blk_execute_rq +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fc94ca5 of_dev_get +EXPORT_SYMBOL vmlinux 0x3fdd4c63 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x405b1bb0 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40679b6f scm_fp_dup +EXPORT_SYMBOL vmlinux 0x406cc869 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409912ed sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ac58be __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40e1fbe6 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x40f81053 complete_request_key +EXPORT_SYMBOL vmlinux 0x40fcb8f6 bio_reset +EXPORT_SYMBOL vmlinux 0x4106340d tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x410fc9aa padata_alloc +EXPORT_SYMBOL vmlinux 0x4130bacd dma_iommu_ops +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414c2e8c twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4176c78a rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419b7863 d_find_alias +EXPORT_SYMBOL vmlinux 0x41b7c28d xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x41ca3448 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x41e90efc unlock_new_inode +EXPORT_SYMBOL vmlinux 0x42039532 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x42068711 skb_find_text +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42146a56 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x42225be2 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x4238af78 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x423b00c6 do_splice_to +EXPORT_SYMBOL vmlinux 0x424ba782 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x4255a00f agp_free_page_array +EXPORT_SYMBOL vmlinux 0x42574b41 unregister_netdev +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x428f24f9 posix_acl_create +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a72e07 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x42d41877 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x42ee6481 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430c3aa4 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439bcb00 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43b7de05 tty_register_driver +EXPORT_SYMBOL vmlinux 0x43c4ad0b __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x43cc764d pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x43db4571 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x43e0a338 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x43e1ae94 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43fdc5aa devm_usb_put_phy +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4424329e locks_init_lock +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x44727b6b security_path_unlink +EXPORT_SYMBOL vmlinux 0x44858bd9 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x448e5a99 led_blink_set +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44a29210 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44eed98a inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x44f0ec2e vm_map_ram +EXPORT_SYMBOL vmlinux 0x450bb516 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x4511c1b0 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x451f1d3f max8925_reg_read +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4541603c mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x455ad849 key_revoke +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4599d5dd mount_nodev +EXPORT_SYMBOL vmlinux 0x459a30e3 poll_initwait +EXPORT_SYMBOL vmlinux 0x459c9c02 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x45a1196f of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45ce31e9 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x46081db9 register_cdrom +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4628614f jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x464b02f0 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x465fc7db mntput +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46a3eebd xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46d3827f dcache_dir_open +EXPORT_SYMBOL vmlinux 0x46f91c7c fb_set_var +EXPORT_SYMBOL vmlinux 0x46f95a06 set_create_files_as +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4702f94e request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x47349393 devm_free_irq +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47456274 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x475509b8 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x47754e09 serio_close +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 0x47e19364 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x47f9c0cb dentry_unhash +EXPORT_SYMBOL vmlinux 0x48002633 console_start +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x480ab42a __next_cpu_nr +EXPORT_SYMBOL vmlinux 0x48153e62 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x4818184e cdrom_check_events +EXPORT_SYMBOL vmlinux 0x4827ef4c elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4837e213 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x48403773 d_add_ci +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 0x4866b181 bio_put +EXPORT_SYMBOL vmlinux 0x486d5eef kmem_cache_free +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x4887e58b sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x48bec3ed udp_seq_open +EXPORT_SYMBOL vmlinux 0x48cd1866 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x48ced788 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x48d49e94 vfs_read +EXPORT_SYMBOL vmlinux 0x48d63cc8 sg_miter_start +EXPORT_SYMBOL vmlinux 0x48dabdf5 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x48e8eb03 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x48f83b49 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49049b8e cdev_alloc +EXPORT_SYMBOL vmlinux 0x49141197 register_exec_domain +EXPORT_SYMBOL vmlinux 0x4920c3d0 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x49218d3e inet_del_offload +EXPORT_SYMBOL vmlinux 0x493c14a1 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x493eee18 agp_backend_release +EXPORT_SYMBOL vmlinux 0x49427d49 bio_pair_release +EXPORT_SYMBOL vmlinux 0x495ec6eb pasemi_dma_alloc_buf +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x498684da tcf_em_register +EXPORT_SYMBOL vmlinux 0x49a821b3 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49e01a39 input_free_device +EXPORT_SYMBOL vmlinux 0x49ecc4dd kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x49f9aa84 ppp_input +EXPORT_SYMBOL vmlinux 0x4a07910d deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x4a1a0a31 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a9e5837 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x4aa3c24f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x4aba949b __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b14aabd tty_name +EXPORT_SYMBOL vmlinux 0x4b21f6c0 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b3d4de1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b7c5bd7 dput +EXPORT_SYMBOL vmlinux 0x4b7cf957 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b9bc73e inode_init_owner +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2cd2b3 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x4c34ed6a cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x4c361608 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x4c3ba7e5 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x4c4b1c02 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x4c5897fc tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4c622ed4 dquot_disable +EXPORT_SYMBOL vmlinux 0x4c894f1b kernel_sendpage +EXPORT_SYMBOL vmlinux 0x4ca8ca6f truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4caca540 keyring_alloc +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cbf2138 ether_setup +EXPORT_SYMBOL vmlinux 0x4ccc47b5 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cee8bde dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x4d0f0f43 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x4d2fd32f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x4d38918b blk_put_request +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d54ad97 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x4d621840 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x4d6584a5 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x4d74f259 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x4d91520a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9e7eea unload_nls +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4da96de6 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x4dacc156 tty_unlock_pair +EXPORT_SYMBOL vmlinux 0x4db284d7 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4ddf6058 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e183b89 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x4e1fa34c force_sig +EXPORT_SYMBOL vmlinux 0x4e256a97 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x4e2b1973 account_page_redirty +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3bab8c send_sig +EXPORT_SYMBOL vmlinux 0x4e45255a __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x4e4b1db7 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x4e4ed52b free_mdio_bitbang +EXPORT_SYMBOL vmlinux 0x4e4f5b33 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x4e5f8a1b scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x4e65e422 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x4e6975c2 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e96a68e genl_register_family +EXPORT_SYMBOL vmlinux 0x4e987515 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ec58813 dev_driver_string +EXPORT_SYMBOL vmlinux 0x4eccb2ed wake_up_process +EXPORT_SYMBOL vmlinux 0x4ed247d7 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4f0b9c01 vfs_fsync +EXPORT_SYMBOL vmlinux 0x4f149ba5 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f683b2f set_anon_super +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6afca6 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x4f710c26 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x4f7221c4 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x4fae7dd7 idr_remove +EXPORT_SYMBOL vmlinux 0x4fc1f94b elevator_exit +EXPORT_SYMBOL vmlinux 0x4fd9fb99 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe286ed would_dump +EXPORT_SYMBOL vmlinux 0x4fec5296 current_fs_time +EXPORT_SYMBOL vmlinux 0x5004b546 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x50254b23 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x506ab475 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x50777625 simple_link +EXPORT_SYMBOL vmlinux 0x50860aa8 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x50877c0c inc_nlink +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50b0dc97 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x50b20ae9 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x50c134cb __dst_free +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50d681da noop_llseek +EXPORT_SYMBOL vmlinux 0x50f47611 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x510ecb76 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5121bb6d phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x51315560 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x514860f1 do_splice_direct +EXPORT_SYMBOL vmlinux 0x5175b371 skb_trim +EXPORT_SYMBOL vmlinux 0x5177a355 padata_do_serial +EXPORT_SYMBOL vmlinux 0x517fee66 kill_pid +EXPORT_SYMBOL vmlinux 0x5183fb6c call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x519aed64 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a3e58d pci_dev_driver +EXPORT_SYMBOL vmlinux 0x51a5735e md_write_start +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520954ee linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x520c470c mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x52363d18 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x523ecf9e dcache_readdir +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525bd87b scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x527b11e4 quota_send_warning +EXPORT_SYMBOL vmlinux 0x52915de0 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x5296fde2 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x52ad1b3f agp_create_memory +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52dcc964 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x530b148e scsi_ioctl +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530d3c60 ip_fragment +EXPORT_SYMBOL vmlinux 0x5331c9b6 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x53467dea invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x534e4d67 netdev_crit +EXPORT_SYMBOL vmlinux 0x5358664c mii_check_link +EXPORT_SYMBOL vmlinux 0x53646728 vc_resize +EXPORT_SYMBOL vmlinux 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL vmlinux 0x5372cee3 __inode_permission +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x537cdfcb macio_dev_get +EXPORT_SYMBOL vmlinux 0x5380e547 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x538313ec jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x538f1116 journal_clear_err +EXPORT_SYMBOL vmlinux 0x53b6e474 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x53eb1ad0 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53ee466e sock_recvmsg +EXPORT_SYMBOL vmlinux 0x53fa72f0 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x543ff876 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x54412658 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x54568b75 register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x546129e2 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x5472fef7 should_remove_suid +EXPORT_SYMBOL vmlinux 0x5475ddde bio_integrity_split +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x54a2c9a9 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b14297 arp_send +EXPORT_SYMBOL vmlinux 0x54cc76b1 tty_unlock +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5510513c tty_check_change +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x553a761a tcf_register_action +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55634dac pci_get_slot +EXPORT_SYMBOL vmlinux 0x5564b273 xfrm_policy_delete +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 0x558612f3 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x559a9019 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x55a85cf1 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x55c7bb7f pci_request_region +EXPORT_SYMBOL vmlinux 0x55c9d458 try_module_get +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5628974c simple_pin_fs +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56369bce xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x563e63ee padata_stop +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x564cf62d dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x565385c1 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x5674cc86 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x567c5615 __neigh_create +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x56963e96 find_inode_number +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ca488c skb_split +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x5702fc08 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x571512c7 netif_napi_add +EXPORT_SYMBOL vmlinux 0x5716d737 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x572d5ff3 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572eefde dma_set_mask +EXPORT_SYMBOL vmlinux 0x57327804 bioset_free +EXPORT_SYMBOL vmlinux 0x573db279 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5774baa4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x577c0b1f neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x579d7968 __mutex_init +EXPORT_SYMBOL vmlinux 0x57a86152 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x57c20e6f scsi_remove_device +EXPORT_SYMBOL vmlinux 0x57c8e361 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x57d34ca5 of_get_next_child +EXPORT_SYMBOL vmlinux 0x5834137b clear_user_page +EXPORT_SYMBOL vmlinux 0x5837f53c sk_free +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58737ca4 icmpv6_send +EXPORT_SYMBOL vmlinux 0x5892071b phy_init_eee +EXPORT_SYMBOL vmlinux 0x58a17c4d skb_pad +EXPORT_SYMBOL vmlinux 0x58a58e20 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x58d1070a of_get_address +EXPORT_SYMBOL vmlinux 0x58f82c18 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x590aaecc mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x5920010c pci_select_bars +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x59356938 inet_select_addr +EXPORT_SYMBOL vmlinux 0x594b8048 registered_fb +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x597bd717 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x5984b2e1 input_inject_event +EXPORT_SYMBOL vmlinux 0x599b4511 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x599c62e8 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d1b1f9 journal_forget +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e1becd xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a066f86 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a3d980b scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x5a45a0cf simple_statfs +EXPORT_SYMBOL vmlinux 0x5a72c3eb fd_install +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aacc740 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x5acd7076 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x5ad52413 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x5ae2ea0f pci_disable_msix +EXPORT_SYMBOL vmlinux 0x5b25d8d4 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4db1c4 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b83f7bd inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9a7829 ida_destroy +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb2de41 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bce8e41 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x5bd2f5c2 nla_append +EXPORT_SYMBOL vmlinux 0x5be6b6a3 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x5beb63fd i2c_register_driver +EXPORT_SYMBOL vmlinux 0x5c11e76c inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c42f5d0 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x5c4c61c8 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x5c515961 padata_free +EXPORT_SYMBOL vmlinux 0x5c721f28 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x5cbe1c9f __kfree_skb +EXPORT_SYMBOL vmlinux 0x5cc5caab ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x5cc60f17 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5cd195d9 module_put +EXPORT_SYMBOL vmlinux 0x5ce89fc7 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x5cf18bda __nla_reserve +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfbd67c pci_request_regions +EXPORT_SYMBOL vmlinux 0x5d053be1 node_data +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d1bb308 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x5d1d5e35 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5dc54a4a scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x5df6e2b3 pci_disable_obff +EXPORT_SYMBOL vmlinux 0x5e17773c proc_create_data +EXPORT_SYMBOL vmlinux 0x5e19b936 eth_header_parse +EXPORT_SYMBOL vmlinux 0x5e2b3dc4 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x5e33cafb dev_disable_lro +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e44b975 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e5678ec mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e8b93c2 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x5e93ab4c poll_freewait +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee8254f kfree_skb +EXPORT_SYMBOL vmlinux 0x5ee83aa9 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5ef1e31b set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f1114c0 phy_print_status +EXPORT_SYMBOL vmlinux 0x5f1639cd blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x5f25d75e mark_page_accessed +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f591253 d_rehash +EXPORT_SYMBOL vmlinux 0x5f696154 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x5f726c03 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5fa03c3e __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x5fa98c4e nla_reserve +EXPORT_SYMBOL vmlinux 0x5fad6bf3 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x5fb144df neigh_table_clear +EXPORT_SYMBOL vmlinux 0x5fb6904f agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x5fc56315 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x5fe23ffa alloc_fddidev +EXPORT_SYMBOL vmlinux 0x5fe87239 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6034f688 inet_frags_init +EXPORT_SYMBOL vmlinux 0x603c59af kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x6043876b end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6056766c dev_warn +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606f2bcb bd_set_size +EXPORT_SYMBOL vmlinux 0x60787279 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x607b865e fput +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x609ec8ba get_user_pages +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60acfec5 vfs_create +EXPORT_SYMBOL vmlinux 0x60f7bc1e tcp_close +EXPORT_SYMBOL vmlinux 0x61199bb4 ipv4_specific +EXPORT_SYMBOL vmlinux 0x6121eb30 input_set_capability +EXPORT_SYMBOL vmlinux 0x61226589 of_device_is_available +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612c6cad invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x612c9991 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x612e72c2 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x615a29a1 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a2d5a2 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61b693fb register_md_personality +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c94b44 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x61c9cc19 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x61d68434 mpage_readpage +EXPORT_SYMBOL vmlinux 0x61dbb05e km_policy_notify +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61e955d4 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f0b326 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x61f3e17a textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x61fdfa38 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x6200326f blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x6207ed01 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627e9104 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x627f28f1 md_integrity_register +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a40750 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x62dbbc98 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x62eac0e3 idr_for_each +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630cddc3 kern_path +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6324e65b ps2_handle_response +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x633ab3a2 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x6345ac61 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6355c5c2 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x635be2b9 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x63600313 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x637a194b of_find_property +EXPORT_SYMBOL vmlinux 0x6382dba7 mutex_lock +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63aafe65 key_invalidate +EXPORT_SYMBOL vmlinux 0x63e7bd12 __cputime_usec_factor +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63f52baf pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fd8835 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640f9709 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x647194eb of_parse_phandle +EXPORT_SYMBOL vmlinux 0x647ae255 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64c0780d mutex_unlock +EXPORT_SYMBOL vmlinux 0x64c80528 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x64d14e5d datagram_poll +EXPORT_SYMBOL vmlinux 0x64e0ed59 da9052_i2c_fix +EXPORT_SYMBOL vmlinux 0x64ea0c25 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x64f90fa2 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x6507a724 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x650a6767 prandom_u32_state +EXPORT_SYMBOL vmlinux 0x650cc535 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651f3508 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6549d112 cdrom_release +EXPORT_SYMBOL vmlinux 0x6565fa0e pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x6578a470 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65bdfc5b dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x65c3281a journal_extend +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65df8e41 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6611dafc mach_maple +EXPORT_SYMBOL vmlinux 0x6656c3a6 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x667cb0a5 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x6705e2a8 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x670b513b udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x670f5466 dm_register_target +EXPORT_SYMBOL vmlinux 0x673d39fa unlock_buffer +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67889df2 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x67adda70 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d48eab scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x682fd26c account_page_writeback +EXPORT_SYMBOL vmlinux 0x68392d77 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x684502c4 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68628e21 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688364a7 genphy_read_status +EXPORT_SYMBOL vmlinux 0x688ecda3 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x68a52812 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x68a6e7e1 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x68ea8152 macio_release_resource +EXPORT_SYMBOL vmlinux 0x68f6a0bf pci_target_state +EXPORT_SYMBOL vmlinux 0x68f9136a key_put +EXPORT_SYMBOL vmlinux 0x68fb35c8 seq_open_private +EXPORT_SYMBOL vmlinux 0x69685276 padata_start +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ccb56d ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x69d29138 netlink_set_err +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e6a6d7 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a39c9ec devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x6a4dee2f abx500_register_ops +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a6c2b1d input_event +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a828279 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x6a87fd72 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6b04efaf drop_nlink +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0749a2 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x6b19e0fc __getblk +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b25d09f journal_init_inode +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b328192 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x6b32cc75 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x6b352fb6 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x6b358cab _lv1_read_repository_node +EXPORT_SYMBOL vmlinux 0x6b387694 _lv1_end_of_interrupt_ext +EXPORT_SYMBOL vmlinux 0x6b3c67be pci_domain_nr +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 0x6b87b9e3 pci_dev_get +EXPORT_SYMBOL vmlinux 0x6b91fb5e bdevname +EXPORT_SYMBOL vmlinux 0x6b95bdd4 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x6b97f901 mount_ns +EXPORT_SYMBOL vmlinux 0x6ba0c94e dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6baf677f mnt_unpin +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcad667 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x6bcdd859 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x6bd41a9b __ps2_command +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be2439a netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x6bf05741 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6c0cd3d1 udp_disconnect +EXPORT_SYMBOL vmlinux 0x6c44b90c get_thermal_instance +EXPORT_SYMBOL vmlinux 0x6c453d8b seq_puts +EXPORT_SYMBOL vmlinux 0x6c49240d kill_fasync +EXPORT_SYMBOL vmlinux 0x6c4956f3 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x6c4bec14 inet_sendpage +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 0x6c7f83fa pci_pme_capable +EXPORT_SYMBOL vmlinux 0x6c8d8a60 generic_file_remap_pages +EXPORT_SYMBOL vmlinux 0x6c9c9aea __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6c9d500a __neigh_event_send +EXPORT_SYMBOL vmlinux 0x6ca160ec generic_file_open +EXPORT_SYMBOL vmlinux 0x6cb9d2d5 new_inode +EXPORT_SYMBOL vmlinux 0x6cd2cd03 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1743eb _lv1_get_total_execution_time +EXPORT_SYMBOL vmlinux 0x6d17ea19 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d32ad28 vio_get_attribute +EXPORT_SYMBOL vmlinux 0x6d744fa1 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x6d81f102 scsi_host_get +EXPORT_SYMBOL vmlinux 0x6d87d9df inet6_bind +EXPORT_SYMBOL vmlinux 0x6d8b1504 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6ddf9012 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df81355 netlink_unicast +EXPORT_SYMBOL vmlinux 0x6df93b71 devm_usb_get_phy +EXPORT_SYMBOL vmlinux 0x6e0d1f60 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x6e13627e backlight_force_update +EXPORT_SYMBOL vmlinux 0x6e1ba53c netif_rx_ni +EXPORT_SYMBOL vmlinux 0x6e20cf9d ip6_route_output +EXPORT_SYMBOL vmlinux 0x6e2409e7 mnt_pin +EXPORT_SYMBOL vmlinux 0x6e3a6ae7 wireless_send_event +EXPORT_SYMBOL vmlinux 0x6e4f4b31 bh_submit_read +EXPORT_SYMBOL vmlinux 0x6e6d22d3 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e8b2049 ida_simple_get +EXPORT_SYMBOL vmlinux 0x6e9bee52 pipe_to_file +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea0e3bb blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x6f0368b0 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x6f1a0d73 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2a9b74 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x6f3476c5 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x6f4b0e76 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x6f53b631 default_llseek +EXPORT_SYMBOL vmlinux 0x6f659330 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x6f81566d tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x6f985893 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x6f9ab996 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fa4c17d nobh_writepage +EXPORT_SYMBOL vmlinux 0x6fa53453 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x6faca910 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x6fc321c5 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fd7442a ps2_drain +EXPORT_SYMBOL vmlinux 0x6fde7622 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x6ffa4be3 proto_register +EXPORT_SYMBOL vmlinux 0x700398fe __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x7022eb70 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x7045b9a3 skb_insert +EXPORT_SYMBOL vmlinux 0x70487399 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x704c4365 __cputime_sec_factor +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706b9f7a pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x709589b4 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x709d2fb9 i2c_release_client +EXPORT_SYMBOL vmlinux 0x709eeba1 skb_seq_read +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70bcc5c9 skb_checksum +EXPORT_SYMBOL vmlinux 0x70c9a5de dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70e9db40 follow_pfn +EXPORT_SYMBOL vmlinux 0x70f8070e scsi_dma_map +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x71174695 dev_crit +EXPORT_SYMBOL vmlinux 0x712151ab thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713096c5 sock_no_connect +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717def44 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x71816ec0 ida_pre_get +EXPORT_SYMBOL vmlinux 0x718364e3 phy_device_register +EXPORT_SYMBOL vmlinux 0x718bcf94 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x7194d3b7 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a569ef skb_queue_head +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71cec6e8 mddev_congested +EXPORT_SYMBOL vmlinux 0x71d3f11f sock_update_classid +EXPORT_SYMBOL vmlinux 0x71e062a4 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x721b4e0d dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x721f41f8 netpoll_setup +EXPORT_SYMBOL vmlinux 0x72297321 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x724e998e usb_remove_phy +EXPORT_SYMBOL vmlinux 0x7285d98d elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x728f06cf fget +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x72acddbb bio_copy_user +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b7ed3e register_nls +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72d4e53e input_release_device +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x73230fa9 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734b5cb5 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73915575 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x739a98fb inet_sendmsg +EXPORT_SYMBOL vmlinux 0x73a52136 locks_delete_block +EXPORT_SYMBOL vmlinux 0x73bd5d7a dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x73d4958f vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x73e97386 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x74143e22 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x741ae524 netif_device_detach +EXPORT_SYMBOL vmlinux 0x743825be blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x745076d9 block_commit_write +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a74cc0 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74eabfbf nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x75057c31 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x750c3e9b dquot_enable +EXPORT_SYMBOL vmlinux 0x75129744 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7524a539 genl_register_ops +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7547a895 inet_listen +EXPORT_SYMBOL vmlinux 0x754dac78 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x754db36b pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x754f6060 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7553f4d2 bio_add_page +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x756d6bb2 set_page_dirty +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75af2c03 dev_uc_del +EXPORT_SYMBOL vmlinux 0x75b45c5f security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75da31f1 i2c_master_send +EXPORT_SYMBOL vmlinux 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x75f12bc2 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x75f62ba2 pci_disable_device +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 0x76a19c01 __frontswap_store +EXPORT_SYMBOL vmlinux 0x76a409f3 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x76ac1240 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x76ae29c5 block_write_end +EXPORT_SYMBOL vmlinux 0x76b2b15f tty_kref_put +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76e3902d arp_xmit +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77505959 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x77550b16 dev_uc_init +EXPORT_SYMBOL vmlinux 0x77664506 irq_set_chip +EXPORT_SYMBOL vmlinux 0x7770837a writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x778784ae register_filesystem +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779cad3e dev_remove_pack +EXPORT_SYMBOL vmlinux 0x779ece89 kern_path_create +EXPORT_SYMBOL vmlinux 0x77a1355d tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77ce93b3 qid_lt +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77df58e0 __invalidate_device +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f73b6d vfs_link +EXPORT_SYMBOL vmlinux 0x780037f0 tty_set_operations +EXPORT_SYMBOL vmlinux 0x7811039b of_match_device +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7855def3 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789a17f7 _lv1_destruct_logical_spe +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a65a6a padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x78cf181b genl_unregister_family +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78f676a2 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7911be8e input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x791a3ecf vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x7935520c lease_modify +EXPORT_SYMBOL vmlinux 0x793baafa rtnl_create_link +EXPORT_SYMBOL vmlinux 0x794d1fd8 genphy_suspend +EXPORT_SYMBOL vmlinux 0x79582fe7 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x79637342 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x7963dc49 truncate_setsize +EXPORT_SYMBOL vmlinux 0x796c436c splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7975bb19 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79ac6fe1 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x79e0c531 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x7a188791 prandom_bytes +EXPORT_SYMBOL vmlinux 0x7a260ecb mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a59b384 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x7a5fa294 sys_imageblit +EXPORT_SYMBOL vmlinux 0x7a6731e4 netdev_err +EXPORT_SYMBOL vmlinux 0x7a9d9088 irq_to_desc +EXPORT_SYMBOL vmlinux 0x7a9fc17d scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7aacbdcc abort_creds +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad41bf9 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7adfa71b of_phy_find_device +EXPORT_SYMBOL vmlinux 0x7ae3e690 mmc_erase +EXPORT_SYMBOL vmlinux 0x7af2893b copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7aff920a fb_validate_mode +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b14846c netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2d27e0 mpage_writepages +EXPORT_SYMBOL vmlinux 0x7b31dfff scsi_device_put +EXPORT_SYMBOL vmlinux 0x7b36c09a mmc_gpio_free_cd +EXPORT_SYMBOL vmlinux 0x7b688012 do_sync_read +EXPORT_SYMBOL vmlinux 0x7be60cac netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x7bf1a381 find_vma +EXPORT_SYMBOL vmlinux 0x7bfe6435 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c023015 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x7c0b52e3 posix_lock_file +EXPORT_SYMBOL vmlinux 0x7c0ebc93 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c194e2a max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x7c1f7bf0 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x7c27156c rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c35f4f2 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x7c37c82b block_write_full_page +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c471a6a follow_down_one +EXPORT_SYMBOL vmlinux 0x7c5682bd tty_devnum +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c67c13e bdput +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +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 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cd62adf ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7cf8b2de cpufreq_cooling_register +EXPORT_SYMBOL vmlinux 0x7cf900fa __ip_select_ident +EXPORT_SYMBOL vmlinux 0x7d0ce3ee __seq_open_private +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d376f42 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x7d43b027 security_file_permission +EXPORT_SYMBOL vmlinux 0x7d5496ce cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x7d659c0d lock_sock_fast +EXPORT_SYMBOL vmlinux 0x7d6ebe90 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x7d747645 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x7d824b16 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x7d99702e free_buffer_head +EXPORT_SYMBOL vmlinux 0x7dbd4f2b __sb_end_write +EXPORT_SYMBOL vmlinux 0x7dc0d2b3 pci_find_capability +EXPORT_SYMBOL vmlinux 0x7dc48125 eth_type_trans +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dcd2571 request_key +EXPORT_SYMBOL vmlinux 0x7dd00991 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x7dd5ebe0 pci_get_class +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df5881f nla_put +EXPORT_SYMBOL vmlinux 0x7e04bfa7 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x7e0f18e9 netif_skb_features +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e6e7d81 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x7e8180d7 block_read_full_page +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e92a04c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x7eac0823 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7ec4f7bd kobject_del +EXPORT_SYMBOL vmlinux 0x7ef7d80d ida_get_new_above +EXPORT_SYMBOL vmlinux 0x7f0ad0cb vga_client_register +EXPORT_SYMBOL vmlinux 0x7f0c6b5e __bread +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f272c83 security_path_mknod +EXPORT_SYMBOL vmlinux 0x7f2bd273 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x7f5c033b __nlmsg_put +EXPORT_SYMBOL vmlinux 0x7f6c397b key_payload_reserve +EXPORT_SYMBOL vmlinux 0x7f8cd8a2 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x7fd3bc08 put_page +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe9a060 _lv1_net_stop_tx_dma +EXPORT_SYMBOL vmlinux 0x7ff4cfd7 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x800b62e6 phy_attach +EXPORT_SYMBOL vmlinux 0x80178049 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x801a03d2 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x80254656 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x802cabce __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x804c1eb9 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x80521d47 flush_signals +EXPORT_SYMBOL vmlinux 0x805dc064 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x80630b47 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x80812503 input_grab_device +EXPORT_SYMBOL vmlinux 0x808ebf18 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80e352c9 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x80f6c2ed pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x8110566c phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x81297b85 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x81443a93 kill_anon_super +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816248d6 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x8181cdcc sock_create_lite +EXPORT_SYMBOL vmlinux 0x81929363 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b2650f generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e4cb3b of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x82039ec8 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820c87f5 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x82101c6b create_syslog_header +EXPORT_SYMBOL vmlinux 0x822a3330 alloc_file +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8261d1ee mach_pasemi +EXPORT_SYMBOL vmlinux 0x82681faa pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x828c8030 journal_stop +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82e5fa43 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x82e9b3c5 dev_add_offload +EXPORT_SYMBOL vmlinux 0x82ec2734 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x82f1a80a padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x830b015a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x831544a3 page_readlink +EXPORT_SYMBOL vmlinux 0x83272876 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x833307a8 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x8340c7da pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x8363c527 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83904333 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x8396f0a3 get_super_thawed +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b1167a bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x83bb8be8 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x83c45114 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83cbd99f flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x83f68ba2 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x8408b101 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x8416a7d0 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x84210ae3 register_key_type +EXPORT_SYMBOL vmlinux 0x843dd195 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x8456c3e0 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84a17123 dump_seek +EXPORT_SYMBOL vmlinux 0x84a8acda thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84e4c1fc twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x8533d8f1 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x85515bd8 sock_from_file +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85709bcd add_disk +EXPORT_SYMBOL vmlinux 0x858a17fe xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x85959a37 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85a7791d simple_lookup +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85ddcf76 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x8630749f inet_recvmsg +EXPORT_SYMBOL vmlinux 0x8639c47b unlock_page +EXPORT_SYMBOL vmlinux 0x864044aa ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8648688c pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86741d42 do_SAK +EXPORT_SYMBOL vmlinux 0x867554f3 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86934239 md_done_sync +EXPORT_SYMBOL vmlinux 0x86b3f68e mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x86ccd519 ip_options_compile +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x87140164 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872a9f00 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x872ef1ad pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x875d6015 load_nls +EXPORT_SYMBOL vmlinux 0x876d70f4 filp_open +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87ca8117 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x87d6b7bf netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88365528 journal_set_features +EXPORT_SYMBOL vmlinux 0x883caa9e blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x8846debd cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x8861fb58 journal_start +EXPORT_SYMBOL vmlinux 0x889d15fc cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x88a71d81 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x88afd335 set_binfmt +EXPORT_SYMBOL vmlinux 0x88b0b89d sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x88b6bd5b tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x88cda875 mount_subtree +EXPORT_SYMBOL vmlinux 0x88df61cd blk_integrity_register +EXPORT_SYMBOL vmlinux 0x88e12c0f generic_block_bmap +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x89404c68 aio_put_req +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897cf42a dst_discard +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x8983fa4c devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x898c46fc key_unlink +EXPORT_SYMBOL vmlinux 0x89a1a775 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +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 0x89e67dd0 bio_split +EXPORT_SYMBOL vmlinux 0x89f15782 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x8a19f75d tcp_parse_options +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1d9ab5 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x8a422346 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a73d7ce ip6_frag_match +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a90f2ed scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8a9e3c46 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x8aa7564e fb_show_logo +EXPORT_SYMBOL vmlinux 0x8aaa62c2 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8afd41cd seq_release_private +EXPORT_SYMBOL vmlinux 0x8b04e6fe ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x8b16094b scsi_free_command +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3c7fc4 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x8b3d2fc6 __lock_buffer +EXPORT_SYMBOL vmlinux 0x8b5da807 invalidate_partition +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b66aaac __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x8b7e5a93 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x8b825cd5 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x8ba32aea eth_header +EXPORT_SYMBOL vmlinux 0x8ba9c540 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8bdd36f6 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c055bf2 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c321a36 input_flush_device +EXPORT_SYMBOL vmlinux 0x8c5d7652 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c655e87 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8c8da122 file_update_time +EXPORT_SYMBOL vmlinux 0x8c9b59f1 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x8ca246b1 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x8ca8cf11 __dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8cb7234a d_alloc_name +EXPORT_SYMBOL vmlinux 0x8cc08bff handle_edge_irq +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd4917f mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x8ce50fe6 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x8ceccf0e thaw_bdev +EXPORT_SYMBOL vmlinux 0x8cf6574e pci_match_id +EXPORT_SYMBOL vmlinux 0x8cfe0f97 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x8d18593d pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x8d38c94b blk_run_queue +EXPORT_SYMBOL vmlinux 0x8d3dd91d commit_creds +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6906d4 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x8d692455 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x8d73c4a5 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x8d7e62f6 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x8d8c016c agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x8d8da4a1 dm_get_device +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d998f17 skb_dequeue +EXPORT_SYMBOL vmlinux 0x8dc30817 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x8ddf2138 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8df58617 d_validate +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e3944d8 module_refcount +EXPORT_SYMBOL vmlinux 0x8e3ff2f2 vmap +EXPORT_SYMBOL vmlinux 0x8e6b6d78 framebuffer_release +EXPORT_SYMBOL vmlinux 0x8e867d18 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x8ea98b11 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ed29ebc inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x8edbde8a simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x8ee75054 module_layout +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8eefb004 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x8f10e9b8 security_mmap_file +EXPORT_SYMBOL vmlinux 0x8f1db1af clear_inode +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f7c12ed unbind_con_driver +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f8b5489 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x8f904f20 tty_port_open +EXPORT_SYMBOL vmlinux 0x8faa4598 of_translate_address +EXPORT_SYMBOL vmlinux 0x8fc261ee generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x8fc5cf9b vfs_open +EXPORT_SYMBOL vmlinux 0x900eb05a tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x9015f59b swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x9015f978 ps2_command +EXPORT_SYMBOL vmlinux 0x90182365 vfs_readlink +EXPORT_SYMBOL vmlinux 0x902059f9 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x902273e0 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x9036188c neigh_destroy +EXPORT_SYMBOL vmlinux 0x905ea14b vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x905f6953 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x90884731 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x90a85fb8 file_remove_suid +EXPORT_SYMBOL vmlinux 0x90d2132c genlmsg_put +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90e5d0b8 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x91132b97 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9131d97c drop_super +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914c10ec vfs_mknod +EXPORT_SYMBOL vmlinux 0x915b8a0f kernel_accept +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91629c37 ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9167d546 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9171b696 send_sig_info +EXPORT_SYMBOL vmlinux 0x917ad19d sock_no_listen +EXPORT_SYMBOL vmlinux 0x918311f3 open_exec +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x919dd284 ndo_dflt_bridge_getlink +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91c7efd5 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x91dcc8be block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x920368e3 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x92158d72 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x923930d0 write_cache_pages +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92418830 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x924aefd7 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x9251b6cf udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x9277ef19 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x927fa134 generic_readlink +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b86644 kernel_bind +EXPORT_SYMBOL vmlinux 0x92d3c3ce tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x92d464aa netdev_notice +EXPORT_SYMBOL vmlinux 0x92ffa6b4 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930d7497 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x9329d8d6 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x9339cbd6 udp_prot +EXPORT_SYMBOL vmlinux 0x9339e79f kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x933c5717 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x9356ee47 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x93570252 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x935ea80f genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x936fdefd nobh_write_end +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93ae5937 journal_ack_err +EXPORT_SYMBOL vmlinux 0x93b99f32 override_creds +EXPORT_SYMBOL vmlinux 0x93ceef0e simple_write_end +EXPORT_SYMBOL vmlinux 0x93efd1c4 fs_bio_set +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x944712f9 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x946337ed tc_classify +EXPORT_SYMBOL vmlinux 0x947bc808 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94e80d29 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x950ab4dd mount_single +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518b623 register_shrinker +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952e329d posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95648fec vfs_readdir +EXPORT_SYMBOL vmlinux 0x95649e32 kset_unregister +EXPORT_SYMBOL vmlinux 0x95658724 __d_drop +EXPORT_SYMBOL vmlinux 0x9584868b pcim_enable_device +EXPORT_SYMBOL vmlinux 0x959ad81b input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x959e166e xfrm_lookup +EXPORT_SYMBOL vmlinux 0x95ad0d8d generic_setlease +EXPORT_SYMBOL vmlinux 0x95c95453 replace_mount_options +EXPORT_SYMBOL vmlinux 0x95d7561d pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x95ea6673 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x95eb0c3d dquot_destroy +EXPORT_SYMBOL vmlinux 0x960d1bfb pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9631a1a8 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x966d5c52 tty_write_room +EXPORT_SYMBOL vmlinux 0x96955c67 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b5bba2 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x96b97afb pci_map_rom +EXPORT_SYMBOL vmlinux 0x96bba237 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e2cf42 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x96ee6557 cdev_add +EXPORT_SYMBOL vmlinux 0x97009ca1 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x9709e034 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x9730440b blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x973d899e find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9761601d mount_bdev +EXPORT_SYMBOL vmlinux 0x976170a2 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x9765054a vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x976f7c7d ip_defrag +EXPORT_SYMBOL vmlinux 0x977e883d unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a3926f kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x97c4bfa9 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x97d11198 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x97dbeef5 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x97fa1bc5 get_phy_device +EXPORT_SYMBOL vmlinux 0x980b2e4b bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x983019f3 init_buffer +EXPORT_SYMBOL vmlinux 0x9834d93c kset_register +EXPORT_SYMBOL vmlinux 0x98387390 inet_frag_find +EXPORT_SYMBOL vmlinux 0x983e09f5 irq_stat +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9886547e cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x98c5cca8 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d2b0f9 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x98f9b70d blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fb1159 noop_qdisc +EXPORT_SYMBOL vmlinux 0x99009800 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9904b20c lock_may_read +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9930a42e backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x9930d387 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a1aec2 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x99a82a15 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99b6f56a mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x99bbe1a4 get_fs_type +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 0x99e5d5bb dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x99e86486 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x9a06fc14 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a3dcd29 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x9a464727 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x9a49ac0b dev_change_flags +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a933bc1 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b0470b9 mdiobus_read +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b41079b of_dev_put +EXPORT_SYMBOL vmlinux 0x9b664f0a of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x9b724cd1 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x9b76e06c dst_alloc +EXPORT_SYMBOL vmlinux 0x9b853c3f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x9b87e305 phy_connect +EXPORT_SYMBOL vmlinux 0x9b9d334b inet_put_port +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc8e429 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c029cce tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x9c10ad26 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x9c2a76e8 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c70d06d __get_page_tail +EXPORT_SYMBOL vmlinux 0x9c7fd277 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x9c896cd2 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cc448d0 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x9cc83771 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x9cecd174 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x9cee08ac __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d093136 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3fa468 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x9d7c468e usb_add_phy +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9dad48a9 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x9db1b3da blk_start_queue +EXPORT_SYMBOL vmlinux 0x9db4e1e5 ps2_end_command +EXPORT_SYMBOL vmlinux 0x9ddcf416 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x9dfe262c inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e3db392 phy_stop +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5f895a mdio_bus_type +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e768688 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x9e923ac6 bio_endio +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e987159 security_inode_permission +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9eb7c462 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9f175ef9 ip6_xmit +EXPORT_SYMBOL vmlinux 0x9f20aabe dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f33d8d6 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9f4435e2 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f516e14 finish_no_open +EXPORT_SYMBOL vmlinux 0x9f563929 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x9f8e33d3 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9b1e70 vm_stat +EXPORT_SYMBOL vmlinux 0x9f9dbabf skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x9fc47a0f dev_addr_init +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffecf0b serio_reconnect +EXPORT_SYMBOL vmlinux 0xa03aeff4 __brelse +EXPORT_SYMBOL vmlinux 0xa0415103 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xa045e9f2 macio_dev_put +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06e02b3 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0a41f59 __break_lease +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ba787f simple_rmdir +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d658db simple_write_begin +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa110c934 ns_capable +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa132e668 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15cb395 d_make_root +EXPORT_SYMBOL vmlinux 0xa175cfe6 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xa186249c sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xa18ac011 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1bbc021 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa200d61b dcb_setapp +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20d7f89 files_lglock +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa242685b led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa26ce794 sk_alloc +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 0xa2d763f5 bdev_read_only +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31f3326 __napi_complete +EXPORT_SYMBOL vmlinux 0xa32f297e security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xa332464a of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa33b1d65 task_nice +EXPORT_SYMBOL vmlinux 0xa34207f0 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xa356461c xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xa35a73a8 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa380b7cd mmc_remove_host +EXPORT_SYMBOL vmlinux 0xa38a9d59 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xa38bb58d d_invalidate +EXPORT_SYMBOL vmlinux 0xa38f484f skb_push +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa39c42da compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b307c3 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xa3e4dfa3 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xa3eba331 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa3ed0011 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47ed040 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa499b25e sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4a9d41d schedule_work_on +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bdce31 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xa4bdd447 __cputime_clockt_factor +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4eb35e3 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xa51224d4 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xa5217cea netif_carrier_off +EXPORT_SYMBOL vmlinux 0xa550374f devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5c59126 key_alloc +EXPORT_SYMBOL vmlinux 0xa5dd45f3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xa5df79a3 __block_write_begin +EXPORT_SYMBOL vmlinux 0xa5ec6843 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xa60fbea7 register_con_driver +EXPORT_SYMBOL vmlinux 0xa6212029 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xa65017dd blk_put_queue +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa663cb8d vga_get +EXPORT_SYMBOL vmlinux 0xa66dca96 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68cbd4f put_disk +EXPORT_SYMBOL vmlinux 0xa698fbad flush_dcache_page +EXPORT_SYMBOL vmlinux 0xa6ce472f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xa6ce60b8 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xa6ecf066 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa70864b8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa749d3be inode_init_always +EXPORT_SYMBOL vmlinux 0xa75078ac flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0xa775a22c xfrm_register_km +EXPORT_SYMBOL vmlinux 0xa77f50ae __devm_request_region +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7afb5ea udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa7fe4f4f tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xa7ff5d3c __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xa8045f00 vfs_unlink +EXPORT_SYMBOL vmlinux 0xa804cef8 redraw_screen +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa836df28 set_nlink +EXPORT_SYMBOL vmlinux 0xa83dddad ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa86011e8 bdget +EXPORT_SYMBOL vmlinux 0xa867c33e devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0xa870372f wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87f16e0 brioctl_set +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8af1d43 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xa8b4f6a8 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xa8b50c37 journal_lock_updates +EXPORT_SYMBOL vmlinux 0xa8ca6351 dquot_transfer +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8d196d4 take_over_console +EXPORT_SYMBOL vmlinux 0xa8f6bb6f bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa9597066 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xa9689caa twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xa976811a rfkill_alloc +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa982171a devm_gpio_request +EXPORT_SYMBOL vmlinux 0xa9c76c36 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xa9e2186a dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xaa0b678a tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa215338 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xaa3bf702 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xaa419623 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4d4d5c __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xaa53fcbc i2c_bit_algo +EXPORT_SYMBOL vmlinux 0xaa55875f alloc_fcdev +EXPORT_SYMBOL vmlinux 0xaa58c52f skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa71388d udp_ioctl +EXPORT_SYMBOL vmlinux 0xaa8e3958 update_region +EXPORT_SYMBOL vmlinux 0xaab00cda mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae77f20 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xaaf18207 da903x_query_status +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab4b9cd0 security_path_chown +EXPORT_SYMBOL vmlinux 0xab4c416e mount_pseudo +EXPORT_SYMBOL vmlinux 0xab503819 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xab56494f bioset_create +EXPORT_SYMBOL vmlinux 0xab57f413 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xab6326f8 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab768a21 sock_i_ino +EXPORT_SYMBOL vmlinux 0xab7c786b ihold +EXPORT_SYMBOL vmlinux 0xab8fc8f7 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xab9406c4 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xaba09af5 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xaba12cf9 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xaba5c39b inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xabb940c6 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabeec826 iput +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0c93e1 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0xac1b6942 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac41becf elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xac43a9cb jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xac48ab96 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xac588f40 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac75289a mach_powernv +EXPORT_SYMBOL vmlinux 0xac77cc7e inet_frag_kill +EXPORT_SYMBOL vmlinux 0xac7987ff inet_stream_connect +EXPORT_SYMBOL vmlinux 0xac9f0110 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xaca744d6 netdev_info +EXPORT_SYMBOL vmlinux 0xaca85045 load_nls_default +EXPORT_SYMBOL vmlinux 0xacaa9ec0 kill_pgrp +EXPORT_SYMBOL vmlinux 0xacc12e15 ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd0a79a of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xacde6340 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xace53a78 nonseekable_open +EXPORT_SYMBOL vmlinux 0xaceb09c0 blk_get_queue +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf8ca9d udp_flush_pending_frames +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 0xad1c451f dev_uc_add +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad633abd neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xad689ab9 dev_activate +EXPORT_SYMBOL vmlinux 0xad6a77f1 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xad721dba blk_rq_init +EXPORT_SYMBOL vmlinux 0xad76d88d tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xad8043fc sock_rfree +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc796bf pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xadcd6f13 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xadf1eaf1 __bforget +EXPORT_SYMBOL vmlinux 0xae035a84 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0xae17a35e bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xae32ba9a ata_dev_printk +EXPORT_SYMBOL vmlinux 0xae34c9af journal_start_commit +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae717969 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae819462 done_path_create +EXPORT_SYMBOL vmlinux 0xae9dc8ca ata_link_printk +EXPORT_SYMBOL vmlinux 0xaec8f972 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xaecd7a37 alloc_pages_current +EXPORT_SYMBOL vmlinux 0xaeee46ea fb_get_mode +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0c3eb2 install_exec_creds +EXPORT_SYMBOL vmlinux 0xaf1a3d4c try_to_release_page +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf344613 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf40ff70 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xaf5a6c50 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf6a1d24 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf826a08 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xaf906ea1 sock_create_kern +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafbae34e pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xafbd7f64 uart_resume_port +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafd992e9 __lock_page +EXPORT_SYMBOL vmlinux 0xafedcf8d generic_file_mmap +EXPORT_SYMBOL vmlinux 0xafef8fa9 register_memory_notifier +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00182f8 blk_complete_request +EXPORT_SYMBOL vmlinux 0xb006a47d sock_wmalloc +EXPORT_SYMBOL vmlinux 0xb00f0e5e inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb011f033 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xb020e0e8 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xb025f596 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xb02ade87 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xb03188c8 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xb041a98b qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xb0577fbd dma_sync_wait +EXPORT_SYMBOL vmlinux 0xb05db20b agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb05ff09c dump_write +EXPORT_SYMBOL vmlinux 0xb07fb41b bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xb082333c vga_tryget +EXPORT_SYMBOL vmlinux 0xb082547b dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb0988cbd jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0bcc213 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xb0cd0b51 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ed3d5d xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xb0fed11c backlight_device_register +EXPORT_SYMBOL vmlinux 0xb0ffda2f blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb11909c4 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xb1359321 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb14bda5c tty_port_close +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb17171f4 dev_add_pack +EXPORT_SYMBOL vmlinux 0xb1932fa1 free_task +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a617bd pci_fixup_device +EXPORT_SYMBOL vmlinux 0xb1ab33c8 genphy_resume +EXPORT_SYMBOL vmlinux 0xb1addf92 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xb1c24ace idr_find +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 0xb1f98188 mmc_request_done +EXPORT_SYMBOL vmlinux 0xb21535cd i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0xb220180f scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xb252973b thaw_super +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26afe1c inet_add_protocol +EXPORT_SYMBOL vmlinux 0xb275d90d ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb2b24d32 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d77337 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xb2f1b494 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xb31da612 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb33f8834 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xb34bf491 inode_dio_done +EXPORT_SYMBOL vmlinux 0xb353d16a freezing_slow_path +EXPORT_SYMBOL vmlinux 0xb3555f33 input_allocate_device +EXPORT_SYMBOL vmlinux 0xb35d3482 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xb3a3308f find_or_create_page +EXPORT_SYMBOL vmlinux 0xb3a58cae bdi_init +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3d3f644 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xb3de9857 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb3e1eef2 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb403a566 seq_putc +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb46800ee i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xb46f6c5d generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb481858b __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xb49fffe5 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xb4d88f60 bdi_register +EXPORT_SYMBOL vmlinux 0xb4dc6c8a path_is_under +EXPORT_SYMBOL vmlinux 0xb4f2dee7 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xb52d6b86 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xb53a0123 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb53b9f7e pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xb53d7e5c dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xb54088a3 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb56a9601 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57dda1e blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xb580e0a5 __napi_schedule +EXPORT_SYMBOL vmlinux 0xb58c54f6 ilookup +EXPORT_SYMBOL vmlinux 0xb58d0203 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xb5a20cb9 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5e28abe devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xb5f7ace2 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb60b85c6 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xb60f6725 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xb61c39f4 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xb61f4ac5 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb65599c2 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb664e43f simple_transaction_get +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 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ab0498 md_flush_request +EXPORT_SYMBOL vmlinux 0xb6b39777 mmc_card_awake +EXPORT_SYMBOL vmlinux 0xb6b882d5 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xb6c48bef ip_ct_attach +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cca5eb twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xb6cf684a padata_add_cpu +EXPORT_SYMBOL vmlinux 0xb711a69b mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xb755f267 write_inode_now +EXPORT_SYMBOL vmlinux 0xb7684c9a mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xb783cf12 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xb797d80d generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xb7a3cace journal_flush +EXPORT_SYMBOL vmlinux 0xb7a7ca47 phy_device_create +EXPORT_SYMBOL vmlinux 0xb7b40221 __scm_send +EXPORT_SYMBOL vmlinux 0xb7cd2216 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xb7d3635e freeze_bdev +EXPORT_SYMBOL vmlinux 0xb7d7db0c d_delete +EXPORT_SYMBOL vmlinux 0xb7dd720f usb_put_phy +EXPORT_SYMBOL vmlinux 0xb7f1597f blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xb818b3af alloc_disk_node +EXPORT_SYMBOL vmlinux 0xb825c214 cdrom_open +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8424b31 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb8628976 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xb8654f26 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xb8823a3f of_device_unregister +EXPORT_SYMBOL vmlinux 0xb888b56f agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8ade8ad devfreq_add_device +EXPORT_SYMBOL vmlinux 0xb8b969f0 idr_init +EXPORT_SYMBOL vmlinux 0xb8d55ad2 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xb909322e pci_find_bus +EXPORT_SYMBOL vmlinux 0xb91e92ce splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xb930e7aa remap_pfn_range +EXPORT_SYMBOL vmlinux 0xb936cefa sock_init_data +EXPORT_SYMBOL vmlinux 0xb939ca32 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xb95ba609 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xb962b58c agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb9997405 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0xb99ec744 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9e772fe inet6_release +EXPORT_SYMBOL vmlinux 0xba0fa54d dev_addr_flush +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba19d33b netdev_features_change +EXPORT_SYMBOL vmlinux 0xba21e472 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xba487f35 vlan_vid_del +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba8ffc68 bmap +EXPORT_SYMBOL vmlinux 0xbaa32932 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xbab39212 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xbabe883a netlink_broadcast +EXPORT_SYMBOL vmlinux 0xbac0cd54 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xbac13d05 scsi_add_device +EXPORT_SYMBOL vmlinux 0xbad5f8f3 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xbaea6566 submit_bio +EXPORT_SYMBOL vmlinux 0xbaeffa05 qid_eq +EXPORT_SYMBOL vmlinux 0xbaf06ac7 file_sb_list_del +EXPORT_SYMBOL vmlinux 0xbaf3f870 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xbb052f73 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xbb06c57f mem_cgroup_subsys +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb232dcf dev_load +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5588ba user_path_create +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb63f796 macio_request_resources +EXPORT_SYMBOL vmlinux 0xbb68f204 is_bad_inode +EXPORT_SYMBOL vmlinux 0xbb713e6d sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0xbb843654 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba92ef4 kernel_connect +EXPORT_SYMBOL vmlinux 0xbbadcb51 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb1bf72 dma_find_channel +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbd766c5 tty_lock +EXPORT_SYMBOL vmlinux 0xbbe6503c mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xbbe951a0 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc394ec9 setup_new_exec +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc4faf35 ppc_md +EXPORT_SYMBOL vmlinux 0xbc9cd3cf of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc3a51c iget_failed +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbd1bb2ea rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xbd24635c input_unregister_handler +EXPORT_SYMBOL vmlinux 0xbd2c9bef mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xbd3a58c2 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4e2e82 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xbd7f33c3 journal_abort +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdd6b02f dst_release +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbdf19286 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe29e98b security_path_rename +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe315698 napi_complete +EXPORT_SYMBOL vmlinux 0xbe6202d7 touch_atime +EXPORT_SYMBOL vmlinux 0xbe6a7067 f_setown +EXPORT_SYMBOL vmlinux 0xbe6d0905 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xbe733603 pci_disable_ido +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbed3974c md_check_recovery +EXPORT_SYMBOL vmlinux 0xbee5b278 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0468d0 mdiobus_free +EXPORT_SYMBOL vmlinux 0xbf3b00a2 elv_rb_find +EXPORT_SYMBOL vmlinux 0xbf4ad4c4 pid_task +EXPORT_SYMBOL vmlinux 0xbf4cff4a qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xbf5ca769 kernel_listen +EXPORT_SYMBOL vmlinux 0xbf6db684 d_alloc +EXPORT_SYMBOL vmlinux 0xbf7c4a2a ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf8dbcc6 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfaf6879 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xbfb09b1b serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfce2334 elevator_change +EXPORT_SYMBOL vmlinux 0xbfe6bd30 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc0070258 set_device_ro +EXPORT_SYMBOL vmlinux 0xc009fcb4 mmc_gpio_free_ro +EXPORT_SYMBOL vmlinux 0xc01cf631 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xc02ecad0 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xc0301ca5 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xc06c6ca1 mem_section +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07f5a7d scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a69a23 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xc0a8b522 iunique +EXPORT_SYMBOL vmlinux 0xc110946f pci_get_subsys +EXPORT_SYMBOL vmlinux 0xc11cad4d starget_for_each_device +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc1385285 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xc16dfcf9 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xc1945a57 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xc199c85d d_genocide +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d72d13 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xc1df323c pskb_expand_head +EXPORT_SYMBOL vmlinux 0xc2104cc5 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xc2220e56 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xc222c772 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc22988dd unlock_rename +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc2354d2d key_type_keyring +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc287be46 pci_release_region +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a5c50f mmc_card_sleep +EXPORT_SYMBOL vmlinux 0xc2ae97a6 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc2afe358 alloc_disk +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc30ec1ee vm_insert_page +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc314c3d2 __cputime_jiffies_factor +EXPORT_SYMBOL vmlinux 0xc31f694b elv_rb_del +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc37869af search_binary_handler +EXPORT_SYMBOL vmlinux 0xc37b5ebd compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xc37c2722 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xc39aa2b5 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL vmlinux 0xc3a34096 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xc3a56121 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc3aa9b4b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xc3b2957e serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xc3c98a16 devm_iounmap +EXPORT_SYMBOL vmlinux 0xc3c9be16 skb_put +EXPORT_SYMBOL vmlinux 0xc3cbebd2 consume_skb +EXPORT_SYMBOL vmlinux 0xc3d04bf8 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc420583b security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xc4266205 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xc456a3b4 tcp_poll +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4644911 check_disk_change +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48f0dd4 icmp_send +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49f6691 agp_free_memory +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc50bab05 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xc51219f5 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xc5195672 uart_match_port +EXPORT_SYMBOL vmlinux 0xc5270844 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xc53969f8 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc588e9be skb_clone +EXPORT_SYMBOL vmlinux 0xc5a9f476 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xc5bca70a pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xc5ca0cdf __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xc5d67235 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e00188 ppp_input_error +EXPORT_SYMBOL vmlinux 0xc5e1ec3b skb_checksum_help +EXPORT_SYMBOL vmlinux 0xc5e2821b fb_set_cmap +EXPORT_SYMBOL vmlinux 0xc5f61953 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xc620fd18 __blk_end_request +EXPORT_SYMBOL vmlinux 0xc6272fb3 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xc627b230 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xc62b4c19 proto_unregister +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64fc1ca splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc67c48b3 security_path_link +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b5f04e md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xc6c9664e security_d_instantiate +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc720a6a2 init_special_inode +EXPORT_SYMBOL vmlinux 0xc7497ff5 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xc766503b __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xc77030b8 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xc773ad4f sock_i_uid +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc79a4cad unregister_quota_format +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79cba32 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c7338e qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xc7eb0701 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xc8306f26 skb_tx_error +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc858736d ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc85b9595 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xc861e1b6 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89e155a sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xc8a2e1a8 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc8afeae9 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8caa42a cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc8cb6d55 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xc8cc6d79 note_scsi_host +EXPORT_SYMBOL vmlinux 0xc8ccbb3f pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xc8cf2b32 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8e9ec05 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xc917ff1e tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc9370b43 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xc940d7a4 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xc958ad66 pci_pme_active +EXPORT_SYMBOL vmlinux 0xc9593dce inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc95dc341 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xc95ef4d7 security_path_chmod +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc995e1c3 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a7e3e7 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc9d1e8c7 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xc9e80aed padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xc9f8a6be ata_port_printk +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xca490af6 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xca49d007 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca698d16 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xca7d056f skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xca824266 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaabf3f9 pasemi_write_iob_reg +EXPORT_SYMBOL vmlinux 0xcaf42c1d mmc_can_erase +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb04e975 d_drop +EXPORT_SYMBOL vmlinux 0xcb21b8a7 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xcb2cf05d migrate_page +EXPORT_SYMBOL vmlinux 0xcb3329c8 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xcb490918 netlink_ack +EXPORT_SYMBOL vmlinux 0xcb55e362 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb79dfd1 netdev_change_features +EXPORT_SYMBOL vmlinux 0xcb8782bb xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xcbc94a55 generic_removexattr +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe39ef5 eth_header_cache +EXPORT_SYMBOL vmlinux 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1ae21d inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc37f55c blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xcc408a76 keyring_search +EXPORT_SYMBOL vmlinux 0xcc4f341f sock_release +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6a68b4 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc823e44 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcca8fec6 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xccb078c3 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xccb2e07b stop_tty +EXPORT_SYMBOL vmlinux 0xccbc6d54 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xccbd337e i2c_clients_command +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc56257 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xcccfdccc inet_add_offload +EXPORT_SYMBOL vmlinux 0xccd2617e uart_get_divisor +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd2539c2 elv_add_request +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30cd7f __bio_clone +EXPORT_SYMBOL vmlinux 0xcd501600 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xcd65676c xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xcd769f62 _lv1_gpu_device_map +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcda959d3 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xcda9ba05 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xcdbd1d32 phy_driver_register +EXPORT_SYMBOL vmlinux 0xcdbde440 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdec675e journal_errno +EXPORT_SYMBOL vmlinux 0xcdfbe414 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xce0560d1 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce26893c skb_make_writable +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2f7fa1 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xce310d66 lookup_bdev +EXPORT_SYMBOL vmlinux 0xce361be9 ethtool_op_get_link +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 0xce673d61 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xcebbba12 inet_addr_type +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcee6b539 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf22a19d of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xcf5946df page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xcf5ba25c pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0xcf6bbe89 netdev_state_change +EXPORT_SYMBOL vmlinux 0xcf9eb7a1 netif_rx +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfd1ff1d pci_enable_ido +EXPORT_SYMBOL vmlinux 0xcfe91e5c may_umount_tree +EXPORT_SYMBOL vmlinux 0xcff059b7 sk_run_filter +EXPORT_SYMBOL vmlinux 0xd014ce9a journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd02d4346 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0xd03e3ce0 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xd041c7bc jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xd0435657 get_task_io_context +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0648bbc init_net +EXPORT_SYMBOL vmlinux 0xd06d1d24 address_space_init_once +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd085f31b __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xd09438bb blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xd09bea98 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0ab5ce4 mutex_trylock +EXPORT_SYMBOL vmlinux 0xd0bb90c5 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xd0d011e2 idr_remove_all +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 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1207ab3 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xd12418a5 idr_destroy +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd1412d15 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xd1721645 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xd17f1fda sk_filter +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1c67467 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xd1e21951 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd1f7578b kobject_add +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd208526e vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd221d771 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xd22a196e serio_unregister_port +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd257da33 seq_vprintf +EXPORT_SYMBOL vmlinux 0xd25c3923 rtas +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd294be64 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2befa21 genphy_update_link +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2d109b8 kobject_init +EXPORT_SYMBOL vmlinux 0xd2e4e70b dquot_acquire +EXPORT_SYMBOL vmlinux 0xd2e79e77 md_write_end +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd3013e26 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd320647d journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd32ccc2f tty_port_hangup +EXPORT_SYMBOL vmlinux 0xd33b402b n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd3720c72 dst_destroy +EXPORT_SYMBOL vmlinux 0xd383db61 __free_pages +EXPORT_SYMBOL vmlinux 0xd39902b4 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xd3d3a477 posix_acl_init +EXPORT_SYMBOL vmlinux 0xd3f327e2 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xd3ff48be make_bad_inode +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd41e8aa7 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xd455f348 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xd45bd4a6 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xd45f5671 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xd463b00d generic_write_sync +EXPORT_SYMBOL vmlinux 0xd4711236 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd492fa60 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xd4c3d56e of_platform_device_create +EXPORT_SYMBOL vmlinux 0xd4d3b019 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd4d8380d macio_register_driver +EXPORT_SYMBOL vmlinux 0xd4dbf334 vio_register_device_node +EXPORT_SYMBOL vmlinux 0xd51b906a mmc_can_discard +EXPORT_SYMBOL vmlinux 0xd53917cb ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xd53f02f0 pci_get_device +EXPORT_SYMBOL vmlinux 0xd5486c77 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xd54a70a2 from_kqid_munged +EXPORT_SYMBOL vmlinux 0xd5627c00 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xd56a03a9 ata_print_version +EXPORT_SYMBOL vmlinux 0xd5adb77a max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xd5b3ba36 netdev_warn +EXPORT_SYMBOL vmlinux 0xd5c64d35 unregister_console +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5fa971e bio_copy_kern +EXPORT_SYMBOL vmlinux 0xd6094c71 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61b7771 led_set_brightness +EXPORT_SYMBOL vmlinux 0xd624c0f3 dquot_alloc +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6790052 __module_get +EXPORT_SYMBOL vmlinux 0xd6a7960a bitmap_close_sync +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 0xd70fdcf8 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xd71f7619 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd73a8e0b writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd73bde97 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xd74b7b27 key_validate +EXPORT_SYMBOL vmlinux 0xd7569865 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7623a8c __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xd76cdb7d kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7a9e187 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7ce74b8 skb_unlink +EXPORT_SYMBOL vmlinux 0xd7d0efc1 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xd7db9986 single_release +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea32a7 pci_set_ltr +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd83a2fa5 input_close_device +EXPORT_SYMBOL vmlinux 0xd858966e tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xd85f9c63 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xd862ce96 key_link +EXPORT_SYMBOL vmlinux 0xd86b588a vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0xd87172f8 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8cd0f2b sock_wfree +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8d1e488 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd91fd1d6 of_allnodes +EXPORT_SYMBOL vmlinux 0xd925a2de blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd942ddf8 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9861a81 uart_register_driver +EXPORT_SYMBOL vmlinux 0xd989948b input_set_keycode +EXPORT_SYMBOL vmlinux 0xd9a9bb30 getname +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9d0167f test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xd9e61fcb qid_valid +EXPORT_SYMBOL vmlinux 0xd9e92efe jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xd9ea77e4 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xda0f5234 rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3e17aa vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xda43e3c4 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xda59a5f2 dquot_commit +EXPORT_SYMBOL vmlinux 0xda5fc581 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7ee717 del_gendisk +EXPORT_SYMBOL vmlinux 0xda7f8be3 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdab4217c arp_tbl +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabdcbcc call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xdac6bdf0 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xdacf4e67 scsi_device_get +EXPORT_SYMBOL vmlinux 0xdad926dd __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaefbf23 giveup_fpu +EXPORT_SYMBOL vmlinux 0xdafd8907 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb348ae6 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xdb476b58 km_state_expired +EXPORT_SYMBOL vmlinux 0xdb4ce1c6 input_open_device +EXPORT_SYMBOL vmlinux 0xdb5aec66 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xdb63fc70 dquot_release +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb716483 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7b5a00 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xdb92f5d3 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbe93f2b fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xdc04183a dqget +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1a9a87 dqput +EXPORT_SYMBOL vmlinux 0xdc23e653 dcb_getapp +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc42fc47 of_find_node_by_path +EXPORT_SYMBOL vmlinux 0xdc4afe50 noop_fsync +EXPORT_SYMBOL vmlinux 0xdc6510d1 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xdc651634 simple_getattr +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc7f63c3 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9c00b2 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcb9f1d3 nf_afinfo +EXPORT_SYMBOL vmlinux 0xdcc165e6 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xdcc98a4a filemap_flush +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd7e47f7 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdda2b139 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xdda67f4b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xdde993ab framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xddef77a6 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xddf03f65 vfs_rename +EXPORT_SYMBOL vmlinux 0xddf477af release_pages +EXPORT_SYMBOL vmlinux 0xddf5d303 netif_napi_del +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde5d11c4 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde646c57 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xde673fee tcf_hash_check +EXPORT_SYMBOL vmlinux 0xde701f09 bdi_destroy +EXPORT_SYMBOL vmlinux 0xde93528d mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9883cd names_cachep +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdebcefd8 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xdecb420b do_truncate +EXPORT_SYMBOL vmlinux 0xdee8725c generic_setxattr +EXPORT_SYMBOL vmlinux 0xdf0664f8 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xdf15ba4f sync_inode +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf307113 fget_light +EXPORT_SYMBOL vmlinux 0xdf3967e3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xdf3c8aad scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xdf55d51c do_splice_from +EXPORT_SYMBOL vmlinux 0xdf5b338c bprm_change_interp +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf60fc83 _lv1_net_start_tx_dma +EXPORT_SYMBOL vmlinux 0xdf71b204 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93fd33 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xdfa4c814 pci_enable_device +EXPORT_SYMBOL vmlinux 0xdfa55f85 skb_gso_segment +EXPORT_SYMBOL vmlinux 0xdfc6468f fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xdfd077ee input_unregister_handle +EXPORT_SYMBOL vmlinux 0xe0128407 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xe01ff6dc macio_request_resource +EXPORT_SYMBOL vmlinux 0xe02a3af7 clear_nlink +EXPORT_SYMBOL vmlinux 0xe032522e kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06e3c34 get_super +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe08714ae ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xe09556b8 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe09b0942 d_splice_alias +EXPORT_SYMBOL vmlinux 0xe0a72fe9 arp_create +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b258a1 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xe0cb7032 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe0cfb334 get_io_context +EXPORT_SYMBOL vmlinux 0xe10f19b1 ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1141033 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xe1166d3c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xe11883ce udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xe11cc8f3 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xe12de1c4 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xe1365dd5 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xe14b509a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xe17523de mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe181f083 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xe183ab56 tcp_check_req +EXPORT_SYMBOL vmlinux 0xe197cfcf tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xe1aaa170 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xe1b296e2 I_BDEV +EXPORT_SYMBOL vmlinux 0xe1e989f1 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe205b042 ida_remove +EXPORT_SYMBOL vmlinux 0xe20c63e7 _lv1_unmap_device_mmio_region +EXPORT_SYMBOL vmlinux 0xe2130d78 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xe2153fde unregister_nls +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2637513 tcp_prot +EXPORT_SYMBOL vmlinux 0xe27f6127 prepare_creds +EXPORT_SYMBOL vmlinux 0xe2a58982 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2c435ac dev_mc_init +EXPORT_SYMBOL vmlinux 0xe2d33f3e xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2f98f16 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xe33d92b6 __register_binfmt +EXPORT_SYMBOL vmlinux 0xe3583913 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xe35b6ed6 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xe36d7a9c find_lock_page +EXPORT_SYMBOL vmlinux 0xe37bf8be nf_register_hook +EXPORT_SYMBOL vmlinux 0xe382811d security_task_getsecid +EXPORT_SYMBOL vmlinux 0xe383e252 fb_blank +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3cc1e90 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f3607a fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xe43b3718 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xe4419db0 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xe447e58b dquot_initialize +EXPORT_SYMBOL vmlinux 0xe4579884 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xe45e21d4 tcf_hash_release +EXPORT_SYMBOL vmlinux 0xe4715773 lock_rename +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48dec19 set_disk_ro +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4c16a4d __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe4dafea1 dev_mc_add +EXPORT_SYMBOL vmlinux 0xe4e21dbc dev_addr_add +EXPORT_SYMBOL vmlinux 0xe4e29006 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5017351 generic_write_end +EXPORT_SYMBOL vmlinux 0xe503367b redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53b6b40 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xe53d1faa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xe5565c6c scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xe55a0bad __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59892be blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5df6fb5 ll_rw_block +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe6071f52 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe61b5d96 log_start_commit +EXPORT_SYMBOL vmlinux 0xe61ff553 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xe62b9075 dquot_drop +EXPORT_SYMBOL vmlinux 0xe6720651 pci_set_master +EXPORT_SYMBOL vmlinux 0xe677d9ab mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xe67a4b34 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xe67dd923 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe684f6b9 pci_choose_state +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69ca2be mdiobus_register +EXPORT_SYMBOL vmlinux 0xe69f54bb pci_clear_master +EXPORT_SYMBOL vmlinux 0xe6aa8684 __netif_schedule +EXPORT_SYMBOL vmlinux 0xe6c51045 km_state_notify +EXPORT_SYMBOL vmlinux 0xe6e9449e scsi_finish_command +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6ff14ab may_umount +EXPORT_SYMBOL vmlinux 0xe700df66 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xe7172df2 __scm_destroy +EXPORT_SYMBOL vmlinux 0xe72ecc9d simple_empty +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe764f990 arp_invalidate +EXPORT_SYMBOL vmlinux 0xe76d8724 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe78ca59b tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xe797e1be scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7bbfebe soft_cursor +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7ff5200 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xe800c25f dentry_path_raw +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe80e3efd pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xe8273b3d notify_thermal_framework +EXPORT_SYMBOL vmlinux 0xe82b3a3b put_tty_driver +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe82d9f42 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe83ef633 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xe8547376 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xe8559b0d devm_ioport_map +EXPORT_SYMBOL vmlinux 0xe86e23d9 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xe889491d kmem_cache_create +EXPORT_SYMBOL vmlinux 0xe89a2d51 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c431cd generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8ec6867 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe917c217 rt6_lookup +EXPORT_SYMBOL vmlinux 0xe9259db8 vfs_write +EXPORT_SYMBOL vmlinux 0xe929c27a log_wait_commit +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9568881 block_write_begin +EXPORT_SYMBOL vmlinux 0xe99a82e1 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xe9a7d2e0 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xe9a931c8 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xe9b5750a padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xe9b5bdae d_instantiate +EXPORT_SYMBOL vmlinux 0xe9c35142 idr_get_next +EXPORT_SYMBOL vmlinux 0xe9e6f69d pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f92d87 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xe9fa1f1e sock_kmalloc +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea46d0e2 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xea54f599 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xea81025e cpufreq_cooling_unregister +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaaf1122 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xeadd6e2e km_new_mapping +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4a1f81 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xeb56dda7 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xeb679f6a read_dev_sector +EXPORT_SYMBOL vmlinux 0xeb685e2b inet6_protos +EXPORT_SYMBOL vmlinux 0xeb825239 input_register_handle +EXPORT_SYMBOL vmlinux 0xeb9626d0 mmc_start_req +EXPORT_SYMBOL vmlinux 0xeb9dea36 vm_event_states +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebaf9429 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xebb1c880 dm_put_device +EXPORT_SYMBOL vmlinux 0xebb595f3 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xebd39484 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebde0b17 simple_unlink +EXPORT_SYMBOL vmlinux 0xebdf5689 mmc_release_host +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec230375 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xec276a97 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xec2a8180 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec3f869b fb_set_suspend +EXPORT_SYMBOL vmlinux 0xec53076a shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xec6140c0 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xec633622 get_agp_version +EXPORT_SYMBOL vmlinux 0xec8a64ca uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xec8dd318 proc_symlink +EXPORT_SYMBOL vmlinux 0xecbd0d5e mntget +EXPORT_SYMBOL vmlinux 0xecc696be neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xecce418d dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xecd6e7c5 vfs_writev +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed1e2956 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xed5925ce xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xeda8f546 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd4fdb serio_open +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc7b0f6 bio_map_user +EXPORT_SYMBOL vmlinux 0xedeef95b rtnl_notify +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xedfd26bf pci_set_power_state +EXPORT_SYMBOL vmlinux 0xee07660c twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xee08f425 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xee161e83 journal_wipe +EXPORT_SYMBOL vmlinux 0xee1a89fc mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xee20daaa pci_assign_resource +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3b0770 mii_check_media +EXPORT_SYMBOL vmlinux 0xee5246fb twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee69479e dev_printk_emit +EXPORT_SYMBOL vmlinux 0xee762cab inet_bind +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xee9232b3 inet_accept +EXPORT_SYMBOL vmlinux 0xee95a2ed posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xeea74254 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeebb6a36 register_netdev +EXPORT_SYMBOL vmlinux 0xeeca228d __breadahead +EXPORT_SYMBOL vmlinux 0xeedfb13e read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xeefc0143 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef51c8f6 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xef6c1651 pci_release_regions +EXPORT_SYMBOL vmlinux 0xef742bdc zero_fill_bio +EXPORT_SYMBOL vmlinux 0xef7bfbb3 build_skb +EXPORT_SYMBOL vmlinux 0xef80cb32 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xefb69f7e ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +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 0xf0116a27 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xf01eb031 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xf04a9650 setattr_copy +EXPORT_SYMBOL vmlinux 0xf051efca phy_detach +EXPORT_SYMBOL vmlinux 0xf05d395c scsi_remove_target +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf068be09 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xf096eb63 machine_id +EXPORT_SYMBOL vmlinux 0xf09d0f9b register_gifconf +EXPORT_SYMBOL vmlinux 0xf0b9c16f pci_set_mwi +EXPORT_SYMBOL vmlinux 0xf0cd413a sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +EXPORT_SYMBOL vmlinux 0xf0d3bd47 netdev_printk +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fb8edb journal_dirty_data +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf0fea9db mdiobus_write +EXPORT_SYMBOL vmlinux 0xf100416a remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xf100dffe dev_get_flags +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1256978 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xf127e4ac kmalloc_caches +EXPORT_SYMBOL vmlinux 0xf137ebdf skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf145456a xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xf16d9fe8 inet_ioctl +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf192056f jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a052da elv_register_queue +EXPORT_SYMBOL vmlinux 0xf1a2ae24 set_blocksize +EXPORT_SYMBOL vmlinux 0xf1b3a5dc blk_register_region +EXPORT_SYMBOL vmlinux 0xf1bb2e66 seq_bitmap +EXPORT_SYMBOL vmlinux 0xf1bf31f2 tty_mutex +EXPORT_SYMBOL vmlinux 0xf1d224e6 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xf1d65f67 tty_lock_pair +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e01c33 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1fdc7f1 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20c22b0 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2256e75 proc_mkdir +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf2293eed twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf25b4725 dget_parent +EXPORT_SYMBOL vmlinux 0xf2652ebb tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xf2766eac xfrm_state_add +EXPORT_SYMBOL vmlinux 0xf29c5138 register_quota_format +EXPORT_SYMBOL vmlinux 0xf2cb8784 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xf2cbb6e7 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xf309e9ee cur_cpu_spec +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32c5203 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf3581151 give_up_console +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3a9021a register_framebuffer +EXPORT_SYMBOL vmlinux 0xf3bb68ec tcp_shutdown +EXPORT_SYMBOL vmlinux 0xf3bbffe4 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3fe814e dev_alert +EXPORT_SYMBOL vmlinux 0xf40cda8f idr_pre_get +EXPORT_SYMBOL vmlinux 0xf415d93e napi_get_frags +EXPORT_SYMBOL vmlinux 0xf42cd2b3 scsi_init_io +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf45a4e52 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xf45d99e9 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xf46a0320 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xf48df557 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xf494169d unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xf4a7e0b0 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cc804d devm_ioremap +EXPORT_SYMBOL vmlinux 0xf4d86890 tty_vhangup +EXPORT_SYMBOL vmlinux 0xf4e52d68 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xf4e884b9 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fe5471 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xf518b2cd dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf534898f nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf5428e4c register_qdisc +EXPORT_SYMBOL vmlinux 0xf54d877d scsi_remove_host +EXPORT_SYMBOL vmlinux 0xf54dca4d simple_open +EXPORT_SYMBOL vmlinux 0xf55512d6 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf565fa79 fasync_helper +EXPORT_SYMBOL vmlinux 0xf5780ee4 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xf58694db scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5a6e825 finish_open +EXPORT_SYMBOL vmlinux 0xf5a84eda tty_unregister_device +EXPORT_SYMBOL vmlinux 0xf5b4be78 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf5c7e263 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xf5c9ea43 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xf5d9a04a of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xf5da9213 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf6176335 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xf6194fc5 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf65ca393 _dev_info +EXPORT_SYMBOL vmlinux 0xf68b174e request_firmware +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c2dbee unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xf6d5d48b read_cache_page +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf702e20a phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xf718eb1d set_security_override +EXPORT_SYMBOL vmlinux 0xf7288561 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf734db6e dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf74b11b2 fb_find_mode +EXPORT_SYMBOL vmlinux 0xf74f62ab generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7611db8 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xf7619830 seq_escape +EXPORT_SYMBOL vmlinux 0xf77a6e09 of_get_property +EXPORT_SYMBOL vmlinux 0xf786c2ac vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xf78a0006 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf798020f of_match_node +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf7d68716 vio_unregister_device +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80ee517 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf829469c generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf82999f4 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8429774 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xf84fc5b6 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xf86f31ec iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xf88f4bd5 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf8930f8a __inet6_hash +EXPORT_SYMBOL vmlinux 0xf8c59731 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xf8cef236 vga_put +EXPORT_SYMBOL vmlinux 0xf8d7599b km_query +EXPORT_SYMBOL vmlinux 0xf8dda83b input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xf94a3dbf mach_ps3 +EXPORT_SYMBOL vmlinux 0xf961ad64 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xf989f1fb revalidate_disk +EXPORT_SYMBOL vmlinux 0xf9915b30 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a53cb6 __sb_start_write +EXPORT_SYMBOL vmlinux 0xf9b1b3e7 end_page_writeback +EXPORT_SYMBOL vmlinux 0xf9bd683d pci_read_vpd +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c75c35 cont_write_begin +EXPORT_SYMBOL vmlinux 0xfa0949ac inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xfa16b8a0 notify_change +EXPORT_SYMBOL vmlinux 0xfa19ebd0 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xfa33c62d pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xfa6506cb free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xfa77a982 vc_cons +EXPORT_SYMBOL vmlinux 0xfa7c185f inet6_ioctl +EXPORT_SYMBOL vmlinux 0xfa88fd2a __pagevec_release +EXPORT_SYMBOL vmlinux 0xfa8f008f blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacf3b05 vm_mmap +EXPORT_SYMBOL vmlinux 0xfad16128 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae20c34 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae923b6 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xfaf70d18 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb000a51 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xfb1f9311 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfbaa0e13 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb4e967 pci_iomap +EXPORT_SYMBOL vmlinux 0xfbc994b0 scsi_print_command +EXPORT_SYMBOL vmlinux 0xfbeb8b70 mpage_readpages +EXPORT_SYMBOL vmlinux 0xfbf12af6 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xfbf30534 request_key_async +EXPORT_SYMBOL vmlinux 0xfbf6675f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc263ea0 ida_init +EXPORT_SYMBOL vmlinux 0xfc2db018 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc3d2b17 aio_complete +EXPORT_SYMBOL vmlinux 0xfc56e2dc blk_fetch_request +EXPORT_SYMBOL vmlinux 0xfc6205fc tty_hung_up_p +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 0xfcc53681 input_unregister_device +EXPORT_SYMBOL vmlinux 0xfcce5239 blk_get_request +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd026438 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xfd090134 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xfd173241 udp_proc_register +EXPORT_SYMBOL vmlinux 0xfd2ccdc6 set_bh_page +EXPORT_SYMBOL vmlinux 0xfd2d8ea4 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xfd3c7ad4 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xfd40d5a3 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xfd5929cb init_task +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd94d65a of_node_get +EXPORT_SYMBOL vmlinux 0xfdadcf15 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbccb67 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdcbb510 arp_find +EXPORT_SYMBOL vmlinux 0xfdd432d3 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xfddb6925 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe28956f journal_init_dev +EXPORT_SYMBOL vmlinux 0xfe4ae6c4 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe661e82 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xfe6c201e register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfe6fd1e0 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe7c5710 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xfe82aeb7 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xfea815bd iterate_mounts +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfee5af33 file_ns_capable +EXPORT_SYMBOL vmlinux 0xfee6913d seq_read +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef37c52 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1aa612 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff29332d simple_rename +EXPORT_SYMBOL vmlinux 0xff2ddb67 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xff3be843 scsi_host_put +EXPORT_SYMBOL vmlinux 0xff4b4fdb __f_setown +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7b6f3a jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xff81d2c5 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0xff8c676d kobject_put +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffca68e9 dev_emerg +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x09f96f80 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x14562541 gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x16845a66 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1a1ab351 kvm_resched +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1e8b20c9 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2035c594 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2474a608 kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x24f9db34 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2cc0f9dd kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3beb283b kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x41b0b351 gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x47dfdf0b kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4ce3ba6f __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4f17f570 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x55764eca gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x64bace6b kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x81c7856c kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8599e483 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8d519a11 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x903877d9 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x90be8dd6 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x90ceeef1 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9dd6913e kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa92511e6 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb0bacc7f gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb354471d kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb84170bc kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc6d49d54 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc9e34529 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xea3b4fca gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xea522d27 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfb737883 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfe7b3a59 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x06f623d9 spu_save +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x3214ed27 spufs_context_fops +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xf653e486 spu_restore +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x4e615fa0 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x541688f8 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x8a981d7a af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x9cd9d49e af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xa705b18c af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc33cb12f af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xfd481d45 af_alg_accept +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x89e4b739 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x05d13ad6 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x3f2da904 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x1b7d9bc6 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7deee627 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x56fe5d90 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x74a5532d __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9f5184fe async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd3178c65 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x8b04515c async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x8d28fe3c async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xdc23401f blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x7805b522 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xdc5a921e cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x034b9758 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x0fc6f175 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x3c909249 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x629720b7 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x64adf2c2 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x801da5a3 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x8b75aba8 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xabde0b9c cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb63e7a68 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xf2035781 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 0x6e30a3c7 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 0x91f79ce7 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x5c8e835c twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xf038955f xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0fd98b20 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x15d86eae ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1c2d90ba ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1c5a68f3 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x20a4dcd4 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x30be2e32 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x369c58fa ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3ee26f46 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x432da062 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x54501b2e ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xaf02cc3f ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc43004e5 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd131f13f ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe3571f2b ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea14517a ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xec22a4d0 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf4626b14 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf9837219 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x860ec819 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xf26e2920 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 0x0b5adc83 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1b073e40 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3d7f2262 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4c8ee336 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x53966176 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5f34211b bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6a88142a bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x76be26c8 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x804bfba1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x85f32473 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x871002b2 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb67491fa bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc1518ca0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd22ee32c bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcbec462 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xecd818d5 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf67ead55 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0a0218a7 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0fcd7107 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x287368e2 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x47baa2f3 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6e70d37b btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8843086c btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x97b29d8a btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xac30285c btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd2465f72 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd618968a btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x1d2d1f5d nx842_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x4df68ceb nx842_get_workmem_size_aligned +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x56a12651 nx842_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xca181ed8 nx842_get_workmem_size +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0560251b edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x05ba2a53 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0978cf07 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1505b8fb edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x26548f01 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a578adf edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x35c1035c edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x376f6af2 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x37c1f4fd edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x44f25539 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x549e7cbe edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5fa2dd47 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x687e423a edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x75bb333d edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7e547a29 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8875373f edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa1bdcc6c edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa38043c8 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8c7a953 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xced4888e edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf70dd14f edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfc07c9ae edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9da66a4c bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xfb0f2548 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x6a0d84ed __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xf980c2b4 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd8df9850 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdff8f21b drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x876272b6 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xad89aa8d ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xb553129d ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00fb2407 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x041d2f18 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b8d2ffe hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b984fb5 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ef6576b hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1db445eb hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1f5e8cfd hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31946c6f hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x344f67f7 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x44392424 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4a38095a hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e3484d2 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x57738ec2 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6f0ecffb hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x70a62597 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8768c740 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8c96eff6 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9aa1f59d hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac14f184 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac51ab76 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaded8df5 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaee0b0a0 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb3b785c0 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8ec7c76 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd9435f12 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdcc0e3ff hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdf0525bf hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe317f3d7 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf031446a hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdc30605 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfe740cb6 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x4d140d16 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa48adc07 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xac7a6a5a roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe9a17e27 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2beb0a63 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x360275d1 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x452dcf0c sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4d467805 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd576a88f sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf21c5f63 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x2e196a07 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x5413c938 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xcc458024 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xedba0863 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x01814d1d hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1432d175 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x181d95d5 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x19f51201 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x396975bf hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4c271c18 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4df4aef7 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9883eac8 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa1a4c101 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc53cd8cb hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcde06854 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe017ff2e hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xee989547 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0fa30692 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0fd0aa96 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2bb91162 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3db35f2d pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3db8b87f pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7a2f02f3 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9971a93b pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9bb5a722 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9ef28b7b pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcf7994e0 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf3e76e2a pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x029c3b45 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x07bf5b94 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0bdf28b9 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3cca61ed i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7e4808c4 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8bf3bd33 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8ec10188 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9fe75b22 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe1b47bbd i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8ea23d93 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xa854d094 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x2be3670f i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x5eb8c8f0 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x00826223 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2b67c495 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x47039295 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa33ba03a ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc7dbc27b ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd28932f8 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe9eefd38 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xec2eed7b ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf39416ad ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x01790125 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2e444133 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6d91dd49 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7122a839 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8ed70251 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa2bad0fc adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa61a105f adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbe22b83c adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xca6d9427 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd40a16c0 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xedf85f7d adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xef6b6668 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1f70b54b iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2392af2e iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e811764 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x46818cf9 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4aed8c82 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x516d5d1b iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61a62e22 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x77ab0a5d iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x77ccc46c iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7b0bdf45 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7d091bd5 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8056da3a iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x865abb92 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94c1aa2d iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9de13d63 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb68834a7 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc3467432 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc35c57cb iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe0f63df5 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe141dcd8 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef491e1a iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf4994cc9 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf57245a0 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf90bed96 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x8aee6737 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 0xbe99a16b adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x459468cf cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x47e9c7c4 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xb7606d52 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x06b6b087 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x085cfeb0 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x15e2e3ea wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x18282c4d wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x651b8adc wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6c993e36 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8e58f69f wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa828ffa8 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb8e8192e wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc4f6fe2e wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe2ae5463 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf98a1209 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x40d87f68 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4b64b63a ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x50474a96 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc07b52b9 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc5409ca1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xee49413c ipack_device_register +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 0x09c8d7e4 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0b377467 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0b7ac575 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3275af6c gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3a5adb74 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3e8208c0 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5547c458 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x59936563 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x781f80f7 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7ee5db94 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf46a6bd gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc60c7e9a gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc858dfa9 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe258c966 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7733e71 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xefc10039 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf078f16a gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x06f266fb wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x26b6fc70 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x6c98d874 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x91714fa6 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x9d8f94e8 wf_register_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 0xc51dbe0a wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcc677a5b wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xeb12fe15 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf5202342 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xffa40483 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-bio-prison 0x016de3a0 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcfa01a18 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe203f756 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebd06eaf dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xee62a66e dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xfb9b1b97 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x1ae0e448 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xfeff3695 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 0x0aff8bb1 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x24cdb8ff dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8b50fe80 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc9198af1 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 0xf63cc458 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf914d291 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x09aad4d5 dm_tm_open_with_sm +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 0x5bfa335b dm_block_manager_create +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 0x6da18e99 dm_tm_create_with_sm +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 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 0x9e798e22 dm_bm_set_read_only +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 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x5cbcf967 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid10 0x9d0f6930 md_raid10_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x64d29dbf md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2fdde3a1 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3a021ea5 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x402c2e1b saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x58b73bab saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x81d111b3 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x869872eb saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb197aa4b saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb219c2a2 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc46e9475 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe06fad45 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x00a97c60 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1c4c735c saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x87e46e12 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa4991bb4 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc4dba06c saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd18aa659 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xea09c646 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2131c930 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3daa3d79 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4330bf3b smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c0adb2f smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x87750ea2 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8aa1e6da smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8faa1495 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9118100a smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9a0975f1 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa1fd1ff0 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb180af5f smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc38365b5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd702f6d0 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd7f3a465 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdebedac1 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xeee86836 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfa8025d7 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xf3db999d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x1d5e4835 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x10874619 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1963f77a mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2f8c7c5f mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x398ddfc6 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x448fb28b mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x57d16c7c mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b0321ed mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7e97ec13 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8d3d2c5a mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x92439a3e mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9dc4e041 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9e63f2ad mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9e6403e6 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe0772cb1 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe9b90ff7 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf329f246 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf44141ae mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4104b26f saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5b6d55ff saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x67fc67ff saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6e06dde9 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x96f5b185 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3180a350 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3cd8e4fd ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x54feac81 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x911ea6b4 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x93eedab4 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc38a7648 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd2d473e9 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x64299f2a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x9910101e radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x150135ed rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1c3dd779 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x23261a2d ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x34a6a20e rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x51cc535f rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5b7ea88d ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5deaf9d7 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5f098287 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6343ed7c rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9444a529 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb2ecd744 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb32dfdf2 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcadd7289 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd405fd87 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdf5bb49b rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe0b255b8 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xffe85f57 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x470bb078 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xf9e99b6d microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xa4d77e3d mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x2d8c58b5 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xda07207d tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5b9757d4 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x7f762118 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xc3bf88ab tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xe034861d tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf4c63160 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x6aed53e8 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xa6ea78af tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x5e43aee7 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x251c88bf cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x27fae9ed cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3e66a762 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x45ebcb85 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4ca9a0be cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x54f2bb73 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6ea0bdbb is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x74928076 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7d6c0d58 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9d8cd584 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb58aaf57 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb99a8051 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbc947a11 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc6017b67 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd97374d8 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe1232ff1 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe702b381 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe93f330e cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xef27410b cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x7c7925c8 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xdb8ae7f0 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x38b0b905 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x487527be em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7141c8c1 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x972e1f66 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9766ace3 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9c4c10be em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa3313bd1 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa3887489 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa95e3e72 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc49895ef em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc63ffbbe em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xce78cbd5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd3dc8ca5 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdb3221b5 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3ec57476 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x75aa44e9 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xaeda61d9 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe2768171 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x178a6fe5 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2c7cfe21 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x53105839 v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5d9d3491 v4l_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x76f5002d v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7eaf8e7a v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa1537abd v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa38d16d0 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd6313a58 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x42b9ba86 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0x67a3c6d7 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xb343176c v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-int-device 0xbc084f4a v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0197dcb2 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x021be43a v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x07c96cbd v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3e1d7dc2 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4953f02d v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4b377c1d v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c115321 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4fa8d356 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x75660721 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8295ffcb v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x871d33af v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xac2748a9 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc2feef99 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x03cb36e9 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x22c4b48b videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3005f4bf videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x38b7d832 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4d342085 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x53e75dfd videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5cacfc2e videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x66d3fd56 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7d7665a0 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87b50a20 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x884e9c2c videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x92a80a0d videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9e50005e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb61b8872 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb9b8ca73 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbc76e66c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbdaeb76a videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc08057ed videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd09d4985 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd68d0ebb videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd7f734b5 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf47f1529 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf8616cf3 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfd944286 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x796212e8 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xdac27d2b videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xf8f31d3e videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xfc4d4748 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0b2fbc4d videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1481e237 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1b67b6c3 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x1cd0d30e videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x76c90b82 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x7906ed55 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x846db383 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xacf1077e videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe71190d4 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x54b7501d videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x57df9813 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd69f26a5 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x01013169 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x012d5452 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0283ffa3 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x07c1777d vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0b4c5140 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x152311af vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x23ebf1c0 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2a90d1d5 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b974fda vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3081dfda vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x319d799f vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4522e1e3 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x48ba2bde vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4fbeaa07 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5e1688cc vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x69e450a8 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8722a4e7 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8e288ee1 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8e48048d vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96a4970c vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xabfa4005 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xacc87bab vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xae7540e8 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb0bc958f vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb0e79bd1 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb61401de vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc65a317f vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca4242a9 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcf0e8515 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd18e6181 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xda6273b2 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe340cba2 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1b5530c vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf39037cd vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x2f569988 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xea3fa1a7 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x795cf340 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x9fd4eb7d vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xb86528fc vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe5ecf8f4 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x2f09c8e8 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0ebcb63d v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ee4dfd5 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x22e2ad5e v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d0ac05e v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d6580b4 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f24d93d v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4635cce8 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6fafa9a8 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x73bc7b15 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x740be7dd v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x75401c19 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7817d2ad v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x89b6109c v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x90f434e6 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x92cc195d v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9354847a v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb7dc13bf v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc423a385 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcaa6c60d v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd1190955 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd22fa796 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe725de10 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff37613e v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x35aa38a2 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x38be5dbd i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6633d172 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x79e6513a i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x88940ec2 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa5977506 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb04db608 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xd6120075 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x248afe6f pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x359dddd6 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x82442e2f pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc43ba62f pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x99c17faf lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc3cc98db lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd8a07243 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x230f3a35 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x589da014 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6f7f9911 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x70385351 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8d716c54 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xad2fcccd lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc1a35942 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1b92d340 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x27d3d4f8 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x67699fd8 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x75666ab0 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb55e1774 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc5373ce6 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x14c43ca8 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1b2831b6 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3b6a1865 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x491ed0ec pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5f2148ed pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6ec9c1eb pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbe7edcd2 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd348e6bb pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe5602913 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe7d21a69 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf4e3f172 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x17e50bc8 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf4ce0c36 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2364a3c0 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x366e717f pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x46c9ffed pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x857accb1 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xba7abfde pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x06172d9d rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1a26af13 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x20d3af5c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x480b7192 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5a22881d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6824e2e7 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6a257f6a rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x70ad4d9f rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x75b9ce53 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7e68ccda rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7f81c6ae rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x806a8217 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa77b5ef2 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbb25266e rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbdb74ca9 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc1045fa2 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc6311360 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd4d524fb rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe231ec5f rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8b1dd9e rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xec9c3217 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1601c4a2 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x64a68b44 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6e301ebe sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd38dabf4 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe0c04917 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x51c1e515 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x84b8abae tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xad549c7f tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc52e9d9f 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 0x6756b9e4 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2764acda cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x99c45184 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb3afe6f5 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xfa9b89ae 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 0x54eaab67 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x715da816 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x792d3ca1 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8696114d enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9d331dae enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xac9e8ac3 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xbe0306e7 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0db06aba lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1ec97025 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5b041c14 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x78a539c9 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8c565c5a lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa936c75b lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb8fdb887 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf981bf43 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 0x194f566b st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x4fc7447a st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2b3b68ff sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x43fc0741 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x60a6d1f8 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6a9e2d58 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8bba4b2b sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc8e34fd2 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc960dd55 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd1e432f9 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd8007ca6 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x41a76019 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x43c74f5e sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x97a8b959 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc0c72af9 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc134addf sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xea72f80e sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x13cafea5 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4c2ee410 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb5508cbc cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x31ac5f00 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x616b0711 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x8e646a6a cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x6ad4d3c6 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x627bf50a cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9b065814 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe5c335d8 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x04cc0782 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x04faf09a unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06567666 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0f9312f3 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19034ea6 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1a0772a4 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25c412a4 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2e5a24dc mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3505169b mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36f3a774 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3a0cdce3 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4b380aba mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x515c3960 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x52242a70 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5483871e mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5aa40906 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6ce7287f mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x795df070 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7a586da7 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8073cde8 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x857f4cdc put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x88f7e6ec mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8cee4a67 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x90583207 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x94e5e386 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a214fcb mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b194395 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9b92a8cb mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9ca32d95 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa21f3555 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xae35e10a mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1a67545 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb6907bfc mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb719996c register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbab4d0c5 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc9165014 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc348105 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdf907ceb mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe303cbd4 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe4de57c7 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf153c484 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfcf05ffe get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x605fd473 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x807d0923 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x91ad2b30 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x96bf0586 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf6969a19 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x7c9594d4 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x97e1f16c nand_update_bbt +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xae6beaf2 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xa756a10a sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x001b0ead onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x0705e64d onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x16c81213 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x208ad47a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2129bb00 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x25359902 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x34d7bde0 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4e29c6f0 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6255b642 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x69c6ad10 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x870b4efe ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x88d3c73e ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa02be981 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbc18a6f0 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xee958c77 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0c7f237c free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x126e69e1 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x259723ec c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbc23bca2 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc9fdd59d unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe861f34f register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x037e905b unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2b92f2e6 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x32e5fc7f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3d99ab68 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6e1f01ea can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7284e486 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x72ecb822 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7b1e0380 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd52ae3d4 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf734e789 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfa2eac91 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfc09d6ad close_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8986fdde register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9999c552 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa1549aea unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb7d0e08a alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1772d4d1 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5068d5a3 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7f8efb0f unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa846ab17 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x116ea8a6 macb_ioctl +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x1b5fd78a macb_mii_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x36e94d83 macb_set_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x3cf80ee1 macb_get_hwaddr +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0x6b7a7982 macb_ethtool_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xa4806438 macb_get_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/cadence/macb 0xf84e98be macb_set_rx_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00fca4f1 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a727313 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ac451f7 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ca47aca mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16199fb2 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1abba6e4 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b5f52a7 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b9d2f1e mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x224c8b5f mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x241a2f37 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x249e7846 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x256cbc24 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x289fc172 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ed443b5 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33a9a42e mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37de9be6 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e5bb918 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3eea8a0c mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x459efa1b mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4897a392 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a1cd60d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x512849e9 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51e961af mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53f41a8b mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x548ab64a mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55d36106 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55e9524e mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5656bbbb mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a682f57 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e508bcf mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f170f4a mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63d06895 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x685f1f4d mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d38df76 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f215d3b mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a048d96 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80f2b00c mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x879450a9 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d0e3957 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e0ab2b1 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fdb1453 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90ca7989 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x916fca0e mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96cac7db mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x977af377 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b3cdce5 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2136865 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa428d3b0 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6eeb77f mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9d05a24 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xadb93dff mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2f4f75c mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb830e929 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb98a2616 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcca3c1c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbeb16598 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5778f3c mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7b69cb5 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc99a4c13 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0e2d236 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd12fd978 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd41fddee mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd720134b mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd925dbf2 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdad94cf6 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaf8fca9 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb41c3f4 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd3b26de mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfeaef8d mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe20bbfd2 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2645adc mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5fd9980 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe83fd724 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec34da5d mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3a797ba mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3da6c52 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfba2bfdb mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc78d6ba mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x12c7f701 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x36c36852 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5623f95c macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x58384344 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd7a214d4 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x010a0f8f macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x30978e54 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x30c2a3ae usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3c43d114 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3cdf8e41 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4761e34f cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x499fb809 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x68499019 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6bc274da cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc884697b cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd335914a cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1bcb8bdc rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3582798e rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x67b47473 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa19a306e rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc6848280 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc99f83f5 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03577ff8 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0de3c90d usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x17e62f47 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1911ee60 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1923db59 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x23c5ffc4 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x319becbc usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x34050a78 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e2e0fe2 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4214f54a usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x48435f08 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x55f4c0e9 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x693993e5 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6f2a7d92 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c6e52a8 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b76e755 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9997bbff usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9e29c717 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb76772b9 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbc64e0ad usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc2972c4e usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc93f4d9b usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb04f0a0 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb3ed1c1 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcf550677 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd25cfbf3 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdc090d0e usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xebc3b9d7 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed952304 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x119d14a3 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x19ecdf61 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1a6f80f7 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2050f627 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3a58c27a i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3e7d1d45 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4fe5fc5b i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5540dc62 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x58459951 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x60cccf75 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa195ae0e i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa93920f9 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb72b7a65 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd50a0b67 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xed30df7f i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf8d53544 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xc0b27451 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9b92df3f il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9b9695ca _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xad109a8b il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc9b5d249 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xdc017e49 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0379e6fb iwl_grab_nic_access_silent +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a03fec7 iwl_release_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x11c0ed7c iwl_read_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x14663f95 iwl_test_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x16b10931 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x210b17b8 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2334a1ba iwl_set_bits_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x45290aa9 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x47eac6d6 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4e78d348 iwl_test_handle_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5b73ddd9 iwl_test_parse +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x61158522 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6189356b __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x637e4248 iwl_clear_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6401d1f8 iwl_test_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8032a710 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8514e5c9 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8fb1afe2 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x90cbe216 iwl_write_targ_mem +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9204bc77 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x95d6f74a iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c21134e iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9da58e2e _iwl_read_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9ff9bceb iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaf08b6e8 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb1085017 iwl_test_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8073a52 iwl_test_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbb3fffe0 iwl_set_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbc310b69 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc3807654 iwl_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd2f77a3b iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd5f8c08d _iwl_write_targ_mem_dwords +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe1a2d02a iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe93388f1 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xefa92760 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x113a1395 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2af43c5c lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2b7b5ecd lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x35138dd8 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4ae4bcd4 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5103f5f2 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5191a523 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6c226647 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7d197d80 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x81824a7e lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb037484e lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc266d2b8 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc9c691e5 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd01a4fd9 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd0c0d3aa lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xef230ea4 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x26485760 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x27983cfe lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x431841ed lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x748cb6a7 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x851797d4 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x96f56f8a lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfe5167bd lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xff6c05ed lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x39341830 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xea3228b4 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18432cb2 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x249c2aa3 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x27b2ae6c mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2d455a1e mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x45f33175 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4e6f1b89 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x59124f3c mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5c09cf54 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6ded632a mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6ed91560 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x819fc884 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x967ee9de mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa24daacd mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xce277bab mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x240023ce p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4049b78a p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x42b75617 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x516e25b8 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x53203f57 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9467be27 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa2afc604 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc2315bff p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xce4abfcb p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x023db4b6 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0982070b rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0d007212 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x13d401ee rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1beae0d7 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x221b81b6 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2aab4823 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f101ac1 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32290e8e rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32ff762f rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x38ebd4fb rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3b919cb9 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3bf8b863 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x45032b39 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4d51b094 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x589498a5 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x61ee59ee rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6dd1dd71 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fcda7ed rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74ef8e9b rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x759ae173 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b1aefc5 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82f90e1d rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x84f65859 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9165994c rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x94283cda rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xad187d51 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb37558b0 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba1823aa rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc0b09e5f rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc80caa4b rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd6e0ee9f rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd76f599f rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb48d5a1 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe2597498 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xefe40ee1 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xefe70f3e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x07e4345d rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d2667f3 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x13e9e360 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x18f1fd20 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1aa3dda9 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1d8e2aaa rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x219b8036 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2433312e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2eaf2333 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x307f4c14 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36e5fb0d rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x462fc4c6 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x57d5e834 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b685cc3 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c81197d rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5fdafb49 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x64237485 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67fcffda rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a56d87f rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7c199713 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x805fb35c rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x89c9881a rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9939881f rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a97b0c1 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e99f5c5 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9fbf0a3d rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6abe04d rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa7afb70c rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaaec432f rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3709e1a rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb64976e7 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb6e0d31f rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5bf01ec rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5e80934 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xca9b2f81 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda1f20e9 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0949b75 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0a0b42b rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9887e5b rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeab02612 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xecca3c27 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed13b192 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee764353 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf3bfe24a rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5717ac3 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5de1f9a rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x156fd4e0 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2f72ffe2 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x5aae7115 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x779f8109 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8970c370 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa7e2d201 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdd82fbfc rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xeee01218 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xfb909dc9 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2be85619 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3aa9ec51 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3b087a08 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x47716979 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5667390a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x72ec5f06 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7edf3f5c rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x81996d1f rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8e0655f3 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc3fc88a1 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe016e155 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe89cf16e rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeb0a3775 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xee902460 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf6e0b9c7 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfbb549b4 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1778aaad wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x84c03d13 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb9462f69 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e1fd721 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0fe09bd8 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x12ee1f1d wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14b08746 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b2bc344 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b99d632 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4477c544 wlcore_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d704475 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 0x71a6483e wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7c5cff46 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e235383 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9077142d wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93f77c5e wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x951def13 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9e556ba5 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3a07259 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa973634f wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xafeb4311 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc1483c39 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc90a933d wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd39bb505 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdbf85cef wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe467a514 wlcore_wake_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf15f8e06 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfa4aa128 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd9cdb2d wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x91e4bef7 rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xb7663497 rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xe819aa68 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x05a6aea9 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6a6ca69c pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xcc7a03f9 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 0x9db60a8a ps3stor_setup +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xaabbabc7 ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xd238cf94 ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xe83b43ec ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3e41fe89 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5b6b4f43 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9257e57b mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x93b540e8 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd966c05d mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x095426b0 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x344694d5 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7933852d wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb6879ebc wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdeff13b8 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe84c9e75 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xf6c19c40 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03801727 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0627aa33 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x116d2073 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13c57dab cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c01246a cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29f91d2d cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2a65e2b7 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2fa9e4ac cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3068a435 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32811ecb cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3771f16d cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e725a2b cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44acb454 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47978e62 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b2a9c2d cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b69120d cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55f29663 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x56bd4b43 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e87651c cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x67253162 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7213ab4f cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84acacae cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x864efd9a cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9925fa77 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99761e69 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa1657af8 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa76bf4db cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf8d43f1 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0749305 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb25538b8 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb65f7e4a cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb9aec3e9 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc7c35e0 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca2f08fa cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcdc1021b cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd24591a7 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde42c1be cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf0d181e cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe000a4fa cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5d9bf93 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe74e1a1a cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec1cb207 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf277e395 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfed47450 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x18c9f751 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x31a8c47c scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5030dd90 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 0x6c9d7a7d scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x701c9adc scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8494b54f scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa92c46f9 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x07714246 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c3c737a fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3abcc64b fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x44905023 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5a01eeda fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x797b2709 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x92c25404 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x93be6d2c fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa3c64a3c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa5c94003 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe552af45 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf3089f84 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf357acf5 fcoe_ctlr_device_delete +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 0x00aa79d3 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0220d8cd iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06cc5036 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x098b1234 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15ece4da iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1c5c47d3 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2055a11c iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x25fb0698 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2694e54e iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2d78ad00 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x343efdcb iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3483a535 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35e3c91c iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3db29c7b iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49add401 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f0ab4ec iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x549084db __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x568f2df2 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x622deedb iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d0a1957 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6eb690eb iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x85b32e9b iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8636c3de __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x865e27be iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86fbe4ad iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d06e008 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e82cadf iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9219b6ca iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x92772cd9 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e8186e6 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fa69e1b iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa9f6b3a1 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab7b5005 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb6f80f52 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba109174 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbfb0d202 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc2530aba iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc412b878 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc45dff0a iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca327785 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcecd3a10 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd302a9c2 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfdc9ecdc iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x15e019e4 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1af8d7a2 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x23f67ac8 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3b2eec75 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4199a2f9 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x43cca666 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4b8dc758 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x537bc688 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8db2dda1 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9381f17f iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xadae2638 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb4f53aea iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb5b0ba75 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xba49c2d2 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbb751423 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcdd60c11 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf636dda6 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x025863c9 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x08637ecb sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x16598542 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1b8d8938 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2b481ead sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2f52d902 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x315d9923 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x46211384 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4a16cd33 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x50ae9fe0 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52047e16 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5fc93a62 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6976f2e2 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x90f9859b sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x96dc2c5c sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9af2a9b5 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9e222a49 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb7a33acd sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc6eec93f sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd90ec1d6 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd9229d54 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2750fd2 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe412baa2 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf307cac8 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf6c5e38a sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x28efb142 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4801f097 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x56cc62ca srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x6d70e316 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xaedf294c srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xf60795e9 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x002c4031 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x360253be scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6530901b scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6d6cfaae scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x71140f69 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x78181b21 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x78bcf363 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb331d7fe scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xefffd6a3 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04f92c32 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0bf2e52a iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x103071d0 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x111f4b42 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1870471c iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1acc2562 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x232201a5 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x244092a2 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2e7e81ba iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38a83471 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x39f7f2b0 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3e564eff iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c21ffd5 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e6fa992 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x51e0179e iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x58955ff1 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d5435f7 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d9878a4 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x748bb79c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85c9ad72 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x89d1a991 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92ba756b iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9629b0a6 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9a5b38d8 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa127da82 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaeeb501b iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaf14a549 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafa01479 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8b0c53f iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe0c075e2 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe176b0d1 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf8d84fe2 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0597cf4e sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1104219c sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1e019e83 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2832c4d9 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 0x4171f91f srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xaed2f4a7 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xba23ca85 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xe691cdd6 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xff2c9ca7 srp_rport_add +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0b770b6b spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3eb23743 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6dce48f8 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6e5024b7 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8cb26e65 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdf093725 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x69cf5083 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xbd94c2f3 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc188f57f dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe2ef9034 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe76ba00f dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xab885e1a ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x11dc995e CsrMsgConvInsert +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x1bcd5b39 CsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x2c03f51f CsrMsgConvInit +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x3247662d CsrWifiEventDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x332b7173 CsrWifiEventCsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x3640445a CsrWifiEventCsrUint16CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x3e1c5710 CsrMsgConvFindEntry +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x424e1416 CsrWifiEventCsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x482415df CsrWifiEventCsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x4dab1360 CsrWifiEventSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x52a1223c CsrMemCpyDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x66a4dfca CsrCharStringDes +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x67a6a33b CsrMemCpySer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x69065e40 CsrWifiEventCsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x71d701be CsrThreadSleep +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x75c9b662 CsrUint8Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x80cc6f40 CsrTimeGet +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x90a86d08 CsrCharStringSer +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0x9bcd90aa CsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xb0b1df4c CsrMsgConvCustomLookupRegister +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xc8956c66 CsrWifiEventCsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xcbac6a24 CsrWifiEventCsrUint16CsrUint8Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xcfbb603b CsrWifiEventCsrUint16CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xd37329dd CsrUint16Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xd47785ba CsrWifiEventCsrUint16Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xd7b6c96b CsrUint8Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xdd2fa37c CsrWifiEventCsrUint16Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xf079a8b4 CsrWifiEventCsrUint32Ser +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xf0e11db1 CsrUint32Des +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xf7d1fed4 CsrWifiEventCsrUint32Sizeof +EXPORT_SYMBOL_GPL drivers/staging/csr/csr_helper 0xff373291 CsrWifiEventSizeof +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x12e6177b oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14523351 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x14c4b6b0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x3c6ec396 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xca667daa oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeb94de18 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xeec034fb oslec_free +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x98fce28b adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0xbd5a0e51 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 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 0x104bfada usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2191a7fc usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4947d960 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x49f21e6a usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4f1794e9 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x52aceab9 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7d3c545d usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x80da3b43 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x83f3b940 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa087bba9 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd0b5cf2b dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xdf4328f8 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf02d28ae usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0x94b2c7e0 pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/uio/uio 0x9b52daa3 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x9c8a0d86 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa8e68ff3 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x25458736 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xbc731358 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x0ebeca60 usbmisc_get_init_data +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0x33771888 usbmisc_set_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci13xxx_imx 0xb67a5a40 usbmisc_unset_ops +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x21b2cfc7 ci13xxx_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x6e1b03b1 ci13xxx_remove_device +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x051554e9 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0690cd0c usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x07d35f02 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cf984a1 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x297a0c16 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x391c01a6 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4b2e749f usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4f44e739 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x593112ca usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7a5f1039 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8791cf4f usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa85b99b9 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb25f9900 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbc4eefd4 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbec6a4cb usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc36370da usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc6c2e28 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdd115a58 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x02063f8a usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x126bbe17 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x5b6dfec4 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x916c2882 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xa9168f2a usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xe01b8ccf usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8555194b ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xef53f09c ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00fb3814 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x526a8fe8 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7f66fc6b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x83751c45 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xac18e420 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbbb3edb7 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbdd9bf9c usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe5678ae9 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfa79e539 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xfb07efbd musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x042002d2 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x217e4b41 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xe789a81d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0cb786ca usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x17622b6a usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x18a6c674 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37885619 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3ef5e127 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4bba599f usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4c5e43fb usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x707fd804 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e454049 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8633bbaf usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9c2b4ce2 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9c50d09 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6f7d672 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xba89935b usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdb2953f1 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe3160fec usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf31955c4 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf9bee0f2 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x031426dc usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0814a6a0 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1a914a6f usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1e34552b usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1e71a486 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3e0d9069 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x42ddca39 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x464ca276 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58bbf1b4 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6c84f21a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6e99c6eb usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7647c9d6 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7c5a263d usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7e28a6d5 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7ec7b8a6 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x83c4d6d9 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x90db387b usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa82dcef6 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb4c3d4ae usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc0445ff7 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdb50deca usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf0636253 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x06b3efdc wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x58c727aa wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x63cba1da rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x84cc3c70 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb5ff06d2 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2338b755 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3b315274 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5161f23e wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5d4c9b90 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6010d31d wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x63bbc986 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6d1dab02 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x779aad52 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7abd5870 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x992ac973 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9982c636 wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaedb9729 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcc7100cb wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcf0307fc wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcff92d56 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe5ac391d wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x18805f0a i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xe3bb907b i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xebb30c2b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x1ef0e3e2 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x30fb6e74 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x36f1cbf1 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5c5b9bb0 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x78be887b umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc20ce3df umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd833392a umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf8908fba umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x042e1e91 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x066913e2 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x069c8b04 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x13913981 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1702a94c uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2426a5ca uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2742690e uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x28dcec60 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x34b58040 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39d560b9 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x45f386dd uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x487925d0 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4cbce97c uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x501fcfa7 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ce92e43 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x60ec8cb3 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x659d63c4 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x69e5f353 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7430161a uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7b59c135 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8c608e01 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9088944e __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x972b3bd0 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c2f7295 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9fb1390c uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9fe4c97e uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa2b1d325 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3ab3b82 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4a03150 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc2ab54e uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbdc7e273 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc521c59c uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc5c9bbde uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc9d9016c uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcb7d8dc7 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcfbab260 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe6e45a3f uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x345d5810 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x160baf8f auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x40ecafa6 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x5243bd58 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x52f8db7d auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x563e66ad auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8b6e8b00 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa7ccb1fc auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd1b04bec auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd981a331 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xef2bdc8c auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1e702d0f ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3b9f2db8 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5a13128a ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6e0908af ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8fdf9544 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xad772300 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xae6f5c23 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x2f7aa82f sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xd7f95e2a sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x0c5b5cf3 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x82334e6d unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x93f67cd9 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x9cea8d6d register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xced76140 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x03efb568 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x0dc6f491 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x55fc2f6d virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6a291710 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x7cb02322 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xa6dd1d42 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xb7374de3 virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xba506d1d vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xcc784894 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe6247fdf virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xe73cf496 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xedb0ae1c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf0cd747e virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x24e4bcfd w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x38d64e46 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x43500878 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x65eb567e w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa98fec94 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb2f8c43e w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb60ba895 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb9f767dc w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf45216de w1_write_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x098de1d1 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6b2d0831 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 0xd11d0c91 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fat/fat 0x15fbf346 fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x25ecdca7 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0x32057064 fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x33db0150 fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x3dd916eb fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0x3ebef481 fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x46f9cfd7 fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0x4826df34 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0x79c9d986 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x84f7e1da fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fat/fat 0x8afbe725 fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0x8f1cf905 fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0xa4609d4d fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0xaa02a200 fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0xbf6ed4cd __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0xce024b73 fat_sync_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xea7f8b59 fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0xf11bd089 fat_scan +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 0x20626d8c lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5b353350 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5c89af23 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x619f0c01 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x68d84b43 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x74dde7cc nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb055bbda nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xef4a1b84 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf76991f9 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0093ef9e nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0165ca6c nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02383a00 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0273d167 nfs_writedata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x075a80ac nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07a47c35 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ba1456a nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e2fc296 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ebba457 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f4311f2 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f6ccfdd nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x115a1e33 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14969ccc nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x170f17f9 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x171e083d nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18eb2e0a nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e268c46 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f9ecb4b nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21771bb4 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23624f03 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23ba0903 nfs_put_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2775651e nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x283c30ec nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ae46c6a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ec7e241 nfs_setlease +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x307a45f1 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31877d2f nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x328cfc81 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32c9e350 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x340d8c66 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x345bc8d7 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x348a01f5 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35480dac nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3640c343 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b615a1d nfs_readhdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bab6899 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3da0bf7f nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44b70359 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45672658 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x493aa1f7 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cc786ab nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d8a2ee6 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51985075 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x527adf62 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55e00fb8 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56ed1869 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x590b9905 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a9c42f3 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b90b106 nfs_pageio_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f82a30e nfs_dns_resolve_name +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6adcb3b3 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b78a12e nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72c1f43e nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73ef270e nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x741fee18 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74d85891 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x753b6434 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x756b4c28 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75b6c829 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x768dbe55 nfs_generic_pagein +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x787ba90d nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x796be91b nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7acc013d nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c4f9223 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d7e85e5 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f191c6d nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80ff8d0e nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81b56a31 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81f9c4eb nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x851c3b7d nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89bc5a64 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9031e348 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x934716a6 nfs_sb_deactive_async +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f7d130 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98c05ffc nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99de5ecc nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cb80d1b nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cc69a61 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ea8bb4b nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0970c8d nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0e9b630 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1832a13 nfs_readdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1e440b5 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa498e67e nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa54928b8 nfs_fscache_set_inode_cookie +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5a7c7c4 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa498118 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab2fa268 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac9c2309 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae1bbf7a nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaeabc95b nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb981dd4d nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe6eb5f1 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfbb196a nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0c4fd80 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc14a8300 nfs_writehdr_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc33253f2 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbc9a506 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd5a5364 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce1926f1 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce8f4e54 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfc01937 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd22ef3fe nfs_file_splice_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd302e6ae nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd33eb67f nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd58f8625 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd877d096 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8e798f6 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb80158b nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb87323d nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd4caca4 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddd0652c nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2470a40 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe35b9340 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3b5eadd nfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4e61103 nfs_pageio_add_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5663279 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe69930f5 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7f143a9 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeaf31999 nfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebb3849e nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedcdcb6c nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee6766d4 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf35dd505 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3b02fce register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf71ef357 nfs_generic_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8a0d2a4 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa2422d1 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x10ea2273 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1776e043 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x227b4ccd nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25a32d46 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3495d54c pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36bfae36 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3cf0492f pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5108da20 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x539d66ed pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63e06dc3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6be4f43a nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x709181bf nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x77096928 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7871c4c3 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90799637 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x933032bc pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9798b338 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9ca62604 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f52d6da pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fe8259b nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0a43f09 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa2f8145 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0cde803 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8b2ed46 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb9d1954 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde9e392a pnfs_writehdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe0ab5814 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe290f2c8 pnfs_readhdr_free +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe61a31b4 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb62007e nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf70c6c80 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf98ba20d nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf9b20fd9 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfda91aab nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff7e3c72 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x09f343a4 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x80727ed7 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0x82e67ce0 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb9fe7440 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 0xbc78fa9d o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc231fa9c o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xcd84ba00 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd6a2873c o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xef1ff80c o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x058d4fce dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x286514d6 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x81e3bdbc dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xaee6160b dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb015ea2d dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xcfe858b8 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x025e2d69 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0562c415 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x16b2e575 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 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 0x9d206a2b ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb4bd060c ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xdc823ea4 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe2bd47db ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe417d940 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xec71e835 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf5049ea1 ocfs2_plock +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x4578c6c9 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xae58c6ca notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xfdfcb8cb raid6_call +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/802/garp 0x19b28127 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x221a5ce9 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x36a83ff6 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xacd32ea9 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xafef47aa garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xbdf1f73a garp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x6bd98df0 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x78242e59 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x9fdbb74d p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc85148f8 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 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xc4ff0416 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x83be2c37 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x07d71f31 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0e9c80e0 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x20642484 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23f76fc7 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29ac2db6 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x319058c9 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36301bc2 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3668442d inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x44426c20 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x58b51bc9 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5d6b9811 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x711d01b5 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x734246fa dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x79a9f35c dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86356ecd dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8893f703 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b058132 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90059c39 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x978505e1 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b7387fc dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b7fe88b dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa53cda20 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0d210c7 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc1bc9a89 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7e78842 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1b3428d dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2fe3ffc dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd5be55a9 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdb5ceef2 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xec48cff3 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xed12584f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf473fed9 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf7083b87 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf8216217 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfce34372 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd3c3467 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1b791ca3 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1d56e807 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x53d25da4 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe299023e dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe76e737e dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfb12a09e dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x672ff276 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb7c55970 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0xafd81368 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xbfc41758 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x314f7bf5 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4c84a92a inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4f8d9c79 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x91581f5b inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd030ef26 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf0a5c652 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x1310a6a4 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x5a2dcdb5 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa0ed99b8 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 0x021f1728 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x092aec5e tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1ec7ad82 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb2d3d412 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc5b8ed9e tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0x8d5831a7 xfrm4_mode_tunnel_input_register +EXPORT_SYMBOL_GPL net/ipv4/xfrm4_mode_tunnel 0xc70e8714 xfrm4_mode_tunnel_input_deregister +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4c49592b ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x60fe2173 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9c918297 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa2b8bb7d ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb11b7993 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x221febd8 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x8ffd46c9 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x24575e09 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2ee5fd1f l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4266eb8e l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f4be4d6 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4fad07b0 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x51dec9aa l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7c7e38e4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8f5c95f9 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x954532df l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x988ca6f4 l2tp_tunnel_sock_lookup +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa6f2cfdf l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbbdbeb08 l2tp_tunnel_sock_put +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc1990572 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe7a9e481 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0f4042d1 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x16c467f1 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x65786cc1 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9f607ab2 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad646d4a ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc2457520 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc28ab6a7 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xda8d1eeb ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfdc86942 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfee395c9 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2f9b8af3 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x515f212e ip_set_test +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 0x848deb13 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x87e701f1 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e306ce5 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa7927ae2 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbaf3f8b4 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbc4059d8 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 0xe3e71a89 ip_set_get_ip6_port +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 0x37aa8bfe register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb00ec551 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf8ae3fbf unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfb0d5774 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0432b704 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05f6cdfa nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ab1e341 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d78a611 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x122c132d nf_ct_dying_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1647a65e nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17b0a203 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x199c253c nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1dbe7da2 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2116b841 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x230e0e35 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x247c931a nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e312b42 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e4b25ae nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e4dcac3 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f881f20 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x351d2250 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3716b994 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37cbcc0f nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3917b9a2 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c151cad nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x428f5ab3 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x496b4f50 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ea7969d __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50c455f0 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55983d43 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bc96e87 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c852ec6 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61910e64 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62f23772 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67d59adc nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x682be708 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x684bff3f nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69dc54e0 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fff8279 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77400dce 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 0x7ace00f6 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f9fec32 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ffba92a nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x886250ae __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dc1e2fc nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8df335da nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fca6717 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94338009 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f6f31f4 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadae21cc seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadcdf862 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb23f18a4 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3e46ce6 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb45a078c nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb74cb56c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb2cab38 nf_ct_expect_register_notifier +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 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc67dacba nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xceffea23 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8250197 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdae83695 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbb24338 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe026b88b __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0f8b098 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe912d0d8 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe990dd83 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee9eec17 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0c38617 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf10af597 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4921561 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6d19bb8 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdc6b64d nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x600de7c8 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x69ea18b0 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xd0712195 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0317b90a set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2562c742 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4aade5e9 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x66ddc12f set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7ae2e97c nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x93d1f921 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaee6cbb4 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcf65644d nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe75a466f nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe90b45a4 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xab32fc40 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x48df7dcb nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb6d800fd nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe5e88148 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfb3132b6 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x2f7f3162 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x61a37bf8 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1466c152 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1916cee6 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x54d00bae ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5b52e8b6 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x609d915f nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6bd7a69a nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x81921fcb nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x82069dc5 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x91eddb29 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x937376b9 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe0eff230 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe4a2370b ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf0c91da9 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x068d5b2c nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xa3738552 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x24179037 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2b7ec03c nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x33c49d86 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x36deb760 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x590bf9e9 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x59edd876 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9970e681 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc1a27c14 nf_nat_tcp_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfbadd508 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x712d47e3 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x320d9a20 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x631e5b66 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6cce28f4 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9fc8af7c nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa1ecd97a nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xed49aa16 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 0xd802dbc6 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xe2abbb0a nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x07e79f3e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2426b610 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x26a6f1c5 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x34a72bcc xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x34baa254 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4c75199b xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x558ddf42 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5fdddf96 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7802a869 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8f122b80 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9828d23e xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b4bb08a xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa08f0a1a xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa2f9efeb xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcf4b00bb xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1bc7e21 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0bc9129 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe35fe60b xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf2ce0cdc xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x1754232c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xa8c2131a xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x03a7406a rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x115d4945 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x1da21934 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x244ce9cc rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x32188f3e rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x40065f37 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x53574eaf rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x57f4e9a1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x5a0d8875 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6455d7e0 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x66a6bf92 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6b8496e2 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6c9737da rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x76e1bb24 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x8d6cfd8c rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9134452b rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xa6f5628e rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc77d48e7 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xd3cb32fc rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xe7bb87fd rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xfa43e2b1 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xfb29606d rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x75eebb1c rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xb8be8fe7 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 0x1ca9abb4 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2efd6c43 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x57323ba9 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x68281bd9 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6b7b2c0d gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x78fff016 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7cdbeeb4 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc0dea847 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xda7e855e gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf2ce50a2 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xff5ce051 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x002909f9 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00d04c56 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00da404e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01b644e3 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x029fc792 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x055a27b8 rpc_force_rebind +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 0x082b2ddb svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09bacf99 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a6d60fc _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b303e5b sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c37e58c rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1154a2a7 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x155ac895 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x186a7267 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x187cf79a rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18836e09 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ffad31 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19b6f171 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a73fbdd rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b68eeaa svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d0903d0 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1de0caa8 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ef1ea11 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206374ff rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21316ebd rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x238c4fa4 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2597aff2 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28746a08 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29b411c3 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29ddac96 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a96aa64 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aa38334 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b4f5bd7 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d1b8965 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e240f79 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e8ce61c rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f4154e7 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x319341c8 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31df40a8 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32048f50 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x328bcf97 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x349bb934 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35c344a7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35ea7b80 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3849e8c3 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a40aa70 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ad9d98b xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b437de1 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d5b4183 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f5ebc80 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40774fda svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x427a964d svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e81f9b4 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8dcb9a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50ac59af read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x547db58f svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x550f48d2 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55e14490 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5686dae8 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59d6fd47 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a5bf386 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bbe8515 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bf0d63c rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x601a188c rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60bd4b5d cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64033ad3 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6492511e xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64be3b26 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64c09f65 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64dea287 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x653de271 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a9d25f svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65eaece4 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6715a198 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67ba269f rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67fcf1be rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6918ed48 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a8ad1c9 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6df22e49 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ee3073c rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70125fa8 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70a96431 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7143fe60 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c7523c xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73a82ef9 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75040f7d rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x761de245 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7708ced9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x779a9743 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ae366b1 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c77f1a0 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x821e6410 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848d8b4b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x869dbcd2 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8742ac55 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88120549 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cdfe7b5 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9005ffa7 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9120ea42 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x926b819c xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92990649 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93686ac6 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94f49ce9 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9604731a rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96b8d750 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x972635ab write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99d4a39e rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a97a8b3 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d79d0aa xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e961855 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22c9936 xs_swapper +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3718446 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa39a14f0 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3aa8fce xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4b4b537 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8c48523 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9962c5a xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa2aebd0 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa8dbced svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac5a9c5c svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae1d785f rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafa17dd4 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2da37e1 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb74f53e0 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb78fe5f3 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba2b6720 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd2c7ec8 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbebdc61c rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0341193 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc13e5207 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1886f55 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc22d0174 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc36180ed svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3bb98e8 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc44d647c sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc72bb586 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7589fc1 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca795dcf rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb6ba0f8 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb786a05 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf57ca13 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfdc7caa xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd03204b1 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd05ba1d9 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd25b991f cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4b6fe01 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd50ce66b svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd739d560 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda4e078f xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdafdaf1f xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdccd68c2 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdce08524 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf266be0 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfb79ec6 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe07cce6f bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7a769d9 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe865ac8e cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8e726c1 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeba0f929 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeca7e5be xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee13dff1 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefdace81 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0a8fe26 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3a4d0e6 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5aecd9a rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf63498b1 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf63fa186 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf87ed438 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9cd1bf8 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc389c70 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd7ed93b xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd82b44e rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe2cfc2a rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/wimax/wimax 0x006a881c wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x155139b1 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x260b9069 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x36cc1710 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5dd128ce wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x66ba4a02 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8b832c78 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9582773e wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x96a2ce2b wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa070fe6d wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa5824d75 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xac486469 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcab2327c wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x11039fed cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x32ca902c cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3682290b cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7c53bc7d cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a9bfc17 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa6dca4c1 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbc8e14ee cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc13127b0 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe0de21b7 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe421133a cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfea3f386 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x279d26bd pskb_put +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_ipcomp 0x569fee3b ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7df832a2 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf36f7f05 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xfa9f9727 ipcomp_output +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x04199d04 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x0f1cdf4a aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x7fdc6adb aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x8ca6665c pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x9638d350 aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xbfc85e42 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc14e8829 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd6096c83 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdd1a38e9 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdfb2b40d aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x102311fd soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x448cb998 soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x5605f7a8 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xa26ec714 soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xbcf08170 soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xc57fc449 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/core/snd 0x4ef95d34 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x8b75da3d snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xa053caae snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xa090b2ee snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xdc118d35 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x135f42c0 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x75ac898c snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe7aef29e snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3794abe3 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe39bf9da snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1043fcd2 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7c9c4840 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb2c3b6fa snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb36ea2e6 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb487a94c snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe497c30a snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x045f64e3 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04623be1 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04769da2 snd_hda_bind_vol +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 0x0712bafc snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0722983a snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07899701 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a12f7a8 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a764aaf snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f4292e2 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f470ffa snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x100de823 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10c1541e snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12c5771e snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1408d708 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1544744f snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x157ef2a9 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16e93bdc snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ca89d92 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d9b6ad1 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e6afb10 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x213c349f snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21b85bc9 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23651e6e snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x240b0eed snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29a091a2 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a3fb54e snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c0f57dd snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c5b65d9 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30fda3db snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31400942 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3344863c __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35791387 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3604b234 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37f0ffea snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x389cdc7e snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fcb054d snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43466f17 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x451feae1 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x494e6f79 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4988ed80 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b8e8238 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fe10868 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x528eb752 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5384b405 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54c002fb snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x567e4fa5 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x596b9089 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59a84bdd snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a6b65a2 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bba5fee snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5da2203d query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ecd699b snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63d72dc7 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x656f1130 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66966e8d snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6976ae06 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69cad463 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d1617fa snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f16217e snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73754d85 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x741d33dc snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x742fb711 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7784f81a snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78e1085e snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a2d3b30 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c616f3d snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8099893e snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81761b35 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8289c0a2 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x853e2548 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x868ca14c snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8816e451 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8904904e snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f90ecdc snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90e7fb22 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95916e10 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x973b8c82 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2521374 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4074271 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa562c67e snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa59269ce snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6ac23f6 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa700e495 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa97756a9 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9fa3d3a snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9ffda9c snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa4ac8e3 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac1c4247 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3ca5a29 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3f7bb0b snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5caec38 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6665aea snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb68b127b snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7cea1ce snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb83293ef snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9099d29 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba3f9acb snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb334d13 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbc86b01 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc42ccb10 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc66d7f3f snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3e530bf snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3e98418 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd58d1099 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6c2a955 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7688249 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde749283 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdeb201a7 snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe07b89e0 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0be2ef1 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3bbaa49 snd_hda_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4873434 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe88dcf80 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe905e3b4 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea5223e0 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedfa7c68 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7ed2abd snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8918941 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8e66f84 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb7a5e3b snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfda8f799 snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xbe47d4a7 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xe0f0b12b pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0x028b4070 ab8500_audio_setup_mics +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ab8500-codec 0x2a57c1df ab8500_audio_set_ear_cmv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x0f7c445b arizona_in_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x106672aa arizona_init_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1f8ea94a arizona_out_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x2540cddf arizona_out_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x53079b3c arizona_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x5e8e6067 arizona_mixer_texts +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x73f9f1d5 arizona_lhpf3_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x78355a2b arizona_mixer_values +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7b4fdc4d arizona_init_dai +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7e59c88a arizona_out_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x93ed4d8b arizona_in_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xb464333d arizona_set_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xb65ecf5b arizona_lhpf4_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc9c29637 arizona_mixer_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xd58efa61 arizona_lhpf2_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xdc7c8a43 arizona_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xe466e0fc arizona_lhpf1_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf23a2c4b arizona_in_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x0488575e v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x0c43b555 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0xc3c06556 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x0f4f7103 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x544bb2d3 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x8bb0d417 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xb379c49f twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd6853579 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xf585e976 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xfecdfb94 twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xa6a9db01 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x2ef7dc59 wm_adsp2_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x4b147317 wm_adsp1_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xebf445d0 wm_adsp2_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x0f18a6a4 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x3ac751de wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8ffce34a wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb18fea22 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xcccb3b3f wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xd0c5781e wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf51758d4 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf8c201a6 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x0e4064f0 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xb59ce5a0 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x91dcc109 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x78b654e6 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x0701d11c wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x1954c351 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x8be43b85 wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x015dadd1 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0216df01 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0265625d snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08a69c78 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b7d5888 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d63f0b0 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e9980d2 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fc813fa snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10d9cf2b snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1134c4ca snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1163e831 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13f99c5f snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x152ad172 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x171633c3 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c9a7789 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ebd7fa2 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 0x287ade14 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x296b82f3 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29e34639 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bad7b3c snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c1c63a3 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c4520ee snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c4bd2a4 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f692791 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fa69b75 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3331dd3e snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b85cac8 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4022e309 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40ce178a snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x422f9130 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x486a0963 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48a99b09 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4929bd00 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b74ecfe snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bad695a snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c354bd9 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51dacb6b snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x524a7a39 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5268af16 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55ce983a snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57065552 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x570d14d0 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a3d10f8 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5aad73ec snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d79a79b snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5edc15a1 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ede79f2 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6297ec07 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63dd90cb snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67b2448a snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68ff6a1a snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a8f50e8 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b76eb1c snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d05aba5 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6edef42d snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70bac65d snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x710a55ac snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7599672c snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x761306c6 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76fdde1c snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7918a682 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c9daa5b snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d1b20f7 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e3b6a31 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80c7703f dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x848030df snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x852741d9 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8afc55d1 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x918405a1 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a1e2a08 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b0a1df4 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b64f6aa snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d5fa011 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ef896d6 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa02f0400 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa25823ef dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4144f32 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5860239 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa62929a9 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa84552b5 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa03beb6 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa937cb9 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab41bfb6 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac80cdc6 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad6d4066 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae24d99d snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae5e40d9 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae8ccd0e snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb013c1fc dapm_mark_io_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb052e141 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb208e896 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb502e6e5 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8e6021b snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf7e032a snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf97b502 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc29b0845 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc46658f2 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9d61571 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb1ceacd snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb4dff4c snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc0d0974 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc73d976 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5322e57 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd570e209 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd67be28f snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7224114 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdab0c941 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddc6c2b8 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe019653d snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe168dbca snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe45da694 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe48bfab5 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe61d759a snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe637d59a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe64f0679 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6c05257 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9fa2cc4 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebe09997 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec465478 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xecea98da snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee4a1b87 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf047b8e1 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf363cc82 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4d3e02d snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5e64bd7 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf894c0ed snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8de158a snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9318c00 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa4092bd snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa9fce34 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfedec67f snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x0024ba01 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x0026f6e2 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x00414473 ata_host_activate +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 0x0082de88 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x009abbcb cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d4496e regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00e63dcf ip6_push_pending_frames +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 0x0133a2d5 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x013ae108 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0144c8f6 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x014825d8 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x015437c8 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x017ba33a sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x018054bb usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x019432f9 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01d3daa4 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01ea9056 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022755da usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x0235cc0a uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x023dae9d ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x026c4d43 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x02a8e377 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x02aba1c6 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x02af9aa7 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x02bcf4cd usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x02e4c730 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x02f2ced3 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x03419a12 pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0376f259 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0397c9af crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x03b96e59 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x03bb357b bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0443a141 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044ca7b6 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x045cb1f9 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046e498e kick_process +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a37e2b sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x04a79848 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x04b61522 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x0535743d __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0554e957 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x055bcd49 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x0565ac53 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a299a9 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x05aa9b7f spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05aefa3d pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x05ce1973 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x05fef672 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x0607ea8e skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x0614abe9 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0632c4f9 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x066e4a4e hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x068bd2f6 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x068f1395 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x06a8cdf4 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x06a9f7b9 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x06aa1c3c device_create +EXPORT_SYMBOL_GPL vmlinux 0x06e71715 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x06f22ca2 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x06f353c6 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x072d2b16 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x07492635 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x07553e9b tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076bd50a md_run +EXPORT_SYMBOL_GPL vmlinux 0x076e7785 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x078e8be6 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x07b1b15d setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07e15bb3 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x07e9d856 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x07eb41c2 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x07faa6f9 device_add +EXPORT_SYMBOL_GPL vmlinux 0x08084598 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x08156c4c rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x082b3501 extcon_find_cable_index +EXPORT_SYMBOL_GPL vmlinux 0x0883da80 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08ab81ff dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092c2a7a irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x09447691 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0968afb8 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x097f6965 ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0x098d8327 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x09f8fe79 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x09fb7535 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0a17411d kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0a1bfff0 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0a27ff72 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x0a486c54 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x0a4a89ed regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a535b92 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0a889600 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0aa05c83 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x0ac0a2ab driver_register +EXPORT_SYMBOL_GPL vmlinux 0x0ac2188e crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x0ac53d24 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0ae9de26 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0aeb15ac fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0afbd97d device_move +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b28dcf2 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0b3ae5fc shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0b517680 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c383033 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0c8b0a7d spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x0cc1d2d7 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc44d80 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x0cc5e0da gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0cd10a4e work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0ced0721 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x0cf3cb08 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d171c79 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x0d2e3ba2 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d713aa5 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x0d787c90 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x0d95510d ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0d9fd5e9 vtime_account +EXPORT_SYMBOL_GPL vmlinux 0x0dd0e6ad dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0de0ad3d pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0ded4bd5 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0def11dd kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x0e0d5deb stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e1cb752 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x0e3bf89a ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x0e52623f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0e5517a5 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x0e634418 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ecf8626 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x0eeb45de usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0f2fd13b ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x0f56e76b ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x0f63b415 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x0f6567cb pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f861aee serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x0f9c3e7f smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x0fab62ce spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0x0fb5653a ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0fef3236 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10552b77 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x108bcb09 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x10b77673 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x10c1193d sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x10c676a2 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x10c9d678 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x10e131fc wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11654f72 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118357d2 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x11893453 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x119b061d pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x11e60be1 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x12129dd9 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x122025c5 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x1235cc2f hvc_remove +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 0x129e8fa2 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x12d1af26 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x12d464aa extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x12f2e2b9 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x12ff71a1 crypto_alloc_ablkcipher +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 0x134056f2 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x135855dc debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x1359adc3 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x1361708e sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1364faa6 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x1390acdd ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x139b7ad0 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d2925c platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13f07ef4 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x142c095a pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x143b5cae platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x1469a4aa ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x148d7b55 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x14f58592 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x151c0022 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x157fb238 sdio_writew +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 0x15aec89e spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x163ea45a pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x169d65d8 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x16e3601e device_del +EXPORT_SYMBOL_GPL vmlinux 0x1717f6cb pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x1731bddd cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x17548191 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x175929a7 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x175cbbeb rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177d5639 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x1785292b device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x17bb7e53 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x181dd907 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x18748879 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1893c7da nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x1899aac1 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x1899ffe3 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x189cee51 force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x18abe904 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18fd23df devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x191b15a1 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1945efdd crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x195db08f regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x19603578 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x197ecaeb usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19bbe338 ref_module +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 0x1a3fed06 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x1a539cd7 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x1a6572ab usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x1a698255 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x1a7f2a18 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1a853a16 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1acd2e3b handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1aefab0b max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1afe7497 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x1b05da41 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1b153fb3 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1b2398b6 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b2819fb fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x1b7cd063 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1b7fe0d2 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1b8149a5 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bad35c8 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1bfee7ad queue_work +EXPORT_SYMBOL_GPL vmlinux 0x1c07c3ff usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x1c17bb67 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x1c18936f i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x1c35f9c4 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x1c5a04e0 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5cc24d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x1c642a57 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8ce22a pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x1c9bf166 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1cbb09ad rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x1cc42abd sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1cc7c748 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce567a8 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1cffc4df RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0x1d2dce1b pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x1d3dda08 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1d4a09bb tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6d91ef __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1dad3c46 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1dbbfb62 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x1de3bd19 spu_invalidate_slbs +EXPORT_SYMBOL_GPL vmlinux 0x1de8330b pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x1dee44cf regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1df89aac pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e4be0e3 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1e75a81f __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e803731 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebe04de sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edd43e7 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x1edec393 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1f050636 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x1f17ede0 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1f3fe959 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1f4ee688 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1f604f38 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x1f65d156 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa58771 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1fb1f24b usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x1fbad34b pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fe46453 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x1ff0b50a posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x2023cf52 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x2026cdbd regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2028a174 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x202a0efc wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x2043e12f ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x205c0d0c crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x205f6d97 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x2073c47b __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x20969de2 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x20a88460 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20c73281 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x20db4b04 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x211187f4 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x21147ee3 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x211b315e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x211e49a2 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x21413332 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x215abcb9 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x217fd56e vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x218e60d1 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x2198b468 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x21a6bd0d rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x21b19e10 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x21cf0e07 ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x2234b93b rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x2240383a cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x226d158a disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x2274950e blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x227cf6cb inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x227dc0ad mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x22909933 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b49e08 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x22caa865 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x22dc1b76 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x23372853 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x235192a8 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x235a60fc ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0x23651bbb class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23b0bca9 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x23cab2f7 sec_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x240db399 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x241c4e92 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2450093e platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x246ec134 register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249b7afb mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x24a06dc7 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b7b55c pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x24ca073d skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f87ed5 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x25383d54 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25513f62 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x255cbd03 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x259d9e53 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25b500f6 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x25eb73b5 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x25faf001 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x26251f77 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26507605 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2664afb1 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x267e79af set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x2688e34d simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x26926616 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x26a2f7c1 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26ea78c2 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x26f81fff ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x2725208b tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x276447ed input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x27747f69 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x277af0fb tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x27a5ae4c dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x27a6febc hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x27a8ee73 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x27b26c28 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x2845c73a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x28978ccc get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x28a903c8 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x28acb0a7 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x28c4ee23 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x28cf69ae pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28e7563e spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x2903d155 spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0x29157cc7 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x29185141 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x2918b909 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x293063b2 user_read +EXPORT_SYMBOL_GPL vmlinux 0x2943c1a3 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x29539aca dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x29576e39 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x29a52aa5 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x29d6b02e rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2a15610a crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2a21c6fb led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x2a488446 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x2a5c886e __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a680898 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x2aa1cb30 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x2ac48042 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x2ad1ece4 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2ae0e8a8 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2afc6273 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x2b0f8474 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x2b2521b3 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x2b2fa26d bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b7a6de8 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2bb560fc __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x2bc140c7 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x2bd0f9bb device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2c115cbf put_device +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c5ef002 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c5f872a vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x2c677f5e sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce09434 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2ce9b3dd sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x2cfab7ce kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2d1453b1 sysfs_put +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 0x2d36d8bb smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x2d54139f serial8250_tx_dma +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d6a9a4c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x2d6e5259 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2d9f31d5 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x2da87a69 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2db5fabc blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc2bff0 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2de083b7 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x2df1f1b7 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x2e0d2f7f queue_work_on +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 0x2e41712d mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e58c5eb replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2e757ea5 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2e933898 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x2eb51863 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec08653 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ecfeb82 of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x2eedd53d __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x2f395988 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f423ccc usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f4c6ba7 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x2f5621a8 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x2f740263 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x2f82deb2 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2f84ddbc usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2f941f38 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x2fb766ee con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x2fbf9d43 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x2fdae364 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x30026c29 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x30115bc6 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x30242565 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x30639546 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x308cdf88 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x30c02657 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x30c9dab2 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x30d4ed0f dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x30f16f8d debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3117f69b crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314d1854 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x315cd4a8 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x315d1bc9 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x31859993 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x31980d92 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x31a993b1 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31f4493a cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x31facf28 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x323381b3 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x323d3d4e da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x3256c13c apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x3257cb04 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x326b653c netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x329bbbde timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x32b1841b do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32b6c1dc usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32dcf9a8 pmac_i2c_get_adapter +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 0x330c19a4 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x332216c2 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x33384c78 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x335122de crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33633eac fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x33797117 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x337b999f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x337c9698 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x33a94a45 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x33c4ad78 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x33cef14e handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x33f320f7 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x33faee5c pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x343073f4 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x345486b1 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x345b70bf blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x346f6ec8 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac4518 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34b4ce4e wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x34dc3fcc usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x350c6027 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x351a546a lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x351e8d81 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x3539151c rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3557e33d inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x357b2393 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x359a4f52 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x35bf2a9d regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0x35da0e5f fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x35dee611 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x35eeaa88 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363c1cc7 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x364550ae mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x365ce5e0 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x367a8d2e find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fbcdd max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3700154c pkey_hash_algo +EXPORT_SYMBOL_GPL vmlinux 0x37078605 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x371e849e tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x37305666 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x37379036 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x37a29ac0 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37a2dfd4 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x37b17d22 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x37f8dd88 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x380c77cc dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x3813b00e __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x383ba01b skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x385ff0d7 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x38c04596 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x390832e5 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3908ee9f relay_open +EXPORT_SYMBOL_GPL vmlinux 0x3912edc4 vtime_account_system_irqsafe +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39c5875f da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x39c9024f tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x3a1a56c0 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a361b97 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7662e5 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x3a7e52a3 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x3a81993a irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x3a8cdb91 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad8c112 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3ada9e44 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x3b0eb9cd scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3b14dabb dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x3b14ef90 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b38fd0c ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x3b5c3921 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3b5db326 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x3b60fda2 use_cop +EXPORT_SYMBOL_GPL vmlinux 0x3b64f0ac da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b8ec694 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3bb03bcb irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3bc7339c da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bea2293 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3bed46a7 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x3c658230 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c951b2b devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cb4cafc dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x3cc4d834 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce161c3 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x3cfab993 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d141e3e security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d433fa5 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x3d7d9747 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x3d813ffa srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3dad1fcb kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfde3ac pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0x3e19b5d0 ata_sas_port_async_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3e341181 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x3e6d4e9c __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x3e6eea8f power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7beb45 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x3eaef8d4 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x3ed2c025 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3ee48579 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f12307e pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x3f17bee9 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x3f33e591 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3f3d62eb rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f867d1b devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x3faa4ca5 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x3fb29b14 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x3fc6d028 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x400e976a blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x4030b129 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x4031d367 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40493c94 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c4bd71 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ee860c bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x40f24ce9 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x40f330dd bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x41549951 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x415f285e tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x41645432 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41f91b2e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424b7dc4 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42890e30 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x428ffed9 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x42923da4 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x42a7c330 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x42e27baf usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x42f36621 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x42f9493e tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x431ad641 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x4328ea1d pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x433288c6 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x434af7ab alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x437fb057 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x4383b06e tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x4386c40e hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x4396b273 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x4396fb66 tpm_bios_log_teardown +EXPORT_SYMBOL_GPL vmlinux 0x43a2108e of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43e4b03b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x443a9949 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x443bcdf0 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x443cf75d tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x44554ac9 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449afce3 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x45018133 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x450b359b stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4561e101 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d68b2c tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x45e4efb1 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x45f09904 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x45fa392e dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x4604de86 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463e6617 ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x46405595 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x4659955f bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x46710fa2 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46c67a31 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x46c86f9e tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46eaeca5 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x46f0a5fa blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x4750fefd ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x476474d3 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x477ea643 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47dd7a2d __class_register +EXPORT_SYMBOL_GPL vmlinux 0x47eb11ff md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x48060742 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x4810789b tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4815c20f regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x4856d472 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x48911f90 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48ab5da7 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x48b361c4 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x48d9048c crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x490c9c9c ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x49387d78 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x493cc3f5 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x495b0c13 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49757e3a devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x49864d34 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x498ac397 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49c136cd pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x4a05fa9e ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x4a1eb488 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x4a3d7ebd __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x4a4420e0 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4a698475 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x4a744a61 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aa5d5a1 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab3cfcf tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x4ab55de6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4add42ba pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x4aec6bc0 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b076147 uncache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x4b167969 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x4b6995b9 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x4b93df89 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0x4ba33f30 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bdd9b43 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x4be31ca7 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x4c0d324f debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c316256 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cad1f31 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4cbe09e2 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x4cd98cc9 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x4cdf1228 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x4ce8e534 eeh_remove_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d39e8a3 spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x4d44d00f modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4d4db201 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x4d5aac9c wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x4d5fcc07 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4d8e9e64 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x4da44cb1 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4dc515aa tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4df8845d kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x4dfb1c15 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x4e060a91 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4e0d6db8 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e4ee1d5 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x4e6d4c9f devres_add +EXPORT_SYMBOL_GPL vmlinux 0x4e9fc3d4 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x4ea1dbb4 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x4ebc5bb3 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ed792ef bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef90b9e mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4f0a4c40 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f70ba7d tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x4fb3d7c7 ata_sas_port_async_resume +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ffc4e0e stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x50160e4d crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x502b6670 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x505def63 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x50641e63 blk_abort_request +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 0x508ee32a agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50aaca2c tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x50bf95a3 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x50cabdce disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x50d9775f crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fa7a9d wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5102233f rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x5137667b tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x513f3188 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x514ceeaf sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x51756426 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51a39bc2 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x51a51a4b __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51eec2ef rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x51f572a3 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52129cce kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x524d1fc1 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x525eb71b ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x528191e3 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x52e6bddd each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x52ea4478 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x5320f0ab transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x53411c87 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x5342095e inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536c8e29 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x536f1699 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a003ea perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53abb575 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x53d921d6 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x53dfc8e5 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x54021a09 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x545af286 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x545b1bf8 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5482f5e7 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a889be wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x54c6a122 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x54d0c4db fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x54e310f2 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x54e507c9 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x54e7af02 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x5504d8f7 ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x55060d97 __netpoll_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0x55106a83 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x5520a98f crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x553d1d0c tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x556c7fbc xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x55ce85a7 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x55dc5286 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x56119561 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x561ba911 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x561db911 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x561e4b77 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x562ddb54 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563691b3 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x56590e7c cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x565970ec ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569f8331 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56b4b154 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56df1be7 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5725297a transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x574b3b52 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5796f928 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c9de12 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x57ce244a tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x57ea88da of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58e9c48a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x58f49f4f crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5909063a dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x590a640e __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5922b85a pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x59694792 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x5970fedf ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x59872500 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b54375 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x59ce5cae devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x59cfb86a sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0x59dc2d56 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x59dfbafc fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eabfa5 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f3f3a6 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x5a1c3a74 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a633a7f ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a812391 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x5aac1aef max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x5abf1b96 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x5acf44f6 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x5b0d9977 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x5b41f95d isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x5b468e0c do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x5b4989e1 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b555d48 spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0x5b6881f0 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5b7298c6 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x5b72c893 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x5b7eba1c sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x5baf9204 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x5bce4002 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x5be5d650 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x5bfb40c7 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c263059 inhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x5c54ff13 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x5c719a51 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cab3ecc rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5cb3e57e sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x5ccfaf0f usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x5cd81d9a usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d0ac787 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d39b1ab led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d491403 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d813552 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x5dd18380 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de35040 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x5e16cc3a wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x5e384603 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x5e4c2935 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e684ad4 sec_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5e79dc2d of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x5e938df4 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f3a47ad usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x5f3c151c of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x5f413f91 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5f49d56b queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f51f59a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7bb053 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f9d5a1a noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x5fd110fb pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5fd4f141 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x601936fe power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x60369dc0 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606258fd tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x606f998b ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x608785e7 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60bd7b3f ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x60e30d64 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x60f46bff regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x6110c702 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x61271b62 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x61447dea rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x6183ff15 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61ae9db6 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x61bcd8ed sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x61c47e9a dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x61cdab24 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x620ad734 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x624423eb mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x62557cf2 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x6266f7b7 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x626a86d1 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x626dfb32 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x630bcf06 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x632472f0 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x63297b59 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x635df161 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x63867706 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x63e5c20c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x64316bdb locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x648c96ac sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x64de12db ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6514d646 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x6534eaf6 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x655c6efd wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x658255ed unregister_kretprobes +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 0x65d70e3a dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x65db7323 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66c40425 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x66c78bd2 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ef0f1e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x6726822f arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x67275daf crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6769bd57 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x676b60a4 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x677e8747 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x67832d02 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67d2a2da transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x684a8484 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x68533ab7 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6937bc91 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6951f60b ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x695417bf pstore_register +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 0x69a1bc0b console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x69b9f254 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69fc6a7c pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a27b012 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6a514eda balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x6a5bb4f8 queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a9ca274 cpu_add_dev_attr +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 0x6aebaa72 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x6aefb0db cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x6af73a84 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x6b027966 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6b264960 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6b28573c cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b36b956 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x6b36d84a ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x6b3816c4 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6b9e7af2 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x6bb7bb49 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x6be6f69a pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6bfe5533 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x6c2031c8 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c4ac8a9 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6c62da84 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6c82b428 ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0x6c875c0b spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6c92161a kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x6d10241b pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d374577 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x6d75b61a da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x6d842eba cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x6d9e5425 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x6dff737c inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x6e15b2ea da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e64d788 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x6e776620 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eac045d pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x6eb075e6 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ebeae8d tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x6ec63be1 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x6ecccda8 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x6ed95b25 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x6f01e8b8 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f043e08 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f9e0aa7 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6fdba04d scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x6fdfb683 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7043db6a ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x704491fe usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x70574a14 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x70658cc6 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x70669306 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708bd95d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x70ad3fc6 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d60b9a devres_get +EXPORT_SYMBOL_GPL vmlinux 0x711b6978 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x7124a2cc pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x71483cde bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x71561de3 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7168d96a led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x718036a6 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x71808625 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x719d4fdc usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72139af5 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x722fdb13 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x723374f8 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7278f36c __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x72882618 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72d6a0f8 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x72d6a844 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x72ef0a09 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x72fbb703 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x730af019 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7323f112 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x732bfd5e usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x7344d79a ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x734a7f1e class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x73608514 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x73762b92 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cfb763 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73d6c9cf rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x73e1e63e free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x740b1725 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x74301879 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x7438dd58 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x745ea551 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x74743385 pm_schedule_suspend +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 0x74ac9196 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c96987 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x74cf8acf adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74dab6f3 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x74e97287 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x75bdca0d single_open_net +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 0x76152c8c tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x762a5835 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x766e6ac2 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x769635fe shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x769f3d13 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x76f5996a pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x77058209 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x7729538e preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x77296665 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x773bd689 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x773c5cd0 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x77427cd2 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x7761f289 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7765c0ba get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x778715d5 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x778ff34d fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x77ac9a6a class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x77c071da devres_release +EXPORT_SYMBOL_GPL vmlinux 0x77d7e8c3 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x77dfc10f smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x77e78218 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x781c7ad5 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x783db64f usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x7843ea64 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x785ffde4 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x786fcb41 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7880dbf9 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x78ba7eca remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x78d9801e usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x78f5f606 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x78fd60f8 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x791e4386 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794ed929 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x79630626 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7a08a154 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x7a1d564f dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a3249bf pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x7a7f6f88 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x7a90f9d4 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b03cb8e uart_insert_char +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 0x7b2f1d01 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x7b556c69 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x7b5c7ce5 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x7b715160 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x7b748f05 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x7bb4702a sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x7bf376a6 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x7c25f793 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x7c3ccc2d inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x7c49c6e2 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x7c55d808 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7cb35e4f css_id +EXPORT_SYMBOL_GPL vmlinux 0x7cc1803d cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d092834 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7d21bee1 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7d4b0182 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d801480 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x7d950f98 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e0ef97c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e319e15 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x7e51b560 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x7e61a584 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ec3f5f9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x7ec81dbe device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7ed183dc get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x7ee4b413 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7ee53cef ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f0b4407 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x7f3b5416 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7f45f435 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f57c5cc swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x7f6077f3 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f807675 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7f84be39 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x7f873753 balloon_devinfo_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7f8fade1 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x7fb2abd0 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x7fb929b1 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7fc00627 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7fe0726e sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffa0682 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x802bbefd wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x804c32ec regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x805ab761 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809440f8 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fbb166 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x81249e81 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x816f5252 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x817710f4 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x819412eb driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x81a280c7 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x81ce9837 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x82344286 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x8268d874 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82d730eb regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82fd2302 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x82fe2beb ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x830bd6c0 cgroup_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x8312599b dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x83136b8f __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8315dc1e spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x833e037d pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x834026a3 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x83625363 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x836dab32 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a326ec pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x83aae473 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x83b5ce5f sec_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x83ba90db cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0x83cdecad usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x840f3bb0 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x843335e8 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x844b46ef __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x846c7bd0 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x8488683c ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x84b70c1d crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x84d187a0 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x84fb2f37 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85229f32 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x852e568d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x853dd29f clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x854039cc __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x854c56b7 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x8558fcb1 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e2190a pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x85f5d6de input_class +EXPORT_SYMBOL_GPL vmlinux 0x86085729 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x86128016 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x8612b713 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x862c07b7 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x863c552c cache_firmware +EXPORT_SYMBOL_GPL vmlinux 0x865e5b49 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x8671dfef skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a152bc fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x86dc28bb tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x86e05547 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x86f4de21 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x86f53d9e wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86fc961a register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x86fcc9be fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8704eb06 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x87135d0a ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x871bcaa4 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x8721a9f7 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87498d5f of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x874edc59 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x875c5323 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x879ec848 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x87a04470 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x87a6f8da vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x885088a6 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x886d7476 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88c29d57 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x88eba814 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x896fef7c __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8978dc77 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x89847fa8 unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x89a531c2 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x89cb3d5b digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x8a1ad7c5 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x8a2145c8 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8a3db977 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a68fc35 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x8a757212 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x8a76bf54 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae152b5 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8afbf7b1 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8b086549 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x8b090530 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8b395061 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8b70e7f4 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8ba9dbb3 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x8bbdc664 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8bbe1008 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x8bd1c32b pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c14ebd3 balloon_mapping_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8c327e81 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x8cbeba5a user_describe +EXPORT_SYMBOL_GPL vmlinux 0x8cd62034 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x8cdfe0bd pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d082b15 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8d1319d9 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x8d1f3dc3 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d23c02e perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x8d24f3d0 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x8d27645d bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x8d315486 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x8d36c088 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x8d3fbc09 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x8d4abb37 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x8d55d870 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8dacfaf0 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x8e03d425 ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e0a98c4 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8e5c4a8c pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x8e6c128d usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x8e80f283 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x8e9ba156 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x8ebff65c rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8efa6465 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x8f12669a irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x8f2b2c98 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x8f3f5aab fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x8f616ddc pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa66759 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x8fdbd75c debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x8fff154f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x9005d5fc ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9009e650 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x9031d904 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90673390 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0x906c3b65 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90705b7f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x908a67c3 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c1b3dd usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x90da4d3a ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x90ddcc76 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x90de4f95 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x910cb12b pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x910fba6a cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x91703e39 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c4557c spu_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91fa605e synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x91fad3c1 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92518225 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x92842719 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x92900c7e pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d9fc5a srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x92e24907 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x92f99f98 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x930316c4 slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x930916f4 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x9320397b add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x93226faa irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x9343355e ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x935bacb8 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x939dd067 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x93a82759 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x93b24b66 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93e1f87e rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x940778e3 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943482a8 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x944282e7 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x9447fceb static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x946e8d86 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94b38b62 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x94cd3d90 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94ec8cb2 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f2cd87 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95d8ddd3 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x95de9e21 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x96193b1f ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96403fb1 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x96500423 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9654dbfe cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x966eacc4 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x96954ad6 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96f05332 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x9732a793 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x974b5535 pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x97649ff5 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x9766d796 get_device +EXPORT_SYMBOL_GPL vmlinux 0x97807369 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97f67aec usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x980c28fd of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x980d7f57 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x980f3ac0 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9816fb25 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x981c4f18 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x982f321d ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0x9831b07b i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9844add5 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9857e2f0 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x985830eb tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x9865c6e4 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98a8c975 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x98c0062a platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98daaeb4 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x98ff02c3 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9912b57b uninhibit_secondary_onlining +EXPORT_SYMBOL_GPL vmlinux 0x9917eef6 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99353d6c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99825f52 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x99d07f3e usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x99d85317 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x99e0ecae swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x99e34bfe __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x99fa586e spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a654d1e wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x9a718ada find_module +EXPORT_SYMBOL_GPL vmlinux 0x9a77cef8 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x9a782f13 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9abb1bd8 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9adc2209 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0e6c97 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9b724a2a usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9baa08d1 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x9bcae46b cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9bd1a801 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c022955 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x9c0c6780 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x9c13599e wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x9c2a8c93 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x9c41327e thermal_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x9c4e1cba wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x9c626a5a crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x9c705873 ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9ca5da34 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x9ccb1788 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9ccd62d3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x9cf04379 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d3ee1fd ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x9d8324f7 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x9d84394e usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9dad0f64 pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x9e45565e rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x9e583f37 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x9ea6b597 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9eabfe6f da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ec20944 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9f1dabf1 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x9f3148ef pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x9f3f98e1 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x9f6300bd tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x9f70d997 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x9f7667b6 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x9f8775bb crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x9fbbe75b tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x9fcafcf2 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fcfaafd bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa00f5be2 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xa049dbd8 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0b333d1 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xa0e19ac4 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xa0e4635a md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa1017a10 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xa108f4b5 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xa1847bb6 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xa1c4e5b2 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa1f7b6bb regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa1f8ccb1 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xa2196b3a map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xa252dd37 cgroup_next_descendant_post +EXPORT_SYMBOL_GPL vmlinux 0xa26df482 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xa28d11da cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xa2b39c98 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xa2e8d3db regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa336b118 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3877d7d ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3abe86d ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40c98f9 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4494c8a crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xa46be13b crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa5035783 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xa527f6bd crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xa52d2756 serial8250_rx_dma +EXPORT_SYMBOL_GPL vmlinux 0xa5366370 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5701a9f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xa577aa83 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa581d038 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa58e6d50 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xa5a7f54b blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5c5428f crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60a95d3 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa64422f8 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa64a33b8 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xa6556f07 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xa6702417 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ddf20b relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xa6dffeea hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f124bf fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa71e549e perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa724257f init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xa72f49c9 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xa74d6164 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xa7527294 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa760da6b transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xa787238a generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xa79be3e9 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xa7a31828 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xa7a902e5 spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0xa7aad653 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa7fd0da2 ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0xa80ca9a1 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa82886ce led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa835abfc user_update +EXPORT_SYMBOL_GPL vmlinux 0xa8361091 sec_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa83be008 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xa84a9724 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa86f985d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xa880766d shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa8aa8dbe inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xa8ce2f3d cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xa8d635be relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xa8f45275 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa90b306c sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa9416f02 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xa94d5660 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xa96be38f br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa9bde4f3 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9f73606 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xaa059324 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xaa11c9d0 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xaa547e26 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0xaa737ef7 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xaa76181d device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xaa784915 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xaa7c9d37 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaae2c9d7 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xaaf84470 inet_csk_reqsk_queue_prune +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 0xab7e3362 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xab851d9f regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabafdd17 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xabe6d740 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xabeef97b ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xabf0b6ed device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac05dba1 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xac06aed2 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xac0f5d08 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xac158560 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xac345bbc register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xac8a0a26 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xacadc2d9 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xacc2633c spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xacc5004a ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xacd991bf pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad22cfae pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xad31b20f ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xad34ca66 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xad4b0afe usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xad50796a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xad6e460c ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0xad864c39 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadad1cc6 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadb836fd platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xadbbd8b4 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd0b04c ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xadd61a83 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xadee3984 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xadf556dd usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfcab5c elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xae0953e1 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae136929 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xae4a9220 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaeadfac0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xaecf8c9f pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xaed74f45 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xaef84a60 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xaeffebb0 ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0xaf06fb8a cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xaf12e49f crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xaf40399f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xaf7f9142 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xaf9a756a __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xafc61195 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb0101c04 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xb03c3d21 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xb04bd282 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xb0577383 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb057e26d driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb07df372 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xb0a33949 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xb0b42425 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0cb3fc7 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0f73738 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb1011e45 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb10f2b68 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb1311305 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xb1398e9c dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xb140c203 spi_unregister_master +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 0xb1a8f04e cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1afcf1b usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb20ba37d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb27210ec pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xb2883f30 register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xb29fc8b2 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xb2cee81d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3433fbe posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb351749c subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb3f9e6f5 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xb428d14f use_mm +EXPORT_SYMBOL_GPL vmlinux 0xb4439919 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xb453ac97 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xb45dbe15 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb482160d key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb49f5fed sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xb4b52165 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f0a2b1 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xb4f78881 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xb4fc2387 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb4fe4707 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb50af6ed d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xb5183ae0 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52c86ec da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb554ce95 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xb57e8d32 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a331ad devm_regmap_init_spi +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 0xb604ce71 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb608c53d security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb650b2c0 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xb65d43cf unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c1420 ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0xb6a3b066 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6af14cb gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb7098845 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xb7270ab3 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xb744ada3 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xb76f5c9c device_attach +EXPORT_SYMBOL_GPL vmlinux 0xb79e6b8c wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xb7a45ce6 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb7c5999c xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xb7ccee37 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xb7ce132e dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xb7d04a6a dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xb7d7b546 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb7ecdb58 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xb7f5de2f ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb81eec77 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb82362a9 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb84d93eb pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb84f6505 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xb89e821b ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb8d1497a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xb8e6559c __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb8ff179a blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xb900025f blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb90b6f2a blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xb911c4df ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xb9474d9f __class_create +EXPORT_SYMBOL_GPL vmlinux 0xb9641c01 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb96c4fbd pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0xb9790a49 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xb97a6c6a crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xb9a33c9d debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb9a5ef46 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xb9a9d752 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba1825cd cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xba50554b dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xba66efe9 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xba80eec0 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbae44d43 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xbae8a9bf usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb167eee cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbb3a7b9c stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xbb41a575 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xbb445f02 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb4a1d89 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xbb52ab13 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb99e3ae devres_find +EXPORT_SYMBOL_GPL vmlinux 0xbba289fa usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xbbb0240e dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xbbbc84d3 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbbd3f56f ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xbbed87f1 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xbc384de7 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc7bdb6f xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xbc9b6d1b cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xbccfcb68 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xbd1b5836 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xbd2645aa crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbd284e36 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xbd3e6077 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbd54b8f4 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd63f1f9 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xbd7f1415 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xbd8073b2 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdb9c05d debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xbdce594c perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xbdcf23c5 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde3d0f7 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xbe12bf56 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1eba3d input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xbe3c9d63 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbe4e280e pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xbe570f91 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xbe9d55fb __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbea4290f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xbebaa0a6 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbec90ecd tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xbedc1da2 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbefb448f sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf2f210d ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xbf4eec9d bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xbf581a61 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xbfb56f01 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbfba7dcd pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbfe7b6fa da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbfe7e216 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xbff0f4a3 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xbff1d4f5 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xbff74259 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0018c61 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc0032d60 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xc02dd9fb __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc07c1612 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc09c729a mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc0a4f68c dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0ccc9e0 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e5a0ce dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xc0f47c25 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xc0f6a68a i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc109fd0f adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xc10b0d47 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1369514 pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc137a4a3 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc19cee49 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xc1a22c44 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc1cad8bc aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc1ceaa88 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xc2166604 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xc229c07a cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2969899 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xc29b3476 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xc2afd0cf device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc2b34e25 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xc3160f57 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc31973bf sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc345d544 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc36c35d4 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc391a8ac rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc3bfc4bd sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46f9616 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47520cf serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc47cee99 ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc498b060 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4cf8480 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xc4db992e kvmppc_load_up_fpu +EXPORT_SYMBOL_GPL vmlinux 0xc513dfcb timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc514dbec unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc563e5b6 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xc57ab53c pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xc584f9ce scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc5c33cbb usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc5c41fe3 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc6531cd4 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc69aa69e get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6b1dc1c tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xc6ded987 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7512b07 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xc7539060 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xc75f3bba init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc7647b59 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xc767c3c0 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xc7a11104 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e2e636 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e4c538 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc82a12b0 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc85442d7 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc8586f76 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc89d9dd9 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d883cf pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc8dde9c4 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc920467d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xc92699e9 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9626f5c spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97e14aa trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xc9833cde wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc9937f5f of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc9a4a1dd unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc9bd88ee inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xc9e5cddc dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0a745b __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xca2958d5 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xca2ffebc device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xca4678fe blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xca4edb7d rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xca754304 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca91e819 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad4ad08 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0xcadf0d21 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xcb0cc6de free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb3576eb rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xcbaa677b scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc198a28 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc536af7 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcc6ecfe3 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xcc80e8b4 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xcc9623fb power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xccaff780 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xccb07ef3 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd280aad platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xcd5d3cc3 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xcd650bbc sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xcd8308a5 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcfe6aa tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xcdd15087 of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0xcdf1282f device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce0e378a pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xce1013c7 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce60429b unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xce645836 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xce6533ee crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce82e784 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xce844c70 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xce8ad575 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcead1541 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb36162 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xced0c6f1 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0xcedaec16 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf03a702 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xcf17a25a tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xcf21b689 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xcf493c98 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xcf508fa4 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xcf57d696 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcf66d27e usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xcf6e4b53 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xcfa33c4b key_type_user +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 0xcff35bc2 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd01e3dbd of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd04c43eb pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xd0649e65 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067523b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd07d321b i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xd09476ac usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0ed7016 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd112fa22 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd19cf884 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1c900b2 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd1efbb3b blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd213376b ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd229e7ba device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xd26a38df wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2781bc6 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xd278a67c ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xd28d4fc7 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2b3f5f9 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xd2c45ea4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd300e116 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd31468c2 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd33b525b da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd3454a75 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0xd34bcaee fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd38d661a get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xd3a00034 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd3c83410 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd3f2b8ab ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4351819 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46e627f inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xd4793dfb tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd47fccd0 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4de2a8b ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xd4e608de rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4e7790b pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0xd56cc3d7 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5b049fa blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xd5b52746 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd62639ac pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xd629b21b device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd661dee7 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6a0bbaf extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xd6fcb4bb netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd74d6c00 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd785cb3f regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e8ad28 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xd7edc2d7 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd808b7d5 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xd81b9133 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd843af00 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd86000fc proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8cbd14c rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd90ec126 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9497b3c ps3_os_area_flash_register +EXPORT_SYMBOL_GPL vmlinux 0xd94ee540 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xd95b182e scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xd996b814 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xd9ba0dff driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd9d7f623 pkey_id_type +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda050109 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda356257 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda650281 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xda9287dc ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0xdaae15ed devm_regmap_init_mmio +EXPORT_SYMBOL_GPL vmlinux 0xdab6f38e get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xdab89b93 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xdabd0e64 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xdaec531f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb35f2be sec_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xdb37fb8c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb93606d dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xdba80fc1 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xdbb21645 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfeb5b3 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xdc1d6623 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xdc202ce6 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xdc34a62d driver_find +EXPORT_SYMBOL_GPL vmlinux 0xdc3595d4 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc93d4d7 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc981058 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9cc759 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xdca51c5a debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xdcd4e537 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xdcd821cc debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xdcd881ac sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xdce851cd sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd0c643c rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xdd186cbb fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0xdd2b883b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4aef3d wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdd501c72 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xdd56f7c5 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde7535d device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xde28e944 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xde2a54e8 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xde4b8665 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xde8400bc kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xde9ecb79 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xded2e534 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xdedfbc82 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xdee94b18 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xdeed0bd5 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf290046 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xdf2c2a84 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf87a12b dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdf9b53a8 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03525ac of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe03bb526 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe06475c7 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xe069d6e4 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08defc4 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0c0c7fa sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xe0cf64dc crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xe0e0a059 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe1141095 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xe12f15e4 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xe12f34c0 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe2d6d258 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2fc3b7c mmput +EXPORT_SYMBOL_GPL vmlinux 0xe3020254 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31ddea0 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xe32e429a tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xe343077f arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xe35fa6e6 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xe36a37d7 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xe36ec41a posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xe3849adb ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3b245d1 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xe3d28ccf __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe4181e97 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4329ad6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe440606d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xe46d6634 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xe4970aef __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4cba612 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xe504171f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xe50ab3b3 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe53118f0 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe549114b platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe55e7297 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe55e7967 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe56f9ecd usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5911ab3 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe5a367b6 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0xe5b26cab thermal_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xe5bafd50 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe5de1d14 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe60bbc1c wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe625870b sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe62a374e spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xe630f76f pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xe63202ab pcibios_add_pci_devices +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 0xe679aa94 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xe6908ab8 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xe6990b04 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xe6caccdd pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe73dd776 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xe74cb148 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe79e0afa anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xe7a5c901 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe7b4d9af usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe7d79005 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xe7e16a9f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83dc9dd dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe88e0a79 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8c18862 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe8f13517 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe924e737 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xe9390038 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9bdb974 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d7e15d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xe9ea6778 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xe9f9920f debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea3ccf86 spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea695ed2 kvmppc_load_up_altivec +EXPORT_SYMBOL_GPL vmlinux 0xea7adff6 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xea8e562d rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xeaa94e25 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xeaac2735 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xeaadd5fc tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xeacad3d5 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xeacc48a6 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xeaf885a8 __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0xeb01e6bc inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xeb1c3628 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xeb299c2b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xeb43588a rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb905f55 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xebe6e0e3 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfe58ce sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xec0f1603 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1e9141 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec54ed21 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xed059d57 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xed1a3644 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xed3e59b3 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xed59a77e max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xed664c1f arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xed6f2c91 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xed86f9be usb_string +EXPORT_SYMBOL_GPL vmlinux 0xed9e2e03 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xede2f062 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xedeb7563 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xee0c4089 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xee154515 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xee379f29 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7be180 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xeec8cbc2 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xef099271 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xef2908f9 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xef2c1c26 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefc3a794 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xefc842b3 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xefc91531 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xefd4a88a regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xefdc164a unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xefdf37f5 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0xefe80c7a usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf001dc80 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xf0180bf8 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xf02c182d tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xf03614a4 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf05c3e99 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xf06b6b8a spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf0c364a5 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10e2c82 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf11d9d1d blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1a6d5a9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xf1aa3416 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xf1ac4f0d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c7fd99 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xf1e5d80f async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0xf1ed7017 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf1f2833c usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xf224b194 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf245d303 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0xf251d1f4 drop_cop +EXPORT_SYMBOL_GPL vmlinux 0xf265dbcb md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xf2792579 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xf2db6d96 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf2eca4f7 rio_mport_write_config_8 +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 0xf33bb827 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xf34d24b2 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf3566a4a pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xf36941d1 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xf3766244 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xf37a314a devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf38c5029 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xf390f34f subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xf395c7ea da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf397029c bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf3a0118c dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b757c4 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3c34c10 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3cc3167 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf40377db dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xf4196b19 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xf43e68f9 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xf44c8963 spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0xf45d1876 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf4747009 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49ab446 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xf4a20700 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf4b6a94e pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf4d18c22 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xf4dd6ad0 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51be497 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56d3d90 user_match +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf634f4cd bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xf6800caf fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xf6d06512 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf71b1380 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xf74656ab regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf792fa8e cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xf799020f ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xf7c18dd5 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xf7f9130f cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xf80c6667 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xf828416b subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf82b308a stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf83f77c8 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xf85037f6 device_register +EXPORT_SYMBOL_GPL vmlinux 0xf869d95d blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xf871c6e1 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8ba368c crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xf8dc9241 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf900dcfd sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf93c5316 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xf955bd0e led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xf992378f ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xf99541aa pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a1b9f8 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xf9c91752 usb_submit_urb +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 0xfa362c1a pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xfa3824d6 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xfa7b40c9 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xfa7e3f64 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa33ba3 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xfaa5eb9e skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xfaaf96dc wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xfab060a3 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfacd5c6c pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xfaf29211 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfb05c9b4 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xfb0f4c43 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfb2121c1 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xfb22730b debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb41d508 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xfb5168a8 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb556496 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xfb5a2c96 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xfb5e969b __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xfb5f29e5 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7de3ef register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xfb813ed0 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xfbb457a0 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbdf5275 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfbe0d499 menu_hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbfcdc2b ps3_sys_manager_get_wol +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc3f8c0f of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xfc50344a hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc5d671f macio_find +EXPORT_SYMBOL_GPL vmlinux 0xfc91607e md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcec63cb dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xfcfa7ae1 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd761f26 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xfd8a12ee bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xfda85f49 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xfdbbfc6b sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfdcd2b5b tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfe37077f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfe6ba457 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfebfd743 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee64852 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xfef0f6a0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xfffb5803 tpm_bios_log_setup --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-smp.modules +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-smp.modules @@ -0,0 +1,3416 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +ambassador +amc6821 +amd5536udc +amd8111e +ams +ams369fg06 +analog +anatop-regulator +ans-lcd +ansi_cprng +anubis +aoe +apds9802als +apds990x +apm-emulation +apm-power +apm_emu +apm_power +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as5011 +asc7621 +asix +ast +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_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 +bcm_wimax +bcma +bcma-hcd +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 +bpctl_mod +bpqether +bq2415x_charger +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 +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_imx +ci13xxx_msm +ci13xxx_pci +ci_hdrc +cifs +cirrus +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-pci +com20020_cs +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpia2 +cpqarray +cpu-notifier-error-inject +cpufreq_stats +cramfs +crc-ccitt +crc-itu-t +crc7 +crc8 +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +csiostor +csr_helper +csr_wifi +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 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +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-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-verity +dm-zero +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +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 +dvb_usb_cypress_firmware +dvb_usb_v2 +dw_dmac +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +fat +faulty +fb_sys_fops +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +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 +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gpio_vbus +grcan +gre +grip +grip_mp +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-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-holtek-kbd +hid-holtekff +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-ps3remote +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hidp +hifn_795x +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +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-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-cbus-gpio +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hid +i2c-hydra +i2c-i801 +i2c-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-viperboard +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 +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +ip_tables +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +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 +kvaser_usb +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-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp8788 +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-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3630_bl +lm3639_bl +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 +lp8788-charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac53c94 +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +mace +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max77686 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mesh +metro-usb +metronomefb +mfd +mga +michael_mic +microtek +minix +mip6 +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdchar +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_tproxy_core +nfc +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nftl +ngene +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 +notifier-error-inject +nouveau +nozomi +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +nvidiafb +nvme +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_serial +ofpart +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +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-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm8001 +pmbus +pmbus_core +pmc551 +pmcraid +pmu_battery +pn533 +pn544_i2c +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +ptp +ptp_pch +pvrusb2 +pwc +pwm-beeper +pwm-twl +pwm-twl-led +pwm_bl +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +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-shark +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 +rbtree_test +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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 +rc5t583-regulator +rcar-phy +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +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-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s2mps11 +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 +saa7706h +safe_serial +salsa20_generic +sata_highbank +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 +sbp_target +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 +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 +shark2 +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-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ab8500-codec +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-arizona +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-da732x +snd-soc-da9055 +snd-soc-dfbmcs320 +snd-soc-isabelle +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98090 +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-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-sta529 +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-wm-adsp +snd-soc-wm-hubs +snd-soc-wm0010 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm5102 +snd-soc-wm5110 +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-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +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 +spi-dw +spi-dw-midpci +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_drv +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +swim3 +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcm_vhost +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 +ti-adc081c +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_infineon +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +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 +usb-storage +usb8xxx +usb_debug +usb_gigaset +usb_wwan +usbatm +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx6q +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdrtas +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +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 +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zte_ev --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-smp.compiler +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500mc.modules +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500mc.modules @@ -0,0 +1,3419 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +ambassador +amc6821 +amd5536udc +amd8111e +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as5011 +asc7621 +asix +ast +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +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 +bcm_wimax +bcma +bcma-hcd +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bman_debugfs_interface +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +booke_wdt +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +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 +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +caam +caamalg +caamhash +caamrng +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_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_imx +ci13xxx_msm +ci13xxx_pci +ci_hdrc +cifs +cirrus +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-pci +com20020_cs +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpia2 +cpm_uart +cpqarray +cpu-notifier-error-inject +cpufreq_stats +cramfs +crc-ccitt +crc-itu-t +crc7 +crc8 +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +csiostor +csr_helper +csr_wifi +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 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +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-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-verity +dm-zero +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +doc2001plus +docecc +docg3 +docg4 +docprobe +donauboe +dpa_uio +dpaa_1588 +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +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 +dvb_usb_cypress_firmware +dvb_usb_v2 +dw_dmac +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +exynos-rng +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +fat +faulty +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +flexcan +floppy +fm801-gp +fm_drv +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fs_enet +fsa9480 +fscache +fsl-diu-fb +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_pq_mdio +fsl_qe_udc +fsl_upm +fsl_usb2_udc +fsldma +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gpio_vbus +grcan +gre +grip +grip_mp +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-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-holtek-kbd +hid-holtekff +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-ps3remote +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +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-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-cbus-gpio +i2c-cpm +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hid +i2c-i801 +i2c-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-viperboard +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 +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +ip_tables +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +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 +kvaser_usb +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-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp8788 +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-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3630_bl +lm3639_bl +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 +lp8788-charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max77686 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +metro-usb +metronomefb +mfd +mga +michael_mic +microtek +mii-bitbang +minix +mip6 +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moto_modem +moxa +mpc85xx_edac +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdchar +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_tproxy_core +nfc +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nftl +ngene +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 +notifier-error-inject +nouveau +nozomi +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +nvidiafb +nvme +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_serial +ofpart +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +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-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcnet32 +pcnet_cs +pcrypt +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm8001 +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544_i2c +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +ptp +ptp_pch +pvrusb2 +pwc +pwm-beeper +pwm-twl +pwm-twl-led +pwm_bl +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qman_debugfs_interface +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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 +rc5t583-regulator +rcar-phy +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +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-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s2mps11 +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 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_fsl +sata_highbank +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 +sbp_target +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 +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 +shark2 +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-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ab8500-codec +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-arizona +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-da732x +snd-soc-da9055 +snd-soc-dfbmcs320 +snd-soc-isabelle +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98090 +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-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-sta529 +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-wm-adsp +snd-soc-wm-hubs +snd-soc-wm0010 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm5102 +snd-soc-wm5110 +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-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +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 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_drv +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcm_vhost +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 +thmc50 +ti-adc081c +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_infineon +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +udc-core +udf +udl +udp_diag +ueagle-atm +ufs +ufshcd +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +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 +unix_diag +upd64031a +upd64083 +usb-storage +usb8xxx +usb_debug +usb_gigaset +usb_wwan +usbatm +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx6q +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +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 +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xgmac_mdio +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zte_ev --- linux-ppc-3.8.0.orig/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500.modules +++ linux-ppc-3.8.0/debian.ppc/abi/3.8.0-15.21/powerpc/powerpc-e500.modules @@ -0,0 +1,3431 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_pci +8390 +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +BusLogic +DAC960 +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +actisys-sir +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +ad_sigma_delta +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af-rxrpc +af9013 +af9033 +af_802154 +af_alg +af_key +af_packet_diag +affs +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera-stapl +altera_jtaguart +altera_ps2 +altera_uart +ambassador +amc6821 +amd5536udc +amd8111e +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar5523 +ar7part +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcmsr +arcnet +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as3711-regulator +as5011 +asc7621 +asix +ast +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at86rf230 +at91_ether +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-pwm-bl +atmel_cs +atmel_mxt_ts +atmel_pci +atmel_pwm +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auo_k1900fb +auo_k1901fb +auo_k190x +auth_rpcgss +authenc +authencesn +autofs4 +avm_cs +avma1_cs +avmfritz +ax25 +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 +bcm_wimax +bcma +bcma-hcd +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bman_debugfs_interface +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +booke_wdt +bpa10x +bpck +bpck6 +bpctl_mod +bpqether +bq2415x_charger +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 +bw-qcam +bypass +c-qcam +c4 +c67x00 +c_can +c_can_pci +c_can_platform +caam +caamalg +caamhash +caamrng +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_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +cciss +ccm +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cedusb +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_imx +ci13xxx_msm +ci13xxx_pci +ci_hdrc +cifs +cirrus +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-pci +com20020_cs +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpia2 +cpm_uart +cpqarray +cpu-notifier-error-inject +cpufreq_stats +cramfs +crc-ccitt +crc-itu-t +crc7 +crc8 +cryptd +crypto_null +crypto_user +cryptoloop +crystalhd +cs5345 +cs53l32a +csiostor +csr_helper +csr_wifi +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 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +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-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +dgrp +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +diva_idi +diva_mnt +divacapi +divadidd +divas +dl2k +dlci +dlm +dm-bio-prison +dm-bufio +dm-crypt +dm-delay +dm-flakey +dm-log +dm-log-userspace +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-verity +dm-zero +dm1105 +dm9601 +dmfe +dmx3191d +dn_rtmsg +dnet +doc2001plus +docecc +docg3 +docg4 +docprobe +donauboe +dpa_uio +dpaa_1588 +dpt_i2o +drbd +drm +drm_kms_helper +drm_usb +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsa_core +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +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 +dvb_usb_cypress_firmware +dvb_usb_v2 +dw_dmac +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +e4000 +earth-pt1 +eata +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em_canid +em_cmp +em_ipset +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon-adc-jack +extcon-arizona +extcon-gpio +extcon-max77693 +extcon-max8997 +exynos-rng +ezusb +f2fs +f75375s +f81232 +fakelb +fan53555 +farsync +fat +faulty +fb_sys_fops +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +flexcan +floppy +fm801-gp +fm_drv +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fs_enet +fsa9480 +fscache +fsl-diu-fb +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_pq_mdio +fsl_qe_udc +fsl_upm +fsl_usb2_udc +fsldma +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gcm +gdmwm +gdth +gen_probe +generic +generic-adc-battery +generic_bl +gf128mul +gf2k +gfs2 +ghash-generic +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-tps65912 +gpio-ts5500 +gpio-twl4030 +gpio-twl6040 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_tilt_polled +gpio_vbus +grcan +gre +grip +grip_mp +gspca_benq +gspca_conex +gspca_cpia1 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +gxt4500 +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfc_usb +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-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-holtek-kbd +hid-holtekff +hid-icade +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-lenovo-tpkbd +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-ps3remote +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-iio-common +hid-sensor-magn-3d +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hidp +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +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-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-cbus-gpio +i2c-cpm +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hid +i2c-i801 +i2c-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-viperboard +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 +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ibmaem +ibmpex +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iguanair +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +iio_dummy +iio_hwmon +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +io_edgeport +io_ti +ioc4 +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6t_MASQUERADE +ip6t_NPT +ip6t_REJECT +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +ip_tables +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_ULOG +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ir-jvc-decoder +ir-kbd-i2c +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +ir-usb +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iw_nes +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +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 +kvaser_usb +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-atmel-pwm +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lp8788 +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-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +libsrp +lightning +line6usb +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3630_bl +lm3639_bl +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 +lp8788-charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2978 +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +m25p80 +m2m-deinterlace +m52790 +m88rs2000 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +ma600-sir +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac_hid +macb +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1111 +max11801_ts +max1363 +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max34440 +max517 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max77686 +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997 +max8997_charger +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp4725 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +metro-usb +metronomefb +mfd +mga +michael_mic +microtek +mii-bitbang +minix +mip6 +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mms114 +mos7720 +mos7840 +moto_modem +moxa +mpc85xx_edac +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdchar +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +n_hdlc +n_r3964 +n_tracerouter +n_tracesink +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_tproxy_core +nfc +nfcwilink +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nftl +ngene +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 +notifier-error-inject +nouveau +nozomi +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +nvidiafb +nvme +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_serial +ofpart +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +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-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci-stub +pci200syn +pcips2 +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcnet32 +pcnet_cs +pcrypt +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm8001 +pmbus +pmbus_core +pmc551 +pmcraid +pn533 +pn544_i2c +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_core +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +ptp +ptp_pch +pvrusb2 +pwc +pwm-beeper +pwm-twl +pwm-twl-led +pwm_bl +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qman_debugfs_interface +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-shark +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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 +rc5t583-regulator +rcar-phy +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +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-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc_cmos_setup +rtl2830 +rtl2832 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtl8723ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s2mps11 +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 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_fsl +sata_highbank +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 +sbp_target +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 +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 +shark2 +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-hcd +sl811_cs +slcan +slip +slram +sm501 +sm501fb +sm7xxfb +sm_common +sm_ftl +smb347-charger +smc91c92_cs +smm665 +smsc-ircc2 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-firewire-speakers +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxygen +snd-oxygen-lib +snd-page-alloc +snd-pcm +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-sb16-dsp +snd-scs1x +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ab8500-codec +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-arizona +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-da732x +snd-soc-da9055 +snd-soc-dfbmcs320 +snd-soc-fsl-dma +snd-soc-fsl-ssi +snd-soc-fsl-utils +snd-soc-isabelle +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-p1022-ds +snd-soc-p1022-rdk +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-sta529 +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-wm-adsp +snd-soc-wm-hubs +snd-soc-wm0010 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm5102 +snd-soc-wm5110 +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-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-usx2y +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +socrates_nand +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 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi-lm70llp +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi_ks8995 +spidev +squashfs +ssb +ssb-hcd +ssd1307fb +ssfdc +sst25l +ssu100 +st +st1232 +st_drv +starfire +stb0899 +stb6000 +stb6100 +ste_modem_rproc +stex +stinger +stir4200 +stk1160 +stkwebcam +stmmac +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +svcrdma +svgalib +sx8 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcm_vhost +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 +thmc50 +ti-adc081c +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm-rng +tpm_atmel +tpm_i2c_infineon +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +tranzport +tridentfb +ts_bm +ts_fsm +ts_kmp +tsc2005 +tsc2007 +tsc40 +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_wdt +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uPD98402 +uartlite +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +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 +unix_diag +upd64031a +upd64083 +usb-storage +usb8xxx +usb_debug +usb_gigaset +usb_wwan +usbatm +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx6q +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbvision +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via-ircc +via-rhine +via-sdmmc +via-velocity +via686a +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videocodec +videodev +viperboard +viperboard_adc +virtio +virtio-rng +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1-gpio +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w90p910_ts +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdt_pci +whc-rc +whci +whci-hcd +whiteheat +wil6210 +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 +wl18xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusb-wa +wusbcore +x25 +x25_asy +x_tables +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xgmac_mdio +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_iprange +xt_ipvs +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xts +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram +zte_ev --- linux-ppc-3.8.0.orig/debian.ppc/control.d/generic.inclusion-list +++ linux-ppc-3.8.0/debian.ppc/control.d/generic.inclusion-list @@ -0,0 +1,136 @@ +arch/*/{crypto,kernel,oprofile} +crypto/* +drivers/acpi/* +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/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +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/* +lib/* +net/802/* +net/8021q/* +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-ppc-3.8.0.orig/debian.ppc/control.d/vars.powerpc-e500 +++ linux-ppc-3.8.0/debian.ppc/control.d/vars.powerpc-e500 @@ -0,0 +1,6 @@ +supported="32-bit Freescale Power e500v1 and e500v2" +target="Geared toward server systems." +desc="32-bit Freescale Power e500v1 and e500v2" +bootloader="grub-kexec" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-ppc-3.8.0.orig/debian.ppc/control.d/vars.powerpc-e500mc +++ linux-ppc-3.8.0/debian.ppc/control.d/vars.powerpc-e500mc @@ -0,0 +1,6 @@ +supported="32-bit Freescale Power e500mc" +target="Geared toward server systems." +desc="32-bit Freescale Power e500mc" +bootloader="grub-kexec" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-ppc-3.8.0.orig/debian.ppc/control.d/vars.powerpc-smp +++ linux-ppc-3.8.0/debian.ppc/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-ppc-3.8.0.orig/debian.ppc/control.d/flavour-control.stub +++ linux-ppc-3.8.0/debian.ppc/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, linux-headers-PKGVER-ABINUM-FLAVOUR +Description: Linux kernel image for version PKGVER on DESC + This package contains the Linux kernel image for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-PKGVER-ABINUM-FLAVOUR +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel 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: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version PKGVER on DESC + This package provides kernel header files for version PKGVER on + DESC. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/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-ppc-3.8.0.orig/debian.ppc/control.d/vars.powerpc64-smp +++ linux-ppc-3.8.0/debian.ppc/control.d/vars.powerpc64-smp @@ -0,0 +1,6 @@ +supported="64-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="64-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-ppc-3.8.0.orig/debian.ppc/config/config.common.ubuntu +++ linux-ppc-3.8.0/debian.ppc/config/config.common.ubuntu @@ -0,0 +1,5716 @@ +# +# Common config options automatically generated by splitconfig.pl +# +CONFIG_32BIT=y +# CONFIG_40x is not set +# CONFIG_44x is not set +CONFIG_64BIT=y +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_ABX500_CORE=y +CONFIG_AC97_BUS=m +# CONFIG_ACCESSIBILITY is not set +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +CONFIG_AD2S90=m +CONFIG_AD5064=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5755=m +CONFIG_AD5764=m +CONFIG_AD5791=m +CONFIG_AD5930=m +CONFIG_AD5933=m +CONFIG_AD7150=m +CONFIG_AD7152=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7280=m +CONFIG_AD7291=m +CONFIG_AD7298=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7746=m +CONFIG_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD799X=m +CONFIG_AD799X_RING_BUFFER=y +CONFIG_AD8366=m +CONFIG_AD9523=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_AD9850=m +CONFIG_AD9852=m +CONFIG_AD9910=m +CONFIG_AD9951=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_MACIO=y +CONFIG_ADB_PMU=y +CONFIG_ADB_PMU_LED=y +# CONFIG_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_ADF4350=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIS16060=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16201=m +CONFIG_ADIS16203=m +CONFIG_ADIS16204=m +CONFIG_ADIS16209=m +CONFIG_ADIS16220=m +CONFIG_ADIS16240=m +CONFIG_ADIS16260=m +CONFIG_ADIS16400=m +CONFIG_ADIS16480=m +CONFIG_ADJD_S311=m +CONFIG_ADM8211=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +CONFIG_ADT7410=m +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ADXRS450=m +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AFFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FS=m +# CONFIG_AFS_FSCACHE is not set +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_AGP=y +CONFIG_AGP_UNINORTH=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIO=y +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_ALIM7101_WDT=m +CONFIG_ALI_FIR=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTIVEC=y +# CONFIG_ALX is not set +CONFIG_AMD8111_ETH=m +CONFIG_AMD_PHY=y +CONFIG_AMIGA_PARTITION=y +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_APDS9802ALS=m +CONFIG_APM_EMULATION=m +CONFIG_APM_POWER=m +CONFIG_APPLE_AIRPORT=m +CONFIG_APPLICOM=m +CONFIG_AR5523=m +CONFIG_ARCH_CPU_PROBE_RELEASE=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MEMORY_PROBE=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANTS_FREEZER_CONTROL=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARM_AT91_ETHER=m +# CONFIG_ARPD is not set +CONFIG_ASHMEM=y +CONFIG_ASN1=y +CONFIG_ASUS_OLED=m +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_RAID6_TEST=m +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_ASYNC_XOR=m +CONFIG_AT76C50X_USB=m +CONFIG_AT803X_PHY=y +CONFIG_ATA=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_BMDMA=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=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_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_LEGACY_RATE_CONTROL=y +# CONFIG_ATH9K_MAC_DEBUG is not set +CONFIG_ATH9K_PCI=y +CONFIG_ATH_CARDS=m +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATL1=m +CONFIG_ATL1C=m +CONFIG_ATL1E=m +CONFIG_ATL2=m +CONFIG_ATM=m +CONFIG_ATMEL=m +CONFIG_ATMEL_PWM=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_SOLOS=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_ARCH=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=y +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_INO_T_64=y +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_AUXDISPLAY=y +CONFIG_AVERAGE=y +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_B43=m +CONFIG_B43LEGACY=m +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PIO=y +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_B43_BCMA=y +# CONFIG_B43_BCMA_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_ATMEL_PWM=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_LM3630=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_PCF50633=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_TPS65217=m +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BALLOON_COMPACTION=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATTERY_88PM860X=m +CONFIG_BATTERY_BQ27X00_I2C=y +CONFIG_BATTERY_BQ27X00_PLATFORM=y +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_PMU=m +CONFIG_BATTERY_RX51=m +CONFIG_BATTERY_SBS=m +CONFIG_BAYCOM_EPP=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCH=m +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_PARAMS=y +CONFIG_BCH_CONST_T=4 +CONFIG_BCM87XX_PHY=y +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +# CONFIG_BCMA_DEBUG is not set +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_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_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_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_MD=y +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_OSD=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_DEV_UMEM=m +# 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_BOOKE=y +CONFIG_BOOKE_WDT=m +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=38 +# 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_BOUNCE=y +CONFIG_BPCTL=m +CONFIG_BPF_JIT=y +CONFIG_BPQETHER=m +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMDBG is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_SDIO_OOB=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMUTIL=m +CONFIG_BRCM_TRACING=y +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +# CONFIG_BRIDGE_EBT_ULOG is not set +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BROADCOM_PHY=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BTREE=y +CONFIG_BTRFS_FS=m +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_BT_ATH3K=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_WILINK=m +CONFIG_BUG=y +CONFIG_C2PORT=m +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +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_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_PCI=m +CONFIG_CAN_C_CAN_PLATFORM=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_FLEXCAN=m +CONFIG_CAN_GRCAN=m +CONFIG_CAN_GW=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MSCAN=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_RAW=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_OF_PLATFORM=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m +CONFIG_CAN_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_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CED1401=m +# CONFIG_CELL_CPU is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_CFG80211=m +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_WEXT=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_SCHED=y +CONFIG_CHARGER_88PM860X=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_PCF50633=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_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_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_SMB2=y +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CISS_SCSI_TAPE=y +CONFIG_CLEANCACHE=y +CONFIG_CLKBLD_I8253=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLZ_TAB=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_CNIC=m +CONFIG_CODA_FS=m +# CONFIG_CODE_PATCHING_SELFTEST is not set +CONFIG_COMPACTION=y +CONFIG_COMPAT=y +CONFIG_COMPAT_BINFMT_ELF=y +# CONFIG_COMPAT_BRK is not set +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_CORDIC=m +CONFIG_COREDUMP=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPM=y +CONFIG_CPM2=y +CONFIG_CPUSETS=y +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_MAPLE=y +CONFIG_CPU_FREQ_PMAC=y +CONFIG_CPU_FREQ_PMAC64=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +CONFIG_CPU_RMAP=y +CONFIG_CPU_THERMAL=y +CONFIG_CRAMFS=m +# CONFIG_CRASH_DUMP is not set +CONFIG_CRC16=y +CONFIG_CRC32=y +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_SELFTEST is not set +# CONFIG_CRC32_SLICEBY4 is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC_CCITT=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CROSS_COMPILE="" +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DEV_FSL_CAAM=m +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=m +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255 +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048 +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_CRYPTO_DEV_NX=y +CONFIG_CRYPTO_DEV_NX_COMPRESS=m +CONFIG_CRYPTO_DEV_NX_ENCRYPT=m +CONFIG_CRYPTO_DEV_TALITOS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_GHASH=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_LZO=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_PCOMP=m +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_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_CSR_WIFI=m +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_DA9055_WATCHDOG=m +CONFIG_DAVICOM_PHY=y +CONFIG_DCB=y +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_BUGVERBOSE is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_INFO 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_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_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_MESSAGE_LOGLEVEL=4 +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="apparmor" +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +# CONFIG_DEFAULT_SECURITY_YAMA is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_DEFXX=m +# CONFIG_DEFXX_MMIO is not set +CONFIG_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_DGRP=m +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_DM9102=m +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_DMATEST is not set +# CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_ENGINE=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DM_BIO_PRISON=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_DELAY=m +CONFIG_DM_FLAKEY=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_RAID=m +# CONFIG_DM_RAID45 is not set +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_UEVENT=y +CONFIG_DM_VERITY=m +CONFIG_DM_ZERO=m +CONFIG_DNET=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DONGLE=y +CONFIG_DPA=y +# CONFIG_DPAA_ETH_UNIT_TESTS is not set +CONFIG_DPA_MAX_FRM_SIZE=1522 +CONFIG_DPA_OFFLINE_PORTS=y +CONFIG_DQL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM=m +CONFIG_DRM_AST=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MGA=m +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +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_DRM_VMWGFX_FBCON is not set +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_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_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_CXD2099=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_DDBRIDGE=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_DRXK=m +CONFIG_DVB_DS3000=m +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_EC100=m +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_DVB_HOPPER=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IT913X_FE=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NET=y +CONFIG_DVB_NGENE=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLL=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_S921=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_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_CYPRESS_FIRMWARE=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_IT913X=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_ZL10353=m +CONFIG_DW_DMAC=m +# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set +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_E500=y +CONFIG_EARLY_PRINTK=y +CONFIG_ECHO=m +CONFIG_ECRYPT_FS=y +CONFIG_EDAC=y +CONFIG_EDAC_AMD8111=m +CONFIG_EDAC_AMD8131=m +CONFIG_EDAC_CPC925=m +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_LEGACY_SYSFS=y +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_MPC85XX=m +CONFIG_EDAC_PASEMI=m +CONFIG_EEH=y +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFI_PARTITION=y +CONFIG_EFS_FS=m +CONFIG_ELECTRA_CF=m +CONFIG_ELF_CORE=y +# CONFIG_EMBEDDED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ENCRYPTED_KEYS=y +CONFIG_ENIC=m +# CONFIG_EPAPR_BOOT is not set +CONFIG_EPAPR_PARAVIRT=y +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ESI_DONGLE=m +CONFIG_ET131X=m +CONFIG_ETHERNET=y +CONFIG_ETHOC=m +CONFIG_EVENTFD=y +CONFIG_EVENT_POWER_TRACING_DEPRECATED=y +CONFIG_EVENT_TRACING=y +CONFIG_EVM=y +# CONFIG_EXOFS_DEBUG is not set +CONFIG_EXOFS_FS=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPERT=y +CONFIG_EXPORTFS=y +CONFIG_EXT2_FS=m +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_EXTCON=y +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS_VIDEO=y +CONFIG_EZX_PCAP=y +CONFIG_F2FS_FS=m +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_STAT_FS=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_FAIR_SHARE=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +# CONFIG_FAULT_INJECTION is not set +CONFIG_FB=y +CONFIG_FB_3DFX=y +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_3DFX_I2C is not set +CONFIG_FB_ARK=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=y +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_AUO_K1900=m +CONFIG_FB_AUO_K1901=m +CONFIG_FB_AUO_K190X=m +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_BROADSHEET=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_CIRRUS=m +CONFIG_FB_CONTROL=y +CONFIG_FB_CT65550=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_DDC=y +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_FSL_DIU=m +CONFIG_FB_I740=m +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_IMSTT=y +CONFIG_FB_KYRO=m +CONFIG_FB_MACMODES=y +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_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_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=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_BACKLIGHT=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_ACCEL is not set +# CONFIG_FB_SAVAGE_I2C is not set +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_SM501=m +CONFIG_FB_SM7XX=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_SSD1307=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VALKYRIE=y +CONFIG_FB_VGA16=m +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VOODOO1=y +CONFIG_FB_VT8623=m +# CONFIG_FB_WMT_GE_ROPS is not set +CONFIG_FB_XGI=m +CONFIG_FCOE=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_FIREWIRE_SERIAL=m +CONFIG_FIRMWARE_EDID=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIXED_PHY=y +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FMAN_MIB_CNT_OVF_IRQ_EN is not set +# CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCEDETH=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FRAME_WARN=1024 +CONFIG_FREEZER=y +CONFIG_FRONTSWAP=y +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_FSCACHE_STATS=y +CONFIG_FSL_BMAN=y +CONFIG_FSL_BMAN_CONFIG=y +CONFIG_FSL_BMAN_DEBUGFS=m +CONFIG_FSL_BMAN_PORTAL=y +# CONFIG_FSL_BMAN_TEST is not set +CONFIG_FSL_BOOKE=y +CONFIG_FSL_DMA=m +CONFIG_FSL_DPA=y +CONFIG_FSL_DPA_1588=m +CONFIG_FSL_DPA_CAN_WAIT=y +CONFIG_FSL_DPA_CAN_WAIT_SYNC=y +# CONFIG_FSL_DPA_CHECKING is not set +CONFIG_FSL_DPA_HAVE_IRQ=y +CONFIG_FSL_DPA_PIRQ_FAST=y +CONFIG_FSL_DPA_PIRQ_SLOW=y +CONFIG_FSL_DPA_PORTAL_SHARE=y +CONFIG_FSL_DPA_UIO=m +CONFIG_FSL_EMB_PERFMON=y +CONFIG_FSL_EMB_PERF_EVENT=y +CONFIG_FSL_EMB_PERF_EVENT_E500=y +# CONFIG_FSL_FMAN_TEST is not set +CONFIG_FSL_HV_MANAGER=m +CONFIG_FSL_IFC=y +CONFIG_FSL_LBC=y +CONFIG_FSL_P4080_DS_MDIO=y +CONFIG_FSL_PAMU=y +CONFIG_FSL_PCI=y +CONFIG_FSL_PMC=y +CONFIG_FSL_PME2=y +CONFIG_FSL_PME2_CTRL=y +CONFIG_FSL_PME2_DB=y +CONFIG_FSL_PME2_DB_QOSOUT_PRIORITY=2 +CONFIG_FSL_PME2_PDSRSIZE=131072 +CONFIG_FSL_PME2_PORTAL=y +CONFIG_FSL_PME2_SCAN=y +# CONFIG_FSL_PME2_SCAN_DEBUG is not set +CONFIG_FSL_PME2_SRESIZE=327680 +# CONFIG_FSL_PME2_SRE_AIM is not set +CONFIG_FSL_PME2_SRE_CNR=128 +CONFIG_FSL_PME2_SRE_CTX_SIZE_PER_SESSION=17 +# CONFIG_FSL_PME2_SRE_ESR is not set +CONFIG_FSL_PME2_SRE_MAX_BLOCK_NUMBER=32767 +CONFIG_FSL_PME2_SRE_MAX_INSTRUCTION_LIMIT=65535 +CONFIG_FSL_PME2_STAT_ACCUMULATOR_UPDATE_INTERVAL=3400 +# CONFIG_FSL_PME2_TEST_HIGH is not set +# CONFIG_FSL_PME2_TEST_SCAN is not set +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_QMAN=y +CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1=y +CONFIG_FSL_QMAN_CI_SCHED_CFG_BMAN_W=2 +CONFIG_FSL_QMAN_CI_SCHED_CFG_RW_W=2 +CONFIG_FSL_QMAN_CI_SCHED_CFG_SRCCIV=4 +CONFIG_FSL_QMAN_CI_SCHED_CFG_SRQ_W=3 +CONFIG_FSL_QMAN_CONFIG=y +CONFIG_FSL_QMAN_DEBUGFS=m +CONFIG_FSL_QMAN_DQRR_PREFETCHING=y +CONFIG_FSL_QMAN_FQD_SZ=9 +# CONFIG_FSL_QMAN_FQ_LOOKUP is not set +CONFIG_FSL_QMAN_NULL_FQ_DEMUX=y +CONFIG_FSL_QMAN_PIRQ_DQRR_ITHRESH=12 +CONFIG_FSL_QMAN_PIRQ_IPERIOD=100 +CONFIG_FSL_QMAN_PIRQ_MR_ITHRESH=4 +CONFIG_FSL_QMAN_POLL_LIMIT=32 +CONFIG_FSL_QMAN_PORTAL=y +# CONFIG_FSL_QMAN_PORTAL_DISABLEAUTO_DCA is not set +# CONFIG_FSL_QMAN_TEST is not set +CONFIG_FSL_SOC=y +CONFIG_FSL_SOC_BOOKE=y +CONFIG_FSL_USB2_OTG=y +CONFIG_FSL_XGMAC_MDIO=m +CONFIG_FSNOTIFY=y +CONFIG_FS_ENET=m +CONFIG_FS_ENET_HAS_FCC=y +CONFIG_FS_ENET_HAS_SCC=y +CONFIG_FS_ENET_MDIO_FCC=m +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FT1000=m +CONFIG_FT1000_PCMCIA=m +CONFIG_FT1000_USB=m +CONFIG_FTL=m +CONFIG_FTRACE=y +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +CONFIG_FTRACE_SYSCALLS=y +# CONFIG_FTR_FIXUP_SELFTEST is not set +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUSE_FS=y +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_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_GCOV_KERNEL is not set +# CONFIG_GEF_WDT is not set +CONFIG_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_GENERIC_ACL=y +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_CPU=y +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_CHIP=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_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_TBSYNC=y +CONFIG_GENERIC_TIME_VSYSCALL_OLD=y +CONFIG_GENERIC_TRACER=y +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIANFAR=m +CONFIG_GIGASET_BASE=m +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GIGASET_DUMMYLL is not set +CONFIG_GIGASET_I4L=y +CONFIG_GIGASET_M101=m +CONFIG_GIGASET_M105=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_GPIOLIB=y +CONFIG_GPIO_74X164=m +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_GE_FPGA=y +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_MPC8XXX=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SX150X=y +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TIMBERDALE=y +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_TS5500=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +CONFIG_GPIO_UCB1400=y +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_VX855=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_XILINX=y +CONFIG_GREENASIA_FF=y +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CAN_FLEXCAN=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_GENERIC_HARDIRQS=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_IRQ_WORK=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_MTD_OTP=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_SYSCALL_WRAPPERS=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING=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_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_HIDRAW=y +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_ICADE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO_TPKBD=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PID=y +CONFIG_HID_PRIMAX=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_PS3REMOTE=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_HID_SENSOR_ALS=m +# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_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_HIGH_RES_TIMERS=y +# CONFIG_HIPPI is not set +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=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_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ST5481=m +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_HOTPLUG=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_CPCI=y +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_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HTC_I2CPLD=y +CONFIG_HTC_PASIC3=m +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_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +# CONFIG_HW_RANDOM_ATMEL is not set +CONFIG_HW_RANDOM_EXYNOS=m +CONFIG_HW_RANDOM_PASEMI=y +CONFIG_HW_RANDOM_PSERIES=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_TPM=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_HZ=250 +# 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_ALGOBIT=y +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CPM=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_EG20T=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HID=m +CONFIG_I2C_HYDRA=m +CONFIG_I2C_I801=m +CONFIG_I2C_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_OCORES=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PASEMI=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_POWERMAC=y +# CONFIG_I2C_PXA_PCI is not set +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_VIPERBOARD=m +CONFIG_I2C_XILINX=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +# CONFIG_I2O_CONFIG_OLD_IOCTL is not set +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I6300ESB_WDT=m +CONFIG_I82092=m +CONFIG_I8253_LOCK=y +# CONFIG_IBMEBUS is not set +CONFIG_IBMVETH=m +CONFIG_IBMVIO=y +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_ICPLUS_PHY=y +CONFIG_ICS932S401=m +# CONFIG_IDE is not set +CONFIG_IDE_PHISON=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_DRIVERS=m +# CONFIG_IEEE802154_FAKEHARD is not set +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IFB=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IIO=m +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_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_IIO_TRIGGERED_BUFFER=m +# 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 is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_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_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INOTIFY_USER=y +CONFIG_INPUT=y +CONFIG_INPUT_88PM80X_ONKEY=m +CONFIG_INPUT_88PM860X_ONKEY=m +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ADBHID=y +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_APMPOWER=m +CONFIG_INPUT_ARIZONA_HAPTICS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_DA9052_ONKEY=m +CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_GP2A=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_GPIO_TILT_POLLED=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MPU3050=m +CONFIG_INPUT_PCAP=m +CONFIG_INPUT_PCF50633_PMU=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_YEALINK=m +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEL_MID_PTI=m +CONFIG_INTERVAL_TREE_TEST=m +CONFIG_IOMMU_HELPER=y +CONFIG_IOMMU_SUPPORT=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IO_EVENT_IRQ=y +CONFIG_IP1000=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_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_GRE=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPWIRELESS=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +# CONFIG_IP_DCCP_CCID3 is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +# CONFIG_IP_NF_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=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 is not set +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SH_TAB_BITS=8 +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_DEBUG is not set +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_IRQ_ALL_CPUS is not set +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +CONFIG_IRTTY_SIR=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_LIRC_CODEC=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC5_SZ_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TTUSBIR=m +# CONFIG_ISA is not set +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TCP=m +CONFIG_ISDN=y +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +CONFIG_ISDN_CAPI_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_AVMB1_AVM_CS=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_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +CONFIG_ISI=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_ISO9660_FS=m +CONFIG_IWL3945=m +CONFIG_IWL4965=m +CONFIG_IWLDVM=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_P2P is not set +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=y +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_KARMA_PARTITION=y +CONFIG_KDB_KEYBOARD=y +CONFIG_KEXEC=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_OPENCORES=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_KGDB=y +CONFIG_KGDB_KDB=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_KSM=y +CONFIG_KSZ884X_PCI=m +CONFIG_KVM=y +CONFIG_KVM_BOOK3S_64=m +CONFIG_KVM_BOOK3S_64_HANDLER=y +# CONFIG_KVM_BOOK3S_64_HV is not set +CONFIG_KVM_BOOK3S_64_PR=y +CONFIG_KVM_BOOK3S_HANDLER=y +CONFIG_KVM_BOOK3S_PR=y +CONFIG_KVM_BOOKE_HV=y +CONFIG_KVM_E500MC=y +CONFIG_KVM_E500V2=y +# CONFIG_KVM_EXIT_TIMING is not set +CONFIG_KVM_GUEST=y +CONFIG_KVM_MMIO=y +CONFIG_KXSD9=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +# CONFIG_L2TP_V3 is not set +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LATENCYTOP=y +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_LDM_PARTITION=y +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_ATMEL_PWM=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_OT200=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA9633=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_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +CONFIG_LIB80211_CRYPT_WEP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_LIBCRC32C=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_CS=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LINE6_USB=m +# CONFIG_LINE6_USB_DUMP_PCM is not set +# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set +CONFIG_LIRC=m +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IGORPLUGUSB=m +CONFIG_LIRC_IMON=m +CONFIG_LIRC_PARALLEL=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=m +CONFIG_LIRC_SERIAL_TRANSMITTER=y +CONFIG_LIRC_SIR=m +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_ZILOG=m +CONFIG_LIS3L02DQ=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_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_LOCKD_V4=y +CONFIG_LOCKUP_DETECTOR=y +# CONFIG_LOCK_STAT is not set +# CONFIG_LOGFS is not set +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOOPBACK_TARGET=m +CONFIG_LOWMEM_CAM_NUM=3 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_LP8788_ADC=y +# CONFIG_LPARCFG is not set +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_LXT_PHY=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_M25PXX_USE_FAST_READ=y +CONFIG_MA600_DONGLE=m +CONFIG_MAC80211=m +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_HWSIM=m +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_MESSAGE_TRACING=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_PID=y +CONFIG_MAC802154=m +CONFIG_MACB=m +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_MAC_FLOPPY=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAILBOX=y +CONFIG_MANTIS_CORE=m +CONFIG_MARVELL_PHY=y +CONFIG_MATH_EMULATION=y +CONFIG_MAX1363=m +CONFIG_MAX517=m +CONFIG_MAX8925_POWER=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCP2120_DONGLE=m +CONFIG_MCP4725=m +CONFIG_MCS_FIR=m +CONFIG_MD=y +CONFIG_MDIO=m +CONFIG_MDIO_BITBANG=y +CONFIG_MDIO_BUS_MUX=y +CONFIG_MDIO_BUS_MUX_GPIO=y +CONFIG_MDIO_BUS_MUX_MMIOREG=y +CONFIG_MDIO_GPIO=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_COMMON_OPTIONS=y +# CONFIG_MEDIA_CONTROLLER is not set +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_PARPORT_SUPPORT=y +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_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_MEDIA_USB_SUPPORT=y +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMCG=y +# CONFIG_MEMCG_KMEM is not set +CONFIG_MEMCG_SWAP=y +# CONFIG_MEMCG_SWAP_ENABLED is not set +CONFIG_MEMORY=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +# CONFIG_MEMORY_HOTREMOVE is not set +CONFIG_MEMORY_ISOLATION=y +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_TIFM_MS=m +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ARIZONA=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_AS3711=y +CONFIG_MFD_CORE=y +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_MAX77686=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MC13783=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SM501=m +# CONFIG_MFD_SM501_GPIO is not set +CONFIG_MFD_SMSC=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TIMBERDALE=m +CONFIG_MFD_TI_AM335X_TSCADC=m +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS80031=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_VX855=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM5102=y +CONFIG_MFD_WM5110=y +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8400=y +CONFIG_MFD_WM8994=y +CONFIG_MICREL_KS8995MA=m +CONFIG_MICREL_PHY=y +CONFIG_MIGRATION=y +CONFIG_MII=y +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_FILESYSTEMS=y +CONFIG_MISDN=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_MISDN_L1OIP=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_W6692=m +CONFIG_MKISS=m +CONFIG_MLX4_CORE=m +# CONFIG_MLX4_DEBUG is not set +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_INFINIBAND=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK=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_REALTEK_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI=m +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_PLTFM=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_SPI=m +# CONFIG_MMC_TEST is not set +CONFIG_MMC_TIFM_SD=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_MMU=y +CONFIG_MMU_NOTIFIER=y +CONFIG_MM_OWNER=y +CONFIG_MODULES=y +CONFIG_MODULES_USE_ELF_RELA=y +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SIG=y +# CONFIG_MODULE_SIG_FORCE is not set +# CONFIG_MODULE_SIG_SHA1 is not set +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +CONFIG_MODULE_SIG_SHA512=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_ELANTECH=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_MPIC=y +CONFIG_MPIC_BROKEN_REGREAD=y +CONFIG_MPIC_MSGR=y +# CONFIG_MPIC_WEIRD is not set +CONFIG_MPILIB=y +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +# CONFIG_MSI_BITMAP_SELFTEST is not set +CONFIG_MSPRO_BLOCK=m +CONFIG_MTD=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_ALAUDA=m +CONFIG_MTD_AR7_PARTS=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=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_CHAR=m +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_OTP=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_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_GEN_PROBE=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_JEDECPROBE=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=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_DT=m +CONFIG_MTD_NAND_DENALI_PCI=m +CONFIG_MTD_NAND_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=m +CONFIG_MTD_NAND_ECC_BCH=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_FSL_ELBC=m +CONFIG_MTD_NAND_FSL_IFC=m +CONFIG_MTD_NAND_FSL_UPM=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_PASEMI=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_SOCRATES=m +CONFIG_MTD_OF_PARTS=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_GENERIC=m +# CONFIG_MTD_ONENAND_OTP is not set +# CONFIG_MTD_ONENAND_SIM is not set +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_OOPS=m +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=m +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_QINFO_PROBE=m +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_SST25L=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_FASTMAP=y +CONFIG_MTD_UBI_GLUEBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +# CONFIG_MULTICORE_RAID456 is not set +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_MV643XX_ETH=m +CONFIG_MVMDIO=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +CONFIG_MWL8K=m +CONFIG_MYRI10GE=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_NE2K_PCI=m +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_QUEUE_CT=y +CONFIG_NETFILTER_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_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETLABEL=y +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NETPRIO_CGROUP=m +CONFIG_NETROM=m +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NETXEN_NIC=m +CONFIG_NET_9P=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NET_9P_RDMA=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CADENCE=y +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_CLS=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_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_DMA=y +# CONFIG_NET_DROP_MONITOR is not set +CONFIG_NET_DSA=m +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_MV88E6123_61_65=m +CONFIG_NET_DSA_MV88E6131=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_FC=y +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPIP=m +CONFIG_NET_IPVTI=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_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_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_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PASEMI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SILICOM=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_TOSHIBA=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFC_HCI=m +CONFIG_NFC_LLCP=y +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_SWAP=y +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +CONFIG_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_HELPER=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NILFS2_FS=m +CONFIG_NIU=m +CONFIG_NL80211_TESTMODE=y +CONFIG_NLATTR=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=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_DEFAULT="utf8" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_NODES_SHIFT=8 +CONFIG_NODES_SPAN_OTHER_NODES=y +CONFIG_NOP_TRACER=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_NORTEL_HERMES=m +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +CONFIG_NOZOMI=m +CONFIG_NO_HZ=y +CONFIG_NR_IRQS=512 +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA=y +CONFIG_NVRAM=y +# CONFIG_N_GSM is not set +CONFIG_N_HDLC=m +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_OCFS2_DEBUG_MASKLOG=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_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_IOMMU=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_NET=y +CONFIG_OF_PCI=y +CONFIG_OF_PCI_IRQ=y +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +# CONFIG_OF_SELFTEST is not set +CONFIG_OID_REGISTRY=y +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OMFS_FS=m +CONFIG_OPENVSWITCH=m +CONFIG_OPROFILE=m +CONFIG_ORE=m +CONFIG_ORINOCO_USB=m +CONFIG_OSF_PARTITION=y +CONFIG_OVERLAYFS_FS=m +CONFIG_P54_COMMON=m +CONFIG_P54_LEDS=y +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set +CONFIG_P54_USB=m +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_PADATA=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PANEL=m +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANTHERLORD_FF=y +CONFIG_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_1284=y +CONFIG_PARPORT_AX88796=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +# CONFIG_PARPORT_PC_FIFO is not set +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_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_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_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_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_SIS=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PC300TOO=m +CONFIG_PCCARD=m +CONFIG_PCCARD_NONSTATIC=y +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +CONFIG_PCH_CAN=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_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +CONFIG_PCI_ATS=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_IOV=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_SYSCALL=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_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PCSPKR_PLATFORM=y +CONFIG_PD6729=m +CONFIG_PDA_POWER=m +CONFIG_PDC_ADMA=m +CONFIG_PERCPU_RWSEM=y +CONFIG_PERF_EVENTS=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_ALIGN=0x04000000 +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_64BIT=y +CONFIG_PID_NS=y +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +CONFIG_PMAC_APM_EMU=m +CONFIG_PMAC_BACKLIGHT=y +CONFIG_PMAC_BACKLIGHT_LEGACY=y +CONFIG_PMAC_MEDIABAY=y +CONFIG_PMAC_RACKMETER=m +CONFIG_PMAC_SMU=y +CONFIG_PMBUS=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +CONFIG_PM_RUNTIME=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PN544_HCI_NFC=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_OBJLAYOUT=m +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_AVS=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +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_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +# CONFIG_PPC_86xx is not set +# CONFIG_PPC_8xx is not set +CONFIG_PPC_ADV_DEBUG_DACS=2 +CONFIG_PPC_ADV_DEBUG_DVCS=0 +CONFIG_PPC_ADV_DEBUG_IACS=2 +CONFIG_PPC_ADV_DEBUG_REGS=y +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3E_MMU=y +CONFIG_PPC_BOOK3S=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_DCR_MMIO is not set +# CONFIG_PPC_DCR_NATIVE is not set +# CONFIG_PPC_DENORMALISATION is not set +CONFIG_PPC_DISABLE_WERROR=y +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_PPC_EMULATE_SSTEP=y +CONFIG_PPC_EPAPR_HV_BYTECHAN=m +CONFIG_PPC_FPU=y +CONFIG_PPC_FSL_BOOK3E=y +CONFIG_PPC_HAS_HASH_64K=y +CONFIG_PPC_HAVE_PMU_SUPPORT=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_LIB_RHEAP=y +CONFIG_PPC_MAPLE=y +CONFIG_PPC_MMU_NOHASH=y +# CONFIG_PPC_MPC512x is not set +# CONFIG_PPC_MPC52xx is not set +CONFIG_PPC_MSI_BITMAP=y +CONFIG_PPC_NATIVE=y +CONFIG_PPC_OF=y +CONFIG_PPC_OF_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_QEMU_E500=y +CONFIG_PPC_RTAS_DAEMON=y +# CONFIG_PPC_SMLPAR is not set +CONFIG_PPC_SMP_MUXED_IPI=y +# CONFIG_PPC_SPLPAR is not set +CONFIG_PPC_STD_MMU=y +CONFIG_PPC_STD_MMU_32=y +CONFIG_PPC_STD_MMU_64=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_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +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_NONE is not set +CONFIG_PREEMPT_NOTIFIERS=y +# CONFIG_PREEMPT_RCU is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_PRINT_STACK_DEPTH=64 +CONFIG_PRISM2_USB=m +# CONFIG_PRISM54 is not set +CONFIG_PROBE_EVENTS=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_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_PROFILING=y +# CONFIG_PROVE_LOCKING 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_ENERGY=m +CONFIG_PSERIES_IDLE=y +CONFIG_PSERIES_MSI=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTE_64BIT=y +CONFIG_PTP_1588_CLOCK=m +CONFIG_PTP_1588_CLOCK_GIANFAR=m +CONFIG_PTP_1588_CLOCK_PCH=m +CONFIG_PUBLIC_KEY_ALGO_RSA=y +CONFIG_PWM=y +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m +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_QUICC_ENGINE is not set +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_QUOTA_TREE=m +CONFIG_R3964=m +CONFIG_R6040=m +CONFIG_R8169=m +CONFIG_R8187SE=m +CONFIG_R8712U=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI470X=y +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_TIMBERDALE=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=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_RBTREE_TEST=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_NOCB_CPU is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_CORE=m +CONFIG_RC_DECODERS=y +CONFIG_RC_DEVICES=y +CONFIG_RC_LOOPBACK=m +CONFIG_RC_MAP=m +CONFIG_RDS=m +# CONFIG_RDS_DEBUG is not set +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +CONFIG_RD_BZIP2=y +CONFIG_RD_GZIP=y +CONFIG_RD_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_MMIO=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_ANATOP=m +CONFIG_REGULATOR_ARIZONA=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=m +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_DUMMY is not set +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=y +CONFIG_REGULATOR_LP8788=y +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +CONFIG_REGULATOR_MAX8907=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8973=m +CONFIG_REGULATOR_MAX8997=m +CONFIG_REGULATOR_MAX8998=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MC13XXX_CORE=m +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_TPS51632=m +CONFIG_REGULATOR_TPS6105X=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65090=m +CONFIG_REGULATOR_TPS65217=m +CONFIG_REGULATOR_TPS6524X=m +CONFIG_REGULATOR_TPS6586X=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TPS65912=m +CONFIG_REGULATOR_TPS80031=m +CONFIG_REGULATOR_TWL4030=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_REMOTEPROC=m +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_RT3290=y +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_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2X00=m +# CONFIG_RT2X00_DEBUG is not set +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_CRYPTO=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_LEDS=y +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT61PCI=m +CONFIG_RT73USB=m +CONFIG_RTAS_ERROR_LOGGING=y +# CONFIG_RTAS_FLASH is not set +CONFIG_RTAS_PROC=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_DRV_88PM80X=m +CONFIG_RTC_DRV_88PM860X=m +CONFIG_RTC_DRV_AB3100=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_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_MAX8907=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_PCF8523=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PS3=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_SNVS=m +CONFIG_RTC_DRV_STK17TA8=m +# CONFIG_RTC_DRV_TEST is not set +CONFIG_RTC_DRV_TPS6586X=m +CONFIG_RTC_DRV_TPS65910=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_RTC_DRV_V3020=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_RTL8723AE=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_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_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_FSL=m +CONFIG_SATA_HIGHBANK=m +CONFIG_SATA_INIC162X=m +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PMP=y +CONFIG_SATA_PROMISE=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIL24=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=y +CONFIG_SATA_SX4=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SBE_2T3E3=m +CONFIG_SBE_PMCC4_NCOMM=y +CONFIG_SBP_TARGET=m +CONFIG_SBYPASS=m +CONFIG_SC92031=m +CONFIG_SCA3000=m +CONFIG_SCANLOG=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_SCHED_SMT=y +CONFIG_SCHED_TRACER=y +CONFIG_SCSI=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_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_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +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_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_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_MAC53C94=m +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_MOD=y +CONFIG_SCSI_MPT2SAS=m +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS=m +# CONFIG_SCSI_MPT3SAS_LOGGING is not set +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_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_SAS_ATA=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_SRP_TGT_ATTRS=y +CONFIG_SCSI_STEX=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_TGT=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +CONFIG_SDIO_UART=m +CONFIG_SECCOMP=y +CONFIG_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=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_SECURITY_SMACK=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_YAMA=y +CONFIG_SECURITY_YAMA_STACKED=y +CONFIG_SEEQ8005=m +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1275=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADS1015=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_ADT7410=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 is not set +# CONFIG_SENSORS_AMS_PMU is not set +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_BH1780=m +CONFIG_SENSORS_DA9052_ADC=m +CONFIG_SENSORS_DA9055=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_HIH6130=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_JC42=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_LIS3_SPI=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LM3533=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX8688=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_PMBUS=m +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_TSL2563=m +CONFIG_SENSORS_TWL4030_MADC=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SENSORS_ZL6100=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_PCI=m +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_ARC=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_CPM=m +CONFIG_SERIAL_ICOM=m +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IPOCTAL=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_KGDB_NMI=y +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_MFD_HSU=m +CONFIG_SERIAL_MRST_MAX3110=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_OF_PLATFORM=m +CONFIG_SERIAL_PCH_UART=m +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +# CONFIG_SERIAL_PMACZILOG_TTYS is not set +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_TIMBERDALE=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_ARC_PS2=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_SERPORT=m +CONFIG_SERIO_XILINX_XPS_PS2=m +CONFIG_SFC=m +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_MTD=y +CONFIG_SFC_SRIOV=y +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +CONFIG_SGY_CTS1000=y +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_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_SMC_IRCC_FIR=m +CONFIG_SMP=y +CONFIG_SMSC9420=m +CONFIG_SMSC_PHY=y +CONFIG_SMS_SDIO_DRV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +CONFIG_SMS_USB_DRV=m +CONFIG_SM_FTL=m +CONFIG_SND=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALOOP=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_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_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_AZT3328=m +CONFIG_SND_BT87X=m +CONFIG_SND_BT87X_OVERCLOCK=y +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_COMPRESS_OFFLOAD=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_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_ECHO3G=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_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_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_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_ISIGHT=m +CONFIG_SND_JACK=y +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_MIA=m +CONFIG_SND_MIXART=m +# CONFIG_SND_MIXER_OSS is not set +CONFIG_SND_MONA=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_NM256=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_OXYGEN=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_PCI=y +CONFIG_SND_PCM=m +CONFIG_SND_PCMCIA=y +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCXHR=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y +CONFIG_SND_POWERPC_SOC=m +CONFIG_SND_PPC=y +CONFIG_SND_PS3=m +CONFIG_SND_PS3_DEFAULT_START_DELAY=2000 +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RAWMIDI_SEQ=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SB16_DSP=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SCS1X=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_88PM860X=m +CONFIG_SND_SOC_AB8500_CODEC=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_ARIZONA=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_DA732X=m +CONFIG_SND_SOC_DA9055=m +CONFIG_SND_SOC_DFBMCS320=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_FSL_UTILS=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_ISABELLE=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_MAX98090=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_P1022_DS=m +CONFIG_SND_SOC_P1022_RDK=m +CONFIG_SND_SOC_PCM3008=m +CONFIG_SND_SOC_POWERPC_DMA=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_STA529=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_TWL4030=m +CONFIG_SND_SOC_TWL6040=m +CONFIG_SND_SOC_UDA134X=m +CONFIG_SND_SOC_UDA1380=m +CONFIG_SND_SOC_WL1273=m +CONFIG_SND_SOC_WM0010=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_WM5102=m +CONFIG_SND_SOC_WM5110=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_ADSP=m +CONFIG_SND_SOC_WM_HUBS=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SPI=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_TEA575X=m +CONFIG_SND_TIMER=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_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_YMFPCI=m +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_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOLO6X10=m +CONFIG_SOUND=m +# CONFIG_SOUND_OSS_CORE is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSE_IRQ=y +# CONFIG_SPARSE_RCU_POINTER is not set +CONFIG_SPE=y +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_MMIO=m +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_FSL_ESPI=y +CONFIG_SPI_FSL_LIB=y +# CONFIG_SPI_FSL_SPI is not set +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_DMA=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_TOPCLIFF_PCH=m +CONFIG_SPI_XCOMM=m +# CONFIG_SPI_XILINX is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SPU_BASE=y +CONFIG_SPU_FS=m +CONFIG_SPU_FS_64K_LS=y +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SSB=m +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_BLOCKIO=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SILENT is not set +CONFIG_SSB_SPROM=y +CONFIG_SSFDC=m +CONFIG_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STACK_TRACER=y +CONFIG_STAGING=y +CONFIG_STAGING_MEDIA=y +CONFIG_STALDRV=y +CONFIG_STANDALONE=y +CONFIG_STE10XP=y +CONFIG_STEP_WISE=y +CONFIG_STE_MODEM_RPROC=m +# CONFIG_STMMAC_CHAINED is not set +# CONFIG_STMMAC_DA is not set +# CONFIG_STMMAC_DEBUG_FS is not set +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PCI is not set +CONFIG_STMMAC_PLATFORM=y +CONFIG_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_SWAP=y +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_SUN_PARTITION=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_GT=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSV_FS=m +# CONFIG_SYS_HYPERVISOR is not set +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_TCG_ATMEL=m +CONFIG_TCG_IBMVTPM=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TPM=y +CONFIG_TCM_FC=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_QLA2XXX=m +CONFIG_TCM_VHOST=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_MD5SIG=y +CONFIG_TEHUTI=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TEST_KSTRTOX=m +# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_POWER=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_THERMAL=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_THERMAL_HWMON=y +CONFIG_THERM_ADT746X=y +CONFIG_THERM_PM72=m +CONFIG_THERM_WINDTUNNEL=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_TICK_ONESHOT=y +CONFIG_TIFM_7XX1=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TIMB_DMA=m +CONFIG_TIMERFD=y +CONFIG_TIMER_STATS=y +CONFIG_TIPC=m +CONFIG_TIPC_PORTS=8191 +CONFIG_TI_ADC081C=m +CONFIG_TI_AM335X_ADC=m +CONFIG_TI_DAC7512=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_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_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MMS114=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_W90X900=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WM831X=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TQM85xx=y +CONFIG_TRACEPOINTS=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_CLOCK=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACE_SINK=m +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_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_CORE=y +CONFIG_TWL4030_MADC=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_TWL6040_CORE=y +CONFIG_TYPHOON=m +CONFIG_U3_DART=y +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_UHID=m +CONFIG_UIO=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=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_ULTRIX_PARTITION=y +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNIX_DIAG=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_UPROBES=y +CONFIG_UPROBE_EVENT=y +CONFIG_USB=y +CONFIG_USBIP_CORE=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACM=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_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_EHCI=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=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_FSL=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_PCI=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_FX2=m +CONFIG_USB_FSL_MPH_DR_OF=y +CONFIG_USB_FSL_QE=m +CONFIG_USB_FSL_USB2=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUSB300=m +CONFIG_USB_GADGET=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_MUSB_HDRC=m +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GL860=m +CONFIG_USB_GOKU=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_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 is not set +CONFIG_USB_G_NCM=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSO=m +CONFIG_USB_HWA_HCD=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_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_LIBCOMPOSITE=m +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_HDRC=m +CONFIG_USB_MUSB_TUSB6010=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_MBIM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_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_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_OTG_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_RCAR_PHY=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_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_SERIAL_ZTE=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_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_SPACE=y +CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_UTS_NS=y +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_WHCI=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VCNL4000=m +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VFAT_FS=m +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_VGASTATE=m +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_CONSOLE=y +CONFIG_VHOST_NET=m +CONFIG_VIA_FIR=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=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_ADV_DEBUG is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_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_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_IVTV_ALSA=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_PVRUSB2=m +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_PVRUSB2_DVB=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_SAA7185=m +# CONFIG_VIDEO_SH_MOBILE_CEU is not set +# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TIMBERDALE=m +CONFIG_VIDEO_TLG2300=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIPERBOARD_ADC=m +CONFIG_VIRTIO=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_CONSOLE=m +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTUALIZATION=y +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VITESSE_PHY=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLSI_FIR=m +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_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_VT_HW_CONSOLE_BINDING=y +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_VXLAN=m +CONFIG_W1=m +CONFIG_W1_CON=y +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_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_DS28E04=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W35UND=m +CONFIG_WAN=y +CONFIG_WANXL=m +CONFIG_WAN_ROUTER=m +CONFIG_WAN_ROUTER_DRIVERS=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_RTAS=m +CONFIG_WDTPCI=m +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_QOS=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_WIMAX_GDM72XX_USB_PM=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WINDFARM=m +CONFIG_WINDFARM_PM112=m +CONFIG_WINDFARM_PM121=m +CONFIG_WINDFARM_PM72=m +CONFIG_WINDFARM_PM81=m +CONFIG_WINDFARM_PM91=m +CONFIG_WINDFARM_RM31=m +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WIZNET_BUS_ANY=y +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +CONFIG_WL1251=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1251_SPI=m +CONFIG_WL12XX=m +CONFIG_WL12XX_PLATFORM_DATA=y +CONFIG_WL18XX=m +CONFIG_WLAGS49_H2=m +CONFIG_WLAGS49_H25=m +CONFIG_WLAN=y +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +CONFIG_WL_TI=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_POWER=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_XFRM_SUB_POLICY is not set +CONFIG_XFRM_USER=m +# CONFIG_XFS_DEBUG is not set +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_XMON is not set +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_ZCACHE=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZISOFS=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_ZRAM=m +# CONFIG_ZRAM_DEBUG is not set +CONFIG_ZSMALLOC=y --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/ignore.modules +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/ignore.modules @@ -0,0 +1 @@ +1 --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/config.flavour.powerpc-e500mc +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/config.flavour.powerpc-e500mc @@ -0,0 +1,88 @@ +# +# Config options for config.flavour.powerpc-e500mc automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_BSC9131_RDB is not set +CONFIG_DEFAULT_UIMAGE=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=y +# CONFIG_FMAN_P1023 is not set +CONFIG_FMAN_P3040_P4080_P5020=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FSL_FMAN=y +CONFIG_FSL_RIO=y +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +# CONFIG_GE_IMP3A is not set +CONFIG_HAS_FSL_PAMU=y +CONFIG_HAS_FSL_PME=y +CONFIG_HAS_FSL_QBMAN=y +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_KSI8560 is not set +CONFIG_MAX_ACTIVE_REGIONS=32 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPC8536_DS is not set +# CONFIG_MPC8540_ADS is not set +# CONFIG_MPC8560_ADS is not set +# CONFIG_MPC85xx_CDS is not set +# CONFIG_MPC85xx_DS is not set +# CONFIG_MPC85xx_MDS is not set +# CONFIG_MPC85xx_RDB is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=8 +# CONFIG_P1010_RDB is not set +# CONFIG_P1022_DS is not set +# CONFIG_P1022_RDK is not set +# CONFIG_P1023_RDS is not set +CONFIG_P2041_RDB=y +CONFIG_P3041_DS=y +CONFIG_P4080_DS=y +CONFIG_P5020_DS=y +CONFIG_P5040_DS=y +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PPC64 is not set +CONFIG_PPC_85xx=y +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_BOOK3S_32 is not set +# CONFIG_PPC_CELL is not set +CONFIG_PPC_CLOCK=y +CONFIG_PPC_E500MC=y +CONFIG_PPC_EPAPR_HV_PIC=y +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +CONFIG_RTC_DRV_DS3232=y +# CONFIG_SBC8548 is not set +# CONFIG_SOCRATES is not set +# CONFIG_STX_GP3 is not set +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_TQM8540 is not set +# CONFIG_TQM8541 is not set +# CONFIG_TQM8548 is not set +# CONFIG_TQM8555 is not set +# CONFIG_TQM8560 is not set +CONFIG_USB_OTG=y +CONFIG_WORD_SIZE=32 +# CONFIG_XES_MPC85xx is not set +CONFIG_ZLIB_DEFLATE=m --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/config.flavour.powerpc-e500 +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/config.flavour.powerpc-e500 @@ -0,0 +1,88 @@ +# +# Config options for config.flavour.powerpc-e500 automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_BSC9131_RDB=y +CONFIG_DEFAULT_UIMAGE=y +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FMAN_P1023=y +# CONFIG_FMAN_P3040_P4080_P5020 is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FSL_FMAN=y +# CONFIG_FSL_RIO is not set +CONFIG_FSL_ULI1575=y +CONFIG_GE_FPGA=y +CONFIG_GE_IMP3A=y +# CONFIG_HAS_FSL_PAMU is not set +# CONFIG_HAS_FSL_PME is not set +CONFIG_HAS_FSL_QBMAN=y +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc0000000 +CONFIG_KSI8560=y +CONFIG_MAX_ACTIVE_REGIONS=32 +CONFIG_MMIO_NVRAM=y +CONFIG_MPC8536_DS=y +CONFIG_MPC8540_ADS=y +CONFIG_MPC8560_ADS=y +CONFIG_MPC85xx_CDS=y +CONFIG_MPC85xx_DS=y +CONFIG_MPC85xx_MDS=y +CONFIG_MPC85xx_RDB=y +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=8 +CONFIG_P1010_RDB=y +CONFIG_P1022_DS=y +CONFIG_P1022_RDK=y +CONFIG_P1023_RDS=y +# CONFIG_P2041_RDB is not set +# CONFIG_P3041_DS is not set +# CONFIG_P4080_DS is not set +# CONFIG_P5020_DS is not set +# CONFIG_P5040_DS is not set +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PPC64 is not set +CONFIG_PPC_85xx=y +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_BOOK3S_32 is not set +# CONFIG_PPC_CELL is not set +CONFIG_PPC_CLOCK=y +# CONFIG_PPC_E500MC is not set +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +CONFIG_RTC_DRV_DS3232=m +CONFIG_SBC8548=y +CONFIG_SOCRATES=y +CONFIG_STX_GP3=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TQM8540=y +CONFIG_TQM8541=y +CONFIG_TQM8548=y +CONFIG_TQM8555=y +CONFIG_TQM8560=y +CONFIG_USB_OTG=y +CONFIG_WORD_SIZE=32 +CONFIG_XES_MPC85xx=y +CONFIG_ZLIB_DEFLATE=m --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/ignore +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/ignore @@ -0,0 +1 @@ +1 --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/config.common.powerpc +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/config.common.powerpc @@ -0,0 +1,3 @@ +# +# Config options for config.common.powerpc automatically generated by splitconfig.pl +# --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/config.flavour.powerpc64-smp +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/config.flavour.powerpc64-smp @@ -0,0 +1,53 @@ +# +# 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_DEFAULT_UIMAGE is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=m +CONFIG_FORCE_MAX_ZONEORDER=13 +# CONFIG_FSL_FMAN is not set +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +# CONFIG_HAS_FSL_PAMU is not set +# CONFIG_HAS_FSL_QBMAN is not set +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc000000000000000 +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_CLOCK is not set +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_XICS=y +CONFIG_RCU_FANOUT=64 +CONFIG_RTC_DRV_DS3232=m +# CONFIG_TICK_CPU_ACCOUNTING is not set +# CONFIG_USB_OTG is not set +CONFIG_WORD_SIZE=64 +CONFIG_ZLIB_DEFLATE=y --- linux-ppc-3.8.0.orig/debian.ppc/config/powerpc/config.flavour.powerpc-smp +++ linux-ppc-3.8.0/debian.ppc/config/powerpc/config.flavour.powerpc-smp @@ -0,0 +1,55 @@ +# +# 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_DEFAULT_UIMAGE is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_FSL_FMAN is not set +# CONFIG_FSL_ULI1575 is not set +# CONFIG_GE_FPGA is not set +# CONFIG_HAS_FSL_PAMU is not set +# CONFIG_HAS_FSL_QBMAN is not set +# CONFIG_HAS_RAPIDIO is not set +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_KERNEL_START=0xc0000000 +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_85xx is not set +# CONFIG_PPC_970_NAP is not set +CONFIG_PPC_BOOK3S_32=y +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_CLOCK is not set +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +CONFIG_PPC_MPC106=y +# CONFIG_PPC_P7_NAP is not set +CONFIG_PPC_RTAS=y +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +CONFIG_RTC_DRV_DS3232=m +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_USB_OTG is not set +CONFIG_WORD_SIZE=32 +CONFIG_ZLIB_DEFLATE=m --- linux-ppc-3.8.0.orig/debian.ppc/etc/getabis +++ linux-ppc-3.8.0/debian.ppc/etc/getabis @@ -0,0 +1,12 @@ +repo_list=( + "http://archive.ubuntu.com/ubuntu/pool/main/l/linux-ppc" + "http://ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-ppc" + "http://archive.ubuntu.com/ubuntu/pool/universe/l/linux-ppc" + "http://ports.ubuntu.com/ubuntu-ports/pool/universe/l/linux-ppc" + "http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu/pool/main/l/linux-ppc" +) + +package_prefixes linux-image + +# Ports arches and flavours. +getall powerpc powerpc-smp powerpc64-smp powerpc-e500 powerpc-e500mc --- linux-ppc-3.8.0.orig/debian.ppc/etc/kernelconfig +++ linux-ppc-3.8.0/debian.ppc/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="powerpc" + family='ubuntu' +fi --- linux-ppc-3.8.0.orig/debian.ppc/rules.d/powerpc.mk +++ linux-ppc-3.8.0/debian.ppc/rules.d/powerpc.mk @@ -0,0 +1,31 @@ +human_arch = PowerPC (32 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pmac32_defconfig +flavours = powerpc-smp powerpc64-smp powerpc-e500 powerpc-e500mc +build_image = vmlinux +kernel_file = $(build_image) +install_file = $(build_image) + +# These flavours differ +build_image_powerpc-e500mc = uImage +kernel_file_powerpc-e500mc = arch/powerpc/boot/uImage + +build_image_powerpc-e500 = uImage +kernel_file_powerpc-e500 = arch/powerpc/boot/uImage + +loader = yaboot + +custom_flavours = + +skipabi = false +skipmodules = false + +no_dumpfile = true +do_doc_package = false +do_source_package = true +do_common_headers_indep = false +do_libc_dev_package = false +do_tools = false + +family = ubuntu --- linux-ppc-3.8.0.orig/firmware/WHENCE +++ linux-ppc-3.8.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-ppc-3.8.0.orig/firmware/Makefile +++ linux-ppc-3.8.0/firmware/Makefile @@ -20,121 +20,29 @@ # accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all). # But be aware that the config file might not be included at all. -ifdef CONFIG_ACENIC_OMIT_TIGON_I -acenic-objs := acenic/tg2.bin -fw-shipped- += acenic/tg1.bin -else -acenic-objs := acenic/tg1.bin acenic/tg2.bin -endif -fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs) -fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ - adaptec/starfire_tx.bin -fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin -fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw -fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ - bnx2x/bnx2x-e1h-6.2.9.0.fw \ - bnx2x/bnx2x-e2-6.2.9.0.fw -fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ - bnx2/bnx2-rv2p-09-6.0.17.fw \ - bnx2/bnx2-rv2p-09ax-6.0.17.fw \ - bnx2/bnx2-mips-06-6.2.1.fw \ - bnx2/bnx2-rv2p-06-6.0.15.fw -fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin -fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ - cxgb3/t3c_psram-1.1.0.bin \ - cxgb3/ael2005_opt_edc.bin \ - cxgb3/ael2005_twx_edc.bin \ - cxgb3/ael2020_twx_edc.bin -fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw -fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin -fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \ - radeon/R300_cp.bin radeon/R420_cp.bin \ - radeon/RS690_cp.bin radeon/RS600_cp.bin \ - radeon/R520_cp.bin \ - radeon/R600_pfp.bin radeon/R600_me.bin \ - radeon/RV610_pfp.bin radeon/RV610_me.bin \ - radeon/RV630_pfp.bin radeon/RV630_me.bin \ - radeon/RV620_pfp.bin radeon/RV620_me.bin \ - radeon/RV635_pfp.bin radeon/RV635_me.bin \ - radeon/RV670_pfp.bin radeon/RV670_me.bin \ - radeon/RS780_pfp.bin radeon/RS780_me.bin \ - radeon/RV770_pfp.bin radeon/RV770_me.bin \ - radeon/RV730_pfp.bin radeon/RV730_me.bin \ - radeon/RV710_pfp.bin radeon/RV710_me.bin -fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin -fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin +fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-7.8.2.0.fw \ + bnx2x/bnx2x-e1h-7.8.2.0.fw \ + bnx2x/bnx2x-e2-7.8.2.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_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 -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw -else -fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw \ - keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw \ - keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw \ - keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw -endif -fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \ - mts_cdma.fw mts_gsm.fw mts_edge.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \ - edgeport/down.fw edgeport/down2.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin -fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \ - # whiteheat_loader_debug.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw -fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw -fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw -fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin -fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) --- linux-ppc-3.8.0.orig/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex +++ linux-ppc-3.8.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-ppc-3.8.0.orig/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex +++ linux-ppc-3.8.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-ppc-3.8.0.orig/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +++ linux-ppc-3.8.0/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex @@ -0,0 +1,5804 @@ +:10000000080001180800000000004A68000000C84D +:1000100000000000000000000000000008004A6826 +:100020000000001400004B30080000A00800000091 +:100030000000569400004B44080058200000008443 +:100040000000A1D808005694000001580000A25CEE +:100050000800321008000000000072F00000A3B495 +:10006000000000000000000000000000080072F026 +:1000700000000024000116A40800049008000400F9 +:10008000000017D4000116C80000000000000000A6 +:100090000000000000000000000000000000000060 +:1000A000080000A80800000000003BFC00012E9C96 +:1000B0000000000000000000000000000000000040 +:1000C00000000000000000000A00004600000000E0 +:1000D000000000000000000D636F6D362E322E33DD +:1000E0000000000006020302000000000000000300 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C02080024424AA03C03080015 +:1002000024634B9CAC4000000043202B1480FFFD76 +:10021000244200043C1D080037BD7FFC03A0F021F0 +:100220003C100800261001183C1C0800279C4AA01E +:100230000E000168000000000000000D27470100CB +:1002400090E3000B2402001A94E5000814620028D1 +:10025000000020218CE200003C0308008C63004475 +:1002600094E60014000211C20002104030A4000203 +:10027000005A10212463000130A50004A446008028 +:100280003C010800AC23004410A000190004202BFE +:100290008F4202B804410008240400013C02080017 +:1002A0008C420060244200013C010800AC22006046 +:1002B00003E00008008010218CE2002094E3001687 +:1002C00000002021AF4202808CE20004A743028498 +:1002D000AF4202883C021000AF4202B83C02080064 +:1002E0008C42005C244200013C010800AC22005C0E +:1002F00003E00008008010212747010090E3000B75 +:100300002402000394E50008146200280000202164 +:100310008CE200003C0308008C63004494E6001467 +:10032000000211C20002104030A40002005A102145 +:100330002463000130A50004A44600803C010800AD +:10034000AC23004410A000190004202B8F4202B8F7 +:1003500004410008240400013C0208008C420060B3 +:10036000244200013C010800AC22006003E00008C8 +:10037000008010218CE2002094E300160000202170 +:10038000AF4202808CE20004A7430284AF4202889D +:100390003C021000AF4202B83C0208008C42005CF4 +:1003A000244200013C010800AC22005C03E000088C +:1003B000008010218F4301002402010050620003DD +:1003C000000311C20000000D000311C20002104022 +:1003D000005A1021A440008003E000080000102112 +:1003E0009362000003E00008AF80000003E0000813 +:1003F0000000102103E00008000010212402010089 +:1004000014820008000000003C0208008C4200FC3E +:10041000244200013C010800AC2200FC0A0000DD7F +:1004200030A200203C0208008C42008424420001DB +:100430003C010800AC22008430A2002010400008DB +:1004400030A300103C0208008C4201082442000145 +:100450003C010800AC22010803E000080000000095 +:1004600010600008000000003C0208008C420104FB +:10047000244200013C010800AC22010403E0000812 +:10048000000000003C0208008C42010024420001F0 +:100490003C010800AC22010003E00008000000005D +:1004A00027BDFFE8AFBF0010274401009483000878 +:1004B000306200041040001B306600028F4202B818 +:1004C00004410008240500013C0208008C42006041 +:1004D000244200013C010800AC2200600A0001290E +:1004E0008FBF00108C82002094830016000028210A +:1004F000AF4202808C820004A7430284AF4202888C +:100500003C021000AF4202B83C0208008C42005C82 +:10051000244200013C010800AC22005C0A000129D1 +:100520008FBF001010C00006006028218F4401001A +:100530000E0000CD000000000A0001282405000183 +:100540008F8200088F4301045043000700002821D8 +:100550008F4401000E0000CD000000008F42010416 +:10056000AF820008000028218FBF001000A01021DA +:1005700003E0000827BD001827BDFFE8AFBF001447 +:10058000AFB00010974201083043700024022000F1 +:100590001062000B286220011440002F000010217F +:1005A00024024000106200250000000024026000C8 +:1005B00010620026000010210A0001658FBF0014A0 +:1005C00027500100920200091040001A2403000184 +:1005D0003C0208008C420020104000160000182148 +:1005E0000E00049300000000960300083C0608007B +:1005F00094C64B5E8E0400188F8200209605000C76 +:1006000000031C0000661825AC440000AC45000443 +:1006100024040001AC400008AC40000CAC400010C9 +:10062000AC400014AC4000180E0004B8AC43001CF1 +:10063000000018210A000164006010210E0003254B +:10064000000000000A000164000010210E000EE905 +:1006500000000000000010218FBF00148FB00010B8 +:1006600003E0000827BD001827BDFFE0AFB2001867 +:100670003C036010AFBF001CAFB10014AFB000105E +:100680008C6450002402FF7F3C1A800000822024EA +:100690003484380C24020037AC6450003C1208004B +:1006A00026524AD8AF42000824020C80AF420024F0 +:1006B0003C1B80083C06080024C60324024010218D +:1006C0002404001D2484FFFFAC4600000481FFFDCC +:1006D000244200043C020800244204B03C0108000B +:1006E000AC224AE03C020800244202303C010800EF +:1006F000AC224AE43C020800244201743C03080096 +:100700002463032C3C040800248403D83C0508001F +:1007100024A538F03C010800AC224B403C02080004 +:10072000244202EC3C010800AC264B243C010800AA +:10073000AC254B343C010800AC234B3C3C01080089 +:10074000AC244B443C010800AC224B483C0108005F +:10075000AC234ADC3C010800AC204AE83C0108001C +:10076000AC204AEC3C010800AC204AF03C010800F7 +:10077000AC204AF43C010800AC204AF83C010800D7 +:10078000AC204AFC3C010800AC204B003C010800B6 +:10079000AC244B043C010800AC204B083C01080091 +:1007A000AC204B0C3C010800AC204B103C01080075 +:1007B000AC204B143C010800AC204B183C01080055 +:1007C000AC264B1C3C010800AC264B203C01080029 +:1007D000AC254B303C010800AC234B380E000623FF +:1007E000000000003C028000344200708C42000097 +:1007F000AF8200143C0308008C6300208F82000449 +:10080000104300043C0280000E00045BAF83000430 +:100810003C028000344600703C0308008C6300A05A +:100820003C0208008C4200A4104300048F84001492 +:100830003C010800AC2300A4A743009E8CCA000022 +:100840003C0308008C6300BC3C0208008C4200B8EA +:100850000144202300641821000040210064202B63 +:1008600000481021004410213C010800AC2300BCCA +:100870003C010800AC2200B88F5100003222000772 +:100880001040FFDCAF8A00148CC600003C05080055 +:100890008CA500BC3C0408008C8400B800CA30233E +:1008A00000A628210000102100A6302B0082202164 +:1008B00000862021322700013C010800AC2500BC45 +:1008C0003C010800AC2400B810E0001F32220002F6 +:1008D0008F420100AF4200208F420104AF4200A8C6 +:1008E0009342010B0E0000C6305000FF2E02001E86 +:1008F00054400004001010800E0000C90A000213CA +:1009000000000000005210218C4200000040F80955 +:1009100000000000104000053C0240008F4301042D +:100920003C026020AC4300143C024000AF4201385E +:100930003C0208008C420034244200013C010800C3 +:10094000AC220034322200021040000E3222000499 +:100950008F4201400E0000C6AF4200200E000295FB +:10096000000000003C024000AF4201783C02080059 +:100970008C420038244200013C010800AC220038BF +:10098000322200041040FF983C0280008F42018018 +:100990000E0000C6AF4200208F43018024020F00EA +:1009A00014620005000000008F420188A742009CED +:1009B0000A0002483C0240009362000024030050F9 +:1009C000304200FF144300083C0240000E00027B4E +:1009D00000000000544000043C0240000E000D7571 +:1009E000000000003C024000AF4201B83C02080099 +:1009F0008C42003C244200013C010800AC22003C37 +:100A00000A0001C83C0280003C0290003442000110 +:100A100000822025AF4400208F4200200440FFFECA +:100A20000000000003E00008000000003C0280001D +:100A3000344200010082202503E00008AF4400207A +:100A400027BDFFE0AFB10014AFB0001000808821D7 +:100A5000AFBF00180E00025030B000FF9362007D5F +:100A60000220202102028025A370007D8F70007477 +:100A70003C0280000E000259020280241600000988 +:100A80008FBF00188F4201F80440FFFE24020002CD +:100A9000AF5101C0A34201C43C021000AF4201F8B3 +:100AA0008FBF00188FB100148FB0001003E0000852 +:100AB00027BD002027BDFFE8AFBF0010974201848B +:100AC0008F440188304202001040000500002821B8 +:100AD0000E000FAA000000000A00028D240500018C +:100AE0003C02FF0004800005008218243C02040040 +:100AF000506200019362003E240500018FBF001088 +:100B000000A0102103E0000827BD0018A360002208 +:100B10008F4401400A00025E2405000127BDFFE862 +:100B2000AFBF0014AFB0001093620000304400FF6C +:100B300038830020388200300003182B0002102B6D +:100B40000062182410600003240200501482008008 +:100B50008FBF001493620005304200011040007CFA +:100B60008FBF0014934201482443FFFF2C6200050D +:100B7000104000788FB00010000310803C03080084 +:100B800024634A68004310218C42000000400008A2 +:100B9000000000000E0002508F4401408F70000CD6 +:100BA0008F4201441602000224020001AF62000CD1 +:100BB0000E0002598F4401408F420144145000043A +:100BC0008FBF00148FB000100A000F2027BD00183F +:100BD0008F62000C0A0003040000000097620010FE +:100BE0008F4301443042FFFF1462001A00000000EE +:100BF00024020001A76200108F4202380443001053 +:100C00008F4201403C02003F3446F0003C0560004A +:100C10003C04FFC08CA22BBC0044182400461024C6 +:100C20000002130200031D82106200390000000060 +:100C30008F4202380440FFF7000000008F4201405D +:100C4000AF4202003C021000AF4202380A00032209 +:100C50008FBF0014976200100A0003040000000018 +:100C60000E0002508F440140976200128F430144EE +:100C70003050FFFF1603000224020001A762001299 +:100C80000E0002598F4401408F42014416020004B5 +:100C90008FBF00148FB000100A00029127BD00180A +:100CA000976200120A00030400000000976200141B +:100CB0008F4301443042FFFF14620006240200010A +:100CC0008FBF00148FB00010A76200140A00124AF0 +:100CD00027BD0018976200141440001D8FBF001438 +:100CE0000A00031C00000000976200168F430144B5 +:100CF0003042FFFF1462000B240200018FBF00147A +:100D00008FB00010A76200160A000B1227BD001852 +:100D10009742007824420004A76200100A000322D0 +:100D20008FBF001497620016240300013042FFFFBA +:100D3000144300078FBF00143C0208008C4200706F +:100D4000244200013C010800AC2200708FBF001457 +:100D50008FB0001003E0000827BD001827BDFFE892 +:100D6000AFBF0014AFB000108F50010093620000BD +:100D700093430109304400FF2402001F106200A5C4 +:100D80002862002010400018240200382862000A5F +:100D90001040000C2402000B286200081040002CB8 +:100DA00000000000046000E52862000214400028F2 +:100DB00024020006106200268FBF00140A00041FE0 +:100DC0008FB000101062005E2862000B144000DC3F +:100DD0008FBF00142402000E106200738FB0001049 +:100DE0000A00041F00000000106200C028620039E1 +:100DF0001040000A2402008024020036106200CA5B +:100E000028620037104000B424020035106200C18F +:100E10008FBF00140A00041F8FB000101062002B57 +:100E20002862008110400006240200C82402003914 +:100E3000106200B48FBF00140A00041F8FB00010AE +:100E4000106200998FBF00140A00041F8FB00010B9 +:100E50003C0208008C420020104000B98FBF0014F3 +:100E60000E000493000000008F4201008F830020D9 +:100E70009745010C97460108AC6200008F420104BF +:100E80003C04080094844B5E00052C00AC62000416 +:100E90008F4201180006340000C43025AC620008FF +:100EA0008F42011C24040001AC62000C9342010A31 +:100EB00000A22825AC650010AC600014AC600018DE +:100EC000AC66001C0A0003F58FBF00143C0208004A +:100ED0008C4200201040009A8FBF00140E00049333 +:100EE00000000000974401083C03080094634B5E37 +:100EF0009745010C000422029746010E8F820020C4 +:100F0000000426000083202500052C003C030080FF +:100F100000A6282500832025AC400000AC4000043A +:100F2000AC400008AC40000CAC450010AC400014D4 +:100F3000AC400018AC44001C0A0003F42404000177 +:100F40009742010C14400015000000009362000558 +:100F50003042001014400011000000000E0002504A +:100F6000020020219362000502002021344200107B +:100F70000E000259A36200059362000024030020C2 +:100F8000304200FF1043006D020020218FBF00148B +:100F90008FB000100A000FC027BD00180000000D20 +:100FA0000A00041E8FBF00143C0208008C4200207F +:100FB000104000638FBF00140E0004930000000077 +:100FC0008F4201048F8300209744010C3C050800E8 +:100FD00094A54B5EAC6200009762002C00042400D4 +:100FE0003042FFFF008220253C02400E00A228254F +:100FF000AC640004AC600008AC60000CAC60001095 +:10100000AC600014AC600018AC65001C0A0003F46E +:10101000240400010E00025002002021A7600008F5 +:101020000E00025902002021020020210E00025E63 +:10103000240500013C0208008C42002010400040C2 +:101040008FBF00140E000493000000009742010CB3 +:101050008F8300203C05080094A54B5E000214001D +:10106000AC700000AC620004AC6000088F64004CFF +:101070003C02401F00A22825AC64000C8F62005087 +:1010800024040001AC6200108F620054AC620014B2 +:10109000AC600018AC65001C8FBF00148FB000104E +:1010A0000A0004B827BD0018240200205082002541 +:1010B0008FB000100E000F0A020020211040002007 +:1010C0008FBF0014020020218FB0001000002821E3 +:1010D0000A00025E27BD0018020020218FBF001405 +:1010E0008FB000100A00058027BD00189745010C3D +:1010F000020020218FBF00148FB000100A0005A04D +:1011000027BD0018020020218FB000100A0005C57D +:1011100027BD00189345010D020020218FB000105B +:101120000A00060F27BD0018020020218FBF0014FF +:101130008FB000100A0005EB27BD00188FBF001408 +:101140008FB0001003E0000827BD00188F4202781E +:101150000440FFFE2402000234840080AF440240B9 +:10116000A34202443C02100003E00008AF420278B0 +:101170003C04080094844B6A3C0208008C424B7487 +:101180003083FFFF000318C000431021AF42003C32 +:101190003C0208008C424B70AF4200383C020050C9 +:1011A00034420008AF4200300000000000000000A0 +:1011B000000000008F420000304200201040FFFD80 +:1011C000000000008F4204003C010800AC224B608C +:1011D0008F4204043C010800AC224B643C02002016 +:1011E000AF420030000000003C02080094424B680F +:1011F0003C03080094634B6C3C05080094A54B6EBF +:1012000024840001004310213083FFFF3C010800CB +:10121000A4224B683C010800A4244B6A1465000317 +:10122000000000003C010800A4204B6A03E0000815 +:10123000000000003C05000A27BDFFE80345282107 +:101240003C04080024844B50AFBF00100E00051D65 +:101250002406000A3C02080094424B523C0308005A +:1012600094634B6E3042000F244200030043180485 +:1012700024027FFF0043102B10400002AF83001CAC +:101280000000000D0E00042A000000003C020800CF +:1012900094424B5A8FBF001027BD001803E000088E +:1012A000A74200A23C02000A034210219443000618 +:1012B0003C02080094424B5A3C010800A4234B56C0 +:1012C000004310238F83001C00021400000214034B +:1012D0000043102B03E000083842000127BDFFE85F +:1012E000AFBF00103C02000A0342102194420006E6 +:1012F0003C010800A4224B560E00047700000000B9 +:101300005440FFF93C02000A8FBF001003E00008C0 +:1013100027BD001827BDFFE8AFBF00100E000477FF +:101320000000000010400003000000000E000485D3 +:10133000000000003C0208008C424B608FBF001090 +:1013400027430400AF4200383C0208008C424B6443 +:1013500027BD0018AF830020AF42003C3C020005CF +:10136000AF42003003E00008AF8000188F82001801 +:101370003C0300060002114000431025AF4200303C +:101380000000000000000000000000008F4200008C +:10139000304200101040FFFD27420400AF820020C1 +:1013A00003E00008AF8000183C0608008CC64B64C0 +:1013B0008F8500188F8300203C02080094424B5A0E +:1013C00027BDFFE024A50001246300202442000182 +:1013D00024C70020AFB10014AFB00010AFBF001899 +:1013E000AF850018AF8300203C010800A4224B5AAF +:1013F000309000FF3C010800AC274B6404C100089A +:101400000000882104E00006000000003C02080003 +:101410008C424B60244200013C010800AC224B602E +:101420003C02080094424B5A3C03080094634B680A +:101430000010202B004310262C42000100441025F0 +:10144000144000048F830018240200101462000F5F +:10145000000000000E0004A9241100013C03080054 +:1014600094634B5A3C02080094424B681462000398 +:10147000000000000E00042A000000001600000317 +:10148000000000000E000493000000003C03080070 +:1014900094634B5E3C02080094424B5C2463000161 +:1014A0003064FFFF3C010800A4234B5E148200035C +:1014B000000000003C010800A4204B5E1200000662 +:1014C000000000003C02080094424B5AA74200A2D0 +:1014D0000A00050B022010210E0004770000000016 +:1014E00010400004022010210E00048500000000BE +:1014F000022010218FBF00188FB100148FB0001090 +:1015000003E0000827BD00203084FFFF30A5FFFF67 +:101510000000182110800007000000003082000148 +:101520001040000200042042006518210A00051343 +:101530000005284003E000080060102110C00006EC +:1015400024C6FFFF8CA2000024A50004AC8200008A +:101550000A00051D2484000403E0000800000000C8 +:1015600010A0000824A3FFFFAC86000000000000CC +:10157000000000002402FFFF2463FFFF1462FFFA53 +:101580002484000403E0000800000000240200019D +:10159000AF62000CA7620010A7620012A7620014DD +:1015A00003E00008A76200163082007F034210218A +:1015B0003C08000E004818213C0208008C42002024 +:1015C00027BDFFD82407FF80AFB3001CAFB20018BF +:1015D000AFB10014AFB00010AFBF00200080802179 +:1015E00030B100FF0087202430D200FF1040002FD0 +:1015F00000009821AF44002C9062000024030050AA +:10160000304200FF1443000E000000003C020800BE +:101610008C4200E00202102100471024AF42002C4F +:101620003C0208008C4200E0020210213042007FA0 +:101630000342102100481021944200D43053FFFF90 +:101640000E000493000000003C02080094424B5E30 +:101650008F8300200011340000C2302500122C00BE +:101660003C02400000C2302534A50001AC700000EF +:101670008FBF0020AC6000048FB20018AC7300086C +:101680008FB10014AC60000C8FB3001CAC6500106F +:101690008FB00010AC60001424040001AC6000188E +:1016A00027BD00280A0004B8AC66001C8FBF0020CC +:1016B0008FB3001C8FB200188FB100148FB00010D0 +:1016C00003E0000827BD00289343010F2402001007 +:1016D0001062000E2865001110A0000724020012FD +:1016E000240200082405003A1062000600003021A0 +:1016F00003E0000800000000240500351462FFFC30 +:10170000000030210A000538000000008F420074FC +:1017100024420FA003E00008AF62000C27BDFFE8E1 +:10172000AFBF00100E00025E240500018FBF001045 +:1017300024020001A762001227BD00182402000144 +:1017400003E00008A360002227BDFFE0AFB1001452 +:10175000AFB00010AFBF001830B1FFFF0E00025055 +:10176000008080219362003F24030004304200FF88 +:101770001443000C02002021122000082402000A59 +:101780000E00053100000000936200052403FFFEF7 +:1017900000431024A362000524020012A362003F4C +:1017A000020020210E000259A360008116200003D0 +:1017B000020020210E0005950000000002002021FB +:1017C000322600FF8FBF00188FB100148FB00010B9 +:1017D000240500380A00053827BD002027BDFFE09A +:1017E000AFBF001CAFB20018AFB10014AFB0001013 +:1017F0000E000250008080210E0005310000000024 +:101800009362003F24120018305100FF123200038F +:101810000200202124020012A362003F936200050F +:101820002403FFFE004310240E000259A3620005AA +:10183000020020212405002016320007000030217C +:101840008FBF001C8FB200188FB100148FB0001032 +:101850000A00025E27BD00208FBF001C8FB2001857 +:101860008FB100148FB00010240500390A0005382C +:1018700027BD002027BDFFE8AFB00010AFBF0014A8 +:101880009742010C2405003600808021144000108E +:10189000304600FF0E00025000000000240200123B +:1018A000A362003F93620005344200100E00053130 +:1018B000A36200050E00025902002021020020212F +:1018C0000E00025E240500200A000604000000004D +:1018D0000E000538000000000E000250020020211A +:1018E000936200232403FF9F020020210043102461 +:1018F0008FBF00148FB00010A36200230A000259AA +:1019000027BD001827BDFFE0AFBF0018AFB100141E +:10191000AFB0001030B100FF0E00025000808021F7 +:10192000240200120E000531A362003F0E0002598E +:101930000200202102002021022030218FBF001848 +:101940008FB100148FB00010240500350A0005384F +:1019500027BD0020A380002C03E00008A380002DF9 +:101960008F4202780440FFFE8F820034AF42024073 +:1019700024020002A34202443C02100003E00008DB +:10198000AF4202783C0360008C6254003042000891 +:101990001440FFFD000000008C625408AF82000C70 +:1019A00024020052AC605408AC645430AC6254342D +:1019B0002402000803E00008AC6254003C0260000E +:1019C0008C42540030420008104000053C03600087 +:1019D0008C625400304200081440FFFD00000000FB +:1019E0008F83000C3C02600003E00008AC43540805 +:1019F00090A3000024020005008040213063003FD6 +:101A000000004821146200050000502190A2001C33 +:101A100094A3001E304900FF306AFFFFAD00000CA8 +:101A2000AD000010AD000024950200148D05001CCF +:101A30008D0400183042FFFF0049102300021100FE +:101A4000000237C3004038210086202300A2102B5B +:101A50000082202300A72823AD05001CAD04001838 +:101A6000A5090014A5090020A50A001603E0000836 +:101A7000A50A00228F4201F80440FFFE2402000262 +:101A8000AF4401C0A34201C43C02100003E00008BF +:101A9000AF4201F83C0208008C4200B427BDFFE8C9 +:101AA000AFBF001424420001AFB000103C01080099 +:101AB000AC2200B48F4300243C02001F30AA00FF78 +:101AC0003442FF8030D800FF006280240080F8217B +:101AD00030EF00FF1158003B01405821240CFF80DB +:101AE0003C19000A3163007F000310C00003194055 +:101AF000006218213C0208008C4200DC25680001CD +:101B0000310D007F03E21021004310213043007F9C +:101B100003431821004C102400794821AF420024CF +:101B20008D220024016C1824006C7026AD22000C5C +:101B30008D220024310800FFAD22001095220014F0 +:101B4000952300208D27001C3042FFFF3063FFFFEC +:101B50008D2600180043102300021100000227C345 +:101B60000040282100C4302300E2102B00C23023A3 +:101B700000E53823AD27001CAD2600189522002073 +:101B8000A522001495220022154B000AA52200165A +:101B90008D2300248D220008254600013145008058 +:101BA0001462000430C4007F108F000238AA008045 +:101BB00000C0502151AF000131C800FF1518FFC906 +:101BC000010058218F8400343082007F03421821A5 +:101BD0003C02000A006218212402FF8000822024B7 +:101BE000AF440024A06A0079A06A00838C62005090 +:101BF0008F840034AC6200708C6500743C027FFFFF +:101C00003442FFFF00A228240E00066BAC6500746E +:101C1000AF5000248FBF00148FB0001003E0000805 +:101C200027BD001827BDFFC0AFBE0038AFB70034D6 +:101C3000AFB5002CAFB20020AFB1001CAFB00018A0 +:101C4000AFBF003CAFB60030AFB40028AFB3002444 +:101C50008F4500248F4600288F43002C3C02001F34 +:101C60003442FF800062182400C230240080A82182 +:101C7000AFA3001400A2F0240E00062FAFA60010A0 +:101C80003C0208008C4200E02410FF8003608821A1 +:101C900002A2102100501024AF4200243C02080090 +:101CA0008C4200E002A210213042007F0342182142 +:101CB0003C02000A00629021924200D293630084A9 +:101CC000305700FF306300FF24020001106200342F +:101CD000036020212402000214620036000000008C +:101CE0000E001216024028219223008392220083C4 +:101CF0003063007F3042007F000210C000031940B3 +:101D0000006218213C0208008C4200DC02A2102173 +:101D10000043382100F01024AF42002892250078BB +:101D20009224008330E2007F034218213C02000C21 +:101D300014850007006280212402FFFFA24200F107 +:101D40002402FFFFA64200F20A0007272402FFFF39 +:101D500096020020A24200F196020022A64200F262 +:101D60008E020024AE4200F492220083A24200F0D0 +:101D70008E4200C8AE4200FC8E4200C4AE4200F863 +:101D80008E220050AE4201008E4200CCAE420104D1 +:101D9000922200853042003F0A0007823442004010 +:101DA0000E00123902402821922200850A00078283 +:101DB0003042003F936200852403FFDF3042003F42 +:101DC000A36200859362008500431024A36200850E +:101DD0009363008393620078307400FF304200FF09 +:101DE00010540036240AFF803C0C000C3283007F24 +:101DF000000310C000031940006218213C020800D3 +:101E00008C4200DC268800013109007F02A21021EB +:101E10000043382130E2007F0342182100EA1024F9 +:101E2000AF420028006C80218E020024028A182410 +:101E3000006A5826AE02000C8E020024310800FF12 +:101E4000AE02001096020014960300208E07001CBC +:101E50003042FFFF3063FFFF8E060018004310235F +:101E600000021100000227C30040282100C43023D3 +:101E700000E2102B00C2302300E53823AE07001C1F +:101E8000AE06001896020020A60200149602002258 +:101E9000A602001692220079304200FF105400077B +:101EA0000000000051370001316800FF92220078E5 +:101EB000304200FF1448FFCD0100A0219222008390 +:101EC000A22200798E2200500A0007E2AE220070A2 +:101ED000A22200858E22004C2405FF80AE42010C18 +:101EE0009222008534420020A2220085924200D135 +:101EF0003C0308008C6300DC305400FF3C02080007 +:101F00008C4200E400143140001420C002A31821C8 +:101F100000C4202102A210210064382100461021B3 +:101F20000045182400E52824AF450028AF43002CC5 +:101F30003042007F924400D030E3007F03422821EA +:101F4000034318213C02000C006280213C02000E79 +:101F5000309600FF00A298211296002A000000008F +:101F60008E02000C02002021026028211040002572 +:101F7000261000280E00064A000000009262000DA4 +:101F800026830001307400FF3042007FA262000D02 +:101F90002404FF801697FFF0267300203C020800FF +:101FA0008C4200DC0000A02102A210210044102479 +:101FB000AF4200283C0208008C4200E43C030800C9 +:101FC0008C6300DC02A2102100441024AF42002CDC +:101FD0003C0208008C4200E402A318213063007F19 +:101FE00002A210213042007F034220210343182126 +:101FF0003C02000C006280213C02000E0A0007A493 +:10200000008298218E4200D8AE2200508E4200D825 +:10201000AE22007092250083924600D19223008365 +:10202000924400D12402FF8000A228243063007F64 +:10203000308400FF00A628250064182A10600002E2 +:1020400030A500FF38A50080A2250083A2250079D5 +:102050000E00063D000000009222007E02A020211A +:10206000A222007A8E2300743C027FFF3442FFFFDD +:10207000006218240E00066BAE2300748FA20010BD +:10208000AF5E00248FBF003CAF4200288FBE0038F7 +:102090008FA200148FB700348FB600308FB5002C9C +:1020A0008FB400288FB300248FB200208FB1001CA2 +:1020B0008FB0001827BD004003E00008AF42002C9D +:1020C00090A2000024420001A0A200003C030800EE +:1020D0008C6300F4304200FF1443000F0080302175 +:1020E000A0A000003C0208008C4200E48F84003471 +:1020F000008220213082007F034218213C02000C24 +:10210000006218212402FF8000822024ACC300005A +:1021100003E00008AF4400288C8200002442002025 +:1021200003E00008AC82000094C200003C080800F4 +:10213000950800CA30E7FFFF008048210102102106 +:10214000A4C2000094C200003042FFFF00E2102B46 +:1021500054400001A4C7000094A200003C03080002 +:102160008C6300CC24420001A4A2000094A20000D1 +:102170003042FFFF544300078F8600280107102BD1 +:10218000A4A000005440000101003821A4C70000B1 +:102190008F8600288CC4001CAF44003C94A2000031 +:1021A0008F43003C3042FFFF000210C00062182144 +:1021B000AF43003C8F42003C008220231880000483 +:1021C000000000008CC200180A00084324420001ED +:1021D0008CC20018AF4200383C020050344200105C +:1021E000AF420030000000000000000000000000CE +:1021F0008F420000304200201040FFFD0000000030 +:102200008F420404AD2200048F420400AD2200007E +:102210003C020020AF42003003E000080000000054 +:1022200027BDFFE0AFB20018AFB10014AFB000108F +:10223000AFBF001C94C2000000C080213C12080007 +:10224000965200C624420001A60200009603000038 +:1022500094E2000000E03021144300058FB100300B +:102260000E000818024038210A000875000000001E +:102270008C8300048C820004244200400461000727 +:10228000AC8200048C8200040440000400000000C2 +:102290008C82000024420001AC8200009602000003 +:1022A0003042FFFF50520001A600000096220000BD +:1022B00024420001A62200008F82002896230000FD +:1022C00094420016144300048FBF001C2402000136 +:1022D000A62200008FBF001C8FB200188FB100141F +:1022E0008FB0001003E0000827BD00208F89002870 +:1022F00027BDFFE0AFBF00188D220028274804004B +:1023000030E700FFAF4200388D22002CAF8800304C +:10231000AF42003C3C020005AF420030000000002C +:1023200000000000000000000000000000000000AD +:10233000000000008C82000C8C82000CAD020000BA +:102340008C820010AD0200048C820018AD020008DF +:102350008C82001CAD02000C8CA20014AD02001097 +:102360008C820020AD02001490820005304200FFF4 +:1023700000021200AD0200188CA20018AD02001C71 +:102380008CA2000CAD0200208CA20010AD02002433 +:102390008CA2001CAD0200288CA20020AD02002CF3 +:1023A000AD060030AD000034978300263402FFFFF5 +:1023B00014620002006020213404FFFF10E00011CD +:1023C000AD04003895230036952400362402000120 +:1023D0003063FFFF000318C20069182190650040B8 +:1023E000308400070082100400451025A0620040E0 +:1023F0008F820028944200563042FFFF0A0008DC1A +:10240000AD02003C952300369524003624020001DD +:102410003063FFFF000318C2006918219065004077 +:1024200030840007008210040002102700451024A9 +:10243000A0620040AD00003C000000000000000071 +:10244000000000003C02000634420040AF42003071 +:102450000000000000000000000000008F420000AB +:10246000304200101040FFFD8F860028AF880030FA +:1024700024C2005624C7003C24C4002824C50032CE +:1024800024C600360E000856AFA200108FBF0018F9 +:1024900003E0000827BD00208F8300243C060800CD +:1024A0008CC600E88F82003430633FFF0003198040 +:1024B00000461021004310212403FF803046007F96 +:1024C00000431024AF420028034618213C02000CB0 +:1024D0000062302190C2000D30A500FF00003821BD +:1024E00034420010A0C2000D8F8900288F8A00247A +:1024F00095230036000A13823048000324020001AD +:10250000A4C3000E1102000B2902000210400005B6 +:10251000240200021100000C240300010A0009201B +:102520000000182111020006000000000A00092026 +:10253000000018218CC2002C0A000920244300014D +:102540008CC20014244300018CC200180043102BDD +:1025500050400009240700012402002714A20003B0 +:10256000000000000A00092C240700019522003E0B +:1025700024420001A522003E000A138230430003DA +:102580002C62000210400009008028211460000421 +:102590000000000094C200360A00093C3046FFFFEC +:1025A0008CC600380A00093C008028210000302138 +:1025B0003C04080024844B780A00088900000000CD +:1025C000274901008D22000C9523000601202021BF +:1025D000000216023046003F3063FFFF240200274E +:1025E00000C0282128C7002810C2000EAF83002495 +:1025F00010E00008240200312402002110C200096A +:102600002402002510C200079382002D0A00095BF6 +:102610000000000010C200059382002D0A00095B33 +:10262000000000000A0008F4000000000A0006266E +:102630000000000095230006912400058D25000C64 +:102640008D2600108D2700188D28001C8D29002054 +:10265000244200013C010800A4234B7E3C010800F9 +:10266000A0244B7D3C010800AC254B843C010800B4 +:10267000AC264B883C010800AC274B903C0108007D +:10268000AC284B943C010800AC294B9803E00008AF +:10269000A382002D8F87002827BDFFC0AFB3003471 +:1026A000AFB20030AFB1002CAFB00028AFBF0038E0 +:1026B0003C0208008C4200D094E3003030B0FFFFB1 +:1026C000005010073045FFFF3063FFFF00C0982126 +:1026D000A7A200103C110800963100C614A3000602 +:1026E0003092FFFF8CE2002424420030AF42003CD5 +:1026F0000A0009948CE2002094E200323042FFFF8D +:1027000054A2000827A400188CE2002C24420030B8 +:10271000AF42003C8CE20028AF4200380A0009A218 +:102720008F84002827A5001027A60020022038212A +:102730000E000818A7A000208FA200182442003025 +:10274000AF4200388FA2001CAF42003C8F840028AB +:102750003C020005AF42003094820034274304005D +:102760003042FFFF0202102B14400007AF830030FD +:1027700094820054948300340202102100431023F9 +:102780000A0009B63043FFFF94830054948200345A +:102790000223182100501023006218233063FFFF2A +:1027A000948200163042FFFF144300030000000033 +:1027B0000A0009C424030001948200163042FFFF7E +:1027C0000043102B104000058F82003094820016C9 +:1027D000006210233043FFFF8F820030AC530000B3 +:1027E000AC400004AC520008AC43000C3C020006B4 +:1027F00034420010AF420030000000000000000032 +:10280000000000008F420000304200101040FFFD29 +:10281000001018C2006418219065004032040007BF +:10282000240200018FBF00388FB300348FB2003014 +:102830008FB1002C8FB000280082100400451025B5 +:1028400027BD004003E00008A062004027BDFFA8AC +:10285000AFB60050AFB5004CAFB40048AFB30044C2 +:10286000AFB1003CAFBF0054AFB20040AFB00038D2 +:102870008C9000003C0208008C4200E88F860034F7 +:10288000960300022413FF8000C2302130633FFF13 +:102890000003198000C3382100F3102490B2000017 +:1028A000AF42002C9203000230E2007F034230214D +:1028B0003C02000E00C28821306300C024020040A8 +:1028C0000080A82100A0B021146200260000A021F1 +:1028D0008E3400388E2200181440000224020001B9 +:1028E000AE2200189202000D304200201440001564 +:1028F0008F8200343C0308008C6300DC001238C077 +:10290000001231400043102100C730210046382119 +:1029100030E300073C02008030E6007800C230253A +:102920000343182100F31024AF4208002463090078 +:10293000AF4608108E2200188C6300080043102157 +:10294000AE2200188E22002C8E2300182442000193 +:102950000062182B1060003D000000000A000A7899 +:1029600000000000920300022402FFC00043102474 +:10297000304200FF1440000524020001AE2200187E +:10298000962200360A000A613054FFFF8E2200149E +:1029900024420001AE22001892020000000216003C +:1029A0000002160304410029000000009602000204 +:1029B00027A4001000802821A7A20016960200027A +:1029C00024070001000030213042FFFFAF820024C5 +:1029D0000E000889AFA0001C960300023C0408000A +:1029E0008C8400E88F82003430633FFF000319803D +:1029F00000441021004310213043007F3C05000CAF +:102A00000053102403431821AF4200280065182109 +:102A10009062000D001221403042007FA062000D44 +:102A20003C0308008C6300E48F82003400431021D3 +:102A30000044382130E2007F03421021004510217C +:102A400000F31824AF430028AEA200009222000D2C +:102A5000304200101040001302A020218F83002874 +:102A60008EA40000028030219462003E2442FFFFC9 +:102A7000A462003E948400029625000E3084FFFF7D +:102A80000E00097330A5FFFF8F82002894430034A5 +:102A90009622000E1443000302A02021240200010C +:102AA000A382002C02C028210E0007FE00000000B7 +:102AB0008FBF00548FB600508FB5004C8FB40048C4 +:102AC0008FB300448FB200408FB1003C8FB000380C +:102AD00003E0000827BD00588F82002827BDFFD0E3 +:102AE000AFB40028AFB20020AFBF002CAFB30024BA +:102AF000AFB1001CAFB00018904400D0904300D19B +:102B00000000A021309200FFA3A30010306300FF5B +:102B10008C5100D88C5300DC1072002B2402000171 +:102B20003C0308008C6300E493A400108F820034FF +:102B30002406FF800004214000431021004410219E +:102B40003043007F00461024AF4200280343182181 +:102B50003C02000C006218218C62000427A40014BF +:102B600027A50010022280210270102304400015C6 +:102B7000AFA300149062000D00C21024304200FF89 +:102B800014400007020088219062000D344200408A +:102B90000E0007FEA062000D0A000ABD93A20010FD +:102BA0000E0009E1241400018F830028AC7000D8C6 +:102BB00093A20010A06200D193A200101452FFD87B +:102BC0000000000024020001168200048FBF002CC8 +:102BD0000E000626000000008FBF002C8FB40028D6 +:102BE0008FB300248FB200208FB1001C8FB000186B +:102BF00003E0000827BD003027BDFFD8AFB3001C9D +:102C0000AFB20018AFB10014AFB00010AFBF0020DA +:102C10000080982100E0802130B1FFFF0E00049376 +:102C200030D200FF000000000000000000000000A3 +:102C30008F820020AC510000AC520004AC5300085D +:102C4000AC40000CAC400010AC400014AC4000188C +:102C50003C03080094634B5E02038025AC50001CCB +:102C6000000000000000000000000000240400013B +:102C70008FBF00208FB3001C8FB200188FB10014DB +:102C80008FB000100A0004B827BD002827BDFFE858 +:102C9000AFB00010AFBF001430A5FFFF30C600FF7B +:102CA0000080802124020C80AF420024000000003C +:102CB0000000000000000000000000000000000014 +:102CC0000E000ACC000000003C040800248400E050 +:102CD0008C8200002403FF808FBF001402021021A9 +:102CE00000431024AF4200248C8200003C03000A01 +:102CF000020280213210007F035010218FB000109B +:102D00000043102127BD001803E00008AF8200280F +:102D100027BDFFE8AFBF00108F4401403C0308000F +:102D20008C6300E02402FF80AF840034008318210C +:102D300000621024AF4200243C02000803424021FC +:102D4000950500023063007F3C02000A034318210E +:102D50000062182130A5FFFF3402FFFF0000302180 +:102D60003C07602010A20006AF8300282402FFFF6A +:102D7000A5020002946500D40E000AF130A5FFFF01 +:102D80008FBF001024020C8027BD001803E000084C +:102D9000AF4200243C020008034240219502000299 +:102DA0003C0A0800954A00C63046FFFF14C00007E1 +:102DB0003402FFFF8F8200288F8400343C0760209C +:102DC000944500D40A000B5A30A5FFFF10C200241E +:102DD0008F87002894E2005494E400163045FFFFEA +:102DE00000A6102300A6182B3089FFFF10600004F6 +:102DF0003044FFFF00C51023012210233044FFFFA1 +:102E0000008A102B1040000C012A1023240200011C +:102E1000A50200162402FFFFA502000294E500D4DB +:102E20008F8400340000302130A5FFFF3C07602074 +:102E30000A000AF1000000000044102A10400008B7 +:102E4000000000009502001630420001104000040E +:102E5000000000009742007E24420014A5020016E4 +:102E600003E00008000000008F84002827BDFFE079 +:102E7000AFBF0018948200349483003E1060001AA3 +:102E80003048FFFF9383002C2402000114620027C6 +:102E90008FBF00188F820028000818C23108000771 +:102EA000006218212447003A244900542444002099 +:102EB000244500302446003490620040304200FF38 +:102EC0000102100730420001104000168FBF0018A9 +:102ED0000E000856AFA900108F82002894420034DB +:102EE0000A000B733048FFFF94830036948200344D +:102EF0001043000E8FBF001894820036A482003465 +:102F000094820056A48200548C82002CAC8200244F +:102F100094820032A48200309482003CA482003A61 +:102F20008FBF00180A000B3327BD002003E0000804 +:102F300027BD002027BDFFE8AFBF00108F4A01006A +:102F40003C0508008CA500E03C02080090424B8440 +:102F50003C0C0800958C4B7E01452821304B003FEE +:102F600030A2007F03424021396900323C02000A4E +:102F70003963003F2C630001010240212D2900012B +:102F80002402FF8000A2282401234825AF8A0034B0 +:102F900000801821AF450024000030210080282146 +:102FA00024070001AF8800283C04080024844B78E3 +:102FB000AF8C002415200007A380002D24020020E0 +:102FC0005562000F006020213402FFFF5582000C83 +:102FD000006020212402002015620005000000008E +:102FE0008C6300142402FFFF106200070000000041 +:102FF0000E000889000000000A000BD0000000004D +:103000000E0008F4016028210E000B68000000008B +:103010008FBF001024020C8027BD001803E00008B9 +:10302000AF4200243C0208008C4200E027BDFFA014 +:10303000AFB1003C008210212411FF80AFBE0058C8 +:10304000AFB70054AFB20040AFB00038AFBF005CC4 +:10305000AFB60050AFB5004CAFB40048AFB30044BA +:10306000005110248F4800248F4900288F470028E2 +:10307000AF4200243C0208008C4200E00080902116 +:1030800024060006008210213042007F03421821EE +:103090003C02000A006280213C02001F3442FF8093 +:1030A00000E2382427A40010260500F00122F024B5 +:1030B0000102B8240E00051DAFA700308FA2001832 +:1030C000AE0200C48FA2001CAE0200C88FA2002472 +:1030D000AE0200CC93A40010920300D12402FF8022 +:1030E0000082102400431025304900FF3083007F08 +:1030F0003122007F0062102A10400004000310C03B +:1031000001311026304900FF000310C000031940B0 +:10311000006218213C0208008C4200DC920400D2BC +:10312000024210210043102100511024AF42002818 +:1031300093A300103063007F000310C00003194008 +:10314000006218213C0208008C4200DC024210217F +:10315000004310213042007F034218213C02000C42 +:10316000006240218FA300142402FFFF1062003090 +:10317000309500FF93A2001195030014304400FF26 +:103180003063FFFF0064182B1060000D000000008A +:10319000950400148D07001C8D0600183084FFFF75 +:1031A00000442023000421000000102100E4382105 +:1031B00000E4202B00C230210A000C4A00C4302158 +:1031C000950400148D07001C8D0600183084FFFF45 +:1031D000008220230004210000001021008018211B +:1031E00000C2302300E4202B00C4302300E3382346 +:1031F000AD07001CAD06001893A20011A502001433 +:1032000097A20012A50200168FA20014AD020010B2 +:103210008FA20014AD02000C93A20011A5020020A1 +:1032200097A20012A50200228FA20014AD02002472 +:103230002406FF80024610243256007FAF4200244D +:10324000035618213C02000A006280218E02004CC5 +:103250008FA200203124007F000428C0AE0200505D +:103260008FA200200004214000852821AE020070BA +:1032700093A2001001208821A202008393A20010D3 +:10328000A2020079920200853042003FA20200852E +:103290003C0208008C4200DC024210210045102153 +:1032A00000461024AF42002C3C0208008C4200E48F +:1032B0003C0308008C6300DC024210210044102112 +:1032C00000461024AF4200283C0208008C4200E473 +:1032D00002431821006518210242102100441021E8 +:1032E0003042007F3063007F93A50010034220210D +:1032F000034318213C02000E006240213C02000CF6 +:1033000010B1008C008248213233007F1660001912 +:103310002404FF803C0208008C4200DC02421021A1 +:1033200000441024AF42002C3C0208008C4200E410 +:103330003C0308008C6300DC02421021004410248E +:10334000AF4200283C0208008C4200E402431821EE +:103350003063007F024210213042007F034220216F +:10336000034318213C02000E006240213C02000C85 +:10337000008248219124000D2414FF8000001021B8 +:1033800000942025A124000D950400029505001449 +:103390008D07001C3084FFFF30A5FFFF8D0600184D +:1033A000008520230004210000E4382100C23021E0 +:1033B00000E4202B00C43021AD07001CAD0600182E +:1033C00095020002A5020014A50000168D02000857 +:1033D000AD0200108D020008AD02000C9502000243 +:1033E000A5020020A50000228D020008AD020024E5 +:1033F0009122000D30420040104000422622000180 +:103400003C0208008C4200E0A3B300283C10000AF4 +:103410000242102100541024AF4200243C02080054 +:103420008C4200E0A380002C27A4002C0242102133 +:103430003042007F03421821007018218C6200D8AE +:103440008D26000427A50028AFA9002C00461021D6 +:10345000AC6200D80E0009E1AF83002893A30028D6 +:103460008F8200280E000626A04300D10E000B68B4 +:103470000000000002541024AF4200243C02080067 +:103480008C4200DC00132940001320C000A420213E +:10349000024210210044102100541024AF42002C9D +:1034A0003C0208008C4200E43C0308008C6300DC12 +:1034B00003563021024210210045102100541024EF +:1034C000AF4200283C0208008C4200E4024318216D +:1034D0000064182102421021004510213042007F73 +:1034E0003063007F03422021034318213C02000E79 +:1034F000006240213C02000C00D080210082482163 +:10350000262200013043007F14750005304400FF7F +:103510002403FF800223102400431026304400FFC0 +:1035200093A2001000808821250800281444FF760B +:103530002529002093A400108FA300142402FFFF6C +:103540001062000A308900FF2482000124830001F8 +:103550003042007F14550005306900FF2403FF80CE +:103560000083102400431026304900FF92020078A7 +:10357000305300FF11330032012088213C02080043 +:103580008C4200DC3225007F000520C00005294068 +:1035900000A42021024210212406FF8000441021B3 +:1035A00000461024AF42002C3C0308008C6300DC72 +:1035B0003C0208008C4200E4024318210242102120 +:1035C0000045102100641821004610243063007F5C +:1035D000AF420028034318213C02000E0062402144 +:1035E0003C0208008C4200E48D06000C0100202102 +:1035F00002421021004510213042007F0342182171 +:103600003C02000C0062482110C0000D012028215E +:103610000E00064A000000002402FF800222182447 +:1036200026240001006228263082007F1455000203 +:10363000308300FF30A300FF1473FFD000608821A7 +:103640008E0300743C027FFF3442FFFF00621824A7 +:10365000AE0300740E00066B02402021AF57002419 +:103660008FA20030AF5E00288FBF005C8FBE005875 +:103670008FB700548FB600508FB5004C8FB4004800 +:103680008FB300448FB200408FB1003C8FB0003840 +:1036900027BD006003E00008AF42002C27BDFFD823 +:1036A000AFB1001CAFBF0020AFB000182751018898 +:1036B000922200032408FF803C03000A3047007F69 +:1036C000A3A700108F4601803C0208008C4200E056 +:1036D000AF86003400C2282100A81024AF42002485 +:1036E0009224000030A2007F0342102100431021E9 +:1036F000AF8200283084007F24020002148200255B +:10370000000719403C0208008C4200E400C210216E +:103710000043282130A2007F0342182100A8102472 +:10372000AF4200283C02000C006218219062000D9C +:10373000AFA3001400481025A062000D8FA3001451 +:103740009062000D304200405040006A8FBF002060 +:103750008F860028A380002C27A400148CC200D8D8 +:103760008C63000427A50010004310210E0009E11E +:10377000ACC200D893A300108F8200280E0006264A +:10378000A04300D10E000B68000000000A000E0BE1 +:103790008FBF00200E00062F00C020210E00063D26 +:1037A000000000003C020008034280219223000137 +:1037B0009202007B1443004F8FBF00209222000032 +:1037C0003044007F24020004108200172882000584 +:1037D00010400006240200052402000310820007A6 +:1037E0008FB1001C0A000E0C0000000010820012B5 +:1037F0008FBF00200A000E0C8FB1001C92050083C1 +:10380000920600788E0700748F84003430A500FF84 +:1038100000073E0230C600FF0E00067330E7007F4F +:103820000A000E0B8FBF00200E000BD78F840034D0 +:103830000A000E0B8FBF002024020C80AF42002430 +:103840009202003E30420040104000200000000084 +:103850009202003E00021600000216030441000618 +:10386000000000008F8400340E0005A024050093A2 +:103870000A000E0B8FBF00209202003F24030018A5 +:10388000304200FF1443000C8F84003424050039BB +:103890000E000538000030210E0002508F840034E5 +:1038A00024020012A202003F0E0002598F8400344D +:1038B0000A000E0B8FBF0020240500360E000538CD +:1038C000000030210A000E0B8FBF00200E000250B6 +:1038D0008F8400349202000534420020A2020005C9 +:1038E0000E0002598F8400340E000FC08F84003404 +:1038F0008FBF00208FB1001C8FB0001824020C80F5 +:1039000027BD002803E00008AF42002427BDFFE8E0 +:10391000AFB00010AFBF001427430100946200084D +:103920000002140000021403044100020000802180 +:103930002410000194620008304200801040001AF8 +:10394000020010219462000830422000104000164E +:10395000020010218C6300183C021C2D344219ED2A +:10396000240600061062000F3C0760213C0208009C +:103970008C4200D4104000078F8200288F830028DB +:10398000906200623042000F34420040A062006248 +:103990008F8200288F840034944500D40E000AF1F1 +:1039A00030A5FFFF020010218FBF00148FB0001060 +:1039B00003E0000827BD001827BDFFE0AFB10014E9 +:1039C000AFB00010A380002CAFBF00188F450100DE +:1039D0003C0308008C6300E02402FF80AF850034C4 +:1039E00000A318213064007F0344202100621824C2 +:1039F0003C02000A00822021AF430024275001002E +:103A00008E0200148C8300DCAF8400280043102356 +:103A100018400004000088218E0200140E000A8461 +:103A2000AC8200DC9202000B24030002304200FF53 +:103A30001443002F0000000096020008304300FFEE +:103A40002402008214620005240200840E00093E54 +:103A5000000000000A000E97000000001462000938 +:103A6000240200818F8200288F8400343C0760216B +:103A7000944500D49206000530A5FFFF0A000E868B +:103A800030C600FF14620027000000009202000A06 +:103A9000304300FF306200201040000430620040DC +:103AA0008F8400340A000E82240600401040000477 +:103AB000000316008F8400340A000E8224060041A1 +:103AC00000021603044100178F84003424060042CC +:103AD0008F8200283C076019944500D430A5FFFF71 +:103AE0000E000AF1000000000A000E97000000001E +:103AF0009202000B24030016304200FF1043000620 +:103B0000000000009202000B24030017304200FF67 +:103B100014430004000000000E000E11000000001D +:103B2000004088210E000B68000000009202000A8D +:103B3000304200081040000624020C808F850028C7 +:103B40003C0400080E0011EE0344202124020C80E6 +:103B5000AF4200248FBF0018022010218FB0001048 +:103B60008FB1001403E0000827BD002027BDFFE847 +:103B7000AFBF0014AFB000108F5000243C0308000A +:103B80008C6300E08F4501002402FF8000A3182110 +:103B90003064007F03442021006218243C02000AA4 +:103BA00000822021AF850034AF4300249082006260 +:103BB000AF8400283042000F34420050A0820062DF +:103BC0003C02001F3442FF800E00062602028024C1 +:103BD000AF5000248FBF00148FB0001003E0000826 +:103BE00027BD00183C0208008C4200201040001D38 +:103BF0002745010090A300093C0200080342202150 +:103C000024020018546200033C0200080A000ED887 +:103C10002402000803422021240200161462000539 +:103C20002402001724020012A082003F0A000EE2C4 +:103C300094A700085462000694A700089362000548 +:103C40002403FFFE00431024A362000594A700088C +:103C500090A6001B8CA4000094A500060A000ACCC4 +:103C600000073C0003E000080000000027440100BA +:103C700094820008304500FF38A3008238A20084F7 +:103C80002C6300012C420001006218251060000620 +:103C9000240200839382002D1040000D00000000DC +:103CA0000A000B9B0000000014A2000524A2FF8064 +:103CB0008F4301043C02602003E00008AC43001481 +:103CC000304200FF2C420002104000032402002278 +:103CD0000A000E3C0000000014A2000300000000D7 +:103CE0000A000EA9000000000A000EC70000000034 +:103CF0009363007E9362007A144300090000202140 +:103D00009362000024030050304200FF144300047B +:103D1000240400019362007E24420001A362007E1D +:103D200003E00008008010218F4201F80440FFFEEC +:103D300024020002AF4401C0A34201C43C021000AF +:103D400003E00008AF4201F827BDFFE8AFBF001055 +:103D50009362003F2403000A304200FF14430046F0 +:103D6000000000008F6300548F62004C1062007DE1 +:103D7000036030219362000024030050304200FFB2 +:103D80001443002F000000008F4401403C02080053 +:103D90008C4200E02403FF800082102100431024A5 +:103DA000AF4200243C0208008C4200E08F650054C2 +:103DB0003C03000A008220213084007F034410214C +:103DC00000431021AC4501089762003C8F63004C12 +:103DD0003042FFFF0002104000621821AF63005C18 +:103DE0008F6300548F64004C9762003C006418237A +:103DF0003042FFFF00031843000210400043102A26 +:103E000010400006000000008F6200548F63004CD9 +:103E1000004310230A000F58000210439762003C31 +:103E20003042FFFF00021040ACC2006424020001D7 +:103E3000A0C0007CA0C2008424020C80AF420024F9 +:103E40000E000F0A8F440140104000478FBF001042 +:103E50008F4301408F4201F80440FFFE240200021C +:103E6000AF4301C0A34201C43C021000AF4201F8BD +:103E70000A000FA88FBF00109362003F24030010B8 +:103E8000304200FF14430004000000008F44014052 +:103E90000A000F94000028219362003F24030016BB +:103EA000304200FF1443000424020014A362003FC8 +:103EB0000A000FA2000000008F62004C8F630050C8 +:103EC00000431023044100288FBF0010936200813B +:103ED00024420001A3620081936200812C4200040D +:103EE00014400010000000009362003F240300040F +:103EF000304200FF14430006000000008F440140E0 +:103F00008FBF0010240500930A0005A027BD0018EC +:103F10008F440140240500938FBF00100A00060F54 +:103F200027BD00188F4401400E0002500000000021 +:103F30008F6200542442FFFFAF6200548F62005032 +:103F40002442FFFFAF6200500E0002598F4401402F +:103F50008F4401408FBF0010240500040A00025E58 +:103F600027BD00188FBF001003E0000827BD001810 +:103F70008F4201889363007E00021402304400FFE8 +:103F8000306300FF1464000D0000000093620080A5 +:103F9000304200FF1044000900000000A3640080CC +:103FA0009362000024030050304200FF14430004D9 +:103FB000000000000A0006D78F440180A36400803F +:103FC00003E000080000000027BDFFE8AFB00010CC +:103FD000AFBF00149362000524030030304200306C +:103FE00014430089008080213C0208008C4200209C +:103FF00010400080020020210E0004930000000009 +:104000008F850020ACB000009362003E9363003FB8 +:10401000304200FF00021200306300FF0043102511 +:10402000ACA2000493620082000216000002160394 +:1040300004410005000000003C0308008C630048B8 +:104040000A000FE6000000009362003E304200408C +:10405000144000030000182193620081304300FFE8 +:104060009362008200031E00304200FF0002140031 +:1040700000621825ACA300088F620040ACA2000CBF +:104080008F620048ACA200108F62004CACA20014FA +:104090008F6200508F63004C0043102304410003E3 +:1040A000000000000A000FFA8F62004C8F6200507F +:1040B000ACA200183C02080094424B5E3C03C00BCB +:1040C00000002021004310250E0004B8ACA2001C03 +:1040D0008F6200548F840020AC8200008F620058F1 +:1040E000AC8200048F62005CAC8200088F620060CA +:1040F0008F43007400431021AC82000C8F62006477 +:10410000AC820010976300689762006A00031C008D +:104110003042FFFF00621825AC83001493620082D6 +:1041200024030080304200FF14430003000000001D +:104130000A00102EAC8000188F63000C24020001CE +:104140001062000E2402FFFF9362003E30420040E6 +:104150001440000A2402FFFF8F63000C8F4200749A +:10416000006218233C020800006210241440000280 +:10417000000028210060282100051043AC820018AF +:104180003C02080094424B5E3C03C00C000020211E +:10419000004310258F8300200E0004B8AC62001C81 +:1041A0008F6200188F8300203C05080094A54B5EA9 +:1041B00024040001AC620000AC6000048F66006C57 +:1041C0003C02400D00A22825AC6600088F6200DC8E +:1041D000AC62000CAC600010936200050002160097 +:1041E000AC620014AC6000180E0004B8AC65001C92 +:1041F000020020218FBF00148FB00010A3600005C3 +:104200000A00042127BD00188FBF00148FB00010D2 +:1042100003E0000827BD00189742007C30C600FF6D +:10422000A08600843047FFFF2402000514C2000B63 +:1042300024E3465090A201122C42000710400007D0 +:1042400024E30A0090A30112240200140062100467 +:1042500000E210210A0010663047FFFF3067FFFFC1 +:1042600003E00008A4870014AC87004C8CA201086E +:104270000080402100A0482100E2102330C600FF4A +:104280001840000393AA001324E2FFFCACA201082B +:1042900030C2000110400008000000008D020050F4 +:1042A00000E2102304410013240600058D0200548F +:1042B00010E20010000000008D02005414E2001A09 +:1042C000000000003C0208008C4200D83042002070 +:1042D0001040000A2402000191030078910200833B +:1042E000144300062402000101002021012028219E +:1042F000240600040A00105400000000A1000084FD +:1043000011400009A50200148F4301008F4201F8FB +:104310000440FFFE24020002AF4301C0A34201C4D7 +:104320003C021000AF4201F803E00008000000006A +:1043300027BDFFE88FA90028AFBF001000804021F3 +:1043400000E918231860007330C600FFA080007CCD +:10435000A08000818CA2010800E210230440004DDF +:10436000000000008C8200509483003C8C84006428 +:10437000004748233063FFFF012318210083202BCF +:1043800010800004000000008D0200640A0010B7D5 +:1043900000E210219502003C3042FFFF0122102173 +:1043A00000E21021AD02005C9502003C8D03005C30 +:1043B0003042FFFF0002104000E210210043102BAA +:1043C00010400003000000000A0010C68D02005CCF +:1043D0009502003C3042FFFF0002104000E2102135 +:1043E000AD02005CA1000084AD07004C8CA2010866 +:1043F00000E210231840000224E2FFFCACA20108F6 +:1044000030C200011040000A000000008D02005080 +:1044100000E2102304410004010020218D02005419 +:1044200014E20003000000000A0010E82406000562 +:104430008D02005414E200478FBF00103C020800B8 +:104440008C4200D8304200201040000A24020001B3 +:1044500091030078910200831443000624020001B6 +:1044600001002021240600048FBF00100A00105410 +:1044700027BD0018A1000084A50200148F4301008D +:104480008F4201F80440FFFE240200020A00110DD1 +:10449000000000008C82005C004910230043102BB8 +:1044A00054400001AC87005C9502003C3042FFFFA5 +:1044B0000062102B14400007240200029502003C09 +:1044C0008D03005C3042FFFF00621821AD03005CE9 +:1044D00024020002AD07004CA10200840E000F0A66 +:1044E0008F4401001040001B8FBF00108F4301005C +:1044F0008F4201F80440FFFE24020002AF4301C0D6 +:10450000A34201C43C021000AF4201F80A0011238B +:104510008FBF001030C200101040000E8FBF00107F +:104520008C83005C9482003C006918233042FFFFBA +:10453000006218213C023FFF3444FFFF0083102B30 +:10454000544000010080182101231021AD02005CBD +:104550008FBF001003E0000827BD001827BDFFE84B +:104560008FAA0028AFBF00100080402100EA482336 +:104570001920002130C600FF8C83005C8C8200640F +:10458000006A18230043102B5040001000691821C6 +:1045900094A2011001221021A4A2011094A20110E2 +:1045A0003042FFFF0043102B1440000A3C023FFF43 +:1045B00094A2011000431023A4A201109482003C95 +:1045C0003042FFFF0A00114200621821A4A001102E +:1045D0003C023FFF3444FFFF0083102B5440000196 +:1045E0000080182100671021AD02005CA100007C52 +:1045F0000A00118AA100008130C200101040003C66 +:10460000000000008C820050004A1023184000383F +:10461000000000009082007C24420001A082007C07 +:104620009082007C3C0308008C630024304200FF31 +:104630000043102B1440005C8FBF00108CA20108B7 +:1046400000E2102318400058000000008C83005442 +:104650009482003C006A18233042FFFF0003184395 +:10466000000210400043102A104000050000000026 +:104670008C820054004A10230A001171000210437A +:104680009482003C3042FFFF00021040AD02006403 +:104690009502003C8D0400649503003C3042FFFF0E +:1046A00000021040008220213063FFFF00831821A8 +:1046B00001431021AD02005C8D020054ACA2010840 +:1046C00024020002A10200840E000F0A8F440100A0 +:1046D000104000358FBF00108F4301008F4201F85A +:1046E0000440FFFE240200020A0011B30000000093 +:1046F000AD07004C8CA2010800E210231840000214 +:1047000024E2FFFCACA2010830C200011040000A04 +:10471000000000008D02005000E21023044100045C +:10472000010020218D02005414E20003000000006B +:104730000A0011AA240600058D02005414E2001A92 +:104740008FBF00103C0208008C4200D8304200208D +:104750001040000A240200019103007891020083B6 +:104760001443000624020001010020212406000455 +:104770008FBF00100A00105427BD0018A10000844C +:10478000A50200148F4301008F4201F80440FFFE90 +:1047900024020002AF4301C0A34201C43C02100046 +:1047A000AF4201F88FBF001003E0000827BD0018DA +:1047B0008FAA00108C8200500080402130C600FF7C +:1047C000004A102300A048211840000700E01821EB +:1047D00024020001A0800084A0A00112A482001481 +:1047E0000A001125AFAA0010A0800081AD07004C7F +:1047F0008CA2010800E210231840000224E2FFFC12 +:10480000ACA2010830C20001104000080000000006 +:104810008D0200500062102304410013240600059D +:104820008D02005410620010000000008D02005440 +:1048300014620011000000003C0208008C4200D805 +:10484000304200201040000A240200019103007849 +:10485000910200831443000624020001010020217C +:1048600001202821240600040A0010540000000042 +:10487000A1000084A502001403E00008000000006D +:1048800027BDFFE0AFBF0018274201009046000A95 +:104890008C4800148C8B004C9082008430C900FF3F +:1048A00001681823304A00FF1C60001A2D460006DC +:1048B000240200010142100410C00016304300031E +:1048C000012030210100382114600007304C000C19 +:1048D00015800009304200301440000B8FBF0018D3 +:1048E0000A001214000000000E001125AFAB0010EA +:1048F0000A0012148FBF00180E00109AAFAB001000 +:104900000A0012148FBF0018AFAB00100E0011BACE +:10491000AFAA00148FBF001803E0000827BD0020D5 +:1049200024020003A08200848C82005403E000086B +:10493000ACA201083C0200080342182190620081E9 +:10494000240600433C07601924420001A062008154 +:10495000906300813C0208008C4200C0306300FF7D +:10496000146200102403FF803C0208008C4200E027 +:104970000082102100431024AF4200243C020800B2 +:104980008C4200E03C03000A008210213042007F8C +:104990000342102100431021944500D40A000AF17B +:1049A00030A5FFFF03E000080000000027BDFFE086 +:1049B000AFBF0018AFB10014AFB000108F4201803C +:1049C0000080802100A088210E00121B00402021C1 +:1049D000A20000848E0200548FBF00188FB0001018 +:1049E000AE2201088FB1001403E0000827BD0020AB +:1049F00027BDFFE03C020008AFB00010AFBF0018B9 +:104A0000AFB10014034280218F5101409203008412 +:104A10008E0400508E02004C14820040306600FF6D +:104A20003C0208008C4200E02403FF800222102197 +:104A300000431024AF4200243C0208008C4200E0F6 +:104A40009744007C92050081022210213042007FB1 +:104A5000034218213C02000A0062182114A0000B36 +:104A60003084FFFF2402000554C20014248205DCB8 +:104A70009062011224420001A062011224020C8003 +:104A8000AF4200240A00127324020005A060011244 +:104A90002402000514C20009248205DC9202008170 +:104AA0002C4200075040000524820A009203008136 +:104AB0002402001400621004008210213044FFFF21 +:104AC000A60400140E00121B022020219602003CB6 +:104AD0008E03004C022020213042FFFF00021040D4 +:104AE000006218210E000250AE03005C9202007DAD +:104AF00002202021344200400E000259A202007D13 +:104B00008F4201F80440FFFE24020002AF5101C0B1 +:104B1000A34201C43C021000AF4201F88FBF00184D +:104B20008FB100148FB0001003E0000827BD0020F3 +:104B300008000ACC08000B1408000B9808000BE4CE +:104B400008000C200A0000280000000000000000FF +:104B50000000000D6370362E322E3300000000007E +:104B60000602030400000000000000000000000036 +:104B70000000000000000000000000000000000035 +:104B80000000000000000000000000000000002005 +:104B90000000000000000000000000000000000015 +:104BA0000000000000000000000000000000000005 +:104BB00000000000000000000000000000000001F4 +:104BC0000000002B000000000000000400030D4066 +:104BD00000000000000000000000000000000000D5 +:104BE00000000000000000001000000300000000B2 +:104BF0000000000D0000000D3C020800244258A4F3 +:104C00003C03080024635F70AC4000000043202B8D +:104C10001480FFFD244200043C1D080037BD7FFCCA +:104C200003A0F0213C100800261000A03C1C080046 +:104C3000279C58A40E0001AC000000000000000DED +:104C400027BDFFE83C096018AFBF00108D2C500055 +:104C5000240DFF7F24080031018D5824356A380C5B +:104C600024070C003C1A8000AD2A50003C04800A46 +:104C7000AF4800083C1B8008AF4700240E00091510 +:104C8000AF8400100E0008D8000000000E000825B8 +:104C9000000000000E001252000000003C046016EC +:104CA0008C8500003C06FFFF3C02535300A61824ED +:104CB0001062004734867C0094C201F2A780002C69 +:104CC00010400003A78000CC38581E1EA798002C67 +:104CD00094C201F810400004978300CC38591E1E7E +:104CE000A79900CC978300CC2C7F006753E000018C +:104CF000240300669784002C2C82040114400002D7 +:104D000000602821240404003C0760008CE904387A +:104D10002403103C3128FFFF1103001F30B9FFFFAF +:104D200057200010A38000CE24020050A38200CEA2 +:104D3000939F00CE53E0000FA78500CCA78000CC46 +:104D4000978500CC8FBF0010A780002CA78000346F +:104D5000A78000E63C010800AC25008003E00008C5 +:104D600027BD0018939F00CE57E0FFF5A78000CC29 +:104D7000A78500CC978500CC8FBF0010A784002C9E +:104D8000A7800034A78000E63C010800AC25008025 +:104D900003E0000827BD0018A38000CE8CCB003CA8 +:104DA000316A00011140000E0000000030A7FFFF33 +:104DB00010E0FFDE240200508CCC00C831860001D8 +:104DC00014C0FFDC939F00CE0A00007A2402005139 +:104DD0008C8F00043C0E60000A00005D01EE302163 +:104DE0008CEF0808240D5708000F740211CD000441 +:104DF00030B8FFFF240500660A00007B240404008D +:104E00001700FFCC939F00CE0A00007A24020050C6 +:104E10008F8600103089FFFF000939408CC30010D5 +:104E20003C08005000E82025AF4300388CC5001432 +:104E300027420400AF82001CAF45003CAF44003065 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60008F4B0000316A00201140FFFD0000000060 +:104E700003E00008000000008F840010948A001AEC +:104E80008C8700243149FFFF000940C000E8302131 +:104E9000AF46003C8C8500248F43003C00A31023C8 +:104EA00018400029000000008C8B002025620001C2 +:104EB0003C0D005035AC0008AF420038AF4C00301C +:104EC00000000000000000000000000000000000E2 +:104ED00000000000000000000000000000000000D2 +:104EE0008F4F000031EE002011C0FFFD00000000D8 +:104EF0008F4A04003C080020AC8A00108F4904044B +:104F0000AC890014AF4800300000000094860018FF +:104F10009487001C00C71821A48300189485001AE8 +:104F200024A20001A482001A9498001A9499001EE9 +:104F3000133800030000000003E000080000000038 +:104F400003E00008A480001A8C8200200A0000DC24 +:104F50003C0D00500A0000CD000000003C0308009A +:104F60008C6300208F82001827BDFFE810620008C4 +:104F7000AFBF00100E000104AF8300183C0308000F +:104F80008C63002024040001106400048F89001049 +:104F90008FBF001003E0000827BD00188FBF00106E +:104FA0003C076012A520000A9528000A34E500108D +:104FB00027BD00183106FFFF03E00008ACA60090F3 +:104FC0003C0208008C42002027BDFFC8AFBF003460 +:104FD000AFBE0030AFB7002CAFB60028AFB500248D +:104FE000AFB40020AFB3001CAFB20018AFB10014D3 +:104FF00010400050AFB000108F840010948600065F +:105000009483000A00C3282330B6FFFF12C0004A71 +:105010008FBF003494890018948A000A012A402323 +:105020003102FFFF02C2382B14E0000202C020212F +:10503000004020212C8C0005158000020080A0215A +:10504000241400040E0000B3028020218F8700107A +:1050500002809821AF80001494ED000A028088211C +:105060001280004E31B2FFFF3C1770003C1540002B +:105070003C1E60008F8F001C8DEE000001D71824AD +:10508000507500500220202102A3802B160000350D +:105090003C182000507800470220202124100001F5 +:1050A0008F83001414600039029158230230F823D2 +:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D +:1050C0008F8700103C110020AF510030000000001D +:1050D00094E6000A3C1E601237D5001002662821B3 +:1050E000A4E5000A94E2000A94F2000A94F400187D +:1050F0003057FFFF1292003BAEB700908CED0014CA +:105100008CE400100013714001AE4021000E5FC31B +:10511000010E502B008B4821012A1821ACE8001405 +:10512000ACE3001002D3382330F6FFFF16C0FFB9FE +:105130008F8400108FBF00348FBE00308FB7002CDB +:105140008FB600288FB500248FB400208FB3001CC9 +:105150008FB200188FB100148FB0001003E0000868 +:1051600027BD0038107E001B000000001477FFCC24 +:10517000241000010E00159B000000008F83001416 +:105180001060FFCB0230F823029158238F87001064 +:10519000017020210A0001973093FFFF8F830014D4 +:1051A0001460FFCB3C110020AF5100300A000163B6 +:1051B000000000000E00077D024028210A00015770 +:1051C000004080210E00033A024028210A000157C6 +:1051D000004080210E001463022020210A000157A4 +:1051E000004080210E0000CD000000000A0001797F +:1051F00002D3382327BDFFE8AFB00010AFBF0014C3 +:105200000E00003F000000003C028000345000709F +:105210000A0001BA8E0600008F4F000039EE00012F +:1052200031C20001104000248F8600A88E070000C4 +:105230003C0C08008D8C003C3C0908008D2900388E +:1052400000E66823018D28210000502100AD302B9D +:10525000012A4021010620213C010800AC25003C28 +:10526000AF8700A83C010800AC2400380E000106FE +:10527000000000003C0308008C6300701060FFE633 +:10528000006020213C0508008CA500683C06080051 +:105290008CC6006C0E00152A000000003C010800BE +:1052A000AC2000708F4F000039EE000131C20001C8 +:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6 +:1052C0003C0508008CA5003C3C0408008C84003898 +:1052D000014B482300A938210082182100E9402B06 +:1052E000006810213C010800AC27003C3C0108008C +:1052F000AC2200388F5F01002419FF0024180C0035 +:1053000003F9202410980012AF840000AF4400205D +:10531000936D0000240C002031A600FF10CC001279 +:10532000240E005010CE00043C194000AF59013843 +:105330000A0001B3000000000E0011C800000000C8 +:105340003C194000AF5901380A0001B300000000C9 +:105350000E00011F000000003C194000AF59013849 +:105360000A0001B3000000008F58010000802821CE +:10537000330F00FF01E020210E0002F1AF8F000487 +:105380003C194000AF5901380A0001B30000000089 +:1053900000A4102B2403000110400009000030215C +:1053A0000005284000A4102B04A0000300031840AF +:1053B0005440FFFC000528405060000A0004182BF0 +:1053C0000085382B54E000040003184200C3302548 +:1053D00000852023000318421460FFF900052842CD +:1053E0000004182B03E0000800C310218F4201B80D +:1053F0000440FFFE00000000AF4401803C031000A9 +:1054000024040040AF450184A3440188A3460189D8 +:10541000A747018A03E00008AF4301B83084FFFFCB +:105420000080382130A5FFFF000020210A00022A59 +:10543000240600803087FFFF8CA40000240600387B +:105440000A00022A000028218F8300388F8600304E +:105450001066000B008040213C07080024E75A1822 +:10546000000328C000A710218C4400002463000121 +:10547000108800053063000F5466FFFA000328C04F +:1054800003E00008000010213C07080024E75A1C34 +:1054900000A7302103E000088CC200003C0390000C +:1054A0003462000100822025AF4400208F45002097 +:1054B00004A0FFFE0000000003E000080000000060 +:1054C0003C038000346200010082202503E00008D4 +:1054D000AF44002027BDFFE0AFB100143091FFFFC3 +:1054E000AFB00010AFBF00181220001300A0802141 +:1054F0008CA2000024040002240601401040000F8A +:10550000004028210E000C5C00000000000010216B +:10551000AE000000022038218FBF00188FB10014A8 +:105520008FB0001000402021000028210000302111 +:105530000A00022A27BD00208CA200000220382188 +:105540008FBF00188FB100148FB0001000402021D1 +:1055500000002821000030210A00022A27BD002077 +:1055600000A010213087FFFF8CA500048C440000B0 +:105570000A00022A2406000627BDFFE0AFB0001093 +:10558000AFBF0018AFB100149363003E00808021CC +:105590000080282130620040000020211040000FD0 +:1055A0008E1100000E000851022020219367000098 +:1055B0002404005030E500FF50A400128E0F0000BC +:1055C000022020218FBF00188FB100148FB000106F +:1055D000A762013C0A00091127BD00200E000287C6 +:1055E000000000000E0008510220202193670000F7 +:1055F0002404005030E500FF14A4FFF20220202113 +:105600008E0F00003C1008008E1000503C0D000C66 +:10561000240BFF8001F05021314E007F01DA602120 +:10562000018D4021014B4824AF4900280220202150 +:105630008FBF00188FB100148FB00010A50200D6E4 +:1056400027BD00200A000911AF8800D027BDFFE068 +:10565000AFBF0018AFB10014AFB0001093660001E7 +:10566000008080210E00025630D1000493640005B2 +:10567000001029C2A765000034830040A363000521 +:105680000E00025F020020210E00091302002021FB +:1056900024020001AF62000C02002821A762001062 +:1056A00024040002A762001224060140A76200142D +:1056B0000E000C5CA76200161620000F8FBF0018AA +:1056C000978C00343C0B08008D6B00782588FFFF19 +:1056D0003109FFFF256A0001012A382B10E000067E +:1056E000A78800343C0F6006240E001635ED00102C +:1056F000ADAE00508FBF00188FB100148FB00010F6 +:1057000003E0000827BD002027BDFFE0AFB1001473 +:10571000AFBF0018AFB0001000A088211080000AB1 +:105720003C03600024020080108200120000000090 +:105730000000000D8FBF00188FB100148FB0001053 +:1057400003E0000827BD00208C682BF80500FFFE51 +:1057500000000000AC712BC08FBF00188FB1001487 +:105760008FB000103C09100027BD002003E00008A6 +:10577000AC692BF80E00025600A0202193650005AD +:10578000022020210E00025F30B000FF2403003E03 +:105790001603FFE7000000008F4401780480FFFE3D +:1057A000240700073C061000AF51014002202021D1 +:1057B000A34701448FBF00188FB100148FB00010B1 +:1057C000AF4601780A0002C227BD002027BDFFE8CE +:1057D000AFBF0014AFB000108F50002000000000D9 +:1057E0000E000913AF440020AF5000208FBF0014FB +:1057F0008FB0001003E0000827BD00183084FFFFC1 +:10580000008038212406003500A020210A00022A49 +:10581000000028213084FFFF008038212406003654 +:1058200000A020210A00022A0000282127BDFFD065 +:10583000AFB3001C3093FFFFAFB50024AFB2001828 +:10584000AFBF0028AFB40020AFB10014AFB000105C +:1058500030B5FFFF12600027000090218F90001CE0 +:105860008E0300003C0680002402004000033E023C +:1058700000032C0230E4007F006688241482001D9F +:1058800030A500FF8F8300282C68000A510000100B +:105890008F910014000358803C0C0800258C56940E +:1058A000016C50218D49000001200008000000001B +:1058B00002B210213045FFFF0E000236240400849E +:1058C000162000028F90001CAF8000288F910014DA +:1058D000260C002026430001018080213072FFFF4A +:1058E00016200004AF8C001C0253502B1540FFDC27 +:1058F00000000000024010218FBF00288FB5002457 +:105900008FB400208FB3001C8FB200188FB1001429 +:105910008FB0001003E0000827BD0030240E0034D3 +:1059200014AE00F9000000009203000E241F168040 +:105930003C07000CA36300219202000D0347C8211D +:105940003C066000A3620020961100123C0A7FFF13 +:10595000354CFFFFA771003C960B00102403000597 +:105960003168FFFFAF6800848E05001CAF5F002820 +:105970008F3800008CC4444803057826008F3021FE +:10598000AF66004C8F69004C24CE00013C057F00BF +:10599000AF6900508F740050AF740054AF66007050 +:1059A000AF6E00588F6D005824140050AF6D005C2E +:1059B000A3600023AF6C0064A36300378E02001461 +:1059C000AF6200488F710048AF7100248E0B001841 +:1059D000AF6B006C9208000CA3680036937F003E0A +:1059E00037F90020A379003E8F78007403058024E6 +:1059F000360F4000AF6F007493640000308900FFE1 +:105A0000513402452404FF803C04080024845A9841 +:105A10000E00028D000000003C1008008E105A9805 +:105A20000E00025602002021240600042407000173 +:105A3000A366007D020020210E00025FA36700051F +:105A40008F5F017807E0FFFE240B0002AF5001409A +:105A5000A34B01448F90001C3C081000AF48017814 +:105A60000A000362AF8000282CAD003751A0FF98D8 +:105A70008F9100140005A0803C180800271856BC20 +:105A8000029878218DEE000001C00008000000009F +:105A90002418000614B80011000000003C0808009B +:105AA0008D085A9824040005AF4800208E1F001866 +:105AB000AF7F00188F79004CAF79001C8F650050C4 +:105AC000122000C0AF6500700A000362AF84002896 +:105AD0002406000710A60083240300063C050800E6 +:105AE00024A55A980E000264240400818F90001CA3 +:105AF0000011102B0A000362AF8200282407000463 +:105B000014A7FFF6240500503C1808008F185A9877 +:105B1000AF5800208E0F0008AF6F00408E090008BC +:105B2000AF6900448E14000CAF7400488E0E001054 +:105B3000AF6E004C8E0D0010AF6D00848E0A001405 +:105B4000AF6A00508E0C0018AF6C00548E04001C1D +:105B5000AF64005893630000306B00FF116501D8FB +:105B6000000000008F7400488F6900400289702394 +:105B700005C000042404008C1620FFDE240200036C +:105B8000240400823C05080024A55A980E000287D0 +:105B9000000000008F90001C000010210A0003622A +:105BA000AF820028240F000514AFFFCC240520008D +:105BB0003C0708008CE75A98AF4700208E06000487 +:105BC000AF66005C9208000824100008A36800215A +:105BD0008F9F001C93F90009A37900208F86001C79 +:105BE00090D8000A330400FF10900011000000005C +:105BF0002885000914A0006924020002240A00205C +:105C0000108A000B34058000288D002115A00008A3 +:105C100024054000240E0040108E00053C050001C4 +:105C200024140080109400023C050002240540006A +:105C30008F7800743C19FF00031980240205782531 +:105C4000AF6F007490C4000BA36400818F84001CAC +:105C50009489000C11200192000000009490000C27 +:105C60002406FFBF24050004A770003C908F000E9F +:105C7000A36F003E8F84001C9089000FA369003F32 +:105C80008F8B001C8D6E00108F54007401D468231C +:105C9000AF6D00608D6A0014AF6A0064956C0018E7 +:105CA000A76C00689563001AA763006A8D62001CE8 +:105CB000AF62006C9167000EA367003E9368003EE0 +:105CC0000106F8241220014BA37F003E8F90001C98 +:105CD0000A000362AF8500282407002214A7FF7F73 +:105CE000240300073C0B08008D6B5A981220000C0F +:105CF000AF4B00200A000362AF830028240C00335E +:105D000010AC0014240A00283C05080024A55A9869 +:105D10000E00023C240400810A0003EB8F90001C5B +:105D20003C04080024845A980E00028D00000000F4 +:105D30009363000024110050306200FF10510135C0 +:105D4000000000008F90001C000018210A00036270 +:105D5000AF8300283C0D08008DAD5A9824040081C3 +:105D6000AF4D00203C05080024A55A980E00023CC7 +:105D7000A36A00348F90001C240200090A00036209 +:105D8000AF82002802B288213225FFFF0E000236C2 +:105D9000240400840A0003628F90001C1082FFA478 +:105DA00024050400288B000311600170240C0004FA +:105DB000240300015483FF9E240540000A00043B95 +:105DC000240501003C04080024845A988F62004C8A +:105DD0000E00028D8F6300508F90001C0000202168 +:105DE0000A000362AF8400288E1000042404008A95 +:105DF000AF50002093790005333800021700015F8F +:105E0000020028219368002302002821311F00206E +:105E100017E0015A2404008D9367003F2406001206 +:105E200030E200FF10460155240400810E000256A6 +:105E30000200202193630023240500040200202196 +:105E4000346B0042A36B00230E00025FA365007D4C +:105E50008F4401780480FFFE240A0002AF50014005 +:105E6000A34A01448F90001C3C0C1000AF4C0178F9 +:105E70000A0003EC0011102B8E1000042404008A89 +:105E8000AF500020936E000531CD000215A0001622 +:105E900002002821936F003F2414000402002821EF +:105EA00031E900FF11340010240400810E00025675 +:105EB000020020219362002324080012241FFFFE09 +:105EC00034460020A3660023A368003F93790005B1 +:105ED00002002021033FC0240E00025FA3780005CA +:105EE00002002821000020210E00033400000000E1 +:105EF0000A0003EB8F90001C8E1000043C03000886 +:105F00000343A021AF500020928B000024050050D5 +:105F1000316400FF10850161240700880200202100 +:105F2000000028210E00022A2406000E928D000097 +:105F3000240EFF800200282101AE8025A2900000DF +:105F4000240400040E000C5C240600300A0003EB5D +:105F50008F90001C8E0800043C14080026945A9868 +:105F60003C010800AC285A98AF480020921F00035B +:105F700033F9000413200002240200122402000658 +:105F8000A362003F920B001B2404FFC03165003F59 +:105F900000A43825A367003E9206000330C200012A +:105FA00014400132000000008E020008AE8200089A +:105FB0003C0208008C425AA010400131000249C244 +:105FC000A76900088E14000C240C0001240300149F +:105FD000AF74002C8E0E0010AF6E0030960D0016C0 +:105FE000A76D0038960A0014A76A003AAF6C000C3F +:105FF000A76C0010A76C0012A76C0014A76C001609 +:1060000012200136A3630034920F000331F0000226 +:106010002E1100018F90001C262200080A00036246 +:10602000AF8200288E0400043C0E0008034E30218D +:10603000AF4400208E05000890CD0000240C0050D5 +:1060400031AA00FF114C00862407008824060009AD +:106050000E00022A000000000A0003EB8F90001CD3 +:106060008E04001C0E00024100000000104000F4ED +:10607000004050218F89001C240700890140202105 +:106080008D25001C240600010E00022A00000000DD +:106090000A0003EB8F90001C960D00023C140800D0 +:1060A00026945A9831AA0004514000B83C10600070 +:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA +:1060C000920700102408001430E200FF144800D6A4 +:1060D00000000000960B00023163000114600165AE +:1060E000000000008E020004AE8200083C1408008C +:1060F0008E945AA01280015B000000008F7400741F +:106100003C0380002404000102835825AF6B007417 +:10611000A3600005AF64000C3C0708008CE75AA0A0 +:106120008F86001CA7640010000711C2A76400122C +:10613000A7640014A7640016A76200088CC80008B2 +:1061400024040002AF68002C8CC5000CAF65003041 +:1061500090DF0010A37F00348F99001C9330001152 +:10616000A37000358F98001C930F0012A36F0036A8 +:106170008F89001C912E0013A36E00378F90001C96 +:10618000960D0014A76D0038960A0016A76A003A0B +:106190008E0C0018AF6C00245620FDCCAF84002874 +:1061A0003C05080024A55A980E0002640000202136 +:1061B0008F90001C0A0004A7000020218E1000040C +:1061C00024070081AF500020936900233134001070 +:1061D000128000170000000002002021000028218A +:1061E0002406001F0E00022A000000000A0003EB34 +:1061F0008F90001C3C05080024A55A980E000287C9 +:10620000240400828F90001C000028210A000362F1 +:10621000AF8500283C0408008C845A980E0014E8CE +:10622000000000008F90001C0A000482000018216A +:106230000E00025602002021937800230200202144 +:10624000370F00100E00025FA36F002300003821FB +:1062500002002021000028210A0005A82406001FB2 +:10626000920F000C31E90001112000030000000032 +:106270009618000EA4D8002C921F000C33F90002CF +:1062800013200005000038218E0200149608001229 +:10629000ACC2001CA4C8001A0A0005432406000969 +:1062A0003C05080024A55A980E0002872404008BA0 +:1062B0008F90001C0011282B0A000362AF85002874 +:1062C000AF6000843C0A08008D4A5A983C0D0800D3 +:1062D0008DAD0050240CFF803C02000C014D1821B4 +:1062E000006C2024AF4400288E070014306B007F20 +:1062F000017A282100A2C821AF2700D88E060014F9 +:10630000AF9900D0AF2600DC8E080010251FFFFEDD +:106310000A000408AF3F01083C0508008CA55A9804 +:106320003C1908008F39005024CCFFFE00B9C02171 +:1063300003047824AF4F00283C1408008E945A9828 +:106340003C0908008D2900500289702131CD007F61 +:1063500001BA502101478021AE0600D8AF9000D08D +:10636000AE0000DC0A0003B1AE0C0108548CFE3014 +:10637000240540000A00043B240510000E00032EF3 +:10638000000000000A0003EB8F90001C8E0F442CCD +:106390003C186C62370979703C010800AC205A98AF +:1063A00015E9000824050140979F00349786002CCA +:1063B0000280282103E6C82B132000112404009238 +:1063C000240501400E000C7A240400023C01080060 +:1063D000AC225A98AF4200203C0508008CA55A9880 +:1063E00010A00005240400830E00084500000000F2 +:1063F00010400009240400833C05080024A55A9895 +:106400000E000264000000008F90001C0011202B81 +:106410000A000362AF8400280E0008490000000053 +:106420000A00055F8F90001C0E00084D0000000060 +:106430003C05080024A55A980A00062F2404008B66 +:10644000240400040E000C7A240500301440002AB5 +:10645000004050218F89001C240700830140202127 +:106460008D25001C0A000551240600018E04000839 +:106470000E000241000000000A00051BAE82000869 +:106480003C05080024A55A980E00023C240400870D +:106490008F90001C0A0005360011102B8F830038E6 +:1064A0008F8600301066FE9D000038213C070800F2 +:1064B00024E75A1C000320C0008728218CAC000070 +:1064C00011900061246A00013143000F5466FFFA05 +:1064D000000320C00A0004F6000038213C05080033 +:1064E00024A55A980E000287240400828F90001C75 +:1064F0000A000536000010213C0B0008034B202148 +:106500002403005024070001AF420020A0830000B4 +:10651000A08700018F82001C90480004A08800180A +:106520008F85001C90A60005A08600198F9F001C77 +:1065300093F90006A099001A8F90001C921800078A +:10654000A098001B8F94001C928F0008A08F001C45 +:106550008F89001C912E0009A08E001D8F8D001CBC +:1065600091AC000AA08C001E8F8B001C3C0C080014 +:10657000258C5A1C9163000B3C0B0800256B5A18A4 +:10658000A083001F8F87001C90E8000CA0880020CB +:106590008F82001C9045000D24024646A0850021F4 +:1065A0008F86001C90DF000EA09F00228F99001C98 +:1065B0009330000FA09000238F98001C93140010BC +:1065C000A09400248F8F001C91E90011A089002560 +:1065D0008F89001C8F8E00308F900038952D00140D +:1065E000000E18C025C80001A48D002895270016AC +:1065F000006C3021006BC821A487002A9525001863 +:106600003108000FA485002CA482002E8D3F001CB1 +:10661000ACCA0000AF88003011100006AF3F000088 +:10662000000038218D25001C014020210A00055161 +:1066300024060001250C00013184000F00003821E0 +:106640000A0006B8AF8400383C07080024E75A184F +:106650000087302100003821ACA000000A0004F6B9 +:10666000ACC000003C05080024A55A980A00062F7B +:10667000240400878E0400040E0002410000000084 +:106680000A00056AAE8200083084FFFF30C600FFB2 +:106690008F4201B80440FFFE00064400010430258B +:1066A0003C07200000C720253C031000AF400180BC +:1066B000AF450184AF44018803E00008AF4301B84F +:1066C00027BDFFE8AFB00010AFBF00143C0760006B +:1066D000240600021080000600A080210010102B6C +:1066E0008FBF00148FB0001003E0000827BD001812 +:1066F0003C09600EAD2000348CE5201C8F82001C0C +:106700002408FFFC00A81824ACE3201C0E0006D1CE +:106710008C45000C0010102B8FBF00148FB00010A0 +:1067200003E0000827BD00183C02600E344701005A +:1067300024090018274A040000000000000000009F +:10674000000000003C06005034C30200AF44003893 +:10675000AF45003CAF430030014018218F4B000093 +:10676000316800201100FFFD2406007F2408FFFF90 +:106770008C6C000024C6FFFF24630004ACEC000016 +:1067800014C8FFFB24E70004000000000000000024 +:10679000000000003C0F0020AF4F00300000000060 +:1067A00024AD020001A5702B2529FFFF008E2021BA +:1067B0001520FFE101A0282103E0000800000000EF +:1067C00027BDFFE0AFB10014AFBF0018AFB000109D +:1067D0003C05600E8CA20034008088211440000625 +:1067E0003C0460008C87201C2408FFFC00E8302457 +:1067F00034C30001AC83201C8F8B001C24090001D2 +:10680000ACA90034956900028D6500148D70000CF0 +:106810002D2400818D6700048D660008108000071C +:106820008D6A00102D2C00041580000E30CE00075C +:10683000312D000311A0000B000000002404008B88 +:10684000020028210E0006D1240600030011102B9F +:106850008FBF00188FB100148FB0001003E0000844 +:1068600027BD002015C0FFF62404008B3C03002048 +:10687000AF4300300000000024020001AF8200148A +:106880000000000000000000000000003C1F01505C +:10689000013FC825253800033C0F600EAF47003884 +:1068A00000181882AF46003C35E8003CAF59003074 +:1068B000274704008F4400003086002010C0FFFDF1 +:1068C00000000000106000082466FFFF2403FFFFA3 +:1068D0008CEB000024C6FFFF24E70004AD0B000092 +:1068E00014C3FFFB250800043C08600EAD09003806 +:1068F0000000000000000000000000003C07002035 +:10690000AF470030000000000E0006F901402021D2 +:1069100002002821000020210E0006D124060003D9 +:106920000011102B8FBF00188FB100148FB0001012 +:1069300003E0000827BD002027BDFFE0AFB200182C +:106940003092FFFFAFB10014AFBF001CAFB000101A +:106950001640000D000088210A0007AA022010211D +:1069600024050001508500278CE5000C0000000D77 +:10697000262300013071FFFF24E200200232382B71 +:1069800010E00019AF82001C8F8200141440001622 +:106990008F87001C3C0670003C0320008CE5000043 +:1069A00000A62024148300108F84003C00054402BC +:1069B0003C09800000A980241480FFE9310600FF13 +:1069C0002CCA00095140FFEB262300010006688015 +:1069D0003C0E080025CE579801AE60218D8B00003B +:1069E0000160000800000000022010218FBF001C81 +:1069F0008FB200188FB100148FB0001003E00008B0 +:106A000027BD00200E0006D1240400841600FFD804 +:106A10008F87001C0A00078BAF80003C90EF0002BC +:106A200000002021240600090E0006D1000F2E00D0 +:106A30008F87001C0010102B0A00078BAF82003CD0 +:106A4000020028210E0006DF240400018F87001CAD +:106A50000A00078BAF82003C020028210E0006DFEF +:106A6000000020210A0007C38F87001C0E00071FAB +:106A7000020020210A0007C38F87001C30B0FFFFEF +:106A8000001019C08F5801B80700FFFE3C1F2004FA +:106A90003C191000AF430180AF400184AF5F018813 +:106AA000AF5901B80A00078C262300013082FFFF8E +:106AB00014400003000018210004240224030010E5 +:106AC000308500FF14A000053087000F2466000801 +:106AD0000004220230C300FF3087000F14E00005DD +:106AE000308900032468000400042102310300FF00 +:106AF0003089000315200005388B0001246A00024C +:106B000000042082314300FF388B00013164000112 +:106B100010800002246C0001318300FF03E00008B4 +:106B200000601021308BFFFF000B394230E600FF80 +:106B30003C09080025295998000640800109602178 +:106B40008D8700003164001F240A0001008A1804A8 +:106B500030A500FF00E3202514A000020003102749 +:106B600000E22024240F000100CF700401096821F5 +:106B7000000E282714800005ADA400008F86000CAD +:106B800000A6102403E00008AF82000C8F88000CE0 +:106B900001C8102503E00008AF82000C3C06001F6E +:106BA0003C0360003084FFFF34C5FF8024020020D6 +:106BB000AC602008AC60200CAC602010AC652014E8 +:106BC000AC642018AC62200000000000000000004F +:106BD00003E000080000000027BDFFE82402FFFFDB +:106BE000AFBF0010AF82000C000020213C0608005F +:106BF00024C659982405FFFF248900010004408021 +:106C00003124FFFF010618212C87002014E0FFFA31 +:106C1000AC6500000E0008160000202124020001CF +:106C20003C04600024050020AC822018AC852000C4 +:106C3000000000000000000000000000244A0001E5 +:106C40003142FFFF2C46040014C0FFF78FBF001035 +:106C500003E0000827BD00188F8300082C620400A1 +:106C600003E00008384200018F830008246200011D +:106C700003E00008AF8200088F8300082462FFFF52 +:106C800003E00008AF82000827BDFFE0AFB10014A9 +:106C9000AFBF0018AFB000108F6B00303C06600033 +:106CA00000808821ACCB20088F6A002C3C02800039 +:106CB00024030008ACCA200C9769003A9768003892 +:106CC00000092C003107FFFF00A72025ACC42010CD +:106CD000ACC22014ACC32000000000000000000083 +:106CE000000000003C0360008C6D200031AC000807 +:106CF0001580FFF9000000008C6E201405C00020F4 +:106D0000000000000E0007DA8F84000C00024080B3 +:106D10003C09080025295998010938218CE4000014 +:106D20000E0007DA00028140020220213090FFFFAE +:106D3000020020210E0007F8000028213C0C8000F2 +:106D4000022C58253210FFFF3C116000240A00205D +:106D5000AE2B2014AE302018AE2A20000000000018 +:106D60000000000000000000020010218FBF00188A +:106D70008FB100148FB0001003E0000827BD002081 +:106D80008C6620143C02001F3443FF803C1FFFE848 +:106D900000C3C02437F9080003198021001079C20C +:106DA0003C0C8000022C582531F0FFFF3C116000A4 +:106DB000240A0020AE2B2014AE302018AE2A20006A +:106DC0000000000000000000000000000200102190 +:106DD0008FBF00188FB100148FB0001003E00008BF +:106DE00027BD002027BDFFE8AFB000103402FFFF31 +:106DF0003090FFFFAFBF00141202000602002021F6 +:106E00000E00081600000000020020210E0007F806 +:106E1000240500018F8400088FBF00148FB000107C +:106E20002483FFFF27BD001803E00008AF8300089C +:106E3000000439C230E6003F00043B42000718401E +:106E4000240210002CC4002024C8FFE0AF42002C14 +:106E5000246300011480000330A900FF00071840DC +:106E6000310600FF0003608024080001019A5821C8 +:106E70003C0A000E00C82804016A382111200005D0 +:106E8000000530278CE900000125302503E00008CB +:106E9000ACE600008CEE000001C6682403E00008A8 +:106EA000ACED000027BDFFE8AFBF0014AFB000108D +:106EB0003C0460008C8508083403F00030A2F00028 +:106EC00050430006240200018C8708083404E000C7 +:106ED00030E6F00010C4001E24020002AF82004021 +:106EE0003C1060003C0A0200AE0A0814240910009D +:106EF0003C08000E8E03440003482021AF49002CBB +:106F0000240501200E000CC0000030218F830040BA +:106F1000106000043C021691240B0001106B000E5F +:106F20003C023D2C344F0090AE0F44088FBF00143C +:106F30008FB000103C0C6000240E10003C0D0200CD +:106F400027BD0018AD8E442003E00008AD8D081069 +:106F50000A0008E7AF8000403C0218DA344F009086 +:106F6000AE0F44088FBF00148FB000103C0C6000BF +:106F7000240E10003C0D020027BD0018AD8E4420E9 +:106F800003E00008AD8D08100A0008BB24050001CD +:106F90000A0008BB000028213C08080025085DA461 +:106FA0002404FFFF010018212402001E2442FFFFD9 +:106FB000AC6400000441FFFD246300043C070800AA +:106FC00024E75E208CE5FFFC2404001C240600015D +:106FD000308A001F0146480424840001000910275C +:106FE0002C8300201460FFFA00A22824ACE5FFFCEB +:106FF0003C05666634A4616E3C06080024C65EE06B +:10700000AF840058AF88009C2404FFFF00C0182103 +:107010002402001F2442FFFFAC6400000441FFFD76 +:10702000246300043C0766663C05080024A55EA0B6 +:10703000AF86004834E6616EAF8600982404FFFFF7 +:1070400000A018212402000F2442FFFFAC640000BE +:107050000441FFFD246300043C0B66663C06080007 +:1070600024C65E203568616EAF8500A4AF880070CD +:107070002404FFFF00C018212402001F2442FFFF48 +:10708000AC6400000441FFFD246300043C0D66660F +:107090003C0A0800254A5F6035AC616EAF860090FF +:1070A000AF8C005C2404FFFF014018212402000380 +:1070B0002442FFFFAC6400000441FFFD2463000490 +:1070C0003C09080025295F708D27FFFC2404000679 +:1070D000240500013099001F0325C0042484000109 +:1070E000001878272C8E002015C0FFFA00EF3824F6 +:1070F000AD27FFFC3C09666624030400240403DC7E +:1071000024050200240600663522616E3C08080052 +:1071100025085AA4AF820074AF830044AF83006C8B +:10712000AF830050AF830084AF8A008CAF840064CB +:10713000AF85004CAF860054AF840078AF85006007 +:10714000AF86008001001821240200022442FFFFC4 +:10715000AC6000000441FFFD24630004240400032C +:107160002403000C3C0A0800254A5AB0AF8A006884 +:107170000A00098E2405FFFF000418802484000102 +:10718000006858212C8700C014E0FFFBAD650000AB +:107190003C0E666635CD616E240C17A024081800DD +:1071A000AF8D0088AF8C009403E00008AF88007CAE +:1071B0002484007F000421C200004021000030210F +:1071C00000003821000028210A0009A5AF8400A092 +:1071D0001060000624E7000100C4302124A500014E +:1071E0002CC20BF51440FFFA2CA300663C090800E2 +:1071F00025295F6001201821240200032442FFFF9B +:10720000AC6000000441FFFD2463000410E0001A9C +:1072100024E3FFFF0003294210A0000A0000202100 +:107220002406FFFF3C03080024635F602484000100 +:107230000085502BAC660000250800011540FFFBBF +:107240002463000430E2001F10400008000868803A +:10725000240C0001004C38040008588001692821E2 +:1072600024E6FFFF03E00008ACA6000001A94021CE +:107270002409FFFFAD09000003E000080000000042 +:10728000AF4400283C04000C034420210005288260 +:107290000A000CC000003021000421803C03600083 +:1072A000AC6410080000000000052980AC65100CDB +:1072B0000000000003E000088C62100C27BDFFE80E +:1072C0000080282124040038AFBF00140E0009D527 +:1072D000AFB0001024040E00AF4400283C10000C96 +:1072E00003502021240500100E000CC000003021A6 +:1072F00003501021AC400000AC40000424040038CE +:107300008FBF00148FB0001024053FFF27BD001869 +:107310000A0009D58C430000000421803C03600072 +:10732000AC641008000000008C62100C03E0000840 +:107330000002118227BDFFC8AFB400208F940068FF +:10734000AFBE0030AFB7002CAFB600280000B821A8 +:107350000080B021241E00C0AFBF0034AFB50024B0 +:10736000AFB3001CAFB20018AFB10014AFB0001043 +:107370000A000A12AFA5003C504000018F9400683B +:1073800027DEFFFF13C00028269400048E92000021 +:107390003C03080024635DA01240FFF70283102B1A +:1073A0003C04080024845AA4028410230002A8C0CC +:1073B000000098210A000A212411000100118840D0 +:1073C000122000260000000002B380210251282470 +:1073D0000200202110A0FFF9267300010E0009DE33 +:1073E000000000000016684032EC000101AC2021D2 +:1073F0000E0009D5020028218F89009426F700018C +:107400008FA6003C3AEB0001316A00012528FFFFFE +:107410000011382702CAB021AF88009416E6FFE7B2 +:1074200002479024AE92000002E010218FBF00348A +:107430008FBE00308FB7002C8FB600288FB5002488 +:107440008FB400208FB3001C8FB200188FB10014CE +:107450008FB0001003E0000827BD00383C0E080084 +:1074600025CE5DA0028E102B0A000A0DAE92000000 +:1074700027BDFFD8AFB10014AFB00010AFBF0020E0 +:10748000AFB3001CAFB2001800A0882110A0001FED +:10749000000480403C13080026735AA40A000A5ACC +:1074A0002412000112200019261000010E0009F517 +:1074B00002002021000231422444FFA0000618806F +:1074C0003045001F2C8217A1007318212631FFFFC1 +:1074D0001040FFF400B230048C690000020020214B +:1074E00024053FFF012640241500FFEE0126382524 +:1074F0000E0009D5AC6700008F8A009426100001A9 +:10750000254700011620FFE9AF8700948FBF0020B8 +:107510008FB3001C8FB200188FB100148FB0001011 +:1075200003E0000827BD00288F85009C00805821BB +:107530000000402100004821240A001F3C0C0800E4 +:10754000258C5E1C3C0D080025AD5DA48CA60000BA +:1075500050C000140000402100AD1023000238C0CC +:10756000240300010A000A930000202115000003F3 +:1075700000E410212448202400004821252900018E +:10758000512B00132506DFDC106000062484000167 +:1075900000C3702415C0FFF5000318400A000A91CB +:1075A0000000402110AC002624A300040060282124 +:1075B000254AFFFF1540FFE5AF85009C512B0004D5 +:1075C0002506DFDC0000402103E000080100102157 +:1075D0000006614230C5001F000C50803C070800C7 +:1075E00024E75DA424040001014730211120000F8D +:1075F00000A420043C05080024A55E20148000059A +:107600002529FFFF24C6000410C50011000000005A +:10761000240400018CCF00000004C0270004204097 +:1076200001F868241520FFF5ACCD00008F99007893 +:1076300001001021032B482303E00008AF890078E4 +:107640003C05080024A55DA40A000A9B0000402117 +:107650003C06080024C65DA40A000AB42404000104 +:10766000308800FF240200021102000A24030003F4 +:107670001103005C8F8900A4240400041104005F3E +:1076800024050005110500670000182103E000082B +:10769000006010218F8900483C0C0800258C5EE0BA +:1076A0003C04080024845F60240300201060000F65 +:1076B00000005821240D0002240E00033C0F080096 +:1076C00025EF5EE08D27000014E0000B30F9FFFF8E +:1076D000252900040124C02B53000001018048210A +:1076E0002463FFFF5460FFF88D270000016018211C +:1076F00003E0000800601021132000323C0500FF69 +:1077000030E200FF004030211040004200005021D4 +:1077100024050001000020210005C84000A6C02467 +:1077200017000003332500FF14A0FFFB2484000191 +:10773000012CC023001828C000AA6021008C502111 +:107740003144001F240C0001008C18040003102792 +:1077500000E23024110D0041AD260000110E004C56 +:10776000000A1840110D00368F87006C510E00562C +:107770008F8C0060240D0004110D005A8F8E008440 +:10778000240E0005150EFFDA01601821240B1430B9 +:1077900011400006000018218F8400A0246300011E +:1077A000006A402B1500FFFD016458218F8A00807C +:1077B000AF89008C016018212549FFFF0A000AEB00 +:1077C000AF89008000E52024000736021080FFD03A +:1077D000240A001800075402314600FF0A000AF389 +:1077E000240A00103C0C0800258C5EA03C04080014 +:1077F00024845EE00A000ADA240300103C0C08002E +:10780000258C5E203C04080024845EA00A000AD96E +:107810008F89009000071A02306600FF0A000AF301 +:10782000240A00088F89008C3C0C0800258C5F60BE +:107830003C04080024845F700A000ADA2403000470 +:10784000000A4080250B003024E6FFFF016018216C +:10785000AF8900480A000AEBAF86006C000AC982B3 +:10786000001978803C07080024E75EA001E720218A +:10787000000A18428C8F00003079001F032C380456 +:107880000007C02701F860240A000B08AC8C000038 +:10789000000331420006288000AF28213062001F1B +:1078A0008CB8000024630001004CC804000321428E +:1078B000001938270004108003073024004F2021CE +:1078C0000A000B4CACA60000000A68C025AB0032D1 +:1078D000258AFFFF01601821AF8900A40A000AEB86 +:1078E000AF8A0060254B1030AF89009001601821ED +:1078F00025C9FFFF0A000AEBAF8900843086000724 +:107900002CC2000610400014000000000006408059 +:107910003C030800246357BC010338218CE40000B9 +:1079200000800008000000002409000310A9000ED8 +:1079300000000000240A000510AA000B000000004F +:10794000240B000110AB0008000000008F8C00A089 +:1079500010AC00050000000003E00008000010214A +:107960000A000A7900A020210A000AC700C02021CD +:1079700027BDFFE8308400FF240300021083000BC2 +:10798000AFBF0010240600031086003A240800044C +:1079900010880068240E0005108E007F2CAF143074 +:1079A0008FBF001003E0000827BD00182CA2003094 +:1079B0001440FFFC8FBF001024A5FFD0000531C28A +:1079C000000668803C07080024E75EE001A730213C +:1079D0008CC900000005288230AC001F240B000178 +:1079E000018B50048F840048012A4025ACC8000058 +:1079F0008C83000050600001AF8600488F98006CB7 +:107A000030AE000124A6FFFF270F000115C00002C1 +:107A1000AF8F006C24A600010006414200082080C0 +:107A2000008718218C79000030C2001F2406000155 +:107A30000046F804033F382410E0FFDA8FBF00103F +:107A40000005C182001870803C0F080025EF5EA081 +:107A500001CF48218D2B00000005684231A5001F91 +:107A600000A66004016C502527BD001803E0000843 +:107A7000AD2A00002CA7003014E0FFCA8FBF001011 +:107A800030B900071723FFC724A8FFCE00086A02F9 +:107A9000000D60803C0B0800256B5EA0018B30213F +:107AA0008CC40000000828C230AA001F240800016E +:107AB000014848048F8200A400891825ACC3000047 +:107AC0008C5F000053E00001AF8600A40005704009 +:107AD000000E7942000F28803C04080024845EE0F8 +:107AE00000A418218C6B000025DF000131CD001FA0 +:107AF000001F514201A86004016C4825000A108053 +:107B0000AC690000004428218CA600008F9800601A +:107B100033F9001F8FBF00100328380400C77825F1 +:107B2000270E000127BD0018ACAF000003E00008DD +:107B3000AF8E006024A5EFD02CB804001300FF998D +:107B40008FBF001000053142000658803C0A080033 +:107B5000254A5E20016A30218CC4000030A3001F3A +:107B600024090001006910048F9900900082F82513 +:107B7000ACDF00008F27000050E00001AF860090CE +:107B80008F8D00848FBF001027BD001825AC000129 +:107B900003E00008AF8C008415E0FF828FBF001067 +:107BA0008F8600A0000610400046F821001F21002B +:107BB00003E4C8210019384024F8143000B8402BE1 +:107BC0001100FF788FBF001024A4EBD00E00021329 +:107BD00000C0282100027942000F70803C0D08008F +:107BE00025AD5F6001CD20218C8B0000304C001F43 +:107BF00024060001018618048F89008C016350253A +:107C0000AC8A00008D25000050A00001AF84008CDC +:107C10008F9800808FBF001027BD00182708000133 +:107C200003E00008AF88008030A5000724030003AC +:107C300010A3001028A2000414400008240700022A +:107C40002403000410A300152408000510A8000F49 +:107C50008F8500A003E000080000000014A7FFFDCE +:107C60000080282114C3FFFB240400020A000B8BB0 +:107C700000000000240900050080282110C9FFFB36 +:107C80002404000303E000080000000014C5FFF115 +:107C9000008028210A000B8B24040005240A00011F +:107CA0000080282110CAFFF12404000403E000082A +:107CB0000000000027BDFFE0AFB00010000581C24A +:107CC0002603FFD024C5003F2C6223D024C6007FAA +:107CD000AFB20018AFB10014AFBF001C309100FF6D +:107CE000000691C2000529820200202110400008F0 +:107CF0002403FFFF0E000A4B0000000002002021B9 +:107D0000022028210E000C390240302100001821E9 +:107D10008FBF001C8FB200188FB100148FB00010FD +:107D20000060102103E0000827BD002027BDFFD818 +:107D300024A2007FAFB3001CAFB20018000299C2AA +:107D4000309200FF24A3003F02402021026028213E +:107D5000AFB10014AFB00010AFBF00200E000B6E2B +:107D60000003898200408021004020210220282138 +:107D700014400009000018218FBF00208FB3001CA1 +:107D80008FB200188FB100148FB000100060102166 +:107D900003E0000827BD00280E0009FC00000000D9 +:107DA00000402821020020211051FFF3001019C0CB +:107DB0000E000A4B00000000020020210240282192 +:107DC0000E000C39026030218FBF00208FB3001CE1 +:107DD0008FB200188FB100148FB00010000018216E +:107DE0000060102103E0000827BD00283084FFFF59 +:107DF00030A5FFFF1080000700001821308200012D +:107E00001040000200042042006518211480FFFB8E +:107E10000005284003E000080060102110C00007A2 +:107E2000000000008CA2000024C6FFFF24A500046F +:107E3000AC82000014C0FFFB2484000403E00008AF +:107E40000000000010A0000824A3FFFFAC86000083 +:107E500000000000000000002402FFFF2463FFFF79 +:107E60001462FFFA2484000403E00008000000000C +:107E700030A5FFFF8F4201B80440FFFE3C076015AC +:107E800000A730253C031000AF440180AF400184BF +:107E9000AF46018803E00008AF4301B88F8500D0EA +:107EA0002C864000008018218CA700840087102BAE +:107EB00014400010000000008CA800842D06400033 +:107EC00050C0000F240340008CAA0084008A482B75 +:107ED000512000018CA3008400035A42000B208033 +:107EE0003C05080024A558200085182103E000085F +:107EF0008C62000014C0FFF4000000002403400066 +:107F000000035A42000B20803C05080024A558209D +:107F10000085182103E000088C6200008F8300D0E8 +:107F2000906600D024C50001A06500D08F8500D0E8 +:107F3000906400D090A200D210440017000000000E +:107F4000936C00788F8B00BC318A00FFA16A000C13 +:107F500025490001938700C4312200FF3048007F8B +:107F60001107000B00026827A36200788F4E01788A +:107F700005C0FFFE8F9900B0241800023C0F1000CE +:107F8000AF590140A358014403E00008AF4F017806 +:107F90000A000D0931A20080A0A000D00A000CFF49 +:107FA000000000008F8700D027BDFFC8AFBF0030A2 +:107FB000AFB7002CAFB60028AFB50024AFB4002097 +:107FC000AFB3001CAFB20018AFB10014AFB00010D7 +:107FD00094E300E094E200E2104300D72405FFFFA1 +:107FE0003C047FFF3497FFFF2415FF800A000DF04B +:107FF0003C16000E108A00D18FBF00308F9100B068 +:108000003C1808008F18005C001230C0001291402C +:108010000311702101D57824AF4F002C94EC00E2BD +:1080200031CD007F01BA5821318A7FFF0176482186 +:10803000000A804002091021945300003C08080007 +:108040008D0800580246C02132733FFF001319808B +:10805000010320210224282130BF007F03FAC82118 +:1080600000B5A024AF54002C0336A0218E87001049 +:108070008E8F003003785821256D008800EF702323 +:10808000240C0002AE8E0010AF8D00ACA16C0088F5 +:10809000976A003C8E8400308F9100AC0E000CD6A5 +:1080A0003150FFFF00024B80020940253C02420094 +:1080B00001022025AE2400048E8300048F8D00ACC5 +:1080C0008E860000240E0008ADA3001CADA600188B +:1080D000ADA0000CADA00010929F000A33F900FF84 +:1080E000A5B90014968500083C1F000CA5A5001634 +:1080F0009298000A331100FFA5B100209690000865 +:1081000024180005A5B00022ADA00024928F000B1A +:108110002410C00031E700FFA5A70002A1AE0001B6 +:108120008E8C00308F8B00AC8F8400B0AD6C00085B +:108130003C0A08008D4A005401444821013540247E +:10814000AF4800283C0208008C4200540044302113 +:1081500030C3007F007AC821033F282102458821CF +:10816000AF9100BCAF8500C0A23800008F8A00BC70 +:108170002403FFBF2418FFDF954F000201F03824CD +:1081800000F37025A54E0002914D000231AC003F76 +:10819000358B0040A14B00028F8600BC8F8900D038 +:1081A000ACC000048D28007C3C098000ACC80008ED +:1081B00090C4000D3082007FA0C2000D8F8500BCEE +:1081C00090BF000D03E3C824A0B9000D8F9100BC3F +:1081D0009233000D02789024A232000D8E9000346C +:1081E0008F8B00BCAD7000108E87002C8E8F0030FE +:1081F00000EF7023AD6E0014916D001831AC007F5C +:10820000A16C00188F9F00BC8E8A00308FE8001888 +:10821000015720240109302400C41025AFE20018C2 +:108220009283000AA3E3001C969900088F8500BC86 +:108230008F9800D0A4B9001E8E9000308E8400303C +:108240000E0002138F0500848F8500D0000291403C +:108250000002990090AF00BC0253882100403021F9 +:1082600031E7000210E0000302118021000290803B +:108270000212802190B900BC3327000410E00002F4 +:108280000006F880021F80218E9800308F8B00BC82 +:1082900024068000330F0003000F702331CD00034C +:1082A000020D6021AD6C000494A400E294AA00E2E7 +:1082B00094B000E231497FFF2522000130537FFF57 +:1082C0000206182400734025A4A800E294A400E24A +:1082D0003C1408008E94006030917FFF123400221D +:1082E000000000000E000CF6000000008F8700D098 +:1082F0000000282194F300E094F000E21213000F34 +:108300008FBF003090E900D090E800D1313200FFFB +:10831000310400FF0244302B14C0FF36264A00010E +:1083200090EE00D2264B000131CD00FF008D602180 +:10833000158BFF338F9100B08FBF00308FB7002CAB +:108340008FB600288FB500248FB400208FB3001C97 +:108350008FB200188FB100148FB0001000A0102150 +:1083600003E0000827BD003894A300E20066402423 +:10837000A4A800E290A400E290B900E2309100FFCE +:108380000011A1C20014F827001F39C03332007F4A +:10839000024730250A000DE8A0A600E23084FFFF66 +:1083A00030A5FFFFAF440018AF45001C03E00008F4 +:1083B0008F42001427BDFFB8AFB000208F9000D0CF +:1083C0003084FFFFAFA40010AFBF0044AFBE004039 +:1083D000AFB7003CAFB60038AFB50034AFB4003033 +:1083E000AFB3002CAFB20028AFB10024A7A0001893 +:1083F000920600D1920500D030C400FF30A300FFE8 +:108400000064102B10400122AFA00014920900D08C +:108410008FB50010312800FF0088382324F4FFFFB7 +:108420000014882B0015982B02339024524001260B +:108430008FB40014961E0012961F00108FB7001004 +:1084400003DFC823001714000019C400000224032E +:108450000018140302E2B02A52C00001004020219B +:108460000284282B10A0000200801821028018210D +:1084700000033C0000071C033064FFFF2C8600094A +:1084800014C000020060B821241700088E0A0008FA +:10849000001769808E09000C31ABFFFF3C0C001007 +:1084A000016C402527520400AF4A0038AF9200B853 +:1084B000AF49003CAF480030000000000000000061 +:1084C00000000000000000000000000000000000AC +:1084D00000000000000000008F4F000031EE00207F +:1084E00011C0FFFD0017982A027110240A000E83A4 +:1084F0000000B02155E001019258000131130080C5 +:10850000126001CF012020219655001232A5FFFFF5 +:108510000E000CCBA7B500188F9000D00291A023BD +:1085200026CD00018F9100B8000DB4000016B403F1 +:108530002638004002D7582A0014882B2405000151 +:108540000300902101711024AF9800B8AFA500146A +:10855000104001BC8F8900B03C0C08008D8C005489 +:10856000240BFF80921E00D001895021014B28244A +:10857000921900D0AF4500288E4700103C08080033 +:108580008D0800583C1808008F18005430E33FFF56 +:108590000003218001043021012658212402FF809C +:1085A0000162F824920C00D0AF5F002C92480000CA +:1085B00033D100FF333500FF0309982100117140CA +:1085C000001578C0326D007F01CF382101BA282113 +:1085D000318300FF3164007F3C0A000C00AA88212F +:1085E0000367F02100033140009A10213108003F59 +:1085F0003C1F000E00D1C021005F982127D90088C0 +:108600002D150008AF9100C0AF9900ACAF9800BC29 +:10861000AF9300B412A0018A00008821240E00014B +:10862000010E4004310D005D11A0FFB2310F0002B8 +:108630008E4A00283C0300803C04FFEFAE6A000035 +:108640008E450024A260000A3488FFFFAE65000456 +:108650009247002C3C1FFF9F37FEFFFFA267000CD4 +:108660008E62000C3C180040A267000B00433025CE +:1086700000C8C824033E88240238A825AE75000C23 +:108680008E490004AE6000183C0F00FFAE69001474 +:108690008E4D002C35EEFFFF8F8B00B001AE6024B5 +:1086A000AE6C00108E470008A660000896450012C8 +:1086B000AE6700208E42000C30B03FFF00105180AA +:1086C000AE6200248E5E0014014B182130A400011C +:1086D000AE7E00288E590018000331C2000443808A +:1086E000AE79002C8E51001C00C8F821A67F001C1A +:1086F000AE710030965800028E550020A678001EFC +:10870000AE75003492490033313000045600000544 +:10871000925000008F8C00D08D8B007CAE6B0030AF +:10872000925000008F8F00BCA1F00000924E0033E9 +:1087300031CD000251A00007925E00018F8900BC7C +:108740002418FF80913100000311A825A1350000F5 +:10875000925E00018F9900BC2409FFBF240BFFDF4C +:10876000A33E00018F9500BC92B8000D3311007F2D +:10877000A2B1000D8F8E00BC91D0000D02097824AB +:10878000A1CF000D8F8800BC8E6D0014910A000DE2 +:108790002DAC0001000C2940014B382400E51825C0 +:1087A000A103000D964200128F8800BC8F8700D075 +:1087B000A50200028E45000490FF00BC30A4000317 +:1087C0000004302330DE000300BE102133F9000224 +:1087D00017200002244400342444003090E200BCFE +:1087E00000A2302430DF000417E0000224830004DC +:1087F000008018218F8F00AC24090002AD03000413 +:10880000A1E90000924E003F8F8D00ACA1AE0001A7 +:108810008F9500AC924C003F8E440004A6AC000241 +:10882000976B003C0E000CD63170FFFF00025380A6 +:10883000020A38253C05420000E51825AEA30004D5 +:108840008F8600AC8E480038ACC800188E440034C7 +:10885000ACC4001CACC0000CACC00010A4C0001420 +:10886000A4C00016A4C00020A4C00022ACC00024F4 +:108870008E6400145080000124040001ACC4000880 +:108880000E000CF6241100010A000E768F9000D025 +:10889000920F00D2920E00D08FB5001031EB00FF86 +:1088A00031CD00FF008D6023016C50212554FFFF66 +:1088B0000014882B0015982B023390241640FEDDFF +:1088C000000000008FB400148FBF00448FBE004032 +:1088D0003A8200018FB7003C8FB600388FB5003464 +:1088E0008FB400308FB3002C8FB200288FB10024DA +:1088F0008FB0002003E0000827BD0048331100209E +:10890000122000EF24150001921E00BC241F00015C +:108910000000A82133D900011320000DAFBF001CB7 +:108920008E4400148E0800840088102B144000022E +:10893000008030218E0600848E03006400C3A82BC3 +:1089400016A0000200C020218E0400640080A8212F +:108950008E4700148E05006400E5302B14C0000221 +:1089600000E020218E0400640095F02313C0000471 +:108970008FAC001C240A0002AFAA001C8FAC001CA4 +:10898000028C582B156000A8000018218E4F00386B +:108990008E6D000C3C0E0080AE6F00008E4A0034DD +:1089A0003C10FF9F01AE5825AE6A00049246003F7E +:1089B000360CFFFF016C38243C0500203C03FFEF20 +:1089C000A266000B00E510253468FFFF8F8700B812 +:1089D0000048F8243C04000803E4C825AE79000CE4 +:1089E0008CF80014AE60001802BE7821AE78001436 +:1089F0008CF10018AE71001C8CE90008AE690024EF +:108A00008CEE000CAE6F002CAE600028AE6E002025 +:108A1000A6600038A660003A8CED001401B58023F2 +:108A2000021E902312400011AE72001090EA003D29 +:108A30008E6500048E640000000A310000A6C82183 +:108A4000000010210326402B0082F82103E8C021FA +:108A5000AE790004AE78000090F1003DA271000AEA +:108A60008F8900B895320006A67200088F9800AC76 +:108A70002419000202A02021A31900009769003CDC +:108A80008F9200AC0E000CD63131FFFF00027B80CC +:108A90008F8500B8022F68253C0E420001AE80256C +:108AA000AE5000048F8400AC8CAC0038AC8C001845 +:108AB0008CAB0034AC8B001CAC80000CAC80001084 +:108AC000A4800014A4800016A4800020A4800022AA +:108AD000AC80002490A7003FA487000212A00135BB +:108AE0002403000153C0000290A2003D90A2003E6A +:108AF00024480001A08800018F9F00ACAFF500085A +:108B00008F8300D024070034906600BC30C500027B +:108B100050A00001240700308F9200B88F8A00BC5B +:108B2000906D00BC924B00002412C00032A50003DF +:108B3000A14B00008F8600B88F8800BC240200047F +:108B400090C400010045182330790003A1040001FE +:108B50008F8A00BC8F9F00B800F53821955800021D +:108B600097E9001200F9382103128824312F3FFFC2 +:108B7000022F7025A54E00029150000231A800047A +:108B8000320C003F358B0040A14B000212A00002C6 +:108B90008F8500BC00E838218F8E00D0ACA7000480 +:108BA000240BFFBF8DCD007C2EA400012403FFDF2A +:108BB000ACAD000890B0000D00044140320C007FC5 +:108BC000A0AC000D8F8600BC90CA000D014B102494 +:108BD000A0C2000D8F8700BC90E5000D00A3F82413 +:108BE00003E8C825A0F9000D8F9100B88F8D00BC57 +:108BF0008E380020ADB800108E290024ADA90014D5 +:108C00008E2F0028ADAF00188E2E002C0E000CF613 +:108C1000ADAE001C8FB0001C240C0002120C00EE44 +:108C20008F9000D08FA3001C006088211460000288 +:108C30000060A8210000A02156A0FE390291A023C7 +:108C40000014882B8FA90010960700103C1E0020EE +:108C50000136402302C750213112FFFFA60A00103F +:108C6000AFB20010AF5E0030000000009617001099 +:108C7000961300121277008F000000008E05000C82 +:108C80008E0B00080016698000AD7021000DC7C36F +:108C900001CDA82B0178782101F56021AE0E000CE2 +:108CA000AE0C00088FB300100013B82B02378024DD +:108CB0001200FF048F9000D00A000E3C000000005C +:108CC0008E4D0038A6600008240B0003AE6D000036 +:108CD0008E500034A260000A8F9800B8AE70000475 +:108CE0003C0500809311003FA26B000C8E6F000CBE +:108CF0003C0EFF9FA271000B01E5102535CCFFFF54 +:108D00003C03FFEF8F9200B8004C30243464FFFF27 +:108D100000C4F824AE7F000C8E590014964800124F +:108D20008F8A00B0AE7900108E490014AE60001832 +:108D3000AE600020AE690014AE6000248E470018BB +:108D400031093FFF0009F180AE6700288E4D000811 +:108D500003CA802131180001AE6D00308E4F000C27 +:108D60008F8C00AC001089C200185B80022B282178 +:108D7000240E0002A665001CA6600036AE6F002C13 +:108D8000A18E00009763003C8F8A00AC3C04420037 +:108D90003062FFFF00443025AD4600048F9F00B8CD +:108DA000240700012411C0008FF30038240600348A +:108DB000AD5300188FF90034AD59001CAD40000CC4 +:108DC000AD400010A5400014A5400016A5400020AD +:108DD000A5400022AD400024A5550002A147000196 +:108DE0008F9E00AC8F8800B88F9200BCAFD5000872 +:108DF000910D0000A24D00008F9000B88F8B00BC39 +:108E000092180001A17800018F8400BC94850002B3 +:108E100000B1782401E97025A48E0002908C000234 +:108E20003183003FA08300028F8300D08F8400BC79 +:108E3000906200BC305300025260000124060030F2 +:108E4000AC8600048C6F007C2403FFBF02A0882145 +:108E5000AC8F0008908E000D31CC007FA08C000DEF +:108E60008F8600BC90C2000D00432024A0C4000DDA +:108E70008F8900BC913F000D37F90020A139000D0A +:108E80008F8800B88F9300BC8D070020AE6700105C +:108E90008D0A0024AE6A00148D1E0028AE7E0018D4 +:108EA0008D12002C0E000CF6AE72001C0A00103D54 +:108EB0008F9000D0960E00148E03000431CCFFFF7B +:108EC000000C10C000622021AF44003C8E1F000443 +:108ED0008F46003C03E6C8231B20003C0000000036 +:108EE0008E0F000025E200013C05001034B500089B +:108EF000AF420038AF550030000000000000000015 +:108F00000000000000000000000000000000000061 +:108F100000000000000000008F580000330B00200C +:108F20001160FFFD000000008F5304003C0D002085 +:108F3000AE1300088F570404AE17000CAF4D00307D +:108F4000000000003C0608008CC600442416000106 +:108F500010D600BD00000000961F00123C0508005E +:108F60008CA5004000BFC821A61900129609001464 +:108F700025270001A6070014960A00143144FFFFBC +:108F80005486FF498FB30010A60000140E000E1681 +:108F900030A5FFFF3C0408008C84002496030012D7 +:108FA0000044102300623023A60600120A00105964 +:108FB0008FB30010A08300018F8200AC2404000155 +:108FC000AC4400080A000FF08F8300D08E0200002E +:108FD0000A0010EA3C0500108F8200C08FA7001C19 +:108FE000921800D0920B00D0920E00D0331100FFE7 +:108FF000316900FF00117940000928C001E56021B6 +:1090000031C300FF036C50210003314000C2C8216E +:10901000255F0088AF9F00ACAF9900BCA1470088D6 +:109020009768003C03C020218F9100AC0E000CD645 +:109030003110FFFF00026B80020DC0253C0442008E +:109040008F8D00B803045825AE2B00048DA900387D +:109050008F8B00AC0000882100118100AD690018E1 +:109060008DAF00343C087FFF3504FFFFAD6F001C5F +:1090700091AC003E8D65001C8D660018000C190037 +:10908000000C770200A33821020E102500E3F82B14 +:1090900000C2C821033F5021AD67001CAD6A001813 +:1090A000AD60000CAD60001091B8003E24050005D5 +:1090B00003C45024A578001495A9000403C02021FE +:1090C000A569001691AF003EA56F002095B1000480 +:1090D000A5710022AD60002491AE003FA56E000294 +:1090E00091B0003E91AC003D01901023244300015B +:1090F000A16300018F8600AC8F9F00BCACDE00082E +:10910000A3E500008F9000BC8F9900B82405FFBF35 +:1091100096070002973800120247782433093FFF70 +:1091200001E98825A6110002921200022418FFDF2F +:10913000324E003F35CD0040A20D00028F8600BCAC +:109140008F8C00D02412FFFFACC000048D8B007CFC +:109150003C0C8000ACCB000890C2000D3043007F77 +:10916000A0C3000D8F8700BC90FF000D03E5C8244D +:10917000A0F9000D8F9100BC9229000D01387824D0 +:10918000A22F000D8F9000BCAE120010AE1500147F +:10919000920E00182415FF8002AE6825A20D00185B +:1091A0008F8500BC8F8300B88CAB0018016C102435 +:1091B000004A3025ACA600189068003EA0A8001C0C +:1091C0008F9F00B88F8700BC8F9800D097F900045C +:1091D000A4F9001E0E0002138F0500848F8600D0B4 +:1091E000000279400002490090D200BC01E98821C8 +:1091F000004028213255000212A0000303D1202193 +:109200000002A8800095202190CD00BC31B200045E +:109210001240000333DF0003000540800088202156 +:10922000240600048F9E00BC00DFC8233327000300 +:1092300000875021AFCA00040E000CF6A665003866 +:109240000A0010388F9000D0961E00123C080800CB +:109250008D080024011E9021A61200120A00105948 +:109260008FB3001027BDFFE03C1808008F18005096 +:10927000AFB00010AFBF0018AFB10014AF8400B0A2 +:1092800093710074030478212410FF8031EE007F75 +:109290003225007F01F0582401DA68213C0C000AD5 +:1092A000A38500C401AC2821AF4B002494A9001071 +:1092B0009768000690A600620080382124020030E2 +:1092C0000109202330C300F0AF8500D010620019DF +:1092D0003090FFFF90AE0062240DFFF0240A005092 +:1092E00001AE6024318B00FF116A002F00000000E6 +:1092F00016000007241F0C00AF5F00248FB100147C +:109300008FBF00188FB0001003E0000827BD0020B9 +:109310000E000E1C02002021241F0C00AF5F002451 +:109320008FB100148FBF00188FB0001003E0000849 +:1093300027BD002094A200E094A400E290BF011396 +:10934000008218263079FFFF33E700C014E00009DF +:109350002F31000116000038000000005620FFE603 +:10936000241F0C000E000D18000000000A0011ED73 +:10937000241F0C001620FFDE000000000E000D1858 +:10938000000000001440FFDC241F0C001600002227 +:109390008F8300D0906901133122003FA062011336 +:1093A0000A0011ED241F0C0094AF00D48F8600D466 +:1093B00000E02821240400050E000C5C31F0FFFFC2 +:1093C0001440000524030003979100E600001821D3 +:1093D0002625FFFFA78500E68F5801B80700FFFE8E +:1093E0003C196013AF400180241F0C00AF50018472 +:1093F000007938253C101000AF4701888FB1001468 +:10940000AF5001B8AF5F00248FB000108FBF0018BD +:1094100003E0000827BD00200E000E1C02002021E2 +:109420005040FFB5241F0C008F8300D090690113BA +:109430000A0012163122003F0E000E1C02002021ED +:109440001440FFAD241F0C00122000078F8300D0B2 +:10945000906801133106003F34C20040A06201133E +:109460000A0011ED241F0C000E000D180000000072 +:109470005040FFA1241F0C008F8300D0906801137F +:109480003106003F0A00124634C20040AF9B00C8BC +:1094900003E00008AF8000EC3089FFFF0009404284 +:1094A0002D020041000921801440000200095040B3 +:1094B00024080040000830C0000811400046582130 +:1094C000256701A800E2C821272F007F2418FF800C +:1094D00001F818240064302100CA702125CC00FF57 +:1094E000240DFF00018D202425650088240A0088B2 +:1094F0003C010800AC2A004C3C010800AC2500509F +:10950000AF8400D43C010800AC2900603C01080095 +:10951000AC2800643C010800AC2700543C01080062 +:10952000AC2300583C010800AC26005C03E00008B6 +:1095300000000000308300FF30C6FFFF30E400FF72 +:109540008F4201B80440FFFE00034C00012438257F +:109550003C08600000E820253C031000AF45018076 +:10956000AF460184AF44018803E00008AF4301B86F +:109570008F86001C3C096012352700108CCB00043C +:109580003C0C600E35850010316A00062D48000144 +:10959000ACE800C48CC40004ACA431808CC20008C8 +:1095A00094C30002ACA2318403E00008A78300E466 +:1095B0003C0308008C6300508F8400E88F86001CF9 +:1095C0002402FF800064C0210302C824AF59002890 +:1095D0008CCD00043305007F00BA78213C0E000CCE +:1095E00001EE2821ACAD00588CC80008AF8500D032 +:1095F0003C076012ACA8005C8CCC001034E8001072 +:10960000ACAC000C8CCB000CACAB000894AA0014E2 +:109610003C0208008C42004425490001A4A9001422 +:1096200094A400143083FFFF106200178F8400D0D1 +:109630003C0A08008D4A0040A4AA00128CCE0018F3 +:10964000AC8E00248CCD0014AC8D00208CC700188B +:10965000AC87002C8CCC001424060001AC8C0028B4 +:109660008D0B00BC5166001A8D0200B48D0200B84B +:10967000A482003A948F003AA48F003C948800D4CE +:1096800003E000083102FFFF3C0908008D29002497 +:10969000A4A000148F8400D0A4A900128CCE0018BE +:1096A000AC8E00248CCD0014AC8D00208CC700182B +:1096B000AC87002C8CCC001424060001AC8C002854 +:1096C0008D0B00BC5566FFEA8D0200B88D0200B418 +:1096D000A482003A948F003AA48F003C948800D46E +:1096E00003E000083102FFFF8F86001C3C0C0800DD +:1096F0008D8C0050240BFF808CCD00083C03000CA7 +:10970000000D51C0018A4021010B4824AF8A00E8B6 +:10971000AF49002890C700073105007F00BA10212B +:109720000043282130E4000410800039AF8500D0C8 +:1097300090CF000731EE000811C000380000000093 +:109740008CD9000C8CC400140324C02B13000030EF +:10975000000000008CC2000CACA200648CCD00188C +:109760002402FFF8ACAD00688CCC0010ACAC0080DB +:109770008CCB000CACAB00848CCA001CACAA007C67 +:1097800090A900BC01224024A0A800BC90C30007FF +:109790003067000810E000048F8500D090AF00BC57 +:1097A00035EE0001A0AE00BC90D9000733380001AF +:1097B000130000088F8300D08F8700D0240400346A +:1097C00090E800BC35030002A0E300BC8F8300D00A +:1097D000AC6400C090C900073126000210C000052B +:1097E00000000000906A00BC35420004A06200BC8A +:1097F0008F8300D09065011330AD003FA06D011341 +:109800008F8C00D0958B00D403E000083162FFFFFD +:109810008CC200140A001305000000000A001306A1 +:10982000ACA0006427BDFFD8AFB000108F90001C23 +:10983000AFBF0024AFB40020AFB20018AFB1001426 +:10984000AFB3001C9613000E3C07600A3C14600680 +:109850003264FFFF369300100E00125534F40410EA +:109860008F8400D43C11600E0E00099B363100102D +:10987000920E00153C0708008CE700603C12601255 +:1098800031CD000FA38D00F08E0E00048E0D000868 +:1098900096080012961F00109619001A9618001EBE +:1098A000960F001C310CFFFF33EBFFFF332AFFFF45 +:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD +:1098C0003C010800AC2C00243C010800AC2A0044F8 +:1098D000AE293178AE26317C92020015960300162F +:1098E00036520010304400FF3065FFFF3C06080090 +:1098F0008CC60064AE243188AE4500B492080014D2 +:1099000096190018241F0001011FC004332FFFFF08 +:109910003C0508008CA50058AE5800B8AE4F00BCFE +:10992000920C0014AF8E00D8AF8D00DC318B00FF9D +:10993000AE4B00C0920A0015AE670048AE66004C00 +:10994000314900FFAE4900C8AE65007C3C03080009 +:109950008C6300503C0408008C84004C3C080800D8 +:109960008D0800543C0208008C42005C8FBF00242C +:10997000AE6300808FB00010AE8300748FB3001C04 +:10998000AE22319CAE4200DCAE2731A0AE2631A41F +:10999000AE24318CAE233190AE283194AE2531986F +:1099A000AE870050AE860054AE8500708FB10014B3 +:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B +:1099C000AE4800D4AE4500D88FB400208FB2001846 +:1099D00003E0000827BD002827BDFFE0AFB1001459 +:1099E000AFBF0018241100010E000845AFB00010F1 +:1099F00010510005978400E6978300CC0083102B5C +:109A0000144000088F8500D4240700028FBF00187F +:109A10008FB100148FB0001000E0102103E00008A7 +:109A200027BD00200E000C7A24040005AF8200E858 +:109A30001040FFF6240700020E0008498F90001C1A +:109A4000979F00E68F9900E88F8D00C827EF0001EF +:109A5000240E0050AF590020A78F00E6A1AE0000F1 +:109A60003C0C08008D8C00648F8600C8240A80009E +:109A7000000C5E00ACCB0074A4C0000694C9000AC0 +:109A8000241FFF803C0D000C012AC024A4D8000A2A +:109A900090C8000A24182000011F1825A0C3000A3E +:109AA0008F8700C8A0E000788F8500C800003821AB +:109AB000A0A000833C0208008C4200508F8400E884 +:109AC0000044782101FFC824AF590028960B0002FA +:109AD00031EE007F01DA6021018D3021A4CB00D46A +:109AE000960A0002AF8600D03C0E000425492401EE +:109AF000A4C900E68E080004ACC800048E03000868 +:109B0000ACC30000A4C00010A4C00014A0C000D0CA +:109B10008F8500D02403FFBFA0A000D13C04080023 +:109B20008C8400648F8200D0A04400D28E1F000C71 +:109B30008F8A00D0978F00E4AD5F001C8E19001053 +:109B400024100030AD590018A5400030A551005434 +:109B5000A5510056A54F0016AD4E0068AD580080C7 +:109B6000AD580084914D006231AC000F358B001070 +:109B7000A14B00628F8600D090C900633128007F1E +:109B8000A0C800638F8400D02406FFFF9085006387 +:109B900000A31024A08200638F9100D000E0102168 +:109BA000923F00BC37F90001A23900BC8F8A00D077 +:109BB000938F00F0AD580064AD5000C0914E00D3BB +:109BC000000F690031CC000F018D5825A14B00D347 +:109BD0008F8500D08F8900DCACA900E88F8800D881 +:109BE0008FBF00188FB100148FB0001027BD002068 +:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB +:109C000003E000080000000027BDFFE0AFB0001037 +:109C10008F90001CAFB10014AFBF00188E19000464 +:109C20003C1808008F180050240FFF80001989C0CD +:109C30000238702131CD007F01CF602401BA50215C +:109C40003C0B000CAF4C0028014B4021950900D47F +:109C5000950400D68E0700043131FFFFAF8800D095 +:109C60000E000913000721C08E0600048F8300C870 +:109C7000000629C0AF4500209064003E30820040BD +:109C8000144000068F8400D0341FFFFF948300D659 +:109C90003062FFFF145F000400000000948400D6CF +:109CA0000E0008A83084FFFF8E050004022030213A +:109CB0008FBF00188FB100148FB000102404002251 +:109CC00000003821000529C00A00127C27BD0020B1 +:109CD00027BDFFE0AFB100143091FFFFAFB000101F +:109CE000AFBF00181220001D000080218F86001CCD +:109CF0008CC500002403000600053F020005140285 +:109D000030E4000714830015304500FF2CA800063E +:109D10001100004D000558803C0C0800258C57D4DC +:109D2000016C50218D490000012000080000000056 +:109D30008F8E00EC240D000111CD005900000000B1 +:109D4000260B00013170FFFF24CA00200211202BD6 +:109D5000014030211480FFE6AF8A001C0200102170 +:109D60008FBF00188FB100148FB0001003E00008FF +:109D700027BD0020938700CE14E00038240400148F +:109D80000E001338000000008F86001C2402000122 +:109D90000A00147FAF8200EC8F8900EC24080002D7 +:109DA0001128003B2404001300002821000030216A +:109DB000240700010E00127C000000000A00147F3E +:109DC0008F86001C8F8700EC2405000214E5FFF647 +:109DD000240400120E0012E9000000008F8500E844 +:109DE00000403021240400120E00127C00003821B3 +:109DF0000A00147F8F86001C8F8300EC241F000351 +:109E0000147FFFD0260B00010E00129B0000000003 +:109E10008F8500E800403021240200022404001055 +:109E200000003821AF8200EC0E00127C0000000020 +:109E30000A00147F8F86001C8F8F00EC240600021E +:109E400011E6000B0000000024040010000028218F +:109E5000000030210A00149C240700010000282182 +:109E60000E00127C000030210A00147F8F86001C37 +:109E70000E0013A500000000144000128F99001C72 +:109E80008F86001C240200030A00147FAF8200ECBE +:109E90000E001431000000000A00147F8F86001CA1 +:109EA0000E00128B000000002402000224040014A3 +:109EB0000000282100003021000038210A0014B9D8 +:109EC000AF8200EC004038212404001097380002D3 +:109ED000000028210E00127C3306FFFF0A00147FC9 +:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D +:109EF0008C8500742402000100A61824AC83007431 +:109F000003E00008A082000510A000362CA200800B +:109F1000274A04003C0B000524090080104000077C +:109F20002408008030A6000F00C540212D030081C9 +:109F30001460000200A0482124080080AF4B0030CC +:109F400000000000000000000000000011000009F7 +:109F500000003821014030218C8D000024E70004EE +:109F600000E8602BACCD0000248400041580FFFACB +:109F700024C60004000000000000000000000000F3 +:109F80003C0E0006010E3825AF47003000000000EF +:109F900000000000000000008F4F000031E80010BA +:109FA0001100FFFD000000008F42003C8F43003C89 +:109FB0000049C8210323C02B130000040000000047 +:109FC0008F4C003825860001AF4600388F47003C93 +:109FD00000A9282300E96821AF4D003C14A0FFCE62 +:109FE0002CA2008003E000080000000027BDFFD085 +:109FF0003C020002AFB100143C11000CAF45003828 +:10A00000AFB3001CAF46003C00809821AF42003047 +:10A0100024050088AF44002803512021AFBF002849 +:10A02000AFB50024AFB40020AFB200180E0014F199 +:10A03000AFB000103C1F08008FFF004C3C18080018 +:10A040008F1800642410FF8003F3A82132B9007F29 +:10A0500002B078240018A0C0033A70210018914083 +:10A0600001D12021AF4F00280E0014F10254282105 +:10A070003C0D08008DAD00502405012001B358218E +:10A08000316C007F01705024019A48210131202158 +:10A090000E0014F1AF4A00283C0808008D08005457 +:10A0A0003C0508008CA500640113382130E6007FD0 +:10A0B00000F0182400DA202100912021AF4300286D +:10A0C0000E0014F1000529403C0208008C420058A3 +:10A0D0003C1008008E1000601200001C0053882104 +:10A0E0002415FF800A0015743C14000C3226007FF2 +:10A0F0000235182400DA202102402821AF4300282D +:10A10000009420210E0014F12610FFC01200000F51 +:10A11000023288212E05004110A0FFF42412100005 +:10A120003226007F001091800235182400DA2021A9 +:10A1300002402821AF430028009420210E0014F192 +:10A14000000080211600FFF3023288213C0B08003A +:10A150008D6B005C240AFF802405000201734021FE +:10A16000010A4824AF4900283C0408009484006296 +:10A170003110007F021A88213C07000C0E000CAA47 +:10A180000227982100402821026020218FBF00284B +:10A190008FB500248FB400208FB3001C8FB200183D +:10A1A0008FB100148FB000100A0014F127BD0030E9 +:10A1B0008F83001C8C62000410400003000000002C +:10A1C00003E00008000000008C6400108C650008AB +:10A1D0000A00152A8C66000C000000000000001B1D +:10A1E0000000000F0000000A000000080000000648 +:10A1F000000000050000000500000004000000044D +:10A200000000000300000003000000030000000342 +:10A210000000000300000002000000020000000235 +:10A220000000000200000002000000020000000226 +:10A230000000000200000002000000020000000216 +:10A240000000000200000002000000020000000206 +:10A2500000000001000000010000000108000F24C0 +:10A2600008000D6C08000FB80800106008000F4CC3 +:10A2700008000F8C0800119408000D88080011B820 +:10A2800008000DD8080015540800151C08000D889A +:10A2900008000D8808000D880800124008001240D0 +:10A2A00008000D8808000D88080014E008000D88DB +:10A2B00008000D8808000D8808000D88080013B4F8 +:10A2C00008000D8808000D8808000D8808000D881A +:10A2D00008000D8808000D8808000D8808000D880A +:10A2E00008000D8808000D8808000D8808000D88FA +:10A2F00008000D8808000D8808000FAC08000D88C4 +:10A3000008000D880800167808000D8808000D88E0 +:10A3100008000D8808000D8808000D8808000D88C9 +:10A3200008000D8808000D8808000D8808000D88B9 +:10A3300008000D8808000D8808000D8808000D88A9 +:10A3400008000D8808000D8808000D88080014100A +:10A3500008000D8808000D8808001334080012A4B6 +:10A3600008001E2C08001EFC08001F1408001F28EF +:10A3700008001F3808001E2C08001E2C08001E2C88 +:10A3800008001ED808002E1408002E1C08002DE41A +:10A3900008002DF008002DFC08002E08080052F4DB +:10A3A000080052B40800528008005254080052308D +:10A3B000080051EC0A000C840000000000000000BE +:10A3C0000000000D727870362E322E33000000002F +:10A3D000060203030000000000000001000000006E +:10A3E000000000000000000000000000000000006D +:10A3F000000000000000000000000000000000005D +:10A40000000000000000000000000000000000004C +:10A41000000000000000000000000000000000003C +:10A42000000000000000000000000000000000002C +:10A43000000000000000000000000000000000001C +:10A44000000000000000000000000000000000000C +:10A4500000000000000000000000000000000000FC +:10A4600000000000000000000000000000000000EC +:10A4700000000000000000000000000000000000DC +:10A4800000000000000000000000000000000000CC +:10A4900000000000000000000000000000000000BC +:10A4A00000000000000000000000000000000000AC +:10A4B000000000000000000000000000000000009C +:10A4C000000000000000000000000000000000008C +:10A4D000000000000000000000000000000000007C +:10A4E000000000000000000000000000000000006C +:10A4F000000000000000000000000000000000005C +:10A50000000000000000000000000000000000004B +:10A51000000000000000000000000000000000003B +:10A52000000000000000000000000000000000002B +:10A53000000000000000000000000000000000001B +:10A54000000000000000000000000000000000000B +:10A5500000000000000000000000000000000000FB +:10A5600000000000000000000000000000000000EB +:10A5700000000000000000000000000000000000DB +:10A5800000000000000000000000000000000000CB +:10A5900000000000000000000000000000000000BB +:10A5A00000000000000000000000000000000000AB +:10A5B000000000000000000000000000000000009B +:10A5C000000000000000000000000000000000008B +:10A5D000000000000000000000000000000000007B +:10A5E000000000000000000000000000000000006B +:10A5F000000000000000000000000000000000005B +:10A60000000000000000000000000000000000004A +:10A61000000000000000000000000000000000003A +:10A62000000000000000000000000000000000002A +:10A63000000000000000000000000000000000001A +:10A64000000000000000000000000000000000000A +:10A6500000000000000000000000000000000000FA +:10A6600000000000000000000000000000000000EA +:10A6700000000000000000000000000000000000DA +:10A6800000000000000000000000000000000000CA +:10A6900000000000000000000000000000000000BA +:10A6A00000000000000000000000000000000000AA +:10A6B000000000000000000000000000000000009A +:10A6C000000000000000000000000000000000008A +:10A6D000000000000000000000000000000000007A +:10A6E000000000000000000000000000000000006A +:10A6F000000000000000000000000000000000005A +:10A700000000000000000000000000000000000049 +:10A710000000000000000000000000000000000039 +:10A720000000000000000000000000000000000029 +:10A730000000000000000000000000000000000019 +:10A740000000000000000000000000000000000009 +:10A7500000000000000000000000000000000000F9 +:10A7600000000000000000000000000000000000E9 +:10A7700000000000000000000000000000000000D9 +:10A7800000000000000000000000000000000000C9 +:10A7900000000000000000000000000000000000B9 +:10A7A00000000000000000000000000000000000A9 +:10A7B0000000000000000000000000000000000099 +:10A7C0000000000000000000000000000000000089 +:10A7D0000000000000000000000000000000000079 +:10A7E0000000000000000000000000000000000069 +:10A7F0000000000000000000000000000000000059 +:10A800000000000000000000000000000000000048 +:10A810000000000000000000000000000000000038 +:10A820000000000000000000000000000000000028 +:10A830000000000000000000000000000000000018 +:10A840000000000000000000000000000000000008 +:10A8500000000000000000000000000000000000F8 +:10A8600000000000000000000000000000000000E8 +:10A8700000000000000000000000000000000000D8 +:10A8800000000000000000000000000000000000C8 +:10A8900000000000000000000000000000000000B8 +:10A8A00000000000000000000000000000000000A8 +:10A8B0000000000000000000000000000000000098 +:10A8C0000000000000000000000000000000000088 +:10A8D0000000000000000000000000000000000078 +:10A8E0000000000000000000000000000000000068 +:10A8F0000000000000000000000000000000000058 +:10A900000000000000000000000000000000000047 +:10A910000000000000000000000000000000000037 +:10A920000000000000000000000000000000000027 +:10A930000000000000000000000000000000000017 +:10A940000000000000000000000000000000000007 +:10A9500000000000000000000000000000000000F7 +:10A9600000000000000000000000000000000000E7 +:10A9700000000000000000000000000000000000D7 +:10A9800000000000000000000000000000000000C7 +:10A9900000000000000000000000000000000000B7 +:10A9A00000000000000000000000000000000000A7 +:10A9B0000000000000000000000000000000000097 +:10A9C0000000000000000000000000000000000087 +:10A9D0000000000000000000000000000000000077 +:10A9E0000000000000000000000000000000000067 +:10A9F0000000000000000000000000000000000057 +:10AA00000000000000000000000000000000000046 +:10AA10000000000000000000000000000000000036 +:10AA20000000000000000000000000000000000026 +:10AA30000000000000000000000000000000000016 +:10AA40000000000000000000000000000000000006 +:10AA500000000000000000000000000000000000F6 +:10AA600000000000000000000000000000000000E6 +:10AA700000000000000000000000000000000000D6 +:10AA800000000000000000000000000000000000C6 +:10AA900000000000000000000000000000000000B6 +:10AAA00000000000000000000000000000000000A6 +:10AAB0000000000000000000000000000000000096 +:10AAC0000000000000000000000000000000000086 +:10AAD0000000000000000000000000000000000076 +:10AAE0000000000000000000000000000000000066 +:10AAF0000000000000000000000000000000000056 +:10AB00000000000000000000000000000000000045 +:10AB10000000000000000000000000000000000035 +:10AB20000000000000000000000000000000000025 +:10AB30000000000000000000000000000000000015 +:10AB40000000000000000000000000000000000005 +:10AB500000000000000000000000000000000000F5 +:10AB600000000000000000000000000000000000E5 +:10AB700000000000000000000000000000000000D5 +:10AB800000000000000000000000000000000000C5 +:10AB900000000000000000000000000000000000B5 +:10ABA00000000000000000000000000000000000A5 +:10ABB0000000000000000000000000000000000095 +:10ABC0000000000000000000000000000000000085 +:10ABD0000000000000000000000000000000000075 +:10ABE0000000000000000000000000000000000065 +:10ABF0000000000000000000000000000000000055 +:10AC00000000000000000000000000000000000044 +:10AC10000000000000000000000000000000000034 +:10AC20000000000000000000000000000000000024 +:10AC30000000000000000000000000000000000014 +:10AC40000000000000000000000000000000000004 +:10AC500000000000000000000000000000000000F4 +:10AC600000000000000000000000000000000000E4 +:10AC700000000000000000000000000000000000D4 +:10AC800000000000000000000000000000000000C4 +:10AC900000000000000000000000000000000000B4 +:10ACA00000000000000000000000000000000000A4 +:10ACB0000000000000000000000000000000000094 +:10ACC0000000000000000000000000000000000084 +:10ACD0000000000000000000000000000000000074 +:10ACE0000000000000000000000000000000000064 +:10ACF0000000000000000000000000000000000054 +:10AD00000000000000000000000000000000000043 +:10AD10000000000000000000000000000000000033 +:10AD20000000000000000000000000000000000023 +:10AD30000000000000000000000000000000000013 +:10AD40000000000000000000000000000000000003 +:10AD500000000000000000000000000000000000F3 +:10AD600000000000000000000000000000000000E3 +:10AD700000000000000000000000000000000000D3 +:10AD800000000000000000000000000000000000C3 +:10AD900000000000000000000000000000000000B3 +:10ADA00000000000000000000000000000000000A3 +:10ADB0000000000000000000000000000000000093 +:10ADC0000000000000000000000000000000000083 +:10ADD0000000000000000000000000000000000073 +:10ADE0000000000000000000000000000000000063 +:10ADF0000000000000000000000000000000000053 +:10AE00000000000000000000000000000000000042 +:10AE10000000000000000000000000000000000032 +:10AE20000000000000000000000000000000000022 +:10AE30000000000000000000000000000000000012 +:10AE40000000000000000000000000000000000002 +:10AE500000000000000000000000000000000000F2 +:10AE600000000000000000000000000000000000E2 +:10AE700000000000000000000000000000000000D2 +:10AE800000000000000000000000000000000000C2 +:10AE900000000000000000000000000000000000B2 +:10AEA00000000000000000000000000000000000A2 +:10AEB0000000000000000000000000000000000092 +:10AEC0000000000000000000000000000000000082 +:10AED0000000000000000000000000000000000072 +:10AEE0000000000000000000000000000000000062 +:10AEF0000000000000000000000000000000000052 +:10AF00000000000000000000000000000000000041 +:10AF10000000000000000000000000000000000031 +:10AF20000000000000000000000000000000000021 +:10AF30000000000000000000000000000000000011 +:10AF40000000000000000000000000000000000001 +:10AF500000000000000000000000000000000000F1 +:10AF600000000000000000000000000000000000E1 +:10AF700000000000000000000000000000000000D1 +:10AF800000000000000000000000000000000000C1 +:10AF900000000000000000000000000000000000B1 +:10AFA00000000000000000000000000000000000A1 +:10AFB0000000000000000000000000000000000091 +:10AFC0000000000000000000000000000000000081 +:10AFD0000000000000000000000000000000000071 +:10AFE0000000000000000000000000000000000061 +:10AFF0000000000000000000000000000000000051 +:10B000000000000000000000000000000000000040 +:10B010000000000000000000000000000000000030 +:10B020000000000000000000000000000000000020 +:10B030000000000000000000000000000000000010 +:10B040000000000000000000000000000000000000 +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000008000000000000000000B +:10D5A000000000000000000000000000000000007B +:10D5B00000000000000000000000000A0000000061 +:10D5C0000000000000000000100000030000000048 +:10D5D0000000000D0000000D3C02080024427340D2 +:10D5E0003C030800246377CCAC4000000043202BB0 +:10D5F0001480FFFD244200043C1D080037BD7FFC61 +:10D6000003A0F0213C100800261032103C1C08003A +:10D61000279C73400E0010FE000000000000000D6B +:10D6200030A5FFFF30C600FF274301808F4201B8BD +:10D630000440FFFE24020002AC640000A465000860 +:10D64000A066000AA062000B3C021000AC67001844 +:10D6500003E00008AF4201B83C0360008C624FF861 +:10D660000440FFFE3C020200AC644FC0AC624FC4F9 +:10D670003C02100003E00008AC624FF89482000CFA +:10D680002486001400A0382100021302000210803A +:10D690000082402100C8102B1040005700000000FD +:10D6A00090C300002C6200095040005190C200015C +:10D6B000000310803C030800246372F00043102133 +:10D6C0008C420000004000080000000090C30001F0 +:10D6D0002402000A1462003A000000000106102330 +:10D6E0002C42000A1440003624C600028CE20000DE +:10D6F00034420100ACE2000090C2000090C300017F +:10D7000090C4000290C5000300031C000002160034 +:10D710000043102500042200004410250045102578 +:10D7200024C60004ACE2000490C2000090C30001D3 +:10D7300090C4000290C500030002160000031C0004 +:10D740000043102500042200004410250045102548 +:10D7500024C600040A000CB8ACE2000890C3000123 +:10D76000240200041462001624C6000290C20000C5 +:10D7700090C400018CE30000000212000044102558 +:10D780003463000424C60002ACE2000C0A000CB8AA +:10D79000ACE3000090C300012402000314620008FF +:10D7A00024C600028CE2000090C3000024C60001E1 +:10D7B00034420008A0E300100A000CB8ACE20000FC +:10D7C00003E000082402000190C3000124020002CB +:10D7D0001062000224C40002010020210A000CB8DB +:10D7E000008030210A000CB824C6000190C200015C +:10D7F0000A000CB800C2302103E00008000010212C +:10D8000027BDFFE8AFBF0014AFB000100E00130239 +:10D8100000808021936200052403FFFE0200202186 +:10D82000004310248FBF00148FB00010A3620005C6 +:10D830000A00130B27BD001827BDFFE8AFB000108A +:10D84000AFBF00140E000F3C0080802193620000E7 +:10D8500024030050304200FF14430004240201005E +:10D86000AF4201800A000D3002002021AF4001804C +:10D87000020020218FBF00148FB000100A000FE7B4 +:10D8800027BD001827BDFF80AFBE0078AFB700747A +:10D89000AFB20060AFBF007CAFB60070AFB5006C38 +:10D8A000AFB40068AFB30064AFB1005CAFB0005874 +:10D8B0008F5001283C0208008C4231A02403FF80D5 +:10D8C0009365003F0202102100431024AF42002460 +:10D8D0003C0208008C4231A09364000530B200FF86 +:10D8E000020210213042007F034218210004202749 +:10D8F0003C02000A0062182130840001AF8300144A +:10D900000000F0210000B82114800053AFA00050A7 +:10D9100093430116934401128F450104306300FFC5 +:10D920003C020001308400FF00A2282403431021A0 +:10D9300003441821245640002467400014A001CD60 +:10D940002402000193620000304300FF2402002003 +:10D950001062000524020050106200060000000062 +:10D960000A000D74000000000000000D0A000D7D8B +:10D97000AFA000303C1E080027DE738C0A000D7D2E +:10D98000AFA000303C0208008C4200DC24420001C1 +:10D990003C010800AC2200DC0E00139F00000000D8 +:10D9A0000A000F318FBF007C8F4201043C0300202E +:10D9B00092D3000D004310240002202B00042140CC +:10D9C000AFA400308F4301043C02004000621824E1 +:10D9D000146000023485004000802821326200205B +:10D9E000AFA500301440000234A6008000A0302112 +:10D9F00010C0000BAFA6003093C500088F67004C25 +:10DA00000200202100052B0034A5008130A5F08103 +:10DA10000E000C9B30C600FF0A000F2E0000000015 +:10DA20009362003E304200401040000F2402000488 +:10DA300056420007240200120200202100E02821A3 +:10DA40000E0013F702C030210A000F318FBF007C97 +:10DA500016420005000000000E000D2100002021EC +:10DA60000A000F318FBF007C9743011A96C4000E45 +:10DA700093620035326500043075FFFF00442004D6 +:10DA8000AFA400548ED1000410A000158ED400085D +:10DA90009362003E3042004010400007000000004A +:10DAA0000E0013E0022020211040000D00000000B5 +:10DAB0000A000F2E000000008F6200440222102393 +:10DAC0000440016A000000008F6200480222102317 +:10DAD00004410166240400160A000E218FC20004CE +:10DAE0008F6200480222102304400008000000005A +:10DAF0003C0208008C423100244200013C01080035 +:10DB0000AC2231000A000F23000000008F620040A9 +:10DB100002221023184000128F8400143C020800D7 +:10DB20008C423100327300FC0000A8212442000125 +:10DB30003C010800AC2231008F6300409482011C3C +:10DB4000022318233042FFFF0043102A50400010E8 +:10DB50002402000C8F6200400A000DF20222102302 +:10DB60009483011C9762003C0043102B1040000678 +:10DB7000000000009482011C00551023A482011CA7 +:10DB80000A000DF72402000CA480011C2402000CE2 +:10DB9000AFA200308F620040005120231880000D9A +:10DBA00002A4102A1440012600000000149500066B +:10DBB00002A410233A620001304200011440012007 +:10DBC0000000000002A41023022488210A000E098C +:10DBD0003055FFFF00002021326200021040001A81 +:10DBE000326200109362003E30420040504000110B +:10DBF0008FC200040E00130202002021240200182C +:10DC0000A362003F936200052403FFFE020020216F +:10DC1000004310240E00130BA362000524040039F6 +:10DC2000000028210E0013C9240600180A000F3036 +:10DC300024020001240400170040F809000000003D +:10DC40000A000F302402000110400108000000000B +:10DC50008F63004C8F620054028210231C4001032A +:10DC600002831023044200010060A021AFA4001829 +:10DC7000AFB10010AFB50014934201208F65004092 +:10DC80009763003C304200FF034210210044102102 +:10DC90008FA400543063FFFF244240000083182B00 +:10DCA0008FA40030AFA20020AFA50028008320255C +:10DCB000AFA40030AFA50024AFA0002CAFB4003457 +:10DCC0009362003E30420008504000118FC20000B5 +:10DCD00002C0202127A500380E000CB2AFA00038EA +:10DCE0005440000B8FC200008FA200383042010068 +:10DCF000504000078FC200008FA3003C8F6200607D +:10DD00000062102304430001AF6300608FC2000073 +:10DD10000040F80927A400108FA200303042000212 +:10DD200054400001327300FE9362003E30420040D6 +:10DD3000104000378FA200248F6200541682001A10 +:10DD40003262000124020014124200102A4200151F +:10DD500010400006240200162402000C12420007A4 +:10DD6000326200010A000E7D000000001242000530 +:10DD7000326200010A000E7D000000000A000E78E9 +:10DD80002417000E0A000E78241700100A000E7CDB +:10DD900024170012936200232403FFBD00431024C4 +:10DDA000A362002332620001104000198FA20024F8 +:10DDB0002402000C1242000E2A42000D1040000600 +:10DDC0002402000E2402000A124200078FA200243F +:10DDD0000A000E9524420001124200088FA200247E +:10DDE0000A000E95244200010A000E932417000831 +:10DDF0002402000E16E20002241700162417001059 +:10DE00008FA2002424420001AFA200248FA200248C +:10DE10008FA300148F76004000431021AF620040B2 +:10DE20008F8200149442011C104000090000000081 +:10DE30008F6200488F6400409763003C00441023C9 +:10DE40003063FFFF0043102A104000088FA20054E7 +:10DE5000936400368F6300403402FFFC008210049C +:10DE600000621821AF6300488FA200548FA60030D3 +:10DE70000282902130C200081040000E0000000015 +:10DE80008F6200581642000430C600FF9742011A04 +:10DE90005040000134C6001093C500088FA700341D +:10DEA0000200202100052B0034A500800E000C9BF1 +:10DEB00030A5F0808F620040005610231840001BF0 +:10DEC0008FA200183C0208008C42319830420010AA +:10DED0001040000D24020001976200681440000AFF +:10DEE000240200018F8200149442011C1440000699 +:10DEF00024020001A76200689742007A244200646D +:10DF00000A000EE9A7620012A76200120E001302B7 +:10DF1000020020219362007D2403000102002021E1 +:10DF2000344200010A000EE7AFA300501840000A77 +:10DF3000000000000E001302020020219362007D09 +:10DF40002403000102002021AFA30050344200044A +:10DF50000E00130BA362007D9362003E304200402E +:10DF60001440000C326200011040000A0000000062 +:10DF70008F6300408FC20004240400182463000152 +:10DF80000040F809AF6300408FA200300A000F3054 +:10DF9000304200048F620058105200100000000050 +:10DFA0008F620018022210231C4000082404000184 +:10DFB0008F62001816220009000000008F62001C0A +:10DFC000028210230440000500000000AF720058D8 +:10DFD000AFA40050AF710018AF74001C12E0000B2A +:10DFE0008FA200500E00130202002021A377003FF1 +:10DFF0000E00130B0200202102E030212404003720 +:10E000000E0013C9000028218FA200501040000309 +:10E01000000000000E000CA90200202112A0000543 +:10E02000000018218FA2003030420004504000113F +:10E0300000601021240300010A000F30006010214D +:10E040000E001302020020219362007D02002021B5 +:10E05000344200040E00130BA362007D0E000CA9D5 +:10E06000020020210A000F3024020001AF400044CA +:10E07000240200018FBF007C8FBE00788FB7007430 +:10E080008FB600708FB5006C8FB400688FB30064DA +:10E090008FB200608FB1005C8FB0005803E00008C1 +:10E0A00027BD00808F4201B80440FFFE2402080013 +:10E0B000AF4201B803E00008000000003C02000885 +:10E0C00003421021944200483084FFFF2484001250 +:10E0D0003045FFFF10A0001700A4102B10400016C1 +:10E0E00024020003934201202403001AA343018B5E +:10E0F000304200FF2446FFFE8F82000000A6182B4E +:10E100003863000100021382004310241040000510 +:10E110008F84000434820001A746019403E00008C4 +:10E12000AF8200042402FFFE0082102403E00008F6 +:10E13000AF8200042402000303E00008A342018B25 +:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3 +:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17 +:10E1600000000000AF440180AF4400200E000F42C9 +:10E17000020020218F8300008F840004A750019AA1 +:10E18000A750018EA74301908F8300083082800042 +:10E19000AF4301A8A75101881040000E8F820004F0 +:10E1A00093420116304200FC24420004005A102120 +:10E1B0008C4240003042FFFF144000068F82000472 +:10E1C0003C02FFFF34427FFF00821024AF82000434 +:10E1D0008F8200042403BFFF00431024A74201A63E +:10E1E0009743010C8F42010400031C003042FFFFE3 +:10E1F00000621825AF4301AC3C021000AF4201B8E9 +:10E200008FBF00188FB100148FB0001003E000081A +:10E2100027BD00208F470070934201128F830000BA +:10E2200027BDFFF0304200FF00022882306201006B +:10E23000000030211040004324A40003306240005D +:10E24000104000103062200000041080005A10219D +:10E250008C43400024A4000400041080AFA30000FD +:10E26000005A10218C424000AFA2000493420116D4 +:10E27000304200FC005A10218C4240000A000FC0BE +:10E28000AFA200081040002F0000302100041080D1 +:10E29000005A10218C43400024A400040004108084 +:10E2A000AFA30000005A10218C424000AFA000082C +:10E2B000AFA200048FA80008000030210000202138 +:10E2C000240A00083C0908002529010003A41021A4 +:10E2D000148A000300042A001100000A0000000054 +:10E2E00090420000248400012C83000C00A2102125 +:10E2F00000021080004910218C4200001460FFF3DE +:10E3000000C230263C0408008C8431048F42007027 +:10E310002C83002010600009004738233C030800CC +:10E32000246331080004108000431021248300017D +:10E33000AC4700003C010800AC233104AF86000864 +:10E340002406000100C0102103E0000827BD0010D2 +:10E350003C0208008C42003827BDFFD0AFB5002436 +:10E36000AFB40020AFB10014AFBF0028AFB3001CA2 +:10E37000AFB20018AFB00010000088213C150800B3 +:10E3800026B50038144000022454FFFF0000A021ED +:10E390009742010E8F8400003042FFFF308340001F +:10E3A0001060000A245200043C0200200082102465 +:10E3B00050400007308280008F8200042403BFFF9A +:10E3C000008318240A0010103442100030828000AC +:10E3D0001040000A3C020020008210241040000778 +:10E3E0008F8200043C03FFFF34637FFF0083182407 +:10E3F00034428000AF820004AF8300000E000F980B +:10E400000000000014400007000000009743011EB8 +:10E410009742011C3063FFFF0002140000621825C0 +:10E42000AF8300089742010C8F4340003045FFFF47 +:10E430003402FFFF14620003000000000A001028ED +:10E44000241100208F42400030420100544000015E +:10E45000241100108F8400003082100050400014FE +:10E4600036310001308200201440000B3C021000C5 +:10E47000008210245040000E363100013C030E0093 +:10E480003C020DFF008318243442FFFF0043102B91 +:10E4900050400007363100013C0208008C42002C3D +:10E4A000244200013C010800AC22002C363100055A +:10E4B0003C0608008CC6003454C000238F85000041 +:10E4C0008F820004304240005440001F8F850000BE +:10E4D0003C021F01008210243C0310005443001A28 +:10E4E0008F85000030A20200144000178F850000C5 +:10E4F0003250FFFF363100028F4201B80440FFFE68 +:10E5000000000000AF400180020020210E000F42F9 +:10E51000AF4000208F8300042402BFFFA750019A60 +:10E52000006218248F820000A750018EA751018835 +:10E53000A74301A6A74201903C021000AF4201B8D8 +:10E540000A0010F5000010213C02100000A2102467 +:10E550001040003A0000000010C0000F0000000052 +:10E5600030A201001040000C3C0302003C020F00EE +:10E5700000A2102410430008000000008F82000851 +:10E58000005410240055102190420004244200043D +:10E590000A00109F000221C00000000000051602C2 +:10E5A0003050000F3A0300022E4203EF38420001C0 +:10E5B0002C6300010062182414600073240200011F +:10E5C0003C0308008C6300D02E06000C386200016A +:10E5D0002C4200010046102414400015001021C0F8 +:10E5E0002602FFFC2C4200045440001100002021B0 +:10E5F000386200022C420001004610241040000343 +:10E60000000512420A00109F000020210010182B64 +:10E610000043102450400006001021C000002021BB +:10E620003245FFFF0E000F633226FFFB001021C0B2 +:10E630003245FFFF0A0010F2362600028F424000EA +:10E640003C0308008C630024304201001040004667 +:10E6500030620001322200043070000D14400002CC +:10E660002413000424130002000512C238420001E2 +:10E670002E4303EF304200013863000100431025B0 +:10E68000104000033231FFFB2402FFFB0202802412 +:10E6900010C000183202000130A201001040001525 +:10E6A000320200013C020F0000A210243C030200D1 +:10E6B0001043000F8F8200082403FFFE0203802412 +:10E6C00000541024005510219042000402333025DC +:10E6D0002442000412000002000221C03226FFFF83 +:10E6E0000E000F633245FFFF1200002700001021CB +:10E6F000320200011040000D320200042402000129 +:10E7000012020002023330253226FFFF00002021D2 +:10E710000E000F633245FFFF2402FFFE0202802439 +:10E7200012000019000010213202000410400016EF +:10E7300024020001240200041202000202333025E8 +:10E740003226FFFF3245FFFF0E000F632404010055 +:10E750002402FFFB020280241200000B00001021A3 +:10E760000A0010F5240200011040000700001021EB +:10E770003245FFFF36260002000020210E000F6305 +:10E7800000000000000010218FBF00288FB500247A +:10E790008FB400208FB3001C8FB200188FB100140B +:10E7A0008FB0001003E0000827BD003027BDFFD068 +:10E7B000AFB000103C04600CAFBF002CAFB6002817 +:10E7C000AFB50024AFB40020AFB3001CAFB2001847 +:10E7D000AFB100148C8250002403FF7F3C1A8000EC +:10E7E000004310243442380CAC8250002402000351 +:10E7F0003C106000AF4200088E0208083C1B8008F5 +:10E800003C010800AC2000203042FFF038420010EC +:10E810002C4200010E001B8DAF8200183C04FFFF4C +:10E820003C020400348308063442000CAE0219484E +:10E83000AE03194C3C0560168E0219808CA30000B3 +:10E840003442020000641824AE0219803C02535383 +:10E850001462000334A47C008CA200040050202128 +:10E860008C82007C8C830078AF820010AF83000C18 +:10E870008F55000032A200031040FFFD32A20001BC +:10E880001040013D32A200028F420128AF42002019 +:10E890008F4201048F430100AF8200000E000F3C45 +:10E8A000AF8300043C0208008C4200C01040000806 +:10E8B0008F8400003C0208008C4200C42442000106 +:10E8C0003C010800AC2200C40A00126900000000EC +:10E8D0003C020010008210241440010C8F830004BD +:10E8E0003C0208008C4200203C0308008C63003886 +:10E8F00000008821244200013C010800AC220020D5 +:10E900003C16080026D60038146000022474FFFF6D +:10E910000000A0219742010E308340003042FFFFEB +:10E920001060000A245200043C02002000821024DF +:10E9300050400007308280008F8200042403BFFF14 +:10E94000008318240A0011703442100030828000C5 +:10E950001040000A3C0200200082102410400007F2 +:10E960008F8200043C03FFFF34637FFF0083182481 +:10E9700034428000AF820004AF8300000E000F9885 +:10E980000000000014400007000000009743011E33 +:10E990009742011C3063FFFF00021400006218253B +:10E9A000AF8300089742010C8F4340003045FFFFC2 +:10E9B0003402FFFF14620003000000000A00118807 +:10E9C000241100208F4240003042010054400001D9 +:10E9D000241100108F840000308210005040001479 +:10E9E00036310001308200201440000B3C02100040 +:10E9F000008210245040000E363100013C030E000E +:10EA00003C020DFF008318243442FFFF0043102B0B +:10EA100050400007363100013C0208008C42002CB7 +:10EA2000244200013C010800AC22002C36310005D4 +:10EA30003C0608008CC6003454C000238F850000BB +:10EA40008F820004304240005440001F8F85000038 +:10EA50003C021F01008210243C0310005443001AA2 +:10EA60008F85000030A20200144000178F8500003F +:10EA70003250FFFF363100028F4201B80440FFFEE2 +:10EA800000000000AF400180020020210E000F4274 +:10EA9000AF4000208F8300042402BFFFA750019ADB +:10EAA000006218248F820000A750018EA7510188B0 +:10EAB000A74301A6A74201903C021000AF4201B853 +:10EAC0000A001267000010213C02100000A210246E +:10EAD0001040003A0000000010C0000F00000000CD +:10EAE00030A201001040000C3C0302003C020F0069 +:10EAF00000A2102410430008000000008F820008CC +:10EB000000541024005610219042000424420004B6 +:10EB10000A0011FF000221C00000000000051602DB +:10EB20003050000F3A0300022E4203EF384200013A +:10EB30002C63000100621824146000852402000187 +:10EB40003C0308008C6300D02E06000C38620001E4 +:10EB50002C4200010046102414400015001021C072 +:10EB60002602FFFC2C42000454400011000020212A +:10EB7000386200022C42000100461024504000037D +:10EB8000000512420A0011FF000020210010182B7E +:10EB90000043102450400006001021C00000202136 +:10EBA0003245FFFF0E000F633226FFFB001021C02D +:10EBB0003245FFFF0A001252362600028F42400003 +:10EBC0003C0308008C6300243042010010400046E2 +:10EBD00030620001322200043070000D1440000247 +:10EBE0002413000424130002000512C2384200015D +:10EBF0002E4303EF3042000138630001004310252B +:10EC0000104000033231FFFB2402FFFB020280248C +:10EC100010C000183202000130A20100104000159F +:10EC2000320200013C020F0000A210243C0302004B +:10EC30001043000F8F8200082403FFFE020380248C +:10EC40000054102400561021904200040233302555 +:10EC50002442000412000002000221C03226FFFFFD +:10EC60000E000F633245FFFF120000390000102133 +:10EC7000320200011040000D3202000424020001A3 +:10EC800012020002023330253226FFFF000020214D +:10EC90000E000F633245FFFF2402FFFE02028024B4 +:10ECA0001200002B00001021320200041040002846 +:10ECB0002402000124020004120200020233302563 +:10ECC0003226FFFF3245FFFF0E000F6324040100D0 +:10ECD0002402FFFB020280241200001D000010210C +:10ECE0000A001267240200015040001900001021A0 +:10ECF0003245FFFF36260002000020210E000F6380 +:10ED0000000000000A001267000010212402BFFF6B +:10ED1000006210241040000800000000240287FF59 +:10ED200000621024144000083C020060008210249D +:10ED300010400005000000000E000D34000000002F +:10ED40000A001267000000000E0012C70000000059 +:10ED5000104000063C0240008F4301243C0260202A +:10ED6000AC430014000000003C024000AF420138F8 +:10ED70000000000032A200021040FEBD00000000B2 +:10ED80008F4201403C044000AF4200208F430148C5 +:10ED90003C02700000621824106400420000000071 +:10EDA0000083102B144000063C0260003C0220004F +:10EDB000106200073C0240000A0012C3000000007D +:10EDC0001062003C3C0240000A0012C30000000038 +:10EDD0008F4501408F4601448F42014800021402D2 +:10EDE000304300FF240200041462000A274401801B +:10EDF0008F4201B80440FFFE2402001CAC850000D5 +:10EE0000A082000B3C021000AF4201B80A0012C3FE +:10EE10003C0240002402000914620012000616029F +:10EE2000000229C0AF4500208F4201B80440FFFE18 +:10EE30002402000124030003AF450180A343018B9A +:10EE4000A740018EA740019AA7400190AF4001A8BA +:10EE5000A7420188A74201A6AF4001AC3C021000C6 +:10EE6000AF4201B88F4201B80440FFFE000000002D +:10EE7000AC8500008F42014800021402A482000801 +:10EE800024020002A082000B8F420148A4820010DD +:10EE90003C021000AC860024AF4201B80A0012C345 +:10EEA0003C0240000E001310000000000A0012C3D4 +:10EEB0003C0240000E001BC2000000003C0240006B +:10EEC000AF420178000000000A00112F000000008E +:10EED0008F4201003042003E144000112402000124 +:10EEE000AF4000488F420100304207C0104000058B +:10EEF00000000000AF40004CAF40005003E00008AD +:10EF000024020001AF400054AF4000408F42010096 +:10EF10003042380054400001AF4000442402000158 +:10EF200003E00008000000008F4201B80440FFFE2B +:10EF300024020001AF440180AF400184A74501884D +:10EF4000A342018A24020002A342018B9742014A94 +:10EF500014C00004A7420190AF4001A40A0012EFC0 +:10EF60003C0210008F420144AF4201A43C02100059 +:10EF7000AF4001A803E00008AF4201B88F4201B8DA +:10EF80000440FFFE24020002AF440180AF4401842C +:10EF9000A7450188A342018AA342018B9742014AF7 +:10EFA000A7420190AF4001A48F420144AF4201A8A3 +:10EFB0003C02100003E00008AF4201B83C029000A0 +:10EFC0003442000100822025AF4400208F420020FF +:10EFD0000440FFFE0000000003E000080000000005 +:10EFE0003C028000344200010082202503E000083A +:10EFF000AF44002027BDFFE8AFBF0014AFB0001042 +:10F000008F50014093430149934201489344014882 +:10F01000306300FF304200FF00021200006228252A +:10F020002402001910620076308400802862001AE1 +:10F030001040001C24020020240200081062007707 +:10F04000286200091040000E2402000B2402000177 +:10F0500010620034286200025040000524020006BD +:10F0600050600034020020210A00139A00000000C2 +:10F0700010620030020020210A00139A00000000F4 +:10F080001062003B2862000C504000022402000E77 +:10F090002402000910620056020020210A00139A7F +:10F0A0000000000010620056286200211040000F8E +:10F0B000240200382402001C106200582862001D3F +:10F0C000104000062402001F2402001B1062004CA6 +:10F0D000000000000A00139A000000001062004ABD +:10F0E000020020210A00139A00000000106200456F +:10F0F0002862003910400007240200802462FFCB00 +:10F100002C42000210400045020020210A00139604 +:10F110000000302110620009000000000A00139A6C +:10F12000000000001480003D020020210A0013901E +:10F130008FBF00140A001396240600018F4201B805 +:10F140000440FFFE24020002A342018BA745018870 +:10F150009742014AA74201908F420144A74201927F +:10F160003C021000AF4201B80A00139C8FBF00148C +:10F170009742014A144000290000000093620005F4 +:10F180003042000414400025000000000E0013026D +:10F190000200202193620005020020213442000475 +:10F1A0000E00130BA36200059362000530420004B9 +:10F1B00014400002000000000000000D93620000F7 +:10F1C00024030020304200FF14430014000000001C +:10F1D0008F4201B80440FFFE24020005AF500180B9 +:10F1E000A342018B3C0210000A00139AAF4201B8FF +:10F1F0008FBF00148FB000100A0012F227BD001854 +:10F200000000000D02002021000030218FBF0014FB +:10F210008FB000100A0012DD27BD00180000000D9D +:10F220008FBF00148FB0001003E0000827BD001846 +:10F2300027BDFFE8AFBF00100E000F3C000000002C +:10F24000AF4001808FBF0010000020210A000FE7AF +:10F2500027BD00183084FFFF30A5FFFF00001821F4 +:10F260001080000700000000308200011040000202 +:10F2700000042042006518210A0013AB0005284055 +:10F2800003E000080060102110C0000624C6FFFF44 +:10F290008CA2000024A50004AC8200000A0013B573 +:10F2A0002484000403E000080000000010A000080F +:10F2B00024A3FFFFAC860000000000000000000057 +:10F2C0002402FFFF2463FFFF1462FFFA248400047A +:10F2D00003E0000800000000308300FF30A500FFBD +:10F2E00030C600FF274701808F4201B80440FFFE6F +:10F2F000000000008F42012834634000ACE20000AF +:10F3000024020001ACE00004A4E30008A0E2000A2B +:10F3100024020002A0E2000B3C021000A4E5001051 +:10F32000ACE00024ACE00028A4E6001203E00008F2 +:10F33000AF4201B827BDFFE8AFBF00109362003FA6 +:10F3400024030012304200FF1043000D00803021E2 +:10F350008F620044008210230440000A8FBF001017 +:10F360008F620048240400390000282100C21023C5 +:10F3700004410004240600120E0013C9000000001E +:10F380008FBF00102402000103E0000827BD001811 +:10F3900027BDFFC8AFB20030AFB1002CAFBF003403 +:10F3A000AFB0002890C5000D0080902130A400105F +:10F3B0001080000B00C088218CC300088F620054AD +:10F3C0001062000730A20005144000B524040001BB +:10F3D0000E000D21000020210A0014BB0040202156 +:10F3E00030A200051040000930A30012108000ACCC +:10F3F000240400018E2300088F620054146200A9C7 +:10F400008FBF00340A00142C240400382402001298 +:10F41000146200A3240400010220202127A500106B +:10F420000E000CB2AFA000101040001102402021CD +:10F430008E220008AF620084AF6000400E0013020D +:10F44000000000009362007D024020213442002031 +:10F450000E00130BA362007D0E000CA902402021B8 +:10F46000240400382405008D0A0014B82406001274 +:10F470009362003E304200081040000F8FA200103F +:10F4800030420100104000078FA300148F6200601B +:10F490000062102304430008AF6300600A001441B7 +:10F4A00000000000AF6000609362003E2403FFF79D +:10F4B00000431024A362003E9362003E30420008E5 +:10F4C000144000022406000300003021936200343F +:10F4D000936300378F640084304200FF306300FF85 +:10F4E00000661821000318800043282100A4202B67 +:10F4F0001080000B000000009763003C8F620084C6 +:10F500003063FFFF004510230062182B14600004D5 +:10F51000000000008F6200840A00145D0045802313 +:10F520009762003C3050FFFF8FA300103062000450 +:10F5300010400004000628808FA2001C0A001465F9 +:10F540000202102B2E02021850400003240202185F +:10F550000A00146E020510233063000410600003DB +:10F56000004510238FA2001C00451023004080217D +:10F570002C42008054400001241000800E00130231 +:10F580000240202124020001AF62000C9362003E81 +:10F59000001020403042007FA362003E8E22000413 +:10F5A00024420001AF620040A770003C8F6200500F +:10F5B0009623000E00431021AF6200588F62005066 +:10F5C00000441021AF62005C8E220004AF6200187C +:10F5D0008E220008AF62001C8FA20010304200088B +:10F5E0005440000A93A20020A360003693620036C4 +:10F5F0002403FFDFA36200359362003E0043102422 +:10F60000A362003E0A0014988E220008A36200350F +:10F610008E220008AF62004C8F6200248F6300408E +:10F6200000431021AF6200489362000024030050A1 +:10F63000304200FF144300122403FF803C02080004 +:10F640008C4231A00242102100431024AF42002816 +:10F650003C0208008C4231A08E2400083C03000CC0 +:10F66000024210213042007F03421021004310214A +:10F67000AC4400D88E230008AF820014AC4300DCF9 +:10F680000E00130B02402021240400380000282122 +:10F690002406000A0E0013C9000000002404000123 +:10F6A0008FBF00348FB200308FB1002C8FB0002894 +:10F6B0000080102103E0000827BD003827BDFFF8B7 +:10F6C00027420180AFA20000308A00FF8F4201B8BC +:10F6D0000440FFFE000000008F4601283C020800A5 +:10F6E0008C4231A02403FF80AF86004800C2102165 +:10F6F00000431024AF4200243C0208008C4231A099 +:10F700008FA900008FA8000000C210213042007FA6 +:10F71000034218213C02000A00621821946400D4BC +:10F720008FA700008FA5000024020002AF83001401 +:10F73000A0A2000B8FA30000354260003084FFFFC1 +:10F74000A4E200083C021000AD260000AD04000455 +:10F75000AC60002427BD0008AF4201B803E00008F8 +:10F76000240200018F88003C938200288F830014BC +:10F770003C07080024E7779800481023304200FF38 +:10F78000304900FC246500888F860040304A000321 +:10F790001120000900002021248200048CA3000015 +:10F7A000304400FF0089102AACE3000024A50004C7 +:10F7B0001440FFF924E70004114000090000202153 +:10F7C0002482000190A30000304400FF008A102B27 +:10F7D000A0E3000024A500011440FFF924E7000184 +:10F7E00030C20003144000048F85003C3102000346 +:10F7F0001040000D0000000010A0000900002021B2 +:10F800002482000190C30000304400FF0085102BCB +:10F81000A0E3000024C600011440FFF924E7000122 +:10F8200003E00008000000001100FFFD000020219F +:10F83000248200048CC30000304400FF0088102B99 +:10F84000ACE3000024C600041440FFF924E70004E0 +:10F8500003E00008000000008F83003C9382002832 +:10F8600030C600FF30A500FF00431023304300FFE7 +:10F870008F820014008038210043102114C0000240 +:10F88000244800880083382130E20003144000053A +:10F8900030A2000314400003306200031040000D4A +:10F8A0000000000010A000090000202124820001B7 +:10F8B00090E30000304400FF0085102BA1030000FE +:10F8C00024E700011440FFF92508000103E00008C7 +:10F8D0000000000010A0FFFD000020212482000491 +:10F8E0008CE30000304400FF0085102BAD030000C6 +:10F8F00024E700041440FFF92508000403E0000891 +:10F90000000000000080482130AAFFFF30C600FF41 +:10F9100030E7FFFF274801808F4201B80440FFFE17 +:10F920008F820048AD0200008F420124AD02000426 +:10F930008D220020A5070008A102000A240200165B +:10F94000A102000B934301208D2200088D240004A6 +:10F95000306300FF004310219783003A00441021D8 +:10F960008D250024004310233C0308008C6331A044 +:10F970008F840014A502000C246300E82402FFFF1A +:10F98000A50A000EA5030010A5060012AD0500187B +:10F99000AD020024948201142403FFF73042FFFFDC +:10F9A000AD0200288C820118AD02002C3C02100030 +:10F9B000AD000030AF4201B88D220020004310247A +:10F9C00003E00008AD2200208F82001430E7FFFF23 +:10F9D00000804821904200D330A5FFFF30C600FFD1 +:10F9E0000002110030420F0000E238252748018054 +:10F9F0008F4201B80440FFFE8F820048AD02000034 +:10FA00008F420124AD0200048D220020A5070008CA +:10FA1000A102000A24020017A102000B9343012057 +:10FA20008D2200088D240004306300FF0043102164 +:10FA30009783003A004410218F8400140043102360 +:10FA40003C0308008C6331A0A502000CA505000E44 +:10FA5000246300E8A5030010A5060012AD00001401 +:10FA60008D220024AD0200188C82005CAD02001CC7 +:10FA70008C820058AD0200202402FFFFAD0200245A +:10FA8000948200E63042FFFFAD02002894820060BD +:10FA9000948300BE30427FFF3063FFFF00021200FC +:10FAA00000431021AD02002C3C021000AD000030DC +:10FAB000AF4201B8948200BE2403FFF700A21021D8 +:10FAC000A48200BE8D2200200043102403E0000821 +:10FAD000AD220020274301808F4201B80440FFFE81 +:10FAE0008F8200249442001C3042FFFF000211C0AC +:10FAF000AC62000024020019A062000B3C0210005E +:10FB0000AC60003003E00008AF4201B88F87002CE2 +:10FB100030C300FF8F4201B80440FFFE8F820048CF +:10FB200034636000ACA2000093820044A0A20005F0 +:10FB30008CE20010A4A20006A4A300088C8200207E +:10FB40002403FFF7A0A2000A24020002A0A2000BD7 +:10FB50008CE20000ACA200108CE20004ACA2001405 +:10FB60008CE2001CACA200248CE20020ACA2002895 +:10FB70008CE2002CACA2002C8C820024ACA20018D9 +:10FB80003C021000AF4201B88C82002000431024D8 +:10FB900003E00008AC8200208F86001427BDFFE838 +:10FBA000AFBF0014AFB0001090C20063304200201D +:10FBB0001040000830A500FF8CC2007C2403FFDF4A +:10FBC00024420001ACC2007C90C2006300431024B8 +:10FBD000A0C2006310A000238F830014275001806F +:10FBE000020028210E0015D6240600828F82001400 +:10FBF000904200633042004050400019A38000440E +:10FC00008F83002C8F4201B80440FFFE8F82004892 +:10FC1000AE02000024026082A60200082402000254 +:10FC2000A202000B8C620008AE0200108C62000C75 +:10FC3000AE0200148C620014AE0200188C62001830 +:10FC4000AE0200248C620024AE0200288C620028E0 +:10FC5000AE02002C3C021000AF4201B8A380004469 +:10FC60008F8300148FBF00148FB000109062006368 +:10FC700027BD00183042007FA06200639782003ADF +:10FC80008F86003C8F850014938300280046102344 +:10FC9000A782003AA4A000E490A400638F820040F1 +:10FCA000AF83003C2403FFBF0046102100832024C3 +:10FCB000AF820040A0A400638F820014A04000BD6A +:10FCC0008F82001403E00008A44000BE8F8A001455 +:10FCD00027BDFFE0AFB10014AFB000108F88003C2B +:10FCE000AFBF00189389001C954200E430D100FF9B +:10FCF0000109182B0080802130AC00FF3047FFFF46 +:10FD00000000582114600003310600FF012030215B +:10FD1000010958239783003A0068102B1440003CD7 +:10FD20000000000014680007240200018E02002079 +:10FD30002403FFFB34E7800000431024AE020020C0 +:10FD40002402000134E70880158200053165FFFFB9 +:10FD50000E001554020020210A00169102002021F5 +:10FD60000E001585020020218F8400482743018062 +:10FD70008F4201B80440FFFE24020018AC6400006A +:10FD8000A062000B8F840014948200E6A46200102D +:10FD90003C021000AC600030AF4201B894820060B9 +:10FDA00024420001A4820060948200603C030800A9 +:10FDB0008C63318830427FFF5443000F02002021C2 +:10FDC000948200602403800000431024A482006019 +:10FDD0009082006090830060304200FF000211C2F8 +:10FDE00000021027000211C03063007F0062182556 +:10FDF000A083006002002021022028218FBF00186C +:10FE00008FB100148FB000100A0015F927BD002033 +:10FE1000914200632403FF8000431025A142006348 +:10FE20009782003A3048FFFF110000209383001CA6 +:10FE30008F840014004B1023304600FF948300E4AD +:10FE40002402EFFF0168282B00621824A48300E439 +:10FE500014A000038E020020010058210000302170 +:10FE60002403FFFB34E7800000431024AE0200208F +:10FE700024020001158200053165FFFF0E001554B4 +:10FE8000020020210A0016B99783003A0E0015855A +:10FE9000020020219783003A8F82003CA780003A1D +:10FEA00000431023AF82003C9383001C8F82001418 +:10FEB0008FBF00188FB100148FB0001027BD002035 +:10FEC00003E00008A04300BD938200442403000126 +:10FED00027BDFFE8004330042C420020AFB00010E3 +:10FEE000AFBF00142410FFFE10400005274501801D +:10FEF0003C0208008C4231900A0016D600461024BD +:10FF00003C0208008C423194004610241440000743 +:10FF1000240600848F8300142410FFFF9062006287 +:10FF20003042000F34420040A06200620E0015D63D +:10FF300000000000020010218FBF00148FB00010DD +:10FF400003E0000827BD00188F83002427BDFFE0D1 +:10FF5000AFB20018AFB10014AFB00010AFBF001CBB +:10FF60009062000D00A0902130D100FF3042007F50 +:10FF7000A062000D8F8500148E4300180080802140 +:10FF80008CA2007C146200052402000E90A2006383 +:10FF9000344200200A0016FFA0A200630E0016C51E +:10FFA000A38200442403FFFF104300472404FFFF03 +:10FFB00052200045000020218E4300003C0200102A +:10FFC00000621024504000043C020008020020217E +:10FFD0000A00170E24020015006210245040000988 +:10FFE0008E45000002002021240200140E0016C5D8 +:10FFF000A38200442403FFFF104300332404FFFFC7 +:020000021000EC +:100000008E4500003C02000200A2102410400016A1 +:100010003C0200048F8600248CC200148CC30010A4 +:100020008CC40014004310230044102B50400005E2 +:10003000020020218E43002C8CC2001010620003AD +:10004000020020210A00173F240200123C02000493 +:1000500000A210245040001C00002021020020219A +:100060000A00173F2402001300A2102410400006CB +:100070008F8300248C620010504000130000202168 +:100080000A001739020020218C6200105040000441 +:100090008E42002C020020210A00173F240200118A +:1000A00050400009000020210200202124020017F6 +:1000B0000E0016C5A38200442403FFFF1043000274 +:1000C0002404FFFF000020218FBF001C8FB2001806 +:1000D0008FB100148FB000100080102103E00008E1 +:1000E00027BD00208F83001427BDFFD8AFB40020A8 +:1000F000AFB3001CAFB20018AFB10014AFB0001026 +:10010000AFBF0024906200638F91002C2412FFFF88 +:100110003442004092250000A06200638E2200104D +:100120000080982130B0003F105200060360A021EB +:100130002402000D0E0016C5A38200441052005484 +:100140002404FFFF8F8300148E2200188C63007C30 +:1001500010430007026020212402000E0E0016C585 +:10016000A38200442403FFFF104300492404FFFF3F +:1001700024040020120400048F83001490620063A2 +:1001800034420020A06200638F85003410A000205C +:1001900000000000560400048F8200140260202139 +:1001A0000A0017902402000A9683000A9442006015 +:1001B0003042FFFF144300048F8200202404FFFD1F +:1001C0000A0017B7AF82003C3C0208008C42318C19 +:1001D0000045102B14400006026020210000282159 +:1001E0000E001646240600010A0017B70000202161 +:1001F0002402002D0E0016C5A38200442403FFFF35 +:10020000104300232404FFFF0A0017B70000202139 +:10021000160400058F8400148E2300142402FFFFAF +:100220005062001802602021948200602442000184 +:10023000A4820060948200603C0308008C633188D3 +:1002400030427FFF5443000F0260202194820060FF +:100250002403800000431024A48200609082006088 +:1002600090830060304200FF000211C2000210279C +:10027000000211C03063007F00621825A083006077 +:10028000026020210E0015F9240500010000202144 +:100290008FBF00248FB400208FB3001C8FB20018D2 +:1002A0008FB100148FB000100080102103E000080F +:1002B00027BD00288F83001427BDFFE8AFB00010D2 +:1002C000AFBF0014906200638F87002C00808021F4 +:1002D000344200408CE60010A06200633C0308003A +:1002E0008C6331B030C23FFF0043102B1040004EF2 +:1002F0008F8500302402FF8090A3000D004310245E +:10030000304200FF504000490200202100061382C5 +:10031000304800032402000255020044020020215C +:1003200094A2001C8F85001424030023A4A20114AE +:100330008CE60000000616023042003F1043001019 +:100340003C0300838CE300188CA2007C1062000642 +:100350002402000E0E0016C5A38200442403FFFFF2 +:10036000104300382404FFFF8F8300149062006361 +:1003700034420020A06200630A0017FC8F8300242F +:1003800000C31024144300078F83002490A200624E +:100390003042000F34420020A0A20062A38800383F +:1003A0008F8300249062000D3042007FA062000D18 +:1003B0008F83003410600018020020218F840030E9 +:1003C0008C8200100043102B1040000924020018FA +:1003D000020020210E0016C5A38200442403FFFF63 +:1003E000104300182404FFFF0A00182400002021F5 +:1003F0008C820010240500010200202100431023FC +:100400008F830024240600010E001646AC62001003 +:100410000A001824000020210E0015F9240500010F +:100420000A00182400002021020020212402000DCF +:100430008FBF00148FB0001027BD00180A0016C52A +:10044000A38200448FBF00148FB0001000801021E1 +:1004500003E0000827BD001827BDFFC8AFB2002089 +:10046000AFBF0034AFB60030AFB5002CAFB400283A +:10047000AFB30024AFB1001CAFB000188F46012805 +:100480003C0308008C6331A02402FF80AF86004843 +:1004900000C318213065007F03452821006218241D +:1004A0003C02000AAF43002400A2282190A200626F +:1004B00000809021AF850014304200FF000211023D +:1004C000A382003890A200BC304200021440000217 +:1004D00024030034240300308F820014A3830028F7 +:1004E000938300388C4200C0A3800044AF82003C5C +:1004F000240200041062031C8F84003C8E4400041C +:10050000508003198F84003C8E4200103083FFFF1F +:10051000A784003A106002FFAF8200408F8400146D +:100520002403FF809082006300621024304200FFA9 +:10053000144002CF9785003A9383003824020002CA +:1005400030B6FFFF14620005000088219382002866 +:100550002403FFFD0A001B19AF82003C8F82003C80 +:1005600002C2102B144002A18F8400400E0014EC34 +:1005700000000000938300283C040800248477983E +:10058000240200341462002EAF84002C3C0A0800C0 +:100590008D4A77C82402FFFFAFA2001000803821E7 +:1005A0002405002F3C09080025297398240800FF22 +:1005B0002406FFFF90E2000024A3FFFF00062202B2 +:1005C00000C21026304200FF0002108000491021B6 +:1005D0008C420000306500FF24E7000114A8FFF5FD +:1005E0000082302600061027AFA20014AFA2001030 +:1005F0000000282127A7001027A6001400C51023FB +:100600009044000324A2000100A71821304500FFF8 +:100610002CA200041440FFF9A06400008FA2001077 +:100620001142000724020005024020210E0016C5D9 +:10063000A38200442403FFFF104300642404FFFF4F +:100640003C0208009042779C104000098F82001401 +:10065000024020212402000C0E0016C5A382004493 +:100660002403FFFF104300592404FFFF8F8200146E +:10067000A380001C3C0308008C63779C8C440080A2 +:100680003C0200FF3442FFFF006218240083202B4D +:1006900010800008AF83003402402021240200199A +:1006A0000E0016C5A38200442403FFFF1043004739 +:1006B0002404FFFF8F87003C9782003A8F85003427 +:1006C000AF8700200047202310A0003BA784003AFA +:1006D0008F86001430A200030002102390C300BCD8 +:1006E0003050000300B0282100031882307300014D +:1006F0000013108000A228213C0308008C6331A065 +:100700008F8200483084FFFF0085202B004310219A +:1007100010800011244200888F84002C1082000E6B +:100720003C033F013C0208008C42779800431024B0 +:100730003C0325001443000630E500FF8C820000D6 +:10074000ACC200888C8200100A0018E9ACC2009884 +:100750000E001529000030219382001C8F850014A3 +:100760008F830040020238218F82003CA387001C47 +:1007700094A400E4006218218F82003434841000B5 +:10078000AF83004000503021A4A400E41260000EAA +:10079000AF86003C24E20004A382001C94A200E483 +:1007A00024C30004AF83003C34422000A4A200E430 +:1007B0000A001906000020218F820040AF80003C13 +:1007C00000471021AF820040000020212414FFFFC9 +:1007D000109402112403FFFF3C0808008D0877A83D +:1007E0003C0208008C4231B03C03080090637798CB +:1007F00031043FFF0082102B1040001B3067003F88 +:100800003C0208008C4231A88F83004800042180FC +:1008100000621821006418213062007F0342282101 +:100820003C02000C00A228213C020080344200015E +:100830003066007800C230252402FF800062102458 +:10084000AF42002830640007AF4208048F820014D2 +:100850000344202124840940AF460814AF850024B6 +:10086000AF840030AC4301189383003824020003A6 +:10087000146201CF240200012402002610E201D1FB +:1008800028E2002710400013240200322402002234 +:1008900010E201CC28E200231040000824020024CA +:1008A0002402002010E201B82402002110E20147D6 +:1008B000024020210A001AFB2402000B10E201C1B1 +:1008C0002402002510E20010024020210A001AFB39 +:1008D0002402000B10E201AE28E2003310400006B3 +:1008E0002402003F2402003110E2009A024020213D +:1008F0000A001AFB2402000B10E201A5024020218D +:100900000A001AFB2402000B8F90002C3C03080005 +:100910008C6331B08F8500308E0400100000A82158 +:100920008CB3001430823FFF0043102B8CB10020A9 +:100930005040018F0240202190A3000D2402FF802F +:1009400000431024304200FF504001890240202122 +:10095000000413823042000314400185024020212C +:1009600094A3001C8F8200148E040028A443011459 +:100970008CA20010026218231064000302402021A0 +:100980000A00197C2402001F8F82003400621021AB +:100990000262102B104000088F83002402402021A7 +:1009A000240200180E0016C5A382004410540174DE +:1009B0002404FFFF8F8300248F8400348C62001096 +:1009C0000224882100441023AC6200108F8200149E +:1009D000AC7100208C4200680051102B10400009BF +:1009E0008F830030024020212402001D0E0016C516 +:1009F000A38200442403FFFF104301612404FFFF8E +:100A00008F8300308E0200248C6300241043000783 +:100A1000024020212402001C0E0016C5A3820044BF +:100A20002403FFFF104301562404FFFF8F8400249A +:100A30008C82002424420001AC8200241233000482 +:100A40008F8200148C4200685622000E8E02000035 +:100A50008E0200003C030080004310241440000D6F +:100A60002402001A024020210E0016C5A382004471 +:100A70002403FFFF104301422404FFFF0A0019BAB8 +:100A80008E0200143C0300800043102450400003F9 +:100A90008E020014AC8000208E0200142411FFFF8F +:100AA0001051000E3C0308003C0208008C423190BB +:100AB000004310242403001B14400007A3830044B8 +:100AC0000E0016C5024020211051012D2404FFFF05 +:100AD0000A0019CB8E030000A38000448E0300009F +:100AE0003C02000100621024104000123C02008011 +:100AF0000062102414400008024020212402001A41 +:100B00000E0016C5A38200442403FFFF1043011CFE +:100B10002404FFFF02402021020028210E0016E5D8 +:100B2000240600012403FFFF104301152404FFFFE6 +:100B3000241500018F83002402A0302102402021CF +:100B40009462003624050001244200010A001ADFE5 +:100B5000A46200368F90002C3C0308008C6331B0F7 +:100B60008E13001032623FFF0043102B10400089AB +:100B70008F8400302402FF809083000D00431024F6 +:100B8000304200FF104000842402000D0013138245 +:100B900030420003240300011443007F2402000DAF +:100BA0009082000D30420008544000048F820034CF +:100BB000024020210A001A102402002450400004A0 +:100BC0008E03000C024020210A001A102402002784 +:100BD0008C82002054620006024020218E0300080F +:100BE0008C820024506200098E02001402402021F1 +:100BF000240200200E0016C5A38200441054007188 +:100C00002403FFFF0A001A458F8400242411FFFFEC +:100C1000145100048F860014024020210A001A405B +:100C2000240200258E0300188CC2007C1062000391 +:100C30002402000E0A001A40024020218E030024E4 +:100C40008C82002810620003240200210A001A404E +:100C5000024020218E0500288C82002C10A2000367 +:100C60002402001F0A001A40024020218E03002C9B +:100C700014600003240200230A001A4002402021CD +:100C80008CC200680043102B104000032402002691 +:100C90000A001A40024020218C82001400651821AD +:100CA0000043102B104000088F84002402402021B4 +:100CB000240200220E0016C5A382004410510041F8 +:100CC0002403FFFF8F8400242403FFF79082000D8C +:100CD00000431024A082000D8F8600143C030800FE +:100CE0008C6331AC8F82004894C400E08F8500246F +:100CF0000043102130847FFF000420400044102175 +:100D00003043007F034320213C03000E0083202159 +:100D10002403FF8000431024AF42002CA493000062 +:100D20008CA2002824420001ACA200288CA2002C36 +:100D30008E03002C00431021ACA2002C8E02002C4C +:100D4000ACA200308E020014ACA2003494A2003A8F +:100D500024420001A4A2003A94C600E03C0208002C +:100D60008C4231B024C4000130837FFF1462000F35 +:100D700000803021240280000082302430C2FFFF36 +:100D8000000213C2304200FF000210270A001A7E40 +:100D9000000233C02402000D024020210E0016C5BF +:100DA000A38200440A001A84004018218F82001494 +:100DB00002402021240500010E0015F9A44600E0A0 +:100DC000000018210A001B16006088218F90002C5B +:100DD0003C0308008C6331B08E05001030A23FFF49 +:100DE0000043102B104000612402FF808F840030EC +:100DF0009083000D00431024304200FF5040005CFF +:100E0000024020218F8200341040000B0005138225 +:100E10008F8200149763000A944200603042FFFF03 +:100E200014430005000513828F8200202404FFFD77 +:100E30000A001AF3AF82003C304200031440000E57 +:100E40000000000092020002104000058E03002402 +:100E500050600015920300030A001AAF02402021DF +:100E60008C82002450620010920300030240202173 +:100E70000A001AB72402000F9082000D30420008C9 +:100E80005440000992030003024020212402001074 +:100E90000E0016C5A38200442403FFFF1043003850 +:100EA0002404FFFF92030003240200025462000C9A +:100EB000920200038F820034544000099202000322 +:100EC000024020212402002C0E0016C5A3820044FB +:100ED0002403FFFF1043002A2404FFFF92020003B3 +:100EE0000200282102402021384600102CC60001B3 +:100EF0002C4200010E0016E5004630252410FFFFAD +:100F00001050001F2404FFFF8F8300341060001373 +:100F1000024020213C0208008C42318C0043102BFF +:100F200014400007000000000000282124060001F2 +:100F30000E001646000000000A001AF300002021EF +:100F40002402002D0E0016C5A38200441050000C90 +:100F50002404FFFF0A001AF3000020210E0015F9F7 +:100F6000240500010A001AF300002021024020217C +:100F70002402000D0E0016C5A3820044004020216B +:100F80000A001B16008088211514000E00000000C6 +:100F90000E00174C024020210A001B160040882139 +:100FA0000E0016C5A38200440A001B1600408821CB +:100FB00014620017022018212402002314E2000505 +:100FC0002402000B0E0017C0024020210A001B164D +:100FD0000040882102402021A38200440E0016C553 +:100FE0002411FFFF0A001B170220182130A500FF63 +:100FF0000E001529240600019783003A8F82003CD9 +:10100000A780003A00431023AF82003C0220182141 +:101010001220003E9782003A2402FFFD5462003EF7 +:101020008E4300208E4200048F830014005610234C +:10103000AE420004906200633042007FA062006311 +:101040008E4200208F840014A780003A34420002B0 +:10105000AE420020A48000E4908200632403FFBF1E +:1010600000431024A08200630A001B598E43002015 +:101070009082006300621024304200FF1040002381 +:101080009782003A90820088908300BD2485008872 +:101090003042003F2444FFE02C820020A383001C48 +:1010A00010400019AF85002C2402000100821804B2 +:1010B000306200191440000C3C02800034420002EF +:1010C000006210241440000B306200201040000F1A +:1010D0009782003A90A600010240202124050001D9 +:1010E0000A001B5330C60001024020210A001B5297 +:1010F00024050001024020210000282124060001CF +:101100000E001646000000009782003A1440FD04CD +:101110008F8400148E4300203062000410400012BF +:101120008F84003C2402FFFB00621024AE420020AA +:10113000274301808F4201B80440FFFE8F820048A0 +:10114000AC6200008F420124AC6200042402608380 +:10115000A462000824020002A062000B3C021000FE +:10116000AF4201B88F84003C8F8300148FBF0034DE +:101170008FB600308FB5002C8FB400288FB30024B9 +:101180008FB200208FB1001C8FB000182402000124 +:1011900027BD003803E00008AC6400C030A500FFA4 +:1011A0002403000124A900010069102B1040000C49 +:1011B00000004021240A000100A31023004A380443 +:1011C00024630001308200010069302B10400002CE +:1011D000000420420107402554C0FFF800A310235B +:1011E00003E00008010010213C020800244260A432 +:1011F0003C010800AC22738C3C02080024425308D6 +:101200003C010800AC2273902402000627BDFFE0D9 +:101210003C010800A02273943C021EDCAFB200180F +:10122000AFB10014AFBF001CAFB0001034526F411B +:1012300000008821240500080E001B7A02202021CE +:10124000001180803C07080024E773980002160014 +:1012500002071821AC6200000000282124A200012E +:101260003045FFFF8C6200002CA6000804410002FC +:10127000000220400092202614C0FFF8AC64000059 +:10128000020780218E0400000E001B7A2405002036 +:10129000262300013071FFFF2E2301001460FFE5BB +:1012A000AE0200008FBF001C8FB200188FB1001477 +:1012B0008FB0001003E0000827BD002027BDFFD835 +:1012C000AFB3001CAFB20018AFBF0020AFB1001425 +:1012D000AFB000108F5101408F48014800089402C0 +:1012E000324300FF311300FF8F4201B80440FFFE7C +:1012F00027500180AE1100008F420144AE0200046D +:1013000024020002A6120008A202000B240200140C +:10131000AE1300241062002528620015104000085A +:101320002402001524020010106200302402001272 +:10133000106200098FBF00200A001CB58FB3001C8B +:101340001062007024020022106200378FBF00205C +:101350000A001CB58FB3001C3C0208008C4231A06F +:101360002403FF800222102100431024AF420024F6 +:101370003C0208008C4231A0022210213042007F42 +:10138000034218213C02000A00621821166000BCCA +:10139000AF830014906200623042000F344200308C +:1013A000A06200620A001CB48FBF00203C046000F1 +:1013B0008C832C083C02F0033442FFFF00621824A7 +:1013C000AC832C083C0208008C4231A08C832C0892 +:1013D000244200740002108200021480006218256A +:1013E000AC832C080A001CB48FBF00203C0208000C +:1013F0008C4231A02403FF800222102100431024DC +:10140000AF4200243C0208008C4231A03C03000A99 +:10141000022210213042007F03421021004310219C +:101420000A001CB3AF8200143C0208008C4231A0B9 +:101430002405FF800222102100451024AF42002421 +:101440003C0208008C4231A0022210213042007F71 +:10145000034218213C02000A0062182190620063D6 +:1014600000A21024304200FF10400085AF8300141A +:1014700024620088944300123C0208008C4231A888 +:1014800030633FFF00031980022210210043102126 +:101490003043007F03432021004510243C03000C0F +:1014A00000832021AF4200289082000D00A210246A +:1014B000304200FF10400072AF8400249082000D83 +:1014C000304200101440006F8FBF00200E0015C87E +:1014D000000000008F4201B80440FFFE0000000041 +:1014E000AE1100008F420144AE020004240200024B +:1014F000A6120008A202000BAE1300240A001CB4BE +:101500008FBF00202406FF8002261024AF42002057 +:101510003C0208008C4231A031043FFF00042180CE +:101520000222102100461024AF4200243C03080090 +:101530008C6331A83C0208008C4231A03227007F26 +:101540000223182102221021006418213042007F5A +:101550003064007F034228213C02000A0066182400 +:1015600000A22821034420213C02000C00822021FB +:10157000AF4300283C020008034718210062902175 +:10158000AF850014AF8400240E0015C8010080212F +:101590008F4201B80440FFFE8F8200248F84001424 +:1015A000274501809042000DACB10000A4B00006B8 +:1015B000000216000002160300021027000237C2C4 +:1015C00014C00016248200889442001232033FFFA8 +:1015D00030423FFF14430012240260829083006374 +:1015E0002402FF8000431024304200FF5040000CD2 +:1015F00024026082908200623042000F3442004038 +:10160000A082006224026084A4A200082402000DCB +:10161000A0A200050A001C9E3C0227002402608252 +:10162000A4A20008A0A000053C02270000061C00A0 +:101630000062182524020002A0A2000BACA3001037 +:10164000ACA00014ACA00024ACA00028ACA0002CDE +:101650008E42004C8F840024ACA200189083000DB1 +:101660002402FF8000431024304200FF1040000598 +:101670008FBF00209082000D3042007FA082000DBD +:101680008FBF00208FB3001C8FB200188FB10014E1 +:101690008FB000103C02100027BD002803E00008B6 +:1016A000AF4201B80800343008003430080033A8D5 +:1016B000080033E0080034140800343808003438D7 +:1016C00008003438080033180A0001240000000024 +:1016D000000000000000000D747061362E322E33C1 +:1016E00000000000060203010000000000000000EE +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000001000000376 +:10176000000000000000000D0000000D3C02080019 +:1017700024421C003C03080024632094AC40000079 +:101780000043202B1480FFFD244200043C1D080070 +:1017900037BD2FFC03A0F0213C1008002610049058 +:1017A0003C1C0800279C1C000E00015C000000008F +:1017B0000000000D3084FFFF308200078F85001885 +:1017C00010400002248300073064FFF800853021B8 +:1017D00030C41FFF03441821247B4000AF85001C48 +:1017E000AF84001803E00008AF4400843084FFFF9A +:1017F000308200078F8500208F860028104000026D +:10180000248300073064FFF8008520210086182B10 +:1018100014600002AF8500240086202303442821A1 +:1018200034068000AF840020AF44008000A6202151 +:1018300003E00008AF84003827BDFFD8AFB3001C19 +:10184000AFB20018AFB00010AFBF0024AFB400209B +:10185000AFB100143C0860088D1450002418FF7FBD +:101860003C1A8000029898243672380CAD12500051 +:101870008F5100083C07601C3C08600036300001B6 +:10188000AF500008AF800018AF400080AF40008428 +:101890008CE600088D0F08083C0760168CEC0000F1 +:1018A00031EEFFF039CA00103C0DFFFF340B800011 +:1018B0003C030080034B48212D440001018D282466 +:1018C0003C0253533C010800AC230420AF8900388C +:1018D000AF860028AF840010275B400014A20003ED +:1018E00034E37C008CF90004032818218C7F007CF1 +:1018F0008C6500783C0280003C0B08008D6B048CEA +:101900003C0A08008D4A048834520070AF85003CC0 +:10191000AF9F00403C13080026731C440240A021E6 +:101920008E4800008F46000038C30001306400017B +:1019300010800017AF880034028048218D2F0000EE +:101940003C0508008CA5045C3C1808008F1804585E +:1019500001E8102300A280210000C8210202402BD0 +:1019600003198821022838213C010800AC30045CAE +:101970003C010800AC2704588F4E000039CD00010F +:1019800031AC00011580FFED01E04021AF8F003444 +:101990008E5100003C0708008CE7045C3C0D0800F9 +:1019A0008DAD04580228802300F0602100007021D2 +:1019B0000190302B01AE1821006620213C01080067 +:1019C000AC2C045C3C010800AC2404588F46010890 +:1019D0008F47010030C92000AF860000AF87000CA0 +:1019E0001120000A00C040213C1808008F18042C68 +:1019F000270800013C010800AC28042C3C184000DA +:101A0000AF5801380A000196000000009749010410 +:101A100000002821014550213122FFFF0162582199 +:101A20000162F82B015F502130D902003C0108000F +:101A3000AC2B048C3C010800AC2A0488172000154C +:101A400024040F0010E400130000000024080D001F +:101A500010E8023B30CD000611A0FFE93C18400021 +:101A6000936E00002409001031C400F01089027147 +:101A700024020070108202E58F880014250F0001F7 +:101A8000AF8F00143C184000AF5801380A0001968F +:101A900000000000974C01041180FFD93C18400061 +:101AA00030C34000146000A1000000008F460178A0 +:101AB00004C0FFFE8F87003824100800240F0008A0 +:101AC0008CE30008AF500178A74F0140A7400142C6 +:101AD000974E01048F86000031C9FFFF30CD000111 +:101AE00011A002E1012040212531FFFE241800024F +:101AF000A75801463228FFFFA75101483C190800AA +:101B00008F39043C172002D08F8C000C30DF00206E +:101B100017E00002240400092404000130C20C0074 +:101B2000240504005045000134840004A744014A00 +:101B30003C1108008E3104203C1800483C10000184 +:101B40000238182530CF00020070282511E000046B +:101B5000000018213C19010000B9282524030001C8 +:101B600030DF000453E00005AF8300083C0600109E +:101B700000A6282524030001AF830008AF4510000C +:101B80000000000000000000000000000000000055 +:101B90008F83000810600023000000008F451000B4 +:101BA00004A1FFFE000000001060001E0000000005 +:101BB0008F4410003C0C0020008C102410400019B1 +:101BC0008F8E000031CD000211A000160000000031 +:101BD000974F101415E000130000000097591008EB +:101BE0003338FFFF271100060011188200033080F0 +:101BF00000C7282132300001322300031200032CD9 +:101C00008CA200000000000D00C7F821AFE2000028 +:101C10003C0508008CA5043024A600013C01080006 +:101C2000AC2604308F6D00003402FFFFAF8D00043E +:101C30008CEC0000118202A6000020218CED000037 +:101C400031AC01001180028A000000003C02080053 +:101C50008C4204743C0308008C63044C3C1F080055 +:101C60008FFF04703C1808008F1804480048382182 +:101C70000068802100E8282B03E430210208402B73 +:101C80000304882100C57021022878213C01080046 +:101C9000AC30044C3C010800AC2F04483C01080067 +:101CA000AC2704743C010800AC2E04708F8400182B +:101CB0000120302131290007249F000833F91FFF3C +:101CC00003594021AF84001CAF990018251B400028 +:101CD000AF590084112000038F83002024C2000725 +:101CE0003046FFF88F84002800C3282100A4302B41 +:101CF00014C00002AF83002400A428230345602100 +:101D0000340D8000018D10213C0F1000AF850020A4 +:101D1000AF820038AF450080AF4F01788F88001444 +:101D2000250F00010A0001EFAF8F00148F62000839 +:101D30008F670000240500300007760231C300F0F1 +:101D4000106500A7240F0040546FFF4C8F880014CB +:101D50008F4B01780560FFFE0000000030CA0200D2 +:101D600015400003000612820000000D00061282DA +:101D7000304D0003000D4900012D18210003808023 +:101D8000020D402100086080019380218E1F000019 +:101D900017E00002000000000000000D8F6E00043C +:101DA00005C202BD92070006920E000592020004D1 +:101DB0003C090001000E18800070F8218FED00181A +:101DC000277100082448000501A96021000830821D +:101DD000AFEC0018022020210E00059E26050014FD +:101DE000920A00068F7900043C0B7FFF000A2080D6 +:101DF000009178218DF800043566FFFF0326282422 +:101E000003053821ADE70004920E0005920D000491 +:101E1000960C0008000E10800051C8218F2300008E +:101E2000974901043C07FFFF006758243128FFFF52 +:101E3000010DF82103EC50233144FFFF01643025EC +:101E4000AF260000920300072418000110780275E5 +:101E5000240F0003106F0285000000008E050010A3 +:101E60002419000AA7590140A7450142921800040D +:101E70008F860000240F0001A7580144A7400146A7 +:101E80009747010430D100023C050041A7470148B3 +:101E900000001821A74F014A1220000330CB000494 +:101EA0003C0501412403000151600005AF83000897 +:101EB0003C06001000A6282524030001AF8300087B +:101EC000AF4510000000000000000000000000000E +:101ED000000000008F8A000811400004000000008C +:101EE0008F4410000481FFFE000000008F6B000093 +:101EF000920800043C1108008E310444AF8B0004AA +:101F000097590104311800FF3C0E08008DCE0440A3 +:101F10003325FFFF0305382102276021000010212F +:101F2000250F000A31E8FFFF0187482B01C2682115 +:101F300001A9F821311000073C010800AC2C044431 +:101F40003C010800AC3F0440120000038F8C0018D5 +:101F50002506000730C8FFF8010C682131BF1FFFBC +:101F6000AF8C001CAF9F0018AF5F00849744010442 +:101F7000035F80213084FFFF308A00071140000397 +:101F8000261B4000248900073124FFF88F8200209F +:101F90008F850028008220210085702B15C000024B +:101FA000AF820024008520233C0B08008D6B048C3D +:101FB0003C0A08008D4A04880344882134038000C9 +:101FC000022310213C0F1000AF840020AF820038A4 +:101FD000AF440080AF4F01780A0002968F8800144A +:101FE0008F5001780600FFFE30D10200162000035A +:101FF000000612820000000D00061282305F00030E +:10200000001F1900007F302100062080009FC8219A +:1020100000194880013380218E180000130000024F +:10202000000000000000000D8F6C000C058001FB1B +:102030008F870038240E0001AE0E00008CE30008EC +:10204000A20000078F65000400055402314D00FF17 +:1020500025A80005000830822CCB00411560000245 +:10206000A20A00040000000D8F7800043C03FFFF6B +:1020700000E02821330BFFFF256C000B000C1082C1 +:1020800000022080008748218D3F000026040014B4 +:10209000A618000803E3C8240E00059EAD39000011 +:1020A0008F4F01083C11100001F1382410E001AB02 +:1020B00000000000974D01049208000725AAFFECDC +:1020C000350600023144FFFFA2060007960600080D +:1020D0002CC7001354E0000592030007921100077B +:1020E000362F0001A20F00079203000724180001F9 +:1020F000107801C224090003106901D58F880038C7 +:1021000030CBFFFF257100020011788331E400FF1E +:1021100000042880A20F000500A848218D2D000092 +:10212000974A01043C0EFFFF01AEF8243143FFFF44 +:10213000006B1023244CFFFE03ECC825AD390000D2 +:10214000920600053C03FFF63462FFFF30D800FF23 +:102150000018388000F08821922F00143C04FF7F83 +:102160003487FFFF31EE000F01C65821316500FFB3 +:1021700000055080015068218DAC00200148F821F5 +:10218000A20B00060182C824AE0C000CAFF9000CB3 +:10219000920900068E11000C032778240009C080E4 +:1021A0000310702195C60026030828210227202449 +:1021B000AE04000CADCF0020ADC60024ACA60010CC +:1021C0008F8800003C0B08008D6B048C3C0A0800D3 +:1021D0008D4A0488241F001024190002A75F0140C3 +:1021E000A7400142A7400144A7590146974901046D +:1021F00024070001310600022538FFFEA7580148D8 +:102200003C050009A747014A10C00003000018213F +:102210003C05010924030001310C00045180000534 +:10222000AF8300083C08001000A828252403000103 +:10223000AF830008AF451000000000000000000060 +:1022400000000000000000009205000424AE00021F +:1022500031CD0007000D182330620007AE020010D8 +:102260008F90000812000004000000008F4F100043 +:1022700005E1FFFE000000008F7100008F8E001846 +:102280003C0308008C630444AF91000497450104AB +:1022900025CF001031E61FFF30A2FFFFAF8E001CDC +:1022A000AF860018AF4600842449FFFE3C0C0800AE +:1022B0008D8C0440974D010401208021000947C303 +:1022C0000070C02131A9FFFF0310F82B0188C8213D +:1022D000033F202103463821313100073C0108002B +:1022E000AC3804443C010800AC2404401220000334 +:1022F00024FB40002527000730E9FFF88F860020E7 +:102300008F8400280126382100E4C02B170000022A +:10231000AF86002400E438230347202134198000CD +:10232000009910213C0F1000AF870020AF820038C9 +:10233000AF470080AF4F01780A0002968F880014E3 +:102340009747010410E0FDAE3C1840008F5801781B +:102350000700FFFE30C5400010A000033C1F00082E +:102360000000000D3C1F0008AF5F01402410080072 +:102370008F860000AF5001789744010430D90001E6 +:10238000132000ED3086FFFF24CCFFFE240D000259 +:10239000A74D0146A74C01488F9100182408000D55 +:1023A000A748014A8F630000262F000831E21FFF73 +:1023B0000342702130C90007AF830004AF91001CB5 +:1023C000AF82001800C03821AF4200841120000302 +:1023D00025DB400024D800073307FFF88F85002055 +:1023E0008F84002800E5302100C4382B14E000025F +:1023F000AF85002400C430238F8400140346F821E5 +:10240000340C8000AF86002003EC8021AF460080B2 +:10241000249900013C0610003C184000AF460178AA +:10242000AF900038AF990014AF5801380A000196F8 +:10243000000000008F630000975101043067FFFF28 +:102440003228FFFF8F4F017805E0FFFE30EC0007D8 +:10245000000CF82333F0000724F9FFFE2404000ADF +:10246000A7440140A7500142A7590144A740014693 +:10247000A74801488F45010830B800201700000226 +:10248000240300092403000130CD0002A743014AC0 +:102490003C04004111A00003000018213C0401414C +:1024A0002403000130C9000451200005AF83000857 +:1024B0003C0600100086202524030001AF8300089D +:1024C000AF44100000000000000000000000000009 +:1024D000000000008F8E000811C000040000000002 +:1024E0008F4210000441FFFE000000008F7F0000BB +:1024F000276400088F91003CAF9F0004948500087A +:102500009490000A9499000C30AFFFFF0010C400B3 +:102510003323FFFF11F100A6030320253C0E080022 +:102520008DCE04443C0C08008D8C044000E88821CA +:102530002626FFFE01C628210000682100A6F82BF0 +:10254000018D2021009F80213C010800AC2504441E +:102550003C010800AC30044024E200083042FFFF98 +:102560003047000710E000038F830018244F000756 +:1025700031E2FFF83106FFFF30C800070043802139 +:1025800032191FFF0359C021AF83001CAF990018F7 +:10259000271B4000AF590084110000038F8C0020DE +:1025A00024C5000730A6FFF88F84002800CC28211E +:1025B00000A4F82B17E00002AF8C002400A428230D +:1025C000AF850020AF4500803C0408008C840434B3 +:1025D00003454821340E8000012E6821108000053B +:1025E000AF8D0038939100172406000E12260011BB +:1025F0002407043F3C021000AF4201788F8800148A +:10260000250F00010A0001EFAF8F00140E0005C472 +:1026100000E020218F8800143C0B08008D6B048C97 +:102620003C0A08008D4A0488250F00010A0001EFCA +:10263000AF8F00143C021000A7470148AF42017859 +:102640000A0004CE8F88001424040F001184003D7A +:1026500030CE002015C0000224030009240300012D +:102660000A00021AA743014A0A00020DA7400146C8 +:1026700094EF000894F1000A94F0000C8F8C003C59 +:10268000001174003207FFFF31EDFFFF11AC00377E +:1026900001C720253C1808008F1804443C0F08008F +:1026A0008DEF0440000080210308682101A8382B29 +:1026B00001F0702101C760213C010800AC2D0444E9 +:1026C0003C010800AC2C04400A00027A8F840018F8 +:1026D0003C0208008C42047C3C0308008C630454D8 +:1026E0003C1F08008FFF04783C1808008F18045026 +:1026F000004838210068802100E8282B03E43021BD +:102700000208402B0304882100C57021022878218B +:102710003C010800AC3004543C010800AC2F0450CC +:102720003C010800AC27047C3C010800AC2E047876 +:102730000A00027A8F840018A74001460A00043577 +:102740008F91001830CD002015A0FFC52403000D87 +:10275000240300050A00021AA743014A974E010408 +:1027600025C5FFF00A00038130A4FFFF8F980040C9 +:102770001498FFC8000010213C0508008CA5046CCB +:102780003C1F08008FFF046800A8C8210328302BD5 +:1027900003E22021008640213C010800AC39046C92 +:1027A0003C010800AC2804680A00027A8F840018F3 +:1027B0008F8C0040148CFF5900E8C8213C18080099 +:1027C0008F18046C3C1108008E3104682723FFFE2B +:1027D00003034821000010210123302B0222702125 +:1027E00001C668213C010800AC29046C3C010800CA +:1027F000AC2D04680A0004A524E200088F88003884 +:102800003C03FFFF8D02000C0043F82403E4C825BD +:10281000AD19000C0A00038F30CBFFFF0A0003C381 +:10282000AE000000974A0104920400048E26000CBA +:10283000014458212579FFF200C7C0243325FFFF4A +:1028400003053825AE27000C0A0002E68E050010AD +:102850003C0DFFFF8D0A0010014D582401646025D6 +:10286000AD0C00100A00038F30CBFFFF974301042B +:10287000920E00048E290010006E1021244DFFEEF0 +:102880000127602431A8FFFF0188F825AE3F001022 +:102890000A0002E68E0500108E0F000CAE0000004C +:1028A00000078880023028210A0002B8ACAF00205F +:1028B0001460000D3058FFFF3C04FFFF0044682403 +:1028C00001A47026000E602B000D102B004CF82484 +:1028D00013E00002000000000000000D8CAF0000BB +:1028E0000A00025001E410253B03FFFF0003882B80 +:1028F0000018802B0211202410800002000000002C +:102900000000000D8CB900000A0002503722FFFFC2 +:102910003084FFFF30A5FFFF108000070000182162 +:10292000308200011040000200042042006518219E +:102930001480FFFB0005284003E000080060102120 +:1029400010C00007000000008CA2000024C6FFFF9A +:1029500024A50004AC82000014C0FFFB2484000402 +:1029600003E000080000000010A0000824A3FFFFFF +:10297000AC86000000000000000000002402FFFF01 +:102980002463FFFF1462FFFA2484000403E00008BC +:1029900000000000308EFFFF30D8FFFF00057C00F4 +:1029A00001F8602539CDFFFF01AC5021014C582BB7 +:1029B000014B4821000944023127FFFF00E8302184 +:1029C0000006240230C5FFFF00A418213862FFFF73 +:1029D00003E000083042FFFF3C0C08008D8C0484AB +:1029E000240BFF8027BDFFD001845021014B4824D8 +:1029F000AF4900203C0808008D080484AFB20020D5 +:102A0000AFB00018AFBF0028AFB30024AFB1001CB7 +:102A1000936600040104382130E4007F009A1021FD +:102A20003C0300080043902130C500200360802152 +:102A30003C080111277B000814A000022646007004 +:102A40002646006C9213000497510104920F000473 +:102A50003267000F322EFFFF31ED004001C72823FF +:102A600011A0000500004821925900BC3338000431 +:102A70001700009000000000924300BC307F00046B +:102A800013E0000F0000000010A0000D0000000087 +:102A9000960E0002240AFF8000A7602125CDFFFECC +:102AA000A74D1016920B0004014B2024308200FF2A +:102AB00010400085010C40253C0F0400010F40250B +:102AC0008F5301780660FFFE2404000AA7440140EA +:102AD000960D00022404000931AC0007000C5823B5 +:102AE000316A0007A74A0142960200022443FFFE12 +:102AF000A7430144A7400146975F0104A75F01482F +:102B00008F590108333800205300000124040001CC +:102B1000920F000431EE001015C000023483001043 +:102B200000801821A743014A0000000000000000B7 +:102B30000000000000000000AF481000000000008E +:102B40000000000000000000000000008F51100095 +:102B50000621FFFE3113FFFF12600003000000009A +:102B60008F481018ACC8000096030006307FFFFFA6 +:102B700027F900020019988200138880023B302157 +:102B80008CD800001520005700183402920300046E +:102B90002405FF8000A3F82433F100FF1220002C4D +:102BA00000000000924700BC30F2000212400028F2 +:102BB00000000000974B100C2562FFFEA742101684 +:102BC000000000003C0A040035490030AF49100005 +:102BD00000000000000000000000000000000000F5 +:102BE0008F4C10000581FFFE000000009749100C7B +:102BF0008F51101C00C020213127FFFF24F200302C +:102C0000001218820003288000BBF8213226FFFF43 +:102C1000AFF100000E0005B300112C020013C880B4 +:102C2000033B98218E78000000027400AFB80010BA +:102C30008FA80010310FFFFFAFAF00108FA400105E +:102C400001C46825AFAD00108FA60010AE6600006D +:102C500097730008976D000A9766000C8F8A003CF6 +:102C6000000D5C0030CCFFFF3262FFFF104A0036DF +:102C7000016C2025960600023C10100024D30008A9 +:102C80000E00013B3264FFFF974C01040E00014926 +:102C90003184FFFFAF5001788FBF00288FB300242D +:102CA0008FB200208FB1001C8FB0001803E0000825 +:102CB00027BD003010A0FF700000000024A5FFFC1D +:102CC0000A0005EC240900048CD10000AF51101853 +:102CD0008F5301780660FF7A2404000A0A00060177 +:102CE0000000000000A7C8218F8800388F4E101CFC +:102CF0000019C0820018788001E82021AC8E000005 +:102D0000000E2C0200C020210E0005B331C6FFFFCB +:102D1000023B28218CAD000000025400004030210D +:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8 +:102D30008FA2001001424825AFA900108FA70010F4 +:102D40000A000631ACA700008F8F0040148FFFC926 +:102D50000000000097420104960B00023C050800A9 +:102D60008CA5046C3049FFFF316AFFFF3C1108005D +:102D70008E310468012A382124F2FFFE00B240217E +:102D80000012FFC30112C82B023FC02103192021EA +:102D90003C010800AC28046C3C010800AC24046829 +:102DA0000A00066B0000000000A4102B1040000970 +:102DB000240300010005284000A4102B04A00003F8 +:102DC000000318405440FFFC000528401060000735 +:102DD000000000000085302B14C0000200031842E0 +:102DE000008520231460FFFB0005284203E0000853 +:102DF000008010218F85002C27BDFFE800053027BB +:102E00002CC300012CA400020083102510400003F5 +:102E1000AFBF00102405007FAF85002C00052827D8 +:102E200030A5FFFF0E000592240426F58F830030A5 +:102E3000240402BD004030210083382B10E000093B +:102E400024050001000420400083102B04800003AF +:102E5000000528405440FFFC0004204010A000085A +:102E600000C350210064402B1500000200052842D9 +:102E70000064182314A0FFFB0004204200C350216B +:102E80008FBF0010000A4C02312200FF27BD00183E +:102E9000AF8A002C03E00008AF8900300A00002A46 +:102EA00000000000000000000000000D7478703683 +:102EB0002E322E3300000000060203000000000046 +:102EC000000001360000EA60000000000000000081 +:102ED00000000000000000000000000000000000F2 +:102EE00000000000000000000000000000000000E2 +:102EF00000000000000000000000000000000016BC +:102F000000000000000000000000000000000000C1 +:102F100000000000000000000000000000000000B1 +:102F200000000000000000000000000000000000A1 +:102F3000000000000000138800000000000005DC15 +:102F4000000000000000000010000003000000006E +:102F50000000000D0000000D3C02080024423C204F +:102F60003C03080024633DD4AC4000000043202B08 +:102F70001480FFFD244200043C1D080037BD7FFC87 +:102F800003A0F0213C100800261000A83C1C0800FB +:102F9000279C3C200E0002BA000000000000000D3B +:102FA0008F8300383C088000350700708CE50000F6 +:102FB000008330253C02900000C22025AF85003000 +:102FC000AF4400208F4900200520FFFE3C03800015 +:102FD000346200708C4500008F8600303C19080078 +:102FE0008F39007C3C0E08008DCE007800A620238F +:102FF00003245821000078210164682B01CF60214F +:10300000018D50213C010800AC2B007C3C010800E4 +:10301000AC2A007803E00008000000000A0000412C +:10302000240400018F8400383C05800034A2000194 +:103030000082182503E00008AF43002003E00008E9 +:10304000000010213084FFFF30A5FFFF1080000733 +:1030500000001821308200011040000200042042CC +:10306000006518211480FFFB0005284003E00008DC +:103070000060102110C00007000000008CA20000BA +:1030800024C6FFFF24A50004AC82000014C0FFFB8F +:103090002484000403E000080000000010A00008E1 +:1030A00024A3FFFFAC860000000000000000000029 +:1030B0002402FFFF2463FFFF1462FFFA248400044C +:1030C00003E0000800000000308AFFFF93A800130F +:1030D000A74A014497490E1630C600FF3C02100073 +:1030E000A7490146AF450148A3460152A748015AE6 +:1030F000AF4701608FA400188FA30014A7440158A4 +:10310000AF43015403E00008AF42017803E0000838 +:10311000000000003C038000346200708C49000015 +:103120008F8800002484000727BDFFF83084FFF853 +:10313000AF890030974D008A31ACFFFFAFAC000083 +:103140008FAB0000016850232547FFFF30E61FFFCB +:1031500000C4282B14A0FFF73C0C8000358B0070B6 +:103160008D6A00003C0708008CE700843C060800DC +:103170008CC6008000081082014918230002788064 +:1031800000E370210000202101C3C82B00C4C0212E +:1031900001FA4021031948212502400027BD0008FB +:1031A0003C010800AC2E00843C010800AC290080E2 +:1031B00003E00008000000008F8200002486000762 +:1031C00030C5FFF800A2182130641FFF03E000089B +:1031D000AF8400008F8700388F8A004027BDFFB87A +:1031E0008F860044AFB60040AFBF0044AFB5003C8F +:1031F000AFB40038AFB30034AFB20030AFB1002C81 +:10320000AFB000288F4501048D4900ACAF47008066 +:103210008CC8002000A938230000B021AF480E1050 +:103220008F440E1000004821AF440E148CC20024BD +:10323000AF420E188F430E18AF430E1C10E001254D +:103240002D230001936B0008116000D400000000E2 +:10325000976E001031CDFFFF00ED602B158000CF81 +:103260000000000097700010320FFFFFAF4F0E00FC +:103270008F520000325100081220FFFD00000000B4 +:1032800097540E088F460E043285FFFF30B30001BD +:1032900012600132000000000000000D30B8A040B4 +:1032A00024150040131500C030A9A0001120012DE5 +:1032B00000000000937F000813E0000800000000F9 +:1032C00097630010306BFFFF00CB402B1100000311 +:1032D00030AC00401180012300000000A785003CB5 +:1032E000AF8600349366000800E02821AFA70020D5 +:1032F00014C0012427B30020AF60000C9782003C6B +:103300003047400014E00002240300162403000E9E +:1033100024194007A363000AAF790014938A003E82 +:103320008F740014315800070018AA4002959025A8 +:10333000AF7200149784003C8F700014309100101D +:1033400002117825AF6F0014978E003C31CD000834 +:1033500011A00147000028218F6700143C021000D3 +:103360003C0C810000E22825AF65001497460E0A48 +:103370002408000E3405FFFC30C3FFFF006C582505 +:10338000AF6B0004A3680002937F000A27E90004E2 +:10339000A369000A9786003C9363000A30CC1F00A3 +:1033A000000C598301634021251F0028A37F0009D9 +:1033B00097490E0CA769001093790009272A00028B +:1033C000315800070018A82332B10007A371000B81 +:1033D00093740009976400108F910034978F003C1C +:1033E000329200FF024480210205702131ED00403D +:1033F00011A0000531C4FFFF0091282B3C12800072 +:1034000010A000140000A0210224382B14E0011B9E +:103410008FA500208F4D0E14AF4D0E108F420E1C45 +:10342000AF420E18AF440E008F4F000031EE00087F +:1034300011C0FFFD0000000097540E080080882195 +:1034400000009021A794003C8F500E04241400012A +:10345000AF900034976400103095FFFF8E68000035 +:103460000111F82317E00009AE7F00008F650014FA +:103470008F8B004434A60040AF6600148F4C0E10B2 +:10348000AD6C00208F430E18AD63002493670008D5 +:1034900014E000D2000000000E00009E2404001082 +:1034A0008F8900483C08320000402821312600FF67 +:1034B0000006FC0003E8502525390001AF990048BB +:1034C000AC4A0000937800099370000A330400FFAF +:1034D00000047400320F00FF01CF6825AC4D0004DA +:1034E0008F820048064000EAACA20008ACA0000CA5 +:1034F0009783003C306B0008156000022628000608 +:1035000026280002974E0E148F450E1C8F6700046C +:10351000936D000231C4FFFF31A200FFAFA2001083 +:103520008F6C0014AFA800180E00008BAFAC001415 +:10353000240400100E0000C7000000008E7200007E +:1035400016400005000000008F6400142405FFBF32 +:1035500000859824AF7300148F79000C033538214F +:10356000AF67000C9375000816A00008000000006B +:1035700012800006000000008F7F00143C0BEFFF5C +:103580003568FFFE03E84824AF690014A3740008FF +:103590008FA500200A00024602202021AF470E001E +:1035A0000A0000F5000000008F5901780720FFFE97 +:1035B000241F08008F840000AF5F0178974B008ABA +:1035C000316AFFFF014448232528FFFF31021FFF16 +:1035D0002C4300081460FFF9000000008F8E0048A3 +:1035E0008F8D003800C048210344202125C60001EA +:1035F000240C0F00AF86004800E9382324864000E1 +:1036000031CA00FF11AC0005240800019391003E6F +:103610003230000700107A4035E80001000AAC00A3 +:103620003C18010002B8A025AC9440008F930048DC +:1036300030B2003630A40008ACD3000410800097EC +:1036400001123025974E0E0A8F8D00003C0281003A +:1036500031CCFFFF25AB0008018240253C03100060 +:1036600031651FFF25390006241F000EAF48016099 +:1036700000C33025A75F015AAF850000A759015844 +:1036800014E0000A8F93003824120F0052720002D7 +:103690002416000134C600408F580E108F94004449 +:1036A000AE9800208F550E18AE9500248F450E144D +:1036B000AF4501448F590E1CAF590148A34A01522E +:1036C0003C0A1000AF460154AF4A017814E0FEDD19 +:1036D0002D2300010076A025128000178FBF004423 +:1036E0008F84003824160F0010960084000000001C +:1036F0008F45017804A0FFFE24150F001095006E81 +:10370000000000008F470E14240202403C1F1000EE +:10371000AF4701448F440E1CAF440148A3400152FF +:10372000A740015AAF400160A7400158AF42015481 +:10373000AF5F01788FBF00448FB600408FB5003C6B +:103740008FB400388FB300348FB200308FB1002CAB +:103750008FB0002803E0000827BD004814C0FED049 +:1037600030B8A0408F420E148F84004400004821DE +:10377000AC8200208F510E1CAC9100240A00020E76 +:103780002D2300018F910034978A003C3C12800069 +:103790000220A821315800401700FF300000A0216E +:1037A000976900108F9200343139FFFF13320035D2 +:1037B00000002021008048211480FEA000A03821B4 +:1037C0008F420E148F840044AC8200208F510E1C57 +:1037D000AC9100240A00020E2D230001936A000917 +:1037E0009378000B315000FF330F00FF020F702160 +:1037F00025C2000A3050FFFF0E00009E020020216B +:103800008F8600483C1F410024CD0001AF8D004849 +:10381000936C000930C600FF00064400318300FFAE +:10382000246B0002010B4825013FC825AC5900005C +:103830008F67000C97440E1400F22825AC45000455 +:103840008F450E1C8F670004936A00023084FFFFCF +:10385000315800FFAFB800108F6F0014AFB10018DF +:103860000E00008BAFAF00140A0001A60200202159 +:10387000AF6000040A00013EA36000020A00024695 +:1038800000002021000090210A0001702414000192 +:103890003C1280000A000195ACB2000C8F91000030 +:1038A00025240002A744015826300008320F1FFFCC +:1038B0000A0001F9AF8F0000AF40014C1120002C2D +:1038C000000000008F590E10AF5901448F430E18AD +:1038D000240200403C1F1000AF430148A3400152A6 +:1038E000A740015AAF400160A7400158AF420154C0 +:1038F000AF5F01780A0002278FBF00441120000645 +:103900000000000097460E0830CC004015800002F1 +:10391000000000000000000D8F4D017805A0FFFEA3 +:103920000000000097530E103C120500240E2000EA +:10393000326AFFFF0152C025AF58014C8F4F0E1461 +:103940003C021000AF4F01448F500E1CAF50014895 +:10395000A34001528F840038A740015AAF40016054 +:10396000A7400158AF4E01540A000215AF4201783A +:103970008F490E14AF4901448F430E1C0A00028E7A +:10398000240200403C0E20FF27BDFFE03C1A8000CF +:103990003C0F800835CDFFFDAFBF001CAFB2001853 +:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC +:1039B0000000000000000000000000000000000007 +:1039C000000000003C0C00FF358BFFFDAF4B0E00EC +:1039D0003C0660048CC95000240AFF7F3C11600043 +:1039E000012A40243507380CACC750008E24043817 +:1039F00024050009AF4500083083FFFF38622F71AE +:103A00002450C0B3AF8000480E000068AF800000B3 +:103A100052000001AE20442C0E0004353C11800001 +:103A20000E000ED9363000708F8A00403C1208001C +:103A300026523C88020088218E0800008F5F00001B +:103A40003BF900013338000113000017AF88003044 +:103A5000022048218D2700003C0F08008DEF006CEC +:103A60003C0C08008D8C006800E8C02301F8282178 +:103A70000000682100B8302B018D582101664021DB +:103A80003C010800AC25006C3C010800AC28006833 +:103A90008F44000038830001306200011440FFEDC4 +:103AA00000E04021AF8700308E0C00003C0508008C +:103AB0008CA5006C3C0408008C84006801883023CD +:103AC00000A638210000102100E6402B00821821BA +:103AD0000068F8213C010800AC27006C3C0108009C +:103AE000AC3F00688F49010025590088AF99004418 +:103AF000AF890038AF4900208E070000AF87003043 +:103B00008F4D017805A0FFFE000000008E0600002A +:103B10003C0B08008D6B00743C0408008C84007022 +:103B200000C728230165F8210000102103E5402B80 +:103B30000082382100E8C821240908003C0108005F +:103B4000AC3F00743C010800AC390070AF4901780B +:103B500093580108A398003E938F003E31EE000178 +:103B600015C000158F830038240E0D00106E00194B +:103B7000240F0F00106F001D00000000915900007D +:103B800024180050332900FF113800043C1F400066 +:103B9000AF5F01380A0002E7000000000E00090EC6 +:103BA000000000008F8A00403C1F4000AF5F0138DA +:103BB0000A0002E700000000938D003E31AC0006D1 +:103BC000000C51000E0000CE0152D8210A00034320 +:103BD0008F8A00403C1B0800277B3D080E0000CE6A +:103BE000000000000A0003438F8A00403C1B0800CD +:103BF000277B3D280E0000CE000000000A00034392 +:103C00008F8A004090AA00018FAB00108CAC00108E +:103C10003C0300FF8D680004AD6C00208CAD0014E7 +:103C200000E060213462FFFFAD6D00248CA7001816 +:103C30003C09FF000109C024AD6700288CAE001CC0 +:103C40000182C82403197825AD6F0004AD6E002CE5 +:103C50008CAD0008314A00FFAD6D001C94A9000234 +:103C60003128FFFFAD68001090A70000A56000029A +:103C7000A1600004A167000090A30002306200FF71 +:103C80000002198210600005240500011065000E75 +:103C90000000000003E00008A16A00018CD80028A1 +:103CA000354A0080AD7800188CCF0014AD6F001439 +:103CB0008CCE0030AD6E00088CC4002CA16A0001CF +:103CC00003E00008AD64000C8CCD001CAD6D001845 +:103CD0008CC90014AD6900148CC80024AD680008BC +:103CE0008CC70020AD67000C8CC200148C8300646C +:103CF0000043C82B13200007000000008CC20014F2 +:103D0000144CFFE400000000354A008003E0000886 +:103D1000A16A00018C8200640A000399000000007F +:103D200090AA000027BDFFF88FA9001CA3AA0000DD +:103D30008FAE00003C0FFF808FA8001835E2FFFF18 +:103D40008CCD002C01C26024AFAC0000A120000487 +:103D500000E06021A7A000028FB800008D270004BA +:103D60000188182100A0582100C05021006D28268C +:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E +:103D800034D9FFFF3C02FF0003193024000D1DC091 +:103D9000010EC82400E2C02400C370250319782551 +:103DA000AD2E0000AD2F00048D450024AFAE000005 +:103DB000AD2500088D4D00202405FFFFAD2D000C22 +:103DC000956800023107FFFFAD27001091660018CB +:103DD00030C200FF000219C2506000018D4500345E +:103DE000AD2500148D67000827BD0008AD27001C15 +:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA +:103E0000AD20001803E00008AD20002027BDFFE032 +:103E1000AFB20018AFB10014AFB00010AFBF001CBC +:103E20009098000000C088213C0D00FF330F007FF8 +:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0 +:103E4000A0CE000194A6001EA22000048CAB00149A +:103E50008E29000400A08021016C2824012A40241E +:103E60000080902101052025A6260002AE24000432 +:103E700026050020262400080E00007624060002F5 +:103E800092470000260500282624001400071E0083 +:103E90000003160324060004044000032403FFFF6C +:103EA000965900023323FFFF0E000076AE23001068 +:103EB000262400248FBF001C8FB200188FB100147D +:103EC0008FB0001024050003000030210A0000809C +:103ED00027BD002027BDFFD8AFB1001CAFB0001830 +:103EE000AFBF002090A80000240200018FB0003C6A +:103EF0003103003F00808821106200148FAA00382F +:103F0000240B0005506B0016AFAA001000A0202162 +:103F100000C028210E0003DC02003021922400BCE6 +:103F2000308300021060000326060030ACC00000A1 +:103F300024C600048FBF00208FB1001C8FB0001872 +:103F400000C0102103E0000827BD002801403821EF +:103F50000E00035AAFB000100A0004200000000059 +:103F60000E0003A1AFB000140A00042000000000FE +:103F70003C02000A034218213C04080024843D6CE2 +:103F80002405001A000030210A000080AF8300548D +:103F90003C038000346200708C48000000A058216F +:103FA00000C04821308A00FFAF8800308F4401787C +:103FB0000480FFFE3C0C8000358600708CC500003C +:103FC0003C0308008C6300743C1808008F180070D4 +:103FD00000A82023006468210000C82101A4782BD8 +:103FE0000319702101CF60213C010800AC2D007441 +:103FF0003C010800AC2C00708F480E14AF480144FF +:10400000AF47014CA34A0152A74B01589346010800 +:1040100030C5000854A0000135291000934B090059 +:1040200024070050316A00FF11470007000000001C +:104030008F450E1CAF450148AF4901543C091000A3 +:1040400003E00008AF490178934D010831A800084A +:104050001100001000000000934F010831EE001025 +:1040600051C00001352900083C04080090843DD06F +:10407000A34401508F4309A4AF4301488F4209A0D4 +:10408000AF420144AF4901543C09100003E000086D +:10409000AF4901783C1908008F393D8C333800084E +:1040A0005700FFF1352900080A00047300000000E2 +:1040B00024070040AF470814AF4008108F4209445E +:1040C0008F4309508F4409548F45095C8F46094C32 +:1040D000AF820064AF830050AF84004CAF85005CBA +:1040E00003E00008AF8600609346010930C5007FF9 +:1040F000000518C0000521400083102103E00008DE +:10410000244200883C09080091293D9124A800021E +:104110003C05110000093C0000E8302500C51825C9 +:1041200024820008AC83000003E00008AC80000497 +:104130009347010B8F4A002C974F09083C18000E3B +:104140000358482131EEFFFF000E41C0AF48002C5C +:1041500097430908952C001A008040212403000190 +:10416000318BFFFFAC8B00008D2D001C00A058216F +:1041700000C06021AC8D00048D24002030E7004099 +:10418000AD04000891220019304400031083004858 +:104190002885000214A00062240600021086005642 +:1041A00024190003109900660000000010E0003A96 +:1041B000000000003C07080094E73D8624E200016F +:1041C000934F0934934709219525002A31EE00FFCA +:1041D000000E488230ED00FF978700580009360036 +:1041E000000D1C003044FFFF00C310250044C02513 +:1041F00000A778213C19400003197025000F4C00DE +:10420000AD090004AD0E0000934D09203C030006EB +:1042100025090014000D360000C32025AD04000858 +:104220008F59092C24E5000130A27FFFAD19000C45 +:104230008F580930A782005825020028AD180010B9 +:104240008F4F0938AD0F0014AD2B00048F4E09407D +:10425000AD2E0008934D09373C05080090A53D9010 +:104260008F4409488F46094031A700FF00EC182110 +:10427000008678230003C7000005CC0003196025E1 +:1042800031E8FFFC01885825AD2B000CAD20001053 +:1042900003E00008AF4A002C3C0D080095AD3D86B8 +:1042A0003C0E080095CE3D800A0004C901AE1021E5 +:1042B0003C05080094A53D8A3C06080094C63D8054 +:1042C0003C18080097183D7C952E002400A6782104 +:1042D00001F86823000E240025A2FFF200821825B1 +:1042E00024190800AD03000CAD190014AD00001036 +:1042F0000A0004C4250800189526002495250028E6 +:104300000006C40000057C00370E810035ED080072 +:10431000AD0E000CAD0D00100A0004C425080014F9 +:104320001480FFA200000000952400240004140063 +:1043300034430800AD03000C0A0004C42508001033 +:104340003C03080094633D8A3C05080094A53D8029 +:104350003C06080094C63D7C953900249538002819 +:10436000006520210086782300196C000018740075 +:1043700025E2FFEE01C2202535A3810024190800A3 +:10438000AD03000CAD040010AD190018AD00001411 +:104390000A0004C42508001C03E00008240201F4FC +:1043A00027BDFFE8AFB00010AFBF00140E000060E3 +:1043B0000080802124050040AF4508148F83005001 +:1043C0008F84004C8F85005C0070182100641023DE +:1043D00018400004AF830050AF6300548F66005450 +:1043E000AF86004C1200000C000000008F440074E7 +:1043F000936800813409FA002D07000710E00005DA +:1044000000891021936C0081240B01F4018B50046E +:1044100001441021AF62000C8F4E095C01C5682376 +:1044200019A000048FBF00148F4F095CAF8F005C90 +:104430008FBF00148FB000100A00006227BD001863 +:104440008F8400648F8300508F82004CAF640044DF +:10445000AF63005003E00008AF6200543C038000EB +:10446000346200708C43000027BDFFF8308700FFE6 +:1044700030A900FF30C800FFAF8300308F440178BF +:104480000480FFFE3C028000345900708F38000029 +:10449000A3A700033C0708008CE700748FAC000062 +:1044A0003C0608008CC60070030378233C0E7FFF97 +:1044B00000EFC82135CDFFFF00005021018D2824D9 +:1044C00000CA1821000847C0032F202B00A8102580 +:1044D0000064C021AFA200003C010800AC390074A8 +:1044E0003C010800AC380070934F010AA3A0000201 +:1044F0003C0E80FFA3AF00018FAC0000312B007F8A +:1045000035CDFFFF018D4824000B5600012A4025C0 +:10451000240730002406FF803C05100027BD00085A +:10452000AF48014CAF470154A7400158A346015280 +:1045300003E00008AF45017827BDFFE8AFBF0014D6 +:10454000AFB000108F6500743C068000309000FF13 +:1045500000A620250E000060AF6400749363000580 +:10456000346200080E000062A362000502002021F0 +:104570008FBF00148FB00010240500052406000131 +:104580000A00057027BD001827BDFFE03C0380002E +:10459000AFB00010AFBF0018AFB1001434620070AC +:1045A0008C470000309000FF30A800FFAF8700303C +:1045B0008F4401780480FFFE3C18800037110070A2 +:1045C0008E2F00003C0D08008DAD00743C0A0800E1 +:1045D0008D4A007001E7702301AE282100005821A8 +:1045E00000AE302B014B4821012638213C01080048 +:1045F000AC250074000088213C010800AC27007045 +:104600001100000F000000008F6200742619FFFFE8 +:104610003208007F0002FE0233E5007F150000062D +:10462000332200FF2407FF800207202624A3FFFF78 +:1046300000838025320200FF0040802124111008F1 +:104640000E000060000000008F49081831250004AA +:1046500014A0FFFD3218007F001878C000187140C8 +:1046600001CF682125AC0088AF4C0818274A098083 +:104670008D4B0020AF4B01448D460024AF460148CE +:10468000A35001500E000062A740015802201021E3 +:104690008FBF00188FB100148FB0001003E0000826 +:1046A00027BD002027BDFFE8308400FFAFBF00100A +:1046B0000E0005BB30A500FF8F8300508FBF001098 +:1046C000344500402404FF903C02100027BD001830 +:1046D000AF43014CA3440152AF45015403E000082D +:1046E000AF4201789343093E306200081040000D4C +:1046F0003C0901013528080AAC8800008F47007486 +:10470000AC8700043C06080090C63D9030C5001000 +:1047100050A00006AC8000088F6A0060AC8A0008D8 +:104720002484000C03E00008008010210A00062207 +:104730002484000C27BDFFE8AFBF0014AFB0001009 +:104740009346093F00A050210005288000853823AA +:1047500030C200FF240300063C09080095293D866D +:1047600024E8FFD824050004104300372406000283 +:104770009750093C3C0F020400063400320EFFFF44 +:1047800001CF6825AC8D0000934C093E318B002091 +:104790001160000800000000934309363C02010349 +:1047A000345F0300307900FF033FC0252405000873 +:1047B000AC98000493430934935909210005F88209 +:1047C000306200FF0002C082332F00FF00186E002D +:1047D000000F740001AE6025018920253C094000CE +:1047E00000898025ACF0FFD8934309378F4F0948E3 +:1047F0008F580940306200FF004AC821033F7021F2 +:1048000001F86023000E6F0001A650253185FFFCE2 +:10481000001F58800145482501683821AD09002056 +:104820000E00006024F00028240400040E00006242 +:10483000A364003F020010218FBF00148FB000104E +:1048400003E0000827BD00180A0006352406001200 +:1048500027BDFFD024090010AFB60028AFB5002453 +:10486000AFB40020AFB10014AFB000103C0108009D +:10487000A0293D90AFBF002CAFB3001CAFB2001811 +:1048800097480908309400FF3C02000E3107FFFFF3 +:10489000000731C0AF46002C974409089344010B30 +:1048A00030B500FF03428021308300300000B0218A +:1048B0001060012500008821240C00043C01080040 +:1048C000A02C3D90934B093E000B5600000A2E038E +:1048D00004A0016000000000AF400048934F010BAE +:1048E00031EE002011C00006000000009358093E80 +:1048F00000189E0000139603064001890000000086 +:104900009344010B30830040106000038F930050EC +:104910008F8200502453FFFF9347093E30E6000882 +:1049200014C0000224120003000090219619002CEC +:1049300093580934934F0937A7990058330C00FF57 +:1049400031EE00FF024E6821000D5880016C5021AD +:10495000015140213C010800A4283D869205001821 +:1049600030A900FF010918213C010800A4233D885B +:104970009211001816200002000000000000000D37 +:104980003C010800A4233D8A3C010800A4203D808E +:104990003C010800A4203D7C935F010B3063FFFFC6 +:1049A00033F00040120000022464000A2464000B6B +:1049B0003091FFFF0E00009E022020219358010B32 +:1049C0003C08080095083D8A0040202100185982C3 +:1049D000316700010E00049A01072821934C010B56 +:1049E0008F4B002C974E09083C0F000E034F4021BF +:1049F00031CDFFFF000D51C0AF4A002C974309088D +:104A00009505001A004038212404000130A9FFFF59 +:104A1000AC4900008D06001C00404821318A00404E +:104A2000AC4600048D020020ACE20008910300199E +:104A300030630003106400EC28790002172001188D +:104A4000241000021070010C241F0003107F011EAF +:104A500000000000114000DE000000003C090800DA +:104A600095293D8625220001935F0934934E092143 +:104A70009504002A33F900FF0019C08231CF00FFEE +:104A8000978E005800184600000F6C00010D80251D +:104A90003045FFFF02051025008E50213C034000E9 +:104AA00000433025000A6400ACEC0004ACE60000D2 +:104AB000935F09203C19000624EC0014001FC60077 +:104AC00003197825ACEF00088F48092C25CD00018B +:104AD00031A57FFFACE8000C8F500930A785005846 +:104AE00024E80028ACF000108F4409380100802130 +:104AF000ACE40014AD9300048F530940AD9300085B +:104B0000934A09373C19080093393D908F4309486F +:104B10008F460940314200FF0052F82100667023A1 +:104B2000001F7F000019C40001F8282531CDFFFCCB +:104B300000AD2025AD84000CAD800010AF4B002CE3 +:104B4000934B093E317300081260000D3C060101D1 +:104B500034CC080AACEC00288F530074AD13000469 +:104B60003C0B0800916B3D903167001050E0000352 +:104B7000AD0000088F6A0060AD0A00082510000C27 +:104B800012C0003D000000009343093F24160006B8 +:104B900024060004306200FF105600C924070002FA +:104BA0009758093C3C0F0204330DFFFF01AF40252D +:104BB000AE0800009345093E30A400201080000894 +:104BC00000000000935309363C0B0103357F0300BE +:104BD000327900FF033F7025AE0E00042406000862 +:104BE000934F093493480921312AFFFF31ED00FF2B +:104BF000000D1082310300FF0002B60000032C00FC +:104C000002C56025018A9825001220803C094000D9 +:104C10000204502302695825AD4BFFD8935F093732 +:104C20008F4F09488F58094033F900FF0332702134 +:104C30000006B08201D668210007440001F828234D +:104C4000000D1F000068302530A2FFFC2547FFD86B +:104C500000C260250016808002074821ACEC0020CD +:104C6000253000280E00006024120004A372003FCB +:104C70000E000062000000009347010B30F200407C +:104C8000124000053C1900FF8E180000372EFFFF70 +:104C9000030E3024AE0600000E0000C702202021C3 +:104CA0003C10080092103D90321100031220000FBA +:104CB00002A028218F89005025330001AF930050B6 +:104CC000AF7300508F6B00540173F8231BE0000298 +:104CD000026020218F640054AF6400548F4C007434 +:104CE000258401F4AF64000C02A028210280202159 +:104CF000A76000680E0005BB3C1410008F850050B3 +:104D000034550006AF45014C8F8A00488FBF002CF8 +:104D10008FB3001C25560001AF9600488FB20018D3 +:104D2000A34A01528FB60028AF5501548FB1001429 +:104D3000AF5401788FB500248FB400208FB00010DD +:104D400003E0000827BD00309358093E00189E007C +:104D500000139603064200362411000293440923EF +:104D6000308300021060FEDD8F8600608F8200506D +:104D700014C2FEDA000000000E0000600000000017 +:104D80009369003F24070016312800FF1107000C2B +:104D9000240500083C0C0800918C3D90358B0001E7 +:104DA0003C010800A02B3D90936A003F314300FF77 +:104DB00010650065240D000A106D005E2402000CD1 +:104DC0000E000062000000000A00069000000000D3 +:104DD0003C09080095293D863C0A0800954A3D801B +:104DE0000A0006F3012A10213C09080095293D8A92 +:104DF0003C04080094843D803C06080094C63D7C39 +:104E000095030024012410210046F8230003CC0060 +:104E100027F0FFF20330C025240F0800ACF8000C87 +:104E2000ACEF0014ACE000100A0006EE24E7001816 +:104E30003C010800A0313D90935F093E241600011B +:104E400033F900201720FEA5241100080A0006905F +:104E5000241100048F6E00848F4D094011A0FE9E26 +:104E6000AF8E0050240F00143C010800A02F3D908D +:104E70000A00068F00000000950E0024950D002802 +:104E8000000E6400000D2C003589810034A6080056 +:104E9000ACE9000CACE600100A0006EE24E70014B2 +:104EA0001460FEEC000000009502002400021C00CB +:104EB00034640800ACE4000C0A0006EE24E700109D +:104EC0000A000741240700123C02080094423D8A70 +:104ED0003C06080094C63D803C03080094633D7C7A +:104EE00095100024951900280046F82103E3C023FB +:104EF00000106C0000197400270FFFEE01CF282569 +:104F000035AC8100ACEC000CACE5001024070800C7 +:104F1000AD2700182527001C0A0006EEAD2000145E +:104F20008F7F004CAF7F00548F7900540A000699A0 +:104F3000AF790050A362003F0E0000620000000045 +:104F40000A00069000000000240200140A0008274E +:104F5000A362003F27BDFFE8308400FFAFBF001011 +:104F60000E0005BB30A500FF9378007E9379007F8B +:104F7000936E00809368007A332F00FF001866005C +:104F8000000F6C0031CB00FF018D4825000B520053 +:104F90008FBF0010012A3825310600FF344470000D +:104FA00000E628252402FF813C03100027BD0018DD +:104FB000AF45014CAF440154A342015203E0000845 +:104FC000AF43017827BDFFD8AFB20018AFB10014CE +:104FD000AFB00010AFBF0020AFB3001C9342010977 +:104FE000308600FF30B000FF000618C23204000215 +:104FF0003071000114800005305200FF93670005F6 +:1050000030E5000810A0000D30C80010024020213B +:105010000E0005A702202821240400018FBF0020D4 +:105020008FB3001C8FB200188FB100148FB0001026 +:105030000080102103E0000827BD00281500003281 +:105040000000000093430109000028213062007F26 +:10505000000220C00002F94003E49821267900886C +:10506000033B98218E7800248E6F0008130F0046B2 +:10507000000000008F640084241800020004FD82F8 +:1050800033F900031338007C0000000093660083AE +:10509000934A0109514600043205007C10A00060CB +:1050A000000000003205007C14A0005302402021C3 +:1050B00016200006320400018E7F00248F5901045F +:1050C00017F9FFD600002021320400011080000AE9 +:1050D000024020218F4209408F9300641053000644 +:1050E000000000000E00066D022028218F430940B9 +:1050F000AF630044024020210E0006020220282156 +:105100000A000860240400013C0908008D2900649D +:10511000252600013C010800AC26006416000012A0 +:10512000000000008F6D00843C0E00C001AE6024C2 +:1051300015800005024020210E00082E02202821A3 +:105140000A00086024040001240500040E00057014 +:1051500024060001024020210E00082E02202821F2 +:105160000A000860240400010E000041240400012C +:10517000936B007D020B50250E000062A36A007D38 +:105180000A0008A38F6D00848F6600748F480104A5 +:105190008E67002400064E021507FFB63126007FF9 +:1051A000936B008326440001308A007F1146004340 +:1051B000316300FF5464FFB08F6400842645000112 +:1051C00030B1007F30A200FF122600042405000148 +:1051D000004090210A00087624110001240FFF806E +:1051E000024F702401CF9026324200FF00409021F0 +:1051F0000A000876241100010E00066D0220282105 +:10520000321800301300FFAA321000820240202121 +:105210000E0005A7022028210A00086024040001CE +:105220008F6E00743C0F80002405000301CF902591 +:10523000AF72007493710083240600010E000570A4 +:10524000322400FF0E00004124040001936D007D14 +:10525000020D60250E000062A36C007D3C0B08006F +:105260008D6B0054257000013C010800AC300054E7 +:105270000A000860240400018F6800743C09800063 +:105280002405000401093825AF6700749363008387 +:10529000240600010E000570306400FF0E0000417E +:1052A000240400019362007D020298250E00006232 +:1052B000A373007D0A00086024040001324D0080C1 +:1052C00039AC0080546CFF6C8F6400840A0008C9FC +:1052D0002645000127BDFFC83C0A0008AFBF0030CB +:1052E000AFB5002CAFB40028AFB30024AFB200209C +:1052F000AFB1001CAFB00018034AD8212409004008 +:10530000AF490814AF4008108F4209448F43095039 +:105310008F4609548F47095C8F48094C9344010814 +:105320009345010BAF820064308400FF30A500FF7D +:10533000AF830050AF86004CAF87005C0E00084A78 +:10534000AF8800601440017D8FBF0030A760006807 +:10535000934D0900240B00503C15080026B53D482C +:1053600031AC00FF3C12080026523D58118B00035F +:10537000000000000000A8210000902193510109C5 +:105380008F9F005024040010322E007F000E68C052 +:10539000000E6140018D282124B40088AF54081804 +:1053A0008F4901048F4A09A43C0B000E034BC02116 +:1053B000012A10233C010800AC223D6C8F430958A0 +:1053C0003C010800A0243D9097470908007F302346 +:1053D0003C010800AC263D7030E8FFFF0008C9C062 +:1053E0003C010800AC3F3D94AF59002C974209089E +:1053F0009710002C8EB10000930F001803749821B1 +:10540000A7900058AF9300440220F80931F000FF44 +:10541000304E000215C001B2304F000111E0014FC3 +:10542000000000009343093E3066000814C00002EB +:10543000241400030000A0218F5809A424130001A4 +:105440003C010800AC383D98934F0934935109371B +:1054500031EC00FF322E00FF028E6821000D288003 +:1054600000AC5021015058213C010800A42B3D887C +:105470003C010800A42A3D8693490934312200FFEB +:1054800002022021249000103C010800A4303D8439 +:10549000240700068F9F00503C010800AC273D8C7C +:1054A0008F88005C8F59095800008021011F282334 +:1054B00004A00149033F20230480014700A4302BAE +:1054C00010C00149000000003C010800AC253D70FF +:1054D0008E4200000040F809000000003043000246 +:1054E000146000F80040882130440001548000100E +:1054F0008E4200043C0908008D293D743C0AC0001E +:10550000012A8025AF500E008F45000030AB000807 +:105510001160FFFD00000000974D0E0824100001EF +:10552000A78D003C8F4C0E04AF8C00348E420004DB +:105530000040F8090000000002228825322E0002F7 +:1055400015C00180000000003C09080095293D7C41 +:105550003C06080094C63D883C0A0800954A3D7EFA +:105560003C1908008F393D74012660213C18080061 +:105570008F183D983C03080094633D92018A2021D6 +:105580008F4E09400329F821248F000203E32821CC +:10559000031968213C010800A42C3D8AAF8E0064E9 +:1055A0003C010800AC2D3D983C010800A4253D803D +:1055B0000E00009E31E4FFFF8F870048004020214D +:1055C0003C010800A0273D918E42000824E800011C +:1055D000AF8800480040F809000000009344010B28 +:1055E0008F4C002C974A09083C0B000E034B4021BE +:1055F0003149FFFF000919C08F8B0050AF43002CC9 +:10560000974309089506001A00403821308A004067 +:1056100030DFFFFFAC5F00008D19001C0040482107 +:10562000AC5900048D180020AC580008910F0019E7 +:1056300031E30003107300F0000000002862000254 +:105640001440010924050002106500FD240D00032B +:10565000106D010D00000000114000D90000000095 +:105660003C0A0800954A3D8625420001934D0934C5 +:1056700093580921950E002A31A300FF00032082D0 +:10568000331F00FF9798005800047E00001FCC00D5 +:1056900001F940253049FFFF0109102501D83021CB +:1056A0003C0540000045502500066C00ACED0004B0 +:1056B000ACEA0000934309203C04000624ED0014EA +:1056C0000003FE0003E4C825ACF900088F49092C4B +:1056D000270F000131EE7FFFACE9000C8F48093045 +:1056E000A78E005824E90028ACE800108F4509383F +:1056F00001204021ACE50014ADAB00048F4209400D +:10570000ADA20008934B09373C1F080093FF3D9062 +:105710008F4309488F4A0940316600FF00D4202199 +:10572000006A78230004C700001FCC000319282555 +:1057300031EEFFFC00AE1025ADA2000CADA00010B4 +:10574000AF4C002C934C093E318B00085160000F88 +:105750008E58000C3C06010134CA080AACEA002845 +:105760008F4B0074AD2B00043C0C0800918C3D90D5 +:105770003187001050E00003AD2000088F62006008 +:10578000AD2200082528000C8E58000C0300F809F3 +:10579000010020213C19080097393D8A3C1F080070 +:1057A00097FF3D7E033F782125E900020E0000C7E8 +:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4 +:1057C0008D083D7401C828233C010800AC253D6CC0 +:1057D00014A00006000000003C0308008C633D8C10 +:1057E000346400403C010800AC243D8C1200007081 +:1057F0008F8C00448F470E108F900044AE0700201E +:105800008F4D0E18AE0D00243C10080096103D8000 +:105810000E0000600000000024020040AF420814A7 +:105820008F8600508F8A004C00D01821006A5823C0 +:1058300019600004AF830050AF6300548F650054BB +:10584000AF85004C1200000C000000008F44007473 +:10585000936800813409FA002D0E000711C000057D +:1058600000891821937F0081241901F403F9780439 +:1058700001E41821AF63000C8F44095C8F83005C46 +:105880000083C0231B000003000000008F50095C50 +:10589000AF90005C0E000062000000008F8C005092 +:1058A0008E4700103C010800AC2C3D9400E0F80944 +:1058B000000000003C0D08008DAD3D6C55A0FEF5CC +:1058C000240700068F450024975909088F8B006430 +:1058D0008F9400503C0F001F978200588F86005411 +:1058E0008F93004C3328FFFF35E9FF8000A9502437 +:1058F000000871C032320100AF4E0024A4C2002C57 +:10590000AF4A0024AF6B0044AF740050AF73005433 +:105910001640008032380010570000868EA4000424 +:10592000322300405460001B8EB100088EB0000C82 +:105930000200F809000000008FBF00308FB5002C76 +:105940008FB400288FB300248FB200208FB1001CC9 +:105950008FB0001803E0000827BD00389347010905 +:105960008F8800380007FE0003E8C825AF59008083 +:105970008F5809A08F5309A4AFB80010AF580E1468 +:105980008FB40010AF540E10AF530E1C0A00096202 +:10599000AF530E180220F809000000008EB0000C72 +:1059A0000200F809000000000A000AA88FBF0030BA +:1059B000A5800020A59300220A000A5BAD93002475 +:1059C0003C09080095293D863C06080094C63D80A8 +:1059D0000A0009F4012610213C010800AC203D70AA +:1059E0000A00098E8E4200003C010800AC243D7084 +:1059F0000A00098E8E4200003C03080094633D8A31 +:105A00003C04080094843D803C1F080097FF3D7CC7 +:105A1000951800240064C821033F782300186C0007 +:105A200025EEFFF201AE2825AC45000C240208004B +:105A3000ACE20014ACE000100A0009EF24E7001803 +:105A400095060024950900280006240000091C0082 +:105A5000349F810034790800ACFF000CACF90010D1 +:105A60000A0009EF24E700141460FEFB00000000A8 +:105A70009518002400187C0035EE0800ACEE000CF0 +:105A80000A0009EF24E700103C07080094E73D8076 +:105A90003C04080094843D8A3C03080094633D7CE8 +:105AA00095190024951800280087F82103E378232E +:105AB0002407080000192C0000186C0025EEFFEEEA +:105AC00001AE302534A28100AD2700182527001C27 +:105AD000AD22000CAD2600100A0009EFAD20001425 +:105AE00093520109000028210E000602324400FFF3 +:105AF0008FBF00308FB5002C8FB400288FB30024E7 +:105B00008FB200208FB1001C8FB0001803E0000896 +:105B100027BD0038935F010933E400FF0E00066DD6 +:105B200000002821323800105300FF7E322300404D +:105B30008EA400040080F809000000000A000AA2F8 +:105B4000322300401200FF5F000000008F540E144B +:105B50008F920044AE5400208F530E1C0A000A8A14 +:105B6000AE5300248F82001C008040213C040100C1 +:105B70009047008530E3002010600009000000001D +:105B80003C0708008CE73D948F83001800E3202336 +:105B9000048000089389000414E30003010020211D +:105BA00003E00008008010213C04010003E000082D +:105BB000008010211120000B006738238F8C0020FB +:105BC00024090034918B00BC316A0002514000016D +:105BD0002409003000E9682B15A0FFF10100202105 +:105BE00000E938232419FFFC00B9C02400F9782407 +:105BF00000F8702B15C0FFEA01E8202130C2000335 +:105C00000002182314C00012306900030000302184 +:105C100000A9702101C6682100ED602B1180FFE012 +:105C20003C0401002D2F00010006482B01053821FE +:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E +:105C400000B9C0240308202103E0000800801021CF +:105C50008F8B002024060004916A00BC31440004AC +:105C60001480FFEC00A970210A000B5E00003021B7 +:105C700027BDFFE8AFBF00108F460100934A01091E +:105C80003C1F08008FFF00902407FF80314F00FF6A +:105C900031E8007F0008614003E6C821032CC021E1 +:105CA00027090120012770243C010800A02F3DD0C6 +:105CB000AF4E080C3C0D08008DAD00903C040080F8 +:105CC0003482000301A65821016C182124650120AB +:105CD00030AA007801424025AF48081C3C1F08004C +:105CE0008FFF00908F88004003E6C0213319000722 +:105CF00003074824033A7821AF49002825E909C061 +:105D0000952E00023C0D08008DAD008C3C0A080069 +:105D10008D4A009031CC3FFF01A61821000C59801C +:105D2000006B282100A72024AF44002C95220002FC +:105D30003C1F08008FFF008C9107008530593FFF02 +:105D400003E678210019C1800146702101F868211D +:105D500031CC007F31AB007F019A2821017A50219C +:105D60003C03000C3C04000E00A328210144102138 +:105D700030E6002027470980AF82002CAF88001C46 +:105D8000AF890024AF85002010C00006AF8700282F +:105D90008D0200508CA4010C0044302318C0007701 +:105DA00000000000910C0085240DFFDF018D3824D8 +:105DB000A10700858F8B001C8F8900248F87002806 +:105DC0008D65004CAF850018912F000D31EE00203D +:105DD00011C000170000000024090001A38900047D +:105DE000AF80000C8CE400248F85000C240A00088E +:105DF000AF800008AF8000103C010800A42A3D7E5F +:105E00003C010800A4203D920E000B32000030211E +:105E10008F8500248FBF0010AF82001490A8000D62 +:105E200027BD00180008394203E0000830E20001F5 +:105E3000913F00022418000133F900FF001921826C +:105E400010980039240800021088005B8F86002C0F +:105E50008CE5002414A0001B8F9F002091220000DD +:105E6000240A00053046003F10CA00472404000100 +:105E70008F860008A3840004AF860010AF86000C54 +:105E80008CE400248F85000C240A00083C010800E3 +:105E9000A42A3D7E3C010800A4203D920E000B3256 +:105EA000000000008F8500248FBF0010AF82001417 +:105EB00090A8000D27BD00180008394203E0000833 +:105EC00030E200018CF800088CF900248FEE00C449 +:105ED000A38000048CE40024AF8E000C8F85000C9E +:105EE0008F86000803197823240A0008AF8F00105A +:105EF0003C010800A42A3D7E3C010800A4203D92FC +:105F00000E000B32000000008F8500248FBF0010B0 +:105F1000AF82001490A8000D27BD00180008394278 +:105F200003E0000830E20001912300003062003FEE +:105F3000104400278F8500208CE400241480002169 +:105F4000000000008D2E00183C187FFF8F85002078 +:105F5000370FFFFF01CF1824AF8300088F9F000881 +:105F60008CA8008403E8C82B1720000203E020213E +:105F70008CA400840A000BEDAF8400088CA3010CF4 +:105F80000A000BCBAF8300188D2C00188F860008F9 +:105F90003C0D7FFF8F89002035A3FFFF018358242C +:105FA00024040001AF8B0010AD2000CCA3840004BA +:105FB0000A000BF9AF86000C8CCA00140A000BED26 +:105FC000AF8A00088CA300C80A000C30AF83000819 +:105FD0008F84002C8CAC00648C8D0014018D582BA8 +:105FE00011600004000000008CA200640A000C3064 +:105FF000AF8200088C8200140A000C30AF820008C7 +:106000008F85000C27BDFFE0AFBF0018AFB10014B3 +:1060100014A00007AFB000108F86002424020005F2 +:1060200090C400003083003F106200B68F840020CF +:106030008F91000800A080218F8C00283C0508006B +:106040008CA53D708D8B000431663FFF00C5502B41 +:106050005540000100C02821938D000411A0007359 +:1060600000B0F82B8F98002024040034930F00BC5C +:1060700031EE000251C000012404003000A4C82BFE +:10608000172000D10000000000A4282300B0F82B46 +:106090003C010800A4243D7C17E000680200202198 +:1060A0003C0308008C633D6C0083102B54400001BE +:1060B000008018218F8800243C010800AC233D7427 +:1060C000000048219104000D308300205060000141 +:1060D0008F490E188F8300140123382B10E00059CC +:1060E000000000003C0408008C843D7400895821A5 +:1060F000006B502B114000560090602B006930233C +:1061000000C020213C010800AC263D7412000003B1 +:10611000241FFFFC1090008A32270003009FC82430 +:106120003C010800AC393D743C010800A4203D92BC +:106130008F84000C120400078F830020AF910008A9 +:10614000020020218C7100CCAF90000C26300001A1 +:10615000AC7000CC3C0208008C423D748F8A001069 +:10616000240700180082202301422823AF84000C5A +:1061700010800002AF850010240700108F86001CDD +:106180003C010800A0273D902407004090CC0085EA +:10619000318B00C0116700408F8D001414A00015D2 +:1061A00000002021934A01098F420974314500FF04 +:1061B0000002260224A300013090007F3071007F8E +:1061C0001230007A2407FF80A0C300833C09080036 +:1061D0008D293D8C8F880024240D0002352C000869 +:1061E0003C010800A02D3DD13C010800AC2C3D8CA9 +:1061F00024040010910E000D31C6002010C00005CF +:1062000000801821240800013C010800AC283D74DE +:10621000348300018FBF00188FB100148FB00010BD +:106220000060102103E0000827BD00203C010800A9 +:10623000A4203D7C13E0FF9A020020210A000C817B +:1062400000A020213C0408008C843D740090602B49 +:106250001180FFAE000000003C0F080095EF3D7C70 +:1062600001E4702101C6682B11A000072C820004F4 +:106270003C1F60008FF954043338003F1700FFE5DE +:10628000240300422C8200041040FFA0240300429B +:106290000A000CDF8FBF0018152DFFC000000000A2 +:1062A0008CDF00743C0380002405FF8003E3C825D5 +:1062B000ACD9007490D80085240E0004240400108A +:1062C000330F003F01E54025A0C800858F880024DA +:1062D0003C010800A02E3DD1240300019106000DD1 +:1062E00030C9002015200003000000003C03080016 +:1062F0008C633D743C010800AC233D6C0A000CD655 +:10630000000000008F8700108C88008400E8282B94 +:1063100014A0000200E088218C910084240900016F +:10632000A38900048F440E18022028210E000B328E +:1063300002203021022080210A000C67AF82001465 +:1063400000071823306600033C010800A4263D9294 +:10635000122000058F8C0020918B00BC316A000454 +:106360001540001524CD00043C0F080095EF3D9228 +:1063700001E4702100AE302B50C0FF6E8F84000C02 +:106380002C85000514A0FFA32403004230980003CD +:1063900017000002009818232483FFFC3C0108002A +:1063A000AC233D740A000CA30000000000A7582491 +:1063B0000A000CCB016718263C010800A42D3D9271 +:1063C0000A000D33000000003C010800AC203D74C1 +:1063D0000A000CDE240300428F83001014600007C3 +:1063E000000010218F88002424050005910600007C +:1063F00030C400FF108500030000000003E0000827 +:1064000000000000910A0018314900FF000939C25C +:1064100014E0FFFA8F85001C3C04080094843D7C46 +:106420003C0308008C633D943C1908008F393D748F +:106430003C0F080095EF3D920064C0218CAD0054E4 +:106440000319702101CF6021018D58231960001DAF +:1064500000000000910E001C8F8C002C974B0E103A +:1064600031CD00FF8D850004016D30238D88000043 +:1064700030CEFFFF000E510000AAC82100003821D5 +:1064800001072021032A182B0083C021AD990004A5 +:10649000AD980000918F000A01CF6821A18D000AFC +:1064A0008F88002C974B0E12A50B0008950A003818 +:1064B00025490001A50900389107000D34E60008C0 +:1064C000A106000D03E000080000000027BDFFE06A +:1064D000938700048F8F00248FAD00143C0E7FFF44 +:1064E0008F89000C35C8FFFFAFBF001CAFB000188C +:1064F00001A8182491EA000D000717C03C1FBFFF38 +:10650000006258252D2E00018F90001837F9FFFFEB +:106510003C1808008F183D943C0F080095EF3D8A09 +:1065200001796824000E47803C07EFFF3C05F0FF2F +:1065300001A818253149002034E2FFFF34ACFFFFE9 +:106540000310582327A500102406000225EA0002A4 +:1065500000621824008080211520000200004021E4 +:106560008F480E1CA7AA0012056000372407000000 +:1065700030FF00FF001FCF008F8B001C00793825F3 +:10658000AFA70014916F00853C08080091083D9169 +:106590003C18DFFF31EE00C0370AFFFF000E182B5A +:1065A0003C1F080097FF3D8400EA6824A3A800115F +:1065B0000003174001A248258FB90010AFA90014AD +:1065C0003C0A0800914A3D93A7BF00168FA800140B +:1065D000032CC0243C0B01003C0F0FFF030B1825BC +:1065E0003147000335EEFFFF010C68240007160059 +:1065F000006EF8243C09700001A2C82503E9582563 +:10660000AFB90014AFAB00100E000076A3A00015C8 +:106610008F8C0024260200089186000D30C40020D3 +:10662000108000068FBF001C3C05080094A53D802B +:1066300024B0FFFF3C010800A4303D808FB000185B +:1066400003E0000827BD00208F9800140118502B8C +:106650005540FFC7240700010A000DB630FF00FFB8 +:106660009382000427BDFFE0AFBF00181040000F69 +:10667000008050218F880024240B00058F8900089A +:10668000910700008F8400200100282130E3003FA3 +:106690008F86002C106B000800003821AFA9001075 +:1066A0000E00040EAFAA0014A38000048FBF0018D0 +:1066B00003E0000827BD00208D1900183C0F0800DA +:1066C0008DEF3D748F9800103C027FFF8D08001401 +:1066D000345FFFFF033F682401F8702101AE60239F +:1066E00001883821AFA900100E00040EAFAA0014D3 +:1066F0000A000E04A38000048F8700243C050800D4 +:1067000094A53D923C0208008C423D8C90E6000D21 +:106710000005240030C300201060002C00444025F8 +:106720008F85001C00006021240B000190A30085D0 +:1067300000004821240A00013C0F800035EE007063 +:106740008DC70000AF8700308F5801780700FFFE2B +:106750003C038000347900708F3800003C0508004D +:106760008CA500743C0D08008DAD007003077823E4 +:1067700000AF38210000102100EF302B01A22021B2 +:10678000008618213C010800AC2700743C01080079 +:10679000AC230070AF4B01483C1908008F393D9481 +:1067A000A7490144A74A0146AF59014C3C0B0800D8 +:1067B000916B3D91A34B0152AF4801543C0810002E +:1067C000A74C015803E00008AF4801788F4B0E1C1E +:1067D0003C0A08008D4A3D7497490E16974D0E14D9 +:1067E00001456021312AFFFF0A000E2731A9FFFF72 +:1067F0008F8300249064000D308200201040002917 +:10680000000000000000482100005021000040214D +:106810003C07800034EB00708D670000AF870030CC +:106820008F4C01780580FFFE3C0D800035AC007078 +:106830008D8B00003C0508008CA500743C0408000A +:106840008C8400700167302300A67821000010219D +:1068500001E6C82B0082C021031970213C01080009 +:10686000AC2F00743C010800AC2E0070AF49014809 +:106870003C0D08008DAD3D94A7480144240900401B +:10688000A74A01463C081000240AFF91AF4D014C75 +:10689000A34A0152AF490154A740015803E0000840 +:1068A000AF4801788F490E1897460E1297450E1083 +:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F +:1068C00027BDFFF89064000D308200201040003A90 +:1068D00000000000240B000100004821240A0001F0 +:1068E0003C088000350700708CE30000AF83003067 +:1068F0008F4C01780580FFFE3C0E80003C040800B0 +:1069000090843DD035C700708CEC00003C05080039 +:106910008CA50074A3A400033C1908008F390070F3 +:106920008FAD00000183302300A638210000102124 +:106930000322782100E6C02B01F8602101AE40253A +:10694000AFA800003C010800AC2700743C0108001F +:10695000AC2C00709346010A3C04080090843DD1A1 +:10696000A3A00002A3A600018FA300003C0580FFA6 +:106970003099007F34A2FFFF006278240019C6001E +:1069800001F87025240D3000AF4E014C27BD0008E2 +:10699000AF4D0154A7400158AF4B0148A7490144EE +:1069A000A74A01463C091000240AFF80A34A01526D +:1069B00003E00008AF4901788F4B0E1897460E127E +:1069C00097450E1030CAFFFF0A000E9130A9FFFF55 +:1069D0008F85001C2402008090A40085308300C0B5 +:1069E000106200058F8600208F8800088F87000CBA +:1069F000ACC800C8ACC700C403E000080000000039 +:106A00003C0A0800254A39543C09080025293A2047 +:106A10003C08080025082DD43C07080024E73B3437 +:106A20003C06080024C637C43C05080024A5353CB4 +:106A30003C040800248431643C0308002463385C6F +:106A40003C020800244236303C010800AC2A3D508C +:106A50003C010800AC293D4C3C010800AC283D48F5 +:106A60003C010800AC273D543C010800AC263D64C5 +:106A70003C010800AC253D5C3C010800AC243D58BD +:106A80003C010800AC233D683C010800AC223D609D +:086A900003E000080000000013 +:00000001FF --- linux-ppc-3.8.0.orig/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex +++ linux-ppc-3.8.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-ppc-3.8.0.orig/firmware/bnx2x/bnx2x-e1h-7.8.2.0.fw.ihex +++ linux-ppc-3.8.0/firmware/bnx2x/bnx2x-e1h-7.8.2.0.fw.ihex @@ -0,0 +1,10714 @@ +:10000000000021E800000068000005D80000225828 +:10001000000036E4000028380000007000005F2077 +:10002000000085B400005F980000009C0000E550CF +:1000300000009BAC0000E5F000000088000181A0FA +:1000400000004344000182300000008C0001C578AC +:100050000000C5900001C608000011B800028BA086 +:100060000000000400029D60020600DC00000001A8 +: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 +:1002B0000520040000850000062007800010049639 +: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 +:1005600002238340000000000524000032FE00004A +:100570000524800010440CC006249E806A9605283D +:100580000A000001000000020223148000000000A5 +:100590000A00000100000004022314800000000093 +:1005A0000120000000000000012000040000000005 +:1005B00001200008000000000120000C00000000E5 +:1005C00001200010000000000120001400000000C5 +:1005D00003200020001A052A032000A4000205447D +:1005E000022002240000000002200234000000006B +:1005F0000220024C00000000022002E40000FFFF85 +:100600000820200000000800042211080000000259 +:1006100004221290000000060422340000000002B0 +:10062000042260400000003004228C000000001012 +:100630000422111000000002042212A8000000068B +:10064000042234080000000204226100000000308F +:1006500004228C4000000010042211180000000247 +:10066000042212C000000006042234100000000220 +:10067000042261C00000003004228C8000000010C1 +:100680000422112000000002042212D800000006FB +:1006900004223418000000020422628000000030AE +:1006A00004228CC000000010042211280000000267 +:1006B000042212F000000006042234200000000290 +:1006C000042263400000003004228D00000000106E +:1006D000042211300000000204221308000000066A +:1006E00004223428000000020422640000000030CC +:1006F00004228D4000000010042211380000000286 +:1007000004221320000000060422343000000002FE +:10071000042264C00000003004228D80000000101C +:1007200004221140000000020422133800000006D9 +:1007300004223438000000020422658000000030EA +:1007400004228DC00000001004102400000000E00E +:100750000310201C00020546021020C00000000209 +:1007600003102004000205480217000800000002E0 +:100770000217002C00000003031700380002054A8E +:10078000031700480005054C0317006000050551DC +:100790000317007800020556021700040000000F3E +:1007A0000210800000001080041080400000000251 +:1007B000021080AC00000000021080380000001021 +:1007C00002108100000000000410812000000002DF +:1007D00002108008000002B5021080100000000026 +:1007E000021081080001FFFF041082000000004A8F +:1007F00004108140000000020210800000001A80F6 +:100800000410900000000024041091200000004A11 +:10081000041093700000004A041095C00000004AC4 +:1008200002108004000010800410804800000002C4 +:10083000021080B0000000010210803C0000001097 +:100840000210810400000000041081280000000252 +:100850000210800C000002B502108014000000009D +:100860000210810C0001FFFF041084000000004A08 +:1008700004108148000000020210800400001A8069 +:100880000410909000000024041092480000004AD8 +:10089000041094980000004A041096E80000004AF2 +:1008A0000210800000001080041080400000000250 +:1008B000021080AC0000000202108038000000101E +:1008C00002108100000000000410812000000002DE +:1008D00002108008000002B5021080100000000025 +:1008E000021081080001FFFF041082000000004A8E +:1008F00004108140000000020210800000001A80F5 +:100900000410900000000024041091200000004A10 +:10091000041093700000004A041095C00000004AC3 +:1009200002108004000010800410804800000002C3 +:10093000021080B0000000030210803C0000001094 +:100940000210810400000000041081280000000251 +:100950000210800C000002B502108014000000009C +:100960000210810C0001FFFF041084000000004A07 +:1009700004108148000000020210800400001A8068 +:100980000410909000000024041092480000004AD7 +:10099000041094980000004A041096E80000004AF1 +:1009A000021080000000108004108040000000024F +:1009B000021080AC0000000402108038000000101B +:1009C00002108100000000000410812000000002DD +:1009D00002108008000002B5021080100000000024 +:1009E000021081080001FFFF041082000000004A8D +:1009F00004108140000000020210800000001A80F4 +:100A00000410900000000024041091200000004A0F +:100A1000041093700000004A041095C00000004AC2 +:100A200002108004000010800410804800000002C2 +:100A3000021080B0000000050210803C0000001091 +:100A40000210810400000000041081280000000250 +:100A50000210800C000002B502108014000000009B +:100A60000210810C0001FFFF041084000000004A06 +:100A700004108148000000020210800400001A8067 +:100A80000410909000000024041092480000004AD6 +:100A9000041094980000004A041096E80000004AF0 +:100AA000021080000000108004108040000000024E +:100AB000021080AC00000006021080380000001018 +:100AC00002108100000000000410812000000002DC +:100AD00002108008000002B5021080100000000023 +:100AE000021081080001FFFF041082000000004A8C +:100AF00004108140000000020210800000001A80F3 +:100B00000410900000000024041091200000004A0E +:100B1000041093700000004A041095C00000004AC1 +:100B200002108004000010800410804800000002C1 +:100B3000021080B0000000070210803C000000108E +:100B4000021081040000000004108128000000024F +:100B50000210800C000002B502108014000000009A +:100B60000210810C0001FFFF041084000000004A05 +:100B700004108148000000020210800400001A8066 +:100B80000410909000000024041092480000004AD5 +:100B9000041094980000004A041096E80000004AEF +:100BA0000200A468000B01C80300A29400040558C9 +:100BB0000A000001000000800200A5F8000000000B +:100BC0000A000001000001000200A5F80000000179 +:100BD0000200A270000000000200A27400000000E9 +:100BE0000200A270000000000200A27400000000D9 +:100BF0000200A270000000000200A27400000000C9 +:100C00000200A270000000000200A27400000000B8 +:100C1000030100B40002055C020100DC00000001D9 +:100C2000030101000002055E0201007C00300000AB +:100C300002010084000000280201008C0000000076 +:100C4000020101300000000402010328000000003E +:100C50000201055400000030020160580000FFFF4F +:100C600002016070000000070201608000000001C6 +:100C7000020100C400000001020100CC00000001DC +:100C8000020100F800000001020100F00000000174 +:100C900002010080003000000201008800000028EE +:100CA0000201009000000000020101340000000475 +:100CB0000201032C00000000020105640000003066 +:100CC0000201605C0000FFFF020160740000000789 +:100CD0000201608400000001020100C80000000160 +:100CE000020100D000000001020100FC0000000130 +:100CF000020100F4000000010401013800000011AD +:100D00000401017C00000011040101380000001101 +:100D10000401017C000000110401013800000011F1 +:100D20000401017C000000110401013800000011E1 +:100D30000401017C00000011021400000000000109 +:100D40000214000C000000010314004000020560C2 +:100D50000214000C0000000002140000000000005B +:100D60000214006C000000000214000400000001E6 +:100D70000214003000000001021400040000000012 +:100D80000214005C000000000214000800000001D2 +:100D900002140034000000010214000800000000EA +:100DA0000214006000000000030400040012056249 +:100DB00002040054000000430204005C000000062E +:100DC00002040070000000040304007800040574AD +:100DD00004040088000000050304009C000305785B +:100DE000040400A800000004030400B80005057B0B +:100DF000040400CC00000004030400DC00040580AF +:100E0000040400EC000000040104012400000000C0 +:100E100001040128000000000104012C0000000072 +:100E20000104013000000000020401340000000F42 +:100E3000020401D000008906021205B00000000182 +:100E400003120490002205840312066C000205A61A +:100E500002120388000000640212039000000008E0 +:100E60000312039C000305A8031203BC000305AB97 +:100E7000021203D0000000000212036C0000000107 +:100E8000021203680000003F031201BC003C05AEE3 +:100E9000031202B0000205EA03120324000205EC6B +:100EA000021205B400000001021201B000000001AE +:100EB00007103800000505EE07103820000505F37F +:100EC00007103C00000505F803168030000805FDFA +:100ED000021680540000000203168060000506051B +:100EE0000416807400000007031680900002060AB2 +:100EF0000316809C0005060C041680B00000000755 +:100F0000031680CC00080611021680F000000007CE +:100F1000041680F40000000C031681240004061956 +:100F2000041681340000000C031681640032061D93 +:100F3000031682340007064F041682500000000496 +:100F4000031682600002065604168268000000083C +:100F50000316828800080658041682A80000000ABA +:100F600002168804000000040316880C00100660B6 +:100F70000316E000001006700416E40C0000000CDC +:100F80000316E43C000406800416E44C0000000C48 +:100F90000316E47C002E06840416E53400000004E9 +:100FA0000316E544000206B20416E54C00000008F2 +:100FB0000316E56C000606B40316E6BC000806BA84 +:100FC000021680EC000000FF03040408001406C2AF +:100FD000020404CC0000000103050044000206D610 +:100FE00003050050000406D804050060000000045A +:100FF00003050090001306DC020501140000000147 +:101000000305011C000206EF0205020400000001B6 +:101010000305020C000206F10305021C000306F39F +:10102000040502400000000A03050280002006F6C5 +:101030000405400000000D00030500040010071621 +:10104000020500E00000000E020500E40000002E92 +:10105000020500E00000001E020500E40000003E62 +:10106000020500E00000004E020500E40000006EF2 +:10107000020500E00000005E020500E40000007EC2 +:101080000416402400000002031640300003072627 +:101090000216404400000020021640700000001CB0 +:1010A0000216420800000001021642100000000172 +:1010B0000216422000000001021642280000000132 +:1010C0000216423000000001021642380000000102 +:1010D00002164260000000020A0000010000000148 +:1010E0000216401C0003D0900A000001000000021C +:1010F0000216401C000009C40A00000100000004A0 +:101100000216401C0000009C021640000000000176 +:10111000021640D80000000103164008000307290A +:101120000216424000000000021642480000000083 +:101130000816427000000002021642500000000033 +:10114000021642580000000008164280000000020B +:10115000030420080004072C0304201C00040730AB +:1011600002042038000000200404203C0000001F7E +:10117000020420B800000001040420BC0000005F4D +:101180000304223800040734010422480000000050 +:101190000104224C00000000010422500000000065 +:1011A0000104225400000000010422580000000045 +:1011B0000104225C00000000010422600000000025 +:1011C0000104226400000000010422680000000005 +:1011D0000104226C000000000104227000000000E5 +:1011E00001042274000000000104227800000000C5 +:1011F0000104227C000000000A0000010000000140 +:1012000002042000000003E80A00000100000002C0 +:10121000020420000000000A0A000001000000048F +:10122000020420000000000105180400006F000007 +:101230000618076000140738041A00000000400078 +:10124000041B240000000040031A1EC80002073AD5 +:10125000031A40400004073C041A405000000006F6 +:10126000031A406800020740031A52C000020742F6 +:10127000031A800003F90744041A8FE400000007F2 +:10128000031AA08000100B3D021B800000000034F8 +:10129000021B804000000018021B80800000000C30 +:1012A000021B80C000000020021B83800007A120D9 +:1012B000021B83C0000001F4021B8BC00000000170 +:1012C0000A00000200000001021B83000007A120A9 +:1012D000021B8340000001F40A000002000000022B +:1012E000021B830000001388021B834000000005DE +:1012F0000A00000200000004021B83000000013805 +:10130000021B834000000000051C00002F7D000030 +:10131000051C800033820BE0051D000022AD18C1C2 +:10132000061D509055EE0B4D0A0000010000000212 +:10133000021B1480000000000A00000100000004ED +:10134000021B1480000000000118000000000000D3 +:10135000011800040000000001180008000000004F +:101360000118000C0000000001180010000000002F +:10137000011800140000000003180020001A0B4F91 +:10138000031800A400020B690218022400000000E8 +:1013900002180234000000000218024C0000000095 +:1013A000021802E4000000FF08181000000004000A +:1013B000041A300000000010041A308000000010F1 +:1013C000041A310000000010041A318000000010DF +:1013D000041A330000000012041A339000000012B7 +:1013E000041A342000000070041A90000000000667 +:1013F000041A304000000010041A30C00000001031 +:10140000041A314000000010041A31C0000000101E +:10141000041A334800000012041A33D800000012E6 +:10142000041A35E000000070041A9018000000064D +:10143000031A400000020B6B041A50000000000267 +:10144000041A508000000012031A614000020B6D64 +:10145000041A903000000002041AA00000000002EC +:10146000031A400800020B6F041A5010000000021B +:10147000041A50C800000012031A614800020B71E0 +:10148000041A903800000002041AA00800000002AC +:10149000031A401000020B73041A502000000002CF +:1014A000041A511000000012031A615000020B755B +:1014B000041A904000000002041AA010000000026C +:1014C000031A401800020B77041A50300000000283 +:1014D000041A515800000012031A615800020B79D7 +:1014E000041A904800000002041AA018000000022C +:1014F000031A402000020B7B041A50400000000237 +:10150000041A51A000000012031A616000020B7D52 +:10151000041A905000000002041AA02000000002EB +:10152000031A402800020B7F041A505000000002EA +:10153000041A51E800000012031A616800020B81CE +:10154000041A905800000002041AA02800000002AB +:10155000031A403000020B83041A5060000000029E +:10156000041A523000000012031A617000020B8549 +:10157000041A906000000002041AA030000000026B +:10158000031A403800020B87041A50700000000252 +:10159000041A527800000012031A617800020B89C5 +:1015A000041A906800000002041AA038000000022B +:1015B000020E004C00000032030E005400040B8B9E +:1015C000040E006400000004030E009400130B8F4F +:1015D000020E014400000001030E014C00020BA2A8 +:1015E000020E020400000001030E020C00020BA414 +:1015F000030E021C00040BA6030E0280001B0BAAA4 +:10160000040E02EC00000017040E20000000080089 +:10161000030E000400110BC5020E01100000000FA4 +:10162000020E01140000002F020E01100000001F26 +:10163000020E01140000003F020E01100000004FD6 +:10164000020E01140000006F020E01100000005F86 +:10165000020E01140000007F020C100000000028A0 +:10166000030C400800040BD6030C401C00040BDAEA +:10167000030C403800050BDE040C404C0000005BFE +:10168000030C41B800050BE3040C41CC0000001B27 +:10169000030C423800040BE8010C42480000000033 +:1016A000010C424C00000000010C42500000000000 +:1016B000010C425400000000010C425800000000E0 +:1016C000010C425C00000000010C426000000000C0 +:1016D000010C426400000000010C426800000000A0 +:1016E000010C426C00000000010C42700000000080 +:1016F000010C427400000000010C42780000000060 +:10170000010C427C00000000010C4280000000003F +:101710000A00000100000001020C4000000003E884 +:101720000A00000100000002020C40000000000A54 +:101730000A00000100000004020C4000000000014B +:1017400005300400009C00000630076800130BEC15 +:101750000432000000004000043324000000004078 +:1017600004323E800000001003323EC000020BEE47 +:10177000033274C000080BF00332850000100BF830 +:10178000023380000000001A023380400000004E47 +:101790000233808000000010023380C0000000206F +:1017A000023383800007A120023383C0000001F4CC +:1017B00002338BC0000000010A000002000000019B +:1017C000023383000007A12002338340000001F4AC +:1017D0000A000002000000020233830000001388A8 +:1017E00002338340000000050A00000200000004EC +:1017F0000233830000000138023383400000000000 +:1018000005340000367100000534800030D60D9D8F +:1018100005350000345F19D3063577F051020C0806 +:101820000A000001000000020233148000000000E2 +:101830000A000001000000040233148000000000D0 +:101840000130000000000000013000040000000032 +:1018500001300008000000000130000C0000000012 +:1018600001300010000000000130001400000000F2 +:1018700003300020001A0C0A033000A400020C24DC +:101880000230022400000000023002340000000098 +:101890000230024C00000000023002E40000FFFFB2 +:1018A000083020000000080004321000000001C0D1 +:1018B00004321E000000003804323000000001C075 +:1018C00004325000000000200432510000000020CB +:1018D00004325200000000200432530000000020B7 +:1018E00004325400000000200432550000000020A3 +:1018F000043256000000002004325700000000208F +:10190000043258000000002004325900000000207A +:1019100004325A000000002004325B000000002066 +:1019200004325C000000002004325D000000002052 +:1019300004325E000000002004325F00000000203E +:1019400004328450000000020332846000040C263C +:1019500004321700000001C004321EE0000000380D +:1019600004323700000001C0043250800000002023 +:101970000432518000000020043252800000002018 +:101980000432538000000020043254800000002004 +:1019900004325580000000200432568000000020F0 +:1019A00004325780000000200432588000000020DC +:1019B000043259800000002004325A8000000020C8 +:1019C00004325B800000002004325C8000000020B4 +:1019D00004325D800000002004325E8000000020A0 +:1019E00004325F80000000200432845800000002AE +:1019F0000332847000040C2A0432401000000002FC +:101A00000432841000000002043240200000000272 +:101A1000043284180000000204324030000000024A +:101A20000432842000000002043240400000000222 +:101A300004328428000000020432405000000002FA +:101A400004328430000000020432406000000002D2 +:101A500004328438000000020432407000000002AA +:101A60000432844000000002043240800000000282 +:101A700004328448000000020202005800000032D4 +:101A80000302006000040C2E040200700000000439 +:101A9000030200A0000E0C32030200DC00070C4021 +:101AA000020200FC0000000602020120000000000B +:101AB0000202013400000002020201B00000000135 +:101AC0000202020C000000010302021400020C4793 +:101AD00002020404000000010302040C00020C498D +:101AE0000302041C00040C4B0302048000200C4F72 +:101AF0000402050000000012040280000000200023 +:101B00000302000400140C6F02020108000000C868 +:101B10000202011800000002020201C400000000DD +:101B2000020201CC00000000020201D40000000209 +:101B3000020201DC00000002020201E4000000FFDA +:101B4000020201EC000000FF0202010C000000C8CC +:101B50000202011C00000002020201C80000000095 +:101B6000020201D000000000020201D800000002C1 +:101B7000020201E000000002020201E8000000FF92 +:101B8000020201F0000000FF02020108000000C88C +:101B90000202011800000002020201C4000000005D +:101BA000020201CC00000000020201D40000000289 +:101BB000020201DC00000002020201E4000000FF5A +:101BC000020201EC000000FF0202010C000000C84C +:101BD0000202011C00000002020201C80000000015 +:101BE000020201D000000000020201D80000000241 +:101BF000020201E000000002020201E8000000FF12 +:101C0000020201F0000000FF02020108000000C80B +:101C10000202011800000002020201C400000000DC +:101C2000020201CC00000000020201D40000000208 +:101C3000020201DC00000002020201E4000000FFD9 +:101C4000020201EC000000FF0202010C000000C8CB +:101C50000202011C00000002020201C80000000094 +:101C6000020201D000000000020201D800000002C0 +:101C7000020201E000000002020201E8000000FF91 +:101C8000020201F0000000FF02020108000000C88B +:101C90000202011800000002020201C4000000005C +:101CA000020201CC00000000020201D40000000288 +:101CB000020201DC00000002020201E4000000FF59 +:101CC000020201EC000000FF0202010C000000C84B +:101CD0000202011C00000002020201C80000000014 +:101CE000020201D000000000020201D80000000240 +:101CF000020201E000000002020201E8000000FF11 +:101D0000020201F0000000FF02161000000000288F +:101D10000316600800030C830316601C00040C8685 +:101D200003166038000D0C8A0416606C0000001366 +:101D3000031660B800020C97041660C00000003E55 +:101D4000021661B800000001041661BC0000001F0B +:101D50000316623800040C99011662480000000066 +:101D60000116624C000000000116625000000000E5 +:101D700001166254000000000116625800000000C5 +:101D80000116625C000000000116626000000000A5 +:101D90000116626400000000011662680000000085 +:101DA0000116626C00000000011662700000000065 +:101DB0000116627400000000011662780000000045 +:101DC0000116627C000000000A0000010000000112 +:101DD00002166000000003E80A0000010000000293 +:101DE000021660000000000A0A0000010000000462 +:101DF000021660000000000105280400008A0000AF +:101E00000628076800130C9D042A0000000040000B +:101E1000042B240000000040032A300000020C9F25 +:101E2000032A400000100CA1032A840800080CB10A +:101E3000032A93C800040CB9032A96F000020CBDD3 +:101E4000042A96F800000006032A994000020CBFFD +:101E5000022A9A2800000001032AC0C000100CC109 +:101E6000022B800000000000022B804000000018C0 +:101E7000022B80800000000C022B80C00000006656 +:101E8000022B83800007A120022B83C0000001F4F5 +:101E9000022B8BC0000000010A00000200000001BC +:101EA000022B83000007A120022B8340000001F4D5 +:101EB0000A00000200000002022B830000001388C9 +:101EC000022B8340000000050A000002000000040D +:101ED000022B830000000138022B83400000000029 +:101EE0000A00000100000020022A9A2C00000000D5 +:101EF000052C000036FB0000052C800039A80DBF22 +:101F0000052D00003B021C29052D800019E72AEA57 +:101F1000062DB5E049440CD10A0000010000000282 +:101F2000022B1480000000000A00000100000004E1 +:101F3000022B1480000000000128000000000000B7 +:101F40000128000400000000012800080000000033 +:101F50000128000C00000000012800100000000013 +:101F6000012800140000000003280020001A0CD3F0 +:101F7000032800A400020CED022802240000000047 +:101F800002280234000000000228024C0000000079 +:101F9000022802E40000FFFF0828200000000800DB +:101FA000042A500000000002042A50100000000221 +:101FB000042A502000000002042A503000000002D1 +:101FC000042A93E000000020042A94E00000000EA0 +:101FD000032A951800020CEF042A95600000000EF9 +:101FE000032A959800020CF1042A95E00000000EE7 +:101FF000032A961800020CF3042A96600000000ED3 +:10200000032A969800020CF5032A971000020CF799 +:10201000042A500800000002042A501800000002A0 +:10202000042A502800000002042A50380000000250 +:10203000042A946000000020042A95200000000E6D +:10204000032A955800020CF9042A95A00000000EFE +:10205000032A95D800020CFB042A96200000000EEB +:10206000032A965800020CFD042A96A00000000ED8 +:10207000032A96D800020CFF032A971800020D01CC +:10208000042A50480000000E032A972000100D0378 +:10209000042A995000000002042AC0000000000237 +:1020A000042A50800000000E032A976000100D13D0 +:1020B000042A995800000002042AC0080000000207 +:1020C000042A50B80000000E032A97A000100D2328 +:1020D000042A996000000002042AC01000000002D7 +:1020E000042A50F00000000E032A97E000100D3380 +:1020F000042A996800000002042AC01800000002A7 +:10210000042A51280000000E032A982000100D43D5 +:10211000042A997000000002042AC0200000000276 +:10212000042A51600000000E032A986000100D532D +:10213000042A997800000002042AC0280000000246 +:10214000042A51980000000E032A98A000100D6385 +:10215000042A998000000002042AC0300000000216 +:10216000042A51D00000000E032A98E000100D73DD +:10217000042A998800000002042AC03800000002E6 +:102180000400A0000000000C0400A05000000002A9 +:102190000300A0EC00080D830300A18C00080D8B48 +:1021A0000200A45C00000C000200A61C000000035A +:1021B0000300A06C00060D930400A084000000053D +:1021C0000200A0980FE000000400A09C000000079F +:1021D0000300A0B8000D0D990400A22C000000041B +:1021E0000300A10C00060DA60400A12400000005B8 +:1021F0000200A1380FE000000400A13C000000072D +:102200000300A158000D0DAC0400A23C0000000426 +:102210000200A030000000000200A0340000000016 +:102220000200A038000000000200A03C00000000F6 +:102230000200A040000000000200A04400000000D6 +:102240000200A048000000000200A04C00000000B6 +:10225000000000000000000000000000000000007E +:10226000000000000000000000000000000000006E +:10227000000000000000000000000000000000005E +:102280000000000000000005000500080008000B29 +:10229000000000000000000000000000000000003E +:1022A000000000000000000000000000000000002E +:1022B000000B001900000000000000000019001AC7 +:1022C000001A001B001B001C001C001D001D001E2E +:1022D000001E001F001F00200020002100210028F8 +:1022E00000000000000000000000000000000000EE +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000028002E0000000077 +:1023100000000000000000000000000000000000BD +:1023200000000000000000000000000000000000AD +:1023300000000000002E0049000000000000000026 +:10234000000000000000000000000000000000008D +:10235000000000000000000000000000000000007D +:10236000004900B4000000000000000000B400B903 +:1023700000B900BE00BE00C300C300C800C800CD45 +:1023800000CD00D200D200D700D700DC0000000052 +:10239000000000000000000000000000000000003D +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000DC00E00000000061 +:1023C000000000000000000000000000000000000D +:1023D00000000000000000000000000000000000FD +:1023E0000000000000E000E7000000000000000026 +:1023F00000000000000000000000000000000000DD +:1024000000000000000000000000000000000000CC +:1024100000000000000000000000000000E700F7DE +:1024200000F70107010701170117012701270137ED +:1024300001370147014701570157016700000000BC +:10244000000000000000000000000000000000008C +:10245000000000000000000000000000000000007C +:1024600000000000000000000167016D0000000096 +:1024700000000000016D016E016E016F016F0170BF +:1024800001700171017101720172017301730174B4 +:10249000017401750175017801780185018501924A +:1024A0000192019301930194019401950195019684 +:1024B0000196019701970198019801990199019A54 +:1024C000019A01A001A001A401A401A8000000003C +:1024D00000000000000000000000000000000000FC +:1024E00000000000000000000000000000000000EC +:1024F00000000000000000000000000000000000DC +:1025000000000000000000000000000000000000CB +:10251000000000000000000001A801BA0000000057 +:1025200000000000000000000000000000000000AB +:10253000000000000000000000000000000000009B +:102540000000000001BA01C9000000000000000006 +:10255000000000000000000000000000000000007B +:10256000000000000000000000000000000000006B +:1025700001C901CC000000000000000000000000C4 +:10258000000000000000000000000000000000004B +:1025900000000000000000000000000001CC01EC81 +:1025A000000000000000000000000000000000002B +:1025B000000000000000000000000000000000001B +:1025C000000000000000000001EC01EE000000002F +:1025D00000000000000000000000000000000000FB +:1025E00000000000000000000000000000000000EB +:1025F0000000000001EE01FB0000000000000000F0 +:1026000001FB01FC01FC01FD01FD01FE01FE01FFDA +:1026100001FF0200020002010201020202020203A3 +:10262000020302170217021A021A021D000000001C +:10263000000000000000000000000000000000009A +:10264000000000000000000000000000021D023831 +:10265000000000000000000000000000000000007A +:10266000000000000000000000000000000000006A +:1026700000000000000000000238026902690271D7 +:10268000027102790279027F027F02850285028B44 +:10269000028B0291029102970297029D029D02A372 +:1026A00002A302A902A902B6000000000000000077 +:1026B00002B602B702B702B802B802B902B902BA4A +:1026C00002BA02BB02BB02BC02BC02BD02BD02BE1A +:1026D00002BE02BF00000000000000000000000079 +:1026E00000000000000000000000000000000000EA +:1026F00000000000000000000000000002BF02DB3C +:1027000000000000000000000000000000000000C9 +:1027100000000000000000000000000000000000B9 +:10272000000000000000000002DB03080308031D96 +:10273000031D0332033203340334033603360338F4 +:102740000338033A033A033C033C033E033E034091 +:102750000340034203420354000000000000000055 +:102760000354035C035C03640364036C036C037431 +:102770000374037C037C03840384038C038C039421 +:10278000039403950000000000000000000000001A +:102790000000000000000000000000000000000039 +:1027A000000000000000000000000000039503B2DC +:1027B0000000000000000000000000000000000019 +:1027C0000000000000000000000000000000000009 +:1027D000000000000000000003B203E703E703F578 +:1027E00003F50403040304070407040B040B040F9C +:1027F000040F0413041304170417041B041B041F01 +:10280000041F0423042304290429042F042F04355E +:1028100004350436043604370437043804380439E0 +:102820000439043A043A043B043B043C043C043DB0 +:102830000000000000000000000020000000400038 +:1028400000006000000080000000A0000000C00048 +:102850000000E00000010000000120000001400035 +:1028600000016000000180000001A0000001C00024 +:102870000001E00000020000000220000002400011 +:1028800000026000000280000002A0000002C00000 +:102890000002E000000300000003200000034000ED +:1028A00000036000000380000003A0000003C000DC +:1028B0000003E000000400000004200000044000C9 +:1028C00000046000000480000004A0000004C000B8 +:1028D0000004E000000500000005200000054000A5 +:1028E00000056000000580000005A0000005C00094 +:1028F0000005E00000060000000620000006400081 +:1029000000066000000680000006A0000006C0006F +:102910000006E0000007000000072000000740005C +:1029200000076000000780000007A0000007C0004B +:102930000007E00000080000000820000008400038 +:1029400000086000000880000008A0000008C00027 +:102950000008E00000090000000920000009400014 +:1029600000096000000980000009A0000009C00003 +:102970000009E000000A0000000A2000000A4000F0 +:10298000000A6000000A8000000AA000000AC000DF +:10299000000AE000000B0000000B2000000B4000CC +:1029A000000B6000000B8000000BA000000BC000BB +:1029B000000BE000000C0000000C2000000C4000A8 +:1029C000000C6000000C8000000CA000000CC00097 +:1029D000000CE000000D0000000D2000000D400084 +:1029E000000D6000000D8000000DA000000DC00073 +:1029F000000DE000000E0000000E2000000E400060 +:102A0000000E6000000E8000000EA000000EC0004E +:102A1000000EE000000F0000000F2000000F40003B +:102A2000000F6000000F8000000FA000000FC0002A +:102A3000000FE00000100000001020000010400017 +:102A400000106000001080000010A0000010C00006 +:102A50000010E000001100000011200000114000F3 +:102A600000116000001180000011A0000011C000E2 +:102A70000011E000001200000012200000124000CF +:102A800000126000001280000012A0000012C000BE +:102A90000012E000001300000013200000134000AB +:102AA00000136000001380000013A0000013C0009A +:102AB0000013E00000140000001420000014400087 +:102AC00000146000001480000014A0000014C00076 +:102AD0000014E00000150000001520000015400063 +:102AE00000156000001580000015A0000015C00052 +:102AF0000015E0000016000000162000001640003F +:102B000000166000001680000016A0000016C0002D +:102B10000016E0000017000000172000001740001A +:102B200000176000001780000017A0000017C00009 +:102B30000017E000001800000018200000184000F6 +:102B400000186000001880000018A0000018C000E5 +:102B50000018E000001900000019200000194000D2 +:102B600000196000001980000019A0000019C000C1 +:102B70000019E000001A0000001A2000001A4000AE +:102B8000001A6000001A8000001AA000001AC0009D +:102B9000001AE000001B0000001B2000001B40008A +:102BA000001B6000001B8000001BA000001BC00079 +:102BB000001BE000001C0000001C2000001C400066 +:102BC000001C6000001C8000001CA000001CC00055 +:102BD000001CE000001D0000001D2000001D400042 +:102BE000001D6000001D8000001DA000001DC00031 +:102BF000001DE000001E0000001E2000001E40001E +:102C0000001E6000001E8000001EA000001EC0000C +:102C1000001EE000001F0000001F2000001F4000F9 +:102C2000001F6000001F8000001FA000001FC000E8 +:102C3000001FE000002000000020200000204000D5 +:102C400000206000002080000020A0000020C000C4 +:102C50000020E000002100000021200000214000B1 +:102C600000216000002180000021A0000021C000A0 +:102C70000021E0000022000000222000002240008D +:102C800000226000002280000022A0000022C0007C +:102C90000022E00000230000002320000023400069 +:102CA00000236000002380000023A0000023C00058 +:102CB0000023E00000240000002420000024400045 +:102CC00000246000002480000024A0000024C00034 +:102CD0000024E00000250000002520000025400021 +:102CE00000256000002580000025A0000025C00010 +:102CF0000025E000002600000026200000264000FD +:102D000000266000002680000026A0000026C000EB +:102D10000026E000002700000027200000274000D8 +:102D200000276000002780000027A0000027C000C7 +:102D30000027E000002800000028200000284000B4 +:102D400000286000002880000028A0000028C000A3 +:102D50000028E00000290000002920000029400090 +:102D600000296000002980000029A0000029C0007F +:102D70000029E000002A0000002A2000002A40006C +:102D8000002A6000002A8000002AA000002AC0005B +:102D9000002AE000002B0000002B2000002B400048 +:102DA000002B6000002B8000002BA000002BC00037 +:102DB000002BE000002C0000002C2000002C400024 +:102DC000002C6000002C8000002CA000002CC00013 +:102DD000002CE000002D0000002D2000002D400000 +:102DE000002D6000002D8000002DA000002DC000EF +:102DF000002DE000002E0000002E2000002E4000DC +:102E0000002E6000002E8000002EA000002EC000CA +:102E1000002EE000002F0000002F2000002F4000B7 +:102E2000002F6000002F8000002FA000002FC000A6 +:102E3000002FE00000300000003020000030400093 +:102E400000306000003080000030A0000030C00082 +:102E50000030E0000031000000312000003140006F +:102E600000316000003180000031A0000031C0005E +:102E70000031E0000032000000322000003240004B +:102E800000326000003280000032A0000032C0003A +:102E90000032E00000330000003320000033400027 +:102EA00000336000003380000033A0000033C00016 +:102EB0000033E00000340000003420000034400003 +:102EC00000346000003480000034A0000034C000F2 +:102ED0000034E000003500000035200000354000DF +:102EE00000356000003580000035A0000035C000CE +:102EF0000035E000003600000036200000364000BB +:102F000000366000003680000036A0000036C000A9 +:102F10000036E00000370000003720000037400096 +:102F200000376000003780000037A0000037C00085 +:102F30000037E00000380000003820000038400072 +:102F400000386000003880000038A0000038C00061 +:102F50000038E0000039000000392000003940004E +:102F600000396000003980000039A0000039C0003D +:102F70000039E000003A0000003A2000003A40002A +:102F8000003A6000003A8000003AA000003AC00019 +:102F9000003AE000003B0000003B2000003B400006 +:102FA000003B6000003B8000003BA000003BC000F5 +:102FB000003BE000003C0000003C2000003C4000E2 +:102FC000003C6000003C8000003CA000003CC000D1 +:102FD000003CE000003D0000003D2000003D4000BE +:102FE000003D6000003D8000003DA000003DC000AD +:102FF000003DE000003E0000003E2000003E40009A +:10300000003E6000003E8000003EA000003EC00088 +:10301000003EE000003F0000003F2000003F400075 +:10302000003F6000003F8000003FA000003FC00064 +:10303000003FE000003FE00100000000000001FF51 +:10304000000002000000000100000002000000007B +:1030500000000008021500200215002008100000E2 +:103060000000003300000002000000000000000526 +:103070000000000500000000000000000000000249 +:103080000000000300000002000000010000000436 +:103090000000000200000002000000010000000229 +:1030A000000000200000004000000040000000037D +:1030B0000000001800002000000040C000006180F7 +:1030C000000082400000A3000000C3C00000E480B4 +:1030D0000001054000012600000146C00001678094 +:1030E000000188400001A9000001C9C00001EA8078 +:1030F00000020B4000022C0000024CC000026D8058 +:1031000000028E400002AF000002CFC00002F0803B +:10311000000011400000000100000001000000015B +:10312000000000010000000100000001000000019B +:10313000000000010000000100000001000000018B +:10314000000000010000000100000001000000017B +:103150000003D0000000003D00000001000D000051 +:10316000000700D000028140000B816800020220AD +:1031700000010240000F025000010340000C00005B +:10318000000800C000028140000B8168000202209C +:103190000001024000070250000202C000100000BF +:1031A0000008010000028180000B81A8000202607B +:1031B00000018280000E8298000803800000000059 +:1031C000000000000002800000090028000200B892 +:1031D000000100D8000000E8000000E8FFFFFFF356 +:1031E00001AFFFFF00000000000000000000000031 +:1031F000000000000000000000000000FFFFFFF1E1 +:1032000000EFFFFF000000000000000000000000D1 +:10321000000000000001000000000000FFFFFFF6BA +:10322000005FFFFF00000000000000000000000041 +:10323000000000000002000000000000FFFFF40694 +:103240001CBFFFFF0000000500000000000000148C +:10325000000000000004000000000000FFFFFFF27B +:10326000004FFFFF00000000000000000000000011 +:10327000000000000008000000000000FFFFFFFA4F +:10328000002FFFFF00000000000000000000000011 +:10329000000000000010000000000000FFFFFFF72A +:1032A00001EFFFFF00000000000000000000000030 +:1032B000000000000020000000000000FFFFFFF5FC +:1032C000002FFFFF000000000000000000000000D1 +:1032D000000000000040000000000000FFFFFFF3BE +:1032E000018FFFFF00000000000000000000000050 +:1032F000000000000000000000000000FFFFFFF1E0 +:10330000010FFFFF000000000000000000000000AF +:10331000000000000001000000000000FFFFFFF6B9 +:10332000005FFFFF00000000000000000000000040 +:10333000000000000002000000000000FFFFF40693 +:103340001CBFFFFF0000000500000000000000148B +:10335000000000000004000000000000FFFFFFF27A +:10336000004FFFFF00000000000000000000000010 +:10337000000000000008000000000000FFFFFFFA4E +:10338000002FFFFF00000000000000000000000010 +:10339000000000000010000000000000FFFFFFF729 +:1033A00000EFFFFF00000000000000000000000030 +:1033B000000000000020000000000000FFFFFFF5FB +:1033C000004FFFFF000000000000000000000000B0 +:1033D000000000000040000000000000FFFFFFFFB1 +:1033E00000CFFFFF0000000000000000000000CC44 +:1033F000000000000000000000000000FFFFFFFFD1 +:1034000000CFFFFF0000000000000000000000CC23 +:10341000000000000001000000000000FFFFFFFFAF +:1034200000CFFFFF0000000000000000000000CC03 +:10343000000000000002000000000000FFFFFFFF8E +:1034400000CFFFFF0000000000000000000000CCE3 +:10345000000000000004000000000000FFFFFFFF6C +:1034600000CFFFFF0000000000000000000000CCC3 +:10347000000000000008000000000000FFFFFFFF48 +:1034800000CFFFFF0000000000000000000000CCA3 +:10349000000000000010000000000000FFFFFFFF20 +:1034A00000CFFFFF0000000000000000000000CC83 +:1034B000000000000020000000000000FFFFFFFFF0 +:1034C00000CFFFFF0000000000000000000000CC63 +:1034D000000000000040000000000000FFFFFFF3BC +:1034E000020FFFFF000000000000000000000000CD +:1034F000000000000000000000000000FFFFFFF1DE +:10350000010FFFFF000000000000000000000000AD +:10351000000000000001000000000000FFFFFFF6B7 +:10352000005FFFFF0000000000000000000000003E +:10353000000000000002000000000000FFFFF40691 +:103540001CBFFFFF00000005000000000000001489 +:10355000000000000004000000000000FFFFFFF278 +:10356000004FFFFF0000000000000000000000000E +:10357000000000000008000000000000FFFFFF8ABC +:10358000042FFFFF0000000000000000000000000A +:10359000000000000010000000000000FFFFFF9787 +:1035A00005CFFFFF00000000000000000000000049 +:1035B000000000000020000000000000FFFFFFF5F9 +:1035C000010FFFFF000000000000000000000000ED +:1035D000000000000040000000000000FFFFFFF3BB +:1035E000000FFFFF000000000000000000000000CE +:1035F000000000000000000000000000FFFFFFF1DD +:10360000000FFFFF000000000000000000000000AD +:10361000000000000001000000000000FFFFFFF6B6 +:10362000005FFFFF0000000000000000000000003D +:10363000000000000002000000000000FFFFFF0685 +:103640001CBFFFFF0000000000000000000000148D +:10365000000000000004000000000000FFFFFFF277 +:10366000004FFFFF0000000000000000000000000D +:10367000000000000008000000000000FFFFFFFA4B +:10368000002FFFFF0000000000000000000000000D +:10369000000000000010000000000000FFFFFFF726 +:1036A000000FFFFF0000000000000000000000000D +:1036B000000000000020000000000000FFFFFFFFEE +:1036C00000CFFFFF0000000000000000000000CC61 +:1036D000000000000040000000000000FFFFFFFFAE +:1036E00000CFFFFF0000000000000000000000CC41 +:1036F000000000000000000000000000FFFFFFFFCE +:1037000000CFFFFF0000000000000000000000CC20 +:10371000000000000001000000000000FFFFFFFFAC +:1037200000CFFFFF0000000000000000000000CC00 +:10373000000000000002000000000000FFFFFFFF8B +:1037400000CFFFFF0000000000000000000000CCE0 +:10375000000000000004000000000000FFFFFFFF69 +:1037600000CFFFFF0000000000000000000000CCC0 +:10377000000000000008000000000000FFFFFFFF45 +:1037800000CFFFFF0000000000000000000000CCA0 +:10379000000000000010000000000000FFFFFFFF1D +:1037A00000CFFFFF0000000000000000000000CC80 +:1037B000000000000020000000000000FFFFFFFFED +:1037C00000CFFFFF0000000000000000000000CC60 +:1037D000000000000040000000000000FFFFFFFFAD +:1037E00000CFFFFF0000000000000000000000CC40 +:1037F000000000000000000000000000FFFFFFFFCD +:1038000000CFFFFF0000000000000000000000CC1F +:10381000000000000001000000000000FFFFFFFFAB +:1038200000CFFFFF0000000000000000000000CCFF +:10383000000000000002000000000000FFFFFFFF8A +:1038400000CFFFFF0000000000000000000000CCDF +:10385000000000000004000000000000FFFFFFFF68 +:1038600000CFFFFF0000000000000000000000CCBF +:10387000000000000008000000000000FFFFFFFF44 +:1038800000CFFFFF0000000000000000000000CC9F +:10389000000000000010000000000000FFFFFFFF1C +:1038A00000CFFFFF0000000000000000000000CC7F +:1038B000000000000020000000000000FFFFFFFFEC +:1038C00000CFFFFF0000000000000000000000CC5F +:1038D000000000000040000000000000FFFFFFFFAC +:1038E00000CFFFFF0000000000000000000000CC3F +:1038F000000000000000000000000000FFFFFFFFCC +:1039000000CFFFFF0000000000000000000000CC1E +:10391000000000000001000000000000FFFFFFFFAA +:1039200000CFFFFF0000000000000000000000CCFE +:10393000000000000002000000000000FFFFFFFF89 +:1039400000CFFFFF0000000000000000000000CCDE +:10395000000000000004000000000000FFFFFFFF67 +:1039600000CFFFFF0000000000000000000000CCBE +:10397000000000000008000000000000FFFFFFFF43 +:1039800000CFFFFF0000000000000000000000CC9E +:10399000000000000010000000000000FFFFFFFF1B +:1039A00000CFFFFF0000000000000000000000CC7E +:1039B000000000000020000000000000FFFFFFFFEB +:1039C00000CFFFFF0000000000000000000000CC5E +:1039D0000000000000400000000000000000021194 +:1039E00000000200000002040000FFFF0000FFFFD3 +:1039F0000000FFFF0000FFFF00000020000000218A +:103A00000000002200000023000000240000002528 +:103A10000000002600000027000000280000002908 +:103A20000000002A0000002B0000002C0000002DE8 +:103A30000000002E0000002F000000100000000118 +:103A40000000000100000001000000010000000172 +:103A50000000000100000001000000010000000162 +:103A60000000000100000001000000010000000152 +:103A70000000000100000001000000010000000142 +:103A800007FFFFFF0000003F07FFFFFF0000000FE0 +:103A900000007FF800007FF80000FF000000000039 +:103AA0000000FF00000000000000FF000000000018 +:103AB0000000FF00000000000000FF000000000008 +:103AC0000000FF00000000000000FF0000000000F8 +:103AD0000000FF00000000000000FF1C0FFFFFFFC0 +:103AE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF88 +:103AF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF78 +:103B00000000FF1C0FFFFFFF0000FF1C0FFFFFFF67 +:103B10000000FF1C0FFFFFFF0000FF1C0FFFFFFF57 +:103B20000000FF1C0FFFFFFF0000FF1C0FFFFFFF47 +:103B30000000FF1C0FFFFFFF0000FF1C0FFFFFFF37 +:103B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:103B50000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:103B60000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:103B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:103B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:103B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:103BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:103BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:103BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:103BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:103BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:103BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:103C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:103C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:103C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:103C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:103C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:103C50000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:103C60000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:103C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:103C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:103C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:103CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:103CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:103CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:103CD0000000FF1C0FFFFFFF000003120000350073 +:103CE00000000001000000020000000300000000CE +:103CF00000000004000000010000000000000001BE +:103D000000000004000000000000000100000003AB +:103D1000000000000000000100000004000000009E +:103D2000000000010000000300000000000000018E +:103D30000000000400000000000000040000000378 +:103D4000000000000000000000003FFF000003FF33 +:103D50000000000000000001000000010000000160 +:103D6000007C10040000000400000002000000902D +:103D70000000009000800090081000000000008A01 +:103D800000000080000000810000008000000006AC +:103D9000000007D00000076C071D2911000000007B +:103DA000009C04240000000000000001000000014D +:103DB00000000001000000010000000100007FFF82 +:103DC000000000FF000000FF000000FF000000FFF7 +:103DD0000000007F000000FF000000FF000000FF67 +:103DE0000000003E000000000000003F0000003F17 +:103DF0000000003F0000003F0000003F0000003FC7 +:103E00000000003F0000000F00000000121700003B +:103E100022170000321700001215000022150000C2 +:103E20003215000002100000001000001010000009 +:103E300020100000301000000010000012140000DC +:103E4000221400003214000000E38340FFFFFFFF54 +:103E5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +:103E6000FFFFFFFFFFFFFFFFFFFFFFFFF00050001E +:103E7000F0001000FFFFFFFFFFFFFFFFFFFFFFFF4E +:103E8000FFFFFFFFFFFFFFFFFFFFFFFFFF8090002F +:103E9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +:103EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +:103EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +:103EC000FFFFFFFFFFFFFFFFFFFFFFFF00003C10B2 +:103ED00000000001000000000000000800000008D1 +:103EE00000000002000000040000000500000004C3 +:103EF000000000400000180800000803000008034C +:103F00000000004000000003000008030000080358 +:103F1000000008030001000300000803000008037C +:103F20000000000300000003000000030000000385 +:103F30000000000300000003000000030000000375 +:103F40000000000300000003000000030000000365 +:103F50000000000300000003000000030000240331 +:103F60000000002F0000000900000019000001847B +:103F70000000018300000306000000190000000695 +:103F800000000306000003060000030600000C8684 +:103F90000000030600000306000000060000000603 +:103FA00000000006000000060000000600000006F9 +:103FB00000000006000000060000000600000006E9 +:103FC00000000006000000060000000600000006D9 +:103FD00000000006000003060000001300000006B9 +:103FE0000000100400001004001064400010644041 +:103FF00000000000000000000000000000000000C1 +:104000000000200000000000000000000000000090 +:10401000000000000400200000000000000000007C +:104020000000000000000000000020000000007CF4 +:104030000000003D0000003F0000009C0000000662 +:10404000000000050000000A00000005000001401B +:10405000000001400000000000000000000000C05F +:104060000000013F00007FFF000000480000004802 +:1040700000000000000000000000004800000004F4 +:104080000000000400000004000000040000000420 +:104090000000000400000004000000040000000410 +:1040A000000000090000000B0000000A00000004EE +:1040B000000000090000000B0000000A00000001E1 +:1040C00000000001000000010000000100000001EC +:1040D00000000001000000010000000100000001DC +:1040E00000000001000000010000000100000004C9 +:1040F000000000090000000B0000000A00000001A1 +:1041000000000001000000010000000100000001AB +:10411000000000010000000100000001000000019B +:104120000000000100000001000000010000000488 +:10413000000000090000000B0000000A0000000061 +:10414000000000000000080000000200000001FF65 +:104150000000040000000000000000001E491E498D +:104160001E491E490E490E490E490E49FFFFFFFF29 +:1041700000000000000025E40000800000000013A3 +:104180000FFF0FFF00000000000000000FFF0FFFF7 +:10419000100010001000100020002000200020005F +:1041A000800080008000800040004000400040000F +:1041B00000000000000000010101010101200101D7 +:1041C0002001010101011001010101010120010192 +:1041D0002001010101011001200101010101100173 +:1041E0000101010101200101200101010101100172 +:1041F0000101010101200101010101010120010171 +:104200002001010101011001010101010120010151 +:104210002001010101011001010101010120010141 +:104220002001010101011001010101010120010131 +:10423000200101010101100100000004000000093B +:104240000000000B0000000A00000004000000094C +:104250000000000B0000000A000000010000000147 +:10426000000000010000000100000001000000014A +:10427000000000010000000100000001000000013A +:10428000000000010000000100000004000000091F +:104290000000000B0000000A000000010000000107 +:1042A000000000010000000100000001000000010A +:1042B00000000001000000010000000100000001FA +:1042C00000000001000000010000000400000009DF +:1042D0000000000B0000000A1E491E491E491E492D +:1042E0000E490E490E490E49FFFFFFFF0000000076 +:1042F0000FFF0FFF00000000000000000FFF0FFF86 +:1043000010001000100010002000200020002000ED +:10431000800080008000800040004000400040009D +:104320000000000000000002000000010000000387 +:104330000000000400000006000000050000000767 +:1043400000000123000001230000012300000123DD +:1043500000000123000001230000012300000123CD +:1043600000000123000001230000012300000123BD +:1043700000000123000001230000012300000123AD +:10438000000001230000012300000123000001239D +:1043900000000020000000320000000700000007BD +:1043A0000000000000000008021500200215002097 +:1043B0000000003008100000000000330000003052 +:1043C00000000031000000020000000500000006AF +:1043D00000000002000000020000000000000005D4 +:1043E00000000002000000020000000200000001C6 +:1043F0000000000600000001000000020000004074 +:104400000000004000000020000000130000002019 +:1044100000010000000204C00003098000040E40F7 +:1044200000051300000617C000071C80000821408B +:1044300000092600000A2AC0000B2F80000C34401F +:10444000000D3900000E3DC0000F428000104740B3 +:1044500000114C00001250C00013558000145A4047 +:1044600000155F00001663C00017688000186D40DB +:1044700000197200001A76C0001B7B80001C80406F +:10448000001D8500001E89C0001F8E800000934023 +:104490000000000100000001000000010000000118 +:1044A0000000000100000001000000010000000108 +:1044B00000000001000000010000000100000001F8 +:1044C00000000001000000010000000100000001E8 +:1044D000000000080000000C0000001000000001B7 +:1044E00000000001000000010000021100000200B5 +:1044F00000000204000002190000FFFF0000FFFF9F +:104500000000FFFF0000FFFF07FFFFFF0000003F6C +:1045100007FFFFFF0000000F00007FF800007FF89A +:104520000000000000000001002010010000000059 +:1045300001009000000001000000000100000000E8 +:1045400000000000140AFF000000900200000000BC +:1045500000000000000000000000900400000000C7 +:1045600000000000000000000000900600000000B5 +:1045700000000000000000000000900800000000A3 +:1045800000000000000000000000900A0000000091 +:1045900000000000000000000000900C000000007F +:1045A00000000000000000000000900E000000006D +:1045B000000000000000000000009010000000005B +:1045C0000000000000000000000090120000000049 +:1045D0000000000000000000000090140000000037 +:1045E0000000000000000000000090160000000025 +:1045F0000000000000000000000090180000000013 +:1046000000000000000000000000901A0000000000 +:1046100000000000000000000000901C00000000EE +:1046200000000000000000000000901E00000000DC +:1046300000000000000000000000902000000000CA +:1046400000000000000000000000902200000000B8 +:1046500000000000000000000000902400000000A6 +:104660000000000000000000000090260000000094 +:104670000000000000000000000090280000000082 +:1046800000000000000000000000902A0000000070 +:1046900000000000000000000000902C000000005E +:1046A00000000000000000000000902E000000004C +:1046B000000000000000000000009030000000003A +:1046C0000000000000000000000090320000000028 +:1046D0000000000000000000000090340000000016 +:1046E0000000000000000000000090360000000004 +:1046F00000000000000000000000903800000000F2 +:1047000000000000000000000000903A00000000DF +:1047100000000000000000000000903C00000000CD +:1047200000000000000000000000903E00000000BB +:1047300000000000000000000000904000000000A9 +:104740000000000000000000000090420000000097 +:104750000000000000000000000090440000000085 +:104760000000000000000000000090460000000073 +:104770000000000000000000000090480000000061 +:1047800000000000000000000000904A000000004F +:1047900000000000000000000000904C000000003D +:1047A00000000000000000000000904E000000002B +:1047B0000000000000000000000090500000000019 +:1047C0000000000000000000000090520000000007 +:1047D00000000000000000000000905400000000F5 +:1047E00000000000000000000000905600000000E3 +:1047F00000000000000000000000905800000000D1 +:1048000000000000000000000000905A00000000BE +:1048100000000000000000000000905C00000000AC +:1048200000000000000000000000905E000000009A +:104830000000000000000000000090600000000088 +:104840000000000000000000000090620000000076 +:104850000000000000000000000090640000000064 +:104860000000000000000000000090660000000052 +:104870000000000000000000000090680000000040 +:1048800000000000000000000000906A000000002E +:1048900000000000000000000000906C000000001C +:1048A00000000000000000000000906E000000000A +:1048B00000000000000000000000907000000000F8 +:1048C00000000000000000000000907200000000E6 +:1048D00000000000000000000000907400000000D4 +:1048E00000000000000000000000907600000000C2 +:1048F00000000000000000000000907800000000B0 +:1049000000000000000000000000907A000000009D +:1049100000000000000000000000907C000000008B +:1049200000000000000000000000907E0000000079 +:104930000000000000000000000090800000000067 +:104940000000000000000000000090820000000055 +:104950000000000000000000000090840000000043 +:104960000000000000000000000090860000000031 +:10497000000000000000000000009088000000001F +:1049800000000000000000000000908A000000000D +:1049900000000000000000000000908C00000000FB +:1049A00000000000000000000000908E00000000E9 +:1049B00000000000000000000000909000000000D7 +:1049C00000000000000000000000909200000000C5 +:1049D00000000000000000000000909400000000B3 +:1049E00000000000000000000000909600000000A1 +:1049F000000000000000000000009098000000008F +:104A000000000000000000000000909A000000007C +:104A100000000000000000000000909C000000006A +:104A200000000000000000000000909E0000000058 +:104A30000000000000000000000090A00000000046 +:104A40000000000000000000000090A20000000034 +:104A50000000000000000000000090A40000000022 +:104A60000000000000000000000090A60000000010 +:104A70000000000000000000000090A800000000FE +:104A80000000000000000000000090AA00000000EC +:104A90000000000000000000000090AC00000000DA +:104AA0000000000000000000000090AE00000000C8 +:104AB0000000000000000000000090B000000000B6 +:104AC0000000000000000000000090B200000000A4 +:104AD0000000000000000000000090B40000000092 +:104AE0000000000000000000000090B60000000080 +:104AF0000000000000000000000090B8000000006E +:104B00000000000000000000000090BA000000005B +:104B10000000000000000000000090BC0000000049 +:104B20000000000000000000000090BE0000000037 +:104B30000000000000000000000090C00000000025 +:104B40000000000000000000000090C20000000013 +:104B50000000000000000000000090C40000000001 +:104B60000000000000000000000090C600000000EF +:104B70000000000000000000000090C800000000DD +:104B80000000000000000000000090CA00000000CB +:104B90000000000000000000000090CC00000000B9 +:104BA0000000000000000000000090CE00000000A7 +:104BB0000000000000000000000090D00000000095 +:104BC0000000000000000000000090D20000000083 +:104BD0000000000000000000000090D40000000071 +:104BE0000000000000000000000090D6000000005F +:104BF0000000000000000000000090D8000000004D +:104C00000000000000000000000090DA000000003A +:104C10000000000000000000000090DC0000000028 +:104C20000000000000000000000090DE0000000016 +:104C30000000000000000000000090E00000000004 +:104C40000000000000000000000090E200000000F2 +:104C50000000000000000000000090E400000000E0 +:104C60000000000000000000000090E600000000CE +:104C70000000000000000000000090E800000000BC +:104C80000000000000000000000090EA00000000AA +:104C90000000000000000000000090EC0000000098 +:104CA0000000000000000000000090EE0000000086 +:104CB0000000000000000000000090F00000000074 +:104CC0000000000000000000000090F20000000062 +:104CD0000000000000000000000090F40000000050 +:104CE0000000000000000000000090F6000000003E +:104CF0000000000000000000000090F8000000002C +:104D00000000000000000000000090FA0000000019 +:104D10000000000000000000000090FC0000000007 +:104D20000000000000000000000090FE00000000F5 +:104D300000000000000000000000910000000000E2 +:104D400000000000000000000000910200000000D0 +:104D500000000000000000000000910400000000BE +:104D600000000000000000000000910600000000AC +:104D7000000000000000000000009108000000009A +:104D800000000000000000000000910A0000000088 +:104D900000000000000000000000910C0000000076 +:104DA00000000000000000000000910E0000000064 +:104DB0000000000000000000000091100000000052 +:104DC0000000000000000000000091120000000040 +:104DD000000000000000000000009114000000002E +:104DE000000000000000000000009116000000001C +:104DF000000000000000000000009118000000000A +:104E000000000000000000000000911A00000000F7 +:104E100000000000000000000000911C00000000E5 +:104E200000000000000000000000911E00000000D3 +:104E300000000000000000000000912000000000C1 +:104E400000000000000000000000912200000000AF +:104E5000000000000000000000009124000000009D +:104E6000000000000000000000009126000000008B +:104E70000000000000000000000091280000000079 +:104E800000000000000000000000912A0000000067 +:104E900000000000000000000000912C0000000055 +:104EA00000000000000000000000912E0000000043 +:104EB0000000000000000000000091300000000031 +:104EC000000000000000000000009132000000001F +:104ED000000000000000000000009134000000000D +:104EE00000000000000000000000913600000000FB +:104EF00000000000000000000000913800000000E9 +:104F000000000000000000000000913A00000000D6 +:104F100000000000000000000000913C00000000C4 +:104F200000000000000000000000913E00000000B2 +:104F300000000000000000000000914000000000A0 +:104F4000000000000000000000009142000000008E +:104F5000000000000000000000009144000000007C +:104F6000000000000000000000009146000000006A +:104F70000000000000000000000091480000000058 +:104F800000000000000000000000914A0000000046 +:104F900000000000000000000000914C0000000034 +:104FA00000000000000000000000914E0000000022 +:104FB0000000000000000000000091500000000010 +:104FC00000000000000000000000915200000000FE +:104FD00000000000000000000000915400000000EC +:104FE00000000000000000000000915600000000DA +:104FF00000000000000000000000915800000000C8 +:1050000000000000000000000000915A00000000B5 +:1050100000000000000000000000915C00000000A3 +:1050200000000000000000000000915E0000000091 +:10503000000000000000000000009160000000007F +:10504000000000000000000000009162000000006D +:10505000000000000000000000009164000000005B +:105060000000000000000000000091660000000049 +:105070000000000000000000000091680000000037 +:1050800000000000000000000000916A0000000025 +:1050900000000000000000000000916C0000000013 +:1050A00000000000000000000000916E0000000001 +:1050B00000000000000000000000917000000000EF +:1050C00000000000000000000000917200000000DD +:1050D00000000000000000000000917400000000CB +:1050E00000000000000000000000917600000000B9 +:1050F00000000000000000000000917800000000A7 +:1051000000000000000000000000917A0000000094 +:1051100000000000000000000000917C0000000082 +:1051200000000000000000000000917E0000000070 +:10513000000000000000000000009180000000005E +:10514000000000000000000000009182000000004C +:10515000000000000000000000009184000000003A +:105160000000000000000000000091860000000028 +:105170000000000000000000000091880000000016 +:1051800000000000000000000000918A0000000004 +:1051900000000000000000000000918C00000000F2 +:1051A00000000000000000000000918E00000000E0 +:1051B00000000000000000000000919000000000CE +:1051C00000000000000000000000919200000000BC +:1051D00000000000000000000000919400000000AA +:1051E0000000000000000000000091960000000098 +:1051F0000000000000000000000091980000000086 +:1052000000000000000000000000919A0000000073 +:1052100000000000000000000000919C0000000061 +:1052200000000000000000000000919E000000004F +:105230000000000000000000000091A0000000003D +:105240000000000000000000000091A2000000002B +:105250000000000000000000000091A40000000019 +:105260000000000000000000000091A60000000007 +:105270000000000000000000000091A800000000F5 +:105280000000000000000000000091AA00000000E3 +:105290000000000000000000000091AC00000000D1 +:1052A0000000000000000000000091AE00000000BF +:1052B0000000000000000000000091B000000000AD +:1052C0000000000000000000000091B2000000009B +:1052D0000000000000000000000091B40000000089 +:1052E0000000000000000000000091B60000000077 +:1052F0000000000000000000000091B80000000065 +:105300000000000000000000000091BA0000000052 +:105310000000000000000000000091BC0000000040 +:105320000000000000000000000091BE000000002E +:105330000000000000000000000091C0000000001C +:105340000000000000000000000091C2000000000A +:105350000000000000000000000091C400000000F8 +:105360000000000000000000000091C600000000E6 +:105370000000000000000000000091C800000000D4 +:105380000000000000000000000091CA00000000C2 +:105390000000000000000000000091CC00000000B0 +:1053A0000000000000000000000091CE000000009E +:1053B0000000000000000000000091D0000000008C +:1053C0000000000000000000000091D2000000007A +:1053D0000000000000000000000091D40000000068 +:1053E0000000000000000000000091D60000000056 +:1053F0000000000000000000000091D80000000044 +:105400000000000000000000000091DA0000000031 +:105410000000000000000000000091DC000000001F +:105420000000000000000000000091DE000000000D +:105430000000000000000000000091E000000000FB +:105440000000000000000000000091E200000000E9 +:105450000000000000000000000091E400000000D7 +:105460000000000000000000000091E600000000C5 +:105470000000000000000000000091E800000000B3 +:105480000000000000000000000091EA00000000A1 +:105490000000000000000000000091EC000000008F +:1054A0000000000000000000000091EE000000007D +:1054B0000000000000000000000091F0000000006B +:1054C0000000000000000000000091F20000000059 +:1054D0000000000000000000000091F40000000047 +:1054E0000000000000000000000091F60000000035 +:1054F0000000000000000000000091F80000000023 +:105500000000000000000000000091FA0000000010 +:105510000000000000000000000091FC00000000FE +:105520000000000000000000000091FE0000FF00ED +:10553000000000000000FF00000000000000FF006D +:10554000000000000000FF00000000000000FF005D +:10555000000000000000FF00000000000000FF004D +:10556000000000000000FF0000000000000001A794 +:1055700000003500000000010000000200000003F0 +:105580000000000000000004000000010000000016 +:105590000000000100000004000000000000000105 +:1055A00000000003000000000000000100000004F3 +:1055B00000000000000000010000000300000000E7 +:1055C00000000001000000040000000000000004D2 +:1055D00000000003000000000000000000003FFF8A +:1055E000000003FF0000000300BEBC20000000001C +:1055F000000000050000000300BEBC200000000009 +:10560000000000050000000300BEBC2000000000F8 +:10561000000000050000000300BEBC2000000000E8 +:10562000000000050000000300BEBC2000000000D8 +:10563000000000050000000300BEBC2000000000C8 +:10564000000000050000000300BEBC2000000000B8 +:10565000000000050000000300BEBC2000000000A8 +:10566000000000050000000D0000000C000000001C +:10567000000000100215002002150020000000307C +:10568000081000000000003300000030000000316E +:105690000000000200000004000000000000000202 +:1056A00000000002000000000000000200000007EF +:1056B00000000002000000020000000100000003E2 +:1056C0000000000100000002000000400000004057 +:1056D00000000004000000200000000F0000001B7C +:1056E00000008000000103C00001878000020B4021 +:1056F00000028F00000312C00003968000041A40CD +:1057000000049E00000521C00005A5800006294078 +:105710000006AD00000730C00007B4800008384024 +:105720000008BC0000093FC00009C380000A4740D0 +:10573000000ACB00000B4EC0000BD280000C56407C +:10574000000CDA00000D5DC0000061800000000167 +:105750000000000100000001000000010000000145 +:105760000000000100000001000000010000000135 +:105770000000000100000001000000010000000125 +:105780000000000100000001000000010000000115 +:105790000000101100001000000010040000102193 +:1057A0000000FFFF0000FFFF0000FFFF0000FFFF01 +:1057B0000000004600000010000000000000000093 +:1057C00000000018000000010000000000000000C0 +:1057D000000000000000000107FFFFFF0000003F85 +:1057E00007FFFFFF0000000F00007FF800007FF8B8 +:1057F0000000190000000000FFFFFFFFFFFFFFFF98 +:10580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +:10581000FFFFFFFFFFFFFFFF0000FF000000000091 +:105820000000FF00000000000000FF00000000007A +:105830000000FF00000000000000FF00000000006A +:105840000000FF00000000000000FF00000000005A +:105850000000FF00000000000000014B00001500E8 +:105860000000000100000002000000030000000032 +:105870000000000400000001000000000000000122 +:105880000000000400000000000000010000000310 +:105890000000000000000001000000040000000003 +:1058A00000000001000000030000000000000001F3 +:1058B00000000004000000000000000400000003DD +:1058C000000000000000000000003FFF000003FF98 +:1058D00000000000039387000000000000000000AB +:1058E000000000000393870000000000000000009B +:1058F0000000000F00000007000000000000000E84 +:1059000003150020031500200100003008100000DE +:1059100000000033000000300000003100000003F0 +:105920000000000600000003000000030000000269 +:10593000000000000000000200000000000000065F +:10594000000000040000000200000002000000014E +:105950000000000400000001000000020000004000 +:1059600000000040000000040000002000000002D1 +:105970000000002000001000000020800000310026 +:1059800000004180000052000000628000007300AF +:1059900000008380000094000000A4800000B50097 +:1059A0000000C5800000D6000000E6800000F7007F +:1059B0000001078000011800000128800001390063 +:1059C0000001498000015A0000016A8000017B004B +:1059D00000018B8000019C000001AC800001BD0033 +:1059E0000001CD800001DE000001EE800001FF001B +:1059F00000000F8000000001000000010000000115 +:105A00000000000100000001000000010000000192 +:105A10000000000100000001000000010000000182 +:105A20000000000100000001000000010000000172 +:105A30000000000100000001000000010000000162 +:105A400000000001000012240000121000001214D7 +:105A50000000FFFF0000FFFF0000FFFF0000FFFF4E +:105A600000000020000000200000000000000000F6 +:105A70000000002300000024000000250000002694 +:105A800000000027000000290000002A0000002B71 +:105A90000000002C000000010000000107FFFFFFD4 +:105AA0000000003F07FFFFFF0000000F00007FF82D +:105AB00000007FF80000000000000001CCCC0201D3 +:105AC000CCCCCCCCCCCC0201CCCCCCCCCCCC020140 +:105AD000CCCCCCCCCCCC0201CCCCCCCCCCCC020130 +:105AE000CCCCCCCCCCCC0201CCCCCCCCCCCC020120 +:105AF000CCCCCCCCCCCC0201CCCCCCCCFFFFFFFFAF +:105B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +:105B1000FFFFFFFFFFFFFFFFFFFFFFFF0000000091 +:105B20000001000100020807CCCCCCC51000000029 +:105B3000000028AD7058103C000000000000FF007D +:105B4000000000000000FF00000000000000FF0057 +:105B5000000000000000FF00000000000000FF0047 +:105B6000000000000000FF00000000000000FF0037 +:105B7000000000000000FF000000000000000265BF +:105B800000001500000000010000000200000003FA +:105B90000000000000000004000000010000000000 +:105BA00000000001000000040000000000000001EF +:105BB00000000003000000000000000100000004DD +:105BC00000000000000000010000000300000000D1 +:105BD00000000001000000040000000000000004BC +:105BE00000000003000000000000000000003FFF74 +:105BF000000003FF002625A000000000002625A0CD +:105C000000000000002625A000000000002625A0BE +:105C100000000000000E0000011600D6002625A09E +:105C200000000000002625A000000000002625A09E +:105C300000000000002625A0000000000072000007 +:105C4000012300F30000FFFF000000000000FFFF41 +:105C5000000000000000FFFF000000000000FFFF48 +:105C6000000000000000FFFF000000000000FFFF38 +:105C70000000000000000000000000000000FFFF26 +:105C8000000000000000FFFF000000000000FFFF18 +:105C9000000000000000FFFF000000000000FFFF08 +:105CA000000000000000FFFF000000000000FFFFF8 +:105CB0000000000000000000000000000000FFFFE6 +:105CC000000000000000FFFF000000000000FFFFD8 +:105CD000000000000000FFFF000000000000FFFFC8 +:105CE000000000000000FFFF000000000000FFFFB8 +:105CF0000000000000000000000000000000FFFFA6 +:105D0000000000000000FFFF000000000000FFFF97 +:105D1000000000000000FFFF000000000000FFFF87 +:105D2000000000000000FFFF000000000000FFFF77 +:105D30000000000000000000000000000000FFFF65 +:105D4000000000000000FFFF000000000000FFFF57 +:105D5000000000000000FFFF000000000000FFFF47 +:105D6000000000000000FFFF000000000000FFFF37 +:105D70000000000000000000000000000000FFFF25 +:105D8000000000000000FFFF000000000000FFFF17 +:105D9000000000000000FFFF000000000000FFFF07 +:105DA000000000000000FFFF000000000000FFFFF7 +:105DB0000000000000000000000000000000FFFFE5 +:105DC000000000000000FFFF000000000000FFFFD7 +:105DD000000000000000FFFF000000000000FFFFC7 +:105DE000000000000000FFFF000000000000FFFFB7 +:105DF0000000000000000000000000000000FFFFA5 +:105E0000000000000000FFFF000000000000FFFF96 +:105E1000000000000000FFFF000000000000FFFF86 +:105E2000000000000000FFFF000000000000FFFF76 +:105E30000000000000000000000000000000FFFF64 +:105E400000000000555400005555555500005555AB +:105E5000F0000000555400005555555500005555AB +:105E6000F00000005554000055555555000055559B +:105E7000F0000000000000000001000000005014CD +:105E800000000000FF5C0000FFF55FFF0000FFFF67 +:105E9000F00003E0000000000000A000000004008B +:105EA00000000000000000000000000000001000E2 +:105EB00000000000000000000000000000004000A2 +:105EC00000000000000000000000000000010000D1 +:105ED000FF5C0000FFF55FFF0000FFFFF00003E044 +:105EE000000000000000A00000000800000000000A +:105EF0000000000000000000000020000000000082 +:105F00000000000000000000000080000000000011 +:105F1000000000000000000000020000000000007F +:105F20001F8B080000000000000BFB51CFC0F003E6 +:105F3000091773A1F22FB0A2F2D1B10D3B7E7942C5 +:105F400098858132FD424003A480D80C889558F092 +:105F5000ABDDC18429E62C8B607F9362600894805E +:105F6000B0DB242873D7281E1A385D13959FA20E24 +:105F7000A11F6B40E80C34F954A8BC900A84CED41D +:105F8000C46EAE30541E000F54CD7F60030000007D +:105F900000000000000000001F8B0800000000004F +:105FA000000BED7D0D7C5C45F5E8DCBD77EFDEFD9B +:105FB000CADEA4DB74D37C7013D2368550B669DA9E +:105FC000A658F4A64D4BD0AADB0F306AC16D0BA5C5 +:105FD00050DA060C8F3C45F7967C9036A5A480805D +:105FE00080BCA514AC8A1A3060F5A16E29627DE2EE +:105FF000EF9516A56AAB011141695FE55129EFE9FB +:10600000BFFF39676676EFBDD94D1A049FEFF733AE +:10601000F8733A77BECE9C3973CE9973CECCFA34EE +:106020000F29FD1021A7E18FA65F950821B37329E1 +:10603000B936422B10728346F0EF6D7FD10C1221DE +:10604000A45363E98D81A29D906E4D11929906E54E +:10605000556952444890903A250A2D02F187AB21A8 +:106060006D9F9B380FD3F3212D211E422642BE4245 +:106070007F35C8FA3E2DC3FF7F9E9039B9F1C89194 +:1060800064338C2F13F1D74AA0BD4CB6FD459E4119 +:1060900088D21E213735D0BCAE920C6F731AFE4FDA +:1060A0005E19498672F372A79D479AD3CFD4E5EA69 +:1060B0009F4DC2518443210AC2C1DB13621118DF14 +:1060C000CB4777F7F376CA4C3FE31D89A742E30A33 +:1060D0003C75A53492F111D297D2312F478999AEF0 +:1060E000C7799A8F430A6353FCF556183B83920D88 +:1060F0000E3FEBDF24125B1F9274E0AB377ABD6674 +:10610000D6171E9F54D8F05433727E0AED7A90B69B +:10611000A76B67EE84541F1D8EA55938D611FBFC62 +:10612000C70FC7671DED03D30939003850E8FC6875 +:106130003F9E58D21AA62989D17674DD1483B73BC5 +:1061400043BC07EB3CD84EACB7120A38E8C56F9495 +:1061500038E967045D5A9C5E07F87C1332A36791A7 +:10616000B748226CAF674B6DF42B477B916EE568A7 +:10617000C0928B20555E1D768CCBDA79AB4812D657 +:10618000A10B3E95F1C6741D948AF8435B29CABFE2 +:1061900040541C57896AD8CF67A5E417108E257420 +:1061A00009E7E0FE2384E228A027086C356F695DCB +:1061B0002409F80B9510326F247E6E495969658A5F +:1061C0002DEF256D8348FF69364E15494FA070931A +:1061D000BF2D3496850BF7935D5F3E8FAECAF8E115 +:1061E0006423CD4D54E30FC3FCA5FCF3B91BE63388 +:1061F00011E6A35A801F3A9FBB117F05E6D3159E77 +:10620000CAE713CD0B47379F8F803FFB5DCCAB4078 +:106210003B37FC85CABB2BCDD82ADA8515CE3F2F5C +:106220002FCC8BF2BDEFF07979432AAE93379A26C3 +:10623000C057E8FCBE936F7E94AE90BFB9E7A7E865 +:106240001AE2458CAF68BD6965560ECE0CD1D938BF +:106250005938E28C4FEA04DBED22C90C9453FA3B27 +:1062600080F4173209F4AFC668F9F9909A6D165D9B +:10627000D7EEBDF3483DB40BC5C9B534554349B25B +:1062800084D6EBFEBBDC06F448A28DD8BF80E3BF0A +:10629000733E5E086FCB001E1B9E0F5512D68F6B90 +:1062A000FD0F7DD487F9EE89F1870097BFE27873FF +:1062B000E387E2ED57F6FE159DE1F3D047A7317C69 +:1062C000B54E74C0978543EB72E08B000BA5FBB213 +:1062D0009883B2BD960CC8548E1537792C1FC54FC4 +:1062E000757D26436796C5E7AD53D4A781477E49A0 +:1062F0004BBE0EF424CB6953A1EB3B69E520E2B120 +:106300008FD3D522F96FDACB34BD6D7E4D64354D18 +:106310002392E4A03F917E85CA01A0CF7BA81C50A8 +:1063200068C76F1F65F017A2B70752C4B13F1FE8D7 +:10633000505AD3B4FF073A0F2EBD88E2AD275ADB7F +:10634000803CA64952605E8C571322C1F874BE5F30 +:10635000B9E1BF209C147F92343B478782DEAA4D6F +:10636000CBD44380628B78E812EBDD249E31581F3A +:106370008A0D4F023F140F01E82764100FF0E2A0CE +:1063800049F1417278B86DBE07D7F3FAE6A93BE54B +:10639000EA1CDC1F96B8DC8F32BA264ABC0EF866BF +:1063A000A1FDB783E2A91EF7715C827A135A481ADD +:1063B000F6D156FEFD67243159A2F5262C897B6162 +:1063C0003E0725415F31948BDD1CEE1D8B038CBE97 +:1063D0002AF507019E29028EA4E4A6AF29D2EC1C5F +:1063E0005E047D7DD193AC83EF5A5DBC19E6A9D4E0 +:1063F000A73330EF2E0F5987FCC42207A09F124904 +:10640000EC6346DFA15A6327D077135F8792C6DE1D +:10641000EB3C14FEE29862F9685A32BC6A09E84B18 +:10642000FE2317BF4ED8F79700BF135A078987F688 +:1064300033B9D66886713A3CC926986768F62E90BB +:10644000B8743D2C4BA5F318F05A04D64D9B3F6011 +:106450002642B0CE8BC92A9BDE73319F27ED03F510 +:106460000BB19E3B6406E7F6A612FF5521A8174024 +:106470003AAD262D9C0EA88641E940E37440D7BB77 +:1064800015E61F68C91089E60D6310763ED0F92421 +:10649000A0AB012F2983760337A86D69868F1780FB +:1064A0000E431E8E0F83FE0778F670D4485E844B31 +:1064B0005EC3F014D149DAA0F351AE6079BD96A461 +:1064C0004D9A0F717C09FC8438BE4AEA4D13BA9A82 +:1064D00010D73753F509F0B312E133073330354D98 +:1064E000CF1042F5830794F6DF7D81F6F7C07E3941 +:1064F0006E1936BA2394EECECBE1E9AC4EBABF6C3E +:10650000FA41964F44CF4C4E003B01FA54424C7E28 +:10651000097940E97323AC9BA233FA3C53B9A375C4 +:10652000CAC62BC0AF141DF51B85EB087DFACD162E +:10653000E0E724F445F1230FCCCC9046C46FFC6116 +:106540004677195C37DD4C6F45BD3B8DFB40E81F3E +:10655000817AA71EE4AD70EA41A4CD92ECFA94D6FC +:10656000A9221C0A9507A43E374F2A19B01F98E6A6 +:10657000E9B321EFD4DB9510C9F8E93AF5D7371024 +:10658000BB1EAE10A6F7C176385D3DB25D61BCB8EA +:10659000C65BE184F38CDB8514E3559BDE59B89D23 +:1065A000425E1578A2C87B183AB0E975543FDA23E9 +:1065B00051B9D955F18805F47D0B14D175ED256CD1 +:1065C000DD498BC7C157E40ACF4B3ED4D30CD64F1D +:1065D0008CE94F3E726906F747ECCCF4A900A7ABF3 +:1065E000CF92E4F781AE7C1549C4AFB7744FCC2E7F +:1065F0003F1495EA8F4023752BB07EFF796B2D09F0 +:10660000F4922A7D26D202A7AB7E8DC1971BE76646 +:10661000E4037DA934F9BD17E404EB5F33122C15B4 +:106620007459C7E8B8AF7E5984C0776D10F95070BF +:10663000E0B18C276AA7478BAC380FE6C9E8EE4E6D +:106640009A9E16740972281670D0A3A037D1FF58ED +:10665000F8C8E635F332D807EB62AA01FC76BD4CE8 +:10666000DA410EAC8B4D6D21337272DCE32963FC91 +:10667000B0448B67E810EB7E2137C946E171D651F3 +:1066800066AF37C0E966DB01903B24ED3D316CA37A +:106690001FF739F20D899E23CFA5FF984BE602DD47 +:1066A000BCA9B74532A3F4FFA7D47E1DE4BA38478E +:1066B000BACBC53CD613F28AAF04E669A99FA4F809 +:1066C0000C7834C49F989F52D2570AEBB37EF74F91 +:1066D00075071FE3FC6BBD428F9B0D23E177E393AE +:1066E0008E93C17144BB610A9F9D3FB8DA67FB1569 +:1066F0007C5019A1AF453C40B72D375893697EFDBA +:10670000A34B99DE41E701FC57C02FC615F3C88E95 +:10671000EF9A4FA1798C975FBFD9D2D30B02EC05CA +:10672000AF5199003A699DD6027245E8AB625D9619 +:106730002EEA29CD6747C8D297420C1DF045156651 +:10674000A4A75F7635C1FE6AF5F8F39E1FC6A29F27 +:10675000468F8B7E5A2E795FE8E7E3403F802FAE6D +:106760002F8BF9BBF1BDAEC58BFA48417CF3F662C5 +:10677000FD46D05FA17623E9648567761E3AE1FD88 +:106780000B7A11E3FCA3F08E451F9490508F9ECCA2 +:10679000E1ABA46295A09C63E78672D635A9AA38BE +:1067A00021819E6124F405703EA8698BE339E1DE06 +:1067B000E25F97AD32A0468B0E7244322748A7CFD6 +:1067C0003D7379E3E66F254B9497ED7682500BCDC0 +:1067D000DBE61DA87796D353452E5F9DEBAF88D39C +:1067E0003731E271BBDEBDD59B6EA34746D2E3597C +:1067F000DC1CA5F8D9EA4F1F862365CF968B9B5BDF +:10680000693E5045C80190FFCAA0067AC083A09C8B +:10681000029E9A5AD1BE11E272840C0F6A67D37D30 +:10682000A0CE56C8569ADD3B2C1395E6B7C594B456 +:106830000FCF24AD28EF831C36D1CFB6E13BB0DFBC +:106840002DF5077547FF3156DF2FFA37DA3F5363CF +:10685000EBFFED2902AE010DE41031EB101ED1FF6C +:1068600016AAEF9450B9102E53D2A00468C383A681 +:106870000E762D92B120D5EA4D02FC9F3445199D2C +:106880008D711EA1B486FA9D5267E1799EE6372389 +:10689000BDADE0E7AE1C3D7F0BE8D947CF114037D7 +:1068A000E21C21C61993FECEB41ED859E9FC6E2411 +:1068B0008138C8BD89AA297969BEB382C46FA67020 +:1068C0003C29257F04707857B47FA687E6A54B3B0B +:1068D000A70D53383A29A6504ECFF7A41F96385D1E +:1068E000D376B72526A1DEA84CA898980CE5F4FB32 +:1068F0004270F4A7C8AC5ADBB9B49FD207E8015480 +:10690000EFD3F2B50BC6D459B51368BFADC624FD9D +:106910005DF5BBCCD1EF599EE46F3C1347F64F08B1 +:10692000DB1F1EBAE8B09F02A10E3C0F04886DDF8A +:1069300054E7EAE5F69D337FCFAAB531C0437492A0 +:106940003953A2FBE1729964124D341F341F83FD49 +:1069500072899C6E0ED1FD14F599D77968F9755D31 +:1069600037366F83FC590499C795F20FA4CD14DE16 +:1069700028F0F40B28BFEADAB3D9AA67F807FDAC10 +:106980002F9549BF3205CEB3FB317DDBC3CE6BFF04 +:1069900007E81FCE9B0A3BDFF90D5ACFB6BF039421 +:1069A0009C51DFAAA3EDECFC36C6F893C2E9909E99 +:1069B000DB4EC3FA87DA0633C097041DE6EC15F503 +:1069C00091976DF2CD273BED155BB99D42E403DA5B +:1069D0002FAB403F13F981D4E12A80BB2F355CF502 +:1069E0000A1DE0D6D46B981F50F46638A758F39967 +:1069F000EE1C51985D59B46B923D388E484F9225EC +:106A0000C4043EADEF42F8436C4A44E988909B4A87 +:106A100020CFECFD215DF9AB9DCFB9E56785CCEDCD +:106A2000F85C7E863BFF5CF50AD003B7E787B97D4B +:106A30009B1CD9C9C611E775F9B9F8EAFA9C1C6D17 +:106A4000E47810ED42848E5B673FB7B0BCCCE9447C +:106A5000CCCB0DCF0CD929CFC7F24B88F15189A0EF +:106A600074A04FCFF25D86947AE5D5619BFD3B62C1 +:106A700052FC3BECD8741D6CE37F4E667454D4F822 +:106A80009AE3FB3DE16B90AE4F0D9F3DAADD09E817 +:106A900053B1E915408FF17A468F76B99BA397C31E +:106AA0004807DB801E902E183D0429FCD02E58E7A5 +:106AB0008457C0178E3BE1F61BAF39EA29705E00A0 +:106AC0003EBA82D941C94AE2E6B72B65E07324ADEC +:106AD000FD58023A6F477BD7E7641DFBBFC79B8C0D +:106AE000B5D3F9DE5A4CD7909EDB6EF55A6D09246A +:106AF000B213B165367EFF6399D969B2ED2E64FB9E +:106B0000FF772479B50CFCB63E16B2EFAF60DB0020 +:106B1000918C5CFD5E8E570AAFE5B1C1DB09F39C39 +:106B200038126E01A7976E5B985F74F94AE46FD9CB +:106B300079B639F5A46CFDAC1D39F139848BDBAB2A +:106B4000B27CBD91F275A4D303DA52DBFC6E6D1CEE +:106B50001F3FDFA69C40BE7B5BE8CDFD20D7ADB8D4 +:106B6000273EC500B9D0B0DFA0F96038DA603F3FFA +:106B7000CDD516F4CB36FE11AAA7FDD9D6F156E035 +:106B8000FBA3D07FC1F1A3EEF197B556E71FFF3EFF +:106B9000860FF206E099BBA9486FD95D8857373C4C +:106BA000A2DD1A4F72971D6E7F2DB38F8F9493279E +:106BB000B4A536BBD178E5A33BA5FC27017CB82B57 +:106BC000D4A0AFB6E1E509CE7FDEF4994F005C6E4C +:106BD000B8C72B3F0B8DDB13758EFB22A77F3AEED8 +:106BE0003330EE8BC087C0FF9328B282A0F72428F1 +:106BF0001F2E023F4CA6750DD0A3CB4E15E17A5A3D +:106C0000F7FC659FBC92EA1327E34A1CE95663FA36 +:106C100085325F4D5BA05F0C4826F32F99681F08F3 +:106C2000807D008F24CC3EB046EC97B8CD3E50031B +:106C3000E331FB801B1F05FD75DC2EBBBA891302F7 +:106C4000313EF11BBA9E57EFF7A2FE48FE466BDBC2 +:106C5000EC632FFF9ED917AFE6F6C62B48A2080AB1 +:106C60008F114F2BC07B8C1C2C9A65C3FB4999F963 +:106C7000E1A840457DDBA2FF019C570E781DFAF884 +:106C800055F738F36BC9B252D0DBD6DE4939164519 +:106C9000F9D52EBDE40F9C9F5C45DA7B81FE7BBC61 +:106CA000CCAEBD5AA7AA1995871BBEFB9539AB6818 +:106CB000FE6F32D317FE44E5B4E1CBC1754D28AD6C +:106CC00082FFF5F743B32EFD0081F6E9DEC9E087C8 +:106CD0002B667619373DACE973C23716FC6E7885A2 +:106CE000DDA8101CCA6EC94CE7D9F70145CAFA4F96 +:106CF000611E85E20B445CC1390AA30B6B01F038BD +:106D00009AFE369CEEC27DC9E20AC66A3F03DACF1C +:106D10007EF7ED1BC618BF3F3A98003E2EEC7C0173 +:106D20002D61322C31BEDD1F1BA3BC76F4F242F084 +:106D30002D2DD6D08F27E0A47AF187943C70BEED3C +:106D4000312F037AF601BE3165E744D493E93A6EF8 +:106D500052427D12EDCF1F1A427DD96F38CF959BDD +:106D6000E01FC00FEB08CA97609DB3DCAD3F2F5307 +:106D7000247E4EC9E03E2BC22D48532D9441F9D6B6 +:106D8000A4BC316CDBDF822EAE8F51BE32A130FF4E +:106D9000F210CD8033A7C6F985C4F3028E3707A45D +:106DA00056D82FD75315AAB3C1DEAF8AFD8EE01790 +:106DB0007FA3E573001F84B0737E3C06EBD9972256 +:106DC00018A7D1E54D7C1CE6DDF50B9958744A5D9A +:106DD000C5EDE827B32A8901FE5F5F6D2202F655F3 +:106DE000DF0B72D453CD9909C44D94B5EE82F3D420 +:106DF00015A044019D537608E74B5FC8324DBA1F7A +:106E00007AA95E520C7ED82F327F7F7328998476C0 +:106E100072ACCDEBA3ED7EF2E89A36C85F135BACA3 +:106E2000C0F97993C2FC26C7BEFED81C42E1EBFD37 +:106E3000669864503F4CAB706EBE6648463FCFFAD2 +:106E40006F8771FC6B1EBFEA9125809FEF5E68BC67 +:106E50008AFCB60BDB5FF3E4F2FF69F1F968743D7D +:106E6000BA3673BF99158F2DA74D37F8C86712A191 +:106E7000DCFC05FE346300E5E135BB8BD1DF98DD3A +:106E8000E70AAD4FDBFB68BA2C8F5CBA43617AFE30 +:106E90001B61B50DE09376EFBD1CE11BFC8417E68A +:106EA0002555B4933FC0787C7EB41ECA0BEB6B5261 +:106EB0007A0A2D7FE36B0FAA35E7C1B80FAAABD1D1 +:106EC000FFB019FB13706ABB7758C0DFB45ABD0618 +:106ED0008E4E0BBFFDCD2238E76EDA2D67E07C4E7B +:106EE00053B40BF90DA7FF83CA9F9044D77D23A706 +:106EF000CB8D431B90FF6F1CEC4739B7698F93EF25 +:106F000051BCA29D6FFD8B727C09E4BFF3D5228337 +:106F1000C2F3A7030F1701FEE938AB54BA7FBCBA1E +:106F2000735F40FFA74A46F647F509B46B6D1ADC5C +:106F3000C2C61BFAE81FC11EBAC9C55FFF04FF28FD +:106F40001B79BEF8BEE23A5FEC9E7046F6CFF5DFE5 +:106F50003CF98045C77DE3F13F3F007EFF6BFFE3D7 +:106F60007F3FF079D8D73FF4EB201F367DFD0F0F20 +:106F70007C8EE2F3D81E9F07E8E3F80FBEFAC8BD87 +:106F8000347FFC57D31A80351DE2FBFAF863EF9487 +:106F90001AB49F8E1F2C9A04F3EF7862E124328A90 +:106FA0007E779CD253DA6787278DEB68ECA1FD4D85 +:106FB000A2D9A778EA5A977D43FBAA00BE63877DD2 +:106FC00071D8A39BE837D8D71B07E97ACD60793809 +:106FD000276E7CF4163C278EC4B355EE89211F2AF8 +:106FE00007D7F0C6A1E51FBFB011526FDC80FEC805 +:106FF0000994B3EE769B5EA0EB797EE1F53B49FE0A +:10700000A6029FDCF4E81636EE205DBFA291EB7776 +:107010000CFE316FE4FABDE95ABF93E4DAFF762F34 +:10702000140E4DC86BFF11E7C30D4F5C32EA39F205 +:10703000B86BDF16C2F33A6E0FFC91627ABCB03FB8 +:107040001FFFC623F746619D7DF125B0EEDF3C5959 +:107050000587E6D7BC272E87FD78E2073E7D276DA2 +:1070600073CD0F5E44B97EFC89E75503E3A0A84ABF +:1070700049F5BFE324FB7700F4C18D3C0E61D3AE2C +:1070800070C657945BAF8DE9A5AD46117E47BFD85A +:10709000C634A3FF8DE9BD2BA43CEB7781B786F105 +:1070A000CF34B3DF6ED8F51B95190972EB2A35C1C1 +:1070B0007ABEB418BE175A4F317F1DE63FD7B6AE21 +:1070C000BBD8BE2DB43F8F3FE853402EBAD7F93816 +:1070D000B7A36C4A4B2FE65B77A1178D371E71B6AD +:1070E000D7B5AFD36766B71E7B3EE3C357ADD7C0F6 +:1070F0007EDD78DB5C46F933C8A922350D72AAD74C +:107100006BBC68017DFCD44B76D2265D45738891BB +:10711000C78EDA0DFAE1B45C5E0925D07FAD447507 +:107120003CC7B9E3B5BCF45861D8E0D97774DA2428 +:107130008803F47A987FB367EF3C027201D26A88C1 +:1071400057EA9C15AFB5D9A7E4581CFD9E6ACC68D8 +:10715000CED7BFDA3907EB67CF794DE2DCDCFEDA58 +:107160008334BF3D561A87734258FF566C2F81787F +:1071700089F19E9F2D0DCE697DA19BB59AC6DCF944 +:10718000B5CF28787EFEACD766CF749F73B68FFBE1 +:10719000FCCCC78FBAC72F787EEE82F16FE17134D5 +:1071A00023CE597A08ED1193F9BEFE9297C9814A10 +:1071B00092D94C98DE93D0ECFE91B6137BC1EEF8D9 +:1071C00095A5471E5C45C789906EF487506DA0F168 +:1071D000F4ACD1E8D9E90FF179987E44E2DC2F23B1 +:1071E00065F90C1B8FDBF1BEEA65E7090ACF63ABDB +:1071F000E93FEF9F3B2CC16067D121BD14BEEA156A +:10720000C6CD00CFD92B0F7C6D15D2C3BBF3CF6495 +:10721000E9C510F46239EC2C7DC6FB6317D8E3CDC9 +:107220009ECFF7C03AB9D7A76F9CF451685CB75DA1 +:10723000E027DEAC3DE227DE3CF68811FAF419C601 +:10724000B9DCBDBC88C5FF1C91D03FB4637911FA8D +:1072500033741288035FD143CC9F71631589534EF9 +:107260004ABC2BAC9F00BD3E29257F0DF36FFEADC0 +:10727000BF0CF4BC810BDBCF02FD2332C2FEC5EC98 +:107280000EB7825F43CAF935C66B073B53BFC6785A +:10729000ED5BA3F835FEEA9D3DB27FB75F430EDF9D +:1072A000897640FF38FD1AD109E64C290ECB70D7FC +:1072B000C2E762397F865F5DB790F93308FA2FC263 +:1072C000EA97BBC05F112D371F83FA77F4DEBD103C +:1072D000FC83D1B359F99FA11CF46FC5B460FFC7FB +:1072E0007D06F35B24D597409E6B063BB7529D6BA2 +:1072F00018F4396137D5DA92191E4F39419D8DF650 +:10730000248C2753632C9E721104C0D3757BD32029 +:10731000481785F0792FC44F4E017B33F35368EB48 +:10732000C800C8E7DE948E71955B5331FCBE3D65A5 +:1073300062FA339230603CCD60F158F770BB4A97E7 +:107340004AD6417A90CBF3ED2ADB67B994D959F646 +:107350001DFD496C0DC0150AA01E5A08AEBE545D35 +:107360001CC61F48C531BD27D584E97669D800BF42 +:10737000EA1CB5AC4BA3780CC9076290EF55AABACA +:107380005A68BE88F339D99811576CFCB14965FB2E +:107390004F8BF7A29EA499B47C02B427ED8379E8C1 +:1073A000ED83B9FA18B7A2E9ACFEAD9CAFBBEB2FE9 +:1073B000E2F5B7ED7D07E576C42412E047A7F211A8 +:1073C000E0D8B6D72F819ED7EB25CDB0BF6E9F42B8 +:1073D000E220E7FD9DF5BCFC755243DB7D94E3ABF9 +:1073E000A84597601D8B3B1BB1BCD76F7C32219C9D +:1073F0003A18F7CBE2227B81081A21EED7D87933ED +:10740000CD7F8AB70FC72839D0CD1CEBFC20B657EB +:107410001AAD033C2EFC53B07EE429B75D9CD9C362 +:10742000CBB91DBDBC2E64823E565E5FBA00F4CD62 +:10743000F2F839182F505E115A85F9BAD23590BF3B +:10744000573A90588876310FC67197D7D55DC9CA1B +:107450002FB80ACA6F528B119E50436B1DDA8FB33F +:107460007EF003E8AF264DAD1E8043E7BCF056B377 +:10747000264246E12B28F904DFC47D19005B8A2DE2 +:107480005FE2CA4F76D5AF71959FE32A6F70E43BF8 +:1074900039BE49A3CAECD7FA64B4D30E087FFA897F +:1074A000C90C7E3FCBEF2DFA93F65288A576BFE04C +:1074B000F631E6759BCAF67D39D5D7884D8F255AAA +:1074C00020074F0DE20DED2A9AD262813F3ECB2F6D +:1074D0001A29BF98E1E01796DDCF62E3175F5627C0 +:1074E000BE7B7EB185F3897ECE377E46920F417F8B +:1074F0001AC47F17D9F9427C1DF0C39FF55EB950BD +:1075000099877C01FDB7C4BAB20BCE3D18C74AF3C8 +:107510005FEBFDE442E08F422FEDE7FB6B0BDD2FCD +:10752000B01F20AD0E8FD44BF518D96CD74BC57753 +:107530009B3E3ABE759BF257EDA57A96BE0CFE397E +:10754000CE176E83751B451EF5527C90690C1F90FB +:10755000FA6A03269CCB025CBFF6D5952E80BCA8A8 +:10756000FF1CAC33C41DC69CEB1CAAB7AD33B1AD38 +:10757000336971CA05D73A53BC45006FA519CA5F74 +:10758000F29C17D4CEE96CFF53FC41AA537C01FE58 +:10759000051FF1EAFA83605FBB73F9C6CD5E88838D +:1075A0009F503213F0F932E7D764D0C92744BF9413 +:1075B0008FBC8C7227DA4E982AC9FC67140E62D2EF +:1075C0007E8A2A48DA4FFB2D6A3A409261D0FF0F3B +:1075D000581057ABC4A8C607FC86F345312F95F366 +:1075E000418F660AFA4D92FCF2EE2FF9E49D5B0E94 +:1075F0000938EB7C8C2F8B14FCF5C3A3EC43E1AF73 +:1076000017780DD4C5A57CFA4A2FC8255AEF0E2E3F +:10761000EFFA403E41FEE97708D0ABCFC7F017A99B +:107620003841C04E1951E2D520A7ACEE2D0B414E8A +:10763000DDE167ED447DD16FC4C7EC7C910AB64EA5 +:10764000EE7127F8187F9FC0E59CBBBC82972B4B3F +:10765000D87D1965491FCA2FA582D18D62B0FB5311 +:107660002433C2FF5BE143FF6F7B6657754E1E8874 +:10767000F9DDF1F4AFF07C18AE68C7F8F85A8ECF98 +:10768000DC3C7879E301B28AD76B463AA3744CE7C5 +:1076900037DDC7E91EE4D9048853FD20A6674AE711 +:1076A000711FF3E7F838DFF3F1FAABBCE64C9FCD7E +:1076B000FFD19BB8367125D097C6EF376A45561073 +:1076C0008CE6BB46C4CB5DE09B88FE6E4BAACEF930 +:1076D0008547DE3F73C707259A313E28CAF469AA59 +:1076E000472F84F17D8902F14186538FEE73E9D1F2 +:1076F000E33DE79CA91E3DDE73CC287AF4677C67E6 +:10770000101FE40FB5C4D69277A1479F6FFEC50343 +:107710007A347976E173101734CD7C0CF2A1E8F756 +:1077200016B6821E3D8BCB0DF2DC42D847D1B90490 +:10773000457ABBEFE7A8579FD6CCEB00BE874099B0 +:1077400084F54C9826DEC5DC959F6F89D43B89C5AE +:107750000974175FAA63BC808B5EB6707A75C70B1D +:10776000BC57FDE78943E8F7D9E210FE59F3E9F188 +:107770009B5F76E06F9C7114741F3D84FBC8751F7E +:107780002A4BFF75C2EF9F76F8FDB7D6BDEF76A006 +:10779000213BDDBACFDB5BC7E9FF7F1776A0671817 +:1077A0005F22038037958BDCEEE2B563C551FCDCCC +:1077B0000EB71A73C551FC93ED25BFF565ED16BFE5 +:1077C000F5E5B15BBC5FF69263B9718FE51BB7500D +:1077D000BC42A83A9E40BDAFCC43004FBDF3E3038B +:1077E000C0777B2B3DEACDD5B97B0C629CA9DAD959 +:1077F000D8AE3BA67AC03EDDBD7F11FA5F7ABDED03 +:10780000ADE8AF2CF6E83BAB47C21DD5989C963B44 +:1078100083B3768D6287935526A7BBF5A711AEE09B +:10782000CC6831DC9FEBDAFB5FF7CB708E8B955623 +:10783000839ED4A0717D8B22F3F7367F2EE574AD45 +:1078400000BF5CE1212037E4CE221C6F2CF8882693 +:1078500071F8FCB3768DE2077EAFE113788C80D3AC +:107860000BC70FE1F802AFDDF50AFA31BC7038A0A2 +:10787000EBE61DF6B17BDC710FDEE753EA3DE8670E +:10788000147A25E52F710DC61D72EA2B7288DDA7CB +:10789000F9BF3E766F57F6B7E3FE14F71742490576 +:1078A000E55430C9E455162F9C4E825E8B60FC7205 +:1078B00048417FAFCAE942BE309380F90CCCACF5A9 +:1078C00000BD74723CF699745EE7D394CF6380C7B1 +:1078D000BF8971A84674F74AF09F9A350D60EF5E34 +:1078E000C3DB692484FC53033CCC827B789B491521 +:1078F00085FF628DFB276A480DD0EFF5CDD75F0479 +:107900007AB16658BE7C7E8E91FC88F8017EB9D92A +:10791000E3AF85FB6B33193F22B1C631FC1CCCEFC2 +:10792000ABD4B3FB93621D04DEC57A78E1BE0EDCF6 +:10793000C333D97DD5AC9E1F63F8CDDEC37A34FF47 +:10794000BAD0D3E19695927DFE45480762FE576B0B +:107950003CCEF4FFD1FC3F01BC04F8F3BEE977AFA5 +:10796000A453F29B9E38C6BAD552FAB69DB783216E +:1079700005FD6B828EB4E11D994A3ACEE67F15F87B +:107980006367662716FEE00ABE4E845CE7B8375888 +:1079900001F74267E4EC00FE2504FD52E5758C4ECC +:1079A0002AEA6EBECE3383C703D221272C02C51923 +:1079B000CB916E44FBF276E73B22C1B8335FCCE358 +:1079C000902710DB773A4EB1B8BFCBEF1B8AEFC2DE +:1079D000EFA7BAF8B648DD7EBF21CD19BF7CA6F16E +:1079E000C2EB88F97DCD86CFAE1AE2782FC08DCF5D +:1079F00052C3C27B1093E0BE37D821E693788680CD +:107A0000F52989FE32D2C4E2C414EE1F16ED7F9A26 +:107A1000E50B6FE13D61950CE33D0AF77A8875E867 +:107A2000AB25FCDE87192A9B93BB47DEC7D7C15F16 +:107A300046301EB098DFEB252D1C7F1291807E8B87 +:107A4000E63BF1AF72FC97F0F879BF0BDF2A5F07D6 +:107A5000D5F5FD0D8D9D2BC7EB877D55F0B9300910 +:107A60003BDE85D1F3DFCFC8BE0723E8769CE3BDBC +:107A700025C60BD1F1CE7E17E315A837723F39D753 +:107A80006B315FAFAD86582FB204D6AB8CEFB7AD7C +:107A90008D6CBDB432B66FCAF87E2157B0F5D1E80F +:107AA0007FB05E93DA9CEBA5B9F649A1F511F7A575 +:107AB0007FA425A27ED43B0D09DF57B92288762FFB +:107AC0002D4B574FED55292CFD1504EDEF29BFC166 +:107AD000ECD6571F46D3EAE49A9DCC2E0B39DA4EEA +:107AE000E5F6B2FED8B251ED9722CE6900DEE599F7 +:107AF00056B89EAE269310E724E2A0CA3A0CD49B57 +:107B00007593E1A762BEB113E6B2C22FF1B846E2A7 +:107B1000B8A78C3BA1145F27C0BF8A06D6AEB79A20 +:107B2000A4C1FE1DEB607A04CDA33D28D2A164BCA4 +:107B3000341F8B2F7E1DCF318A45406F8E5DE1C48F +:107B400073A4FDD9360983EB6C78A5F41A314E5C29 +:107B50008EEB345F75C4D1169ADF99A6DB29BE5E21 +:107B60009E62A7AB742BE85BDA0B32C6D56A263D62 +:107B7000E5A29F422F85F135331EC274B8B995E551 +:107B8000135BA1BC9DAF9F56CBE454F188F8ACFCCD +:107B9000F88BC03FE0FE03C78B8023E2E6BF2E7C5C +:107BA000B8F3FF281EFA5C7810FBE4640749933CA5 +:107BB0007AAD482B4F292443F5A9F0FCC13EDC5790 +:107BC000F51E02EBAFCD67F753EEBDFA97185FA134 +:107BD0001ABA24DBECD95FF0333D5685F71C802FB1 +:107BE0002886B43C6C2F67F1C83FD2CC9BFC682F31 +:107BF0007C4A037B4E58C9B4C1FE0E537906FC364D +:107C0000BC4E65EF4184EE74F08B72BFD7111F91AB +:107C1000E5173132ECB19D03855CF89296ECF74F95 +:107C2000CCDD2F5263EC1C2DEC94C22EEE9EFF4057 +:107C30006A10ED94607F86F4FE1489837E31C8DF7C +:107C400043A900AF18C8E598AE039D54C48C1296A2 +:107C50008F9740FE11F0EF4D817751987FEFDE94C2 +:107C600081E9D75375D87E772A8EF95DA926CCEFA6 +:107C700004FF1F4DD3A9564C9F4C25B07C28D586B8 +:107C8000E9E3A9247EFF566A1DA68FA6DAB9DFB004 +:107C900013F3DB5216F727F6E1F7BED400E6F7A49C +:107CA000EEE1EFB8A431BD3DB59BC3BFA45542B8CA +:107CB00003E807AD6CA7F3B39FFFAEF0A3FDBE983A +:107CC000F3A7678EFA24782FED7ECED7EE6F199D3D +:107CD0005FCDCC38F7C9B47B9CEF389CD5E97CCF1D +:107CE000AA7CDD6447FD7377D738CAA7A7CF719404 +:107CF0004F196870E4CFEEBBC051BFDA5AE0C8CF6D +:107D00003DFC6147FDD9079639F2B3F67FCA51FFB2 +:107D1000FC3DAB1DE5E70D5EE3E4674DD73BF2E1CB +:107D2000F8E71CF5D5DB33C8878B63A4C4A0E79ABA +:107D3000E216B6EF7A8A19FF7D9DF35F4A475172CA +:107D40003ED68B01D3F0B65B684FF6B610B4CFD2F7 +:107D5000F2C9F05D89B1773B6839FA579523B7606E +:107D60003DDB39EE75A073F29CF3BC20EC452AF79D +:107D70009780611AEE57134DC17AF72BACDE693F3D +:107D80005E6EC8DEFB237105ED51153C8E45AC6B74 +:107D9000A89DBD9B91BD6F16A06512C6593BEEBD57 +:107DA000F90D677EDEB0335F9674E627B43AF32AA6 +:107DB000F70F1145C178D6F00B67E3B98FF0FBCD13 +:107DC000E25EDC590149BC073117EE7509F8358AC6 +:107DD000771DE44A23BBF72AF43A8DEE5703F83BAC +:107DE000DDA790865AE87C306F44753AAFF0918BEE +:107DF000F6437C9FB8CFE73768BF763F52E3E8F39E +:107E000074EB4B9303EF4E5F3E633D89DF0F81635D +:107E10003AFEF138710C41A6FA99B75249001F8D0C +:107E20003712F3419A562819E93ADBBE8D0718BF7D +:107E30007E2960605A467634A33EA724CBE0DED983 +:107E40005DDC3F51D6D1FEBB2FC0D1A962B223AEBB +:107E5000BA8DE3FFE9AA00EA679F5DCAF4B303B1F4 +:107E6000D503CDB06EAD8C5F84A30A81F8E7F061D5 +:107E70001FCA1DD26860DC4C149E28A3D9D752A417 +:107E8000E18A29703F43C3F48D948EE9BEAA0FEFB7 +:107E9000FD10AD747D65C880F392F72CA607DE5205 +:107EA000ACE2387FAD5C8B7135BE547B0CF6DBF1F8 +:107EB000540CDBDDB2773AC603F8CC731D7E4D4A15 +:107EC0001E323D3B50B80E607CBB6F9F1FE558587B +:107ED0005777FA6D72ACDB9B2CC3F7D33EA9E2391E +:107EE000A3AC714002BFCC0E3FD37B6E09B4D74127 +:107EF0005CFC2D35E4334BF3F0C1D901AECF134D0B +:107F0000564BF13C807FF1D681E62290C1579038E4 +:107F10003C1BE5EDB164CCCFD607C1BF5FA10D34EA +:107F2000839E5271856E7419509FBD8B24D6C7EB0A +:107F30002789C742508FADE36F03CC3E539618C0DC +:107F40007888AE27985FED99A39FD041AEBE19AD5A +:107F5000453E7DEC499F0976A36325EC3DA8634F20 +:107F6000CE7D16F8CA9F53FB4BECF7678F7DEBF97C +:107F7000395EBA20C71E7F7E8E82449476C8DB0DA0 +:107F8000A70FCD01BB0C65AF75705F7193AE128CFE +:107F90003B853DC0E685F6E8BB4AD55EE8BF7492F6 +:107FA000673BA4915035F623EE851092AC463BB664 +:107FB000C2DBEDF762BBAE9F06B0BFEBA70CEE03D2 +:107FC000BC5CBF48C77791BA8A8DAE10D885ABD953 +:107FD000B9EFFA8B2D5F15941F9D84E5C5DA21BC9E +:107FE000F7AB66DA6159C90EC994C3B07ED309C62E +:107FF0004D08FBC0DBD5A4AE9AF25B65E120DAD573 +:108000004E843D04E285FB15B60EFDF45C497716FF +:1080100089BC42361719701FA57DC74AD4D3D8FB37 +:10802000A0D52116E72BFC349B8FDE386D343D4202 +:10803000A43FE4FAC3D3290DD33D293D5E4BF77924 +:108040002615C3FC1D2903F3F7A6EA30DF9F8A63D8 +:108050002AEEA54CE4FB7907F7C3961B1E13E2BE7C +:10806000272A4483FB56E5477ED2067CAB9C4E39DB +:108070004275F6F9FCFD2E4AEF12B49FAF337E79BC +:108080006154417BD38531F6DE8FE01F825FCC7F68 +:108090008BEA8B0EBB39CDD7F179D08D3FF15A6782 +:1080A000F90EEF209E77AC8B199EDDEDC31CBE123E +:1080B000AA4ECA0D23FBA3FCC1517FC0F058DEF3CA +:1080C000C7AFE7DE077AAEED1EF05D1BE86C291D39 +:1080D000DDC5E31DEEDB3027B2DAB63EF7BBF4E2D6 +:1080E000FBAF9B1381FB6A775D470C3D62EB87B763 +:1080F000BF3FB5BFB4650ADFC4B03F3B985F5FD4F4 +:10810000ABB0D83D8FACFED8AEB4EEC4731EE5A3C1 +:10811000E7E1FD38FE5847C922733EF68BF9A3818B +:108120008645E0672BEB60FBB72C54DD8DACBF912F +:108130000CCA9CEF204173BE8EFA2DC5DB8FCC920A +:10814000161DF04EEB01586A63922CA0FD7CA8B975 +:1081500061AF82FCC4F9FD879207E12B8B0D480BC0 +:1081600068BA3690381E003B654953D7B769FDB7EA +:10817000867C068C77EFD3EF60BC7CF73BAA06FBCE +:10818000B0ECA997308EBE5B1A56C194A907FB16B6 +:1081900041BC09E58FD3C1DFAE074B7B152AA7EEA3 +:1081A0002A4A7E8DA00CEA5BF40C3D3C96FA86EFE1 +:1081B00083FA8120B15AE97C7FE81DFE3408E1167C +:1081C000D2DDA355617939C4EB49B4BFBE0A5A0E5A +:1081D0007B0CE35736F798902F6679BDDFEA813B39 +:1081E000FAC120E37324C4F84636AFD37C9EB80CA2 +:1081F0009166EB29AC1ED1582AE6B961DF3BCF96D8 +:10820000C33D8BA7A441B0BD953D453907ACC79E82 +:108210001D1897B027B55FEF16EB2EF04F59C03CF5 +:1082200088FFA1EDD4B494AE91F0A881EFFE94D56F +:108230009BC66658BFB4370EF1133785987C9C37C0 +:108240004CFBB1EB430A7FC7A8C07B4768D780755A +:10825000DCC6FC517B9AACE00C9A5FBFAAB66133D6 +:108260005DA73DE69DCDF06E49F7F7AAF1BECB2B99 +:1082700041364E567FE3F1386F8873298FC7B99620 +:108280005F38F6DECCE8757DF5606903FA29D9FD23 +:10829000A8F5C53C5FECCC0BBEB347B78A4B687EF4 +:1082A000E39E1D5520B8379281CBE11E0E794E26F4 +:1082B000B0FF5FDF3B2FF2019ADF40F37074DE30D6 +:1082C00034F3C3308F0DDB3C1E00F1220EE7C621D4 +:1082D0004A5721388F50807D309F8173154A0FDBBC +:1082E000B62D58ECBF9090EFD598BA87D2C0EED09B +:1082F000477B35C8ABFA743213F22B7A81FED65F16 +:10830000ECE1FB69C5B3662DBF8743F317F57FB971 +:1083100007E23D1BDB343CD7947A12E83F24073D4B +:108320002837C0E4319FE25D2EEE463FE3FFEAF1DD +:10833000A07E026E6FB89FD3A890FD0A4DEF52D970 +:108340003A5ABD0AB6A3DFFBBC25B02EF17D2087CB +:10835000481FE377B39FF2AD82F35E63BB7935DAF2 +:1083600007F5F9A8375791EC1FC67F9F4518FF9D69 +:10837000AB936685D63B19AC46BA6C6CBB743DB406 +:108380003B7BD58A9F9906BCC398B6D00FF92B26A4 +:10839000E702FDEC1D57F9F9507C33FD3CE45970C0 +:1083A0002EC8FD213F5B3FB938D9FF73F00F15D7B9 +:1083B000122C2F4EFE19EE0D9D98A819E0B7EA1E5B +:1083C000F658BE0894C77558C710F011F4F71F5C33 +:1083D00064027F5393D7C13EDD153CD8A3CD43BC87 +:1083E0009FAD51BC3FD4FF7C8F5649FBDB6C96EBB5 +:1083F000B6FCDCBF53AE8DFBF479DCA74AF1EDEBA4 +:1084000061DFD3F21F831FE97B259CCFF1F2C61AEF +:10841000C1F7A8DE4EF52E7933DFE7E060A572A044 +:10842000D156BF85EE73EF02566ED1F1802F52AD5B +:1084300092D0A3229D17B16498D77425BD5362F7DB +:1084400020E17ED56279E547CEA3DF7D5358684BA6 +:10845000A098F1E740B181765B8A278C0B39F18BCC +:10846000501AF011286E1FF04179652DDE930CA68D +:10847000593F90C2FA07F97D53495F8AE71A7F9DF9 +:10848000F31D239FEBDD2285B0FBE68AEBFB03D5D2 +:10849000E6DE4ADABE737829F291FB82DC6E5AC9B5 +:1084A000FC193726AC8BE0EACA39270617803A5404 +:1084B0007FEAC0D390CE207F59006C34AE15EF8395 +:1084C000F4912023DA067DE64264894D83FBD04C8B +:1084D000640C97011F9B2DA7BBE03C19993F28C353 +:1084E00038932EAB1DA7DF3F837129DB421E7CAF83 +:1084F000B52BF4B8BECAD67E7348F825193FF17281 +:108500003DA2930C20FFA16BCFDED1E3FCC5CB0FC6 +:108510005AD977BAF5B80EF7F89AC38DA8971EE521 +:10852000FB5FDE3BEFE3703E50814FD0FAF7FB99E3 +:108530005DFF44191984B85D2566128CA3E3F1AB85 +:108540001D7C5CC12F7A531A31A711F2C4C7A662F1 +:10855000FCEC131F2B5D00E7B7DBABC4BBDC27547F +:10856000F11E24DE9FC81C924ED373D8775B3D600A +:10857000C6220F29E68BE5B0BF0F78916FDD51EC75 +:1085800094DFED21E67FFE2E8797CA6FE487B7A4BC +:10859000D8FD40F55490A4A9BEB98CF3775FF20AD8 +:1085A000A4331F957DF04EA8462C0BF02AF0A05561 +:1085B0007848DA7EBE3D5584EDBF1B64E3083F7DFD +:1085C000A1B8852E0ECF48BF7C2BAE4B47765D18E9 +:1085D000FFEF089B93804F7F6F0183DB4D077F097F +:1085E000723BDD2909E110DF4F727A539524BEDF1B +:1085F000A39E52B05CCC57D4CB95B3791CD735FE33 +:108600004E33DBAFEA1E99E99731E584FDFE7490A5 +:10861000BF931274DDEB1E398FF801887324B58C7B +:10862000CF8EDC8716EA41629E3EC359EE8E83CA26 +:10863000C27D6A82631E8F8C986F2996833CC1FB32 +:108640009A0AF932D8C936F0389F0D32A52B0A7F25 +:10865000FF33830918FFB838FF3CC5DE83DB30F4F5 +:10866000208F37321CEFA36DDC731DC6996C7A2501 +:10867000647968FD8DC09729BEFAF78CB84F9F29A1 +:108680003772F58FC25A833FBDF31B73E15EF85B0F +:10869000FABA32D03F820AE373A44D43FD60879F4C +:1086A0009D87ACA3D3985F8CFE8FBD7BC8EA05E3A2 +:1086B000C64ED057BFC4CFA53AF44BE7DDED370F18 +:1086C00033BD8D984A0CE267047FEEEB01F97C978D +:1086D0004AB2FC1AE267EF0AB0FC92505F4F37D300 +:1086E00013907FEBC1EA5ED0D37AFC225FD16B5549 +:1086F00040FBF83E38CF5A4FFA0C8093B637619F53 +:108700005B9FAAC3F35E7735990CF87BA658657119 +:10871000F64FF876C2397F6D20190CDACE9DC78AE4 +:108720007F5905FB394F7F96A3BFCAF1F547C71F95 +:10873000F29C9F2B7FA678CE3E99B5437B03A93848 +:1087400050B58AE64B9FF4A1DFE07EAF934F88746B +:108750004D88E115EE75D8EF0FABC017803E493B51 +:10876000F2035FACC4C107047F504F9593B42D8EC4 +:10877000E228D70F72745985E5DFE5F4D09B32C645 +:1087800018A7A6C038E78E31CE0CC738C0C1B3EFEA +:10879000D18EE28F70DF3F73F353910A7EFA3CEF84 +:1087A000FFB0944C8568FE9AE1C1C5C02E9616B7FD +:1087B00056829FAC2AC8E2519B76EFD807EAC15C8B +:1087C0002DF15870228B9F827DF1A62FF1B23D3F93 +:1087D000DE7DB53B24E637827FB27DC5ED181DE115 +:1087E000F88721DF716B8D6E8DE22F71F3C78B4699 +:1087F000F015C627DFBBF164C73A8E1C4FC5F29C4B +:108800003C4C12FB7D10317E479989F136B67D6E66 +:10881000C23E87B7E3B9DE66015FB843945B57F6A3 +:10882000829EF63D35570E7A5DA92FD71EDEDDBA42 +:108830002320EAB7F7B654E4A91F74D5AF11F53F6A +:108840008FFDBBE1117C07F2A0372A7FF765F54A5F +:10885000806F87C7D55F89E8AF17C717E78559FDD0 +:108860003B9EB56A813E079A41FE9FB892183B092C +:10887000E803F140DC262767713A554FF91D78CEA1 +:10888000E13784DF49CCB99E1D472F1AF57D813F22 +:10889000A69CEF0B5C95ECC0FBCDB3F8FAADA30042 +:1088A00043FFEBEE971DFBF7DFF0FEABC03BBD8057 +:1088B0001E54CFF6F7BF1CBC6505E0ADF8A7C2DBC0 +:1088C00001FB9796DF14607C7791DEBE17EEC32C18 +:1088D00032A438FC86CC225AD74FF7EC4510AB4176 +:1088E000D3450AB142A8BFA4D9BD129A077BC9C714 +:1088F000FFFED9573E84EFDF981EFBBBAB7288C5E5 +:108900004B6FA95D36AA7FC5FDFB46EEF2207F8F37 +:1089100078C7F91B09DC535243566C19EDEFD3614C +:1089200026DFF756AF8D815DFDEEF3B7C7E03CD390 +:108930005B7D690CF86ACFC45E623F776915CC6EC7 +:10894000EFEE3F13E67117A72E62E7250EFF96287C +:108950003B7FB9EB8B78B42DDA009ED3DEAFF9DD27 +:10896000C8E1FA47E737B188E1698BC6E3B98DF70B +:108970000ADECB11DEBBCFBF1CDF63E89D38B50636 +:10898000F4B3ED1C6E517FEFC44B11EE9EB2B531C6 +:108990008C332EBBD4F1BEBFB782E47DE7EB8302FC +:1089A0006EFD9F03F72363C2BD96E41B5F2D00FF9E +:1089B0005502FE988574F27EC3FFC3F718FE3FF39D +:1089C000FE168799BD768BE1A47750173E585278F2 +:1089D000DF8CF5FB59A4D6F09CC9EF38BC966271C8 +:1089E0005663EDB33738FEFEC4F1776D5A46BFCA01 +:1089F000BA5A16CF3BD678EBBC56E96871FD57A73B +:108A000065C77CC682675598F9A5360C3ADBADDFA1 +:108A10001D74FD6E9885F8ED336ED7C0CE78B2D652 +:108A200083B16D02BF23E8E03DC6EB58745910AF27 +:108A3000068B3B7BAFF13A163C8BC306E26B2CBC3A +:108A4000BAE9F4FDC6E3FF6FF47963D83823FA146A +:108A5000EBF16F7ACC5F7FFBBFF1F89EE0F19133D1 +:108A6000C4A3E097BBF9BDE7695FE9387831E59BBE +:108A7000875A67CDC2F79A14F3BCE5E711F2F322E7 +:108A800016D7388DDB71DDE3FD9CCBE783AD0B376B +:108A900060FC6522887CF7054FFCE78D60B75B269C +:108AA000A39DD3DDEE20C7EF378A8AB9FDD70CCF5F +:108AB000A6ED97FD42C678A842F323ADB2239E16D9 +:108AC0003C298E385317BE0F12E3D646B0A32DC9EA +:108AD0000F8758E71712CBDFDD3A27E4F7659DC70C +:108AE00082E7DEA29A33E2DFE29C1125D9DF8B39DF +:108AF00087FD7EA6E1053FCBB2233E8CBF7B113EB6 +:108B0000CDC3775A7E5144FB5DD63A93FDAE9BF8B8 +:108B1000DD4685603CD19ADBA7A3BD95AC5C8EF5A4 +:108B20008F1639F5A5EC3A09FAE2BFD33669A5E507 +:108B30005D659B4F6D84FB5F48B212E01952CD73A7 +:108B4000BF49FB3FF8315F1CCE7DBEE54BFAC394B5 +:108B50007E5EB8A458B2BFF7728AD3DB9C954C4FA7 +:108B60001F3A9CF07A6CFAFAC408F75B2C5F72D952 +:108B7000701EFCBDC5DB5F9294781CAF59697F877E +:108B8000BC2AE22C77B7F7468AB0FC8502EFB91011 +:108B9000DEBE6DC5E8EDC9CA09DC196E4EB5FF1E13 +:108BA0009A1B7F3B8A92FE089DCF2FA5E4576E004B +:108BB0003A6ED6908E8962CC00B8051EE839B30FA4 +:108BC0007E1A54ACD3C7CBEBD93A7178C478E0E2C3 +:108BD00005BF60A3C9FCC5253C4E69EE367F7A33DC +:108BE000FA2BF8EFAA2A14AE308E5F169958787CCB +:108BF000D16F54211995F61BF09953C13EE99E8718 +:108C0000A877E89D851F01F8860E7AF49BAB47CEC6 +:108C1000DFCD97A6DEE3A49B799C6EA2D938CA6407 +:108C2000659BADFDAC881FE11F2F3DBD067B98A65F +:108C300053EF4C7A0D3AEEA5FC7713A0FF65B6FE14 +:108C40005FE2F45E1F211C0E2B700ED8395F64FCAE +:108C500065F7CE6B2AF3EDDB83FC7EC3CB45750E47 +:108C6000FFC9F225337BE0A73D29BD9401FB1A3AE9 +:108C70007801B6BF848FBF5B4D56CE0CC17C8C0D86 +:108C800060773ED379087C17E4A31CCFB07FE05C0B +:108C900053CFE9F592157B3D1B42F03B306CDFBEB4 +:108CA000C4F98268771BDF5F14AE2E7F9C902B2265 +:108CB000DFBAA5AF0EF739DA25BB238FDF02FE6DD1 +:108CC000D2CDC69FBAE22F1D60F71E52595CC92F44 +:108CD000B684F1BE05A557871D24BAE2ED14C40B76 +:108CE000AC56E353D9A3E08C3FFD8C24D701FD0B98 +:108CF0003E35822F752F17BF673975599E7819F148 +:108D00000EA4A0A7DDE9659135B6F549475407FFE4 +:108D10003AC4F9FC2F5DE7C74F1C66E73B3A0FF4F6 +:108D200087FEFAC2CA07611ED1756FA7201E37CD14 +:108D3000E9F264BAE6497C6084CF5FCC73F5CE0B70 +:108D4000A6C2F7154B64D73D0BB6DF2E690B3ABFB1 +:108D5000F3F675B2B91EEDE81F617E21D15FB495BF +:108D6000E26B06CC2B7173B83A876781CFD53E632F +:108D70006DF6779328BC6B76861EC47728BA866F0B +:108D8000003A7A2B948894D8F8D77D11271F17F2D0 +:108D900019EA81DC5AA618DE7CF26B79AB9C176E5F +:108DA000D5177F95E4F1AB64F9814B5EEA9E012F04 +:108DB000D46F23ED98BE209FC0F4085F0FD1FE084A +:108DC000C984E7825ED12AA33FF048FB728C7F5BA7 +:108DD000E91D0C37D0F4093E8FDF74C8787E16F297 +:108DE000DD3DDE65D7CAD62728BDADE4727CE5B58A +:108DF000CCAF7B59BB733EBBD5F68317C3785F649A +:108E0000E31DA2E4D28441AF4CAFF85DBA64E656EC +:108E1000F80EB807FEB82C287ED7077FEF33C9FEBF +:108E2000497ED5BAE6C71017F13F222C5EF450EB0D +:108E30009AC5E052BCEA1EF2C36103F4A7D1E57DF6 +:108E4000F226D921D7A7DEE9FCFDBE396D12BB574A +:108E5000A2642A2FB7F1AB692541C4F7A52BA4BCA6 +:108E600076ADA9E064A6E587FE435E974FBF9B5FA2 +:108E7000C2E5E13DF9DBCF2F09B3F2FBF3CBBB9E9B +:108E8000E22097278328E72F69CBDFCF5775261776 +:108E90008F6CF8E365E09F7DC1E37C8FE75E9DAD5D +:108EA000EB4D3ADB6787767EAEB70CD665A3A4C3DD +:108EB000FDD7D5130CE41B9FBE7626C6A5DCA033D8 +:108EC000B83F104E9C00FEB1F6F0F5CF42FDA195E3 +:108ED000242E19397EE086E35484C52308F942E53F +:108EE000DA2B20D7A2F03B6EC0AF9474FC936CCA0F +:108EF00056A404D6DDBA06DFCBDE19D0D9BA53BDED +:108F000097564EBEE8D463150E8FC8FF274C0C89C8 +:108F100077008000000000001F8B080000000000A8 +:108F2000000BE57D0B7854D5B5F03E73CE3C924CEA +:108F300092996466F20E338447800093002128C220 +:108F40002421124AAA934020BC74781883841015F7 +:108F50007BE9AD2D270430E02B5ACBA54AEB244505 +:108F60008B8F6AA0698B4AE980A0D4D6DBC8A36244 +:108F7000451D5A44408568F54AEF47F5DF6BEDBD66 +:108F800033734E1202D67BFFEFFB7FFAF5DBEE392F +:108F9000FBB1F67AAFB51F09DC2D939085E0BFAF2A +:108FA000E8FF6FDD1AA7A993216E032924E42EFEA2 +:108FB000DB7BC4BB923808512BE26C4F7868FD6EA6 +:108FC000393495D6DFAA886B9369FD2BF8379590D5 +:108FD000336B090999093952316E25194FC8E715C4 +:108FE0007106598A7CD7971F41FBE1849C5B6BC15A +:108FF0007EF54159358F21A4AE82957A38F4FDEB88 +:109000008CAACB66ED7FFCE541BACEDCC8BA8E54A3 +:10901000CC4A0C5801FE71F14BFAE837C64617E30B +:1090200024646587B6DF8A1D5AFCBC77371BA7BF4F +:1090300079DFE3EB3ACDD775D440EA3AF268E99F9D +:1090400095B8242FD26EA24DC2F944BD669976DE42 +:10905000390BB5F31EF952AEEBB0C238CDB18BADC2 +:10906000F0AB77983F9E901D303ED4D78F2364524B +:10907000FF7011D244C884083C87CB193CF49F424E +:109080005C84CCA2E0103721E500D704F83E2E3EE8 +:1090900090D77B3D470CDDAF4F047EF8A9E27D827F +:1090A000B61FBA75F1FE3437C2F3FA78FA7BE04D99 +:1090B000B96033ADCDD6AD4F9481ABE43FB23E99AC +:1090C00090B4DEE344F8EDF2F4F8BFC567FDD321B8 +:1090D00088F81D88CF1C326904BA2E503A8C932828 +:1090E0001D16D4E74BCB69F971A205F1FA71A21BE9 +:1090F000CB0584F83A908EEEC2CAD174FEF658229F +:1091000051F95337C7078752963E5A356A58343C4F +:109110000F73BA546FDBB981A295F283FF0127D098 +:10912000F33B327982D6DF39BE6B03D4DFEF32D81E +:10913000243AC59C9AE2F809B45E78542E9069FDF1 +:10914000419B1DE1AF9EBDD8183DAE9E7FAB75FC27 +:10915000FB0F0E6F9985A8D602E0BAEEF1FED19111 +:1091600075DEBA6DF1C6343A4F75FD4393609E5B70 +:10917000B7EE338EA0BF37D92C38DF3A9B1BCB8597 +:109180000A5FAF85AE97F2FFDBC0B7B0DEEF4AC132 +:1091900027E0BF95B0117E1770DDD4F84199CF1A42 +:1091A000E17BF17B88F3F9333603C2756D7CE049CE +:1091B0009B13FF534D4C226489DC58ECA44D26D9F7 +:1091C0008806EE6B381C26B3F749921359470F1ED9 +:1091D0001B181EDF3E5EB5C139BE7F3CEEE6F3EBE9 +:1091E000F963203C1E6D8FF5A13E9EC2E8DB69222B +:1091F0002AACFFD8A6ACE03A4F04CE491C4EC7ECCF +:109200002FD6DAC644F8E0EDDB3F5804724DDBADF3 +:10921000B72631F8015F47EC066C4FDC541E5C1139 +:1092200079F85B3CA9E9E8839FFFC2E54A2F3F2715 +:10923000964BADF2182C83C909BDDBF72717F32530 +:10924000E2877976DC61AE6BEF63BE643BC3572F78 +:10925000FD004BA0F006F87FDF3A7BF1C678BAF448 +:1092600075710953609D2774F39E20A1F889C02F62 +:10927000B3652FD0E94423D3830B8DC1F8023AEFB5 +:10928000794E97BFAC96CB8379113DA39F77519DC3 +:10929000ACCEA5EB5CC8F5C9C23AF924948B1AB5DB +:1092A000F43B46FCDF9E00F355B0F98E9A5ABF5D41 +:1092B00048E977E40739052A7C9FFD43B447263BFC +:1092C00093CB235C9F1F9BADB517FFD4E9D35E7A88 +:1092D000F478AC964FFAB13B629E2BB53B3B4CFE0B +:1092E0002CD07FC7DA162EBA0BF8AE2DD63BD4DDC4 +:1092F0009B3EEFDB65063FF06794FEE934793FEE75 +:1093000074007FA679D7B97BF3E5910A66CF7654CE +:10931000C5D505A1E4FDFF5A92DB0EFEC38E601594 +:10932000C27F89C32DF405E1766B01AABE089D8436 +:109330009D1A6C677AF2D6AD278D6EDAFF26D01BA8 +:1093400056CE240E183FB56D3385EF6D03D71F4FF2 +:10935000C607C1BF11F38975E5D9B572AAD7F7035E +:10936000D9AFB78286F260D4BCB5DB3CED30AFA894 +:109370002F5CCDEA02FE1D4103FEFEF99A445CFF1C +:10938000D1AAC7905FDE7D34A740265761DF828671 +:10939000FF11FB06F8B99C7D5B6EF75C917D3B4D40 +:1093A0005D0DA4C7A5A50F4C82F5FD7B32FA0DA774 +:1093B000B7327E9DCFE9FDAE293C3A1ABED37CBDC3 +:1093C00027F87A4FF7E0379000F64FB4ABE4FAECA9 +:1093D0005D2E07EFAED1CAC1AD3ABADEBA550BEF7A +:1093E000A2462DBCABED3606CF9AE658D02B4705EA +:1093F000DFD4CA68778EFA4B51BFEF00FD1E85E7B8 +:10940000D557296FF325F536A03F698B457FDB01E2 +:109410006C01F63297D1F1730BE3F72949863EEDE3 +:10942000478F5ECED5D21DFC88683C1EE77228EAC5 +:109430000BEAB47011AFB6FF1103936375731CFA96 +:109440007D361383D3D61E6B53193F17821DEC99BB +:109450005FD77FBE12D4CCFF13BB478317FDFC033D +:10946000F95157EB47FEFF12C7BC6AFFDF8D63BAA5 +:10947000747234107F1FE67EA03E9EE9B11BDCAF04 +:10948000117ECC921B46FD17A1ACFE199FA7766BEF +:1094900025FA9D470CFE0DF140CFC3061BF063E19A +:1094A00071167FD472FF4AC03349E76709FB3390D6 +:1094B000FDD4CBCFB1EA7B0A60DE63D573357EEF96 +:1094C0009C8B1924941CA957D7483EF01B7AE4358D +:1094D000464B77ABDD84F35BED6E0DFF575FCCC67B +:1094E00071847DABDD7AFBC6348A8FEAC687D2A24F +:1094F000D7739CDBB5B7EC6EAD3FAC307FD8D91CD1 +:10950000BECB4FFB7F66F5272645D1C992A4C5C3C4 +:10951000314E5F6807FC57ADF88D7DF1E19CD9B203 +:109520004E3F313F4DAF8F44FBD42483665D621EB6 +:109530003D3EAF74BE6B6C36E16F9F26A058F3B40E +:10954000FE697FFCDB33AFAEBD7E5E5792560FEAFD +:10955000E77F3791E077C1AFFA796E4862FABD7064 +:109560002BA3FB911BAE453E3C5AF5F264A0DB7B7E +:1095700077FFFDD85CD033CB0E4E06F06F488AC71C +:10958000F6EFD125A502BF0724F40BE76E5D7C3012 +:109590000DE5F2EF185F1F399A837C5CC1E976C450 +:1095A000E4D5D841BD7CBEC6E17C2F91E18B908E85 +:1095B0002CC80F5C29BEFED20FBEAED66EBC96C8BC +:1095C000EC24B9346E34D883FFEC81279405F5FE82 +:1095D000E27951528CB0F8B4D4DA222582FFE8BF88 +:1095E0000BF4427775BCAD9DA2A2DAEC9B097AFC24 +:1095F000D86183A149C269D10FAC228C0F3DDFF243 +:10960000DC3B927EAFF2CB3E10BD4A683389D2B5C7 +:10961000C4AAC278E38F543C130F71598DD90D7AC7 +:10962000BF7AAAFF6319E2CEB971EE75B46D61D746 +:10963000E02607FD3EAB5C82C88F1CA0763D4CD770 +:10964000FF3454AE210C408A9BA3A2AED66F9A463B +:10965000BF8F74761AACB4C75B0FD76FB2D07137B7 +:1096600034F9532154FED1C3333659B2289FB97C03 +:109670005D53BD841C7C78E60CCB75745D8F8AFECF +:10968000159B7C930979C910F048F4FBF98797CEB4 +:1096900050287E14695ABE81F6EF4EDA85FDE7CC7C +:1096A0005979CBAFE877FB0F5B662874FCC285A2C3 +:1096B000FFFD334A150AEF64517F2806EA8E38BF52 +:1096C000DB904FC83D0F97CE5068FFCE24DFED846E +:1096D000D647FDB07413CC5F14A06DD361115BB19C +:1096E000BF186FC3C3A59B545A4F5B534AFE4649EC +:1096F00055145625D0777F2E6E2C55E8FC37273F22 +:10970000BA296F042113CB8BE308ADD726EF9C61F8 +:10971000CE073AF9F2DDB4AC4BEE44780B17AA232E +:10972000E1BB49FDCDA672BA8E86BCA00AF4B9533E +:10973000627ACFB8A6E3D020AA2AE28C8D6A06D23C +:10974000B195F149A67718F289A8E7B23C574F3D89 +:1097500095D53BD7919BFD7DC8638683E99FCED885 +:10976000BEBFFF8ECB135D2FCA6BE271E27B969674 +:10977000076349A785DA9B1BCD647C118D8B772409 +:1097800059191F8B792D0C2ED18FA83726813EAB0E +:10979000603C88DFAB285CBFE5FA20C7CBED000951 +:1097A00029B340E46503C2E394A59B2BE9EFAE58CF +:1097B00012D8494B6732C17A0521BE9DD6C8B87F01 +:1097C000E4C396E5F8B703FF97A5A4E5377B22E34A +:1097D0005078D703BC229F44E156006EA75C957F6A +:1097E0007B5E14DC790CEECE24860F3ACD33E0F7A5 +:1097F00074768D1CBC99827AA74EFF1576151809D0 +:109800006D17E3E072EC66FD9DA504ED73F7FD3185 +:10981000419043620978FD5179962E8ED7FA8B23B9 +:1098200048705CE4F77A256402FD517F310F7F7741 +:1098300036F74D17919FACBF6827EAB8E8DFD9FA31 +:1098400022E338F07B7FF0D0B002F5D76A3B4720A7 +:109850001F770D61F1DFEA785F4AD265FC9EFA8BD3 +:10986000523FF02BF8BB67105D2BE091FE4EF222C9 +:10987000F091A272B46FAB6D4C0FADDE599C42AC4F +:10988000517450381D4C6CFD806743947DFE8AF303 +:10989000CD2CC15FD4AE839E5B9A9E87F161E77F3A +:1098A000978EAAC4F1D6E1789D0A8B9F0A15A60F60 +:1098B0000BBB926CAA14E10BC10F829E9D498DC512 +:1098C00088AF4AC9D6EEE9BD6E5332970B3FE55BD0 +:1098D000DA3E6561405E1C059FE07BBD9C504F9E5B +:1098E000F109E5FF45209710D701FC5E2A0FA3A3DD +:1098F000E9C8E0FEB72466A7281F30FAA5598300FF +:109900008FC04F6F7EC818801FB2F17B61D77E1366 +:10991000ACB39EC399723C94302A8FAD6305AC03FF +:109920009251B4DFF792185F7776948EBB96CEDFB4 +:10993000F9884C807D0A7BF4E757BF2FA1FA2F45A9 +:10994000D441DFBB11DF5C5F52F7C01269FFE90F42 +:10995000BF9AB17E48043F0E30F24911783770B992 +:10996000B887AF9BE24FB52469E496141544F48B95 +:109970009053319E18E7C664C61F15BCECD13FDC7E +:10998000EE517D837940725F0CFACFDFBCDE910629 +:10999000D03B955CEFB0DF0F523717DAB95CDE6170 +:1099A00012C5C9E143A543C18FBF2355769FA27657 +:1099B00065B614D800889F75DC5B4B0647F95FC419 +:1099C000E2B6527FE226DAF82B3AEFECAE5855A613 +:1099D000A49BE58F715BA3FCB24F5B25E4B33B68AE +:1099E00008BAA6A0377FDC916AC2790E97E72406F1 +:1099F000A2E1E2F8BF11F2B7726FF914750A77AD00 +:109A00002127EABB95D99DAE04DFF2645A5F662038 +:109A100001E4F3694E8D3F737F9236DE17FE4C658D +:109A2000A2AF11FAE9DBF7E7FF38210C45F965F938 +:109A3000A09496F820E02BA58370F90C19EA818E8A +:109A4000325125BA7EC591C5E2AA6AFA716C64BC2E +:109A500023923F538238C969F6429E82D205D75F6E +:109A600026DFBECFE8003A4BDE665865B29DDBBB11 +:109A7000EEF1B04E671CE3C38331C41243C77F9538 +:109A8000964877AE97FE943DA21DEC87D0673D7A4D +:109A9000F0128BABC5F7835265A68DD60F3A87E7D8 +:109AA000374B381E8989E27F3A2E0178FEF4E59D16 +:109AB000A7A6527A1807B3F11C74FEAA2839985841 +:109AC000CED6FD53CEFF3F4D8E6379F93836DE4159 +:109AD0000F65139867285D0F9587576203798D0886 +:109AE000D7FD8C9E94EF415FBA38DD5C2656FFA708 +:109AF00083C9671E2F7FC94B57026BA7A74FBC9323 +:109B0000CDFF7389C9F3BD64971FF848F835B19646 +:109B10004602FC4C889F003F6D2EA6EBE9639CA794 +:109B20009359FE86DA315C6F6FBBC2F49F62399243 +:109B30000D7CFC4051BB0DF878BD91E5E31FB005ED +:109B40006D497DF433C5D1F8312F628F841FFF79C1 +:109B5000476522E8C7C35CCF9B789C29E059CFF3C7 +:109B60001E0917E3300E7D3D99F9514AEE29A4B73D +:109B70005244D50CED6A247ED516456FA3CDA0F1D5 +:109B8000FF132E2660FFFA8BE34830F9727ABB1080 +:109B9000BF93D4724DBCF1F989B908A77E5D7AFCF8 +:109BA0008538BCA2EECB55A69128B88A896D3DCCEC +:109BB000534CB4F1497FFEC705CE57F517658DBDEF +:109BC00089C06BD2FC1EA271971A3DFF19367F64C3 +:109BD000DE38A246CDBB2BD9D79D8CF235D9767A0B +:109BE000142D28DF7F25A31D61F68A966D5666D752 +:109BF000413F8BB805E4D946E396EF27175F84FE13 +:109C00003D768EF713FA24F178C4AF9368DFEF73D3 +:109C10003DF47D6E777AFC3F85F9A9026E2FE70748 +:109C2000A177CA2DA5BE535174FB7EB21BBF1F92F4 +:109C300018DFD11E59D09FF2AD1A6DBFF5F84C72E6 +:109C4000087CC668F820824F2BFEFE4DF983859371 +:109C500003F268C89B964B64282D264E63FA42F4A3 +:109C60001BE660FEFC30AA58A2FDFFAA85DA762327 +:109C700079BB91BCDD40F63ADA5E4839113DD5C07A +:109C8000E9E73977D8E4A6ED6E7124E0B8D39CBE3D +:109C90007C07C8556CC2189208657690D04F6DFF4E +:109CA0002C753751F8BB5F377ADB61D8DD8CAEC5D8 +:109CB000F356372BF477638764836D2801A7758D7E +:109CC000E45B46F1771DD757F50EB69E7A47C83448 +:109CD00084CE9F5ECFE0C8ECD8272951F29359C7B4 +:109CE000DA5DEF30727D1F6C2A1B0FBFFB94CD94A1 +:109CF000D4DFE2BF973B18DFA4774898E74E6FA404 +:109D000008A0744EF7B271ADDEA0B4342FB2CE16F7 +:109D100043651EE8F916579C17F4FC2667C0EF0050 +:109D2000B84E8442E0964F3CD1A5401CF994D357DD +:109D300009EB17EB73CBB674D8478D3BC1E06A4D86 +:109D4000D2F2036858C69FEDCC2ECAE410F857280B +:109D5000EB743ED7BA5CB433A2BD2B89EB791709FB +:109D6000EC42BF87B410A417C175B8D60DE3FB2F22 +:109D70008C9E113F674401F83939F78514C8ABBE92 +:109D8000B88DED2BE8F97215E76BBA8EDB607D625A +:109D90001D03D973D1CED84F5C2AF83D8EF34FF115 +:109DA0003CC77C585FFDFA5FC79925A0439B148789 +:109DB00076E1016C27F04EE1F81EC0A1E727256986 +:109DC000879441D775E772629349FF70D6AF917D52 +:109DD000CBA2F5DD7A13D2A1CDA4DD2F17FEFB2394 +:109DE0000E66B74E38FDF7C2BC0DBB1F32015D9742 +:109DF0006F3F690AF4A1A77BFA5F219EA43A161768 +:109E0000D4D75882B0EEE2790AD26DC57A53D04CDD +:109E1000E953FFECCE9001FCDCBB8917E4BCBE63C8 +:109E2000E72BE9144F19F5BE09902F73818F961710 +:109E3000B11BE9F52109EC717AC7E27AE4E3D43881 +:109E40002FF031F8A7E0377C546C5525EA2F7D645C +:109E50005473DDF4FB479E582FEC67BC12C3E45EDD +:109E6000E0F9D59DD30F4914AFF1BBCC21289F72E7 +:109E7000069E83F56F6E7217039D3697111BF00FC8 +:109E8000F547EE807A59B395801C5CE9BA85DE10FF +:109E9000BF4FBC9BC943D891C0F99F14805F76C85F +:109EA00011CFF48D81E9A1578C0C4E85C399E7F051 +:109EB000FD16F91284312DB27EFDBC51FCF3F2D5B2 +:109EC000F0F1C4F20E13ECA7AEE07AA478DE76E9E6 +:109ED0006F51743F0C0110E88D67DB2437F2F1F607 +:109EE000A63207B6276637FCCEF2222BE8F75BA234 +:109EF000F48758471F7AE42DD017D6135D07981EB4 +:109F00000921BF0978051D05BDDE77307B753D351C +:109F1000D7F8BB89D2958EF7CAE0581C4FC8B55EFA +:109F20000EDFE77C9D5EB35D82B81CFC4F7F147C26 +:109F3000A2DD3467C959C0D7C4F22EC4C3CA1A05FA +:109F4000E926E0D93FF7A66540FF958EB47CE0D7BF +:109F50002FF8B88FFCE60DE4C795AD12DB876E7D58 +:109F6000C3540DF6437D4A06FF67267315C8965FF6 +:109F7000BD81F66266278BC35776EE54965A237CD2 +:109F8000EA39B7FF26E0E3951D66122301FDD87A72 +:109F9000F5FC49F508CA0D514D180F429C807A9383 +:109FA000043C60BF859ECDE3F011AB7FBC01F4A9FA +:109FB0006B743EE8C75827FB5D8C5F16EBDD6F01C5 +:109FC0003D59C0E20561D7E2E13BD3CB21D4B3D404 +:109FD000FB05BB28C6EF6D1F4615001D263899DD11 +:109FE000A2F4753AFBB013627CCF4FAB883B3E8A3C +:109FF0006E80EF287E1BE234E1FC439C0AF3974B12 +:10A00000189E14135BBFB2CE1284BCC8ABF6728626 +:10A010009F240BE2E7A061493DD0E9603AE3B31623 +:10A02000C3BADC46669F86023CFBE72610A68798EB +:10A03000DE79E497CC0ED6AB568CC3EA03B391CE4F +:10A04000C411E385FD44123860AA8E8FF0819EAE64 +:10A05000EE5DFB4CB08E991D8CFF23F80A6AF895D3 +:10A06000EA33A4779E43E4CD031EC0A7889B932DBB +:10A07000DD2123E92D9FC91037531BB788C7CD8534 +:10A0800093591C0DFFFA8A97C5BCA2BF889757AC9D +:10A09000F943F6296A0F6E4BFD3D96420E445C264D +:10A0A000DADFC0E93791C743D59C4F568CEF403E6D +:10A0B0005F71AA11E5C35ACEF484F58456BF89B8FE +:10A0C0008C90FB781CD7713DE4E1CB1E976CCD7D65 +:10A0D000AC4F94B7C2FE13E8F74BD47BA6F14DBD4D +:10A0E0006E7FED16CEB71FECA008463BD088FEF27F +:10A0F00047DB24DC8FBDD2F148E8A804F45BC1E360 +:10A10000928F9E2D9DF43EECD7EC48C4F32F1F3E5A +:10A110003BEBBBEF53783FDA3ED50BF6D5D1EC479E +:10A120007EE876C678C11FA66AB01CE2F2A68E97BA +:10A130001320CF74F699B105A0FFEE76B2B8EADC31 +:10A140002FE535808F753F7F7E0A7C5F119492C129 +:10A15000BFFB68C7E35F823DABDBBE0A762E49F3E7 +:10A1600033BF33C1FE8321D8C67EDF91887EE0D91C +:10A170009F3D3405F0DCDCD18CDFCFFDAC0DEBFB7B +:10A180007FFEFCDEFF06BFC19FE08576E77EF9D04B +:10A190000FFE1BF876768217D6511F50D87EA1E0AD +:10A1A00057BDFED9B90FE54EF0C74CF0FF80CF6B1D +:10A1B000981E11FC79B898EDA75495B07D9AC333D9 +:10A1C000626AD0EFE572D730DFDE067267A0F84B27 +:10A1D000A5FD6757D8DB601FFD494E9FFA3CC60FAF +:10A1E0002D945B20BF1097173265D0767317EE9CC5 +:10A1F00002F86C89254531C8A790DC8CECEFCC6A5D +:10A200007DF51F12A5E368AACE4E53FEA6A36DFFEF +:10A210008AF2E99F8D2C8FD0C2FDF5B90B4FE2BEBB +:10A22000056500DB699137922F67DF141C4FB4EB93 +:10A23000F1DB381E5A78DE848E8FF6A67035CF8714 +:10A240004A4B9A611FFAE05DA1C9C0B72F9EB9239E +:10A25000B63E2F9ABF59FFF44E26F7E9755DD7C376 +:10A260003ABF95BB781C4CB392EFB33820BF06F6CB +:10A2700046B56AF4DB5E2E672E1B715C03791B8585 +:10A2800038E0DC5E1921478D889F27F0BBDBCCFCD2 +:10A2900026F7EFE63E01FB625B8C81B409606F5AE2 +:10A2A000B89DDACEE0A5FD6DB0AF4EC7B35D53806B +:10A2B000E3741993B0BFCAFA4FDFCEF6D5821CFE05 +:10A2C000EE6CB05330DE782BD815B506ED8ADBE4A2 +:10A2D000057E38074DD2105F63168D8EAC5B9F678D +:10A2E000013D06FBD3279CC56F3A9D9152E465F46E +:10A2F000F44877B1EF735DBE37411F931DC9039CCE +:10A300006F66F4DA3FF7BC294CE77DE4A593A88794 +:10A310001A80DF61FEC0298DBD15FCB4E58593C8A8 +:10A32000EF55BB197D1A767B8C10D77CB8D647FECB +:10A33000461DCC06CEDF5BA4702D9E1F7921C6067C +:10A3400079B4F39CFF57949F3C0D7A6BF0EE343751 +:10A35000C4DDE75F607270D060407C1E6C1FD50664 +:10A36000F685FAB5C8CA0D8DEE7633E297F9FBC5CE +:10A37000F3963D04F1D7CA3AE205FDD0D05999E9E8 +:10A3800046BB6246FC36EC7E03F945F8B7D41E2E78 +:10A390008371EDD4EEC4403C36CDDF89F470C463E4 +:10A3A0007BFBB4C04365C85FF985C05FFBE7EEDDAA +:10A3B000688179A7111B8CBF25CBF74206AE4322DB +:10A3C000706E628BB1B544A1FDB794B96D1483145E +:10A3D0005FDB53C1CE935C13B76BCBD06F6E485D20 +:10A3E000E08538AB97BE78A109FDAB06772CC23368 +:10A3F00073B77407F33BAC84C12F215FCE0C5E1B97 +:10A4000004F9FF98E34DE0EFBCB1EB26C0CBF95F58 +:10A410005106A4DF674E637C6A9FD6817AE6D51722 +:10A42000A85F3326C28FF1BFA6FE0DAD272936C91E +:10A430008B7236CB1C4DCF5623B353766E7772CAD0 +:10A44000195D87B8981C0D71197869D2EEEFD9D4CF +:10A450003160673FE674C7E140FFF371572E0BA1EF +:10A460001CD53FCBFC3287D9977F6714DF3A4A99D6 +:10A470009D147976C8BB63BE1DE21707C4CFEE7684 +:10A48000D86FA6F443FA7ECB31BC00F0359DC3955E +:10A490009E2B61BC47FD35C49B6BDE76A5368FE5F0 +:10A4A000E9FB8A1767F2753893FDE321BFEB4C890E +:10A4B000473FC629171B62C00EE54BDE7637EE0715 +:10A4C000627CDBED4CF3B66BE49AF97B675CF18C54 +:10A4D000AEC13F29B05F33D7E5EED39FEB1D2FC749 +:10A4E0007821DEA96855C7407C21F607C4BA834DA0 +:10A4F000B135D17AACD2C5FC84E00852037A81FA36 +:10A50000ED56CC27DBE83C1097B75FFB3316973747 +:10A5100063BB6B5CCCFF29A3EB03BFCC99E35FCD9E +:10A52000EC6B3CAEC3994396403F6773AAD4EC8969 +:10A53000C6B30DCF739DE07656F8E30D545ED08F11 +:10A540007B89F16303F8719EFEF54384BF997E9881 +:10A55000B99BD1BD6137B37F224E07BD07E70E41DE +:10A560004F78C646E4BAC1141E06FC29F8BC614AFD +:10A570007818E0A73FFD50161744B92B1B350CF394 +:10A5800010629CF34637EEDB9DA7F125FAB15C1E05 +:10A59000E25F647220E8A28F73002E8817857EDE4A +:10A5A000E4F437B9283E1A0CA18D707E40E8D386BA +:10A5B000173769EE07E8F5A945617ACB128C0B369F +:10A5C00047F10FEC81C5176089E7B4E2D6307CC44F +:10A5D000E5B955C4776ED775A0AFC82509F3C7F79D +:10A5E000E61DFD05F0D90F5D2CBF76A7C4F6E1CCC2 +:10A5F000BB2B218D0A791B16AFB4C7E1395C91BF23 +:10A60000D1C3B591F391C0BF8833205F0FED9FE7B1 +:10A6100072D1CEDBED76491A3B2CF8DA6D089C84BA +:10A62000BC7D7FF647F4FBA6F249621E61072378E2 +:10A630006ED2EC37C07A2AF3FA6FD7BA8FE919C114 +:10A6400077E2FB21CEEF3FA0BC0BE573225F1B1826 +:10A65000C1F6016288E69C96184FD41F5C7BF9F323 +:10A66000F9B62F65B6DF45DD0C900FCC3780F89634 +:10A67000947B617D5D1CDFFA7E0A513E0B0BBFCAE5 +:10A6800013050FF7C9E0D8D2943EF6EF7AE69DACF9 +:10A69000DD5FE8F1CB74E3F407778B6E9FA025674D +:10A6A0002F813C559C2581CBEF25F4FB37F5DC272A +:10A6B00050BD95A8EF58BE6BA079F4F0C6B8FB86E4 +:10A6C000F74AE9D162D85907FCBC97C34DB65DD9AA +:10A6D0003A9FE3F47B00CE83C139AE652334FB2A75 +:10A6E00056AFBB09F2C863F7B8F3D1BFE6E739E369 +:10A6F000A7904F64CAAF0945ADB9707FC4E9D7C20E +:10A700009F52A33D17991648D2D433EAD235EDB300 +:10A710001A076BBE0F5A3352F3DDA31668EA392DC0 +:10A72000D768DA0F6D2DD1D4876FFD96A6FD8860AE +:10A7300095A6BEB9A9A306E461D48EF99A7E639565 +:10A74000B0219FFE3EBA6389961E3A7C4E05BE0636 +:10A75000BA58C2E3A2E5AD206530D26DEC6E2D3E55 +:10A76000128B74E744AF923FA65ED4F187AEBF90E0 +:10A77000AF38C2F823EE52CB27709F264E2F477C6E +:10A78000DC2916263FBDC6ED474ED6C5DDA400FF29 +:10A79000EF854A943FFD679DFC97D524B2FDA58BBC +:10A7A0005503F8DD4C4EE698D9BEE31CBEFF28BE2B +:10A7B000DF91C2F4C26D294C3F5D293F1FE7FC7F4A +:10A7C000B83F7EA66EAE0BEC4539C178DC56DEF4A0 +:10A7D00009E475E62921924FE9F9085FCF16DE7F7B +:10A7E000EB5A1B8EF7E8DA542CB7AD75E3EF3F5DFB +:10A7F0009B8B6570AD177F6F5F5B84E576EA0742E0 +:10A80000F9E4DA72762F63AD1FDB3DBDB606CB6788 +:10A81000D706987CEAE9773109EDED1CA2D56B7378 +:10A820006BE42BA2CF5C725F979CD01B1FBDFACB51 +:10A830000B2F7B7E7BCD89E2E081A8F64D29F10EBE +:10A84000DC779C4826627C3B40FF2FD6FA82078C3F +:10A8500003F3B79E7FC8A53B87469FE311E51C60C5 +:10A86000E874EA75A6FCEA5ED51AC153FF7CD537B9 +:10A870007E7C96F3E910F48F01FB13D57F9F8E7FCA +:10A880007D4AA2268EEE29391F16737E2DD6F16BD6 +:10A890003885D9FDD0FFA3FCBA3F261EFDF2FD4648 +:10A8A00077A6338AFEFB63E26AD8B975E29E4DE96A +:10A8B00047BD369B87F26F422ADB0F942032C1FCE2 +:10A8C000F1101BE64962AE329FA2C3A344FD4A0FBA +:10A8D0001DAF5881BB2C387E4881F1BD86887EC56E +:10A8E0007314B111BE977BF3031D4735813FB62426 +:10A8F0003C1FFCB9A1A96E8DBE2D51E4CBEAEB1231 +:10A9000090B73EF282BDFA5DA5BC5D00798BFB9FDE +:10A910009337C1EFE452CE90E87398A22CE6F2F69A +:10A92000644A18E54DF07B09B777A25D762AD3CF4C +:10A93000D9A93C5EE27E0AF047411FFE8A2B55D220 +:10A94000E0F76AF15D4C985EA492960E7AE26AFB9B +:10A9500053C951A05FB125418D1B73F5FDFBC36742 +:10A96000AF7EBB1D57946FA29A4682F16B3974B5C6 +:10A9700016AB0AFC44B61A3F0A47F1F14309FEFC44 +:10A980005488478C6437EC4F5033EFB6B990EF11D1 +:10A99000AFF49FDF42EBF9BC3E5195DC26CA376627 +:10A9A0005A5903F2117EE51FA02FF2793991979041 +:10A9B0006E4D05B9C98BC773F05E81269E372D1485 +:10A9C000D569D4C57189238D302E9156274118D36E +:10A9D0004A60FF7DB3E46D91E97C728AA719801A01 +:10A9E000575E2C13DCCA6BC57232E96A86ADBD298D +:10A9F000A45B86F6D796ABCD00E72072C9867C9E15 +:10AA0000F2E4CAAFE03C0F2427AF006F5FC4B0FD93 +:10AA1000EA351656FE5B6C423B945FC4B0FD6BB5E5 +:10AA200084B0FB75EFC663DC39C810989F4AE9FC17 +:10AA300085C1B708E05192339D3CBFFBD730E6811A +:10AA400025D40F25D6F135B7A05CB3DF11FF9E48A2 +:10AA50003BACCBBDEB3FDAC0F212CD9B18FF3737D2 +:10AA6000B1FA6A2E1FCB79F9032E27314455098E8E +:10AA70004B29E9427C323AE6523A1432BA209EAD72 +:10AA800087904EB1A403F1BCA97A4B60037E59882C +:10AA9000E780A4909F7C1517CD4F57369EC5D2EA0C +:10AAA000B350BE8AADE9C0FDA0FEC653C04FA4F3AB +:10AAB0002AB34D788EF24E29B01EF048BA2425DA1A +:10AAC000CF3492462279A2E1F8DA747A10F87C2029 +:10AAD0003A194BBC5D3ECAA2D5B1129E77B95A7ADB +:10AAE000ED00A67746587D6F1A6983FC429D83A4CA +:10AAF000C2F94793D58272B83E8BE5234C2309DE19 +:10AB00003F268A41B36E714E4FF027C5CFCF017EED +:10AB100053503A09F832A53662BC48947006B4DB4B +:10AB20002B31BED0F3F54ECE1F846432792097B717 +:10AB30008F3BBF6D7FDB81C2DA55F1C7545A2FB608 +:10AB40002F802DBF7FFFF1A20A85CACFCE37080A1A +:10AB5000EBECB4EFDC0FFA7B67B5FD31276DFF87B7 +:10AB60004713EE37C2F745127E9F994EBF5378DEEA +:10AB70002E261D90677ACB15F81DC03FFF8FEE8300 +:10AB8000704575E72BB76503FE1DA5DE30DE7359F2 +:10AB90006076C3FE5407E43981712E5178287FFD19 +:10ABA0000C4091597D2AADCFE3A815DFB7C37F5381 +:10ABB0003ECA59E66972409E729B64033F66D03676 +:10ABC000EAD7D0FA07F79371905FEE4FAF4D147547 +:10ABD00055C2FBFAD7E9BE0BBD3764D9EDEF7D1F37 +:10ABE000C6EF92F17C8754C3F67B26F2F23A5EE61A +:10ABF000F372DE32B63F35A4666210F27EA78DEEA8 +:10AC0000662BF0E36882F75489C2F8F3CF59F62037 +:10AC1000E4693E904833E4D9D44D04EF0D829CC1E1 +:10AC20007EA87719A5F57870292D41C8E31F594BE7 +:10AC30007CEB8746E9574A1B5F214BFB30B8F3306A +:10AC40004E9B4C22FF601D659175219F5DCFEBD31C +:10AC5000EB59DECEECA37A17EC9F4E5FC79060AA4B +:10AC600005CF1B7BF03C893C9DD800DEECF2103513 +:10AC7000C5541FFB8A51EF4E208197BB6839C9B775 +:10AC800013EB459660332C712ACC9703F6D5AD00B3 +:10AC90001D4BA9070CF572D28AE5B748079615A493 +:10ACA0000BCB1B4837967E623342199FE6E1F124B5 +:10ACB000B5038371DF0EF3A4055BCD984FAD2A0F6A +:10ACC00098DC7DF82FB5E2FE210964639E58096483 +:10ACD000CF89F2474ECF9BBB08DEDF701BB4E7691C +:10ACE00093D3981ECD4A63FEC41689EB9195E21D5D +:10ACF0008FC08F6FA1F505E5C3BD702F9C7EC73C4B +:10AD0000B13ACF82F9C12D467716F82715F0F80C25 +:10AD1000E4ABEB77FE1BE8A3C3336E4D0379AD5D67 +:10AD2000BF310BE284DA0A7E0F4751B3AAA3E4FCD9 +:10AD300083C50C2E711E42FC3E2C8DC97105EC6939 +:10AD4000C13E32851FF597C8F7CDB7A39E2923359D +:10AD50000A9C779F90C6F28D41AE1784FCD4093EC1 +:10AD60005054533AED37C7EBF1C2F9BAF94196475F +:10AD70002E534808FCE91EF86BDAEE22943FE6D722 +:10AD8000EDC3BC7FE41C13DBBF2E9ED7B908E6AF32 +:10AD90005D662666DC4F6A7D07E4796E9DD90DF508 +:10ADA000DA852CCF4A6A2CC1A150DFEAD900723A69 +:10ADB000F76E9F17F2B0743ECCD75E6F61FB9816AA +:10ADC0003A3FECFB4DAFE3E746EAEEE902FEA4EDC5 +:10ADD0007CE04F5F4FDB2BB4CC24EC7C5EACCACE66 +:10ADE00039C54E63E79CDCE6C683F0DE897B15F14E +:10ADF000AA74DAB9DBDA24766E9960DC33903FF41A +:10AE0000937B2ED9311E05BF6110FCAAB27CF31AC8 +:10AE1000D90DE70E8862C371E6F3FBA52D75CD98B9 +:10AE20002FFFBC862E8ECE3FA7D5C3EE3B1C607293 +:10AE30003EA7263F0C792C4BB9D92DB3DCA40AFBD5 +:10AE40001B16528E729F4F587EE466381F81DFB505 +:10AE50007185658D89CD4B421AF8419F81FDEDCFFB +:10AE60004FEB6F7D426F807EE9EE43DEA5F257998E +:10AE70003FC74B907F90DB028B578E3700ABF95169 +:10AE8000BE012FEC5ED3DDCCAEC43C2945DB778B15 +:10AE900043BD098EF07C7060C8062BA2AD9544C7F7 +:10AEA000199612FF2DD1E7CF3715FB1745EF27ADC8 +:10AEB000E7F2B781F33DF9A39A0DF3C95318BFBF69 +:10AEC000F53AC17765CEBC4EF109F22759987C0E50 +:10AED000809701D7BF8CEB715E46FC507733D077FB +:10AEE0006BDA60846B7C79A50CFB4BE37E322EE33E +:10AEF000DF496FFAF487FFFEF03525C5D79686FB4C +:10AF0000013EC395F8ED6572E6827ABAEE4F179A64 +:10AF1000717F56D8CD022016C875170952D907FB84 +:10AF2000817625AD85E07B3F4E3F9C9DE7E3009B0E +:10AF3000D75888A2C9A3DA34F58CBA544DFBAC4675 +:10AF4000B7E6FBA035B99AEF1ED5ABA9E7B41469F3 +:10AF5000DA0F6DF569EAC3B7966BDA8F08FA35F543 +:10AF6000513B6A34ED3FA54B0AD1F58C3F267B550A +:10AF7000A0AFEAEBCA2B8CD8F1D11D014DFF89E1BE +:10AF8000C515A0BFC6EEAED38C434E50BF8DD61BA9 +:10AF9000E9FF185DBC32E8116F9D441EF5000AD927 +:10AFA000776C4FEBDE1333CE821E9F5F638CF87B92 +:10AFB000D08BDC877950AFCE4FD4C7DDB71E520F90 +:10AFC0005A297C75875A0F823C84D3B479AF32D921 +:10AFD0008AEBFAF4A88CE763EA80431D113A7E0AF3 +:10AFE00003C1BAF7113C37A65F774F9C2E6F33E24F +:10AFF0003B2D741D7084DE9CAAA5778C5B4BEFB84B +:10B000005C2DBDE3BD5A7A271669E96DF7E5F6892F +:10B01000DFE4722DDD057E8BE8FF00BFDF343E2DBF +:10B02000E9FABCE164D4B39F6FE57AB6B71E986DB8 +:10B03000298CE801AA5283708F4AE0AD975EB0B2C6 +:10B04000F8A6472F6CE57A61AB5E2FF85E461725B0 +:10B05000E0C1B8F3CD45133340CFA5933DE23E4563 +:10B06000E02BD4DFAA90F3EC74D8275CE30DAB603F +:10B0700027B699D19F3C7CB0F6A001E0BC24E1BC8E +:10B08000F7F2C06A78BAD8970C0C877EB19646154D +:10B09000D461F61A3FEAD30FAE637CF126E843BAD7 +:10B0A000D8B7208E87CD2B9D1E213A3DA8F78785E6 +:10B0B0009E99A8BE8171F5D5DA8D81E2FAFC85CC26 +:10B0C0009E08FD3A91D7C91215FD7B61679A8B02E4 +:10B0D0001EB8AF5060F1C9C4101DE787D1EE4C25F2 +:10B0E0002AEAE16BCBBD8FAD06BCCD783303FCAA59 +:10B0F0005EF17E04DF15E91300DF1DEC7C76B98478 +:10B10000F8D6E3D96071A35F129BC9F687AB7BF0D9 +:10B11000EEAF06BC0B7CEF8AF1229F1D9BC7E29528 +:10B12000F16F0C69B6D27EAEE51EF46776D9BD2FFD +:10B1300043FDD84A163F4E38EA93E11C564EA3070A +:10B14000CFE3EDF2F84BA17EEC2EF6BDF07800CF08 +:10B15000690D59C3BE17AC6B7C19DE01A8FE01FB5B +:10B16000FED2C71BF1FE183576AC7F716B29D48FE8 +:10B170006D60DF279E0836437D440B9F5FEA783978 +:10B1800001ECE1FDECFD865E710F8F73A672BAF4DF +:10B19000A22B8F1FA6F0F622CE995AC3E8B5ACDBDE +:10B1A0007F3DB2978E6E7AFFBE8C04B03E9DA8584C +:10B1B000CE20412C6792107EFF360963FD4608F1D0 +:10B1C00069BD92B88D506F4BCF45FB3A8BBA009852 +:10B1D000C728F25AF03DBE53AF7D972444F6D78579 +:10B1E0009FD09AE45F097E84A3D48FEF8BB4A533FC +:10B1F000FF3D5232FFC195A4667BE9F733FC9E5AAE +:10B20000649FBC10CF77D026F781DFFBA37476FE56 +:10B21000663A29C273C5D38BD8BDBDE9E01753FC8C +:10B2200084FE43B1C3B93D7C4BA98FF839924FD20C +:10B23000E5991515E39002D93D0A84E6C5F459F75E +:10B24000C37B0ABB4020D309F945FAA26FAB18B4FF +:10B25000313F67A07647F979A05D7CBF74B6DF63A4 +:10B2600040FECCD7FA512FF2F58B723AA9298DFF07 +:10B2700006D755B04EC573DFD5ED66C2CEF19074DA +:10B2800038AF534B1A91AEA747AB46769F95E99FCF +:10B290006ACE77D59C9F4EB799910E1FDC2205216F +:10B2A000CF53BBEDD5E3C06FFDFA4F794351EFCCDF +:10B2B000E6FCF9E6C1DA0D4CBF73BFEA3F46CA5F50 +:10B2C0008D8AC83FF5175578EFF0ED454C3F82FB6E +:10B2D000ADD18BFDF88B4E5E177064A812DA8B2B04 +:10B2E000D58B0E313ED78BE9627C1F653D5ACFE688 +:10B2F0005FA57A8607272F33EAF5F625D0047290EA +:10B300004A5A25A867916E2CDDC4B6CE9903573AE8 +:10B31000BD06A8675A1A2B2BE8F876D083B0FE4DED +:10B32000FBC747EB4123CF4B1B2DD4BE2660FECD80 +:10B3300007F904E5404FFEEDB3F46F30FFF665BA50 +:10B340001BDBE9F370D4E31A0B7270CA686DC17C21 +:10B35000B33EEFD22B4FA3CD675CD7CAED48ABB05D +:10B360001F8154583F1C13D5D891495E37945325FB +:10B370003FEA992D2981C48C0990F768CC84F606A0 +:10B380004B5806BBB199DF4FDACCEF276D1E26E292 +:10B390005B4A65287DB9C82F6339CD9F2F62F79E20 +:10B3A0009FCFB5E079FB8D2ED346C8EB45EE85F2F5 +:10B3B0007EFC9EEB18FEEEC2C6588E87CDF118A714 +:10B3C0003C00F3D27EB1B27B18C0F75703A5720ED2 +:10B3D0009C97F762DD24DB9C4D1ECC5B0ECFC0B882 +:10B3E00020FC700EED7FF4058540BCFEBCAD3BD665 +:10B3F0004EE7797E4FFB8E760ACF678798D97E60BD +:10B4000087AC9AC7C27DCB8F1E9E49DB8FED32A2DF +:10B41000891E5B6440BDF9A189DC07E784AA2CB2D0 +:10B420005FA1FCF1E177F8B91DC59B1D7D6E6747F3 +:10B4300026D39F87FBC92B5627152F04B80EA7F5D7 +:10B440007D8FF8FA0C83E63EA37867E9EF4EA239C8 +:10B450005F529D74038E23EAC68B7612488E1EC7F8 +:10B46000CDEEF32A7E02F72A8D171DF83D91FAB52D +:10B47000B0FF90682F52200E2B21B6033E09AF98E3 +:10B4800023BD7BBDE33059E9EEF12707839D62FEC2 +:10B4900028E67D3DB06FA3F543C7126D5D9FE77D44 +:10B4A0003C93C5A746DD3B108F67EAE165EF408816 +:10B4B000FBE89D8A2F0EF2434B0DFCDC55AA0FEFE3 +:10B4C000573E38D991BF390A2F3FCEE0EFC5F0770C +:10B4D0002B6CB43DBE87A05BC77A2A471ECABFF754 +:10B4E00067489AF6428F2D1272A4DAD1DF59C8E567 +:10B4F000E8934CF65EEE221BDBAFF9EBA68F31FD35 +:10B50000BFF88D581320F1E685246134ED17F8510A +:10B51000F27FFADCC0A7DE7D704E873CC8FC0A5B78 +:10B52000496E217BBF601AEEBB4A6A06EADD2BB585 +:10B530001B8F242F9E9E49E78F4D08BA6D749CD8AF +:10B540009167F0BCDFC60CC2EEABF7BCA7191E16A4 +:10B550007DFEE591E4E2E9994E3C4F1B4A827397E8 +:10B56000BF3533FA1E223EF0BB56ED1D8179B07F08 +:10B570006606CA607C71DF961CE8C6FBC5A5E0A71D +:10B58000E4F4417FEB6706E0233D1F00E0608F0796 +:10B59000E2877500379D6F6942DF74C57FB45E6ACC +:10B5A000B1E3FB9EBFE1F415F35E2D7F3A72983E46 +:10B5B000E996247C676620F8C4F96381C7B24CC65B +:10B5C0002FA21478D2DFF72BE37AA02C93DD13FEA1 +:10B5D00067A61FF17A21EB9361460AC352137F6F6E +:10B5E0006280F5BEF62FAEF74AE9F07826E39FA514 +:10B5F000B15706D73BFF4B70950BB8C65C195C9FE3 +:10B6000070FDF975E1F291EE77ED3903C345E95923 +:10B610000EF244A675E33B224B93AE0C3E57E6BFB9 +:10B620008637802FE9CAE033227C2106DF1CE23511 +:10B63000A6CA1C98A8FB37FA7B37E23ECE1C85DAF7 +:10B64000526AEF624D6CBF2DB64A6279A3AF79FFA3 +:10B65000A6878E2E12B2433CB9D7CCF28EDEEE61B5 +:10B66000D1F63393E3E79F993E0FC8CBD2615C2FAD +:10B67000946BDB7932199D453BF12E075D093F9FA5 +:10B680003C04EF91C37D25843FD38DEFEF8EE072B4 +:10B690002BCE2B8BFDC28D85EE14F01B7C166B48D8 +:10B6A000A67661E3C8BA5CD81FF1A5BE769C9DCB97 +:10B6B000A6FE6B149D041CE7D61EB20D31F68F87D3 +:10B6C00015F2AEC2C63EF6592EB802D76646D9EF7D +:10B6D000153B7E6F1B12952F1A4DC206E6FF771B96 +:10B6E00058BE989FD349B93ABCAF06FF6902E87FBC +:10B6F0003FEA7F612F1A5E7CCA0D7688DA7B02FBF7 +:10B700000EDDF1B1680F9A4716E546EF0B2DE2F812 +:10B7100032EADED188D8E97FED1D8D88FF22113510 +:10B72000B9AFF115FC5DD0C567ED9B1EE23C6E68BC +:10B730006DA8EA9411DE3F299A05E5FEB5BE59A72A +:10B7400068BCF75C72F16399781E97DF6BF01FAAF3 +:10B750003A1585EF949A2E4D3D2D70BCEA54149CF9 +:10B76000197561CD7771FED6E860E76F4BC65BF067 +:10B770005E4056E3194DBF16037BAF69D09A6ECD7C +:10B78000EF253EAB6A4F84BCEF45CDB89B9B181F9D +:10B79000E7B49059D1BF1B151F81F3AF435B2DB3A5 +:10B7A000A2C719BED5A6A98F08A66AFA8DDAE1D676 +:10B7B0007C1FDD91AB1DD756A4F95ECCCF13F92CBD +:10B7C000EC5C4FA9A558F3FDB9E4CAC7808F8AC9BC +:10B7D0003ECD7A7ACE910F702E475136619E12F689 +:10B7E000382717F43E4FFE5CB20FC7D7F3BF7ACFAE +:10B7F00064BEBFC4E26CC10F64BC3717BEF7C71785 +:10B80000BF75F99E80F1C2F0EE099C7B13F7A67319 +:10B8100089DBCFDE3DE9F33E4E17E7FB0F4D7D7F21 +:10B82000EFECF163B5EFA144F896BD87F26189783A +:10B830004F49FB8E9D68BF9FCFF300CF470CF49E0E +:10B840009DF1629CE63DBBC87C09F8FB87832F3FD6 +:10B850005FD755CF27F7B33ED365DF7B39C9F1F307 +:10B860006152DFDFDFE9C15F9A46EE4FF68A0332AD +:10B87000F1BB51F76E4C745C03BF0F14D7F4BC27B7 +:10B88000F88DC73304F179B5FE310DD7BF03EFA8AA +:10B890000D347E7A96AF3103EDD4D7B3BBB160637C +:10B8A000D3701C5316C5EB4613BBFF483518E62B67 +:10B8B000445C43F4714F2E3B2FB728F535F40762F3 +:10B8C000216740ED76EC0F62701FE566C96602BC29 +:10B8D000DE64E97EE73137FCBD86D03BDFC37C8781 +:10B8E000886BE264D8A7BB52387BF22DFC1D07C8D9 +:10B8F0008383DD1E3B7524DEC77910E2358081DF4E +:10B90000AB7890C29046F547A2C18AF7A6124DAC1B +:10B910003E16F235B4DDE7E4A324584B02AC7F12A7 +:10B92000DC4B61FB23897B9473D1F8D6EF8F7CD6F7 +:10B93000F5F758B08FA3B3B4FB249F938A3F8D02D1 +:10B94000BC1439109F635E989612FD3E4ACF3E921A +:10B95000C8F7F4933F8E9C93D1E667445EE6BAAB9A +:10B96000CCCFF4BC37A0CBCF0C94679A92129899A5 +:10B9700075993C93693FFBBDBB2D06FD0291771283 +:10B98000EBADCC62F23B32D55709E38CCBF25501DB +:10B990007F1D8E61F999C330CF18D867989E084BE8 +:10B9A000FD8CF812215E8573C21949BDF901F22A96 +:10B9B000EBA3E4FBB0BD6FBD11C862FAEBF12CC282 +:10B9C000DE6B73F916C3FC674CECEF6C9C89E56584 +:10B9D00002D36FF53DED59D9C4CB335CFF9D4922AD +:10B9E0009A77A045BB66BEBE536B2DFEF551FE9DFA +:10B9F000FB3FCC8D10E73973F8BD2E1FC3D38517DD +:10BA0000987FBFACF5A409EE4F3D9055FC38E0039C +:10BA1000DAC13A96296113BCDFBDCB19F82EFCDEE2 +:10BA2000E026BE5DD0DF1D36CDA2F8BEC0FD970B6F +:10BA3000469637BA10C34A01CF0359958FC33A2FA0 +:10BA40005C1736019D7BEA13C228870F64F971BE2B +:10BA50000B9374F56FB33AE1E7387C9CFFD07EF628 +:10BA6000612FF5F651FFBED92A13CF3FEAF545669F +:10BA7000BC469F2CDAF37BE4E39B2C6423A4A26EE8 +:10BA8000DE93628220A32E411D66D3E43FBE9E9EBC +:10BA9000B890D585EBDA5CDC9DFDE878CC67D8DA28 +:10BAA000E93C2BF7B03CF84AB1BE4EEDFA9EE1748A +:10BAB0001DE89D3FBDBF31903C4B7BF879365E92CF +:10BAC000BDBFCF80F126EF7D3D19CA8D5223E6A57B +:10BAD000A3CEE71E7F89F28B6CE84E8E9663B1FF92 +:10BAE000F3AA14C6FDBA06D28AF46EE8A4EB4A8023 +:10BAF0003226047967B25BBBAEE5D1E73169BFDBC3 +:10BB00004887C923415C618CEC1FD3FFD7932E1C5F +:10BB10006F6587F677BDDD19880FB2B38978C708DE +:10BB2000F9AA8EE3A14EE03DA8854FBC6724DE1143 +:10BB30001D6408FC05F8B7D26E51E5B1B0CFE45BE7 +:10BB400004702D266EA4EB629D1D15EF1F2DB5CE42 +:10BB5000463E5ADAA287DF6702386F69BDFCBA0435 +:10BB6000FF7C09FA83967BB2DCB88E95B1158750BD +:10BB700036C677E17E1385EF3CC88F808F283E7CE8 +:10BB8000EF5CB4FF7842D79321BA26397E9A05EC50 +:10BB9000C523C981CF603D59C7C3A72538A869F51A +:10BBA000E17ED4F9DD67FF0CE7EFF0D18C4930413D +:10BBB00078CBB5F43FEB76CB36C80FD4ED7E19F9D0 +:10BBC000B53FBCF5DC6727DD022E29DBD91B2E91A2 +:10BBD0008FD6CBCF992C164F3FEAF699B2C1AF1A48 +:10BBE000DC81EF6B75DFC5EE933B646A699360D3CC +:10BBF0005095C0568AF76188D76781BCDF54337B84 +:10BC0000C7E61D5B8905EECBBBEC063FE8BFF5B68A +:10BC10002576B8372DDE15774906F67704C8123B2E +:10BC2000BC43B2C8CCDFC1FC4E5C2887F2EBEF4CC2 +:10BC3000ECBD51475C00DF47E8B6CB387FF1BCCFA5 +:10BC4000C6C17B06E997AC0570EEED138E5F01FF70 +:10BC5000D4D2EE71ECDD4F4637470E7FC7C969DAA3 +:10BC600008EF28AEA7F606CA0FF93AD773BB0367E9 +:10BC70003DD9BE42D0866FCBF1FD88D516C6A70D43 +:10BC800031BE074B200FF106FBFB5E9FD97C89B0CC +:10BC90002FA07FA752F8B7FDBD073D399BE9E7FF0D +:10BCA000A97726455EBAC1AE104762A49F586F03BC +:10BCB0007FEF464F77F1FDA52FE53EF9625E36FB3B +:10BCC000DE5FFCE3E7EB6A80F7BFA3FCF3066AC71D +:10BCD00000CE0678FFFB32FEFF8759A2BF5DE3DF8F +:10BCE0007F98C5F46D641C077E7F9AAFF3E94386A5 +:10BCF000F2F63EE0FD6E36CBF78C742A7ED817192B +:10BD00001562EF6BF6D74EDCF3EE0FAECE92F04D30 +:10BD10000037E46FFB9A6F65368F5FB89FD1991437 +:10BD2000AE45B9B0F99E81B8FFC20BC33DD1EF1447 +:10BD30007665B179CFCF60765BBCF359A8344AC041 +:10BD400057821EDF4FF67F007A02DEFB65FB00AAFA +:10BD5000860EC0CF6EF4CFB5F19B807B3DDF5712CE +:10BD600071DB40EFAA36C0FBE797C5BFC2DE6DE5C9 +:10BD7000709C3DCCFC4588A8A542D0C38CDF176FD2 +:10BD80005F81E795CA642BFA3B678312BEE777961B +:10BD9000B07317675B597EB0F689711BC15C2C09C3 +:10BDA000B073D88B53D97D30A8DF0DE57A6DBC23F5 +:10BDB000E6FB9C2C34819D5C769F567FD711B6EFB5 +:10BDC0000AFBCE10DF9D3DCCFCD7DA47B4E3D46D3F +:10BDD0009FF901C057A73B2FE5E27647EFE73F9574 +:10BDE000CDFDFB42527835F7B96A89AF231BF5B117 +:10BDF0005F06BD3B819F973EBB3D2725FAEFF7C409 +:10BE00000F96347A0CFE9ED090A1F0F7856C581EE8 +:10BE1000C8F6ED86712EBCC1D67F343BB007F4FA6C +:10BE20008537D8FA88D2CDDE23AD6176CF0CC94BE9 +:10BE3000FA9FE60596209CD7BD07DE17A3F8359B31 +:10BE4000993D15FE832CDF2927D0EF93DE5F66C76F +:10BE50007B02CF4C2F87F19CCFC4F9003F9B8B7D99 +:10BE6000F9A06F37575AF15D8936037B77D0626648 +:10BE7000EF20059F9EB41FF6DC87743C54025B33B1 +:10BE8000B6708824B8218FD584E7695AA6107C2F14 +:10BE90004ECC5714F6EF04B8B2675BBD00E2668F74 +:10BEA0002FDF16353EE1FE4103A7C963BB73F03DAA +:10BEB000E04FF70CC77224617C22EE25C09CE0F7AE +:10BEC00008BCC1DF632251F740477648216302BEB8 +:10BED000A387E736EAD7855C0BC09E3DA5E0B91E77 +:10BEE000C7EFD24ADC0911F8443F61E71640DC0A8B +:10BEF0007B40DC7F13F72216C410352EEA1C4F0D51 +:10BF0000E7FB797B583CB68478B3A1DF7C0B4930E2 +:10BF1000509C2D28ED9880766985D10EFEE9559FBD +:10BF20006BE1F2A66F770E6248B08F2F98717FAAEF +:10BF3000E1C978CC2BAE3274E3FCB183185F350CC9 +:10BF4000E3FB0D43880FCE4135EC1D8EFB77667801 +:10BF5000CFAA00F59F05E87A10EC2E5DF7F2976204 +:10BF6000F09DBC9EF7626C4405B95DB53705E36B87 +:10BF7000478E2FFF8E3C789F249C8D7A81EA3B4828 +:10BF800091E73C7EEF8D708EA6219DFA35B47EC37D +:10BF9000A01FB3FAE070AD81D6BF3368E78D70BFE4 +:10BFA000A56164F834D4D5417BD8F78270AD4CEBF1 +:10BFB0008F0D7A8D7D87036D94B1760C7AE346B848 +:10BFC000FF72CE2EFC8C30BE17D4F0E270C3E62890 +:10BFD000BA3F3288E9CB7331ACDD390F7B3F9CE44B +:10BFE0008635EF1DAF1964E0FE11F393C43A453F67 +:10BFF00092DAF7F8057CFCE5FC9D9FA971A42586E3 +:10C00000BD87AEC239B0037B86235E5206F17B4901 +:10C01000B6309ED711E3E8F94BCC7B1BFF7B4AE798 +:10C020008DDABFB33995D38DCEB31EE7C9F3E5C31F +:10C0300079F686AACC7CA01BA597C2E9A5B0F789A2 +:10C04000DB187C745C3BF885B6EE7160770E5CCAD9 +:10C05000C4F71C05DCD4FFB3A29FC6E19F3188D989 +:10C0600089E5CD1C5F146619E166FBBB405FB047F4 +:10C070008FF1F53F12D51EC7CB0CE3DF79B8DAF5A7 +:10C080002DE0E37CD3EB8BA28B0FF6290EEC1E8107 +:10C090007411F013F290669C734DBA7E4584BD5FB7 +:10C0A000939483FDEEE1EFDF8BF787A19F670CF39D +:10C0B0003381FFC5FB6D449D82FB64F55C3FF4BC9E +:10C0C000BBD6C1EE7B9021747D80D7AA8AF17C7D9E +:10C0D00036BE3E5BF4FBD23D7277B43B7B76D4DF59 +:10C0E000BD11BFF7E0BD67BCBC023E9E467EFB1A99 +:10C0F0000FE8DE1F3DEEFFA6F94DC0A9C3670F9EF6 +:10C1000075F0097C82DC62BF3CADFC0838D51E3A74 +:10C11000EAE4D7F335E7E3FB802BBF4BE908E78779 +:10C12000DD5A7E5ED9E931C0DFBB13FDEEADD8E547 +:10C1300007BDDA9307E8BC5D857CC5AA3D95786E9E +:10C1400075E56F7EF16B95F6BFEDF91F25108AEF4F +:10C15000B34AAB0BDE81AA7F6243820FF2478A9A11 +:10C1600000FAF26C90FD7D59BD3EFF1B970BE14F2D +:10C170003570BB72EEE97B6F007CFCD713461BD891 +:10C18000CD553BCC2133C6F7CBD1CFA2F593AC7EB6 +:10C190000FE62D57EDD6FA45B7FDFC472E37F29343 +:10C1A0009A61488532944168D9B0DDE80D01BE8EB0 +:10C1B000CA5E3A0D5945BA37027CFAFE00073CD9EF +:10C1C000B0AA435E6C4AECFD9D5A2013F81FAB3AAF +:10C1D000EF45FF6B55E78C0FC08F58A53B5F5ED7CF +:10C1E0008F7F756C90367F2AF043824EF4679A9F5A +:10C1F000FAF9732F5238CFFE25251FDFC9DCFE87E1 +:10C2000004897EFFA8232791FD3DF4751AFD23CAFA +:10C21000F3E00F98A3ED2AA3AB7BB784B91AB287DA +:10C2200095F5C65002C4D9F56D46BCCF54FF8B9F1F +:10C230003D097922F29619DF6B58F18B837FBE8618 +:10C24000D657EC343A2A18D856C915A1CF2A37F355 +:10C250004B043D6EFBE5417C370C7E073F56D065B5 +:10C26000C5CE7D2632BA37FE4A3BF6E13B9EBDE89D +:10C27000D371F27A7CE7F3A92F4CC0D767F74A2431 +:10C28000C5D3BB7FDD137F488076823E3DF4D2B5B7 +:10C29000FB3F8DE26A050080000000001F8B080054 +:10C2A00000000000000BDD7C0B785455B6E63A75B3 +:10C2B000EA9550492A4F0292782A09796808454838 +:10C2C000204822958460D206A884A001A3160F21DD +:10C2D000420211DA36D33A378511459ABE1707EE76 +:10C2E0001DBB2FF6145C54FA5EB43318314307BA01 +:10C2F000681F8D731123D0884A3325B6826D2001C3 +:10C300004470B49B596BED7352752A84A0F3CDF73A +:10C3100039377CF976F6D9FBECBDF6BFD75EAFBDF9 +:10C320000E00FE597B0A005676C8F6F50A969D3F28 +:10C330003B2F475359751AA804E3A94036F0CF554F +:10C3400007C0AB37E31F8500CDAFBDF4F29E04807C +:10C35000C60F2DCE6A7CD4F8F2EA68180770DAD8D6 +:10C3600092E4CC05687A6E6D92CB86CF4DDE243B8D +:10C3700097E279E3AF1E4E52A20096BEF77012E428 +:10C38000D2A8AE5186222ABDA32019E0812D736761 +:10C39000D0F325E07992DF7B4E76FBB0BC6484CA93 +:10C3A000FF8ECFAFD2CFB460395F91989ED3DB2C94 +:10C3B0000031589A7128A4CB7B58F63D2FD1B80F85 +:10C3C000014C0278D80AEACF2AAE5FA23AAED7A9CA +:10C3D00018F87DFCB14212AD57FCACDCFE548F9CCA +:10C3E00007F09714D7487B2EE3E00D8831A4AB38D3 +:10C3F000AEFC5EC5C8808DEB8A7192FA5E1A403938 +:10C400003DA7FE3D2657449EEE3DC64F9BFFC7EA23 +:10C41000FC4877A4341ECB2468EC603CA087E85825 +:10C4200021897756743E58ADE03E3C4DEB4CC4F14B +:10C430007658FC16ACAFD8FEF479A20FEB1F53FD73 +:10C44000CBA372A50FDF5FE1ABA9843C9EDF3F92D7 +:10C45000FAF9F6D74954EFB2805FA383C6C5DF2B44 +:10C4600071B44ED30273CCE076A4CB2885E2B94FE9 +:10C47000F23DEF08F2C792CDD83F3BD83FC82FE638 +:10C48000E0735EEFE3025FB921C683782DA5754D99 +:10C4900019BC8FAD274A7D6F848C3757894AF86C59 +:10C4A00004FE3119265F95B1DC828B1F35F83DAD56 +:10C4B000440A199F2693EF855F22BD4D1F589C5E4D +:10C4C000C4B7E925939B70F962E7EBC7E6239F7F2A +:10C4D000D1614AA8E6595C366992C081F66125FEB1 +:10C4E000B6E60BBC09BFC65D85A08C13CF1F8BA31E +:10C4F000E74F31DE5FD89C407CBEB2CB742A1082FD +:10C5000057393E17FCE0BDC9904CA5FF26E2E71560 +:10C510003670FA71DE154765A74238413FF375F86A +:10C52000FB03FBD121ABFBA16F07E837BBC70D7F36 +:10C530003E357CC3F16C233C6F0DE279097263A632 +:10C5400062F52FFFBAFC664FEE607C2FB7B97C6FA7 +:10C550009800CEB5619B25F87C94A230CE4A174E48 +:10C560003412DBBAD512E02884E0A9E1A8F1E9B2DF +:10C570007F6BE67906F857E353957F837C1ABE6E8E +:10C580003D9E837027500B83FB6F7A1CBC51B8FF14 +:10C59000FD7B65DF3624AD0FDB9F44FCFB763A7CE8 +:10C5A0005EC4676D04DCEF463AFAECFDD17158AE1B +:10C5B0008D15F5FE44F393243FB4E7FD1150DF8160 +:10C5C000FBD4E7EE8F8EB505D75FF03B395AC17AC1 +:10C5D000C007951DB66BF1613BD31100D15E21DB25 +:10C5E000525B71FE0B1BD3F31146B86085D4D604A1 +:10C5F000AA8FCDF7F22AD630FD7D91D1793C7F64A8 +:10C60000AA8FF6F553701F9B4A7BE975194721AE37 +:10C610008BC492A1F1EDF6684091B5A87B7935F510 +:10C620005BBC418FC712DB7633B55F82C7B85CB2A3 +:10C63000D914E40FFC5D061B783F1AB7843DEFBEAA +:10C6400093F96959183F7988865183F9E96DED7C32 +:10C650004E80097C3E016743B9B54A956B1572EE71 +:10C660003F00E17E40060B8D21E7BE3B15D77D09DB +:10C67000EB32ED993791F974B9E78C19D283FCAD9F +:10C68000F15D2FF15DD6D0E7BDF7D53F4D7A14BBF4 +:10C6900034EDFE28EF9FB1ECDDFD41E66FA9FEDA37 +:10C6A000FBA91FC1E0FEE5FBBEBE8FE458DF3E0BD9 +:10C6B000D3D3B7EF0FA98F527D8FC549F4F63D6EE6 +:10C6C0007111BDDE7D51BEB1D49E82FB8F7CD0BE88 +:10C6D000F7725E80E5F213BC4F971433EFEF85EEEF +:10C6E0006F4E4AB48FDD1605482EEE4330488FEE6C +:10C6F00089F001BDBFF7F2244F087FFCDFAE6785EC +:10C70000193CCC8F5150BF8BF837165CB49E95BF47 +:10C710009DF22F6B70FEE6CEFDE645D85EFEBBBFF8 +:10C72000E6911CEADBB5DF4C72EA9C29F02B4091C4 +:10C73000055B9B379A10EF73A87B61341EF7AD2F12 +:10C74000BBBDB9D7C245E0D08738D0BA1097469262 +:10C750009F43E131D261E6F28787C7F9FB68FEA605 +:10C76000EEC9203B4271915CE27994CF2AF1FAC57F +:10C77000F37D97F3C046FA610DEBFDE1D63DE93F4D +:10C78000DCBA25FF8DAC7BEE0F76DD82FF3F22FD0C +:10C790005438F81C0CE6F3D77EC2F597A39C4CEFF7 +:10C7A0000D9EFF871D3FD4F3FF3DF77D17EE7BF411 +:10C7B000F0FBBEF907BBEEE1F6FD6D75DFA3EC16ED +:10C7C00092677BFF9A0A21EB1F6EDDAFFC7FBAEE0A +:10C7D000017B48765BD390BE0DE0EF211762AD6A16 +:10C7E00097AC4D30B05DBF6E8CB24D16BE06FB1DD2 +:10C7F000FC370E79D221FC8DB560A8245CE48465F9 +:10C800006C6FC809EBD97E4075CFF4AC4B287E61C4 +:10C81000FD35FC2CA362F05BB05FFB1A9C1FFBB5DF +:10C82000271AECED0A3FFF989E5B689C682A7FF40C +:10C83000B918F7603DD97F469B59E787D8C2FC8974 +:10C84000C80CB3CEEF8880DFDB8DB80F114E23F814 +:10C8500024325543DEC7FEFB1C765E4724F8BC76C7 +:10C86000DBF7C285FD42A3EA8F8D4813FEA686CB77 +:10C87000006EA279589C8C09EB7B68DD4640BF5066 +:10C88000AC83FD4950FD4823BF321837CD6F0CC132 +:10C8900097FDCB907178BD1AEE0378AA787F575C2C +:10C8A000C3F767389C3F1E02E760596C67FF23029D +:10C8B000FB23589BF6C22FC9DE35CD349B12709DE9 +:10C8C00033DD9293609809FD47E7601DEA65E7F361 +:10C8D000BC6E77CF62ACBF53B02999E21373D171AC +:10C8E000837C2EFD0A95F6E432A2CF24397B5C4886 +:10C8F0001FCC33399FC722BE1B7EA98CA7F79DFB97 +:10C900008DF8FEDCBB46E5D3FB87A0A76C04C9F914 +:10C910000689FB4172B691F6AF1604DFE34FDD01E5 +:10C92000C4798EBA9FB969714C7F3DB8E74E440215 +:10C9300067B5BB5BDCB8BED9A9FD19B121F10867A9 +:10C940009A43E847A3DBF4502ED3F704C40D3EF717 +:10C950007369D038A2DB6D6A619CA6DB3F43DC259E +:10C96000D72DF2D511D7F36F8DF099B63F7210D74E +:10C97000F1E6FE13AB713DF643B2739B423800DB28 +:10C98000EBF02DBE87EB9849F5F4E038F1ADAF7BC5 +:10C99000A6C703DCA3F2312CDE5A114FF8E3806402 +:10C9A0001A42D3FE8AF88290FA8F3FD6B73F26CD3F +:10C9B000D0D59F70E8EB1B4A6784BE3FD47A6616D9 +:10C9C000384C1EEC50BB5972F9AEE14769F46D5A10 +:10C9D00003F3086F4870293534604201AFEF9E348D +:10C9E00011B7198C93C0659E0C2D749EE3CB6081AA +:10C9F0003B64FC07D2845C7B80DE27BE24E69B423E +:10CA00006CE252C8FF186ABC0F968E3791FF8A7C81 +:10CA1000E2A2735FD70D71C45F5ABF1FABE37E10F4 +:10CA2000E3A9607AF138907E78675ED6563AF7438C +:10CA3000E1F0CEBC052969D8BFCCFD9E91E4F7CCCE +:10CA4000C5B34DA4978ED57C6CA038D8F83441FF7F +:10CA5000FCAB4A4A4DC83AD6ABEB3FFC73E1A78624 +:10CA60008FDBAEB67F6880466AFF30DA93324FF7CD +:10CA7000BE95DBD7A7295C1E8B12E38C478122E38E +:10CA8000B98A57E7855CC47D5C10F7F5C3E03EC00A +:10CA9000772C0C01EE2B10FB3BFFAA2BA53664FE76 +:10CAA00067D5FD3DBA56E85DC2774148FB9BEAFE7B +:10CAB000687887CFF7A68AF79A120BCBEB6333C15E +:10CAC00047FA3DBEFE0E9657E87733FEC72A251F6C +:10CAD000FB9FE0B2911FBD543DE7C740C4656AFFAC +:10CAE00028739CE85D932785D6BBB47E29C72D604B +:10CAF0008BF0ABADF8EF6A1ABAB97EA3CECFAE8594 +:10CB0000903ACD4B7E753495FAE7E17E73479A2DC6 +:10CB10001887C9623A998E0B4765A7E53AE7C59E23 +:10CB20002C837162D03F1E5F6AE0B8E8BB25976B2B +:10CB3000699DABAAD20DA4AF0E575E8C5B981BC447 +:10CB40003778EEDB3D191383F54D55967A9FD05F0C +:10CB5000ECB71F55FDF6C3EE23B6D2DC20FEEFB8CE +:10CB60002FC6719C563B2770FD73A2F51B5A8E6928 +:10CB7000720B651E765D5E6DF13D8EA42E773AFFD9 +:10CB8000B49CE448B5C58E3DA0AC60410AD961159E +:10CB900072F1730FE3FA0EEFB450180ABEF8C591A4 +:10CBA000310A3E77163C3283CEC90470AEA5F8EC4C +:10CBB00012C9F926B128144AAC373439B874CB827B +:10CBC0004334CF9C9D924476F139755DF24E89F9DC +:10CBD00023FE59C9778714E4A32FB60A7E59B253AE +:10CBE000F05179757F033DDFB4D3A284F2D1325581 +:10CBF0003F2CDB29F865F9CC5D873248EF143CC344 +:10CC00007197FF4DE70AE769AC5A34C98FCFE754F3 +:10CC1000BF6724FB10BCAE9EDC90F791EFFE7E0A4E +:10CC2000CDFB92C9F9B8121C6F4DC9527E7EEC251E +:10CC3000E40B85E2E1DE19F14417F1771EF1D9C664 +:10CC4000B74639E89C7926F91DB4EF136369FCE512 +:10CC50003BC2E2676ADC7509FEDAE2883E7D7BE36F +:10CC6000F6B0F85158FC279C7FADE9B6605C362BD6 +:10CC700038FE50FBAEF1EB80DDA5EE4B57918857A7 +:10CC80008F8F737942E5F3E474B13F5AD9D5FDD55E +:10CC900087CB495F17589C63097D889D6EC7A9E6BD +:10CCA000359616901A2CB34E7883EAF7B4601D714E +:10CCB00072A49BF8BD7BED1F57C462FDFE64E92D95 +:10CCC0002A17288E19715816A48B7D59945DFA166F +:10CCD000C201D5CE1AB387E3741B46E4D139C479B7 +:10CCE00088CF500E7A0DD7D0DFA568EC1B43F02813 +:10CCF000B746803104BF0A7BACAE7E47F2285DFFA9 +:10CD00002AC5A16BBF333B47D75EED9CA06B5F95F7 +:10CD10006EE7737CA8E0F2FCD5B8CE43DD663B41FC +:10CD20007888704908E282F46E267A0F4D797FCCBC +:10CD300003B89E927423AFB384626BA4E78D228EF6 +:10CD4000F8E000DF01F3FBA61AC9F738EEF383D54C +:10CD50004B98EF2AE4130D644F6CF209BE6B2C7CE8 +:10CD600084F97913A07D85FDEB7E21B1BC5C5A6C02 +:10CD700062BBB216DC317E69301FAD29395DCDE36F +:10CD80004C91ED84E7922DFAF6DAEA19CCC7756179 +:10CD9000F2B25695A3E1F2359C0F7F53787934C9EE +:10CDA00081F9E9FA7B82DF4842AE7B51AE937D3751 +:10CDB000941C1A90A361FCB72A5DE837ADAC907360 +:10CDC00063480E8D37EBFB69E507E8E71971033E11 +:10CDD0006AB372F9A7363B97FFAB2D99CB8FDB1463 +:10CDE0002E3F69CBE67255BA90CBF1ADB8CFF121A9 +:10CDF000F2B9DA6DBEDE390A979F8702063E3F8799 +:10CE00006E5F1BEDB0A9FE09BEF777E9B1DC7EA627 +:10CE1000E8139B941BE4E3AEC0291BD92FF3C06732 +:10CE200022BD7C0FF84D6417DE0B01AEDF0F68D01A +:10CE300063B900142E17818BE3B20F403F48E964B9 +:10CE40003703C70DADDB5F7FC68BF3E5915E267BB5 +:10CE5000015D9BD073B24FC52D3ADDB5219DE47CB9 +:10CE60005CCF893924676F3701D9A7C489A46FE2E1 +:10CE7000557FEA9DC2C9110BAFA1DFDF4D5BF84FB3 +:10CE8000E9A1FAABDA63A67EB8BFF5AADFC5710DDA +:10CE9000536CF6B6F58E60BFE7D2855D1093E6DA87 +:10CEA00042EF5B4928331D4EB667347A518348B54B +:10CEB000A8C776ABFDB5F7C79B3D66BA0F58E26CC5 +:10CEC00031931F53B6654244E01AFBFE6E9AE75F4A +:10CED000D313F5F4093922F865A8FDD3F6FDBBF2AA +:10CEE0008DC61F4569AED7685EA3013C848331AE11 +:10CEF0003E9970017B1DEFFFBE74E9BAF6595ED111 +:10CF0000271B26929EAC3638C7E27EE4753923484B +:10CF10005E1C56FDB1BCEA5307330AA89F6C97B05C +:10CF20007D53E5E408D2FF9B6CDE54C2E58CE48CB3 +:10CF3000F829C99DE7653BFB4F20F4E3D2EAA4340E +:10CF4000DA87D925852C274E573BF2493E7FA3E24D +:10CF5000FB3975A573E916F78867AA9E4AA571DEA5 +:10CF6000291C994FF3CCAEB2F0B93D7D349DFDC084 +:10CF700063054BE7AE86A0DCBA9BFEC67EA7B7CBA7 +:10CF80003CCEE94A07C7A7EF26B985F2A26E8BCC43 +:10CF9000F248B3FBDEA906D6E36B4ADEB771FF2A7F +:10CFA00013907D7857835E0ECD71EBEBF15B847E41 +:10CFB000FDBEF65D6FBAFE9E2DDCBEFBDC26E20CEC +:10CFC000B5E89F7A10EFF24A87E933F2535A25E623 +:10CFD0000B4D2ED5560BBFB5B672C1442BAE3BC61A +:10CFE00037592279575EAD5490FF3AB3529A146A7A +:10CFF0002FCEAC7C88E33E33B73C64A6FBF5983477 +:10D00000F75F89FF4DCF972B742FBD09E723E61FEC +:10D01000EF7BFF435ADFEC99ABDE1A45F2BF130FEB +:10D0200002EDB32F2B8AF6F9F0F68B09EC770C9C06 +:10D03000838D66B2AFCAB69F1F4DE7205C0E0029F4 +:10D040005FF237C19D7C5DBB50ED379C5CF3964130 +:10D0500036F9C5BD12F825F4437A4B93CA88DEDE53 +:10D0600014B351949965424F15BF6E235CAB81F5A3 +:10D0700054EFA822AB689FC1F78AB302B68F69BF8D +:10D080004AFA41A75F67050C5EE2936957AC3A3DE7 +:10D09000DB1430F03D6429E8F5F7BB11D179845BEE +:10D0A000B955AFC72BEC7A3D3E6B44F436EA77476F +:10D0B000B25E9FF7BEDDC0F1892A6582EEF96C6B26 +:10D0C000AA8FE8BC337B8A6E9C1A10F7D0B3B1BC30 +:10D0D0000DCB99CED241ED741F3DBBA84A375E9768 +:10D0E00019B2293ED32F453AB7215FD658DDFAF55C +:10D0F000014C273C2F47887BC6261A1FC7696AFD4B +:10D100008AF96E6AEBB7EC5F4CF077E8DE9B78A0AB +:10D110004B378FB3C75E4E6E78FE71E7EB543E110E +:10D120006BF5CA385E41C05D8ECB8449675A5EA7F5 +:10D13000B2D52AE67924127189A179C5BDE62332D8 +:10D14000ACA578E96583A791F4CB7A83AF6301D26C +:10D150007B54B2275279B3C1333703F9B6A87F6342 +:10D16000790CD178A5E3752ADB77C85E4B0CED7B93 +:10D17000F58877280EDB21B13FD06433B07FF945C5 +:10D180005C47DEEA1039FDC54FC4BD2E24BB9217A3 +:10D1900024505C2F83E33FEEF228978C3835EFCE96 +:10D1A000E2F8DEC4ACD207683E396ABA55E85F637C +:10D1B000FF80FD9B46EDAEEE146C8F2C177207EED0 +:10D1C00030B1FC8A34B8A3D5A01FEB21F31DA6AD66 +:10D1D00024FF3ECD10F237F2DF41A1BC8EC8788F1C +:10D1E0003C8EDEBB5302F24B34FA6AABC145FAFB0C +:10D1F0003F67A871080AFC61BF9AC4A33B295EF08F +:10D20000694694B867AA56DE34513CCC6EB4939DFF +:10D21000177FDC6D1F8774762614ECA7FDEE3CDECD +:10D220005342E7F7D30C45DCC75596AE2EA5F93629 +:10D23000CB40FD3BEDD347507FF039C5FD2CC525D4 +:10D24000B06B7C83F23ED96770C0C4FDB4F9D79748 +:10D250001DF7D13AE28FBB96F37AB36DCA5807B780 +:10D260003BEE1D47FA085FB70C7D8E3FD99098487A +:10D2700072AAA6D49E48F93E35CF2048B7314E5EFB +:10D2800092EB7603A8F5D987A763FB8E813AF80164 +:10D29000715F4FF926A305FE1158AF9106FAD74EDC +:10D2A000B7713C446BF74211E22B6BEDEE5A1ACF8B +:10D2B0001E369E36BE2F63F6E175B984935DB58741 +:10D2C000ED896E62E06FAF4A848B968F13292B93A2 +:10D2D000882F171A943C2AE7C6795ECC48A4719D22 +:10D2E0009954FF24CA35B2C4C1F2E7B36749FE4C72 +:10D2F00037B15C5F99BD81EF0D3BCDCAEEE3099478 +:10D300004F80E7109F9B7EF66047178EBBD2FE15BD +:10D310009F2FE4DF3B495F5EE831C4913E5A280FFE +:10D32000ACC70548C32943B04EE76E61703DAE0CF3 +:10D330002B9D97E0FAAC585FA4F6FF28E3DEDA27CE +:10D34000689F175B799F57AB67787D1C6C94910F32 +:10D350002F66DF7617CD7B71032A17C4B4931A4961 +:10D360008F27478A3CA9047736C5D70EF508BBB28C +:10D3700003F7D9450BF322DF4C0A8E77B1F8B46D71 +:10D380001C8D538C5614AE6B51C00C0AC90D23F87A +:10D390002D285F3A8B17BE9E9E407CA970FB711AA8 +:10D3A00007FDC4F22CD7A10C8E036BF1CE9F7EA794 +:10D3B00078E74A555EAD2C5A93CB7923D325D6F71F +:10D3C000D33205DFAF6CFD92F105A3C749FBDAD478 +:10D3D0007A91E59A56EF5D23E4C14613DC5F8365DD +:10D3E000D3DFE4FB299E8672701DC9C526F8BD797E +:10D3F0005588DD061DE707E4E07843D0AE336E962E +:10D40000594F84D36BF454F37C35927D2EC5FEB214 +:10D410005FD8556B447BAC26C23E57C2FAA5B1BF5C +:10D4200012F514FB5C03D6EDCF7F23EAA3ECFF6873 +:10D4300070A25CCD4C98C37587FD8F54CF198B7546 +:10D44000D4971CF3C4FDFE2A237A8E97ED4B1BDF85 +:10D45000275CA88CE078D750F8CD69FDADCEBF1819 +:10D46000D42E4B423ED68B737FB66A14CB2FC87036 +:10D470004D30907CAC1D934F72C83A56D86F498896 +:10D480007D11FEBE89E7D38A783567F6DC178DE714 +:10D49000614EE7D3E7A5689A6F1FCFD7445953F879 +:10D4A000FCCE1C4FF4587CEFB014384972B279E6C8 +:10D4B000914CF223F764DA557BA03F83F6651E7822 +:10D4C000D8FF98A7C61D0CC89C6457D5D9324CD438 +:10D4D000BFAE3ECC5E033FFB27B5D5E1794221715B +:10D4E0000B99F21C7AEE33231D261587E638C758B0 +:10D4F0007A0FE9728CA5B8A9847462DD94D0932464 +:10D50000ECF69D8A44E739DBCAF7C391B71CCFF329 +:10D510005CC38EEF6843FD884768575B17979B3362 +:10D5200041C85D63C0ECC471561C07D64715721321 +:10D53000CBFD0B5D0E08B5D3A6AA78C67489B828B2 +:10D54000E2EA245C13D2C16FC07D4D78EDED9DED14 +:10D5500012F58BE27EDA3E4E1B011D117141BC714A +:10D560001F9CB40F1AEE88E744B217DFF8F660315B +:10D57000EDE31E95AECE4871CEFB5F8DF0915D1050 +:10D580004E678D4A4F38BD8B6F90CEC53748E762E6 +:10D5900072361287A6573BAF1A4EDA7905554ECD33 +:10D5A000AB776C5B2F05EBB5D50EF6FB343A07F382 +:10D5B000CF76E55AFC331CDF4CCBD4F483901B1A96 +:10D5C0008E1A7D9A1CE8A4FB421D7DB15BF5F4C563 +:10D5D000F2798A69FD1F2C97E428233FAFCB4EDEFA +:10D5E0004A71C8989E0B740907DEB1693C7E4CC72E +:10D5F000D74076774C6B37F71FB49EB07568F23022 +:10D600007C3D9A7C1CBC2E554EAA725393972528BC +:10D610000058CE912C96C82EF6E8ECBD5278506793 +:10D620000F965B1F0A8B77FD275DFF3B92D7E8DAE9 +:10D63000AB94A775ED77663FA3ABCF74FE42D77F5F +:10D6400076D1565D7B8D7587AE5E1CE8613BF350ED +:10D650005B25FBC5B79FE9677BD3AFFACFBF57FD0B +:10D66000E737C87FC6F3F916F9CF581E6873F2F38F +:10D67000FFD956C4E5C13617973D6D6E2EC3CFF561 +:10D68000AC57EE3692BD5AD4B391EDDD47D23DEFA3 +:10D69000903C9B6DF0B547E17E4C3ED12173DEA4FA +:10D6A000C7A9D3B76BF74F7997ECAAF88332442810 +:10D6B00043CBDF982B32B842E2F131D5FD40F9D2AD +:10D6C000316A5C6596119EB0E0FED6D88CFE91B8AA +:10D6D0005F87C78AB80A896BBAFFACB702DF9BD6EF +:10D6E000D74BCE76E0E75EBA57C4D2EFC96752DCBB +:10D6F000D624F5BE117F2C46F0D278B24B86DB29BA +:10D70000FE91106F24BD5E478D48E75C9CF3667CFC +:10D710006FBEAD83E342F30E3CDEBC009FC313DE5D +:10D7200042B69334BDEDFDD070F5D61BD7DB87C96B +:10D73000B8A43C0249C40FBDB1468ECB85C749761B +:10D740008C1576F0AC76AF1C4D7ECC7BC0F799B3D0 +:10D7500055BD8A78ACB3C405CFA1C6FF3576A33FCB +:10D760002B9AF4CE33E5F45ED35185F108B7133428 +:10D770003F47E37B94F7EDD4FFC27160FB6D72AF5E +:10D780002FB04919EC770CE70F69F477B7D533DF81 +:10D79000EC6BF370E96F6B54F9B185EB6FB4B57254 +:10D7A000FDAD362F9707DAD6A9FCB891DB0FB63D51 +:10D7B000CBF5436D3E952F77F0F3699902BF2B634C +:10D7C00055BD692DE5FB17308A32C80F8A17AEC3E5 +:10D7D0000F4DC9423E87F3C5507C8016B342F726F1 +:10D7E000F3511F921CBB07BCE328EFA47EE946134C +:10D7F000E7A57E4F7EA8B36D36513C225CBEDD05A9 +:10D800000AF3DD607DEF71DE88BED7E49B8C7E1A63 +:10D81000E9298BFC9093E208DFDDBEF0B4101DC354 +:10D82000CF27F6C5948CBE6E1CC5218FBDE0471274 +:10D83000CE16BA0EB8AE71DF1BEE5776A780AAB728 +:10D84000BE1B7D68299A68DF87A32F25CB559C597D +:10D8500018D467917CE6B11C6DE33C68B3C5E77BE7 +:10D860009CFCBBDF46883C089B2BB526247E53914D +:10D8700029CEE3E678574526DB07BD2FFC339D977D +:10D88000CE111C6F09F79BBEEC291F196A2F85CB9F +:10D89000D395F68B7CEE06E979C9C07A7EA5013C6A +:10D8A00094E7946F01AB84B49ECC2CAB13F3167346 +:10D8B0005EC705BBF1BAF7A32B5BCFF3F843B61BEA +:10D8C000443ED5CABD85F685217182CD99929A9F35 +:10D8D00062B47F660DE277A3FC5CD25FAF930F3F2B +:10D8E00038FDE9FAB53E4E856A87F09DEDA9E27DE7 +:10D8F000984F1ED177BA0F7079A88C49F3AC27FEE8 +:10D900003249011BB59FDDFD4D06D9D1676F9F627E +:10D910002F85C1F2F046E59F26F73439F8A459FD6A +:10D920002E66208E933081E238DA7E6CC9D4E723EC +:10D93000849FB3BE09B861486FDFAB225FAF2F2A67 +:10D94000D227E196BBBAFF709CF2A3C0AFD7DF2EFF +:10D95000AB8DF360273638598F03EA71325D71A5BC +:10D96000BDA1E35618851F044667F6BD21E7A65DF5 +:10D97000CDB7D881257DAF14DD10302A21FCF69A71 +:10D980004A6FE9BCE9C0FE64838BEDC068BB8807C1 +:10D990005558A12082C6FDF6622E8D3B4BB513D69D +:10D9A0009BC04FFB36B268824476E2CBF1AE2EC20A +:10D9B000DFFB54712CC79B29B67A73501E55C8D50E +:10D9C000C90BE8DC2418F9BC6A72A6CEF667B36C02 +:10D9D000A0F8B693F73B1C2F80C05B9BF03D579798 +:10D9E000645F0F83CFB1AB6BFF71B2EB87B34F872F +:10D9F000934FE1F243C33D1CE797E3DDC7689D9A6F +:10DA00007C095FAF16376E8600F3E9CF5CBBDCB4F0 +:10DA1000AED59222E433F85C37E17EAFE87A08E8CD +:10DA2000FD7C59E4C3F657097F28FC7CFF45957BB4 +:10DA30004DAABCC88F076B32ED8707587EF655E5B7 +:10DA4000B01F2265C5A972A33FB33624DF52B36B62 +:10DA50007AD5EF4CE6744578E59078C1A54C713FD6 +:10DA600037C7FAA54E0EAE68FD5A27BF56E40A7EA8 +:10DA7000C86F5726523ED96AF57EEF4AAAFB0AC9FB +:10DA8000C5651DCFEC3EA8D07C5B7EF221EDF30195 +:10DA90009B90CB0713199B3E499F1734C77A5ED5DD +:10DAA000FF5B75F75D4766BECF7EEE9CCE115EC212 +:10DAB0005FA34BF38F3579DDBCEFF393A4B77BA560 +:10DAC000F3271F25FC5EB5B07DD64474C7B35F1D38 +:10DAD0009585FBB4EB8081F16DAEB26C93396EA885 +:10DAE0008CAB8D0AE2D2F7F9B5F39534FAB4F93478 +:10DAF000BA7A2511A7D0FA8DCE12E7A74E8D231C36 +:10DB000031F59CA37D39BBFB5689028C03CF637B27 +:10DB1000F2E8BB1D6D5FFE5FD949F341D8CBC70D5D +:10DB20006B1E36235EBD1D9B4C1C47FE9EF6914628 +:10DB30006F7B14F8683C7081624FE2909DC84FC4BF +:10DB4000451A93C86F1375C9F6D6D724C74AD4921D +:10DB50009D486C2F56C97E526AE1FC3F2B6CE472E3 +:10DB6000BDE454A89C26B98D227EED633C6740CB72 +:10DB7000187A7EBBD5996C34D0BDA2881BCE8D5D42 +:10DB8000378BB731099EA4FB0DA3D96B4A22B95834 +:10DB90001BA3E6670A9CB47CC946FC2D465C8CB18D +:10DBA000A018B17F23DAED26C4B76EE9BC9FE75217 +:10DBB0007F7B31E3A8E55BD27B84E35D075B669204 +:10DBC000BD73F7FEFF72C885CF3F8FDBC871D8BF2A +:10DBD000F46CCB7B09FB2C3BD2CDDF3D35F97B666A +:10DBE00010BC2BA09FF591867F03F470791FF4730E +:10DBF000E9013BB72F0427978BC1CDE51268E1F20D +:10DC000083515B9AF124C0BC911B4C5F421087E5A5 +:10DC1000B14F4CA279EC65CF8E6579A3DE4769F7E9 +:10DC200026E1F71A35B136BEFFD0EE376E3678569C +:10DC300064897B2C71DF7932CAD7CEF71DAE7B09A0 +:10DC4000EFBE5833D077957D89429E78CF02C75F6B +:10DC5000FB4C6AFFF30AD70BCAF3453EEB6585ED33 +:10DC6000B3A9EABDA3266F0B6E1579CA7055F42FC0 +:10DC7000E9D7E7A71550D092DEFF46E1FB8A695746 +:10DC80008CD795C77F53CF5541BCA12534AED19ECB +:10DC90009C24E2826ADDA2D839CEF17C9690937DF5 +:10DCA000D106E613FCA9B34E223AC5BE4EEDFE776F +:10DCB000951FD1E14C0A7E1738D5E8DF4FCF57A822 +:10DCC000F21EA531EBAB62E24FE2C72EBDFC87E44A +:10DCD0005B395FE0369504CD8F9570AC8638E2E70E +:10DCE0001E99F916FAB974819DF57D1938B99C0E03 +:10DCF0006E2E91BFB9AC848D5CFE083AB8AC861E1E +:10DD00002EE116A7932EAC0D56BF2CCEEF6376CE28 +:10DD10002BA95A6AA03875C1DD229F74385CFEA019 +:10DD2000E2383C2E789027DD082E1E415F382E63A6 +:10DD3000B2F91C69B8687844802F99702C81804CA6 +:10DD40002585A6E9FD523C8E542F0717D72B86C593 +:10DD5000C3DF4EF7EB45018F91E31CE178940B3E56 +:10DD60000997673DEAFA9B89D6C4A0FCB994A570CF +:10DD70005D934378DEF8BE385C3E69CF0B46945D18 +:10DD8000545094FFF9C5B31C172F9858B69A52A156 +:10DD9000CE655DE2B878C1D4B257D2B0DEFFE2659D +:10DDA000511F5F36D1E40458B3E6CA9CE9587FCAD4 +:10DDB0008C58B01FE858437146CBA3C0F2DE6A11FD +:10DDC000CFE574E127623F2FD95B1A7D168BB0EB4C +:10DDD000721B94D512E2BC3ED57386CEB3361E2894 +:10DDE0004E96AF37A976CBA52CD52F4F704C24BAC1 +:10DDF0003F4B75F7921EEC8B12F7A25AFB0ED52EF5 +:10DE0000BC44397385439763B25D17B3AEF1BCEF81 +:10DE1000533307874CD99EAFA97DE5886F33491FDF +:10DE20009F9B70E4C98023C82F1282D680F4B7BBB1 +:10DE300054FDA1E5DD93BD84F816B83DED246A26B6 +:10DE400037F4A7B62A3C9E9C4DE3C9FD4B883FCED4 +:10DE5000C51E317FCA7C3D46ECB72A1FF6EE7BFB20 +:10DE6000D19B44D50D21FCBC72DFD75F7D84F8AE19 +:10DE7000BC607352F7BE68B1EEA9DDBF584DF21019 +:10DE80008D5BDDF9D5F8FFB62E0B7F7734B53BE718 +:10DE900001EA5772E4443AAD67DA89403B859BFA60 +:10DEA000F6BE7F93E03BEDBEE8B2F47DF4E8695541 +:10DEB0005E9FB60AF9ACE587ACDA2BF1FDC92A35CD +:10DEC0005F6C15E501E35BCD074C7CBFA3E57936BC +:10DED000AAEB3CABDE3B346E5924F2837DC2BE55C7 +:10DEE000F01F9DC7C9C78D61F159F19D6D734758EA +:10DEF0007C764BF935BFDB0ECF2329CC56F3485245 +:10DF00002085D7A3E6590EB57E2D6F6409B88AB374 +:10DF1000D92E75CBC48F8546913F5D213FE6B4D3A2 +:10DF20003A5372F3451EABC8FB5D1A21D617A5E61E +:10DF30000BAF7A4E061BE363E6FC9AAD789C8BC868 +:10DF4000FE3DF8DFF8FB93A5EA5AB4F3F3E03A8913 +:10DF5000EFFF604B3CF3D8F8172C2E5ADFF817462A +:10DF6000BA08A7F16661076F7DC1B28EEAED6B2337 +:10DF7000BD24177F13DB3F9ABEB36E8F10F95CA4EC +:10DF8000AEE81E6E7C5A7F1AE9DBA66CA15FDA55FB +:10DF9000BDABDD436AF7D7EDAABE5D15953992FC9E +:10DFA000A7817EF6D1BAEF90DB553BB880E824BB61 +:10DFB000AE7FB4182742AC63FF7B778D20BBF4554E +:10DFC000A37B04E57B5D389A1603D7C9DF2AF4E307 +:10DFD000665C27CE507074037FDF53F0AC51E0A233 +:10DFE000F2E19E36177C620AE2AEADA342DE596EC4 +:10DFF000A6FBBCC5C07992ABDEFE97762BD6573D0B +:10E00000CD5F1020A9D931A45F0A0FC8FCDDCD6D0A +:10E0100007449ED31E35EFD2926C002584BF229414 +:10E02000485042F86844769CAE1EE51CADEB1F5389 +:10E0300094A66BEF54F35DB43C65CDCE8C75DDA238 +:10E040007BAFA447E45DC557E6EB9EC397E21C1483 +:10E05000E13FE14FB6C874DEA606007EE9A0EF8678 +:10E0600036423496B7F5EACF0BEE1FE7CF58D43CD3 +:10E07000AB88A346DDF7E916DB0CCEC7B60C937F61 +:10E08000B5453B3763608CEEBBF401BCF5F95893A2 +:10E0900020E3BF161710BEE82962FB057A83DAC7B2 +:10E0A00080CF1B82B776BEF64007EBD544B71EF78C +:10E0B00091F57ADC4779F4B8DFD4A8C73DA5458F40 +:10E0C000FBCDAD7A7C1D5E3DAEE9EB6ED3F51FBB9B +:10E0D000B14C57CF7AF647BAFE39BE5A5DFDD61D10 +:10E0E000F375FDC7752CD4B58FEF5A76437C30C1DC +:10E0F000BF4AD74FE38389077E7A4D3EF0E23F96D1 +:10E100008FEAF71645883BC54987DBFFA2C046204A +:10E1100079F77DF9E04FE17C7083F2F3A0AA6F6795 +:10E120001D107962B36C56CE2343BEC9263BE20272 +:10E13000443A496F6876805B9533B36D46D61BB31E +:10E14000460839A4E56F85FB6F9A1F31BB480A8BDF +:10E15000D3E9F3C887BB7728ECF1EBEA138E824C46 +:10E160007AB3F0CF4A7B14CE33F184B8C708F717DF +:10E170000B029E76526F937B514D2BE43F1EF89A13 +:10E18000E239256AA9DD7B84FB3950BD9DE5BFD905 +:10E19000AEAD43C8DF707FF31159D81D970D1EB681 +:10E1A000432D24FFE4A05DDA5E2AFC4ECDDF7C37F0 +:10E1B000C5139F43717B437F3CB0FD1D10F76AD0B0 +:10E1C0000174EFD43790FFF30F75AE5CFE0E96F33B +:10E1D0005D5E9436D4D1FF5F80B2D11E9824C233E5 +:10E1E000F4734B8E272507E5ED2949F8810B8A3E0C +:10E1F000F9D52B48EFCD39625F473674701CE8E5DE +:10E200007897929338F81E2ABCD4E25E5A1CACB3BD +:10E21000CDCFE5885C27FB09E1F1A88041C417BC9C +:10E220003F15DFA17C41444D09DA1D17D699D8EE80 +:10E2300000D56FBE57DD172DBED0A0AEE3140ED1B2 +:10E2400088FAF5DEAE3FF0BE2C4FEE55E3122D4EB0 +:10E250004AA55C34C6C6F919E09AE814F1272DDE08 +:10E260007093FC5DECA4E1D6BF3CF9735D9C0A762B +:10E27000C6DF501E6770DD62FC5355C22E385575DF +:10E2800013E74306C73FC771AF7B5BDED3F1FBFDEE +:10E29000AD1FE8F87B81F7635D7B20A1DF4471BD92 +:10E2A0004065CE74B22B70DF1B683F03BB47CDB80F +:10E2B00007F13CFBAA65D28DE4632F4FFE82E73F56 +:10E2C000D1D6C3FBAAADEF64DB71AE07DA025C8680 +:10E2D000AF4F8B0B68A5F9F7C0F241CBBF1C2A5E8C +:10E2E000A09D9BCB39E2DEFF11D97552F83DCCCB16 +:10E2F00070799589FDC8136ADEEB0935EFF5849ACC +:10E30000F77A42CD733DA1E6B9F6996CEB289E7081 +:10E31000421271FD3F8EFEEA05330EFD528AE7EF91 +:10E32000E85CF595F57F6520F9971048A5F3F4B3FF +:10E3300024CF1A7A2EA13B318AF3E0BD9964279E3F +:10E340003178F3284FA93BE7641DF95B6722BDE7ED +:10E35000C802E9FCF50775E45F9D318B73F8C6AF21 +:10E360005FE773F7471C94F20FBD7B24913F660B68 +:10E3700098E9FE6857A2E7E7343EE559F1F783F8DC +:10E380009CF8538B47F69984BDD7A7DA7D9B73C45D +:10E39000FDCB3FE608FB532B5F56CFEB1B6A5921A1 +:10E3A0006FC8E4EFEFAB2D9CC78DF3BB280FC5BB47 +:10E3B000CFC2F18DF0FCA4FCDF59FC52483CF3C500 +:10E3C0001C078F93902EBEA34FB83382E33210E820 +:10E3D00049A51CAB017A8F8A7CCEB314E7A573BA2A +:10E3E0001874F9512FE608BBB4F9ED5327294E7480 +:10E3F000678EE7DF721283F1D2E6E8FD1C5FDA9BDD +:10E40000A3F07C4827FB7D16199EA0FD69B606F88F +:10E410007B9AE1E2D443ADFBEC033DFF94EBA0FC1F +:10E4200026652CBDAFCD8B74EC25DCB5F56A740484 +:10E43000C7B9FE39D0E2AF5AFDC8CCA732E9FCE437 +:10E44000539ED835F4E6111587132608CB23537154 +:10E45000032D8F2C97E5D439755FC3F7299023D608 +:10E460009F8F7A97E2EC9648D415F9C171B1BF87B6 +:10E47000EE511A5A1CAF1C441C966D1FC7DF15685D +:10E480007468E35E49757D9813720F84FC26FE3F25 +:10E490008FAA08E68FE67D1F9CA4FF6FE1C117C716 +:10E4A0004D247CB5F7C2F1455C5308CFC306BF5974 +:10E4B000CD633B9DC371EDC39C27A6E1FB7DF1ECD1 +:10E4C0004BE9613FB26FEBD7A99427DBACDE433554 +:10E4D0006BF71F9DFA380FE2E1A5B8C3E07B0FE0B0 +:10E4E000FB138BAA3F2CDAFB638CBAF79F8976FF6C +:10E4F0008DE8DFADCA09ECEF33A87165D23703713F +:10E5000065551F15AAA2483A2EE2C98554929ECF9E +:10E510008D61FD54A0CD8774D1FE3D2979396E33CC +:10E52000A0DFD5F8B2BC6835C7E38A60239716D957 +:10E53000C17AD1F29188C30CC4939E7E4BE7D7FF7A +:10E540001F646349F49050000000000000000000C8 +:10E550001F8B080000000000000BFB51CFC0F00330 +:10E56000095770A3F2EFA2F167B1A3F2E5B850F931 +:10E570007CACA8FC1C34FD84F03F4ED2D4C73333AE +:10E5800030A403713E109733E3577B8B89B07945F4 +:10E5900032105A14487B027131106F116660D82610 +:10E5A000CAC0C021C2C070549834F711C2AB05A9CB +:10E5B0006BDE28260D2B29A2F28D741818527419BF +:10E5C00018D6E941F89248F2478162C63A10768E31 +:10E5D0001A038333902FA088DDDC5CA0BC0B50FEB7 +:10E5E0001AD41C0020DD2117680300000000000081 +:10E5F0001F8B080000000000000BDD7D0B7854D558 +:10E60000B5F03E67CE99772627C9242410C2490861 +:10E610001224E024241010ED24040D8A3A022A2248 +:10E62000CA2462A5081A116B6CD19C900701C1061F +:10E63000B4BDA828138C8A56DBA8A8D4D67B07A122 +:10E640001AF1D16051B16A1BA8D7DA5EF5435A9529 +:10E65000AFBF967FADB5F7C99C337980BD8FFF7E84 +:10E660007FFAD9CD3EFBB5F65A6BAFD77E8CCB2D5A +:10E6700033ED3B8C9DC03F48CF971863998994B187 +:10E680000EC6CA31D59D91146B3EC22293303544DB +:10E690003D4B9AC59883F13F47B0ED73C7644CBDBD +:10E6A000862380A9F2519F9B979D6089766A1E8B75 +:10E6B000761733D68C9F7244E320634A76E8C10D07 +:10E6C000F98CE53227D553826EEA47D1EA5914EA2C +:10E6D0006749D15C1A772E53D854C63CCCFC0B3317 +:10E6E0008457CD2A4AC57ACC9FCED8F4C43CCD7489 +:10E6F0007B236B55C659F22A5BD8EDC7F6319AA732 +:10E700007A3B8B65C078ECEBF9FABC4943F763A61A +:10E71000E67C9A47870E45CB2097E90C3D8478909C +:10E72000069FD7B4FE79390DC493655ED3869B5797 +:10E7300073CA69625EC141E16911F332E7D1FFDD5D +:10E740009CDF10ED92E7315479CBE870762D74613F +:10E75000A40C3E3F15E707DFE689F9A97E27D10D16 +:10E76000E6356FB07929AC3E2CE50F9C97A2B9092C +:10E770002FE6B88ADBD9AA4C49C0B78469BCFFFE32 +:10E78000F143C4970E8D51BB6A165D82F3073EECD0 +:10E79000253EF48709BFCE6C283F03D3F04203F037 +:10E7A000D9B2673A2BC676FE105B01A9D31F6573F9 +:10E7B000A15ECB378E85C8972C5846FD9B702C6286 +:10E7C000B20D3FFD7C2CE048C6D7CED18CF79344E8 +:10E7D000FF9D9DE7645F0DDF1B104FE503F162B6FF +:10E7E00007BC3560B9C91F261FECEC14F80A0E4EA1 +:10E7F0004FD5ED68553206F2416BE6549DF7031D87 +:10E80000651148F4B749671D889760996CB8005F37 +:10E8100013AAE3D975F0DD85F382FE6FF746D7E3DF +:10E820003C9DB25E25C3373DA25579A1A855E5F3BD +:10E830009BED28F61C01FEDA5253905A07E9CF9956 +:10E8400034281F6D6D84B9007FFEA4D14DE9571F98 +:10E850008CA7790CC56FF7346A2DD6757A4FF4EE14 +:10E8600039A7E1FA0ACAA1713A63D9B52D39DF4552 +:10E87000BECBD14B1D9067159282F3F220DC90EF56 +:10E880004438CA098F9D5C4E09F910E4F8F48423DA +:10E89000610DD2092C1296A0DF8C9D2C143779D3F0 +:10E8A000821F132F8087C7B0BF8260C78B0A7CCFBF +:10E8B0009FCB64D582872D3532355A75C1693B1C93 +:10E8C000F909B83F157CC372839C5F955036C231FD +:10E8D000D4FABB1BF0544CEBB85B42BE1E15613141 +:10E8E000E4E3F5E2FB7216791EEB8D5A61C851C064 +:10E8F00077AB64CAAF6C867CD422E0BE7B9E97E087 +:10E9000069C9D13A71ADBE64C2119586E2B7970666 +:10E91000E3B7519148185AB2A7E4E87E6CEF288A11 +:10E920006BD8558A64C49DD06F9B39BEC17AB1DF64 +:10E930004C8925FE607C9FAEEF40B9F09EE08BCC09 +:10E9400050DB8D32C805F7FB73FECC605EC1906270 +:10E95000B8209FD9573B17F3B97A77A5AAD3F7C345 +:10E9600088778F3F2261DE57DE15C6AE77C8D1F7B4 +:10E97000104E77A85A620550BF3EC4100F77A911F8 +:10E9800086F454671AE108E4B7D64E65B516FEFA68 +:10E99000048126B9C0C2B1E2049DEF76707ED954DD +:10E9A00056E5B9D68FF5BC04E7E9AC2CACF9913F3C +:10E9B000802D803F54E40F9DF8E03FB01F3DA2BF83 +:10E9C00088ED2604B52A4927FE1F8178BB4B0DE54B +:10E9D00060BBBB6A9D0B631C2F07912FBD321F07C5 +:10E9E000FED309FF22BF8BA904977311C757BA9FA3 +:10E9F000C57498A86331CF67E82C8613F722DE260A +:10EA000027F0E6457C21DE0A43383336AA285C79B4 +:10EA10001AC7CF09ECCFC73AE20AF0A15B8F199869 +:10EA2000DEA3D4FFE13698C73D3D8E90C12CFCC8D3 +:10EA3000801F2725F0347229ACBB22C11B2CC19743 +:10EA400066FD93E90F936F143FD76FA69E00BE4DEE +:10EA50009350EF699C6F4F551FA90D0EFD439467AE +:10EA60008A26231EDDC29668D5E719889F2FB02F0E +:10EA7000989FA3A384E804DF483FE19F8C74D3C32D +:10EA8000B10D9290875313768AAB506671CB3C954B +:10EA90006C2F8B5BED94858684E3DD2CBEA90D4E37 +:10EAA00082C38DE39591BE89214B2B7E16F7A0BDC5 +:10EAB00000F21CFBC3A14E8CC5FC0F693CB3FDFAF0 +:10EAC000C252E2D3E4792AD80EEA48D0F044FEC01C +:10EAD0007643E32769BC0576784FB99D5FD13F3215 +:10EAE000DB140CD74E611F99F80224CEC10ECA1355 +:10EAF000746A53D96E2915F479F6F70DE4EB36C62E +:10EB0000E9DE8E29D09955CB36B9E3C896697D6781 +:10EB1000E1E241BED1D3A9BE939D13E7EB24FD945E +:10EB2000F8CDD453692C72A504F0E4AD092D6AD256 +:10EB30002DFAD0C9ED4C96BB80EA3DB8E9A3261763 +:10EB4000EA8DDBB512E205C1570F220E746BFF6B25 +:10EB5000697EB1C618FBA38A7AA34F42FAE94684BC +:10EB6000E838660D9371BDE7351C953035CBFBF960 +:10EB700055AC97D68DF3521996BB4332CAA7B11D37 +:10EB8000252FBA83563E8DB005293834E7C7BB21FF +:10EB9000E57C10A3F1F3D6D8F9D2E4C3535E8F46D7 +:10EBA000784F21CCEF0281F70B84DC6065EA877D2A +:10EBB000263D0B0811893C20E6D35B1DC4E746893E +:10EBC000147B481A583E57C8A1B9F8DD840FE0DE1F +:10EBD0002E49822FC2E417CC15657B9F79E7B429B3 +:10EBE00000F21B21077321769F7979E314E8FF3740 +:10EBF000D321AF0B78B13EE374F84D3E0B576379E8 +:10EC0000B91433A0DFB933D7915F71418583F866BA +:10EC10002EC26FC1CB67BBFFAA201D6E9869FFFE95 +:10EC2000D37E3EADA67565C2B3B2D441FDBF5126B9 +:10EC3000D13ADEF7C19FEE3C13E07B6DA61442F89B +:10EC4000DE08FDD1CFFC89F1FAF1A5330DF1953C39 +:10EC50004E3FBEDDA185289796694E1DEDBDEB1C8C +:10EC6000A11E1DE5D20839F4908EDF4FAB46FC9B08 +:10EC700072F1A09443F035FBE5501CDBBDE5A870B4 +:10EC8000E843D37519181F5A29A46C632FDAD72CBF +:10EC9000A61EEDB3ACDF86F79B5AF659E45A5C4AE0 +:10ECA000097EE463E8784C43BA1DF3CF4B8DB3A1E2 +:10ECB000FBFF4BA3BB49017EFFAAD168D9A70E2C4D +:10ECC000BFCEC1EA713D5DC7D887AE749CAFE1BCD1 +:10ECD0001CF4C77B929BE359C875739ED7EDF4343F +:10ECE00029163C2DF3C3BA1F04EE7EFC89F6D07FB3 +:10ECF0001CFB4F6E3F643BC56E47833DD387F2C01C +:10ED000015AC334642FEBAC72B99D5CF40B851EF68 +:10ED100099E30C096FF0D4E03DD93A3CE65FDB861D +:10ED2000F64AB3CAF9A125530EAD6503F9C1C47FF4 +:10ED3000B37F6DD660FAC2C43FF081AE21FEC181BF +:10ED400021BE79BBB902E5598EECB1D9FDFD709CAD +:10ED5000844F54F97F864F74D96DC3DBFF023E198F +:10ED600027FF2FE213D7B2036A1FF987BDAD5928D9 +:10ED700037564B0CE506633731AB7EC7FADA54F4ED +:10ED80004BF9DF2285B92B402EC8ABA13DF0CD95C4 +:10ED90004AAF8A76E8A2D52EBB5D23C6D9D3F7F455 +:10EDA0005B5301A4C3CB1C24EF58A88AF4E095A2BE +:10EDB000EEE1D50EB23F0F6F04F90872EC774CBB51 +:10EDC000B002F5C14107C9B1DF2D9B12E07E426C54 +:10EDD00034E2E712C1BF7F003F253E1EE401F8790F +:10EDE000983225361AE328EFA9DD5782AB0E7FE56E +:10EDF0009507C155790F093083B17572759301700C +:10EE0000FE4EE2F94BE4EA4A83FC998D6DE7C2FCC1 +:10EE1000AEC47FC278D1D55298ECE908233F6FBDCC +:10EE2000F033A260F6209C2EF0AF710D2D9179FC8D +:10EE3000214B8A2C912DF6282B848A16BB2A6A74C2 +:10EE4000AA83ADAF0F107E4048991C5D265BD6515A +:10EE500074F5E72AEAF17659E3724EE9A679FFAE36 +:10EE6000DFFFEA1E7DF124CB381E0E77BB2C0DBAD6 +:10EE70001ECD71CCFC92D507668F407AD74BE4DF6C +:10EE80003277F7E8AB2C7EE23A749AA01FA3968FF4 +:10EE900067E448E4779AE5B78971DA65EEE7FC1331 +:10EEA000F36D1B7CBE4CD8F5A100E2F170CBFC5495 +:10EEB000B2DF5994F4A9C92FAF1C1EE144BE650B03 +:10EEC0003289CFA36B1C36BE5BBCC267CBD7AE9E6C +:10EED0003FACFFCF36BA12F6B9751DB120D13F5DF8 +:10EEE000F07D2603EF88EC6D1ED7C810FC92A5D5E7 +:10EEF000937F985DD1B187DBFC31C2CBC870772599 +:10EF0000FAEF5B5216BD1BA575C574652AC61BE1D9 +:10EF10000FE7CA1443AC5FE9840BFD511646FB3E74 +:10EF200017BF9BF0C07AC85CA1D8F4BF2F62CF7B1B +:10EF30008A2CF61243BFC392CF4FCCC79CAFC78C6D +:10EF40006785A33AF255BB641CC2F5B2B1FD8ACA0B +:10EF5000B9F05DED632C10443F5089C5B06E219728 +:10EF6000270E9C37F08D2FDB198BC377771E63BD7F +:10EF7000481FA5C38DF68BA33862C87A62FE182F8E +:10EF800043BAF94CBFA4F84D0DE96CF60794B3F9F8 +:10EF900083C9F249D1795C4FD1DB7B79CAFD749783 +:10EFA00006FC5040F2B417F9882D10F11866FE994E +:10EFB000EBF0D4E4E029D763AC4881F9DF02984153 +:10EFC0003F2FD5193A1485A60DB9CED05A1DE301AD +:10EFD000479B90FE8BA4E811842BF5EC8631C8BFCB +:10EFE000D2D90DE3915F0313B99E5A78E662F61108 +:10EFF000A4D9C188F111DAF10E07C7D7D13C9BDF44 +:10F00000A8C62F673AC691FCA17018EBB1128A37D7 +:10F01000807D4F698A83AFBF13621DAA0E1EF780E1 +:10F02000E987ADFDDCEE8DFE0DE129086B558A8E7A +:10F030006A9CFB13AD6A64612DCAD91437C9D9D94A +:10F040008EE2D4239675FB8D6C8FAFB5635CCDA239 +:10F050007FDDEE400BFA07290E2EA7D6A534646398 +:10F06000BF068B3A1C84D7B02D5EEF091B714C1381 +:10F07000F5BF9F4D7E0CDAEFB0AE02672E76637B54 +:10F0800065A619878F92FF03744EA1FE16DAF5A9C3 +:10F090002B18263E60184AC9427F8EFFAD1BFD5DCE +:10F0A000F760EB7DAB1CCD7458E6E3CCE6F19C1425 +:10F0B000B64D437B04B0587822C3426F1167AAABA8 +:10F0C00030F94ABFEC3DA0F7F77A54B601B35F833D +:10F0D000F53215E1E77F47FEC8FD9DEFA1BF02E9CC +:10F0E000521609E0E43F65720DCA518ACF01BE3F56 +:10F0F000F54F7DB089D6257323DC2D228E38DDC1F6 +:10F10000E3B48ABF8DF33BEB9703D20989AF27DACB +:10F1100017F173B961307713C9AB76EE1F18F03F62 +:10F12000CC5FD361F717AEDD6ACF7F97CDCB423E80 +:10F13000FEEEDD2AC3F5FDBD247991EFE071EF6BA2 +:10F14000597D1BEAF57522AE5FA731250384E1CA1C +:10F15000E7EE9F8AF1AEB0E0BFBF005FE816FDB2F8 +:10F160003C1873868B13F353189F5FB314BAF04C9B +:10F1700069E8F9AD537B2F44BFC8D8A486B81DC237 +:10F18000E525B587A1945D8EB067B2AD1DC17B75D5 +:10F19000BB7D7E279B7FF27C4142D37C97EFAC25E1 +:10F1A0007E186A3ECE9D12C5F392F9EA3287648BCF +:10F1B0004F7CE5094C66A92017DC3CBDC51BD881F6 +:10F1C000E9579EBC18F245233A5DA85FAB18F77B60 +:10F1D0007F9F126B26FAD69F81F43D59FBE6FF64B0 +:10F1E000FB75D83EF39F6F7FC749DAAF0F76447047 +:10F1F0003D9BF116973B1CE6D8E6EB797DF649CAB4 +:10F2000073A1DC314C79E1F0ED615D9E38017C53F6 +:10F210008B9F485F1BB908D711617FF4A8918BD0F1 +:10F220008EEB79CBC1D0A4EB49D3DAB2711EAD928B +:10F230008E7192DA8D17A74A505E7BD01194F3C578 +:10F24000E2C6FAF973BAD0CFDEE250857DDFA7A01F +:10F250009EA9ADC83F07E5738F6AE4A6017FD4DCA1 +:10F26000CEE34095154D4BB1DD85FAE5AA0BDABD2D +:10F27000FC78F362CC2FD7CF55309674BFE8E7D334 +:10F28000C79E9CCA00BE9E2752581CD78D1273A2DF +:10F290009E5C0EFC8EFC76DDCF5348EF2E7F6AE538 +:10F2A0008373A11FE9B91482A7E6A96B1F76117CAD +:10F2B000CD9C7F9F9D9FBA45CCCB0DA8E96912FBE1 +:10F2C0004286913B1F9AAC74B125A8374C3C98FC00 +:10F2D0005BD75EF25236C2B533AD1465753FDF2B96 +:10F2E000501FDAD7423A6F10BE7F51ACFF4FF25D2C +:10F2F0000B114E69E79EAB687EDD97A9383FA925C3 +:10F30000CDF9EF30DE730ED5AC47F3301E9562E3D6 +:10F31000A0FC9347253EAFEE499D9E7C1CBFD35970 +:10F3200047FBC04D54DF84B76E6749DB48A857B729 +:10F3300031AD00ED8B593F7F22807EC70D3B1D71A3 +:10F34000B4072025BBE0EA76872DCE0A12CA2F012A +:10F350001F5C2FE4CFF5BB56927CBEBEFB8ECF5117 +:10F36000FEDCB05B3D62950B8067F26FAF7BC7112F +:10F37000C2D8D0754F3F1240FDFB97DE8702480F81 +:10F3800018A7D609EBA0EC35C5D60EFB3F9E3EB0C4 +:10F390003F50E8E4CFDDD0BD9E8FB7EB823F611CCC +:10F3A000EB0606ED2DF2E72FF88F9C817EF25F1CB5 +:10F3B000763FF90BF6DA54D2773B3306B5574CFF5C +:10F3C000D894439FEDFEEB03068CFFC953FFF10079 +:10F3D000EE43F67CF3D7077E88F87FC1A3219FDF39 +:10F3E000F0D8BF3FF003D447BB5D32F2CB672F3C70 +:10F3F000F2F0BD90FFECDDF1A5B8B41485EBFFCFC2 +:10F40000F2BFCA423CAC7E61F608C4C3EA67668DAF +:10F410006083D8F766FA19F057CCC25FA63DA8EF13 +:10F4200086FE4640F657224DA2CFDE5D8E38BAAE3C +:10F430009F1E72C590AF6F806F0DE0675E5F7F2D7E +:10F44000EDD7607E0DE0F9FAC7797C6E20BE8D5154 +:10F450007236A6F151B84575FDAEF9179D5586A9CE +:10F460001AD271BEEC28E9B3E476371C04BA9E3197 +:10F47000341DBF605F3B11EF37B08D7CDCFA73FF4A +:10F48000847C944CC74FF11FD307D271AC02749C9B +:10F4900068A5E38AEDF762E1AE8C41E3AA261D5729 +:10F4A0003E7349EA607E9415CFF153C0F33211B731 +:10F4B0003EEA084F51701D3EF5D387EF0D229D5D4A +:10F4C000A1B948F727BEC80323887DAC1EBD0AD763 +:10F4D000E3D1175CDA0E68B3FC857748EF7DF6CC94 +:10F4E00001A74EE731985F027DFE19EBFFEB45FD6A +:10F4F0007EBDF08F6FE84A89635CC2A4D7F5B18BFB +:10F500006BF4007DA778C5F531BE0EAE8FED5920A6 +:10F510000D42BF154A0197ABB14CC2CB4ABDD7A92A +:10F52000F9ED74952A909E87CF41FE1B8A9EE6FCDA +:10F53000359CFF340B5DBBF8FA1D6A9D7ED6E952FF +:10F54000705F2199CE9F09FBE78698F4CE607437EF +:10F55000E3F7CCB178587A25F3C57715FBFA36DB9B +:10F560009BF33FD9FA3EF9BCBE1DDE2E41E7A07CDD +:10F5700020FE9A6673B9FD463EAC4BF87440D5FF49 +:10F58000E526E4935754B6039A5C58F027451FC408 +:10F590008FFB0DDA51E313F98B2AA4D60C6877514F +:10F5A000388DEFA3279D1B88CC7430DD02CFB19A34 +:10F5B000D5B9B8EEF66633DA17DF97C3F7A77F9DA4 +:10F5C000B3621F7EDF08FD33E8BFAD11EC5517FABB +:10F5D00027D994F69FD7088FA138D32A8DF1FDD073 +:10F5E0009D8F3DF618E4CFC3014075ED05156A8D7A +:10F5F0006BBC29E03DD4E826FB6F7ED1930AEA7507 +:10F60000A9F84905F5CDF9354F2A78EE605F7F1CE2 +:10F61000C650B3601D9D579456BA01FAFFB5C4F5A4 +:10F62000ED794B3B953A4BBFE78B7ECE2FEECC4529 +:10F6300079BC5F9CFB48C6579F90B74D131EC9C548 +:10F64000F1F68FFE975C46E344681E7962DF68DF5F +:10F65000B847B6AD023CF6144921DCCFE86958EB57 +:10F6600047B9DCA3CFB7F1DF9E097F92B09FBCEC16 +:10F670004E05E5F70E112FEBC27819CCEF61C01BD8 +:10F68000E67702DE307DAC51A7F4F1C6222AFF599D +:10F690006388F2DD8D15947FAA314CF95D8D359428 +:10F6A0007FB63142F9DD8D0B29FD55E332FA1ED8C4 +:10F6B000B0B3251DE34BA74BDD78BCE05F1BEBA986 +:10F6C0003CDED840E53185DB0D79EDE01F80DC6D57 +:10F6D00068E0FBE43BC01F8D58E037EB1D54B87D5C +:10F6E000ED09445F5730BE5DB3A01CE9DF3AEEB2CE +:10F6F0004948C71EFDAE28EDCF16BA29B64D2E21BA +:10F70000AC8B57C64DA373283F498B1E542C7E5F8C +:10F7100041BB93C5A7201D63FBF0E88D7101D87D27 +:10F7200080C7F3A29D2D78D465614DBE2E133DBBDD +:10F730005BD2D11F9924CA976E56AB8A4F4EC747EA +:10F74000147EFEE1E5CAFA5C5C672F4B3C7E36BF57 +:10F75000C6C18A2CEBFFF2A83DBF45B44B9F53387E +:10F76000ECB99B9410D4B3D9397C1DB9B2D3D1E391 +:10F77000EAFFEED147DAEA39B4BD677F386568F948 +:10F78000E408D4F078B4A67C84F20D70209D901328 +:10F79000F2862257598938B0B9EFB6A43F0F9E9927 +:10F7A000697703BEAE081F54D18EBF0A5C2715ECE3 +:10F7B000F03A1672A23D0E7E31A5DF65F594BA725D +:10F7C000E32A8FF3556BB8EF2B85CF749CF00D17A0 +:10F7D0008FB1EF0F9BF0A5CF51283EB34AF2869030 +:10F7E0000F9A73D82EF45B9AC57A35DBABC72732F4 +:10F7F0001DF050AC16D8E21B6A30B210E5DC2D7D4E +:10F80000928EEDDB9568AE5ACE27A658FC7C35C8A3 +:10F81000FD8CDBA5A88EE577CEF8CB2107DA51CF9A +:10F8200078743C8FF359D93127F20FF944C83FB7A8 +:10F830007A630FE563BEAF960743E214E771093CB4 +:10F84000E1391D8CE7BADC7E8A7BB05CE513EB7E88 +:10F85000E9D51A8F9734A77C9483E37E0701E17082 +:10F86000B1DC2C8A8ED25FADD2A7223E97B05E4A21 +:10F8700017B36E4AC36AB40CE15CC4EAC91F5AEB01 +:10F880000B9C8D74FEEF822FF9BC1AF41346FECF49 +:10F890009EE18E5AFDE77354BEBE178814D6F54A12 +:10F8A0005CCF43D1DD94F7A69C1F951AB910E7658C +:10F8B000AE17331DAA7DF2BA31E131CFDFA5CF59A2 +:10F8C000FDF268C0C78E0E7ECE6B565DBB2B0F8AD5 +:10F8D000B66FD44B0917CC2D235EF2FA038DDC4FA3 +:10F8E00069601C8FEC7D89F0C80C1F97D7FDF5224D +:10F8F00093D0BE7860CD310FCAE9636B0A0EE07613 +:10F90000C5C9E699ACD7FE65CCE4CDB88F3CA6C797 +:10F9100041727FF3987FEC71413EAF8FEB813C7F6A +:10F92000FD78F4D72A7FFFE71C8C378E4A8DDEA442 +:10F930005AF8FB81DBEAC7E0F87F57C2AB55C2F744 +:10F940006A178128E44CC3467D73913E34BE76B479 +:10F95000170C8BDF64B8FBE5C610722CB19E793DA5 +:10F96000F03399BB94E4471C8F64F4F9529FED8502 +:10F97000D22B1BE22AF205F0F1269CCF152CA672A1 +:10F98000BF5ECB42BC5EADE9448707B23ECA21E10F +:10F99000AFF4E547BECD795AC606B5B7D609FB0028 +:10F9A000C0A1385F9E88D3C9BE4F7250BF77AA836B +:10F9B000EFB7B006581F967D39B099C87E82B1E87E +:10F9C0007C432D0E0CA0D5CA7D12AEB76AEDE2EADB +:10F9D0003440D1556BF2855DC4F9E9AA35699D18AB +:10F9E0006F6853A38FAB247FEB29AE5DEB3FBD1A4D +:10F9F000EDEB539D1F8CDE8776BBB99ECDF9DEEE15 +:10FA00008D3E877C50A0A555A5E92887795C78B6FE +:10FA1000C34F719D6341467ED850FDFF529CAF7C21 +:10FA20004CC485D54F5807CA879781FE987F18F830 +:10FA300016D35F805D81E95EB02B307D01EC0A4C0E +:10FA40001F07BB02DBEF00BB02F30F805D81F918DB +:10FA5000D815985FCE22FB113E35C8CF71353BD902 +:10FA6000323AC72DCE419A70FC56D0C14C0FE221DC +:10FA7000BE4C3A2FC9E3531F38F9B912A57ED4BC46 +:10FA8000149E227FA4E61E887BA06AA08CC52480D9 +:10FA9000DBFF61BD11807CE9CE90940EE9844FB408 +:10FAA000BD5E489F390B140ED829774E05050EF41C +:10FAB000F4CBFA7D2B909E3378DC7CE759F06FD045 +:10FAC000338F3EE4243AB71E609DA8071E3D0BB855 +:10FAD00016BE07E6B6DD887EC3BD6F4339D02D1054 +:10FAE0007BFB8798DEEBD4AAF07CCED3235908EDBC +:10FAF000E840D747B761BD40CFBD37513A73E7CD36 +:10FB00003C7DFE16ACFFA3B3E6EE41560FF4C66F84 +:10FB1000A5F3785A6D652AE4471C375ECD87B42378 +:10FB2000776DC9D500CAD3AFB4BDDB02F967F7B5AD +:10FB3000D46E84FC3DFBEEDE8CE5CE9CD53DF930E9 +:10FB4000DEBDF57209F25991339FC7E17357D1F7C2 +:10FB5000FBEA83F43D75FF716D16A425A3E508EE5D +:10FB6000833E3B53A98959F70554078FBB39C5F923 +:10FB7000F25C99CE559AE7F6153C4F0979F520DFEE +:10FB8000BF51F7F1BC53ABA773955952D4E544BEAE +:10FB90005C36F8BE8DCFC9F54949275F07BBFAE44B +:10FBA00018C6CB77F7AEF5A13DBCBBB7C08172AC30 +:10FBB0003457A67DDADD7DE9192980F76DBDAB46A6 +:10FBC000D0D90610C097413F5EA797FAC970D2DA24 +:10FBD000B3B44FA7F625FDEDB7785271FED83E3F7E +:10FBE000D13E5DB41F85EDCBADED6507A6216C5F01 +:10FBF000CCDBA39D987BC03EFE48273FDF3976C013 +:10FC0000F85B641C7F82183F795D1588715B25C3A2 +:10FC10003719F5F34A45C4C343A457CA05C2CCFA01 +:10FC2000554EEE37A4E27E1CC50FA334CEB3070BAE +:10FC3000E83CD8D0F2414ED88BA4F7BD09794FF9F2 +:10FC4000F4A4FCC8A4FA0549E5A727959726E5532F +:10FC500009FE12F1AD01ED02B417EA5349AF9688DF +:10FC60007D6C53CF56F4D7D35E5D81FA75AEC21E5C +:10FC7000E2E8A57E2A44FDBDAFB779693F9865D318 +:10FC800077577F3BC3773AAED3D7647EAE01DC6152 +:10FC9000B26B44BBE7A4D0ABC5281F5EE1E70C12F2 +:10FCA000F88BB8B9DFC5F15D26FA5B172BA5FA779B +:10FCB000D528216C9FACEF72F1D006D2AD77C75A30 +:10FCC0002FD44B9B249560BBA2351D6B51F6BA0C0B +:10FCD000B617E36C53B7E93FAA46ECC441BEC2BABB +:10FCE0002EEDE2FB9A253185FCDC925C9E5759E4AF +:10FCF000FCD381B4531D86F7749CFF7BFC5C574991 +:10FD00004FA9CDCE9F10E3E741EE73727B56CDE550 +:10FD1000E7C8D5AE19B67AC7FBC60EABBF77364675 +:10FD20006CE7E01FEDD77F9C6E1304DECCF2FB9CEA +:10FD30009269FFD8E8985CEFD587E6A50E172FDC0F +:10FD400029FCD267048B31DADA827C4CA6731A8CD8 +:10FD5000CD71CC2E247D2CF2BC7C5D97BDFC59B3BB +:10FD6000BD71C12C8C5B3D1B53A87C4BDB05B39A4A +:10FD7000140CAB73FC82BCE2F88D71B9A576C9C9CD +:10FD8000F2E93E924F87984D3EC96E7EBF634A7B33 +:10FD9000C73ED497B7C0B7E74B919E915928FE2A2A +:10FDA000B6EA322E895752BA5F44FA3F3D410AED16 +:10FDB00080EF957A6533EA95EEB7DAEE5D09F9E7FB +:10FDC00084DCDDFD5AE17E8CBF357D70CB129473EF +:10FDD000B71C91748CAFECED9DC7909FD5D7149252 +:10FDE0000F6A30E488929C2A755C6BA1DF942255DF +:10FDF000C89F2ADF2468DF1AEC9AC1F75AC36C51F6 +:10FE00000A8EE3E2F2B9483592E6F79C13FD878843 +:10FE100034E8FD9F0A07331CC86FBF95B93D5B13DB +:10FE2000F65D6C391FB2EB20E80318B7FCAD9629DC +:10FE30006F40BD166DC614D41B3B3B9DFCFEC9280C +:10FE40007E3EE665A11F58DF90F74E5E463C27DFF9 +:10FE50000318C3607D40FB318A8FCE758F89F3FD17 +:10FE600042F6F50966950BC9F26B52B7D7C6EF7229 +:10FE7000BBDD1F1EC32CFE30C9F924F9F5FEC444B6 +:10FE8000FD02B48FAB5F4DA560829E3619E859998B +:10FE90002BEBB4EF6B84FD9500C7F9028A75185FF0 +:10FEA000C2F287580CF793B6A35C00D477827D84A6 +:10FEB000E92E83DFD7683D0476068CFB52500EC5D1 +:10FEC000F1BCF8416EC79F6F9E932D5629AEE88610 +:10FED000FFE1F86A8B360BD7CD8476BD99F4DD3E11 +:10FEE0004BDC11FE9B2AF6992B93E2915345FC7251 +:10FEF0006AD2F7E4F8E3974E7B5CFACE1F38082EFF +:10FF0000E36D079D177E763A33A43368DFFC8E9548 +:10FF1000A4D7F8B9D667048ECC78A4C3C5FDB77D45 +:10FF20001FB818FADF3BABDD1427F4E2E4E0FBCEA8 +:10FF300043753E841FF411F93F7B67787D7D7E4ECB +:10FF40006FAB3E583BC37B07F2F1BA5764B2559F83 +:10FF5000DAB72A5B86FC966A379DBB0F3C688CC279 +:10FF6000F8D0EE4EB1AF75509CCF2212C17FD8278A +:10FF70009DCFD2C86ECE70C9E6F9AC0C577962FD40 +:10FF800006C66E1E89FD3C9A2F9D523FB9897E722E +:10FF9000ADFD58EC78E18FC4B9DF27F8220FFD657D +:10FFA000B4D393FC81DAF7F9B93EB0EBC7637F4B6A +:10FFB00058244C711030D3A99F53B7EB0DAB9F9EC3 +:10FFC00017CC97512E25ECFB4829F6AFE76AA47FA2 +:10FFD0004ED5AE7F50D8F30FA07D8F76FD466ED7FD +:10FFE000770ABBFE55B4EBF9FDA0B35D36FB3CB41C +:10FFF000108FFC5CBEEEF159CA74B4BFB552BC425E +:020000021000EC +:1000000077CEBAC79BDD004F9EDC9783F92BD63D98 +:1000100031CB0DE5010C40C0925C00796326F42FD2 +:1000200073BC1B0F3361AF1F3D702EC03B61693045 +:1000300084F1D53C593BAF08F5F972AE07035DDC9E +:100040000E4E86FF0111EF81FE57A13F7C858BDBB1 +:100050004757083A9AF97625BAD045FBB84CC1FB08 +:1000600039C9F19D2B106930BFC52EF31C5EC748FE +:100070007E2F15D29441E9CFFDC493D1BFAB9FFE33 +:10008000D7E2F856FA67E49F3AFD8FD52C20113657 +:1000900094FFEA3A0E8BDB12EF5BCEA23713BD72F0 +:1000A000F97D997EBAC9E05741EA10F717028E8BA5 +:1000B000EB116FEB05BECCD4107863EF0F38D76A25 +:1000C00060BF2E252A0EFB70391E68867EFC16FC4A +:1000D0000AFFD984A75DA95BE7B2C5DFA20CFDEAE0 +:1000E0000D2E4DC41BEBE9FE1AF86B744EEC9FC647 +:1000F000776E3FBE7F2CD61BC19927E261A78A6F1E +:10010000F35C84790EC2A8D25B349497B7B310D253 +:100110006096FF62DBBD1BD33E48EE6F91147DC439 +:100120003AEF64FD5FCBFA548EC7A32ACEBB2A43B5 +:100130002F93F03CABF1BB59AF55401EF992EC9CAC +:100140007767E1BE42958FE73F767DDD82E759AB69 +:1001500070EF8FECA22F78F9585EFE0996037E9F10 +:1001600054C3BB5C96F32A40AE18B3C40754ED7079 +:1001700025CA91DBBDD15F229C7AAE5E85A4CB6B94 +:10018000D0885F4E558EC4447C00F71DB8BC88FEF5 +:100190001AFB530D2E4F4EE6D7BF21F8CD4C7F23CF +:1001A000F449BF5FBFC9F4EB4323B95F1F1A69E588 +:1001B00093FEB85C8B87DB31C2AFC817FB28C9F24E +:1001C000DAF42BF23D767E4AF805612FE98624FEAB +:1001D00032FD8471E6FD93F5CEF87700BE1D156EF5 +:1001E000C24FED46CE7FD9777EACE27A35F9EF4B40 +:1001F0000C3E6426E47ED7DDE91B50BEA5CDA113DD +:100200004F6C852BFC672B9D8A5DE1FF48A25B74D8 +:1002100008BA1DE3727F78BAA97E8F61A5433FDEDD +:1002200005BD7A85FC7F0DE53ED12FFC7F907ECD0C +:100230004E9DE290C67EEE370D45FFA1E298269DC9 +:100240004D79F3B187D337917279F386A85750C1AE +:100250006668A916BBD12DF8C2C306DD7FC974F349 +:10026000F681E608C93126CEAD16B4803E9712F568 +:1002700046B825F3FD0199CB758DD20B055C85152C +:100280006CA675DC7162DC0BBDBC3C79DC4237B717 +:10029000834CF9698E5B7837B723CC7AA7897EA027 +:1002A000588C1B9151CEE5B7F3FB5D8578DF0BE8E9 +:1002B000A1DF1D0963FE8DE97FEABA0BEDC7CC22F1 +:1002C000111F0C333CE73E4DF473AF339C8DE3E5D7 +:1002D000019E304EE500B831551BD86192F37E8304 +:1002E000EC418BFD3FCD8DF3FE840D6AFF9B780FB3 +:1002F00028ACDA65915FBD02AF66DE9CE785159F8D +:10030000EFCB00F826EFE2F7DC22380AE42784730B +:10031000290EA679385E1EEC62E4874C72F52EBA7F +:100320000EF0126BE5E766EF5DEB0C537CCCD9F772 +:10033000D4AB38CF0D4E8A87753DE39F733AC25BCD +:100340007DA39401F9ADCFB43DF92AE49BDCF90417 +:10035000C7A35D5BCE43BF78DB8A748A5B99F9DC07 +:10036000953C8E75CFC62D734E437BA24B0EE13E5E +:10037000E4A333B9DF62C27FA99BC7B1A26E11C7E4 +:10038000DA9814C79A29E25886D0974B07F8895112 +:10039000F73071ACA56EAEC7EE897139D4DC25C7D4 +:1003A0009AA0E1A3FE2D5EB4831FF5CF63745F2F87 +:1003B000CCE34800BF87E2587E330ED5E1C538D282 +:1003C000D56E1E475A81F225D3DAFE8884699EA530 +:1003D0003DC5B1FC661C8AB7BFCECDE349AB07B4BF +:1003E0001F383EC5B152ECE3DF24DAAFC1F6E5C3F6 +:1003F0008DFF54DAB51639F24301F7C4DD51B2531B +:100400002608FC8EEFEA0DF14DDAB81BF1B4FD8938 +:10041000AD7DFB815E6DDB783CE4A7C27EDB2ED92F +:10042000D7F746C17FDBC4BADDBB0DFC64F48FB7E0 +:100430002DA07BF56C0D233A8FBFFF6F92158E3187 +:100440004B799C6DFCFDABF74F18C44FDEE676F19F +:1004500073B74BE5643F791BD177083FF958CDD28C +:100460002AE4CB492D3CCE39A983BF47326917977F +:10047000A7FAF129647F8D395E429705F28E9F4974 +:1004800079F5F874CA8FD9CAC7DB29ECAFC9EDBCBE +:10049000BDBA95C729C618F6388FE611F19D8619A1 +:1004A000B67D99C9BB8DD4B3615E137B1C25D6F391 +:1004B0007B03ECE2A4F8CEF6A4F84E41525C51F373 +:1004C0000C1EDF31EB9D26B108B6FFE98679C3C665 +:1004D000191F10F11DB3BFD36EE37165FA0BA2DED5 +:1004E0000AD3B9CAED6BEAB6CCC17C5A7519AE5FB6 +:1004F000CD23CE5926C561FAF58014FD0DD2C7A4CF +:1005000097E997691E66D30F80E26A0CCD25E62530 +:10051000DBF66D2CF29AE0E958C8E5B5991F11CDCC +:1005200022BDE1177AE958CD3E4EF7994D25188244 +:10053000B8B0E2B04D7F9E94EEDD9CEE4F08BAABB2 +:10054000DD83D3DBEFE1F1C4647A9F2C8E77323AFE +:10055000EB49F139BFD0BBC97436EB150B3AFF6CD0 +:10056000EDF0713C93CE667FC543D2F9C5F4F32D0F +:1005700074F67BF8F9D061E8ECF7940FA433F86FC8 +:100580009A87FC32AEC792FD37538F831E6BB1EA58 +:10059000B1473D497A4CD809A61E9B18B3EBB1F17F +:1005A000A8C7A4845DD2D9C968BD17B9BA8FED4771 +:1005B0003DB63E598F19A5FB51CE6CE17AAC635B19 +:1005C0005D6510D211A1A69CE5904EFCF91A9243EC +:1005D000D937F17D98451E1E0F7C64DB2AFA6EEE3A +:1005E000C33CB28DEBAF510FA593DEBF679B4CFAB6 +:1005F0002B598F9DE1E17A6CBA47DC1FD8C6E3BF67 +:10060000DF428F4D273C0EA1C7CEF270FF77683DC9 +:1006100026F4C0362E6787D263333D5C8FCC16EB51 +:1006200073801EB2B41F4C8F558BF61760FBC1F45C +:1006300090A5FD607A6CAE87EBA34B06B44F1EDF2E +:10064000AEC7168876931FEF78114D762703FDC548 +:10065000FD4FD25F3161D76CFFC5D6D8AB50FE33AA +:10066000A963DE796877E4F03845B21EBB46F0D165 +:10067000CD421EEE3544BCB70BF418FA2B428F4D19 +:100680007868703D36E121C55B34881EBBD933A440 +:100690001EBBD933AC1EE3F2AC48E8B122A1C78A35 +:1006A00062BDA7A6C792E4D944538F0D21D73E4619 +:1006B0003D36885C9BF838D76393FF8BF5D8C743EA +:1006C000C837B35EBF7C3B453D66F6B7BD9BEF8B3D +:1006D00026E45BF461BB7C5B3A15D7EDC71EC7C946 +:1006E000E4DB4ECF207AEC63C1A7A6BF01286EB130 +:1006F000EAB18F879063263C43E9B10FFBF518B749 +:100700005F8AFAF5D893DF4E8F25D92F43D92D1F55 +:10071000FE0FE9B10F4FA2C7FAED9553D463667F80 +:10072000DBB7DAE93C7917D0594AD82B939F013AC5 +:10073000D33C07A733D0F7438F256EECDA1D0DFBB2 +:1007400074D25F1F7B78FC910D76BE2C39BE75ACE0 +:10075000664118E934549C8BB13E7AC729F9DCCE46 +:10076000C9CE055E74F6AD04579B1AFE8AE011F1FE +:10077000851FABD1AF07D7AFE67E8D21FC58331D67 +:10078000E27E64B693DE1F185311898BFB914E6F86 +:10079000E620F723C787B24318074AB3BF67A66AA4 +:1007A000FC3DB3C0995FF735A3DCD3A64EC17E32C2 +:1007B000BC627F29E95EA0655D65782DEBAAFF5ECE +:1007C000285EA4B3CCA72DE7D2A1EE0B8EF25AEC93 +:1007D000443538FC7D41879B9FAF34AA5851BD3FBB +:1007E00011E7607F13F089F8A7392F57B6BE03E7EA +:1007F00055E495CCFD85226FB905CEA4F3CBEBA5CE +:10080000288FAFFA0D5E2ECE3353FC47E6F1163C2F +:10081000B7DC8CE797D10E2B8B70BD96CBDF1DF329 +:1008200095B1109E4B948ABBC96FF215D767E33917 +:10083000D675439C635D2EE06A1ACDF7F5367C20B1 +:10084000D1BECE867197665BCF259BFBEDFB322F29 +:1008500075F759D6556BEE3CDA476F0DCE1BF65C3B +:100860007CA0C3C1E219A750AF9DD71BAA5CAD60A5 +:10087000ED787E5F55F87C5DEFBBC82E73B1FA381A +:10088000F9877D92780787C7014DB8A5603DF19F34 +:1008900019FF33CF07CC9AB190E6D3EA8EB8F11C9A +:1008A0002FCC6758FDE03A2E117C7F57C251A4E34C +:1008B0009E090F935EF7EAF5748FD7951B6151C0BF +:1008C000B72F1861785ED4176274CEF8647498EE0E +:1008D000E5F21AD7B5F5BCF0FACA28F5B33E87851C +:1008E0000C1DEF5526958B73C74E210FCDFE8ABD8B +:1008F000DCFFF9814891A5F03D0787FB25E25FE029 +:100900001C8DF605B11F28BC0D1FE1837AC794F03A +:100910000FBD9903CB13EB9FDFE71120C0DF8DB62E +:10092000F7A58AC43EA719871C7337237E1A6F70F8 +:10093000BD5164ACA577C7C66065281FB789D17B58 +:100940003C504EF6AAD97E7CCC69BBE795DF6ECFD2 +:100950008FC5FD4FA8374EBC7745DFA19FB1E21D83 +:10096000A1B149DFCD7B170FE08741F65192F74DDA +:10097000EFF70E7E6F6328BE30F7499D2CFC20E117 +:10098000AF81EF373467723F22B9BE89CF8624BA70 +:1009900099E9135E336E6924C95F33EDB0FBEDE274 +:1009A000FBF1C3E70EAB6FDF037DDB62D1B7EFA3D3 +:1009B000BE85F6EF2D7826A5CE6F85AF89FA7FBF6D +:1009C000F1D0D91F8E4B8C1378F151357F124F47E0 +:1009D00080BC58549F4F477A16AD3EA05AEF435CF7 +:1009E00059FFEED91F5AF07945F6A52D2D244795CC +:1009F000BFE37E3546BFF1BDB04ADC0FB4CCCB1CA3 +:100A00006F1DC089E9E27AEE9F6D9EE48CF9E19F4B +:100A10009BBFE1EF881887F939DCD6C68554CF87AC +:100A20007217F0FD772FF7B3D2EB6F74F3F853C45E +:100A3000CDF50197070EB12FD08F37210F1C42B192 +:100A4000EC9DFD13377F2F2554538076FA41079D87 +:100A500047DABCC7230D76FF65A3B023D68B7B1482 +:100A6000A6DDE231F71F847DE211FDDF89F72CC698 +:100A700063FF1D354BCB12FDB7EB75ED783E6F7DF7 +:100A800061BAED7EE67A85DB43CD621CF3FB2C5F19 +:100A9000BF1D242908A79F75A31F921E0E317CF746 +:100AA00023BD5ECAA77700802E5530CFF41A2D07DC +:100AB000EF076E46F93308BFBD25E4C495ABF97D59 +:100AC000CDCD805F7F3ED6FFED6CA4B33187BF2FC5 +:100AD00096DCEE349F19E7FEFF0BBF97F8FAE3624E +:100AE000FF25F8957CB2384769B8902F93D7872BAC +:100AF000B75BB5AEDB4A393AD9574EEF6F127C7708 +:100B0000A8DDD9AB8AF19D5FE35C6CAF06EDF52DF6 +:100B1000EDCA076B7787F96E6FF1025A27EE5C58C2 +:100B20005F96F19D41584716FB312107D672395423 +:100B30001C14EF3BDAD7EF5072ADB96C8B5B877149 +:100B4000D757F07886A3A4CC5D688137E2E371BF04 +:100B5000E60A1EE768096D7117FA0796AF9F29DB51 +:100B6000CEA59AE951AF42E55FE0E15D5A07BA844C +:100B70007629AB6161A49377F48E483EE4D705797A +:100B80005CE564F0D4F9787C6A2878CCF2A1E0C9FD +:100B9000F57178F2D1E82F3F393C263E8792D32673 +:100BA0001EF77B23D7233D4D7B7328BD4CE7E680A2 +:100BB000AE4F7923AB7D90BFF2E64B32913FB2D37B +:100BC000C43E7B2E7FFF10CA1F0E58CA8DAAC43E9A +:100BD0001FEE6FAFBE606939DA996F8BF3C0810C7D +:100BE0007E3FDB84EBB08FC7A10EFBB8BCD800EB17 +:100BF00026363EB10F186896E2789EE7E86839B667 +:100C0000231FF562117D5F177DBC662CCE7FC13836 +:100C10000DD7ED57AAE1423FF6123C7F0CE9A62A18 +:100C2000EF326BBCEB468DD33F35ADF237389F903A +:100C3000BF8FF6395918565D167F6F12FB39430383 +:100C40008B0FCFDFE37E2BC56B4242DE8B7B462CC6 +:100C5000CABECD3DA39F29CC81F7930D3FA3B84ECB +:100C6000CA5689FC60735FF397DABC18C2A3EE8E94 +:100C7000D23D963D53BD64C77CD9CAEF4D1EBEF22E +:100C80004C8A0FBE29D76DC77B1B47DF7531BC6708 +:100C90007BF882F36BD02E397CE515E761F9618929 +:100CA000D548FCD1A100DEDF0C8CD59FD885786BB0 +:100CB000F5D0794235FB8FC24E0B07E40AA8FF0F2F +:100CC000C74B3EC0E7EFFDC77E8C6C75258BD3F913 +:100CD00008F39EC41DA9D167904F942BCE2F42F9E3 +:100CE000B0C9A9E5619C69539BAB14EDABB4CFC10E +:100CF000E1403976898FEFA71F05DC42FEAADBE6CB +:100D00003F64DDB7BC2A93D3C3DDD01A467E75EBB2 +:100D1000217A72253096F3C1A8D4E85E9C7F95BBFA +:100D2000649F164439C6EF3398F71BAE58C6F36F6D +:100D30008BFDFE643F35D92F7DDD948BD9FC1EB829 +:100D4000E2E77620D394A477CF72C91F33E964E534 +:100D5000077CB7CCCA0F78D5A89F1FC2C00F936C71 +:100D6000FC209D9878EAFC702F8E09F05D7A26DFD2 +:100D70007735AA420768BDBCA9D27A31EF2325F3A3 +:100D8000FDBAE81AB75C3C707D98EB6143D9BC4C66 +:100D90009DF87F159D0B0186D0F1BD046DDA1A0D0B +:100DA000BFBB6A9D145737D785B91E2E0FF4AF8B82 +:100DB0009FE33A8EFAFB664BFAC07581FEA595FF5C +:100DC00097E03A9107AE93452C74199EC35CA4300A +:100DD00023353DC1EF8B2AF8FB3C8BFA9AE8DDF313 +:100DE000456B2476C442B7132720EFB6E14DEB7F65 +:100DF000F7D571EAF8DD30476AC3F3361BD4A3BFD9 +:100E000046BD6AA4F175D7EC9176E23BE26D291FED +:100E1000B5A2FDB1214BA777E592CF19B49DE6238A +:100E2000BEDE70E9283AEFF0E3469D4501BFBF47BB +:100E30000585FD2D48217EBF0BF01EC5FB55604783 +:100E40006039ACE31C7F26F269886543F9A58EDE24 +:100E5000FABD4887F77C748EFCCBE7A367E0FBAA5A +:100E60009BA62EA7FB545FDE1A1DA3155BE7111B83 +:100E7000C9EF5DF78D94E9ED205DDCC366E27B741C +:100E800014FF1EA3F47EA0FF11209D2B906FBE6760 +:100E90002ADAF551BB0D815E0FC19BE5D4F8FBA8A2 +:100EA000E1F272C8CF9F1864782EEE7E277FA723C9 +:100EB000199F0BFD5C0ECF7774E878EEAE7CE3C82B +:100EC00073F05C9E37BFB3A31CF2B231F29C3913AE +:100ED000B01E8FEFB77E33A51C9DC1ED8D3D6467BD +:100EE0009BFD8C59D3CDA2782FA338928D764CEBF5 +:100EF000370E19EFAD80CFDA8DF6137E6FB2D8675B +:100F0000557EBE6E5B85BDD3DA14C94EB7C0D72AF5 +:100F1000FCD2D63D1EFE6EF7DC2BBB3CF956B81555 +:100F20000E8F78BF644CF151E91AACDFD40D6B1B06 +:100F3000EAC77F41FE34AC0579A9355EB9A6C7661C +:100F4000372D0210534B71BC0EBA1FEC1DE7D65063 +:100F5000DE2D2AAAFEB33208DFE2DF110BFF99F083 +:100F60009B718ED5E6FDEBCCB64AA487B79649288F +:100F7000D76FF2F3F30805C8C030DEDF8AAA878D89 +:100F800013E07928B0F4E81EB6319EDFC3C63CDE1C +:100F9000C3C614EF61638AF7B0B11CEF61631EEF43 +:100FA00061631EEF61631EEF61631EEF61631EEFFD +:100FB0006163FA7C639452BC8F8DE578FF1AF378F5 +:100FC000FF1AF3F35DFC1D325614F596235E4E2F87 +:100FD00094908FBC1B9C617CAFE175C137B3D62F59 +:100FE000D87410E3146185624CBE6D4ADA5B3C8FA5 +:100FF0001129E6CBE6FBFE6DD94F31FC9D01F59C36 +:1010000094763C2F7CE7077E4A7D0B9E66BA1FEFE5 +:1010100075EB8E8C12C67EE1BFEC1CB707D7336B25 +:101020004E0F417EE3B5EB303FA5ECF3E54F417E3B +:10103000D7C6C56DB8B57F6766CD9B3AE4FF6DE353 +:1010400092363CEA317666650ABDE7682C69DB07B3 +:10105000235F889702CD7B023A3E6327F5DF0B7052 +:101060001782591FDE05A218E8B47169DBDD3AEE7C +:10107000C7751B556918EFAB6B5B3081DA2B591ABA +:10108000F57FCE2429519EE95ED4B6C063E91FC620 +:1010900083A9B303EFF37B06F7417D03FB2FD02E2B +:1010A000284379FE814CFAF86DA7BE96FCCE0D2040 +:1010B0009F00DE8B220E922F63AB5927B3C4DFB59E +:1010C000221E8FBF3085E3374DBC43258324C638AD +:1010D00044EADCA7898952C3F6F7FDBCC54AD2FBB6 +:1010E000BFF6F7912F4CE17AE86001E003ED8A0941 +:1010F000EE18DA154B919FC7213DF9FABE28F2A0F0 +:101100008EEF948F2D7297A23278DDAFF3FB7205CC +:101110002C8EF099ED92EB61BFB2A5DC6CC7BEFEE0 +:10112000AB8272A87513A3F7D0BC05311DFD096B06 +:10113000BF72D9D0FD5AEAE15BF9C38DCFA461FA41 +:1011400031D795D7194E417E3E3A89D365C1FC4DC2 +:10115000E63A95711FD0EBB5DBAB9E40D5F614187F +:101160007FBBA087D7DBDD837EE7D1B314DAB76519 +:101170003B6BF763FEFBF7CA2467B314A033F49705 +:10118000D5AE95A01CF954C8B98CE0D279F83D636E +:10119000ABC2F47C24357F1722C8247AC77F83DA58 +:1011A000311BDF5735541E7F2CABB8F1FC32F83EB3 +:1011B0006DF617B4FEA6BD204B68177D1AE070943B +:1011C0009C91528FFAFDFC33464FC1757547D23B57 +:1011D00015663A2785FBD75D224E233D70A89EEC0D +:1011E000CD72BF84FAEECBCFB95EFA5AC039DEC9F0 +:1011F000E7CF5807D9954DD90ABDEF21E7F0D4A91B +:10120000D6D7211F38EF77D3BB58CE6FA6B951AFD1 +:10121000341F77D57039D84BF6A6D313D5F09DABD4 +:1012200082CD32C5039A356F0C9FE24E4D29EDD128 +:10123000514FCE56E85DD1D4B314E2FBB4944B6366 +:10124000B88FFBA33D1EAAAFA6B86328EFBBAAFFC9 +:1012500016A986F2AE990AD9FD5DED0B22B48E3443 +:10126000591B477A2EF43AAEB3AE355A08F92B150E +:10127000F76F008EB7179D995DCBF707E87D387241 +:101280003D654BBC9D858BF0BEFA0CADAA86DE4D4C +:101290004CAB72A31C4A9B5DEDE6EDECEF6EB654D1 +:1012A00073BF0ECBAFC679B6B07DF88EB9B974D323 +:1012B000D2B648181F50AFE1DF5AD267E8B57E1C9E +:1012C000D7FE0E5DBEDF1D47FB3D47E3FB627A1193 +:1012D000B757F345DC12BED3BDA39C16FB7A465626 +:1012E00043FB768C617FC793616401E6374AC0A1F6 +:1012F0008AF99FF9B1BDFD28710F6454D2BB76E71E +:10130000A498F1173B9E92E79F13ECD2D09ECF3169 +:10131000140226795E39411E9FCDD7BC7C7E413EAA +:10132000AFE479CCD08E54A2DE4B9EC799ACB709FE +:10133000F9707483FD7B32BC33AABB22683FCF288F +:1013400052082767B2EE668CBB9B74F716D8D7EFAE +:10135000A77E877817A4AA2D05E639B65D06059005 +:10136000E87F5C87971996F1C66F4DB7E527C446AD +:10137000DAEA4FDC59602B9FD47DBAADFC8CDDA539 +:10138000B67C497C86ADFE949E2A5BBEBCF73C5B76 +:10139000FD6987E6D9F2D3FB16D9EA9FF9719DADB5 +:1013A000FCACA3CB6DE5DF39BECA96AF643FB4D5C4 +:1013B00037FD2A961DEA0D07F15E56B004E59689C1 +:1013C000AFEFA7D8F78B93FDA8E47DC2808FE3FB36 +:1013D000647E5A4B0A8F87652D286051CBF7E0DC7D +:1013E000D36DF9ECC5A52C6AD36376BFADF59BF937 +:1013F0000BF9EF3EF17BD52D9997D2BB1AAB26386E +:10140000E95C3CB97AF8FE574A1A8DB7EA9571F44F +:101410001ED94FD2C277A21CC7775D8C0CDC7771C6 +:10142000923EF3FA9DFC1E92FF27DCFE2B74D31E26 +:101430009CB72846FB302D8DED671782DDFDA34656 +:101440008352A52862A05E51827C5F462B3A4A797E +:101450006D26CF5F9FA213FEB49950DF320F5583E4 +:101460007E2CF37C53E6F7BD8E82DFBFC3E2F72705 +:10147000FBF9514D7B78174BF8FBE047C7BF43EDB5 +:101480007CD4AE001DB5D2A1FDFA99ACD781E9D9C3 +:10149000EC28A55DACBE00EDF7B79C866324B4FFD5 +:1014A0005ED7816508C7F4322FBD8B837180144BE2 +:1014B0001CE0709A9687FAFA5E6764D3411CF7566F +:1014C00095A1DEBCEAE20BDC280FAE9AA084F8BE40 +:1014D0002938F0180FB8273DC4F5BCD0230AF314FF +:1014E00042BD4BEE282CC5EF594A3DE9DBACC59A0D +:1014F00084FAF11F29A67E2C23BD90D1A184741DEE +:1015000051A35761BD603B0BC5A1DEBC02D097A8BB +:10151000DF7FCCEFC117149DB60FF1346A455CC272 +:10152000DFCFD0C23A9D072978FFDC1EBCA7BF41A0 +:101530000578509FDEAF083E71929FB7EA1E85FC8A +:10154000BC55AFA81E7CD277D57AA504054900F713 +:1015500065812FB44AAE8F0AEE3F2D86F6C09D926C +:10156000F600F955ADAE10FA55F7093EB81FF9026D +:10157000ECA6C3596D6BF1BEFD047F27DDAB9A1855 +:10158000DCB316D349B987650CCF9C512835E33BB2 +:101590000125C5F90E3C4731A5ACB219D3F299B576 +:1015A0008E20A4D3AA25BCF6C23E49E1E75D2E5F9A +:1015B0007AF121B4732A353FBD135330E3E3852814 +:1015C0008F4FFE2ECF563A17CE96DADFE5A9CCF034 +:1015D000D3EFD068C8E7F99492DDA92DF0C590CF7C +:1015E000C1CEA638A351C9FDB4DC705C427D08EDC4 +:1015F000248CB36B718F847ED4A8702FC5B147AD96 +:101600006674EE2C2FDC27E17E4FEE0A3B9F8F4A5B +:101610008DFE03F9276F75BBED7B00F70D01BF2D24 +:1016200032973FDEF4680AF28F7772417AB3CEE3E5 +:1016300084171727F8E66DE15FFC5B80F38729BF0D +:101640004D3BF6F57E7FF4C1980C7CFDF0D1E806A9 +:101650003C1767348877618FC61D149FBAF962E220 +:10166000C73C110F5BFCB7EE567C0FE112D7D1BD22 +:10167000A9B860AEE3F6D60E8FDD3FBE24C0E555B7 +:1016800044A4EA06D0F867587EBF05FFA0FF27D71D +:10169000707B5DFDBDBF3D2D95B1CF05BC937FA592 +:1016A00055E1BE767E5C7B91D2D744BA0F52D11EF3 +:1016B000098FA0B241E2E09D2DC1FD58AF9369FBB7 +:1016C000354BAA1668E7E1B92EF6924CF462B98C54 +:1016D000F6B13B5BD2E977AD18F82578AF38EFD695 +:1016E00020E5A1FE068A0FDDEE65E877E80D0ABD6C +:1016F0001F9E3CDE18D6AFCF657A47D8E079376BAE +:101700006F423E3A63B745DF33D46BF6FC941E7BE1 +:10171000BEBCD79E9F76C89EDF2FF00ADEC8C142AE +:10172000130FF07F6374BEF5A98BDFDF1AD3C0ED12 +:101730008881768FDDBF61C20E5A224833BDCF6EDD +:10174000772C11F6CF92247BE2B05FBBB416D2F0B7 +:10175000DD513AA7136D70842480E10FF77F398E35 +:10176000DB414733E977C7906980AE57DDDA1FDF89 +:1017700034C65BE29B7784DEACDF0BF9770EB928C9 +:101780008636DBF15A4F23EAA5D10AE9256DDA8ABC +:10179000ED3E8C5FBFEBA2DF567A47D747901DDB4B +:1017A000A3125DD689F37FE63BCA66BCEEFA00B7AA +:1017B000CF969BF8C20D318AFBC47D689F9FB19B79 +:1017C000B1E2247B909787FD585E124F2E0FFB2BC2 +:1017D000B3FA9F8602512011BECB85FD89F935A051 +:1017E0004FCA0EDADF2F1DB1D09E0FF5A864A74EA9 +:1017F00066915494CFE87A633F93059E4349F78AF4 +:10180000278BFBC69393BE6731BE3F9B55E68FC5C2 +:10181000F207EEA36FD4EB252CDFB8183C12A8DA40 +:101820001E10FBEAC5AC18E93E1B7F6F04F1FC16E5 +:10183000FFDD08D7E1F1EFA07DC00EF07DBB75F9AB +:10184000FA66D44BDAAB0E3AFFA0F95849893FB19A +:10185000DFFE931321FC4DCAFE38E9CF1A1943F974 +:10186000DEDDE86628DF9F6AD428BFAB319BF2CF6C +:1018700036EA94EE6E2CA2F4F9C61095FFAAB18256 +:10188000F2FFDA18A67CBCB186F2A96995B45FF2C2 +:101890003ED4C3B8ADB764979BF631163B34E4939E +:1018A000E47578C98D37B92F03D1F67DDF2F6767CF +:1018B000023EDEC1DFBD9801F22DF0CBD94D85F699 +:1018C00078AD356E9D88D7C2FA9D48F1DAA81B54D1 +:1018D000CA719F2EEE8F89B8ED321ECF3E793F3C04 +:1018E000CE8D715F75B07E445C7C653B8FF3AEAC92 +:1018F000E0EFEFAF2CE3FECBFAE3F6F7999DD02FA4 +:10190000B65BB9EB46FEFB976A6F3DF991E57EE168 +:1019100047DE427E65F336375B9B9FF0274D3F32B3 +:10192000D9AEB7F8E736BD80279891BFBC6E89EB7A +:101930003FD6EFC710BF85716F0098FF74EDC08B65 +:10194000B8B5F50B8C27C1F7E2ECCFAB78BC89E7D3 +:1019500027EB697BD32DE5A1A2925919967C91FBC7 +:10196000F0C2268C3FF917513CAA30A5F4C50C4BA8 +:101970003CEA200EC8E34D6194E3FFAFE3517F16CC +:1019800071949F663E978EF104E30985E1F9E15F6A +:10199000673E3712FD59D45F188F435A737DC1F8E3 +:1019A0007DC822FEBB75FDFA459768DFC7A25FF6CA +:1019B000D3BB5542BFE4A519B23748E79D434DFA62 +:1019C000B07AC641E76A74A63BA78AF33C72A21CB0 +:1019D000A610E7EFD9733D49E563510FC8F4BEBBCC +:1019E000A51FA26B51CC4267867E9A5DDF4CEAB69A +:1019F000E7FFBBF499C95F9B945E3A0FB6E9EBC170 +:101A0000F97649AAE977F7C32D9F9896C0079DE715 +:101A10002CC09497C3EAD983F38CB6A8B6719734D7 +:101A2000D8F38B57DBF38B56D8F396F184DEFC9614 +:101A30007923FC96555F7F88EF578C4FE8EBA52CF8 +:101A4000FF1CB453AE61217A3FF6EA769FCD5F7CEE +:101A50000B752AC541F9EFB8D589F356ACFA20EDDC +:101A6000EFE6AFD1C94FB8C4C48FC1F5B81B30D0B1 +:101A7000FFBB2B96F1F3E7C8AB5AF8BC6CF640F20B +:101A8000FBFE7549BF0BA727C525DC3AFFBDBCBCD3 +:101A900035C9715483E0C0F1F0770D06C2F3EDC68D +:101AA00035FB3B027A04F166BE43DFCFDF4A9F84F9 +:101AB000FB1775F8DE29E26F0D0B7792BDF81D3A22 +:101AC000277799F9FE91C1488FEB628DB4087C2588 +:101AD000E3BB6EF16F6B10DF756532C51D594301B5 +:101AE000AD69E2C3027AD7DD89E5791B259621B17C +:101AF000FEF7532E137DA4A785E8DDF7232DFCFC0C +:101B0000E091C5F3B3D03F30E90DF838C2F1C1DF41 +:101B100023C96FB0BF3F720DE3760113BFDF7D4D68 +:101B200092FE37E95FC72CF605D2076C699CCFCAD5 +:101B30000AFEFBCB2B711F11F50BE3EF7BAF573682 +:101B4000DBDEF74FD62F8159A176FC7DDEA369B28B +:101B50008EFE62CB52A5A6D31ED7739EC0A019FEDF +:101B60003B2BB1DEFE20B36A8C1FFC16CF3342FB49 +:101B7000DFFE20A3139FA0787BE12C37F2C79B697F +:101B8000A1497209670CF74CC87B424F30C8BB5C57 +:101B900007CEAD199DC87BBDC7CFAD390BDAA7EB1A +:101BA000F763FEF9546654CFC47E797E5D7BDFB95E +:101BB000FB468B71406EBF9FFAD775F8BE85B9DEC4 +:101BC000F1E900CE2FF6F5972ADE31F455B2CDF8C3 +:101BD0009330E09F6E2E9712EDD2B19D344CBB8BAB +:101BE000D9666590767EB31DE898364B1CD08CF391 +:101BF000C9021EEBF80ADA015A3405FD8F3B672B48 +:101C00001AFA41FF5938B24E36EF5AB619DF894DEC +:101C10006E07603799F0CB83C31FC372EBF8EA30CD +:101C2000F0FF57E3E364FD3945F9B7860FAAAFCD5E +:101C30003A85F9027CF8241FD3A329F270FD81CFE5 +:101C4000B076F0F97624F59746F06547370D0BDF4F +:101C500010FDC17C3763F9FF05333A71BA0080008B +:101C6000000000001F8B080000000000000BE57D55 +:101C70000B7854D5B5F03E73CE3C92CC2427993CDA +:101C8000264F4E42A241039D840483463C8140A3DB +:101C9000F2182A68AC41869706418868DB69C566F8 +:101CA000300F12841ABC7AEBA3D2098217FBB7FD5E +:101CB000A3E56FF92DD2A068B1461B5B8B68B546D2 +:101CC000DBDB4AEB2D29EA0FEDD5CFBBD6DAFB647F +:101CD000E69CCC84A0EDFDFA7F173FBF9D7DF63ECC +:101CE0007BEFB5F65A6BAFD73E93A66A8CD530968C +:101CF000B298A53B64C6982FB843AA66EC1B73152F +:101D0000755B31D45D8C0D643356087FB212C6D238 +:101D10006632A6403B9BAA44F64AF05C616E4715CA +:101D200063454C090F435F3763E14FE039BB8DD703 +:101D3000935938F2898D3175C5F0FDB6C98C1D2BCC +:101D400057D3FDD0E9EEC3335FACCE84F61EC99FF6 +:101D500004DD93EDBD92BF82B1DAD5BDF50E78FEFC +:101D6000E06DAC9F695846927478FEE07024498318 +:101D7000F76A5B76F73068AFEDF0300DE699C97A17 +:101D8000DB55789E7EA91288409976A9A233585FC8 +:101D90007AFAC58FC8C5B85E07C3FE1D6ADD230C7D +:101DA000FA7738D4C5580F7F99B1BDD05EB85A5D67 +:101DB000DC00FD0B4376BF4D4378447DB3EC0FE36D +:101DC000BABE3422691508FC88B4782AD42529D0F3 +:101DD0000FF50E5DA17193EF60BB25C413639A32BA +:101DE00083B15CFCCB86FD7AB7CC463CAD8179A053 +:101DF000C8D5F77F454A65FCDF0C814FC4B7C234B4 +:101E000007D41F10F89DC4860E3B33117FFC3DC6DE +:101E100086A4C51E283AD891D26CC433FF978BF89C +:101E20002DE77F7F02FF17AAB6B0731A0CE754772D +:101E3000E2BAD8571486FBC3C4BE503F796CBDF0DC +:101E40008EA1745671F67E67ABC3BA1457C604FAF6 +:101E50000DAF98CF5211DFCAEF62D7BF9241DDE8D4 +:101E600007F89C391C53E7851BF13689300DE51BBB +:101E7000979F60006F6D45C71C5CFF24CBFB8CF502 +:101E8000125D1BF4C1744553E17D49BCCFBA028C8D +:101E9000013D3A99BFDB31191F36ABBFBF90DA6DF8 +:101EA0009F40B90B3B229D1432A273EBFB52685B3F +:101EB00000E767B3C438C9CCE5023E703AA1043CE0 +:101EC000480EE6CA45BE005AB0E17EA4DA22486F49 +:101ED0005B24A6E0F3E87CC30CE773BA523A7EE7D2 +:101EE00005FE50FD2E5CEF563B6BEA477A06C40EAA +:101EF000E1FE28011599AB1DDA2B111EE6B731A0C2 +:101F0000875B550EF3568FFF9A7A5CEF8B76A29B18 +:101F1000761FF483F75253B4652C1D9EF72E6E7412 +:101F20005DCAD82F6643E3C58C6D57E77787EB60B2 +:101F3000DE33F92C381D7086FF2E83BAD2CA707E2C +:101F4000E79922D3F3A7DB180B9E1FADCF7697340A +:101F5000E07A1E11F2630EF377E07B735C320BC6FE +:101F6000ECABF34C2E0B7AE38D5F607AFE749B8BA7 +:101F7000059D13193F85055DB1E34F4E30FE7996FF +:101F8000F1D5B8E347C7F59AC6ED5418C991705317 +:101F90000AEDBFF19E51FE589DBD4FCD82FD72B03E +:101FA000169407CCE71FD201FF5B0B322BB7697C7D +:101FB0001CA49F7999E97DDBE0FD27552004E8DF2B +:101FC000307FB282F281152823A3F40A7C3F4FD0E0 +:101FD000AF0D2802E9B721D36EA17FBF12F0E0BA9E +:101FE000ADCF63F808F86B19D243CDD8F5DA3CD5FC +:101FF00043B89E4DCB9C9AB3786CBB51BED1C6669C +:10200000959631F66A52EB32E667ECB5DE55AECE08 +:102010005AA8A30CCA63EC4FBD5F6F0C03BC6F489A +:102020009C3E3B339F2E5BE14E3C5EB3C294DAAAEA +:1020300071DA1D036528F79B6D2CD84F741D9CFA2F +:10204000054F4C3B00584B722562826B59AB34AB49 +:102050003486CEDEB0C13EF0F5D4ACA8187F3D7515 +:1020600019E3B43B076A683D326B4DB49EBAAAB31C +:10207000AFE74DC44F05AEE71765E3AD6799C2E121 +:102080004BD8EE1822FC2C43FC548C5DCF32C6F1A9 +:102090007BD6F5D8389DC27A6AC6DB2F5C4FDD3817 +:1020A000FBB5CC3944F85986F849B09EBA89EC574B +:1020B0001B1017C893AD8ED6563C07932BF7BB2643 +:1020C00003BF6D6D965594B1C67B4B6FB9D5750D39 +:1020D000D0F42D771D989B0574FBEA6D32C92F163D +:1020E0003E30B7BE94B19D12976733D27774235DAB +:1020F000BE3F7F5339F1D747F03EC8EBEB704290BB +:10210000CFD7299C1FBF58E08E6C89E1E75D20D7AF +:1021100074900B11903F58EE0639A1C3BAF6B4F98A +:10212000A8FE689B46E5BEB6722ABF03EBC6F6EF73 +:10213000B6D552DD18A7A245D251FF98BA5ED2FBA0 +:10214000E2ECF7BA7489F0B13357BD7635CAE9FAD3 +:1021500064FF5E94132D9730DD25FA95E062FB9FB6 +:102160004E86F61D57B3CA6D50BB601F5F7766433E +:10217000764496104F4786DA50CE2CB16B12D4B706 +:102180006AAC91D32973D703BC2B6C42F6801C51E7 +:10219000A1DF7078EE1E943F37A4DB69FE1505833E +:1021A0004D129C5B2BF01C9E46E7158DCFD64974D3 +:1021B0003E053BECEFC4CA972FE2390BE77556405A +:1021C000313F67DBFFE24D253C933E738DCB1079A9 +:1021D00095CFD7C03E66B6DA35A000147974FE6597 +:1021E00035382203B08EA56FFF54B5A15E54A99077 +:1021F000FEB53349CDC5F30CF88A8532683DC47706 +:10220000CD0CE633E8A518E733D719BB93E061722C +:10221000735A10CF4B7C34732CDE436F6CE9381249 +:102220004377C1744F269EBBA03354A0BCFC90558D +:10223000DCDD808D0519A4BC59DF3FDD16EE3802C8 +:10224000A8CB4BE7C06C75703963ED67ACE71695AA +:10225000F7DBD53632EB7765D1F51529C3129E33FE +:102260009342F03C663D2C53672C46AF4B04C72E7F +:10227000E9BD5C360EDF16C17EC8D3480FFF3DEEC8 +:1022800013F1903416FE30C29F120B7FDDCF4B59F5 +:102290003C7ED1763620BF1C95FD5BB4287E0C7C3D +:1022A000FC77F3CD34C47F8D40D20C812FE017F939 +:1022B0004EBF86E734CBB6113D1565CE3EA14CE34B +:1022C000EDEF98E825A60E70CB4F9F9034D0E7BF76 +:1022D000DD7694F6C9980FF647EAACC0718725B44D +:1022E000538A06A01FC8372DC46C1D505F8DE3E0D4 +:1022F000BE5AE49BB6F9A8695F4F27A54E636930C3 +:102300008E9B95A3BDE463C97EB447422EFEFC2B91 +:10231000C9A9BBB13C9D541441FEFA8A1C0CA21CF5 +:102320003C6DEB771543BFFD79C11FA6A35D967E7B +:102330002480CBEFCCBEB81CE9A839747BA001F493 +:1023400032D5CB9607E2D083718E1E16787BC33EC2 +:1023500050980EF0BC9B37FB707A1CBDA039F47509 +:102360001A6F9690E7D6F6E3380ED0F343E27CBDC1 +:10237000E6E6274E3C0AF0246B15554863C9E54351 +:10238000F3A7039D74FF7C7215AAFB43625E00B83D +:102390001AF5954D39C19FC7CEEBD2542548F2AA04 +:1023A0007F26B6CFFACF8AC77F0EE3755FE9566501 +:1023B000A0B3F7ABE56A9B6DEC3A609CE3388EEB1B +:1023C000CC36A273639C4349C30FA19EC2D85597D4 +:1023D0001F073DE550FA70BE04F5E1F4AACB338146 +:1023E0005E0F650DE7637BE316D67304F8EA10D041 +:1023F0002E9E17E5F7B01E3C2F665DF1DE2377A316 +:10240000FC3BCFE1C76DED117A8D31EF951932C1EB +:10241000736586190F83EBC7C7C388C05B0C1E4664 +:10242000E2E1A1395FFF0B3E87452E9A0EAF74B7EC +:10243000B1C06A58A39ED39F341D363E57EB7FEC44 +:102440006E866678A4DE564CE3FC95E3A1FB2F7202 +:102450006A749C97F3F4BFE1F3C1F5BF983F1DD6B2 +:10246000953428FB25C0A7AB94855352E93D9611BE +:10247000F39E9EA32AB6E2E83E7CD1C7F9EB062F75 +:10248000975F1942FF6977F4FA1643A996FEEBAD00 +:102490002ABCD7551C6E0AC4A113E6B5D1FBC0A651 +:1024A0003ABED7A1EE76AD8CC1A396C1E9A225575D +:1024B0004FCB80F11D120B60BF6DB51C6FA983DE81 +:1024C0002AB2CB4A59F517802F2FF6F2FEB0EE1C38 +:1024D0005CB763662F3917924A39BCDB2AEE61E894 +:1024E0000F48F2DDCBCBD26116847525B17E17EE95 +:1024F000F779196A4F472DC2E12FC7FA3CEF233D08 +:102500000AEC7F1FEA26A0C7EA5047FB679703FA49 +:10251000A09E9FE7A0F3CF0AD7795EBE8F7A8E7E0A +:102520001EAE7B0C9E9CC38FDC0DEFF74C71F8C385 +:10253000B0FE59B6DEA695484F57B8E97C87E74DFF +:1025400091187C35093C3465D8E9FD9EBFBAA8DDF9 +:102550008AE789D2D9A51963F8ED525C671C3A9BCA +:1025600095118FCED212D2D93C1C270E9D7D1EC74D +:10257000B1E2C15A577C2C8C7CAA9CE91AE2A5EBEB +:102580006D1C07C82ACC607CA5713B8D2B9F49A68A +:102590007EF299ED435857D420C379B2A5E035387F +:1025A0003F1B941494F74942F4CB6E9DF6F9F7E97A +:1025B000E3CFA39476F1F15990A19E649D07C65F85 +:1025C000857058C777BAF401A4437F068767D6158C +:1025D000EE209E4FB384FE6DE055F62AD4FE4A06E7 +:1025E000B7EB12F1C5455EDE9E882F8ABCA37CB195 +:1025F00069227CB148D023ECCFD7A87F42BED84314 +:10260000657239E78B64C117455E166EF4E17A395D +:102610001FF4647CAB275C10E59366EFF74D7CB24A +:1026200014EAC82789E0AB15F0A14841FCBC582D3D +:102630008751DF7B9F4DDD8DFA6A6AADAAAC84E7D6 +:10264000BD19C6BAF5BB09EF6C9821BDF6B191C3AF +:102650004EE4BF5A89F8C513EED75D082FEB65E845 +:10266000F7BA5FD0F72ED46B516F3E8F119F32A512 +:1026700097213EACFC9B543A40E7E4A87E21F075DC +:10268000A337F06D9CB78F0D4F41FDC6D80F2B3C83 +:102690007BC47C5A9EBE271E9D9FEDBCF8299E17C9 +:1026A0005958F27132FED3D51A8FBF676D78F2C4D4 +:1026B000A3E38C7344BCFF63813743AE271B72BD19 +:1026C0007C54AEFF98E4FAFA6D5CAEE773B90EFC89 +:1026D0007E302EBF7B81DFA5B8FC7E2401BF3F1B6F +:1026E0000F0F7F07FEFEE578FCFDDD51FE1B1FDFAF +:1026F000E95E8EEF74EF67C3F72981EF13A21C0721 +:10270000DF27084F63F1FDC773C4F7A904F87E3FC4 +:1027100063FC73FCAFF1F6DB85F3F2713F8E1D575E +:102720009F04ED12D2B52AF467ED16D4971F027DEF +:102730000BED4238D724EF3F667FD3BCE3ECEF2CA0 +:102740001BD7C3D666DCD41376FF5DE62B1C6FBEA9 +:10275000D733385C673BEFFD828E002FA5DEACB12E +:1027600072B28F717B5BCF095EE8E572EC72944BBD +:10277000BBBE962161BCA4401F9050DF3E4FCCF7FA +:10278000708646E319EFED52062405FBB7AA5258AE +:10279000328D5733DE78D675C0FA6AB1FF8D5E7D13 +:1027A00026967B322C7A9BD01FFA32C22D28B7E7AF +:1027B00009393D4FC843A3FE4EAE5EEFE5E749033E +:1027C00096A07FDF662BE1729BEBE95C4E1BF0D895 +:1027D0000211368CE70A9871782E46E5FDB2BD8667 +:1027E000BC5FE3C6FE8AD0DFF405B8BEB95E95EBE8 +:1027F000C362BC44EB6C167A64B3D807A30EEBBC7F +:102800005AACF3DAF1D669C5D344D7DB195DEF2AA8 +:102810006F4DE2F18072080E63DF700CB48B073BE2 +:1028200038BF2E1A9C4C7ADAC651FD35B001C7D399 +:1028300053D4235E0A1EA8C938EE43C26FFCD0FAF7 +:102840007B28DED5B759AD447D2EAF859F73DAFA6C +:10285000A23EB417BF2AF6CB4AA7A3EF3BFAA74C78 +:10286000AF20BCDC8178B9AC8EEB0D6920377036B7 +:10287000E47FB42B339C611FDAB3DD52D8B712E981 +:10288000FF72D04FB1837B495CBFC7A85E2FFC1A93 +:1028900006BCCC5D7D96FE5BA8BF9A126E0D9C4B6C +:1028A0007F27E817EE583C7A2B095DAE9123DE6A4C +:1028B000F435A4933FEC6141B7B04FF713BFBB337E +:1028C000C95F62E075ECF87CBFEA03AD12E239A99A +:1028D0001CA682A7498130FA40984DEB65C3A81F1A +:1028E00095027DA03FD3FD0A8D175DC7F4E9E6751B +:1028F000544EC77544C7EF32D6F31DA29B09AEC72D +:10290000E897182FBC9FE14748E437D89F173C88C9 +:102910007808635C07F7F5379E483B2DB8F573815F +:10292000A9580E90BFE432210F2F73B9497EB28FA0 +:1029300094F762E30F2035593EF96D47E352D227F1 +:1029400029E7B48E17C75BC744FD16C7BD63FC16E5 +:10295000C7BD3571FA0BBF452A1B0ECBE8FF5119D5 +:10296000E98F38657E15E75FD40F7F2BE8252D8131 +:10297000BEF75BC15F067D5FD3399B95B8D10E6012 +:10298000614F062FD3AA88BFDEF5523F7ECEEA57AD +:10299000A62B685718F018F019E37E28E0185DAFF1 +:1029A00083DB0F6FD859D3E36E0E5F55EC7AF2EAF2 +:1029B0003F8C85D380CFBADEA36DA140831DE35940 +:1029C000412ABDA13900035F675215ED63D85E85CA +:1029D00061E5A1EB37C112BE2E055926ACFBE6F32B +:1029E0004E7CC30FF819724DDF82FED78DF3E19D47 +:1029F000E289D3C7A7A50B2B3D9CB6A96F0461DE66 +:102A0000F6B9954D9928A1C2D3AF1804DDA3FD45B1 +:102A1000FF7137D4F3EF9D7E850FF8A2FD657F53DC +:102A2000161C190B33D56DDB417EB42F96480EB3BF +:102A3000F00F92EBF1DCB89CD7CB32E75F81FA4321 +:102A4000FBB512E91317C0FB543F6CD6EFA27CD53F +:102A5000C9ED01E441C0777BBD94A01F977B9FCB5C +:102A6000E4E75EFB82F1FBED31FA2D939AE2F9D1B6 +:102A70008C7E5BB378BF109A2AF8CE191BC9E17619 +:102A8000FD9D1724A81FAEE3F13976A49EFCC297E2 +:102A9000198A4C473DEDD34B624F80DFEA705F9F50 +:102AA000B9D449E745EF15C9117CEFF04719DB515F +:102AB000FEF7EA25C47D4EA00777152F919EEDC045 +:102AC000E7B2A80BBA9E93497A8E549D497170550E +:102AD000417E4D446FCF97BD5A84FA14D0D5959C52 +:102AE000AEA45ED4C3865C93B7FB61DE8D0764BF82 +:102AF000534B4C2F63E13EE5C6F3D90ADFCF6BE5BC +:102B000024C93D160F00F71771DE43052383B8373C +:102B10002FD5DB6C77C27CCFCC744E19A67330D026 +:102B20009C89E7ED2FF9B93701385663FF7387C3E6 +:102B30007F3C88707CE4E0E7A858E7C204FB257B73 +:102B40003E70E3FA102E3C77008E4D08875C385CAF +:102B500080F2C358FF44E5E41D995C6EC5C8C93BCB +:102B600032E3E809861C817D0E6772BDE9838D0C16 +:102B7000F566AE3725925F3B32CD7AC704E4D78E37 +:102B8000D8F9272ABF62F6E1BE4F434FB0D384770E +:102B9000BB403B543515EAB3F06F0DF33BD8B0732F +:102BA0007294EEA5336CC093CAE91FF334DA834103 +:102BB0009F574E3CFEFEBCC0A3B82E7BE6B01C3C2B +:102BC00087FD797CECFE3C3EDEFECC95DF6B4F034F +:102BD0003979AA4E2278F5330012C95D30ED62E0F2 +:102BE00099E5DA4EF6515A2DEC614CBC215D7731F6 +:102BF00025263EE76D544DF5AC80CFD43FA7493331 +:102C0000B5E706CB4DEDF92D7E53BDB0B5D6D47FDB +:102C1000524837D58BC38DA6FE93BB03A67A596F56 +:102C200093A9FFF9F7074DED53222DA6F60BF7B543 +:102C30009AEA53FB43A6FE9F3B1036B5570E749B92 +:102C4000DAA71FED35D56B86EE37F5BFE878C4D42B +:102C50003E73789FA9FD9277FB4DF54B470E98FA8E +:102C6000CF62A3F95712E5BB8126A918FB6433B5DF +:102C700053FCE9141026E6D5052A25F21303790D35 +:102C800095827CB88A77615789BC2836DF4EF91C5B +:102C900061F80FCFDD406C7E47318EAB2A986FA66E +:102CA000FBEDA6FCA959221F6A96250FAA9E95A4A2 +:102CB0006930EFACA3328B407DFE59E86A2C5CD2C0 +:102CC00059E062FE0184EB573C5F8E85F521CC53C1 +:102CD0004B04970EFF215C8BB011DE5B7886515C54 +:102CE000780C9C029E85B592827C37065EC6FD01FB +:102CF0005678ADF1CEA22C11EFF4333FC6FDE6CAF3 +:102D00006E5AEFA95740AEB0C478A80FBBE85CADCF +:102D1000D7A508E2CD887B8E81D7C7A27402702523 +:102D200069663E4C2937F3A1C7EF1B9F8EC26C5CCE +:102D30007C9F0DBF1AFCC7F5B51105F13BAB4E6288 +:102D40000F1627C6EF22C59C4F3451BC5E9E25E26C +:102D5000E802AF1FB2BA45D3017FFAA27405FDABFA +:102D6000563967E00FECA445595989CF9DE6AC73FD +:102D7000D69B9BB33E85DE1C7BFE677D8A7307CEA8 +:102D800085B5382F5382DAB9D837B7658DB16F6EF4 +:102D90008B5DBF158E51FBA68EFBC78D738C954A3C +:102DA000C43F5D33D96EF4E385B3C6B773C25956D9 +:102DB0003BE794126BE7E8CE9C64940BA02774E287 +:102DC0007A0CBBE7FD6AEF117409DE2EFC8351F823 +:102DD000F56EC4DB44E1FE97B170FFCB78701FDA6B +:102DE000C2FD18875E94FDBB61D66733E5812C80F8 +:102DF000F71E3695F2608C784C6390713E5576EEF6 +:102E000043E30FD6FF308EDBA8D54B6BDDF8FC1605 +:102E10002A13D1DB77CE9DDEBEF319E9ED89AC4FE5 +:102E2000A16F7E7A7BABF57810CAF64E6E0F6DED12 +:102E3000E179695BB7F0FAAF045D3C23F0B0339BF6 +:102E4000D3517D6A2DE9B79D9287E464E7DBDCCE40 +:102E5000E8B24B11C6FDCC3FC3FD3F923B230DF5BD +:102E6000D6F7077FE90EC6D83D6F08F88F09F8DF5F +:102E7000FCD228FCBF20F8BF2CE06F5AB5A3C604D3 +:102E80007F814AF21AE58C1C85DBA1F653BEC73C54 +:102E9000D94DF07594B28893CE277DFEDC6C4A53F1 +:102EA00027F9DD51C0E5730ACA67A8BB449E1348E1 +:102EB00055CA5FEA86FF484E8BBC26BB2F26AF88DB +:102EC000A1DF98E7D1A4B0987CA7E268FF244B1E4D +:102ED00092552EBE67C84507CBE1727173F7850422 +:102EE00057D0176B5759E5A2513F323C3967380E1E +:102EF0001F19655AADABBD34465EA7EBAAA9EE6DAE +:102F0000F4B5C7E6D9650534537B4E53B9A93D37AF +:102F1000E837D5F35B6A4DFD0B5B75537D52A8D145 +:102F2000D4BF381C30D527773799FA97F5064DED81 +:102F3000E7DFDF626A9F126935D52FDC1732F59F14 +:102F4000DA1F36B57F1FFF203F40C9953AE0E9FB05 +:102F500098D707767FDEBF4EBA12FDB35D6F5FE391 +:102F6000C3786867D6D5AE587AB49647B238DD26AE +:102F70006A37F8F7505B20D050C6D8405B93899FE2 +:102F80001B855C3BD2D642EDCFB5B5D2F3AA6CCE51 +:102F90004F4AA6C8C73F607BDB998AF4DB1A46FA22 +:102FA000CC968255D928478F4A0AEA1D86B9889A55 +:102FB00011FA0B2F3B03F3C5C05BCFAE0D34C4E059 +:102FC000638E6B85A97DAEBAD6D4DE08F8B818E456 +:102FD000F6E77DB7989E5FAE7DD5F4DE968295F7D5 +:102FE000231F6DF53918F211E59D5D1CC5EB568563 +:102FF000E3D9C0EBD6032B7DA88F8CE29F7DFE4AE0 +:10300000BC9761E0FF8AEC0681FFCFFBD0BE3D920A +:103010000EF81D878ECF865F2B5E8F8A785DA3C3E7 +:103020001C87DF2CE49551825C5A86F87D7150FE36 +:103030002048D08EEFCFB0CE6F9D17E4554B368C25 +:10304000FB1F65AFDE700F1B2BAF43D93CAED668BC +:1030500003030BF49E467BB811E318865DAA481C57 +:10306000E79D59F3FC18F7FFB2A00FC6BE46ED5F0F +:1030700032F624019E141024033172482A5EDA8449 +:1030800072B831CB41FEBB46912F607DEFA66C1E1E +:1030900037F9ACF4F4A9E948D0874147067D24927A +:1030A000EF0A6BA5FB308ADBC1E380D1B8DEFDC43B +:1030B0002F43F1F9C57A3E5AC70F319EC7CFDC3C8A +:1030C000DE471D51FF3FEA25BD2911DEB7B6A9BA7B +:1030D00082FABEAAA5D17D0C91CF0D0AAF2F36DFA3 +:1030E000F91FD5CFA81B7986D6FE21FC13FD4F3ED4 +:1030F00037C18568E6978F82E598377154F083DF92 +:10310000A73F85F8F3FB023F213CBA82E58837A848 +:103110001FA6BA3A5A7F06E99CF9A08E7103559D05 +:10312000507C02DEFB19BDA78C8E334875371F0714 +:10313000EA2FD13C99A3F521AA17F0FE139D27C6CB +:103140007FC8E11E92E95EC6078A9E960178B93A69 +:10315000B48AF4B06B436BA9EC6E53EB7F0778FC39 +:10316000755BA0A303F8F9EA6BA7AB980F73ED9A10 +:1031700055548EEA6F827F1CC54A00E33F72B12D21 +:10318000B087E2893C2E2583BAC3F1DA4175CC239E +:10319000DF0CF2B579FDE28E8E183E70E17DA3C999 +:1031A00068FF297F8BB5A7EA6DFA7F649F43BC67F0 +:1031B0002C7C2093805E3F709746C244BFB3D57885 +:1031C000712503CE44E337279013069C06BEAC74EA +:1031D000D7535AA5E239AA9481BE954AE390FEC519 +:1031E0003C2EC14FBCDF7530FE138837C5AF217D43 +:1031F000621DE9D5888F5E0728DA5C159DAFDE1663 +:10320000C8C8C91A8BC789E22913E618A2F97A2916 +:103210008E77AFDBA887291F2A50CAE37A491A6F35 +:1032200037D691138C308C03A65433BA6760C37EB3 +:10323000681FA40CE9B64AC62EF9E6C357FAA640A1 +:103240007B69D067F353FD05250BE3D550C7DCEE52 +:10325000F0C32F1CA9433B4ABD00F34C5D1D0FBCBE +:1032600070F452CA7F127AC9032FA0DCEB33EA183C +:103270006001F9D9973C5AD75D604BF5958CD6C360 +:1032800058DF25F2212EF9E6032F74703FF68C9C4F +:103290001A8C43DAC264DF304F84EE19FE9DE38B53 +:1032A0007D154F1C2D417BC1A7F8CB34D48F99E9F4 +:1032B000BD95390EEAF79C2FD888EBF16C1E21776B +:1032C000C65D15191E94CFD17D8858F681E33D5017 +:1032D0001E11F1D508EDCB24DF07E17A986F521D5E +:1032E000BF86A731751BD6B50E9B3A400F789EB9A5 +:1032F000ADBC557260FE4D0553F19C6D17F1EE9417 +:10330000721EC7579DDC9EBB2E879F7337E5C8A2F0 +:10331000E4E76B9A9117DA68A3FE69A28CC2DF21F9 +:10332000FA2B26F9D29C1FBC212736DECD06E69764 +:10333000C33AFA3A323230EE5BDF61BB0DF5A06F73 +:103340008BFC1ED8A7B948C7837E6F7290EFDBCD88 +:1033500054B7EE9B80EB6CFB9668BF0C3B2A51FB8D +:10336000D5D7CA74FFD5E60ADEB714E6BDF980B733 +:1033700012F3A98F35C9D54350DFF0540EE5177409 +:103380000A7C6DB48D64E379DB33B03380A573FFC1 +:103390008A70BE86E7AD665AC7C683F5943F7367E9 +:1033A0004A6A1DEEB7751DC73EFA6926EEC3FCBF1B +:1033B0003A89DFD10185FEABE5C45C04D62BE8AFCA +:1033C000BA5EE8418F89FD7945E85BD71BF6191B8A +:1033D000BD272A7D02A6E692C08A0588BF954D3298 +:1033E000C33C88E5D176EE070B71BF950BFE437B9E +:1033F0002EC8D2E7217BAE089BFD596B987F1EDE5D +:103400001B5AD56D792EECB93516BFD8354D517D87 +:10341000E87D16956F4B34AE472CF1A744306F67AB +:1034200069C0AC47BDFAB1BC1CF5BE63F82EACFB5D +:1034300058F3F9BBB19F151F1FE4703BFB15A17733 +:103440008EE287515FB6322039F0CAA3151F56F8B5 +:1034500047F166C1C30AA5725E9636160F56F8018B +:103460006384DF35805FCC334A848F79F27C3BC63E +:103470008B572D9648BFB3E2C78A07C31E37E0F9C2 +:10348000850127F31F4B81F97EBBDDCE50EF620330 +:1034900097517C6C91E817030FD9DD2AFCC7FD9882 +:1034A000DAB35E5C272013EF555E15B69BECF5355D +:1034B000C25E5FC90269E8470638DF49B0CF26BB64 +:1034C000DDBA6E2B5C0BC47961B5EF993250817A0D +:1034D000CC891CE1579E66F67FB2EAACB872D76A17 +:1034E000E71B74B53CB4D8A44F4B2C385A57419FB6 +:1034F000D8E49335BC173CD464BF0FD5A6C5AE1134 +:103500007E7F54DC2B5ACC5C9A1BFAB7C043846B89 +:10351000919E447563BC53BD5223F2E526182E4498 +:10352000E7AF4E76C772DE05CAF061C4DF269F831F +:10353000E6013AFB2096CE12E121C927FC1CD3D824 +:10354000B47381BF2B8711FFAB5E3680F19011C938 +:1035500015D92D45FD72E8CA7480A82CF2150B7F91 +:10356000A36E8EEF819D80F273027EBA225F9C78FB +:10357000A491EF60D0E7F52EF780CCE9EEBD51FACB +:1035800030E53B0419FAE1BAF26EF223BEBB92B900 +:10359000DFCD3827419FBD00E7E94AE6FE3743CE3D +:1035A00027A33E2863BE11E88331781B734E1F5951 +:1035B000BDAF0FE83BE856D836EA554EEB0BAAC62E +:1035C000FA46EC38CEF290FD54EC38410F48950A9B +:1035D0005CD7C52A962B7D3C6F6325E3F63F0B43F2 +:1035E000FF98B84410B7119F637275CCF8D87F3339 +:1035F000E6FD74C78C5F42E3539E5C303739829B93 +:10360000629D7FCCF96599CF3A5E97C8F3EB72F86B +:103610008774F45BFF4CAEDC42E0727B6581CF6661 +:103620003A7756BABCBA12737FFB9D5C7753ECF9BC +:103630006D94C67B063EA37ADACCC1583DED2E7B55 +:10364000F5E0D1C2183D8D550FA29FE3D3EA69B7CB +:10365000FAAA07F13ED8E9379D742E9C6AE47832C5 +:10366000F27114502BD232C82E0B63E90AE5133CD9 +:10367000467E8E57F34BB86FB7FB346EFF6A3C2E15 +:10368000ED55FCF41D8C7B8C7BE5F80FF6E19E0C70 +:10369000B50FE5B4D3C53A9232F03D0EB731DFE84D +:1036A000B8E57E49AD48ECEFDEEA3BE7B8FED678F8 +:1036B0007C34686B7DEB0ED41B7F26338C4B2CF354 +:1036C0007D959E5BEDB09D3E7EDE7D5D0AEEF4D580 +:1036D000A01CFBE5B2AFA0FF64BF93FCCA377FF923 +:1036E000C4376A34C40FECF774B2CFEE437FB05CDA +:1036F0006623FDBCBB90FB7DE42D12D92F3D9AA320 +:10370000713FEA21D9F53FC175B146CD86F47C2AD7 +:1037100099D3F3B1EC067A7EFACDAD3EBC8793EC3B +:103720004BA63C48794BF1DDF41D86E765FA3E4235 +:103730005732A3F3BACBC1CBC77D5C0F7C5CE0F5FD +:10374000315176DB83E5AD15984F8D9B1BC5834BBF +:1037500009D377065C67147A2E8BEF82742507CB2A +:10376000BF14833F635CD71960E2E9F1DE77D07361 +:10377000848BDECFE0EB31FA3DE9E379A94FFAB86B +:10378000DEE63A9342F37565C0BADCB1E3A4F2E732 +:10379000B6F8F753CB7C730E21FE8F65EB3FF191AA +:1037A0005C1DB6A31CBDDE77F4387E97E4EC729006 +:1037B000C7233C1F490393502FAF97237716E37716 +:1037C0004ED405D5680FD6DB290F66A83CD383718C +:1037D000A59715D58376F990D8FFC05C99EC6BF866 +:1037E00097B504F765EEAA195CDEF1F8AB711EBD62 +:1037F0005CF1C4D06CBCE711B6933DB2DC158EE031 +:10380000BA62F41F1197E6DF5BA1F7609DCB1B64E2 +:103810003D29358E9E28BE9B62E89F20268E60DC67 +:10382000FD37A2FA56C3FB4B71F9C34C75CC9162BC +:10383000F551FEBD9135A2DFF290597FB2EA572BC8 +:10384000ABFDCF7935C4477F80F0315521BE98A8B4 +:10385000DE099C42747257C30F5CF8BD99E7845C23 +:10386000F034FC524739017AD252FC5ECEA206599E +:103870001D80DEDB433686727447B59DEC8B1DE5FB +:10388000C3CF5F86FC58AD686497970F2D9943EDC1 +:10389000352AEA4D4338452EF5E7F121B73B5286EC +:1038A000E77BCDAF5CAB62E86547F53B53F09CDB53 +:1038B00025E808C4A07BEE8C28FE103F1A09516E43 +:1038C000C71FF95A32C9A7B7B6CB221EC3E8BB241B +:1038D0001E1FE7C7B9225EB3EA3E89F2D356D51C54 +:1038E000ABC7EFDBACEA94882F976F96DF463FF9C2 +:1038F000F290596F0BB6823EA7119ECDFA9CD0F77D +:10390000607007D2EF44F53DABFE529C2BF4B72A12 +:103910005615ABBF24B2AF0CFD45617A796E567473 +:10392000FE950A8FB732FD2AC2EF5CF9BDE72F037F +:10393000F84E559794203E1ECCE6F4BF23F4BA0B04 +:10394000EDDF1D1FC9C4E7BB1CA0D8609E7F6ADDE8 +:10395000235B607D87BF7641CE6FA1FD925C87B807 +:10396000EFA47DB30EF9E06776A2A344EB72856401 +:10397000560A7C9F1492A834F6C5134A624A8CBC3E +:10398000F188FB5959D52352498C7CB93C979F0744 +:10399000E99BB95D9D55CDC2F9B05F1B4A4B76637B +:1039A0007E2B1C4CE42F4D2AD4AA908E8CFED9126B +:1039B000CFE7771CA8C72F21B149B00E9C4F837564 +:1039C000E039571C4AA17A49C84BE5E4503A95A51D +:1039D000A17C6A2F0B4DA6F2BC50313D3F3F7421B4 +:1039E000D5CB43D3A99C12AAA4F282D025545E0859 +:1039F000E71CF6AB08D553393574253D9F16BA8AB6 +:103A0000CACF851653E90F5D47ED95A155545685EC +:103A100056D0F3E9A17554AF0EDD4AF59AD02D5476 +:103A2000CE08DD4EE545A1762A6B435BA8DFCCD0FE +:103A30005D54BF38F42F545E12DA49655DE8216A9F +:103A400037F48D97045F2D4C5FA9F2BC1ABF1FEDB0 +:103A5000835D09E470772E97E3A77D7A6B6E4DB492 +:103A60009F2CEE4358FB75E49AEFD5DA5C03AEC9A0 +:103A700064DF4FAE42FB7E57C8A6D37E9595D07DBE +:103A8000BB36B13F49F6563DBF386ACFA737F07B0A +:103A9000301B0EAC20BF3AABF54EC83FB43157E3F4 +:103AA000F4A884E93B0EBB5A19C555934A87241CD8 +:103AB000A7AFC2D68872FDAE8A53F4DDAA05357A67 +:103AC00035FA19B470FFD112925773AA719D07721B +:103AD000EDC28FA4DF8DFC33A93AEB8AABA07D52F7 +:103AE000878DCC5D8DA9F558D71A18C937C3FFD279 +:103AF000976C3E0FFB730D7D6FF85EECBF2BAFB480 +:103B00008A9F23FCDE8C7C7B09D997BB1C0312DEC9 +:103B1000BB0F83E1B3D790FDD8BF6BE5A3A8479552 +:103B200074FB9F76E1FC61FF745C6FBFE0BBE25EFB +:103B30006D76122C68F2FDFAD3186B288B04672778 +:103B400043FDFC7DE1A7B19CD21F999D02E585074D +:103B5000069E46F131756078B61BEA9F3BCA9E41CE +:103B6000B4560E69733C509F7E5C7F06DDDB35C327 +:103B7000C139A9B84F8E487B2AAC67D76F987F0BA5 +:103B8000D46BDFEB95C18C88EEBF93B53E1EB32F8F +:103B90002EAD57477C17DCA6921F6797329C945E28 +:103BA00031767FFA106E8433C4BF7F50A08FD03E31 +:103BB0001454B3AA30ED837A4539ED03A79737043F +:103BC0007DC03E0C20FDF525ABF5D83E3297A9BB54 +:103BD000A17DE1541BC96B4767099D2B06DD017E62 +:103BE000A72CF6C4EE8364DCA732E9A989F0FBC6F2 +:103BF0003F097ED7E5727E48845FA43DEE5F1D9F3E +:103C00008FFF23CAC72762F9D8DA2F238FCB7F2BE8 +:103C10009EFB6CEC289C3D31F7C1600FA1AB27CF18 +:103C2000764E7875E6FD73E0F577424E24C22B2977 +:103C3000A7B9D1FBB789E40D8E8770C791738487CC +:103C40000D4F15EF467F60411EA7BF9EEF72FFA587 +:103C500021E79CFBEB07D08F69C8B977CF26BF84DB +:103C60009C71083F47D46F3B95BEEB572EF66F53C0 +:103C70008E7E5E1EC5C7CCFEF7ED36B51EF72F3C17 +:103C80008BE7672DAC7D5997697FB42AFEF93B46D7 +:103C9000FCB42BB52282FB570CFA8202FB0E7F0E7E +:103CA000609952A1DAF07EB491B7C5D415BE583EE2 +:103CB00033CEF3281F1AF49041F620D229F6BF41E3 +:103CC000AC333A8EC4F375BE9A47DF1F33DEEB7315 +:103CD00017D07B46FF4474DB61D06DC713746EA4AC +:103CE000D471FD20AD2383E838AD21889A4D0CFDB9 +:103CF000061D48BFC13CF99CE877791E8F2FFC77E1 +:103D0000D36F0DDAF4780ED5A98731BF6E129C3BC4 +:103D10001AF2651DE01AFDFD3E07C93F8DF1FDD386 +:103D2000EA789E2AE06B00FDA1619B87E273B27383 +:103D3000A401E167CE7415ED9F4D39C10D79E3F013 +:103D4000819AA255E266B63D78D902772EDEBB5045 +:103D500093B1BE19EADBD1DF9031CC447D873BF7CC +:103D6000D3FB27DAF266BD88FE897772F53B906E49 +:103D700037E504DA705DFAF92AE5671A747CB6F360 +:103D8000DFE0C728FFA89506FFE077CD40FEF5E00D +:103D9000B8C67889F499863C2E2F1FCC3B9B3E9366 +:103DA00041FC047CCEF947D07FCFFEF1F9DC586F9F +:103DB00077DEF8FCDE73F9EB61EC6DF8555DC27FE0 +:103DC00062AC33C9C7EF1F27CD67649778847F75CE +:103DD0002DFA5725BC87ED3A8B7F3562CA2734FC14 +:103DE000AAC6F711AC78FE419E396F13E5D11315C1 +:103DF000517898B0A76E1573F6DEE94FC3FB33E137 +:103E000097B81FC3B8EF301FFF063825BF447EA404 +:103E1000DEAF73BE5B50C02277C2BAE7FF4D623A95 +:103E2000AC63F06F329556BFEA02780FF58641C950 +:103E3000157141FFC3954E86F1B7418F8DECBAC124 +:103E4000B725E283C1CA14CAFF3B527911E5F7587E +:103E5000F3FE8CF29AE08AB8799156FC5CB3EC5987 +:103E600037EECB43EA6C5731D9A53C0E69C863A342 +:103E7000DF5BE29C7BCE177C0DE9CDB37AA4039E79 +:103E8000B00E95C7210DFACB75EF7F1EBFC398BB4F +:103E90009EEB95792CB245758FA5EBE6FCE06F7132 +:103EA0009C87A271BEC1F360FE6E4DC4F936E6D5A3 +:103EB00095C0000F8CC6F982C7887FBCFD954887E6 +:103EC0000FF97FF0D8DDD03EDF09762ACAE1E96F2D +:103ED00066E277A29A6B9ECD427C2CB0ACDF280DB7 +:103EE000FF99D51E7D3F6F349E40FEF4F7ABAF22A5 +:103EF000FB37913FDDF0EB197629FAEDD43872DC0F +:103F00008A6F63FE6689DB9FCC2E911C1BC4AE3387 +:103F1000494ED8F3919F3B789E8CEE94284FE6C58E +:103F2000EAE9146F607EAF88630E14C4C6318DF564 +:103F3000C0F3B278F1CD44F90705F9FC9C69B6737A +:103F40007FA574CBB3CD386F73A553E2F713399DBA +:103F50002EE7B1349622FA2FF76FA53C756BBC2281 +:103F6000259FE7630DDA070A54E1CFF4C7A1CF44D8 +:103F700078396EEFA5B8D8F1353243BBFCC5E045C2 +:103F800039E37D77ED75A48F32C6FE98CF88AE46B3 +:103F9000F74DCB8CBBFFC731BFCC3E361E34DABEEB +:103FA0002289FCDC4D227FC2783E57C0BD5A94CC9A +:103FB000192E473F6FF7CAFB5C6C2AE6699CAA0979 +:103FC00003DE7BD848CD6E940F9B3DE437685AF1F1 +:103FD00061CD96A93178ACE5785CFE4C8F8AF4DA35 +:103FE00054DC91158E99C78ACFD502AE2441CFA05B +:103FF000BE34127D58FD1FA54B385D3C93E41F80F5 +:10400000F95DBF9A5C85E7B8E1FFC079B89CE6FE30 +:10401000DADB44FC01654D2C7D37853698E446D2C9 +:1040200019894562EB4A2FF93B93CE28F4DCCA4745 +:1040300017E49BF9C8C077A2FD33F06D7D6EE0FBFD +:10404000F88A9E72F4C77527C7D793BE29FA1975E7 +:104050006B7CDC880B5BDFFB4A3ED75FDF0FCE2437 +:10406000FA6A7284CB26C2BF067E8E7DB455457E29 +:104070007189B8BB11F7F79467509CFF58934C7146 +:1040800089E432B50FFD02ADF9FCDC35CE3D237E6F +:1040900098281EE8B1C41593CAA11E8367EBB967BF +:1040A000EC63A238A2759F765AF669347E98806FC9 +:1040B0000C7E69467AAC397B3EC4350E9E9F6B7D83 +:1040C000BE7614EF0F2C9D0153DD5A6353910E778A +:1040D000C0FF61E49B6A3BE535BDF69193A19EE785 +:1040E000A9B13D827EEEE32B5E5B3207E5428D9DFA +:1040F000E21203C0F7EB81EF7B04FF8FFA55B7CBD9 +:10410000913209ED07C914D74D2E7599EA0B6AEC67 +:10411000743EEFB8B73282F64C13E371BB9E9A2F10 +:10412000A40DC0DFAF953A683C578F447125D7C7BF +:104130005B03B8DF032BBED944FED432473ACA47EB +:10414000831E8CB8A14B7C0FFA99B21957E3F70B79 +:10415000DEDA6E6794572F45E3CA1AE87FAB8AAB65 +:10416000B391EE8631CF95E2F3C2CFCB847C107E43 +:1041700059C31F6EF5CF26F2CB4ED41F6BD08B9553 +:104180002E5EC98F1F574EB4CF317ED95FC7954B76 +:10419000DA12937C31E49121175E17F0BF56DAB53D +:1041A0000CE345AF059D027FFFFA625B35E5F3D175 +:1041B0007D6CD7C7FF3697BE5BBA568AEB8F2D1141 +:1041C00074C5307E5F1EC5F3B5C1683E2DB2F37570 +:1041D0002DE67C5AEBB990584E8D2F87BE9DCFF5BA +:1041E00023E3DCC0F321C3CDCF079B274AF79FF51C +:1041F0009C685AD1E90F4FA5721F8EE39A9C4CDF41 +:104200005BB2F2BB55CE1BF35BD79D744666116F54 +:104210002C7F6AFCBC1995F30E6A1FBDD7F28E4441 +:10422000F75A4E65EBBE0280D791A3E71640FF6FA9 +:1042300065EB79053172B2DDCEF365651B0B3E4E41 +:10424000FA74C094675B5FC0E9A0B39EF73B9C35EE +:10425000C3F7EF50B6BF5DE9B3A31FBE80C7ED8EB5 +:1042600078C6BF2770B7A09FBB501E9545F5F81DB7 +:10427000623F017C1DFD239DF6802FD67FA715A4EC +:10428000D3FCA9339F18423F69BB6A53250D4B8568 +:10429000FCA91D6EA5710FBDC7E1EEF4E87BC3421A +:1042A0001F5A8ADF2315EB53DC967C53CCB1CE8AA0 +:1042B000C2655D6F7D013F075272741DF1F5A36CFD +:1042C000BD1EF11752C24EC477C815DF4EF9BCC0EF +:1042D000578E189F3137C505695EF9DCEF25EDCFA4 +:1042E0000B7E01E73D6D0B33B4B3DB3D33CEE9FB11 +:1042F000A6CB0A24EBFDEA650571E82BE6FEFBED93 +:1043000018F7ACD7D807115CB4B8B767E48582DE7C +:10431000BB1AF1714D67FC7CCB3EA68DEBB7728B5F +:1043200071C0DE5E5750C3F3000BB8BDDD81F29D56 +:10433000F9F938A9671907F04471DD097C6FE57652 +:104340001C7FEC7DAFE0308E3F513C768DC563D74E +:1043500078783CFDE6F969188F34BE1763ED67C4C1 +:10436000F18D7A77BA79FEAE2A5EDF29E64D1371B8 +:10437000F6BD82BE5C96EF99B8E6F3EFF218F9103D +:10438000C6387B0B3CDCCECF9BBD17D7DB55CCBFF3 +:10439000CFD1956EFE4E47B0A07E2FE2E9DB62FCE6 +:1043A000BD827EFB4A785CC1FA1DC0B5A2FFDA82ED +:1043B000D95402A74D413A71C8725C3C7E47F093D4 +:1043C000713FD2B89FB66A876CBA9F669CABAB9EB2 +:1043D0006274EE633C14F93951DE5BB05C7D0E5DB6 +:1043E000391FB20A07E67B7DD6F316F1999231F6B2 +:1043F000BC7DBA60F4BCF59FE379FB7C41569CF32D +:1044000096F9CB63E5AC71DE0E5BE23846392CE8F9 +:1044100060BBB0C3517EA2BCC6EF8391DC56B89D91 +:104420007A4F2AF76322FDE17741860BCCF92F46BC +:10443000BE8D916763E4DD187936A3DFC5B1E4D999 +:104440000C3B863B7360BF46A630BA679AD3AC1E5E +:10445000CEC1FC84068DA13FAAAB98A5D6627BA5F0 +:10446000CD8F7EFBF4256A971DEAE91AC32F05E27A +:104470007DDCB007C6751416139CDBC3571DCE81B7 +:104480007E699A3ACF07FDD29A34FA1E98E1671EE8 +:10449000ECB893BE2F64C07FC6E0038DFB575D1A56 +:1044A000B7BBEB5921E9EDD17EA3DFBD3ACDF1CE0B +:1044B000FDCFF81954B2E3FDC9A4B72EC4483F7D1F +:1044C000C7A59FF2E4B4BC391F637F837FF07B6B89 +:1044D0008FC7F865AD79458EC2F1F38A929B393F5B +:1044E0005AF7512B14E7438E9E52887CF3D1279FB5 +:1044F000C833A2F732939BF9EF06256572B99AA4E7 +:10450000F1B8325325F2F7B8B46010D793E4AB5545 +:10451000515EB63BDCDD123A6A57DB18E6CFCE11AE +:10452000E3E84D4CFA7D39FFE91C2E3715F67B8305 +:104530009E650114CC3B5B8008DADCF61458FF1C46 +:10454000F7CFFE8ADFBD4F2A6DAD47BFE0B3CBF991 +:1045500018F724F07F1BF955D17CB25D2F99F3C970 +:104560001E78C99C4FF6C04B9F259FECD2C2075EB8 +:10457000FA47E69319F2E9B81C3C7E3BE07729083C +:1045800015B4DB96C288CDE4B7F411DE96083C87FB +:10459000FF06787645F17CDCCEBF97B2F4E0F38479 +:1045A00047FB6C8E6AFBD7D222EDA4974468FCAB24 +:1045B0005DBD73310E7ED231320DE73DF9D4AB854E +:1045C000A82FBE79C7FB1E4C42784B19F1E0F37758 +:1045D00037FFD283F87A73B34CFACEF5C21E58DE99 +:1045E000F6F10C8C875C2FE8E9FF16EA4B0B63F4BD +:1045F0003A16CAA273766D442693C79063EBF6A56C +:104600000862E3F59BFBBDA6BA71BEDE2C7E5F603F +:10461000DD770F3BF261FD6BF7A593BDFCAE88D350 +:10462000BCBBBFB00FE5F2BD8536317FE086C22C42 +:10463000BE2ED44FDE3AE86403249786EC8CDBCFA1 +:10464000F3A56C9E5F89FFACEB7AEE500A8DBBE65A +:104650003E7E1EACD0F8EF1C040FAE25B96F5DF79F +:104660009A37FB9FCB8375ADE9E1DF09C1FE786F17 +:104670002618E2FE2E2B5CD6736155FF2D0E9E1F71 +:104680005C310FE5D887DD12C931EB3971E3C1BB6D +:1046900068BCD5CCDF5D07EB5AD36B6DBFFC0F4810 +:1046A000DC375AEE415BCF8F6D85C28E9FC12EFAEB +:1046B00004E44EBBBB246DBC7BB7EFB671A6FC63B4 +:1046C0009B8BCAF7DA542A971672BA5D77E0F073BB +:1046D000F9C4D64333F0DC5DF0FC1CD71759D46F16 +:1046E000A1F45D35F090867429FCAEC25E6916F8BF +:1046F000B733EEA7F886F0D7CBAAD55FFFF212CC7E +:104700001B08BBF9F7A70CFF4533E223260FBAF9C4 +:104710002CFE8BC70AC5B97911C0CD7F47E2E71AD5 +:104720003BFBB99908FE44EFDD9CE0BBFC067F2C07 +:1047300015F27AF59EC55D18FA687FEA0F45F43DDB +:104740002D9157270BBCC822AE21334B1E5D98BD5F +:10475000C262E8F746FC08F4E4B1746AD00B73F364 +:10476000F75DCCB585EE1B18F4797007E1CFA01B7F +:10477000BC51644399C3067CB6DAB3DF4700FA3311 +:10478000D5FF6C1F2E423971A3E53B247F96E2DBF7 +:10479000353F2E2CE1FE514D9F87E7D41A16E85283 +:1047A000090FFC77C0DE557A9FBB1DF97B8FC49043 +:1047B000AF6EFED1F77E8872E9A6FF7D5F2ACAA59B +:1047C000134A6F36CEB77E6F672ADEDF7A5709A7A6 +:1047D000E2FB27225C3E59E7CB2D928CFC74B70498 +:1047E000727303FE8904B03ABC10E5E2FFDB6BA7ED +:1047F000DFCFDBB8CF3980F7E636ECE77884FADB39 +:10480000BCBE95F0B5F18099EF6EFAB7FBB2357E7C +:10481000AF355FE02F1F45F3863D76F2AB6E7845EE +:10482000C6CFF8B18D6C84E0B3BE8FEB3803FBB616 +:10483000B15F5EE1481BDB0E9A8C03F96AA3D01FBF +:1048400037EEE7FBB5D1A22FB624F0CFB88A04BF6C +:104850000BBA07FCD0F716C2B02EFEB3185C3EB7F9 +:104860003FE6D4317E74E2F59C3EF49FBCB7E78509 +:1048700054A922CA07C6F7F0DEEB9F3CAEBCF8B3E2 +:10488000E09751F92FCE19ED002C10EF121CE4E542 +:104890007AFB40EA25809FF57D767F181EAFFF9E4C +:1048A000ACA3E9C65E73923F6EDDF79E3D7631ACF8 +:1048B00067DDE3F6CCF91C1C37CA6D63DF3622BD19 +:1048C0005745F7E9A61F3CEBC0DF07C1E7981F6F0C +:1048D000ECD7BAC70F3BD0DF6EC5EB9CFEC30ECE44 +:1048E00077967DEB7F7B1E9ECBED8F9D76205D9C2A +:1048F0003824B19CE2B1EFB7EC7D2115FB19FB36F2 +:10490000BA8F63F66F60E193D5D48FF23ACFB68F4A +:10491000EFE20F0DD610BD7FFF4998BFE575A71FC9 +:10492000E16FF9FEADA908C71F94564EF70F7766E1 +:10493000E379DC620F67AB54F2E72DBBBE44F47839 +:10494000E3CB5FCAE6BF13A8E7223F039CB908DFA9 +:104950009A6F2D25F86E6041A2C79687F93DB40F76 +:1049600015D6F8789C7DDD29F8E60FBB9DA4ECFFF9 +:10497000018378288F7FC1EFBB32760BE921C6BD5A +:104980007892D050FFD0C5F7E9862223FF8BCBB7B2 +:104990008DA2D7C63D5B49BEFDB150CF41FE073C5D +:1049A00098E49CFCF2DC1C2117296F98DE039131FE +:1049B000079F63FF21BB9E34CDF49EF063F1F96F36 +:1049C00013F3C3BA93A5CF41993D9ADF3084EBD856 +:1049D00020F177907E303F76A088EBF5A3FCBFA74F +:1049E00087EF93E0FF0F5EE1726543647123C98531 +:1049F00021FB400EF68B1C5E22915C7046EFFDC7DA +:104A0000F2F51EBBE06B733BAC4B9162F17988FF12 +:104A10009ED3C6FD5C6EDF702FF48FE1E328BD38B6 +:104A2000A2CF8BA37C69C4076EB4C4678CD22A174B +:104A3000EE2A329F87A3F1856F658DEBCF37F4B2F5 +:104A4000F5F6C8A30F22FFBEE624BD67FDF7EC9480 +:104A50002FFEA7EF3E73EC8B40EF7FEA37F8D62CA2 +:104A60006FAD7CDBF2C452168F6FFF94196071F941 +:104A7000169EC7E5DB4CFE1D99BF9BBC15FB9088BD +:104A80004F6F4C206F7F6891B7A067A45D02D53F40 +:104A90007E67DD24949B56FC1A78B5CACD45455AED +:104AA0005CB909FF5E6131F834F068D0EB4DFFEB83 +:104AB000669A67948E0D7A35CEB1517AB5C26DC6BD +:104AC000A7B5FDABF8034D59D1FDB7DF097634E644 +:104AD000C73D25D37DB093DA482ADE1FE84CE27E3D +:104AE0008393AAA8A7F3FA4896A30BE587F17C2441 +:104AF00089DF13391918494D8FB1E7DE3E28A7A287 +:104B0000DF7C38C2ED6F2B1D8264A6F987857D3E60 +:104B100057761785D0FEEA9D5C859180531D7651AE +:104B20002FE3BFC321F2514E8A7B6027C5BDAF7F03 +:104B300067816397903EA52BB980CF551C54D6F260 +:104B40007C7B2AEAE3AB0EAEA3EFB4ADDE6EC6C348 +:104B50000DEE3DA4AF7FC8365379C3BDE6FB8D375C +:104B600009F9DEF22DCBF38357121DDD64A1A3A05A +:104B7000F0435AE9E813833F2B5925B793795EC96F +:104B80002621D7E6CA158B9A00FF278FCA142F3A21 +:104B90007550665D08F777F9F79E5898E7216C0025 +:104BA0007A8EF55FBE877476FE58BC8EB6FF9F374F +:104BB00067DC0E5DD6FFF0D7D31E82F2BD1FBE7636 +:104BC000DE8FB1FEA3578B7ECDC6F69F73E8AFD7BD +:104BD000A3FC3A79C849F74D4F1EFA69D1ED587FC9 +:104BE000D2E9C7759EBC93DBC7E1431E3AD74F1687 +:104BF000727DB0FDA9D3D386491EF37BDD174CE24D +:104C0000F1905307FFF337F85DDD5307012A9487CE +:104C1000C21EDBF86412D9D7279F3A3D23F6F7422C +:104C20003E2B3C1B44DCF1A48735611ECFC974EEDA +:104C3000BFDAF8E39994E77FF3FEC30EBC6F31E768 +:104C4000271F4F43B973F209AE4F80BEBB0B55EF20 +:104C50009A49DD77DB01CF7F16BFB7F9D2A4A38BCA +:104C600030EE32162F1C0F27010F0817E0A505E5BF +:104C700065227CCCFFA7C5C75FAEC7F9D71FBC882C +:104C8000EE7947F122E9FCB987F291007EFEFCD073 +:104C9000E96968779F0DDE9B26F1BCC2FF29F0769B +:104CA000FFD3C2CBE95D9DA4D1FAAC743F96AE7F31 +:104CB000F465AA7FDFE3A7F54E90DFF7FD0FA3EFC2 +:104CC000E7FEBFDDEFE7C57E7B54B40B4F3EF571C9 +:104CD000113B07B8FFFD9F769FC7877B54CFB1F983 +:104CE0005DD5B0BED7596469BD44DA07E91DED6EE4 +:104CF0009EDF3EB4A498EEF13061572C94F8F9ACE5 +:104D00006ADC9E686736CABB59987903E9130BF5CC +:104D10001DE23E9C8DD6339459FBE8B63876D422FA +:104D20005D26FDEDA52D303FE0E9258F4D6D8771A6 +:104D3000FF0B329FD94F0080000000001F8B08003E +:104D400000000000000BB57D0B7854D5B5F03E7324 +:104D5000E6CC4C9249327941900466F22281108669 +:104D6000F00A1064C2CB70213081F032410690808D +:104D70001848C017FEE53603E1A5620D105ADAF2B5 +:104D8000FB8F48B9A0DE362AADB4559C18B4F1515A +:104D900089555B5A2D4E8122224A14AD63F5D67F88 +:104DA000ADB5F7CE9C330481B677F860B3DF6BAF57 +:104DB000BD5E7BEDC799E951FF624D606C8EEFBE21 +:104DC0004FD422083DD33E6010CE48ED98AF40FA54 +:104DD000CC122B0BDA18FDBE81BF37330B0BE68BE1 +:104DE000B88BB179F38DF973D9BE34F37008576875 +:104DF0002CA0407B51E5BBFA3B181B01F558C3665C +:104E0000871D53FD8CA531A699DCB6E150FE4F2CD1 +:104E100030A70CC226C6CA5B21BFC96E622C95B1F1 +:104E2000CE2AD73E55A1666CAC176356FE7F36CEB0 +:104E3000A950FD26662A6F2DC4149387CAA7961C15 +:104E4000B89F97E9C4F23378711857ED7406E39A66 +:104E5000E17990C66BF56DEDA49099FD210EA7F256 +:104E60000DD55BCBD848C6EE12637B7D03C007E34C +:104E70007A3DDEE468725292D33C12EB6197802750 +:104E80008F1A443C5A3DAA2726C1D01E8DBB1B9FBA +:104E900002DFD78BD7E8F9B91A9E539C0EC24B3468 +:104EA0009E23618DE3EC20182CF3B16FE2181F05EF +:104EB000E209FB84F14D56A112B47F7CBF12405C25 +:104EC0001F2F59BA7D28C69F50DC98FF79E93066BC +:104ED0008371BFAEB1234A22D4F1789C8E91D81E43 +:104EE000AFAF94FCE64B05E04C2C3145E082BF4966 +:104EF0009E58C3B852CA930DF134EF0D86F2BDE748 +:104F00006719F2FBF8061AF2FBAE2836C4331BC64B +:104F100018CAF75F37C11077F9FFC3503E7BDB2C0F +:104F2000433CB7F96643F9017B9618F20B022B0D4F +:104F3000F9830EAE35C407B7FE1F43F92147361A71 +:104F4000F28706EF37E40FEBD869888FE8FC91A170 +:104F5000FCA813FB0CF9A3438F19F2C79E7BCA1060 +:104F60001FD7F52B43F9F1E1170CF132F6AAA1FC9A +:104F700044DB9B86F864C73B86F237A59F36E44F37 +:104F8000757E68C897F33F2DFF92211DB894F98173 +:104F90001E56F22456E1FECAD08E997901F90CA86A +:104FA000B681421B6BA63096B5526807B6C550292C +:104FB000F2FDC089F4FAB07F0B12D7EBA3BFE8E78C +:104FC00003D23C5E3A3BD14774ED6148B733F1BF41 +:104FD0004E086D76BF8AFC6763FE9862C612C22ACD +:104FE0000B0E033A0C2B143AC2712C980274188ED3 +:104FF000A130399C42E929E1240A53C37D293D2D82 +:10500000DC87C25EE16C0A7B875D14A6870751D8F6 +:10501000275C40E10DE16154AF6F78288519E1B15B +:10502000949E191E4D61BFF0444AEF1F2EA3D01964 +:105030009E46A12B3C95C2ACF06C2A971DAEA430C5 +:10504000275C4DE9B9E10514E68597523820BC98F4 +:10505000C2FCF0ED1416846FA37060F80EAA372816 +:10506000BC86C2C2F077287D70F85E0A8BC24D14F0 +:105070000E096FA0D01D7E80CA0D0DDF47617178CB +:1050800017A50F0BEFA07078F8C7943E22FC430AD7 +:1050900047861FA57054F8110A4BC28F53383A7CCB +:1050A00088C231E1A7A9DED8F0931496867F4DE936 +:1050B000E3C2BFA4F0C6703BA58F0FB751E809BF8C +:1050C0004AE965E197299C107E93D22786DFA0707C +:1050D00052F81D4A9F1CFE238553C2A729BC29FCF8 +:1050E000170ACBC31F523835FC0185FF11BE44F5AA +:1050F000A6853FA1707AF82B4AAF087F49E137F8BF +:105100001B0FB451AA5DE896C759F86FB7FC337D01 +:105110000321B327C3A022E5A343293777C42590F1 +:105120005C9CB19ECBC51FC47D7C8CE4E468AB93D2 +:10513000EBA43D448F3582EE37E33F7D186B1BFDBA +:105140007E4608F4D396B2D3EFDE01FAC9BFC6CAD1 +:105150007EC28B44C9DDAFED213BCF7040FA4241A6 +:10516000D7C74BDAD38029D896E2509D17DA79D089 +:1051700015AAC1D0EC52489F7E25F4A0C965A2783B +:10518000EF222EFF6BD6E426FA502FA65EDBF8CA7C +:105190009C5C3FCBF2F7E7F27698BDAB9F77F0B51A +:1051A000B773ADE5BE88492862203FD6D978784FDD +:1051B0006CC23E0CBF88E917403D7DD6E94B7701B4 +:1051C0003CFE098CF0EE3F191F68223C370C217819 +:1051D000AEBD1DD7BFA99D81AEB4ABB7C3CC1E7306 +:1051E00005CC5FB598BF7735EFFCC5503E9469722A +:1051F0006F84A46AFFF2E9A8C727AB353C3DC3EC36 +:10520000265B42AD21B9B604DBD4E1CF5AA79D0A93 +:10521000E9E46B35C8CD32D0F3D577823D5174794E +:105220007EC8C3C86EDA5AA704FC582EC344E5AA48 +:1052300099F95448CA6148DF007488E3786703D05D +:10524000B32BD29FAFEEA60F70BC3EB69DEC0E1FE7 +:10525000D6D3D917EBDEDDB0E998AEBF69AEF8540E +:10526000E427368A8DFA468DD075B5E86B6B9DEADA +:105270000E023C97DE52DD186F4FB33005E2A155A8 +:1052800056EA976D4B233E7927ED17994EA0D72FFD +:105290001AFD9B8E698C2D06B9ED01BE6E5F754FB0 +:1052A0003AF2C5D6CD4F6A2C1EF1B8866118A1A777 +:1052B00000D16D2893599C8311BF6BCC44F7F92C16 +:1052C00083EC45310F9AC9D91A84F1B27E36F74F73 +:1052D00020AE9A980FED4CD9CE6F05FFC8F03D1364 +:1052E000C7A37FB512F809CCC9564B437E7221B6CD +:1052F000C3EB7558381D9CDEE1DAB711F2CBCDCC8B +:10530000662E36D87FB1882F5078CCA4B317A3ED82 +:10531000C37B5D49C22E6B605E18D76985CD6F1562 +:10532000724091F067135D592A21DF9A6AE376662D +:1053300073E5ED384F00E70A595E857EAA917E60DD +:105340001EAAD7C7790A20FFBB2E2E1F804EFC2134 +:105350009D1ED6140E3F5B05E37311FDD661DCBACA +:10536000DD9A75BF4BD73F9603B97952B4735A1182 +:1053700078D920EA99793BBEED4901AC674D3513E8 +:105380007C5AA6E7162FC065F5039C4558AEEB2E58 +:10539000A4F7A5FE24763F447D9B942928D7ACDB57 +:1053A00037ACC17CC01F3383E8B09A99D902785CCE +:1053B000CC1C53D211BEED8A5BC8CBC8F8009EEA64 +:1053C000ED0A8D6FBF908367362B0457E84125C0E7 +:1053D0005C440FD43F337B4FFC41D7AF9CEF6AD185 +:1053E0006F75F333F72844E7CC8378AC16FD2F5262 +:1053F0005903C6A3F186FC87F83D2EF071E63FE322 +:1054000069FC97F7EBB6540E8EC0DD3DFFEBE33D34 +:10541000314591716F56403E203E1FB4D238AD02E7 +:105420001E89873FBA92A99FD0869BFA2DE9011E5B +:10543000A46DA6A39368FAD24C629EFB319A2F49C1 +:10544000F7926E3A04BDCBF07D312E86EDC87E54C6 +:105450004C7718E8F4267D3EB47B53C61A867C4709 +:105460007C3386B1638F5CF2FA217EAB4BE8156723 +:10547000433ECA49D93FFC3CC417825EAD769BA728 +:1054800000C6FD96E83F1A2FD17AE4996E3899CF7D +:105490003252C85B13A63B29BD7ABB95F02CE7F7C7 +:1054A00014F215AD133DFD685E1C026F829E5A0416 +:1054B0001DB560FD11D83FD03FCAF91D56E27F39B6 +:1054C0001FD1F89572FF24AE5BA1FDEF6312C8EF08 +:1054D000F6C4450ACED7DF049C69485F90DF669D1D +:1054E000A92C2E8C8CC39E65A2CC54417FD1E3B4F1 +:1054F00067F1FA1E519F7D0DE923699D4CF3DDADE7 +:1055000027B2F8FCC9F89478933700E5A7FD00E8C6 +:10551000B8F0F2766FCAE6E39DF650EB67BF43FA48 +:10552000986721B9B87B03973F917679B9D9A23CA6 +:105530009B9F4CF2FA6AFAFDE43A3506F55973F886 +:10554000FCE33F83F663BC1692FF312CF4F8CF6086 +:10555000B0AC8A517FED8917299E303DAB588578D4 +:10556000B3274B5902F05E10FDCA76779598CA03AF +:10557000762C3FB3CFAD90DF523957B95507679AB4 +:1055800039D113E0F8EDB342E4AF80FCA3B3CE0E03 +:1055900042BDD23ECFB15E03386CD39903A73CD94C +:1055A000C93CD89ECDC962B03CF6BB4287A7E4E9AE +:1055B0003CBF6DF6943ECBA05EF3F48DA3B15E4B81 +:1055C000A5252607E0DD55EE2F51757409F97E5C9F +:1055D000976F9D049405E388C9285E8FA231C6DCCD +:1055E000D8E142FC963277AE13E1EBAFF874706706 +:1055F000648BF9CDE1FD6D7572FF87CCAFCFE6F31B +:105600007A20DB42E55E88EBFF750ECAE9E92607E2 +:10561000F64F7C8FEDE75888BF772AA161481713B2 +:10562000554729F2D525515FEA434DC852CDB6BD45 +:1056300013D74B5A848F6DE4FF10FA8ACA215F4852 +:1056400079DF87CB0F5D7949FFA437B449962CF4F5 +:10565000BB548979C39F22FB0338B42A46FCB84364 +:10566000B63787115F817C5650AF49F9AF557949FC +:105670005FEC12FCC498B70FF2ABC4C70AD1FEAE00 +:105680000CEF02B48399D9A160FE4EC5A12403DEBC +:1056900016097E4912FC048CAE907D26CA49BDBD18 +:1056A0006D1C0BA0DEDED62D1738BC16316ED05720 +:1056B0000CCB5BA69B489F594ABDA46F2D93FC6BF6 +:1056C00030BC4FE8692DDD6C90C7721CEBB35C04F5 +:1056D000C7EE39161AEF8E3E8E00F76379FB087C11 +:1056E00099485FE25204F0B323D3B180EB8D068674 +:1056F000F8D829ED003323FC101A75F3A2E558B849 +:105700001DE00991DCD54AFCA44FB4AA5FDC83FEFE +:10571000A69D113BC263C171295C3E5ACA2D246704 +:10572000370A3C5926FD82E463F438A45EE99EBF43 +:10573000A879BF4CFE47C51FAAB4F4C1FE76C3BC0E +:1057400090FDB229FD584E2F32DD845DDCBCE7D6DA +:10575000E1286F4D0CEDE2786F2DD9C5BB157F07A1 +:10576000D2B73FD7C4503EC06F7BB7BF8DC7ED6C7B +:1057700064848E37AC79BF220BEDDD4A9303CBC432 +:105780000F5F9387F3A3654C213BF601B00FD15E09 +:10579000766767D1781FAAD8598EE5ED434D248FDF +:1057A0005ABCA7E2911F9F17FA70CCB9CE89899095 +:1057B0009F32DD518CFC25D3479F09AA989E5CCE71 +:1057C000D3C75634C3A21BE37EC2FF4365BFAF18E5 +:1057D000057027149AC94FB65B096E53711CE31804 +:1057E000ADF71227051D13A17E5206EFD7332958B6 +:1057F0003E0AE377AA4C81F2F68F52CB507E8C554D +:1058000092385CF8CF0D34443FFA549A34195F58FB +:10581000B92283E89BF4EC0BFB96EEF0DB31DE5C07 +:105820008374C672AC0EE453C4B32D99E68D44F66E +:1058300042A04B0B84BFC9E2788837B3A009F49922 +:1058400029AE261DC75F91E26B40FA2B47922BA62B +:105850007C5B0A9517FCACD6B8B9DFC5E81F957C10 +:1058600019FF82D207EB379771BAB30FB718FC3E16 +:10587000B185C6B82DC718D7328CF12CA16FDA13B9 +:105880001B09BF56A1FF760B7E95FD9E12FA53862B +:10589000CF5B9C77221E9E8F8D677E05E39CDFFD8C +:1058A0001F9B859DEB2E9DAD93271542AEA2BEC6D4 +:1058B0007EA49E3EB9EEF483A8B79ABD4E935ECE09 +:1058C0004BBD74257D1D2FF4B0C46774BE49C8FB61 +:1058D000A6C675EC746E245D15ED8D78CBD7149F3C +:1058E0008AF870923E94F961D1EF883C4F384B2F83 +:1058F000DFDA0B14D7607DFB1C0FC9769FC783F9D5 +:10590000F3675D653DBE91DA95F64B74FE38D19E26 +:10591000E72AF647EFECEBB33F6EBE46FBA3B72892 +:10592000B7E83AED8F896AE8920BF9A1BF89F86F61 +:105930006BC64EA6B7BB6A05BCC528EBD358F7FAB1 +:10594000FB4AED46AF7B0766DB53CFA2FF5CAE7B25 +:10595000AF525FAE6BDF96FDB9C79A908F9285FF0D +:10596000E7DDA93B6D686F5E729BC8996E4706477D +:105970003975AF4AEB78407F8C57B7EEB58555E661 +:1059800049019EC67532848F6539A95D9BB3992103 +:105990001C96742E97DA13C7135DA774DB9FFD0D59 +:1059A000F6A79CB7A42BD0B345E4F7CEE670975B7F +:1059B0007DF3494FCD2F36D09512657FCA7990F28D +:1059C000F3D7174E3D3004C69356C5E5E72901AF1E +:1059D0002C9F56E52E25F9F23560538797295339C8 +:1059E0001D45C325ED526B9611AEE8724951F0CBBF +:1059F000F61384AC99321ADAEFA19EA43B59EF64F6 +:105A000078CC67484F09A91CAE84AA860E8AE73075 +:105A100092F75A09B7DF26F65F6B8B2DE4F4B6D206 +:105A20008EF46535D0D98D6ACFFC60CEE170A27D51 +:105A3000A7927DC71CC8FF56E66E43BDC0CC89C483 +:105A40001F60C7A523FCE45F7492FC762E46F8C560 +:105A5000385B84DE8FD8394EF24FE8F4B745EF97C4 +:105A6000E8B62798517F3F982DFD125E86F653B415 +:105A70009D24ED02692749FBAEDB8E13F612FEB4BE +:105A80009111BBCA52CEC86E91F06D1D0D7618F4FF +:105A9000B7556131A4F72B4C7CBD6FF690DD9D505E +:105AA000DACB7DBF33D2AEA584DB87FF6E7BE53ECC +:105AB00005EC3298EBEF09BA4C62CE3E8CFBB3FAA0 +:105AC00020DFE9D717FAF507CA43B4CB52040C6DAF +:105AD000F31A9813D7E9D39B9907ED03B4EB717DC3 +:105AE000F1F5AEE0785C374C9F9583E33D8A7C010D +:105AF000E931D34D0A9677781CA5BEC2487F47FF8F +:105B00001EDBA756472747279C1D762BD4DF966BB5 +:105B100071284E9A0FAED7BE8C253B7A62765E1FF7 +:105B2000A7AEFC7921B77755F93CE867D9E6EA4595 +:105B3000EBAA6E7924F4D0439573C94E7B21AE5BFA +:105B4000CFF2F5C426EEF78AA6D313822FAC021F3C +:105B50002D15A6181BAD9F26D0FAE944760CB5DBAF +:105B60006C4E54C8BFE3E1E36F9BED5C8074BCB83E +:105B700084DCE728872CCB21FF0FD9B1543EC1210B +:105B8000ED752EF71E2AEBF5C8FD3ABFE429D16F5B +:105B9000B3D2958EF3B45B93F6ADFB655C8FED4E9F +:105BA000CB29463A7968DCF7E72F41FDF9DDC1A43E +:105BB0003F65BD1A97EF2FD9D0CF7B13E6EEB9150D +:105BC000D2D5ACBC7E38EEEF215F42FE9F1DCC8C5F +:105BD000F2F7CF207C3728D8BEB73307F9E6C6BF27 +:105BE000DDB5C449F53FC81E61A87F0BD2B3AC3FF9 +:105BF000C8E5BD80F93BA7CE257B6A5795B30FC298 +:105C000061715A84D9EA4FC7F8CEC9AC58EF876A98 +:105C100013F3F445366FE7A1CA2DE908577BB65355 +:105C20008CD72BE890AF6376BAB6A42F0138D32671 +:105C300071B923ED1558977A70DE1E9A9347FBE5EC +:105C4000389FE87F6813F3DC2EE4D82ECFA7E9CB8A +:105C500018D28F93E85DF623E93F09B52B84893884 +:105C6000BF3AFADEC5E4CFF96C17D261A66328E229 +:105C7000FB0E017F5295582F5B1369FE5A267B035A +:105C8000AA8BF3C93282EF6F8497B6795EA2F7349C +:105C9000C11F31E57CBE59952590EBD2F3C9845CD8 +:105CA000E213E0031FF1499642EB78016F7279E845 +:105CB00069F41BB40DB0D03AF846958FE75AED83DE +:105CC000F788D3409CE678B373B8DFBE88D689EBFB +:105CD0005348AFD598DA721B00CE9A8D410AA3EBD8 +:105CE00097832DDEC9FD7CBD90CE59C318D2E777CE +:105CF00008997269FB88445C1FF8127839C5EC1B5F +:105D000085F1F27F2C1D65C1F1FE299EA13DBA30BF +:105D10009B2D9A05E98B140ECFC2A6A9E5B81E1BD0 +:105D20009BC3E9F678234CF000C6DE68B4310F302F +:105D3000E79B8D0E8ABFDD984EF13F343A29FC6314 +:105D4000633E85672C5CDF2E4C618BBC7CFD6B4118 +:105D5000795296C3E7A92C47FACDEE4C074D02F0D5 +:105D6000BC39C2E48029F0BB664D86B54A48E3726F +:105D70007EA647455DD32D5FE757C5D1DEAE8C2F9C +:105D8000F68E35E4B3FC619138AD9FB91C59B22D44 +:105D9000691FFA05164C4F31949FBBADAFB1FD1C86 +:105DA0003EAF95E5D986F49B6B0619E28BC3A0380C +:105DB00086211996D03EC39DC24E60AC84E3DFC1FC +:105DC000CB7ED630AAF73DD0FF67AF69941F3D0F59 +:105DD000672C9CEEFCBF57851FDB47F3F2F9894C1B +:105DE00086F096FF43A57D0AF618F7FF2DDDA33058 +:105DF0003F0AF92EFF2D58EFCE47AC6E2C77EB1EE5 +:105E000095F9101E34DAA0BFF36FE4EEBB9FE6D520 +:105E1000FF3096EB8272FB20EB9CC6FC0E20CDA5DA +:105E200021D18E52DC17F17F2E897992C094FA200D +:105E3000E6DDBC7B00CE8F2A9A6B4D48C7EA6B69C2 +:105E400026A8FFD1532A433EBA6DCDDB231D80D750 +:105E5000952FB5FEBE04DA3BD3AC3207F4F7E1412F +:105E6000EB23DCAFE0E98D7A3832CE4011D2E5B8D1 +:105E70007EDEC61CC0EBF9DA40119D07599F46F43F +:105E80007D393E60FCA84F902EA13DDFDDF136DC70 +:105E9000DF5FAAB97B0D253AE2EB043F1BDE879555 +:105EA00040F9ED5A7980FC2F9E1938CE33CD292642 +:105EB0007EEEE629A2AB2566A745DFDF92ED2AE953 +:105EC00001980CEE17DFA1FAC076865F336F779BDF +:105ED000E263BD2F9FC73B709F0ADABF2333368032 +:105EE00028BE05FBE8613DF331F08ECF1A89AF7C07 +:105EF0004E25BB8E0D773E548AFBB6FB278E40792C +:105F0000C57CBCFDCF9225DD6CA2FE3FF530968EA0 +:105F1000F3BF3F3E80EBC60BA6A74E9A611E869A42 +:105F20007D87107F2B66F81F5680252E3E7BFA7BDF +:105F300063A1DCF9FFD6DCDC3DE3799CE4078C0B44 +:105F4000F96C8959E8B1757C5F8B9903077E84767B +:105F5000CE9F7A937EBA5C1E6DE0EB1A591EC0305C +:105F6000956010ECA5001E7D4E36C55188FEED569D +:105F7000719E2740E59D0824E0CF510721E0EDF414 +:105F800088F8FBD91098AFA87DADD3829FDB843C05 +:105F90009172CF94CBE5C052B93F7094EB7B98E0FF +:105FA000B7D04FB38271FCD48B7DC0150D7CDFF26E +:105FB000773959D44E7DC34DEF4BFB0EE7E776A002 +:105FC000439CFF5A47D29D9D10AF3B18E30E407D86 +:105FD000073A3DD3A82D07E2FD3651E595FC3B2C51 +:105FE000D8EFCA9F2B2C05FB0D6867D01EB3014666 +:105FF000517E9C07B62D49C6F6146ABFAE5909E01A +:1060000079A7E5AC2B88F6F1AA271477903745E7F6 +:10601000C2968976579A1FA4735D2BF315DAF7643D +:1060200007A15D9D5C5AD5CAFB91F2A49E99CFE869 +:10603000FDF9CB845F7419EBB60FF9B9B0668DFC2E +:10604000FE3666DB80ED78E3E209AE95CD7CFF3469 +:1060500002BFCABE019CD6FA022FCD203C28EE001A +:10606000BB1C8EE5CC3B2909C701F941E7E570452A +:106070008FEB5AE1AC75B711BD44C3AB9B07A77E4C +:106080001E96B3CE2D4857B57E4E07B5CF029EA1C2 +:10609000FDBF3668CC9248F4D09933F2727A00F89A +:1060A00067A07C5CDEA2B2A02B421F922E6E7B32D8 +:1060B0006041BBE543D69C60073EAADBF3E4DCD13C +:1060C000507FF9DE372CA8CF6B9283B9A62444E128 +:1060D0007D3BCB3323F47A5BC08887DB0F1AE3FF69 +:1060E0002E3C31718E8FEA017E96ED5769FDA22B11 +:1060F00067D8DF59E167B48FBDE22DD58DBE8F150E +:10610000A0DF528AAF1F5E89BFFF6DB8A3FD159E49 +:106110005CB14FEF666EF4577CCE0A13E761A6B010 +:1061200077AEE4AFE83ED710A56FDFD5C0BE80796B +:10613000FCCCEC494C26B91E2DB747F546FD23E5AE +:1061400075ADD09FB2FD65A837217E76CFD30968A3 +:1061500017FEB5E5E95E182E47BD5418D14B772FD1 +:106160000D66A21EBFFB99183792289B1E7CFB5E12 +:10617000887FF4A4CA7A92A7EF65FA6EC94578853C +:106180007E5DA53ED2CF81FA54C8D7ABD985FFEA50 +:106190003897E0388745DA5D2AC6796A1B1FDFE940 +:1061A000ED7CBCB75E364EB02B709C8F5ADD28DA82 +:1061B000CFC50449FF9F837136E9EC07692FC8F109 +:1061C0007DCE9A1F0E42FEAAB57F3869067AB82D99 +:1061D000AFB308F9B1668795EC83DB7E1E4FFBD227 +:1061E000E795B2DEB48E38164C40FCAD7C8AE32FC6 +:1061F0000247B7BDB019F1D76D2F5C23DE568B7304 +:106200007DAB9FFDCD09B45F150F54057857DBECCE +:1062100041A2F723C673588A136500F9376C369C80 +:106220009F0CE6E4E768A2CFA79A3D67612E6AB1AA +:106230001EC0FFB7DC4F6E594B7CD09587FAB63E37 +:1062400036A8F5463BEB49C5BD0FF9EDCEB2843219 +:1062500086EB7F7EBEF0D15CAEF7148F87AD2BA6A8 +:10626000F3812C16FA3D80F210D39D0E5683F8DC94 +:106270000BFDC747E08E4EC773C436D49376538F59 +:10628000EBE2B7853E5DA59AC8EEAEB370FBFBA20C +:10629000F0C73C2DF29FCEE576F82FC5F9AA8BB05A +:1062A0005CC679BF38D91AC07567A7859FAB7C4398 +:1062B000F3ECF94F98B73979BE23B900A7D7645FDB +:1062C00088FCBE31AE4843F9B929A9B63F86B7B0BC +:1062D0004E0DE7754649A5D30C7838D9CBE656491B +:1062E0006EC1848C8C9C437A5DB36FC3764F22EE73 +:1062F000605CD5E29CEE49E81FCF379FEC63093420 +:10630000413DFF7356B227B6C6F273942C35D18C3B +:10631000FC70B390530B27C18A1E68A67AD2562F01 +:1063200086D09E9F01BE6A6C5D9B87423F1B4C5C82 +:106330005F6F4866FC7CD4A6D008C4DF10B6C98164 +:10634000F308A33FFC4DCAB7D193999D957402E31E +:10635000AAC3F356631827B412C2AF215E67E1F9EE +:106360001FFEE4A3592DA510C7B507D2C35435B0FD +:10637000CF85E7434D349F33A15DA437864C33323C +:10638000722E7C16FC2D8571CE3233BF2999C26DD9 +:106390007824704E090B26C2F8822F3305E1A13D07 +:1063A00000806F5ED0141C00789B690EB621FE4EF3 +:1063B000A86C33DAA5B3984B5B0BF351B7F1DAE075 +:1063C000D50E8467B56440DCC4CFB977DDAB04700B +:1063D0009D708B991D53019EFA64A79FD2D770BA06 +:1063E00086F46D09C5585E21BAAA062181F48CF3A2 +:1063F0004B748A854746E609CADB62215DCD73F19D +:10640000F31002DE3D3E532FF40BAC12EBC35B6C7A +:106410006C533CD637BB13709F712880A99FA77A15 +:106420008B5C47B65A66017FDE0EFCED02BC24E6AB +:1064300071BEBA5DF2F71346FE1E9AE7A47E15B44C +:106440002F019FD522BC127F1489F68AF2B81FF360 +:10645000863CB94E6D25BBFA762157AED4DF2A2B88 +:106460000B12BE9EB3D2BCCB7E678AB0308FDBAD41 +:10647000120E49E7B5ACC18272A2569C7333C16457 +:10648000A2FE5CD1FCA80591B062AFF17C1D18564C +:106490001694532BF747A7EBCEC9A9063946E74C0C +:1064A000154BD7AD089F72638C1BF9A2DAD24A7ED6 +:1064B0000505E55B7E44BE45D7D39AF9BA52DBCEDB +:1064C000ED32E99FB382DD89727E7146D760940B0D +:1064D00056E69CA2B858B7FD5E2BE8C08AF606CCFB +:1064E000572DDA67B85F8CF619E26F0FB747CDC248 +:1064F000DE5EDA6CB453166FD3D9AB3CB0E9CF0F84 +:1065000058D15ED1D91BF23CC17B96AEC1A837747D +:10651000FE57B25BDE33F171F87BF173042C95E723 +:106520009B857D2AF9DF93A789F3037E9AFF99CC97 +:106530009B18D4C95BEF24C66E2C46FF8412407AA8 +:1065400098E929EBE0E18620DDB300BBAC6F323F78 +:10655000175E4AE5F8FD096FB9E28FA37B18DA7977 +:10656000FDB88EE37F465F6E2FD5E6C5F7B8BFC393 +:106570004A537AD487D1F6927F02CB27FF11CAE71C +:106580006C6A96EC8AB5DDE77DEDF928AF6B94581F +:1065900037AE1FE4F9D37745F829D8DF482F357F88 +:1065A0008EA7756FF4B9D48B65F17E13840B13EF4E +:1065B0009E81F3599360316328CFABBE2BC22F4C21 +:1065C00021EA7F110B7D88FB4837A576C623FAE5C3 +:1065D000F9E02D65C3F6804DC8761C289F6DCBA4CD +:1065E0007D3EBECFECAF7813FD7355B8DF47F11990 +:1065F000B33DD8EF8B5DB7D840751DCC9B39DB0C14 +:1066000078BBB8BBEB618C07F316F0F8835DFD62D5 +:1066100028EEE3F10DA23DE69B8DED5DFC218F7F21 +:106620001FF271DFBA6602175D356314D23FBB8576 +:106630005E967EB71AD30B3C9CC082A6E1572FF71B +:106640004A9E7737EA4B35FE0CEDEBFF2EDF43F128 +:106650005D39BE47F2205C59A9F82DB04E666F0532 +:10666000F2845EA7F5FA56E18F97F3B93B97CB21F9 +:10667000193E3500DA4D8BE00DDA7BFC5F69CF33D4 +:1066800080C3D97D4E5BD839CB841C80F69FC94B23 +:10669000FBE7DB977245B6179F6FEC0FDA6FFF577A +:1066A000DADF1CD59EB47FE5380623CFE279C481BA +:1066B000CC008F4CDFAC04D3E6A1FFED6595F6B5B9 +:1066C00036A79D35E3BE24F3F27DD13B62389F9C13 +:1066D000157A60F37FBA13711DE0FFAD4AFBB99BD9 +:1066E00037F073D51FFEF7A8914862D24EFDB0ED8A +:1066F0008F16278C63B5D81FAD17FBA3AB0FB75907 +:10670000A640FBF5104ED4F947EABACF0985CCB3C1 +:10671000E223709CCD3309FDB3E15BF7C73FEBD6B5 +:10672000537CDC45627C4F0CF27C94A71BB74C6F0A +:10673000D28CE71764387A006FE7D53C26E41F6FE8 +:106740006F88C2E7AF2696EBCBA523E36DCE2191F0 +:106750007302B57B5DB4CFF1AB9C095FE17CCAFEEF +:1067600064BD889FBAAB673FF5B3DC4F2DFB730B5D +:10677000386B923BEF046300E0DAB20BE5C2B41F62 +:10678000483E061161C3FD562927F6CE9E94C1FDF1 +:10679000A518CF18F0FD5DC8D71DB17CDDB470D44D +:1067A000E058944B21579CC901F2C399B378F48007 +:1067B00011983E6E0AA69759E3F316F37D1FA23F88 +:1067C000678E370DF3B13CFAB37C164E27BE575493 +:1067D000B71FC6E92B8AF3A11FB1C3C426A11E9718 +:1067E000F84B19C0E972F4008E3FD9BFEC9731071E +:1067F000F9A5CE6CEC43FB16F939652503D222FDD1 +:10680000E6E7F872312EFB85611661FA95FA8F9EE4 +:10681000BFAC019C5E4AB07F08BDA5407F3A7D3A7F +:106820006B529C215E353D8579F4FEF0AABE86F858 +:10683000FC9A6C43F99B6F1D64C8AFB0760ED7DB32 +:106840000F72DEAE75BD3605F83E11F0D2D9C60620 +:106850001F463E74C5D3BEEBEDDBA6927F3D315C97 +:106860004D615DF354DADC5C159E4DF1D5E1388A5B +:1068700077C4764E417DDEF18B245A9F1E57837973 +:106880003FC676ACF1C4CF157D176E44FDD311EB36 +:106890002FBC03E0ACF8D94DE538DFAB0F2BE40794 +:1068A000AE505987928CFC1943ED55A8BF1BBE060C +:1068B000D2A74DE47AAD02752EE43709BFE695F80C +:1068C000C627F8460B71B827872BA93D995F3B2057 +:1068D000CB702E414BDB6F26FB578C470B2914FEE8 +:1068E00047781085F5872BCDB8CFF44AFEA3A9A829 +:1068F0003FA0BC9DF4BE944B926F1A462532FB9587 +:10690000F16C15F2A75ADC63B8B3C0B31EE96BC6CD +:10691000FA90D986FB0A768B03D791334A86A6D79D +:10692000EADA696A5BC09C74CE9F59F0FC4E3584EC +:106930007A79E5BBC2398D8D038CF24ACA7156F55E +:106940007DDA17BF45F82B247DD48BF2B27EA7C227 +:10695000F5B0FFE77CBFE3C102DF6E84B7B38CCD37 +:106960007F8AE447673F5C1FFCBBE087F9B529B429 +:106970001E0BD1BDDD19254E3A0FF9A3EE71703A09 +:10698000BDDA38B68AF2C755B60EE9E3F8F8F19DDC +:106990001EDC17FCCEB061281799A3EB6BA4D3FAC9 +:1069A000A363B3D13FFDD8008B389FC5C81E95EBBC +:1069B00085FAA371B4DF537FD4BA4F8172F5095DB4 +:1069C00079286FCF0FF23D867838FEFC9727BF03FA +:1069D000E53DF6783A9F577F34E618C66F54E9F8DC +:1069E00026D81D9EC7499E5C01CE6BE5C7683AF369 +:1069F0006DE3FCE7137CB858D0ED12C1878BCDA0B6 +:106A00001701EE45AFA90CE5D392F5CAE0C3E8A79C +:106A100070C6D37963C98792DF34A4CB61489F9C49 +:106A20002EEBC24982BF5DA25DCE0715B86E85769A +:106A30002A0625D13A7E753885CA497E957CFA7238 +:106A400081EF4F28AF2B9A80BFF1DED0C63EC391B5 +:106A50005FAE4E275F9AF1BE8E56AA684827560849 +:106A600027EAF8DB1B39BF3BA517EEDF6C7299F400 +:106A7000FBE6EF09797FADF4FE9AA09325F6602E30 +:106A8000DA915A438C1BCFC5D4A439498EADBD0FC2 +:106A9000228082B59A7722EAD5B53F54C8DF88FABA +:106AA00016EDED91271AC86F2DFB5F102E624EC0B8 +:106AB000D3EC700E85BFCAF17D84F3BF383C57E03C +:106AC000B1A8C77DCACF1AB6929FEFB380D5CDC803 +:106AD0004F63F4278EF0B869DF527B4D638F38D156 +:106AE0000FE853913FCE6532C72E85FB13D1BF28E7 +:106AF000FD8172FF51FA05ADA926C37EE9E7E6E6FE +:106B00007E68FF5FE61F2CE37AEDC27E8DF45A5D4E +:106B1000DBEF469A70DFC5E5213FE1B87E3E6B3E74 +:106B2000DAB7B3023FD5207EFB834F27A0FF5EE29A +:106B3000B3D51CCCC5F54B2BE011FD95ADDB553A1B +:106B40009F0FBFB84AFD7D386157BCCCB83D22E9E4 +:106B50007C65389BF023F58D94DFCF34A6D3225784 +:106B6000CAF1ABE92149DFABCC5C8FAD02BAC77982 +:106B70008BE6A388FE194AFCC2805F903F22FA8709 +:106B8000F34744FF08FA4FEC4FEB8D68792EF5D3AD +:106B9000D843D9877F05EDAC7C7CA117E769FC2041 +:106BA0009007808FBAA7381F44F3BBD4D7121F12A7 +:106BB0003FAF88787181A72CFF9AF4440CD9B9565D +:106BC0007F2523390BA15ECE6A5176AD4C9F927F13 +:106BD0007D7C333CDFB89E9070765AB87D25E17F8E +:106BE0009571FB43F6F360C1AC85F9695C6F60FF9A +:106BF0004BF2B97FE7DF35AE2BE98F25DDE3BB36FE +:106C0000FD31336A7C721C725CAF89F15EAB7EB978 +:106C100027BF67FD02E5CEFE1AEA5D7CAEC0817239 +:106C20004C55BACED2B997E7629C8887E3CFC7505C +:106C3000798F2D91FCF5139F7FFFD28F9DB88E9891 +:106C40007D0FF2A1E759AB99E9EC3D099784F3B7C1 +:106C5000026ED043EBF375EB0099FEAFEA25C9173E +:106C6000D17C1BCDAFD1FC39ED01B013719CCF2885 +:106C700074AE20621732D2531D5999B49F26F95B26 +:106C80006727F27341F90A9D0BBADCFEFAC370273D +:106C9000D4BF343C7E28FA47DAD5D65D6394081F0A +:106CA0004F78FCABA7FFC42ED777BD0B7C3F43FCCE +:106CB00048FE957C7A75BAFCA546FAAA4E21BBC659 +:106CC0000AA15E5FF9AEC06F87F3AFCF2EDB27E876 +:106CD000F138C287F658A285ECB1ABD1DD4BFF7E0F +:106CE000BA7B494F7757B2BF5F157C0D74F76AFEC8 +:106CF000BF60FF7CCBFC929E94F437ED554E372C51 +:106D00009BAF57808E08FE0E4B26C9E96A21A7A7C4 +:106D10007DC3EF6FFAC4FA5FD2F1A705BE8BFAF913 +:106D2000C7F509AE3BAED5AEAD4E6DA0736B3E0858 +:106D3000F57249DE4F889EFFCFAE53DE9ECABF3E3E +:106D40007BD65C70DDF66C62C188ABDBB3CCC3ED87 +:106D500096C87C586723DD5C0A9AE9A8D395E65368 +:106D6000DDC3F1DD8DB7A059DA05296817009D381C +:106D7000B0FF7F964E2A26B67E660393B5E8D0AE66 +:106D80002AF42FCEC5B332E4876869F1E4A0BC6170 +:106D900072BF85FC14C44718F7EF7E6B12AE2F77D5 +:106DA000B1C87E0CE44F2E4DECF66BE01248961FF6 +:106DB0007C68E75BDB096E7E3E89F94266BE3F294F +:106DC000E2C3211EAF8B9744C5F7F2F209E610D358 +:106DD0009FDB41BA538A399D18DE0D605D53F03C4C +:106DE000C88CC38A03FD1337975EB4A05FA66262A6 +:106DF000E8A5BE30DEB2437BABEC05908E7211E0AD +:106E0000AD3CB4BFC59F23EAF7223F16FDACAD8A67 +:106E100047C57327254A00AFA045E3B1B2C0B8BE4D +:106E2000C29FD9589FE139B0EBA98F7C4BF5B3A82D +:106E30007ED07A1DFDCF2BE5E746A3CB2D2A107C13 +:106E400023EE9B50FB80BBD9ADDC7F105D7EB96823 +:106E5000B7D3645A858758EB0F1D6941BFD564C607 +:106E6000E963CDA167AAFC9C0E99276ABCDF06EFF7 +:106E70009C02A33D813FA7B17EF0DBF0557D19BE9A +:106E8000047DAC30D24BA2D97BEC12C09198AA38C9 +:106E9000D01E5FED8DD98EEB8E8A8992BE5FA8F2EF +:106EA00094C2F86298C10F17A1EFF6AA4976DC8761 +:106EB00097E55F6C4139E53531C33DB2C9CF2ADD75 +:106EC000F5F38195C93506F51F3874AC05EF6BC332 +:106ED0007C503EC5CDDF42EFAD51F1D228FE10F41B +:106EE0004DFC89F21AF093DB83DC3820F0FB91B87B +:106EF0005FD03981DB959D593C7CA980EB979F0A37 +:106F00003CFE42CE73AC0E0F199179865F10D73FCD +:106F1000BA71139E16A4CA719FAE9A0EE3EA4C662C +:106F20008315A09360C17B2D9BC6617DAF19F7418E +:106F3000CCEC2F2DAF815C5920F0F252C1A9B704DF +:106F4000DD28C867AB880060DE0F2B7E3A8786F3AA +:106F5000DEC3B8765ECE27FEA8FA1EED5BEAEFB977 +:106F6000BCBE27AA3ED352AFA7BE9897E951F356AD +:106F70001E356F93A2E235321E30C82F29D7961CDA +:106F8000D9B1B9179DFF53E80D3090CF166528632E +:106F9000EF1CBA50651F8DF4E9D4FA828C7FEFD0D4 +:106FA000C76FD980762B517E11BD5E24793D1BF9C8 +:106FB0009BE25D559E21482F0D9BD3A1FC5F0F7D69 +:106FC000D262037EBA79D30E0DEFEA7F70E8528B5E +:106FD00019DA5D30FC672F617BE60D9FBF35DDF56B +:106FE0002DF4D91C358EBD51717F54F996ABC8F381 +:106FF0004D51F5D747E56F8F8AEF898A6F33D65F9A +:107000007C2BDF0F5D0CF38788BB1A9F7C5520ED2E +:1070100082D6E1B8DFA63E66DABD194CEF694D9C19 +:10702000CEB581EA1C3D9DCA7DDAEA54E6477DA0D3 +:107030005D413E7D71253AC98FD65F32DF9B8EE977 +:1070400027057FC04A760ECA9976298704BFB5A95D +:107050001CAE84812FBFBD49B74EDC29F625E4FD67 +:1070600017DC5779B207F9BF7610F7EBB67FC5DFAB +:107070000FF0F7B7903FAB3D91DF2FD87ADF3CBAE6 +:107080005F20CBB7F5B7ACE3F70F1AD397E9F4431A +:107090007BFF5E5FE33E517B6F7EEFBFFD3BC3BE78 +:1070A000C6FB0BFE7AD59DCBE89EE787F8CEC43BA6 +:1070B000E1310EFD3D4FAD8E9F57D6525BE397E910 +:1070C000E06BAF1F56EAD48DE773E1777F27E36E5D +:1070D00007EAEBB6FE77769621BCBDCD04AFF5CBC3 +:1070E0001A875288F711F9BDAF510339BEB5F88F31 +:1070F000E87E69532A5E9CC374B1CF9531D786ED83 +:1071000034A5F2F70EB4F8850E8B6E3C9E5433878F +:10711000CBC5BC7A7BFC71D1EEFD03B93DF882EAA8 +:10712000A071031C0EF4C72FFAAAE64427F4A3F5B6 +:107130001BE9C4730D170766F37B10264729FA87EE +:107140006E54DDC3996E3DB9C024D68D51EFE85819 +:10715000719FDFF86E22BD1BD0FDCE488245DCEB6F +:10716000FFF6776F160C7451FF905F24F6C723EF7C +:10717000CDA8743F8CE43FDAD55A72E4DD1BDD3BC9 +:107180003193305D53000F88A74CB67A16D169ABA6 +:10719000867C573B5031BC4320DF07A916EFD374E0 +:1071A000BFF3D2DB527404E63F64B7B89D2C922E35 +:1071B000FBAF16FD5CE93D1809CFDD0393447FEE7C +:1071C000137F4845FF459C89CE9BB39EDF7F09F521 +:1071D00003156F8FBC2BB2599C83B1DAF9FD7D99F1 +:1071E0001EDA3896EECD6C96FEF955E29CB6B8D70D +:1071F000DFFD1E4EAA85DEC3A986FAAE22DDBAE403 +:107200003ADF8BB9DA3D39E95790F461C333A569A8 +:1072100048F7BDD6135FF5B611DD6FCD3C4BEF7A65 +:1072200068DF1DEBC6754B379FF64E2FC5FB3F6DD4 +:10723000F529EBBB747CF24EDD6CC7D242BCEF6328 +:107240005F81F47DE35719EBCB52F13CC978035FC2 +:107250001EFDEE87979E49C5309EEEC11DFDFB18B1 +:1072600027FA65555388E404FB7B2CD1FBC4C4F991 +:10727000E9FAFB70FB047F0D72790203619ED45E14 +:10728000C007F6883CD37A0DF721BF6CB5D34D45C6 +:10729000B655ECF73629C6FBC817059F5D14ED5DA2 +:1072A0001C28DEC5313BE99D3479BFB3ADBF799D64 +:1072B000DE4E7D5E947F5ED46FEB7FF789C53A7CAE +:1072C000B5599FFFED48C457AF2A37DD6742B987EC +:1072D0007EFDC638378EB3ADB78DE6BFADB725801E +:1072E000E77CDAEA557E9E26D146FA42DEBBD2BE64 +:1072F000AC21B97871A0D3B0BFD3D63B95F0FE8254 +:10730000DA7082CB051BAD9FDFA94BF91AE595A674 +:1073100025D27DD3F74C5D2390FF2E0E4CE6FBFC6F +:107320000AB085CE1F7673442ED03DD46F910B16D4 +:10733000F1FE904FBC63F1ADF2E01D210FE4FB4282 +:10734000FFAC3CC09F36F2727EEFE667515FF2758C +:1073500077FDFF253EB9398A4F5EC0C945FC6FE510 +:10736000EF67696947E2F5FB884CE8BDB6B844AE03 +:10737000CFEA53BE46BAB06E5ADC8B39F5E5547E7F +:107380000FD326EFA58E27FA5D6C9FAB919F00E887 +:10739000710EBE0B30D04CE59A92B87DAD99BA060D +:1073A000E3786A5C3EF320E8E794B84719B9FF98A0 +:1073B000A4E0395409BFD46F72FEFFD61DE7EF7009 +:1073C000C8F3A5F23D396B8B4A173CAB333CF45EF6 +:1073D000AD7CF7439E473BA5783B513EFA33F9BD60 +:1073E0007C792E6D6BEA1407F2FBD666FECE2C1369 +:1073F000EF7E2C15F56AF15D0F686FF620BE9FEBEE +:107400003BE79892E044FC9DFB2DDEC3B6DEABD299 +:10741000BB3BCFFF43A57312E33EE3EF75F836B9EC +:107420000CEF28F82E98A7A07E5DCC1C74EFE1BD70 +:107430008475E51BA05C535A377C411FCE4F1A7FE1 +:10744000B7636CE65B15F84EC7D8DD69E42769BA07 +:107450002B3E01174D27594327C2EBDFAE121F35D4 +:10746000696C12FA5BFC4A12C99F3F67ECA4F738BB +:10747000FE9C634D42FBAED6CC8EE17B1BC307F175 +:10748000F54EB538C78878B11547DEE700BA6437DE +:107490001447DE5BE83001E714937F87E877CC2060 +:1074A0002E3F6AF17D0EF423A8CF8EA077C1F61887 +:1074B000CFEF35FD504957C09EBEB5252A5DF8F186 +:1074C00016FB8DE9D5DB8DF18502CEEB7D17A16230 +:1074D000D03FF72EC242C11FF25D8488DFE91E074C +:1074E000BD8B9061A6FDB9AD0ECE3F5BD7A9744FA1 +:1074F0002BBABD5023A37B902E6C4FE7D79774DB3C +:107500002EFC6AF81E18DA9D91F74232153FE9D534 +:10751000D614DCE7AE13787EDEC2ED54F96E887CBB +:10752000CFA04EF0DFAF2F14D3BB0547C3C5A5FADC +:10753000FBD5ED6AE8F151249F399D83995EFE7475 +:107540000F78481BA81AE094F6B1E4B75D026E39D3 +:10755000FFD1F5EF1BC4ED9C50D47B22BEABBC2702 +:1075600032226FC206E47F4967AC7D0173D1FDD73B +:1075700061E487BB4FCCBF2F954DA17744D2BDE9C5 +:107580007ABFE6EBE27C94847B57B75CB8BEF5C16A +:10759000EB79C6F5C10E31FE6EB8C47B0DAAD83F9B +:1075A000ADC1733F40F707C4FCC877466A6283B930 +:1075B00078FE5ABE37526E658B2AEDFC9ED15A1D5D +:1075C000DE0E08F93AED215E0ED64F14623B8FD8DD +:1075D00023F93513783D1997E394F0BD9E27F4BE47 +:1075E000B83F130DFFA4B8FF791ACF1BD5365B1D2A +:1075F0005680FB0CFA6D503E3C27DE4DB43137BE51 +:107600004779E6ED616EF4CB7F0AE3457E3EB663D3 +:107610004022AED79675A80CCF85AEEAE0EF86A3E0 +:10762000A7B642772FEFB616C58FF7DB6ADFE5FC0A +:10763000507B580DE053B0F21E16E453BDDB02DA66 +:10764000293D5FD3D54228BFBC5509E0B9DAE57BB7 +:107650008CF9F27ED2AAD6A87471AFAB3EEA3DD0C7 +:10766000F7F03F7D2E9703C02F4407C70719EF1D82 +:107670005DAB3C3033CFEF07914C8EBA5729F16D9B +:107680000EA6CDC3F5D3CB29749F1EF8D256A23BCC +:107690000F26FDED171A81130630F671E30A0A650D +:1076A000FD8B4A9BA52FFACBFFCAE87CFD98C34F00 +:1076B0003E30D689E51B48E97F7C6138ADF33E0654 +:1076C000BEE246C04661DF07281C77B84DED0BB11E +:1076D0008F8F9C8EA3F34197FBCB69BE2F5D300744 +:1076E0007ADAE7EFBED7FA3FB1942FF178FE5E2E3B +:1076F000BF24DD8F15EDB53D9EF2EC18A49FB84474 +:1077000007AE5B978B7DFFF307556AE79C2DF10071 +:10771000FA43CEED9DDD0B1F7F5AA67559F082AA64 +:10772000FBB9CA04E4BFBF42B920D9610115F5DF36 +:10773000987246FEFC31413373BA70EBCD3B03E9DE +:1077400062F4117E9FEF43F4DB135F72BFFDB25F03 +:10775000AAC46712AE89251C2E89CFA1859C1FDF84 +:10776000DFFB34B5F3C17ECD81F07CBC5F237A5B57 +:1077700009F48947C0CF1DE4FB7A2B9F5502319055 +:10778000FF01DE7FC4FCB754B70DF0BF6A8DE6A1E0 +:107790007B8751F43EF120F797AC6CE5EF2F4B3A25 +:1077A0005FE909D03BA24CD0B90DFEE079F224D6B6 +:1077B000BA05EF41DE7EF05FA3EF68BA2E2814F41D +:1077C0005CCC8AAFE71EDD05D04B487F323DB975F2 +:1077D00068595F6AD56F382FDE6461742EDC6F8A5A +:1077E00075A39CB8DABBC4F7A88E17D1BEF8512197 +:1077F000B79FBF3039355C1FCC4E0D4D22D379A2D7 +:10780000C983F7C8589395E44E347C93C5BCFD1EDC +:10781000E716FD52855CAEC9FB533264CC91897C7E +:10782000581997FC393E153DEB89017371FFA5721C +:107830006CF25DD96019DDFCC4E0B966A0DFCA61F5 +:10784000C93FCF82784D61218F0F491EA1417CC372 +:1078500086A2B993A0FCBD851E6FA1AE1FD92EA430 +:10786000CFC6F41B337D7331ACB7D8B7A1FD7251CD +:10787000E95A8D0F70C9F26F28ECE4AF95483CA42B +:10788000B17E6EB467BAE1EF397CB4D0B3A830ED05 +:10789000F2F425F8940EE065899FDF2F819FD7D6FB +:1078A0002BF2AEFC1279DF645BD43BE26E7E2F4A92 +:1078B000DE2392F7810A22F79CF65ECF3DA78BE28A +:1078C0007E56F4FD33E5597E4FABC9CF4231340FBC +:1078D000C6FB21ABE2802E866008F400E5D6FEFCF4 +:1078E000CF094EE8FC3685CB13E62BA175CC9D0E57 +:1078F0003E1EE61B43724ABEDFF67E236BC841FA8A +:107900009C11CC43BE7F48F56D413C5D703D93803A +:10791000EAFAFDBD6FFED48FF690F07FB0AF557AD6 +:107920009FA3C35540EF1C5C78726B06E2F27B8527 +:10793000DC5EB8E012EF047DDDDEEF3B50AE3C6B69 +:10794000EA88FB69B49EE6C29EE4F9FE3904E75476 +:107950003BC86F18EF78A722DE9761FE78BEAE6352 +:1079600078EF4983502D8EC85FCC4FA03BFC4BD3A2 +:10797000C57A91EEBB757F0F40CCC765F304AC852B +:10798000EFDB996C4C43B95DC0F63AD05E95F3F5E8 +:10799000BEE0B3F76D9CBFE4F730D63EC7EF79AFDA +:1079A00055B8DE5EFBB64AE78C5675683DEAE78F50 +:1079B0005890EE3FAFD8BB94E494944F78FD1AE909 +:1079C0006786C37C6D7269EFC46B924BCF4AB93442 +:1079D000940DBD4E3DDBDED3BC4C566B9CF85ECFA8 +:1079E000DAB4FC62F1CD15A29BE5E25CBE9CA7B5C2 +:1079F000FF379BEEBFB2F54F129D2D17B0B3BDFC04 +:107A00009ECC16974AF7F82B8EF4654E48BAED884F +:107A100042E7E5A61F49A17842B80FC52BFEABF798 +:107A200004FE9E009FDF8AFF1A40F10F0EBC3A5CF5 +:107A3000BC8BC4EFCF083A96F3F2E97C3E2F667F09 +:107A4000C10F4AD1CEEDD058C049E5E9BE9257806A +:107A5000E315F793BC2CFA3EB53311DBF182BD453B +:107A6000EF5E7BB81FC029EE2559D34DCCA99B8F63 +:107A7000391DFCDDF518672C73EAF0FFB6B8A7D402 +:107A800024E435F37B3A71DD3B5FD0435C7EB2A1E9 +:107A9000FC7C3B7FEF32DE7D83A17DE6E3EBB06EC5 +:107AA0003AC1B4547EDF09DB9F33DF782F6B6B0C58 +:107AB000D7075AE92724EFBD828EB452E37ACE2B42 +:107AC000DEC3F446DD338FA6236DB0A0A30256A01B +:107AD0007FCF5D8777A2FF4F415FA39902D6C30F87 +:107AE000F07D8DB902EF9BE5FD257CDF19CB79E2B6 +:107AF000E9FD3A496F9DA8BF86F0EFC3E8C78DDF67 +:107B000087D1E307BF0FA38FE3F761F4E5F1FB3003 +:107B1000FA7CFC3E8C3E1FBF0FA38FE3F761F4E5B8 +:107B2000F1FB30FA387E1F465F1EBF0FA38FE3F7CD +:107B300061F4E5F1FB30FA7CFC3E8C3E1FBF0FA3E5 +:107B40008FE3F761F4E5F1FB30FA7CFC3E8C3E1FDD +:107B5000BF0FA38FE3F761F4E5F1FB30FA7CFC3E45 +:107B60008C3E1FBF0FA38FE3F761F4E5F1FB30FA02 +:107B7000387E1F465F1EBF0FA38FE3F761F4E5F168 +:107B8000FB30FA7CFC3E8C3E1FBF0BA38F6F16F6BA +:107B90000A7E0F465FAF936DCA45BD93E4F4CD1DD9 +:107BA0009C86EFD95D3023BD9F58C8DF05F9B463CB +:107BB000B683F8FF3AFD10B70C16F7F7041D7FCE19 +:107BC000ECB798B2AE5C5FD2E74461174C56A7D3CE +:107BD000FBDF9FB62A44E7D1FA59DA6589A05ECD6A +:107BE000BA7E933C3666D68D3BA5DC6188A779D3F7 +:107BF0000DE57BCF771AF2FBF8F20DF97D57B80D42 +:107C0000F1CC861243F9FEEB3C86B8CB5F6E289F21 +:107C1000BDCD6B88E736CF37941FB0C767C82F0834 +:107C2000AC30E40F3AD860880F6E5D67283FE48877 +:107C3000DF903F34B8CD903FACA3D9101FD1B9C766 +:107C4000507ED48980217F74E8A0217FECB956430F +:107C50007C5CD71143F9F1E1A0215EC65E36949FAA +:107C6000687BC3109FECF8A3A1FC4DE97F31E44F82 +:107C7000757E60C8AFFBD04DF78AD9AF15BAD72251 +:107C8000EDB269F99F18CA69A960B7E37E3E8B75AA +:107C9000E3F9DF2BD9EBD29EAB707F69E8F71E9535 +:107CA000DBD92F0EE6FECD2F4CDCDE6BF27BC9FF5D +:107CB0009D8C0B5AE09344BCF79DCCCF6DF0FBEC50 +:107CC000A974FE8654A713CF9180DD03916493CBF2 +:107CD00085EB89B8883D9AF18DEE5D8AABD9A36FAB +:107CE000A22F288DBEC3D4317804AEBB9E9C82EBFC +:107CF00095DB987F0BC231592D4CC4EFDABC1ED3F3 +:107D0000B35F6AAA0DF0A8EBEFE598E68CE26FE1AD +:107D1000DFA9B60B54BEBB5DF1EE8602E3D3FB6F69 +:107D2000BE07EB2833F0697323F0192C8477363AB9 +:107D300028DED2984EF1EF373A29DCD3984FE18F05 +:107D40001ADD94BFB7B184E20F377A281E682CA7DA +:107D5000705FA397D2F737CEA7F881461F85071B20 +:107D60005750F8586303E53FD1B88EE23F6DF453A6 +:107D7000D8DAB88DD29F6A6CA6F8E1C63D14FF45EB +:107D80006380C2238D0729FC55632BE53FDB788494 +:107D9000E2471B83140F367650FC85C64E8A1F6B54 +:107DA0003C41F1971A431476349EA3F095C62ECA2F +:107DB0007FAD314CF10BC2FFF8CD60EE9762AA9D0A +:107DC000DEFDF34E1840EFFEC9F43979BE6F509EC8 +:107DD000CAF724E4BB11D1EB87E879382FDAD7262C +:107DE000F07721B41BF2F6E1B9CAC8BB0ECE7D789C +:107DF0001F24B688F7D3FD4E84B0BF970B3A94EF9B +:107E00004648BFFF7241F723901EF3891E5FBB9E59 +:107E1000F5915C27EFCAF1DD5004E1CA4C939FFC59 +:107E200004767E6FF55739BE4C4CAFB53758B8B9AC +:107E3000EAA6F40A2BF71375BDACBAF739AFDC5FCD +:107E4000BD387F7CC5FCA31F64A0FE29FF874AFBC9 +:107E500059AF6BF1F3D11F32A488DBC1438A4C8642 +:107E6000704AAEB7A808C2F7731BCEFED815B92763 +:107E70003B1397D4C0D795CC49EF76CC669E17F1CB +:107E8000131173C0F0C3F83CE6A7D099E31B85F546 +:107E900017C0C201E3BE31567AAFB2C2CAF9221A84 +:107EA0008EF1623EC617990CE1D25CEF78C4CB9993 +:107EB0005CCF813BA0C80FC5BDE919ACEB6184E381 +:107EC0006FCF7D7256C98EE057FA21B69489FDC5F1 +:107ED00035F2FB3097DD5FA7FC9ABBB83F26FAFE70 +:107EE000BABC7FFE6983467211EFB9A39FE2D386C5 +:107EF000BB46E17EF54258BFE1FEB6949335F8FEED +:107F00004631DE97B7F176DF8DA37B47D1F253EE92 +:107F100093D4807D89EBC1FBF170388CE775EF2736 +:107F20001ABDDB9FCAFF5E1CDD97DE1D047AF121BE +:107F30001E578E56F93D6707D0CB60BCDFCCE9C237 +:107F4000FF0ABF7F6C76783DB87F53BB376928ED59 +:107F50009F01FDA0DFEBA0984F491FABC5B9774942 +:107F60001740777588DF8F7F392A1FE9A3FEE868FD +:107F7000DA8F6E3289FBCDA27D862E6DE84F4D2CB7 +:107F8000A477D22AD0A840BA1C1D4FE775DB54B69F +:107F9000EEC91EE4E84E415FAFA7F3F7F69A24FF5F +:107FA0008BFC07C43C3F20E6BFE28597E9BDA4D522 +:107FB0001D9A1BFDCE6C78A850FF6E74373DAF7BC9 +:107FC000F4EE1C1DBDD71FF90BF7F3B350E1AC78ED +:107FD0000E2ECEB77C6758F6A3A13F04954DAAF9A3 +:107FE00042F7FA220BF1C4F585A44BD512EF7BC4FE +:107FF000AE1F47375FEC407C215FE0BA6086D599C1 +:10800000380F400F010A717DE3FB7F0E7A8F630901 +:108010007353782BF352B81CC805F9C0EBDF61C16C +:10802000795EC95A297D75C9D27E18AF675D93D232 +:10803000A1BD39DB36BC980EA0CC6EDE31B90FC0C5 +:108040003D2BB0F8450C2BF72B67FD4EE2AB7D487E +:108050000F21A561F30D0AFAADCA36F785F419C2EE +:10806000BF0174E85151AFE6B8437E98BF333B0A75 +:10807000C8BF7C50CCC3D25CCF4184BF6623237A77 +:1080800091E7ADBBF9AAE4F6F7FAE259187317BD08 +:1080900013597FD49A8CEBCA958CEBF1887F87EBD0 +:1080A0006FC937F8DE1DBD1FF9DFFC7D83F30A4C75 +:1080B00040710FEF3E083B54F243F4F7C8BE30095D +:1080C0007F5D3F5F7A7176445F9F370546266493F4 +:1080D0003E6F47F8B509BEED4371BDFC53C5DD04E5 +:1080E000B09C4F0AF46BB01BF403BDBF24FD7FDFCF +:1080F000D3B83F2EDAFE95E38886D36A617EDCD75B +:10810000ECB67B4A5EFA52E9115E5FFA4895F6C713 +:10811000422887B4095E674F706C12FD77FC0FF739 +:1081200077FB33F9F743A2F1A938783F57F29B5A0E +:1081300063395C526F5D198F7CBEBA8AB87C91F04E +:108140008100C97740FF66732CBDFFF9460CF7BF6D +:1081500049BF9A5C27DF6BF65D443CBF11C3FD72DB +:108160001DAEF77348FF7EDD94C1CF01060DEF1001 +:10817000CD907C55A219F88A45F9B55869CF7E474C +:10818000AFCD41F26F1673937E2960EF4AFC915F89 +:10819000EBFF03B2032776F0770000000000000039 +:1081A0001F8B080000000000000BCBE26060F8515C +:1081B0008FC04BD1F8E8988713959FC3825F3D210C +:1081C0009C0ED49F04C4B1401C01C4C140EC07C440 +:1081D0009E40EC02C4856C403B80381D88938038FB +:1081E00016882380381888FDD810E678B03330041C +:1081F000B0E3B76B1D1BA6181737829DC049995F66 +:1082000046F1D0C7EA7C0C0C9AFC08FE567E5479E5 +:108210000D3E047B913065766D06EA0700A970DD9E +:108220006380030000000000000000000000000068 +:108230001F8B080000000000000BDD7D0D7C54C585 +:10824000B5F8DC8FDDBDBBD9ECDE7CC12624701314 +:1082500002048DBA848051412F1F62DAD2764554D0 +:10826000B4D62E081AF99088A8B4F5350BF9206811 +:10827000D4A8A88048178A88ADD668D1529FF8162E +:1082800041C56AFB621FF5ABD5467D556B15F1AB59 +:10829000D8D63EDF396766B27BEF6E48ACEFFDFEA5 +:1082A000BFFF83DA61EE9D3B73BEE6CC3967CECC6F +:1082B000FA0C95158E62EC73FC731A63851A636C65 +:1082C00052BADCF15D6D5E4F2DFC9BD98C0D636C59 +:1082D000941FFE6931B66FE3931F8CAB676C5B5BD9 +:1082E00095EA83FA08A63056C2D8D6CEAAEB6A8B96 +:1082F000E1798245F1AB351B8795F5C1F75B2BA37F +:108300006526F5C354ECA7D2E0FD3096E0FD325E61 +:10831000DFD63627CC8250EFEAF8403B3E0D972C53 +:10832000AB132A4BD5503FEC7386DFE91FF7C97AB0 +:108330002563344409FEDF4CC626C37B83BFDBFFC5 +:10834000CA5304EF8F3A55E663D9706CEB02B8EB71 +:10835000D3704B38103E7B721ABE2F0A0FE1578242 +:10836000A4B434361AABF67311E8AF41F4C7F41273 +:108370002D761C635D2D564FB587B1F616D6533D4D +:1083800086B16B5B0CAAB7B69854AE6D8950D9A56F +:10839000A70C13E0F216433B233D6E5E8DE1A8EB84 +:1083A00041D351676C1ED1D923F035CA238EF7F91A +:1083B00051CB515F51B2C04062AE6D01CE8F433898 +:1083C0000C2A2745D4D77CC097364F2C1203381A75 +:1083D0008A2F9ECDA0AE87A22FFA807E1D255E6BD0 +:1083E0000D88425D64D69F5888B15F165C6CF4219D +:1083F0001DFBF4D7FBA0FF1AF8FB7915B4D3234576 +:1084000088C72406CF1DF462AC18E8338DFF13E053 +:10841000CC780FFF4D8BAA091FF45BC7787FF2BBA6 +:1084200069C5DEF92AC0A18D8C135C6C7FC67B18F0 +:108430006F5AE49C25CAF148184FBABFAA347F3658 +:10844000B798CC06C1F8454B0D953D50B700DF5F9E +:10845000FC03E43F9896977C21FF2B26A98C01BE54 +:108460001B0F5ADB188C7F33CA3FCC97478047F8E5 +:108470003CF1344BDEA5E06776E922980F9B2E1D78 +:1084800056772D7C376921D00FE0DFA474BFC1E09F +:10849000796291D7BA0BBEEFD1D95958DFD454A81D +:1084A00026907E0B817E006FB4494D0C0F65CB0D7D +:1084B0003C7F6D1CBCFF8587D931F8EEFA275872D6 +:1084C0000DF4D3500FFC80F6D14F8731AB08E8FF95 +:1084D000C7E7FF8C7CD9D8E8B57C95693ED8F01702 +:1084E000F1DFA8BFF89102DF4FF8BAD74A2883F32B +:1084F000A3A23983AEC80F800FE5218B1F8D9C1F6F +:10850000597C980D7C080DCC0777D9DA92646FC03E +:108510007CB8A12542F2B7B6C522FE74093EADC3B0 +:10852000A6A5D9F3F27A9535A1DEBA3EC09A1E44CB +:10853000A5505D97B39D2C195B4DFCBB01F97732BB +:10854000816523B1C3C1FE7A2A500DE367BE2F8730 +:10855000FE91C7658C030C781AC1743D0FDADFE019 +:10856000E7ED5F659BEDC49474FD5062BDA32EDF03 +:10857000AFF524526C02638FB20BED5ABFA37F1B81 +:10858000FBCF84CFC8D1DF5A51575677DB0980AF74 +:108590004B894518E8F276251541CDB60FBE9BD91B +:1085A00080FD42DD04FD7EF3FCC4FE93D2E3FC2E8D +:1085B000313F91001CE6B3D81348FFA90D7629ABD3 +:1085C000C2719BE7B102C69EC1EF611C1C1BDB3F61 +:1085D000C3AEB35BF5345D9E4FB42770DC70D066DC +:1085E00096D09F386F34213FDA066F02F5FA9A8DE4 +:1085F00093A37DC49742C6607CD5B419EA09C90F1C +:10860000CDD4DFCC9CF7FD7221DA0FCC47DE0EE033 +:108610007F85E02FB7CF8399CB9EC057C0DFE92776 +:1086200037FCFB14980F9E5E4F14D7010FC208F25F +:108630001F8E7A93388F4348671822F499C64E06E6 +:1086400091D983930DFA093794B164263C3AE8BF77 +:10865000FC74BF30DE9F33E905F5F78E36BE8EE33E +:108660005BD9E3E941A8233CC51C1EF7B86BFDF6B6 +:108670003CD46FD347367C13DBE9BD63541FF00E47 +:1086800070698449C8A20AD7433E17FCB25F03F160 +:108690005450AF42BF19F358F6077461A8273CD86D +:1086A000BE3EDDDE27E074F7EBEE8731A0CB7138FC +:1086B0000F525F8CFF51E07FEDE0FCFFDFEAF72314 +:1086C0009061C477E5046F3251C9B88D50978D6FB2 +:1086D0003F7E2EBC57FEEAAC08F23924BE93FCFC68 +:1086E0008BF84E8EEFE6E750C795DF678FBB2FE71D +:1086F000B86E78B3E47788F3A8F0D3F1CC867564CC +:108700002CEA07A4E715419A2FD72F64499493EBDD +:108710000F9C4E76D2CD6AEF8129B89EFDC6C3EE7E +:1087200082A16F46BD8B7CDA504FDF95877B237328 +:108730006A07D6BB37839D91F0911E227BB307EA6F +:1087400049D0F78507F8FAD793BAD93F1FF5B9870B +:10875000D17A0CCF5F1B8EEBE3DEF5FCB99F3F2F88 +:10876000C2F6F0FC81FDA27D3EEFAF08DB433F1374 +:108770009EE0ED8B1A5596C8A0A31BAE526F6F3CBE +:1087800016CC7EDEAEA844973D623DEAC1F508CA2C +:10879000D240F77CA44BFE1CAFB50DE8B271D16D91 +:1087A000650BE0FBC7EF1AABBC0EE36D51146167BC +:1087B000C07AE6C9B0B79B2D05EDAC3D9ED4EA303A +:1087C000E8D7EF2ACC6EAE41BAB36FA1BEEE5CFD26 +:1087D00028F3017D2634F27A43683F7B8AD749FF2C +:1087E0006E575E22FD3BD5B05F42FA4F85F9DB0A3A +:1087F000F49FAAF76ACD44FFE29CEBDE3D9F18F39D +:1088000092F07EEAF68EDEB3709D6649E2837C7F4D +:10881000EAC74E39DB23D6DD1EC41BCA4B511EE40A +:108820003A8D7611FE13C6CDC77918C2793876B560 +:108830008EF4F83B233D77CF5DCFB7227D0A3F66AC +:10884000514DC98627BFD1392FA7EA4E7CFEA7F02C +:1088500098CFEC1F2A2503F797BD8EC4EFC6F653B9 +:1088600085FE2B6CECD3E2B547C3FBB6F31723DED2 +:108870005F63B4BE0CD4BF1BDF5B043D61BC877279 +:108880008DF7BF458FA941E8B7FECBF75BF8B14B39 +:10889000BF0C91BE8C75533F605EE9B1FCCCBACD84 +:1088A000783D916D1766EAFD62EE276AC501A2BFA9 +:1088B000560C7475AC47FC3BEF4816473D80B287B9 +:1088C00070D11F5C3FCBA33FBA169EBDA578F93A85 +:1088D0001931A89F57D5F85B0AC2319BE9E847FADE +:1088E000C5271EE84F81F9ED2DAB09931C048B734E +:1088F000EAD1CE9658A19E31CF3B85DE9274F356D5 +:10890000B164112AEDCF2EB2E61C37703F6E7AB5F6 +:1089100056445F8CA37F51E28DDEC506C64751BD2C +:10892000348E5ECCD745C047514BB2F131CC1843A1 +:108930007BA5357FEC51F16913F8B8F9DE26F11A01 +:1089400022FC03BD6FABB023F371FDC8CF8D970739 +:10895000F102BA57A89C4F9E209F6F9EE20443B835 +:1089600001BF0A3507BF60FD63B8FEB9F1D34D23DF +:1089700091195FD08D730AF5A2349CC7A8261FA752 +:108980001F8E28F5A3998CBE0BA9F163703C90BF94 +:108990005E923FB077B17F6F04DE9F80A53D2F01CF +:1089A000F2DBB6F724568BDF05A36C2994DE609CBE +:1089B000CD86766DFF107195E27AC73C19A3AA0E99 +:1089C0003AB9E9562AD66159DF5421E5CAC9FF4DA3 +:1089D000977AA9DE5612FD11D272869007377D80F4 +:1089E0006E33D48CFE7593D373D3A5825E0B73CF95 +:1089F000E352E32C07BD68C2C2BC0C8B7EAF8BB0C8 +:108A00006E0D2AE15AEE1F5696B3C7750BE8569EB7 +:108A1000DC309FA5FDB6C9FEF85938BE4705F709F9 +:108A2000E00C4F69A6F1A55C9DAE3D6BBC0E655791 +:108A3000B42A8CEBE9775525A71CDDD2822E25635D +:108A400037B518541E79651CC13F90BC6D69310A59 +:108A500032E7E796D97A6312D7E95575CFCD0494FA +:108A6000DB8BABEB48C734283AE2E547BA03FC4B53 +:108A7000C4F8B77CFD2A29774B087E218752DE2A6D +:108A80006DDBC6F806AC9A4C0116E7B7B168CAE2CE +:108A9000B4D133E824E903745889FD844C361DC7EA +:108AA00035EA9B539A95A6435754257EAE98347663 +:108AB0009B569986FB21212FD29E637A94FC92814A +:108AC000E6DF0D40A75A9AC7B682701637B024CE9B +:108AD000A3B5E2F92435D686725D1C4B2A88CF46B1 +:108AE000618F3116A1785A9B80FB8693035CBE2A66 +:108AF000CCAD08CF8D128EB8E296AF1BD592345D07 +:108B0000A47C1537D82905F1F3C66FC1F79AD56D46 +:108B1000A21E0A28719A73ED8A90EB04EBC5FE4CF5 +:108B200085A5FFC0B8A188B50DF5C18F54EEEF98AB +:108B3000351D97AB8047B85AA7F890D9379FE252B6 +:108B4000DEDF7F85E250F09CE256C536E86F18B74D +:108B500034C2F6229DAFF2C67F84F886C6AF4C11B0 +:108B60003F986D7BD1AEF5D80CF9A74F89DB68072C +:108B7000DEF2F5C96C7E863CED427C27913EB093D7 +:108B8000C1345F6FD4B89C5C57FBA1714910DB0501 +:108B9000882E95ACDEC6F8A7056280F6BE2EE401ED +:108BA000F8FE331CDF37A58FC6B7803E882AC8FB86 +:108BB000F038D9BBBD1184E3FAAF7BE7A17C023D5D +:108BC0000EA23C1AAAA085057F813E3E51FF81EA94 +:108BD000E17A6B1623BF22186449B03099D6C8E9F0 +:108BE000961F61491BF03304BD247D0C412FB33C1B +:108BF0008A6120566C1D4E8CE3F4798AE49235DB51 +:108C0000A847F46082D6DE2D7AF31FFE05FADB72E8 +:108C1000408B26AC0CF96351F237249D46AD827926 +:108C200096633D1EAAFF21ED003DC8D731B92E80C5 +:108C30009CBE8470E92697D3A1AE3FDE559AF59F7E +:108C4000A8B77493E27912B60E734102E9F309F200 +:108C500012E8A3754F203E81D8D37A8480A8F0DE35 +:108C60006BDAC96B491693341FA41D62543BE3C0F1 +:108C70009EF2004B65E23D0FC80AE35D299E7957DD +:108C800079090E1DD605569BC613DE503F38C4E742 +:108C9000182F66DFA771E477E0C7A7FCC0AF75D5D2 +:108CA000752C9EE19FE8F81DB4413783C7ED9CDF2A +:108CB0000D4C17D778739D700EF9BBA06EBD99113E +:108CC000E71BF83B9DBD29E904C433918019F6DD0B +:108CD0005A0FDBADC0FAD95ADE91C0A76BF1FF8005 +:108CE000AF1D8CF39DCD541DFA452BE7F1D457559C +:108CF0008BAF6F112E573E764E8AE2EB91A1C95988 +:108D00009E58575F51E263B40CFBC65B76209249D4 +:108D100067AF97DB91AC762EB5EF9A70550AE3A753 +:108D2000DE2A7302C98290AB2E17FDC03320F8D61D +:108D30008978A637C2D7397F759CF86858DD54FA10 +:108D4000CA13C28EE0EFFBE5B596AFC31D51BE2F2F +:108D5000E13552A49F82DD7B99E690D3389B9B8FAF +:108D6000F451491ED643C9E521C9E34256C021A7A3 +:108D7000520E65FF83CFC76E05E5B4F4F73E9A8FB8 +:108D8000C5E9F9F8350DDE972E14EB86B40B637345 +:108D900039DF1AFD4497BBC4FE4376FF9C3E47A0D3 +:108DA000EF5EA4AF1E0FE0BCD8B17E4100F1DDB193 +:108DB000614E38930FEE7223AC5F2970B8B6C2FAD9 +:108DC0008FE51D2D2695F2FD1D228EBF59AC67F251 +:108DD000F9231AD7E36B34BEAEEF306201A42BDB6C +:108DE00077DE57C70349AA0F6A5194B51137F514B6 +:108DF0001C6DFCF2A5CEF9CFB40B8E0AEFAADF3FB3 +:108E000057B03FA3FD155A7EF19B79F08F13D98996 +:108E1000382F06FBFE484B6FC17ECF97A7CB66115C +:108E2000F77DA4F581D509A47BEA34D21B55627E77 +:108E30009576325A47AA57F275847DF6397FDFBF9F +:108E40007F6707E7437D0CE3F51D9D0BAE453D5A5B +:108E5000F15B8DA9207763C4BAC2D6F37D0003FE0F +:108E6000A27EA09036F43B7A214BA6A0DDE86EE707 +:108E7000BE4229EBFA00ED920AD77E4429AE57C7CD +:108E8000E37BE77E43B90EA65ADD97E7C3F6FF47BB +:108E90007CB843EFF19B19DF8F50580CE575C4B2D5 +:108EA000FF541664C8EB2F346EEFB05541F646867A +:108EB000BEDDACF414E062B475A9DAC8ED919EA7EA +:108EC000C792DFD477EAB550DB30FFAAF7F7A05D91 +:108ED0005BF2F6A968573EA9E5F1F9DCC8B87DCB8D +:108EE0009CFA0AECB627B50CBB766BDB1CD24F772D +:108EF0007C76C55E0FF06DCC4A165D43FC6707714A +:108F00005FCA12FCB704BF67AEE7FCADEAE271428C +:108F10009670F2BF6A6142F1623FAB5814BF1DDD2B +:108F2000C4C83EA9BE00EC1340B1629573DFAF7AAE +:108F3000BD533E860BBB65B84B3E2C90832290837D +:108F4000EAEEF8B5387EE9418DDB0CAEF1C7583D4D +:108F50005FA1F1405E92B49E67F4A3A17C45D72047 +:108F60003FDC72391CE5F2F8EC71BFACDC7D847239 +:108F7000776C5AEE3E614BCFDF0984295F5BFBCCF7 +:108F8000586A65AB997695943B9DD97FC5F58AC59E +:108F90008666FF0CB91D3B83F4B5DC3F9FB6C20863 +:108FA000E0FECC662FFBE538F4D39FD718AE379B95 +:108FB0005704CA32FDACA4D0FB49118F1DAE7379A2 +:108FC0002D41670BCA525DC441437C7F2E7BFC352B +:108FD00022FEC3E340359F82C1539459F7BAEA3A5F +:108FE0004B4DCCAC87449DE3D156C2FDF51DA294F8 +:108FF000E3B4E7C719CF4758A8921D27F4D9BE821A +:109000005906EE17B405EBC2DC2E8B131DE4FBB63C +:1090100060D57096C1D736DC871C37303DDB711FB9 +:1090200012DAB78B78F80E8F1D29C0FE0B6651BC83 +:1090300063473ED80DD06FBDCEFD270DDC2CDC473D +:109040003B4537D7ACD171FDB627E925FC3B9447AA +:10905000CDBCB86CBE45EDEC640EFA597A80D3AF46 +:1090600056FF5BE6BE2B580A26C997906F161C9ACE +:109070005D54AEC71B71FCC47446764EE278966CA4 +:10908000C5F9DC1C73C4E7A0DDD745BB04FABBFD02 +:10909000EDE2DCEFCB6837479F44ED6C47BB585699 +:1090A000BB73453BE618D7CE1AF702091FCBEC2F4E +:1090B0009AD5DF7CD11FD9F9FDEDACACFE2E16FDA3 +:1090C000D98E766656BB25123EC7B8CC396EFFFBEB +:1090D000B1DE642BE919BE1FD35E728E417E4B72E6 +:1090E0009E43FEDC7C78BC84CBE3FE92598D282F16 +:1090F000573CEDA13DA2BD254E3995ED5B5B58E790 +:10910000D28CB8466B701B8D93E3B999FBF91A03A7 +:10911000F5568EE7A6784EF9291D221F6420F9E93D +:109120001072DF21E4DEFDFE13A1175A6BF87A9569 +:10913000257F1EAE27E43EAB51C37A6A73ECD7FCA1 +:10914000FF82EF0742EFB5D6D4754F0797EF41FD89 +:10915000BC3506C84B9B35DDC4FA0BECBC35332B54 +:10916000FFEFE2DBAB3739F0FD57D6B466A6F27FEE +:1091700017DF43FAD50E7C7FC8AE3E2A7F65BCCB95 +:10918000DDEF5F75EE9FACF3C448FFB797DC46FE9A +:10919000687B0523233ADC7EE29AD5503F8EC53F9B +:1091A00043BDB5AE44FA4F16AD53837DA78DD7634B +:1091B00038FFDA2CE73C5C2FD62359DE8AC15BDC12 +:1091C0004FA8D4C94E6325DEE418810FEE5FFC4C36 +:1091D000371DF3F539AC4F4AD7DF77BD877FFC0DDC +:1091E000ED2713F11F9D637D12FAF3D6024671FE3F +:1091F0001DA294F0B5E527555CBFF76D3C87E79756 +:109200008975BC58AEE3679FE347FD786B2CF73A4E +:109210008EF614C5CD040FDA83730E54829E5EF170 +:109220002B0FBDDF02F63AEE73B68B3C23690FC9F4 +:10923000FEF76E84FE61DC7D25E7F8C7003D3E0445 +:109240003B139B0D26278F7AB8DE5B0FFD5B3E8CB0 +:10925000C71A546E827A1CCAED50C7F227E01F600D +:10926000F96F2D11161F87705854C7BC27ACDFD774 +:1092700012A5F2B696062A6F47FF02CA6DC2BF2832 +:109280008BA9641FDCDDC2BAD0F4EA6E31A8EC6CA5 +:1092900031A9FC694B84CA648B4565474B0D95AD7C +:1092A0002D512AFFB5A581CA99CA9C333C648F25EC +:1092B000577B01CFF267AAEAD09FA88EE93CEEA9BE +:1092C000DBAABF3EFD5CE23953993E1BBF3B762EC5 +:1092D0008783193D8F0772B73B13DB9D3657E7ED48 +:1092E0008287F7858B73B63BC783FE4883E8CF8CB4 +:1092F00091FD90A3DDB7B0BF6083E8AF38C5B4DCA3 +:10930000FDC5B1BFE3A6A81C8F48EFF4BCDCED1689 +:1093100061BB6153447FE5F1D59EDCE32EC6762325 +:109320000BBBE7C748DE7AF67AA0BF92B96621B6D2 +:109330001B59D47D397F1E53D1EFF114F3E7A3B04D +:109340003DC96F6A8D518FFBBDE239B6E771E5FD0E +:1093500006F453345BF4E3E5FDDF7436B72B8A6320 +:10936000E636DC37598B751ACFDA8AF5913E3E5EC8 +:10937000C1B0185330CE5F6C2B0AD47D505761FEBC +:109380009514C71415EAA3BC7CFC9BBE6A290A3C51 +:109390002F6EE4EDD6425D85EF4A1A453B1F87A745 +:1093A000E09B516A27F3F17CDFB4F7EA004751CC28 +:1093B00052706A74897C8892D9F01DB4AF8935AB3C +:1093C0001ED07FE3BDCC46106FB89C917D7B73FBB4 +:1093D000AFA763BE1A6E3FA23E4AB58F98B1BA1AC4 +:1093E000E02E63719C3F9D956F9662BC7DE408D62C +:1093F0008C75A3EAEDF1581F55C6E36F9D557F2B81 +:109400009D0FCF47E1FB5ACA7F4998E0F719A33F68 +:109410001B3FFF287E972C3F7A7606C5D747AD5273 +:10942000997D943C1077DE4CE55C36DD034AEB8891 +:1094300087E3D3753987FFDEF697A763DE9B772E28 +:10944000AFBFEA31383E62DFB9355FE0338AC3AB84 +:1094500085043E2339BEAD2181CF288E6F10F101E6 +:10946000135D0B737C3ED2EDE1660E7BDF0D7F7EDC +:10947000D409EF0E4FAC14F5FF8EB3AFB21741DD38 +:10948000B793D3FF746FD79A35005FFB494CC77809 +:109490006BBB9FC7C54206EB443A227D70BFED4EC1 +:1094A000A1AF245F46EEF6268A72E465CB52F26BDA +:1094B000E46EE3356C27F9356A772051141AF83BCE +:1094C000C9C751BB83AF65F6EFC62F9B1F711BE564 +:1094D000CBF4BEAFDE0A7AD99ACBF16389BF4F9F36 +:1094E000569DCD9F5B27707C6F15FE6910F12DE4B2 +:1094F000F42D84FA43125FC1B791EF7A8F0AB7E473 +:10950000E7C87701DF509A9FA3DE0D1C954E92CFDE +:10951000A3DE0DBE96D9FFA31EBECE0EC6D756C47F +:10952000230CA587F32DA80F828739443C4C171EC6 +:10953000E610F130FF393CD60B3CD6E70B7E0485B4 +:10954000FC0D84C7E141E44FE27158C89FC4E3F0C9 +:1095500020F227F138EC94BFA1E2B1F6248EC75A6D +:1095600011FF08E91C0FD98F7B1EAD1BE3D46FFEE2 +:10957000B14EFDB66E2CD70777CAF1C5FCF08FE36C +:10958000FAA07FDE0ABA85829CFF038D77FF1EE773 +:1095900078273CE61CEFFEC7728F77C2BFF1F1FE61 +:1095A000A7E209C59EF81CAFF0D7B54CBFB9D97674 +:1095B000F8CDD0EE5CD12EA165FAE171675E10B4F2 +:1095C000BBC02BE2098E76B1AC76F3457FCC31AED1 +:1095D0009D35EEC5A2BF949AD95F34ABBF25123E2C +:1095E00035B33F2BABBF66D1CE76B433B3DA5D294A +:1095F000E1738C9B950775F990F6F5CC98D7B1FF80 +:10960000189AE2ACFB2CAF235E29F70FA95E991ED6 +:109610004FF627F7C7583C66213C1DF9F117311F5B +:10962000F1F68ED36714E3FE5C01D7B3B77BBFD1ED +:109630004AFB08581996B6AF8F54A80CF10F8CD17D +:1096400029AF59672AE517FB8ABD498ABF8AFD27DA +:109650008D35539CC93071A31CF7C5A28E7DCE7E7B +:109660003A88F6329E3290BCE911BE6FAC473A7B25 +:1096700079A9D37E219BAB38E2DEAFAAF1EDC877A2 +:109680001F038364743A4F61C8FB6243DE3F633556 +:10969000682F5DCD0251DC472EF03205F32457953B +:1096A000F3787AA5167F08E5C03BB3F93B6D5057B8 +:1096B00066AD1A877E4C84352B18DF3787F3FC2F75 +:1096C000769111C53C5B73C614F2EB5A4B9CFEE3DA +:1096D000112F9FFF4F78359E1F91C7E73D3312A58D +:1096E0006766D02BE4E37E2BBCBF1CF9E9F12DDECD +:1096F000D7D900F5309BA0809D6376AF98D108FC48 +:1097000035478BEFCB07F87E347B00DBFFADE3E220 +:109710007D3AB61FC5F83984B56B481ECC715C9F85 +:10972000B07A6B6B1BC0BFE1DBC326E07998A26FF8 +:10973000ACAA44FDD2DFCFB15C7434FC0EC78BF30E +:10974000BC22B9CF3ED91F7F09E9136A4CA4D025AA +:10975000D582325F48E48F89BCB8D3B5DAF0EB1913 +:10976000F478DDEBCC1B02BF9FE963D275CDF875B1 +:10977000C17F4E4438D27E6A4731EE9B1851B4BB4C +:1097800073C0F14E6E3864DE9273FC0F053F64BD0A +:109790000DF39432C6BFBD8475535E991C3F1A8D7C +:1097A00074D4A7C7FFD42BFCE960A294F4860965A2 +:1097B0007EBA7DF78C1F2828075F51E3FF8570B1C3 +:1097C000485CCF84D7D718A7FDF0FEFE8B9DFDF730 +:1097D0003F8FF0FEFBEB8DBCEEC1F37FA351DE2E7D +:1097E000A0F88B3E93E749B279CE7C32DD6C967956 +:1097F00051215F49765ED42CCD0EFB681E949BB43C +:10980000CFC69CFEBECCF759D0203A64D6B9BF0370 +:109810003E5C7AC0C3880F9F41EB8CBC8BD7DF982E +:109820004FE79D2E15FB410B592C842FDF636A23D4 +:10983000F2E13DF69BD0C40CBBF9581FCF1F649DCD +:109840001EDAD749C05F5CCF16757B1CFB3C976C5A +:1098500070D62F667386E1BCBD78BD87F68B2E75FA +:10986000EDFF8CF071FE5CC29A3B28DE22ECB20563 +:1098700026D38B60695CF6F33B27E37A5BE7E3F181 +:10988000947784FF2FE15A1C4C7A6D78FFC6AE891D +:10989000E79CC2F0FB644719AE17058CE6B95B9FE5 +:1098A0005CD4E9846F30F8DDF0CA7D9681E0D07732 +:1098B0002A76AEB8AC2DE6A9E4D7117FE8784C66DD +:1098C0005B65F0F2EA40681B9647FC2393C88F382B +:1098D000267F67C6C95FCD1771F0E613501E06FBE1 +:1098E0007E217E5F32F0F7EB8ABB63289732FFC39D +:1098F000309A293EA3E8315A37D64506795F0EEFF4 +:10990000B5CCF7603858D43FC9EDBA6AF7F7CEF74F +:10991000208F9F7F3E599CDBA03816CF7FEA6CE1F9 +:10992000FBBDAD9E189DAB69FDADC630B1AAB5A01B +:1099300099D6C14405B3504FF9AA63615CEF7C0727 +:10994000B562B5520835D43B4A1BB7637EDB129F24 +:1099500047C4D1A26407F88209DBC6F892274EFB00 +:1099600048DE1F70FB6D5A301EC7EFB4C83C0FEEC7 +:10997000B73E75EF45F3B0BE38324B47965D25FADA +:1099800079EFC70F4C66005FC77DF92C85F0EB4976 +:109990002FC6C716EFD228BEB1E4FE7C1A7FF18332 +:1099A00097EC980DFD283F9F6ABD49718856E2C328 +:1099B000E287CFFAF784C0C7003AB4AE16F98189BE +:1099C00068E42CF874998F7D07E304127F293786A9 +:1099D000D54DF9538B7716505E65BFBCE9D01EE3B9 +:1099E0001250E63A1FB2C9C7E39FEFE6F3FC3765B2 +:1099F000E7DE0B09BE9E733D889752DECCFE08E37E +:109A0000DD28F08376645724EE519263E0FDBBF7C6 +:109A10006CF5561D87E36EF52E203B6A35B59370C5 +:109A20001A3B6F4AE03C33AACD2A64F18CFBEF0B62 +:109A3000615C6FF94E2D85F9825052DEA0DF72ED28 +:109A4000EF323BA800DF2F231505E5AE65A4872E76 +:109A5000EBB98EF21696EF76CE3FA06B3405702FE1 +:109A600079418BCEC6FACFEE0E5900CF3BBD77853C +:109A700090FE30CE7C2FC8BDC774EE3763FF9F16B3 +:109A800066F7C7D8612FCAD9F29E757CBC5D5F7F2F +:109A90000BF7DD97BBE6F93BF88FD2ECFDE6BD3E58 +:109AA000E77E33DB593424FB7DC97D9F6C49C0B808 +:109AB000EF3EF8E72D98DFBCF4BF3EDAF27D8C076D +:109AC0003FE637514F2DFFF11FB77C0FE8F9DE6EEF +:109AD0009F8AF27168CFDD3B3641FDD04BE3EA143B +:109AE000A8BF2CF4C7A107FE3ACC827E56EE397D82 +:109AF00038E2BFF2A1198E7D55777908E429E9CBC8 +:109B00008427497CB4762BB8190F8E9A285D7CD9AE +:109B1000B74B637E80EFBD177D9487B01C9EADAAC6 +:109B2000433E2DA33C05AC5F03F4BDECDEB5B4AF02 +:109B30009F4DE7C40815F764596A04A6C05EB6EBEA +:109B4000AC6F4EADC7D243790BCBD961D2F7EEEFF4 +:109B5000961F047E9E3030FF3E619F7931C966F9C1 +:109B6000BDEBF8B83DC0BF5036FFDEC37F9C94CD3F +:109B7000BFBFFA9C792A9FB0A53FDC842F7715E5FB +:109B8000B44365BEC0B287CE3E6A5EC221D7BC1D5B +:109B900088CE4DC21F78D267FB8D1294879FECD878 +:109BA000548C7CF6456723DFEFFB64241E8E79DB43 +:109BB00073F8429C8F87F7F8CC6DF0CDE23D2FD043 +:109BC000FA72E8A1E7BC16F93F2CA8809D7288F5CF +:109BD000FFE945BBE5328557966FCF4FF942697E65 +:109BE0005D963CB3D10AD173B2E32F4B72F9BF2C0F +:109BF000B977AE92837FD38C2ABE5E254B882ECB5D +:109C0000B6FFCE2BCEF5F7F35569407EBE360B9FDF +:109C10000FC44F89BF89F89F98C1D7ED7CDE0E3401 +:109C20003F0F6DF5515CC0CDE743C24E5C9E545E64 +:109C3000C8C5F7FE3C882F984732C570E52F09BC90 +:109C4000079BD783E3F3C5E8752C4EFE49D9745BB7 +:109C50005DEAA57D752DE4A5F9D8E1B15E48A07C4B +:109C60003CED61DB2C8C834E66568EFCF536B4538E +:109C700032F6E7F4608CE751179B75983FE13E9709 +:109C8000E231556665C0634E5563B9F22518EB2283 +:109C9000FC6F137981374E514BF1C883B97118E5C8 +:109CA0006598D33F3D309AF6050A27F071385F7406 +:109CB00066CA734A6AA61F3F903D735B05DB8CE55D +:109CC000ADA5509E90B66FBE6DC4571A47B16F6E6A +:109CD00053C4F3027E9F806E302300FAEB56E5F00A +:109CE00081D1F8FC4C95EC4378DE1928CC687F9242 +:109CF000B87FC0B62D7332CFD3E5760B3CC27B2044 +:109D0000E46C3B264A09DD5EB067D07E31308F06B9 +:109D1000CA00EBA1F2469C3FB89F02D312EB61D67A +:109D2000678EA1CE5214872811FD961841EE0FCCF4 +:109D3000D5DFCD3CD7EF679B294E84E9E99F3BCE29 +:109D40008B24283E30D8F738D4883AAC9553FB6240 +:109D500009B7B88FA4B41F2F93219E23C4DBE168F9 +:109D60006D69B80F96A2B282F551390A41D130C55A +:109D70003BBE9AF17C123A07E167BF277F444DA8AA +:109D8000CAE7C7BAE0CCE0ABE41B137EBC57F8F1DE +:109D90006E7E5FADD92FC52BC99FBF1FF97B446D68 +:109DA000DEDD07755FF8E2BE7F818FD70BFF40C60F +:109DB0003DA53C3E62F0F55196EB0B043FCF16FCFF +:109DC000D463CA9919F38340047F798FB17226F95D +:109DD000CB3AC7C7FD5C8EA7E3BE19DA9B96C8577E +:109DE0008E036132CE75FCCAE0FE09F8B74F22DC63 +:109DF000BEF23EB273A55F877E6D5F8E7924CB4E37 +:109E0000E1D776B4C4A97C09E720C655CC84AD5807 +:109E1000345E12E546177C8371FEC398F465C63143 +:109E2000193F97D64CF6F12435FE0AF567717FDAB3 +:109E300057CEF3913591B72DE3E5B29FB70CEE976E +:109E4000CB52E62D7BCB9A766E053A754F8B88798F +:109E50001FA3B8C7DBA21DD099FCE25B1511FF530D +:109E60000C31DF98650E4BCF37CDB0C959F500E204 +:109E700058FA509E3494B7249579388F605EF9FD76 +:109E80007C9EE5B3BEB4730BE38723DEADE807E841 +:109E90004030AD90CA1496526EF0B9A790EF6B8720 +:109EA000B0F41772FD84F53AF4B763FF857C8CD467 +:109EB000F0F81100A8E1BC1926E01B26E7DD3CE71D +:109EC000BCEB97CF0227BD0C3FC7DFEFE77282E301 +:109ED000A3DE19789E0F1AEF2AF2E788772145F959 +:109EE000B9BD8E4AE49F7902FB40C59B791237CFFA +:109EF0007C3642F1A407B0DEAA77CFA4F8D4442E72 +:109F0000EF23D6DD42F26E9E28E2550DCE78D5784D +:109F10003FF7272AFD5C2ED9141EDFA8F3737D0EB0 +:109F2000F24771944ABF887FD83CCED25F9FC9DB8D +:109F3000F7D76BF9FB7F223E52E79F94333E32D135 +:109F40004FEBCA00F11161DF56F4EB41673CB8A258 +:109F50008FC7434ED782A437BC4D3CFFB6BC9C9FF5 +:109F60008BAA285F7339DECBE215F255369525D1E1 +:109F70002F85F7E4E7C8EFCB573AE3C54683335E56 +:109F80001C1679B065AEB871589EB76219ED51CF05 +:109F90000A3B469EDF19CC8E39DBEFF24F8698875D +:109FA000FD1BC5FE16CA933C0FD45AE0CCFB74DBF4 +:109FB0003D83C51F065A975BA74D78B118E46FD84B +:109FC00023BB48FE34BD078FDEB00DF9FCFCCADEB2 +:109FD000B3BDB4CFB089193CFFD9A5173EBD949F3E +:109FE000E7DB52CC92FCA149F74CE589F7CCB4579A +:109FF000A35D2CF5A4127FF2AF0AF1ED72D20F0629 +:10A00000EA8FD1E97539C40E733DB234CAF08A8241 +:10A01000C7574D2F403F368F75E59C97523E3E5CAB +:10A02000C9E54367C786B11E59A9537CAB341E0BE3 +:10A03000A7108E84DD1B194647A2E84F0188B99E00 +:10A04000C1A7A24683659EEF2A89998E7AA590A71B +:10A05000E1F3228EEF581BB777F1F81ADF4F8A1120 +:10A060003D224B816695D979FF112157A50B53A449 +:10A07000CF47B8EE218A08798CB8BE73CB5552CA47 +:10A0800015980B2857408768AA9EF277E8BCBEDE79 +:10A09000E723BA94015D900E1F32CEFF8AF98CEE51 +:10A0A000E770D343CA1DFC8FFCFB91D04F0A9EFB87 +:10A0B000224E3AF92D279DF26A9C74CA8F3AE92301 +:10A0C000E9166EB01CED24DDE43D5A03D1A9BCA90C +:10A0D0006735E2F3CFD2E909179D4604411E18CA3D +:10A0E000794A51402E3689735A5B84BC23038D0C08 +:10A0F0007B4CD2C52DF7A54D20C7A8878A998547E7 +:10A100006F586D3EC5A923829ECA2A29E7B9ED5131 +:10A11000B7BCEB0CE41DED3C839F63CF433B8EE467 +:10A12000FD0D9669C7798C5022EF782CF9B9121D74 +:10A130001889E7F8E5B942D0C77F24BDDBEBDC170F +:10A14000F2001C4AC67E982C359D592A9DB94C9127 +:10A15000FE1D27DAA3BDCD32F01D87EBEBF1B88EE3 +:10A16000713A29418E1FDB0CEB6DC67EAA2EF69D3F +:10A17000868A3733453C10D7DDBCECF93D0AF1C582 +:10A180007DFCCE0EC2D7BAC69ACE87B30FA2FCCA48 +:10A19000F33A039DCF199D00BB59C5F31B4EF91926 +:10A1A000B9D2792EA35C9CC72917E77598F6E89970 +:10A1B000748EF21A30B371DD719DD3A9B0CCE998D9 +:10A1C000E754B18181E30172750D3FBF3772258B72 +:10A1D0002ECC1867443C145D086B7A998833B8E537 +:10A1E000B334E0F473AF38732EE9AB1F5E53959729 +:10A1F0006B9DB8BB25125D3806CFDD18D185209741 +:10A20000F99BE36A00E0B4929C0ED63CA6E2BD4204 +:10A21000526EEF6C61D4FE9E1693CAF22B1697AD68 +:10A22000B5904FF1F10190937189F834B40BAD847E +:10A23000ADD2BAA6DBC704503E9AF83E60CDAA72F2 +:10A24000827FDCAA91D18545D9EBCE887FFCFCB911 +:10A2500059C5C81F350A1E251BF5A9CF463B8B6281 +:10A2600038806F659BA5E2B99FA9016E6FFDDD1F68 +:10A270003B11C7B512268DC79A0A699C81E8E61E74 +:10A280004F9E7BBB63E983346E9B59EC38AFB84D6E +:10A29000F4716680DB47F2DCA1ECA7A3539E3BB4CC +:10A2A00054F4F7ABBA2B295FCD7DEE50653C4EBA26 +:10A2B000509C3B7CCB1F8F21DCCCCC380F5B953E78 +:10A2C000773862597500F5F936A37B3AF263C49585 +:10A2D0005C2E8ED9EEC40BBC3FD6002857B5F5AD29 +:10A2E0000E58693CFFEE8F7F0BFB2F378244E77ED1 +:10A2F000FA88736CA3849C8FBF86D1FA52D5CD683F +:10A30000FF795467F71AEC7E96D0FFDB84FE87F95D +:10A31000317B7E867EDF16B70B31EF4AEA63A97F79 +:10A32000412D8A75CB22FFFF986B9CF3A24AE8D996 +:10A330006A979EAD12FAB9CAF5DCCDC763B683DC65 +:10A3400065F427F19578BAE7C3F703425F0F67A575 +:10A35000984FFB099B32FC742B2D27F27C9CDB5E13 +:10A3600072C7F964FF1352A6031ED9CF607124454A +:10A370004F507CC7136126DA7A1B4AC4FAE08A433D +:10A38000F4DB338D8CF233236027A19E8DCC8ED3EA +:10A39000F99148238B5A087F27BF4F609D977FA76D +:10A3A0001A0905F3508DF2DEA928BF77048234EE36 +:10A3B000AB6AEC0E9483A2D97C5FA748AC0B47D361 +:10A3C000AB092DAD574F08C4B7E3F752BF56A69857 +:10A3D000EACD887348FD2EF5B95B7FE7B9F5F0103B +:10A3E000F3617C7A3CB5C0CAA60F806F65DEE3B02E +:10A3F000B642AC1FE57CFDBC63A92EF2DCE2A7DB14 +:10A40000F0CFEBCE7E205262123829B301EA5F51C1 +:10A41000E8FD6BD77EB71DFDA1EBCEE4F537AFBDF0 +:10A42000A21DF7E3AF3B4F217FE923F11E2A940FD2 +:10A430002DEF073D52529540BB07745E14EB6BCB7A +:10A440008F7EBE11F7D331FF58B6D3F4289D4F96B7 +:10A45000FA45E681A4E377CEFD147D29BF0743EAE0 +:10A460001D7D29CFD3E8287FF0C505F5742E9FEE1A +:10A4700065F51ACD746ECBD77D39E589B8F58F2196 +:10A48000F4CF45A87F14D23F7DA89735D3791E5FBE +:10A49000EA9F5F0418F1A1A6BE99922E7D5642B59F +:10A4A000A0FFB750C994A4E34F529FBF85ED711F21 +:10A4B000508FB128B4F73436D37D74BED922AED2D2 +:10A4C000C8CF3316CDB6E89C91C76224A76E39FE7B +:10A4D000A05F6EED0F10BE8F03329E185578BE0F31 +:10A4E0008F679C1088FD05DF5746D8E33C243E3437 +:10A4F00079A43F93459CAF12F1B7D9D1E27C6EFBB2 +:10A50000224B9ECDA1E5B7DCE0B50B4EC7FDC15F88 +:10A510007BA218CF1DC8BF92EBAB5C8FE53A2BD75F +:10A5200069E97F9D925739C0FE71CFD3B88E1DA9BE +:10A53000530B33F3B0BB16B2467E5F0997679FF0AB +:10A54000A18F542C087881E427E769FC9CB738AFC9 +:10A550002BE53330C0F92B29D7B2BD946B77BB21E3 +:10A56000CB73CD029A579F6CE67C19D77DF9E3FE39 +:10A570001CEBA8EC57CD96E793F3D0CE18603DBD09 +:10A5800036609F9207F4BAA12EDA94EBFEBA638389 +:10A590003C6E73C7D2F57E94F38D48AF8CF91FC81B +:10A5A00013F37FFC0AA2575CD0EBEECD4E7A450642 +:10A5B000A1976CFFA5E91517F48A727A0D74DFC1B3 +:10A5C00051E8153F2ABD62DB3AAB306F28AE46C773 +:10A5D000003EEB636AEA34A86F6C52EF45FBF5DA94 +:10A5E000D8743ADFB123FAF8A30ABC3F3798CFEF0B +:10A5F000C5365307B05DA25AB528EE677637229C60 +:10A600003BCAEB18C6B9243C3BCAF9B99AB5E50B6D +:10A61000021765D061C786C71DF74AEC70DD4B2075 +:10A62000CBAAA0E2C85BDAB490C70D4AE32C89F943 +:10A63000023317F279E12F063F1E9AFA6D5E1F274B +:10A64000EE7DD93FA1631AC6DBD695F3ED3B69EFEA +:10A650006C70D93B32EE10A8E6F72B6F88C3520E10 +:10A66000ED3C53B93D9627FC04784F71A240ADD321 +:10A670002FD0845DE3DBEC7A2EEC208FCBDE91EDE6 +:10A68000B541FCD082993C2E7C7B5EBF7D330AEDC8 +:10A690009B4D3195F028053C5047752DEA56507F6B +:10A6A000977EA6D97CFE7747CE3F2E6DE7DC9FC70D +:10A6B000EFE1E91271CD68CA9C8121A270033F7F4E +:10A6C0002BE97B5F1EA77797C887AFEF8DCDC83F7B +:10A6D0005A3B11876DE8EB9E11CAD16E5990DBD3BE +:10A6E0005D1E7E9EB46B8C37B9BA12EFE5E57A3207 +:10A6F000F12B8FBC5F86F8BA6391B915E5E7C1030A +:10A70000FC1EF5D2B845FB5B0F5A71B52A38B0DE96 +:10A71000BC22C8FD84B18D519BEF6FCAFE52F7F287 +:10A72000FB6A52910B801E3F0806A9DD8301D00F02 +:10A7300044A77859667CB43C0D2FE1FFF08B0BF2F7 +:10A74000306F23526ED195F085E5CD0CCF83C8F1E3 +:10A750001E2C17E3E9D675C7217E8B52F9D766E028 +:10A760002FC77B38905B1F8D14FA48D2FB91B7B787 +:10A7700039C6F3353AC7F32D84F1106EA37BF5F19A +:10A78000F5038FF7C800E359123FC1B7C73E7D3DBF +:10A790000FE3F7911A180FE51FC70B668F57FAE9F9 +:10A7A000CD4A7EC6FCFC1731CE63928E7ABC6C4ECD +:10A7B000861E7A57C8C7DDB16DC64516E67B77F8A9 +:10A7C000518E772849632CAE631354BA27B56BF3C7 +:10A7D0008729B47FEFB6B97D53D0909886718CE30A +:10A7E000823C8E7FF7E6E9F49DA277AFC6F9A86DAB +:10A7F000C0BBB2409F603C012F1173DBD5C23E0449 +:10A80000F9DF8BF37EE46C467973910DCDBF1C8F1D +:10A810007A62954AF61C03F75E9F9C8ED76CF0888F +:10A82000FEC4BE9CB42F4A859D7E143B23CAE4BE61 +:10A830001BD5F93E9D8CE7B03A9B29A3D3FB1F3271 +:10A840006E29F73DE47E4798A5A665EECF8DC6F349 +:10A8500079A3314E915C8DC855DAD674CCB31CBB4C +:10A86000213E9DEE115DC928BEA099CD7C1F65F4E7 +:10A870009D05FD71CE53185B833209F4DB9727CF1A +:10A8800021C6CBD04F7BCE55FF439ECCF7E4753D20 +:10A89000CED7217D21D7732C9195273C3EC8F3C09C +:10A8A000085F19CFBF52F4B33E76B31FF57A4FC09D +:10A8B000AE0D42FD3454AC25E45F4CC0EF4A673323 +:10A8C0001BCF8F696DDC0FD5824CFD67F81B81763D +:10A8D000A4F757F17EDC7C1B88BF928F92AF5F9408 +:10A8E0009FE8626B1AED230A7B3271543BB25C3FE6 +:10A8F000AC60096E04F1B59AC588AF6586A9223FA0 +:10A90000AB665AABFDC857F061D0EFAB08F2FD085B +:10A910001FEBF3E33EF3407CD56B049F623C7EC4A7 +:10A92000DAB2EE9DBB30179FD2EBB9DAA35883AFF2 +:10A93000E31B6A6EF6A35D00EB38D905892695CE38 +:10A94000BD0E613D27FFAAAAEB11F2AFBA0AC47D82 +:10A9500002A0FFF1BEFFFBF32CC263CAE1DE19E1E6 +:10A960008C75A3CB938A446BB17D6A1EFA3D893BFB +:10A97000B99EB83BE6D61349E322280FE515907C33 +:10A980006DA89EF5F4789CD77A82FC0739FE27D70C +:10A990000DEBA07CFC608AF212BBCE5C41F729492A +:10A9A000BD92D5CE15E77C7FCF0B1598EFF5CAA2E7 +:10A9B0008FF2319FE70FFAE17C84EFED6BFE231FEE +:10A9C000F3105FB946A37B132F1471BAEFB4FC6385 +:10A9D00032C6AD6E1576CBE1A07D3DCE03B68AE7DB +:10A9E000A15C9AD43078CDE50DFE5BB2330F954271 +:10A9F0007F7D594F91A32EE158E6E3FB794BEEDDC5 +:10AA0000EB1D0174B8746701C5AFDE16F767BFBDF3 +:10AA1000AB622BC6E79F15EBC9E160EC4E1C17E15A +:10AA200041BEFCE1519FC877ECF5F0F5D19E8DFB5E +:10AA30002B71212F6EB89E7C2C8FFA5D74AB4676FD +:10AA4000D57CA0ED2A50C9F1A625140772C3BDE834 +:10AA5000959E27CB00AE45EB14BA0F0FDB5F037E4C +:10AA6000637CD55A8A8BBAF19A9F70E6CB5CD4731B +:10AA7000B997845CAB9D351CE3A79D0AE901779EDD +:10AA8000EF258FF2FCC285CCBA6E4A658EBCDFA67C +:10AA9000AF511EE025AEB86B56FE5F50C44F27B3D2 +:10AAA0001379BCA8F6C65A6BF0FDB5B7C1BEC76432 +:10AAB000D7775A0C2ADF6D31A9BC3E68F1FCC0DDA6 +:10AAC0007B9F24DDA1F74E46797BF0C01B79E7C35D +:10AAD000AB15116ED79FBAF5A3D687E1F544160BD7 +:10AAE000A7486FD9A45F2E107C388D195610E0BC92 +:10AAF00041D8EF133F857A067E1F762BE4DFAD80C9 +:10AB0000998A797C17203D8EC7FEB93D7F01FEFEF4 +:10AB1000CA51F0EE0BBAF3E6BE1CDE037DB74CE380 +:10AB2000E71DDCCFE5BCB85EC869EB9EDB67A1DC46 +:10AB30001CBA49A17BB217EF7C8DF25B17EDF69939 +:10AB40001A0F421E44BD26E594B1662FCE6FB73C66 +:10AB50004AB9E897BB47AF27BA487980791411F909 +:10AB60005B11B52187FC0D924F7EC8D33712E7BD2C +:10AB70005BAE0E0DE0B77C1CE479770B2D7B16C61F +:10AB80006B16B118E58901BF7FFBBF818F94A33A93 +:10AB90001E03C3BC4F7B26CCDF073FE37ED19A5D0B +:10ABA000A36F417B7AC2333AE56AD73D346222DA39 +:10ABB0007D754F046971AD7BBAED1B38DF4FDB2A21 +:10ABC000EE8B12EBE9A9F84F2B9B5EA73E35453B78 +:10ABD00079087473D3EBD4CF74575E5DF793983FC5 +:10ABE0005BB75D213BADEE59F7FB04D77F3FBFEF6D +:10ABF00061D4C38B7F777308F3B7FFA4770F437ECD +:10AC0000DCB7BD3D84F9946FEB8910D2F74F49AEA4 +:10AC10008FDDFC589EAFC87C35477E2CEB4C10DE98 +:10AC20007FB9CB63629EC9F29D3E9E6FB97F31F1C1 +:10AC300001EA3CCF7257EEFCD8C577DF3ACCE2E7A9 +:10AC4000D39C79B2DB3DB41F7A19F86738CC4079D0 +:10AC500082FD79873D47CFA35C2EFCC8E5FBBF9AF8 +:10AC600033CF59E6A3BAE7FB85F9CE3C02A00FF932 +:10AC70008D09808BF6C0447E64EB3DBE049EB3FF1D +:10AC8000D3CBC3B7E27EF8BBDB9F09E139F8FE7D89 +:10AC90004C91F7F76ECFE8A3DE2B7C48E809591FEB +:10ACA000287FF63E1DEFF8656CE94B3EB277963E85 +:10ACB000A7E6E1EF4FB1AD1E82EBE1171F1F761C37 +:10ACC000D4973CE0299ECDD1A13C59C9B7FE3C6642 +:10ACD000C1A7C53F7B82F269FBF39905BF963CB0E3 +:10ACE000D78BF2E2A6EB8C9EBD5E7E6F868B6F3DAE +:10ACF000AFCD427FA7F59E235ED4437F7A4C61C3DC +:10AD00002BB3BF6FBAEB199EB72EF836709E7AEA56 +:10AD10001B8FD4533B13FDB4C1F8782ACAD22492B6 +:10AD2000F79F3E02E337BDECA37CF9A69F5E41721C +:10AD3000FF96DE4C72BFF4CEF661687F347912C3A1 +:10AD40004C2AF9F3A62D57923C5EF2DC95C3C4BDA4 +:10AD5000AAA55C3F244A11BF459BCF26FC2E6671F5 +:10AD600092C7A63B35BAFFE4139D353E9083AF6F83 +:10AD7000E6737DFDD6361F5DDAFC16C66FD18EFBFD +:10AD80008D267EDFC9997F432B13D43F11F1B14744 +:10AD9000F355990765A03E592E5A2DDFBE96CE2356 +:10ADA000BE53C1CFF5031D12826E0AAE7BDA73A7C4 +:10ADB0000FE7FC6116DAF1F41DA8D419F81CDBF7D3 +:10ADC0007A6CFFF18EEF44DE301F7FA5181FE00E76 +:10ADD000E0BEC15BC3F87D6BCC955F7DD9AE4B67A0 +:10ADE000633E754988E3D93FFFB78B7C6531FF3FF0 +:10ADF0003EC8F50AE65F13DF7A3DA9E18EBC6B9F82 +:10AE000023BE9ECE27F68879ED7C0F70515E743F8D +:10AE10003D1F53C82E5EBE8BEBFD8BD7FB1CF1C1D3 +:10AE2000E5BBBE22F2E35D7945AE3CE94B841E7082 +:10AE3000F3D1AD175ECB77E5496F2E19527C7BA914 +:10AE4000274979EE306FC9CE5B7A9F87F28AFF7C03 +:10AE5000EFBEE7CF0739FF738F9CAF4E3DDB3F5FFF +:10AE600081DE48BFA60727B15CF3F5CF781F70AE2F +:10AE7000F90ACF73CED720237DF63FA66705FDD311 +:10AE8000F476CECF4B06D0B37921F7FD85B5613C82 +:10AE9000C7F6CE8F978CA2FC36177DA55E75EBCBDF +:10AEA000BBF2AD01CE75703B48D253D251CAE9E234 +:10AEB0009F2CA371FAE557CAA95CBF06381FE0A60C +:10AEC000A7FBFDBFA33E2AC9CEB3484C6735F8FBAC +:10AED0002AAD5E56837196841A88A2FC0E964FF6B0 +:10AEE0008350A5D007D114CAFDD5FB18DD2383F606 +:10AEF0000BEE1F1D7992D1EFC4798A2D2D739D8998 +:10AF0000CE509B73DD0F3535C4F5CBEE1087F3E2E1 +:10AF100010A75F9B161379A43DB48F447B26086766 +:10AF20004188E69947F8EBF2BC5A344FFDC802DB82 +:10AF300069CE0DD567E0F9DDE844F58AD1509F1F51 +:10AF40008A9EA103DFA2A7A83FAB82FA45A109BC54 +:10AF50007E823A11EFDDD8C9EACE9889BFA7A02A30 +:10AF6000AC0EFAD7CBF83D77D7C1BC3640DEDB421A +:10AF7000CC2E00B9CBF3B184BF2E0D5F9E17EA85AE +:10AF800084B785718FD60283F243DB3CFCBBA1F60C +:10AF900027FBA9D3AD19889FAF1A70AC4C8F53A76C +:10AFA00073BC6B83FCF795DA0AF8786D305E2BB5CD +:10AFB00093741B5A29F387B53CCE0F2DAC363F0056 +:10AFC000E532C187CB42A6D4F714CF787FCFF06D9E +:10AFD0003CFE7A7824FD7E84F6E1ABDF87E787BF0D +:10AFE0009D47FB632F07B89CBC1CE0F2716EB8CB89 +:10AFF000730C3CAF33465E81C2F6B272EF95587E59 +:10B00000231CFF6E88EC3796C27ECFBF50E3FD064F +:10B010009BF3311F5CB1B9FDAC00132F00BAB4DA59 +:10B02000CCF28EC6A9E3CCCBD5B4BAC3291A3FDF84 +:10B03000313E2B87F509E6D7B927F1F9053E32AD48 +:10B04000572F34F0BA846F5EB2AAB5CF2278AE45DE +:10B050007826F89215E8C79DEF4B8EE1F2E6CC5BBF +:10B060003D84FD9F80257C7F3CD78B785F70BD98A9 +:10B07000C7F5BB9738F25597BFC7ED75D6CBED60D6 +:10B08000991F8860217E4CFB6C18ED073DAB929DAB +:10B090005EB7DF9977718AC8433AE9591EBF3BC949 +:10B0A000A5BF4ED9FD35D26BA70CE21FDF1512EB01 +:10B0B00043192BFB22F9A7BD8A7D2FE713FF3D9B88 +:10B0C000D93AB3337F3F728508507DF86C5518E349 +:10B0D000CC63C4BA2BF3BBBD9646792EBB5C7A51C8 +:10B0E000CAF37107CD8B10FEE30EB2EF707A8A7E41 +:10B0F0004D4ECFFEBCCEB7795EE784BE9ADBE9F752 +:10B10000EE0E7858D24AE7337E7890E7334E3EC051 +:10B11000CF373E8CFE38C6DD22CE73337E2BC0ACDB +:10B120004C3D5F53E8A8B7F9397F655EE444FE8A79 +:10B13000EE47C9EC67A2C97F2734DC50E5F89E3D95 +:10B14000EBCC67AC63FC5EAFE8EFC5EF231C74F299 +:10B150005713FAF4646147465309D2930DBF77B68B +:10B160003B39D848FB4B270FB2BFF4BA9BCFD9F479 +:10B1700074E4874E60C7DF8EBFC39445CFB79DF49C +:10B1800094F20074A5DF7D2DB09D742D6A74D2B544 +:10B1900024E6A4EBF0794EFA95C69D741BD1748C0D +:10B1A000E37D45739DA33E6AD5C98EF695B0606573 +:10B1B000D647777ED5D17E4CF71C477DDC86F31DC4 +:10B1C000EDC7271738DE1FBB73F190E4E0B89E157A +:10B1D0008E76520E4ED8FD3D477F520EE4797CFCB0 +:10B1E0002943A47B54E4D30E260727162750F2FFE9 +:10B1F0006939181DFEE7E6FBC9625DC0BC68B4EFA3 +:10B20000E4FAFFBE27D889F66D01C808EAE381ECAD +:10B210008182479FA278BE3BBFE1886AD1BEC77AD0 +:10B220002D46E73646000B5590A336F1BBA637A84E +:10B23000EA7732F7B7A686B97F3F35CCF7B7EE800D +:10B24000F512D7C711792C41EBA6CA1CBF231AC22D +:10B250009C0ECA1FDABA167FCFB3ADA0AFC62A8044 +:10B26000F98FF5A9D9EB12AC4713D1FF00BDFF95BB +:10B2700030E07BBE0A7A1F863CD74C9CAE008E2302 +:10B280000C96C0F326B03ED279EE0256ACACA8457F +:10B2900097A97FFDB13E07A1D8B7F8583AD7F36117 +:10B2A000D378BA97F143C0A197EF1FF2DF5BB6A244 +:10B2B0009487709EF05F3E5C389ADABD7421CC3E74 +:10B2C00090AF5F2306607FBCE4E574182C2ED7B4E2 +:10B2D000F5967CCCCF79A986E739C8E74B04BD96B3 +:10B2E00084797EC3F28579097E8ED443FBDFE86FD3 +:10B2F0009D8C767992CF67AC631C6A5DFDCDCEFBE9 +:10B30000000E342730DEB9FCD13329EF4CFA09E7BF +:10B31000BEC0E37FE7FE9D39ECB6EF85F9EFB37C65 +:10B320004F8C7B0E14784FD439C08F022C9F9A32E9 +:10B330000BE7073C4F2950FFE60130D580EE67C68A +:10B340002B3D48C4FF60D1DF3E04A0B787F9F873F6 +:10B3500059CC83F03C7FE1B27C6CD7DF9FEC078057 +:10B36000437BE98582846718E8ADC353155AF761BA +:10B370003C039FC72E18D18EA15B39DEF32CFEDE75 +:10B380006F617ECC6151EA57F6CF70FF26432FAE36 +:10B39000B8342F5504FDAD78C947FB4FEFAF3EFCE5 +:10B3A000D3AB00AE3F2CFEEB4378FE80C5FB2A708A +:10B3B000FD3B6F83C6AC89784FB17D03CA0D6B1816 +:10B3C000DA39F3193FF6D37C5871135FC756DC3373 +:10B3D0008ECE87AFC8EF9797E199F272A990971533 +:10B3E000778DA6F3E4F27743DCFDB7B7F0FB2E5A76 +:10B3F000C5EF3BB717F37C619DC5B787D16E361794 +:10B40000D07DE6E5452C49FB9DE543CB7BC43995D2 +:10B4100040FB8971387E25E474DEA3451385FDD693 +:10B4200083F8BFFCD87D15A8CF7E39FEEE31E41736 +:10B43000D50F8D1E52AF3C20EC2926D6A9A8C01BE3 +:10B44000D629F243DE678128D26B207DF380B0C31A +:10B45000AED66CB2FF8FA831710E0DDC478DB4C330 +:10B4600033A7A03DBE57A57864089591D41B600B07 +:10B470008630695FFEFE30F84BC70ABDF2CBF0079D +:10B4800067B4F1788BD3BE13F12969CFC5E02FEAF9 +:10B49000F75384BD316E8333DE79524A25FFB4DF22 +:10B4A0008E73DB6F18371A82FDF64A58F8A35FD8FF +:10B4B0007E8BBF8572D053C3F5714F2AC0CF7DC03C +:10B4C000D2C5CFF93AED3A773FEF85B93DF711DABA +:10B4D000D4D0CF6E93AF0F79A01FF3F9F9BD845686 +:10B4E00047754A1105B3CF2EE1F54418CA338A785F +:10B4F0007BAF72A8C6007D7C24FC97B59DE5783FA4 +:10B5000005A733D65BF1DFD64492FB15524FEE3FD1 +:10B5100086DF732BEEC7A9177170377CF5301FF9E2 +:10B52000E2CCE7F37F03D130D915008000000000A2 +:10B530001F8B080000000000000B95590D7054D7B8 +:10B54000753EEF677FA49576DFEE820043E5D50F69 +:10B5500012423F595602846CC7CF4080CA322C1029 +:10B560003BF6C42D2B18031192D6C129752674BC45 +:10B570002B118782DB6AEAA45153B77D2276EAD881 +:10B5800052BA04C9C89E9566113248181C0963074F +:10B5900068CCC834435C47D2CA6A2D5C8FA7EA39AD +:10B5A000F7BEE7FD91685C63CDD57DEFDE73CFF923 +:10B5B000CE777EEED3412B00780062E73EB38F65F5 +:10B5C0000174B93CBFBAA70A606A588213F83C43B9 +:10B5D0001E333BF1F92CFD777F627CED19DC570CB3 +:10B5E000F0554504580860ED1554AD0C478F0AC25C +:10B5F00002DCA728AB2401D704C05686F389930543 +:10B60000BE63286FDC810F57E3FFD97EA782639367 +:10B61000D491AB14008C08AA5B4139A889ECCF0601 +:10B62000A893418DE0B99158BE63378EE5321C95E1 +:10B630005D2887F62F4CE8116CAF04700334B7BB5C +:10B64000D958D28BEFF1513026B171B2B7D5152848 +:10B650009BAB7F70D1D4CCBFA15EF0AF66EF4B380F +:10B6600094472BF741058EF8BB09CF79E5D35226D5 +:10B67000AF54C963E7E1F9323D07D0C41DB828686B +:10B680008127232877F25389AD33E496F73E2029AA +:10B690007680B258DB00100E518B278422325E0474 +:10B6A0008E4B3443035431D8BF1904C439EE04AF70 +:10B6B00080EFBB32A76E00E1DE67F19C1008BF3659 +:10B6C00070A1FC2E33ECF2E35802A0FE322BF1DC29 +:10B6D000382F23FA63007C6E2D0455A3F7721BDC10 +:10B6E00097E4AF714736C3BB4E01367665C6C42CAE +:10B6F000D4636A39C009A657424F60E71A7A966840 +:10B700002181CE9FBAF5BD054C2F85F850025C4FC4 +:10B7100088167B5EA2FD8ACAECC8503C5E5A9FAE7A +:10B7200057B002347000FC750BEEA921FC40856A0D +:10B730007C9E99985B57E039F9F8DB5DF8132A3D58 +:10B74000BA7159D21C9FD07A63FF6EA5E2E8917B53 +:10B7500001641942920FC08663B68BECF430FB642F +:10B7600094B7D0C771F0224E362B7FFFC57AE47BA9 +:10B7700016CDB3F83AAF23E4AA45FBBCE7456F2BDF +:10B780008A80CF6701D6209F80C7C57784D8ADFB5C +:10B79000D1C59FC4062A3CA853E3F93772CD381EA1 +:10B7A00010A37F578EEFCF59028DC4E3D3BF11C1D1 +:10B7B0008E387CF4F30CAD0E7159F17A478E9A35C0 +:10B7C00057DE0FAEB6FCED52F2FBEB82071187B8E5 +:10B7D000692A97F46C8EFECEACE2B8B9F703F31881 +:10B7E0008E1667E010C543756F7803E1B80EDA5A1C +:10B7F000151C4B4508B0B8588CF250CEF495A213E6 +:10B80000618AB3A9C0DDC44B4DE1F165F821AAC737 +:10B8100069FF335636A6C7813186606029A0CC1EE9 +:10B8200013E75B0B0C2E25DC7BCE3C56E041B97157 +:10B830004DDE42FC2A7DCFBA4B4DE2DF4F28FE574A +:10B84000D3C8CF5DE90CFC15E171E0CC4DB31DED23 +:10B850000BFE36920B228BEFBF9937BE658F239973 +:10B86000CF73E23B2DBE82F2949970087E082CDFE4 +:10B87000A0FF8F38D09FAFBED7BBB23E8BE90F0E73 +:10B88000C4A5E79A45A3B8C3F9A314A7E177672A2B +:10B8900028BFCDF41DB89BF00C2B26760EC6C3FA3C +:10B8A0004C8ABB93C0F29D11B76514B7A84A19C55D +:10B8B0004315CD4B98BC2EF3482D8BD31E11284E2B +:10B8C000311E587C603C289447CA148C0FB6BF9830 +:10B8D000C57DD788A8D23C14CBD496B3F9FA9D3451 +:10B8E000EF1AD9A8B0B817117A1FC56F6C80C98933 +:10B8F000002C27D70AE08F9425C7B19DE16BE4CFD8 +:10B9000059078F679B24A5C4895D128DB8E2F35651 +:10B9100081BD373B771DFDE1328AB64A91F87850F8 +:10B92000E17C8400CE73009EB2B23D70F0CD9A6D82 +:10B930009D68DFC14B127BBF467D7203C614546FF6 +:10B94000693B4B638D3FB2C144FAB54BE041BFAC9C +:10B95000C651C53C7BEFA323674D3C9C4BC9BFDD63 +:10B96000037F5C2A13CFAF59200355E8FE6CEAC66B +:10B970002B68DFA17EC415E6F20FD5657CBB133FB3 +:10B98000E3C298BD00757EBFAD798B9C81F1B28E0C +:10B99000DB79BDADF168A8106097537D9F78F75DA6 +:10B9A00057808DF1D1CF722897F75CB9690FA0BF8E +:10B9B000BBCD6AA9C246D81F99A79EBD457CC07D54 +:10B9C0005594D7F5F892A96EB5BB3B28BE26BA258B +:10B9D0003507319FD5F90E21756431E2F604870DE4 +:10B9E000F6774B1F58B07EEC55010E231F9F186C45 +:10B9F000A8A37AB2F787A69B632BF89A595A873F78 +:10BA00004FA3BF8B080494DF1C11348DE2573A2CEE +:10BA1000D2FC93A8006E81D6C937C7749FCC224F41 +:10BA20001AE1B98F259417EC35259EE34FE360EDBD +:10BA3000EFE89C465ABF22B1FEE9DF8C3A0793CE6D +:10BA40009D55B217DCB2E12F0550302B315E786383 +:10BA5000C4E37725EF09AA79320C5950AF57458EC8 +:10BA60000FE6491657B79F19710E22342FB9D469C2 +:10BA700007DA3D4DBCA3B859CFF3CF5497A0B138E6 +:10BA80007819F33ACE6B3EF474401EC3E7CAE23530 +:10BA9000DC5EE2518DCCD7D744F3581C55ABE08D1A +:10BAA000A1BD7BAF485E8D7021BCEC545EB97D5862 +:10BAB0006E61369FE4B549844BC30B880BEE3BF0B7 +:10BAC00072AAFD411D97C6F6D1734B70DE14497BF7 +:10BAD000AFE3134CC3E797F4CBBAB938153A112743 +:10BAE0002CFD900BB98413488F3B883F3084602C29 +:10BAF00099CB1B031F0A37C2E5F7946F70FD655D94 +:10BB00003EFE97558F3CF9771D07D5C9F9D3AC7226 +:10BB1000FF376A92A6A13E7B74BEC0739C2F56FC71 +:10BB200047F623C266667FB7003F11E6DAB7BFD398 +:10BB3000546F469F34E838003C69A6F8DBFF422A80 +:10BB4000EF1A741C1AD270680E08297AA08659F56B +:10BB5000E8B73D3AAFEFAC57E411F26743A7098E5F +:10BB600031FE7ECEF4FCA49BFB295D4F433F43DFB7 +:10BB7000FFAF9EE97E7ACCF0D34A5899E2A72DEE2A +:10BB80002FE527ACF82CEF1DD4FBDFE9C1950E287B +:10BB90004BF0227DFFA676DE4F6E6EE7FD65F7C89F +:10BBA000C051EA937D7D925287FBE323EB6DE594D0 +:10BBB000EF2ECA5E12118F561E0FA17DA7860A773F +:10BBC0007A50AE6F5464F15179C9A765A03DBE4B60 +:10BBD0003E5B41362385DB5FCEF6B1FA1ABF58F8DB +:10BBE0004E19C919DA5845B0862FFA6CD40F9C4209 +:10BBF000CB8857C2A5FF7A9BCEAD1C96D758F0FDD7 +:10BC0000B38B2516579BFFBEFE671694FB6DA7C42A +:10BC1000F8756EE4E0D7C91F4D1745859E4F5E1439 +:10BC2000D9BAC67F943411E79B4F9A58FC0531FE70 +:10BC300005A6AF899D1FEC5BEEDE9395E0C16E9D7E +:10BC4000B73EA7E7F93AEAFB96D858BFBCF98F4C44 +:10BC5000AC2E8EDF65FB29F53B456AC72605F51C32 +:10BC60007FE32996C7E25D022C46C1E7169FFD459A +:10BC700008ED1B7F6DD44CCDF586EE5133D5E1DD5B +:10BC800046BC1FE53C3178B52F26D69BBF82F9769E +:10BC9000241362280FE43633F9A569D4988F99A943 +:10BCA0007EFBF53EA9F9C50FD8BC81FA7EE2E38B95 +:10BCB00082E6C15FCFF69D667C6CEE1460511EBDBE +:10BCC000EFD844EB0E40E459AA03E979E45B3A3F2C +:10BCD000F7B5A73DD7F9F8AD3FC0C7579D7A7E2D80 +:10BCE0008112E2E3CC037E470CD7CD8C66B2FBCF4A +:10BCF000CCB0C478F17FF092D5BF8BD4AFA163A74D +:10BD000063A24A3818EB262F4E9BA99FDC14FD989E +:10BD1000E157173DB391707908028D64E743519B59 +:10BD20001243BBEBC6785EA98D5A585D790822474D +:10BD3000C8DE78BF853D0FBD21B03EC4C84BFB7443 +:10BD4000FFEED3FDB10F13AF1B535DE310AF67F0F0 +:10BD500042AA7F1E5C918A4F2DF0FC511BE1F92312 +:10BD60006E8AC8E48778B9006D945F0857941B5FAA +:10BD70006263FE0975F1F31B3B53E53413CE765A2B +:10BD80009F5AF7FA9C0B59BC4ECBBC5E4C5F91AAF4 +:10BD9000429E3BF709E97EB961E409DD2F7553C086 +:10BDA000EA5E2DD51D9433146B2983FC044EE97E85 +:10BDB00019F21438E6BB3F1AE3DB7A7F6DCCB7612A +:10BDC000E050DF1651B81F8647167650BD6B5827D6 +:10BDD00085A87FD8ECE2F7E5C6FFD9B9CD87D08D2D +:10BDE0008B03873AF1FDEFEB2345E43FBC4FCC904A +:10BDF000C9E797ED796E15EEFFA8CBE4A5FC026AC2 +:10BE00004711E5CB1F2C7EBECE4771DB69F2D2FD18 +:10BE100061B25A0A513E0D623F0DECB945A37E2531 +:10BE2000D8FB9FFC3E417CC1D11F15BE467CC1FEA4 +:10BE30005C74617ED88E257F01E2B0BD17FB0014D3 +:10BE4000BF7DE3C766CA9FD8A7CBF43EBD4F1F2E68 +:10BE50002C60F7F061D9B3C89575E73EBDF953DEA4 +:10BE6000171ACF9B315E09D7E6A8C0EEA789BE702E +:10BE700091407D61BCEFF4A08BE50BE72A0A9F2A75 +:10BE800017AF8FDD0319BCBFE811B47CE2AB70843F +:10BE9000C547B389FBAF19F316F1005E4727ADC55F +:10BEA0003C79F995232467F215C16B61E1A45EA189 +:10BEB0003E772FA7024CEE8EDCA4FE7AA6CBCAFA00 +:10BEC000CF7DE89FA791E77BF5FA46F3C3D8FF84BF +:10BED000A185DD835AE0081BF7E2CF577D73F3C2DB +:10BEE000646FAB997861F42BEC39F2A849E77B7A5F +:10BEF0007E69D2F9DD94C6EF74BE6E76A5F2357C0C +:10BF000039F338FB4E302C2916EAA307FEFB9FEECF +:10BF1000225CB0AF66B8E87D09E2C5FC1F1FCDD238 +:10BF200008D78F745E8ED3BD0F0109574B0C277154 +:10BF30001D1F4BFB4FE793BFE37DB7730398975FDC +:10BF4000ED3FBD92F8820631FC0FBC8CEB92F46A97 +:10BF50008AD828097C3147BD78FD784F6278A35E86 +:10BF600045E60509BD7AE431BB779E78128401E687 +:10BF70004751184CE9F783AF4B7E2D29CED09E5DFB +:10BF800094EF1ED3E305E4A91CAA937FE2F230FDEF +:10BF9000C251EE77B18F8F78FE23FCFB89899D3FDC +:10BFA000E7FDFA5023BD9FC9B301C5237C1AAAA39C +:10BFB000F9A17C098EE1FCD0E58662483A1F047E37 +:10BFC0001F0E9AA672D87D735464FA0547A7730AA8 +:10BFD000B328EF756CA47AF7A09E37CEE5DBF61395 +:10BFE000BF4374EE22BC6F917DB8FFB77A3D0EAEB1 +:10BFF000E3FB5B747E755FAEB59593BFFA16AE92A8 +:10C0000028FFEA7DE1775DFEEFB81626EE2D77EA90 +:10C010003B93EE4D0C9F20DA497175EAAA45AB13AC +:10C02000E89E7BFBBD6F92BDC3D88FA0FC709F259F +:10C03000E4207F5DCFD0A81F8040E02B14DF87FA7B +:10C04000F715535D04A185F9E3B9DE27E2FF80FB14 +:10C050009AAED928B34353DFBB39ACFEF6AC7E9E13 +:10C06000FA19EC5F1EA47EE654D4C4FA19DFA52A9F +:10C07000C6B75317ABDC0574E102AF8DE4360DCBC8 +:10C080007EC2A369B8EAAD3AEA432EAD67FD8C7073 +:10C09000A9CA4DF9A892EEB7D4CF0C17B2B961CFA7 +:10C0A0007117C72B7E26837D6710209FF3050A53E7 +:10C0B000F8D2D8FD26ABFB8DBD929ACC1B63DF3F37 +:10C0C000BB6486CB4F892F38862382CAF870928F43 +:10C0D0008DBDA772C88E03A608F36FB8D3C4DF77EF +:10C0E000F111A08DE911C23691FCF9163D423FD401 +:10C0F0009AB565802A5ED0FBFC0BD70277533EBC15 +:10C10000F040A098C602776A5E0CC17AA637083B59 +:10C1100098DF27BA799F95EEC73C37BFD7DBDDB0F4 +:10C12000CB3FCF7BA79BF3A3D6CCBFFF507FB604FA +:10C13000F3DBDB7AFDDE8A798CBE3BBEAFC7CB3B3F +:10C14000E037E15D0F477EDF8CACE0797327E6CD09 +:10C1500030AEDFF99089F51750CDFB6F3FFEA3FCA1 +:10C1600055DC2EA7E4AD87BFB857784CE4D79D5B6C +:10C1700052F3DAC37A7FF4F01FE88F7E65E4B522CC +:10C1800028E2FD7A968DBE337E32645224D68F68C3 +:10C190008514DF77EA8FCE613EF3603E1BC27C469A +:10C1A00023D6A96BF3D5A9F4FD469D0A97FC9A7D89 +:10C1B000FFB970E6DA2F9C2C7F66403E11F273D4F3 +:10C1C00006716C52745DD3F6876107F35F0B7C3D9B +:10C1D000857F861F27A82F2F9BEBC78FF53AD64C5C +:10C1E000F737F4C35FAE68F3D37843E4F9CB6A3D25 +:10C1F0008C0D1FC663743B509C874B787F36F1359E +:10C2000041A33C8F7AE65A92F2FCC412DE671D7A93 +:10C210004460DF65CF94FC9AD5F5A6D88899F25092 +:10C220005177FDF7294E917057E85EB355AF7BDB30 +:10C23000ACBCCE6D35EE7186BD3A6FC2E00AF17CC2 +:10C24000BC808DB49EEAE056BDEE6DAB4EF5773105 +:10C250008C6C5A8A7A7C431558FFB45D35CDCB97E8 +:10C260001D8FAE7A93D2F697E5CB0AB7DFED5E4825 +:10C27000F7A8E947E8BB6AB3CE736FB1A7778CBE66 +:10C28000CFBEA5AC6A25BC6CF60A0579BBCCCD79CE +:10C29000FE73476029ED0BDA7235AAAF71EDE65EE9 +:10C2A000FADE98873D08BD37E2C9BB082ABF9D95D5 +:10C2B000EC27EE1F63DDBFB81436BF60D296513E47 +:10C2C0008032F7BCF7C0F4BC1B2E395F417EB870DA +:10C2D00066B8C29CE4AFF18381625637FACEE67845 +:10C2E000B292F924EA7C92D928083BF47A98CAAF32 +:10C2F00071E217F9F7E4D9ADDF245E74EF5C2078C2 +:10C3000092EA65CF3BF6E5497227A2125B8FF7A34D +:10C31000A287B393F5FC3ED37322C2E5A1D343ECCD +:10C320005EF4DAAA35C738FC2191E685BB7FC6EEFC +:10C33000F1D0CAD61B3CCD3085D4A5688FA5173B5C +:10C34000C6FC84DD11333039A17E8BF612EBFB8104 +:10C35000F56BF10F14D6EFA2878078F89ACEB37AF6 +:10C36000DD5F6BB1C9253EAE838844F1B0166478B9 +:10C370009CE63206328EF78226517E5D2BC7CE08B0 +:10C3800015EC7948461EDE0763ECF9FDF46908F701 +:10C390003D001E99E61B20D44A85EA9E48EC414A9E +:10C3A0002FB11CD9790BF94629663EBF257091E162 +:10C3B00096C13F5C8C4D0CFBEE6DE8BD46E07AAF5C +:10C3C00055C14AF9F3989ED7BD366EE7D404B0EF55 +:10C3D0005E865EF7C8B04542FDEF93C19A89EB4F88 +:10C3E0000E8A2C5EFBC73C1AE537AF5BDFF71FB840 +:10C3F0002F8FB524F0B82F61670DEEA3EF6D6B653D +:10C40000BC11337C62F3DAFB17EE3CFDFBC5D49F15 +:10C4100092BC0D510BEB5F446B48A27EB4D5ED612D +:10C42000EFE9EF22769453D326C055FA3B4701B784 +:10C43000CF905F8329C8E1A3F5DC2EFA647CD5C5D3 +:10C44000FF5E62677FE7DAA8103E422C479CB57D0D +:10C45000791CE339C0F4B6EF999AFC5E55E2EF46D9 +:10C46000DEE8F9AB02C6A7A0AAAC1E79AD5931EA45 +:10C4700093D1EBE3C9FDF38FDDBB7FE446DE091EFC +:10C4800085E10301F0507E5F042F28543F445A8712 +:10C49000585ECFB457D0DF95C85D1FA2BFBEA1F3D1 +:10C4A000EC7A26CF032F6B3B3CC4EB471758BD8477 +:10C4B000BFCF9A5B49FCDDEA08FC88F2C575A17321 +:10C4C0003913266BABFDD9095EDB40AD26BC6F6727 +:10C4D00070F9D82D30BE3E6DE5F33FCFB49FA0D1AB +:10C4E00086E9DA8AFA1DC738B0D277D20C7E2EC51B +:10C4F00028F139A47F1F0DDDC8D6E813FC6DD1CF1C +:10C500004889D1E511513E1CDEE0A1EFCBCF3AAD19 +:10C510005E8A3B0BD9674BD8679C6FD8997E3ED912 +:10C520007DAF61B79838DFB07FEEF921D34A8EC373 +:10C5300053B41E7118209C11873F638782B69C708C +:10C5400030EC47C7B0BF5B293AAE060E0AF98DEA58 +:10C55000888A7E33FC8EB81ECFE43818F6E335CDDA +:10C56000CAE478D07FE573ED33F8F3BF4CBF0CD04D +:10C57000801E0000000000001F8B0800000000006B +:10C58000000BDB24C0C0F0A31E815F71A1F2D1714A +:10C590002A272A7F39377EF584B00C03823D8D83AC +:10C5A00081A18619822DA0F8211303C319289ECFDB +:10C5B0000CC15B59107AC4D81918E480580D88F55D +:10C5C000D8F1DB25C58A29A6AFC0C0704319C19731 +:10C5D0009766604803E203D294F96B140F0D1C6D4B +:10C5E0008ACA9FA187CADF6300CC13486A66EA91B2 +:10C5F000667EBC19034302100300B26579B068037C +:10C6000000000000000000001F8B08000000000078 +:10C61000000BCD7D0D7C54D595F87D336FDEBC9934 +:10C62000CC4C5EC2040618E2CB0790DA80430C18AB +:10C630002DDA0704C415DD11A946D7EA242020F21B +:10C6400011D46AB4FACF837C020162891A91DA01AB +:10C65000B48D0ADBE8E2475BDC0EA21657B7BF7465 +:10C66000D75DB55537800205A5D1AAD8FEB5EE39FC +:10C67000E7DE97796F9800B6BBBFFF3FFEDACB7D50 +:10C68000F7EBDC73CE3DE7DC73CFBDE3555D2C7C6F +:10C6900016635FE1DFB719BBD1C5182B48A78CC95A +:10C6A0007ABF8A2933BF2A71E4D957EE33C97F3163 +:10C6B000DE993745BF7731369CB1EF8932F8333098 +:10C6C0005F2D32163C56CA620A4B95A5FBA9663C03 +:10C6D000AFBB24F695845F9DE5D638277CA1892CD5 +:10C6E00097B10695A777F843DB303DE12B4CB210AC +:10C6F000639294286593A1F674685209E9BBC164FA +:10C7000013F5577F4E7C0263F0EF9ADE401678D81F +:10C710006A86ED9A1B7B37BDE7497F97A3CCC0FAA9 +:10C720002CC0649CCF1A293D3D29CC981A8E9DBB04 +:10C73000167215002FC237C915AFE0F830583CC843 +:10C74000D8794CA77EF7E4CD8AD4023C1F57293113 +:10C750002F7CBA25EFC78C1533D636E6502451CE40 +:10C76000985F4E320DC6F1978AF1D83D8C4D61EC41 +:10C7700053C4A79E86671A73D13869B89D787A1D0D +:10C78000FF01E3B536AA9D32CC63C3187DE3548024 +:10C79000D3FC5777EC51AAD55FC3C238EE70D75A95 +:10C7A000984B53632A550AF5DA1B19D56FF2D4BF9B +:10C7B00089709AAF78628FC2B87BC68CCBED2F4F51 +:10C7C0008F37458CDF3AD25F932CC7FE6209ECEFBE +:10C7D0008ECADE6F627FEED09B861BF227F63FF992 +:10C7E0002D24DB14240AD46F2B32990BE1F80613A5 +:10C7F00070C03890F746B58AB53AE657D27C2DFE20 +:10C80000F144810ED6BCE07FD5236586E378A22C67 +:10C81000E92D82B42C693018DF5BCAE9AC8659D2A5 +:10C820002822BC07464E417289BFBE4BA85F8FC607 +:10C83000F118A84CCC6113814F420DE3715E161FB5 +:10C840006AF0DF57400FE54F6E1A870559F251988D +:10C850008F5A06E56A1A0E37EBF8C80DED3D76BC27 +:10C86000C3B8EEB72FF93D4ED59DF15DF9727E1C30 +:10C87000E16B8BDEE25F85BCE3BE2E3701C0295140 +:10C88000D77E2FD45712A1CEEA6169FC06DF9E96AF +:10C890007AD136DEDD2C183E94C39091CEA375205C +:10C8A000DA67F2AF959E6834522F7A68DE2EFB7AF3 +:10C8B0001CAA7E532363A9F1E97C7391110154B042 +:10C8C0000EF352433E1FF21E2322C560D8472E3678 +:10C8D0006643DE3DBE2F1203BCADCF834E2F60EC0E +:10C8E00001F3E69409F0B89B92F47D2D8E3DCAF6D3 +:10C8F0007D469CBEB7F860DD959F3CFE1B8031E411 +:10C90000D7B5527D0D73A7E506810DF452B597FF9B +:10C9100024019EDAA4D8E7FDC8972343C49750DECC +:10C920002EE7533A5BA9C0CAAA8C74F609B243AE8B +:10C9300059AEA0B45AC9C77925BBEB90FF4606880B +:10C94000FF9AF3945408FADB3056D9EA2E4AC3F31F +:10C950000A93885F9B3D5C4E6CF038E5C573A27C02 +:10C96000177000C98B209F17D33645AE9890A51F2E +:10C9700081A7DDACD6447CBC8293C2F500C5283FBC +:10C98000CCB14AF251E45BA333327782A3DCCCB35F +:10C99000976BF746E606510C42FF801F5F8498D1E3 +:10C9A0005E9FC3918272C4C348F837C877256FE190 +:10C9B000BE14AE2F8D39F0D3927B7D6F1D437995D8 +:10C9C0007805E761C92B2562B204AD6BA73C1F8ACD +:10C9D0007F32E5B85AEA5C2F2C622B2FC6FF8F6A94 +:10C9E000C4CF2C437F98D3683C8FB56ED9F71CE336 +:10C9F000375FC806DC40AFF563147D35E0CE53A940 +:10CA0000A4A489BC6C600A4A41F843B9106DEDC317 +:10CA1000EF4A2064E684B03FB15EED70B0D3AFA3BF +:10CA2000065C87B6FA1FE23AFC667A1D7ECA9692C9 +:10CA3000FC669DB3699D79059C4A9562E2780AEB94 +:10CA4000E8C374703D9E55F1793FD0F3D33216A3FD +:10CA50007A9AB2DF8DEB3FD24BF8B6C66DC3F5E8DC +:10CA600005F024E3CF481759E1F2989DAD10DF831C +:10CA7000DC74F0D9EB421E776351810D9FAC93714A +:10CA8000BAC622A8F7DA1B1BD8418023E7856B982A +:10CA90000E74F6E809C38071659449E7237F54F268 +:10CAA00014C42CCA2B79B8B60DE5B927AAD6EA88E2 +:10CAB000BFA876854EF85E45FD7ACACFBE11D72550 +:10CAC000E0FB239C87CC4C4302FCCB658CF02E6BA7 +:10CAD0007186F805FE1A2E211CAA93FF2C7E631A7C +:10CAE000206524E5F5F8842CFC65CD47D41B920F16 +:10CAF0004F9A7752C1FE6C79C6F366069E4C07DFEB +:10CB0000794A4DCE2FA52C4969A57CA8DFCE37A246 +:10CB10005D13FED3064FEB18B1FEF00F4095C3B185 +:10CB2000ED6B8B504FCE8ACC87EF1748DC3E60739D +:10CB30009C78B0DA039E2E900A106FD6FAE3F8695B +:10CB40001D392E97F2817CA24FE6BC5B417FCB63FF +:10CB50006D798F054792E6DD348A2587013DD81728 +:10CB6000E79691FC18A29F4C3C368D89BD9940797F +:10CB70005BA090BC744BCCA213BB12FA9987F34113 +:10CB8000FE0C737E5781DEB81E601EF388DE73B222 +:10CB9000D3BB2968CD279C158E669C8F270DFFE09F +:10CBA000772187876A9709FF50E5CD638C08DA1DE6 +:10CBB0006630735E9C6E1E8DD3AD5ECCCF1380F954 +:10CBC000219F87395D607EF5D9E71727FECA9C9FB4 +:10CBD000ACA9841F6B7C597D39250F4BC3798FA479 +:10CBE000F17106E188513F6E8D51BB5A29710FF2E8 +:10CBF000853BDC4AF2C41D30080E2502E5E7606A79 +:10CC0000D49880D7E63DE7B3726C1788B1A513506E +:10CC1000FE25D81CA8D7FCA59BF343B8D2C1AF0D05 +:10CC200092CB815F0B9EE5421E64E2ED0F43F0F76D +:10CC30001F9EBF98F8FBFED3F3F7FDD9F8FB0FCF8B +:10CC40008FE7F87AAE20EBFA5EAEEE75E08B09FB6B +:10CC5000C02FFA5F1F619D6EB0FFFD952ED30BF8BC +:10CC600019332FD55DAB33B68EF179BC5A90781459 +:10CC7000C7F5B8FA140FC0AB97F5CF02F18A760A60 +:10CC8000CD67A6FB03F500A41BAA8A73EB80BF5EE9 +:10CC900095A4ACFCB319E432F26577A34AE989772D +:10CCA00038DC43F1D9438DCCB12E1F5A2CCF467BB3 +:10CCB000F9A1A5DBEE9D05F86B09975690FAAB92AA +:10CCC000685FE143BC03DCCFE3F8367D0C787B9EE4 +:10CCD000E017FCB7F9A6AB48AE860DC3C0FDC2187D +:10CCE000B10FC96D60B194C0896CC38F8517C0C383 +:10CCF000CBD8CF32AD6F0F8EBB7C2A5BEDB2E1613A +:10CD000043958BE87ACB85E3B6E19AB0E0565D5C5B +:10CD1000BFB0F27CCE9F32E893E0D0EB6E0DE0A97D +:10CD20007C2CE63509F9384FC851D46BE5B8CF9063 +:10CD3000E2FF8970E4550F28388FE396DDC2226444 +:10CD4000A7370BB8D78CF3133CCD05DA5684E780B0 +:10CD5000E057969086E2AF03D9F82BAFD448216A0A +:10CD60000FCB8943B48EF45E0D5566404A18A8FB7C +:10CD70005AC47E10C0EFC37EB5C1FD1DE7735F448A +:10CD8000273DF899A08B166B5DE90279E02F970992 +:10CD9000AF5A7F2DED271461FFC377B2EBF30C93ED +:10CDA0004940CFB3226C15E2F99FE5C46728377C70 +:10CDB000936E4B219DFDCC48E13E66A3C7601AEA05 +:10CDC000E1A909231E40FA4E61B536BEF20AFC8382 +:10CDD0003C309281347DD7BA39BFACAFDCA62E0A85 +:10CDE000603D3FC157C82A0DEC6F0CB203AE53E44F +:10CDF0000B9DE8AFB80A90FFFB5EC63EC668FD0A11 +:10CE0000C2077C3F02F1B5D13310417EDA789352EC +:10CE100093E4F8789DEC7097C0850EFF4DC1717852 +:10CE2000B64FE2F6AF078D48102DA1004BEAB80FC0 +:10CE30005AC0F3B911D88FE1FE49E0CBC28F2AF076 +:10CE4000A5456326A23A4F4FA6C671FC8C42F87CDA +:10CE5000AC3E85F49603A6E906F81E92EBFFEB1EA6 +:10CE600098C743FBDC3153B7F1A1B06B2C3C45971D +:10CE7000C27ACBA2A7ADFAA7B71B0C19FBAB5673AE +:10CE800048DEEF15F203F8B51CE1AAD63E227E6516 +:10CE9000816167D49FBBC1ADBF87724BD6C83E547A +:10CEA000C43EBE2932371737A76E95992EC0931B03 +:10CEB000F0848870774A065F0731362F8876B4CBC6 +:10CEC00061AFCA61BF731FDAA0F0FE6BA0B5C3EFFC +:10CED00092A475E41E64E204E7031813FD1490A6FF +:10CEE0007C680F887D2AD280FB81BEEFD87FAF2976 +:10CEF000AD60D9EC639971FB1E97C3574527B71BEB +:10CF00001A2F19E3CD73C27DC6ED02B27EC86A53F3 +:10CF10007CAA76323B64DB97CC1FF47F71FAB4793C +:10CF2000D87312E8CFA668AB895FDB04BD5B3145DF +:10CF3000FEAA7639E48C5BECD727B974DE4F84DB2C +:10CF4000511E368BD6B3953F1D5F5876B1A5C76D80 +:10CF5000FABE13F94E15FA778214FFBE0BD6D79A94 +:10CF6000BCC5293B7E9A14B698F8449F47F5D68CE9 +:10CF70009DA5A3BCB0F86C4D063E2DBF566B6392C9 +:10CF80001D44B9AC733B5A89C4080E4F3841692619 +:10CF90005C16FF0E8E5B6AF16D27F9A97C9DF71A6E +:10CFA000C8BFF04DF87338DF2A205C913FBA20E506 +:10CFB000FC911476E210FCAB9F995D9FE57B2EEE11 +:10CFC0000717BFE6666887CC8FFCBEABF45CC6EA89 +:10CFD0001A46DE87E9A286495D32A4073A4A4276BC +:10CFE0003D7DA0FD46CA1FDA3296D2035B6EBD01BD +:10CFF000E5D5916EAF4EB6E0175F7DE506BAA35852 +:10D0000043BAEE79D04B7AE0D00F25F23B2D6A97E8 +:10D01000CC1CDCD7E5E98528AF0FAD5954C8B2D890 +:10D0200001756F83C2CAC5F2A24296651D2D6A6F53 +:10D030005B89FBD445498F61D8F7CB96FD9D573F5F +:10D040001E17714B63D966F4475A76EA4BC87F9333 +:10D0500069BFCBFD846A8CFC06D3DEBD24D20FF9F8 +:10D06000875C8917916F9AF75F1CC171F7A2DF1176 +:10D07000F5FA3BDE18DA3D7728F5E3351B3C77847B +:10D080009404F9F1025D0E3AFCD2E5C96A1F9A8F49 +:10D09000B232398CF2C51F5B05F8A80E703DF371F2 +:10D0A000BF44FD37093ECB9CAFA7E15CA2C7601E21 +:10D0B000EC54BD9CE414CDC35DC653ABFC77A8CF44 +:10D0C00060BC775D6E4A7FE64ABC8B7218E55A43B6 +:10D0D0003ECACDCA2E6E170634DA9733A73F61D504 +:10D0E000851CCE36C91F437F41DB04A1E7593DDFD4 +:10D0F00077CAF50CF74316BCD5D1FA9454999EC75C +:10D1000050FCB8AEF1F34D68D7813DD385E9BA60E4 +:10D110003F391B57CB31D2DFD0BF7A05F4BB5AE57C +:10D12000F9964695EAB5456F53EB60BEAB35FEBD4B +:10D130004DBF85E7752B2FCA0D910F4339F66BF262 +:10D14000FC9A468DF713BE8D7F679378BD88A8C77C +:10D150002A44DE2AAF9C1D87FEDA4AADF22ACAA312 +:10D160002308E584A51FDA4A79FD8EC64817DAB58B +:10D17000AB03B1D946B9607E7BBD32DE4FA8610AF0 +:10D18000E13D5DCFC8A8C7FBB3F095AE673AEBC5EC +:10D190006E19A21E939CF586EA8FB91CF52A393EBA +:10D1A00033EBB555DEE6F86EA5C04F656E1B7F7B91 +:10D1B000919FCE253D301BE5ABDB64EA5D15C026B3 +:10D1C000E5ACB918D6F16437DF173458FC1A65722C +:10D1D0001594BB4B997C517EBA1FB05954FA5EC668 +:10D1E00054C7772DD38F909D6FCD0739DFCAB8BE56 +:10D1F00024B43BC0BE3F03BE043941F46B6BEC2743 +:10D20000FEF430E77AB2D28BDDC29ECF181FE6CB98 +:10D21000EECAA7F971FFF7DB3EF27FBBC330CF7CCC +:10D220003EDF8B2A6CF389C03CF3F97C1DDFA3CE73 +:10D23000790EEA8F0CB970AB9BCB317764AE4A7232 +:10D2400020C0F59025C79AF79F1741B9BA3738859E +:10D25000FC1096FC1A6AFE6B1A8F7495E27A6CECDD +:10D26000A7D42FE44453AC42C5FE5A02A097707D68 +:10D27000CA06AD57B9B47E11CA7DF7DB3E322ED453 +:10D2800072612F978222D3D3F6B6AC75B24536FEC3 +:10D29000F15972F78B46E2E7B501BE547C0DC7BB6E +:10D2A0004A879D0C973FF201E9A53B422C918D1EC8 +:10D2B000356E45C8B7F89D6E489586F253CA35F36A +:10D2C0005EE08F4ABBFCE5F4FA18E8E5457A054CC8 +:10D2D0006F56BBADE1D826E4EF07B0AF02C4F3F957 +:10D2E000113CFF68DA7FC7226CDFF40EC7C399E2F6 +:10D2F000DBD3309AF42CD809940ED23F1C23FCBA0D +:10D3000035C06725C1161BAB73FB621197F7ECEEB6 +:10D310000A6C5FC8DB27A2F721DE86C24FCB207ED6 +:10D320008C2DEE2C7C3B88979DEC4D3FEAA5B7BD3C +:10D330001AAE9BBDEF9C47E3DFB29FAF1BC013E16A +:10D34000ED63C01BEA7154B90D36BE5DD738D08588 +:10D35000E7604D8DEA7DC83F4181AF9C403DCDC720 +:10D360005B09FA01D74580CF27A0F519687F7803BC +:10D37000EC3C8462B05C837286FCF839F5D7D2A8A5 +:10D38000F1FE2A0D86FB345F18FA2BB7D517F8F19A +:10D3900047FAE8DCCC1BCEE82FC2CB839509C29FAD +:10D3A0001C00F86CEB0BF4FD0BC4376118C7664723 +:10D3B000A89128E177287CBDB87F7C6E7F167C5BC6 +:10D3C000E946D473787ED8A8935CE9407D87F9223A +:10D3D000A306F54CABD06BEDA897E0FB5AA13FBE7E +:10D3E000C4C314A493CCF78B1D8CAF0F448C0AF9E3 +:10D3F000F5425E777A38DFCA9572721B9E93815E22 +:10D40000C6F38A0E997FEFD0F564137CEFF4897A26 +:10D41000A58CEA59FA4BF6F17EFDAC97DA59707794 +:10D42000682F90BCEFCC33481F76B07DEA2D982F43 +:10D4300012793945794D813CA4014F4AA3BC9FE73D +:10D4400033FBCFC44B20EF050DFBD7F2457B691FA3 +:10D450006F5FECECAF53E1E3AD97FBF8F87E43D898 +:10D4600007A7EE7FBDF66F1CFE7CD19EBDC9DB1702 +:10D470003BFB1B8A6EC118D0C9C607DE08D0C9A104 +:10D48000779224777DBAE6F89E531671B4DBFBCE13 +:10D49000F811F673DF17FB4B4EC92F87904F6CF2D4 +:10D4A000FD902F713DCB63ECAA66FFF4E6A990F7DF +:10D4B000240A25C86FFFC139AB678F01BBBDE1F7F7 +:10D4C0009B50CE2D14726451C31F69BD2DEC98AFD3 +:10D4D000E830CEC2A444F277A1901375268BA27EC9 +:10D4E0009A21733F87A587C136203D5C1776EAA74E +:10D4F0003A8DEBA7BA88533FD56DF11CEA77D8DB9C +:10D5000060C70771FC635D7639B6A8E35682631184 +:10D510008E538EE5C7BBF87A4A14D640FDC948C081 +:10D5200002B4EFC717A2BC3D20E90F37A0BFFC260D +:10D530003F9DD364E2C73A377908F7A193D3FA63E2 +:10D5400061C6F97E66BA50E80F262708CEAF3B5E6B +:10D55000A5CCC75B68E92D986FCD84F4F807C21C91 +:10D5600017E391F808970CF8C8720E3388BF44D4BB +:10D5700021EFBF2EDE268A7126CB5C0F9D697BAB27 +:10D58000FC168177DBB9CE37102F7F2D3FDD95E676 +:10D59000276EF72CF693DDF3B7F31597B35F97CEAD +:10D5A0000FB934213F615E136C74CBA097D5EEBBED +:10D5B000884FB44B65DDB15FB3E89489A7038BFD59 +:10D5C0002EF4971FD83793F6F39B15FD7A942B37DB +:10D5D00021FECE453C72BC1D023DD86C5BCF0B3B9F +:10D5E0006E7DB90AF8ADAE3D2F5FB28D5FD75ED4C8 +:10D5F0001A0198166EC9AB4093EEA6768EE745DD0C +:10D60000BEFB9A6DF205F05D8AF67452D0FF247C61 +:10D61000970A7C973BEDE9BA326E4FD7C532F09D41 +:10D62000CC8EEF3AC13730CFE61FD03C67E4FA0228 +:10D63000693CCD8F8C247B6373480FA1BC3E047A78 +:10D640000DE77940D8FD07BBCF0DD5E2FA92211F37 +:10D65000C0FC649E57457E0B9463FF01517FCBE471 +:10D66000506D16799C498FF9116EE70CDA2BD36354 +:10D670004792149FE48D3541559F9CF8850CF557D2 +:10D68000852E584CF134B0C0D19EDB1C9AFA6B5DEC +:10D69000C776D9F5B8D5BF562D1FB0E3C357067965 +:10D6A0001BFEBDBA332F335BFD221BBFE24853EC98 +:10D6B000E7F049C13F8C7D309C1F0F231F7BFAF39D +:10D6C000E6A33F77DAE555B5647F065CBAB76868CC +:10D6D000FE46461CD42F04BFDA29DBFC734D81E2E1 +:10D6E000539EA73437F6DF6FD72F32D8F118572261 +:10D6F0000B7ACB0D87EEC7F5FF22F4B39FF4F86ADF +:10D70000EBFC5B9CFB261DF470374CA4FD9E356F33 +:10D71000AF750ECEE2BAFD7CA3D597781355765E31 +:10D72000E8F6D5978CB49DAF46BB447DB041F03C44 +:10D730006742F5A36BB3CC9F4E34D0FF955A457E1C +:10D740007937E371503E8DFBE515C0691FED4BEA5B +:10D7500055B40B7DA5DC2FE7F6E8821E71F2AFFA17 +:10D7600084FC682B7D41C3757B628CB31D43A3D0C1 +:10D77000568FF5D7CF2E86717226C9E4F7655171A1 +:10D78000CE2EC74F797E2347F879AE1C69EFE32987 +:10D790003FCFB09DEF6A1E846B9E38B71AE41371B9 +:10D7A0009E1F3DC373FA33ACF783C624C5E3C11F84 +:10D7B000D9EF7780FD8EE7315D8D3D9BDE1B8B229F +:10D7C000B15E42FB4F9E1D4B216FDEE64A94227CE8 +:10D7D000C3902F2B310E4D22BF9E7479C378B45F56 +:10D7E000F247E893F0C875B5C252F108E473F42724 +:10D7F0003122E37A65E28C00D0331F370BA318ABDC +:10D800006899DA84F13AF925FA2417456C54CD78F1 +:10D810000DEB8FD63FC2F6AD6AE50C8C87CA1FCFE1 +:10D8200028BE0756C20C03EB7F93E76F6DE5ED2D25 +:10D830003B05F6A5F7E33C5A1B8F507ABE87EFC332 +:10D84000BF857406FEC8917BC9AF9A037CFC1EF0AD +:10D85000A5222728AF341CA73CEC030CBBBFE3D5A3 +:10D86000828481F35C16EF9F855DB803CC85EB67FE +:10D87000AD27D95D57993EDF9E090588878F4D7D7D +:10D880009BD776AEB7CC2339D6437B233FDFB4F2A8 +:10D89000AA7AF983386E722CEB453EF079593DF245 +:10D8A0007D73636C33E21D70C6E321853C98EBE128 +:10D8B000E773935CF1B908972AC753F7C07A68F702 +:10D8C00098B917E179FB2B6EB25364E4E7123E0777 +:10D8D0003CC7A2F33EE0AB451EB16FD04C6D3AC0E1 +:10D8E000DBA2E54F22BE35AB360FCA8D62EAAF1B15 +:10D8F000E995F0F44EF700FFB40739BDEA5AFE6926 +:10D9000035E27B914713EB3EAE223F7A806647F2C9 +:10D91000499EA5BC1427C6BA4B2D39E6C2380FD78D +:10D920007E4FE8F4E7B97238FEA0DD5E56CA3B6967 +:10D930001FE793B9FC6147FE9DD9E372EE15F868C5 +:10D940006EDCE78827F5845DFBF1DCD093786D13FE +:10D95000E2779C94B88BD613D815CC26773DE14E50 +:10D9600092033A9B979BC273EBB72FDE87FEE21FB1 +:10D97000370EDC4FF8EF9C43F680AED91620C62157 +:10D98000097A78B7F0731E2FC63F616ACA9FD9E53E +:10D990007F667CD31A4FF638C3928612E2030B7E61 +:10D9A0005747CC85EBC88A6BDA24E494555ED230B5 +:10D9B0008EEA6F6FD41FC4790FC22BF63DBA808FE9 +:10D9C000755E4AF26AB49057D6FC60DFBEBA03F8BF +:10D9D00065ABC665F2D6A5FC5C5A1F03025C4AAF74 +:10D9E00027AF06F3B3C55564CEEF9141FC6B0FE052 +:10D9F000F88F2262291F7900E1D281017E8EFCD04E +:10DA00003D87E018C4A398B7BCBE97EFFBCBF938AD +:10DA100099FDB32DA7C67F4B87C1F7F902CE33A579 +:10DA2000C3CF87A0036B80BF2962E920FEBE80D2EE +:10DA300029697D6CE1C1A28B95877D9C237E37335C +:10DA40006D6DD41F40BDFA4863D903B8FE5B2373E4 +:10DA500055115F92A4F854C1AF6DD1BA948AEB12FC +:10DA6000E41082E58DF2726F989F8B3DD2794B4A1C +:10DA7000453D18857280A7B49397978AF6A51D89AE +:10DA8000F622685FBA80C510E6911AE4D1FEBB9B0E +:10DA9000FB4B18BA64007F3F12C81C1D9937FB1B53 +:10DAA000986A89CE69E847BA8DFB41C676F17EC790 +:10DAB0008A71C776D4EFC37EC636F37EAD7E7E28EC +:10DAC000F0323ABA3A350DD222ADBE8FFA59E01C87 +:10DAD000EF21514FD50CFF37109E523E8E55FEA0C0 +:10DAE00080C787E5D8BEDA597EAF685FDCF909BB2D +:10DAF00004FE59ACC5FF8EEA953BC7D928EAE5601C +:10DB0000398E53E92CB7FC22255DBB0CECA704FD34 +:10DB10008F68D7A897D27AB2EAAD13F55A1BAB1E1D +:10DB20007C8FFC2F06ADB3AD8D314AAD75D72CE29D +:10DB30002A8A74EEC71C17D1A6A33F3C4FE17A276F +:10DB400033C5F58047981E0404E02B8EF2F586530A +:10DB5000BD1BBE7BDB853CC95C078CE70BE18FDB23 +:10DB6000759D12CA5D8BEF2C3FC28BFBCF73F021EA +:10DB7000BB1BF8CE1E177A5B9933BF34E6CC2FA8B7 +:10DB800072E6AB8D07EC7A814D9DED2CAF8C3BCBD3 +:10DB9000CB6B1CE5161C9D8D7A5735E071BDF01BD3 +:10DBA00077167446705FB0A6809F176D46BF32F936 +:10DBB000B7D87D986E117EC256E1DFEB16FE42901B +:10DBC0002B946E68ECDF540DDF47377CB30BE3BA60 +:10DBD000D7A1FF0FF5BDC0339BCA1C7613D853E7FE +:10DBE0002B209754236E70FEE57654A74FBB16E1A9 +:10DBF000C8AD4C4A2E1BDE2E55F839C4686B5F2821 +:10DC0000F74A76BD73A918C792932C0AD484F15AA7 +:10DC100004FF85AAE206FA1583A5DA245CA77FA78C +:10DC20008878231D2C0C5B1C64B0AA13C337403FBB +:10DC300019972A0588178007FA8BC232F242FBC86F +:10DC4000029DF67B4A84FB2973623CEF2F3370EF11 +:10DC50000CF39F48F31F9970FA2B03E59A23DF9981 +:10DC6000C7E729E3BE1CEA8F12FBFD97DCD3AF4563 +:10DC7000BCAC56F87EB829B87024CAA55FCBC6776D +:10DC8000F9774670EBE83704BE4BCE9E43FADC3B97 +:10DC900087C7DBB1EB4EC2F3426CE78DF2736EDDEA +:10DCA000E4714256FF4C4E8CC47DC21629B114E774 +:10DCB000CBCA22AADDDEB2CE2732E1F9B962ACB01E +:10DCC000C3B3533156DAE1064B6524D2B39099A61B +:10DCD0000B847721C207EB6895A2F3F20C38C13EA2 +:10DCE0003251EFE55F7A1DC961D99A4F4DF6B83AC6 +:10DCF0002B2E2CF3FC7E92CB58AD8878071CBF5D91 +:10DD00004AB4129FBDEDE5F19ABA88BF127195F938 +:10DD1000C3CCC8241B9F3D26F8A8DD8ABB6462FFE4 +:10DD200027E28EE80FED15CCC37ADAAEF038FE911B +:10DD30002A337372D1CE8681510EB6F1F8F5110BEC +:10DD400080B1318EA745D946F737960EA7FD23AC93 +:10DD5000D114C56937B7D279B8E50756D16F51925A +:10DD6000F6EF06581FA5213640A986915A90FEA1CC +:10DD7000B6FF7624D2456A621BCE77A99A380B4348 +:10DD8000C53E1C93F809C2DA837481EFFB64E3118A +:10DD90009CBFAD7E8FA3BE87D70773EE31AC97CB08 +:10DDA0008CC739FEB2C7ABDBE2463F0FD8F884CD53 +:10DDB00076C68D00DF3D8DFDA8C2EE1D8CFB38C3FD +:10DDC0003856F8D34EDD3FE7A393FA17EDEFCD09B0 +:10DDD0002968AF3D90137A19E971609597FC0AEFB5 +:10DDE000BA781C8935DE9E55DE4294CFFD6BC65352 +:10DDF000BCC2DE35DE10B66B6D2809D9FDBEFDED67 +:10DE000025B9D9E21906CB853DF19F0AB7BFDE11CE +:10DE10007C5E2B6B0AEED76BCDA207EC7674ADC996 +:10DE2000FD45C0C0B310BE775BA679ECFB686BFF05 +:10DE30009CD92EEDD7EA1F43FBCEC17B043C8EAFAD +:10DE4000AECA42987EF5EF00D537EDF3F07DB0B065 +:10DE50009B2C7C1E38583B07F9F026119FB680C5D5 +:10DE60004358F8217391BFE743F66FA1736D78FAB9 +:10DE700093C2E382616190FFC484FF509FDCD8E9C4 +:10DE800071F85F16753BF30BD9DCE1B87F5DD8E51F +:10DE90006149C0FF4DCCE68F81F9FE5EE1FB9645FE +:10DEA000ACBE15F77D2DC2CF50A7317918E8DF65DC +:10DEB000CFFE700AC5F978395E8FC27E4DF7A6E1B4 +:10DEC0005A12482AA8DF0FEE3AF7AA6F316C9F6CFE +:10DED0001D85FBC03C96D53F3CBFDD09DFE9E0CFA7 +:10DEE00084D7F2AF0C0587DCC3E99A396EC82B39A9 +:10DEF000E2B04E779F6F0A5E969B3CF47DBED3B531 +:10DF0000BFE06F6C7F915717FEBABFAEFDF4D38CA4 +:10DF1000BF26DC19C7753BB88E55C3E058E6F27CC6 +:10DF20004DE434E55128779FA2BCF4D4ED31DE09ED +:10DF3000EF0BD147DA5CA446235C7B1BF93D94DDF3 +:10DF40009EF8DFA3DCDEFD1F6E86718ABBF3D88BE3 +:10DF50007855C494241DFD0B8676452EEA7FE37523 +:10DF600077D855241615D6FF68F623B88E2FF17A88 +:10DF7000C4B9429F1BFB353ED1AAD14FB2DB931AE5 +:10DF80009D077C32F5FFB004F2F9B44F52F3113F14 +:10DF9000170ED47890457EB563EF3F603F4B066621 +:10DFA000C9989F27FAF9F0F127A730E867F7CE2044 +:10DFB0004BE17A90930AEEB396EC7293BD7CF34FEB +:10DFC0008306F6B3E4A965DBE7C0F8D2B341826704 +:10DFD000EA538B7EEC25F89A080F4B9EB93277A353 +:10DFE00098970AA8D9BD4AF8F5CCD468BCDFB0CC64 +:10DFF000CB6E407BC7C283C5BF3302D364BC97B529 +:10E00000A4278FE2B707F95E86FAE51845CA6E982D +:10E010009B65BF75A797EBD30F3E52E8DEA4D4B340 +:10E02000E77A9A5FEFD5345F8949F2FB30DE7231CF +:10E030004FA847F3301F939263A1FC83C7243EAFE0 +:10E04000DE095B7D4538FE56A58EE41E3FE7B1E054 +:10E050009DD133AD19D7FD0C2DAF18493EE3A73B39 +:10E06000497EAFE871A7701F0629EDC7AA036EE7C6 +:10E070007D28660424E083E5243221DDB58CE4E2CA +:10E08000F2DE75B46F5DF19C531E009E632980FF24 +:10E09000E637DCB13998FFA79F84F05ED1D1BE4747 +:10E0A00043480F18A7568175F0EDCF9D7E69ECFFB0 +:10E0B000F3FC93FB636C80EEEBACE85DC3C7DB75F0 +:10E0C000D9618C135E9121778EE23F469EBC6FDE54 +:10E0D000EACDBC9FF5DA14BA9FD5332CAB9E1DBC9C +:10E0E0009725E4D0CD3B3F7DD884F13F78EAD8C373 +:10E0F000789F62E95FFEF8F0F7719FF6CF3E0DE57D +:10E10000E78AC7DF7FF82EC0EB87CF795DC82FC7BE +:10E110009FFFC98F3743FEF85BE32B24C8FFC2CBB8 +:10E12000EDE8E34FFE69B80EFDDCF6FCCC11888704 +:10E13000DB9E9E31E254FAF238F057D26BD7774922 +:10E140006ED73E07FD8D80EC6E9166D067EFAEBD59 +:10E150008508DF876FF2388D153A8F6758DEBB8CE4 +:10E16000E2AB318FFBB6E53BDAE83ED3C9F8364780 +:10E17000BB227CBD63E8FDF25D57FEFD8595987A74 +:10E18000623AF6C706480F65B65BF13AD0F59CA136 +:10E19000E9F829FB4241BCAFD8B1868FDB0B740C88 +:10E1A0009D4CC70FF11FE79F4CC7DF9E44C7A53F9B +:10E1B000DA8C85BBB2C75D5B745CF6F4774E799FF1 +:10E1C000EF78C63A1E0ACF8BC539C04FBCC6512F57 +:10E1D000AED7A772CC08D1D99B9C0365C75BFE580C +:10E1E000C8803F8E7806AEC7F538F0BC57DB06DF37 +:10E1F0006B9F7F4341B976FCE9DF283A9D37B080B9 +:10E200000476DB7136F8D787763EDDAF413C3E12AF +:10E210004CA1FF62F9DD8B895ECB9357CCD643F4DA +:10E220009DFC1ACB937C1D2C4FEE992765A15FB105 +:10E230009ACFF568B240D8A1697A4A5548C7FDB36C +:10E2400090EF86A2A3356F0DE77D9E8D9EA687D6A3 +:10E25000ED50EBF3F856AF2C61B9B857B9E2EED9EF +:10E26000445F6B1FB12229BD918DDE83E7315FF3DF +:10E27000DE655475F2C3A03F4CCCFB74EBFAF4F3AB +:10E28000FA7A78CBC1C55F7032FE56B578493EBF89 +:10E290003BC94B7158FB3DFA0377C0FA1C78C5C3E4 +:10E2A000B64193EB2B0E7BF42CE72EFF95613FDDFF +:10E2B000D020B58E807637985CBF649E5B25EE7665 +:10E2C00033DD869FE5DE8177313E90FDD2C7285E43 +:10E2D000EF9F7DB4EF5AF1B08FE295F73E7DE2C734 +:10E2E000A8678EFFC8CBB8FEE3F1958B84DFF2F010 +:10E2F000D3271EFEBF507EF851EEECD9FBF41D87EC +:10E30000EE447E7F486268BAFCE1A9DC890CD6FB4A +:10E31000CD5017CFBD17FDF2FB9723BF621ECF690B +:10E3200017E524AE47FDBFE8A11112C6EBACF0F72C +:10E33000FF05E5D2B19FE72205D8874F9F9882F469 +:10E340003AF6CCB313511E825DA9DBFD4737D9DF06 +:10E3500097B0D9FD37F7AEEF43FEBF19CB797DE912 +:10E360002BB176D07EC7F1D15EB9F9B95CC337D194 +:10E37000518FFA59E11DB83D46FB5673948BF60256 +:10E38000A95148E79B7B9CE3D7AA5C2FAF500616A8 +:10E39000F2FA9DA3383FF451BBE5AAE428CF6C6F95 +:10E3A000D55FAA1667F423DAE3B949167EBF53F4A2 +:10E3B0007B73CF97E3B3DD2F3D791CFEFD7B1233DA +:10E3C000F1FC903DE9A37DF55225352EBF9CBEC7DB +:10E3D000D17EB1F2A3C4B898473BEB17627D2EF50E +:10E3E000F3FC33E21EC1D210E4115EB5FF1F916F42 +:10E3F000963DEBA378FA65BF043B0AF0BAEC995F4F +:10E40000517CFBB25FDE41745FE64D11BD079EF4A7 +:10E41000328CC7FAE0C957A8FC034FAA10C75DB6F3 +:10E42000DBB7DF7EDFD14A97F57AC5A57EE77C9A18 +:10E43000F05C8CFC674728758B733ED8F9C7707EFB +:10E44000E413C3FCDB63284E60287BFB176A91D87A +:10E450004F70BBDBB2AF5BF0FC051DADAAC934DB6E +:10E46000F9B5CC789CEA9F33F84EF12434DCA72A26 +:10E47000884FC08B47E67E6B4F243C09F9B9353293 +:10E4800097FC671DE5DA245C9F3F13FCE385FEC91A +:10E490007E7EB18BCE9BD5A8FCB1E33C7E412EE9BC +:10E4A00063566AFB5ECCDFA9C078C840397CB79F51 +:10E4B0002F85016E07BE9CE7FFBF18BC3767BA7196 +:10E4C0003D5F933E88A5FDED5BD67D20B99997E72A +:10E4D00059C5CDBC5CACFF15757C7DEFADCD253C41 +:10E4E0005A78B866775B1FDEEFBE66F7C8F948F763 +:10E4F0006B02E3DF47BCFE42C4ED99795EE2BF7375 +:10E5000076C7AFBC0CF2DF5D3C96E455796FFCD268 +:10E510000990BF6E7109F9037FA772BBE81FB6BAF5 +:10E520004C0FF44FB219EDDA3B25A2E70DE8F2816A +:10E5300086B54C57F8A63C49F5E7B3DE20CFF71671 +:10E54000609CBEADBD3B80ED574A74BE79ED7FBC8B +:10E550003E1371F8DBD70FB4607AC36B4CC981717D +:10E560006B77E9ADDC6D23FADB0DFDB9D2FD0DE271 +:10E570004F56091F69FCA884AFB706CF754C179595 +:10E58000A7F14B71E7167EAF09BE792DE2A5C90749 +:10E590007C780EE6C7BD88F9A1F49B054F267E3F27 +:10E5A000C122D067EFABC69F54287F4D35FEAC9299 +:10E5B0007F6AA0502E267FD55FF0FB7277E2ACE138 +:10E5C00025E4DF1A5F80FCD697DDBE4D8FC7D7D913 +:10E5D0005BCC7CBE9FE467079F8F780FC582FB2DC5 +:10E5E000C6E5FB1FB10AF4F75608E60170BD250722 +:10E5F000DA11CE6B59AF07F9FB3AD647E9F56C80D3 +:10E60000D204D3144CEBF0218812F29F500AF0860A +:10E610007D9311FE7EB2C33FABFDCDBB12D2F3B5ED +:10E6200033BB3F7752AAAA4C1D9EBE9753D7FF51CA +:10E6300023C25707EC83FA10C9C3ED0C5D417F502C +:10E64000DDDBBFFFD25ECE06CBF939CA603F2A7F41 +:10E65000A7C156CFA167A89E94AD1FC83BE259320F +:10E66000F31C8ECCEF752A7F97220B5CCC1C8E7C22 +:10E670006FFDF1F6EF49BD67E3FB2BD5BE64753B3B +:10E68000E89927F2FB46A9909FE57BA419E32A7736 +:10E69000C2F60FCFBF215F6D46316F5C8FFBD0F9A3 +:10E6A000322C155B1CD5653EAE6F2EF371BF3494D2 +:10E6B0009B587E898FFB9DF06D9428E4E7630AF2F6 +:10E6C000E8C08E8A5F9FAD0F4DA7BA8EAFBC7A1699 +:10E6D000FDC40CA687A7F0FB7AE4277E39667ADDB5 +:10E6E000E973FFAFEBDFCD67314AC32C4EA915EFBD +:10E6F00011619D948E62BD9446591FA5856C805210 +:10E700009D692EEECFE0EBAD98C5285FCAE294EE8E +:10E710002CE2F72C0E48FE18EAB1D3F9711A7DC528 +:10E72000821FEB7F3313E3B3FEDD3D89BF5BC4F58E +:10E730004C267EDCEAF6079BEDF7E71E5369DFBF48 +:10E7400073954EF4B1BE37FAB87C6CF471BFDECE6F +:10E7500055FCDD85038FA9B16DD0FBC12053F200BC +:10E760008E83EBDF28C63834ABDE13F95C7F7FBEC7 +:10E77000FFD9B3315E38EE334C1FF94353C4B7169B +:10E780001FCD5703FCFCA0C3F3815DEF8CF6C5DB06 +:10E79000B1FEBE7FF493DD7ACBBD12D9AD4C976844 +:10E7A0009D2D10F47B22BFF728C6B99B1BBC3ACA2B +:10E7B000EB051DDEFDF4EE4AE74CC3DE5FB79807BC +:10E7C000EB7C80CEC5179CE65EE70250C4C87F99FB +:10E7D000FD3036260FFDEDE45B71C803EEEFB5DECC +:10E7E000EFB2BEAB184F85F6410DF7736E6D518ACF +:10E7F000DB813E1B777A493F87C47EEEA73E71CE10 +:10E80000F92EBF679014FEEF63420F3CEEE3E7176B +:10E8100056BD9F8AF502FC9CE9CFFF29E24D356B7E +:10E8200018D727FCBC2EA974D6201E8F3DE6D557DD +:10E83000033F4DD871F5CD287F26F480DD04FCB36D +:10E84000494A46E8BD9F314A0CF138EDECAA8F30B9 +:10E850007F730FF7C74FE8F11A88D77FF5713B66D2 +:10E860005C72E57458D6AC6DE7D651E8CFD7314E1F +:10E870008CFBBB42FC71ABB8E3DD99A3D1E9A7F4F3 +:10E88000CB23B0A62DDE0E579EE99057F919F9510A +:10E8900019F58B1DE5A3317C0BE4C4E8004B052181 +:10E8A000DDB9DA9C46EF8A8122C0F534061527D0FF +:10E8B0007734C8197C7F098F61FC9046218F5B57A4 +:10E8C00028676E519E0BE97657EF6C24FA7E9C3FC9 +:10E8D000E05793075E692EC275DE2ED507ECF3EF85 +:10E8E00025FF9235FF25227E04FA61D8EFB19E7391 +:10E8F000293EAE4B3156123C821EE5D1CFAE473A8F +:10E900004CE8B9F8264CEFF3C4293EECE84E41AF91 +:10E910009EF137E2F7F23296F4509A2A467AF8F1ED +:10E92000FC9DE236931417BD36C8F96FC28E11A450 +:10E93000B7811E8578FEDAF63420E81C1CEF8E1AAB +:10E9400083E813203B694998BF1F700CCA7558C7EC +:10E950007F167CB564073F87037EFA33ADDBA5CE17 +:10E96000770D002DE628806B46FFCA5F8DA9C4FB9A +:10E97000818CFC3C20FFD442E4F71E37437EDF89C4 +:10E9800088C4F2A492A47940D6974FA919C4B4269A +:10E99000FE7708E74899E7014F06AEBB096FDFF441 +:10E9A00021CE37E2E7F87E82991ACAC5A3D15BFE71 +:10E9B000EB1EE86FC30E89A2A54E78F83B554B7647 +:10E9C000F8A9FF693D52EADB901FDEA190BCC8DDCB +:10E9D000C1EFB99EC84BECC1FB2B4BA278A711F835 +:10E9E00012EBA1BFB2DD9FC47799AA7B9E2C443F56 +:10E9F000E4B149FC9D8136BF4E78D8F8656224CADF +:10EA0000C3D21A25E59A88F331BD38BFB6DFB863A3 +:10EA1000DB385D4DB582F8868520DD3EB6FCECC561 +:10EA20000CE3FFAA36375300853172AE6D5FDDE52A +:10EA300031AEC1F8B0D2B563668661DD77F98895ED +:10EA4000D9FCB5460BC687011D18FA2F8E59E79AD7 +:10EA500065BDA12B6CED27F825473CD3319FA85706 +:10EA6000DA1BE271A4BD211CEF84B06397EC5293D2 +:10EA700078BF745ACF93BFBE00E7DFA1D2FB7E27D9 +:10EA8000DE7956C175EB45FC9C8378494814B799EB +:10EA9000975470BEC37BB692DF7A102FEB1BE8BE93 +:10EAA000AE8978017AB47D09FC8678E9F1A6F0FD9B +:10EAB000844D4A9F0BE59CF90CA37DD151712FF831 +:10EAC000D865BF3DF00880F21D7F9EF0B3F716E2D7 +:10EAD0007C36E1FE2E90867F89C6E3D4AEF473FFC8 +:10EAE000F2E57E2EE7E6F885DC2E3F49CECDF1D368 +:10EAF00079413C85EB7075CEE574AEF81DBF38D713 +:10EB0000567B693D646977A51FE5E39C6B5318DB71 +:10EB100067B503BC15DAE34E8FEDBC83EE5D973C21 +:10EB2000CEE333A7F5ACA4771E96ECE0F7B586C626 +:10EB3000DB4A5A5AD5D164A1FD5CF2E8FAE7681FB6 +:10EB40006AE1EF18F25520CD57163E26C82C85EF06 +:10EB5000C6B140AC18F174AB98BF55CE58ACF83B79 +:10EB6000367D7E2BE20BE6BBC92FCACB78BB74B9CE +:10EB7000681F12F7F24B33CBB9BE3EF10E9F2FAC9C +:10EB80000FDD4DFE7B3EBF69D1D8EF1F81EFC3770C +:10EB900071BEB1E607EB4942F8BD354985E6DBB306 +:10EBA00092EE45B6ADEF71DC373F9AB17ED01E4094 +:10EBB0007FCB464B4F62D0FEF9E84763CD6A4536BE +:10EBC000BDC0CF0F58158FC7B5E4F3907679D5192E +:10EBD000C6F746C0F0B2F18522CECB5F2D483C800F +:10EBE0007CE5ADE953D06DB9BC4B9A8E6A74A67BB7 +:10EBF0000EC50779453C7766BF9B1A557C038A256D +:10EC00001B61073B96EE43537AA431426957A34EEA +:10EC100069AFA007A09DF4FC5A81873522FD89A029 +:10EC200087955AF52DFB542EE3F11972592BF99F54 +:10EC3000E452FE4E9BF5AE0CF0772FC20F1B9FECFB +:10EC4000F1CF2C2189788B5D586FB888DF185EC3AF +:10EC5000E32D36083E3B9EF1AEE06E01C76E01D754 +:10EC6000C33ECEC72CC2E304BC51F1AE8DC85BF7E6 +:10EC7000814E81FF7E293BFE7F85702DEBDC3F6B53 +:10EC8000A48EF1E63C6ED88A13FE642A7F5F732857 +:10EC9000FA66D221770E7FB7624D6382BE1F695C30 +:10ECA0004C6957633D95B74BF1D771BCDCA9A79E62 +:10ECB000FF5B62FEEF0AF97BA6F37CD817EFF74FF4 +:10ECC000E679C27FE40CE32ACEB0DE018C3F1F9BC5 +:10ECD000DE1FBC8771E79EA1F709E674A3E2157EEB +:10ECE000CE4BF73A6E73253EC5F99FF8C1123A171D +:10ECF00091DB27A5D0BD08F6FA67F8BD2E57FF8C2B +:10ED00005E04341F9F89F1E5755EFD19CC7F784163 +:10ED1000E34C8C2FAF1BA1DF8EFBBF4BD735913E51 +:10ED2000AB3B8B517CF90DEB7ED66202DDF6F88DA4 +:10ED3000AFF8FC3D79F82E8A65370F3D2FE7BB28E9 +:10ED400077A19384F80C266CE367E09340CEDFC094 +:10ED500027F70DAE5395F3C93CCE279B70DD7A881B +:10ED60002F46E44C3E3D5F4473383F14E670FE98F6 +:10ED7000913318AF457CE17365BF373C4EB4B3D6D1 +:10ED80003DC8B576BBFCB3E4E170378F6BDF73ED44 +:10ED9000E3D7A2BDE2ED19578CF37A7C4C7214C60E +:10EDA000B10DCA114F7D04CF75D18EC47710CB4BF6 +:10EDB00059722CA5A9E222985758D4EB12F5264493 +:10EDC00087CFC7F39C19028EB41D594FF72F2C3BE8 +:10EDD00092C9F511D4176BD07E043E5A33E6B31AAC +:10EDE000FEBE4140BCB306F663112FD7CF49F707EB +:10EDF0007289DFD348CBA5193959ECC8B45CFADB6A +:10EE0000F8E35E7FFC32EA5FC8B7FF81FEAECEE179 +:10EE10007494B85DF5B7F507F424BD85FB0045D8BB +:10EE20008BF8D4218BC5CEFE9F80F7FF55FB5C96F7 +:10EE30003023686763DC1EC6DF76AC62B81E41BF54 +:10EE400098883F5FD75613F5680E1B7819ED286B2D +:10EE5000FD286771BEB6FAEDCEE1F65E778E157FBE +:10EE6000C3F754E3E81F3CDF0179BCCE82726ABC71 +:10EE7000B8DF55C63AC95F7236EBA5B49CF5513A76 +:10EE8000910D501A639A1BD30A16738B78BC29987C +:10EE90002E55133FC2ADF4456AE23E8413E3F1D030 +:10EEA000FFB73A67F905B8DE37E758F734520E7FF7 +:10EEB0000513E753A7F35FE432E361E29FA1DE931A +:10EEC0006543DF6333B2DC63FB2BEE193D89EB61F5 +:10EED000C87B46E7E81FF17B434749AEE78FD79FE2 +:10EEE000C47C70D3EF48AEE7E32D7FD8971C5A77E8 +:10EEF000FC25DC9778661BD42F7B247B9CA7957A16 +:10EF000046F0B8D0E6BCAB348AFB54F939AC2CFCE3 +:10EF10008A56BD3E7482179C1C1FFA3F3D4E66FF09 +:10EF2000935CF17FE374E172E79025AF451CAC354B +:10EF30007E5398F5E23D54771E7FC732139E969C10 +:10EF4000EB7B813306E7618DE70EF0F1BE6E7C2C22 +:10EF5000C8C74348AF93DFDF32ACF8D8A308B7D5B2 +:10EF60009FAC39E36333F1F389584F5B738C3F6097 +:10EF70003B5B5CE91F730AB2C6957E42FA8E199F0D +:10EF800072399A9D6FF7BCF614ED233D797EDA0F46 +:10EF90001C41C709E4DFDFEA4E629CC131CDC8994C +:10EFA00000FCD6FC8312FE1E9EF0B7E50A3F48F334 +:10EFB000F079F169507F5D8CBF33BCAE6F2EF94B99 +:10EFC000DE9FEA9A8DF178C997582FEE7F73845FA0 +:10EFD0006C4B6818AD8BE4AAAB2238DF759FBB473A +:10EFE000FD16ED970E85E1F9CA0BEB15CAAF5DA5CD +:10EFF00028F46EE6CF1267E1FEFD5B21EE2F4B6E2B +:10F0000015EF05320EE7E1C9F147D74AE9FCC2C85E +:10F010005CBA17392924D3FCDEEBBC72C4F9F03D8D +:10F02000378A8203E0EA2A7125B83FCFC5CF690746 +:10F0300053373F87E5F94CFC87C47967E6F7402EE4 +:10F04000976FF3AB641FCAB1D6AAF7489586BAF793 +:10F05000F3B4D34D7189905E82F0858CE932BE5B4A +:10F060001C8A26F1AD1F3625C0F7C7FECE735D881A +:10F07000B7DC0E96358E714A80CFDF5FC62EA1F7C2 +:10F080000F0D17C504FBA11F6C77BAF613033C8E56 +:10F09000B453DC3B3EEC49BC8C26E9E107F324D3B6 +:10F0A000C6BFB302DCEE791FFAE7F16E09EAFF3D55 +:10F0B000C37ACF26417E84961FBE61A29FA6653289 +:10F0C000E78340B7E4433E0A24791441A82A4EFE60 +:10F0D000C9D6B042701E9612744E935CA55C8A78B5 +:10F0E000F057013D8A2825780FFFF0EA1148777F15 +:10F0F00047E7487B9CDBAB417E8F7A83E0A392AAF3 +:10F10000434CCF32BF5065CC45BF6730C4FC7F1E37 +:10F11000127A48F0AFF55E69B08BE3ADA48CB74BC3 +:10F120007AD8A8E1B6F69F06DDD4CEE2BBCC7E4706 +:10F1300008FAB578E2F43B07A17685E17B30AE2A88 +:10F14000FEBE4A6EA52B76318CB3EDC214BE6DC4E3 +:10F150003688DB9DFEF0ED11F4E76E981C1B857080 +:10F160001F11FC6B4E55E89C32739C97839C2E4775 +:10F170002B5DF4AEEBC6F5530AF18DC583C1814812 +:10F180003880E5DC6FB0311820BFFFD1CA8A81F921 +:10F19000E86F0C2C1D2EE9F67EF87C4A5DC951788B +:10F1A000AF746DC785AD78AE538AEB1EECFC7DA1C4 +:10F1B00099AD68E71FD9E116F4AEA7F5FC42B26439 +:10F1C0003486901F3415BA779D9C16FBF5F9B86EFE +:10F1D000D7BB285EED48C2F297EA7EE4FBED95AB23 +:10F1E00043C80FDB0DB902F9E3DB5ADDDA008CBB53 +:10F1F000BE3DDF8FDFD734BB24FC5EBABEE25FCA00 +:10F20000A09FD269F9548FDE029F42B7F788AF36CC +:10F2100088F758B459FCDDCABCA9FC7DE4BC18BF12 +:10F22000E705F2839FEF56F1B87FADF3CDEFA37EF4 +:10F23000D5A6F27DB416BDFF56CA8BF33BAD5A611D +:10F24000CE7324AEB7ADF1200D2CCEE7E9704C2B78 +:10F250005DA92974BECFDF8BB58E6DB53E576A218F +:10F26000F65BEEDA3F1FE109FBF7CF87FE8F59749B +:10F2700034C53BFA329FD3860BC725514E1D11E78B +:10F2800000F07D14FAF58E0D9E0BF37CBA7C80DEC7 +:10F29000D9D3F60DC4096EF3D075388F0D175E55AE +:10F2A00088FE5EADEB8DEFD37771EE9839AF895A5A +:10F2B000FCE900F265C1702921E425DA212131CF72 +:10F2C00010BED31B12E77900DFFB773292F7F049CB +:10F2D000C577AC06E77137E3F360FCFE6C21CA5AD0 +:10F2E000FE266B25AEA3A0E8EF835E37D57FB85E20 +:10F2F0004FE27A3FF434DB81FB8BA038EF1CD42B38 +:10F30000B57C9C6077DB4AFC1EACB29D57C2FFFE09 +:10F310003D9047FC796CC71F49DF6E64FC1D046B90 +:10F32000FCB370FCE274FE61C6E179F2C5FC4BCB24 +:10F33000A1FF1F3514D33DA3660B8FF807741B8103 +:10F34000ED40FE8CD0FCC63760920F07B93C785276 +:10F35000D4DBB04F7B01E5CBB457DFA6F7BB1E0D66 +:10F3600046A87C7DD5C774DF7DA3C6E15FD4C1F913 +:10F370007051644045FFE88D1D92B6CD769E3A4CA3 +:10F38000C063D1BD24AE11DD87754814378431299F +:10F39000AE29C24429C1EFE64A447A3EEB4F95407C +:10F3A0003F1B45BFEFB7BBD836D26BFD0CCF0D1757 +:10F3B00076308A9301BE5031FE6A61C730F435B1B0 +:10F3C0006D91D8AF31FFFE16AF8E7094B47FAC62F2 +:10F3D000FD60879BDE4C454676597C5B9CC6C758D2 +:10F3E00001675EF72A1A7F6C2533F83BADFABFA0A0 +:10F3F0005C0F757975D2AB726C03E99BCE3C3E3ED7 +:10F400001B68A77B05535D941F5BC5E11FDBF5EC13 +:10F410001D786EBF20C2E77D6395783F498EF795D2 +:10F4200060FD4A4DC3FB10795B783DCF18801BC649 +:10F43000B911E196D27829117095205C80AF12AC99 +:10F440004FE71E03FB709EA1F6E1FADAA2F43CE658 +:10F450008B79CD47F8B1DE759C9F8084E65778950F +:10F46000779E735DE4CFC958FFD5BCBE8CBF64E105 +:10F47000423D6ED2B863C579B90BBF4B787FE119B5 +:10F4800082A3A4C3EB68DF119ED747F3E8F6EA1224 +:10F49000874B47F915107005BA24C26BA05BCC23CB +:10F4A00066E377283FF80A33F15DD855F9FCFDE9AA +:10F4B000C39314F27380F1FEEE9DB8FE362874EE0D +:10F4C000B2FD4B1E8F9D9CA4F4ACE672456296DCA7 +:10F4D00002202B9A146ABFB192D1F98736357FBAD0 +:10F4E00082F2E9C5CE2B493EC40EDD43E74719F150 +:10F4F00001817D7EB23F0BEF76E205E037707F1B26 +:10F50000CD881B089AC3A7A35CC5F2BC0A92BFB4FE +:10F510003E27DBFBC573B4D76492CFC17D5BE6A207 +:10F520009F38B02F5E4CE73F19F51E0F95905E0B8C +:10F5300062F407D5AB77613DEBF7450238D30A4A51 +:10F540005FC4341860660ECF9B523EFF99916A48A3 +:10F55000774E8BD3BB32C173F93BF684FF7C4A53A1 +:10F5600098765688EFFB12C51AA5BACE538D526B0A +:10F570003C4B4FAE17F5832157D6F76083C65FBC6F +:10F5800076B92587CCDB5FC573B28B38BD9A3C0357 +:10F5900035F83B1A4D4F07D0E3CD1ECF4B8EC277C7 +:10F5A000B4FE49D82183BF9F523E8FBFBF8B4FF11E +:10F5B000E6537744E7B383655B91CF27187DAE951B +:10F5C00024C7783CEB7B2F821D740EBE1B6C8450CD +:10F5D000DE9951178DF7FE4BFC7B5BF8AA42B4A372 +:10F5E0003694069804DF7F10E4E7341BAA56DF8EBA +:10F5F000FCD1DB2DE5A37CDE2EECA9ED5B97B5629B +:10F600007CDFFAF512C9F117261F9A8DF5927B5C03 +:10F61000741F7E7A87B43907FA3BFC968FE2390F64 +:10F62000FFACB31ECB3F1B0B8438853F0E51C2EDA0 +:10F6300069C36157033924CC67D6F78F3C4076DD28 +:10F6400059557113E5AF56C5A621F17403A082BDCB +:10F650006B30DC67929D1BE17A5FAFE4DF81377529 +:10F660008C8BD5A33CDFD298E2FBEA727E6ED0127F +:10F67000DE968FF6C6DA1E99E1F6A772EB95EA657B +:10F68000282FCBF1B60263BB92969D9360FC9C370A +:10F69000C9EDDFB23A2308ED3A5EE7E2BCA37CFA9B +:10F6A00030D44743E98B7702DFE0425DE7728C425A +:10F6B000E8DD69FDB141EB5711CF0BBA240DF5C759 +:10F6C0008228A3F55AD22D25EDFA232CE406C8DDB5 +:10F6D000D58CE43C97BB61214740FEAA14FFDACEEB +:10F6E000C43BC4FDED247F3ADD5C5FC8BA0BEDB2CC +:10F6F0004526C85B80A538620CC378B91BEB653A18 +:10F70000DFBC51E8194B7EA6F5555CC173654B0E05 +:10F71000E70B38C2423F0C33B97EC8DFC2E5F2B016 +:10F720002E9EBE174DD0B921C55A0E4FEBB5A30181 +:10F730009DF098DFD14BF27E583797FB165D607EC7 +:10F74000A7FCFD95D6EE49D3116FC1EE22970BF7BA +:10F7500089913A05D3B290E488FB2022E23CBBB702 +:10F76000D262F79B623F51D07A3922B365EB7C05B8 +:10F77000E561498CDF070D4417FE188385CE11FB28 +:10F7800049C612F46E07AB5F4CF79282027E7F652A +:10F790003FFDDED7FB5D575E8DF82CA9EC1D8D7605 +:10F7A00045A8EB20FB26DAC7C110B50F5526E99D09 +:10F7B00082501917C525550915EBDF1871116C47D3 +:10F7C000E414C3FC9118D356E9E979F60773689EEF +:10F7D00083FB862EAFD8372429DED6DA37B449F139 +:10F7E00077291EE67C2E573A6249A356C77D0397B8 +:10F7F00013DBC728DB701DDE1410FB9BF000BD532C +:10F800004FFB09B0E797070ECE427F8F353FAF9889 +:10F810005F300AF383EFDFBBEFA081F0F9AB7A47EB +:10F820004B36F86A03627E657D26BEB310AA84F962 +:10F83000E1FCDB617EE1A1E71714E5C1C85339D8CB +:10F840005FBA1F93E8114ABA35A447A89DB7BB1108 +:10F85000DA613F997CF005E26732B66734AFA0E128 +:10F86000B4134F170FF7043230E2ADC2B25F33F476 +:10F870001EFA95484F38F5D1C8DCA2417F9E69B386 +:10F880006F9F10EF443E1103FBAF08E53DBF478675 +:10F890003202E3D8023B5CE608D4173BF8EF5F0482 +:10F8A0007A6573BCCD6F15A8FC8B237EAD163BB675 +:10F8B000F1F1E07E54EC4383959CBE7EE057FBEF74 +:10F8C00063BC15E4FBF8B782DCCFE5AFAC8FE03A60 +:10F8D0003D79FFC9E1CD8DB89217A39D7821CF6FF7 +:10F8E00098ECA277166EC2F55980F6CB23462D8D83 +:10F8F000DC5F83FBD3B6F50AD995C9ADFC1E5B72FC +:10F9000032B7277A531F737B3CA98C5A4CFB2DFED0 +:10F910002EC5C6A9AB472DC171A6C62BDD36FE0983 +:10F920004DCDBE0F9F1452AD384B49F85D24BB5EE0 +:10F93000B0F299EDBCC2FF427FE8AFD234D28FB1B2 +:10F940003DF2A8C5B8CEB551147FF55DA1AF07DF74 +:10F95000B94F06B97F2DC57F37CAF2CFB9DF6EE345 +:10F96000EF4DA57F37EABB21A447C0799E61F9ED31 +:10F97000BC93397E836185820D83C2AFD39B729124 +:10F980003F6363245E60FF5DB736F43F417F8AA921 +:10F9900070BFC224A77D716788BF037847C825DE82 +:10F9A000EBE27C7358E865F987E7F1F782FAF877BC +:10F9B0004F2523BD07F3D99F318F8F32E6713BCDA1 +:10F9C00023EA7C2FCB9A8745C78B429C7FD0DF816F +:10F9D000FE078F902781A49BE8BDAEB28FE4A9C536 +:10F9E000578B4CE02BF8EEDAF21BF26B94A07C0202 +:10F9F0007A27D767FA3516AA08771BD83FE87F77AA +:10FA0000F8376CF208F187FDB6C2786837B7B2B83C +:10FA10008672C3845EC89EE972135E839D529E1DEA +:10FA2000AFB5018EAF05885792CF7B69FCF5B16207 +:10FA30008AFF6E29B88AFC4EFEF6712E6C77B7B03D +:10FA4000B75A44FC4C28AA24691E550364676CBB52 +:10FA5000B09FDE7DB6D683358E0537AD507B1C7FDB +:10FA6000979BD3C3A24B397F17C68DBF472665A589 +:10FA7000470FD123929DAFD4003F97D8D5373D840F +:10FA8000F587B27B2DFB36D37EBD26A873FB5906C6 +:10FA90007BB5226DCF5A7AB64D4AFEF6225CAF8F07 +:10FAA000293AF747C423BF8522F7B800DD4F7F42CC +:10FAB000EEF557707F283FE7137C7850D893F2FA21 +:10FAC000F3C80EF0748A79774B7CBEA7E7C35F9DBD +:10FAD0008A0FAF0A70F9A77D5EC48C61363F4E3540 +:10FAE000FF1D4C2DC9F39AA9F0FDCCE7A5542F8B2F +:10FAF0007FA808DFB9CBF40B813CA373CFFF6FFC69 +:10FB000041C2AFC7E4FE88D3CFF3BFEE07FA2CF4AF +:10FB100037F88158869F27D3AF93E927B2FC3AF88C +:10FB200067F71765FA79A278BBBB04FD3C7B43DF1E +:10FB300042F9D9E0A2F57B44F8215FEBB86916C61B +:10FB4000977BF0A638D4F3A46482533615BAEF63DA +:10FB5000AD374BAE5B723E8B5C8FE49E42AE1709B5 +:10FB60003EDCB94AACAF3093519F3FB1E305156D10 +:10FB70008FB3843E19D4F7A8E76D7A3D887A7EE288 +:10FB800019E879B11E87DE2FF1F5776FB5CB877055 +:10FB9000E78BF9E60DF034BF5FFCCE13F350DA29A2 +:10FBA000DE0BCD9BEDC4EB39CF65F2F32AEEF757B0 +:10FBB0008DF015B8BE66BBE81ECB796F3AEBCD2E43 +:10FBC0007A297C2580983F93D361B05D8015CC4322 +:10FBD000FA56CBD4EE5B479CEDD2F08BFA1A87EB4A +:10FBE000DB9F9FA65E989F4364C23F43F566873FB5 +:10FBF00062147C279C86FFE288B35E4DED4B05576F +:10FC000067833FCA86D754A6E1BFB4CC7B6AB87479 +:10FC10000EFFDF579DA65E6976F8AF9C3D04FC653C +:10FC2000EC12BCE77575CD69FA1574FD87C5A7AEF2 +:10FC3000774343E638A6E3FECA497CC43C24BFF3BD +:10FC400007B85F264FF350FAF5F9C80CCFB5F1515C +:10FC5000263FCC99E4217E39998F04FD041D4ECBBB +:10FC60001F828F32F9E14CF928933FD27C64165CF5 +:10FC700065E3A34C7EB86EA587E459FE4CB6CD5D16 +:10FC8000948D8F78BBD3F287E0A34C7EC8C247C463 +:10FC90001799F067F2C9FF3A7F681E2E67847CC906 +:10FCA000D3FF5AFE4885AFB4F147269DE3D36612D1 +:10FCB0001F9CCC1F822E823F4E4B77C11F99743EF2 +:10FCC00053FEC8A47B9A3F5224472CF833E99C5832 +:10FCD00035368F9FE30FF2C599D159073A07CE7C8D +:10FCE000FD333BBCC527D3FBAFA6B32EE82CD67F94 +:10FCF0005EECAFD527A01780CEFF0D417960FF00E5 +:10FD0000800000001F8B080000000000000BED7D4C +:10FD10007B7C54D5D5E83E679E99CC2493C9E4FDFD +:10FD20003A0921044C701221057C9D8410068876C6 +:10FD3000808881A20EF230402001AD626B2F030457 +:10FD40004868548280E0553B046CD18A064B95226A +:10FD5000FA1B1E5A54EC8DA268FD288D94D2888817 +:10FD6000F151A1F7AB7AD75A7B9FCC994902B4DF06 +:10FD700077FFB9BF9BFEEC669FFD5E6BEDF5DA6B1E +:10FD8000EF097865CF538CB1B1560B530A19FD7D3D +:10FD90000FFFD54C5E9D34CDCD986B9C5C6A50F0C6 +:10FDA000EB0AC64632B6DE1E4ABA15BE072A8DD405 +:10FDB0006E7C6A64BBEFF1EF465D7D27F376D81960 +:10FDC0009B5478997A6EA857C45882D7CC146BB8D4 +:10FDD000DE0F4745B6EBAD9F0AFFC4797859F0298D +:10FDE00089B1A9DEC87AFE158363FC45BAFA996C1D +:10FDF0008207E6716BED65E661E4F3FD51DDA5EB8D +:10FE000031FD3CF318BB6359F43C038C25F54DA13F +:10FE1000DB46EC5FEB4F4BAF71CAD4EFB078C6EB6B +:10FE2000C5F65F6F14D683F2BBB57AF150AFA86FF9 +:10FE3000BDEB45BD97B01EF4FBB5A8AFCD63D7CAE7 +:10FE4000C63A1FB47BE1809236C5DE777D1B56B083 +:10FE5000DA0E829F224D7184CBA73A252A3FB5DC6A +:10FE6000C9544BF8FBFAE6DC2A06F55DAD256B308C +:10FE70009DDD9CC8D47EE0977071105313F5E305A7 +:10FE8000A93FE738E8D88EE505547E6AB995FAC7E8 +:10FE9000F17DC5FDF51F3B40FF6997E93F93CAC35C +:10FEA0007861CC9ACC9889FF9319E2F79F35005D71 +:10FEB000ADCE342B0658EAAF5DACAE3FF89A32CDEA +:10FEC0001F4BC391062BD52E6D1E40070D023E26FB +:10FED00023FC570AFFED34042C717DEBAD92A15F3A +:10FEE0003BE6FCA97AF8DE27E8C01A34AA4184BFB1 +:10FEF00011CA8BC3E50F63FF30EF5592E7433FD242 +:10FF00007F96D9F314ECCFB5D7737C69F51E11F346 +:10FF100058E534707A653E867034D95FFF5082F9B7 +:10FF200098ACF68081E66F3CD7A5A3E3479C1A9D69 +:10FF3000840CAC2C0C9781EAAFBA9EEFC355492CC8 +:10FF4000B822F7CAFBBFCFA9D0BC8AB79BA93DCBCB +:10FF50003007074BE1F5027CF8FE5ECAF777A695FD +:10FF6000355B019E6B24A6DA47C077C94ADFF1CF23 +:10FF700009F8CB10F35C3B98ED90AF86BC911DB6B1 +:10FF80009422FE1A53EDD84FBA59C1FAF9A9E69056 +:10FF90000CF35BD3C60279506FCD6A7BC002E56B70 +:10FFA0001C794103CC7FCDB77CDC35B729C195D80E +:10FFB000BFAA2A6EE89F8652783B17B62B11F566CA +:10FFC0003983ABA05D1AEB8C618670FF8C65259C34 +:10FFD0008965F889111D3A5D58A90F1D85E994D3EB +:10FFE000635E8BB1D008EBFB9AD93C487FAB121A09 +:10FFF0002D3190EE4044C0F765765B70656EB85D5C +:020000022000DC +:10000000D3F250A869B02E6F023AE8876FBC92C84D +:10001000E9EA9984C65A1F94EF9296D4FA74F4527E +:10002000E8E2749594C0EBB1113E2BD20BF4F8EEDC +:100030008DB84EA7ACAC93305D699D88F9661929DF +:100040008CB5A74EB12E407C0464E76005F32BDF2E +:10005000BD11F3501FF179D87967732EE49B9AE5AF +:100060006B683B33B5BA04E0192FF0D51E90695D7B +:100070008142161C0CEB0A06F2D267C3FC0A9C7282 +:1000800005EEF3C32DF7CA08E7362F6329D09F91F9 +:100090008502464C0D279815C67BA8F2942F1FFBAE +:1000A00091F8BAAB0C45E938BF0D41A38CE31DD8DC +:1000B00056F08609FA0F56CACC02FDC777CDAA665C +:1000C000809F7F387369BDC613133E6140A76D8161 +:1000D0007627F2879DDBCCE92837E2AE339EEAD261 +:1000E000C9A1032B0AD2719D6DDBCCCC02E3DA47A8 +:1000F0004496B74D57D29DD0DEC6E0BBB6CF7379DC +:100100001A827D3448D0CF9116B3DC65C775E8DA22 +:10011000433DA5D529F9911F54DADD48375F0374B3 +:10012000BF07D0EC94553906E9F7A444F276872945 +:1001300060D1E36D7912C75BEB72E6390D345298EA +:100140002BFB906F3C28717E60B73315E1A2E1373D +:100150003ACD6BA98CF7F7C3DFB4D4683D146ABA03 +:10016000A62F7DD93D9DB213E091B0C759120B5D0A +:1001700025542A7BBB10EEC5D925B80C8DDE5E9FB9 +:1001800050B0750ED45BBACBEE417CD84E583E468B +:10019000BE106B6DFD02D30D07A63305F85FEC3280 +:1001A000B7271FF8B24D49F6E4C378264F88213CA3 +:1001B000ECCBCC9ED390AF7ABE28A5EB12F35CB704 +:1001C000DCE9C9877DB071B995D275821EAE7ABE61 +:1001D0003AFE4EDD7E1896C0F962EFFA96FD7C7D00 +:1001E000934E5E00FDFB82C49783A993757CF954FE +:1001F000028797D66FF4F85A391BA1A68D0338B43D +:100200004F303BD741B67C727EFA02C86F6F363BE7 +:1002100071FD1B5ACAD6CD447A7FC7C006637E42A1 +:1002200041FA3C5D7FED03F43F41CC7B675AE031FE +:10023000C983F3BB7FE251D08176C6041E63980F59 +:10024000DC3BF1E828C8E3A61C83F99F4E54015E0D +:100250003B916FA403FC126E981840FA4E08CC90A4 +:1002600081073FD4B260DD61E0473B07073E922043 +:100270007FD2CD4295D85F2EAFFFBA7B7B7300DB78 +:1002800017F3FC5B1B974FC47C3BAE07E6EF867D04 +:1002900080F4DCBEADC985FB66E3E411E90A946F26 +:1002A0002F09A632E82FDFE57AC30AFDBB25DE9EC3 +:1002B00005BEF6E27CB68BBCAFED2B2FCE07E0F38C +:1002C000E84CDCDF9D260FEEABB6232367E07EFF14 +:1002D0001AE0C5602EED594A9AAF1FBCB72E4FF5F4 +:1002E000B40E46FE07A929FCDDE149F53CABDB97DE +:1002F000266764BE5D52D2105E4118DF381AE06F87 +:1003000052B6627E7DC251AF11E6BBC1A1A4213CB1 +:10031000020987793E49C093EDF7AA30DF0D693CA9 +:100320005FD7F69217E1113D8F769392EE29BA824C +:1003300079887AFFEE3A0682C3958EFFFF70FB192B +:10034000A8E75FAEFDDFC47E1DB09FDC2BEBE7BFEF +:100350004A8FFFBFFDFFDDF6C1843CE29B97A707F4 +:1003600046F56C32F323FFDD545311334BC78797A7 +:100370002609FB0CEB917EAC925DB2FDC12AB23333 +:1003800083CCFD8605847C73B0C93511F8E38656AD +:10039000D983ACAE70B22B6630F0B32637725D48AD +:1003A000FF3988E7BDB27325E483CE0ACA079B797B +:1003B000FDA05BF6A2FC5EED966DB375E307BDFC98 +:1003C0003BE847697A79B141C80BF600CC08FA6975 +:1003D000C9CC6B5FA7D30FA72571B9B1A1A5E28DD9 +:1003E00042944B685F28A0574DA83A827ADD06D028 +:1003F000D32CA4A7E5B5E4A39EA6CAC4870B445E8C +:10040000518D1EC8B2213879F40738593004F5DB14 +:100410005B5F584AFA2F2A3DA85705BA0260F2B02E +:1004200003BE3B8FA0FE174CE5FD323B0815D07F85 +:100430005C086BE8680DF683F2CFC334FDDD510232 +:10044000E564922928E7EDEBF2511E805E88F252B6 +:10045000D3CFB293B8BE9688FA1BE4DB9BE589380C +:10046000BF4D1E2343FF84B35AA777B1BEFA5B92F8 +:1004700089A938DFA4A1E66000C6B547E969D1FAC9 +:1004800058AF3EE0037D42D76F6CA13322FFF58960 +:10049000F1A044A19E34692BEA296DAFB11DA8DCFF +:1004A0006E7F8DED6360277CBADCB715F573B6FE01 +:1004B00051C640EF5D20E0902F396D681C180695FD +:1004C00028A81CC618D65B31CD973D0F97C3F847B7 +:1004D0009E4B9F3E07E6BB745B2CE163BB295086B5 +:1004E000A06E3239B7A27C5D9494D582F2ABCDD4A4 +:1004F000F90CCA2F39F0DB75DE2CB0778C1C4F1B42 +:10050000DCB04EE86743C79EB3CF8C40BC5B89BE6E +:100510001E6A5EEA453DAA5BE6762D33FA52270352 +:100520001DEFDE65AEE57A8F8FF49E9DDB1C94D7C0 +:10053000EC540D1E2F249A090F2F08FDAE64D5929E +:100540004694CFBB6549C8498033E8211DA81F9058 +:100550001EB2F6CD4A98D36AA1974C75BDB10EE58F +:10056000FEEA01F49C0D49DC6FD1117488FE0EAFD8 +:100570002B07057F770513F98F26AA9938AE24F447 +:100580008AFFB50EF3BBD15E4CE7789101C6BBCDB7 +:100590005AFD3F4FACA372699201F6AED1FD6A8B52 +:1005A0007D74787E0B5CD63703D8BFBCA4CED7CF82 +:1005B0007C1E4814F319C1FD53D0AE36A8D3478C26 +:1005C0006E03953B45DA112C96510FCA3382DE0D2E +:1005D000A9E740BE6D81AEFEDD2E5B841F686F57BC +:1005E0009E4DCF67E6B9C5784616FB11E07150C045 +:1005F000EC5C01F81F1474905E64CA343309F02A6D +:10060000BB3B4B8BDCA87FDB1950205B3B0E560FAE +:10061000FD0447071F1A83FA6696EC09C0F7ED0E32 +:100620003BE1B17DA7C1FB4B847BF0AA4AA44B6D93 +:10063000BC9F8879AF6D2EEDA9837667ED76A7A470 +:10064000201D796A719FFEDA6E7606B8F19B86FCF2 +:100650002E5F0EA6A37EB4C935AEA5E93AC80B3805 +:10066000DB364D6C21FDD0D971731EB45B0BF616D1 +:100670008EBFD63DC58AF36AF3355A917E5F38D076 +:10068000E8CDC5FD3D58662B619CB6726EA7E42788 +:10069000B926E2FAF2578361A2DB7F8A9BD359BB6A +:1006A00047F00DB7E01B4698C708F4AF947990DF88 +:1006B000599CAC14D765CA6C54D57EF078B5E887E0 +:1006C000013BB297D156A47D98EC3DFE53E427DD63 +:1006D000E68E3F20DCD626D83CEDF03D18D31187BE +:1006E000FD27BB6C32AE3F85C1FF03A89A64C00BE7 +:1006F000F2F74C4678496935939F23B9D54C76CDAE +:10070000866699F6DFEA392012605E29CDF2C716B7 +:100710002CEFFA62398E93EA964366B03F93679A5C +:1007200023FC85A9273EF916EDD254A6F32B42FBF4 +:10073000E14EDF8B2E98B72553D88758B70CED4C78 +:10074000FE676B96C9BFB46B0587CFDA9FB120D81F +:1007500010586E5D56CAAB23FF358BFADB7FCB9EFC +:10076000453899ADAD9D86381D5C9771B89A5BD7B9 +:100770002CC175980B23FDB086A464825F1603EE2E +:100780000F7CEA53C6F703FE19A1281B71024B3FE9 +:10079000D7F19718B4B7BACDDCCF40B64999B0F7C6 +:1007A000F3C2F8F840D89FD1FDE448BC9E967F92F2 +:1007B000F17E771F764D427AFFC5B2BC12E4F74D49 +:1007C0001AFF62BC7F1473889F24A74D1D0AF3DFB4 +:1007D000EBE6FDEFB635F6BBAF5F11E56D6F00627E +:1007E000011EBB572A77A39DBAF62199B543570737 +:1007F0005AB95F62438005518E6D503DC7AA715F43 +:10080000351A3D01E4C7859CCF6EF72AC115C20F8A +:100810001580F93AC47CB7677A6C0668BF7A1C7396 +:10082000B6031E1D954C8D417F98D1B30EDB2995E3 +:100830002E8674CB00C632CC3F56B47304024B9064 +:100840000EDA32D90C829F5191261787E161177019 +:100850008CF5423DB4A3DD2FDE87FEB6F6CA290C27 +:10086000F98EDD0DE3C4F17E91C8C91505F8B20714 +:1008700078BDF89A48BA233E8974BF18E806E7396C +:100880002A12EF1B047C328CCC6B067A5A81FC0B4B +:10089000F595F91C2EB19EA8FE6C4A5A1DC1D1CC0B +:1008A000701F653F10599EDE9A5C817497C974DF92 +:1008B00061DCACC404C247FA91C7A7C8B0AED57515 +:1008C0004C36E0B82CA0D69572FC20DF585B25533F +:1008D000BF1995AE0A33FA6D2A6515F1945057D4B5 +:1008E0008EFE320DBF096EA7545A84F59C1505C3C0 +:1008F000C98FCBE93C19E81CC6CB38D27337C22F5D +:10090000BDDE1CE5B7D7ADDF70F9BCC91A17881D6D +:100910008E7ED2C87DEB72E70ABF2BA70BEECAC64C +:10092000FFE37E58639CB20EF531B6D248FE5BF40D +:100930004166C21C4DCFCA8114E8CF0229F20D5383 +:10094000873130240EF513A69AB13CF33B8B7EBE63 +:100950003B7F5B447677BB89F35183D05F35387436 +:10096000A2BC1E8929972B152F658E457FE8EA2C9E +:10097000E6E1FEB8BDB47FEE1573EF967D5B6211C4 +:100980004E1F5918F283D22381196F417D67254389 +:100990004F325B6B6CB426E8E4194C3D28A7FEFB94 +:1009A000E906A12FB5A3BE144FFE901988A7EE76D5 +:1009B00007437F6C4248D6E4BA8A223EAC67EC6AB1 +:1009C00041B95E6CE81C660579B4D9F9FB96CAEBAF +:1009D00051FE665D65049ED393F8558B69A45E4F06 +:1009E00038DBA25E77293DE1DB09D85F49A696FF97 +:1009F00064820A40EFB06AF9BD6FA0FFA2C9147803 +:100A00000E79DAF36E16A81C857C4E2BDFDF82E5AB +:100A1000BB6CBCFFE7DDFB5B0257A07730AB6243EA +:100A20007AB81C9CDA8D8A0DE5673BC203DACF7B6E +:100A300064EF8415C6B0DE52BFB373229E47687858 +:100A4000992BF8EBEAD75807EE5F4D1FDD9E6496B1 +:100A500091892841B31AEC872FAE4BB452BB8BB1AE +:100A60006A53E2C8CBD3D73A415F3724F2F18A0DFB +:100A7000FD9F5B051325CDDFDF88FA53C54B76AEAE +:100A8000A7B64CDB817ED98A21455B63D13EF9E371 +:100A9000AD26CC3F9968A4FEDA7FE71FE2E4E75079 +:100AA000E90827F40F101C7E6B97D13FDC075E62CC +:100AB0005DD1DF3727C608BB4D9971D0CDCF1DD68C +:100AC00029E173B0E8F93E2FE6BB7A3913E7504EBF +:100AD000B2F7F2937C2A9D23A5FA0338BE19F48A53 +:100AE000FECEA18C173322CEA1B6395586F58D17CF +:100AF000B3E97B8CD1B71BE1FBD88BA36E4671F7B2 +:100B00009890677EA7FA1BFCFE75F38842BDBC8CEB +:100B10004EAFD4EFFFAA3807FA77ED945566D58526 +:100B200072751BF3785C8310FFEB3D284F5A989A3F +:100B300087DF8F3CB7607D39DA296F1B889FB48DC2 +:100B40002B233D55DBBF97B357A2F76FA9CAE8DC4B +:100B5000CB686495C8EFE6A0613812C520D7734C06 +:100B600087419F8AE37C125303C807490AF30F6346 +:100B7000D048E586139600CA1943F39A4ED4678C81 +:100B80004E1FF9934B64FFA944A4836660A9B0CEBD +:100B9000188E3A66B0ABCC5F34307FF8DF89BB2764 +:100BA0003403FF301CB67D4CFD86C4F827D6921F57 +:100BB0009BAD8FEC0FC6398FE358F7FA42B1FAFEBE +:100BC000851DD393F85C4BE052FD35F5E9EF22D259 +:100BD00045747F1A7F7B3FF1F90997ECEFF13EFDF9 +:100BE000C9EE7EE6A7F1BF77135F684183DE18E2A6 +:100BF00072C888FD628AFD41BF568027D213F46314 +:100C000077A39CBB4E32A21CD1FA4733D0E7E86BE6 +:100C10002F69E90217E71BD1F8DFB5A2B1B6BFFD16 +:100C200078B5905FD172D38472B394CBCB141D5D31 +:100C300058506E0E1F586E8E1274C518878B269FE3 +:100C40006F74FA07E37A2C6EBE6E4B2693781C0104 +:100C5000B77FFEAB76C8932EBE1F83318ACD8BF64D +:100C60004595EC447D52B32376AD704E40BFC6DA55 +:100C700015B207F5D05EFB41D8179ABDD22433A137 +:100C80009FCAED78EE0A76C724B23BC02EC1C3CA14 +:100C9000ED30CF18D80F6DADA5C7AAB11EE8AD6471 +:100CA000EF44DB1DC21E499D13F97DB8D33F1EE9F9 +:100CB000C3EE95496F0D162E0DE13AD75532EA274E +:100CC000DA3E88D62BA3F5C8683D315A2FCCBC2715 +:100CD0004A4FFC97F532AE575DA97E867FFDE965E8 +:100CE000A42792BEF0680BE28FEC2AC8276F7C9491 +:100CF000E4B91697B1BF4726FBBC3D90EC427B247C +:100D0000686204FFB50F2A2EF4BBDC2DF05C17EFF0 +:100D100091D15E0403D289F42ABB99DD83FA6AB3C8 +:100D20005CC2ED76D55E82FEB216B99484D568B009 +:100D3000EB47A09D6627FB79BBE3D987C620BD8121 +:100D40003D4FE7AB03D8F12BC47E1A95E8A47D6232 +:100D500030AFF714215F6C29A3F3CCED260FF9B364 +:100D60005F10FED13D22AD12E74A5AF98BC28FBA0D +:100D70007780F27DA27CBF48A3CB5F15ED4203B420 +:100D80003F28DA1D1EA0FDEBA2DD9101CADF14E5AC +:100D90004707E8FF0FA25DE700EDDF15EDDE1BA0C2 +:100DA000FD71D1EEC33EE55CBE7E24CA4F44F57FA3 +:100DB00052D4EF12DF272428DC6F31C079D9AE5C22 +:100DC000CEE7EA0F77AAB971613CCE72713F85A672 +:100DD000CF5DD66F25EC5BEC1BED4852710685FBB1 +:100DE000EB12FDE15F5359D87ED4F8D8A0113C6EC8 +:100DF00043B343357BF13B179FBFBD55D8ADAC83A3 +:100E0000F8793BC2A96860383F81BC3989CE0D4969 +:100E10005F44FA9BABE3E7DBDC265E5EC2E119864A +:100E20004F81ACC14786FA4F0BFB7C82F0B7EF4C89 +:100E300008F7375BD7DF836E1EDFA2CD6B20FA6C1D +:100E400011F3D2EA0D44475BDD2CA2BF81E8F9C162 +:100E5000A87A03D1D5B6A87107DA5FABA3EA0DB4BF +:100E60000F36458DFB9C28EF10E9CF84FFF072F41C +:100E7000174DC7EDDA39715BCDBA80CE1FA3D18B88 +:100E8000BD99CB8124D613411F71AC9307B908FAE1 +:100E9000305DCC65EA35C454495E16B815110FE5CE +:100EA00063A8B79B2EE653B9167FD2ACAC7461BC75 +:100EB000C66AB7BB84BA01BD01FD1D3F1474DBAB2C +:100EC0007F60DC00CA777780F4149D3E979984F4A4 +:100ED000BD85F5AB7F687EE70D9B864E40BF73FBFB +:100EE00008A6F278132BF901C0CC484D443F99A1D4 +:100EF000DA330FFA4D73097FEE65CE132E777E70CD +:100F0000B97383922487FBCC550CFD631E94535513 +:100F1000CF176D407D60E93B06F2F7E7AF57C90E8A +:100F2000BEAF4B52F47E8D5EFB42C46568F10E9AF3 +:100F3000FEAFC5416C3206A660FBD5AD2E09FD5350 +:100F400073C5F9D501F714F2BFB6D7C8A4AFB71F60 +:100F5000D9E41D8CF14695B213E9A3B9B5F44DD48B +:100F6000AF8241239D17D8647502C6E56CAAC9B348 +:100F700021DCF17C4D6F7714381B2BB0DEF69A0A1A +:100F8000F2F336FD73AC15F9D15A675E8C827E5F41 +:100F90003CB7827483D71583FB365813F9BDADB2C5 +:100FA000FFF3ACE8F57E2BE292DA198FCFBCEAD0E2 +:100FB000F4C9186731A8D955C271EE233F59BE4B09 +:100FC000E889CB0C9ED3A0E32535737B6110D85FF5 +:100FD000887F23C693E077A6C34F2EC6C328DC7E46 +:100FE000C5D032D40118C051A74744E353AB1F8D7D +:100FF0005766F41422DD8D717139ACF1F181F8FD81 +:101000001831DF85497C5FF7E22D6864C897357C2D +:10101000056BF8B95CF08889F8F6D740BF2C979F2C +:1010200053F617BFA3E16998E003D1F8DA690AD053 +:1010300039FBC16DF7A6623CD2DADFF9739CFDF48F +:10104000A3A5879D8A163F1A83F63470C41879D4F5 +:10105000BF640FAD4FBA843DB467D355640F0D64C0 +:10106000E7F5DA75C2DED3EC3B1D1F7882F84091BC +:10107000D4AF5DA79D27356F1AF606CACDFF467B14 +:10108000F2D9A47FC39EBCD273A97FC13EDC9F74FA +:1010900009FBF0179B8A26A0FEFA2FD887AFF78BA3 +:1010A000AFCBF9B37AE36A55BB04FCB8BE971F2FE8 +:1010B000213FE38FC59EAA177178E30C76A267DB08 +:1010C0000E89FCC90B03469A577D60E512F403D3E1 +:1010D0003907D0FFFCD58CCE33A19CEC21ADFDC2ED +:1010E0000E0B0BE9F8F2E23D90D7EDC75CC6E3CCFE +:1010F000E683FE1FD2EDF75C3C578EC3F2C8EFCCFF +:1011000030331EF18A3197FDC56B2E3B511E3AAC30 +:10111000EBFFACC6C77FC07E407688683FD03EBA42 +:10112000B05C0D1D862D9C27A93D49BAF813868712 +:10113000DE00CF7543CF14F6B79F35B8CE5E369636 +:10114000FD05F8FE8B666739C689069E94C80E9E1B +:101150002DE2EFC60425B2CF66DFFFD623E8E719FC +:101160007DDA639E05FD2DEEE47E9514C392929F79 +:1011700041BAE920BBC327F24B50DEDB5505CFC592 +:1011800066E150D0FE9CA9B1C4897187B7D955B426 +:101190007367D5A87FC4F38359338BAC08B7591D47 +:1011A000312AA55666B4A1FCFCE7F7142F3C576022 +:1011B0007B969159F17B8A991963207D69E36433A9 +:1011C000C6F9A5D89815F3652B617C8053DC281FE0 +:1011D000CD6FD6FE5FFD1DFBBBCB183A4071D5220B +:1011E0006E7BD6FE37FE81F6EE5CD56746FFD9559D +:1011F0003BCDFC6C43C0BFB823327FF5DEC87C49D1 +:1012000028327FCD91C87C2B1E04C2382F7F6B60A3 +:101210001827DAF3742C9D832C04FDF806179F061B +:10122000FA1816FCBA781BC6BFBEF8DDDD7FFE19C2 +:10123000E47BDE36907DFEE230D081117EC66036E2 +:10124000CEEFEC63BF7AF27E3C477D26052D4076DB +:10125000B0FB85023C6F3FBFDCB7B512F8F1D88513 +:10126000FBB391DF9EDFFB9B2791AE3F7DCE427E9D +:10127000B24F85FFEFC047FBCE3C86E33D175B8254 +:10128000F2F9D35D2F15207C16FCFA956C3C273EB5 +:10129000FBCCAFCB28FFCCD3C3313DFBF4AF0A6608 +:1012A000919216CCC6737BAD9F85CFC67C9C88740B +:1012B0008FFE3E9077673EB3DBF5F6E2BFDAEF4292 +:1012C000F4FB52BF6B3B1371DFED7404305DB0F380 +:1012D000E75FF0547A87A72BA87C01406414C0EF25 +:1012E000130797E70B775A22E03E644B241E3E011A +:1012F000FDE505A8373418F9FD0CE8032FC0B885C3 +:10130000E7674E44B9F989F0439F817437D46F8001 +:10131000EF09F0FDBC38478CDE37772473BDB96127 +:101320006FE4F8FB8CFDD79F9BCCF58C423C31D50C +:10133000F185F401EE6D2C4CE6F2FB99677AEB1B1C +:10134000B83F02B611D0D642B19F5E96B4FB14EC02 +:101350009E0CD8270BC539A7F67D21D3AD1BC6FB44 +:10136000CA1AD7EE04F9932CFABF60E2FBF5ECF24F +:10137000D02318E77B66B9AA56EAE29CE66D59F2DB +:101380007A1AD04DFDEEA4528A3917DFEB9F3E1436 +:10139000877E8C611D26926367771EDA3C17E9B35E +:1013A000C3C462152A4FC6F2731DAFC5FD08BECF78 +:1013B0007B3C81EEFB68EDEFDA324EADD4F1BB7FC2 +:1013C00075FF697CA1DEC9E1F0D2A8CEAA0CD8676E +:1013D0000BB7481EACB6B0E396A937A14DF3B88160 +:1013E000FC1B6546E63394E23A7EFB7A3A7C6F78E2 +:1013F000656419AE07BAA8C1EFEB64DFA462E44BE1 +:101400004F9A281E1ABE1F9181CE0E166E309F82F3 +:1014100075FC42E07BDD347B1DEA97D0DF6119DA91 +:10142000C5ED905491FF10EB775774C4A1DDF2899C +:10143000C9DE2CC5239D361EC3790476F17E5988FA +:10144000CF7BBEF083D7ED37911DD2F0D4AAB8720E +:10145000F4937C67908CC8079E92880FDCB5259228 +:10146000BEEAA0EF5418F7EC3607F57F3629988DC1 +:10147000FAD5594730DBC5DB13FFABDBF9FB7F2027 +:10148000BF9B1F8C6C1F4D0F87C4BAE0AF504F57E6 +:10149000D1F5901319CBC2E5F5CB400EE8CE21EA89 +:1014A0004FAF37A39E3EBFDA7CC9F1802E9942F040 +:1014B00088213B69E13056A9F07802C90AFD9FC531 +:1014C0007F811DB8700AF36ADFE9DC00E91A48F68B +:1014D000AB13BF7FC800F49D8EC843FFD7F3B1E4C0 +:1014E0002FFDF43333C98DB3DDA050C0BA17A74E1A +:1014F000DD5AA99BDFB9BD87E2707EE794509C0B53 +:10150000ED79A1EF9F73F2FCC2EE75E47F5ED171BD +:10151000280EF9EAC28E443A4FDEB74B72C900E793 +:1015200073DDBF8C65FDECD305DDFCBC389A0F691B +:1015300072F563FC27C8DFEE64F52FC908670C0A53 +:1015400007F99F92D858D2D84F7F5ABB4F93152E88 +:10155000A724DE3EC5B094EA27A7F9CE2743796ACF +:1015600045A78AF789522732CF2AA8F21783E75E68 +:10157000E72094937E33D9CD4D4934CE5D0CF002F3 +:10158000DF671B59C808F4391BE5ED70CA13FC6608 +:10159000EF9482A8CA395A2D11E74DF336425EBF47 +:1015A0009EC775E500FFF9284FE3E83C27847ED00D +:1015B000053B22EB2F64211AB7FED9EF2DFA7E519D +:1015C00081E7F4A69AD19EF9BB804F729A6A49814D +:1015D000EFD2142BCDEBEE5DA0B7017DB8451C41D9 +:1015E000CFA6788A3F5928E4F85CCB015A67C3FD3F +:1015F000B3D439A08F7CBE6CB68A673A245A70DFA8 +:101600006F91387D55B25016CC7386D06F16EE9719 +:1016100042C5909F0BEB473D62CCB352C001F26BC9 +:10162000AE9505E290DEDEE3F8A917EBC27AF1A5EC +:1016300008C7008D979BA2107EE6B34E33BF7C1186 +:101640005C950CE32DEE06DE00B92307CAE2917E1D +:10165000BE629E78DC97A097B018575F3C47C3B72F +:10166000EEF12878EBE19987708CC4CFE23D00D78A +:101670007EE86D93E0FB27991AA1676AF7EF36AD14 +:1016800090B8BC084C9E8EFC7AF3F4B2323CAF7C2E +:1016900018FD61E9A2A351C80F99167717B2C23895 +:1016A000B66B7AF3545EB692E76F4CF9C5A42DA0E1 +:1016B000FF6F36F9D3D00FB37932E8BD5C6F894143 +:1016C000BDC59BEEAF4C41FDD2E07B1D8FD84F973F +:1016D000AB05449FCB389C1F2D6D1CDA7809BD34B7 +:1016E00005C68E7589F9A11E556C273A48C339C1C4 +:1016F000774736FFEE186EA37B5529321892FDC04E +:101700005B4B538C60AEBB28650E4C6120C725EA4D +:101710006BFA620A2A4DA8770E6BDC8DF495727B0A +:1017200051E9AADCF03C374BB01F516FFE19BF4F97 +:1017300013BB7F772803EA2DF22AE47F4CBAF544E5 +:1017400021C62F2D49E1FEC778A1276F955813FABE +:10175000055281CEA552CCB7A52D85EF23F648A41E +:10176000572FDA536E5864A7F573BD3AB6719B8C48 +:10177000E3DF5148E3035EEE9802DFEF4DE1FC2228 +:10178000CDCEE93575652017FB893FE85BF21AC1BC +:101790008DC79F213C69DD56D68CFA722A5B216188 +:1017A000BD35499C2ED6CCE27A111ED1C5BB78FA44 +:1017B00021A460FD369938DC8C36FEBD09C7D914EA +:1017C000C7E795241BEE988CFA7F29CFBB1E90D4D7 +:1017D00076DA8C6D1C8F16E6C575E2775C174C4384 +:1017E000DD6DD7C1776C6309CE2365104F8F7659B5 +:1017F0000318A773D4ADE9C1213B233DC727A33C00 +:10180000B847C8FDCF4D6ACA35284FDE3131B457CD +:10181000DCD951F5F30B797D216FBFF68C8D47260E +:10182000F1B55D8D4F8074AF89DB0BD178DF9122EC +:10183000F4BB8B192CA893230DB5DF90BDD070316C +:101840003BE2FBB9E5B092213A79587790EE952EBC +:10185000629D14CABCA8C3C082BAFDBB37868F7B09 +:10186000E14F16E25777B70C6A477D3D7ABF365C89 +:1018700034B000ECBD6B0D32D56FA83553BC71434D +:10188000B3611B9EC7355C34F3F21CDE5FC3C544F5 +:1018900016C03348A31287F71DAF357CB1662EE220 +:1018A000FF1589E2CF1A2E265379EF7A2E4A91F945 +:1018B000BD17C4FA8CBC9F515D71C8A7357DBF1A96 +:1018C000E42AF25B4DAF66AC2B0EE17F6A6F22F12A +:1018D000BF73CB8191021C4E89FBCEA7827260B090 +:1018E000CE3E38A5C5E589F9457F3FEFEC22799CCE +:1018F0006EE0F78FCF2B3CAFD5C37284E7F95A8DDA +:10190000CF848C88CFC73C078C184F52EF3950C515 +:10191000747415867F2CDE05EC857FF2AACE900CC0 +:101920003CE54CCA973F2F1A0A247A50E36F5FFFB9 +:101930001CE379920D7204BFC3D8252D0E19496995 +:10194000936C10FCF2EF3FAFBC4E9FE7F5C3EDBFC9 +:101950009984E5238A78FB9E940B6FAD247F869053 +:1019600083C69E6C9F4397B746E5ED902FD6E59DC5 +:1019700051E5EEA8F2D4A87C26AF7F7B7CD7480344 +:10198000D89EFF99F29F93F0FED1ED195D3FC6FB03 +:101990005EADABBE9D5409F9D92338FF5ABC5F2216 +:1019A000FFAC06BFC51E46FAADDDD365463F6BEC06 +:1019B00008CFEB32D4ABDF2B513CAFBD637708F9D6 +:1019C000513DB65374ED3AB85E5CDFF131B51BB0F2 +:1019D000FF4299F8C1BAC253546FD1B2CFCCA8E735 +:1019E000B5281B7C285F4B6485FB5D5940CD808604 +:1019F0008BF74E663C5E95F3DDF369EA219C4FE080 +:101A00001589CE417BE918FBB587F79156FF3F8AD0 +:101A1000F7BF8F7131B1F77CB1C208F5FFB4E86F41 +:101A20002371BCFFC02AA3918F0787A27C9A5977A4 +:101A3000E750FC7EDBA2C107700A274D5D4F607C3A +:101A4000C998D4C46A84DF49475716C62B5FB725A7 +:101A50008BE793BA9E4078FE664B7635C6A39CCC46 +:101A6000EACA92215FBE653A2F1FDCF504E6EF4F0C +:101A7000BD9E97177765199C28526EA846F83FE5DA +:101A8000E47CF349B0B391FFFE4794FC2E49E5FC9A +:101A900068D910B52815D753CFE5E71360AB598146 +:101AA000AFDEFE58D7AEA7000EB7FF2496CE779FC5 +:101AB0003A3775A28FC3C9877A7B0A277D9D1C356B +:101AC000923F4293A31A3E1CD99D0AC9992839F71F +:101AD00071B2BA07C7D5D2F57990023CF7A42AC2F1 +:101AE0002FD758A240BF3367DA3DEB287EA16B2485 +:101AF000D2E1C3317C5DB07F08CF768197F1A95CDC +:101B00000E8E4FE576A829651CF507F641C08AF8C8 +:101B10009C6C26FD6DE36435CDE6C63499E2A5C321 +:101B20007E1213D9471BC57DE98D8B06931FAFD756 +:101B30002E7884DB171ADF9A817C4BC7E736CE1FDD +:101B40009B867C6E63AE9A86FC45E3AFCCD89184CD +:101B5000FE7E8D9F629EF35189F261BE07F574F798 +:101B6000387F64623E7ADF615B24BFFB9104DF8BC8 +:101B7000C2FD5CE9F78D097C5E9A3C4D59D541E781 +:101B80004B298FE6BA48EF40C18CFA5BDB90768434 +:101B9000B7377D0AE165E3E45FC6DC5914A6E7A721 +:101BA00087A84B11AE3344FC9C4637F8877EBED9DC +:101BB0008FA46CC3F8923D020FA765D0CFF0BE484A +:101BC0003AC7F31EF4C953CACF1D66B2AE1FE3FE77 +:101BD000F8FF78FA6FC7D3AFF0FBBF8BA745CBFEFA +:101BE00076657C53ECCBCD52C894C2F926F74BC036 +:101BF000777C2FE2F614FFBE54DDB9CEED3F5D9445 +:101C000046714A623EB1F7BDE4BD15B2B72F38DB6D +:101C1000CB6F98C2FAE8ED273FB2B6A25FF0A4B945 +:101C200083E4C349B05357201F157EC49362DD651A +:101C30003F597814EDF584347E3E8AFE01A6A7ABA9 +:101C400016CF073FEB97BE0CDC2E7CC540F6C0C616 +:101C500092E0D679587E4B11C5D1C7083A023A2393 +:101C60007D89FD94FB09360E3E45F0DC389AD1BDE6 +:101C7000B98DB9BC7CE3F402BABF05F41520FE3877 +:101C8000DD46FD3261277F5E9B1A44FC01BDF17188 +:101C9000E7CBC43F35BAEDAD979F17443CF5A5C3DC +:101CA0009EB8C93AFAF95CF8093F47FD285EF75D2E +:101CB000F825402F88D3BFDF71B9EF1A1D26AFD2A8 +:101CC000F603A7BBD31B52C8BF0C6A4B01EE83EFD0 +:101CD00052B91F52E3C7F9E9FE7F207FE8D5C73527 +:101CE000BFC0C35944AF6B1D9CAE1F8FE1EF647C36 +:101CF00087FC5E471F8F83FD82F207ECF7EFB19FF1 +:101D00003BA0F95EC8DF91E27FB50BC75DA6D1B1FC +:101D1000CF8C743757F80DD80391F62DC657F5E6DA +:101D20000D7DF3F354EE37EFE39760DF5922DB715B +:101D3000BD27B6A8C784F4FE680CB70735F9B60509 +:101D40000FE1607D5BEE8FA5F735B47A5F9DB3C977 +:101D500018CF9C99C6F7CD91A3D7C4A33F5DB3E339 +:101D6000A3EDFAC5B804E8B701C6467F7483AD8B0E +:101D7000EC5ACD5FE1FFB981DED3B8D6C0EFEDF408 +:101D8000FC56227A92A65889DECEB418B6A17F03FB +:101D9000DBE3BA1A4027BCCE85F4159C8FFA4CCFF2 +:101DA0007C1BE3F4E79F8FF33D553B8C11FD09BA93 +:101DB00082F1B2490F4EEA22FF5F03420CFB097C1D +:101DC000BB9C07DB004A93C3E764E8A7D6FB0FCEB2 +:101DD000C37F78FF41A35FC807D00F1AA657250E0F +:101DE000E9A55EDCE789D6E769F724933F9EEE69B3 +:101DF0005E4EAF5F2C7F5CB054A7D747DB5B08CF4C +:101E0000EB4A293D6C207C7595F91CFDD4934F510C +:101E10003F03D9EB8BB7FC8DEE3BE1799D9E4EEAFB +:101E2000C3F4247D2FE1BC75F4A5B3E349CF477E0D +:101E300051C9E8DD1887C8C77A3BE91D9706E14715 +:101E40004A3AD8558578708CE86068D73774F3FDC6 +:101E50003466FFB64368F727783BB3107D0DC24F59 +:101E6000AAD19F36CFD1FBDB0C68A71CFC8CD35DBD +:101E7000C5A959D3917FBF6C4BAB40FF9637DD5F4F +:101E80009F3652E72F611D4437B31F959CC85F5E94 +:101E90007631D5497052F2114E152E7E8E526E1B40 +:101EA0005AF457480F9ECA2D3241FF2BD28C34EE84 +:101EB0001059BD1BFB3B3F403CF7F234718FE3648C +:101EC0008C1FF5B30A5B0CF1C987370C69B7E48640 +:101ED000C79FB339D785E32F4FE3FA9B37DDB73C74 +:101EE0008DF43F4F19EEEFC5695C4FA8302BF948D0 +:101EF0009F2FDB522A70BF4FD0CEDF02E5F9F8EEFC +:101F00004D452A87FD04AB25E4A073B9F543915FE5 +:101F10004D9E63E3FA23AB26FAF20AFA7D3097E38B +:101F2000E1C109DC5F794CEA70A39C93ADEBEFC192 +:101F3000EF13F31D1EC4CF3B524216FA49D97C530E +:101F4000C2196BF89D9C81E80519DE196D5F18E8D0 +:101F50007D1395B928257F0FA401CC6FB6B180847D +:101F600072DC6621FD05CB793C87F238CAC16AABC9 +:101F7000C5897E3407FACD787B15FD39D5D6DF7F4C +:101F800088EB463F20F24F2857B57E7939EBC0FDEC +:101F9000C53CA673FA779CB6C670BF21B40B207FF0 +:101FA00075E0B547DE2EC4C7CD4CC0F3616D7DAB87 +:101FB0004C1D2538BFC022BB07E5E6E3E5014BB663 +:101FC0001BF9764C09FA877738CC2117CCE37702D6 +:101FD000CF306FB20B4F097AC88F3387F05C5CA3A8 +:101FE000BFF498F2DF215E3578AC8A01FCA05C9EDC +:101FF0006BF3A01CC57988F944C0290C17EEB7AF64 +:10200000A6A1C27001BAAD7496EAE1630FE1397A14 +:10201000345C068287B60E9CAF2BAE2F5CB6C8BB75 +:1020200017127F3F6FF370FF5C149CF0531AC9AB1B +:10203000F7717D8B99FF062C5C6C652AFAB3E65923 +:1020400096905FB74EF8CD193A0B414F398FCE4B72 +:1020500080E7F96724921B782EA3E7A778CEA2CF5A +:10206000D76BFEE19D517E5C21FF16A17F19D38EB7 +:10207000C876C0F9494E36EC8DF69BF7F2A728FFDB +:1020800019DF178F6DCE25FDB00B813D1A3FAEA431 +:102090007D8F7E39AE0FA869E807DA3C3FAF14FDAB +:1020A00034B146AE57CE5D3FA47D85D00F50AFD042 +:1020B000FC79DA7EF6A657B074E8E7F3F48AFF44B9 +:1020C000FE414EA1D197DA4F7C9E5A3DF4E75DEA7E +:1020D0009C6329F23FD07F62D315CE4FDE189C82DD +:1020E0007277A9A4A470B95B10913F63F0D33987CC +:1020F000E68F9F8FE70C86305CE7093FFE3CCD6F93 +:10210000BF25F2FD3CC4933EBF408727FDBB7BF556 +:10211000952CE488C293BEDD62C013B6433C45C42F +:10212000936FE4EBBE43C8098D6E131ED866603A08 +:10213000BF457CA99ABB1AE5FC1B26F2CBFE55D005 +:1021400025E0A10CF5C4E4B40A533AD4B3A1BD53BD +:1021500084FA3EAB437CA31F18DFD53BBF9CA9F993 +:1021600026C26BD9947EE4E4BA7D3175482723D228 +:10217000E588F7483E4DE371B2E4BF47BDA4C522F0 +:10218000F45C251BFB29CBD3F44785CEE7E788F326 +:10219000E9C5D3EC7EECEF94385F50D339FF57D3C9 +:1021A000797CB896D7D6A7C561A07F5AEF5FADEA14 +:1021B000ADC7FDC2A0DF503CE7665330662EE96331 +:1021C0003E33EA635F9EE37471E4C8ECF938CF2FC5 +:1021D0006B6D0CE3787C482730DE1C712EF625539E +:1021E000847E5640FA9A96EFD5BBB619484F67C61B +:1021F000C63FFF0CE0DD7D34D183F4DFABC77F62E7 +:102200008ED6E303A87F75770C0D0A7D4B95487F2A +:10221000E370FA44BCF71078A558BC33E1DF8AE7D5 +:1022200028DD1D491EE4FF67301E0340DC6D0C3EB7 +:10223000FD4BE497FB63C8BEEA167AD379B9271B36 +:10224000EF3477F7EA4B01D297CEF4EAF7C18CA9C5 +:102250003A7CEE13718BF5E65001EAF75A3B2DAF4D +:10226000C50F601EEF4FBE2CF879BD8DE7D75AFD24 +:10227000F7E0FE7DD1CCEDAEFA38F86EEF0F3E9C64 +:102280003F7437A7D03A103E12F98D1D11F0E9D5F1 +:102290005FB719482FB8D6C0F962CFEF24019F9ECF +:1022A000423A07F9A4404139B4F21333E9DBFBB6F3 +:1022B000717DF7739F99EE85740B7DB23BCA3F1C0D +:1022C0000D97CD623D1B4D4AF635A867A17E87E785 +:1022D000E5CD3C6EB721F89799A8EF35D4FDF3769C +:1022E000FA1E158FF1B9D4F55001C901FE5EC8621E +:1022F000272FD3E0A18DDB20F45CE6EE49EE4FEF13 +:102300006CF8648D8FE2D9188F5F1E23586F9F7A07 +:1023100051E3931D56C6F5733AAF8C8AFF60FABC41 +:10232000A16F7E57EF7E89FCFE3CFA9A93701E9156 +:10233000FD9D3605E2C6105DCBC457166D9C753BFE +:10234000C683E426FB5F447EB26FC3DA32710F9E10 +:10235000FC14633ECD243B8FADE7E7C5A74DEAED06 +:10236000B85F132A43E63B75F0795BF091D916AE5E +:10237000BF33E0BB7ABEA3959755F47F9E72349D20 +:10238000FB2F1D225E8CB1A916D40FF6E13F157DFF +:102390003D6E9FBE2DE4414E37F73F8FE9EE398009 +:1023A0007799EB3B4A286E23E78110F189D32616F3 +:1023B000423FD4E9AD9C4E7159D8EFBC51BCDF7996 +:1023C00006B04F7571640B04DEE659C09E05BEFC75 +:1023D000D2CE728303E3A21E973C31507F8CE0DBA8 +:1023E0006837E5A01C11F14675AC734D17F43FAF8B +:1023F000955947519C59D0904170A6D86116372AFB +:1024000048F1661A7C40FE34C541BB056A90CE5344 +:10241000A2E338983E2E03F181F1033A7D67D1FAA9 +:10242000168A47E8D5173AA2E30BBEB344D24D2033 +:10243000429E6A72F41BC12F35F932905C057DE82B +:10244000423AC71FDFCFBB2582E722D6C8E3098403 +:102450005C8BD65FCE18B81C9E6769A3D49E914B47 +:10246000E32D605DE27C9CEB3397C3BB3D438EC0A4 +:10247000777D370B5D8FFA5D86126137D53FC0429D +:102480008B86F314ED06803397F7562EEF31B55D4A +:1024900081DC8F96F7D1F23D5AAEA798B91CD7E8E8 +:1024A000437F6E89FACD98078206C4F3EBCB838F06 +:1024B0009C1ECCD88598B8E118E7BBCCCAD3FB6C7E +:1024C00071ED985E88C90E22BF0A209C914F9E74C0 +:1024D000903D7341F66C7907D2AAB59C7E56B570D3 +:1024E000BEB74ABC975B95C1F74F7106E707B76562 +:1024F000F07D7210C733E1BDA79D346E95B5C488D9 +:10250000FB7B92F38B6C235431803E140BFC1578CB +:102510003EED77C35E07C55554655C1F423C1F7294 +:10252000981583F053DA012FE359F80FDF3FADC25E +:102530007FC090E3ED057F45FE5A25F05E6FF5FF05 +:102540000243E73F33F97F8517F86FB0FACB33606A +:102550003EE398D284FE80B1C3C7D33C8C4CADC05F +:10256000EFF14C1D9B41E73099CE33B17DE9565BCD +:1025700087365F6D1D28AB504F35ECB7501C6FF49C +:102580003C0D625DAB7EE7A0F3FF43696FAF41BADC +:102590008A9EBF069FE875C0BC6B3360FC6FD2DEBD +:1025A000B91DE9F75E5B6E13D687794F17F39E91DD +:1025B0009134F0BC8D981AF0DE84231015BF3D874E +:1025C000DA7546C68D6BF747C2F1CC3C3DF419CBAA +:1025D000433F006BE6EF068F13FB639CDDF231EEA9 +:1025E000B7550E46EFB71E62360FFA950E9AD85EB3 +:1025F000DCE7D05DBEFE1DD9438CEFDFC00907E9E3 +:10260000279295C781819EA260DCEDA1188B4AFCC0 +:102610005E5122E2A635BFDFA13F6590DE7330C672 +:1026200062477AC5FAC85F0F4AD6609E14A66BE669 +:10263000D6C547E7F5A5735465BB4BC3F4AEBD7370 +:10264000F30BC11F32C47B2F59E87782FEB3EC3203 +:102650007F1757D88D63C57AA2E73916DFFF453952 +:102660006D8FB40FD9FA47553DDC0E223CE3C370A1 +:10267000D5E0183DEF3E70D802F02FD3C1DF6AA13C +:10268000F798018B2CC3D54FFB28FB3294EADF8EE1 +:102690007473C1C4F5CD9EC95692C32E6F0FDDF77A +:1026A0003D197E5F86D679480C2BC75E978971B13C +:1026B000FBC5BE8E9E97B69EE87546C3419BEFE56F +:1026C000D67958EB2F7ABDCE01DA47ADF3A0D9F712 +:1026D0002AD2F749D6558C789C843C4477CE1ACDC3 +:1026E00007DF12FBEF4AF921638D57A3DCA8FAE15B +:1026F000ACAFDDF40EE98E9BF15DD2AAF1B3EEC171 +:102700007CE913F7DF6C0722AB1A2BF17BEA190F78 +:102710003F8CF770AA6E9D754F12949FCD2AFEA133 +:102720001BE455D58F2471EFF6273FC478D4AA3B1C +:102730002452DE9AB2A17E11DAD37E13C60D4C1359 +:10274000EF6A411555EF1FFB73063F97F8B3C04B77 +:10275000979047041AF40DD6F23833B0634C53E81F +:10276000DCDD6FC2791FBB9EC978FE31CDE8CF5A40 +:10277000AFD3A38EDF64B94DB5F37AFA73A9AF0472 +:102780005FD7ECFB68FDE94B31BE767E8AED6F29A1 +:10279000D697733FDF57383FE8C7AE70398AF3AA40 +:1027A00029E6A95EAF3D3EBDFC35BC6A748B07F8D7 +:1027B0001DD297D9FF0FC4E7A1B4CF1CA41F1ABB29 +:1027C0008A711DB80FF7B9E8FC3B80F18681047E61 +:1027D0005E34CEEBD9711FA4C78167A3FE7428CEE7 +:1027E000B2AD0996302493CFF388C69F188F852702 +:1027F0007E0DFDB6C53E94B914E03631D342F7C420 +:1028000026DA391CDF1A2C69FB9FDEA1D2F8763557 +:10281000EB34227D8D2F1A427CFB66D643791F73E1 +:102820009A309DC23C947E5EDE55467E004D2E65FC +:10283000F5CA257726FA155890DABD1EFB2AC995E8 +:102840003FF6CE2F44FBA297DF44F1D301F90D4EA2 +:102850002F397CAEAEF13B698EE0B76B02C4DFE28C +:10286000993F1FC70FF3BB4E89ECEB511EF10E765B +:10287000E4BEEA3DFF1A2A11FF6E8B8D237B6B525B +:10288000A1D48EF2EF6553C761E2EF132C645FC1F0 +:102890009F01EFDF127CA193F185D22C84D3A32872 +:1028A000DCA09F23253C8E72BC92321BF7D9782F77 +:1028B000C0312EBCFEF173D676225F1C5FF8CE0CC1 +:1028C0006C7713EB32623F3FC4ABED30DFC9CC33E2 +:1028D0000EDFC0AAF125D0FB3E538A24BA4FF9DEA1 +:1028E000F22324AFAFDEAFACC2EF933CB9F47E96D7 +:1028F000271492F1BD95898509142F7ECD519EBF75 +:10290000695402B52BDED3B512F33F5413A8FED59C +:10291000FB9DE5E4F7AD49F06079C24C23DF57F940 +:1029200052EF3BEC7A7AF0BEDF548D60ABC92C20BD +:102930003A1FED935815B41F5D23FD128F7656C6CE +:102940002EBE8ECE39034F1B90BFDE2AF0983093F7 +:10295000C7A3DC3A73B209DFBF047AB917D787F28D +:102960003F73645FBA7911FD9508E79BB5FDCDED26 +:10297000FEA9BE21C175625E357A39850722C9611B +:10298000FE7A5C12ED67F177A1DEFC2318A0C00F80 +:10299000C656E756229C8981C03ADFBB4DA1FEC6D0 +:1029A00016DE3A11F132D6B7B693CAED51FCF7B440 +:1029B000EE3E11E4DF45FC417FA93512F9A998FEEE +:1029C000BE9101E3FBF8FB04A95E4E8F297E73C420 +:1029D000FD25B41FF4F541CFB92F93F837688D006A +:1029E000EF42115F07D447EB98EE9382F83EE04B3D +:1029F00073246646FCFA59D09A4B5B278471F0D752 +:102A0000067D93918E20AF1A74F6D654B13F4CE9EF +:102A10003B9B5CD0EEC868FE3ED4CB526026C1E73B +:102A20008F76E5299DDC7F46C4E95D95CAAC3924E3 +:102A30006FA500FA21AE7A299D9F63A6F27B33C36E +:102A40009672B84DAC9618EA35ACD546EFBCC3B813 +:102A5000DF7FAFBBAF3EB59AFB27263E302288AE64 +:102A60008A174BB5F8C08009997DADCFCF42D0FF12 +:102A7000A454E6C1F35FB948227D670AB392BEF958 +:102A8000664DDE6A37CEF343B3673081C7372E0910 +:102A9000CA6B6A9CE44762EE9BE428BCF3775381DF +:102AA000EF939E67F567A13FAFE2622C0B5D13C603 +:102AB0005B859037A85918757C240BE8C887F08B84 +:102AC000E243E8A04178A6F5E603CCADFD3E01AEB9 +:102AD000DBDA45F076687A8CB0B3B4F708AFED4A2C +:102AE000984DF8F1F17D9E52FBFB0F317D25338F20 +:102AF00080057A18C3733709E905EA1DFF8C952113 +:102B00007F383EC0BDD937049FD7F49C297EC98346 +:102B10002EC572EF0A23DA95B7FA25927F171202B3 +:102B2000879338DFA077192779DB4C682755CE9932 +:102B30009585E7A9C71DBE2CB43F4F672AD45F7E99 +:102B40008D857EE7E0789A9FBE1F17F7722EFCE90D +:102B5000BE3B70BF4C511272D15E295796E4205D86 +:102B60004C9A93908BFCED03319F5A2F1F77927FE5 +:102B7000328D73CB9C5984E7CADA6D99382F6D9CDE +:102B800037138227D0AF776CBA053553965F2DC6C1 +:102B90008D891C6F5A118C07E5E5457CBC5BAAF951 +:102BA000787FCDE4F6EA945A180FE0748B58D7F486 +:102BB000EA6D465A5FE1125ADF07498D59E84F7CAA +:102BC00017C78176F95E0B9DB3E4D7AEEDC4F10E65 +:102BD0002E57D95FD08F1B2587F078CC513AB0FCA7 +:102BE000B916FD4A18BF0B0608C6E93E64F6341B49 +:102BF000601F575406859F3952AEF4C6539F0B92FF +:102C0000FCABB17A2ADD5C8EC9CDC961F9A1C98559 +:102C100047A58EA3A548F70E7E6FE5D1A9F1C4FFA5 +:102C2000DE1D2A91DFEF6593E06F259C4F6B726785 +:102C3000BC17E40CA46D53E389BF4D1BC1EF5F4E7D +:102C4000B3F3FAC7464B742E3EBE9ACBF368F983B2 +:102C50007F7A7E1F9643DCAEAC643E92E31358A0AD +:102C6000E626283FF2DE9764E72E3684D66039D810 +:102C70007127255CB495CBAB7B874B25B84F4B8F29 +:102C8000F41C44B9535D94207E77C87388E4D90856 +:102C900028877C51079FDFCDD509C427A2E518C836 +:102CA000899C2C80DF7B53FF5C81DF5FBF91CBC1B0 +:102CB000E17B79BFBE4A2ECF808F2A5923FBE2F3F6 +:102CC0003DB1EF7BF119BDBFA3F0DBAB4FF8F87E50 +:102CD000646B1A497F48651D123F0FEE9470BE99D0 +:102CE000F730FAFD8C81F4090DEF6F85F5B148FBE3 +:102CF000EA0AF51D6D3EC48974BF8B022D9D68677D +:102D0000678AF66568BFE3BC8B343DA851D383AABC +:102D1000B292C2F34EC57903BE568DF22C48300CE8 +:102D20003CEF5BD3D48908CF7106BB07F9F497EF6A +:102D3000F1F7C026A92D95C81FAA5960B553C79FA2 +:102D400086803D63D4C9B9A1412BD8E6E1FC553B4F +:102D50009D11F9E28ED488FA57EF5522CA4B4048AC +:102D6000EACBAF39E289C88FEC1C1551FF071FAAC7 +:102D700011F9D15DDE88FAD776FB22F2C3985FC6DF +:102D8000455FDF531BD1EE4B1630BA60BDC39E02C8 +:102D9000B944E0503B0B93E91D01FABBF1A23FA2FD +:102DA0009F62716FB99CCD8FE887EDE1EF4934C226 +:102DB000FF108FC3A2DE932810EF60D7EE887C97B8 +:102DC000A200EF37C7611A593FFA9EF2F22C07FDB5 +:102DD000AE08ECF511A847F4C113FED20FE0FB9644 +:102DE0009D2C1894705D54970DDBCAEF5D47AF4B77 +:102DF000BBC7CC0C478D58EFEF20BFF1C93C4B6AE5 +:102E0000245E639448BCC61646E2D5E189C46BFCD7 +:102E1000A848BC26A891784DF446E235C91789D751 +:102E200094DA48BCA6F923F19A511789D7ACC64861 +:102E30007CE62C8BC4576EA02EA27C507363245D5D +:102E40000A7C0E5EBF2CA29D86CF00FCEF52F8BC20 +:102E5000A5A6DC84FE86A93E53C4FB22578AD77DF3 +:102E60005178BDD2FBE7C0FF42B8CF353D07FF2206 +:102E7000EDBFE14FDC0378F5A2FDA7E0C700D93331 +:102E800063FD16E20787D26E3AEC12B4A09703E313 +:102E90003C6D468C8FD1F43B741790BDE3E7F6CCC4 +:102EA00044612746DB8753594FB671505FF970AFC5 +:102EB0002DD724F4FF0F91BF78F1656C03DA877F7B +:102EC000A071DEEB9D7FA88F7D88E73957CA2F7BE5 +:102ED000F9F7CD8DC4B72FCBBF95AC301F24261B7F +:102EE000203E3876D9581FDEBBBF60E271B73D3750 +:102EF00059C83F3FF6FE72FAFEB2C4F5B0C0DB5CC3 +:102F00005EAFF8D30FB2F0DE7945B54542793DD6D4 +:102F10002AD1BEABE896C91EACB09764D946A03D95 +:102F20006291B1A8C22E91FFF2C5EF0C6A00FDFFBD +:102F300049FC3CEF9888DB3D96904BFBF57D87C5BF +:102F40006F85F58D15F7400E46D939C71C3C2EF319 +:102F5000D822FE4EF5B15CA221766C8922E22BDFED +:102F6000A575F7FC982922BE92FC0AFBEC2E1E37B1 +:102F700099D345718B3DA39913CF55C2E7B21D215B +:102F8000D4A3F66DCCE5E79320A4E97CB2ADF75C61 +:102F900096DBCD0F16F7DA8D38CEBEF56964278C37 +:102FA00013EFFCEC3382A4C6F92AFC7D837D22FE5C +:102FB000F2B8908FFB98B282E25C1E60222E3640FF +:102FC000FE8A7DB5055CDF8F9297FB58207F03D684 +:102FD000AFB569F547BC8BF5EB86F1FA2CD24F0003 +:102FE000F58B5EC0FA3E2BD53F96E0C9C2735C8D6F +:102FF0005E8EDD343E0BF76D25D88138DFCA1AFEB0 +:103000003E48A5B3CD88DFA55A2E57370E96D6E396 +:10301000776FBADF930DF4913E44A27A13063F1501 +:1030200083FBF4D880FE971BFE744F3FFE97771DFD +:103030005C2F3B9456DCA4F9CFF5FB4FF31B68FAE9 +:1030400097177FD110FD7E2C44695FBF01EC3B4395 +:103050007FFBAEC4C4B85F667CF648DCB7FEFD5D9E +:103060001C98E49F02FEE1C5F568EB7F2FA1E350B9 +:103070001CE0AB3246E27210F7834E7F1968FF699D +:10308000709BE0FC381BD77D30E642B69E7F35A7AB +:10309000F86FCDD6C5454C7005639C97D09BDF1A61 +:1030A000109EAF9E40FA9822E039C5AE50FCF0B1B8 +:1030B000186E0F45C3716C4D39F76709FD771CC851 +:1030C00079AECF06097ED503F0B14BF8B71A711D62 +:1030D00093007EDCBF758309E705705C929DD497F1 +:1030E0007FBD2FD671A57A6834FDF6F2B59A483FB8 +:1030F000D7C0FEFCFEE1796480F30B49E1FD5689FF +:10310000F75BDE7472FB017FDF2D4D170FF866331E +:10311000DFDF4017C497BC425E0218483E7AE07F6A +:1031200038FFBF33BBDF2AA3DE1F29072BC43B2D8B +:103130009551EF6D5588775D2AA2BE6BEB8E969305 +:10314000DAB9C640EBDF9E2DDE7151D890EFA11C9D +:103150006424E9479DEF1BE85CE0B5A45BE7B4C1DC +:103160003A86FC6218D919AF25FFE89E7730FF64D4 +:1031700001D929AFA7DDB503CB0BFE272FD7E4EC90 +:103180002E0C2281FD53294B73D19F5838E28F3387 +:103190007261DE8763D86D984F65751B27C338A9A8 +:1031A0004579A5ABA09F4A33A37A93AE5E748DFE9A +:1031B0005CFF956CEE779E24EE1D64E113A0A59450 +:1031C0001AD18F93951A343AA15FB3B8F799616415 +:1031D0004D1648CDA9EBED4E849F8DF77BB4E4836B +:1031E00052ECB7328FE7AFF2C47E3C08E723493494 +:1031F0009FAB0AA510BE9F5FE9E2E5D5A54FA76387 +:10320000DC6C658556FFA64FB07EA578073A4EF573 +:103210009B86A27F44F8913E3072FAF820DB4AF395 +:103220007D6966B909DF7D99E6E37EBD9B47AD9078 +:10323000502E4EF3AB23F4F7288F67F378A79A51FB +:10324000BC5E8D6F96698E6EFDD3D41E7A3F795A1F +:10325000EDC746E40FEF47EDF3C9F80F19F7F9EDA5 +:10326000B7FD18FD3E955C6FA911FBFC5DDCE73AEC +:103270007EE9C37FA0BC9DC9F9DC642FDFE7D3588A +:1032800023EDCF5AB69ED219AC83D299AC93EFEF0F +:103290008F7BF7770EDAE5BAFD7D0EF7F12D4CA5A1 +:1032A0007A9DB1C34D3C7E23725F0FC407810F7CB2 +:1032B000993D72E07DF8E6807ADA738F235F9BAEEA +:1032C000E969B56DAF919EE6E57A5A1FBE563C8816 +:1032D000CE1106921303F1B581F5B36D46A19FD9C6 +:1032E0007392C27E7B9D9C70E4F4C3DF8EF5C3DFD6 +:1032F000F4FADA807A5AB5E06797D3D306D0CF2EA6 +:10330000710E3C386724BBE273E0E87366538AFAB7 +:103310009B3CDD7D8D860FAD56E56ACCFB589E1D2E +:10332000EFE3951F1D04E50DC29F18DBC9D46DF0B6 +:10333000FD0971EF61EF2085F844AA99C7C1E07BD0 +:1033400089F8438A65159D742FA72709F42C251C3D +:103350009FF18403DA95623BCE5F7ADB5B59934D34 +:10336000D7BEE2479C3F7FF3A099F8F3370912F9E3 +:1033700087BE996E273DEFD443668A3F1C64E6FB07 +:10338000D9ADDD6BC25F6AC2F3989C5CBE5EE9603A +:103390002A3ABB026C1DA55ADCEA29711FF29B0474 +:1033A0000FBDFBFDCD83C912F63BA775F0CD38EEFE +:1033B0009CD6CC5C8E545E5FCD51A8BF538AFAC5B3 +:1033C000115CD7643BDD3B63CC5F82FE578B61C4ED +:1033D00044AB01E5CA033D47A0FDA22CBB13E9BAEB +:1033E00032E7C4F142C87FB2C7446FF6CE7F6A6A43 +:1033F0007C089B19D5545F715F3B677E30528E2CE1 +:10340000DC19995FD411996F889223D1F2E3AE9CB5 +:103410005EF9E041F970A5769622A98B39FD07295E +:10342000BE6681C0BFC5D2D88D6F835A1E2E2C5D5B +:1034300081F4CE78DC54F223B9A5A8370FC9E1781E +:10344000BD2EC7772FB6B7E4140D47BDB222A77AB9 +:1034500016E1736B8C82F6C13731DC5EF8E6152E0F +:103460005F3766F3F28D8F591489F6BF5A3DB20C5F +:10347000E3A2F8BE6AD8C2E529FC59F93B7EAA1539 +:10348000F1B9D1AC9AD3B0DDFFE0F7BFEAB6DC45C5 +:10349000BFB355CF3AE99D9C5772387D35189E359C +:1034A000E3EFAEE636A94357C07C17FA6CF4FB5B3A +:1034B000C66F8DF4BBA36BB1CBD118EFAF3AF15D02 +:1034C000F8457BF979D2861CEE876DE969F3617F57 +:1034D000DABD37EB9EC9013C0ABDF1DB4A7A5FEEEB +:1034E000AE652FD33D0CB7B927B11CED860765A299 +:1034F000FBBBEEFFDD233CAED1DB89BF2F76E6417F +:103500003BFDBED8A1AD165AFF9957B8FE71E6092A +:103510000E8FBB32ED41ABD477FD4D5248C43B75A5 +:10352000C6213EFEF6C47D7188C7BF69F18CCE46C8 +:10353000BA47CF94C688FB31DB1F37D07B95DB5B66 +:1035400097FE6134AC6BE394192370DD37268CB0A1 +:10355000E17B965AB9169F61748DFA25F2A11BBFC3 +:1035600035D0FE3082BCC4B8E0CA87AB294E76BBEA +:10357000CF9680F3555ADBE91E3CAC8BF0B6FD418B +:103580002BAD2B9775ACA1FB42AD5584AFBAD63AA3 +:10359000C2C7A0A936D24BB6EF77D0AF806E778E78 +:1035A000B261FBEDCCE8EDCFFF3F25C740782BCFD4 +:1035B000E1FE9EEDEFF1F745AB0CD74D4439BCE889 +:1035C0004199E2750F4FF9E838BEFBA9ED2F69CAA2 +:1035D000A8F42E1EFF40BF5F7BA7463F623EF377F5 +:1035E00018E81DBECBED334BCE7534BFE8FDB63DBC +:1035F000E0A1DFB388DE77475A4B6DE8FF8FDE7FAF +:1036000077B6E6D1BB45AC99EFC30F617F90DE7B07 +:10361000E5FBF0CFFDED43963925224E5EDB775A70 +:103620005EE3F7DA79BED5C3D4A7ECF44E06DD8BA2 +:10363000302AFC772A8C0A8FAF36FE63E9CEB701B9 +:103640004E2D39FEF3385E0E534B90DE941E670507 +:10365000AA2B7611CFC9F2F9BDC9CD269F4CF468CB +:10366000F4FFE66DF86E6AADBB06F7BF24FABB2E19 +:10367000C77F01FB99F380FF8B030CE96E18F18182 +:1036800039176BE877C6EC1BB57BFFBE0AFC9D6063 +:1036900093DB4774A9F1F1C130DF6DFDC429E42942 +:1036A0005CDFFA3F1990EC0E008000001F8B0800D1 +:1036B00000000000000BE57D0B7894C5D5F0BCFB45 +:1036C000BEBBD94D7693CDFD06C96E6E0412C226DF +:1036D0005C44045C12C0A888CB4505B5BA8100B92A +:1036E0000741FBC5169BC5849BA2861A2C52D40D9C +:1036F00002628B1A2C2285401750C4AA35FDD416BD +:10370000B5B5895A946B0254C57EB6FEE79C99C93B +:103710005E42C47EDFFFFD4F9FE74FABE3BCEFBCD3 +:103720003367CE9CFB9C99CD8E73E96CF98C6976DE +:103730002B63A319FC39E72A718C3D59A5630FD877 +:10374000A0FACDB72A1BC358A491D19FDDC63C6116 +:10375000918C19C7EA9C5E33D4C7EA3CD7403DDB65 +:10376000C19F9BF139F41731CAC7B0DF6C7C5FC0D1 +:10377000D89224D5F6692CB477B0EEC076F07D37B8 +:10378000BECFCED5D1731D33DACC30D6BDF05FDFDE +:10379000DAE17D2BAFE3DFB7F0CFF916A5B41DBE9C +:1037A0005BC298B5A108E00080DB693CE66C33E3BE +:1037B00038061AE75BFCBB9AB19E9449836DF138D9 +:1037C0002D67561CCCC3CCBB62D7C344183C571CD6 +:1037D000CC6781F1D9CADE5775763F9CE5466F8983 +:1037E000C9E6EF4796E502BE1F09F8C639A09E3B21 +:1037F000307CCC6623BCCAEF257C863AB3C60A0867 +:103800006EC600DFEC6E9D371BFA33A42499592451 +:103810007597ABC1BB5416EE784061EC89A4EDD32B +:10382000F0F957A6C80216059F84433982B10623D2 +:10383000AFFF4778E4662C07EB98A6C0B8061D9B3F +:10384000ACC460FB342F7E17170E258CF71FAA8B94 +:1038500031159EEB5A1496C9D864015F22F3290AE8 +:103860003CDF58B9BBD00AE3C6D79B0B558027C5B0 +:10387000E49C6223BAB0A5B92C8C7DAC6773DACD19 +:10388000FDF192629A741DE17935AC490263F3E867 +:1038900013C6129AF8FC7A2B75DECDD0DFBC2EA5AC +:1038A0005B417CAF9EE2EC92EB9A01E3EA5A8C0812 +:1038B000D73D363BA7436317C3F93F368E591F8068 +:1038C0006A12736C5033FDEB582FD651E950F8FA59 +:1038D000C11BE318FFB8ACE5673038E0D7CADBC9D5 +:1038E00071E7E56BBEB04B8C8F7F8170CBF6118F8B +:1038F00077DA11AE81BEDB64621E630CD28FC386A1 +:10390000EDFE99E1AE453CA43695D910BF8C75DA31 +:10391000116F87927D1AD60F996C831C401FD38C30 +:10392000AF1DC3FEA71959BB8AEBEDD09FEECA0DA0 +:10393000846750F4F13C5A2A86F8AD6B28717D3AC1 +:1039400012506980F1109F330C84CFBA7B27D1F3DA +:103950007DCAE2BFDC07F8F2BCA5776C856F5A67B9 +:103960003893C3E3B04CD079807E76FF53E5EBB05B +:1039700002D601EACACCD26415DAD7BB0CBA30E859 +:10398000A7A4E39CA10BD6B57E4FB7810D071424E5 +:10399000CD7ABC1CFAAD345EFF38D26BEBF2E26438 +:1039A000649EB34AD7933FC6712ACD8EAD80A75689 +:1039B000BB333906E67395AABBD385CCA559C3673B +:1039C000C07CAF4A677DF599585715AA9F00FA79D0 +:1039D000919810DA0DF7AF67BAC07B9BC6887FDA83 +:1039E000BC3A4F36D0B3B20CF813F0D3C66CCB91BF +:1039F0001E3CCB18CD8F69ED3E1DD4DB4A6D0E9475 +:103A0000535E0B2C4A14B6833F6C67367AB7DAFDE7 +:103A1000E3E3F2223D248CE5388676A548C7924E32 +:103A2000EC829E5AA3F97C2CF92EBBD9C1D8B0F4F4 +:103A30008D6F87033D26A83A60766AE2616305DFF1 +:103A40008E137407FF5AAF03FCA6E0DB6BD64D1E46 +:103A50001F5017EDFBBEF73C3C03DF1BA16FF91EA7 +:103A60009683997375B2EE44B9B3CAE27FAF25412C +:103A7000FB6659BF7DC6942C98AF22EA9EF21627AA +:103A8000C0FB8889058D17089F16D2BF1EFA37DB49 +:103A9000E4F7AD37627FEB8B64FDFC234E80EF11C2 +:103AA0007D707F44F2E27BACC8F18C4F17AE5B3B7C +:103AB0001ED7CF5988F4BD26DDFD16CA0B5BAFB506 +:103AC000189683ADFA605ACB081BF2E12C12BEFAAD +:103AD0008BB3492FE8E314D21FFA38E64C07BAAC8F +:103AE000CFCAD8ACE29C349B07D7CF64B715E1BAF4 +:103AF000FED1A6903C28D459495EEBE326F952A1A9 +:103B0000999E3936BF058B363EDDFD218E97903E5E +:103B1000ED4818AEDFCC61056EE8BFFCA2E6447A42 +:103B2000CFCE32781568676C65A46FE47A87091E7A +:103B300036221EA8DDCD5B71FC3176F75F6D01F298 +:103B40003ABBD566C0FE9E1672AFB53243A7E4FB02 +:103B5000DFFFDDA623F8407F51FF0FE4CE2C364176 +:103B60007F5AF4E4D1AACDDF2EC39AA5C3F9670C1E +:103B700012FA11F4EE246897D1EA4E40383234F745 +:103B80005C9C77C69C85068F1DFB5569BEA3567B42 +:103B90004D93702D2B742C1BFAFB58C86BBDB5BC14 +:103BA0000CDBEBE718CD48BC1B5DDB4CD87F76EE19 +:103BB000E6D519A84FAC9A03DB67C3BCB19D76EF7D +:103BC000AD5E94E7129E07AC5A29C2314675DF45B7 +:103BD000FA27769C13F96570CC75A50EE0B754757D +:103BE00067E152E8EF3105E69DDF5FDED765F075EE +:103BF00069565C9E1B91DF0A1943BE94EFD31D8C5E +:103C0000D637DA6EA076368FB518E5D6F8BFB90884 +:103C10002FD1768DE67740EB8AB022DCCC79D73C89 +:103C20009CA7CB6C43B9C218F037B48F6BE4FC6D22 +:103C30008CEB7A7004BE77E81CD9C4FF9CCFCFFE12 +:103C40003A7133E947BB3BCD1E8FF3E97AF4469CCA +:103C5000CF831AC927A671799536CB5C847A644DD7 +:103C60005CD7A3A5503EA1671E13C8EDB58EFB9D82 +:103C70000ABC3F10C7AC0857042C53127C6F362B7C +:103C80005E06FD8E023E4539C99214D2CF6647EFDB +:103C90003BD8FF75B6771CD8BE44F31D247D166251 +:103CA0005F105141BD58D4B2818D8E1BD1BE61CD04 +:103CB000DFC6FAED8E29CCD98CEB27ED91C70C200D +:103CC0004FE0D3C774462F0A86887CA76A81FA9D85 +:103CD000B9CA78822FAE93A94837A0BE515E66E478 +:103CE000CE3430589F052D9C9FE6093A649A23C52F +:103CF00005F275A23D42D875CD54927EC3F9AC351C +:103D000078B7421719AB618102F43963CB793BEC88 +:103D10000FFA31DCCFE578C628BE9E80587A7FAD99 +:103D20005D11FDDE2FCA165E8A71259FD5239FD9AE +:103D3000B8DC08D4CF52BFF6549C8F447930AF43DF +:103D4000F5A1FD7739BDBC1148CD84F4D6A1927C94 +:103D5000F7F7F3F7489B79E07EDC082FE0F7D0DC3B +:103D60002F23BB60BC8D1D4F9B106F8FCD000D4D61 +:103D70007A0AA81E4A93E65A80740484F6700E8C60 +:103D8000B3F16195ECE0C7944EA7CAE99CF4CF9DCE +:103D90005933EF7A15EA31A38615215C491A33AA03 +:103DA000404FF70ABC441D02BC41FF8F2BC022319B +:103DB0007EFC3EAEAC4B5E02CF4795727CC6943A19 +:103DC000D55A281F89EE9D827CDB7B2D639BA1FF4A +:103DD000C488C56D48FF8977E61635C13CC347B234 +:103DE0003B67C2773F1174920CDF4481CC4EBADF3F +:103DF00063C7FEA20EB9089EDEE1E18ECDD024118C +:103E0000E66E89A172B509DBB1E50AB65B19AF10A0 +:103E10003FAF2C033D9C4F6CA445C5F0F218948A2B +:103E2000C69AF5F89DC6B470FEBC19C7591FC9E7FC +:103E300013AF53EF9C914FFA82EA31C0E79B117E9A +:103E40007B34C19518C64A71BEF81CE907EDF39D95 +:103E5000F03EB16471218E9F98C9CB07843DB49127 +:103E600079376C45BCE61AAC88D769B947BED32E02 +:103E70005A9D386B03AE4FCF99E34FAE8067EB97F7 +:103E8000CF98BB00BF1FCEED11E6D9E99845FA3EA9 +:103E9000D87E3A7F3A5CA780423A7A34330AED9C66 +:103EA0002D762E4711D72C19DE335B9415E03A7A24 +:103EB0003087DECBFA853FBD6645A6BD0AF537AE35 +:103EC0004FB481EC27408C07ED0FF3CE64EF0376FF +:103ED000B2777CF4FEA5307A2FEDA6B38DAEC7275E +:103EE000A3C0D25C2467CC3BB31D2887C01E22B977 +:103EF000DCBBDF4276DC09BD93E4B967FF10DB561B +:103F0000698CA01CDACFFB67B95D0568479AF5CCD0 +:103F100085EB676EE3F691A42BB302CF898E7D56B5 +:103F2000B477CE326E4731CD99346BB8BF5DB39064 +:103F3000E735065F0EDA39F23B594F09638B653D71 +:103F40001AEAFB84DEAB09E7F55546F7EB88FFDD9F +:103F5000065641FD44C27373007E0AB53EFC10FC58 +:103F60000F0DF6A27CBE2A9DCFA7778D12841F6508 +:103F7000A691F4F4F1426D7398E2B7133FC9D5F9F5 +:103F80000C0581F6A2CF3A23601E120FF3377CF6A0 +:103F90000FF46B243EE6BB0CDD6A417F7CC8EFE684 +:103FA0001795931F35BF6AD9742C43F55A5FBBD55B +:103FB00061C2E8E17EDD715C0398F797A6490624AB +:103FC000AA1FFE748601E977215B4C65056B317091 +:103FD0007B9F197560AFD9566B345FDB76C56BB3C9 +:103FE00073F1A723DBD3AAC3E7D5208E37A208F746 +:103FF00080F4B8021E2B3A05ED2C5B33D41301EC90 +:10400000359A07F550DBB108AF02ED56C5D90C481B +:1040100087AB9A75DCBE5DCBF511F49B8474E169C6 +:10402000D639B11F43864A749D9621F42E988A048E +:104030008F289BF5C22E17E32D673A1F963A859776 +:10404000ABD02EB8847F27FB6BD62F36A2DDD23BB8 +:1040500058674539F3A5C13907E7F3654C0E43BBF3 +:10406000A5D9B27875297F4FBCF5A5C9574AEF0B82 +:1040700075DCD04576433BE77D531BD2C537761DB3 +:10408000E13514DF0B5A82EB8B3604D72BBDC1F51B +:10409000F9CCFD42124CBD7A7BF0F36FECDC6E9CE8 +:1040A000C71CB43ECD7ADB7FDA91EFD6680CE15FB6 +:1040B0003E88E34D37989719D193E7907E8C36B0C0 +:1040C0006C8297C39F5118A320BCCDD19C1FFEA723 +:1040D000F086C2999391C3F11BCDF9A419F844E07D +:1040E0008BE4C4FC1D614FA31C986FB145E23C4EAC +:1040F00029BDB9A48F1EB2D8B6523B2BE9DB79C2D9 +:10410000DFBD3A83EB894F14C7361F7CA77BE4B928 +:1041100035A8CFE63FA816A19D5C32CB4C7CB7F703 +:10412000A4D98B7C5701B84B06B9BDD7F12ED9D194 +:10413000A1F3833F9B26F5372CD93CB0DB4DE40F30 +:1041400007B4237D0D7422E535F4694F70DD984185 +:10415000F681370FFDB7E327783C63BDEE939DAF43 +:10416000E13AEC3491BEAA5BD6BB8DC1F75FC6BB0A +:104170006FCE00B84FDFFBC154C5E69F7FCFFE2155 +:10418000442FA39AC3FCFDE3BFD606D471FCD530FF +:10419000892BA16C0D7E5EB129E43BF6CFB040388F +:1041A000A5FDF298C13D14EDD18DAE3163109EC7CF +:1041B000F42DA5C8EFA529EE0A9CC7A7535C477448 +:1041C0009CEF72D0CE39F0CDFC4C0DF0E83966741E +:1041D000A0DC467B16E564869DE33FC9C83CA84742 +:1041E000A59D2BEDA950FE5A2AEDE90CA7D18EF81A +:1041F00012713755D84F46F38B4EB4FB5887624542 +:1042000075526763DD8B308ED6A17806A31F9FA5FC +:10421000233FA7CEACEBBE02E371661DE18D65695D +:104220002427EA5A996711AC97D1E8F4A5DAA89D3A +:10423000E78A02F4AB389C7D76FD9E19CC6D26385A +:10424000348403FD940530AE1EFC0FFCD30B3F45B8 +:104250003FC740FC3E2A4EDA855EEE07B5BAFBFC4E +:104260001295F0E4D2B9B83EB61E8FF0E3BB25C379 +:10427000F93CE2F3AFF800F46F42B2F3A758FF0243 +:10428000F5F408C63620FD42FDE8BBB3481F7FC1E8 +:104290005C423FDF1C85F69BAC1F57DD3FB4023FFD +:1042A0002C621E92CB95CC4B256B8D253A58A831AC +:1042B0009F06F85F38DBF93EDA15C897BE10BE0CD2 +:1042C000ACD7B04E2EC7813F7D01F45383763EE0DC +:1042D000B5D6C87C1158B6077F57C77AE9BBFA3DF7 +:1042E000DF86F982F886D355A2BAA47031E2E97B61 +:1042F000C621BF6FBB13B696040C35801E25BDB01A +:104300007ABFE2C578CE54D5EC3442BDF6211DF11A +:104310003774386DF418D4539C9EEA6D534F505C3B +:1043200010D815E58071B7EABDDF4EED1D3EA8D768 +:10433000EEB760848255D82AA6A17EADF4EA3FEE9E +:104340000A985715DB391545CD17EC4D03F249F5A1 +:10435000F6E0F7B5EDC1F57AA67DDC67C7C1380D8B +:104360007F9AE47B25801FDFC9B0C4117DD898FDFA +:104370005BC4BF7A7B94FB127C22CBAF1A9DBE57E5 +:10438000F4D05C717E20E48B01F9B14AE3F1E0D016 +:10439000F643D2397F1D365F887507BC2FCEF750A4 +:1043A0003C624CF1A5F9F2F30CEE3744740A7B56EB +:1043B000F3B0E880EF07FAEE5C068F0B1C36F0F7DF +:1043C0008F58229C88C724035B6D2CF2B74BD2B167 +:1043D000668C1F8EB1BB2EE03C8C36196FF030B46A +:1043E000FF3DF1DCDF90FE6AAAAAA3754D558D9BB7 +:1043F0009B00B4D7457CE472F41291DFAB477CA2FA +:104400005F8F7408EAD9C362284EECC43215708FEE +:104410007E828C67C27B8676FCB5899C0F0DC8FEB8 +:1044200045F83DF3617CF90760A360FF5199AEF058 +:104430004CBE6F40F6A984A34ED0591F1C7B148A32 +:10444000E349BAC5F814EA03D61246F2894885EA68 +:10445000C9E4977E8475E0DFAC145722F52FFCFD8C +:10446000F98F0C267F9F35C492DC5865E17E08C029 +:104470001D8457C9779B1481DFE24ED277BDF78147 +:10448000CDAF04C429C4BA66652A4171FA47843C99 +:104490005E98E9CCC6F14FBF6F34627C719488D7C7 +:1044A000D7B9CC5CDE821C40B8EA9631B2D3EA843C +:1044B000FFBD26DD3D02BF5BF581D9A346A15C6D42 +:1044C000A3B88C3ECE3D12C553263E1F41F1AB91A1 +:1044D000D8AE7C99FBDC41E68F5F8DF9B664652927 +:1044E00087D78A76541CDAE50174373B93DB4DB2EB +:1044F0009C91A904C9718CA9113EDB55C26F84AD92 +:1045000093FC8FBA5DDCA818A3F27D1E561DC3D0A4 +:104510006FAADB35A9F055ACB79B0A316E34E6C300 +:104520006956B4F34E17C63810DE27ECEE6B33A194 +:10453000FF34B5AB12E59C65942FEDE7D05FBACBA5 +:104540004C719050FA93749708F48AF84ABCCDE8FD +:10455000457AED8B73E899DB98E9A7CB71999CCEEE +:10456000D2853E495FE6620BCCFEBA398EAF133C72 +:10457000D7217E9A33A68C43BC8DCBD4E8BBBEFD3D +:104580002523582719FDF9D1CEF83E4D03EEDB2047 +:104590000A3C01FB4A19FDF76D243CF27BB96F130D +:1045A000715123BC6658795CD1B25AE019D61FF11B +:1045B0003CBEB7B3240AE69BD5EAA3788D09C74A67 +:1045C000C651BA1E1C81F1AC586D3CC6139E6C28B6 +:1045D0003A84711E6D4DE704C4AFADC55A8C2155A8 +:1045E000ED1F9A8BE2378CD35979AB95EC1EA62D33 +:1045F000CE453FA645D0E99A746703CEBFF83D3D4E +:104600008DFFE543DC8E6B4DAB498F86EF3E791F06 +:10461000E85219587E7AD82123DAFB196B33287EA9 +:104620006459CDE33D2C0B0804E0D51EFA9387C3F3 +:10463000F7EE6004E51799665A37FC0EFD88F9CD50 +:104640003603A2CFDECA7408B765ED4C9D58FC64F2 +:1046500005DE67AF9EADC3784CB68823858EDF2616 +:10466000E8F537DFA81487D719791CB8362BA68D43 +:10467000EC0690E338FFDA217134FF8D995C9EEAF5 +:104680005B26517C3CD46EA9DDB59C215D84CA1F9C +:10469000297724DDFD46E3F1B5DF30195FE3F4D778 +:1046A000ACE7F8F6FC4347F2275DEC2B663EF24D93 +:1046B00032F5DB17E7F252A9E96D2B9350862DEF07 +:1046C0009AE881A7F3D746EBEA902EF58E25D4CF52 +:1046D000436646FDACCD38948B7CB2DACA141BF627 +:1046E000B7281DF9907D18C6905EB487CC3A94E740 +:1046F000DA3A273E655A744231D5D7431DDA2FCBBB +:10470000D473FA16F4D8ACF42A64DF306721EABB1C +:104710008599EEFD48077DFB880DE15EF45B2C1A60 +:10472000B79B2D0D1F3CB71CEA4F0A7FBDF891FCCB +:1047300099442F6B3405ED842FA37F4FEDBE1CCD24 +:1047400014B4E75E1778BE04BDA43258D78CFDAA16 +:104750000BF951D373BAD7D6C4B5E177DD09EE377B +:10476000118E09CD3E32590F583F7DB4D4D67F3DCE +:1047700006D2077F14F3634ECF25F7F71C3AE66E97 +:10478000E776A609F960AE8DEB1FB91F1ABA0F2A9A +:10479000F73D3DC51C4ECF4716923F8C2D1E8178AC +:1047A00093FBA76F9EE17121B93FFA999443A5202D +:1047B0009F402E2CC671016FE732A3E9F9BE18E6BF +:1047C000B4C6E07EA7FB24CAC386AEC224A49F7DE4 +:1047D0009109C50AEDDB5E769FB407BF7B53F89164 +:1047E00038BE1DE088C1FDBDD8FEFB7B31B8BF17C8 +:1047F0008BFB7BDEC717E23C6E12FB6EFDF6F79675 +:10480000FEE53EFCEE2DBD03F585DCDF4BC1FD3D35 +:10481000785F52C1E923A54325399152CAF112E3C9 +:10482000665E23D455DCEF8B0DD8EFB3F03843EB45 +:10483000024671F09F2AB6C7CBE302F7FDF8F7AD49 +:10484000B5362FAE3FC67F90AE7BEF6232FE43EFB0 +:104850007B6EB78AF84F17433FA9F74AAECFFADE0F +:10486000CFC9E1F133DC7CC1F7738D221EC6E3476B +:104870009EB9C3BC81F1B09EAC181E0F13FBCC32A5 +:10488000BEDEA309FEBD5B47ED7BC4FE6131C6877A +:10489000615D7A98A0838A70B12F28C6AFC820F8CE +:1048A00098718A3330CE08ED3DE86F79CC3AD19ECD +:1048B000EF37F688FD46B99E3D621F51EE1B263448 +:1048C0005DDA1EFCBDE0AB1189CE1159F17E3A973D +:1048D0007CB1AF28B118FD9381F8E31DC6F5C882FD +:1048E0002CD758FC7EB2D151BE1E1E1D16F13C368F +:1048F0008DFB3B4C73BB715EEFA5E416229E42E13B +:1049000090726C9FF82E2F9519D1EF07DEF6A03D1F +:10491000306CF73092B7D76471BB024909E30AC320 +:1049200084AECC4B6C8B41FDDF7F5CD7F099C30725 +:104930001E6F5696733ACD5BB41F482FA1A4C17168 +:104940000D86F6BB283E5A6B76203DBC8BAFE0BB94 +:10495000A76F0EF3615CB8476F5E8D7C7B2CE28E97 +:1049600023F180B2FD46F7EDD8FF9C5BAE5D897503 +:10497000E550AC6D09AC434F59D7188477A2D1EDFF +:10498000CE02386A8CEEF40498DA99C1EE215128EF +:10499000475DB1423FBB86BB2E093F87A744E1E399 +:1049A0001F32B82B719CC34A97C5817E8AD645DFDA +:1049B00031733CF5F391E0FB837AE7F87300FFC1B4 +:1049C00075E9854D004F49E4FBB7D5A33EFF596219 +:1049D00021D94B022F87C5BC16E85C093E3508DE9D +:1049E0001FE23835D6B2F464A0C7337A01AF59C09C +:1049F000AB39067D17BC24EB907EEF5382F8E76558 +:104A00004F34F14F98AEA98DF8ADCCE8407EDD145F +:104A10000E2C0076CFDB021EF03718DACDF09CECBE +:104A2000EAADCC310C793E358CF34DEA2AC58BFBCF +:104A30001232AE56CE5C69685A3E9AE57E18F1FC99 +:104A400097887F8EC6D09EABC442E376BD1FDE46FC +:104A5000FBBBE339FC975B7FC6D6EA30FE3153C41B +:104A6000B3669E3190FFB440D85333B104F8663139 +:104A7000A71EC7BF89B9F5A8176F611E2AE7322F95 +:104A800095B7311FBDFF01EBA2FAEF230A063700ED +:104A9000FE67FC6C4836C6B102F0BD85F06D74DF70 +:104AA00019C7E9E3B3448A23C47F2F7A9D21E80321 +:104AB000F87307CE1FF833AB3023804F26C78B75B2 +:104AC000EB6A8A02FCCD48B017E23EC0D5DFF07534 +:104AD00099FAA995F0735001C954E4A70F1014E690 +:104AE00064C0C33562093BCF73BD758DB39AE2D8FC +:104AF000479DCBE3E200CE29AA99D6A5D3A192FF88 +:104B0000BFED1CE84168F7DA72BE5EAF5DA990FEAA +:104B1000BB2E69DD640C3132D56CF1C0B85F3855FD +:104B200086E34EDFC0E301A583F47E3F1DFEB92E70 +:104B30002BB83ECDA9529E16380A1AD2DFB4FC60BB +:104B40003F7F3A5B7B0EE3EFD32FE3EFFF3E0BFC9F +:104B5000FD3CF88F616C18C5DFBEBFBF7F8CE44899 +:104B600088BFCF302A0972EA461397A79DE30F5FEB +:104B7000D503F3BED061276CDE334CF8F1D9AE2EED +:104B8000FCFEACBE6B21AEFBC78D80E1218C7DDAD3 +:104B9000080628D0F6F1462BD53F6F4CA2F264A34D +:104BA0008DCAD38DB9F4FE6CA383EA05D9CECF713B +:104BB0009D5799F87AC8F1970A7A5D65E2F6C45272 +:104BC000D33DC7CA008EA58379FCACA2BD652A86F9 +:104BD00039AAF6B41FC1129EABE0DBB0A5EBC063EF +:104BE00002B817BCE25E8966CEA237BBA6A35819ED +:104BF000FDDEA7098897DA8B0A7303EB1CCF757E5D +:104C000085F07FD63896E039D1E824784E35965233 +:104C1000796DB6EB1B84CBD9D1BD3209FABB6147A4 +:104C2000B786F1BE294E85ECE9894EE6F5C27A6C6D +:104C3000D0733DB121D9E8403E9E347CE6137733F2 +:104C400094D36E4336F47F53CCFC29B1F07CFAD870 +:104C5000320DDBDD02748A7549C797E75F8E8F5A84 +:104C6000411B670E2884A73307A2092FEFEC5209D6 +:104C70009EF3C7C2C9BE38BF6B5F35D54F873B7047 +:104C80003F3CB4FDAC973213D1BF3805EBC560DEB5 +:104C90004B5ECA4B44BFE5E51D4A3BFAD7639E8F86 +:104CA0004E43FA3D15D3FED18F68FFC1407165A018 +:104CB000D3E31B51EE0D4AA27DB7B3423E83651785 +:104CC0008176649D41DA95EE3CAC9F0AE7FA1BC7FA +:104CD000B1013E570938F6A5A5907ECE55341DFA90 +:104CE00087FB5EFC8193DB7B7CBCDD1B79FFDB9E5D +:104CF0007BFCFC5E1AD74BFCFBECF34F64FC186AA0 +:104D0000CFEE5C137E1B23BDCBC682DCDAB72EC28E +:104D100089F0EED33B3E6A4039FD8499E23CCF3CBA +:104D20007CEFC77BB07CA8B6E85E282765C7103E3D +:104D3000CB7F3A776A32B4DBB69B1522BBE4C11A4B +:104D4000A4021CF91BCE1D4A86F10ABCD125989EEF +:104D5000E3D85E783805EABF7C59F1617CBEA8BD16 +:104D60006DB382A4F7CDD32968975E83CE7D807D15 +:104D70009F37B8F4A8CAF30D83F47C7EEBB962ECDC +:104D8000EFB994F625D1C027C394F693CB615D5655 +:104D90000DFE43919BF0C5E32B2F75CC7A87CFCBCB +:104DA000938C76ABA7CC4071709CBE1EEA6776658B +:104DB000923DB15BE7217DE3996774A05F74C6E51E +:104DC000791CE9AA16DAA3FD5A5BE8891C87FEDE86 +:104DD0009FB31C40416CF093D794227EEA76AD9F3E +:104DE0009A02EDCE8C670E0540AF78E9C254F2B757 +:104DF000C12B453FE7CCAEA6845BE1BB07F38B2913 +:104E0000AFC4A5B6D338AC9E8FF333A1C7585701B2 +:104E1000ED8F1069DA288BC188CF633AA20FA632D2 +:104E2000FF7AD5772CB7A39D3ACA6D74A01FBAC17B +:104E3000EE49C67899D48BA0DF2A913F920DA25FEC +:104E4000EB2CB2F7BFAF5E937134D9DFCF0C3CAE21 +:104E500027E36D9B0C5C0F6F0539827426F5308C4F +:104E60007B6FF6E880781D08ED428033F56761DCE2 +:104E7000AFF99EE34BBBA95EF83FC5429FCE896D5B +:104E8000DADF05F3FDABD1BD02C759C09C3C0EAEC5 +:104E9000396C2867DF343A576693FDD49B867300DC +:104EA0007DF900D6EB54B0A73203EC29E3F7D39792 +:104EB0005F199D2DF8FDF76D1F2A5F977EA1638511 +:104EC0002857D78779515E34093FB049F87D4D9610 +:104ED0003146940FEC155DCD11D09F13780FFEFD78 +:104EE000164B11C90F4C4FBD14DE0E00FFBB41CE57 +:104EF000F8402FB88760A3CE268CEB38E1FF16A0D0 +:104F00009F8917C1310CD07BA1DFC37ABD80743279 +:104F1000894504B573B2688AEF3273CC7F6BDEE3E8 +:104F2000C5BA49F8C70BBF75FCF96311281F977EF6 +:104F300051447272A079ED17F3FA0DCE0BCABA6123 +:104F4000AE43B80E13FE66D590AF276A2A7307E802 +:104F50006998C7517CEFFC263C681E7D74FF3DE7D5 +:104F6000718FC23C18CF66E778DE5187881F745472 +:104F7000E6531C6637FABDE89FCD3490BDDA61591F +:104F80004CFE6CC75BF1240FF6C9F84C19CFFBE956 +:104F90003089EFE3ADE47FA684F1F7ECB6BEFE49BD +:104FA000BF74CC4DA1FEF729BEBC17B0FF19C601D6 +:104FB000FC6795F20E7B978791FFD95AB8F88DE17F +:104FC000F87E791E8D2FFDE314D5BB3A03E54FA380 +:104FD000CAFBB11CBA0DFDC4D673064A22ED9F0F61 +:104FE000EBB160DE82CC8795FE353E477FA97F5EC0 +:104FF0002CB407BCBE2FD6EF98C6FDCB63E8CF8E8E +:10500000F0EF031CEBCBEFE0FDB8A7476848FFA12A +:10501000CFE53AC8E7D24FFD40CFEDD2D6E896783B +:10502000DC47B3E4B8B51C58E7B90BB69ADC01719C +:105030001693E632E0F34FCAB73E8B715556CEFD5C +:10504000B70F047E3D5F73FF78BCA1EBFA9B012F85 +:10505000E3FFAE533CB6FEEBDF971F721FCF036733 +:105060001ACF577EEACD589E0F93CED7AFD7C2E363 +:105070001E7E3CF13C9BA7DA87F23882AA38D14FDA +:1050800095793627241CFB87D3BA97E23E18DA11AC +:10509000CB746D18E7F089FC9BA7443CD1D3AE27B5 +:1050A000789F12F8BC53C8BFA7982F15FD334F87C0 +:1050B00049E41773FA7A6A4F1E8DEB63B6288A1F8C +:1050C0001C55198F07389230CFA847CA1D45E4C92F +:1050D000883C9AA704BEFF85BC9A5139F1DF9157ED +:1050E000D38737D013507FAA2156E61D89B88B2568 +:1050F000146F1CFE1ABBC05BDB9A1CEC67BF9EECF6 +:10510000A213FADEB7AEC0F9FC3A93E74D3196B37D +:1051100001FBDD3398E21B323E06782BD883ED7617 +:1051200085115E24DE64BC4CCEB32F8FE73EDD6676 +:10513000F43FDC061E37FBC8DA6509DC2FFBC875B7 +:10514000DC82F2E94F0DAACFF01DF937B78BBC9E78 +:10515000DB453ECFEDCB3EBE1DE5FAED15DFDC4174 +:10516000CF6B82F3137E92E3BC352790CE4EE8FAE4 +:10517000E25088AFBDE618892F9E7775C2DC8FCECE +:10518000281FE2F361025F3B29FFB4F72545E08B5E +:10519000E3D3F3F8102FCFB7F04604E623ED1579EB +:1051A000EB7BBDC179597B659EB9E6257B53E2A5B2 +:1051B000C9EA3006E2C59EE0BE1BF9EC7E73911190 +:1051C000F7B72BA28A8FA27D59A781BE067C8F1EBE +:1051D000E2BE17DF4B3B46C6474FEB3B8FE8109EC6 +:1051E00065DF4F8F568777D429C0C7273BB6EEC6F9 +:1051F00012E021FA612F72B97ADAEA8B44B8AAE197 +:10520000D1C418DCE7059E8EE175B45B43F3568884 +:105210005512F87BB417AADB55A72912EB067F3B82 +:10522000A4071DC71F7B9EC723AA587BC27295FC8B +:1052300037E358B073CEEEF95524CA9D2AB3D9B8D6 +:105240000CEDAA903C92AA5DAB3A330BFA3FEF0FFC +:105250004F88BCD9A90A3AF045069E4BF0AFBB2F48 +:10526000F2D2E713A03DACAF5EB43B2DD6F774C8C5 +:10527000FA9EEE5B5FDE4FDFF3F64FD250CF9F9585 +:10528000FEBF83EF7756BFC0F72F5708F95B1DDBD2 +:105290003E06F19DA206EFEFC9B2DAC8B4F101FBF8 +:1052A0009AD5B9CC88EB21E377D52EA68D0BC82FE4 +:1052B000ADF63223D677EB408E9869FD34B18ED4AB +:1052C0000FB4A775AC3232E344A857617F58EABCEB +:1052D00069B87E12AE7E7084E0F9680E8F0FAE90D2 +:1052E0007C613178A55C44BC0DD960086A7FD662C8 +:1052F000B8D309F00CF5063F97FDBF9BC3F7B57215 +:1053000003D7D73E305E3EC8E1FEFC2F7ED1D75E8C +:10531000E5793C60DE4B7AB4717F4B8FF0BD6F90C6 +:1053200071B0BB53C11EAC469AC8F0E36977A13B8C +:105330003506CAB33A2E7F7747433D1FED5B3EBE2D +:10534000ACF7E13D84BEEF7F7F612AE6A9840DE1E1 +:1053500071DE507B74B9654C22BEEF10E39D6CF496 +:105360003DFAA9DE3F9FE38D4E6779B6BFBE70431D +:10537000A111E967D1A642E3BC80B848D3F6C39136 +:1053800088C761667E5EEEE4F691949F76D2AC6348 +:10539000110ABE1F69C4F7A7CD877E6783E70B3765 +:1053A0004517059E4358B4618AB33C00FF79DB83FF +:1053B000D763787B707DC49EE07A34DAC2A3FFF5B0 +:1053C000EF0A7DC1F5914783EBAC3738DFE9E5B1F2 +:1053D000AE5937E0FED226D5818F2ACC3A0F9EBF38 +:1053E000D2CC9CAFD90E95F6B92AAC3CAFE9F3DD2F +:1053F000ABC6A07D5FFDE7F223E8CF2D7A97E327C8 +:10540000340FAFE2D891AFD18F877557286F6B9B60 +:10541000427A2D343F4FC697FACB97E5222EC772BA +:1054200003E92C941E4E893CA49A86371E0D3C8FAE +:105430007865FB3ACAB7AF9C163CFF6A4D63CB2E2A +:10544000295F3DDC0F303B6D889F32717EA9BBE93F +:1054500096EB90AEBA6F293D817A625C4309FB649A +:1054600024BC58FBFBA9889FB207158672A6EC578F +:10547000435EA17C57E1CF2D12FB69D6B1B63D5DED +:10548000D06E8197C79DE685E4D595AF0D81232425 +:105490009F6ED19E835FE3B8A1797532FFAA6ACB74 +:1054A000B761C1F9763C5E30AEA34DC5F92F10F05F +:1054B0004A3B837926D279097E6489B14FF15F57DF +:1054C000625E98FB9621F17E7B635C2BFFBE96F1BA +:1054D000BC2F998FB5300CFC079063472D06A28F27 +:1054E0000B1BA2280E7A01FBC1FA2685FC84DA5830 +:1054F0005EAF7D9AC7436BC5BE53ED333C9EBD5036 +:10550000E379F54837CE00F86BC4BC904E029FB3E8 +:1055100016EE77CBFC30CC1B7306E415D4C0BC3040 +:10552000AF1EF3C502BF0BCC170B7C1E1077A7383C +:10553000808C4B3CA5F73EBB0DE0547F12EE40FB48 +:105540009A315738D227C823EE37CDE0F2ED72FBFF +:1055500082AD857CFEAD95D9E417A5A0CC44BDFCF9 +:10556000A889BE977A512FFC9D7230E7F13C5379A0 +:105570005538E1A7355E47765EEB5C03C5ED5AED25 +:105580007C5FAC75BD9DFCA4BE7DC0756141FB8098 +:10559000B7F6E5813B738CF4DEE490F62CBD8FB753 +:1055A00049FB3E440F7BE3519F7C80FF0978BE5549 +:1055B000E47DDF2AF2BDA53F746B5FBEB7371EF5F1 +:1055C000B0C45FE873C987F2B9F4874A53DC5B86DD +:1055D00004C4C55AA3BD26CCD76415DF6FBF6AAB20 +:1055E0009807CC8BECCA4F159E275A1EEE7AE06ABC +:1055F000C4DF63191988BF5D43B8DE1A53ECCCB120 +:1056000006E041AE3B733A73D0EEFC749DA908F1FD +:1056100021F3CB3E2AE47A07CF39633EC57ED1CF52 +:10562000FE21BAA032299CE76F7D3A85EF7B584670 +:10563000B90C6857818D4F7952E506D76F2704C0A2 +:1056400003E31A114FAF0DE1FA57E20DD6DD89F6EB +:105650004AF94FC368DD99E6CEC4FAEDC772297FD7 +:10566000F753A107E5BA30C6FDF55BDF8EA7737B64 +:10567000524E5E9E3EC5B9D44A3DD10BD027D9E7E4 +:10568000AD7373883EA3FBFC6E41A78F58783F53E0 +:105690008A9331FE817B527FC7F653FAF6A185DFEC +:1056A0000D7473497B8FD3C14074D6471F21741684 +:1056B0004A3703D1D3F7A0B373DF4567F0FD68978E +:1056C00065603AAB7DF9B9DD1EDCF778617D248336 +:1056D0007627B496043C4F5CB37545249E03FD5C6D +:1056E000F344627F27BC6AE9A5F26E1CB98A882B55 +:1056F00039CD4AC0FEF3C95F3C389DF240B6EAADF1 +:105700002812EBB787D139AABA5D9594FF09F56ED7 +:105710005E5F45FB3BF57B42F2419F599F60A33C96 +:105720005F4F2AE60781FD4CF922755BF4944F5ACE +:10573000F7AEEA40B2A867BD2B11BED0EF118E8B39 +:1057400040B7F5ED6A9921AAFF7BA010D2C7F5BB3F +:105750001E3C87F1EAFA5DD77E867A2D34AFB442DB +:10576000ECC385EE37A5E78AFCD22BD81568270253 +:105770007E1C3EA44B802B9B2F3FD171D3B3CF3CDB +:10578000BF17E03DF141622186944E6F792312CF1D +:105790007BCAFD27B92F77BA3D33CA7D09FCCAF20F +:1057A000ACD8A7F0AF1F97E3B63D0A1EB6C73C6E54 +:1057B0002A6BF4BEC8AB60BC9A363DC9CF9AE79E4F +:1057C000DEB611E9FCFD303ABF59FDDCAB7F18872E +:1057D0007EC34E7DDC343E1DB392E05FB77A1B8FF3 +:1057E00013CB75AAFAD5AB06DB70FE1CED09B95ECA +:1057F000D53B0FD2B9EE50BC96B41FA473DFFDD6D3 +:10580000ADBD7B2AC5479FFDCA80FC79E280C212EC +:10581000EDFDBFAFD8FA4624B693EBD6B78EFDD6D2 +:10582000CF377DEF286A6745F970B975FC56D8996E +:10583000B52F5B18E6B3557C10E69D86EBFBF05266 +:10584000A2FBCFB4C59CEE9F589180F66E85DE9387 +:1058500060A5923FAF78F21E418FCE647EEEC69374 +:105860008CF35AB0E9269AD742E6263AAC7882E71A +:10587000337D01FEDDCE4BACE733B95C2E7EB6390D +:105880008CCE977F26F2A53DFFA98A38C05D64B70C +:10589000DC23E64A198450FF42D8B1CB7275D25E40 +:1058A0003406FAEDF55B5675E2BA9C1CEC4CC4F874 +:1058B0001BCCDF23F0A5607EA2FAFB29897C5DF872 +:1058C000B90BFA0EEC89127C8EED3BF574FE22E0EA +:1058D0003BC29B1CFF6E313EC01D8EF183CF12B8C0 +:1058E0005F037F9D08479DC2BFA95B5631CD06F877 +:1058F000FF8398671FDF6F59C3F95CF0FDDFDEE5BA +:10590000F2A4CE3BA394E441A7DE9788EDBC0767E1 +:105910002B240F42F3E1051D6CD10B7E0E7E0F7020 +:10592000694A203E0FF0B840BDD83F5ED81A907F3C +:105930008FF85A562AE8C4E07F6EF7F3A3DC3F5E87 +:1059400024F83F741D43E5415B883C90DFB34D97DD +:10595000DEDFF4F3BF87E4670DD81D56E4DBF7C341 +:10596000484FD5AC53296FF393B58713AE043A3F34 +:10597000D52EF93558CEF6F1EB329E575FF1E2564F +:1059800005E934945F4F5578954BF22B3CBF24BF0B +:1059900056B0FFBB7256AC831FEFC1FCB96800392B +:1059A000FB66AED8D71778FD82E5475D852FAD65DC +:1059B000E9B45F10825F89D75079B920D746780E55 +:1059C00095970C538102F029F128E99531378DD351 +:1059D00047C7925EA5FEEAA3D7D07907E333F4FD6B +:1059E00023384780C7F56B9E6F5BD3A18873159EE4 +:1059F00023A9A3883F9DFC9A899623A97181756F7D +:105A000048BD3DA4BD33A4EE0A69EF0EA92F0E6A6E +:105A10005FB3E7B081E7DDFA82DA85355C4FFE558A +:105A20007F3BC2CBF97CD7398307E963502FE5FF71 +:105A3000EAEF671E0BC58779BCACC7D61B89F6CACF +:105A40000A13B71B7BACA21ECDEBBDF18695280FC8 +:105A5000E5F35E138F67F7B87A23A303E215DD1D24 +:105A60002A9DEFEEF2F238597F789A08AF5D228EC8 +:105A7000364535A7358CC27CEC4C3AA776BE592FFB +:105A8000EAD974CE5ADA953DE13CBED213CEE32B6F +:105A90007F65AE3F5C85EBE1716A982F339F2F1DC8 +:105AA000AB78BD2912E302F33B78BE4CF9DAE0751E +:105AB0005D68DE42E72ABF60CBA85CD81A9CEF5233 +:105AC00025F8A06253C8F38EEB892FAA42F8C22DA5 +:105AD000F61342F962C450C11785AC50C4A9685F7F +:105AE0006F8990D353D4FC1BE700FE7B8EAA2C0C4D +:105AF000EAE73B54B612E7BD43A1FD4D3C0882FCEA +:105B000026FD4689BFD3C8374306B6434EBFF4E7E8 +:105B100031987F50B3FBC3829F43797AF7FB39FBFF +:105B2000B0FEF21FD33E64FDDB971CF8FA0ECAB339 +:105B30003C10C690BE7B0EBC96F663ACEF0DA3384E +:105B400041CFFD61649F7B0E5828FED23398FB0144 +:105B50004DFBBF2AE822FDC2EF19B875A881D6F522 +:105B60007CC77F7D84F1F7F31D302B94EF072288EB +:105B70007FEAF79AC87FECD9FFD598C0BC9FFFE9B0 +:105B80007C643E478F859F6FEF89E6FB3EF5FBAE59 +:105B90007C1AF3176A771D34CC87F725BFF94701C4 +:105BA000CAD19E17B95D7456DFF524C668170CF587 +:105BB000B6EAAFC47825A3FB4DFE39B46BB627FF18 +:105BC0005278E178E8013CE0BC002F1528FF07C2BD +:105BD000C7B2A1FCFCECBF1F3ECEDDC1E5D9150C60 +:105BE000F31DFC78E1E7D36B3A2C941F0CF3E7CF5D +:105BF0000F7C5580F2E672F3DDF86FBBFEFF3BF3DE +:105C0000DDF36F3B5F4EEFCEA1369EC71A42F7FD24 +:105C1000E9FAE51F52FD798B83E0FD9EFC7EECDF07 +:105C200076FEFF3BEBFDE5BFED7C2FB7DEAF8BF5DE +:105C3000B658313EDAB3FF1F69EC5F9877FCB07F4E +:105C40005739F6DDF396767BB1EA385A08EDDF6016 +:105C5000EDEF3AEC647D90DDD124F6155E4BB26F2A +:105C6000E6E796B99F5422FC24A7C81F6D623ADA72 +:105C7000072C315693DD5932E8A1733C7F4E47F033 +:105C8000BC669CB08DCE2784F8859307A9747FDC11 +:105C9000E1E5303EB43B6CD1599BF8F36E7C3ED5C8 +:105CA000C1EDFEA983AEA73CDC12E35B73309E3CE2 +:105CB000D91CEC375D1FE2FF5C6B0B7E5FCA5E8C0C +:105CC000C3385D69BE9EEE089B8AED03FC43DB3062 +:105CD0007E1FC2B5ACA5D96AFE6FE185FC584DE0C8 +:105CE000A536042FFDF120F0C8B89D138A37CDFCEE +:105CF0004027950CFC583E2FF27FA51F2BF1178AE9 +:105D00003726FC628D86F4E3571BC4F79F03FAA382 +:105D100079F7E153E0FB5FC56BE8FA5C0ECF250332 +:105D2000E0799056A8213F4D10F6F9642D9AD707D7 +:105D300075AA2EC29F97F8ABE46F0E0DEDF349E6FE +:105D4000688DF2C56C83FDF7D9A43296AA314F183D +:105D5000EE0F58BB5E41BE2B7B34CC86F81EA48967 +:105D6000F3BB1A8F8B03B77AC28BA8BDD31083ED18 +:105D700016313C695696CA1C0A6FCFF0FE1F3CE4F0 +:105D800087F717E1DE197E578697B761BB07353A6B +:105D9000174E7F80EF2C2C33A85FA72E867F1F59CC +:105DA00044DF7B74FC7B279EB7D7336B1ADE2799C1 +:105DB0005E62FDE131F42B569868FF615A31F71F9E +:105DC00024DFFF71188F8FC8B23ACFC6F74F15F78F +:105DD00050B473A7370F25FFA4C9E4AA7D09F5D0F5 +:105DE000731194AF52B6F207378C46F89E8F752028 +:105DF000B99C9CBE93F2F8E735CFBDE73D78EEDE67 +:105E00006EA2E72D79EEA78601DE4F2AB63B5E82B1 +:105E100007F36E3A6CC0BCE8E9ED3BCF629C6FFAC9 +:105E2000EC08CA2B9DCEDA7F87F9A76C36CFEBEA58 +:105E30007EDE62405CDCD07E4E437FEB86F10A8AD8 +:105E400035D66DB2A6DD05F094897DE15F4AFA375B +:105E5000F13872D9CAC13919F0FC063C3F78097F84 +:105E6000E74FB2FD246513FA2FE9E2BC906C8FFD79 +:105E700060BF1F0B7CEC1EC6E3FAB29E5EC2DB97CE +:105E8000AF0EEBCE447F66B5DE3704CA69C38BF72D +:105E9000E23CA765B0A91B705FE15E95EE5FE93655 +:105EA000B123145F5F67B7A15FE76622DF63AD9D33 +:105EB000E257DD931C06BC8FA57B9DDD8AE754224B +:105EC000F29D4770DD17B62836E4F7EE492C282FEF +:105ED000EB23AB2F0BE31E1F39863A30DE9E2ECF0D +:105EE0006D0D0F27BF3135DFFD3B84A3ACA5EC4D15 +:105EF000E473F60DCC7B0CE60F3322DE076F0D67E3 +:105F00003EE407FF7D5BEF607B66743C7C459CFF55 +:105F1000BEAD7495E7C316097A9886F9B140674F0C +:105F2000EABB2AB19F9F0EB3115EA6C558C7983928 +:105F30007D3184AF5B6FCDC1F975AF30E9707F6F94 +:105F4000DAFD9CDE80FE8D1A7CBF4663E1B8CFFF90 +:105F5000C230DEEFEDCB3517DE1B3BC8C834BC2F9B +:105F6000EB86F642F2A71F18EEDE8D707D7E1F1BBA +:105F700087EB347FED3ADA4791EBC5B4CEC9B13047 +:105F8000CEE75BED74AF9C5CDF0786179F1A16B8EF +:105F90004EB3155A1F988F11E19F367CDE397C0F66 +:105FA000CF0FE2FA4D2BF665E17D5853D41AE64443 +:105FB0007D9AC41CA897CF33CE7FE7576B145F92AE +:105FC000FC2EF95AF233C04DFC2BF931948FB735C2 +:105FD000F2B39ADB1B8D54FEA2D1CAB46CC67634E0 +:105FE0002651FDF9461B95ED8DB9F4FCC54607D544 +:105FF00077358EA5FAEE4627D5F7349652B9B7D144 +:1060000045CFEF00F461FE088C4FF246CA19844F69 +:1060100057E4970372FDF4AB27E9504ECBF5037FAD +:1060200097EEF190F76C0D6417FC6FC10F72CC13F3 +:1060300055E4C72BD64D017212EB9618FFFC30F5D4 +:10604000717C4C809CD3F87D09280F138AFCF3C720 +:1060500010E1C522FFBAE0771343D60DE950E205FF +:10606000BEF7251405E2E5F443989777BE42E7A012 +:10607000F807EB7AEE65AA9B69DF37CDC0F6603C86 +:10608000B7EB276686F15355E7480AC3734E150AE6 +:10609000D302E20D3F586C625A80FEBAB3213AA88F +:1060A0001EF79363AF62382D36C95D9207707C741A +:1060B000EF99BF3E03FD3F75DFF1E16EA2C7D35BF1 +:1060C0007F86E32E0B77503C82E15D77148FA17DB4 +:1060D00036FC0BBA2FD71341F7F03D69B0FEE1193A +:1060E0008CE7AE54AD2847E73573BDFC01AE23E025 +:1060F000FD4F621DD345FC46DE135826E3E721F72A +:10610000F6DD9197417C9E2EE23C1FFD28F561CC87 +:10611000637C6A856A15E93EC1F70A0A38E4B8A1CA +:10612000FD7D9CCC287E02D63F6B80F5F8F83E833F +:106130000FCF4E7FAC18E9FE06C516C76E87E7EE97 +:10614000D5FC7E5EA5E128E539B88D663A77C83C76 +:10615000FAD381FD290DFCBE3AD635281AE3C9F2DF +:10616000BEB988514E039E7F47D980F4332FF71074 +:10617000DD7BC55A142BEEEB948BE7E5F2DCBDE634 +:106180001E3ADB02F64E1EBFF773FD307EAFC1F143 +:1061900061CC7FBF62405CAB7C2DBFEFB1BCA5D0B2 +:1061A000B03040CFCC13CFE7E7F2FBB9E5F315A24F +:1061B000DF94D56595489429E29E8A94DC7995749C +:1061C0002E78CE751ACE5FB66FCCE3E3AFC7F1E39E +:1061D000118E782A1FC8E5F6E0BC39B76EA1F37CB2 +:1061E000CC66C078AB1C6F5E6ED14ACC8F9EB71662 +:1061F0006F8FA0FB2C29AFFAB1C8A95B518EAD09F6 +:10620000E9B746E83D989F01F74D3FC70C7BDA4F51 +:10621000E671BEAAE77F49FB71551F86913EAF1A12 +:10622000C1F52ECBF78EE1F7FC05C7D727FFF2CFDC +:1062300074BF63FD2E7E0F24943CEE2BE3C40E9EB0 +:10624000D7181ADF7DE5F90F232F1957DFC5F70996 +:106250002F175797E7EFEA7FCDE3C2128FF5CA45B4 +:10626000DA97AADFBF22E152E7DB705F07E930343B +:10627000BEFE7DE3F0A171C68EBC4BEF6B0C245FBC +:1062800065FC5DD62B1A0A32F13E699BE27E2D0F2A +:10629000D6A7AA614C26EE9BD7354CA432F4DC5D20 +:1062A00045431EB5AF6A1849EFA3F2B87D0306381F +:1062B0009DDF94F1CDF3DEEC28F61D70D46F006005 +:1062C000E1FBF39A2D0AF7EFE4B9EA9E1D2AF913D0 +:1062D0003D3B866F46FAACEC78D4A083E7D1F97CDD +:1062E000BFEA4CC8BE41DD8E4F687FAF9675D23A8B +:1062F000C1FA3163E03E12E625C60E0C5FF52F2D84 +:106300008B918E2BDB15E756D44FC6768A879CDFA0 +:10631000F103BD27605DCFE46941F74F48F83F4680 +:10632000B91EF01CE14578AAC3DACF7E801CF14289 +:1063300004E3F9D6BDBFC37DDF539B4652BE7565EE +:10634000FBCE3A9ED71661C538CBC9903CCCAFC5C1 +:10635000785FE7717BF094D8373BF5BC4AF218E1DF +:10636000457E3EA984DC3B20E114EBD29AC7F94E6E +:10637000B6AF6C5F47F6E1D95DD767A33FD0B3E70F +:106380009DC82C786ECAE77CDAB32B82EE03ECD979 +:10639000F5F3A9FB80BECFB44F8A433E94FD27E4BA +:1063A000F3FB29CE74F0FD41E6E5F950B588E7919D +:1063B0008170C6D23D11F23B990F766AD7AF227534 +:1063C000F9FE75AC37B61CCDC8F0DFEF61D27B3C6F +:1063D000185FD0EFE1F73E139F43FF6B725B5C28C1 +:1063E000C7653BA3D1497EA0BCBF8CC9F387E2DC63 +:1063F0000CE8B3B7DC00FF924A03C5D7EF1861BBC6 +:10640000E53694C76FE8693D960C653E8C675C681D +:10641000B0B4E13A2FB13B685FF68E9142DE24754D +:106420008DC6FC909AD50A73629EDDF669FC5C8E7F +:106430009001DD76C7DBABD00E7D8BDBDD355E9565 +:10644000B947921CC9C173186CAC2F07F351D280A5 +:106450004EF0FB09F97C1D3F32F07CD09A0C7E0E89 +:10646000205DE4AFD4C4F07303A7E5B98299BE1CE4 +:10647000CC9BA9793199F2664ECB7302F01CE1AC4A +:1064800029E2E705247E6B7E742807E9AE665E7B11 +:106490002EBEEFB65BCF527ED24B16BAFF48F7B294 +:1064A00045E4BD99285F1F051FE61D356D4D6E4300 +:1064B0003F728680EFC9BEFC667EDE21E53E7364D6 +:1064C000E079874A430B3FDFA0F07C195997F3C26C +:1064D0003ACEEBB4A0E7CA705117F05746B610DCBD +:1064E000DD7AC6CF753CCBCFDF9C4CEEDC4D79AD71 +:1064F000CF0EA57B23BBEDDE857BE8BD89EE6DACC1 +:10650000F42824D7AB7E11E6C3799D7896C7E1AB1A +:106510001A1BE85ECF2A607B3C670765299E973B84 +:10652000A16F49C3714FC443897ED67DDC7E3A6A30 +:10653000792C8DF87B4B988272BB0A2C06B4FFCE67 +:10654000B3963B36F2E7E8B9B3AA2D61740EC10DDC +:10655000CFF1BC2703BB08E946E21BDE07E5417625 +:10656000DB83EF81B84BC8ABBBF2B91F774F3E8FCF +:106570000FD446B43F9641F3E37C02EBC3F3E698B5 +:1065800037F9E77198FF91ADA07CA86A3775A3FD34 +:1065900051B5434FF7A24A3AA9044186FBC9958CED +:1065A000DB99CA4FB6E7A07FD6F4ACA908E7D32D94 +:1065B000EEFBACFAD18F395E5EB68873AB74A7126E +:1065C0003BB12D95F2D1A761EE19D1C770C2FF146E +:1065D000755301F1C39608FA7D80AA5557E828BF84 +:1065E00044E57E18944E85F2F48D24476B841CADEF +:1065F0005D7555D455C8576FAB745F7955D442F269 +:10660000032F68C04F9790FFA178F309B953037C1B +:1066100082E79D6BC5B9AEEA6DFC3ECCEA953CCEF7 +:10662000C87EC1EF3F5D6AF245E2784BB7AA0E5CC7 +:10663000A76A437B4E3C8CF3CB7C2EF7A0BD1BE5B9 +:1066400092EC6FA9A97D21F6B7F43913C9F35FE67F +:10665000C7897C9E4713D0EEEDDF9EC3ED6FF774C4 +:106660006460DE8F6CD7379F761E5FBAC03A7FF8C2 +:10667000217CF2B71D26820B3C143A2F173ADF53C8 +:106680007A8007E03FF59C89EE53FC0CE4A007CF2D +:1066900073473B1FA1BC88DFAB748F10C285FA68BB +:1066A0009137F8FBDA584714E65FD6BE5DA2E1F7F2 +:1066B000ED421EC33ADC48787A5B4FE76443F1FE53 +:1066C00028B68B0FE0BBE72288EE4EA5703A38F56E +:1066D000FC10D22BDDD1E23CB4BE3D0DF3A54F3D05 +:1066E00037A490DFA39344F6689595AFFBA9E8F62D +:1066F000346BC07B4977CC072D913EF09B4CB41393 +:10670000B85D566D5C4BF92F983F3DA6884A5FD81F +:1067100025F29F812EC97FD70F1776058E9720F21D +:10672000F7496EB51B502EBB851D59B323347F9A94 +:10673000BFFF6BBE22CF53DAE264DE36E68B7B14FA +:10674000CAA3A96EBEAB12F9A37AF1BADB905E259B +:10675000FCD51A2B4579D0ADA80447B789DFC3CD46 +:1067600002C7C9E0A535C13FCF1E31DE857C1BA71E +:1067700067D478D04F4DB3B296FAB7CB38029F8F1B +:10678000FC0ED060403DD13D49BC1F60BE12BED062 +:10679000F9CAF50D1BCEE54CB7DDF6C878AE9728E3 +:1067A000FE76FE9B915131DFE16FA327DB97BF8C13 +:1067B000A99974090163EF0B79550DF0219C399B60 +:1067C00082F3D773B704D787ED08AEE7EF0AAE17A9 +:1067D0007404D71DAF04D7BF411CC773FF1FCFE19F +:1067E000A3FF8F25FAFFB630EEFF631DFD7F2CD18E +:1067F000FFC7E7E8FF631DFD7FACA3FF8F75896FBF +:106800008C03601DE300F8FE3A81A7BD783FADEA36 +:10681000CF13BD4AD571BE986B08CA63DE5B31E801 +:1068200092E7C8E4F9AE4BE495D23931791E37F4DA +:106830009C58DFBDBB21E7C490CEB01F7B82FB8A92 +:10684000E1E8072A9D2B93018EBD19DEBC25A4EF3C +:106850004D66CC9BEF5AF1D94A7497BE8C778F1F47 +:106860001E8FE7BB7BB7F173DB3E92375DCB6D6F5D +:106870005F2DED1280B30CB08CF42CCFED5EF63EA4 +:10688000DDCBDEA31B4C2FD2AE7B4ADF9B8C72F399 +:1068900093678D6B11CE4F445C93CD3186E43D7090 +:1068A000BF69C9430ADDFF7DEBF018BEBF7414B0A9 +:1068B000F31D743AFFE248B2B7FBEA6B151D9D2346 +:1068C000703B491F49BB2C4D01BB0CE520CC1FF58B +:1068D000F5900DBA20F8877AC383E82E6F7B4CC8F9 +:1068E000B99694A0F623F664849C6B19167C6E62AC +:1068F000F6F283A8A767AD1D19D4AEDC755508DE86 +:10690000049CC23E2D47BB10F5CD7D46A2ABA5EF42 +:10691000A964CF54E04B908F15D817AC63C516917E +:106920008FDD10AC772B34E6C17BC9E60B7D24E903 +:10693000ADC2CA9CD1F0FD99C2966D784F6CE5EB63 +:10694000EF8CB1E2F93F655222062B66E7BA9B91C4 +:106950006ED2F44ECAFFADD9991D8DF7C59D3EFA92 +:106960002AE5754A3A49D35BC3713DDB5AB89D8F1E +:10697000713335C6BFDE6D2DB1E15966FFBC02F241 +:106980005AC82EBE80792DF0A86292E2318CF0C3F5 +:10699000BF44E80F09EFA7C20F60CDBC9FBBC5FB8A +:1069A0009AA2D79E8C81A53BAD3BF4E52AD45385B2 +:1069B000ED393EB4D736B625DC0AF87826CCFD048E +:1069C000CE63C95B2591987FF7C50E3DDD5FFBD790 +:1069D000D6A79FC47CE9552D4F1B302E50A5790DAD +:1069E000941FFA6C9B01F3A5AFD9DE46CF176E2F2B +:1069F00023BF71115B4C7EE3E7F29E1031FF8A6288 +:106A0000659315E0D61570795111CEF723A7A8E349 +:106A10005F8D83F12E6C57285F78B66BC69478B47F +:106A200057DAA3E99EA797878B7BB442E8FEFC9BCD +:106A30002A8FEFCEE6EB3CD0FD53B32EDA89CE673A +:106A40005FCC237FEA26DF50EEBFE607FBAF1506DB +:106A5000DBDB28E7D96F55FA1D96BEB882434F7627 +:106A6000722DC82F3C67E91AAF06D161FDE488207A +:106A70003A9DC302E81F86BE997EE4C75F9F3D2D05 +:106A800033A8FD2DB3F342E8BAC8FF9EE4C1B8A015 +:106A9000F39AB5F884CEB514F77BCECF7D5E17F4AC +:106AA0007D2D9B19741EB0720BDF6FA8DD154DFB99 +:106AB0009115E27EBE396EFEBC6E0F7F0E1309E2A9 +:106AC000AFF412C71FB91ED4F3DF7C10FB1273F0B2 +:106AD000BF33FBE39DB1F0BE7B10F05E0B8C230453 +:106AE000DD7F20F635116EB27B457CA93697C797BE +:106AF0006A3D9D06BC3704F0AEC5625E678B42EB13 +:106B000001ED8DB145BCBE8CF2B683F3CAB03FCC6B +:106B1000CFAC3BAA96219F84BE07BAE3F6EF5E9EF8 +:106B20002F5B87F1213AE71692E789F1228C776192 +:106B3000BC2860FD2617D8881EABB6EF3C9202F841 +:106B400098E5E2745AD33E435F96DF9FAE80BEE97C +:106B5000FEED850CE80BF785808FBDB681E78FE6EB +:106B600023FA23120F754E4E8729488705FDE9AF9A +:106B7000D6B3D840F7C06C52D8A376DE1EF192820D +:106B800074198217C263083E249EFAF016F23E146E +:106B90002F0BDD8CE864E11EC58BFBB6127FA1F3E1 +:106BA00019087FA1EBBC88751AF07CCBA25D8A0323 +:106BB000EFD997FB3E6C6C487CE9CD4C8A2FD5B958 +:106BC000047E245DB838DDCFBCC8E32537E3FDB2D1 +:106BD00023FD74327B5A307FDE743181DEFFAB746B +:106BE000039600C569FF557A91F391F219E3894440 +:106BF0002722EF3A946F42E391D30B44DEE36836E9 +:106C00003A28CF7A807B4342F3ACA53E0FD5276567 +:106C1000AF737D22E5AA5BE809F70A7D020BD44336 +:106C2000F2B988CF2DB92F97EE47495B1E4BEDCABD +:106C30004C563A2F50B69CE76F97413B5B805DB155 +:106C4000B239330DF5C3C76B863CE9C17B3DEF8D8F +:106C50004B180BEBFDC90A7D1CFE76986CF7F18A88 +:106C600029699867F2C9BAB039747FF14F8CF43B47 +:106C70004DB5BB13F9BD77AA3901F33BCFBC184B17 +:106C8000F737FD50E8919A152F45E2F184EA155C3B +:106C90002F7F39C47D4F01ED57B76DA30D0E6B5B90 +:106CA00001EA85E602C221FB1CFB2A22FD44FAFE12 +:106CB0007393F566ECF7F367F50EDCBF85F74EDCF2 +:106CC00067BA5BF11DBF9AEEE3511230AE73FA3D25 +:106CD00095CE8356AA070BB0DF9AC63D697844BEAD +:106CE000A208F428ACF3E761EE661CB77AC5D36955 +:106CF000B469B5BA8D7EDF20201EBC06DFD7623CAA +:106D000018EAEEE5D951FC5EDC4BC783255ED2F371 +:106D100078DC639BD0EB68C76389763CE603A11DF2 +:106D20008F75B4E3B1443B1E9FD76F08B6EFFE43A7 +:106D3000ECD7CAB870BA7A8E7E47C853CC72179314 +:106D40001E36E7A27FBA540977A01DB954E17CBE74 +:106D5000F4CF16FE3B1A9DD772FD2BE821F4DED846 +:106D600009BD608305D0EDD5178D2CF09CF4241659 +:106D70001D542F312607B59F62B507BDBF26696830 +:106D8000D0FB6B6D8541F5EB73AF0C6A7F8363526B +:106D900050FDC6B1D706B59FE19C11549F553A37B7 +:106DA000A8FD4DAEB2A0F7B7CCA90C7A3FD77D575E +:106DB00050FDB68A7B83DAFF60F1F2A0F7F21EDDA8 +:106DC0000EF4BFC2F03E242395F25EDDAF748C7EDC +:106DD000BF697C89388F1DC6F5D1D2B7B2CD81F19C +:106DE0009177049D0F75387F87F43358DC7F3558D1 +:106DF000DC63D52DF4512AF329E2F73293919E42B8 +:106E0000DB85BE1F1F71E8820DD6B27444F32D1AC4 +:106E1000C8A5F1571C1A9909F59611BFE5F5AB0EF7 +:106E2000FD2A03EA1B5EB0CCD140CE8C1F71E80274 +:106E3000BE1FE4789BBF9FC5C834D9F2C2E25B3065 +:106E4000CF66FCD5196B1D3C5EC2EF7FC1C0C598F3 +:106E500080733246B30FF7EBE5BC102F785E1FF15D +:106E600082A50FE819CB4340CF58BE02F45C0E72E6 +:106E7000EC08D0339647C12FC5E7BF05BF14CB3709 +:106E8000C12FC5F277E08F62D909FE2896FFD93865 +:106E900087CA771BDDF4DD1F1A2BA83CD6B8989E55 +:106EA0007FD0D840E59F1A3DF4FCBF0A387FB13D42 +:106EB000C1BF9325F737E57E66D362D61581F2A070 +:106EC0004B8BC6DFA193FB9403C70134763CC03ED5 +:106ED0008B624EC308DA870CFE1D8FD159EE087CF9 +:106EE000FE9E7D56365E6C7FF3C5C5AFE2B6EE7B87 +:106EF000E29E83D07EBB0B843DEC705A474039C183 +:106F0000C8CF7F4F30F2F3DD13B4CE26A4A7A6AFCF +:106F1000990DF38E0E8AF3DC4D6B343ACFAD5C6481 +:106F2000549F18C7A8DEF475179D079F60752491BC +:106F30009E1275792E98FE02F296265FEC2C417B0C +:106F400063A2D9604339D19757C178DE84DCDFDF93 +:106F5000A4E7FBFE072DC74B30BE06F0301C4FE602 +:106F6000076CF99AF97405FE3C8B09C62ECADF92AC +:106F7000790FCAC52E15ED26995F25E1B268F05D3F +:106F8000913F6F4AC29D08754311BFB75B2DC2F692 +:106F9000BE64CC2F9BB8D840F721F6E57185310F40 +:106FA000C65F13453E01B427B8275F7453FEC8443B +:106FB000913F3218F75D793BDA67B6A0BF86DFC72D +:106FC000761DC6F9A4FE178C01ED9E5078DE83CCA9 +:106FD0001FC1F611BCBD4F0DE0CFACBF03DC91F873 +:106FE000FB90EDF4FBC083EBCC746F24733A09BFC4 +:106FF000B3845C65365117FA9AC515F3DF4114EF77 +:107000009FCD72CF407A718559FF1C41FC9C391885 +:10701000ED9219C28EFF0E7AB919BFFB9FD38B93E5 +:10702000AFFF2046F1B481E846D2855CEF503A923A +:10703000EB1E906F43EB2EE92794CE06A22749471B +:10704000138CFCDEC2893546C7FDF6FF7FE8E7CE2C +:107050005E36350A9A2CC87677A37E28BB683B82B9 +:10706000F5F96C12FDBE8C7C5F87EF47F77FEFFE72 +:107070005BAF3E2A80CE26081DB67E80FE643B793B +:10708000CF88EC7FD700EDDF1076C21B42EF2D9D3D +:10709000C2E9A974A8FC7D2EA7B9704C407E6BFE96 +:1070A00022F20F9899DBD736F81FC5D184DD7BF526 +:1070B000452DC8EEBE4ED8E3A58CCBEBD290FDFD9E +:1070C000EBF2AF21BBFCBA10BB3CD4CEDE3742ECB6 +:1070D000FBDB99FD5FBC4FF7D0088A8B07DB71980B +:1070E0002F87749F6953E97E20797FAEBC9779B270 +:1070F000E0E7C9782F7324FE8EA95B43A5720DF3D8 +:1071000050792DF352793DF3919D7003281EACDF29 +:10711000882952503F1C31FD763CF35832B2248B03 +:10712000EE49F1DF2BF91EF2799DEAFE8B35E05E28 +:10713000C943936DB41F7BC8C8CF5D235FE2EF5492 +:10714000CAF9BC0E7A370BF4E261D0CB58BE0A7A8A +:10715000390BE6F71AE865AC5F97CB7F1F62AA2D63 +:10716000384F4A7E7FBDB5041CB281F1757DC1AF39 +:1071700007213EDF881E3219E7FB46F41593715D47 +:10718000DE884ED4F132CC80E540DF4B3EB83E9FE6 +:107190009FFBBDDE3A95C6FB7F80CF6F717D43F1CB +:1071A000D92DFC89FF03B2867AE000800000000040 +:1071B0001F8B080000000000000BDD5B7B7494E572 +:1071C000997FBEB9652699492603845C20995CB9EC +:1071D0000D3033B91485EAC7256CBA0DEC045A207A +:1071E00018C38424080834445C23A29998A881E237 +:1071F0001ADA88C82A4CA8A0DD833D41A1C59AEEC1 +:10720000991250DAF542B5DDB5D58D8374BD5B6258 +:107210003CADB86BEB3ECFF37E6F66BE2169ED9E51 +:10722000B3FBC78693F3E6BD3FEF73FDBDCFF732E7 +:10723000627D3535B300606B4AEA1C984B656E1869 +:10724000E600B49E7A718E11DBAF6B9B0FA609002E +:10725000D7B75DC3E516EB622EDF6987509119E061 +:107260003DC09F2CFCED520D5001B0C3897FBBF196 +:10727000D7B488EBB75A817F9626059DDE4938DF63 +:1072800030907A2DF6BFF3C8AB3F083970A8129C36 +:10729000C4ED46F75EEF441CF82F46EF519AFFF914 +:1072A00060EE0A07CD0C5B02B301369B40EDF76040 +:1072B000F5B195BCDF17F4733DAE3F5301A0F9D68D +:1072C000A54C174088EB7715AB17E794F3D60A6403 +:1072D000006C0341D7942400AB1FE0118B28B759F1 +:1072E000ED11239E174E9B3F8C4E17B47E81E7AE67 +:1072F000488690CDCFE3435617C0C5396E5E17E779 +:10730000713D07D7A928C3F281E470673EC0EA2C1B +:1073100075A617F7AB34DA43066C1F99E2082761AC +:10732000FB9964E46B1AF231322B0DB0BDEABC114B +:10733000C248F2F3C9A94788DF679291DFA900B973 +:107340003383E5C487E7DD67A64470DEF5E07E6041 +:1073500001F2E36B76A33742FC30D6A505EDB1739D +:1073600027966D6F2C8C9C95F4E3EF57BD8E896F3B +:10737000A7E01F7360CE17466E36101F5A35F920EE +:107380009DDE08D1F94BA3178F02D741C9430BB03B +:10739000BEF8BC19C2581FA119D49FA98443486FD5 +:1073A000E579E3C524A4F3D3763572D64C9DC34664 +:1073B00040FACE39153888F426651AC06D8DED6F08 +:1073C0007327833B8E9E94E92E5DDDE1CDD68D4FF4 +:1073D0009B57A0EB4F5767EAFA2754F975F5498197 +:1073E0006B75E327AF59A4AB6705FF56373E67E3DC +:1073F0000A5D7D6ACB5ADDF8BCB6F5BAFEFCD066F4 +:107400005D7FA74DC81142EA85E9C8C72AD1058525 +:10741000DDADBA7155F60DD524CFE29E9DBAF5C00B +:107420006D7E8BF42B84FF48BF7E0F030A60599951 +:1074300029DAE53823E905EEB3D8B9F02C892A0713 +:10744000F67E4CFAB9D889E3E2CF63AF7A8FF6C9FA +:1074500001536C7EFED57A7017E9C1ACBF420F8232 +:1074600033C7D6832D100EE55FAD07E72068824253 +:10747000806907F4F29F11D6CB7FD6137AF9CFEE4D +:10748000D7CB7FEE69BDFC7D11BDFC4BCFEBE55F3B +:107490007E412FFFAFBCB6E84BC9EB9AA85E2FA484 +:1074A000BCE6BFBB624C79ADC17F242F34316F0481 +:1074B000F57D09F22902E3CB2D262F21BFFFA9DCA0 +:1074C0004E25D8EFEF616FB90FE9B8DC109C9666D6 +:1074D000BCDAFEA53C8C36F559F2232F914FC3F24E +:1074E000538D0F799A1F6AB38AF2368DDE4F6DC2C3 +:1074F000FFE4697E28B448C83B34E40877A2DD7F06 +:107500006A883A00F71B32F42854FE7272F067E47E +:10751000E7D6795A14D424C884C0890D48FFE5A958 +:10752000C34377D0BCDB1DC27F0344C80F466F77CF +:10753000F4ED516274D6E7400BF9F157BCC26F838A +:10754000375A5E83FEFD575E5CAC9CFC82D302E83A +:10755000E71A3CA086C9DF9B20B77E36EBA9D0C3D3 +:107560005D26F6ABD9B6E06F888ECE5F5BAD748ECC +:107570001170A7393D2CB8DC00C68DB7CCB0A67F02 +:107580000C7F996D5BF826CDDB64FDFAC3BFC5782F +:1075900031DF88FBA25C873719C247F269BF886D6B +:1075A0001AEE73B0D7E5DD83D5F97920FAB782D624 +:1075B0008F068CF583BB4AC274AEF94645F46FC79B +:1075C0007EFCF33DDCF7293BD111B6D538C82E70CF +:1075D0004A9C5C0F9AA08AE83A1836848AE7929D02 +:1075E00058C114A71F07512539CE99C2B615B3C982 +:1075F0006E9CBAFED9FD99BAF5E69E76EBFA7D91BE +:10760000E9BAFED2F35E5D3D4A7CF190FDCCD3CD6C +:107610009B8ABF063FD991AA6BCFBBB97539E101EF +:10762000EC570D2EB29F2ADD7A7997930D0AF6E773 +:1076300092724E223B0AE8FA190B203FEB6FCB60A7 +:107640007EE520FF92709F47CD185F5D5C572D58F7 +:107650005A90B134CED26DE2783A0569487309BACE +:107660008C340E4B1B8F1374603FC7E1A9B81ED139 +:107670008DFDAA49F48792B1EE9FE5667D329B109D +:1076800097A07F3A648E6E8238BBA94F423DB4B357 +:107690003C5592DFA1DBB3757A5AEC33F079FCB339 +:1076A000841D1DB5C2BA00F2ADF34E3BE4CFA579FF +:1076B000D12C928FC727F4F8EFA6A9337DE534DEED +:1076C000C9FB1E76BCBB89ECA37EAED8A7CE6058A2 +:1076D0005743F315D40F4F6C9FAF68F327978AB2C7 +:1076E0003E4DD0037758C247F363E7C8B44017E173 +:1076F00015DC7706E9F78D7BFBEF9F865D75961E9F +:1077000033B05F0F9B0927552F8A9AC087F63D73C8 +:10771000E64376C44987DA90AFD7A25F3FD1B72658 +:107720005404B00CF944F4E46133C9A19AF88BE530 +:10773000137E23EFB3D627CE3B6A6F1381ED0DE3A3 +:1077400000D335D266E13820E51827A710C9E558DF +:107750003B92887EE889762B97FFD48EFA5B0C707B +:10776000BC3D93EB3F687773D9DF3E9DDB9F6AF7A3 +:1077700072FD64FB3CAEFFB05DE5FAE9F62A2E7FB0 +:10778000DC1EE076D0E2569150AD51BE48FD917CB2 +:10779000A9BE5BC8C9BDDD1C388247A8364095E24A +:1077A0008FF1FB59BFF033F7D239CBC538F23372C2 +:1077B0005CA5D19376D11E1B27FDCA78B8EB7FEB71 +:1077C000BCA3FC35C5F4DC16A7DFF2DCD83F8E9DE8 +:1077D000E8ED897F2A34FE158879A9FE98DCE2EC71 +:1077E00087ED6BD47E205A4BF623F91B2E325411B1 +:1077F000BFEE73083E4B3E9CD2EC2548FA4CB83B9A +:10780000A4DA7D28AFA0B675A5F1F306D29F6687EE +:10781000C59D8443825ADCBD4E0DECBF0FDBD7F70C +:107820009AA10FDB1B70DB36972877217D0D217D18 +:10783000FCC4B8CEB8F92608A445148ACBDE7BBDBB +:10784000484763B77E5C3388756EB22FE578DB9C62 +:10785000106F6FA2389D4AA529366F8C387CCCA753 +:10786000C5E1B93097F1539B95EF351BADF25C7ACA +:10787000FC34122E4CA3F885F261BBC23292E48A2A +:10788000C567F7015CA434C637E467F2748A9B5D70 +:10789000266FB1FB6AFD1AE52788FB55AB1534DC72 +:1078A000E67999F8F621DE2792C8C7AEB1B27D0419 +:1078B000B5FE0F439F5CE4FE93362FD53FF25D98F3 +:1078C00043F78A20ED4FF7A4A07EBD915D567092DC +:1078D0007D9F748401C7BDAFF41D4B43B9BF6F38A2 +:1078E00091312F3F8E9EA8983F9E3DFC615AF02516 +:1078F000F283413364ACC1F53A8F1BBD1DB8FE6EF7 +:10790000FB990CD54EF73DF5826F12FB2BDDBDAE1A +:107910001AE322E9AF5C276F9676EE84738DFAA5A1 +:10792000054A98F4682464E4F83B52A530DDE8D7B2 +:1079300054E2F7AF005747FA6B00515BA1B05348D0 +:1079400012764A25D9294C13764A75B2532AC94E64 +:10795000A97DE5151FCBE91B57E6F37983DDD770C9 +:10796000BD242F644826FF7C83E23D8AC5EAC7E038 +:107970009E649C1AED585D4EF7B3614D5E255A7CAE +:10798000B94A9E9A5FB9D3AFF7B3AD1D0AFBD9567A +:1079900045C4CBD6FB15F6B3B2FE498F56AF14F5EE +:1079A0005BEE11F5A8D9DEADA489F315158BF35163 +:1079B00049E7A3FB399D8FEA743E2AE97CD44E7EC9 +:1079C00088EAE487A84E7E88EAE487A8243F44ED4D +:1079D000EB2190EB43167F7518B16F9C7D5D7FC5E1 +:1079E0000A4BE2EC6421A4EBEA8BAD59BAF195CED7 +:1079F0007C5DFFDF64CED0F57FCDEDD3D5BF3EFDFE +:107A00001ADDF865DE85BA3ACCFB5AAC5E40E65129 +:107A1000A3ABAF44DCBE24CEAEBF1968D0ADBF7AF5 +:107A2000CD26FD7AC1EDBAF937409B6E7E614B875A +:107A30006EFCBA36059AE2EBE88E49CF1A0F4C601D +:107A40003DF96E5160B61FE5FB66CA9F6E35D33DAA +:107A5000CF38B089F4B4756BB257C8B9A74AC8DD3E +:107A60000042CEC3B52CE75D1651AFF44E768EA121 +:107A70003F0328E72528977F463953194139537921 +:107A800006E54CE55994F31294DF7328672ACFA3D7 +:107A90009CA9FDE728672A5F403953F912CA99CAA1 +:107AA0000B28672A5F695FC3E52FDB833CEF5FDB51 +:107AB0003772F95A7B0BB7FFA6BD8DCB37DA43DCA3 +:107AC0003E84743499637411CE2DD2DDFF500F754E +:107AD000F73FA7AE4E38367E3CE1D8F87EC2B1F112 +:107AE000FD8463E3EB845FE3C7136E8DAFDFE27366 +:107AF000B37D115E8D9F47F834BE3EBB27748E72F6 +:107B000058CB1EF9DD592A4BD21A9E52D0356CF350 +:107B100097D69A103F95A434F8D3BD18073BE6D505 +:107B20002EC17AF04A29FB833930CCB83248973CD1 +:107B3000945B3022F0FFECCFB2B8FFB6994ECD6F18 +:107B400003FB27DF49607C79DB4C37B7CBF95E70EC +:107B50001AA994E363F5B1C725EE2FC7B17F8CA3B3 +:107B6000833C11F973DF2EBB7F0FEAD33183B22E32 +:107B700080FA740CF1D10AF4B7B38EAB061BF6AFE2 +:107B800039E9F419DD34BEC54FF795EF69FE498E2A +:107B90002F31C179B33F768EC7BF927F84D6DBE3A6 +:107BA00017783576CEA889FC39FA09358CF3160C8E +:107BB0005F589C86E383A185E5B47EB545E005DC8E +:107BC000E75ABAEFCD0A29EA9138FDEED5D60B86F1 +:107BD0004E9C21FFFAF8E1E5625EB298F7F8E154B5 +:107BE000DE7F799772C488FB2F380E6A1FCE7FD450 +:107BF0002F70C7ACE31123EDD7D025F693EB363CBD +:107C0000926B71D37D125A766696118F1420BF8DB8 +:107C1000E73A4BE792FC93E34BD064CC2E2D5F8880 +:107C2000A2DC3DBD27407CF619843E59AD2A215186 +:107C3000D876BA06C8DF7FB52CBD7222AD3B005E98 +:107C400082A9CBCA7EA13B37B3AD82D7E5F8352DEB +:107C5000A44452F028CB431D7753185C16DA7E6E8D +:107C6000128D7F0CBCF96E0E3D709D3F46DF4CF5CA +:107C70008401C31F78E082C1A690DC6170429C1E23 +:107C8000A107F806C9DDE73503C9A5C6E43493DFCB +:107C9000488CEF122F7C427881A9D2FAB53C50EB88 +:107CA0009D572EDE47FEE894C00B12E73438C51905 +:107CB000820714F66B9F74E17583F87C2A290C8483 +:107CC000D7104FB8511F3F32BC90B11AE76D2D0C41 +:107CD000E71A905F9BB3FBE6B88C8C075E263FF8F3 +:107CE000416870F91A5CE762D7D319C4B74FBA4E2E +:107CF00059888F4887DD87FB3469FC69DAB5B19A0A +:107D00000ED9305BE0BBB7D0CFA8D388FE05695150 +:107D10003A578FC079322FD3F0E2840CC25B89F8D6 +:107D2000EF660DDF6DEA323758102F6E4AC07F378D +:107D3000EFAA7A87F6B9F92FE0BFB7FD5AFECC0B50 +:107D40005EC67F7F210F3B8AF314F5233FCB2721AB +:107D50007FADDD636EB189F336BC38F84DC62F2D8B +:107D6000C506C62F1AEEA9EB10B8064E40B858A1AA +:107D7000FA62B6D7BA53AA57C1792F6B7866C59500 +:107D80001C96CBAB1A7EF9E69559EC1FAAA3366E6A +:107D90005F75258BCBD5576670FB0ABBF013D16797 +:107DA000207C37DDEB4249024F0D00E3A7447DF50F +:107DB00081B392F47FA6AA0C126C5C467808D75B5C +:107DC00043F86802E97FC33D9348FFC3C0F83551CB +:107DD000FF57D7E557D23966542940762BF53F181F +:107DE000FA29EBED72D45B6A5F16EA3067D0BCE328 +:107DF000C0E70B6AF754A9E78976519FA2DDDFED52 +:107E0000227F347AAF2722F1BE0BA103B5AA87EFF8 +:107E1000D300D942E101E5ECF088FED2A70FD47679 +:107E200015F17D2894E68FDDB7A86E8BBB5F51DD21 +:107E300011976F20A8B120EEBE4B38DF26E64186B1 +:107E40003F763FA314F995B8FB718146BFBCC7D1FB +:107E5000FA26312F92E18FE50D649E82F205E47FD0 +:107E60002B8D6F544E663C98EE17762BF4E72DCD94 +:107E70006E87CA165594E1BCD6DDC593E1CFE8659F +:107E800023CA8DECB43E2D7AAB82F12C500AEA92D3 +:107E90007900B5A0F10BE900D4FBB55A7D67E93351 +:107EA000BFEEF6309FB95E5DFABDDA10AEBFDBFB08 +:107EB0009D00D117F3870195E49CE25121E8B9FABE +:107EC0001C324FB1B354C831315FD1E811F182AEE9 +:107ED000ABA40F6FEDFED10FE2F330328F87F18C40 +:107EE000EF33FB5764FAF6687E95F3709BA7705CDE +:107EF000DD5AAAC52DB40BF7348183A9241CEC4E9E +:107F0000123898EA8483A9241C4CED8483A94E3846 +:107F100098EA8483A94E38984AC2C1D4DE5310B877 +:107F2000A994EF2D3D56BA07C3F4E1878FE2FEF521 +:107F3000ED16207AE47DF9F0E66495CE7178A78598 +:107F4000FDA3BC37D7592E9CB3E6C7F8F07ADB7790 +:107F5000CCC2FF458ADDB8CEDA169B97FCF75059A4 +:107F60006007ED93E2F15AC8CF043D61C58D7CCD29 +:107F7000766A799BC261DFAD76FAF624D6A92E1017 +:107F8000F131CF086701F56A64B27A476939AD13F8 +:107F9000BC8BD6593FE07B2EC74DF12ADD42F2A9BA +:107FA0009F2CF2AFC84FFEBE26F9BCAF54F89D0A15 +:107FB000F259F87B59CB13A29CBA0B90BEDA894ECA +:107FC000E63BEA6D17DDAFF669FC96F9B7587EC25D +:107FD000C479224B9B85F3C79457B0F863F909C95C +:107FE00027996788F1C7F91CF16DD86171137E6913 +:107FF000B0972C25BD6FE8515CE40F2A8DD5CF31A9 +:108000007EDE975F40F87950CB97C9FB61B316E7E6 +:108010005A1F2CB464D1B8DD88E2B05EED72F33A39 +:10802000C3F72BCE236EB22B1C17970F6A3A700D35 +:10803000DB455318CBD2F1EDE7867D83539F21BDFD +:108040008BA816A2B7C989EE212EFFD1D8A3B01EE6 +:1080500027D69F2E35329D7508DB894F37EEC8B77E +:10806000ACA77C20C28C560F9D43D8919C57477972 +:10807000733FCB55F0631FD29D2FF6F3C7ADBF9E64 +:10808000D68FDB5FEAC14F4A1DBC5E83D36DC9CA80 +:10809000A7D2C9745EC5078DFF8D91B0D94BF498F6 +:1080A000705FACAF7586CDB4CFFA2E1FE7E1837B4E +:1080B000C53EC1EE74CB6CC25126A7652AD6EB92A1 +:1080C00085FD217D8C379B902F2ECAB7B9105FDAC2 +:1080D000AFE64F83466F534FBAA559D7BECF4CFA80 +:1080E0005DABF9FBF55D0B2D069A6F12E7FD409332 +:1080F0007350E3E77F6CB7EDA17C7F6DEFF3C50AAA +:10810000E9654B964FC173FE7BA9C0811F68FC9443 +:10811000FCA875F6F07946F9F9209E1F976C760653 +:10812000787DD48710D94D53AF58BFA9B7C1E2C1EC +:108130007283296899C2FB0B7E8EEE7BE0A7DABEC4 +:10814000362FED0BCE207F6F78FBC1D5B97C8EDE4C +:1081500087CCC43787D7BD94F026EA01EBA5D48736 +:10816000FA52617FF2FC7F2C35B13DFC31C19E6437 +:108170003C9276D5B4B70154DCB73113E3E31876FB +:108180009598B7ABD5F276872C8148A612B37B8C35 +:10819000872D4F8D11272ACAC4FE6B3539205FD831 +:1081A0009F8CE2E23221873AE26BDC7C5A8FD675F3 +:1081B0009569B86551A478BB27365EEE5BE712F38C +:1081C000482EA41F2E6D3F1ADFCAE30D3A7B6E1CAA +:1081D000C5ADC7EFC9A0F87742E1FC5AEBFD835368 +:1081E0006F23FB7E32C54BDEE9832D47B7655170A7 +:1081F0003585590E92AE66C42764D71BB4B8D71420 +:1082000019DBBE7B66050BCBE2F07FD3779F2C2179 +:108210003F89E78F909F78E3C9677F75AD3B16AFC5 +:10822000E479D677F7B15FBC716FBADF28FC6237AB +:10823000F9C50A8D0F8D5D425E80F222FC26E5DADB +:10824000D0A5707C686CAB0813EE19C5039A3C137B +:10825000E528E52BE528F98F94733E57E26649FF40 +:10826000F5DAFE8BB4F8B056D3BBB51B17B25F5C22 +:10827000DFDD401E096AB5F6DA267DFB28FF47BF21 +:108280000F7BEE253D1EE917FC1FD96B16F9B6E3EF +:10829000224FF841EB8F5E5A85E3DEDFDF971BFF4D +:1082A0007DA559CB9F6DD0F0E24DC8FFB1F286C8D5 +:1082B000FF956571FEEFA6C31AFF0BFA7FF763FE09 +:1082C000AE96E43D82FB36E2EF3CE4CF07C7BF6BDE +:1082D000CEC1F61B9A9574A2777D59BE38677F9FF1 +:1082E000B980EE012D3E27E57BD797093F90A8CFB7 +:1082F00058AA10C75F8A078A2B8657E478F2472767 +:10830000908E1DDB6DA9946F6E6C497739F1BEB00C +:1083100047D353E95F24DD97B637FC03DD272ED919 +:10832000847E6FC1F9F49DE7D2426F6EAB2786E77A +:108330006062FF09FE1EF62D0FDFCB71FFF3F4DD47 +:10834000A143935B515194BFC34A5C6941FF44DF31 +:108350007D8E18C4F90B8CA2FCC7E4FE192D7F0694 +:10836000EF156D897E4CF4483C2B71ECE31A5F24C9 +:108370005E95F8733CBF6381C7BA0BE83BC244F01B +:1083800076BA637A2AD749F43FF29C3929FDDF2770 +:108390003DC9F9D64C3FE1004B3274D3391ED5FCB0 +:1083A00042E2392FE50B7E8E47B7A477940FA88C55 +:1083B000F35C31FA253D88615503E1B23B66332E0B +:1083C000BCD4E1CD253E8D77BE4BF941B6D3E12C2F +:1083D000F0529C1DCFAFD63629215AD7DCE6E0FCFF +:1083E00083B493A6D1EF009EB428D23FD223F2FFEC +:1083F00097148C2B74AEED3603EB8576BEBF360F2B +:108400003D58E612E782A883F05A5DB266FF11116B +:108410007F87DA0AF99CB25DC6DF2167D4E18AF36F +:10842000BBBF6DD1E217AE43F6036D8540DFE98730 +:108430007A2E390CACA7823E396F8759AC0F0E4BA0 +:10844000F8A842B8A5C6D280ED37B6BD6A56B07C52 +:108450004993635E61BF3A7922E336C6159D0E6F7C +:1084600026EDD799EECD8C8FFF29F6559C87B994D0 +:108470001F29A2BCD4B0CFC6FC1EB2AF5A4AFE67B9 +:10848000E8403ABD08801D8A77A88DEE93F72471E5 +:108490007EBDDA00DD0AEB47C49243F1BB43617F46 +:1084A00020DB733CC17F27FF9D673CF187DFD0BA9B +:1084B000F7A478890EF81CF745FF48CFC3C8AEEB88 +:1084C000CB04AE4DCC8B24E641F22C6ECE930CFF48 +:1084D000CC084784FFFB37AA37FFCCACFBCE22BFCA +:1084E000FF34F7ADE4FC4393F65DA799F221A5FCB8 +:1084F0001D1F005DDEBDBD8B33482F9AF655EE0F74 +:1085000061FCC8552040FEE5B7A6680DF98177FBF0 +:1085100026BB3A083F6DED2C01EC6FEABB2F97CAE2 +:1085200077FB6C6BC83F2F71D62C49C7FD373C9247 +:10853000CE79BAD7B788BCC0E65F14B31E9ACB8594 +:108540001CB6FC69F09013E37D33B63971DDDFF7BB +:10855000A7F0BBAD2DEDA773E989C3E3494128C757 +:10856000F3DF6C1858750DF96B257C2C8BC7BBC7D6 +:10857000CC33CBF26DBA4FA13E6EBDEB355EE72337 +:10858000C30BCB6B71FE96AD4FA7D23A373FF86A5B +:1085900085D3C0791E3BAD4FDF8D9CE4980FF4CDA1 +:1085A000A178E956D4D4F231F22089FBB8B5FBC7E3 +:1085B000041A4BFED51558555BC67260798E47DF9D +:1085C000C6D38AEE7BDA8DE1340B78380F6AA1EFDF +:1085D000B64127300E7DD7086DFC9D49C31FB2BD43 +:1085E000A45CECFB6E5A4F2EE9EDA6630FE5929E5C +:1085F000BEE710F5BA63AB7F4E7E2AF85892C0C32F +:1086000026B0F0F7C690C0B3B0D1A57B8FE82D4F50 +:1086100061FA371D28D5C53B4A90D03EEF99C4FB7F +:108620008E3CE3C73EC249AF9B22CDA407AF239E39 +:108630000CB13C851F7BBDC7B894DFE1EC5080F0E6 +:10864000C3EB3D4F3B8AEC31BCE528EB8F903FDA22 +:108650007A32DD2F9E7589BCC036A7F447F6A56433 +:10866000E7889B9CA4B7ADCF9C5B0AA24E2F22C784 +:10867000E5E7660D2F8DD64F9EB010AEDD725CE043 +:10868000852DFD279ECB9E48F7490D2F683864AB9A +:108690008643B69D147CD97AF2A2A5311EE74F77A6 +:1086A000DD9B83886DE5A99FD63E88431B486ED726 +:1086B000A29F78FA89B51D18033A4BB53CB2699868 +:1086C00071DC9EE9AFF07D756B97B6DEF457EE2D49 +:1086D000E0F3D64C88C73BDF283733BFE47CE407A0 +:1086E000CF93EF9EC67BEF946D0B36964F1AEBBD82 +:1086F0009378CFF425DE116D24BD1ED0E251646B5A +:108700007237E104759BDD4465E7563BE30675FB74 +:108710002B36BAE70FFC2ED9A0A492AA0C0F1AF29E +:10872000F91D552BCD9F0C217E5795031185F0FA2D +:10873000E59FBC534AF4D37B2A70D277871FAFA53D +:10874000EF0E3BCB35FE78A2A5644793CE08BFFE63 +:10875000A819BA6DFC2E2400F41E25A27D2F0C7DD5 +:1087600066E0F723034AE47BB47E20C9DE4DEF5672 +:108770004E68FEE28EA24007ED7FC1652CF6D3BEA7 +:10878000DA77C4A9DA7DC8929D69273EC977748AD1 +:10879000AA421BEE6350CE35921E7D7BD80A740F21 +:1087A0009F9A5DC5F1AD53E3ABE29E483107CE78A9 +:1087B0000CA124A4E3DB60E5EF9A16834DA571CAF2 +:1087C000C0F39FD17BA11CE3C78369D89F739BE251 +:1087D000ED4492EB47DEE6F732439F1DB751B26C92 +:1087E0004266F021A22FDB189DFD804271E587567D +:1087F00005C74F9C63701AB53CA515F57D91F8131C +:10880000066EFF2CD585F3170D275F243E5F1E7E75 +:10881000FBC91F955169E57CE2A201632489DEC48E +:10882000592BD5F877BE1400AC15B175A0E72120FF +:108830003BFA96161FE47AE3CDBF9CE9E6F78FB8C2 +:108840000FBF77BB6C3784E97EB66860F0353AE7D6 +:10885000227A5F9C4AF3CC1F8EE69969DF0B53D3D3 +:1088600029AF4C36F405828E8C4E21CFEBD2F4F733 +:10887000C3B3E5E29E7456F353A3EF1ADD2AC4C7CF +:1088800031C97FE90724FD23768BC8EF6E14F9FA0E +:108890009101C42763F85F59BE4AF80471C78BC5BC +:1088A000EAD9F2F2985E24EA41A2BCA55C61E785B0 +:1088B0007369F92CCFD90F00DD5BA28FBEACB03C41 +:1088C0002FD07A07AF1CF1919C3B1D4BF3839EFF89 +:1088D0007F72947E27982CDED38FE77F82C9E29D3A +:1088E000FD18FE27795A3EFBA73F907F427F718E8D +:1088F000FC85F4135FC22FFD17F179F45DA3C3204B +:10890000BE0712FEC57D3ADBA686E9DE313FCFDD2C +:1089100061A2FE3B81E3AB7C0F29F3B09D6DB3C434 +:1089200038F9BEF17623BF7F7CCF2CDE3F863AA696 +:10893000312EE41F7AE711CAE1F77DF21D61A749E4 +:10894000B487B6008FEBA4F78E69B1778464F37CAB +:10895000EE16603F35BAEF0EF1AE52DA43304DBC41 +:108960003F0C5E16FEB3A0225D8B13D172C2C3DF33 +:10897000BEDB01A49F52FED95A1C92F2376AF2CF95 +:10898000F608F967DB0D117ABF0C1B97A8F172ACE2 +:10899000C3B9B4EEB388DBAD44578D787FD75BA302 +:1089A00066D1F7C8DE9A0C03E1A91FFEE99637EFFE +:1089B000247EBC68661CDAEB13E7ECFD4921E3ADCD +:1089C0002143F8E10D347F959DDFC14ABE1A33572C +:1089D0003EDC84E57E25F87DD2B35E8781CFDBBBAC +:1089E0002999EDB2375F9CBFB7B880D741F9951C84 +:1089F000A07D6AAC02CF6AFCB9BC718A263FB1EF98 +:108A0000F0FD0EF92E55EB2F90EF52997FB1F7A89C +:108A1000C3A9F1DF492E6B38E4B22697D17610EF67 +:108A200053310EA7C6E787C76B9F3B39F8F58A49D4 +:108A3000B1FEDE74358B705522FF1FECF0759790F8 +:108A40003E380C4EC2F5E3C92D65B5E5D0D1387975 +:108A500091DAD339533AE7F3B9A5FCF6CB38877AE4 +:108A6000C9FA93204F9822F443DEF3F342171FE62E +:108A70008F30109D41F113ED6E3ADD0B87C8BFCDED +:108A80008DE9ADA28A7763D28EA5BE4A3F379E3D5F +:108A90002B6DE8FFC67C3FDDCF763B05374E296462 +:108AA000BBDE4EFC321ABC99496CCF17B2889E2FA0 +:108AB00061D77F4FB9F9899A5F89640677D23A13F3 +:108AC000353F926D0CCF10EFB461A3F69D91FFDF9F +:108AD000CB9B1A5FD7A1FF9A80E37A2B443C815D40 +:108AE000097E4C9343BD36FECD8FD0DEE6C6E4B89A +:108AF0004EBB1FD5EF4ABA48FEB07E9759D8515B9E +:108B0000A59AB00EFB73B90EB83F9E44E792F3D618 +:108B10006DFACF4984AFC79D1F9D924EEFEDD89F50 +:108B2000E2B9CF5802FBE99C437089DF73BDF0477F +:108B3000237F97B888F271A751991B76E33A872B68 +:108B400004AE996B0D1EA2F1F2FF1FC97BDD0BBEB7 +:108B5000778AE97B0A7C3E3885E9991CE8237EEE1A +:108B60002E1AE1EF2C4359C3665A7FA8F6FDA9449B +:108B7000DFBAB6E7D9EFAF937EFF2FF02B914F927C +:108B80007FB1738F4C221CFD7FC537A937FF0D5C69 +:108B90003910ACE0350000000000000000000000CB +:108BA0000000004000000000000000000000004045 +:108BB000000000000000000000000028000000008D +:108BC0000000000000000010000000000000000095 +:108BD0000000004000000000000000000000001045 +:108BE000000000000000000000000008000000007D +:108BF0000000000000000000000000000000000075 +:108C00000000000000000000000000000000000064 +:108C10000000000000000000000000000000000054 +:108C20000000000000000000000000000000000044 +:108C30000000000000000000000000000000000034 +:108C40000000000000000000000000000000000024 +:108C50000000000000000000000000000000000014 +:108C60000000000000000000000000000000000004 +:108C700000000000000000000000000000000000F4 +:108C800000000000000000000000000000000000E4 +:108C900000000000000000000000000000000000D4 +:108CA00000000000000000000000000000000000C4 +:108CB00000000000000000000000000000000000B4 +:108CC00000000000000000000000000000000000A4 +:108CD0000000000000000000000000000000000094 +:108CE0000000000000000000000000000000000084 +:108CF0000000000000000000000000000000000074 +:108D000000000000000000000000900000100000C3 +:108D100000000008000090080010000000000002A1 +:108D20000000900000100000000000108000000013 +:108D300000000000000000008000000000000000B3 +:108D400000000000800000000000000000000000A3 +:108D5000800000000000000000000000000093B848 +:108D60000001000400000001000093C000000000AA +:108D700000000002000093C800000000000000088E +:108D8000000093CC0000000000000002000093D01F +:108D900000000000000000080000972000400000D4 +:108DA00000000040000093E0008000000000004848 +:108DB000000094E00040000000000008000094F073 +:108DC00000400000000000180000A0000028000083 +:108DD000000000280000C0C00008000000000001E2 +:108DE0000000C0C100080000000000010000C0C277 +:108DF0000008000000000001000020080010000032 +:108E0000000000100000200000000000000000082A +:108E100080000000000000000000000000000000D2 +:108E20000000000000000000000000000000000042 +:108E30000000000000000000000000000000000032 +:108E40000000000000000000000000000000000022 +:108E50000000000000000000000000000000000012 +:108E60000000000000000000000000000000000002 +:108E700000000000000000000000000000000000F2 +:108E800000000000000000000000000000000000E2 +:108E900000000000000000000000000000000000D2 +:108EA00000000000000000000000000000000000C2 +:108EB00000000000000000000000000000000000B2 +:108EC00000000000000000000000000000000000A2 +:108ED0008000000000000000000000008000000092 +:108EE0000000000000000000800000000000000002 +:108EF00000000000800000000000000000000000F2 +:108F00008000000000000000000000008000000061 +:108F100000000000000000008000000000000000D1 +:108F200000000000800000000000000000000000C1 +:108F30008000000000000000000000008000000031 +:108F400000000000000000008000000000000000A1 +:108F50000000000080000000000000000000000091 +:108F60000000000000000000000000000000000001 +:108F700000000000000000000000000000000000F1 +:108F800000000000000000000000000000000000E1 +:108F90000000000000000000000000008000000051 +:108FA0000000000000000000800000000000000041 +:108FB0000000000080000000000000000000000031 +:108FC0000000000000000000000000008000000021 +:108FD0000000000000000000800000000000000011 +:108FE0000000000080000000000000000000000001 +:108FF0000000000000000000000000000000000071 +:109000000000000000000000000000000000000060 +:109010000000000000000000000000000000000050 +:109020000000000000000000000000000000000040 +:1090300000000000000000008000000000000000B0 +:109040000000000000000000000000000000000020 +:1090500000001EC8000000000000000800002008FA +:1090600000100000000000100000200000000000C0 +:10907000000000080000A0800008000000000001BF +:109080000000A08100080000000000010000A08294 +:10909000000800000000000100009070003800008F +:1090A0000000003800001ED8000000000000000290 +:1090B00000001EDA00000000000000028000000036 +:1090C0000000000000000000800000000000000020 +:1090D0000000000080000000000000000000000010 +:1090E0008000000000000000000000008000000080 +:1090F00000000000000000008000000000000000F0 +:1091000000000000800000000000000000000000DF +:10911000800000000000000000000000800000004F +:10912000000000000000000000000000000000003F +:10913000000000000000000000000000000000002F +:10914000000000000000000000000000000000001F +:10915000000000000000000000000000000000000F +:10916000000000008000000000000000000000007F +:10917000800000000000000000000000000000006F +:10918000000000000000000080000000000000005F +:10919000000000008000000000000000000000004F +:1091A00080000000000000000000000080000000BF +:1091B000000000000000000080000000000000002F +:1091C000000000008000000000000000000000001F +:1091D0000000C00000400000000000400000C80087 +:1091E00000400000000000400000C82E00400000C9 +:1091F000000000010000C800004000020000000163 +:109200000000C801004000020000000000008000D3 +:10921000004000000000004080000000000000004E +:109220000000000000008000000800400000000472 +:109230000000800400080040000000040000B000AE +:1092400000280000000000280000B14000100000CD +:10925000000000100000B14A0010000000000001F2 +:1092600000008800008000000000008000008800EE +:10927000000800800000000200008C000040000098 +:109280000000004000002008001000000000001056 +:109290000000200000000000000000080000125044 +:1092A000000800000000000100001251000800004A +:1092B0000000000100001252000800000000000140 +:1092C00000008E0000100004000000040000129056 +:1092D0000030001800000010000012980030001844 +:1092E00000000002800000000000000000000000FC +:1092F000800000000000000000000000800000006E +:1093000000000000000000008000000000000000DD +:1093100000000000800000000000000000000000CD +:10932000800000000000000000000000800000003D +:10933000000000000000000000000000000000002D +:10934000000000000000000000000000000000001D +:10935000000000000000000000000000000000000D +:10936000000000000000000080000000000000007D +:10937000000000008000000000000000000000006D +:10938000000000000000000000000000800000005D +:10939000000000000000000080000000000000004D +:1093A000000000008000000000000000000000003D +:1093B00080000000000000000000000080000000AD +:1093C0000000000000000000000083080080000092 +:1093D000000000800000000100000000000000000C +:1093E0000000200800100000000000100000200015 +:1093F00000000000000000080000850000080000D8 +:1094000000000001000085010008000000000001CC +:10941000000085020008000000000001000060005C +:10942000003800000000003880000000000000004C +:10943000000000000000845400080000000000024A +:109440000000845600080000000000020000846450 +:109450000010000000000004800000000000000078 +:10946000000000008000000000000000000000007C +:10947000800000000000000000000000000000006C +:1094800000000000000000000000000000000000DC +:1094900000000000000000000000000000000000CC +:1094A000000000000000000000000000800000003C +:1094B000000000000000000080000000000000002C +:1094C000000000000000000000000000000000009C +:1094D000800000000000000000000000800000008C +:1094E00000000000000000008000000000000000FC +:1094F00000000000800000000000000000000000EC +:1095000080000000000000000000000000003000AB +:10951000004000000000000800003008004000008B +:1095200000000020000032000020000000000020A9 +:10953000000037A8000000000000000880000000C4 +:1095400000000000000000000000A000000000007B +:109550000000200000003EC10000000000000001EB +:1095600000003EE0000000000000000200001E00BD +:1095700000E000080000000880000000000000007B +:109580000000000000004000000800000000000192 +:109590000000400100080000000000010000404001 +:1095A0000008000400000002000040600008000401 +:1095B0000000000480000000000000000000000027 +:1095C000000040000008000000000004000040040B +:1095D00000080000000000040000404000000000FF +:1095E00000000008000040480000000000000008E3 +:1095F000000080000000000000000010000050404B +:109600000001000400000001000050000000000004 +:1096100000000020000050080010000000000004BE +:109620000000500C0010000000000001000052C7B4 +:109630000000000000000001000052C60000000011 +:109640000000000100003000004000200000000485 +:10965000000030040040002000000004000030083A +:1096600000400020000000020000300A00400020FE +:10967000000000020000300C00400020000000014B +:109680000000300D00400020000000010000300EFE +:1096900000400020000000010000301000400020C9 +:1096A000000000040000301400400020000000040E +:1096B0000000301800400020000000040000301CB2 +:1096C0000040002000000004000050000100008065 +:1096D000000800040000500401000080000800049D +:1096E0000000000A000000000000000000005068B8 +:1096F00001000080000000010000506901000080AE +:10970000000000010000506C010000800000000219 +:109710000000506E01000080000000020000507048 +:10972000010000800000000400005074010000806F +:1097300000000004000050660100008000000002EC +:109740000000506401000080000000010000506033 +:109750000100008000000002000050620100008053 +:1097600000000002000050500100008000000004D2 +:109770000000505401000080000000040000505818 +:1097800001000080000000040000505C0100008027 +:10979000000000040000507C010000800000000177 +:1097A0000000507D01000080000000010000401812 +:1097B00000100000000000040000409000100000B5 +:1097C00000000004000040980010000000000004A9 +:1097D00000004110000000000000000200004112E3 +:1097E0000000000000000002000041140000000022 +:1097F000000000020000411600000000000000020E +:10980000000060400008000000000002000060420C +:109810000008000000000002000060440008000092 +:109820000000000200006046000800000000000286 +:1098300000006080000800000000000800006000D8 +:1098400000080000000000020000600200080000A4 +:109850000000000100006004000800000000000299 +:10986000000060C000080000000000080000610067 +:10987000000800000000000400006104000800006F +:10988000000000010000614000080000000000022C +:109890000000614400080000000000020000618038 +:1098A0000008000000000004000070000008000034 +:1098B000000000020000700200080000000000012B +:1098C000000070040008000000000002000070406A +:1098D00000080000000000020000704400080000C2 +:1098E00000000002000070460008000000000002B6 +:1098F0000000766000080000000000080000708092 +:109900000008000000000002000070840008000051 +:1099100000000002000076A000080000000000081F +:1099200000008040000800000000000100008041AD +:109930000008000000000001000080420008000054 +:10994000000000010000804300080000000000014A +:1099500000008000000800000000000200008002FB +:109960000008000000000001000080040008000062 +:1099700000000002000080C000080000000000029B +:10998000000080C20008000000000002000080C447 +:1099900000080000000000020000808000080000B5 +:1099A00000000001000080810008000000000001AC +:1099B0000000808200080000000000010000808399 +:1099C0000008000000000001000080840008000082 +:1099D0000000000100008085000800000000000178 +:1099E0000000808600080000000000010000600008 +:1099F00000080000000000020000600200080000F3 +:109A000000000001000060040008000000000002E7 +:109A10000000604200C0001800000002000060402A +:109A200000C00018000000020000604C00C00018D8 +:109A3000000000080000604400C00018000000089A +:109A40000000605700C000180000000100006054D2 +:109A500000C00018000000020000605600C000189E +:109A6000000000010000664000080000000000083F +:109A7000000066800008000000000008000066C0CA +:109A80000008000000000008800000000000000046 +:109A90000000000080000000000000000000000046 +:109AA00080000000000000000000000080000000B6 +:109AB0000000000000000000800000000000000026 +:109AC0000000000080000000000000000000000016 +:109AD0008000000000000000000000008000000086 +:109AE00000000000000000008000000000000000F6 +:109AF00000000000800000000000000000000000E6 +:109B00008000000000000000000000008000000055 +:109B100000000000000000008000000000000000C5 +:109B200000000000800000000000000000000000B5 +:109B30008000000000000000000000008000000025 +:109B40000000000000000000800000000000000095 +:109B50000000000080000000000000000000000085 +:109B600080000000000000000000000080000000F5 +:109B70000000000000000000800000000000000065 +:109B80000000000080000000000000000000000055 +:109B900080000000000000000000000080000000C5 +:109BA0000000000000000000800000000000000035 +:109BB0000000000080000000000000000000000025 +:109BC0008000000000000000000000008000000095 +:109BD0000000000000000000800000000000000005 +:109BE00000000000800000000000000000000000F5 +:109BF0008000000000000000000000008000000065 +:109C000000000000000000008000000000000000D4 +:109C100000000000800000000000000000000000C4 +:109C20008000000000000000000000008000000034 +:109C300000000000000000008000000000000000A4 +:109C40000000000080000000000000000000000094 +:109C50008000000000000000000000008000000004 +:109C60000000000000000000800000000000000074 +:109C70000000000080000000000000000000000064 +:109C800080000000000000000000000080000000D4 +:109C90000000000000000000800000000000000044 +:109CA0000000000080000000000000000000000034 +:109CB00080000000000000000000000080000000A4 +:109CC0000000000000000000800000000000000014 +:109CD0000000000080000000000000000000000004 +:109CE0008000000000000000000000008000000074 +:109CF00000000000000000008000000000000000E4 +:109D000000000000800000000000000000000000D3 +:109D10008000000000000000000000008000000043 +:109D200000000000000000008000000000000000B3 +:109D300000000000800000000000000000000000A3 +:109D40000000000000000000000000008000000093 +:109D50000000000000000000000000000000000003 +:089D60000708020000000000EA +:00000001FF --- linux-ppc-3.8.0.orig/firmware/bnx2x/bnx2x-e1-7.8.2.0.fw.ihex +++ linux-ppc-3.8.0/firmware/bnx2x/bnx2x-e1-7.8.2.0.fw.ihex @@ -0,0 +1,10213 @@ +:100000000000175800000068000005D8000017C85D +:10001000000031CC00001DA80000006C00004F78EB +:100020000000821C00004FE80000009C0000D20885 +:10003000000094480000D2A800000084000166F887 +:1000400000004274000167800000008C0001A9F8E4 +:100050000000C1C40001AA88000011B800026C5061 +:100060000000000400027E10020600DC0000000117 +: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 +:10055000022383400000000005240000330E000049 +:10056000052480000F630CC406249CE06ACA051CA5 +: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 +:10080000040101380000001102010328000000006B +:100810000201055400000030020100C40000000184 +:10082000020100CC00000001020100F800000001FC +:10083000020100F000000001020100800030000011 +:100840000201008800000028020100900000000062 +:1008500002010134000000040401017C00000011C9 +:100860000201032C000000000201056400000030BA +:10087000020100C800000001020100D000000001D8 +:10088000020100FC00000001020100F40000000170 +:1008900002140000000000010214000C000000011E +:1008A00003140040000205590214000C000000006F +:1008B00002140000000000000214006C00000000A0 +:1008C00002140004000000010214003000000001C6 +:1008D00002140004000000000214005C000000008C +:1008E000021400080000000102140034000000019E +:1008F0000214000800000000021400600000000064 +:10090000030400040012055B030400540003056D9A +:100910000204007000000004030400780004057065 +:1009200004040088000000050304009C0003057413 +:10093000040400A800000004030400B800050577C3 +:10094000040400CC00000004030400DC0004057C67 +:10095000040400EC00000004010401240000000075 +:1009600001040128000000000104012C0000000027 +:100970000104013000000000020401340000000FF7 +:1009800003120490002205800212052000000002DC +:1009900002120388000000640212039000000008A5 +:1009A0000312039C000305A2021203BC0000000412 +:1009B000021203C400000004021203D00000000071 +:1009C000021203DC000000000212036C00000001B0 +:1009D000021203680000003F031201BC003C05A5A1 +:1009E000031202B0000205E103120324000205E332 +:1009F000021201B00000000107103800000505E5F3 +:100A000007103C00000505EA07103C20000505EF33 +:100A100003168030000805F402168054000000021E +:100A200003168060000505FC0416807400000007B2 +:100A300003168090000206010316809C0005060341 +:100A4000041680B000000007031680CC00080608DA +:100A5000021680F000000007041680F40000000C6D +:100A60000316812400040610041681340000000CD3 +:100A700003168164003B0614041682500000000433 +:100A8000031682600002064F041682680000000808 +:100A90000316828800080651041682A80000000A86 +:100AA00002168804000000040316880C0010065982 +:100AB000021680EC000000FF03040408001406691D +:100AC000030500440002067D030500500004067F74 +:100AD0000405006000000004030500900013068375 +:100AE00002050114000000010305011C0002069626 +:100AF00002050204000000010305020C0002069832 +:100B00000305021C0003069A040502400000000AC7 +:100B1000030502800020069D0405400000000D0032 +:100B200003050004001006BD020500E00000000EF1 +:100B3000020500E40000002E04164024000000021C +:100B400003164030000306CD02164044000000208A +:100B5000021640700000001C02164208000000014E +:100B6000021642100000000102164220000000019F +:100B70000216422800000001021642300000000167 +:100B80000216423800000001021642600000000117 +:100B90000A000001000000010216401C0003D09072 +:100BA0000A000001000000020216401C000009C4F7 +:100BB0000A000001000000040216401C0000009C16 +:100BC0000216400000000001021640D8000000019B +:100BD00003164008000306D0021642400000000041 +:100BE0000216424800000000081642700000000291 +:100BF0000216425000000000021642580000000099 +:100C0000081642800000000203042008000406D3F6 +:100C10000304201C000406D70404203800000080D0 +:100C200003042238000406DB01042248000000000F +:100C30000104224C000000000104225000000000CA +:100C400001042254000000000104225800000000AA +:100C50000104225C0000000001042260000000008A +:100C6000010422640000000001042268000000006A +:100C70000104226C0000000001042270000000004A +:100C8000010422740000000001042278000000002A +:100C90000104227C00000000020424BC00000001CA +:100CA0000A0000010000000102042000000003E827 +:100CB0000A00000100000002020420000000000AF7 +:100CC0000A000001000000040204200000000001EE +:100CD000051804000069000006180760001406DF0C +:100CE000041A000000001600041A800000000040F2 +:100CF000031A08B0000206E1031A19C8000206E34D +:100D0000031A2FC0000406E5041A2FD000000006C5 +:100D1000031A2FE8000206E9031A300003F906EB74 +:100D2000041A3FE400000007031A487000040AE4B4 +:100D3000021B800000000034021B804000000018ED +:100D4000021B80800000000C021B80C000000020FD +:100D5000021B83800007A120021B83C0000001F456 +:100D6000021B8BC0000000010A000002000000010D +:100D7000021B83000007A120021B8340000001F436 +:100D80000A00000200000002021B8300000013881A +:100D9000021B8340000000050A000002000000045E +:100DA000021B830000000138021B8340000000008A +:100DB000051C00002CFD0000051C800034200B40A9 +:100DC000051D000020FC1848061D4D10565E0AE85F +:100DD00001180000000000000118000400000000DD +:100DE00001180008000000000118000C00000000BD +:100DF000011800100000000001180014000000009D +:100E000003180020001A0AEA031800A400020B04C9 +:100E10000218022400000000021802340000000042 +:100E20000218024C00000000021802E4000000FF5B +:100E30000818100000000400041A08000000000256 +:100E4000041A082000000012041A09C0000000481B +:100E5000041A250000000010041A2580000000126A +:100E6000041A261000000012031A2FB000020B060D +:100E7000041A400000000006041A4030000000027E +:100E8000041A482000000002031A4C5000020B080C +:100E9000041A081000000002041A0868000000127A +:100EA000041A0AE000000048041A2540000000105F +:100EB000041A25C800000012041A26580000001267 +:100EC000031A2FB800020B0A041A4018000000068B +:100ED000041A403800000002041A482800000002EA +:100EE000031A4C5800020B0C020E004C000000329A +:100EF000030E005400040B0E040E006400000004F6 +:100F0000030E009400130B12020E014400000001B6 +:100F1000030E014C00020B25020E0204000000012A +:100F2000030E020C00020B27030E021C00040B2907 +:100F3000030E0280001B0B2D040E02EC00000017B4 +:100F4000040E200000000800030E000400110B48EE +:100F5000020E01100000000F020E01140000002F0D +:100F6000020C100000000028030C400800040B597C +:100F7000030C401C00040B5D030C403800020B61A5 +:100F8000040C40400000005E020C41B8000000016B +:100F9000040C41BC0000001F030C423800040B632A +:100FA000010C424800000000010C424C000000000F +:100FB000010C425000000000010C425400000000EF +:100FC000010C425800000000010C425C00000000CF +:100FD000010C426000000000010C426400000000AF +:100FE000010C426800000000010C426C000000008F +:100FF000010C427000000000010C4274000000006F +:10100000010C427800000000010C427C000000004E +:10101000010C428000000000020C44C000000001EE +:101020000A00000100000001020C4000000003E87B +:101030000A00000100000002020C40000000000A4B +:101040000A00000100000004020C40000000000142 +:1010500005300400009B00000630076800130B6792 +:10106000043200000000160004328000000000403E +:101070000332183000020B6903322E7000040B6B30 +:101080000432508000000008033250A000020B6FB1 +:10109000023380000000001A023380400000004E3E +:1010A0000233808000000010023380C00000002066 +:1010B000023383800007A120023383C0000001F4C3 +:1010C00002338BC0000000010A0000020000000192 +:1010D000023383000007A12002338340000001F4A3 +:1010E0000A0000020000000202338300000013889F +:1010F00002338340000000050A00000200000004E3 +:1011000002338300000001380233834000000000F6 +:101110000534000036F800000534800031A90DBE0A +:10112000053500002BA31A290635620053C00B7148 +:101130000130000000000000013000040000000049 +:1011400001300008000000000130000C0000000029 +:101150000130001000000000013000140000000009 +:1011600003300020001A0B73033000A400020B8D23 +:1011700002300224000000000230023400000000AF +:101180000230024C00000000023002E40000FFFFC9 +:10119000083020000000080004321C10000000028B +:1011A00004322DE000000002043230000000002074 +:1011B0000432310000000020043232000000002020 +:1011C000043233000000002004323400000000200C +:1011D00004323500000000200432360000000020F8 +:1011E00004323700000000200432380000000020E4 +:1011F000043239000000002004323A0000000020D0 +:1012000004323B000000002004323C0000000020BB +:1012100004323D000000002004323E0000000020A7 +:1012200004323F000000002004324000000000D8DB +:10123000043246C000000120043250C800000024DF +:1012400004321C200000000204322DE800000002DD +:101250000432308000000020043231800000002081 +:10126000043232800000002004323380000000206D +:101270000432348000000020043235800000002059 +:101280000432368000000020043237800000002045 +:101290000432388000000020043239800000002031 +:1012A00004323A800000002004323B80000000201D +:1012B00004323C800000002004323D800000002009 +:1012C00004323E800000002004323F8000000020F5 +:1012D00004324360000000D804324B40000001207B +:1012E000043251580000002402020058000000326D +:1012F0000302006000040B8F040200700000000471 +:10130000030200A0000E0B93030200DC00070BA1F8 +:10131000020200FC000000060202012000000000A2 +:101320000202013400000002020201B000000001CC +:101330000202020C000000010302021400020BA8CA +:1013400002020404000000010302040C00020BAAC4 +:101350000302041C00040BAC03020480001F0BB04A +:10136000040204FC000000130402800000002000BE +:101370000302000400140BCF02020108000000C8A1 +:101380000202011800000002020201C40000000075 +:10139000020201CC00000000020201D400000002A1 +:1013A000020201DC00000002020201E4000000FF72 +:1013B000020201EC000000FF0202010C000000C864 +:1013C0000202011C00000002020201C8000000002D +:1013D000020201D000000000020201D80000000259 +:1013E000020201E000000002020201E8000000FF2A +:1013F000020201F0000000FF0216100000000028A9 +:101400000316600800030BE30316601C00040BE6E0 +:1014100003166038000D0BEA0416606C0000001320 +:10142000031660B800020BF7041660C00000003E0F +:10143000021661B800000001041661BC0000001F24 +:101440000316623800040BF9011662480000000020 +:101450000116624C000000000116625000000000FE +:1014600001166254000000000116625800000000DE +:101470000116625C000000000116626000000000BE +:10148000011662640000000001166268000000009E +:101490000116626C0000000001166270000000007E +:1014A000011662740000000001166278000000005E +:1014B0000116627C00000000021664BC00000001FE +:1014C0000A0000010000000102166000000003E8AD +:1014D0000A00000100000002021660000000000A7D +:1014E0000A00000100000004021660000000000174 +:1014F00005280400008900000628076800130BFD7A +:10150000042A000000001600042A800000000040A9 +:10151000032A250000020BFF032A296000040C01A6 +:10152000032A2F4800020C05032A336800020C0727 +:10153000032A392000020C09032A393000020C0B5F +:10154000032A3AC800020C0D042A3AD00000000613 +:10155000032A3B9800020C0F032A3C2000040C11C4 +:10156000022A3CD000000000022B80000000000096 +:10157000022B804000000018022B80800000000C2D +:10158000022B80C000000066022B83800007A12090 +:10159000022B83C0000001F4022B8BC0000000016D +:1015A0000A00000200000001022B83000007A120B6 +:1015B000022B8340000001F40A0000020000000238 +:1015C000022B830000001388022B834000000005DB +:1015D0000A00000200000004022B83000000013812 +:1015E000022B8340000000000A00000100000020E0 +:1015F000022A3CD400000000052C00003618000030 +:10160000052C800039B70D86052D00003AF41BF437 +:10161000052D800017002AB1062DAED04A260C15E4 +:101620000128000000000000012800040000000064 +:1016300001280008000000000128000C0000000044 +:101640000128001000000000012800140000000024 +:1016500003280020001A0C17032800A400020C31F4 +:1016600002280224000000000228023400000000CA +:101670000228024C00000000022802E40000FFFFE4 +:101680000828200000000800042A39100000000289 +:10169000042A393800000020042A3A3800000010DB +:1016A000032A3AE800020C33032A3AF800100C35FA +:1016B000042A3C3000000002042A5000000000020E +:1016C000042A501000000002042A502000000002EA +:1016D000042A503000000002022A5040000000009E +:1016E000042A50480000000E042A391800000002A5 +:1016F000042A39B800000020042A3A7800000010BB +:10170000032A3AF000020C45032A3B3800100C472C +:10171000042A3C3800000002042A5008000000029D +:10172000042A501800000002042A50280000000279 +:10173000042A503800000002022A50440000000031 +:10174000042A50800000000E0400A00000000016D3 +:101750000300A06C00060C570400A08400000005E4 +:101760000200A0980FE000000400A09C00000014FC +:101770000300A0EC00080C5D0400A22C0000000493 +:101780000200A060000003070300A10C00060C6526 +:101790000400A124000000050200A1380FE00000B1 +:1017A0000400A13C000000140300A18C00080C6B95 +:1017B0000400A23C000000040200A0640000030733 +:1017C0000000000000000000000000000000000019 +:1017D0000000000000000000000000000000000009 +:1017E00000000000000000000000000000000000F9 +:1017F0000000000000000005000500090009000DC0 +:1018000000000000000000000000000000000000D8 +:1018100000000000000000000000000000000000C8 +:10182000000D001B001B001C001C001D0000000020 +:1018300000000000000000000000000000000000A8 +:10184000000000000000000000000000001D002556 +:101850000000000000000000000000000000000088 +:101860000000000000000000000000000000000078 +:1018700000000000000000000025002B0000000018 +:101880000000000000000000000000000000000058 +:101890000000000000000000000000000000000048 +:1018A00000000000002B00470000000000000000C6 +:1018B0000000000000000000000000000000000028 +:1018C0000000000000000000000000000000000018 +:1018D000004700AE00AE00B300B300B80000000047 +:1018E00000000000000000000000000000000000F8 +:1018F00000000000000000000000000000000000E8 +:1019000000000000000000000000000000000000D7 +:1019100000000000000000000000000000000000C7 +:10192000000000000000000000B800BC0000000043 +:1019300000000000000000000000000000000000A7 +:101940000000000000000000000000000000000097 +:101950000000000000BC00C3000000000000000008 +:101960000000000000000000000000000000000077 +:101970000000000000000000000000000000000067 +:1019800000C300C400C400D600D600E80000000078 +:101990000000000000000000000000000000000047 +:1019A0000000000000000000000000000000000037 +:1019B0000000000000000000000000000000000027 +:1019C0000000000000000000000000000000000017 +:1019D000000000000000000000E800EC0000000033 +:1019E00000000000000000000000000000000000F7 +:1019F00000000000000000000000000000000000E7 +:101A00000000000000EC00EF00EF00FA00FA010512 +:101A100000000000000000000000000000000000C6 +:101A200000000000000000000000000000000000B6 +:101A30000105010B010B010F010F01130000000054 +:101A40000000000000000000000000000000000096 +:101A50000000000000000000000000000000000086 +:101A60000000000000000000000000000000000076 +:101A70000000000000000000000000000000000066 +:101A8000000000000000000001130123000000001E +:101A90000000000000000000000000000000000046 +:101AA0000000000000000000000000000000000036 +:101AB00000000000012301320000000000000000CF +:101AC0000000000000000000000000000000000016 +:101AD0000000000000000000000000000000000006 +:101AE000013201350000000000000000000000008D +:101AF00000000000000000000000000000000000E6 +:101B00000000000000000000000000000135014A54 +:101B100000000000000000000000000000000000C5 +:101B200000000000000000000000000000000000B5 +:101B30000000000000000000014A014B000000000E +:101B40000000000000000000000000000000000095 +:101B50000000000000000000000000000000000085 +:101B600000000000014B0158015801590159015A68 +:101B70000000000000000000000000000000000065 +:101B80000000000000000000000000000000000055 +:101B9000015A016E016E01710171017400000000B3 +:101BA0000000000000000000000000000000000035 +:101BB0000000000000000000000000000174018D22 +:101BC0000000000000000000000000000000000015 +:101BD0000000000000000000000000000000000005 +:101BE0000000000000000000018D01BA01BA01C52B +:101BF00001C501D00000000000000000000000004E +:101C000000000000000000000000000000000000D4 +:101C10000000000001D001DD01DD01DE01DE01DF99 +:101C200000000000000000000000000000000000B4 +:101C300000000000000000000000000000000000A4 +:101C400001DF01E0000000000000000000000000D3 +:101C50000000000000000000000000000000000084 +:101C600000000000000000000000000001E001FD95 +:101C70000000000000000000000000000000000064 +:101C80000000000000000000000000000000000054 +:101C9000000000000000000001FD02260226023BB9 +:101CA000023B0250000000000000000000000000A5 +:101CB0000000000000000000000000000000000024 +:101CC00000000000025002620262026A026A0272AE +:101CD0000000000000000000000000000000000004 +:101CE00000000000000000000000000000000000F4 +:101CF00002720273000000000000000000000000FB +:101D000000000000000000000000000000000000D3 +:101D100000000000000000000000000002730291BB +:101D200000000000000000000000000000000000B3 +:101D300000000000000000000000000000000000A3 +:101D40000000000000000000029102C402C402D0A2 +:101D500002D002DC000000000000000000000000D3 +:101D60000000000000000000000000000000000073 +:101D70000000000002DC02DD02DD02E402E402EB0E +:101D80000000000000000000000000000000000053 +:101D90000000000000000000000000000000000043 +:101DA00000000000000000000000200000004000D3 +:101DB00000006000000080000000A0000000C000E3 +:101DC0000000E000000100000001200000014000D0 +:101DD00000016000000180000001A0000001C000BF +:101DE0000001E000000200000002200000024000AC +:101DF00000026000000280000002A0000002C0009B +:101E00000002E00000030000000320000003400087 +:101E100000036000000380000003A0000003C00076 +:101E20000003E00000040000000420000004400063 +:101E300000046000000480000004A0000004C00052 +:101E40000004E0000005000000052000000540003F +:101E500000056000000580000005A0000005C0002E +:101E60000005E0000006000000062000000640001B +:101E700000066000000680000006A0000006C0000A +:101E80000006E000000700000007200000074000F7 +:101E900000076000000780000007A0000007C000E6 +:101EA0000007E000000800000008200000084000D3 +:101EB00000086000000880000008A0000008C000C2 +:101EC0000008E000000900000009200000094000AF +:101ED00000096000000980000009A0000009C0009E +:101EE0000009E000000A0000000A2000000A40008B +:101EF000000A6000000A8000000AA000000AC0007A +:101F0000000AE000000B0000000B2000000B400066 +:101F1000000B6000000B8000000BA000000BC00055 +:101F2000000BE000000C0000000C2000000C400042 +:101F3000000C6000000C8000000CA000000CC00031 +:101F4000000CE000000D0000000D2000000D40001E +:101F5000000D6000000D8000000DA000000DC0000D +:101F6000000DE000000E0000000E2000000E4000FA +:101F7000000E6000000E8000000EA000000EC000E9 +:101F8000000EE000000F0000000F2000000F4000D6 +:101F9000000F6000000F8000000FA000000FC000C5 +:101FA000000FE000001000000010200000104000B2 +:101FB00000106000001080000010A0000010C000A1 +:101FC0000010E0000011000000112000001140008E +:101FD00000116000001180000011A0000011C0007D +:101FE0000011E0000012000000122000001240006A +:101FF00000126000001280000012A0000012C00059 +:102000000012E00000130000001320000013400045 +:1020100000136000001380000013A0000013C00034 +:102020000013E00000140000001420000014400021 +:1020300000146000001480000014A0000014C00010 +:102040000014E000001500000015200000154000FD +:1020500000156000001580000015A0000015C000EC +:102060000015E000001600000016200000164000D9 +:1020700000166000001680000016A0000016C000C8 +:102080000016E000001700000017200000174000B5 +:1020900000176000001780000017A0000017C000A4 +:1020A0000017E00000180000001820000018400091 +:1020B00000186000001880000018A0000018C00080 +:1020C0000018E0000019000000192000001940006D +:1020D00000196000001980000019A0000019C0005C +:1020E0000019E000001A0000001A2000001A400049 +:1020F000001A6000001A8000001AA000001AC00038 +:10210000001AE000001B0000001B2000001B400024 +:10211000001B6000001B8000001BA000001BC00013 +:10212000001BE000001C0000001C2000001C400000 +:10213000001C6000001C8000001CA000001CC000EF +:10214000001CE000001D0000001D2000001D4000DC +:10215000001D6000001D8000001DA000001DC000CB +:10216000001DE000001E0000001E2000001E4000B8 +:10217000001E6000001E8000001EA000001EC000A7 +:10218000001EE000001F0000001F2000001F400094 +:10219000001F6000001F8000001FA000001FC00083 +:1021A000001FE00000200000002020000020400070 +:1021B00000206000002080000020A0000020C0005F +:1021C0000020E0000021000000212000002140004C +:1021D00000216000002180000021A0000021C0003B +:1021E0000021E00000220000002220000022400028 +:1021F00000226000002280000022A0000022C00017 +:102200000022E00000230000002320000023400003 +:1022100000236000002380000023A0000023C000F2 +:102220000023E000002400000024200000244000DF +:1022300000246000002480000024A0000024C000CE +:102240000024E000002500000025200000254000BB +:1022500000256000002580000025A0000025C000AA +:102260000025E00000260000002620000026400097 +:1022700000266000002680000026A0000026C00086 +:102280000026E00000270000002720000027400073 +:1022900000276000002780000027A0000027C00062 +:1022A0000027E0000028000000282000002840004F +:1022B00000286000002880000028A0000028C0003E +:1022C0000028E0000029000000292000002940002B +:1022D00000296000002980000029A0000029C0001A +:1022E0000029E000002A0000002A2000002A400007 +:1022F000002A6000002A8000002AA000002AC000F6 +:10230000002AE000002B0000002B2000002B4000E2 +:10231000002B6000002B8000002BA000002BC000D1 +:10232000002BE000002C0000002C2000002C4000BE +:10233000002C6000002C8000002CA000002CC000AD +:10234000002CE000002D0000002D2000002D40009A +:10235000002D6000002D8000002DA000002DC00089 +:10236000002DE000002E0000002E2000002E400076 +:10237000002E6000002E8000002EA000002EC00065 +:10238000002EE000002F0000002F2000002F400052 +:10239000002F6000002F8000002FA000002FC00041 +:1023A000002FE0000030000000302000003040002E +:1023B00000306000003080000030A0000030C0001D +:1023C0000030E0000031000000312000003140000A +:1023D00000316000003180000031A0000031C000F9 +:1023E0000031E000003200000032200000324000E6 +:1023F00000326000003280000032A0000032C000D5 +:102400000032E000003300000033200000334000C1 +:1024100000336000003380000033A0000033C000B0 +:102420000033E0000034000000342000003440009D +:1024300000346000003480000034A0000034C0008C +:102440000034E00000350000003520000035400079 +:1024500000356000003580000035A0000035C00068 +:102460000035E00000360000003620000036400055 +:1024700000366000003680000036A0000036C00044 +:102480000036E00000370000003720000037400031 +:1024900000376000003780000037A0000037C00020 +:1024A0000037E0000038000000382000003840000D +:1024B00000386000003880000038A0000038C000FC +:1024C0000038E000003900000039200000394000E9 +:1024D00000396000003980000039A0000039C000D8 +:1024E0000039E000003A0000003A2000003A4000C5 +:1024F000003A6000003A8000003AA000003AC000B4 +:10250000003AE000003B0000003B2000003B4000A0 +:10251000003B6000003B8000003BA000003BC0008F +:10252000003BE000003C0000003C2000003C40007C +:10253000003C6000003C8000003CA000003CC0006B +:10254000003CE000003D0000003D2000003D400058 +:10255000003D6000003D8000003DA000003DC00047 +:10256000003DE000003E0000003E2000003E400034 +:10257000003E6000003E8000003EA000003EC00023 +:10258000003EE000003F0000003F2000003F400010 +:10259000003F6000003F8000003FA000003FC000FF +:1025A000003FE000003FE00100000000000001FFEC +:1025B0000000020000000001000000020000000016 +:1025C000000000080215002002150020081000007D +:1025D00000000033000000020000000000000005C1 +:1025E00000000005000000000000000000000002E4 +:1025F00000000003000000020000000100000004D1 +:1026000000000002000000020000000100000002C3 +:102610000000002000000040000000400000000317 +:102620000000001800002000000040C00000618091 +:10263000000082400000A3000000C3C00000E4804E +:102640000001054000012600000146C0000167802E +:10265000000188400001A9000001C9C00001EA8012 +:1026600000020B4000022C0000024CC000026D80F2 +:1026700000028E400002AF000002CFC00002F080D6 +:1026800000001140000000010000000100000001F6 +:102690000000000100000001000000010000000136 +:1026A0000000000100000001000000010000000126 +:1026B0000000000100000001000000010000000116 +:1026C0000003D0000000003D00000001000D0000EC +:1026D000000700D000028140000B81680002022048 +:1026E00000010240000F025000010340000C0000F6 +:1026F000000800C000028140000B81680002022037 +:102700000001024000070250000202C00010000059 +:102710000008010000028180000B81A80002026015 +:1027200000018280000E82980008038000000000F3 +:102730000000000000028000000B8028000200E082 +:10274000000101000000811000000118FFFFFFF3ED +:1027500001AFFFFF000000000000000000000000CB +:10276000000000000000000000000000FFFFFFF17B +:1027700000EFFFFF0000000000000000000000006C +:10278000000000000001000000000000FFFFFFF655 +:10279000005FFFFF000000000000000000000000DC +:1027A000000000000002000000000000FFFFF4062F +:1027B0001CBFFFFF00000005000000000000001427 +:1027C000000000000004000000000000FFFFFFF216 +:1027D000004FFFFF000000000000000000000000AC +:1027E000000000000008000000000000FFFFFFFAEA +:1027F000002FFFFF000000000000000000000000AC +:10280000000000000010000000000000FFFFFFF7C4 +:1028100001EFFFFF000000000000000000000000CA +:10282000000000000020000000000000FFFFFFF596 +:10283000002FFFFF0000000000000000000000006B +:10284000000000000040000000000000FFFFFFF358 +:10285000018FFFFF000000000000000000000000EA +:10286000000000000000000000000000FFFFFFF17A +:10287000010FFFFF0000000000000000000000004A +:10288000000000000001000000000000FFFFFFF654 +:10289000005FFFFF000000000000000000000000DB +:1028A000000000000002000000000000FFFFF4062E +:1028B0001CBFFFFF00000005000000000000001426 +:1028C000000000000004000000000000FFFFFFF215 +:1028D000004FFFFF000000000000000000000000AB +:1028E000000000000008000000000000FFFFFFFAE9 +:1028F000002FFFFF000000000000000000000000AB +:10290000000000000010000000000000FFFFFFF7C3 +:1029100000EFFFFF000000000000000000000000CA +:10292000000000000020000000000000FFFFFFF595 +:10293000004FFFFF0000000000000000000000004A +:10294000000000000040000000000000FFFFFFFF4B +:1029500000CFFFFF0000000000000000000000CCDE +:10296000000000000000000000000000FFFFFFFF6B +:1029700000CFFFFF0000000000000000000000CCBE +:10298000000000000001000000000000FFFFFFFF4A +:1029900000CFFFFF0000000000000000000000CC9E +:1029A000000000000002000000000000FFFFFFFF29 +:1029B00000CFFFFF0000000000000000000000CC7E +:1029C000000000000004000000000000FFFFFFFF07 +:1029D00000CFFFFF0000000000000000000000CC5E +:1029E000000000000008000000000000FFFFFFFFE3 +:1029F00000CFFFFF0000000000000000000000CC3E +:102A0000000000000010000000000000FFFFFFFFBA +:102A100000CFFFFF0000000000000000000000CC1D +:102A2000000000000020000000000000FFFFFFFF8A +:102A300000CFFFFF0000000000000000000000CCFD +:102A4000000000000040000000000000FFFFFFF356 +:102A5000020FFFFF00000000000000000000000067 +:102A6000000000000000000000000000FFFFFFF178 +:102A7000010FFFFF00000000000000000000000048 +:102A8000000000000001000000000000FFFFFFF652 +:102A9000005FFFFF000000000000000000000000D9 +:102AA000000000000002000000000000FFFFF4062C +:102AB0001CBFFFFF00000005000000000000001424 +:102AC000000000000004000000000000FFFFFFF213 +:102AD000004FFFFF000000000000000000000000A9 +:102AE000000000000008000000000000FFFFFF8A57 +:102AF000042FFFFF000000000000000000000000A5 +:102B0000000000000010000000000000FFFFFF9721 +:102B100005CFFFFF000000000000000000000000E3 +:102B2000000000000020000000000000FFFFFFF593 +:102B3000010FFFFF00000000000000000000000087 +:102B4000000000000040000000000000FFFFFFF355 +:102B5000000FFFFF00000000000000000000000068 +:102B6000000000000000000000000000FFFFFFF177 +:102B7000000FFFFF00000000000000000000000048 +:102B8000000000000001000000000000FFFFFFF651 +:102B9000005FFFFF000000000000000000000000D8 +:102BA000000000000002000000000000FFFFF4062B +:102BB0001CBFFFFF00000005000000000000001423 +:102BC000000000000004000000000000FFFFFFF212 +:102BD000004FFFFF000000000000000000000000A8 +:102BE000000000000008000000000000FFFFFFFAE6 +:102BF000002FFFFF000000000000000000000000A8 +:102C0000000000000010000000000000FFFFFF9720 +:102C1000040FFFFF000000000000000000000000A3 +:102C2000000000000020000000000000FFFFFFF592 +:102C3000000FFFFF00000000000000000000000087 +:102C4000000000000040000000000000FFFFFFFF48 +:102C500000CFFFFF0000000000000000000000CCDB +:102C6000000000000000000000000000FFFFFFFF68 +:102C700000CFFFFF0000000000000000000000CCBB +:102C8000000000000001000000000000FFFFFFFF47 +:102C900000CFFFFF0000000000000000000000CC9B +:102CA000000000000002000000000000FFFFFFFF26 +:102CB00000CFFFFF0000000000000000000000CC7B +:102CC000000000000004000000000000FFFFFFFF04 +:102CD00000CFFFFF0000000000000000000000CC5B +:102CE000000000000008000000000000FFFFFFFFE0 +:102CF00000CFFFFF0000000000000000000000CC3B +:102D0000000000000010000000000000FFFFFFFFB7 +:102D100000CFFFFF0000000000000000000000CC1A +:102D2000000000000020000000000000FFFFFFFF87 +:102D300000CFFFFF0000000000000000000000CCFA +:102D4000000000000040000000000000FFFFFFFF47 +:102D500000CFFFFF0000000000000000000000CCDA +:102D6000000000000000000000000000FFFFFFFF67 +:102D700000CFFFFF0000000000000000000000CCBA +:102D8000000000000001000000000000FFFFFFFF46 +:102D900000CFFFFF0000000000000000000000CC9A +:102DA000000000000002000000000000FFFFFFFF25 +:102DB00000CFFFFF0000000000000000000000CC7A +:102DC000000000000004000000000000FFFFFFFF03 +:102DD00000CFFFFF0000000000000000000000CC5A +:102DE000000000000008000000000000FFFFFFFFDF +:102DF00000CFFFFF0000000000000000000000CC3A +:102E0000000000000010000000000000FFFFFFFFB6 +:102E100000CFFFFF0000000000000000000000CC19 +:102E2000000000000020000000000000FFFFFFFF86 +:102E300000CFFFFF0000000000000000000000CCF9 +:102E4000000000000040000000000000FFFFFFFF46 +:102E500000CFFFFF0000000000000000000000CCD9 +:102E6000000000000000000000000000FFFFFFFF66 +:102E700000CFFFFF0000000000000000000000CCB9 +:102E8000000000000001000000000000FFFFFFFF45 +:102E900000CFFFFF0000000000000000000000CC99 +:102EA000000000000002000000000000FFFFFFFF24 +:102EB00000CFFFFF0000000000000000000000CC79 +:102EC000000000000004000000000000FFFFFFFF02 +:102ED00000CFFFFF0000000000000000000000CC59 +:102EE000000000000008000000000000FFFFFFFFDE +:102EF00000CFFFFF0000000000000000000000CC39 +:102F0000000000000010000000000000FFFFFFFFB5 +:102F100000CFFFFF0000000000000000000000CC18 +:102F2000000000000020000000000000FFFFFFFF85 +:102F300000CFFFFF0000000000000000000000CCF8 +:102F400000000000004000000000000000000A1126 +:102F500000000A0000000A040000FFFF0000FFFF5D +:102F60000000FFFF0000FFFF000000200000002124 +:102F700000000022000000230000002400000025C3 +:102F800000000026000000270000002800000029A3 +:102F90000000002A0000002B0000002C0000002D83 +:102FA0000000002E0000002F0000001000000001B3 +:102FB000000000010000000100000001000000010D +:102FC00000000001000000010000000100000001FD +:102FD00000000001000000010000000100000001ED +:102FE00000000001000000010000000100000001DD +:102FF00007FFFFFF0000003F07FFFFFF0000000F7B +:1030000000007FF800007FF80000FF1C0FFFFFFFAB +:103010000000FF1C0FFFFFFF0000FF1C0FFFFFFF62 +:103020000000FF1C0FFFFFFF0000FF1C0FFFFFFF52 +: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 +:103200000000FF1C0FFFFFFF0000FF000000000098 +:103210000000FF0000000000000003130000150084 +:103220000000000100000002000000030000000098 +:103230000000000400000001000000000000000188 +:103240000000000400000000000000010000000376 +:103250000000000000000001000000040000000069 +:103260000000000100000003000000000000000159 +:103270000000000400000000000000040000000343 +:10328000000000000000000000003FFF000003FFFE +:10329000000000000000000100000001000000012B +:1032A000007C100400000004000000000000000288 +:1032B00000000090000000900080009008100000C6 +:1032C0000000008A000000800000008100000080F3 +:1032D00000000006000007D00000076C0000FFFFA0 +:1032E0000000FFFF0000FFFF0000FFFF071D291186 +:1032F00000000000009C0424000000000000000109 +:1033000000000001000000010000000100000001B9 +:1033100000007FFF000000FF000000FF000000FF32 +:10332000000000FF000000FF000000FF000000FFA1 +:10333000000000FF0000003E000000000000003F11 +:103340000000003F0000003F000000000000003FC0 +:103350000000003F0000003F0000000F000000439D +:10336000000000000000000600000000121700002E +:10337000221700003217000012150000221500006D +:1033800032150000021000000010000010100000B4 +:103390002010000030100000001000001214000087 +:1033A000221400003214000000E38340FFFFFFFFFF +:1033B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +:1033C000FFFFFFFFFFFFFFFFFFFFFFFFF0003000E9 +:1033D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +:1033E000FFFFFFFFFFFFFFFFFFFFFFFFFFFF332890 +:1033F000FFFF3338FFFFFFFFFFFFFFFFFFFFFFFF70 +:10340000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +:10341000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +:10342000FFFFFFFFFFFFFFFFFFFFFFFF00003C105C +:103430000000000800000000000000000000004044 +:103440000000180800000803000008030000004006 +:103450000000000300000803000008030000080348 +:10346000000100030000080300000803000000033F +:103470000000000300000003000000030000000340 +:103480000000000300000003000000030000000330 +:103490000000000300000003000000030000000320 +:1034A0000000000300000003000024030000002FC0 +:1034B00000000009000000190000018400000183E1 +:1034C00000000306000000190000000600000306CB +:1034D000000003060000030600000C86000003063F +:1034E00000000306000000060000000600000006C1 +:1034F00000000006000000060000000600000006B4 +:1035000000000006000000060000000600000006A3 +:103510000000000600000006000000060000000693 +:103520000000030600000013000000060000100465 +:10353000000010040010644000106440000000000F +:10354000000000000000000000000000000020005B +:10355000000000000000000000000000000000006B +:10356000000020000000000000000000000000003B +:1035700000000000000020000000007C0000003D72 +:103580000000003F0000009C000000060000000555 +:103590000000000A0000000500000140000001409A +:1035A0000000000000000000000000C00000013F1B +:1035B00000007FFF000000480000004800000000FD +:1035C00000000000000000480000000400000004AB +:1035D00000000004000000040000000400000004DB +:1035E00000000004000000040000000400000009C6 +:1035F0000000000B0000000A0000000400000009A9 +:103600000000000B0000000A0000000100000001A3 +:1036100000000001000000010000000100000001A6 +:103620000000000100000001000000010000000196 +:10363000000000010000000100000004000000097B +:103640000000000B0000000A000000010000000163 +:103650000000000100000001000000010000000166 +:103660000000000100000001000000010000000156 +:10367000000000010000000100000004000000093B +:103680000000000B0000000A000000000000000025 +:103690000000080000000200000001FF000004001C +:1036A00000000000000000001E491E491E491E497E +:1036B0000E490E490E490E49FFFFFFFF00000000B2 +:1036C000FFFFFFFF00000000000025E40000800075 +:1036D000000000130FFF0FFF0000000000000000BB +:1036E0000FFF0FFF1000100010001000200020003E +:1036F000200020008000800080008000400040000A +:103700004000400000000000000000010101010134 +:10371000012001012001010101011001010101014C +:10372000012001012001010101011001200101011D +:10373000010110010101010101200101200101012C +:10374000010110010101010101200101000001231B +:1037500000000123000001230000012300000123D9 +:1037600000000123000001230000012300000123C9 +:1037700000000123000001230000012300000123B9 +:1037800000000123000001230000012300000123A9 +:10379000000001230000012300000123000000209D +:1037A00000000032000000070000000700000000D9 +:1037B0000000000802150020021500200000003063 +:1037C000081000000000003300000030000000314D +:1037D00000000002000000050000000600000002DA +:1037E00000000002000000000000000500000002D0 +:1037F00000000002000000020000000100000006BE +:103800000000000100000002000000400000004035 +:103810000000002000000013000000200001000054 +:10382000000204C00003098000040E4000051300DC +:10383000000617C000071C80000821400009260070 +:10384000000A2AC0000B2F80000C3440000D390004 +:10385000000E3DC0000F42800010474000114C0098 +:10386000001250C00013558000145A4000155F002C +:10387000001663C00017688000186D4000197200C0 +:10388000001A76C0001B7B80001C8040001D850054 +:10389000001E89C0001F8E800000934000000001C0 +:1038A0000000000100000001000000010000000114 +:1038B0000000000100000001000000010000000104 +:1038C00000000001000000010000000100000001F4 +:1038D00000000001000000010000000100000008DD +:1038E0000000000C000000100000000100000001BA +:1038F00000000001000002110000020000000204AC +:10390000000002190000FFFF0000FFFF0000FFFFA2 +:103910000000FFFF07FFFFFF0000003F07FFFFFF62 +:103920000000000F00007FF800007FF8000000009A +:10393000140AFF0000000000000000010020100138 +:1039400000000000010086000000010000000001EE +:1039500000000000000086020000000000000000DF +:1039600000000000000086040000000000000000CD +:1039700000000000000086060000000000000000BB +:1039800000000000000086080000000000000000A9 +:10399000000000000000860A000000000000000097 +:1039A000000000000000860C000000000000000085 +:1039B000000000000000860E000000000000000073 +:1039C0000000000000008610000000000000000061 +:1039D000000000000000861200000000000000004F +:1039E000000000000000861400000000000000003D +:1039F000000000000000861600000000000000002B +:103A00000000000000008618000000000000000018 +:103A1000000000000000861A000000000000000006 +:103A2000000000000000861C0000000000000000F4 +:103A3000000000000000861E0000000000000000E2 +:103A400000000000000086200000000000000000D0 +:103A500000000000000086220000000000000000BE +:103A600000000000000086240000000000000000AC +:103A7000000000000000862600000000000000009A +:103A80000000000000008628000000000000000088 +:103A9000000000000000862A000000000000000076 +:103AA000000000000000862C000000000000000064 +:103AB000000000000000862E000000000000000052 +:103AC0000000000000008630000000000000000040 +:103AD000000000000000863200000000000000002E +:103AE000000000000000863400000000000000001C +:103AF000000000000000863600000000000000000A +:103B000000000000000086380000000000000000F7 +:103B1000000000000000863A0000000000000000E5 +:103B2000000000000000863C0000000000000000D3 +:103B3000000000000000863E0000000000000000C1 +:103B400000000000000086400000000000000000AF +:103B5000000000000000864200000000000000009D +:103B6000000000000000864400000000000000008B +:103B70000000000000008646000000000000000079 +:103B80000000000000008648000000000000000067 +:103B9000000000000000864A000000000000000055 +:103BA000000000000000864C000000000000000043 +:103BB000000000000000864E000000000000000031 +:103BC000000000000000865000000000000000001F +:103BD000000000000000865200000000000000000D +:103BE00000000000000086540000000000000000FB +:103BF00000000000000086560000000000000000E9 +:103C000000000000000086580000000000000000D6 +:103C1000000000000000865A0000000000000000C4 +:103C2000000000000000865C0000000000000000B2 +:103C3000000000000000865E0000000000000000A0 +:103C4000000000000000866000000000000000008E +:103C5000000000000000866200000000000000007C +:103C6000000000000000866400000000000000006A +:103C70000000000000008666000000000000000058 +:103C80000000000000008668000000000000000046 +:103C9000000000000000866A000000000000000034 +:103CA000000000000000866C000000000000000022 +:103CB000000000000000866E000000000000000010 +:103CC00000000000000086700000000000000000FE +:103CD00000000000000086720000000000000000EC +:103CE00000000000000086740000000000000000DA +:103CF00000000000000086760000000000000000C8 +:103D000000000000000086780000000000000000B5 +:103D1000000000000000867A0000000000000000A3 +:103D2000000000000000867C000000000000000091 +:103D3000000000000000867E00000000000000007F +:103D4000000000000000868000000000000000006D +:103D5000000000000000868200000000000000005B +:103D60000000000000008684000000000000000049 +:103D70000000000000008686000000000000000037 +:103D80000000000000008688000000000000000025 +:103D9000000000000000868A000000000000000013 +:103DA000000000000000868C000000000000000001 +:103DB000000000000000868E0000000000000000EF +:103DC00000000000000086900000000000000000DD +:103DD00000000000000086920000000000000000CB +:103DE00000000000000086940000000000000000B9 +:103DF00000000000000086960000000000000000A7 +:103E00000000000000008698000000000000000094 +:103E1000000000000000869A000000000000000082 +:103E2000000000000000869C000000000000000070 +:103E3000000000000000869E00000000000000005E +:103E400000000000000086A000000000000000004C +:103E500000000000000086A200000000000000003A +:103E600000000000000086A4000000000000000028 +:103E700000000000000086A6000000000000000016 +:103E800000000000000086A8000000000000000004 +:103E900000000000000086AA0000000000000000F2 +:103EA00000000000000086AC0000000000000000E0 +:103EB00000000000000086AE0000000000000000CE +:103EC00000000000000086B00000000000000000BC +:103ED00000000000000086B20000000000000000AA +:103EE00000000000000086B4000000000000000098 +:103EF00000000000000086B6000000000000000086 +:103F000000000000000086B8000000000000000073 +:103F100000000000000086BA000000000000000061 +:103F200000000000000086BC00000000000000004F +:103F300000000000000086BE00000000000000003D +:103F400000000000000086C000000000000000002B +:103F500000000000000086C2000000000000000019 +:103F600000000000000086C4000000000000000007 +:103F700000000000000086C60000000000000000F5 +:103F800000000000000086C80000000000000000E3 +:103F900000000000000086CA0000000000000000D1 +:103FA00000000000000086CC0000000000000000BF +:103FB00000000000000086CE0000000000000000AD +:103FC00000000000000086D000000000000000009B +:103FD00000000000000086D2000000000000000089 +:103FE00000000000000086D4000000000000000077 +:103FF00000000000000086D6000000000000000065 +:1040000000000000000086D8000000000000000052 +:1040100000000000000086DA000000000000000040 +:1040200000000000000086DC00000000000000002E +:1040300000000000000086DE00000000000000001C +:1040400000000000000086E000000000000000000A +:1040500000000000000086E20000000000000000F8 +:1040600000000000000086E40000000000000000E6 +:1040700000000000000086E60000000000000000D4 +:1040800000000000000086E80000000000000000C2 +:1040900000000000000086EA0000000000000000B0 +:1040A00000000000000086EC00000000000000009E +:1040B00000000000000086EE00000000000000008C +:1040C00000000000000086F000000000000000007A +:1040D00000000000000086F2000000000000000068 +:1040E00000000000000086F4000000000000000056 +:1040F00000000000000086F6000000000000000044 +:1041000000000000000086F8000000000000000031 +:1041100000000000000086FA00000000000000001F +:1041200000000000000086FC00000000000000000D +:1041300000000000000086FE0000000000000000FB +:1041400000000000000087000000000000000000E8 +:1041500000000000000087020000000000000000D6 +:1041600000000000000087040000000000000000C4 +:1041700000000000000087060000000000000000B2 +:1041800000000000000087080000000000000000A0 +:10419000000000000000870A00000000000000008E +:1041A000000000000000870C00000000000000007C +:1041B000000000000000870E00000000000000006A +:1041C0000000000000008710000000000000000058 +:1041D0000000000000008712000000000000000046 +:1041E0000000000000008714000000000000000034 +:1041F0000000000000008716000000000000000022 +:10420000000000000000871800000000000000000F +:10421000000000000000871A0000000000000000FD +:10422000000000000000871C0000000000000000EB +:10423000000000000000871E0000000000000000D9 +:1042400000000000000087200000000000000000C7 +:1042500000000000000087220000000000000000B5 +:1042600000000000000087240000000000000000A3 +:104270000000000000008726000000000000000091 +:10428000000000000000872800000000000000007F +:10429000000000000000872A00000000000000006D +:1042A000000000000000872C00000000000000005B +:1042B000000000000000872E000000000000000049 +:1042C0000000000000008730000000000000000037 +:1042D0000000000000008732000000000000000025 +:1042E0000000000000008734000000000000000013 +:1042F0000000000000008736000000000000000001 +:1043000000000000000087380000000000000000EE +:10431000000000000000873A0000000000000000DC +:10432000000000000000873C0000000000000000CA +:10433000000000000000873E0000000000000000B8 +:1043400000000000000087400000000000000000A6 +:104350000000000000008742000000000000000094 +:104360000000000000008744000000000000000082 +:104370000000000000008746000000000000000070 +:10438000000000000000874800000000000000005E +:10439000000000000000874A00000000000000004C +:1043A000000000000000874C00000000000000003A +:1043B000000000000000874E000000000000000028 +:1043C0000000000000008750000000000000000016 +:1043D0000000000000008752000000000000000004 +:1043E00000000000000087540000000000000000F2 +:1043F00000000000000087560000000000000000E0 +:1044000000000000000087580000000000000000CD +:10441000000000000000875A0000000000000000BB +:10442000000000000000875C0000000000000000A9 +:10443000000000000000875E000000000000000097 +:104440000000000000008760000000000000000085 +:104450000000000000008762000000000000000073 +:104460000000000000008764000000000000000061 +:10447000000000000000876600000000000000004F +:10448000000000000000876800000000000000003D +:10449000000000000000876A00000000000000002B +:1044A000000000000000876C000000000000000019 +:1044B000000000000000876E000000000000000007 +:1044C00000000000000087700000000000000000F5 +:1044D00000000000000087720000000000000000E3 +:1044E00000000000000087740000000000000000D1 +:1044F00000000000000087760000000000000000BF +:1045000000000000000087780000000000000000AC +:10451000000000000000877A00000000000000009A +:10452000000000000000877C000000000000000088 +:10453000000000000000877E000000000000000076 +:104540000000000000008780000000000000000064 +:104550000000000000008782000000000000000052 +:104560000000000000008784000000000000000040 +:10457000000000000000878600000000000000002E +:10458000000000000000878800000000000000001C +:10459000000000000000878A00000000000000000A +:1045A000000000000000878C0000000000000000F8 +:1045B000000000000000878E0000000000000000E6 +:1045C00000000000000087900000000000000000D4 +:1045D00000000000000087920000000000000000C2 +:1045E00000000000000087940000000000000000B0 +:1045F000000000000000879600000000000000009E +:10460000000000000000879800000000000000008B +:10461000000000000000879A000000000000000079 +:10462000000000000000879C000000000000000067 +:10463000000000000000879E000000000000000055 +:1046400000000000000087A0000000000000000043 +:1046500000000000000087A2000000000000000031 +:1046600000000000000087A400000000000000001F +:1046700000000000000087A600000000000000000D +:1046800000000000000087A80000000000000000FB +:1046900000000000000087AA0000000000000000E9 +:1046A00000000000000087AC0000000000000000D7 +:1046B00000000000000087AE0000000000000000C5 +:1046C00000000000000087B00000000000000000B3 +:1046D00000000000000087B20000000000000000A1 +:1046E00000000000000087B400000000000000008F +:1046F00000000000000087B600000000000000007D +:1047000000000000000087B800000000000000006A +:1047100000000000000087BA000000000000000058 +:1047200000000000000087BC000000000000000046 +:1047300000000000000087BE000000000000000034 +:1047400000000000000087C0000000000000000022 +:1047500000000000000087C2000000000000000010 +:1047600000000000000087C40000000000000000FE +:1047700000000000000087C60000000000000000EC +:1047800000000000000087C80000000000000000DA +:1047900000000000000087CA0000000000000000C8 +:1047A00000000000000087CC0000000000000000B6 +:1047B00000000000000087CE0000000000000000A4 +:1047C00000000000000087D0000000000000000092 +:1047D00000000000000087D2000000000000000080 +:1047E00000000000000087D400000000000000006E +:1047F00000000000000087D600000000000000005C +:1048000000000000000087D8000000000000000049 +:1048100000000000000087DA000000000000000037 +:1048200000000000000087DC000000000000000025 +:1048300000000000000087DE000000000000000013 +:1048400000000000000087E0000000000000000001 +:1048500000000000000087E20000000000000000EF +:1048600000000000000087E40000000000000000DD +:1048700000000000000087E60000000000000000CB +:1048800000000000000087E80000000000000000B9 +:1048900000000000000087EA0000000000000000A7 +:1048A00000000000000087EC000000000000000095 +:1048B00000000000000087EE000000000000000083 +:1048C00000000000000087F0000000000000000071 +:1048D00000000000000087F200000000000000005F +:1048E00000000000000087F400000000000000004D +:1048F00000000000000087F600000000000000003B +:1049000000000000000087F8000000000000000028 +:1049100000000000000087FA000000000000000016 +:1049200000000000000087FC000000000000000004 +:1049300000000000000087FE0000FF0000000000F3 +:104940000000FF0000000000000001D20000150080 +:104950000000000100000002000000030000000051 +:104960000000000400000001000000000000000141 +:10497000000000040000000000000001000000032F +:104980000000000000000001000000040000000022 +:104990000000000100000003000000000000000112 +:1049A00000000004000000000000000400000003FC +:1049B000000000000000000000003FFF000003FFB7 +:1049C0000000000300BEBC20000000000000000545 +:1049D0000000000300BEBC20000000000000000535 +:1049E0000000000D0000000C00000000000000109E +:1049F0000215002002150020000000300810000001 +:104A00000000003300000030000000310000000210 +:104A1000000000040000000000000002000000028E +:104A2000000000000000000200000007000000027B +:104A3000000000020000000100000003000000016F +:104A400000000002000000400000004000000004E0 +:104A5000000000200000000F0000001B000080008C +:104A6000000103C00001878000020B4000028F009C +:104A7000000312C00003968000041A4000049E0048 +:104A8000000521C00005A580000629400006AD00F4 +:104A9000000730C00007B480000838400008BC00A0 +:104AA00000093FC00009C380000A4740000ACB004C +:104AB000000B4EC0000BD280000C5640000CDA00F8 +:104AC000000D5DC0000061800000000100000001D9 +:104AD00000000001000000010000000100000001D2 +:104AE00000000001000000010000000100000001C2 +:104AF00000000001000000010000000100000001B2 +:104B0000000000010000000100000001000005AAF3 +:104B1000000005990000059D000003C00000FFFF94 +:104B20000000FFFF0000FFFF0000FFFF0000004645 +:104B30000000000C07FFFFFF0000003F07FFFFFF22 +:104B40000000000F00007FF800007FF8FFFFFFFF6C +:104B5000FFFFFFFF0000FF00000000000000FF005B +:104B6000000000000000190000000000000001D457 +:104B7000000015000000000100000002000000031A +:104B80000000000000000004000000010000000020 +:104B9000000000010000000400000000000000010F +:104BA00000000003000000000000000100000004FD +:104BB00000000000000000010000000300000000F1 +:104BC00000000001000000040000000000000004DC +:104BD00000000003000000000000000000003FFF94 +:104BE000000003FF0000000F0000000700000000AD +:104BF0000000000E03150020031500200100003006 +:104C000008100000000000330000003000000031F8 +:104C10000000000300000006000000030000000385 +:104C20000000000200000000000000020000000080 +:104C30000000000600000004000000020000000266 +:104C4000000000010000000400000001000000025C +:104C500000000040000000400000000400000020B0 +:104C6000000000020000001F000010000000208073 +:104C7000000031000000418000005200000062800E +:104C80000000730000008380000094000000A480F6 +:104C90000000B5000000C5800000D6000000E680DE +:104CA0000000F700000107800001180000012880C3 +:104CB000000139000001498000015A0000016A80AA +:104CC00000017B0000018B8000019C000001AC8092 +:104CD0000001BD000001CD800001DE000001EE807A +:104CE00000000F00000000010000000100000001B2 +:104CF00000000001000000010000000100000001B0 +:104D0000000000010000000100000001000000019F +:104D1000000000010000000100000001000000018F +:104D2000000000010000000100000001000000017F +:104D30000000000100000614000006000000060448 +:104D40000000FFFF0000FFFF0000FFFF0000FFFF6B +:104D50000000002000000020000000000000000013 +:104D600000000023000000240000002500000026B1 +:104D700000000027000000290000002A0000002B8E +:104D80000000002C000000010000000107FFFFFFF1 +:104D90000000003F07FFFFFF0000000F00007FF84A +:104DA00000007FF80000000000000001CCCC0201F0 +:104DB000CCCCCCCCCCCC0201CCCCCCCCFFFFFFFFFC +:104DC000FFFFFFFF000000000001000100020807D4 +:104DD000CCCCCCC1FFFFFFFFFFFFFFFF10000000A6 +:104DE000000028AD7058103C000000000000FF00DB +:104DF000000000000000FF0000000000000002862C +:104E00000000350000000001000000020000000367 +:104E1000000000000000000400000001000000008D +:104E2000000000010000000400000000000000017C +:104E3000000000030000000000000001000000046A +:104E4000000000000000000100000003000000005E +:104E50000000000100000004000000000000000449 +:104E600000000003000000000000000000003FFF01 +:104E7000000003FF000E0000011600D60000FFFF37 +:104E8000000000000000FFFF000000000000FFFF26 +:104E9000000000000000FFFF000000000000FFFF16 +:104EA000000000000000FFFF000000000000000004 +:104EB000000000000000FFFF000000000072000082 +:104EC000012300F30000FFFF000000000000FFFFCF +:104ED000000000000000FFFF000000000000FFFFD6 +:104EE000000000000000FFFF000000000000FFFFC6 +:104EF0000000000000000000000000000000FFFFB4 +:104F000000000000BF5C0000FFF51FEF0000FFFF86 +:104F1000F00003E0000000000000A0005554000075 +:104F20005555555500005555F000000055540000EA +:104F30005555555500005555F0000000BF5C000068 +:104F4000FFF51FEF0000FFFFF00003E0000000008E +:104F50000000A0005554000055555555000055550A +:104F6000F0000000555400005555555500005555AA +:104F7000F0000000000000001F8B0800000000008F +:104F8000000BFB51CFC0F003097773A2F215595102 +:104F9000F9AD6CA8FC81C659CC0C0C8540DC0DC465 +:104FA00015CCF8D58632618AFD9541B0374931304C +:104FB000084940D8AE1203EFB7514C07AC81CAFF85 +:104FC000A306A1CBA0E23FD1E4FF42E5D72843E806 +:104FD0005F1AD8CD5D0B950700849298A7600300F7 +:104FE00000000000000000001F8B0800000000000F +:104FF000000BED7D0D7814D5B9F099D9D9D9D9DF49 +:105000004CC2127643829310206AC025040C8AEDAC +:105010000041639BB64B408D16ED82542318889453 +:10502000D6D8F67307F2430CE00DC8A7D40FBD0B1A +:10503000F5077BB58D362ADE87F626427BF17EEDBD +:105040007353C0AA2D5E835A6BAD7853AB9FF4A9FE +:105050002DDF79DF73667766B29B04AF7AFB3CB7CE +:10506000F8B42767CE9973DEF3FE9DF7BCEF7B663D +:105070003D8A48E473083903FF3E4BC85181103222 +:1050800031539ACF89A25F4BAA09698AC85A376DF2 +:105090005BEB222DBD95509F5E4B6611E286FE5163 +:1050A00042FF8CE27B528112EB0FD3F6E75D352E87 +:1050B0002D338EB36C920851AB6849B60DBA427469 +:1050C0008C947B784821F8EF4C1921AD2766D71DC9 +:1050D00036EBF47F11120CBF713EFDE34272E11911 +:1050E0001721EFAA8D79FDA38CFF56F2882A4D2354 +:1050F000E48364ACEEF0B491EDE63AD612F2BAA7CE +:1051000000D669C857CF24641E51701DE6FAA482E8 +:10511000AEC24480F6DBFF9C2A5564E02161BAC828 +:10512000F9F4B944FA3D5523E14FE38F18381E9D39 +:10513000A71FE731DF1BA2F059D6E77C3F3D2E7F4A +:105140009F48F4BF7984F8581772BF90B8189E7BB7 +:105150006BBF6E14513CAC7D74290138611DF1990F +:1051600019F8CD79CD75A4E777AC27D73AD2F3F308 +:10517000F772E1DBECF76E6D4727110939EED64A7D +:10518000E2C02775336A09A56F03F0C9FC0C5D9670 +:105190002EE9407872D185F287A602BE5C01C64F27 +:1051A000BF6CABA164271B899790B959E61F837F19 +:1051B000124EFEA9BDE213E19F6F71FE21751351DE +:1051C0002ECCF53BF1DD54EB3EE999350ABEF9FBF7 +:1051D00026FD46F05FAEF746F28991954FF8F82626 +:1051E000BF98F3FC57E11D8B3F08E941FA11127794 +:1051F000C1BC99BA41E2416B3F4B5948D980AFC716 +:1052000015EEFC836B16943E03F4862B2CBD3164A3 +:105210009523FE9E5B2609A04F1B3C8AF297291F0F +:1052200049C5B1EF821E7B88C838AF1456701C8AFE +:10523000A787108E7A3BFEBC6A9C003FBB0B2BF20B +:1052400012743C1228C82A075B922D7592854FB6BE +:10525000B849636F0009C5E699425213007F1F2EBB +:10526000D61A82B9C771E2ABCD1D7B3141F5AF31A2 +:10527000518E3D08EB17B2AFA73FBD1ED900FCD041 +:10528000F5F48FB69EB6E074BE9EEC72DDCED763A9 +:10529000C29F7E6EAE2BC77B4EF873B5B7BBF5C809 +:1052A0004A3A8411CCBE2E37ACAB949013B02EA0EA +:1052B0006740463AB9C33DC8BF747D27903F1CEB99 +:1052C000A37C4580AF9CEB935405F162CE2F29DF80 +:1052D000A893E664E0FC1D51719DEE341C311CC79F +:1052E000A5127CEFE724F13B68A7FC3788FC17D0B8 +:1052F000098C2F47E8001740A9371A94AEED03F345 +:1053000049E54C545BE4665ACA8104A9A7FDDAFF5B +:10531000E26A047E24E16A9B9CBC0EC498981B6FD1 +:10532000A6DE34EBC700FF9523E97FEC0B1EACB77C +:105330004F8C7D1770290A8C1F9CF8A17813050BE0 +:105340003D2595E1F3D81766307CE590E306E56BE3 +:10535000367CD17F3AC865091F776A652C46CA3208 +:10536000F8BBAF3C72F52AFAE7CEF2DD036E8DB6DC +:105370006F4B0930FE094FA240B0ACAF64632FE21F +:10538000B18BF3D512D702EFABB47E577D59DE2A2D +:105390005AAF1184AC7CB42749617713F20F4905E9 +:1053A000CB0F5E66F0E7E2B7ED49CD269FDB5BA44D +:1053B000BA141D7F7BF5B3F99751BC7584CBAB5004 +:1053C000C7D40812ACCB07EBA0709FC7E7DF73CB45 +:1053D00037104E8ABFF3007F261F9AFC365537746C +:1053E000B512F06C10918E17D94662B0BFC03FC99C +:1053F00082A7923AD1F084100F73000F459A26CA03 +:1054000080B244AF4E2998C6C35DF522D273C3CA99 +:10541000E9FB809E26DC1B0591D195EFC7448A5598 +:1054200080DECC257FDFA178AA7443BD57003827E2 +:10543000AF262990A33BE039C5C77B24BE18E0986E +:105440007C73CC0DEBA1F61FE7AF081843A49DC3F6 +:10545000FD9D1B7C8CBF4AD4BD2E2A975F34E1484A +:10546000084EFEFAA23031831793BF4AC4C4527863 +:105470002E55F42E84F52AE5A97E99E2A74D244DF8 +:10548000A84F0C3208E3140924F38FCE1728D7F65F +:10549000017FAFE27428AAEDBC45A4F0170DADACB6 +:1054A00007FBC67BE2F2DFC17E35B9A9978874BCE1 +:1054B000684432609F2A2AEF8FD7B2FA49C0B7D228 +:1054C000942202AD87C5C42A8023BA9AF123DD7FD6 +:1054D00004C0DF6EB741807ECA825E1DEC963DB788 +:1054E0005C4A565AEC93AF094C4E258DE8A9CA0C7C +:1054F0005DEF73313ED95977D47B6300FAF9102FF1 +:1055000053492DF24319151381AE43017E2048F70C +:105510000D30BF7F634A0078CAB41E01E0A6FC3E8E +:1055200009E0A17044553ACEEE5BE4C614C3CB71DA +:10553000E0C780C8E6A1FFD310DFBC7E89E0C6F9D2 +:105540005C9F65F89AA09294465125E9AC1EA92467 +:10555000299DD2CB0F78A2788956E8FD305F00F004 +:1055600048EB01C023C54F49F53EA4CBE4586FBFBB +:1055700044104F5B80CF7DD47C4091DED88FFBC63A +:1055800076A9E595FF4555D8F623AE98412C7C4881 +:10559000281FCECCE02B544DE5CD6AAF9CA51D094C +:1055A000EA05E82205D87E66EE0F945FBF037049D6 +:1055B0002AE3D7F1EE434AAB4B7B1DF497A48A80D4 +:1055C0004FD3F6EE52371B80A7F7612C8A2757CFAF +:1055D000EC7E38EF50DCC61E64F2DB2FD0BAA2EAB4 +:1055E00029D88F703F9C97B147BC1522E9B7D81FC7 +:1055F000EE629FAD4E1A0D01E6FB3A7FA6B4CA08D3 +:105600008744F70752995927DD29483FC5172CF3DE +:10561000CC54A87F0BE731DF9302A4DF4BE9D45DC4 +:105620005145AC76B304EFD13E201E674A47BE9782 +:105630001B2F8EF996DBE11CF77B01497B23CBB94D +:1056400067E47B1279C3E4078ABC4118606E863E2A +:10565000D45E3A20D07DB4ADF86E03F87A0B3451A5 +:10566000BA76124677522BDAF48CAB5844B9BE5F47 +:10567000D018BF44983DE52157F6A39C44C6675F08 +:10568000F9385FED2189DF005F798A1388DFAD1378 +:10569000490FE8C9349EC19E041EA9588EFDB7CE9D +:1056A000BCC100B9764F5167232F70BEDAAA20EF34 +:1056B00058E6D98CEBEC4AA6C86B6ED837D8F88A76 +:1056C0001667A5C997158C8FBB2A1BF2083C577A21 +:1056D00009E8017FCFE3FDB09F64F8D120CB67C21A +:1056E0003A45A4C32E5A9E31F912F6A5880F9F9B06 +:1056F000FC67F29B39FED87217C6FDAF88B075946F +:1057000050F627C88F6CBF9FCCF13FA5785880FD1D +:105710005E8BAB8B607B296B8C3D0BE5BDF9BF8A43 +:10572000AE44386B55A0B7A04F10CE9C3F7EBE3024 +:10573000E128BA597AD56AD70756DBEBBE4A7B9D7A +:105740005A01997A69661C739E02D3AED362319076 +:10575000B76E77AA919A78A47CF3C48561FABCDB12 +:105760009B7A114CC00E25BAB08ED67D53288F82FD +:105770007C4ABD0AC8E96744CE679A86F215E07490 +:105780002643BDCA548A5A798944BA697D60C8459E +:10579000645ADF1691521E812391E2CDCF6133C747 +:1057A000D93674178E7B4765413ED03B3D7E84F5EC +:1057B000F79AE36B2D5F29B38CFFC13413AE1E053E +:1057C000F96488AE8DB6FBE97CA952C0668FB21031 +:1057D000F6CD5A092847944A9D801F86D48DCF5E06 +:1057E000902A98BE952ABA0659C9F64FB29CDB4555 +:1057F0009CFE749FFFBC3811F8300E9B5D7A9F377A +:10580000E71993CFC6DB8F72AE44F5EFADC4170333 +:105810003BE0A490B846A47CDEBABC95805DE95E0E +:10582000DEF2950E5AB652FE4439A911530F967204 +:105830007EA5EFDD199F9482F7A409C51301BE3B35 +:105840006BD83E9B6BDEAD49635AB9C54EDC4AE965 +:105850000F72B8B5B24AC9F69E3FD239AD7C021D6F +:10586000B74E9BA466F1678C3D6E836DDCCF93C40D +:1058700037C4B923C727C0DF15B0050B2827BEC022 +:1058800046302E283DD8F30CDF5BEAAE91F5DD2BD8 +:105890006F88001EC293F4D902E5F727A91A89532D +:1058A000532FECD71F0779F89E185F18A0FC1FF63E +:1058B000E8B788B4FD3971C9C26D503F87A052382E +:1058C00028DE246CA2F086C1977211218736AFDEE4 +:1058D000640418FE413F762507A3AFD37576275F92 +:1058E000C472A7C8ECA6FF0DFC4DD7A54806EA3543 +:1058F000AF46FB59E5594A317D5741DFB3DA0D1107 +:10590000A677242E4AD47EBA17F8AEA8B107CF15D1 +:10591000926A3F3F38F17EBFC8ECC6A3223BDFED61 +:105920000EAEC1F59F1E9A3AEA7901D601E70AB395 +:105930007ED4027FAC92C16FB56FDC144C9083F0C3 +:10594000B215484F69393B6F9215C4263792DA6217 +:105950009E237E28663947A4E17427222D703EC914 +:10596000A73A94EE8BDBDD46631CFB0D451A2C76C3 +:105970005689CBB1BEF994BEA01F2A23012BDE1499 +:10598000213100F3F91B53FD6E929157F3BD4E8EFA +:1059900017AA3F0C716A06FE41532FE55847CE7592 +:1059A00037DACF9DE9FEE9F37BFCA8683927A4E547 +:1059B000B7DA94DF4165A9454F6DAF3E3BB9DD26AF +:1059C0000D29607FDF1978B56B2AF84F62626C9AF7 +:1059D00006F25F7544037D190C5759FDD3B77B164A +:1059E000BD265AF68B40251DCFC29FDBCF52BED3BA +:1059F000F3879DF337D495669FFF8F22DA43E46DDA +:105A0000D4FF1C6F9DD1BB11AF4E78CCF75C62E226 +:105A100043ABBEF09633BFC4487D3864C3E7D9EAD0 +:105A200041671910481CE4AD2D50A5AEB2E0250821 +:105A3000FC48E199EFD183AE8923E13E5B3D996B50 +:105A4000DE8EB07DDE0B32F316C3BC1780EE83FD15 +:105A50002C1E32FCB08FC5B7FD01EC399FDA5377AD +:105A60003DE80DC77920C4616CAF69B8FAAB701E10 +:105A70002897622037F49C80FB885423A70CD847D2 +:105A80007A049DF9F574B4C37C84D9FF13B91DF66B +:105A9000CFA6BC945BECB032988FD9614E7C10528B +:105AA000ACBEE1B7EA6B83BDCFCFC3AB6A3823107E +:105AB000EDAA5F53B86E3AE226DD50FD90F6B69C33 +:105AC000435E7D8D9DE36EE2E7E1D5241E82C653E1 +:105AD00044AC03784F91A3A139167A7FC1C5FD4329 +:105AE0005D6EB49B0CFA1FC0F9D51EB7CDAEBA716E +:105AF000B7BD7E03692884FDF8865D6E92A2F8B872 +:105B0000C9B1FF5CE262FAE446D2D20974EEE0FE6B +:105B1000AA552ADD82A949DEFCF47DF356D2FA7239 +:105B200017F31FBC95A42BF364E05A1348C93A6DD0 +:105B30007FAD6FCE951713783FD55904F293CFEC14 +:105B40005F273F5CDF65876F2CF89DF09AF6792E12 +:105B500038A4FD829ECAC2AFAB38BF99F46A5542E1 +:105B6000B3481EB5CFBCAC3416812EA3E57F785365 +:105B70006D749E24083BF66FB990F9BD5B2E40BD55 +:105B800037C67B6D1FF1BD2D2ECE878EF7BAC3A908 +:105B900038E86BF3DCE4555A101782C4CE23DD914C +:105BA00031DACB476F77C2B5349FEE07178C848FFD +:105BB000DA3977B9E8BA6E75E9D7322666F0790036 +:105BC0009F2E28993D8FF60EEDBF5E0A7409743C36 +:105BD0006FA00FED1EAF66B7FFD7C31FA0EF2A0857 +:105BE000EA3B7F85BDDD69073DC4F74D7ABC473987 +:105BF0000AA188811E08F4E3FE5523BD3D64915F30 +:105C000093EE1B22546F4CC8AD9F447AB283B3818C +:105C1000C2F581C0EB261CEFF60875200F1B08515A +:105C20005BABACE3CA38EE087DF0216D9F07F8202E +:105C3000849DC36211C05357120236101F887F091A +:105C4000D6DDF6BC8B807E6A73B71011F05C4234EF +:105C5000F0AB7BCA59BBE7B82B2C32BB18F1D41977 +:105C6000AD7B00FC19075CCC7F44CF05E887F004CE +:105C70000C5DA774ECA4F6473EF8B76F6771948586 +:105C8000814402DE73451ADD1EFADEBF3E7A7D23B3 +:105C9000D4D7442E95E09C73888F73EA7B8FCF23F3 +:105CA00014BECEC782A41FCF292919CE396BFA5C46 +:105CB000E8375BFB8320CEBFE6891B1FAA07FC3CAD +:105CC0007D89F606EAD336A4C79AA796FDBBC1D74D +:105CD000A3507AB46DE2FE48231659465F6DF690E4 +:105CE000AFC40399F59BF853B41EDCEFD6ECCF4755 +:105CF0003F6E5A8E25DA9FBEEFA1654396FDEEB743 +:105D00002E669FBE1D941B013E61FFC075085FEFAC +:105D1000556E589750DC427E43E73B01EB63FD70C4 +:105D20003F301E1152D368FBDB8FEC95CB66C2BCB3 +:105D30007BE555E8C7D9847830E154F6EF30407FF1 +:105D400029E56A196C0D8B7FF05868883E5FBFDFCC +:105D5000D50F7E4A5A625CCDAB89B6733BDD5F02DC +:105D600002A5FB3ACE97EBFA9A51BFAFEBDD8AFB67 +:105D7000D8FA0376BD46F18A71D2B52FB862F550D4 +:105D8000FFE1C3218DC2F3D6E08321C03F9D67A50B +:105D90004CE5C7ADDAE502C63F5D30723C42863164 +:105DA0002EB8BEF70E369F436FBE057F4447C659D7 +:105DB00083923DCE4AF64F18D7396FED63EFDF6F10 +:105DC000D0F9DE7EE2F7F7431CE5E6BFFEF1FE6F99 +:105DD000813CFFD8AB82DE5FFFBDDFDCFF4D8AC7B1 +:105DE00053073C22F0C53B3F7AF8A17B69FD9D97A4 +:105DF0006654812A9A2E31797EE7F13F156A749CA8 +:105E00008D3F5A3209D6BDF1C9C593C828F6C63BA5 +:105E1000948F521E2B3C29A49F76808E3789560F73 +:105E2000F2D2418F437D87A6007CA75EF4C4403642 +:105E3000D7D36720CFEB7A9BD12F0DF56F53BCAE34 +:105E40007B740BC62B47E2D7982C4650FF4C065765 +:105E5000FBBABE655FBAA41A4A774C83F1C830EE2C +:105E60009FCEF7D61FA774BC2037DDDE271FCAA040 +:105E70001FD73F7A079BD741B753F0C7FC9174AB4C +:105E800005BAF933747B9FDCFC8FF74263DF84AC87 +:105E9000F120332EDEFCE41579D9E2F856FCF68FBA +:105EA00003BF4D3CCE5520E9CBA5B9C007FFF4D0C8 +:105EB000BD61A0AF27560FF47EECFD2984F2C59B8F +:105EC000EEE1EB40FE867FE451F7D177D6FCE805A2 +:105ED000DCA7DF79F217B286FB1C3511A93DF70E5E +:105EE00049FF1B04FB6E1D8F2BAC7F20D8EF09658B +:105EF000E8B42EB5B44E0BE173F473AC4B317E5F56 +:105F0000971A582E64A1DB56A98CED1B2916276B16 +:105F10007EE0D73209D8E929D4001D4F5E0ACF733D +:105F2000D1D15CBF0AEBBFD042CF07989CE692C7A5 +:105F300077F67A24D8074DFABEC3CFBDEB53C20B18 +:105F4000248B9C9AF60D71AD18954E4E7EE874CA5E +:105F5000716A7CF1FDB1D7717678FA86A4E1B84E0A +:105F60007C6D8A523D0CFB51484EC17ED4E9D65E11 +:105F700030802F9E73937DF495B6D03CA265F1736B +:105F8000B5839D372353970271F4F74B6115CF63A7 +:105F9000CE78B79B1E0F340B3C875E9E316908CECE +:105FA000B122F307770CCC27A0FFA12C85786FEBEB +:105FB0001CF4D798EFBB2231F413CB116D61B6F10D +:105FC000E5D679D87FE479ADE5CDBDB47E67A43060 +:105FD00006F67E50FD7E64809CFDB96D9B64E039C1 +:105FE000B42BB05929B39C43BBB49CE7E0C3D2287F +:105FF000E7E0B33DBFA5E70F3BE7CF790E3E0EF2DA +:10600000BF85C721479C97D480648D13BEC1F57EA0 +:1060100009E9DF44987D1357AC7EEAC6E101F077C9 +:10602000DCB7F4C4DE95749E3CD28E7E69BAEB5721 +:106030009F99331A3FDBFDD21E91D94124CEFDE357 +:106040009938259B8FC78B4F67E0797C15FD73CFFF +:106050008543024C760E9DD24DE12B5DAE6D0678E8 +:10606000A6AE187C6425F2C347F393A7F94533F92C +:10607000C5B09DEFBBB44FE67CEF75B3F5D173B6F9 +:10608000D73D77247DBA3EA1F37D24336F24DBBC5A +:1060900023ECE671C605EF59166271E61302FAEBBE +:1060A0008D45BAE0063E9D4262903B74524854B81A +:1060B00021FF64B9E1013E0D482DE7803D1918E14B +:1060C000AF627E82ED0E7FF3D9FAADC6EB6F3E5B19 +:1060D0007FD428FEE65AF738FCCDAEE02E3CDF79BF +:1060E000CFD2DF1C9EA0CF166250BB78F1CF2C7EA2 +:1060F000E6AB3A828B03F3C1CF4CD0AF7C4DC725C2 +:106100006DE0470E4FD61F87FEAFB8172C0E43FB2E +:1061100054D63EB793B5DF06490310A7937403E442 +:106120007DF7CA6F54A0BF334286C03E33FD9D9EAB +:10613000C604FA394F781209589F5F4D0D8088CAFE +:10614000911E8CFB2F7155E60D8D42973B785E4971 +:106150006752C792EA63763E2A6771C19D741F81B8 +:106160007C929E6404DBBB932A96EF9178B31BE389 +:10617000882C3EBD9BFB3FDA64D204E551BE5FFF35 +:106180009AF373A664E710BABF7C6735E5A377037B +:106190003EB42B73C1B72559310DE6DF9E8C61B932 +:1061A0003B598365A790D0208ED5D6F12F9B15B093 +:1061B000A75CB128D43BDB0F6FAEA57599EF5B2EC2 +:1061C0006DD634C9B24F75B8993FC353D789F68F8E +:1061D00047A7ED73E07DD292CDAFBE95C34DFB6373 +:1061E000FEAE4765FDEFE27ADBD97F271F7FE7C070 +:1061F000E504EC34A97A10FD9441BAFF011C3B0779 +:106200005EC2E7DDEE413CBFFE432989ED2310BFAE +:10621000ACC471770E3C87FBECBD7CDE40CD10F248 +:1062200063A8B51ADBBBBDC3DC3F4E785E14CB1B45 +:10623000E906DA55435E94B66F33AD3FCCE1F055D5 +:1062400050D6A67674A4F53338BF54610CF23CC026 +:106250008741DEC941A7FF9AF9AD8B4802CFE145DE +:106260007A40077BABA8B67011D8914575E761BE3F +:106270006D516560253ED70BAF87F20E21F68B5A24 +:10628000C8738B8AE8BF2AD22BBE8AFDF48B6E843A +:10629000F6E7DCF9084FC1E79A2A60FC8274DC71EA +:1062A00010E38344D3D03F69C61BB7C7CAF2463B4D +:1062B000CFE0CE66EA4594471FF8442CF50247BD6F +:1062C000C8D1BFCCD17E9EA3BDCA566FE5F826D5F6 +:1062D00072EA4110B02109E1DDC6FB9016CAD81060 +:1062E0002FE50EED81D0F7949395AC7CD5C227DDD8 +:1062F000B0AE51E4F1849BC97D5144CCC007FFA7E7 +:10630000F832F09421DED03F92D113B598C0B27D1F +:106310006E5A4F18D6B888454FFC06E83E524F04D7 +:10632000907FDE2D26B83FE4820FFC114C0F285CD5 +:106330000F24FE13F58046F5C52CAB3E883581FE53 +:106340009BD4E95F2CCD477D80713462F8DBC0EFD0 +:1063500082793D9424EF779C5904FACEB437BB057B +:10636000A637BA400E82AC2C0D8EB43703917E9BBB +:10637000BD693EB7DA99E8BF1E8B4EA50F292703EA +:10638000AC7C15FC183CDF792C3A6DA7780067557A +:1063900027C5039421CDA76BE0DFE07A27545EB8D0 +:1063A00048B3E45584AA2DFC0AE401BA815E89F859 +:1063B0006CCFA95444304FC6495F528BFB80495F74 +:1063C0008A2FD4EB85FDCFA13E71C2E7693D17F559 +:1063D00005E00DCA40F1B00EE747536FB855752F71 +:1063E000F8C5762D5BB7C90D7981130A66031E6760 +:1063F000CA4C3F935EBB5E30C7A57A63A64CE1F101 +:10640000865B08330D595CABB0FF253C8704AB7548 +:1064100092807CA6888EF9447231B5DC34461780B0 +:1064200023BD1EAEEF24A585E865C8AF09927D5F48 +:10643000BB58CEC2AFCEFDC6846F83CCF4A6598EB6 +:10644000B5FF75F3FDCDC4A7AF222664B3473A610B +:10645000FFA100DDC5F7B52ED887A0FEEC23C89FAD +:106460004B65E6E7F715A708F2B7142B85FDC8685A +:106470009FB518F6A3BBBC3CDF91F737C7BD9AE3C5 +:10648000DBC7E9E39CF75A99E9F109DC2E77B6DF1F +:10649000C0D729D7B37C06B99EE533C8C5F249D029 +:1064A000F3B2C6F639D24F9C790D37001DDDA4A595 +:1064B000FF8152C42BEA7D737D773DFB129EF382F0 +:1064C000C52D981FB88EC39159076FA7FBDB4ADE15 +:1064D0006F6165867FBF96A633DBB714D87FE68CE5 +:1064E000CDD7B7C9AA4D9F99ED4F48FA3765F463E8 +:1064F0001BB8DECEF8CDF1AF6AC03FDBD03F20291C +:1065000021C30FEB7C60441E701BBCE7263D865008 +:106510009A89CF8ECCBF1F917FD12D63FE45A30EEC +:106520002AD91377E45F68767BB8CB610F9FEDB90A +:1065300064BCF6F0D99E3B46B1871F92C7610F7BC2 +:1065400003B5911BC847B0872FD0FF20823D6CDC7C +:10655000C4ECE119FAE3500FEC5AB1B80EECDD3996 +:10656000E67EB07E31F07DF842B61F3CDDD982F682 +:10657000EFA58A7E00E8F616246B02FDE2BA8EE6ED +:10658000E903D9F59259BA27B1F87C7BFE952AC662 +:10659000E91DFC31C8F9CE19A7FFB8C6CF16FF9781 +:1065A000E766F4E4A7B59E9F2BFA10CC9B9EEF2CD8 +:1065B000F317A8DCBC8572E3C8DB48F37F85C8EC21 +:1065C000209252965AF69FEE8A4FDC6FF3672BDFCC +:1065D0003ACFC7DD201F1F65FEF1FB6DFC1EA62F05 +:1065E00070BF9239DEDAF36F182B7F21ECB1FAC35A +:1065F000228EFC854FD9BF31CD93F6334CF37C8A84 +:10660000FE8DEACCBCD5D9E6CD952710288DC5D115 +:10661000FE8E8A04F0D4B920D6037AB7B3449437F7 +:106620009766EE6398F3347BA6E27BED1159043F45 +:1066300072FB9125181FE974B7D4611C315F54F7C0 +:10664000958E84FBCB1EB61FBB5AB74E7B6014BF22 +:10665000998BDFBB6A579F45B8FCB3C3F9705FA045 +:106660006DE0B6232E3897450A4BBDB47E1B1F0F35 +:1066700092BE5EB3C459A9215A07F0BB8A45B079CE +:10668000E97C77E27C63C1779987EDC3AED63BA600 +:106690003D304A7CF6E386CFC4E3951E8DCFBF0D17 +:1066A000E737F1EA06639FD2ABBD52C2B8837BC81D +:1066B000C3EEADC5D83D10538F489522C601A97EC3 +:1066C000B915E5A8CF6E97B803CCAE5CE4617680CF +:1066D000CBDB82F269E6D30712EDB84FF9139DB612 +:1066E000F380C9277E37BFDF1090300E2B73BE704A +:1066F0005DD21F87F5F4CC2E17815FFE85F361977D +:106700004ED745CFC75D7C1D3D3CFFCC9C8790F2AA +:106710007B56405C532FAB02FFF4F738FE15124056 +:10672000FDA9001EE6C0FD8C4D640A454D8F87C74C +:1067300097CA4819F0EF86851B2E03FB57D10C4FE3 +:10674000B6B8C4487D44BC00BF6BA1E82D87FCFCF3 +:10675000D94C1F9148F5187109168F35E960E25F31 +:10676000AA9418FEE1FE31DC2FD045BC3762D2215D +:106770006DC73FEAB40F359EA7CBF0EE0AF03C6E32 +:1067800022DDB142B0AEFF4EE40373FDBD1E1E4FCD +:10679000F96F5AFFFDE04C82FDF6D0B9F7ACA0A02E +:1067A0007B75318647BD72CADF96F3B33FC0F27D79 +:1067B0004D3E528676F497D0798EFCADC01F19F706 +:1067C000FD118CD79A290F84DC62BB1751CAEFBD2B +:1067D00098E77B6F2B3BDF6B9C2F4A2B37E3FD1831 +:1067E000C4119D724A334919A5D88EFC61BEAFB55C +:1067F000CBB6FB1ED126D916C79F4C985D32855863 +:106800009ED371269BF7961CCFCD389DECD0DB66CE +:10681000E98CD3FDD9E388D38D11E733E3B63B8808 +:106820002E28167CB69511DBFD48273E0B3576BF2A +:106830006D12BFDF262F60F7990A4802FD0DA4866E +:10684000E567493C8E6BBEAF2A4C9F28E43D1DF6A0 +:106850004D990C19A8B71CF430E9D0554E78DEBC20 +:106860001E88D2F67C4EBD2E4E076F94D1219FE339 +:106870009FD472FC094400FE0D2DB0D343E6F82FDF +:10688000E07E0FAF03DF32A783EC783E47113E5224 +:10689000DC74A6C2F55C9004ADF4206A78D4387A32 +:1068A0009A6FCF72BE8B154EFF009D6FEA47982FEF +:1068B000473F27FD2FE5F4E9D44CFAD8E9D7596DC5 +:1068C000A88CAEA41EE856C0E95660D2A98EE15746 +:1068D000A1FF019D26353AE9A409A09F1562793EE2 +:1068E0000A7DCCFB60B2A25FA3C03A5EF7A23F4B29 +:1068F00049F3D3C10199C2BBB598A01FFD5F2169BF +:1069000084F62BFA6B1EF2D1B66A9282FDAEA86CA9 +:106910001FF3B3C2D1CEF2FE56AD61543FEB9D4999 +:1069200096D7D0955448FF8CDCFD1439918078516E +:10693000A866B81FEC8B825A0DF393001C80438D20 +:106940006878BF73379713E464CB3D2CB996D909A7 +:10695000A13AB63FC9BABC12FCC7A13AA6A7E5D86E +:10696000A2DF49F0BCC68E4FE738B9E96BC1AB2B4B +:1069700077BFF1963D142FAF4EB38E9FAA837587D4 +:106980008EBB306F35A4D1D32CAC47530B711D5A3D +:106990002C80E5D0C23A568F7743FBD380A0B92034 +:1069A000CF6C9DDE1A677E947D7DF8CF3C77946531 +:1069B000F062C2E1E49FFF2EFC7439F0D35DCDF8A4 +:1069C000E0FD5A922259EC5AB3CC3F2D917E6A4F8A +:1069D0000517F476417FA5522410CF501650BD46BE +:1069E000F9EBDE9B7E89F910B2A60AD6FBC28715A9 +:1069F00066C7CA706F15F482A409CB82D676960753 +:106A00004CE5E890827EC1830AE4A76D9306752E5B +:106A1000279857B8EDC37F57C0FE0B36C9ECFE6B05 +:106A200060974D6FAC52DCB6BC86B47E899021D1A4 +:106A3000721E34F787139EC431D87FCC7B1C7284BE +:106A4000DDE330FD92A6DFDB8987FD49E6977C28F0 +:106A500049A695BBE11EB882F5E929A202FF4C4F79 +:106A6000A92AF0CFF49456C0EAB102A8DF09F1B91F +:106A70006980FF088FEB6958EE4E56E0F39DC91808 +:106A80008FE7D560B98DC7FDBA9375587F2019C7B8 +:106A9000725FB2119FA792092CEF4F3661796FB2E6 +:106AA00005DB1F4FB662FD074903EB8F25BBB0FC2A +:106AB000A7640F964F2753D8FE64723F963F4CF65B +:106AC00062F94872375F477D9D80F0FBD04F396394 +:106AD000375DA795EF577BD14F3F9DF3EDE1976F62 +:106AE000F501BD1EDEDD30AA5FBEA4C52E3F79359F +:106AF000F67BAA5E8A2E6BDD1329B2F58F26CA6C4F +:106B0000ED13EACEB3B5E7EB55B67A307691ADBF6B +:106B1000BF6291AD3EADE773B6FE53BB1A6CF55242 +:106B2000E31A5BFF735A57D9EDAAA635B6F68A9DCC +:106B3000B14301F0AB4F2131C8FFA93ABCC1D63FE8 +:106B400076F09BB6FA6C2FDBDF29DF14401CD0BD3A +:106B50009BD93F335294EB214F728F81E702DA1EAB +:106B60008176FABC88F743BA98F776693FE6774AA8 +:106B7000F17B7327B6601CD13C3FD0F3DC6C2FC88F +:106B8000C1CFECE708D36F54C1E322E03681EFC7F1 +:106B90001045C27E0F4BACD7655E85E5979B719B18 +:106BA00098847EA9193CDF24ADDFF6907E2FEC039C +:106BB00044FA7FE06F846BE867689F597DAC6EAEE6 +:106BC000BBF2515AB7E0EDBC07ECED3527ECF57997 +:106BD000C7EDF50A1E0F269284F9A6BEE353ABE07B +:106BE0005E22E1F743650E5713C76F57B277D6EBB6 +:106BF000EE0CFC0AC5B70AE7A3941656018FD5EC34 +:106C00005EE174C2DE53A8FC6AD81E2B8052DECD32 +:106C1000EE3DFB4E5C76440865EC39AF46C7B5C027 +:106C20002557D8E15434A64FBC95F6F53AEDA7EBBD +:106C3000BD1FCD7E1EAFDD74B7F9BD147E5FC3BC32 +:106C4000071ADDD833007EF5E86A15ED01F74C31FF +:106C50000E7AB5B352ACDB0B7632AD4319BD39B504 +:106C600009EC98E881D227C0DFF699D3FD0B412FBC +:106C7000475BD4D9E0B738E9D5F8777F1251F08F68 +:106C8000450FEC1016D171FEC3ABE2F3683D8B0BE0 +:106C9000B53DC9E238875FBE4A057DF16EB81CF587 +:106CA000C5A9A73C3AF82F4E15B0EF309C7AEAC23E +:106CB0009F02FFFF3E79A4C0FABD8C53DFFFC53CA5 +:106CC000371DFFD413BF9827619E73CAA6EF9BCFD1 +:106CD0001C9B07FB83B18854C0BDB5F5AA4C304F4F +:106CE00011D60B7BDC6A827ED1BB0BE54E18BF70E0 +:106CF00092782794217F298E63DE1BA072508AFE32 +:106D00005489BF77C48DEFB53DE7C3F1364C63CFEF +:106D100037E417E239A02D5F6B03B9A77FE3F9636E +:106D2000C3E586670AB4BF3C2966D07A3BB52AB171 +:106D30003D4AF03B331F94928A522AC7D262753182 +:106D4000A4080D97307D619E57BD3F4B9120D425FF +:106D5000C315A2EFB5D1738D81F59EC550DFBA8002 +:106D6000D5D537D50160DF5BC5961D2BD01E4EF4FF +:106D7000C0BDDB0FE689B3C1CED1FC65B82E337E32 +:106D800070E8650F83FBE512B49F834302FB9ED23C +:106D900087147BC0179CFF831231F2AA08D995ACE7 +:106DA0004078E8733D4C8DE98961F65D8B891176F9 +:106DB000EF3DB89CDA11167E87F75F55383DD0BE9F +:106DC00089E5E17D8A52D170D3F51EE0FB657F52E3 +:106DD000C171EF4DAA58FE3819C1E73B931A9607C7 +:106DE00093B151FD97CE72ABC39EB97B265D059DD5 +:106DF000EF6E9E07F2C74AD128BF20F7FB7B924770 +:106E000026D44EE32A91E2AF78238BBFE6ECBF494C +:106E1000F84A03E52FCF2D527C1FDAED89A8F53E05 +:106E200064873B118543E3F096A76A6BA32867024A +:106E3000C87354122415E428427A41DEA2911E013F +:106E4000E3BEFC7E05DA27B4E199E2F70EE501BF67 +:106E500054925E004BAE4C1090A7F925E59B405E26 +:106E6000C94CFBF303828879FE30DE225ADEEE8DB8 +:106E7000BFE385B843418DEBFBB4FF7B7D1E0DE482 +:106E800076D7B37F92210EDCF1AAAC805F2D7AF029 +:106E900024E62D77884332C443559FB204F2013A69 +:106EA000E4C4B9E0AA527D3B3BA07E7728F108B448 +:106EB000538DB6E4700D951B8FF17FA0DDE723465F +:106EC0005D319DDF6D7C19D65B4BA40EE533D83E5A +:106ED00019F2A7043A5E17B4032F603C49E8D017B3 +:106EE000D07A3EABABDDA4C3A075BF8FF913498048 +:106EF000C95DBAAED27A96FC59B34CF793583FA20B +:106F0000B0D25C67F3A13FFD7432E4B31F147AC1C1 +:106F100087123DB803F10DFA09F4D181E411B5DD12 +:106F2000A4BBC56E9F0FF919B08FA784549980A692 +:106F3000227E972E3AAC6B9B807E29770C522436AA +:106F4000FAD9FE327F888E63D1E7F325FE9D3DC7D7 +:106F500077CAF0934E40BF6D2C9E105D3D2483FF99 +:106F6000FD408DE19F459FAF5D595EB589D2E93502 +:106F70001F1BB795187EC8DB21611FDE3F30F3254C +:106F8000DE76E44BDCCCF325DC9BD97D8FB5A5BD4B +:106F90008555E0DFF7B27B276BF3793DDF5E37BFC6 +:106FA000A3754035F20B208E7C60C714B8F7B08E05 +:106FB000F45C07F71CC8CF5C04F4D5EF06E6E75D88 +:106FC0004CEBCDB40EAABEB96FF6E7601DCDDB4425 +:106FD0001150702987775D1FE5A700CB4B830F0900 +:106FE0001DD07BCE97281FB46FFDF112EF2594AF13 +:106FF000CB7455A4B44FF99FEB50A02EABE792D9B8 +:10700000501F443E5B7BB9C83FFA30F813BD9CDF8C +:10701000732882F1A31D1077AC6E54D0EE2914E3CF +:1070200018FF2147593E13B0C0028A6F577E3BC6F6 +:1070300089FEB343C4F336842DE1FE43B5448E4844 +:10704000B4BC5BA6F4833CA84E09DFA3CFBBDC0530 +:1070500040971E1DF2BD4817D3CF730F7A307FAA19 +:10706000BA45BF09FD06EA02B477A690F43FCCB753 +:107070003D87EBCB0B55B250A2FDDEF395E27E5778 +:10708000DD78E55A786FEACAE5FF57D7E0734E29F5 +:1070900003E3482FB1FDC1B735DE0479D5AE5F04F7 +:1070A000629BE8E33E71D1F9B750BAF47919FD5CFF +:1070B000F989AD3F07FF7E7E39C1F6FCC4EFE15E82 +:1070C000C6F0444583B843FB103D87E7417B4C0540 +:1070D0003A5E02FA03F0662C5DA283FE9313B7803A +:1070E0007C7EB77B6907E4DF51BC4F5528DEF7F99A +:1070F00068BD848EB7499FAC5AEA17FE85DA052031 +:107100009F6469874EE555CADFB916E49DB6FF0452 +:10711000CE63CF14104E17D65E5D66D6A9BD45F579 +:10712000816B13976F0890D1FDA0DAD2BF96CAB7D2 +:107130007B116B4FD2F9808E607FB616C0BAA8BDA6 +:107140000BEB3A574AED13D8FD32B8BF72A96BC5A5 +:10715000E767D2E79E692406210D5F3ED3CBBE7C54 +:107160000DF75B8A278CEB0F3F1F48013E7CF92D02 +:107170003D1E682F29C773A23FC5C68112E8EFE7FD +:10718000F7F8047529DAA3DE0A4B3C9C64EEF9613A +:107190001DF21008BBA72B399EDF5FAA0F94D0F712 +:1071A0005B8796A2FEB8D7C7EDB612E68FBE356EE6 +:1071B0005C06E7C8F3867B17811951797AF0592864 +:1071C00067913F2C02F51953F20F41F9A04F433E4E +:1071D000A952672F465558D37B08C369DA5014F477 +:1071E000D75C57AA0DCECF790B7A5D30CFA46BCB8D +:1071F000CF326EDB8F7905DB02227E5FAC2DF0840F +:10720000BAD2F2FE6D7E1E57E2FAC4AD323E6E2552 +:107210003D0BE1BB2194F6EC3B2F5CBFB8B90354A6 +:1072200022EC9C2FA93115EE492D0C56A33D7782F7 +:10723000CBBF6B60FE97C0FE90414FD0FE7BBCCCB5 +:107240002F3B1C25BD60DF48119DE07EC7F3093749 +:10725000F2794D7D01F95AFA0C7A2EFDE274CC6771 +:107260007CF28B858BC03EDF09F98868EF0FCBE697 +:10727000F78A305FBDFF9870861A1D4FD789E08668 +:1072800020DF95F41726837C0FBA516FDD95CFE48C +:10729000C95C77135FF7531CDE0E37D3875B92EC24 +:1072A000FE957CDA4F527308F99C9FF9C13C89D551 +:1072B000C8679E0805B314FC8286017835F1A014D6 +:1072C0008B2465F51F9E0EE1FB4FF958BE9119679F +:1072D000CD1577FE969F7FBF6C445C5543BC6F4CC9 +:1072E000D3859D5B3606F549A0A79F59C4E076F289 +:1072F000C1B08FFB594E0B0887F9FC3D1F5392B26A +:1073000094C0EF5BC8A7256C37D79B3EBFA5DBD9E0 +:107310003ADE51D9BD5939C2E4553EE062DF618998 +:1073200048C3D67BA97EB0C3A766E4CCBC2F3B7212 +:107330001DB1411DF8AB9CE9D9917268A0FD63AE07 +:10734000D3A3D9DB9D792C69B84F4FB0ADC394AFAF +:10735000CC7A0AB11DF613BC0F2791EFC039AE9954 +:10736000E76934BB285F51F8BB0FA7E230FF3BE66B +:10737000B9E120FB4E6973DF0E9E2FA2D9BEE7B3A1 +:10738000EEC02D78BE5BFF7AC01069FF75A097290B +:10739000BEBA0F38EF27C7FB276B99FE274001D2F3 +:1073A000E7EFA94D51B037544E9F42B1DFC5EE21F2 +:1073B0000FBA400F74F8E26F32BB8BE812A5414759 +:1073C0005AAF2A1D204777CB19BD0B798A77FB5816 +:1073D000BDD6AF74B457E27E8FFD55DF7D6867750B +:1073E00078CDFA6EACDF2DC70E815FD478CAA38149 +:1073F0003D42DFD7415E8D6B2AF0BCD351468AC037 +:107400004E3C5CC8BEBBD7F194671F9C1B6EF72631 +:10741000FC3E0B1E4E4DFCD514F0536719CFB08DBA +:1074200037E5ECC6A3F3F7015ECDF6C38517E1F8A7 +:10743000F43D0DFDFFC583D7C13E5AF89407FDBA50 +:107440007BDC767937CB2F7379EE4CAAB67B9632FC +:10745000C837F0196941B9F6440A6CF26CCAB97CB4 +:107460007A324959E2D927F83E9FE1AF29D8FE1474 +:10747000A72BF8F5469FA72CC73CE78F31CF2CDB15 +:107480003CA089D3DF3D1BC52FECBCB7E3D48B6692 +:1074900069EAC5413EBE4412B7FA697DCD50EFA5F9 +:1074A00020F64BF3EB4A20B57B8A8F9DEB6BF6EF12 +:1074B0003804EC78BB27DEEB9BCBF25880BFE77B30 +:1074C000E227815E66FD6CE523E537D737420FB2D0 +:1074D0003C6F7E8EDF188C7D0EEA1BB797A9C628FD +:1074E000E735A79EBB74843E64FAEEE39BCF65A3A9 +:1074F000E3C8F9646CCFEC6B0962CDB337E7DF18F2 +:10750000D52731B94ACBB90E722E959A7A8018A038 +:1075100017EE32DB8D93686F3D2367DA099ED73211 +:10752000EFC3F782EEF299FDDFEEA82DCED2DFEFAA +:10753000E85F66F6FF00FB3BE131F50ED4C1FE9338 +:10754000FEE249DB8700DF0ED1315E81399ED8092A +:10755000E399767F5577F0A74639F067CF42D8C7D1 +:1075600087BF4A34B87FF15D29E68B59F6BB2ACE36 +:10757000A7F269AF0DCF19FC06F03989D8E9B9F146 +:10758000E5CB46BD87FDDBA4FD1EF68D898D782FEA +:10759000B48AD3AF899E1C60FCA63D2E9BFCFE1DC9 +:1075A000DEBF1578CFCD61CF5432F9FE9B83379A79 +:1075B00003DEE24F15DE6D5EA66F77F17289DA3277 +:1075C00000F70E966802DE3F5C42FB7AA9CC5E466D +:1075D0004B85964B246204F0770152382ED4C1DFDC +:1075E000F1A5BF7CEDF5CFE2F74122A235AEE90A65 +:1075F000B0BC5527BCF0FD5F885BB741FCDA33B205 +:10760000DDC7FDFCF79C7F27B1DED3A90FF03CAFAF +:1076100062F61D5CE77B24C4F326948868CD0F30A6 +:10762000EB667CFDA3C3B38EBC6AA1C3751C1EB9F7 +:107630009864FD4ECF79219ECFA624305FAE33D221 +:1076400030AA7F7FFC705C6783637D80CDE3CE01D1 +:10765000C72F831C0ED5C0F36197F671C161C78730 +:1076600031063E5EE67092D3E7B0F3A7C2F8BB2BBB +:107670004CCFABD9E8C9F3AFBA944F16EE7BC680B6 +:107680005B097E3A74DCCFE1C845C7F6208F6BA951 +:107690009F2C1CCF8C01C763263E2209A4CB270553 +:1076A000C7BF8DC1D7B34D38B44F161FBF1E038E51 +:1076B0006B385D5A02CC2FDD55C1F3D739BF8299A3 +:1076C000F499AADC7CEF2BB77FC7590A38BEE3FCDC +:1076D000FA24713CF9226FF1F58D25276F2659FEAA +:1076E000D0DB1C0F4DFB5D18DF59A3B13C9FB1E609 +:1076F0005BE34E158E9687BE76BFCB16EF1E0B9EB4 +:10770000CE00FBAEC94D29FB7BCDBD7E475E91C14E +:10771000E96DC7EB083AFE0FC7E73D01B6EF8F856D +:107720004F535E3E2D3C8E259F39F1186179681FBD +:10773000371EC782E7DF008FE3E0CBCEC8E62EF02E +:10774000F3BF4FCD36888BFF1D9FD9FBB7FC9D2F14 +:107750003F163CEEFF3B1E3F163C3E336E3C6E56E2 +:10776000E0DEF4DFE5FBE3916FE739F1D3C2A77305 +:10777000DE5CF8C88557E77CE6786BB83D375E3C41 +:107780008E058759D68F179F8EF3EEA7864FC7BCFD +:10779000FF657CF2F1CE1A9F63C06196D78D9B3F47 +:1077A0000DDCF7F7F3EF18CCB86FE3D1CBE9FE7E31 +:1077B000AC6ECE1CFC8E9AA4CF5C3693901D2196A5 +:1077C000BF3C83C7FB9CF3EDE0E7FFA3758B9B31C8 +:1077D000CF3AEEC7BB03C7C5D8CFAB21CFA7C18572 +:1077E000F130E77B4739BED687F2CDFB44C1B9F40F +:1077F000FD86E75D78DF2DD7FA489D655D658C13C2 +:10780000ACF9E34E7C1F25DAF66A88D3D46787C3C8 +:10781000A4F3F1F8B28FA687E2D9E99C8B4FC64B4F +:10782000EFB1E0B92E54364E3AA7B05F98A47FEF7F +:10783000F23CF6BD62CD0D71B886131ECCAB7D1E39 +:107840001EF1DFFF09D1FE0D75B3D9EF5599F995FA +:1078500012C17CF5EB779EBB0F7FA767F932ECBFB7 +:1078600097D37F049D4CFEE2BF3F356985E1B6FEAC +:10787000DED39B21333EDC520270F4C9FAF98FD17A +:10788000F18F7ED183DF25F22CABDF1AA4FC73FCD1 +:10789000EA7CC1FA9DA6837CBE792B987FACEFC5AC +:1078A000845BB4F8555EE2EDF4FD6B87B2E0EF0067 +:1078B000F79F5D991078BEBE5ED260C9C37AD5D1FC +:1078C000EE7CFFB95008DB8FE7F80ED3613E7F6393 +:1078D000E3E8EF93E513F8EF3AE9D3ADBFEBE4C487 +:1078E000DF15A1C4CF43B47C416879F9EB204F0B7D +:1078F00015E4632269B3006E130F4B14D2053F7970 +:1079000068D2E94B932B914E263CE67C900A04F911 +:1079100023D53ACB2B2AE079A0176EF3A636615C0B +:107920009BFF5EA444E10AE2FC2F033FE49ADF1CC4 +:10793000372C917E998EEBF3E8D321FEE55C87D955 +:10794000EFD89F167F1EE0EB3B2AAA9B4B47AEDF8A +:10795000A997A6EFB6F3CD5F422C0F209CCE936E75 +:107960002969B4D0EF8310FBFDD2B3E5A747C196D8 +:10797000A0E5F45D2D6E8D8E7B95C4F3C1E9F856BC +:10798000FE7890F3C730EF1F7619BEF3208EF60213 +:10799000D32FFBF77DB3249B3FF828BFC7F450A833 +:1079A000C2262FCBEA6777C04F16527E8982FAEA49 +:1079B0003B7A5109C8DD95128B9BEE975B4A6603B3 +:1079C0009FCB5A33C435C7BB0E13DF39F528C773B5 +:1079D000DF8B7137F8D12B97337EBD62F980D84C9D +:1079E000CBBD5C6E4F4257CB38CBF2044E9F449BCD +:1079F000374648455ECF96AE0A94738C7BD5E5ED4D +:107A0000DA027950A49D7DD776FAF23F6C84B86A89 +:107A10009FCCF20E9FBF2398828416CAAF363F7B5D +:107A200078F90749C82B5B25C7A6B33C01A69FDEA2 +:107A30002389CABCB9193D35422FB52F337F7767EB +:107A40007A43967C4AF3FBAC263FED4F35E45D6FFD +:107A5000E1A7D579B28D1EBFE4FBC13187FF6CF978 +:107A60008BCC2F46D7817933BFBAA4642FAC23DCEB +:107A7000F44112F2ED57E7317DF67EAAEC2958AFBA +:107A8000B97E739DABF65D341D9E5FD5E8B49398C7 +:107A9000BC5D51EFB73FE7EF57B8F4B518A7FD3C11 +:107AA000CB3B30C70BD7517CCD8275C537074B33E5 +:107AB0007836F1B9CAA3DD90FE5D290AEFF5FB0225 +:107AC0007BE13EFDC4B6A1AF031FBD1788E7155883 +:107AD000F8F42B79763D6EEECFD00FF6AD064973F4 +:107AE00067DBBF96D5B9B2C22D7B626F902C71FB5C +:107AF000B43E70EC97AAD8E386FE8DA405CBE3AE26 +:107B0000612C4F707A98EF9F20FDC10B410FD5B9C2 +:107B1000308FEB44CBB2BC55741D2BDCBDC12A5A4F +:107B2000DE96C7E4F3D71B5D981F66EEDBCEF9AE99 +:107B3000BDD9655C45F96D458AEDDF2B6E66F93F71 +:107B4000D7B6D8D743E5EFE8E530DFED6CBE6394F8 +:107B50005D6AF0F225B32B5E4915CC86FB19C70090 +:107B6000F7606734F8F9F74908FE7E6182FD495EE7 +:107B7000AABBFE27903F77671ECBC73F5677FDA570 +:107B80001092BA7137F9F19006F6D3E8FB7DE2DB8B +:107B90002EDBBE3E7D97FD77C8E6C17E530993F686 +:107BA000975C67D1A7BFCFF723BEAF5C2E648D274C +:107BB000BD951FC0F6637F753565B3EFF087BD6077 +:107BC0001FDA9DFD7D521064ED7BB2EF7797C3FC09 +:107BD000B89FF496809EBFA231FB386B21198E8E20 +:107BE00073A2F9B7D7429EED71D1FE7DADEB54067D +:107BF00087AE32FD7F6CDF373BA3409775820AF773 +:107C0000DC574DD0506F7CF9E6D998BF385F657C62 +:107C1000302710EF03FD71C38B1B7E0AFDFB5690CE +:107C200098A065F481138E835C8ECDFD85EE6BAFDD +:107C3000C3BE1686DFA1067D25A56257B3251B7935 +:107C4000054077630D7EAF7E9F4F6574A7762FED5D +:107C50009C78C16EC71EE17C998B9E37EEF68F7AB9 +:107C60004E7985C4D0BE36EAFD2AE88157BEEDEADA +:107C7000FF2CADBF54EFC7DF0B4DD3D3D45FF573EB +:107C80009A01AEF7EBFDA2F5BEA2B3CC69D7D6BB85 +:107C90003E91F3F5B17AC6E7AF7C7B4E705596F70F +:107CA000DECD2B1D973FF2956F8F2E2FAF703CBC12 +:107CB000C1D765F213D8D5AB2C74FFB3832E8DAB2F +:107CC000EDF35EB9C23EAF2927C7E36D3EB04B2846 +:107CD000BDD14E32ED5CD23E07F7A3FF0FE59234E3 +:107CE000D3008000000000001F8B0800000000008F +:107CF000000BDD7D097854D5D9F0B973EF6CC92438 +:107D0000994966267B9C212C01024C028450112645 +:107D100081489054872510361D16438410A2A2A5D1 +:107D2000FDF9CB400043B41AAD229FA24E225A5C0B +:107D30005A034D5B504A0704A5768B2C4A956A6816 +:107D4000914D94D46ACBF7FD54FEF3BEE79CCCBDB5 +:107D5000370909AD7DFEE7F9EDD3E770E69EE53D15 +:107D6000EFFEBE67C9D5ABF4BF09845CD59584AC82 +:107D700023643421C70CA4AA25979023A533121697 +:107D8000E5C2EF44216E426648F45F1E426C7609FC +:107D9000DB1D291D1917A4DF3F5E4B4864102167C6 +:107DA000D65A48C44CC85143C7EFC63809093DAB41 +:107DB000F85EA0ED076C5D7820D503C3F87E378AA6 +:107DC000FE1E7C5FCE6FA0B5143E8E1E8EE01A990B +:107DD000442C382FB94AFFBF746BACA64E4E271BFC +:107DE000009EFBF86F64431221A95DC7B9C0E13A58 +:107DF0005A36232168EBFA5D94E7A01D85FB2287A4 +:107E0000BF6A871C320F276459192DE3BBCEA7EF39 +:107E1000BFCC1876DBAF31FEF21D743D3951F87BD3 +:107E200083879030E2E5AEB0B6DF8A162D1E9C3215 +:107E3000A96DA1E3CC535A8C63291DE655E7497718 +:107E4000D17267026DE482D283E53C42FC2D484743 +:107E50004FC1B46174FEE618228DA2F469880B0F3D +:107E6000F0527A4F1F3A500DCF2C4E97F26D3B37A0 +:107E700052B4527E083CEC027ADE2F931768FD4F15 +:107E800027766D84FA276D06BB44A79855511437A1 +:107E90009AD60B8EC9F932ADCFB03B70DEF2990B9A +:107EA0008DEA712B9668D7533E5FBB9E5F72784B0D +:107EB0002C2464CB07AEEB181518165DE7D26D0BBA +:107EC00037A5D279CAAB1F1D0BF32CDDBADF38986A +:107ED000FE5E6267EBBDD9CEFACF57F87A2D74BD3E +:107EE00071847C087C0BEBFDAE147E01FEADB41BEF +:107EF000E17701D7EDB5674BFCB628DF8BDF377034 +:107F00003CACB41BB01C690B2EB3BB708A50422230 +:107F1000218BE4DA22176DF2CF04A281FB6B5807A4 +:107F20006D6F32FB5E24D9D17574E2B186E1F1C385 +:107F300013D337BA46F58CC73530BFAB2B7FF486E9 +:107F4000C763CD317E02F38C67F46D359110ACFFC1 +:107F5000F8E6CCF07A6F14CE7F72389D33FFB1D63D +:107F60003E3CCA071FDE7D7601C8356DB7C196C895 +:107F7000E0077C3DE9607820ED541E0AA2F2F097FC +:107F80003852D1D20D3F7FC0E54F2F3F27EF921AD5 +:107F9000E5E1588693E2BBB6EF492EE64A2400F3AA +:107FA000ECB8C75CD5DCCD7CEF737A75D10FB0042B +:107FB0005A0FF27F2F9DB970531C5DFAFAD8F8F171 +:107FC000B0CE93BA794F9248DC18E09799B20FE897 +:107FD00074B296E9C1F9C6705C3E9D77179FE7833E +:107FE0005572693837AA3FF4F32EA89243B3E93AA1 +:107FF000E787993E995F259F827241AD967EC7497A +:10800000E0DBA361BE3236DF3153E3B70B28FD8ED0 +:108010007E3F3B3F04DF67FE306E119DF71D3EEF54 +:1080200051E0531BFCCEE01270EFD7F14B173D7AB5 +:108030002246CB279CDF8F05B4E3BCA3D3CB7A7E4B +:108040009BA5E3B71DA64026E8BFE34DF317DC0769 +:108050007CD714E31BE0E94A9F971C32831FF85337 +:10806000A57F5A4DBECF5A9DC09FA9BEF59EAE7C3E +:1080700079B4AC2E6621D07D7A6C55184ADEFFCFDC +:10808000C539CD32057547783AC21F71B0F50B7D01 +:1080900041B8DD9A87AA2F4A2761A7CE70BDB17477 +:1080A000EB29A387F6BF1DF4868D338913C64F696C +:1080B0006AA0F07D68E0FAE3C5B8F00BDEE87C6208 +:1080C0005D1D3A7CE9F5766FF6EB8F6143695835B3 +:1080D0006FE5366F33CC2BEAF357B1BAB0673BC2CA +:1080E00006FCFDABD509B8FE63D39F467EF9E8A92F +:1080F000EC7C995C877D0B1BFE23F60DF0732DFB4A +:1081000036CCE1ED937D3B434829D2E3CAE287C7F1 +:10811000C2FABE97847EC399AD8C5FB338BD3F323F +:10812000B50F53C37786E3E9A4A073277E83F1607C +:10813000FF443B17D7671F7139F868B5560E863A6A +:10814000B4F2B474AB16DE05B55A780B1D7636DE84 +:10815000EABA18D02BC704DF54CA68778E0526A266 +:108160007EDF01FA5D85E742C7F5C9DB5C29B40C07 +:10817000E84F9A62ECC08F4E202FD8CB738C8E5F65 +:108180005918BF1B120DDDFA579D7AF99C96EEE047 +:1081900047A8F1B8CDEED1F49F57A5858B7468FB45 +:1081A0001F3530390E35C4A2DF67373138EDCD3198 +:1081B000F610E3E702B0839DF3EBFACF55C29AF9CC +:1081C00017029FB87A9EBF373FEA7AFDC88F896F42 +:1081D00005DACDB258C4EBC76BE4C8045AFF635943 +:1081E0006C93ECEDCEAF1CB902E8FB5559AC01E441 +:1081F000B02738FE5FF9971FAF19897643DFFEC1BC +:108200003ECADFC76BAE8D5FBDDFDF933D79FC3AC1 +:10821000F97B0BF7038F7E2DA39D3B1660FABFD32E +:108220006E70BF46F8318B6E1DFA7742597D3797D5 +:10823000D7CAADD3D0EF3C6A086C8C037A1E31D814 +:10824000811F0B4EB0F8A392FB57029E7F2668E178 +:1082500013F6A737FBA9979FE3E50FE4C3BCC7CB91 +:10826000676BFCDE5997D34924295A2FAF90FCE065 +:108270003774CAAB554BF736BB09E76FE3FE6C6743 +:10828000BFCB59388EB06F955BEFDE944AF1515EEB +:10829000FB68AA7A3DDB1CCCAE3DE360EBE8F487DB +:1082A00015E60FBBEADAEF0BD0FE5FDA0209892A86 +:1082B0003AFD56A7EF8E73FA423BE0BF722560ECA1 +:1082C0008E0F67CD9475FA89F9697A7D24DA9F74E7 +:1082D00068F59298478FCFBECEF775825DF8DB6761 +:1082E0000828D68B5AFFB427FEED9C57D75E3FEF88 +:1082F000070EAD1ED4CFDFCCFD7FC1AFFA791213CC +:10830000195E0BB632BA1FBDF546E4C363D3DF1C5A +:108310000774FB78CDDF8ECF063DB3E4D038003F45 +:1083200031310EDB7F4C979402FC1E94D02F9CBD04 +:1083300075E1A15494CBBF617C7DF45836F2B13D18 +:1083400091FB85269FC60EEAE5F3618093B67B1EFE +:10835000F0E502E85B3203717DC7D7073DE0EB7AB9 +:10836000EDC6C362FE2B2387813D788CD38F8E9E12 +:1083700009F59EE27951528CB0F872A2AD5E4A00C6 +:10838000FF31701FE8858EF2387B334545B9D93F00 +:1083900015F4F8F12306C33A09A7453F703A617C0A +:1083A000E8BDC5FBE010FA7D7A40F683E84D8336E0 +:1083B00063295D8B6D21186FD4D1B257E2202EABAB +:1083C000307B40EF974F087C2643DC393BD6B39E89 +:1083D000B62D68EBB7CE49BFCF2895EC30E4416AA3 +:1083E000D7DBE9FA5F86CAB7080390E2E698A88768 +:1083F0006EDD3C897E1FE26A35D8688F671EBB75CB +:10840000B3858EBB715D200542E5398F0DDD6CB9FA +:108410008910B7DBDF36C147C8E6C7864DB164D2E5 +:10842000753D25FA0FDFECCF20E40D43D02BD1EFC3 +:10843000BB1E2B99A250781569529E81F66F4D7C18 +:108440001CFBCF9AB5E2CE9FD1EFC71F5B3645A18B +:10845000E317CC17FD574E99A85078C789FABD5637 +:10846000A83B63031E431E21531F1B304581F91295 +:10847000FD77135ABFF4D8001CAF3048DBA6C122E9 +:10848000BE87FDC57853E8F710ADA7AE9E48FE4203 +:108490004955D81E9240DFBD57543B51A1F3672781 +:1084A000ADD99C3B989031A545B184D68724FD7009 +:1084B0008A19E034F9F33C74FCDCA42D9B617D0542 +:1084C000F34343E0BB29F45F9B4BE9F7862B4D0157 +:1084D00090DF6725A6F7AC96DA8881FE336B75804E +:1084E00004D17F6B647C92E11B887C22EA39B41E44 +:1084F000A7AAA7B07AEB7A7247A01B79FC2889E972 +:108500009FD698EEBFD77179A2EB45794D3841FCE3 +:10851000AFD2F2500C69B5507B739B998C2AA47131 +:108520007175A28DF32D9FD7C2E012FD48E8B644C5 +:10853000909332C683F87D3A856B1DD707D93E6E7E +:108540000748449901222F1B101E972CDD318DFE08 +:10855000EE8E21C19DB4742511AC9711E2DF698BB9 +:108560008EFB5B3E6C4976603BF07F49726A5E9D94 +:10857000373A0E857703C02BF249146E05E076C9B1 +:10858000D3F3EECE55C19DCBE06E4D64F8A0D3BCC5 +:10859000027E4F6BDB907E0D14D431895A792E68A0 +:1085A000CB3712DAEEB7495C6E3DACBF6B2241FBB4 +:1085B000DCF1036B18E4905882BE802ACFF238C7F2 +:1085C0006BF5E5C1243C32FA7BB5123181FEA8BEC1 +:1085D0009C8BBFBBEABAA78BC84F565F7690D0483A +:1085E000F5EF6C7DD1719CF8BD277828C0A8BF56E7 +:1085F000393802F9B8AB098BFF56C5F99313AFE1CF +:10860000F7545F967A805FC1DFBD3750DB0D78A4E9 +:10861000BF93DC287CC4E341FBB6CACEF4D0AA9D4C +:1086200045C944CDD70AA78389AD1FF06C50D9E75F +:108630003739DFCC10FC45ED3AE8B9C569B9181FE8 +:10864000B6FECFC4A1D370BCF58CBF15163F15285C +:108650004C1F16B425DA4352942F043F087AB626ED +:10866000D61621BEA649F6666FD775BF23EC588093 +:10867000F22D6D9F3C3F282F54C127F85E2F2754C1 +:10868000E3317D4FF97F01C825C47500BF8FCAC390 +:1086900030351D19DC37421F17F201A35FAA2D0CDC +:1086A000F008FC74E587F45EF8210BBF17B41D30A9 +:1086B000C13AAB399CC92722F14373D93A96D3F218 +:1086C0000024A3E8BC1312997D6A6D9938F2463AEA +:1086D0007FEBE33201F62910FA939CFA75717FDA89 +:1086E000AFB34EF5BD07F1CDF525750F2CD1F63F93 +:1086F0004B3A35658312C58F138D7C14DE295C2EB1 +:10870000A6C2BA4723FE4296448DDC92C2FCA87EE4 +:1087100011722AC613E3242531FAD879D9A97FB872 +:10872000DDA3FA06F380E4212BFACFDFBCDE917AD9 +:10873000D13BD3B8DE61BF1FA26E2EB473BB7D03E5 +:10874000258A932387270E003FFE9E14D9739ADA59 +:108750009599527023207EC6095F25E9A7F2BF884C +:10876000C563A3FEC4EDB4F1553AEFCCB698904C76 +:1087700049372360F5D8547ED9178D12F2D93D14AC +:1087800025ABF3BBF2C73D29269CE74869764250EA +:108790000D17C7FF6D90BF95BBCAA7A853B82B0D87 +:1087A000D9AAEF3666771E8FF70F4BA2F525061272 +:1087B000443E9FE4D2F833D312B5F186F0675C09EA +:1087C000FE51D04FDFBE27FFC7056125CA2FCB075B +:1087D00025D7C785015FC92D84CB67C4500D74941C +:1087E0004948A2EB7F3B2993F989E5F4E388E878CF +:1087F00047A54086047192CBEC833C05A50BAEBF28 +:1088000044BE7BBFD10974967C7574D699490E6EAF +:10881000EF3A46C13A5DB18C0F0F5989C50AE3D3CF +:1088200012E9CEF5D21FB2063783FD10FAAC530F12 +:108830005E6171B5F87E489A9661A7F543AE4179BD +:1088400075128E47AC2AFEA7E31280E70F5FDF7B2D +:108850007A02A587B11F1BCF49E79FAE928331A54E +:108860006CDD8B38FF2F4A8A6579F95836DE212F67 +:1088700065139867005D0F9587B76282B9B508D711 +:108880000F183D29DF83BE7473BAB94DACBECFC992 +:10889000C6BBC4C75DC5EBEE78D64E4F9FDF3BF934 +:1088A000FE98C4F4580369D6FB3504F8999000018A +:1088B0007E6A28A2EBE9669C1AF0535C68C770BD1B +:1088C0005DED0AD37F1BA470633695830D469687B2 +:1088D0007FD81EB62776D3DE144BE3C6DCA81D1264 +:1088E000FEFB572DD312402F3E91C4E036F1F852D3 +:1088F000C0B181E72FE22FC762FCD9C8FD2725E769 +:1089000034D25929A443D2AE461208D9557436DA66 +:108910000D1ABF3FFE723CF6AFBE3C928493AEA5EB +:10892000AF0BF03B49F168E28CAF4ECE4638F5EB29 +:10893000D2E32DC2E115757F8E3289A8E02A22F696 +:108940000D304F11D1C6253DF91DBB9284DF226B3E +:10895000EC4C145E93E6F7088DB742EAF9CFB1F913 +:10896000A3F3C692906ADEFB93FC3F4DC2786C9CE9 +:10897000FDCC505A507EBF2AA3FD60768A964D36B4 +:1089800066CF412F8B7805E4D84EE395A2A4A23799 +:10899000406F74DA37DE4FE8918413517F4EA27D29 +:1089A0008BB81D2FE2F6A6D3EF53987F2AE0FE92F4 +:1089B000EB29A16F4A2D6F8E38AD5A67519207BFD0 +:1089C0001F9618DF51839E09FD29BF86D4765B8FE1 +:1089D000CFE35C8EAA2F5B357C10C5A70D7FFFA669 +:1089E000FCC08271417918E44B4B25328016632616 +:1089F000313D21FA9D4F627EFC79AE2F843E993E37 +:108A00005FDBEE3368E78232B64F765A6D27A4EC0F +:108A1000A87EAAE1F4F35E3862F2D076839CCCEFB4 +:108A200030BAFC5F021D9598F8E184D2B5E99F1336 +:108A30003DEB28DC1DBF33FA9A61B8DD8C9E45738F +:108A400056D529F477638B64876D27019F6DF5CE2A +:108A5000114B001F825F9D6C1DD5CE88A93F9D37AD +:108A6000AD9ACD9FD1B25F5254729351C5DA599CE1 +:108A7000469E1708AF2B1905BFFB95064A621BFCE3 +:108A80004EC78B71327E496B9130AF9D564B174E5E +:108A9000E99BE663E3DA7C6169716E747DF5866952 +:108AA000B9A0D7EBDDB13ED0EBB7B882894E80EBF1 +:108AB0006424026EF898936D0AC475CB5CFE24A7FB +:108AC0002BBA3E8F6C4F837DD3D8930CAEC6442D0A +:108AD0001F10F220E7CB66A61F657218FC2994715F +:108AE0003A9F7B7D0EDA15D1DE9DC8F5BA9B0477DF +:108AF000A19F43EA09D289E03ADCEB07F2FD164672 +:108B0000C7A85F33381FFC9AEC87220AE4515FDF65 +:108B1000C6F611F4FC98C7F53D5D47AE7A1DBDD988 +:108B20006FD1CED8431C2AF83C96F34DD11CE75C9C +:108B3000585FF5869FC79A25A04393148B76E06112 +:108B40006C27F04EE1B809E0107CA424EE90D2E945 +:108B50007AEEBD8BD865D2337CD5AB7F3A62895A29 +:108B60001E379810FF4D26EDBEB8F0D3CB9DCC3EFE +:108B70003DE30A94C17C35BB1F35013DEFDA7ECA67 +:108B800014EC462F77F6EF237EA42AE6FF575758BA +:108B9000C2B0DEA2390AD26BF90653D84CE952FDB5 +:108BA000EACE8801FCD935C407725DDDB2F3AD347D +:108BB0008A9FF46AFF68C88BB92993B5E546ED44EE +:108BC0005A754402BB9BD6B2B01AF93725D607FCBA +:108BD0000B7E28F807178B6C2189FA45178DA11C8D +:108BE0000FFD7ED11BE3837D8BB7AC4CCE057EDFC2 +:108BF000DE39F9B04445366E973902E532577025B3 +:108C0000ACBF619DA708E8D35042ECC037D4EFB8A1 +:108C100007EA25753602FCDFD7750B3D217E1FB3B1 +:108C200086C94113E809E47B920FFED766671CD31F +:108C30002F06A677DE323238150EE7A524FFF7910E +:108C40001F410853A3EBD7CFABE29B0D209F7D873D +:108C5000B3C504FBA6CBB9FE289AB35DFA8B8AEEA6 +:108C60003F74B2FDDEB4579B240FF2EFF675254E2C +:108C70006C4FCC1EF89DE53F96D3EF77AAF486584B +:108C80004737FAE32980CF76B2ED20D31F11E437BE +:108C900001AFA0A3A0D78B4E0F3B1742CD33FE6E82 +:108CA000A274A5E3BDD52F06C713F2AC97BF173941 +:108CB0005FA7556C9720FE063F33A0824FB433BAAE +:108CC0008A5F76221EDA100F2B2A14A49B80E7C03D +:108CD000ECDB9700FD573853F3805F77F3711FFF8C +:108CE000C5BBC88F2B1A25B6DFDCF8AEA91CEC4536 +:108CF000E82519FCB2A9CC35205B7EF62EDA87A9CF +:108D0000AD2CDE5ED1BA53596C8BF2A9F7C281DB70 +:108D1000818F57B498895502FA317BACE74FAA3F4F +:108D2000506E48C884711FC403A82F49D00BF65A4F +:108D3000E8D74BDCDF24B6C02803E851F7B03CD0BD +:108D40008BBF711AB87E63E397C4F80E58403FE6B4 +:108D5000B3B840D8B1DF3BD9773A7E04F52BF57232 +:108D6000C10E8AF1BBDA85A1F94087BF737F9AD221 +:108D7000F73DC0A7DE3E88F1BDCF4E279E3815DDFA +:108D800000DF2A7EFBC469C2713E712ACC3F2D668A +:108D900078524C6CFDCA7A4B18F21F6F3B4A197E11 +:108DA000122D889F438645D540A743698CCFEA0D95 +:108DB000EB736A995D3A03F01C981D4F981E627A16 +:108DC000E7F19F32FB571DB261BC551D9C8974268B +:108DD0004EAB0FF60D49F0A0A93C2ECA077ABA7A1D +:108DE00076ED37C13AA6B630FE8FE28BD91FC1AF00 +:108DF000549F21BD2F25897C7DD00BF814F17192F1 +:108E0000A52362245DE53309E2636ADB16F0F8B856 +:108E1000601C8B97E1BFEEE26231AFE82FE2E2E542 +:108E2000AB7F930AE5B2945F6329E440C45FA27DFF +:108E3000828BD9BFCBDC0EBA5D4CEE968F6A413E79 +:108E40005F7EBA16E5C356CAF484EDA456BF89F80E +:108E50008B908778BCD67233E4DB4B9E93EC75DD48 +:108E6000AC4F944B619F09F4FB15EA2DD338A15AFE +:108E7000B78F36D0C5F8F92CEC8FA21DA845FFF8A6 +:108E8000E23609F75FFB3A1E891C93807ECB791C82 +:108E900072F1D589633F817D991D0978CEE5D3575D +:108EA000677CF7130AEFC5ED137C605F9D7501E4E5 +:108EB000870E97D507FE2F5583A5107FAF6B7933AB +:108EC0001EF249E75F19910FFAEF260EDF859FCA60 +:108ED000AB011FEB7FF4DA78F8BE3C2C25815F777D +:108EE00071C7735F833DABDABE124E9890BA577E5E +:108EF00065827D0643B889FDBE2301FDBFF3CF3FE8 +:108F00003A1EF05CD75287DF2F3CDF84F5033F7AAF +:108F10006DDFFF80BF1088F741BB0B3F7DF4FBFF87 +:108F2000037C3B33DE07EBA80E2A6C5F50F0AB5E90 +:108F3000FFECDC8F7227F8632AF87DC0E7154C8FB1 +:108F400008FE3C52C4F64DA617B3FD982353AC154A +:108F5000E8E772B9AB99EB6802B93350FCA5D0FED3 +:108F600033CB1C4DB05FBE94AFBF3A97F1433DE5A4 +:108F700016C823C4E6464CE9B4DDECF93BC7033E12 +:108F8000EB6348A115F9149298D17D9C198D6FFF60 +:108F9000B744E9388CAAB33394BFE968DBAF52FF1A +:108FA000F73D23CB17D473FF7CF6FC5312DB3F5005 +:108FB000EC67447E48BE967D53703CD1AED35FE3F0 +:108FC00078A8E7F9113A3EDA9B82553CEF292DAAA1 +:108FD00083FDE643F745C601DFBE7EEE9E98EA5C60 +:108FE000357FB3FE69AD4CEED3AADA6E8675DE929C +:108FF000B370244CB382EFA738218F06F62664D3D2 +:10900000E8B7B52E9E77B013E7B7203FA310279C93 +:10901000CF2B21E49811F1F3028EEF3133BFC9F366 +:10902000ABD92FC0FED71663307534D89B7A6EA7A4 +:10903000B63378697F3BEC9FD3F1ECDFCAC771DAB6 +:109040008C89D83FC4FA4FDECEF6CFC222EF93050B +:10905000760AC61B6503BB12AA40BBE231F9801F2A +:109060002E409354C4D7F005C3A2EBD6E753408FEC +:10907000C13EF433AEA2ADAED1D152E45FF4F4F808 +:1090800010BED375A7B8FDD88EEC48D2D8E19EFCAF +:109090009303B33F37B5D3791F7FE314EAA11AE0F6 +:1090A00077983F785A636F053F6DD9730AF97DFA57 +:1090B0006E469F9ADD5E23C4339FAEF593BF500783 +:1090C000B386F3F716A9BD12CF89ECB1DA215FF6AA +:1090D00039E7FFE5A5A7CE80DEEAB73BD50371F6F9 +:1090E000E77B981C1C3218109F879A8736817DA1D8 +:1090F0007E2DB2724DADA7D98CF8657E7ED19C25B0 +:109100008F42DCB5A28AF8403FD4B44ECBF0A05DCC +:1091100031237E6B76BF8BFC22FC5B6A0F97C0B855 +:109120000E6A77AC10874D0AB4223D9C71D8DE31AF +:1091300029F86809F2575E01F0D781D9FB365960EA +:10914000DE49C40EE36FC9F4EF49C7754804CE4742 +:109150006C3136162BB4FF96128F9D6290E26B7BBA +:109160000AD8799263E2766D09FACD3529F37C103D +:109170005F75D1177BD6A17F55E3894178A6EE961E +:10918000EE617E878D30F825E4CBA9E11BC320FF7B +:109190009F71BC09FC7D6E6CBB1DF0F2F9CF2803FA +:1091A000D2EF5327313E754C6A413DF3F61EEAD7A4 +:1091B0000C8FF263DCCFA97F43EB898A5DF2A19C1F +:1091C000CD30ABE9D9686476CAC1ED4E7629A3EB00 +:1091D000275C8E3EE1FAE7139749BB8F670F0D07B7 +:1091E0003BFB19A73B0E07FA9F8FBB624904E5A81A +:1091F000FA55E69739CDFEBC7B557CEB9CC8ECA4B8 +:10920000C8A7437E1DF3EA10BF38216EF634C3BEF3 +:1092100032A51FD2F716E7A07CC097C5CDE04ACB98 +:109220009130CEA3FE1AE2CD3D67BB5299CBF2F14D +:10923000DDC5893637F3CF5C49815190C77525C7A5 +:10924000A11FE3928B0C56B0437992AFD983FB7E7A +:1092500018D776B8527DCD1AB966FEDE39771CA3D1 +:109260006BF80F0AECCBA4B83DDDFA735DE364AB99 +:109270000FE29DB2C6D070882FC43E805877785DCB +:109280004C855A8F25BA999F101E4C2A402F50BFEB +:10929000DD8679633B9D07E2F1E61B9F67F1781D50 +:1092A000E2E3FFB898FF5342D7077E992B3BB08A81 +:1092B000D9D7385C872B9B2C827EAEBA14A9CEAB53 +:1092C000C6B31DCF6D3DC3E92CFCF11A2A2FE8C7A8 +:1092D000BDC1F8B106FC386FCFFA21CADF4C3F4C54 +:1092E000DDCDE85EB39BD93F119F83DE83F385A07C +:1092F00027BC23A2725D636A1F08FC29F8BC667C48 +:10930000FB40C04F4FFAA124368C7257327420E6CE +:109310001FC4389F1B3DB83FF7398D2FD18FE5F221 +:1093200010F73A930341177D9C037041BC28F4F376 +:109330002DAE40B11BE2754364139C1310FAB4E6E2 +:10934000F5CD9A7B007A7D6A5198DEB28463C3754D +:109350002AFE81BDAEB87C2CF13C56EC6A8E8F2B78 +:1093600012E6871B728EFDB801ED7F4B04F8CC9A94 +:10937000D17613E8AF996E96777B5662F415FBFCB5 +:109380006E884D406F34C7E2795B91B7D1C3359990 +:10939000F391C0BF8833202F0FED6BDD8CEE8B79FE +:1093A000BBEF72F912700BBEF61882A7203FDF9355 +:1093B000FD11FDBEA93C929847D8C1289E199DC5B4 +:1093C000BE02AC675A6ECFED1AF7333D23F84E7CE0 +:1093D000DFCCF97D02E55D287F22F2B3150ACBFBD5 +:1093E0005B89E63C96184FD41F597BED73F8F6AFB6 +:1093F00065B6AF45DD0C180FF30D20BEC5A53E5870 +:10940000DFA31C5FFA7E0A51BE6C177E9557050FCD +:10941000F7C9E078D2F86EF6E93AE71DA7DD4FE824 +:10942000F4CB74E3F40477BD6E5FA03E7B1F813CF8 +:1094300055AC259ECBEF15F4FB3777DE1B08F9A65C +:10944000A1BE63F9AEDEE6D1C36BF5740F6F5FE9C1 +:10945000516FD85905FCBC8FC34D1EEFDB3A7FC25C +:10946000E9F7309CFB82F35AF315CD3E8ACDE759DC +:1094700007F9E3117B3D79E85FF3739B71E3C95F03 +:1094800065CAAFF1858D39704FC415D0C29F5CA1FC +:109490003DFF981A4CD4D4D3ABD234ED336BFB6977 +:1094A000BEDFB07A88E6BB3794AFA967D77F4BD3CE +:1094B0007E4063B1A63E68EB2D9AF683C3D335F5A3 +:1094C00086752D15200F4377CCD5F41BA1B41BF264 +:1094D000E8EFC35A1669E9A1C3E704E06BA08BA5C6 +:1094E0007DA45ADEFEE6EE87741BB15B8B8F84424F +:1094F000DD79D0EBE48F099775FCA1EB2FE42B9677 +:1095000030FE88BD52FF57B83713AB97233EEE7835 +:109510000B939F2EE3F62027EB636F5780FFF741F5 +:1095200045E54FBFA793FF928A04B69F74797A2FBF +:109530007E3793935966B6CF388BEF378AEF2393F4 +:10954000995E189ACCF34C7DE4E7139CFF8FF4C42A +:10955000CFD4CD7583BD2825188FDB4BD7FD15F2F1 +:109560003A739408C9A3F47C9CAF670BEFBF75AD49 +:109570001DC77B6A6D0A96DBD67AF0F767D7E6607F +:10958000195EEBC3DF9BD71662B99DFA8150BEB856 +:10959000B614CB1D6B03D8EEE5B51558BEBA36C868 +:1095A000E4534FBFCB89686F6711AD5E9B5D21F7B8 +:1095B000893EB3C9436D727C577C74E92FCFBFE6F7 +:1095C00039EDD527F34A0FAAF8B43839CE89FB8C88 +:1095D00063C8188C6F7BE9FF8FB5BED283037AE72F +:1095E0006F3DFF902BF70E509FD711E52C60E834AC +:1095F000EA973FF9C483215B144F3DF355F7F8F127 +:109600005B3E4F83A07F38D81F55FFFD3AFEF52BF8 +:10961000099A385A9411CE87459C5F8B74FCDA9472 +:10962000CCFC8675FF9FF2EB016B1CFAE5078C9E64 +:109630000C978AFE07ACB1F83BC9219E99947ED461 +:109640008BB37B29FFFE2199ED034A109960FEB888 +:10965000BF1DF324D6EBCCA7E8F02851BFD24BC7EF +:109660002BA2E5F8441C3FA2C0F83E4354BFE27968 +:10967000899828DFCB5DF9818E1332813FB6A87DB2 +:109680002EF87367923D1A7D5BACC8D7D4D7C5203E +:109690006FDDE405BBF4BB4E796B01798BFDCFC95F +:1096A0009BE0777225BBBFFABCA5288BB8BC2D7D8B +:1096B00032F2602837CAEFC5DCDE89761F737EFF81 +:1096C0003899C59307B89F02FC91DF8DBFF27EB237 +:1096D000D6CFBB5E7C1711A61709694F033D71BD3C +:1096E000FDA9E428D0AFC8121F8A1D7EFDFD7BC2F4 +:1096F00067977EBB9D7DCA37514D23819C5772E889 +:109700002A2DB610F013D96ABCD8AEE2E3F2F8C045 +:1097100017C914CEDD46B21BF627A899F7D8DDC8C5 +:10972000F78857FA5FC042EB79BC3E2624794C9407 +:109730006FCCB4B21AE4A3FDADFF067D91C7CB3167 +:10974000BC84746B0AC84D6E1C9E77F70934F1BC5B +:109750006981A84E825C8338BA08E3126955228475 +:10976000318D04F6DD1B245FBD4CE79393BD75007E +:10977000D4C8D22299E0565E2396E3485B1D6CED77 +:109780008D271D32B4BFB134540770DE40AED8917E +:10979000CF935F5C7115CEEF4072B20F785B6D6155 +:1097A000FBD4FFB0B232544CD8BDB98FAC61889BAA +:1097B000A692606A0A6DF71DD9BF00E6FF87C1EE69 +:1097C000DA8FC852FEDC8E795F09F541B16D54C560 +:1097D0009D28C7EC77C4B737DA0EEB72D7FA131BA4 +:1097E000591EA26E33E3F7BA75AC3E3285F1770E9F +:1097F0002F6F4A61726125A110C17129E5DC883F94 +:1098000046B71C8AF7024607C4ABED30D22586B4B2 +:10981000205E37976F096EC42FF3F19C8F14099067 +:10982000ABB16AFEE9DB78164BA3DF42F928A6A2AA +:1098300005F77F7A1A4FE1F454669AF07CE4B3524C +:109840007022E091B449C81F317C5C23A92592574E +:109850000D479FE952D617BA188B7D6D7ECA82E5F7 +:1098600031129E63B95EFADC094C3D3ACACAFB521A +:109870004913E413AA9C2405CE319A6C1694B30DB7 +:10988000999E107C370D24788F982806CD3AC5799B +:109890003BC17F141F4B007E53583A05F831A5D4C5 +:1098A000623C4894F67468B74F627CA0E7DB9A1478 +:1098B00089C393C1F89D5CDBFEEDFCB6E34327084A +:1098C00063E82765BF2DA4F522C73CA79DCA6DEAB2 +:1098D000B832B8C7B1F35D82C2E8489DF903D0CF72 +:1098E0003BCB1D4FBB68FB07D23E7BC808DF174848 +:1098F000F8DD9246BF53FEFCB088B4401EE92977DC +:10990000704D0A8563EE6F3D87E0AAE9CEB7966594 +:10991000815D714EF4B5E37D9579660FEC3FB540FE +:109920001E1318E50A8587F2D3F300B0CCEA13685A +:109930007D8E400FFFBE1DFE4DF9267B89779D135E +:10994000F290DB243BF829376CA37E0BAD9FFD0121 +:109950001909F9E39EF4D618510F4978EFFE26DD78 +:1099600077A1D7FA2FB9FBE3FF0DE3B7C9787E43A0 +:10997000AA60FB39637879132FF378396709DB7FA5 +:10998000EA5F31260C79BD33464F9D0DF87118C141 +:10999000FBA64461FCF95EA6230C7998B312A98357 +:1099A0003C5A6833C1FB7F2057B0DFE95B42693D19 +:1099B0000A5C464B18F2F447D7B68CD86054E94F8E +:1099C0004A1B7F014BEB30B873310E1B47A2FFC11E +:1099D0003A4AA2EB423EBB99D72757B3BC9CD94F1A +:1099E000F52AD8379D3EB692708A05CF0D7BF1BC23 +:1099F000883C99D801DEACD20835B554EFF88B50CD +:109A0000AF8E26C137DB6839D6BF13EB8596701D44 +:109A10002C7102CC970DF6D3A3001D27520F17EA25 +:109A2000A5A411CB5B480B9665A40DCB5B490796AB +:109A300001623742F94E8A97C78B54CFF7C37D39FD +:109A4000CC83E66F3563BE747A69D0E4E9C63FA97A +:109A500014F70849300BF3C04A306B96CADF38332D +:109A600067F6027847C363D09E8B6DE37AF3032ECB +:109A7000375B24AE475688F73882FF7527ADCF2B6A +:109A80001DE483FBDDF43BE68143732C98FFDB622E +:109A9000F46482FF61854764206F57BDF33B241E49 +:109AA000F61997A682BC566ED8940971406519BF05 +:109AB0004FA38432CB55727E7621834B9C7710BFA7 +:109AC000FF85C363853D2BD827A6F0E33EA1C8E7F9 +:109AD000CD75A09E29A18E039C5BFF82AF23CCF5A0 +:109AE00082909F2AC1074AC89446FBCDF2797D70C7 +:109AF0006E6E6E98E5894B1412017FB913FE8AA62B +:109B0000FB08E58FB955FB31AF1F3DA7C4F6A78B06 +:109B1000E6B42E80F92B97988919F78B1AFF04F277 +:109B20003CBBCAEC817AE57C9657251596F000A8D7 +:109B30006FF56E04399DBDC6EF83BC2A9D0FF3B14E +:109B4000375BD83EA585CE0FFB7A93ABF8B990AAC8 +:109B500007DA803F693B3FF8CB37D3F60A2D33084D +:109B60003B77171362E7986226B1734C1E73ED21A1 +:109B700078B7C4B392F84274DAD9DB9A2476FE98A7 +:109B8000A03FD59BBFF3CC03571C186F825F7003B7 +:109B9000FC1A62F9E4D5B207CE9312C58EE3CCE588 +:109BA000F744EBABEA301FFE55055D1C9D7F56A3C5 +:109BB00097DD5B38C8E47C56455E3BE4A92CA5667E +:109BC0008FCC728F21C82B5B4829CA7D1E61F98F0B +:109BD0003BE0FC037ED7C60D96D526362F8968E07C +:109BE000077D06F6B6273FACA7F509BD01FAA5A388 +:109BF0001B79974ADF66FE1A2F41FE416EF32D3E18 +:109C000039CE00AC1640F906BCB0FB496B985DB18B +:109C1000BE28A9EDB9C519BA1D8EE29C3DD87FA317 +:109C20000DD1D648D47184A53870A7FA1CF9E6A2E4 +:109C3000C002F57E51512AE3F7625E92DF86B26080 +:109C40003E793CE3F73FFE8EE0FB30E77E47F109CB +:109C5000F22759987CF682975ED7BF84EB715E46F7 +:109C6000FD4C4F1DD0B73C95E5D746954E9361FF0F +:109C700068E43323D3BF47BAD2A727FCF784AFAB3E +:109C80006EFFEDA968A7FD86BEF8E52572C6BC6A21 +:109C9000BAEE2FE69B71FF55D8CD7C2016C8751BF8 +:109CA0000953D907FB817625B59EE0BB3DAE009CEC +:109CB00085E7E3009B575888A2C993DA35F5F4AAE3 +:109CC000144DFBCC5A8FE6FB0DAB7334DFBD219FE7 +:109CD000A69E5D5FA8693FA0D1AFA90FDA5AAA6915 +:109CE0003F381CD0D487EEA8D0B4FF822E2942D7AB +:109CF00033EAB8EC0B017D43FEB6DC82A81D1FD60B +:109D000012D4F41FD3BEB00CF4D788DD559A71C8B5 +:109D100049EAB7D17A2DFD1FA38B4F063DE2AB92E6 +:109D2000C8535E4021FB8EED69DD7772CA79D0E3BE +:109D3000732B8C517F0F7A918730CFE9D3F989FA51 +:109D4000B87AE9E1D0211B85AFEA70E321908767FB +:109D500052B579AD12D986EBFAE2988CE75FAA800A +:109D6000439D513A7E0103C1BAF7133C17A65F77B2 +:109D7000671C2E6F33E27B2B741D70B4DA9CA2A596 +:109D8000B7D5A3A5776C8E96DE713E2DBD130AB5AF +:109D9000F476F873BAC56F52A996EE02BF85F47FC8 +:109DA00080DF6F1A9F8752F5798A71A867BFDACA78 +:109DB000F56C573D30D35210D50354A586E13E943F +:109DC000C05B17BD6063F14CA75ED8CAF5C256BD33 +:109DD0005EF0BF990A2E4AD08B71E5FB0BC6A483B7 +:109DE0009E4B237BC5FD88E055D4DF2121E71FA6CC +:109DF000BA60DFD1D71E023BB1CD8CFEE4CE430367 +:109E0000311E383280DC8461C51509E76F30317846 +:109E10004FA7DAB0FFB352E034F437E706E0DA06D2 +:109E2000397B13E38BF7411FD2C5FE11E274D89C36 +:109E3000D2E911A2D3837A7F58E89931A177316EA4 +:109E4000BE5EBBD15BDC9E379FD913A15FC7F03AE2 +:109E5000591442FF5ED899BAC2A017EE1FE45BFC0A +:109E60003231A8E3F876B43B134808F5F08DA5BE6F +:109E7000A75711F0ABDE4F07BFAA4B3C1FC5B73544 +:109E8000CDA5D9E7D5E055BFCFEB48EBC4B3234D03 +:109E9000B5CFBBCBEA43FE3A3E87C529A3DEED5FD3 +:109EA00067A3FDDC7779D18FD9E5F0BD09F5E32B08 +:109EB00058DC38FA985F86F355D9B55E3C67B7CB66 +:109EC0001B9808F5E3F7B1EF05278278FEAAFF6A31 +:109ED000F63D7F7DED9B708FBFFCFBECFB1B9F6D08 +:109EE000C2FB5FD4C8B1FE458D13A17E7C23FB3E2F +:109EF000E664B80EEA83EBF9FC52CB9BF160077F76 +:109F0000C0DE5FE812EFF0F86602A747177AF2B8F2 +:109F1000613C6F2FE29B09158C4E4B3A0237235B55 +:109F2000E9E8A5F7EB4B4810EB934908CB29248CC3 +:109F3000E55412C1EFDF26ED58BF0D42795A9F4616 +:109F40003C46A82F48CB413B3F8386C698AF28F4B8 +:109F500059F03DBDD3EF7C97C447F7CD857FD098AE +:109F6000185801FE83736200DF075990C6F2DED1F4 +:109F700052EC8387B27CF4FB397EDF2CBAFF5D8024 +:109F8000E736689387C0DF9D96C6CED54C26857888 +:109F90005E787221BB773719FC618A9FC8938A0368 +:109FA000CEE3E15B48DDC4CDD13C912E7FAC843063 +:109FB000FEC8973D434158EE4FCBFB01C4D1BB4097 +:109FC00010D308B92BEDC66F8732905FD1BFE9ADD2 +:109FD000DD317ECE6717DF079D19F01A903FF3B48D +:109FE000FED3FD7CFDA29C4C2A26C67D83EBCA5F76 +:109FF0001FC2F3DCE5CD66C2CEE790343887534903 +:10A000006A91AE6786858CEC3E2AD33BE59CEFCA0D +:10A01000393F9D6932231DCEDE2985219F53B9ED3D +:10A02000ED13C06F3DFA4DB90350DFCCE4FCF9FEEF +:10A03000A1CA8D4CAF737FEAC921F2D5A151B9A74E +:10A040007E6208DE2BFC7001D38BE0766BF4610F2F +:10A050007EA28BD7051CE92109ED445FF5A1538C45 +:10A06000CFF5619A18DF4F598FD6B3F857A99AE107 +:10A07000C1C5CBF46ABD5D09AE033948218D12D448 +:10A08000334907961E625FEFCA862B993E03D4338D +:10A090002CB5D3CA406F81FE83F56F3E304AADFFC9 +:10A0A0008C3CDF6CB450BB1A8F79363FE41194833B +:10A0B0009D79B69634F03BBFA13CDB9E340F6F5FB9 +:10A0C0003B869DBFAA1D01E569A3AD1EF3C7FA3CFF +:10A0D0004B97BC8C367F715323B71B8DC25E0453E4 +:10A0E00060DD70EC536337C6FA3C504E9002A85FB7 +:10A0F000662707DF8175DD4C6A33A0BDC1D22E8390 +:10A100009D68E0F78C1A068A389652154A3BCBB701 +:10A110008FE0347EAD90DD537E2DC782E7E637B900 +:10A120004D9B207F17BDCFC9FBF1FBA9C3F93B09AC +:10A130009B62383E1AE2301E7918E6A3FD6264CFB6 +:10A140004080EBCF064AD56C38F7EEC3BA49B6BBB0 +:10A15000D6B1FCE4A934C45BFB63D9B4FFB13D0ABA +:10A1600081B8FC357B478C83CEF3DADEE61DCD1457 +:10A170009E2F0F33F3FC30BCCB3502EE495E7C6C76 +:10A180002A6D3FA2CD88A67844A101F5E4A726F266 +:10A19000109CF7996E912D0AF53F3EBD9F9FBF51D0 +:10A1A0007C59EAF3378B3298BE3CD243FE3035B14E +:10A1B000C89D4EF17824B5FB7BBF24DDA0B987286C +:10A1C000DE45FA9B8B68CE89A426DE8AE388BAF145 +:10A1D000B28304D5F76AD319DF18950081FB90C6C6 +:10A1E000CB4EFC9E40FD57D8474870142A106F157F +:10A1F00013FB41BF8457C291CE5DDE5D18A7747416 +:10A20000FA8DFDC02E31BF13F3BB5ED87FD1FA9B10 +:10A210002388B6AECFE7CEC960F1A751F76EC39CD5 +:10A220000C0FFBBD135EF66E83B83FDEAAF8632108 +:10A230000FB4D8C0CF4FA5F8F17EE423E39C790D8D +:10A240002ABCCCE0F86BE5EF4CD8697B7CBF40B70B +:10A250008E0D547EBC946F27A74B9AF6426F2D103B +:10A26000F21372A07F339FCBCF2B19EC1EFC023B65 +:10A27000DB77F9F3E6CF30ADBFF0DD181320F18EB8 +:10A28000F9247E18ED177C22E9F77E0FF0A96F3FC5 +:10A290009CB7218F303FC25E9C53C0DE1B9884FB6D +:10A2A000A752281DF56C5FED4445D2422983C21B9D +:10A2B000131FF6D8E9383143CEE1B93D7F3AC17575 +:10A2C000C474BE7FD93E507D8EA522A948CA188D80 +:10A2D000E7622389707EF2976646DFC3C40F7ED69D +:10A2E000CA7D8331DFF58B8CE0D57457F49E2C3911 +:10A2F000D881F78227825F92DD0DFD6D5F1A808F16 +:10A30000F47C008083FDED8D1FC601DC14AEC5F129 +:10A31000DDD315FFA3F5891607BEC77937A7AF9818 +:10A32000F77AF9D399CDF4498724E1BB30BDC12731 +:10A33000CE1177D285F38B28059EF4F7F6AE7238EE +:10A34000AFA6B3FBBDBFC808205E2F65FE75A09108 +:10A35000C2B0D8C4DF87E865BD1BFECDF5F6950E0B +:10A36000733218FF2C8EE91B5C4FA6B37CE87F1A72 +:10A370002E4306E78FE17D83EB957F132E3FE9F8AF +:10A38000C891DD3B5C949E06904332A903DFFD58E3 +:10A390009CD837F8DABE01F812FB06DFAFC03E905A +:10A3A00008836F16F11953640E8CEA1E8DFEFE8C25 +:10A3B000B857334BA1B694DABB1813DB578B992EE1 +:10A3C000B1FCD0BF788FA6938E6E1271409CBECF29 +:10A3D000CCF28BBE8E816AFBF91EC7CF2F32FC1FD9 +:10A3E00002FC8B0772BD50AA6DF721970BD14EBCB2 +:10A3F000A34167E2E78EFB37B373C76CC9D60C0F76 +:10A40000BE97FB97744973EE58EC0B6E2AF02483C9 +:10A41000DFE0B7D82232B50B9B8654E5C03E883FBB +:10A42000E59D13EC7C35F557557412705C587BD85C +:10A43000DEDFD8331E96CBBB0A6ABBD94F697107E2 +:10A44000BF52DBEFE53B7E6DEFAFCAC70C23ED06D5 +:10A45000E6EF7718585E989FB749BE3EBC3F04E7C9 +:10A46000355CA0FF03A8FF85BDA879FD250FD82185 +:10A470006AEF09EC2F74C4C5A03DA81B5298A3DE57 +:10A48000FF49EEB4D7DAF72FA276FADF7BFF22EA94 +:10A49000BF482494D4DDF80AFE2EE8E2B7754F0FCA +:10A4A00071AE36B2B6C5727A00BC5B926385F2C0FB +:10A4B0005A9FF534A5CF3D4945E51978AE96DF4F53 +:10A4C00008ECB69CD6E46D239A7A6AF0B0E5B4261F +:10A4D0006FDBA6A98B73B446273B475B3CCA82E778 +:10A4E000FB336B4F68C6A937B0F7956E58DDAEE900 +:10A4F0005FECB7851C0990DF3DA769DFB08EF17175 +:10A50000767D87E677A3E227708E7540E365CD38C8 +:10A5100083B612ABBA3E386CB1AAFB0DDD61D7D45D +:10A5200087B5A468DA1BED399A7A113F17E4B7B002 +:10A53000F339132D799AEFF7244D2B07BD57447645 +:10A540006AE0E83C0FDECBF91A45D98CF948D8CB44 +:10A550001C97DFF55CF83D497E1C5FCFFFA107C665 +:10A56000F17D2416570B7E20A37C39F0BD27BEF861 +:10A57000BEDB7F078CF73C7FAF4412F79F738827C1 +:10A58000C0DE2BE9F65E4D4306B3EF9F9ABAFF5E3D +:10A59000C3BF1B75EF9844F996BD63F269B178FFAC +:10A5A00048FBEE9C68BF868FF330CF3FF4F6FE9CED +:10A5B000F172ACE6FDB9E87CF1F8FBA7FDAE3D5FBA +:10A5C000C375CF27F7B03ED335DF69795AE02FB195 +:10A5D000FBEF4F76E22F5523F74F431CA0895B32E8 +:10A5E000F0BB51F7DE8B3AAE81DF7B8B6B3ADFFF3E +:10A5F000FBC6E31982F05EAF7F4CC3F4FBE1DDB331 +:10A60000DEC63F96E11F928E76EA5FB3BB31606390 +:10A6100053719C08C8C12613BBC7483518E62744A8 +:10A620005C43F4714F0E3BF7B620E51DF407622042 +:10A630005740ED76CCF7ADB85F72876437015E6F37 +:10A64000B774FCE9690FFC7D85C89FFE17E63744A7 +:10A650005C132BC37E5C5FE1ECCCAFF0F71820DF1E +:10A660000D767BC4842178AFE61188D700067E3F43 +:10A67000E2110A432AD51F09061BDE7F4A30B1FAD0 +:10A6800008C8CFD0765F918B89B0967858FF58B8BC +:10A690005FC2F64112F62A17D4F8D6EF837CD9F6BA +:10A6A000B718B08F6733B4FB215F91B23F0C05BC84 +:10A6B000143A119FC3F74C4A56BF73D2B95F24F2C4 +:10A6C0003B3DE48BA3E761B47919918FB9E93AF383 +:10A6D000329DEF06E8F232BDE595AEBA834A26EE2A +:10A6E0008F6AF34AA603AC5D479315FD019167128B +:10A6F000EB8CC9E4729DEC8FC9A4E56719FE58285C +:10A700008F58595EE6C894C909B0B42F893F01E259 +:10A710005338DF9B9ED895FE9047D9A092FB238E9D +:10A72000EEF5440A9F6F762693B332B73F15E03EAD +:10A7300067627F07E35C0C2FE3993EEBDFD99EF95C +:10A740002D6379FD1CD777E71289E69D66D1EE4629 +:10A750005E9E5E6BB16C1810FDEE79D25C0B719D44 +:10A760002B9BDFC7F233FC5CDAC3FCF9258DA74CC9 +:10A7700070EFE9E6CCA2D90017B483752C51DA4DFD +:10A78000F0BEF6BDAE601EE0A7C643FCBB30BFD531 +:10A790006E9A41F17C89FB2B978C2C4F74C9CA4A65 +:10A7A00001CFCD99D36643BF4B37B59B80AE9DF5A6 +:10A7B000D1ED287737670670BE4B6375F56FB33AF6 +:10A7C000E1E733FC9CDFD05E76631FF5F650FF0EA9 +:10A7D000D94A13CF33EAF543469C467F2CD8FB6B0E +:10A7E000E4DBDB2D6413A49EEED89B6C82A0A22A2E +:10A7F0003E34D0AEC977FC6B7AE152661BAEABA19A +:10A80000A823EBA95198BFB037D37956EC6579EE00 +:10A8100015627DADDAF52DE6F4EFED1D3EBD7FD17D +:10A820009BFC4A7BF939355E927DBF4E87F1C6EDC0 +:10A83000FB5D12949BA45ACC3BABCED59E7883F2A1 +:10A840008B6CE84852CBADD8DF795B6AC77DB81A0C +:10A85000D288F4AE69A5EB8A87D21A81BC32D9AD11 +:10A860005DD75DEA7396B4DF32D262F24A104718C0 +:10A87000A3FBC2F4FFD5A40DC75BD1A2FD5D6F673A +:10A880007AE383F7B8FC09BEAAE278A812780F6BC6 +:10A89000E113EF1089773EA792E063C0BFD31C9607 +:10A8A000903C02F691FC0B00AE85C483745DA8B3A6 +:10A8B0009BE2DDA2C5B699C8478BEBF5F0FB4D00D6 +:10A8C000E79D8DD75E97E09F9F73F8576532FAAF8B +:10A8D00088293B8CB231AA0DF793287C2F82FC0883 +:10A8E000F888E2C7F7C845FBCF46B7BD18A16B9201 +:10A8F000E32659C03E5424055F85F69927DACF48F0 +:10A900007000D3E6C7FDA6CF779F7F0FCED5E1635A +:10A9100017636182F62D37D27F56ED96ED900FA822 +:10A92000DAFD26F26B4F78EBBC874E3A045C7BD4A1 +:10A9300078137089FCB35E7EC2992C2E9EE2F1EFF3 +:10A94000837EC67E2DF82E56C77DEC1EB853A69684 +:10A95000351136054312D846F1AE0BF1F92D90E7CB +:10A960009B6066EFCFFCC95E6C817BEE6E87210039 +:10A97000FA6F837D9103EE3B8B77BFDD9281BDF350 +:10A980004F1639E0FD900566FE4EE5FDB1916CCAAB +:10A99000AFBF32B1F7409DB1417CD7A0C321E3FCEA +:10A9A0004573BE1C09EF10A45DB1E5C379B69738B5 +:10A9B0007E05FC1326768C64EF7232BA39B3F9FB4C +:10A9C0004B2ED32678EF7003B533503ECFD709BA5C +:10A9D0009AED1F84EDF8061CDF77586561FC59631A +:10A9E000F53F520CF98677D9DFDDFAD2EE4F80FCC5 +:10A9F000BFFE1D49E1C7F6F44EF3DFB81EF94FBDA7 +:10AA00000329F2CF350E853813A2FDC43A6BF8FB4B +:10AA1000347A7A8BEF6F7C2D77CB0FF62C964FE93B +:10AA200029CE3167317B5303EF72ABEC710DB55F0B +:10AA300000670DBCCB7D0D3FFF798E971AF0CF9349 +:10AA4000D4BF33BA46C771E2F797F93A5F3E6C2834 +:10AA50006DEE065E5F165BCF10971280FD8FA11121 +:10AA6000F6FE654FEDC4BDEC9EE06A2D6EBF1DE0A5 +:10AA7000863C6D77F3F5CF62ED9E07FD301ADEC39D +:10AA80006CAF4479B0FB5F81F8FED29E415EF57BEE +:10AA900082F51CDF9F4F61F65ABCC359A0D44AC04F +:10AAA00057821E454981E740FEE01D5E96EF67FC38 +:10AAB0002CE8007CEC413F5C1BA709B837F0FD2374 +:10AAC000119FF5F6EE690DBC4B7E4DFC2BEC5D55F0 +:10AAD0000E4789BC06CF479C6F94F0BCDB7912AC63 +:10AAE000C3FA43129EF33C7F84F98D10594B05A0A5 +:10AAF0009F993C54BE30232102521F64E7A9176E70 +:10AB00005F8EE795A0BE86EA8D8529EC1ED7A20D43 +:10AB1000DAB866C9435A3D0DFBC610AF559100DA4D +:10AB2000A7CAC7B5EDAB08DB5FADD29D737273BB2F +:10AB3000A2F7DB1764717FBD80145CCF3DAB478803 +:10AB40007F4916CB03CAA05747F373CEE7B76727F1 +:10AB5000ABFF7ECEEB5E4973BFE80295EFFE03E0EC +:10AB6000EFFAD8B1FC4E96BF1AC679202BB8320B3B +:10AB7000FCB07739FE940EF61E6805B3676648424E +:10AB8000D27F9AE759D00F7F00DEFBA278349B99E1 +:10AB90009D147E812CDF2BC7D3EF633F59E2C07336 +:10ABA000FDAF4C2E85731BAE5762FD80EF86227F72 +:10ABB0001EE8D18669367CE7A1C9C0DE01B498D908 +:10ABC000BB44E197C71E80BDF2FE2D8F16C3168BC6 +:10ABD000BD3D42E23D908F5A87E760EAC7137CBFD4 +:10ABE0004DCC57D81ED8097065CDB4F900C406AF56 +:10ABF0003FCFAE1A9F70BB5FC371FEF4EE6C7C8FCB +:10AC0000F78BBD83B01C42183F887B043027F83394 +:10AC1000025F17D7D2BAEA5EE6901629628CC77730 +:10AC2000EDF0BC45F5FA887B1ED8A997143C8FE35C +:10AC3000FC556AB1273E0A9FE827ECD73C883F6164 +:10AC40002F87FB65E21EC33C2B09C5AACEDF5470DB +:10AC5000BE9DB397C5558BA8E6807E732D24DE403C +:10AC600071366F62CB68B437CB8D0EF03BAFFB3CD7 +:10AC70008A3817A56B7701EE5C80DDDB63C67DA6A5 +:10AC80009A17E3303FB8D2D081F3FF92EB9D9A81BF +:10AC90007CDFA03FF1C3F9A59A7D83701FCE0CEF36 +:10ACA0004BE5A37EB3005D0F813DA5EBBEEB0D2B05 +:10ACB000BE5BD7F97E8B9D84406E57EE4BC638D96C +:10ACC00099EDCFBB2717DE0B69CF42B9A7FA0C521B +:10ACD000DDEF65DD799B42F9AF268DFA2BB42E3D71 +:10ACE000770FABF76BAF34D0FAE0E71A6E83F3312E +:10ACF0003543DACF407DE4734FB07A7E7BA54CEBD1 +:10AD0000B73EF73CABC30134CA58F39E7BF936B863 +:10AD1000AF72C121FC87767CBFA7E6F54186061598 +:10AD2000DD27DFC0ECCF052B6B77C1CBDEED2639FD +:10AD3000ED9AF78687F276C2FF11EB14FD484AF7C9 +:10AD4000E37FC2EDDB5DFCDD9D09B1A4DECADE213F +:10AD50000FC1F9AD837B07215EDEC9E2F788ECED18 +:10AD600078CE468CA3E72F31EF32FE778C3E376AE0 +:10AD7000FFBEE517DC5ED27936E03CB9FE3C38EF29 +:10AD800056333D230FE846E9A5707A29EC7DE0268D +:10AD9000A4338CEB007FCFDE3112ECCAC12B19F843 +:10ADA000BEA2809BFA7536F4BF38FC57387FDC555D +:10ADB000C7F1456196116EB64F0BF4057B732BC737 +:10ADC000DBE41B185CD01EC7CB68C7BFAF70BDEB00 +:10ADD0008BBF81CDFB4DAF4F45173FEC371CDC3DA2 +:10ADE00018E9726B27DD1FD58C73619DAE5F21C1A1 +:10ADF0007DA89AC46CECF7007F775EBC030CFDBCA9 +:10AE0000C399FF08FC2FDE5323A1F1B8DF55CDF520 +:10AE100043E73B682DEC7E06E94FD707789D5E3609 +:10AE20008AAFCFCED76757BFEFDC2977C73AB26674 +:10AE3000AAFEDE8CF8BD13EF9DE3E5E6F3F134F2F4 +:10AE4000DBDD7840F79EE8E1FFA6E921E0D4E1B33D +:10AE500013CF3AF8043E416EB15FAE567E049C2398 +:10AE60007B925FEFBF381FDFCF5BF15D4A4738EF62 +:10AE7000EBD1F2F38A56AF01FECE9CE8D75046E301 +:10AE8000FB6C557CDF7A7708F2102BF74EC3F3A6E4 +:10AE90002B7EF1E39F8768FF65AF3D114F28BECF42 +:10AEA0002B8D6E7897A9FA858DF17EC80B29A17834 +:10AEB000D097E7C3ECEFBAEAF5F9135CBE843F54D0 +:10AEC000C3EDCA85971FBC15F0F1F7178C76B09BC0 +:10AED0002B779823668CDBEF42BF88D64FB1FA03FD +:10AEE000987F5CB95BEB072DFBD1136E0FF25328F3 +:10AEF000DD900265249DD0B266BBD117017C1D9305 +:10AF00007D741AB292746C02F8F4FD010E784261FD +:10AF1000658BBCD094D0F53BB54026F03F56B63E8D +:10AF200088FED44ADD39F0AA1EFCA9076ED0E63FA0 +:10AF3000055E48D8857E4CDD4B3FFAC9EB14BEF365 +:10AF40001F24E7E17B95DB7F132FD1EF175BB21353 +:10AF50001662FCB65EA37744F939F80166B53D6523 +:10AF6000F4F4EC9630F742F6B2B2DA188987B8B941 +:10AF7000BAC988FE68F58F9F7F11F23EE48F667C28 +:10AF80003761F98F0FBDF72D5A5FBED3E82C636090 +:10AF9000DB2477942E2B3DCC1F117458F6D343F845 +:10AFA0007E17FC0E7EAAA0C7F29DFB4D645857BCCD +:10AFB0004D6CD98FEF6976A14BCBA99BF1BDCD9795 +:10AFC000FE61027E3EBF4F22C9DEAEFDAB5EF84D94 +:10AFD0003CB41374E9A45317FA446E7D7D14B6C3D0 +:10AFE000FC408F74A2FE3FF2FD2F7E8C78AFFAC03A +:10AFF000EC837557FDE4DE7880FFAC52CBF8F9990D +:10B000008D6EB8EF56650CE1DF8DAC32B2DFAB9ED2 +:10B01000BD0FF96CE9BBF7B9D9FD2D7FAAA110D7F7 +:10B02000970AEBBA735B39AEAB920491CFAA9E91AB +:10B0300031EEFF8AFFDD013D1D633C4C1ECE369B89 +:10B04000F1F1A6B3708093C2153AC2FEDE292177D2 +:10B0500013F5BB17F8E26C41F4EF019EEAD417C474 +:10B06000027EDA4ADE6AE5F607F01D860B99FE6479 +:10B07000C81B523C8438BE24B8CF25BF5B92CCE8B5 +:10B08000423C4A01EF07FB38F03BB46F33FAADC3E3 +:10B0900035FDF83D6336BFC80B50B86320AF79D695 +:10B0A000CDF2C2F4BF36F46F99AF8B7C03FE67A17B +:10B0B00087E9DF4EB9DECEF62F855C7F798CC945F6 +:10B0C0004D785A29CA7B9B31920CEDC2FB674A2806 +:10B0D000EF66CD7B029D7CB0DDC8E555FB9DC2A52A +:10B0E000486A7CEE93F01E64E5E366CDBB2F513ECB +:10B0F00031457FF746E54EC43F4BB97C0BBAFD5F47 +:10B100004D62323F008000001F8B080000000000ED +:10B11000000BDD5C0B7854D5B55E67CEBC1226C93A +:10B12000E405411E9EC93B3524931704083249406B +:10B13000434D60F28006451D1E1A044222584D6B95 +:10B140007B331840A4D81B8BBD17BDD86F40E5D208 +:10B150005BDBA61A69AA810ED5ABD8229D02CA4331 +:10B16000E48ED8A2D660027A8B7EA597BBD6DAE7AA +:10B1700064E64C0841EF77BFAFF7862FDFCE3E7B0A +:10B180009FBDD7FEF7DAEBB5D7E1F265FC9909D0A0 +:10B1900076AAA0EA552BF0CF65FC352931496747DF +:10B1A000E11F5360CA6519CBEDC90063B14DED1FB6 +:10B1B00059027801B0CB2A936FD79349589EB03883 +:10B1C000BD0A963F35B97DB9001F3FF7CADBB716F8 +:10B1D00063D9654AAAE6595C366932C06AFA13FB3C +:10B1E000B5E06F5B21D6BBEFA9863C80E5CF9780A9 +:10B1F00032493CFF4E023D7FF8BC8CCF3FB639014F +:10B20000E8798FE94C308CDE4A7C1EB4311DE30CAA +:10B210002954FAC70196AB6DE0F4E3BCAB8FCA4E7C +:10B220001C0A5A6060A3DD36F47DA2E3739CA7A5D7 +:10B230004B5E6C8E1BDA0E306076D3BCDDDF3B2FAD +:10B24000C7D238C633C16CB5DD01D024E11F5387A6 +:10B25000E2981781E37F426EDC74ACFEF9DF565E44 +:10B26000EFC91D8AEBC57667D5AB19009FB4639B08 +:10B2700025F4FCB7D723F52508550F4E3406DB7AA5 +:10B28000D512E02884E1A8E1B7FA994718AF153F35 +:10B2900069E6795A765BFC16A47BB5AFB68ADAB15B +:10B2A000FE9EA8EF6F90F2AEB45E3D8E91ED9F5D75 +:10B2B0000F4C8FB6EFA687C01B83FB3EB057F6ED51 +:10B2C00044D2FA91968D887BFF730E9F17F1D910A7 +:10B2D0000577BA918E7EFB406C02961BE2457D207D +:10B2E000D9BC11E242CF07A2A0B10BF7A7DF3D10F6 +:10B2F0001B6F0BADBFF8D772AC82F5A00FAABA6C6A +:10B3000057E2BF0EA62308A27DB66C9BD886F35FDA +:10B31000E84C2B4418E1821526B625513DA3D0CB2D +:10B32000AB58C7F4FF09DC6F4F277AA363F3880E8D +:10B33000F0BA8C6311CFA562A9B0FC8D8E58306035 +:10B34000BD776535205ECBB6E871B8DBD610E7C7B0 +:10B35000B5DEFDB829C40FF8DB043E33A4E1FBDB06 +:10B36000F5CF57C016B12F11FCE321FE193B947F96 +:10B37000EE27FEB901FF2880023E8780D48C065854 +:10B380006315FB3D5BCEFD47209C0FC860A131E4F7 +:10B39000DCDF4FC775FE27D66562786F32F3E54A6A +:10B3A000CF874C8FC6C71A9FF5119F650D7FAEFBE7 +:10B3B0005E7C77F283D865D59E77F2FE05CBBE3DE5 +:10B3C00027325FA6FA2F8F4D7C0786F6AFDCF7C5D4 +:10B3D0001D80F3F7EFB3303DFDFB5E9FF820D55F96 +:10B3E000B23889DEFE872C2EA2D7BB2FC69741ED3F +:10B3F0001370BF71DF3BF65ECC0BD27980F5BC2FAA +:10B400003B153397177AFF7A5AA27DEBB52880381F +:10B41000B5ECC3C384EFB7BC14E5037A7FEFC5C9AD +:10B420009E307EF89FAE67B5193CCC7F31D0F83C9A +:10B43000F16B3CB8683D2D2F4F7D7A1DCEDFDCBD12 +:10B44000DFBC14DB2B7FFDB73C9237FDCFEF37938A +:10B450003CFAC414FC11A068FAA932ABD384787FFB +:10B460001283835D0730C7B1C1EDCDBD122E0287B7 +:10B470007EC481D685B82C2739391C1EAFFEDDE28B +:10B4800071FE0E9A7F55EF14901DE1B8482EF13CE5 +:10B49000C6679578FDE2F9BE8B7960233DB02E40FA +:10B4A000E760A475BFFFFF6EDD92FF5AD66D7098FE +:10B4B000599EFDFDAD5BF0FF2645E8A3C8733094AF +:10B4C000CF7F793FD77F16E3647AAFF1FCA73AFECE +:10B4D0009FEDFBF3B8EFB123EF7BF9DFEDBA47DA6D +:10B4E000F737D47D8FB15B489EEDFDDB44085BFFF1 +:10B4F00048EBF6FC1F5DF7A0FD23BBADA948DF16A6 +:10B50000F007142C37A876C88624341E70BC4DE38F +:10B51000959DB2C4FA3B40FA9BFFC621BFE790F865 +:10B52000FD0D60A8225CE4A4156C67C8499BD94E48 +:10B530004049C0F46C4A2ADBB599DFBF17C8DEFB6F +:10B54000A66A23181583DF82FD3AD6E1FCD8AF2323 +:10B55000D960EF50F8F97BF4DC42E3C452F9F58F7F +:10B56000C4B8071BC9DE33DACCE00FB3336C80F507 +:10B57000307B243A3DAC8EBF51F01BBB11F721CA82 +:10B5800069049F44A669D8FBD87FA5C3CEF844833D +:10B59000CF6BB77D255CAC848B51FC0D3D11B80C95 +:10B5A000E2269A47C4C998B43940EB3682D1ABDA67 +:10B5B00059D26531B6629C4CCFE995A1B8A1651509 +:10B5C00089AF2B2A4F370EAF57C37D104F15EF2F82 +:10B5D0008B6BE4FE8C84F3F709E7E4A13887CA3269 +:10B5E0003BDB8B51D81FC1DABA179E24BBD65463FC +:10B5F0003625E13A17B82527C1B0000215A3B00ED1 +:10B600008B24E7B3BC6E776019D6DF6EDC9AB21973 +:10B61000EBF3D14183422EFD0A95F6940AA2CF2482 +:10B62000791E2D41FA60BEC9F92C1689BDF0A4928D +:10B630004FEF3BF71BF1FDF90BC616D2FB87E81164 +:10B64000C9798FE47B16E986946C23ED5F1D08BEF3 +:10B65000C79F86038873BDBA9FC71D09CC3F0B6285 +:10B6600096BD598FED733BDCAD6E5CDF7CE3C01F94 +:10B67000491ECC2F1B2B75484CCF7AC0AE27893F73 +:10B680004AB80E549F6F779B5A198F59F6B388AFFB +:10B69000E4FA9A7C79D4D5FC55239CD5F6410EE189 +:10B6A000976F1E38B516E9B61F929D3B155A2FB0FD +:10B6B0005D0E97F03DA4B78E6DECD038356D45D555 +:10B6C000B312B15FAAE05758B663435231AFD31BF0 +:10B6D00043EB5CB57F03E13E58BFEF3D7DFB77A4B4 +:10B6E0008DBAFA7A87BEBEA57C63F8FBC3ADA7AE60 +:10B6F000AA40F2A0CD99F8B8E4F25DC13FD2E87B50 +:10B70000731D2C24BF0B925C4A2DD9A834D9586ADA +:10B710003770FB509C042E0B6568A5735B53018B3F +:10B72000E97DAD3D4E1D374E7D1F88D8A9C40E2E34 +:10B7300085FC8CE1C63BD1345322BF14A17375E55F +:10B740000EED777DAAD8DF1371CA6CA6D72EF8E963 +:10B75000ED39593B363B86C7E1ED398E09A948E7FB +:10B76000825EE40AE4CB8AC6C526D2330B96CD941A +:10B77000480F1DAE091AA8CC4FC5756079EB65E777 +:10B78000D8DA30BC4AD4756C7D54F8A191E3E7A9AE +:10B79000ED270DB09CDA4FC62A1316E686BF6FE57B +:10B7A000F6925485CBC33142DFE5A30091F11CD55D +:10B7B000A40AFC2017F19F14C2BF6404FC35FE5B91 +:10B7C0000082FFEE6814FB4CF4D785D159A9E2B68C +:10B7D000758398F74453BE6971587B33CD53C2FCCF +:10B7E0007445DC9BD5F7D17F66BCB7564B3EF62B34 +:10B7F000C16523BFB8493DBF5B7187FDB8D5F56F03 +:10B80000C94EA4109ACA9A581EC376E11F5BF1DF95 +:10B81000E554745BFDC688B842C0487C511FE1FF07 +:10B82000D6A87E714DC4F3487FB831D526FC618A15 +:10B83000A764319D1CDFB9705476929F3F1C5FD87E +:10B840005364301685FCDEFC72839BF0FBFD8C8B11 +:10B8500075B4CE3535A906D2435BAB2F242CC90D68 +:10B86000E1183AE769D5E945A1FA9B35E6461FCBD1 +:10B870001BE18F1F56FDF1AD554551E5B610CE5B6E +:10B88000AB3E4D207E1B3C1770F573A1F51B5E6E21 +:10B8900069720A651CE15F65F13D84A4D63B95772A +:10B8A000578ABA9DE26E15D53B2612DFCF96739F5D +:10B8B000FA363E7FB3DA42E1A4417976E489A727DC +:10B8C000523CC5B9BB6936E45278C1B32199E44E04 +:10B8D000B5E4E47886046EE2EFB3E381F574A22F59 +:10B8E0007E8717DF95ABC5394CDC1EBFE366DC9F56 +:10B8F0001FA8EBACAC16FDB636EAF9E51E55BE370F +:10B90000953C7D281DCB15354B4A68FC27D5F37136 +:10B910000FF10DED7B75C13A5247CB1B0B2448A5A7 +:10B9200065BA02B961EF2F00676D9114EAFFE76D08 +:10B930004FFF13C1D954B5B8C41FC657202F8A234F +:10B94000FB70C533FAB84B62B13E6ED3E4D3B72F68 +:10B95000C0776C0934CFD5F96F7704FF69F30DB761 +:10B960006F1ABF0DDA432AFE3DA57215D9C3F90936 +:10B970002E8F3BEC7C1E53E58056F6F4FEE5E44A40 +:10B98000D2A3DB2DCE0C859472FC2C3B4EB5707986 +:10B990007931A9AD0A6BC1AB54BFAD15EBD8BE3F31 +:10B9A000D5C4EFDD6E7F6F763CD6EF4C915EA3720F +:10B9B000B1E2B82901CBA32AEE4BB3CB5FC3E5427A +:10B9C000B5B3D6ECE178D9965179748E701EB4BCBB +:10B9D000495E790D0943D7538E46B8310CB74A6B8F +:10B9E0001418C3F0996D8FD7D56F4E19ABEB3F4745 +:10B9F00071E8DA6FC9CED1B5573B0B74ED7169C2EE +:10BA0000AE3CB4FDE2C96FE13A0FF59AED04E121D5 +:10BA1000C22529840BD2FB38D17B68EA0313EF429D +:10BA20005CDF4D35F23ADF255E0A93676F5703F30B +:10BA3000E7DBD07AFA5BC4C735427ED53F956522F5 +:10BA40007B108C22FED700E23C37A872ADAECCC48E +:10BA5000F65DBD5BCF47356AFCAFA62A327E1A3C45 +:10BA600048F42E2895ED640F2542981C74109F0908 +:10BA7000793712BFFDFCA98BD7D139BD98AA8F2386 +:10BA8000FF5C12716D2FCA5FB2C386931783F22ECB +:10BA900082CFE2D2C4B9D54A941371242FF2CDFAE1 +:10BAA0007E5A7902FD2C238EF34EBB95CB77DBEDCE +:10BAB0005CFE477B0A97EFB52B5CBEDF9ECD655CD5 +:10BAC0009A909F896DB89F89A17112ABDDE6AB9DFD +:10BAD000974839772868E07372E8C66FC63A6CAA4F +:10BAE0007F80EF8D4B8BE7F60F4ADFB749B9217E98 +:10BAF000ED099EB1915DB1107C26D293B781DF44F0 +:10BB000071CFDB21C8F53B010D6A2C1783C2E552CA +:10BB100070715CF42E1800294DB55BAF03D899F60F +:10BB200083C7286E97477A92EC05742DC2CFC36DF8 +:10BB300069E27CFE2CD595935642F8B69EAE273925 +:10BB400079A309C86E244E22BD90A8FA331F3C3554 +:10BB5000256AC915F4ED03A94B8AD24AC2F1F198BE +:10BB6000A91FEE6FA3EAF7705CC1149FBD33DCEE32 +:10BB700099A6E2DBEB704D4D4B267A059FE72738FF +:10BB8000D9AED1E845092FD591BE4DD3EBB37C3367 +:10BB9000CA4B1CBFC6E931DBB1ACD8561015BC226C +:10BBA0007D9E9BD392F5F4097921F865B8FDD3F613 +:10BBB000FDCBF28DC61F671CAE069AD76840FF1CEE +:10BBC000E7312634A62C613BB081F7FFB634E9AAF1 +:10BBD000F6525EE9FB5B8AC84F29969D247EF37A74 +:10BBE0000236920B47C81FCA277DF8414511EED790 +:10BBF000E11EB42C71BF0EDB82D554FF60AA6C7FAE +:10BC000008EB1F48CA9B747EBD3B64BBF08F9C0150 +:10BC100017D6EFAE8A2FDC8CB579334CACEFCE7AE9 +:10BC20001C3B290EF44315DF0F55BBC88BF608BD2E +:10BC3000F741CDC5A3F7911DF5446282C47CD014B1 +:10BC40003B8DEB6906E1CB3A4D6C0F6D9359BE1CF1 +:10BC5000ADBEE9AD65109257675579A5C9A50582B6 +:10BC60009DE02C7893C9FF5BA0EAC38646BDFCA982 +:10BC7000ABD6D71B23E44F22C99FD8A1722952FE0D +:10BC80006C4C8B09E93B79A8BDF5A16DC04F72D40E +:10BC90005B25314EF5E80F7AF2C91E28309DB511AB +:10BCA0001F48CC079A1CAAAF463FB198CAC5455653 +:10BCB000EC5F897E0BC553EABB9DA6BB6DE17CB6EC +:10BCC000D80CE4CF6C5B6CA67BC05E87FB9F891FA2 +:10BCD0004C3B2A1592D35B7BC53EE66F3F7692D6EE +:10BCE0003FAF66C9C6B1B49FDDC8F0B49FDBA7C43F +:10BCF00090DD75C4F76912E486F37BAB9970ABD81D +:10BD00007EFE3AE2DFC8F30EA44CC9DF0377CA55C2 +:10BD1000ED34B5DF48F2CB5B01D9E497F649E09703 +:10BD2000D0FEEF2B1F5D41F4F64D301B4599C9F550 +:10BD3000D972D92B36C2B51A58FFF68D2DB58AF6B1 +:10BD40009BF8BEEEF751B179B4DE1903A0D3973357 +:10BD50003FB7EAF4E5AAA081EFF5CA41AF872BAD62 +:10BD60007A3D3CDBEE88D0D37A3D3C37687B8FF858 +:10BD7000A3EF8D45ECF7CF510A22DA0D5EE2D75BD7 +:10BD8000B2A7EAC6A905718F3B0FCB6958CEC5F2A1 +:10BD900046F27B9CE543FAD1BDEEBCD239BA717B49 +:10BDA000CC904DFC3120453B77223FD65ADDFAF549 +:10BDB000A1834F38AE8FB77AE538AEC3341C6755D0 +:10BDC000DB5F98CFA6B75D623BBFC0DFA57BAFE866 +:10BDD000408F6E1E67C05E49EE6FE171E72B54160F +:10BDE00007DD95E4BE4CFEB0F5152ADBACE23EF073 +:10BDF0006294281F30C0068A473E207B9693BEB8C7 +:10BE000068F06593FE881E77D304E2C7DAF88D44A4 +:10BE10000EDC029E73C4A7533FF375507DE6A52E3A +:10BE200099F451C76ED96B89A37DAE1EF526C5372F +:10BE3000BB24B6C757D90CECC77D9CD095B7368CC0 +:10BE4000FF3FBE5FDC8F428A2B657112C5CBD239B2 +:10BE5000AEE2AE8C71C9884FF39E2C8E9BFD2EB343 +:10BE6000FC6FA43FE4985956A1578D0383F6442AEA +:10BE7000B5BBEE9B40F1A24A99E509DC6CE2784C37 +:10BE8000B4C11DAB06D358BF986F36B15FFDDD74EA +:10BE90002157A37F078A84FC169DE89127D17BB7A1 +:10BEA0004840E75BA3AFAE1A5CA49793D385FDC06F +:10BEB0000135EC579B7CF4398ABF7D373D86C799A5 +:10BEC0005CADFCBB890C7BBBD14E7238F1B8DB3E5C +:10BED00009E9EC4E2A6639D07D3C3083CEEB77D32E +:10BEE00015EE3FA6AA7C6D39CDF7B80CD4BFDB3E6A +:10BEF0006B14F587EC4C03C5E5D6501C00BB262E11 +:10BF0000528E519C060E98B89F36FFE68AE33E5A41 +:10BF100047E271D74A5E6FB64DC97070BBE3F64910 +:10BF2000A467F075CBF0E7F6FD2DC9C90AAEABB634 +:10BF3000DC9EECA4F23104691AE344EE0FD8C94642 +:10BF4000E4FAB8C3B390AEDD8375F003E2BE19FD29 +:10BF5000329227F41385F55A69B07FDDAC5C8E3BD5 +:10BF600068ED5E28457C65AD7D7C1D8D678F184F23 +:10BF70001BBF347DDCE14DB9849388FF81D19EECF9 +:10BF800026C6BD7459223BE33ED5FF8C9695C9C4A5 +:10BF90009F4B0C4A1E9563133C33D393695C672611 +:10BFA000D5DF8F718D99E1607973761BC99B592616 +:10BFB00096E32DD95BF83EAEDBACEC399E44F7F24C +:10BFC00078FEF0B9E97BF774F5E0B82DF6BFF0B96B +:10BFD00042FEBD85F4DE85802181E2FC4BE4C1F5A3 +:10BFE000B8D0E5873386509DCEDB92D07A5CE9D815 +:10BFF000BE396C7D56AC2F55FBAF4DCFA95B4FFCC6 +:10C00000BECCCAFEF45AF5EC6E4E804E19F9F0D350 +:10C01000EC690B68DE4FB7A0DE454CBBA991F46C10 +:10C020004AB4EF59C238C99D4DF1AC4301612F7636 +:10C03000E13EBB68614AA66EBC4FCB3EB04DA271DB +:10C04000CAD03AC2752D0D9A4121796104BF05E528 +:10C050004A77D99257D292882F156E3F4EE3A09F10 +:10C06000F74EA6EBEE74CE77D0E28BDFFE52F1C531 +:10C0700016554EB594AECBE5FC8B5912EBFB63E441 +:10C08000BCE0B82D6D9F31BE60F438695F57B57D57 +:10C09000CAF24CABF7AD13F2A0D30477D662B9EA7B +:10C0A000BFE43B296E85F26F13C9C355F01BF39AA9 +:10C0B000307B0CBACE0FCABF7C43C85E333E2EB372 +:10C0C0007E88A4D7E8A9E6F96A25FB7C8AB5F99FA2 +:10C0D000FD873A23DA59B551F6F912D61FCD5851DA +:10C0E00067447D573BC13EDF80F5DDCFBC2EEA6360 +:10C0F000ED3F3438F118660445DD617F8BEAFBD3F0 +:10C1000083E2FD18B1DFDF4F3F59E7E578848DE327 +:10C11000F417AAA27C96ABC4F1EADB5ED6F90D4314 +:10C12000DA6549C8C74671EECFCD19CBF20BD25DA7 +:10C130000506928F75E30B490EF95479361AB12F23 +:10C14000C5DF7FC7F36945BC9A330377C4A691DD89 +:10C15000F1C8792996E6DBC7F3ADA2AC237C7E2A31 +:10C16000DBB38BCECD6129789AE46473CD914C9288 +:10C17000F37599EAF9B30FA4D3BE2C040FFB150B8A +:10C18000553FCE80CC497654832D9DFDC948BBAC2C +:10C190001EFCEC7744DA6710EE07CA943F10B8C370 +:10C1A0008C7498541C9A131C19F41ED2F52BE2C3FC +:10C1B000C312D28975535260B4B0C79F53243ACF8B +:10C1C000D956BE778DFEDAF13CCF15ECF3AE76D4BE +:10C1D0008B78849E6FEFE132371398FFC618836621 +:10C1E000278EB3FA38B03E9A2DAF62B97FA1C7014E +:10C1F000E171B523E9C2CE8DEB11F147C4D549B841 +:10C2000026A581DF80FB9AF4CB379EA338FD1192DF +:10C21000FF25A17D9C390ABAA2124278E33E386913 +:10C220001F34DC11CF22BA3F78F5D2C132DAC73AD7 +:10C2300095AEEE6871CE075E8CF2913D1049E747EE +:10C24000E95ABC524FEF2575DF47A2F392AAA746E1 +:10C25000A2F392AA9F86A3573BAF1A4EDA790555EF +:10C260004E2D6C74ECDC2C85EA75D50EF6E7343A6D +:10C2700087F2CF33CA95F86724BE39966157F5B176 +:10C28000901B1A8E1A7D9A1CE8A67B381D7DF13B07 +:10C29000F4F4C5F3798A6BFB15CB2539C6C8CF1BDF +:10C2A000B2537690BF1317B840975B9092912A7063 +:10C2B000EEFA02C8CE8E6BEBE5FE43D613B10E4DFF +:10C2C0001E46AE47938F43D7A5CA49556E6AF27290 +:10C2D000067936F43EC96289EC618FCECE2B877B1E +:10C2E00022ECE07B23E255DFD2F5BF39659DAE7DC0 +:10C2F0008EF288AEFD96ECC774F51AE713BAFEF31A +:10C300004A77E8DA6BADBB75F5B26080EDCC43EDF2 +:10C3100055ECEFDEF8E100DB9B7ED52FFE8DEA17B2 +:10C32000BF4A7E319ECFD7C82FC6F240BB939FFF36 +:10C33000B6BD94CB83ED2E2E03ED6E2E23CFF5DC10 +:10C3400017BE6124BBBD34D0C9766E529AE7AE0CDD +:10C35000C46F9EC1D71183FB31E594B04B2145D802 +:10C36000559A7EDCB07FEAEFC9AE4A3C284394324E +:10C37000BCFC8DFB5C0657583C3CAE7A005CC80F99 +:10C38000716ABC64AE11D65B707F6B6D46FF18CAD4 +:10C3900077CB107622896BBA576CB402DF473636FA +:10C3A0004ACE0EE0E75EBAC7C3D2EF296452DCD6AC +:10C3B000D1EAFD1EFE588CE0A5F164970C37525C63 +:10C3C0002329D1086171BAF938E7F5F8DEADB62E48 +:10C3D0008EF72C3CF050F3627C0EEBBD256C276988 +:10C3E0007ADB7BD270F9866BD7DB2BC8B8A47B686D +:10C3F00049F8FFDE7823C7DB22E31FAE0C110F9A4A +:10C40000DBE19563C97FF903F0FDE13C55AF221EE6 +:10C410009B2C09A173A8F17FADDDE8CF8A25BDF380 +:10C420005825BDB7EAA8C27844DA099A7FA3F13D3E +:10C43000CAFB0EEA7FE138B0FD36A5CF17DC8AF3E0 +:10C44000950E745692DF31EDF3AE57A81CC90FD28A +:10C45000E8EF6D6F64BED9D7EEE1D2DFBE5CE5C711 +:10C4600056AEBFDADEC6F5D7DABD5C1E68DFA4F2D1 +:10C470006327B71F6CDFC6F543ED3E952F77F3F3C7 +:10C48000632A7E9D9A5CB296F3FD07184519E20770 +:10C49000C50B57E1875529423E47F2C5707C809A0B +:10C4A0005FA1FB915B511F921CBB0DBC93289FA306 +:10C4B000B1A9D3345DFAEAFCD0607BDC44F7139178 +:10C4C000F26D0128CC7743F5BDC7792DFA5E936FE5 +:10C4D00032FA69A4A72CF2BD4E8A1B7C79FBC2D329 +:10C4E0004A748C3C9FD817530AFABA09145F7C7BB4 +:10C4F00017C5B1CF95B80EB8A42BE010E157DE37C1 +:10C500000198DE2F4B9F16EF1A89BE17335D4749FE +:10C510005E69FA2C9ACF3C96D7D9389FD86CF1F93E +:10C520001E22FFEEE5283E8F60734DAC0D8BD7BC0D +:10C53000ABC99B44D7BB196C1FF4EDFA173A2FDD3A +:10C54000A338BE12E9377D16A81C136E2F45CAD337 +:10C5500016FBA77CEE86E879C9C07ABEC5001ECA64 +:10C560001F2AB48055425AEFCFACE813F396055C0E +:10C5700034AFDD78D5FBC996B6F33CFEB0ED06913D +:10C58000A7D4B2B7C4BE242C4E909BA9E61DA043ED +:10C5900078D61AC2EF5AF979C640A34E3EFCDDE9BF +:10C5A0004FD78F75ED7351ED10BEF33C73781F6E4E +:10C5B000258FE84BC5F95D1E2A7B1D9ED4CC12BA8F +:10C5C0008F0BDAA8FDDC9EBFA6931D7DEEC6A9F6F3 +:10C5D00072182A0FAF55FE69724F93831BCDB0BC02 +:10C5E0004B17C7492AA0388EB61FC599FA7BFFC8DA +:10C5F00073D65F801B86F4F6BF28F2E0FA63A27D53 +:10C60000126EB9ABF7F5E39477044EBDFE76596D23 +:10C610009C5F5AB4C8C97A1C508F9368C195F6853F +:10C620008F3BDB28FC20303AB36F0F3B371D6A5E2F +:10C63000C36E2C7F8174C72E0A1A95307E9BA7D2B9 +:10C640005BBE7016B03FB9C8C57660AC5DC483668A +:10C650005BA1388AC6BDF4692E8D3B57B513369B56 +:10C66000C04FFB36A6B440223B714DA2CB9D49F191 +:10C67000D187CBE239BE4CB1D4EB43F268B65C9DB6 +:10C68000B298CE4D9291CFAB26671A6C7F34CBE433 +:10C6900087A11CE17CF608BC0082AF6DC5F75C3D4C +:10C6A000929DE2F491E7D8D5B3FF38D9F523D9A705 +:10C6B00023C9A748F9A1E11E89F39A44F76A5AA74A +:10C6C000265F22D7ABC5899B21C87CBAD9B5D34D8B +:10C6D000EBFA91A408F90C9DAE71B8DFAB7BEE05C7 +:10C6E0007ABF501679A60373843F1479BE1FCA140B +:10C6F000726F952A2F0A13C19A42FBE101969FFDA2 +:10C700007372D80F79223341951B03997561798C27 +:10C710009A5DD3A77EAF51DF13E595C3E2058F661F +:10C720008A7BB77AEB673A39B8BAED0B9DFC5A9D14 +:10C730002BF8A1B04329BA17CBB5EABDDD4F26BA15 +:10C740003BE9DCADE87A6CCF4185E6DB7EFF49DA78 +:10C75000E7033621970F263336FD923EFFA6DE7A99 +:10C760005ED5FF3B74E7E548CD31F673EBBB477907 +:10C77000097F8D2ECD3FD6E475F3BE8F4E93DEEE4E +:10C7800093CE9F7E90F07BD1C2F6D92AA23B91FD39 +:10C79000EA6789AEE70F1818DFE63916BED701A39E +:10C7A00032A92E26844BFF4757CE0BD2E8D3E6D3CF +:10C7B000E8EA93449C42EBF7BCBA3F7D19228E70A5 +:10C7C000C414F884F6E5DC9E1B240A300E3E8F0F5D +:10C7D000E4C5DB42FBF2BF6527DD0AC25E3E6E5850 +:10C7E000F74D33E2D5D7B5D5C471E4AF681F69F40E +:10C7F00076C4808FC6031728F6D11CB213797FB890 +:10C8000048E368F2DB445DB2BDF605C9B1196AC9F7 +:10C810004E24B697A9646F945A81E8B34227979B38 +:10C8200025A742E54CC96D14F16B1FE37913B48E53 +:10C83000A7E7375A9D294603DD178AB8E1FCF84D72 +:10C8400073791B47C346BA3F319ABDA6D12417EB73 +:10C85000E2D4BC4781939687B81C7FCB1017633C0A +:10C860002846ECBF1CED7613E2DBD0B4F0D15CEAD5 +:10C870006F2F631CB53C467A8F705C70B0B586EC48 +:10C880009D6FECFFC121173EFF28A193E3B07F0EFF +:10C89000ECCCFB29F65971A497BF235AE50FDC4471 +:10C8A000F0AE8601D6471AFE8B20C0E51D30C0A52C +:10C8B00007ECDCBE049C5C2E03379777432B97274D +:10C8C000C66E6FC693000BC76C317D06211C56C621 +:10C8D000AF9F4CF3D82BB665B0BC51EF9F22EF331E +:10C8E0006AE36D7C7F82ED224FF37494AFC3C1F78E +:10C8F00017A6AC12BAE770DD2EF06DCD277BAD3FE9 +:10C90000DE0C127DA7952CE488F71C70DCB5DFA443 +:10C91000BE7F5EE17A716521DB3B705161BB6CBA11 +:10C920007ABFA8C9D9E21B44DE2F5C16FD670CE86C +:10C93000F3C38A295849EFFF55E17B8A999F47E65F +:10C940008FE9E5F00FB3843E2A4E34B486C7333AFC +:10C9500052468B78A05AB728768E6F94A9FDFB6358 +:10C960000DCC1FF8D3609D4C748AFD9CDEFB3B957B +:10C970000FD1D11C1DFAAE6EBAD1BF9F9EAF56E546 +:10C980003C4A61D65365C49784538F5EEE43CA0D0B +:10C990007CFF3F4D2541F35F251C6B5102F1714037 +:10C9A000667E85012E5D60673D5F014E2E67819B2F +:10C9B0004BE46B2EABA093CBAF431797D510E0128F +:10C9C000BEE67416E2FC06AB5F16E7F63B76CE13C6 +:10C9D00099D364A0F874F13744DEE648B8DC9125B9 +:10C9E000E4D2C8B8E0019E7C2DB878047D91B88C63 +:10C9F000CFE6F3A3E1A2E11105BE14C271060465FE +:10CA00002A29244DEF97E331A47A25B8B83E7B4418 +:10CA10003CFC1D744F571AF41839BE118947A5E024 +:10CA2000934839D6A4AE5F225A934372674B96C29D +:10CA3000CF35F983E78CEF8523E592F6BC7854C5B2 +:10CA4000A70A8AF007B37E554FF1EFE2A28AB594A8 +:10CA5000C2B4E15FFDF5141F2F9E5EF1422AD61F7E +:10CA6000CE7A45D4F32B8A4C4E8075D2ABF5B3B059 +:10CA7000FFC366C482FD3FC73A8A2F5A1E0496F34D +:10CA8000568B782EA709FF10FB79C9CED2E8B35890 +:10CA9000843D97BB48592B21CEE5133DED59C9A1E3 +:10CAA000F1C09AC979EDE3547B654B96EA8F27393B +:10CAB0008A88EE2726BA3BA87F7F8CB857D5DA77CD +:10CAC000ABF6E0962C81CB70E50B59AECD5957787B +:10CAD000DEFF27330785B667793A49AEB48CBA943E +:10CAE000497AF89382231B838E10BF4808DA22A468 +:10CAF000BFC3A5EA0D2D8F9DEC24C4B7D8EDE92066 +:10CB0000513365D1C0C43685C77B92C79307EE26E3 +:10CB1000FEF824FE88F94FCCD7E3C57EABF261EF77 +:10CB2000BE371E1C27AA6E08E3E7967D5FFCE51D55 +:10CB3000C4B7E582CD49DDFB63C5BAA7F73EB19620 +:10CB4000F358C1A63BBF1AFF4FEBB1F0773CD37B44 +:10CB500073EEA27E338E9C4AA3F5CC3C15ECA0303C +:10CB600053FFDE63E304DF69F74417A5AFA23FB5C7 +:10CB70003C8B356F893C8B35A440A9FE0B89FDDFCA +:10CB8000E60326BEC7F94095EB5ABEE572757DE710 +:10CB900048BFC8F4FDE952CE0F019FB06715FC47AE +:10CBA000E770CA71BD5C6DEE8A8CCF8AFCB4C8EFA9 +:10CBB0009C23F3437E9BA5E6874C80094CBF9A0FCC +:10CBC00039DC7AB53C907F04D71FB2F83ECD2D13E7 +:10CBD000FF9518453EF26CF93B4E3BAD73426EA19A +:10CBE000C82315F9B54D51625D2FA979FF6B9E924F +:10CBF00081F225D6EC35F3F7933BF0F896929D9BA6 +:10CC0000FD23B61F9A541AB5F372CF2689EFF96047 +:10CC10007B22F354FE2E8B8BF62F7FD71817E193D0 +:10CC20006F16F6EE8E5D964D54EFD810ED2539F85F +:10CC3000F3F881EBE8BBE48E28358F1BE7A1FBB648 +:10CC4000FCD48154FEDE205BE8930E55AF6AF78D6D +:10CC5000DA3DF59A98CC31E41F0DB6078DBAEF771F +:10CC60003B543BB798E823BBADD524EEB9A304FDF4 +:10CC7000FBFFB06014D99D2F1ADDA3286FE5C2D148 +:10CC8000D438B84ADE55891F37E12A7184E2A35BA4 +:10CC9000F8BB98E26D468187CA6F2FB5BBE07D5324 +:10CCA000086F8DFED9F2739566BAAF5B0676E6C360 +:10CCB000379EEEB0627DCD239C918FA466C7911EF6 +:10CCC000293920F3F72AD30E883CA697C01DE7C761 +:10CCD000BA25C5004A18BF4429D1A084F9F7A3B2E8 +:10CCE0001374F518E775BAFE71A5A9BAF66E350F7B +:10CCF00046CB0FD6ECC878D7D774EFCD08DCCD790A +:10CD00009B895585BAE7F099E0FB52FC27FCC55694 +:10CD100099CED5F420C0930EFADEC69942F27C5A21 +:10CD20009FFE7C58D47CA9D26027107F471D35EA2E +:10CD3000F2872DB69BF8FB1DCB08F954CE6CF5BCE1 +:10CD40008C87F1BAEFB907F1D6E7574D86F47F2EFD +:10CD50002B267C4DE0C3F60BF406B58F079F370CEE +:10CD60006FED5CBD045DAC3F93DD7ADCC734EA71E6 +:10CD70001FEBD1E33E6EB91EF709AD7ADCAF6FD37E +:10CD8000E3EBF0EA714DDB344DD73FA3B34257CF0D +:10CD9000DAF6755DFF1C5F9DAE7EC3EE5B75FD2709 +:10CDA000752DD1B5E7F7ACB8263E28F0AFD1F5D355 +:10CDB000F8A0E8C0B7AFC8075EFCC7F210443E6DEC +:10CDC00029E24E71D0E1F6BF43EA8458E9ABEF7F28 +:10CDD0006BB69AC7ABEDFF35CACBA5A44F51EECDCC +:10CDE0003D20F2AEE6DAAC9C9F85FC924D76C20502 +:10CDF0008876D27DBAA6E7DDAA7C996733B29E9881 +:10CE00003B4AC81F2D2F2BD22F936C07BEA0B8C84A +:10CE1000BC522922FEA6CFEF1EE93EA124E0D7D5C1 +:10CE20000B8E824C7AB1E48F4A470CCE53744ADCA5 +:10CE30004F44FA81C5414F07A9DD297DA88615F227 +:10CE400007053DDA3D46A4FF029D3B59CE9BD573B5 +:10CE500013E9373E60403B228DF3B5D8AEBC68186D +:10CE6000E247A618D99EF4B07DF9F004CF33D92853 +:10CE7000075F1FF42F831D029C2EA0FBA37E2D8F26 +:10CE8000C7FB8D06BAE7EA8F07CE5B39BCAEA1813E +:10CE9000F30693C01E9C2CC22CF4F372B6E76734E1 +:10CEA000DE1949F8738B4BDFFFD10B4867976A5F38 +:10CEB0008E59D4C5F19C3589AE5F64970CBD4F8AFD +:10CEC0002CB5F89516CFEA6EF773392AD7C9767F55 +:10CED000645C2968107102EFB7C5F77D1F135153C9 +:10CEE0004379A517369938FF0254FFF776751FB4BA +:10CEF00038C122751D677088E5A83F6FEF799DF7EF +:10CF000063654A9F1A5F6875520AE4D2F136CEB360 +:10CF100000579153C491B4B8C138F9CBD83D23AD73 +:10CF20007F65CA47BA78133C97784DF997A1758BFE +:10CF3000F1CFCC117AFFCC9C719CD7181AFF138EBD +:10CF40005FDDDEFA071D7FDFD97642C7CF8BBDEFED +:10CF5000E9DA834903268ACF05AB726691DD80FB4F +:10CF60007E8EF633B867EC4DB7219EE75EB44CBEBB +:10CF7000967CE995291FF3FCA7DA03BCAFDAFA4ED9 +:10CF8000B71FE77AB03DC865E4FA34FF5E2BCDBF2A +:10CF90000196075AFEE4D03C4617E7B33C9C93AA9F +:10CFA000C6FF9877E181B526F5FEDFB38DE2D41791 +:10CFB000178C2AA0F8E929355FF5949AAF7A4ACD03 +:10CFC000573DA5E6A79E52F353FB4DB64D141F38AF +:10CFD0002589F8FC5D133CB139649FAF18C8A37371 +:10CFE000D6921FBC43C279AB477BE273705EC94CDB +:10CFF000B969BC8E4CB2FF3E3478F328CFA83A67AB +:10D000005703F94D1F467B3F210B63D68F77349032 +:10D010009FF4A1599CBF861F7F8FCFDB5B06192829 +:10D020007FD0FB9224F2BF6C4133DDFFAC4DF64C58 +:10D03000A0F1294F8AF2E0E939F1A5164FEC370942 +:10D040003BAE5FB5E7D273843D999123EE51B4F2C4 +:10D05000C61CE0E70D6A395BDE92C9DFA5D37754C1 +:10D060000E9EDF457924DE7D168E5344E61715FEAD +:10D07000DAE297C2E29153721C3C4E529AF8BE3CDF +:10D08000E996281FE59F4030309172A406E93D2AB9 +:10D09000F231CF519C96CE27258387E5374DC911B4 +:10D0A000F666F31B674E539CE754B6677A4E7228B8 +:10D0B000DED91CBB9FE34335390ACF8774B2FF66C4 +:10D0C00091613DED4BB33568A6F7468A330FB7EE55 +:10D0D000737705FE29D741F9494A06BDAFCD8B7458 +:10D0E000D4D07E6BEBD5E8088D7375FED7E2A75AD6 +:10D0F000FD48CDC399746E0A29CFEB0AFA71698E87 +:10D10000F0D74F9920220F4CC50DB43CB05C964F20 +:10D11000FFA0EE73E43EB5E688F517A27EA538B908 +:10D12000251A757B61685CECEFA17B9045AD8E178D +:10D130000E26D177659328DC32488736EE4F26BA23 +:10D1400056E484C5A591DFC4FF7331278AF9A3791A +:10D15000DF89D3F4FF10DCF3AF938A085FEDBD489D +:10D160007C11D70984E76183DFACE6A13D90C371F0 +:10D17000E9C39CE7A5E1FB55F1EC9F1060BFB07FD0 +:10D18000C7171329CFB559BD476AD6EE2FBAF5F1A7 +:10D190001AC4C34BF183A1F716C0F71F16556F5879 +:10D1A000B4F7C71B75EFCF8F757F9FE8DFA3CA0762 +:10D1B000ECEF33A87161D233837161550F95A822CA +:10D1C000493A2EE2C125549261901BC77AA9589B17 +:10D1D0000FE9A2FDDB2879599F6BF1A30E557FCB98 +:10D1E0004BD7725CAD143AB9B4C80ED68796774463 +:10D1F0003C65302EF4C86B3AFFFCBF01732CFF89ED +:10D20000104D0000000000001F8B0800000000000F +:10D21000000BFB51CFC0F00309E772A2F22FA1F17E +:10D22000F9D1F89B3950F94CECA8FCA968F2E878E0 +:10D230001D137E7942D89A9981C109883D81388031 +:10D2400019BFDA7222EC7A2C09A13B80F41E207EF1 +:10D2500002C46D820C0CADC20C0C3780F43441CA90 +:10D26000DC8B8EEBF8A96BDE28260DB7CAA1F25B2A +:10D27000341918D66B31307CD386F06B91E4B975D4 +:10D2800080EA3521ECC3CA0C0C7D4035A572D8CD9F +:10D290003D0294EF07CA4BEB40F800A619B67C6834 +:10D2A00003000000000000001F8B080000000000C9 +:10D2B000000BCD7D0D7854D5B5E83E67CE99BF4CB7 +:10D2C0002627C9244C2084931020408243482040C4 +:10D2D000B493106CC458871F151174426945048DAE +:10D2E000143556DA0CE487014183AD15517108A954 +:10D2F000455BDB48B1A5BDB677105AD1726BB468F7 +:10D30000EDADB601ADAD7DEA8BB456FB3D2D6FADF5 +:10D31000B5F7C99C73F287EDBDEFDDF8B59B7DCE07 +:10D32000D97BAFBDF6FADF6BEF71B965C6263076F3 +:10D330000EFF3EC3D829893196932A993BB49C05A8 +:10D34000185BAB39F51D858CDDE8089DD02BE0F925 +:10D350001839F44D1D9F4FAE637EC61CF87D1E63C9 +:10D36000A5F87F958CB5FAE45012DBBDECA872E805 +:10D37000A9FEEDE55A8531AD1C4AB6B3D701FDB023 +:10D3800084DADFE766F477AE88B1E6D7DE2F3B6E4E +:10D39000D4E17F41961E786B3AFC630E9B73CEC13D +:10D3A000D859DF928C241BBEFF3FB7B002651263D1 +:10D3B0001FB6F4971D9F34F8FD8D0ED6D4530A2561 +:10D3C000636FBAB270BE31E7D5658CCD626E3E7FB9 +:10D3D0001F4C626E6A9E371E940A9492143C6B7DB9 +:10D3E000F269D710703316B3B487FE93D8BFBDFD72 +:10D3F000B0ED14F86F3663F40AF0F78814AD42BC50 +:10D40000BA02AB6363E1D18DDFA961D1D254FF08C9 +:10D4100077A42C35CEB0F006CE0FDEE1F0697C7734 +:10D42000D6B7B58341BB5695D3435B8E1CDACA068B +:10D43000D38381FF56DFD6DCA86F78FC031DE81A82 +:10D44000E2DFE1E374F34A6B152C2FBB8579889EEC +:10D4500006C1310A9DAC423A49FBEFA793E6FF793A +:10D4600074F2157CFE3F854E18EBA4F503E09C9109 +:10D4700074733DC2108ED477A63217C8800FC91CB2 +:10D48000818EF71D33B0F4C6503E3802CA5B7DA6CC +:10D490007536DAA94E16C5F569659CEEE80F40545D +:10D4A00082A10328B7BA9993BE53026EEA47D19A74 +:10D4B000082F80AF6E82A7C18A47C6C20CE15573A0 +:10D4C0004B3238FEB2869CEFBE96A6198A6AAAAB8A +:10D4D0006C39C20188A379AA5F66896C809F7DBC84 +:10D4E000545F52367C3F76BC015FBD1A05BE8AE5AB +:10D4F0003843DF64297EB2CFEBDF07E6E58C219E5F +:10D500004CF3FAF791E6D59A3E39C34C177638DAE0 +:10D51000705E9352F318788EF3F39DFFFA0FF7BE07 +:10D520004D0D071BA18B58FAD0F353717EF0EC3FE1 +:10D53000C5FC549F93D60DE6F59F43CD4B614D61DD +:10D54000A970F0BC14CD4D7831C655DCB7CD50660E +:10D55000A5E0FB23D378FF03E387882E1D1AA3766B +:10D560002759F48F381ED0612FD1A12F4CF87506A2 +:10D57000A1830BB00C2F8F013EDB8ECE65A56524F9 +:10D58000BED87A289DBE286B80EFDA3E71707A088B +:10D590005450FF061C67986CC1CF001D0B38ECF887 +:10D5A000EA1AA02BEBFA776DBF38F8797C2E713C24 +:10D5B000D9F162B407BC31A932451F061D746D173D +:10D5C000F80A0CBD9EAAFB4B3394ECC174D09E3379 +:10D5D0005BE7FD4047B9A897F9DFD4E258AD02E315 +:10D5E000BA711ED0DF9EFCFADF34C23F9D72E4B9EF +:10D5F0002DF0ACB09BC95EA8BFE98E6649A6FE823D +:10D60000D17E09FB6B17F35CE858EF3903E53796D9 +:10D610001765AC067AAB92A421E9696F0BCC09F8C7 +:10D62000EFDE1637951FBE3E85E6331CDDED6CE957 +:10D630002B33F3EBCEB5C7DD1391CF02726812C066 +:10D640003DF686EE07BE88F497A797A3DD02032B6D +:10D65000383F9A0FFC4D1370003EA7493926391107 +:10D66000E0789D1A8E843580B78445C212F433A6C3 +:10D670009B85923A6FAB98F0145C26C75C33080F19 +:10D68000B3100F8581D8332A2ED9CA7E5CC9013CDC +:10D690007C63B94CEBBD71D5E42EE41103EEDB24C1 +:10D6A0004E3F4C0F70BA5542418463383EDC0178DE +:10D6B0002A257EEE9190BEC795B004D27387787EFE +:10D6C000964516E07CC6ADD765D4D3ED92E0738461 +:10D6D00018E8A94DC0BD639A97E069CBD3F6233C07 +:10D6E000971B7044A5E1E8EE72ECD74E777925A13F +:10D6F00024A274DC9A484C82EF2F97A3CB100F0121 +:10D700002992C926221CFCFB0E038E18EBC5FEF3E2 +:10D71000C43A187C9096AF77A19C5823D6252FD277 +:10D72000718B0C7222185162A8BFF2FA1A1B18CC26 +:10D73000D3F5DA256F6309CF4F23DE3DBE9E1A274E +:10D740008C9B17E5707C468EAE4138D3AEE80E4B0D +:10D7500034EB26B610F8EB7E35C2703DD5EACE70BC +:10D7600004E0D97BC36CD668A2AF5BC5FC1D011673 +:10D770004E94A6D6798F83E3E1BE655B3DD7FBF07F +:10D780003B2FF1CF545621E82394243927E803E8AE +:10D790006013CE7F42547B06DB9504582DE205E8EA +:10D7A0007F0CE2E17EB5290FDBDD7F83737982E3B5 +:10D7B000E314D2A557E6E3C0FF74C48F4BE6305C98 +:10D7C00028A9349E73115480BE738B594287F9780F +:10D7D000113F28C758E75194971EC40BE0C98B78B6 +:10D7E00042FDDA9088C9F0FD98F52C14867E1DC59F +:10D7F0003169A24EF889237C69801719D6C7BBBC52 +:10D8000033A9C2F39D4AD3EFBF02F3D879C2118A7C +:10D81000E9267A64408F65293CA58780EF86D0DBB6 +:10D82000C6F7A3DB119C6E141FD77386BE00BADD4A +:10D83000CBE51AA7DBF3D54B6AB3437F13E59AA276 +:10D84000C988478F9BE3B1BD78490CF1F501F60516 +:10D85000F87174CE4C621DD68AF414FE217ED4E297 +:10D860007002E52FC9C5D9297BC5A5CB2C699AA71C +:10D8700012F45AEA6C794CC2F16E15CFD46627C106 +:10D88000E1F1717A06BD936012CE93253D687F81E8 +:10D89000FE4B825D86D33D3711EB77D27846FBB8DD +:10D8A0005ECE86B2AB156C07DF205B9C2B1CDC6E5A +:10D8B00078FCD8C65B6685F7BCDBF914FD2D93DDDB +:10D8C000387C3B85BD65D89D80C4970CBF53AC5355 +:10D8D00087CA8E4819A0D783B7C5707D3A185FF7FD +:10D8E000EDA26475B245EE388232F1F723C83C6888 +:10D8F0002714737BCBC92E4E129F149F9FFD552872 +:10D90000E8EB0116790BE9AB2B87759AED08C3DEBE +:10D91000646DCBE8BBAEEDB72551DEAB5FD666924A +:10D92000DE1074D565C31B635B09AE475A12EC0D5C +:10D9300035A537266C8ED03A1634733DE8CAEF937E +:10D94000B06EBC1FA0D7364EDFEDF125190CDFBB42 +:10D950007519E5425167E156B7854E236C593ABABD +:10D96000F632ADCBD7A13C67D02BFA91CD56BA3465 +:10D97000E8D0E87F547E8C858F16C3FC2E13747F0D +:10D9800099901FAC427DB3CF584FF21794541DD6D7 +:10D99000F7DD3B1C248F6233A5C437A5C1EF1B8480 +:10D9A0009C6EC0E7067C0077892C09BF81EBA3063B +:10D9B000F1EED853BF9E3C0B40FE65C8C15C88DDCC +:10D9C000A79EDD390BFA7F612ED475016F2EF6C745 +:10D9D000E9E3854216AEC3F795522206FD36546F31 +:10D9E00023FFE2B22A07D14D03C26FC2CB7B47FEB1 +:10D9F000A220FE6FAEB63EAF40394BF0E4F3FEC559 +:10DA0000BB0DE50EEAFF971512F1F1F1D7FF78F79C +:10DA10007C80EF64B51442F87E197AC387EB668C7C +:10DA200037802F9D69882FFB3829F917203B244B1D +:10DA3000E03B87819A2279C0EDAF6C31BF5CAD4984 +:10DA400042BF3C58D57994CB24BEDE63C33D350A32 +:10DA5000D4EE4D5FF19B28E185E9CA6C829E31D2FC +:10DA6000194A4C8C2B9D0340F3F35918E54F3E3E69 +:10DA700037D607F095B75EB1C09716B5D63D25A647 +:10DA8000F56428174DF5C2D47C0C7AF218767738F5 +:10DA9000AAA3BED82635BD0A2638DBE99E56D30098 +:10DAA00074A8F631E60FA0DE521209FCB698D3A78F +:10DAB00003E70D784E0B3A13A8C05D058CF5A20C58 +:10DAC000553ADD885F47692426EBA9F9B34D5944DF +:10DAD000376902D6EDA54B325969AA3F30602CFA5E +:10DAE000CA4EEF4A3EE37E637E8CFB59F96C0BDA3B +:10DAF000172E2DCA10DF60E76C90719D96097B513F +:10DB0000AC87A1B78C7146E5ABF3FD0E584281F9A5 +:10DB1000DFCEBC21B47F9AABE3AF0224EC0DF0FF63 +:10DB2000110EB5BA2986EB9F7151F3049423FEE9D7 +:10DB30003C7EB17CFE4AF61694C14024F6163C7F2A +:10DB4000507670FCF41758F4989ABC9AE968D7FAA2 +:10DB500042E130CA1936331C217913A2F2802C53CA +:10DB6000BBFB44F9A0CCED2F986ED8DC0FD835F76D +:10DB7000203C8561568BF4E7F059ED7CFBFCBE261A +:10DB8000F8FC80AC51194FEF0822FC6E29FA00E135 +:10DB9000B7386C890F78C24D492CEDDFAB0006F227 +:10DBA000877FFE4A378EA7541B7E7F94E42CACD728 +:10DBB0000119E7BDDCEA2FB902615A4FF87B07C7AC +:10DBC000718A71E2855F740FE55754CAD16FCB2615 +:10DBD0007A760643D47F3A7B48C3F81360A7F85C93 +:10DBE000766ADD109748B7672BDC0917F043BA0750 +:10DBF000A4304CC627BD49F0A21D87F6630636291E +:10DC000042BBBD97FC1524A1AA2CB4A34CFC88EB05 +:10DC10009BE25BC15FEC5431CCC727E0F6F9A25C14 +:10DC20002E87381FBAE13F9433194C3B8AA8CEA8FF +:10DC3000B2F2AF561222F99119B63EC729A4676114 +:10DC40006995CBB743390F9E5FECF0D1BC3217CA50 +:10DC50000917C9F570C3A4DC141C993960E7E2FB0D +:10DC600097C14E84FA871EFF0C9CA409BE33081F7F +:10DC70009AB1045F695F4CE6E34A881F80F38C1514 +:10DC80009E9DEFE37A029C96E708CF45E51678CF94 +:10DC900098E16D76F371F1BBEAACC171C3582D2BDD +:10DCA0006902A0FF208B38B3C214D44B1FB077C2D7 +:10DCB000F548177BF2894FFC9AC0AFBB9788516338 +:10DCC0001AC9637BFC10D6EBAC79BD5895A8EB2044 +:10DCD00067399EADEF593ED10DD51D6CC0EF595D32 +:10DCE0002510C9F4AB7E0B22E286132ADB81D58F87 +:10DCF000E1ABD948EFFCEFCC1B5C0FDF20ECFA3531 +:10DD00002CE247F8DE65723DFA51EF2245C23ABC7B +:10DD1000EB9B7D600BA71737D2799BC4E93FC721E6 +:10DD2000E249BE0E8AC72B6C80DEA473B4AE3C3EC3 +:10DD300002F61DD15D8CB9B7909E8F73BD1583FF20 +:10DD4000B0FE854EAB1EBB7E8FB5FE45B62417E5F3 +:10DD5000D717BFAE3294EB37D8F4C427328FCB5CE1 +:10DD6000CF9A3AD0BED926E24EAB35A664C3BA6D7F +:10DD7000F8E1C3B3D10FCB7770F9F367F063755750 +:10DD80000AEFEB020967B834353F85F1F9B54AA1CE +:10DD9000CFCD97869FDF36B5F773A8AF63BB54DA54 +:10DDA000DF60424F527B184A39EC087B6658DA1123 +:10DDB000BC9F8F5BE737DAFCEDF305CD4CF35D7765 +:10DDC000B091E4C770F3711E94C8CFB4CBA1590EC3 +:10DDD000C962371B746EF019D035B7BB7EE749B402 +:10DDE000C27857A1914AF64BD31C1E876DBA00CB5F +:10DDF000D1DA5DF34FB6BB0EDBE57CFA769F1FA64A +:10DE00005D3C108B20BF1976BECB1DE58BA8F0F8CA +:10DE10005C3C38CAFB7C78EF18E17DF1C8ED81EFFE +:10DE2000CE9D03BAC0D816B7C362F908D799160CAD +:10DE3000AC3376428D5C8EFEDC89971D0C3C28A8A5 +:10DE40006B1D419C57BBA4A37DDEB87331BD6F3CF5 +:10DE5000E508C89C0FC9FF3B51784937FA95EB1C80 +:10DE6000DC7F674A9F82F6436355E1C5A83B4EA815 +:10DE7000B1FC4C18BFFEABDCFFA8A9DAB206DB7D13 +:10DE80004EBF5A457DF2EC775A57627D9DFE59058B +:10DE9000E5F0ADD80FE0EFDDC79F9CCD00BE134F7E +:10DEA000A4B324C2AF249C68FFAC037A467ABAF1CB +:10DEB0007BE9644FAD3BB4E14003F423FD309DE0CA +:10DEC000A93F74FDA32E82AF95D3E70F9666DC2B96 +:10DED000E6E506D49CD822E292B158FE5268B2C15F +:10DEE000C5AE43FBC0C083419FABE3337F1E44B844 +:10DEF0000E6696A3581BA06B05BE87F68D502E1993 +:10DF000082AEF73A787CE59D42D77284533A78F432 +:10DF10005A9A5FCF552ACE4F6ACB74FE01C6BB47D3 +:10DF2000CC13BEA379C41E931293E0FD3B8F497CB2 +:10DF30005E3D65FB3D88D783FB9DAB691F620BE1AE +:10DF4000D78077F5C1991D63E1BBD53B338BD06E8C +:10DF50005CF0BD27FC7DF0FCE6838E24DAE950926C +:10DF6000BDFEF9B883FC29838F51A34B40073709C5 +:10DF7000F972D3E10D247F6FEAB98BF4D3CD475406 +:10DF80008B7E023CD3FED68DBF7684D027B9F1FBC1 +:10DF9000DFF2A39DF5E7E0E37EAD94C66974021F4E +:10DFA000549CB4EA35ECFFA3ACC1FD81E146FB39DA +:10DFB00037F76CE7E331AE470DB9F267FC47DE6037 +:10DFC0003D77D461DD1FFB809D9C4D76CFC1EC2158 +:10DFD000ED4F43AF19F205FCA27D3118F79D43FFC9 +:10DFE0006B1FC6BF4F7CF2977D7722DE7FE2D19018 +:10DFF000BE6F7EFC0FFBBE8C7AE6884B463A79EF0B +:10E0000027DF7A742FD4DFFBCD947264A9DF0A79FD +:10E01000F55EE187B938FF4D3F593806E971D353B2 +:10E020000BC6B021E21946F91ED055C24457867D71 +:10E03000AF1F81FEC640F56951DAD6E5D8614712B7 +:10E040004343EFBEEA22BBEB6678D60C76C24D4D59 +:10E05000D7537C10EB9B01BF377D87FB8383F11C7B +:10E060001B2753F036390E5DD09B0E2FBDFCC20A24 +:10E070002CD5908EF365FDA4A7ECED6E3E05EB79F3 +:10E08000C1F0EBF701FBD88978BF19ED991983D757 +:10E09000EF5DFCC7DCC1EBF77787751FFC03B6FEAD +:10E0A00091BDF8F270F690F13463FD363C7545C6CB +:10E0B00050F122337E93E781DFB522BEFF2CA843C7 +:10E0C00005F9EED0B71FDD1BC0F575851A70BD9F31 +:10E0D000F8A0008DD63FA9FDD722FFF5FFC4A57596 +:10E0E000419B753FF935E9B1F79E7AD1A9933C0779 +:10E0F000D317F4F37B6CE0AF17F5F54D22CE7B73AD +:10E10000777A12FD2C639D6E4A2CAED7FDF49CF6F7 +:10E11000276F4A70BABF2971749934C4BAD528459B +:10E120005C7F2472082F1BF45EA7E6B3AEA754856C +:10E13000EB78FA62A4BBE1D6D198BF86F39F635A0D +:10E14000CF6ECEAFC3F1E57BFB5D0AC6AF8CF57D2C +:10E150004FD8313727A45FB321F8D5880F31C7CA0C +:10E1600011D7C94E0FF3152B3D18ED8D798FC6CF02 +:10E17000A3CFE7D3E16B3A6E02550EC6DB96855C02 +:10E180003EFFB2D0457EC28BAA7EFF97903E9E5343 +:10E19000591734F95CD11F157D083FFC05B487A6DB +:10E1A000A4EA975749EDD9D0EEF27026DFA7B1ED7A +:10E1B0004F45AA1D4C37C173B67E533EF2D9B120EC +:10E1C000A37D97E3797CFFE36779EB8FE3F39DD041 +:10E1D0003F9B82FB21607702FDC75B82540EEC0BF4 +:10E1E000864B64B4B337A2DD8FE31D7CFCF1C7819D +:10E1F0004E31BC8E76E1315095667FF65501EF4B7E +:10E200002D6EB2E3AE2E795241FD2D953EA9A05E52 +:10E21000B934FAA482FB5AC707F659F476DC825B5C +:10E22000549259BE03FAFF99C4F5EAA286FDCA6A60 +:10E2300053BF978A7E2E2DDD9F8FF2F779B1BF688D +:10E24000C7D7530A97AF5BA67E2B1FC77B7EFCFD0B +:10E25000F9DC190B525CB240C4BB8F4FFAD6431B9A +:10E26000018F274AA410C6CB4E346FF5A11C3EA1E6 +:10E270002FB5D0DFD1A97F94B09F82E07E05E575F0 +:10E2800017CA09985F37CC0FE5C5A38037AC1F04C8 +:10E29000BC61F9788B4EE5775A4AE8FD775B4254CA +:10E2A000EF69A9A2FAA19630D50FB7D453FD072D77 +:10E2B00011AA1F69594EE5D32D6BE9B97FC7C1B6C5 +:10E2C0002C8C6B4E937A905C7FDAD244EF932DCDF9 +:10E2D000F4FE5685DB070571169740CE3637F37D81 +:10E2E000982E35B23C6282DFF8EE3185C717FAD33B +:10E2F000A25D28B7CED62FABC4F56F9F745519AE6B +:10E30000E309FD6B51B42F3E2876D31E03850280AE +:10E310002F9E9B3487F63BD767441F534CFE7E519C +:10E32000DCC992B3701D1375B9A8FFBE00F61DE0DD +:10E330007151FD7E2517FA59122DD4655ACF9EB61C +:10E340002CF42BCAC4FB86996A6DE9E8EBB859C076 +:10E35000FD6C4D533EF2D9B3C2DEBA3AEA602526CF +:10E360003B6469BDB57EBD68977549F188FBBBE923 +:10E37000211937A34C7CCEF9C815CC12411111D705 +:10E38000D3C75ABE73680722182F1E4E3E39FCF5BC +:10E39000DC4ED694B750BEC9E8EFCA297963C44DA4 +:10E3A0005730E32F4CF5EB06EAE06119F635E0EB68 +:10E3B0009AF02915EDF56BC10552A05CCD424EB423 +:10E3C000BBC1BFA5F28BAC894A577E5225B9C7EABB +:10E3D00034DC5790C2F31DE7D2468AA759F71FECE9 +:10E3E000FBF0130030C477709E3B6AF6BBDE16F874 +:10E3F000FD509440471B907E861BC7902F865CF98A +:10E40000BB2FF2BE52995A1FA31CAEBD7D9D0C7846 +:10E410008CBC82AC4B363D3B1E96B8AB93EF5B3762 +:10E42000F74964BF4F7CAD90F68D018924BF5C1E17 +:10E4300021BF84FDDB8CFF84EFD8B2B4C43751FF19 +:10E44000F4145ABE0B8E35E2AA7D1E941FDB9ACFC0 +:10E450005079B6B968F71436FA7CEDF2F4EFBE687D +:10E46000B60AF8BA7FC28CDD1827DFF79C83E2E298 +:10E47000FBD4BEAB118EE6D75CFA5680F705251C9F +:10E48000502B496E132806FD36EFD47797E8C3E387 +:10E49000A52B5E34CAFEBF15AE017A1C863F5274AE +:10E4A000C2BF033F85B9CB892E933AB0485F5AC6A5 +:10E4B0000F7AE1EDAAE6A48AEBFF86122D43B8AFEE +:10E4C000610915E97142BE968B42A4C6AF13BEF72F +:10E4D000E5BE95474245E92B8C7C9A7C20C686D4C4 +:10E4E000E3DB84DE0170280E5420E23872DA3B79D7 +:10E4F000A8376A5469C8BC09D6ACBC63CEEB025DD0 +:10E500004C7A19BEA57D99461C18406B94FB28FED9 +:10E5100056A72DAECB04145DBBB950E85B4E37D780 +:10E520006ECEDC8FFEEA6435DAA0F2B800C5BB1B04 +:10E530007DD3EAD05E3BDFF9C1E87D6807BA04BF4E +:10E540001BF37DD31DBD0AFB2DD4A4DA4C86FCCD74 +:10E55000E3C70B45BCF16C80913D3F5CFFC7302F9A +:10E560000414C78F60DDB1547D5227DA8BDDB0FE15 +:10E570001857FD3ED0253EFF77D05758DF07FA0ADF +:10E58000EB3F037D85F57F037D85F5A7405F61FD4A +:10E5900020E82985E74BDC8074AC06F8BE73AB93AA +:10E5A000ADA5FC335B5C7BA3C0BF517E49E574D055 +:10E5B0008E013BD4173F73F27D30451BB7249D97E6 +:10E5C000481765BD7DB548F7FEC32C8176EDA237AF +:10E5D0003B15AC4FFB5853D004B9FB0727B6224973 +:10E5E000F9A749B41FB1E747CD612FD4A7C9A1E36B +:10E5F0001AF2F37719C5AFBE374952304FC97FA41D +:10E60000E3165C8F192CBC85FC79A5FFA80BC69F6F +:10E61000B14C0BA1BDB1F7A7CE30DAA37B9D115A47 +:10E62000E72756B05017F2133AD1D0FEC02449A6BE +:10E630007EE2AFDC89FDF877BEF515FCDE5FF2E027 +:10E6400097A82C7EEC567A5EFC6FB753FD48F20E0D +:10E65000AC8F09BEBFFC25E82763DAD44B43583E94 +:10E66000A65C8265F0DBCEB44BB13CB4C773298C99 +:10E670009F37BEEBB91AA83FAB16129EBEFD446E83 +:10E680004308E068BF45A6FDD4A34A36D51F6C0AEF +:10E6900050BD54754450FEF5542BF509939E7F48A8 +:10E6A000E5FB198FAA4E2A15C541F69E916FA81C4D +:10E6B000E4F91FEAD33C8F40ED51C88F706A4D9446 +:10E6C000F7F188147D14D7151C9C21F7711E57791A +:10E6D0005CB2743FA7FFEF9E901398D774E848513F +:10E6E0001ADA4D878E3C23A37C2C55785CE5D089C3 +:10E6F0007B3DE980E7878E6C1CE320FB5E4FBB0A05 +:10E70000FA794CE5F92087900E2ACDED0FC9584EC5 +:10E71000C7F63EDE3E03E78DEDA554FB2745FB1F04 +:10E72000ABC4B3A6F65D34FE34D3F86877E4FFC813 +:10E730003AFE8FB03DB47B6650FB726A3F51B4B76E +:10E74000F3D351D1AE5DD2EF2A457B6683C2E3A4F9 +:10E750009BB2C8AEBC40E80DE3FBD382EE170DECD4 +:10E76000CFB134ECBFE7E9A28C91FC7C32AA0DF961 +:10E77000447AD99B92F354CFB2D5C7DABE2FB2BD3B +:10E780009F667B5F6EADAFE1F6FD34F1AC99251E5F +:10E79000DA887C942FF3FDF4EF94D0FCA60DE84FBB +:10E7A000AE4FA70B3B1ABEDF8176346B50187D2F1E +:10E7B000F4E8740FEFEFF93C63FE492FE2B999F5E5 +:10E7C00078A7E3F7876546F88B4EA4EF8B447F2C40 +:10E7D0003189D745FB63F92F2D9A4EF4E6203B3D56 +:10E7E00085CF08ED773E29F52EC2FE629758D7A354 +:10E7F0005CCCC7AEF7DA9C59443F5D4796C44BA149 +:10E80000DDD7EA141AF7924EBD365D47F993DC8ADC +:10E81000DB32B84FF2634055310379044BD9F5141C +:10E82000DF077D2E3D74CC07ED9ED8C5E58421978A +:10E83000B6F5B43DFB1528C73B33A9FFA2ED755EC5 +:10E8400094D7C794A50CFD0735BE2C2CD1BC19E577 +:10E85000DB156D3F255F6FA2B3B27C99E8AE687B94 +:10E8600080F37FA07B1EDFEB0BB315E9D8AF4BEC39 +:10E87000C7CA311BDF8E7722DF46A421F35D273A1A +:10E88000006E5CCF5FC8DCCEA9D7D3169BF2E50E35 +:10E890001DE47264DA6315674F607E9B366F16CA9B +:10E8A00099AEED4E9E6F392E7400F9AFCCC9E50AD2 +:10E8B000EB1B36CFB2CC3944BEDB04A6DF5307EDE9 +:10E8C000271CF192DC997090E7931EFA3821F3F837 +:10E8D000B195DEABDFF15AEC6FB9D36A8F4F60268A +:10E8E0007BBC70087A7F6D7AEAFB22B24F29FF9DCC +:10E8F0007D7C8EF6AF66B8AD701BE57E412709D0F2 +:10E900009B581E8A2F71EB308F9F078A76237DA933 +:10E910007159A7BC8A58D857339BB888FA291779F8 +:10E92000766A2C598BF43DAD2D29A7C1F7AEA77996 +:10E930001E19F42853BEA996C8C238273BC1E39BD1 +:10E94000C67E24F213CA67D7D3A67808CE4AEC63F2 +:10E950004DB3EDE31589784A912D7E628F8B5CEB88 +:10E96000B4C639EFFEB283F62163AF3888AF0FCC5F +:10E97000653129837F8FFB517B2E76EFDF417296C5 +:10E98000FB27DF137832E225373AF97ED3F1D7A798 +:10E9900078919E37621221AC77D7CED95EE4C3035B +:10E9A0004F03C722BDCF7BDEDB47EBCFF3555C02C5 +:10E9B000A6ADF39E7F7E2D8CD3F323996C9DEFE65D +:10E9C000CBE364A0AF7BEBDC946FE63FD03316E380 +:10E9D000E1DFDE2FE202A718E9A138137FF82C80CF +:10E9E000FE994676D79D4E59E4A346EE44BA93DD90 +:10E9F0007C7FC23F71FF58F47F1F2F94787C7E94F8 +:10EA00007EDA52FDB499FB31D9812AA7D3248F1F16 +:10EA1000886E0ADC3EA267BB3DD9789C9F2B00BB69 +:10EA2000F01E6725FA759130F96760E6513FE76F90 +:10EA300017C6087F82CE0A029972A66EB60F237B94 +:10EA400011DE09F96C2BD2E5F9DA855DC21EDC27EF +:10EA5000F286D538CFEF4AA05D08CF7F21EC42B0D7 +:10EA6000F31E755AECBCD072CC4F39DA115DA0CCD4 +:10EA7000253BAE1CEBDFED88B6BAA15E20F7E56161 +:10EA80004AF9B18EC60558F7B74AA49A9E867A2CE1 +:10EA90001FB98071BBAF8B7139A4F4BFF859A89727 +:10EAA000AC0984703FB74066DE12948FEBF8F92A08 +:10EAB0007F82DB5176F8F789B891BF357323AEF3C7 +:10EAC0003127D7B3C7C43A1AF5554A34E9A47D248F +:10EAD00030857253FBC46A80E7411CC30407A467F6 +:10EAE000A726F69B6263F9390D28CB865C7FEE671B +:10EAF0008CB6FE89C964FFC3FABF80F833AF7F7656 +:10EB0000E1F9AF3FC82D126DC3F93FAE8FA6E361A7 +:10EB1000AD81FA59167D9DD62B5FD877C6BAC960EC +:10EB20009F43E910797B7EC7E226E4B3F7053F1BDC +:10EB3000E59F04DED86B83CED5FC09FB7529519186 +:10EB40007CC2E5BABF15FAF199F02BFC2F039E5554 +:10EB5000CAEAFFED34C52511EFE8979D35F0CD9A4F +:10EB6000286F9B294DC17F09DFF903FCF689E03747 +:10EB700082B300FCB14FC36FA97D58BD4D433A2D00 +:10EB80006021C4FD02DF624B9EE91B52D4EBCA49EF +:10EB9000D907CDAF811F7201C2DFA772FCF4AB3879 +:10EBA0009FDA6CBD4242839FED5C701244612D324E +:10EBB000321E4C62772DC038666D1AAF376CFB6C15 +:10EBC0005B0CEBB8C7300FDF7F6B01EE13D44EE464 +:10EBD000EF23F81EEA8BD5F01897699F1B9621C189 +:10EBE0004C7EA3AA9DAE41F9007E6381AB92FCEFFF +:10EBF0005A5C928266267F1ABF3121FCC66E21279D +:10EC000080AE4AB03F35C6C87F1CCDEF9BE9E274A9 +:10EC10006494E5289C724C7EDF370DBFAF732CF7F0 +:10EC2000FB3A2DFCD68DF622CA6D4527BD3210A7C2 +:10EC300069F370B921ECCF42C35EB4C965C3FE2C41 +:10EC4000F458E926A3C0E8374CFDDAE9C8B01B2721 +:10EC50008A678DDD9CAEFCFF686DDC2E61FCAD9F8C +:10EC6000E8521574B50B37F7002FFBE3FC9C42D636 +:10EC70001D3C7FB97B675626F67FCA19BECC5599D5 +:10EC80005AAFAF3BC3979BEBB07ED161D6EFCAF3CF +:10EC9000593FD5E78999D7C3C0FFC9167E2EE4979F +:10ECA00042BEF70A7FFF2C0B5F87F4D3EAD429FE1C +:10ECB000147BDE417276383A182E8E65ACB7214F40 +:10ECC0005ADC7C9D532597C327C57E4F61159BA7B2 +:10ECD00065A4FAFDB2A08B931EFEDE3EEE1D2EDE75 +:10ECE000DEDF1A2139C544BE63614223FBC4F8EE5E +:10ECF0004E9724E488268BF3745436205CD06F51F1 +:10ED000015AB368FBB5D8CDBE0E5EFEDE3C65D5CFC +:10ED10000E1AF2D118B76827B7138CEF76887E0CDD +:10ED2000BB8DB110D977256D3C3E53B499D17AE8AB +:10ED30003B2361AC9F9CF96CF1D7D09ECF2911F198 +:10ED4000A330C3F3700F8A7EF63AC3411CCF01781B +:10ED5000C2384301C08DA5EA63A7498E37C7C8DE14 +:10ED600033D9FB0F921C7867E8F36D06DEFD0AAB22 +:10ED70007395A7E0FE87C0AB5137E6D9107AB12E64 +:10ED80001BE09BFC756D268AAFCF55F1F8695138B1 +:10ED90009FCEB9A48BF57C2CCEF78F26B9A2879E87 +:10EDA00083F78FEC7786B6C2B87BBF6AC44FF41D79 +:10EDB0002538CF5A3984FB59B9D5B7605A38DB7337 +:10EDC0005FC793CF313C3CCAE31B5DF122FAEEA151 +:10EDD000F55914CF30EAF91B787CE381EE7B2F994B +:10EDE0008CFE759C9F4BEAB2C5397EE4E2718E635E +:10EDF0002E91AFD5CDFDA1813847358F6BA89B856E +:10EE00001E5C23DBE31CC7880F8789733CEBE27130 +:10EE10008E07125CEEB4C6E504E68B75F98AC87FEE +:10EE2000EDF22D211B520D737FAD2B2EE21CBE8106 +:10EE30003883F72A80E3E72E1E2F7801193C67E418 +:10EE4000F614E7F00DC439A8FD2F5D3CCEF1EBF3CD +:10EE5000684F718E74EBF8AF88F6BFC7F69523B58F +:10EE60003F9479BD09BFBF13703B99BE681AC07348 +:10EE7000E0815743B44FC83AF575D0FFA3927E6F37 +:10EE80003DCA8F3C6EA71D90ACF2FF5DC147E942C1 +:10EE90001E1C8B6F95D15F2889B7C95EB4EF76824F +:10EEA000FFCBD0CFAD90CDE34E5C2353DCA7687B86 +:10EEB00031A7239BFF9BEE16FEEF9A41FEEF27AE94 +:10EEC00011FCDF74379FBF216FA0691D9EFF35C6FF +:10EED00035E8DBCE17C6F962C36E64420F752EE7C4 +:10EEE000F200ECCB747765EAF99868AEF09FF8F918 +:10EEF000B7E0388DEC5A431E013FB699F9B1C93ECF +:10EF0000AE9077A3F163CB7F113F5EE9FEAFE1C71F +:10EF1000E96E07F553E9FEA7F9B1D23D023FCE7580 +:10EF2000737BF15FE5C72A37E7871AF73FC78F6121 +:10EF3000D1FE12F768FC34343FD6BB395F2D1EB5C5 +:10EF4000BD951F23EE7F8D1FAF73737E6C19E0C7D5 +:10EF5000337C3F3BFEE6168C83833922F851B1F0B7 +:10EF6000A33E0A3FB60CCF8F37D37A0EC38F2D62E4 +:10EF7000FE861E86A66D667E6C19862F3011551989 +:10EF8000991F5BCE871FED7E05F859610C410DE797 +:10EF90005F30F0DB908EEDFB6DA3ED135F36FB0E63 +:10EFA0008A234C56C377BB4D767BA51AFD1AD56DC7 +:10EFB000F2C538EF34F85E00FB7987B5AF4675F2DD +:10EFC000431EC4F9BAAA2249CB798729A16008ED6A +:10EFD000F24CEBB96955E3E7A6FDF33FEE6BC5F5DF +:10EFE000D466CFC27607DD22AE673B0F60E01FD646 +:10EFF000F320C26BACEFC0B90E4C8836C1DF9177FD +:10F00000E570E7047ADCA6F55403239F13C8BA44DD +:10F01000A1F96E94BC21E4BFD63C7618FDB256C966 +:10F020006A2FAAE0FFEAE0FFF6BA8B2CF92FB707A8 +:10F03000629F055F82FC7F8E77F04F2D78E6FEBFE2 +:10F040004B8E1E47FCDD3DEFCFAF3A305FEF298F8F +:10F050008EFCFA5EC55927E62D60F802F116BBC397 +:10F060004B7E47ABD4D7C8FDBB2433C765F0FCF15A +:10F07000628CDF21FDA0DCCB07FA31E880F63FB9D6 +:10F08000FC6A4D7F2B0FC77D43D03FFEE583BC8BD1 +:10F090000AB81A15EEF75EC77AA95CC97AA87C434C +:10F0A00089BE8AF358C1FA297EB435CD7F11E2F9C1 +:10F0B000BF0B3ED3B953CA239CC28CBF5B2CE7283D +:10F0C000A788736F865F52D0C928AF69F2667EFE4B +:10F0D00078CAE6AD74DEB640D05FF17646E7CEE0A2 +:10F0E0003DED4319ED273FE4B49CC7D3DBAC75235A +:10F0F000DE592CCE59D2F3C2547CB4C8F6DCC8FF1A +:10F10000DA860F86F0FBED71528767E8FCB1E1FC0F +:10F1100022231E7A370B7B3C26BA66F95914A7695D +:10F12000CF991D1CAABD8157879BE78F18E72D0C2F +:10F130007F8AFD55F09FC4527F14A7D4BB906FF314 +:10F140003CDCDF79448AE4792A4D7C68CBCFDA2E27 +:10F1500045799CC617E3EF45BE161DAD90B95F8794 +:10F1600079596D223FCB57D144FAC755DA44E73875 +:10F17000C1464349C7A49204ED5B784B7A8298A7B5 +:10F1800073D730793A577BB85ED952C6F70BEE7A0F +:10F190005D22FFF4AE49B705CD79570E23EF6AFC27 +:10F1A0006DEE3E137EB6F936BA510F6ECB5F32224A +:10F1B000DE1D9D0ECA371AF5BB38FF6EB8F72E1F3D +:10F1C0008B63DCFBC3F1B16711D52E91E732902739 +:10F1D0002268C33190FF11A27D267B7E48AB3BE4C1 +:10F1E000C6BCA45680870D819781F13E9258329B10 +:10F1F000F23A2E477A395A369BF0EAD07BE89C598E +:10F200005A29C87D28BDF94D78961EA43C02323A91 +:10F21000DEA779849D0DAB65CE7FDA5E136528CFBE +:10F22000B6E7313A97AE6AB6F7228FCA89F336E16C +:10F2300071BC87EBDD1B44892454558EEBF628D135 +:10F240002B1089467CC2F83ECB7AC4038CFFAC12EB +:10F250005EE7C919FCDEA0F7586D2ADE80F1B44DD7 +:10F2600097ADA9443A7C45D891FE6C9E876EC0F15B +:10F270008A87DB93AF88F9E1FD0D8929A97884BFDE +:10F28000554AE2BE41FF7839D15588FC5842CFB784 +:10F2900045BF538FF7596C5B3649A37D0B35E6426A +:10F2A000BBE18AF132ED97EFAAF5AE35EFEB5EEEFA +:10F2B000E7E70CDEF5D71C477E0AF9FA28DEC2C262 +:10F2C0008A8EF4CA4D3FC62ED0C000C03C118C2B94 +:10F2D000525C32E4E6FA4FE4598104FF347956DF98 +:10F2E000559803F3B1633E9EA790BE47A2435B4689 +:10F2F0007CE501FF92FB101EF54894F2AA8ECEF633 +:10F30000927CFD5B3BCF1B3DBD6A3ED9F72FC9AB5D +:10F310001F41FBADFF372E86F9C5A72FBBB41EE3F7 +:10F32000CEA7575DB308DF9F9658BDC40FCDFA3105 +:10F330007FD53F517FE230E2ADDD43FB966AF0DFDF +:10F34000226FD27D3061BF5C05DFFFC3F1F334C0B3 +:10F35000E7EF7C67EF43B370154B92FE31F2796EA5 +:10F36000488F3E8EEBAC5C736909DA9FBB9C5A01F7 +:10F37000CA8B5D1DAE7294EB99EF83404207E38A1E +:10F38000341EDFEB079B04F364BEB2F49BE6F8C9BE +:10F39000B5397C3DDCCDEDE14218C8AD87E8A8A1C8 +:10F3A0007F22A783BFFBA24770FEB5EE9994CFB131 +:10F3B000AA89E7DD187938D7ACE5F55744FCD16E5A +:10F3C00097D9EDB067041D29419EF7AEF8B83FC24A +:10F3D00034C576BF93F5FC99991EB4D9567A506519 +:10F3E000133D84811ECA2CF4209D9B7EFEF4700F79 +:10F3F000F211E0F5CAF93CFE13AB050710F9E5255B +:10F4000095F8C5C88FB3D3FDB6E866B75C3A983FA8 +:10F410000C7ED851B1244727FADF781DADCB69495E +:10F42000C794166DCE660D9FBB1A9D11E43F832FC6 +:10F430000C7E08FBC4B9197FCD2E1F94515FDF42AB +:10F44000491FCC17A87FCCF47F1DF2893C984F56FA +:10F45000B0D055B8FFBB4261B18CAC14BDAFA8E2CF +:10F46000E75257F46DA1FDE0159B2576C6B46EE713 +:10F47000CE41DD6DC19B3670AF82E3FCF1BBE31280 +:10F48000A903EDC71D6AFFCFC6205E3339DFB57A09 +:10F49000A48318B7EF487FAB7D0CE06747AE4EF909 +:10F4A00078F67867C7E434A2EB1D578E23BD765FEC +:10F4B0008BCEA280DFDFE1C138EC6F593AD1FBD7A8 +:10F4C00000EF51F8FEFE9610BD073EF67B518E39D7 +:10F4D000432C08EFAF74F4361DC375F86D1AE53D83 +:10F4E000FCEDC7D10B703F78D7EC7513507FFCED66 +:10F4F0008EE804ADD43C8FC4589E77DE3756A633D1 +:10F5000090BAC84367E279741C7F9EA0F26158FFED +:10F5100033B074EFA5151AF69B68D747ED76F87BE4 +:10F520003D046FAE53E3F70F842B2BA1BE747A809A +:10F53000611ED4C34E7E1EC98ECFCF78B93E58EA25 +:10F54000E8D4717F6F9A376721EEFF790BF7775612 +:10F550006A6852E42CBCC483DFF1B859FB27B32A94 +:10F56000E97C59CBC1C89BA6FB86266CEE213D9752 +:10F57000561A09E2B99976A187DA8F7AF87D360DA5 +:10F58000ABBAF19CD284D27EE90BA5D89F42FDE9AB +:10F590009BA11F93BDB602A690518E79389D94AF62 +:10F5A000EC9DE4D650FEAC28A97B5B19828EF0EF6F +:10F5B0008C891EDA519F9AEC924D865D92D35183CD +:10F5C000F8F1363209E5EC0A6F21CFE3408282F18F +:10F5D000FE5A5237A29EC77DD5988BE785C7A6F005 +:10F5E000BC70AC635E389698178E25E685E37BCCBD +:10F5F0000BC73AE685631DF3C2B18E79E158C7BCEB +:10F6000070AC635E38963F6E895289F9E1F81EF35B +:10F61000C1B18EF9E0585FEAE2E7DC5949D45B8971 +:10F620007899562CE1BA7A7738C3786EE4B058C727 +:10F6300005DB97ED3A05F34C0B2BE423A43DA464C2 +:10F64000BECCEB74B2372DC8E3101DC1430CEFD70D +:10F65000522F4EA7FCF2BB5FF75199B6ECFB4CF76B +:10F66000619EB9EEC89E09D4B763D142B707F98B42 +:10F67000B56685B07E65877B2A63B32ADE5F77082F +:10F68000EA0F7A23ED68D3DE9D53FF920EF547BD56 +:10F690004BDB31F434B1BA269DD1FED8D2F6E3501B +:10F6A0007E0E9349697F8CD17D27E1A824F6C3584B +:10F6B000CC5DCCD8A9F061108D8C7DDBBBBCFDEBA3 +:10F6C0000CE35B3D314C8C546357B42F9B4AED9552 +:10F6D0005C8DFA5F5826A5DEE7C42F33DE8BFE97DC +:10F6E000B687A1BF175F93A9FFADF07D0CFB2FD2AA +:10F6F0002EAB40F9FABA4CFAF115A7BE95FCAB1D3A +:10F70000202F00DECB23FCFE8E89756C3F2B1484EA +:10F7100015C073E33CFE5099C6F54CA638DF2A832A +:10F7200064447F24A3E1FB444419B673E5DE52C56B +:10F7300076DF85F53E90CA34AE174E1531BA97A7DD +:10F740007FAA3B817A7E0DD2F3245C4FCE6F974720 +:10F750000EE8782FCFC41277390AE7C3980CC9DBBB +:10F76000D13D4B463BFB77D8AF6C7A6FB4631FFF3C +:10F770004541B9D0BE8BD1396B6F5142DF586AED2C +:10F7800057AE18BE5FD37764CF8E303E9346E8C73E +:10F79000E02BAF339C8EF4DC5FC6D765D9D25D0613 +:10F7A0009FCAE8AF7BBD56FBB13FADB6230DC6EF98 +:10F7B00048E3F4EEF5F69C28C2F6172A140765070D +:10F7C0001B9FC7FA6D7B65927BB90AAC33F4971B1C +:10F7D000D766A21C3925F8243BB066093ECFDEA3CC +:10F7E00030BC3F2AC0622A9E6B083089EEADDAA198 +:10F7F000762EA4730FAA44F9341555B75C5A01CF7D +:10F80000E72CFC80F86FCE4F6409ED945FF8385D0B +:10F81000CCBC20BD09F5EDA5178C9F857C7597EDB7 +:10F82000DC8C5186D2B89FD78DEFE17B69DFAB4D81 +:10F8300064FF55FA24D43F7F7B9FEB8937BCBCDF44 +:10F84000294E3E7FC63AC9CEDB1254E8BC919CC714 +:10F850004BA7DAB41AE9C0F9B09BCEE33A3F99E37B +:10F860004639DFFA91AB9ECBC15EB2FF9C9EA88663 +:10F87000E76B8B76CBB4EFD5AA7913788752467AAB +:10F88000F909BCAA8A2D5428FE9B71A142749F9944 +:10F890007E6502E333F71CF5D0F76ABA3B81F2BB11 +:10F8A000BBEEAF913A78DF5DAD901DDE1D5F162196 +:10F8B0003ED2646D12E99DD07F209F756FE6F1B84E +:10F8C0000C8945108E5756CC0F36F278159D3BA704 +:10F8D000ABB464937F0C8E2EC631E669B5F5742FF8 +:10F8E0004766AD1BE550E6C23A376F67BDC7A5ADA9 +:10F8F0000EFC8B52FEFEF338CF36761CEFED3158FE +:10F900003733F35EA910E3625FE0CFDAB2E6E98D48 +:10F910003E1CD77ABEBDD0E74EA23D9DA7F138A7C9 +:10F920005EC2EDC74211BF80E714CFC86BB3F2339C +:10F93000921ADA9B1362D67B61187ADB30BF7102B0 +:10F940000E55CC7FFE9FACEDC789F8C638DB79F940 +:10F9500032411F763CD9E79F17E8D6D0BECE8BF157 +:10F96000FC46FBBCF2020AED1F146A5E3EBF009F1C +:10F97000977D1EF3B43335A8F7ECF398CF7AB72010 +:10F980001D8E6FB63EB7C33BAFAE3B82F6ECBC12EA +:10F990008570329FF5B4A2DF6CACBBB7C8CABFA7F5 +:10F9A000BC0E714EA97603F2F1C4B80C0A20D5FF43 +:10F9B000A44E2F8B99C69BB227CB529F9A186BF9F6 +:10F9C0007EFAC122CBFBB29E6996F7171C29B7D4E9 +:10F9D0006726E759BE9F75A2D652AFEC5D64F97EEB +:10F9E000CEAB4B2CF5B97D2B2CDFCFFFD36ACBFBF5 +:10F9F0000BFBD759DE7FE6A38D967A0DBBD3F2BD04 +:10FA0000E1E7B060A8371CC0FCCCC04C945B06BEDC +:10FA100056A559E3E576BFC61EA7F6A7717C8FE60B +:10FA200037DD98C6E33AB9CB8A58D4F43CD030CD10 +:10FA3000520FAE2C67518B1EB3FA51ED9F2C5DCE49 +:10FA4000EF3B7593DDDD967325C55B374E75EA6830 +:10FA50006791EB95856E63263F2FF0DC243A0FBD4E +:10FA60003E237C2BAE3F9E338B65E3393C27E93345 +:10FA7000AFCF497EB0D7F70D6EFF15BBE92E256FCE +:10FA8000498245CB30AE158F14837EBCA72546A591 +:10FA90005212A17BFD9400A3F3685A493FD5B56A81 +:10FAA0005EBF224D277AD3AAE17BD3BC540DFA3135 +:10FAB000CDEB2599E779F4831FDE65F2C3ED7E7700 +:10FAC00054D31E3DCC52FE37F8B5C9CF50BB346A73 +:10FAD00057848E53F9F07E7635EB75607911EBA77C +:10FAE000B29B3515A13DFDB233E6180BED6FE87EF4 +:10FAF000712DC231B7C24BE7F4C02F7F28AD32E57C +:10FB0000979FCED40A505FEF7546769DC271EF5035 +:10FB100019EACD6B175FE6467970ED5425C4438C26 +:10FB2000E050A37FFE405688EB79A14714E6298672 +:10FB3000EFAEB8ABB81C9FE72A4DA46F73576A129B +:10FB4000EAC73FA419FAB182F44276A712D27544EB +:10FB50008D5E8BDF05E22C9484EF961481BE44FD0C +:10FB60007E1F23BD5B5432F938E269DCFAA4E4421B +:10FB7000BB29ACD3FE66D16B9F3D21F9519F023C5E +:10FB8000A84F1F56049D38C9EFDAF880427ED7C6C9 +:10FB9000E7540F5E11B571BB321305891FE3A8B39B +:10FBA000A09F1AAE8F8A1E9E9C407BE06E49DB4769 +:10FBB0007E4EBB2B847ECE83820E1E46BA007FE42F +:10FBC000746EC7560DDA4FF5EDA77CCAE981A35BC9 +:10FBD000B12CCB3F2D63B8E48262A9350BEA334BDD +:10FBE0000B1DD93ADAB135AD585656373A0250CED8 +:10FBF000A99330DD8DFD2A8DEF3B5CBD66F1AB68CE +:10FC0000E7D4F8DCB47F5034EF4FCB511EABA39C4C +:10FC1000135473F750BE085B633D2758E377139D79 +:10FC20006B48E7855492DDA92D4B4B209D839D2D7C +:10FC3000E1FE48AC86F5A0DD911F4E4AA80FA11D3C +:10FC4000EDEB69498F8471C571E15E09689E8DDBBA +:10FC5000C4681FB720DC27E1B9DBFCF5563AFFBBCF +:10FC60002FFA07A49F824D71CB733FC6FD00BF6D75 +:10FC700032973FDEAC683AD28F77465156ABCEE32F +:10FC8000768B4B5374F31361373D2CEC1D437E1B75 +:10FC900076ECE101FFF04002EFD17CB43FBA632A79 +:10FCA000CA856671DF4C7FD241F1A25B17F37C50AD +:10FCB000119F5AF9D79EF60CE45357FFB10C649884 +:10FCC0001BB9BDD5E5B1FAABD53E2EAFE6F8B87E8F +:10FCD000547780C6BFC0745F21FE41FF4F6EE6F6C9 +:10FCE000BAFA3B5F3C3383B1177C1CEE194F6BB5FE +:10FCF00018E72D4C6ACF50795294C7A114ED71E1E9 +:10FD00001154E44BFB7AEE6F0B3C8FDFED67DAF3B7 +:10FD10009AA9548BB445B87FCA7E2ED37AB17C465B +:10FD2000E700F6B765D1FDADAC9762EEACE08E00B2 +:10FD3000D5E1FB1D14AFF9AA97A1DFA1372B741FE2 +:10FD40009D7DBC096C409FCB743F518CD7DD2CBE90 +:10FD500005E9E88223D6FBB26626ADF55927ACF556 +:10FD6000CA5E6B7DCEABD6FA418157BC7FB5D8C099 +:10FD700003FCDF04F85F33308E2EF2E02734733B50 +:10FD800062B0DD63F56F98B083AE134B33B7CF6AC3 +:10FD9000775C27EC9FEB6CF6C4699F76652394E152 +:10FDA000AF47EFBD04F0146D76842480E1F70FFFB8 +:10FDB0006D12B783FA7330EEF4779F4EEB7AED1D38 +:10FDC00003F1C6D81453BCF1AED04B4DC750CEFD95 +:10FDD000C6C5B0FD42C7C9132DA897C62BA497B4BA +:10FDE00039EB1FC13CFE6DF81EEA5714EA63E89C2C +:10FDF000E0732AADCB36B1CF6EDCCF64C4CFAE108A +:10FE000074B8D8C0178BA5F1384C320DEDF30B8EBA +:10FE100030566AB307F9FBB00FDFCF4CDADF877DCE +:10FE200035B9035B86008244F8AE14F627D63783D3 +:10FE30003EA93865BD3765CC726B3D7442253B7574 +:10FE4000068B64A07C46D71BFB9921F01CB29D2732 +:10FE50009821F6DD66D89EE7A2730678CFADF0252F +:10FE6000128583F7D376EA4D12BEDFB9123C12F841 +:10FE7000F4669FD85F2B65A5B8EE0BF1770E10CF17 +:10FE80002FF3F3AFAED3537E8DF6017BD141E787DD +:10FE9000B615EABB512F69BFE0F7EA6A696CE64C18 +:10FEA0005F6ADFED1BE7427817FB40DCF2BB2D8C6D +:10FEB000A15CEF69713394F3875A34AA1F6E09521B +:10FEC000FD072D3A95475A4AA8FC714B88DE3FDD65 +:10FED0005245F59FB684A99E6CA9A7FABBFE9A3637 +:10FEE0007BDCD31CFF4DC53D81EFA653DC338A5B21 +:10FEF000D0EF7A38BD0DC43FD7F2B8F0E8FDF07806 +:10FF000031C64FD5A1FA11F1E50D711E2FDD501547 +:10FF1000A7FBBB365470BF23FE91F53E2727F48B19 +:10FF2000ED361CBE85DFD7AEF63691FF57E913FEDE +:10FF3000DFEDE40FB63EE4665B0B537EA0E1FFD934 +:10FF4000ED71935F6D91E7187941BAF0BA25AEB7BC +:10FF500098F53EBE29684B003CD3B4179FC904D125 +:10FF60009FC038103C2F0DBE5F4B7122519FA1677F +:10FF70001ECB32BD0F95CC5C906DAA97B84F2FDF8A +:10FF80008271A31D97511CA938BDFC996C531CE9C3 +:10FF9000140EC8E3446194BFFFBFE348BD5EBE0ECC +:10FFA000DFCEF96116C601624F280CF36B7E96F323 +:10FFB000C3B1E887A2DEC1381AAE3597F3E23C44FC +:10FFC00009BF5F79402FE812ED9F98F4C2F3247FB8 +:10FFD000845E28C88CC95E789FE866A12DFA88FAED +:10FFE000C141FBE23AD39DB3E95C3FF98BC67BB0DC +:10FFF0009E92FC7E3BAEDFE83D9EDF8EC974DF9BA8 +:020000021000EC +:10000000A91F7E1F6DC2B4CE0CFD2BAB9E28EBB199 +:10001000D6FFBBF490415FBB945EDA87DDF5F1D08B +:10002000747B61BA24E875006EF9DC9C143E283FAD +:10003000A1084BFE1EB8E728CE33DAA65AC6BDAEDD +:10004000D95A5FB9C95A5FB1DE5A378D27F4DDA797 +:10005000ACC7C22F9BF5EC9BE25C9AA167D7B0C2FC +:100060008BD1BEF8020BD13D349F8FA759FCBC97B2 +:10007000511752FC92DF37BC5ADC2FCCEA4ED13EEE +:1000800069E1669DECFB59E9865EE7FAD70D181821 +:10009000F8BD13D3F88597C81BF95DF8563D6EBFC0 +:1000A000EF6FB5ED9E4CDD164F70EBFC7EE782CD19 +:1000B000F6F8678CC7FBE15F78CFE160783EDDB88A +:1000C000467F6740FE53128BB8B76E80BE953E29BF +:1000D0000470ACC67B53107F9B59783FD9799FA1A0 +:1000E0003C97AB8CF3AE3146FA57173CB25AD093DB +:1000F0001DDFAB57FEAA1EF1BDBA42A678216B2EBA +:10010000229E263A2CA27BE09CF8BE60A7C4B225B2 +:1001100036701EF12AD147566688EE893BD3C6F762 +:10012000EDCFAC5C9A8B76BDB1DE800FCBB9C1C28E +:1001300066EB79C12F30AECF99F8BD992FD8F4B6C0 +:10014000B1FEAB6DE709FF817C94837A85FF5EC8C1 +:1001500006DC8F43FDC2F8BD6071658BE53E40BB98 +:100160007EF12F08C527A39F9729EBE8E7B5AD518E +:10017000EAF75BE371CE7318ECC27FE7A6F8EDF700 +:1001800032AB43BFFF57F8A318D0FE575FCEDE8FC8 +:10019000394DAF2C5FE046FA7829335426CFE484FA +:1001A000E1AE86BA27F40483BACB95BCB8FEC2543C +:1001B000DDEBFD23D57F95A53F8CF53DE92C5697CA +:1001C0008FFDF2FAB6F80B171F1F2FC601B9FDE31A +:1001D000F4331DB1EA14BFC354639C5EACFCF76EEC +:1001E0003A9F6F5A0DDBED70905FB9BB524AB5CBA9 +:1001F000C276D208ED16B3DDCA10ED7C463BD03195 +:100200001DA6F89D119F93053CE6F115B403B46853 +:100210003AFA0D772F5434F45FFE553872479B77C6 +:1002200023DBAD4E1CDC0EC0DE62C02F0F0D7F0243 +:10023000DF9BC7574780FFBF1A1FA3F5E714EF3FA7 +:10024000357CF0F9D6DCF3982FC0875731303D9AD2 +:100250002E8FD41FD8FA5B879E6FA7ADBF4C822F1D +:1002600018DD35227CC3F407F3DD6D9B6FA6D33117 +:10027000B83FE4CF24CC6FBCE0CF8CB9FC5C302B12 +:1002800053487F8C5798CF593EC4B89B78DDCB62DA +:1002900009B403B5C6BE3DE8DFBF52A265A27CBD6E +:1002A000E7E85C8AF77BB74B2114A95EB553C2FC23 +:1002B000D4AA359D354E78BE7713EB41DCEEDD9444 +:1002C000F0E0B9B7BD7D090FC6F5ABD6766D4779BD +:1002D00059D5964EB2772EEBA4B871E6850AE52D76 +:1002E000645CA8D0BE4366E6BC031877C998CBF31C +:1002F000CFDAB4EA036864B739B5C5A4FF6E6364A6 +:100300002F8D5FC3E34BE39BD510C6FDC62BA2BE6A +:1003100099DFCBECBDB55FD2496EF54BB8CFE09518 +:10032000A408FA776D611E5FF27E857549C42FD6E9 +:10033000B8BB57EADC528B7802018CFE4B5EF8F0BA +:10034000ED929FF313CA77C227E25BE1F6C6030280 +:10035000BF1358EF518C83B14DBC1D588E129ECBEC +:1003600037F6298CFCE4BC4D56FB67BCC67F3F4783 +:100370007169BBC97EBC5D61DF1C82FFEDF5F15F79 +:10038000E9E5F7BE8FF2DD68F502FC29A9ACF3F8C8 +:100390004EF8A7F6FD01BB9EB6FBFD4CC405484FC9 +:1003A000C33A4D107AABAAB46D01ED430CD2F3FC05 +:1003B00077D50CFA18E46775703FCAC5427127E516 +:1003C000A5ACA43C35C37FDB871F229D8CE7F7FFDC +:1003D000D8DB4BCD3B22A47F2F12FD78991BEF4138 +:1003E00072B9A0CCA29F9F72E795D3F96586FBA94D +:1003F000CCCFEF59D8223125AFDC3C5E1F3B47F90B +:10040000712067E0BB6DE93243BBDE881FA4CE27B5 +:10041000463464AE562DE446BFD73897F82571EFC1 +:10042000F6B6F4D0553508EF7FA84437AD41F80E45 +:10043000F5709ABE8A819F72EDDDE1CFBA513FD649 +:1004400032F24BD6F9E76FC3F3D7AE8FC6B1A82906 +:100450002FD2A534D1EFFBB83E2AB03C7F06FCE991 +:10046000A8E9BEC15A5F511DC2B345DCE3B4808523 +:10047000DAB0DD02B7C3B20FE0FA288F45B387EADE +:100480003FDFF2FC19B063A3AEF3E93FCDB2AFE0BA +:10049000FA68E230FD4FB6F5AF0DD97FAADF6C4B9D +:1004A000BFED0AE3F7E62EE7796B76FFE1017F6D9A +:1004B000873F67F03ECCB67CBE0F437F50BF38907D +:1004C00049E70DF6F8793CB1AE61A242F1A87CEBA8 +:1004D0007ECCC5827E8DFC80BA80FD772F4274EF82 +:1004E00071ADCFFEDC6AFFCE47195339185E39BDB6 +:1004F000A297FF6E964B1FE99CEF6B2D8CE2E1BF3C +:10050000F634ADC260D00FEF5EE26AAF823ACA2025 +:10051000B0939EBB7BC367F15CF26B22EFBE3DF0F4 +:10052000CCA4C621FC2BA35CA930A5AA7C84F7CE61 +:10053000E42494FB2B657EEE03A8AC6C89E91E9243 +:100540009530C12A922B09CBBC563549967D98D758 +:10055000C4797680A7B27188FD73333CD55923BC2A +:1005600077252B091EFC7DCB61E0A92E1F1D9ED790 +:10057000451CB03DF0D2A491E059A5F0F90DFBDE89 +:10058000D94BF859251BF16A2B3CAB18C7EFA8F0E3 +:1005900088783DC05339D27A213CD523ACD72A572D +:1005A0002FE16795F8FDCFA1E0A93E8FF5DAA636D9 +:1005B00045516EEE96B83CF265346FC3F3EC7F693B +:1005C000D81824FE107ED935D800F7C114CE4F2B91 +:1005D000F2DD74CECBE8771FC8A5B08B9F4FC7B2B2 +:1005E0000BF83C4CF77006A9FE28F87961CAB72AC7 +:1005F000A1F2F19610BDFF4E4B15D58D7E4AD74A1C +:10060000E4EF95AD97C8DFB3CFBB2683FB77BBF391 +:10061000B4ABD7A09CADF1F2FD89B5F359D89DF2EA +:10062000E718EB7906E32FBBAE6433D18F9E76904B +:10063000C31DA8CBA5BC08EFCCE3BD2D50775DA1B1 +:10064000EA183F065E8C703A63747F4CA32C6407F3 +:10065000C801CC73ED8B2DEC46F9519DC1E3C88DDB +:10066000F92796A31DD168FC8E1B46ADD1CE58C785 +:10067000FDF9689BF5DED915228E9B13B1C67D5717 +:10068000B09DEF67FBD9207F33C0663E87793E81FE +:1006900026558715A41009EAAF9C3AFEBB32579C39 +:1006A0007E5643FB95CD54C87EDAEDD1F2501F0142 +:1006B0005F909FE912E71A57DAFCCC15A3DCEB4BED +:1006C000BF91711EE732666758E3C61FB0D27BEA5E +:1006D000F0657E60C47B7DFBFD7C32865EB57F6706 +:1006E000C073B9909FFB5A9294A768C057A0F44971 +:1006F000A8272634272D79870C7F1FC564970D37CF +:100700008F7DD23B7923DDEF5520E2EA6047D3EFBE +:10071000B962376847DBE77FE5A0F957BF50CC8661 +:10072000E2171E2F5F71C2417140033F063EFE5F1C +:10073000F38D92C18C736B8C99E26B0E39E2C678A3 +:100740005541A096F234F1F9190B9D58F3341DCFA1 +:10075000BC2DE17DC883F2489BFB25941FF6BC505D +:100760003B3C469EDCC0B91B1F3F471764DE10FAB6 +:100770000BF6DF5FB85D8E929CBADDD1E32EC4F834 +:100780007530BA2D03E8E343B947AB81BA2FA77C94 +:10079000ED7EE86D65F39DA13ADC77CE1E3ADE680A +:1007A000E8B77B33785CED3535391EE3EAD7046B67 +:1007B000EFCD18425FAF6CFE2AF5779190B3F6F754 +:1007C0008F09BC3E28F4DE551B0EBDFD28EEC3EAA2 +:1007D000A5E5483BDE92DE06FC1DB0F80B13E9F7F9 +:1007E00005F68B7161A2156847BC1D8826324CF94D +:1007F000216E5D53F839AF9EB9F8FEA2FF53FAE4BB +:100800000BD05FFC529F86FBC47FA9705460AA8303 +:100810001D0EE8E731ECC7FDD10EA25FA39F9F7AC2 +:10082000FA1EE4799CD5F5AF820FFAD3CCBE71786D +:10083000EFC99319E3EA03C01F3FCDE91B87EFEB34 +:10084000A5B7B71D07BAFC29F21AE881BF67BCBD7E +:100850000DED8B8B16BD73E01EB49B273BE91CEAA4 +:1008600076DB39BF7C8DE703E56B563C9C5C3F3201 +:100870001E8E0EC6C35133FE0DF85F08869FC1E77A +:1008800000E4E5B324CCFB66A1350063784C8F67A8 +:1008900016AC7B9EDEF3D83D0CDDE3440DFE5E0519 +:1008A000F4F33CC7439CEE5F37FAA90B867F81FDCA +:1008B0009C5CFF5203FE0E9BE724DF977417B3582E +:1008C0009A9FDABD686E171EA329FCF72FF83AFC31 +:1008D000470E974755999C7FB2845DD2EAEC0C2E67 +:1008E00086522BFEC6973468D751D8B97C28BA7B7C +:1008F0004933F24FF9B99E36ADCBBDDAF4DDFB02D8 +:100900001FBFCD0DF7211C4E917FB5A38AE3CD7F8C +:1009100032BB9CFCA5625681F753F83239BE01EE1A +:100920003FD1F7733BC9E9F714F3F9EE28BD97F20D +:10093000803DC1AFF3B2B88FE2811ED6E3C6F5FEAB +:10094000F09E8FB6B555E13C4225580F66EE8C639C +:10095000DEF87EB419C662BC73671CE370FB40AF5F +:10096000E13DD7B1B14EF29BECF3FA48ACFB0F037B +:10097000E10F11BF83F0E4EA3B700FB4DF3ED549CD +:1009800071D38BE4CEE5AB919E16F9486FC3F3E5C6 +:10099000E6733F53457FFF1794B4EAAB0080000035 +:1009A0001F8B080000000000000BE57D0B7854C58C +:1009B000D9F09C3D7B4BB29B9C24BBC9E6CAC905C0 +:1009C0000912707335688A27043068804540628355 +:1009D000B209A0511182B76E95AF2CE642C05023E8 +:1009E0004AB5A5A51BAA967EAD6D54FECAAF488335 +:1009F0008045458D97225A2F416D2BAD95146C592A +:100A00002D7EFCF3BE3367F79C932C046DFFA7FF8C +:100A1000F3C7A71DE6CC9C9979DF79EFF3CED9F126 +:100A20009285900A42D67F6E6F081513D266EDF15B +:100A3000CC751022157EEF162991902D26D2D24723 +:100A4000EB07973F7EF4917242E2E5E25281D0B229 +:100A500068A0BECC4548D72B05A522AD274AF4A9EE +:100A60009BFEC343CA7D4E428EBAFC8912AD9F865F +:100A7000BF4B08B1CB92D94FC779C5A3244974BEE7 +:100A80002CE29D53465FE95A43BC4BE91294A4BE45 +:100A9000B8B23C4232E4BE9FDD4387B193508D290A +:100AA0000FC74987FEF670D7DFC4C4E838D33C8A45 +:100AB000079EBF0473D2B22A99E0FCC6BAD943821A +:100AC000E2245A863B0758693F02E388A43548E888 +:100AD000F8E6BA6E1C570CC7633F31DC3D0075B3B6 +:100AE000E42730CF8F057F11CC430E0A665209EB05 +:100AF000A27F32EDE750889FE2EBC92436DF59E749 +:100B000029EC3CDB3C15679A4790D83C532E73F890 +:100B100043B4FF1413F1F71547F1FB3BC98CF03ECA +:100B20002299B05F675E4F83CF116D57CBB86413C6 +:100B3000F6A3E851605FDBA56DF6664DBF21D8478F +:100B4000FAFEEFD39469B07F5681F8A0DF862AB60B +:100B5000DF8907534B615DA490945F319190BC6431 +:100B6000B6EF749FEAB1FFE41E4268FFB842B64F89 +:100B70001B8A371119EA9E87B08C2F1A4478E249F4 +:100B80009F9D78613E12ACF3C07AE9989984344A0B +:100B90001D5DC16A4252446F11B44F4A7EA0CB3CE6 +:100BA0009990DE14D63E8ED6A13D167CF11CBE4433 +:100BB000808FCEF352B91834D1759F2013B7897442 +:100BC000A9895592B9993E6F96D4752B4D88773285 +:100BD00048806E7BC9D01E1BA5F36095E07D98C24E +:100BE000E90CF629768097F490B9B4FD068E9FAD96 +:100BF000741A42C70D9E47420FC3DACD3D04F0B1CF +:100C0000D54AD70EEF675AF1795C617F915FB3CE19 +:100C1000FFE1F34E4EF6AD027CF592C1F1A420BA8D +:100C20001F46786EE7FDEF4B576E9746A0EF29976A +:100C30007DF2937BE83AC87956EF585AAC1748834F +:100C4000769CEF4B22F6FB3E5F77CA3FEDAD23F17A +:100C5000F994154F1D7DE40CE37C8FBFBF9197077E +:100C600097BF565F06F2E0A0E815287EEC45249871 +:100C7000908874B011F975F906A477254B32031FDB +:100C800053BEFFEE887C9F4AF95E1891EFBF178331 +:100C9000EF1F18090FFF023E7FF84CFCF71D697427 +:100CA000F8FE10F05D0125DBB7AF8AEF7DFCFDA7F4 +:100CB000CF8EEFA763E07B17E0E91CF0BD0FFA8F42 +:100CC00080EFFD9266FE3875FEC2C8FC2FE27B867F +:100CD000F9ED302F1BF715ED3E2A6368BB00742D2C +:100CE000317D41E455848EBBE57287B4813E7FD26D +:100CF000A5BCFE6FDADF2367DADF29C0CF171172D8 +:100D0000B134AF2B58FC2F99EF18C0116BBE5F7038 +:100D10007A32CA0B23FF9B92D9FE53BCFC43AA181C +:100D20002E277B09A903BA79D2E5FF92CBB199208E +:100D300097B6DE91226CA07DB3957E2199CE773255 +:100D400089CDB75292713CF5BDADE67EC10CFD5B1D +:100D5000252128E8C6B325BB638F675C075D5F7CF0 +:100D600032CA352521B902F697ED5F0A45188CD7AE +:100D7000C6ED88DE949E1690DB1E2EA73D5C7FA8F4 +:100D8000F505E94A2ABC4FE9260DCA13E5E2ADA6EE +:100D90007C26B701AFAA9C56E131F9426410F44AAF +:100DA0001551402F46E5FDD50FABF27E9903FA9B16 +:100DB000713D54DE8F8175A627ABF4C7C68BB5CEC7 +:100DC000497C5D93F83A2745D75994CCF4DE042842 +:100DD00063ADD388A7D1AE7721D7E774BD15C91508 +:100DE000B1C7A39483FDD47D8331480625BB76C665 +:100DF000AF730E16A0BD5613D1D33E05C65312A431 +:100E00007DA9D040A47818778B95C24DF775CBF2A9 +:100E10004D3556BA9EDED55209D875992D4CCFC99D +:100E2000CB737B453AF7E57C1C239D46DEB7F68DF8 +:100E30002F2B46BCCC81792EA966764312951B30A8 +:100E40001BF03F652292620B7ABC74BD5D42D0D329 +:100E50000CF43FD3E17D183A38E6E3FA8DE3AB2595 +:100E60002177E9E89738CACFD27F2DF6971282AD65 +:100E7000BE73E96F0BA27D11C5636A09A2CB3EB4B4 +:100E80002F95D6155B72C9065A5DC9E981EED30D5F +:100E9000B84F0E0AECE4285E878FCFF6ABC6D72A90 +:100EA000009EE38AE854F4699C8F3EA77833C93DDD +:100EB0006410ECA3424A1FC530DE1B385E741D650A +:100EC00065FA759494C13AA2E377AAEB598DFC3B7D +:100ED000CAF5A8FD62E385F50BD8132711CA7B2755 +:100EE000E358199C4A9B60FFDE8B0BB551FA18E75B +:100EF000F16F64F4DA7AA16F229617B0B29F801C6A +:100F0000C4A1E8DF257607CA4D72CAFCC9A09D3D81 +:100F10003B4DF9874A4B9205B61E5924FD7102AD2F +:100F20009341E174C239CDFF2326B7F4F32F0ADCD5 +:100F3000E99D5646B1904A168F64372E027B9A3E41 +:100F4000DFCEE5ED3B96FE1C90738D9EA9DB019EE6 +:100F500061FD03DFC1F112C960502C07F412B41710 +:100F6000616FB24A19BF823DF84432B3C79362D869 +:100F7000774FF0F9547A5ED83195E4D3D2662741A1 +:100F8000670A2B934A919F7626239F33BDAA5C9EC6 +:100F90006C1684283C2A7CEAB8FB0D7CBAC8CAFCD3 +:100FA00085772CA4E1310783AF54B39E9B3D35FB7D +:100FB000B570AAF019D77B604DC03B8DDA11CFAE6A +:100FC000F163991AA8251FA6B275C695E2FE052DF4 +:100FD000B43493816B6EA64BB099FC03B0EE9BCEFC +:100FE0003BFA5D2FC5CF80BD6CAD89E26B653D6D71 +:100FF000CB1B3D5D7C557AF89628BDE3CF8BD24163 +:10100000DBF49206174AA2AC9907AB68FD25EF61A5 +:1010100007ADFF39396BA687D27FDBABDE063755CC +:101020000D399B4E76755339D1365740794B255B38 +:101030005C0DD8713359FDB37BCB6606415F5C25EF +:10104000A0DDF0397D1FEB7BF4765C947F3A70BDB8 +:1010500095A94C6FB5D50831FA31F9F63FDCEE6948 +:101060009B75E67EB7A4F07E57D37EC5B1FB5DC904 +:10107000E70D804B027667D884F2B64DF9E04581E2 +:10108000D6F754DB64DC8F723A601ADD8738BE21F4 +:101090009F2563FD65BE1794BF1252E8387BBF6180 +:1010A00043BDD073597C08DEDB732AA51BE47C8F1B +:1010B000928FE2C946E9C051CA4AA0630BE56B9121 +:1010C000D7393DA7C0389D7942B9AB00E59319F6F1 +:1010D00027169D3D3FF6CD5CB09B283D65A6203D83 +:1010E000093D606F0DD80BBABD74DE953B45AF4D21 +:1010F0003E039D0C83FBB803F4B011BE57AAC4385D +:10110000C1311C0F14EEF130EFEEECA18317D0715A +:101110005EAE3199EEA2F3ED9D6C1B3F88FACE379F +:1011200001DAA9F58AFA6D147094A5547C1538BCBF +:1011300087FD00C7292BD3977C9DB363EC97E8FC10 +:10114000CC01EB03B840BF50386A605E3167301B9A +:10115000E486BAFED1CAC7FA9461F2B13EE50CF258 +:1011600011EC801466C77DB692807DCCECA35872DA +:101170006B51CA39CBAD45295F416E69F661E957BC +:10118000A127BAD388670B473BADCA12AD4F817F09 +:10119000D3F728770CDA0AA2742F8449BF3391D190 +:1011A000BF9D6E599BDFEF4915638F3FCEE3BB0DAB +:1011B000D665710D8AFE73D89FE0F0FD099E697FA8 +:1011C000A68B9FB425517979BC5A40789530050992 +:1011D000E52D755934F04CB177A31F944465A6B939 +:1011E00088CB65FABF64C54ECCF6683DB54ED2D506 +:1011F000DD3E8FAE7F7A83AC6BCFF017E9DAB35A5E +:10120000BCBA7A4E6B95AEFF9880A2ABE705EB7443 +:10121000FD0BBA7CBAFAD89E065DFF710FFA75ED28 +:10122000E3432DBAF609DB5B75F5897D015DFF0BA4 +:10123000760675ED25FD5DBAF6B2033DBA7AC5C0F6 +:1012400083BAFE171E0EE9DA270F6ED7B55FFC7161 +:101250009FAEFE8DA19DBAFE53883938C8EAC26997 +:1012600094B426D9ACEE9349D74E4E53B97C9C1218 +:10127000A640F7D7572278833201F21A28A4FA76CB +:101280001EEB42E60D36D543B08CD45B3E82F7822E +:10129000F43FD0B7148B1F69C79942E5B300768736 +:1012A000D7127D0EEB7967E6513209E7FD28A2AF30 +:1012B00069BF1A929F24D379A71C104988D6EBCF17 +:1012C0004257C3E112CE0217F1F6035CBF13BD41D2 +:1012D000781854060AD362C3A5D0FF00AE39D048AF +:1012E000DF9B1D26A17E610438393CB3AB0433F08B +:1012F000DD307809F3FB8DF006DEF9DBC47D9A7DE5 +:10130000FB6B8AD3057C4DBCC47B5A043E73E07AE8 +:101310008FBF41E50A898D879AA01DF56A8D2284C9 +:10132000006F27D70C4DDC377604783D244A27140C +:10133000AE3859CF8709457A3E747A3D67A6A32017 +:101340003923BECF865F99FEC7ECB42133E0774ADC +:10135000B5407E90171BBF73CC9628FECE01AF9E82 +:10136000548AD784285EFF4EAAE79451FC297392D1 +:10137000CD104735CA39157FD41FCA4D75C7D63B26 +:10138000135299DC3C07BD332155ABA7CE5DEF94DA +:10139000A57E05BD43F542552AF85766BF7C2E7ED3 +:1013A0004D6D2AD3AB1ABD50AB5DBF118E885F5314 +:1013B000CDE2E0AA1E238502F24FE764B20DE2758A +:1013C000735299FF1BCBBF99C3E78DFA37C7CD5A2C +:1013D000FF46B1A5C7835CA076C27C588FEAEF9C1C +:1013E000284FDD0726EBA7A06BDD5AF89585D06F57 +:1013F000B470370F87BBF94C70EF5ECBE215BB5F63 +:1014000012BDDBE8ACFB5D62BF9BC2BB894C0C41EB +:101410006C453D77A9F313C6A7E67BB783D347D7BF +:10142000BF1CF6A54EAE11AE77C0F35558C6A2B795 +:101430006FA79EB39DF3EDD4AF67E7ACFD2AF436FA +:101440007A3FABF5B09F82D4D6C1F0127C3701E36E +:1014500099EBD613F44BD6AD657ED14F389FDDCBDB +:10146000E15FEC62F453935885766D87E044F9D8D8 +:101470007184F9179D162144581CF94158FFBE8C00 +:10148000CA24B0574F1C7CDDE1D7F83BEF70B80F92 +:1014900071B8DFBD2D027708E1BE9DC3DDB0646386 +:1014A000850EEE6C09E509C817310AAF55EA2340ED +:1014B00097334407C2D95E484236D44B4AFDF4B450 +:1014C000683CB73D9BC9E50490CBB46E07B908FEF4 +:1014D000AB6CFE00E45817FD0FE533C83D3ABFC5BD +:1014E000439F6BE4701CC83DDA3F81B0FEAADC5319 +:1014F000FBC7114DFF11E4E153A95CCF58493A9362 +:1015000087ABBB26205C7E8FD69F32CA43B5BE6FA9 +:10151000B0207D7004FE51CBA4AA8F0B0A75F6DEB5 +:1015200090AE9E5A172E28D4D97BA4505B4F6FB033 +:10153000176AFB67F8255D3DABC5A3EB9FD32AEB8C +:10154000DAC7048A74ED7941AFAE5ED055A5EB3FA2 +:10155000B647D1D5C73D58A7EB3F3EE4D3D5276C5E +:101560006FD0F59FD8E7D7B5FF12FE01FE7F30EEB2 +:101570003285D2D32FA91C047FFFE3FBAC97E1395E +:10158000E491851E38EFEC705F69D7D2A3B1DCE738 +:1015900066741BAB5DE5DBDD6B7CDE69747FFAD7BF +:1015A00034E8F8B88ECBB37D6B5AB0FDB935ADF8E1 +:1015B0009CB8181F995DA6A00DCE29769A8ED812D8 +:1015C000817E5B83409F3F16FCC4057C7C403013CA +:1015D0000DDD824504F1C04BC2743E0DBC35E42ADA +:1015E000EF340D3E6AED4DBAF6E9D2F5BAF63A8A15 +:1015F0008F8BA8BCBED4B34AF77CA6FC6DDD7B6B99 +:10160000B39B1F043E5AE7B112E0A37584E151C5B4 +:10161000EB3A33C3B38AD7753B9B3D608744F04FA9 +:10162000265DA638A2F8F7B82670FC5FEA01BF76FF +:101630005F32C5EF19E8F86CF835E2F5003F8FAB83 +:10164000B3EACFD92F73B1789E5A42FC1FF0FBD278 +:1016500041F1333F427BE63886717EE3BC545E55F0 +:10166000BAE8B87F1DFBE6B59BC870393DC325E1DC +:10167000BC7526EA58517BA7CED25387716DEE8F89 +:101680009A0586F30EF70C2F9CEB4FE3F441C81D2F +:10169000D87E9BBA2731F064A682A45F238784BCDE +:1016A000050D2087EBDC568CD7D5F17C00E37B550C +:1016B0001C1F5F979EBE321D71FA50E948A58F58D6 +:1016C000F2DD4C5AE1308F981D5676CE173DB7BBF0 +:1016D00016F96560647E31EA45E3F801E80876931F +:1016E000839DE76147B0FB0FA4A2BD140BEFEBD6BF +:1016F00048D9664BB44E4808F1B94E60FA931ABC0B +:101700009E2B9C383EEA45E271E0F8002E9C675023 +:10171000795F04F9096BB93E7DC4ADAC4638E09CF5 +:10172000751471FD47DCBE3617B32B8B10CE51BE3E +:1017300017BBECC1F5D375CB5ABCB9E8BF07805EC7 +:10174000CD3D78DE71BF43AD07316FC457C8CE3F82 +:10175000E264D6AE9E67A5FB4304CE4B12CA099C39 +:10176000881313F403FB2A6140319510F2B8EBAAF9 +:10177000CB3CE3697BA1DF63F262FD05B31BCEF5D1 +:10178000681DCE22C9552FECCB063B543A5FA0ED25 +:1017900076F382170E7C03F344B87C59F002C8A19B +:1017A000DE489DF4134A87BDF191BA62A73E576F98 +:1017B0007EA41E84FA567E6EFCB86BC10BED0E8CB7 +:1017C000033E0A783CD86E0AA27D489C21F09BFF1C +:1017D000D5E730BDC58F1FC807FBCB63F68E95C11B +:1017E000CE20BAF7DE7259599E499AFF37B01EE7EC +:1017F000EA217407EF2E4E71029D47F72164D80746 +:1018000086775F51889F4385705FC6783E0BD6D040 +:10181000F9C65433769089B401EA72BB49EAC70726 +:1018200029B84FA6A256C10A790AC5440279D5C67D +:10183000CF05138AD879A76463F6F06B9C4E8FB8F6 +:1018400058BEC4112EA7923CF7B37CA13A13F64FB1 +:10185000E26514FE76DEDFACA3B7573CFE775DDAB7 +:101860007341D25F5F44D7D1DB9E9202E76335EDCF +:10187000A65B419FFC98E741D07DDA85FBE44D8D66 +:10188000F7B3F8ED47C02FC3F68DC375B67D8BB5A2 +:101890005FAA3D1AABFDCAAB441FC067B2FB372F2E +:1018A000A0F3DEB433B544A4783BD420960FD0FA2D +:1018B0008A67D2F11CF614C7D74AD3501AC8ADAE06 +:1018C000FEB53E286D3B9A825932C82D59E7BFAE0E +:1018D000DC5583790677252456C37E1BD771E8D45F +:1018E0006F5DB00FF59FDB7C285F64E6FF2F46E657 +:1018F00042B0DE007FFF1AAE4F6437DB9F37B8DEA1 +:10190000BA46B57329E372BB55384D4DF6F9BEA6FC +:101910005980BFE60691C079F1E2683B8B230498B9 +:10192000DF6FA7FF815DEC27C933803D9B82FA788A +:10193000C032E29DE1A6FD9774199E73BB78992190 +:10194000AEB0B021AA574EE0FF87101FF365268F77 +:10195000E77B134290DFB0C0A7D7476F7E292EF6F2 +:1019600051F80FC1BB74DD87168DDB06FD8CF8B80E +:1019700031023FD3DF11FC207228BC3EC10AA915F9 +:10198000467C18E18FE0CD80872673C90CB73C1CDC +:101990000F46F829C610BFCB287E211F23163E66AE +:1019A00088F51638675B3257403D69C48F110FAA1E +:1019B0005FA3C2F39A0A27F11E4AA0F37DD86D21D6 +:1019C000A0BF48FF25785E3787F7D3C083FE8B44DE +:1019D000FF637120797F2AAC93227303ED372F6860 +:1019E000D1F93DCBB8DFD34C7C491087A3707E1072 +:1019F000639F75FE8F71DD46B866717D61F49388D3 +:101A0000B9BF18EC32BF9BC78F26E9E347A4DC3D82 +:101A1000A2DC35FA4B2A5D2D0ECCD5D92502F14733 +:101A2000EA5201F8EBA2FC512AF89B96CDA006E7FA +:101A3000DA87CCC857E2A224E0C7B9C42E3B68FFBE +:101A400016FA10E09AA3C4615D1DEF788F50077CF1 +:101A500079331D2E80E7C90ADA6F8B59175A06F7BA +:101A600000FE6EF658711E4A679F69E92C161E82A9 +:101A70006EEE2F4E2293CE05FE2FC1E660F1B37EAF +:101A800088270F09F6D036211AD7A0FF0C5AA9A82B +:101A9000DC0C4C3BD2F908B5B7407E8E22CEB1D9D2 +:101AA0003D425C4D3D2756E9F31ABBA35F6474F7D2 +:101AB00049843E74E7C47E02718CCECC1BBC806F1F +:101AC000553F523B27E4A61BD219CFE218AA7C8FC0 +:101AD000077B45847C0CF3175A3A1DA69FF72DDD32 +:101AE000DE4B71E1779809E815BFF0510741BB72F1 +:101AF000C802F4B5386039AE7DDFEFA452A418D621 +:101B000071910465B3879D6F3713E6379120EDAF70 +:101B100089E3FA61DBE8737FDC8AEDA602D66F35D4 +:101B20009CF17669C6CD8F8E6B9C6F987E328C6FE0 +:101B30001CA793E73B755ABD030AC4F55E104BD64C +:101B4000426311B327FBDD269D5E69B6A7669B53F2 +:101B5000A3F50F321C0D5AFDAC96EA7B2ADEA27665 +:101B6000D8099D1D7677C75F5F3890A3B1C3827F88 +:101B70007D01ECF8AF6A87FD71F35F5F68A7783984 +:101B8000F9AE0DE5FEF1BAF81010A79AA760A666A7 +:101B900043520ADACD4128ED812C8447CD5B48952C +:101BA000BD02E0F55310C674FD66999DDBA59ABD94 +:101BB00082973EDFC4ED19FCA374B02945EA0539CC +:101BC0006CB393F6B814788FC1ADCE1719B7C82B84 +:101BD00048C5B1E3815FB8CF39FEFCC5487C72D0FF +:101BE000D4FAFE7F815DF88248206E7BB5E7DBF892 +:101BF000FCCAC0122CAF0A5C8FA5398DE933EA6F9D +:101C00009AD32A404EBD7EF5B7C0CFDC61C3F8DB66 +:101C10004DB71FFD6E850CF8A1FB0DEF2D5BB219C2 +:101C2000E266E25813DADF5D39CC3F16D70AE80FD7 +:101C3000AE97AD753BA074D594A6019F78124DC0A8 +:101C4000AFC7E319BFAE774DC3E727DF5DE769A6EE +:101C5000E3C47BE2310B435C9B770FE4BF91E7E980 +:101C60007A09F025417DDC696565611ACBDB2B4C77 +:101C70006378CD4E63765097C55FD45A0C79A5B082 +:101C8000B9513CD8CD412239E0B9199F8B8280F6F9 +:101C90004D67BCBFE8360DFED471ED61CABC65234B +:101CA000BD6FC5E70017BE9FC2D6A3F69BC8DF9FD6 +:101CB000C8D7650F27E07C9D29745D0EED3889EC4F +:101CC00039E733239FFCD05D5B02F85FEF524AD3C4 +:101CD000905F062D2027AFF11C382C248E46CEB104 +:101CE00078ADF394D03F06ECEE1A317417A5C7789F +:101CF000419A550E7E688D05F304068A5C4E88BBBA +:101D0000BF6A969C29148E5ABEFFBEE9D4FE64F4C5 +:101D1000EC9E0FFB327D49E506368D5DAB6F5E2D87 +:101D20007E7C602AC4758316F43716DB83215897AE +:101D3000C6BEE1E776D46EAAE4EFD1752E9E262AC0 +:101D4000718923D881ED649FD6BEA462621F9C4B2B +:101D5000BEC7ABEF4F3BB100963F48246BADA0B57B +:101D600037A93752097601FB5B1CD0DB4746FBA93C +:101D7000B9DCFB5CAA0CF8E8F3213E269A912F46C9 +:101D80006B5712722FE2E9EE694FD8E562F0A7981F +:101D90005C704E7B5D013941EDA005E5142F73A603 +:101DA00089523FEDDD1D301190A31BCB2DE83F6C18 +:101DB0002C1A7CFE12E0C772B38CF180A281F9B5B7 +:101DC000D85E21815D34005364607F164F773842BE +:101DD00063417F57FCCEBE44432F1BCB3F180F7A85 +:101DE0006C2BA7232A061DD32BA3F803FCC8284479 +:101DF000D7E2FAF6DD118FF2E9FD6E91C7ADA9A128 +:101E000041F1EDF4307E9CCEE3DA4B360B98BFB354 +:101E1000A4E2508D8DF65FD221205F2E5E2D1E81B3 +:101E200078E2E280DE2EF3B7527B4D463CEBED3597 +:101E30006ECFD1C1AD40BFA3B5E78CF6C9FD69DC5B +:101E40003E2925A55AFB2496FFA4DA27DD44D9C2F2 +:101E5000F887CDDF6C66E751449987F89D2E7EF2B6 +:101E6000FC2514BEE3E5F9F9808F161793B71B0321 +:101E70006FDBC1BFDD784A443EDF6AA5860BE43BD9 +:101E80002756FF642D5DDF9E3BCE4FFF10E28E692B +:101E9000567EEF437EA01AF8E0050BD251AC75D9FF +:101EA000032229A47C1F1710B054F7C51988236694 +:101EB0008DBC71F27B2AEEF221215F235F7671FEE9 +:101EC0004C5ECDFC6677390966D1FD5A21E76F4338 +:101ED000BFD42C635CC99E239702BFAAFD7F2CB0A0 +:101EE000F8A075678D02B1A131741D309F4CD701E8 +:101EF0007A2E2F9080F5FC402A960581642C0B03E6 +:101F000059D83E365080E579813C7C3E2E3001EB3D +:101F10004581322CC7074AB03C3F70319613A89ECA +:101F2000837EC5811A2C27062EC7E79302F3B0BC27 +:101F30002030174B6FA011DB4B024BB02C0D34E15E +:101F4000F3B2C08D582F0FDC82F58AC02A2C2B03E8 +:101F500077627961A00DCBAAC05AEC37397037D6B9 +:101F60002F0ADC87E5C5817BB1AC0E6CC176D5DE6E +:101F70007899F3D5ECE46689E51D78BD609F6D8D99 +:101F80002187FFC9F5CA0D69CA876915D17E22CF9D +:101F90000B37F63B99A6BF4765B2F7DB0BD07F2F17 +:101FA0002805FF7D6BC0A4E07EE5E56F033FF838B0 +:101FB000DF1FBBA555C912A2FE7AF234761F60C599 +:101FC000CE268C3F92AAD451C57F3EE07268AB39D1 +:101FD000484C98BF4FF0FC29AE704080717A8B4D11 +:101FE0007520D7EF2E3EBE07F87A5685520E66AAA8 +:101FF0001CEC3B908FF2AAB61CD639219DDDFF9BCD +:102000009CA698D2E9B863CADD97CDA3ED63DA4DFB +:10201000E8CECA44AA81BA3C8DA07C53E32BBDF123 +:102020007A7D5890AEDA7B83F743FFAD9985A54C56 +:102030008FB0FB03E29DF9E83F6EB5F60B66907337 +:10204000D4B1795895FDD0BFB3F911B0A3F2BBBCA0 +:10205000CFDA61FEA0B70CD65B90CEE258793DF2A4 +:10206000D438BAA08207956721D56D6CC83F359EDC +:10207000D6C76D0F3E0BE5F8BED0D404806767FF6E +:10208000B3E0DE4DEC1F9CEAA0F50B0E90BD80D6B0 +:102090009201B9D649EB658795BD108EAC18F4D77F +:1020A00026C23E59436D89743D5BDF23DEB5B45EC5 +:1020B000F5498F086E4164FF6DA4F531CDBED8E5BA +:1020C0001E05F09D7DAB84719AADE6C1B8E4E2E1F6 +:1020D000FBD30B70039C541F80DCCF5686701FB25D +:1020E000CB496910F741BAAC08F781D1CB9C744158 +:1020F000DD87B2748863C54B35D03E349D48DB68BC +:10210000FBEC892694D7D68E7CD42B2ADD51FC8E0D +:102110009FEBD4EE031B67ABC14E8D85DF39FF21EA +:10212000F87D8FD3732CFC02EDB1F8E999F9D89FB3 +:102130001EE1E345E915B1FB75703C19F1DC6B223A +:1021400007A8EED1DC8BA17B08CE2DA7EFD1E2F55D +:102150008EFF10BC2E4C3F335ED138CD88DE438CD1 +:10216000256F603C807B0439877858F14C1ECAB9D2 +:102170007B385EBB7EC1E293AA9CB3EDA8E98738A9 +:10218000A52AE71AD3CF22BFB89CB1F23846342E25 +:102190003B11F5DF163ECF5197F27DD867E2D1C7EC +:1021A000D7BB4D520DEC5F700ACB5F995DF5AA224B +:1021B000E2FEC8785F190F4E007F89C521D8BF3C69 +:1021C0006A2F98E9BED37FF64399502C99E09EA8D8 +:1021D0009AD742A4268F96CF547D1EE543951E5272 +:1021E000D01F043A85FE6FF17546C711585EC3B71C +:1021F000337B3768E45FAF231BDF53FBC7A2DB935E +:102200002ADDB63F8E7A23A19AD90749ED2948C71E +:1022100049D3FCA06934F4EBB702FDBE9E2EAAF7A9 +:10222000CD4645BFAFA5337BE7FF36FD6E4F27B8E0 +:10223000CE31D5D21EC83F1A43F58E0C7C594D7154 +:102240000DF17C8F15E59F4CD8FEC9D52C8F8FE200 +:10225000AB1FE29D419333047A45B40D4D03F889D9 +:102260002D5902FFE7A8CB7F04F45B2C3E9012E4CB +:1022700012D8CCE3E99F5FEEC880BC74291EEAC780 +:1022800068BD1BE20D298384D7EF76647CF5F8C422 +:10229000F1074EBE08E7440BD2952158CF5197EF76 +:1022A00038D0AF324EC2FC35958ECFA6FF557E8C0E +:1022B000F28F54A2F24F5331CABF535ABE8865CF32 +:1022C0003CC9E5A5D363D2D1F3703E4F417EA27CD9 +:1022D000CEF887D37FD78E33F3B9BADE7F9E85DF02 +:1022E000D7CF7C3B08BDD5B8A99DC74FD475C6795B +:1022F000D83DCCB87A827E8993C74FAF87F8A900C2 +:10230000F751ED67899F8674F115356EAADE133794 +:10231000E2F93C8FFEDE0EC8A3C78BA3F010EE4F90 +:10232000DDC2E7ECB9CB9B04F70B822FB338869A5A +:102330000F5E0FFFA6700A5E01E3483DDF617C3748 +:102340002B9B84EEA2EBAEFF42200A5DC7C12F4457 +:102350002C8D71D359F43DB01B0E0AF6909DF6DF1B +:1023600053622370BE76D06942BFEEE01101F9E0FE +:10237000604902E649ED2BB910F3208CF9516AB996 +:10238000D0DF3462DE98113F0BAFDEEF807DD922C3 +:102390004DB5E7A15FCACE195579ACF6BBC213396A +:1023A00067ACF7807FB374A89D3E21ED123B675464 +:1023B000E92FC3B1E37985FE336339B32B33496821 +:1023C000ADE4184ED7AF78FC57C2385BA2E7780768 +:1023D000CFA3F377C9FC1C6F6566753E1DE0FB91CA +:1023E000733CFF4CE8AFA4F695001D6EF13EF1B3CF +:1023F0007B687BBD8DFAA92087CBDE75C91077AECF +:10240000D8EF067CCC32AC5F2DD5F899D11FBDD664 +:10241000A38F979F289F87FE6FAC78B91AD753FD7B +:102420005288DB4923C87123BED5F91709CCFF2494 +:102430001601E5D841E83A19E544C00374D7CEF255 +:1024400009149B80F9042F9597E17902F1A6F273A4 +:10245000CAFE6CED39A5BA1EFA7CEC48E7978B6290 +:10246000E473DCE3617A669185C52B8555FB17C162 +:10247000BC8B4A6C02BBB7C5E874313B2B23DFF140 +:1024800030FF66B1771DE6F11ACF23BEE361F76D29 +:102490000F5AFAB3251ECFF48E409FB1F072D8D2F6 +:1024A00083E75E87978904FCF297FC17A69311D601 +:1024B000AD966F037D50FC5F0D38A9D0EC9BEC1AF4 +:1024C00071FF0F431E8E65F8794FA4BD290EE3DC22 +:1024D0000D802FCDBA7772B8DFE425B1058B20CE01 +:1024E000DBD5BCD94EA89DBABEF0784590E27D3DC3 +:1024F00019AAD806F261B513E3060D4D7FAF583B1C +:102500005183C72A86C7C57BD74B40AF0D79EDEE07 +:10251000A0661E233EDFF430B8E2383D7713E5694C +:10252000CF48F18FC2F98C2EF6C679FBE9FCF6DFB5 +:102530001594821E57E31F300F93D32C5E7BABC4E0 +:10254000D601B2464BDF0D81153AB911171648482E +:102550005B37F760BC332E6CC6E7463EFA912772B4 +:10256000EE867CA4E23BD6FEA9F8363E57F17DB854 +:10257000697D11C4E3BAE247B693E233F4F174E340 +:10258000F9B77AEE6B7CEFCF9CEE4FF827237D35C1 +:1025900058836347C3BF2A7E0E9D5A2701BFD8F9CF +:1025A000B9BA7AAEEF2C4AC173FC430D229E4BC4DC +:1025B0008F957A21B7E543AE6754BDA79E0FC63A03 +:1025C000EF731ACE0DE38A685D73FE63D47BEA3E37 +:1025D000C63A2734EE933923C6F9600CBE51F9E5AB +:1025E000154E8F67CB77586865798CC6E7EF44F056 +:1025F000FEFD059574AA5B2A4C12D0E146FABF2075 +:10260000F04DB905F39DDE3A652360E7392B4C3F69 +:102610008138F7E1A6B7E6D7825CA8B0E0B9443FBD +:10262000E5FBE5743DEB39FF47E2AADD6268AC00EB +:10263000FE83A03BB78D2FB4EBEAB32A2CA89F37BB +:10264000DE5F12027FA681B073BAF5155724F5D369 +:102650007FBF5568C5F1ECEB053C57B27FB9CE079B +:10266000FBDDDFF44003C653C75A93413EAAF48012 +:102670001735E0FB0F129B63EFD8CA2BE11EF7FB67 +:10268000DD1682F9C742F4DC58A6F6DF92BCF234BC +:10269000A0BB41C807C4F3771EE7255C3EF0B8AC89 +:1026A0001A0F37C66763C565471B8F55E9C54817BD +:1026B0009766E8F9F71CE2B2B333DC23C82579BE8C +:1026C0004EBEA8F248950B6F73F8DF2AECBC1ACE09 +:1026D0008BDEF2DB38FEBEF7D29A72C80F33E37D91 +:1026E00055FB973F9D0EF440AE17468CC76E56E5DE +:1026F000329CCF1745F17C953F9A7708ECDCD8A245 +:10270000CF3B34EA85D872EACC72282583D947AA10 +:10271000DE00FD90E260FAC1E48CD2FDD7D5130D46 +:102720004D1DDEE0442CB7C338F68278FCEE8C9168 +:10273000DF8D725E9DDFB8EEB8B04842A95AFE94B4 +:1027400099BE89C8792BB647EE017C2084DAE8501F +:102750001B5CCADDB0DF77BB946E286F70291B331A +:1027600034E3B759583EA36822FEC7D09EF6615E97 +:10277000A3DABE83CBED8E1AD66F8FBBD2F3075A86 +:10278000B61D29F158200E9FC1F2BEF639CF9C4FDD +:102790007D0FA79FBB411E8D8DDAF11BF97E52F094 +:1027A00015888F74587C1E6DFCEEBE8C64F6FDA8F7 +:1027B000C98F0F409CB44D32490205BD8D9850AE73 +:1027C000B62B8EBA1DC5F01E83BBC3A93C1CE4F614 +:1027D000D00227BCCFCE05CD0EF3175A7EDB013ACF +:1027E000D81D85CBB8DE1D194C0F6C74294F00DE47 +:1027F0006E77293BA00C988336C077C03EB29FF21B +:102800005406A3EF0DDCCE21C481E78238AF38AA8D +:10281000EF25EC8579BE250609F8D5274DDE8FE139 +:10282000BEFC68EFD7BCCCE7D7DCAF7939C33D42FB +:10283000FFE87DE04F21FFA246269F856091FC1EA8 +:10284000939AE749EDDCDFC1FB0B3B46CE9FEC25BD +:10285000F219E3540E3E0EF5AFDFC960FEF57B19A9 +:10286000CCBF6E07794EBC6C9CC4B38C43F184E73B +:10287000B8A3C0DF5F18FEFC83E8BF9FE3F726FE26 +:10288000C1E95D83BF7F648CC08F2AFE4EBE3B2EA4 +:1028900009CE1DD5EF6418FBA9E7F56ABD2B593F9A +:1028A0007F6729B7E733D9BE75BA99FFEFE675BBE5 +:1028B000E17B0EF67AF61D1235EF411DC79DE964E6 +:1028C000E71F9EA9EECC0ABCC78FF9009DC9FAEF9D +:1028D00015BC9A51E3CEA4FD9232199CEE4C46A74A +:1028E000BDF9ECFCC0F8DDB3B7A17F05946C5C2AA0 +:1028F000A4C6033EADA238221E3333D9FAD57B627B +:10290000EA7D9D251B45DD7D1D557F2E7986A07EA8 +:1029100087734FE0DB58F96BFE22E93908D9FC9D3B +:10292000145B216FEBEBEA55C06742CA70BD5A9A3F +:1029300019B1B7BCE7A85727678EA45789B7482BAA +:102940004F55BD3A6838AF514B1FDF976EEE6F831E +:102950009C04B90CDF4342F96C66FEE8A64416AF4E +:1029600004FA83EF23F832F5792E6A5E8D9A4FA32D +:10297000E6D7A8F93491EF8218F26906AD831DE914 +:1029800074BF86C613BC6F97BE48DA930E7908D31E +:10299000640271A7CE3C925805ED25262FC4E7931B +:1029A000E74B9D165A4F9609DC74877B8941271D9A +:1029B000F7F6CC3C064770DE1E083525C9D20C0F51 +:1029C000ED97D420E3F78FD478F2C1F6BBF0FB2A61 +:1029D00011FC70BA4F92591CD52E33FFBA86E4A071 +:1029E0007D1EED17F9CECF758C2E599C193ED381E3 +:1029F000FEBA371EEDD3D970A28F72A00FF3DDEEB1 +:102A00004BAFBD09F649E51FF8BED4639AF8AB3168 +:102A10007FE8763E4FACFCA1F8458C1F8DFBD8C3F8 +:102A2000F7F1BB2EE54E5CDFA9D3A745CD77C7E80C +:102A30007B04CEDDE25C4C9EC6C9ECFC984802C625 +:102A400075ECB2DF0FEB89F354492027DBAC8E2EF7 +:102A50000102B24B4D04F2606BF9384A0311FE5883 +:102A600084A97284C94B33F9A34AE722078ACE3B73 +:102A7000958348ADB6EE04BAFE5AC70B9F0B10BF44 +:102A80002B6CAD81F8DFFEC56C8C4D31E2DC6A1E2B +:102A900055246F2C78E54BBABC31CBDC97F4F9FBAD +:102AA000735FFA3AF9FB8F66CE7D09E2B2FFAEBCE6 +:102AB00031553E1D16FD87EFA4F85D40850AF86785 +:102AC0000BE8888B303EC9FC84F91CCFC12F289EAF +:102AD000ED513C1FB6B0EF462CD8F53CE2D1329513 +:102AE000A1DA724712EA21D51FBDD2DE331DCEBB5B +:102AF0008F598726C1BCC79E793307ECC277FFEB9D +:102B00008413920DDE370F39E1F9C7AB5F77429E30 +:102B1000DDBBAB453C27BE86DBFD8BD77C5909E787 +:102B20001E2F73BE28CA52F6676AF41109B851BF46 +:102B30005E1FA22BD3D8CB376E4FE0C4C6EA37F561 +:102B4000A5EAEAAA5EBDC9C6E2CF37FE628F358B21 +:102B5000AEFFFAEDC9E8177FCCCF633EDE91D30B11 +:102B60007259CC32F1F97D87607E5817F8C5EFEFC6 +:102B7000B2917E944B0316C2FCE47A218DE54DC2DE +:102B80009F715DCFED4EC071976D66FAA089E236F8 +:102B900040F1E8DF753DCA7DE3BA97BDDBF75C26FF +:102BA0005DD7B2F5EC7B09D07F35E46306585CCB8A +:102BB0000897512F2CE99B8B7E62F3ADEC9CA7F913 +:102BC00087ECFEAA514F2C25DEAE6ADA65598FFEDE +:102BD000F975BBEEC679AE33DC0735EA8DCF33B974 +:102BE0003F56492E3C4DE54D9B233FE94CF70F3FA7 +:102BF0005EC398F1CF6BEC587EB246C2727F26A3BB +:102C0000D71B77EE792E0BD979A012F4EDACE76BD8 +:102C1000EDDF24D1B884B9775EFF1619E891C75566 +:102C2000B93FB288E3DD42581CE2BB3C1E2F4AC6C6 +:102C300078FCABF3212F20E860DFDF51E3138B003A +:102C40005E4D1EF3A2B3C4273C595C5F5E48E1466B +:102C50007D59FC8A4CCEAE2F63C11FEBBD9B4476E1 +:102C6000BE627CAEF2C57EAEFF963E34B71350D83E +:102C7000F6CC9F72F17B423C6F4EE47811F9B98536 +:102C8000480C797241F206D1D0AD912EAF838FDF1F +:102C9000821E71B0F7ECC4BE16EF09A8F4B86B231E +:102CA000E24DA517B8096482180CE9F798AACE7E00 +:102CB0008F80D29DAEFEA9653017E4C27586EF2FD6 +:102CC0007C2A8CECAF9C9F958F78582A2B33402F11 +:102CD0002D23BE4E09E167F7BE3E36F73C7727F05D +:102CE000F34302013EBAE9C9477F0D72E8865F6D82 +:102CF0004E043974D4DC9306F32D7FB82311E4F627 +:102D0000C7E66022BC7F34C4E49171BECE2C81FB47 +:102D1000378A43A0727205FC13367E697036F0D98B +:102D20003F1EB648A047576EB7F5C3FDD7153B18F1 +:102D30001E69FD08ABAF437CADDCA9E7B71B7EBACB +:102D4000394D66F7D3B238FEB24014AF78C882F17D +:102D5000D2156F88F0D932B2920C217CC6F7611D72 +:102D600061BA6F2BFBC4266BD2F0766AB958819F8B +:102D700056727B71A5C12E6C89116FB92D8BF337FB +:102D8000A7738A17BC671EA4EBC1B05088C9E1B60F +:102D90009FD914380F3AFA767A2FC4433E79E8C5A2 +:102DA00044A1384AF7EAF7BF3EE92B38A37CF894F0 +:102DB000F34744CE737D22EFA40B8433D95DAC5C22 +:102DC0006EE94FBC98E26579AFC51BA48F973F2A87 +:102DD0002AE09A91B76C185FBBF1D1FD872EA2EB68 +:102DE000B9F1318BAB9E81E300F9ACEED74AA0F389 +:102DF000D2E8FEDCF0C47EAB3C913D873C77759F0A +:102E00006E7C6C8F15E2E7467CD6F6EDB1323E3330 +:102E1000EC57DF9119A07FDB7E76D20AF47074B78D +:102E200040D2F386BFDFF2F08B89D04FDDAFC8FE12 +:102E30000DDBB7FED94F95633FCCD38CB57F57825E +:102E4000D0AC40FAFEE55374DE96B76D5E80BBE50C +:102E500097B724C2FAFF646E6574FEA38E34D0B7B0 +:102E60002D96609A84257BDEB2F536A4BFEB5EBD5D +:102E70000DF3F9297D6700FF52F83200AE653F5C23 +:102E800080705D4BFC487F2D3F62F7C5FE6E267556 +:102E90008F8DB09FA7B2987CFAD3361B1AF37F822E +:102EA000C33890BBAF8921966FB50AED0CF51E3083 +:102EB0004A625AFFBB9DEDCF6B5CEF122EC756F2F4 +:102EC0005E2B1F5A8772ECCF394A3AF03BC5834ECE +:102ED0009E89AF4E4FE7F20FF37FF13D2A226AE160 +:102EE00039F41FB028719374EFF178149BFF563EAC +:102EF0003F5D77BC70012DD322790A03B08E150295 +:102F00007B07E806F25CCFCF667046F8FDA1F56C52 +:102F10007F38BF7FF60693232B4273EB500E0C587D +:102F2000FAD3A15F68CF7C01E5802D7ACF59CBC75A +:102F30000F59381FEBDBE9BACC82169FBB05B4F7FB +:102F4000AFBD9FF6D3D81B2B773079BC12EE51EB77 +:102F5000F288191FAAF1FDEB0CE72B6A699403FFB5 +:102F600030E8BBC8F9C00FDD678CC7ABF6D6724B33 +:102F7000E8911F00BFBE65437B66F9A316CCF7FE40 +:102F8000CB2FF61EFA26A5EFBFF4A97CAA97AB4675 +:102F90003E6D797C0119894FFFE2F29111F9943E5F +:102FA0001F914F5DEC7B19FF32B91AC1B79E2FAF4D +:102FB0008B2157E5EC61F643D2C5B4FAE7FFBE7149 +:102FC0000CC847235E557C1AE5E3D390E4E01E2E3F +:102FD0001FE9DF1B448347157F2A7DDEF0F39B70DA +:102FE0009E08DDAAF4A9EAA9087D1AE1D5E3D1D8A3 +:102FF000FE079043EEE8BE5BEEA27E31E4B53D23D2 +:10300000E23DAD63F25022E4FD77C4B138C03189AE +:10301000D793597DC86DED0479A13E1F8A63F73BB4 +:103020008EF986129335FED9915D6222C4BB0743A7 +:10303000CC9F36D21F444A61FE41EE6F4F171DB937 +:1030400001F0A77A0A4A21827FBCDDC2EB63D9EF87 +:1030500008F03C923F10DFA18B619DEABDACA062FD +:10306000CEA0785CC240242DCFB725421C66C9AEE5 +:103070001BF1BB534BBBF5F05FEB988FE7BBD7DE83 +:10308000AFBF67781D0959C18E6AF9A1FEF90D5CC1 +:103090009EDF60A01B3F8F1F1AE9E63A956E4A48F3 +:1030A00009F37359FEC7CD5C6E4D178BE734507C26 +:1030B0001F3B20E2B9CEF15D22E904387FC1EC7FED +:1030C0001264F9022B28DD6AE38E9F005D8D8BADC3 +:1030D000973FF95FEF56DE49BB2CFFF5EF276DA157 +:1030E000E527BF7EEBBCA7A1FEE49BB9BF27C3FBCE +:1030F000D7EEFEFC1A904FC776DBF0DEE7B1DDBFFE +:10310000CDBD13EA4FD9BCB0CE637731FF36B8DB03 +:1031100089FAFA580EB3EFDA9E39396910E52DBBFA +:103120005FBD299BE57F1DDFF5CFF7E0FBA0C777EB +:1031300051A8409F727F6AE55371E81F1F7BE664C8 +:10314000A5F6F70DBE2E3C2BF8F9E0312769807CFF +:103150009B63C92CFEB4F2E9C9988F7FD38E3D568C +:10316000B81751FB9B2F27817C39F638B313A8FD84 +:10317000BA154CE61F65577FD742F1FC29D874D4A5 +:10318000CFAFCC593D1BBECB3A1C2F0C0FC7281E0E +:10319000002E8A9716908BB1F0B1239B9DE3FCE73C +:1031A000E1E36FD7C0FCCB775D88F7ADA37811144E +:1031B000F6DC897943147EF67CF7C949E0379F0D28 +:1031C000DED7FE3F8377E83F165E46EF816C19D766 +:1031D00069A4FBE174FDE4ED58FFA5D38BEB1D253D +:1031E000BF4B39FFA9F0FF7BF67B52CE7FB67C8BBD +:1031F000BDDFCFF3FD764AE0EF1D7BE6CB5C720EC0 +:1032000070CFFA7F14EE885D63F2DACBE9FADE263E +:10321000A10535025A1B6867B439581EFAC0FC3C38 +:10322000FC9D1FC2FD86D902D3CF811CE62FA8E7E3 +:10323000B8B35DD7A21D315BD9C8EFAD99703D031E +:10324000AEAA47368CE027CD5144B4D75E5E4BE73B +:10325000A7787AD96992DA647C8E76DB023FB3EF85 +:10326000162897B3EF87BA0E34C0FDCD39557A3F93 +:10327000E29B06BF606183BEFD4AB2CD0D71FA2BA1 +:103280005B2C2424407C58DFBF2187DDEF5A485A4D +:103290003B58BCE59CF1827E1DBF13481E36E0659D +:1032A000381E381E59F76178B3F9995F6823C6EF65 +:1032B000B7DEACC39F116F84FB8998D5618AE2D7D2 +:1032C000A6B0FBA29AF110EE083E39BECF15AFC6EC +:1032D000FD391B9EEFCC61F98A463C474BFD7706D2 +:1032E00008B7076747EC4107F2D32B0F0918777E21 +:1032F000A56A497709D47F21A01DF6F7EA3262A7B3 +:1033000070BF6C213BF19C455164A992FD7E00B4D5 +:103310000B55BFC5387F529549E75F262BF13AB868 +:1033200052EB527475B72F53D73FBD215FD79EE143 +:103330003F5FD79ED552AAABE7B45EA4EB3F2630E1 +:103340005557CF0B5EA6EB5FD07585AE3EB6E79BBB +:10335000BAFEE31E6CD6B58F0FDDA06B9FB0FD6685 +:103360005D7D62DF1DBAFE17ECBC4BD75ED2BF415C +:10337000D75E766093AE5E31F0035DFF0B0F6FD3C7 +:10338000B54F1EFC6F5DFBC51F3FAEAB7F63E829E9 +:103390005DFF4BC2CFEAEA35E4455DFF5AFBEBBA6D +:1033A000FA74E9F7BAFE977A3ED4B5CF94FFA26BD0 +:1033B00057F7FFF2A213BAE770C610AC04FF84FD02 +:1033C000CDF2FE53378E99F8303E6C85EF9815405C +:1033D000F71E2CE3491F960E7E0E593FC17F3A0718 +:1033E000E8756BB01388EBE5C92773F177F8AAE7A6 +:1033F000E9F20CD5EFB9CC81DF5F488C9EFF2786C0 +:1034000045D25F46E9302C60298513487F2AA5C341 +:10341000701C9629E1547C9E1A4EC6D215CEC2E786 +:10342000EE70069669E1022CD3C379587AC213B0C4 +:10343000CC088FC732335C86EF65854BB0CC0E5F0E +:103440008CCF73C293B1CC0DD7E2F331E11A2CE5E6 +:10345000F0E558E6856762991F9E87FD0AC273B141 +:103460002C0C37E2F3B1E1ABB03C2FBC04CB71E1E3 +:10347000262C8BC23762393E7C3D96E7876FC1F7B9 +:1034800026845761591CBE139F4F0C7F1BCB49E10B +:10349000362C2F08AFC5D21BBE1BFB9584D76359B2 +:1034A0001ABE0F9F9785EFC5B23CBC059F5784BFDE +:1034B0008F6565F827585E18EEC5B22AFC732C2775 +:1034C000877F86E545E127F0BD8BC38F61591D7E5F +:1034D0001A9F7F23FCBFB19C12DE8BCF2F09EFC157 +:1034E0005209BF88CF6BC2CF633935FC3A3EAF0D6E +:1034F000BF8AE5B4F0EFF1F9F4F05B58CE087F88AD +:10350000E5A5E12358D685FF82E5CCF0512C2F0BA1 +:103510009FC0F72E0FFF0DCBFAF03FF1F9ACF0E7AB +:103520005846FCFAEA98DF59319D06BFD89132CA55 +:10353000EFC53DA83B377A007E448CCAC539ABD96C +:103540003DF4CE9A13D3D05E5D6593F9FD50835C54 +:103550003D85BFDB009F9965F9EE942669FBD59CFC +:103560007E5FA9DAEB063BA8B3747039C43536E642 +:103570000D2E82F2FA5CA6E7FCBCBC2E979DDF34D0 +:103580004F60FA74D1AAB1181F27AED1C1F133AE82 +:103590001FD4FE1FE4F3BA6328177F776694E38C89 +:1035A000B6DFD9F29066E7FA57E7227E8DBFBB33CC +:1035B000EAF7DB732BBED6FBDD679A7F9DEB765F68 +:1035C0001354CD8A7916DDAF46BE5F8DADD7617CD1 +:1035D0004CFD3EFA20FF3EBA6DB93E5ED348E55C35 +:1035E0000D9DA7F15696FF6A6C1F5408DA39EB96C9 +:1035F000B3BC9EC66C13F66B349CA312D287DFD784 +:1036000068E4DF1B37B637C7881BFE34577F1EA31D +:10361000D26523EFB36EB988E74527DE60BF73B587 +:10362000D76D25605F0FDE6443BA265D2CAEF87B54 +:10363000F7AF7364CDF94C1395AB0AE5BBBD377D8D +:10364000CB0374BDAEE3310B9C8F0DE6ACC28F0390 +:1036500044E920C4F27872089E97340657E1F7E9EE +:103660004911C9467B8EE3D36292FB008F24D78E2B +:10367000F71E45933EDF7AFC1816DF57CBF74D0C4B +:103680006FC1BB583C7B9DB5B508E27F90E860AA4E +:10369000E4FB648271D93807AC6CDF3FBC376F1B29 +:1036A000DC5FD2D869F180BF46A2B7DB7E979BCCA6 +:1036B000F99EE1FD43FE5D55F813543A2840BAB037 +:1036C000C27DC946971DED3FF8AEAC99B24663CFB7 +:1036D000DC1BC1DE7C3FF2DD0B0A53258FD3D1F713 +:1036E000FCAB1394F1749FDFCE65E7838D414B50A3 +:1036F0004B171681AD97AC15F8F9477039D41BBB41 +:103700006DF9EC9E265F07B451B976D11836CE8795 +:1037100002C74B0E61EFF1FC045B777208ECE246E6 +:103720009719D769C951AE81BCB4C66C1FAE9398C6 +:10373000876E6B82FCB36C09BF7B666B5FA5803CB8 +:103740006AEC5EBB0AE83C02979998AD54BF36110B +:1037500096A744BA05F67B2E5AF828DEFDDD02C294 +:1037600047F8BA3EEA10189D6F64F9E7EB725AF118 +:1037700077CA88D977F84DCDBCEA7EFB615EBA2E58 +:103780007FCF93DF12D0AE6679A47E989FAE63316F +:10379000BF0F68C49B9FEE17E077823AEF7F391125 +:1037A000FEE1F37AAD732746D7ADD24BE36A279E8D +:1037B000F7A8707708BE8626C0E7461BC2D908EB7B +:1037C0009914C543C5981426277266E4368FB01E37 +:1037D0008C156BE8C548671613DFE75CF67BAC2AEF +:1037E000DDAB74533886C97BB5AC1D2370BAD49C4D +:1037F0004789F05CFD5D40F6BDB24B89FEBCEAD264 +:10380000EC5578EFF67D9E3724FFB8770EC417FB92 +:1038100073F97B726B11E6B3F2F9E99F827C04FBCA +:1038200049C76F74D8713FBD1CAF46BC18E57F6AAD +:10383000649DC46FADE4F902F9F05C66FAACDB8616 +:1038400074A8EEEF0791EFC52AB9B82F12C71BA7CE +:10385000EF21AEFF8672D9FB404EF03DB7E0BD369A +:10386000A473753F8CFE972AC7DF03BFB218A30964 +:103870002827F7262D1660BFAEE0EB7473FADA63E3 +:103880009B83F75055385AB8BC71C5F89D8016FE19 +:10389000BEC2DF87FCB5D395E8C7126DBC7CC918E2 +:1038A000FDF7C866384D789E75F90323E76BF4CAB7 +:1038B0006CDCCBEFE9FBEC35A08F8556948B9BD766 +:1038C000EA7FA76B09DF8F47797F22A59CE5770206 +:1038D000393E02621CD8D13DE13FFFFC57905FE7C3 +:1038E000B3A2FC8F23833FFF159C8BCF67BF0BB721 +:1038F00037E918D613EBF3F13E2DFC4E16E459CD03 +:10390000E0F3A9E3DE5765AA83F3DDBD4973329680 +:10391000D2F6FBE75E292CD5ACD36D4EC2FC3F8AB4 +:10392000DF8C16DEDE42DB775FF1C709A057F62E8B +:103930009456437EA4BD9E7D2737259AD71807FD50 +:1039400061DE160D9E52EA59FB9E79333296D1F70D +:103950007AEAEF9A0CEFDD3FD78ABF97755F5DB0CB +:103960004AD4D0256D0F82DFBC6E1AC1FB3971D9E4 +:10397000A5AB4134C699D71C807BA2A49A603EE1D6 +:103980001EDB18411B3FBA9DC3A914B2F9D6C9FA70 +:10399000F3A3E765FEFD903C169F7A3661CCA94201 +:1039A00090B7F526F8455DA6DF60FC42F65DE54D73 +:1039B000C26019D045AD2855035FCDCAE3E7D65C98 +:1039C0001FAAF7672D76F6BBAC96281FDB4F7379DD +:1039D0000E7C69E1FC74BF2AEF3398FCD0F457E900 +:1039E0001FF586659A351FE47F5F942F517FE0387D +:1039F000741D96F904E5DEBDEA780B54FDE1134031 +:103A0000BFA9F2DF329FEA0BDAEF3ECE4F84F832E5 +:103A1000E66ABE1BBE8F8F7F5FB6EF2A1FEA63493F +:103A200080F64D8224C0FD91A739BD46BF3F2009D5 +:103A3000686FF17EAA9EEEFA06BB67DC15910B6CEF +:103A4000BD560E37D55704FA5BEB4D2847ACD54C25 +:103A50008F59A705516FA8BF4B6CF168F041A27058 +:103A60001C1E9387EBDCBCC08AF0DE9B2185589C32 +:103A7000C997C1F165C2FC567015287EEECD91AE96 +:103A8000627AA3157F4F7B936A0F9809E207D1A84A +:103A9000D9174BA195C58314F6BBE196AA20EA136A +:103AA000CBFC5FA3BCDB14B527146B1ABF9F4C493A +:103AB000C15A674539FB1EC79375DAAF51DF18E16C +:103AC00050F54A64FF0CFB3E4CFE1BEAF7CCB56692 +:103AD000C07C9BE9BE003D6E167A1E5C0AF294D251 +:103AE00023C8F3AE7A167F5B5F6C42BD49DA3DF8BE +:103AF000DD33279FDBC9EDDFF70AA74AF03DE5FB81 +:103B00008B889787E6F03B67D1EF6792EE48BC0C55 +:103B1000DE2B5F751EECCF06391FE1BB67D6A63AD8 +:103B2000B8AFE22831A1FCB9DFF701DEBFFE0DD747 +:103B30007F177D3C509B44DB53EB25BCBFAF3EFF62 +:103B40003FFCA8754E008000000000001F8B08009D +:103B500000000000000BB53C0B7854C5D573F7EEA0 +:103B6000DDDD249BECE6054102D9CD73531E2E8189 +:103B70004080281B5E0D427013A2A009B8BC428091 +:103B80004022BED0DA66213CA2C51A25565AF9FD5C +:103B900057A44AAB6D83524B2BE246AC8D8F6AAC77 +:103BA000D862554C15111124E20B2B95FF9C333331 +:103BB000D97B3701A4F65F3F99CC9DB93367CE7BA3 +:103BC000CECCB9630F8555470A6349A5CE0295311E +:103BD00036BEAC85B1A1580FB200947796FCAD6C9F +:103BE000CC28C612869ABDCCC5D83D4AB859857A2C +:103BF000F012C67E01FD1D93C3CE49F07E62BAC9A4 +:103C00000B55E69B1C2E1D83F5EB55A6407FFBF163 +:103C1000941233F41FAF24527B2BFE7311FEC38228 +:103C2000CCC6589326EBB1FEDA74780FFF1CC75848 +:103C30007AC8D9121C8AF5966A06E3B16CABF31701 +:103C40006EC6E2E14F5B12631A33B33950CE35339F +:103C50006681D2EDCA642C15DACD2C6C2A60CC14A6 +:103C6000579D16B03356961C68F043590AEF990BCE +:103C7000A8DD964CFD15C60AE1A15AEDC57E8CADB6 +:103C8000626C346337D8083676067F13A0FF33257D +:103C900003FC00476B099BD306A57D948585651FB2 +:103CA000847AA8B16ECB36D6B57463FD569C17E006 +:103CB000DCE77028885F27A00CC7BD47E1E3CB791C +:103CC0008B5D26824F964F5B5CD7231E9E8E8D6741 +:103CD0004105EB3018D2E1637308F1C298B778D68A +:103CE000B0C8FB0FBB2CF4DE3EC735344FAA98E7B3 +:103CF000E0EAF7EEF82DBCD792EE32A9AE48FFA964 +:103D0000022EABE8279FCB7269068743E233BABD28 +:103D10005AE07343E36AF65E4EE4B905C783FE8555 +:103D2000FB034DF129880F57817EDE0A31EF1D59C3 +:103D3000BE0A5721D19FFAB37DF98A7B987E7C3EDB +:103D40007F525AC0E7C376670563637BC3214BC6C6 +:103D5000D652FF8340FABED6732F8E874811EB658B +:103D6000A7E139D0BF095FCD8AF4BB56CCDB83A76E +:103D700078933F04FDA7DFCB1AFA1A7797C0C3F4F4 +:103D80003BDB3EFB2BE099CDB6787F8172B306E832 +:103D90006BD78FCBFBFD41AC9F398129079C6B3DD5 +:103DA00041EA3749EDFAD48DF200F440F9DB987E10 +:103DB000379BAF83232CE0FD4906E3E3AAD58E4071 +:103DC0001FF492E5EAB73E19F6AC8E3FD7B9EC295D +:103DD0008787C01F63D89833EAF9DFFFB2B17BD879 +:103DE000B340EF8B618D244F6FD94D28474938265A +:103DF0003C7B6BDADD3605F0F0A917E082A5DA51DD +:103E0000C0017EFBCD6A28487CEB8BF1C747C6B367 +:103E10009D52992F19F8E69442A5D9E5A275D85C70 +:103E20002D0CE1B0A471BDB4CF3181F83A59D0AFB7 +:103E3000DD9AA1E8F120E926F9291AEE8068BFD6BB +:103E4000C5F1546A0DCCF1135F1518F86A6E06E7D8 +:103E500093683A3C6D62B538EE93C7DEFDF1C5B0AC +:103E60009ED44AAE3F8B115E1DBFA4567A8B49BFCC +:103E70009C066CEAF032751AE7A368B8166670BE45 +:103E8000589861842BBADF72C1BF127E397E82A03E +:103E9000E5D4B1307E1FEF49BE93EF1D3C35EE33C4 +:103EA000E4A784140E5742654307D5B319E97BADE7 +:103EB00088F9709C4919AB6CB14339BF2DB3237F8E +:103EC000590D7C76A9DAB73CCC73733C3F139771DC +:103ED0001AED86750673A2FC5B99B71DED02333BA4 +:103EE000483E9887A521FCEB198703F4B76B3ECCBD +:103EF00073959BAFB355E1F2D321F45EF325AE6D1C +:103F00006B15B203C12EBE66CB19E427B007A6D14C +:103F1000F81C7E99867686ED1FB81239BE989FF9F7 +:103F200041BF340BBD8B3FA59F780F0969EE66E555 +:103F3000D0AE5502830E073AC0B866B43BC5FEE565 +:103F40002C81F7D746937EA3792CA5D02F2102DFB1 +:103F5000C6B12CB416E6DBA8B0986CD4D365262F76 +:103F6000CA2B33FB062C467B5ADCCF7BBB2B32AEF5 +:103F7000A508C68579B4341DBC02174C0757F47ADE +:103F8000BE7F9EFA6D8A7F00EAB3A3195C8E1299F8 +:103F90006B00AD0FB40DCA5DAAD9E10B91FC5C3E7C +:103FA0006011DAB9F22B95459C5FCFA8A349BE08F2 +:103FB00086F6D90DCC6547FAB5301FFA07D98CDEE5 +:103FC0006B39BD393C01F865F38C8A6C5CEF5E940B +:103FD0000B781E33C3A4607FA7CF591C181A996FA2 +:103FE000EFBF6207D4E8F864EFC4C32317C1FBCD69 +:103FF0003916A7E2227A70BBF6556CE817F0F7A4E1 +:10400000ACDC012E5DFFC9821F3657067C0CC66FE3 +:1040100076F75316E8DACBDD9CBFEF2CBF72003386 +:1040200021DF3592BEB0323E2E5BA7D0B8D17C5A8C +:1040300020DEB30A7CB49699626CB83EDF44A57664 +:1040400028B6C7D0BC2D668782F35A7D7CFDEDB3C0 +:104050005C57211FCF2F0A591174D0439625D03EAB +:10406000C21D4BFD139CC29E31AEF7EE2CE9F7C08A +:10407000ED6E9D9D7773FDDFA274A7219DEED13873 +:104080009F833D7F3E1BFADF939A5D807C72E7251C +:104090003F9DB300EDE78F8691FD94EFED1E1C1858 +:1040A000EF86F29D89576E5904CFD5CCDCC1B8EEAE +:1040B000A3195C1FBFED6466D4BF6F83F25DA3E0FC +:1040C000F8FECE6C949B4BBFB861818BDE9F14F5DC +:1040D000FE3CE467F9FE1D83FD53B1FDEE69579286 +:1040E0003FB5B9D23500E1B0807FE1A24505D3B03C +:1040F0007EF71456703B8BAC6BA0A053B99BEB873B +:104100003BCB37A4215C83DC2EB15EBFE043A782AA +:104110007278B77B43DA0280337532D73BD25F695E +:104120002DB7F8906E775E91BB4D55383D17D8711D +:104130007CBEFE416E0EE766DFC9B4C50CF9C7450B +:10414000FC2EE791FC9F88D6154A07D257C7DF9B04 +:1041500099FCB9F674231F0E728E407CFF45E8D798 +:10416000C44AAEFFDAAD0EA25FEB147F4875733917 +:10417000594CF07D4178699FED277E4F15F2115320 +:10418000CAE9CD2A2DA11CB75E4E26E6909C801C64 +:1041900004484E3215E46F096F5269D7E3BF857E3C +:1041A000ED791627A2E75295AFE7DBFA07EF90A467 +:1041B00081F7E3F6FFD05D48FA6638E297DD9A4C66 +:1041C00076ADDAD49ED3007056AF0D5319FD7E291B +:1041D000F8E29D881FB3B71FF2394BE7F6FC3AA10E +:1041E000533EDD54E8C0FD412081F753CC81315866 +:1041F0002FFD66E1180BAEF71FF10CFDD1B959EC9C +:104200009A0A787E8DC2E199DB34AD5401FD768F38 +:10421000A0DB2B8D40E03CC65E6DB4311F08E76B20 +:104220008D4EAABFDE9846F5BF37BAA87CA3D1430E +:10423000E5210BB7B77393D93564A799D382FAE414 +:104240003E615FEE13F2CBD8F5696049009ED70A54 +:104250004DE05CA7045FF64F81BD4A97C6F5FCE5CB +:104260003E156D4D8F7E9D5319C7984EDFCEF78F4B +:1042700037B433CFC8483D93917D417E5CD09CB824 +:10428000ED7698F2AA19C986FE57360F34D41F135B +:10429000742D2FCD323CBFBA7A88A13EFF14180E80 +:1042A000988AD96209DFD70B3F01761826D4FFD749 +:1042B0003979DFCF1AC6F4BF09E6FFEC258DDAA302 +:1042C000E970C8C2F92EF83795EF0BE039D2E5F363 +:1042D000038318C25BFA0DECCB904EBFB2921E5C0A +:1042E000B845614154F2DDC179F8DEF50F58BDD80B +:1042F0006FD1169505101E74DA60BEA3AFE66CBBD5 +:104300009DE81ABC1FFB7543BF6DD07444634164C4 +:10431000CD855D621CA56020E2FF4822F325822B3B +:10432000F561CC5BB937019CC7CB5A6A4CC8C7EA68 +:104330004BA92678FFF8632A43395A7AEDEBA39DFF +:1043400080D765CFB5FDAD08C63BD4A23227CCF7E8 +:10435000D10EEB0328EFC025FDD10E47D6191A8EDA +:104360007CF9CB81FE37502F1DAD090D77223FDC44 +:104370009A4AFCDD1B1FB07EB427C897305EE0C6AA +:10438000789B02A2BC50F3F61B417CC4F70941366E +:104390006A002B82FE9BB452D4EB203733719D8789 +:1043A0005A924DB7131C8F115F2D30BB2CFAF916A2 +:1043B0006C52C90E00312C0827BB4B0D80EF0CBF8F +:1043C000163E6EB31260FD7BD3F1BA6BAD44A7EB22 +:1043D00006C58610C5F3708E3EF6331F83EC04AC21 +:1043E00091FAB2A754F2EBD828D79DC5B0AE99DBAD +:1043F0002715A2BE62697CFCCF9224DFACA3F94FE3 +:10440000FAA009E9BF3D3E84FBC663A6C70E9AB376 +:10441000D0CE05D44C68AF9D19BC5F019138B1E78F +:10442000BD9F8C877E477FAD7971F84DCCA765160F +:10443000F275A19C2D300B3BB63A95E49999430F48 +:10444000FD1CFD9C7FF427FBD45B1FADE1F228FB34 +:104450000318A6222CC2FD9434F4BFD95427E0AD32 +:104460008AB5AD277CB210F5772190803F671D9407 +:1044700080B7F70AE36F671703BD4C2CA0F7E3DFA3 +:1044800013F23C305331E8BDAA4CE13F9BB89CB2DB +:10449000BDDCDE0381F767037E6A19C74F3DDBF49D +:1044A000890AFA68486626F5AF6D583203FD2FFA7F +:1044B000011E9603FF21DD6B9C89D77742BD6E47B5 +:1044C0008C3704EFD566BAF8BA5CB07507395D2A47 +:1044D0005E79C1739D05E75BF63B8525E37C21EDA5 +:1044E00010FA61365018A8378E82B81625E1780A7E +:1044F0008D5FD7A28442F0E712D61D46BF78C5A3D0 +:104500008A37CC87B2211D178B719799EFE8443811 +:104510009779947F5A11BE1D30AE4E1FAD68E3F3FC +:10452000483D52CFCC917690AFC5B64D9D6A028E74 +:10453000D7E3172A6710BE162D88FD6CCCB606C7C8 +:10454000F1C7C5135CCB002EAB5B0FBFCACE002EEC +:104550006B02A1E766121E146F88F5866309F34F9C +:104560004EC475407BD8D51BAEE8757D5B386BBCFF +:10457000EDC427D1F0EAE8E0D2D36109EBDC80FC9E +:104580005413E4F4AFD9037886F1DF6FD098C541B6 +:104590007CD0993D3AC20700F74CD4874B5A551648 +:1045A0007647F842F2C3D29D210BFA291FB1960437 +:1045B0003BC84DDD969D578EC5F7B6BE6A41FB5D83 +:1045C0009D14CE312522EA0AEF2ABD44172F09197E +:1045D000D7BF7C87B1FEDFC20FAEC23C5ABC0778A2 +:1045E00059BC5DA5FD8AAE1FBD2FED7B6D9079C3D3 +:1045F000B0DEDAFDAA17631DB560CF920B2E1C5EEC +:1046000089A7FF6FB8A3E3135B32E3530E83C90698 +:104610002FD18BF189CFD950C76C6C14FECDD9E264 +:104620001372FDD1F6F52D0DFC09A0E367669F23FB +:1046300089F478B49E1ED31FED8DD4CF35C25ECAE7 +:10464000F117A39D84FAE12D8F27A01FF87EEBE3DD +:10465000FDB05C82766868C40EDDB8303C08EDF6CB +:104660008DBF8FF1226BB219E1D76F86FAF19D2AC7 +:10467000EB4B7F960D0C3C9189F00A7BBA427D6032 +:10468000B013EDA7D0A7E7F303BFEB3A17E03A4723 +:10469000EAE212629DEF36F3F5BDB789AF7751AF0D +:1046A00075821F81EB7CD0EA45557E24264CF6FEB0 +:1046B00008ACB349E72F48FF40AEEF73D6727F18BE +:1046C000DA57ACFAFB4133F0C3D2DCCEE1288FD508 +:1046D0007759C91F58FABBF81083FA51A5A43FEDCA +:1046E0001B9E0D2720FE963DC6F11781A3C73F787C +:1046F0001BED578F7FF02DF1B692F929FEB772CFDF +:104700009F0FA0BFAAF8E0558077A5CD1E267EDFBB +:10471000AD1DD3EB3DC5853A80E219361BD2279DEE +:10472000B9C8DF66D54E8CA3292CC0CE20BF8243EA +:104730007118685183EF01FC5FE47C326F15C94149 +:10474000772EDAD7FAD8B0D61FFDAA9D8A771BCA72 +:10475000DBF52509250CF7FB0D04CFD7C2AE293EAA +:104760001F5B0D78B3C258B130EF37420F2A2E27A6 +:10477000AB467C6E85F9E32370473F9F89AC817619 +:10478000D16EEA731F3C2C8BCFB34235919F5D678E +:10479000E1FEF609117F89CBE2F6362E4BEC8FB2A3 +:1047A0009CD4FF046C8F91EE27A65843B8CFECB48D +:1047B000B0DDE867BDAAF9B6FC10E8F66856C09906 +:1047C00005FDFD26FB5C94F7B571C335D49FEB1254 +:1047D0006B32B09CC73A35A4EBCCA2729719F0703B +:1047E000B09FCDAB92DE02828C463F81F3F1CB9A33 +:1047F000BD19C73D88B883755515FDF92BA4D34164 +:10480000987F14CC7F708025D404EF059FB292FF6F +:10481000B03196056370FD290E33F2FBD5424FCDC2 +:104820009D0C3B78E099AAC91BFD58C2784106F857 +:10483000AAB675AF1F01F3AC31713BBD26898590D7 +:104840006FD9BAAE42C4DFC56C9D13E908ABDF7502 +:1048500026F95CFC646687259FC0BAEA26323AD7FF +:1048600020462B22FC1AEA7516DE3EE9C19F95B759 +:10487000A6431DF71AC80FD3D4D03658CFE530233E +:10488000D2F3721817F98DA1D08CE6F4C45F05FC41 +:104890005F0CEBAC30B3A02989CA663B945714B1C6 +:1048A000B003D6177E9E29080F8A0EC2373B6C0ACA +:1048B000E701DE2E3787DB117F0754B61EFDD00AD5 +:1048C000E6D656013DEAD67E3B78E73EB8BDBCB59C +:1048D00018EA261387F7662584FB827966F6AC0A08 +:1048E000F0D427B982F4FC5ACED7F0BC39A100FB32 +:1048F0002BC45755A024909F91BEC4A7D879748427 +:104900004ED0DF168BED596EE2B32A01EF9680A9E7 +:104910001FC6015688FDE03C1B5B178FEF9BBD094E +:10492000E540A71100A69E4EF516B96F6CB35480F2 +:104930007C2E07F976035E96087E5E2EE5FB51A37A +:104940007CDF96E5A27605FD49C0679528CF261F36 +:104950001BC4781B847CACCA92FBD236F2A3970BA3 +:10496000BD72B6F956585998F0F59495E82EE7BD02 +:104970005C94EBB2F839978443F2790D6BB0A09E4A +:10498000A861E677713C131013ED676DCB83164475 +:1049900042ED56EDDD9E79E8DF160BEAA965DBA353 +:1049A0009F9B2375D5A0C74C67B0B4742F42F89471 +:1049B0004B63BC28175596368A2328A8DF3C11FD87 +:1049C00016FD9ED6C2F791DA26EE8FC9789C15FCAB +:1049D0004DD4F3F3D3BD69A817A49F5E23E86F6598 +:1049E000AEA90AB4D7A03F968075F03B30FEBA85D9 +:1049F000FB9F66E15F2F6C31FA27F39B75FE292F31 +:104A00006C3D71541AD77C48EF6768C24F69D2BCBD +:104A100069682F747156F2579A140E7F3095F17DA4 +:104A2000750A6F370B7F54CAFDBD599AA07790E87D +:104A30007439F33BC23A3DEB9FCCD8A5051887509B +:104A400042C80797FB4A3A78B926AC24A03CC29EDC +:104A500086E49CCBF3E5BEDBC8CFF2972AC1386C65 +:104A6000F76947F5EB7A05FF18DBDB4F7A2A4BF83D +:104A70004951E738AC38B94F3B18ED270527320FBD +:104A8000C589502F67D1B0E42FAC12FEC414D5EE07 +:104A9000413D5DADC47A71BFB0DA96309C815E3E17 +:104AA000097E36F247F5DB3164AFBF8CE1CF4F941E +:104AB000C4074D50BE25EA731D37CE44FFBA3AC134 +:104AC00062C6F226B58BE6F9D2D44D76606FC2EAA3 +:104AD000C9A876DF7666927FB7A164E416F0F9D8AC +:104AE000FB0F9E2CB70DA2733B7E6E1CFCF2558C07 +:104AF000B755E2F91DD54F95FB70BE3F75CFB38119 +:104B0000693A9DF555B919D67BE29EEEFBB19E92AE +:104B1000AD5698015F27EEE81E1C43F5585E5FC353 +:104B2000E43974059E2F9EF819AF1FCD8AAD082277 +:104B30001E2672D5543D4E21FB723C93EB0519475E +:104B4000AB363DC3CB892C6C1A75FE7E83B3FDC793 +:104B5000D13F51E30FC5235D72737DC7D1DF3BEEBB +:104B60000E7C8E767259B912B4C0BE97ED0FE50A6D +:104B7000BB4DFBEF8D22BE2EE9763C93EB19595AC3 +:104B800072FC344EF5B5390EB4AB30DE99EF325EBF +:104B90006BB6713CE9C72C16720EE3C7657F87F1CF +:104BA000A5DE90E3CDCFE178D1C1DF3FBBF03F1F61 +:104BB000FF8DA8F1A47F2BD7310C6513F86E792EE9 +:104BC000E37E9480473E5FAF845367633CED799505 +:104BD000CEA9D6A71E36E339233B64E7FE730C97B4 +:104BE0008771D95CEFAFFFA1D7817E7EF02F2A9D20 +:104BF000CFAE5FE39F331FE359BF1E331A594CFA00 +:104C0000A11FB5BF6171C13A568AF3CE7A71DEB980 +:104C10007257BB652A8C5F0FE5245DBCA34E9E8B4B +:104C2000B32E73457C048E71D926719EB5E69CE740 +:104C3000DDA5023EB9EEE1627D2CDF5792AD5BB798 +:104C40007CDEA419EF23C8F20E314E4636338C7742 +:104C5000B1C2E9571DCBEDE1C2D1F136D7C5917391 +:104C6000FF9AAD6E3AB748C99C7879B68EEEF2BD20 +:104C700048DCB9BBEFB8F31E1E7796F379059CD5D7 +:104C8000499DD783B107B8BC77A35E987EAF946384 +:104C90005011363C3F957A626AC5E4741EFFC47AAF +:104CA00043B6EF6E94EB8E58BE2F9A3B66582CEAB3 +:104CB000A12E779CC909FAE316F7FC3B102F73C7A6 +:104CC0005C32159F9758E373E7F3731CE2BF5BDC1C +:104CD000FEA5B80EEC8FF1A98085F349E005D51B40 +:104CE00084750686C705302ED8616293D14E4BFC81 +:104CF0002DC9E6F1EA3BB239BFC9F9E5BC8C3929C7 +:104D0000DE7468ED003A8758EB2ED9949D1A997796 +:104D1000AD3B70B37E5E58E6707C7EB6F9A3E97752 +:104D2000A3987F93A09FBF18F84F67372A26C7190B +:104D3000EA953392994F1FDFAE1C68A8CFA9CE32F7 +:104D4000F4BF7AD110437B99B57394DE3F9074FB26 +:104D5000B6FBB1A920F70EC04B673B1BB60BE5D0E5 +:104D60001D4FE7A8CB9BA751BCDC71AA8ACABA9693 +:104D7000697458B9E2D42CAAAF3C1547F58ED8CE49 +:104D8000A968B73B9E48A4FDE72B6A38F73E1CC7CD +:104D90001A4FF25C3670EE5AF42B3A628343AF033B +:104DA00038CB7EFBFD52A4F7CA5D0AC575CB54D63D +:104DB000A124A17CC6D07865EA5F475D0BCFA74FE1 +:104DC000E2F6AC0C6D2BB4378938E5D9E4669790E0 +:104DD0001BAD8BC33DE554398D27DBFF989D69B82A +:104DE00067A0A56E37937F2BD6A37529545E766A8C +:104DF0000895F5BBCACD786EF482E7C114B41FD014 +:104E0000DF4EF65DEA2529370D631CCC7E763C5BD0 +:104E100085FEA942FD03E3AEF0F83A91BF66DEDA03 +:104E200065B6E13981DDE2C47DE2CCA2116935BA13 +:104E3000719ADAAF62A8BFAC29CC82F6B20A4ABD39 +:104E4000BE0A9CE5DEC5DF04FF497D25F538DBF5AC +:104E500063F2FBE7897884E48F7DD9C6FB179D0A4E +:104E6000B7C3C1DFF1F38B0D9EC08728A79D256CCA +:104E7000CE63A43F3A07A3FFFFDF821FE86B5368AE +:104E8000BFD5E5C3796716B94C780EF2718FDEE5B0 +:104E90007C7ABE75BC29FABFA2B2D5C81FAF4C98A8 +:104EA000D0E9C373BE1F8C1C897A9139BB4F239FF5 +:104EB000D6EF1D9F8571E76FB22DD4BF0CCF54463E +:104EC00045F603F57BE3E8FCA67EAF751BBAA4F5B7 +:104ED00009DDB9A86F2FC90F7C83747BE5E9AF0E9C +:104EE000FE00FAFBECF174DFAE7E6FCCB358BF541A +:104EF0005568EF3738DB7786F4C959E0FCB6F2180D +:104F0000CD6781662E7F012187F305DF2E10723871 +:104F1000DF0C7611E0BEE62595A17E5A70AB326CAF +:104F200017C6215CF1DE1C9D1C4A79D3902F4722C5 +:104F30007F72BEAC3B9528E4DB2DC6E5725086FB44 +:104F40005218A76C4822EDD3579E4AA67E525EA502 +:104F50009C3EE3090CCF013E296B02F98679026B76 +:104F6000078C4279393F9F7C6576E13D90624543ED +:104F70003EB142394927DFFE1EBBEC9CDA0FCF63FE +:104F8000D6B94DFA73F0913917C6EFAE1CCE270B88 +:104F9000ECE11CF423B586182FDE73A94E75911E23 +:104FA0005B751B540005AB34FF24B4ABAB7EA6503D +:104FB0003C11ED2DFAD5A30F34505C5ACE7FD5A904 +:104FC000E1CC05789A752A9BCA94CC40494E2AD2E6 +:104FD000E74A81C7E17D9E3B7ED6B091E2789F850E +:104FE000AC5E46711863BCB0D0E7A57348ED258D63 +:104FF0003DE0C2385F4045F938328839372B3C5E96 +:1050000088F14319EF93E78932EE674D3119CE3FAE +:105010003F37B70C46FFBF57FCAF84DBB563DB35CA +:10502000B26B75ED7F1D6DC2F314B78FE280BF1CAC +:1050300018A842BA2EAB08FD4683FAF23B1E4FC0B9 +:10504000F8BCC4679B399C83FB9436C023C623DB22 +:1050500036A9A5216EC7E3E8BC4EC64B855FF13C7F +:10506000E3FE88E4F365A7B2083FD2DE48FDFDFB0E +:10507000C634DAC44A3D7E3E3B24F97B8599DBB1D8 +:1050800015C0F748B768398AD89F11242F0CE4055A +:10509000E523627FB87C44EC8FE07F4706ED37A2C2 +:1050A000F5B9B44FE37F99B5EB8F30CEB247E6FA4E +:1050B000914E1386803E007CD43DC6E5205ADEA585 +:1050C000BD96F890F87941D487787CF720DECF2F11 +:1050D0003F31E4E75A83E58CF42C947A3DAB45F9F3 +:1050E000B5F2F9CF2F506E9A457F09B784B3D3C27A +:1050F000FD2B09FF8B8CFB1F729E0D9E8A9D280F36 +:10510000683770FE2772B89DFE6FADEB6CF6E389D1 +:105110009C0BB31F0F46AD4FAE43AEEB25B1DE6F18 +:105120006B5F5ECCB188FBBC46FB02FD0E3F09EF16 +:105130009D782ADF897A4C55BA0FD33D96A7625CD9 +:105140008887579E8EA1FE3E9B83F6F7939EFEE0D6 +:10515000D3FB70FCFC592F221E7D7BAC66A6F3F7B7 +:10516000245C12CEBF08B8C10E75E6E8F601F2F96C +:1051700077B54B522EA2E5365A5EA3E573FA8FC17E +:105180004FC475FE5EA17B0211BF90919DEAC81CC1 +:1051900044E76552BE757E22BFE7E351E89E4F6F3C +:1051A000FFEBEFA35CF0FEA7A3E247607C759FDAFC +:1051B000B6799C1291E3898F7CFDF83F586F7BE7AD +:1051C000F404D4DCC288FC4A393D3F5FFE41237BB6 +:1051D00055A7905F6385526FAF026791375BAE71E1 +:1051E0001F793E7EFC42F0E32B081FFA630E0BF999 +:1051F00063E7E3BB8B72FFEB7C7751AE8EEFCEE6BD +:105200007F67E472B906BECBC8FD0EFECF39E84B0E +:105210007652F2DFF41739DFB02CBE5F013E22F880 +:105220003B2C83484F57093D3DFD0C6B403C07C468 +:10523000FE5FF2F1479EC0243DFD717F82FB8E6FC1 +:10524000EBD756A534D03DB400947ABD24EFF74790 +:10525000D3BF34F7C2F4EDE8DC1EFA7F2B7D33E7D1 +:105260002C743F873FBB30F75BF8B3CC196B8C13C2 +:1052700034586721DF7C1A36D3D5A5B3D153DDC2AC +:10528000F1DD83B7B059FA05C9E817009F2CFA4E33 +:105290007CC2FC69185F3F887FD2B9C9D7B3501E62 +:1052A000F7A9B2CEE313ED58BF08FCB8DCAF5F5BE3 +:1052B000A7B353778BB888BC4F8B719D9D7DEDA7AD +:1052C000F2F8F9C2BEAF8F3E82791DC10C0BF9D343 +:1052D000FB1CFCBEE2C6DB66D37D45D9BF3DC3B235 +:1052E0009ADF676C4C5BAC93937D19FD4E639C6AAF +:1052F0005F7F863754D8BE1F8C3C8DF72183F5AA7B +:1053000017C3C20757BFF7D17CA8BF796A1CDD4B12 +:10531000ECB17375FCFE9396D216BF5807DFBEFA48 +:1053200091C52EDD7A3E17FBFE37D36F74621CA742 +:105330003DE3FACE1284B7BF99E0B57E55ED5486B1 +:10534000627E03BF477E9FD0475AFC71CA57694AA5 +:10535000C1801E3E1771B6F42B6D384E538A89E812 +:10536000A6C5CF755A74EBF1A598395C6EE6D7EBFC +:1053700003471E1FF7E35CBEBF7A4675D2BA010E23 +:1053800027C603AEF9BAFA4027EAE3C1A35D786EF7 +:10539000322B2F8BDF2F32398BD13FBD54F58E62EC +:1053A0003A7B769549D82D0F4B47BD40E71AB81E7A +:1053B0003C4F184EE70C4111AFB7E1398226EF257B +:1053C00025707D29EFABD37B26437F3A97782AD788 +:1053D0002DF372868B383CDD53A7CBC62ADD3727E9 +:1053E000FF06E55AC373E8141BDD4397F7CA412B48 +:1053F0004EC6E79A0278403C0D622B2B88CFDB34F7 +:105400008C1BBD902BCFA7F8B855028E2AC01F8EDB +:10541000536566660BF8EBD7F4B70CDF0DF4EFB20B +:105420005BBC28DEF2B99CBF4ACC738DCAF599B536 +:105430004E33DC6397F0FC233751CCE73DF0F71493 +:10544000F49FE24C747F0D97A3C7C3ADF1741FA402 +:105450006B305B89FAC02AE65B2FCED9ACF6276E9B +:10546000C2F312F9BC6BED78BA87BB5EC6075688EB +:105470007B5F80170BAE0BFFCEC475597CF9B82E3D +:1054800078DF3D5CA717A3E0451AF6D033AB375D54 +:10549000CE77EF5EFA35923FEAF218ADBB3DA3DF5F +:1054A000AD2457FD6DC4F71B071D7E04EFFB6A3F5B +:1054B0001AEFD5E745B5F74F2BC6FBC4EDF5C9B7D5 +:1054C00076EBE4E4CDBA59CE8543F1FEB0BD16F9D2 +:1054D000FBD2AFD36F2D81F7DFB14C30C8E5DE1FB3 +:1054E0007DF4E9EF53B08CA77BF57BFF35CE85FBD0 +:1054F00042D5D4457A82FD2B96F87D92634E9AFE72 +:105500007EBD258FCBD71D837DE63C3C9FE807728F +:10551000608FE833ADDFA800CACB463B653EB08D57 +:1055200022DEDCA418F39B6609399B25C69B95E710 +:10553000E47AD1EC1A8CE3C87C91F60CF36A7D9C7A +:10554000324BE8B3AC3C93C0D78D07E6EBF0D56E99 +:105550007DFA2FA3115FFD2ABD743F1AF51EC615F3 +:105560001AE3BCB8CEF6FE36A27F7B7F4B08CF0D88 +:10557000DBEB557E6EE7B085D0B597F7B8B5AFAA2F +:10558000492FCECA7319E24BEDFD5308EFCFA80D9A +:1055900007B85EB091FD7EB32EF934EA2B4D7350FF +:1055A000FECA3BA6EE4294BF59794904E77A05C486 +:1055B00042E78F5F1DD10B94D7720EBD40792B9AB5 +:1055C000B8DF783E7D3021CF2DE4A781A1FCFEA776 +:1055D000FA007FDAE8DEF2DE23CFE27D29D73DEF65 +:1055E000FF3FC9C9D55172F20C1217F1BF51A1F397 +:1055F000562D7577BC3E8EB948F0497B9C83DBB352 +:10560000FAE4D3C817D675F3FB3197BE9FCAF5A746 +:105610004DE6B94C20FE9D6FBF52233F05F8F10ABD +:10562000E0C7857966EAD794C8FD47CDD43D0CD74D +:10563000B37B70A0360F9EBF2BF23222F914890A79 +:10564000DE7391F04BFB26E9FF454F1DA0D6DD5FD1 +:10565000795711EB1AC4483F55A5FB3EA47BA7EB35 +:10566000D29ED59F7B6B3F8CE77944AD2ADD0F96A8 +:10567000E7DF1B53A63A51DE37B628942701BF4D0A +:10568000788F6EA178AF66D4B5B938DEEFF3F8BD88 +:10569000D6C011E7D40417E2EFC85F30AFCB7AB3BE +:1056A000EAC4F79EFE46A5739A4B3EE3F9BF8175A7 +:1056B0006E435E66E098792ADAD7F9CC49F729DF9C +:1056C00049585DBA06FA35F1B30858873F1CE0E740 +:1056D000E174CE357ED0FE32CCFB1D7F4F2AF969B6 +:1056E0004D37C427603CEA206BE84478839B549292 +:1056F00023F0CF27A3BF17541249FFBC9D7E37E587 +:10570000F7BE9D6D4DA4759AD9B398BFBB45C87FB0 +:1057100095B8278178B11544F27D812FD94505913F +:10572000FCCD0E13484E01F997C4BFF78BF76B30D1 +:10573000DF17EF85A87B0A319E6EDD62BC27D0F4AF +:1057400033254DB918F8A435EAB9D847CC0F1A9FBC +:10575000576D32D6DBC53C179A67B933CFDEE7F910 +:10576000FCD9DE97E7F3ED281F4883B7A2CEC71A0E +:105770006E72529E65BA99E2831B9D9CCF36AE56DF +:10578000E9DE77F4785D8D8CF22AD68BF1241F4BFD +:10579000BEDD27FC7AE0D739E87746F28F0729414A +:1057A000B2AB6DC91867EF14EB7FDAC2FD5499876D +:1057B0002CF3233B85FC3D79AC80F220F79E2A2810 +:1057C000D6E76BED53BB1E1943FA99E7B3C21EBB74 +:1057D000F4F13EF07073AE6A887F48FF58CADB660A +:1057E00001B7A47FF4FBC7851DEA8ACA4F0E9C2728 +:1057F0003FF98EAC89EFA31D947CC6F65DC5DC94A1 +:105800004F3392F601C7859D0BA4B0A994979CE6EF +:105810004FD3EFAB32B38DE7DC9B7BF4C285ED0F4A +:1058200032B3617F608FACF72EB1FE1EB844FEA785 +:105830002AE2B7D578EE087C1FEBE1F3CBBCE5EAB2 +:10584000D8700EDEEF92F9CBA556764DB99DDF6389 +:105850005EA5C35BAC87E36BFA9DBCDFF4265EE21A +:10586000380FD823EDD513F97BB22ED729E1CBCC55 +:1058700016765FDCCF8D86BF6C52DB67367009F31E +:105880003CCE4ABCA771651113E7B789ADBE6C8CDD +:10589000CB18F1F14A0F7E92F64F0638A66F66914B +:1058A0007B69D03EA5D8D173FE8B6C2AFBE77A1CAE +:1058B000FB3711FE785E060B7499F93D4D511F05BB +:1058C000F5785DBD28AABE95F74F3077317DBE02D1 +:1058D000EECF15BAB726C70B8AFD5FF754BC0F3F52 +:1058E0007397E244FFF6EAE21316D4A76593BA9ED3 +:1058F0001B08EB1DE71950698F81E7183F02782FCD +:10590000F3B85B8366F17E3F3AEFA79FB54DF1A9EF +:10591000C09775454A28D3DD9BAF2FF3C87DBB9C4C +:1059200017306C7C9F61FECB85BC8F7C44EF67D2C7 +:10593000FB61EB05CC3FBB98E7CB45F79B23FB898D +:105940003C7B1A1FFDA7367ECE1ADD3F20F8B6D36A +:10595000645A81C97BB59EC256DB25405FC6F96398 +:1059600099675465702807D717B5DE73C13BD363B9 +:105970008CBBE2CF657C3F7C2E7C55F6C297E08FD6 +:105980005A23BF38CCFE673F05381C298A13CF2D18 +:1059900056FA6336A13D2C9B24F97B42A5AF18D65D +:1059A00017C30CF71522FCEDAB44FE5EC964FBC4C3 +:1059B00056D40F7E13337C3F63CA1EA5E77D0FF0DC +:1059C0000F5D2180F7D7794A5AF17E03D083DAA997 +:1059D0009E7D0E7E6F8BAA1747C987E06F924FDCC2 +:1059E0003F007E72FAB02BFF2BF07B5CE455774EC4 +:1059F000E4FAB83393974F7BB8DFF6B0C0E36F2576 +:105A00009D637578488FD0197E613C27D2AD9BF09D +:105A100074558A5877F09ACA19B0EECE24364C01E4 +:105A20003EF9C38EAAD67583F07DBF19EF8B99839B +:105A3000735B5F02BD7395C0CBD33BE6ED0FF238CD +:105A40008F8272B6821800E8BE4B09521E0ED2BD7C +:105A50008F75FDB837DF04A3DEF769E778FFAEDEA8 +:105A600072E68B7A9F692917F2BEA0CB8C28BA9573 +:105A700046D16D7254BD5AD64306FD25F5DA82DD56 +:105A800077ADEF9782F91F0ABA63A89F2DCA08C69F +:105A9000F67B9656DA07207FBAB481A0D20F7896AB +:105AA000EFB701EF96A3FE227EAD237D3D0BE59B74 +:105AB000EA2B2A7D1723BF34AC4F83FE073D2B5BB7 +:105AC0006DD0F5EA757769F8D193773D0DAD66181D +:105AD000F7AA51BF7D0EC7332BABF6CF50CEC19F77 +:105AE0002D51EBD81A550F46F56F3D8F3E5F17F5D8 +:105AF000FEAD51ED9BA2EA5BA2EACDC6F7E72F52BD +:105B0000482EE603FD1071E79393CF3C327EDA36E0 +:105B10008AEE297A1A5BD717919D25BEFE6647A3A8 +:105B2000D46F8AFEDE6A550A0BA23DD0CEA29FBA80 +:105B30007BF1A980D7136DBF78FBE4B87F3F8EF768 +:105B40008D6A5AAC4E2BF0E1A1189E1F147C9DFB70 +:105B5000EB941B0BEB38B4734408CFAD4E02DFA2BD +:105B60003FFDEC5D790E84637187CAF0FEE78A0E13 +:105B7000F59F56FA2E82CF5EA6CBB35BDAAA04312C +:105B80006FADE62D3E4ECD2E35849FA0E8C9AF6A9D +:105B900055E8BDA521ED5DBD5F4DA982D07FC91E31 +:105BA0002584F767976C31B6AF6833D6653E52BD32 +:105BB000FEFEB23B921718ED7F839F4AFE5766BEEA +:105BC000319FE8DBFAE19B982F3F9FE4312A3F5257 +:105BD000FA39E670EA6C8C5B3E9F4C79F1E00FDBA2 +:105BE0008A74F7C0649CFD5863009C1FC63E6EAC6F +:105BF000A552BE7F4269B70CC438F9FB8CEECD8F3D +:105C0000DBB5F3C7E35DD8BF8136DB1F1F1B45F152 +:105C1000D58FC19FE59BEFB5423F70B9BE6457BBBE +:105C20003A106A1FEF7E2F8EEE05F58E93531CE41B +:105C3000D363E6505FE7FB3DF9A9FF8EA57689C7E0 +:105C4000A337F37D83F437C78BF1DA1F49DE330EB8 +:105C5000F926CEE1C478F11271DE7F74874AE31C25 +:105C6000B1391E9A01E31CD93AAB1F7EC469B1D683 +:105C70006DC14453EF53E509784EF13EF40B53FCEC +:105C800023A4A29F34AE94511C7F5CD8CC5C6E3CA4 +:105C900072F3CF447E18BB9BE7E97D84F17A2E1F17 +:105CA00014AF5FFC0795FC5B09D7A4222130029F4B +:105CB0004DF95C2E3ED8FA388DF3E176CD89F07C33 +:105CC000BC5D233E5B067C89291F47307F11E65D62 +:105CD000B65FF5A269FE700797EB656D4A08F5D7C8 +:105CE0008A6B351FE51146F1F924D90FF8D5AAE3DF +:105CF000EF65BED0548A9F09FEB6C17F785F3C91A4 +:105D0000B56DC0BCC6E53BFE33BE8EE6E71F483E20 +:105D10002E6005179217770CF681C877F27952DB5F +:105D20008892812CA21FE43DF0260BA3FBDE415399 +:105D3000AC17E331F2BEB7BCDF7D93C9F927E4931A +:105D40009BC03E60DCEDC37C1EA7FAD2E49D827549 +:105D5000B06D3ECC039B19B4D2771CD449A686BE45 +:105D6000EE87FD349FEBC5ACEF312A1FCBE7F94539 +:105D7000320F4A96C0D08350EECAE3923E774197E5 +:105D800007F33B2BF11E77F9F8A41BB2C0EE3F924C +:105D9000FF37DA4F948F4CFA5D26D47FFDCBFDBCE4 +:105DA0007E7152A106F535CADF2B2743FF17F27D1E +:105DB0000FE4EBE691E3C2F3EDF8FC3717051EC6DE +:105DC000B2DE626FC638C109A57BA5498DF47F5547 +:105DD00061079F5422F52E8D0DF60EC53A23FC9DCA +:105DE000AD3C99EF6BCBEFE3F902FC040EE06B41A5 +:105DF00090E789C0CF6FEBC7F30190CF16C8BC9175 +:105E00006663DE08F3F2FC26990F24F37AF223F995 +:105E10004A5B2F245FE984C8B38ACE2353F6F07C13 +:105E2000ABA620EB8A213A18F33C56C4013F009EF2 +:105E300056FDEEED04FC84C65285EB0D96C6CF4DA3 +:105E4000E5F7D58ECD0CE7A21C7FD0C852B2810FEA +:105E500097A881D7111F1DEE3F0F467DF5C1D6A62D +:105E600004D427C77FA37A6740FF3A71AEC04EAB18 +:105E7000F41D8D0E773E7D8FE0D8CE8DE9780FFA38 +:105E80006DC137C7DCE27B3EA7F70DFE01F42BCDD9 +:105E90009C5688FA17F4F53B7DEAEBED57107CD35E +:105EA000ECA09F617D0F0F52C4776058309EC74BA6 +:105EB00019E62B6950AA0511FD8AED09946BBF30D4 +:105EC0004DC461294F4DD249E2BF175D4084F03B7C +:105ED00074261BD3709DF96CAB13E556D2678A6AA2 +:105EE000F786418FAC02FB8B6A76958817AEDAA9EC +:105EF000D0F7B2567468642F3F10F217AD878EB397 +:105F00006ECA57AEDDBA90E7B30BBD8369D2C8271E +:105F1000339DE6FF8ABE89F99ED03723D8880BB41B +:105F20009BCEEFF54187296AB50BBFA3B32AD553A2 +:105F300060E5E736C42F4BC4FD7A499755FF93457A +:105F400079AA2CFC10ED53970898D8569ED7B2C169 +:105F5000AD529E7DD9EE81CC058F96EE56E8DEDB04 +:105F60008CDDC9544F383580EA650FF79FC8BFE311 +:105F7000C4E959F6701ED53F7CE8C551E27B453C2B +:105F8000DFC5C964BE0BD1E1E41C9E1F6F0EE6DFC6 +:105F90005B8C7E5887C6422EEA4FF9457E018E5FA4 +:105FA000E413F95974DEB3CB81E3F8C16F42FE65A7 +:105FB0003E1E4F77893C226B9A89B97478BE02FDE8 +:105FC0002AA0478C2B96B974F7E55E1779454D42A8 +:105FD000FFB2A0AF13E3C773041FC479920CFDE7AF +:105FE000D86B881FE2BD1719C667011ECFECE10F01 +:105FF0007C96C2F39370FC2BE618F3A8B4E24F280A +:106000002FC7DF93FFDD40FCAF151BE3A2FEF4A911 +:106010001F32BEFE43E7E2A30AE423FCDE5C3ECB74 +:10602000E7F1BC5E78277938B99FCB037803F7E2B4 +:10603000772FAE14783FC9B87C9CF4C5917CAC171F +:10604000F890FCE6CF63F1F8C917479111AF893E8C +:10605000233E934B8DF84AF51BF1D47F4EA6A17DCC +:1060600040E07B86F681B50586FAA0867186FE192A +:10607000AB271AEAEEE06586FE59CD15867A4ECB3F +:10608000D586FE795B1618DAF343CB0CED4376AC7C +:1060900032D487B5DD62E87FF1EEB586F611E1DB3B +:1060A0000DED233BEE36D40B3B7F6EE83FE6C0366A +:1060B00043FBD8AE5F19DAC71F79CC50BFA4FB8F62 +:1060C00086FE134E3D63A897B0170DFD27D95E33AA +:1060D000D4A738DF34F4FF7EDA7B86F669AE8F0C06 +:1060E000EDD33D9F1AEA65DEAF0DFD6F1E1478E01B +:1060F0007B605FE69836FD4F98219FBBEE44F99D8B +:106100009D62E6DFDDB8C0F8FD2FA5FE137CFB39EC +:10611000B3CF33659EFD7DC98FAD68E70B91AF6747 +:10612000308CD79F6C5388AFCF666F1DE0C79A75D0 +:10613000EB48F4D99859074772A9D3504FF5A719DE +:10614000FAF79FE332B40F08780CED036BBD86FAC3 +:10615000A0862243FF8CD53E43DD1D2C35F4CF6A4B +:10616000F61BEA392D730CFDF3B6040CEDF9A15AB8 +:1061700043FB901D0D86FAB0B6D586FE17EF0E1ABA +:10618000DA47849B0DED233B5A0CF5C2CE2D86FEDB +:10619000630E840CED63BB7618DAC71F6933D42F06 +:1061A000E9DE6DE83FE154D8502F61CF1BFA4FB2C2 +:1061B000BD6AA84F71BE61E8FFFDB47F1ADAA7B9C6 +:1061C0003E34B4D77DE4A57C5FF6A442F928D33DE4 +:1061D0009F18DAC16FF6A05D5CC162BDE83747FB6E +:1061E000DDD21F2BF37E6598E7265303C5576F5208 +:1061F000B99FE61CC2F34BC01FB7D9B89EE5E7E0D4 +:10620000A58CBE47E7C03CEC241E3FE4F9E52964B9 +:106210005FC944BA309E09FE4C02FA2D2EB7139A7C +:106220009CA53C3F3F2EE25FA69FD17D2FE27CFEE6 +:10623000E560D4F92007338604928714E2FE6AE70A +:1062400054DC772C65C10DE8FF4E51873ABAC00E79 +:10625000BF1CD3F779CE341BE05137DFF3312DE982 +:1062600005E790DF69B663D4BF675CF13D0C05D6E6 +:10627000A93FF7F809EC87CCB0256C69043903799C +:10628000BDBBD149F5D6C634AAFFB4D145E5964683 +:106290000F953F6FF452FBD6C622AADFDFE8A37A40 +:1062A000A8B194CA6D8D7E7ABEBD710ED51F82FDD8 +:1062B0003E963B60BF8FE5AF603F8FED8FC23E1EC5 +:1062C000EBBF690C52D9D6D84CCF1F6B6CA1FAAE7C +:1062D000C62D547FA23144E5EEC61D54FEB1B18DEA +:1062E000DAF734EEA6FADEC630D5C38D1D547FA68C +:1062F000B193EACF361EA0FA738D5D5476341EA199 +:10630000F285C66E6A7FA9F114D58F8973BBCB86DF +:1063100028E25CD34EDFDFF34FCCA37D9B7CFE688D +:1063200056E032A49BFCCE83FC9E43F47E209A0E62 +:1063300047C5F8DA44FEBD06EDA2DC6D781F32F2E7 +:10634000BD05D736CCE3B862083F4FEAF97E83F04B +:10635000AF97087E94DF7390E7E54B841C14223FCF +:106360007A881F5FBA90FD8EDCEF1E770716133F09 +:106370000E3205699F6FE7F9A6299981DA21D05E6F +:10638000636FB070F7D44BCFCBAC3CCED3FDBCEA3F +:10639000DDE63AFB7CF5E2DEF059DBF77E988EF61F +:1063A000A7F41B95EE81BCACC5CFC178C62D02DF2A +:1063B000B70C3119CAFB33FD37239C1FE4341CBED4 +:1063C000CF1DC96FBD1CB7C820EFE5CC4579D4B34C +:1063D00098EF4FF869BC2BC0D1C3FA6C16A4F21623 +:1063E00077602DAEE72AD820603D30CE4ADF8D2C75 +:1063F000B372B98886E37601C7ED627E593E99E9AA +:10640000BF1DC73994E37BE83AE8F209E63B17A2DF +:106410007DEDBE1FE1F8E2A94F0E2B5911FCCA78A1 +:10642000C28612712FE75A457CBFBA577E39B557DD +:10643000DFC0E3297361BF85F7BC64FEF8C9068D30 +:10644000F422E69F63BCF564C30D79087FB47EAC8B +:10645000C6EF6114601EBB8D8FF7563CE509C97B02 +:1064600004D5E081E3BEEEDD4C19AFE8B2A7727847 +:106470007C784FE19A3D56D28FC0173B709DCBC6BA +:10648000AA9487FCB229948BDF4DDB68E2F40FBE3F +:10649000C0F383CD4E3FBD57B3357104DD2F013EB0 +:1064A000C1F854F7101E7F927CB052DC4B97F40772 +:1064B000FEDA85F4FCF80F633CC807F57BC7D27D94 +:1064C000AD2693C83F16E3235CB80ED53194BE4F7A +:1064D0005686CE03F2DFD878BA4FDBAEB2D53BFB9F +:1064E000D097FF10F47B398D7FDFAE49C8A16C7F58 +:1064F0004DD0F335D1AFEC99E7E97B452B3B342FF9 +:10650000C685D9A8AEA1FAEF34F7F0EDEA17076413 +:10651000EBD651BFFB9FFC1C9C750DAD88E7E022BC +:106520005DE5777DE53C1AC631D0B8A4988FF5ECCF +:106530001B32114FDC2E48FE532DF18107ECFA750A +:10654000F4F0FF1B92FFD1EF9F6975396603E85D98 +:106550008042DCB704FED749DFC358C0BC542E626A +:106560007E2A97001B21BFFB837759F07C73196B40 +:10657000A3E72B8B160EC67A3DEB9E9C06E35DD1FE +:10658000BCE64F6900CAAC96BBA60C00B82B42F320 +:10659000FF8465F976E5309EE781FC1CC5F9BB9464 +:1065A00086F517E1B9C6A325EB07C2F399224E0180 +:1065B0007CE753D18E667BBB8240BF4377E5531C9B +:1065C000B85BE8B527337DDDC84FD56B399FC9FB74 +:1065D000D03DF253B4FC9D8178E665EEA6EF32D64D +:1065E000EFB526211F2EC31DA6AAF713A5BDE67E73 +:1065F000C272F013B01F7E6F8EBEDBF8760CDD37F3 +:106600003FAA00210A7ACB87F43B6F52795CED4BAD +:10661000132C49C57DF466C24BAD2D341CF10276B6 +:106620003A6628EAC5F7DA368CC078DEC4D060F462 +:106630005FB55F59BD4D6E83DEA7EF1DC938DD4FD5 +:10664000341E378B86371A0EAB8505F17E8F52F4D8 +:10665000DC57E867809EE0FAE12087FF2635903618 +:106660005AE5FE0BC5FFD2FD142F60FD6C5EFE7D6A +:1066700046E3FCEBC4BC1DFFE6F16779DF2A1A0E86 +:10668000C5C9E7EB054F2C8747DA9FDEF0703A4823 +:10669000780A8672FDC106FB68DD6B4C6BD257A190 +:1066A0003D1B175380473A33CD81114381DEAFC67E +:1066B000F0F8988C87C97D2E3BDD94CECF93C286AF +:1066C000EFFAB0A8B892DFE6D4901E33A5FC1469A7 +:1066D00006F9E9893B151BE34E15CC4B76219FBD8E +:1066E00025F144F1A6FF03A9D1552F006200000057 +:1066F00000000000000000001F8B080000000000E8 +:10670000000B8BE36060F8518FC033D0F8E8F81FBE +:106710009A7C1E0B7EF5847026507F0A10C7037189 +:10672000141087027100107B03B11B1017B301ED29 +:1067300000E24C204E01E278208E02E250200E60F2 +:106740004398E3C8CEC0E0C18EDFAE356C9862BF1F +:10675000B810EC004ECAFC328A873E16E46360E053 +:10676000E147F0A7F1A3CA0BF121D825C294D9D5EE +:106770000CD40F00B3EF4DB0800300000000000008 +:106780001F8B080000000000000BDD7D0B7C55C551 +:1067900099F89CC73DF7919BE4E4C9CD0338090102 +:1067A0008206BC845750D423044CDBB45EAC0F7417 +:1067B000ADBDBC94A7448A95EEFA6F0EE4610CA8B7 +:1067C00051B18D887A4144DA85365054B68BEE4506 +:1067D0006D8BD6DDC62E2A5A5DA3765B6B95A6BA65 +:1067E00014DABAF5FF7DDFCC24F79CDC3CAADDFF90 +:1067F000EFF75F291DE69C3933F33DE67BCD377318 +:10680000FD0195A91732F609FE07659EC6182BE80B +:106810002F1FFE86B6A8AB0AFECD228CCD646C6C11 +:1068200010FE6931F6CCED7B7E33713A63BB9ACBB7 +:10683000553FD44B9842ED77B67DF8FCD9F9F0DCA2 +:106840006151FC6AF3ED85C53DF0FDCE32BBD80C3D +:10685000E313A6B242C6CA02BC1FC61C86F5B18CA1 +:10686000D777355F9ACDA0DDD88ED6DF6B59FDF393 +:1068700092E5784765C900F5C33E61F89DFE5F3D2E +:1068800095A25EC6184DB500FFAF94F72BDA3EFB1C +:10689000C6A334DFDD6D2AF35B03E7B1ABC33D6F05 +:1068A000390F9C9F3DB37F7E7FED7C083E98CF548F +:1068B000D6A3B27158B55F8C407FD3457F4C7F49DA +:1068C0008D6532B6A531715E858FB1A64687CAB691 +:1068D000C6362A6F6FECA0B2A5B193CA2D7A5700C5 +:1068E000F1A887A15DCAB8410BDA57F6D7B3A677EE +:1068F000B8DEB3E468A29F26E035F23B5DEDC355F8 +:1069000009577D7DE6DC00C2DFD6C8983D11C70F70 +:106910005039D554DFF24F61ACD5178DC400D9D3AF +:10692000C3D7D533A81B59B1137EC05F73A6616D61 +:1069300006B8A7980B7EC3807ECF172D08F4201EC3 +:10694000BBF5B77B60EC4AF8F34939B4D34FE42286 +:106950001C53197FDE8F2FC6F2619E73F83F01AE84 +:1069600094F7F0774E95EAE0F853F0BB143CCF096A +:106970001B8B5578EE1B63D3BCD8A194F730DE1C7B +:10698000F38AD50ACC87F5BA9F4BFA241B4D66FBD8 +:1069900019BBAFB192E0DC0F750BCAFBFE5BF23F97 +:1069A000E79750907FBB7E920A1365EC9E67AD5DC2 +:1069B000C8FA77E3FFCD606CBB8FD173E79F58E2D5 +:1069C0001182A7F7C452A86F5B5858DD0E789F5A02 +:1069D000CFF1B74DE9788BDA7DD1B0B0DD7EBDFB6C +:1069E00052AC6F8BE5AA0E7435A59EE36F724C75A1 +:1069F000464D19C837F0FCAD8988DFE5DFBA8AE675 +:106A00005169587EE867F2994266E541BB4A4E17E4 +:106A1000A6DFF45B3F7C34B9D6B0DACBFAE960C3C9 +:106A20001F84FF1E7DE3470A7C3FF92B8685E30E1A +:106A3000478F8B98CF4D0F989F3F2B0D3D6A393D67 +:106A400006D0E11AA0C394C1E9E02DEF684CB077FD +:106A500000A75B1B23449FA6468BE8D38E74827AE3 +:106A600007369D3D705D6E51D90AA4DB96105B71AF +:106A700010E96757A76D274BC63611FDB622FD8A70 +:106A8000695A36AB612C13FEB273A99E0C55C0F83F +:106A9000A9EF41C46C51FAEA0E03BCE8FDED9D0C70 +:106AA00068BF35C8DFFF07DB613B73FAEB279D6DDD +:106AB000AEBA7CDFE4B31D6D2A6347D8B57655D0F6 +:106AC000D5BF8DFDA7CE2F90A6BF2651573675D8BE +:106AD0000ECCAF5D894718C8F256251141C9F60C96 +:106AE0007C575B83FD42DD646CCFDD8B9D6767F770 +:106AF0008FF30B67B1E3C0BA5CCC623F42FCCF8A34 +:106B0000F64680F361DCE82296C3D84FF17B184744 +:106B10009FCEE1FC29DB6237E9FD7879D969717094 +:106B20005C29D735C137DA56C3D1A6A03E78D9D172 +:106B300080DFB451CCF41314B98C15C1E2CAB71973 +:106B4000EA09490FCDD47FD593228FFAF842B41FBA +:106B50009C8EBC1DCCFF0D9A7FB8771103FEFA11F5 +:106B6000BE02FACEADAEF9D91C18DFE8F645717C4D +:106B700003E905B064561A095CC261C433B04AF82F +:106B8000638D9D0B433D898B0DFAC98C16B344EA86 +:106B90007CF47804E5B6EC17C6FB6D2ABEA0FEC1F6 +:106BA00050E3FBC4F8DEF17C355087F799113E1FA6 +:106BB000EFB84DC1D8A2187C3437ABE6129CB7AF02 +:106BC0007BBC8AEB1EF05CC7E0FBA8C2E590E699AF +:106BD000BFEC571770EA6177BFB23FC00BC3FE0C22 +:106BE0004F7B4DCCD3DBAFB71FC6002F9387A2FFDF +:106BF000024EFFB33DF4AF1C21FDFF87FAFD48E7CD +:106C00007CB061929170CA44FFB903E195F079E1DB +:106C1000DEF0AF4B89EE61F19DA4E71FC477727C73 +:106C20002F3D473AAEFC7EE0B80FA71DD73BDF01F2 +:106C3000FC3BC27594776612B3A731360EE503C8E4 +:106C400089CDAB42A4DFDA6B5902F9A4FDD8FC6C04 +:106C500034BAEE5113C790AF9D9FFBD82330F43D5B +:106C600052EE6E9D4EDF6DCF4A442E0D0F2E77EF04 +:106C7000013BC341B9AEB0455D61D4BF8C25A09E38 +:106C80007784EBBFFD8772838BE179BB8F913E8662 +:106C9000E76F8D42FDF8583E7F1EE4CFF3B13D3CD7 +:106CA000FFDE61D13E93F7978FEDD16EF827DE3E80 +:106CB000BF5E654E8A1EF3CE2BC748C46369E6DB10 +:106CC000A2A8849727501FA17D80FA08182E276458 +:106CD0002E46BC842E30AC5D80ABBBE65F57BC0457 +:106CE000BE7F7A7EA1F236940F2ADC3EDE8FFA6CEC +:106CF0007CCA38874C0589F784AF5BCD02B9FF0D9C +:106D000085D90D40A79C9E8EAB503EB76D3AC2FC14 +:106D1000809FE25A5EAFC97A96FD84EA8CE4ED6EFC +:106D2000E55592BFB302BD2710FFB360FD3601FEEB +:106D300067E90D5A0332C5D6FCB474DEF3466051E0 +:106D400002DECFEA6CEDFE32EA6396203AC8F735F0 +:106D5000AF03BFA4E0E70901E77D02EE95C80F2964 +:106D6000EB3124D663A86F3D165EA4233EDE61247A +:106D7000E7F6DCF7F526C44FCEEB2CAA2903E71380 +:106D8000AA85759932DE2CDD0DCFDF0A8EC5CC7E4B +:106D9000482918BCBF817A24FE28B69F85F20F9639 +:106DA0004C4EADA3C5AB8682FBBAED2B11EE8B0129 +:106DB0006E6BF0FEBDF0DE23F009E33D966EBCFF86 +:106DC000297C807E3A3167FA67EF37E7758F7C1947 +:106DD000217EC9829B816552477DDA5FB719AF3B3F +:106DE00003EDC254F99F0F7EE2142C430EFA8B5A26 +:106DF000BE1BAFF23BC36071940FC87B382FFA0FF4 +:106E0000F59B157D18640EFBB562707D1609503F29 +:106E10006FAAF15F139FD4331DFD2649671FCC0F66 +:106E200097B2515C994D7C10CE4F6B57B635762E8C +:106E3000D47D29751F9743126F46394BE4A13FF269 +:106E4000F152EBD2C983F7E3C557932F7A220EF4A0 +:106E5000720A8CE8236C707814D5A071F47CCE97FC +:106E6000008FA2CE18084FD08CA167C39A32270C8E +:106E7000094FB380C74BF76609D708E73FD8FB66D1 +:106E80009F1D598CFA23333D5C3E840BF4CD6895ED +:106E9000D3C91736884EBEFC0E160F137CA3D5340B +:106EA000F4622CC650FF79E1D3CD00E1458EAF07E7 +:106EB0001E5CA8E7F5CFF32CD5E4E3F4CD234AFD1F +:106EC0006826A3EFB2D4F859884FE0BF6EE2BFB096 +:106ED000CDB07F23021D9C83A5BDC801FE6D3E3A47 +:106EE0009B55E177E1285B03A5118EB37A68D72C17 +:106EF000FDCAFCE9AE75325E555D78F2E2AD48E858 +:106F00006159DFDEC7576EFA6F5F6950BDB920FA6D +:106F100030E2729EE0072F7E006FF3D4147AEA26E7 +:106F2000C7E7F695025FCBD2AFE3A2C0FD2E7C95FA +:106F3000D55B4F2BBC4B1BD727BDB280EF199FEF02 +:106F40003D91773B17E3FA517BDB3641C3A2B60E86 +:106F50003B00EF2704E35F4E1D3FAFBE81F028F9F1 +:106F60006ABE160EBE0DF50EBB3C1BF5E937542567 +:106F70002D1FDD0FF6823E1EFDC400433E3DFDC6C3 +:106F8000449AFF60FCD6DE1858A8A7E8E1F6357AE7 +:106F90001DCAB7F6CA832F2E00905BF22BAA49C6F2 +:106FA000D4283AC97985C3B35A8C7FFFDA569A2719 +:106FB000E06F35CE5FF2A1E4B772DBB631BE5106A9 +:106FC000E840FF3AA78D459302E77A0A7EF2E6F0A1 +:106FD0007806E06103F653649A73D1240CD6362404 +:106FE000B19478E8B079BC61FDFC09BB52F5E7E3E8 +:106FF000825F98C5ED39A647C92F196CFDDD0D7864 +:10700000AA1A8FF50E05DB15D5B104AEA316F17CD7 +:10701000861A6BA6792C4B2808DF7D0A73C5FF9A68 +:10702000050C777F9EDB81CD65E64E0DD6E59D7222 +:107030001E71C5CB5F7792DC117891FC955F177557 +:107040006869C56C1BCB5623BE0DD76F40E9315123 +:10705000B8172D8B53BB16610FC2F4BBB1DF7C4157 +:1070600007C9EFB9116B17F2FB6E4197FC9AD61B5B +:10707000558027CFD2292E91DFB3B81EE328C6EB67 +:107080009FA3780A3CA7F84B51AC8391CB1BB18FDF +:10709000229E371AF1DD38CFDCD91B884C79CC76AB +:1070A0000CB4E37C3633017E7D4E838D71A5FBD716 +:1070B000CE648B53F8EA310137C8053B11EEA7EFD8 +:1070C0003D4241DD39A73A787D15B60BD1FA2B67E1 +:1070D000D36DECAF0CD901D72BF2055F0787707C1D +:1070E0007F7DC75184AFCCE4F303BE1F8574B8CB5A +:1070F0006716213FDDB5D65894A8227C1C47BE0CEC +:10710000AA021F16FC01FC18A2FE4DD5C7E517F810 +:107110006CE85F98A52C61911F676F52805E7EC4FA +:1071200007CAADE989B672789F53CFA236F29DC0E7 +:107130009F560AADA1AFA0C01FE0E718F1454583F7 +:107140008DF8D2C31D0CCB76BDE1CDFF83FEC031DF +:107150002DEA58297CC8A2E477483C6554C27A4B92 +:10716000E7CF5923F343A43DA087B93E93FA01F832 +:10717000F535E41BDDE4FC3A523D646CD4AC5FE2CF +:1071800022D44D8AEBE9C266683597384897534850 +:107190004BF4C73AA62629E81661A49770222AC69E +:1071A0000F4C3BD14E022FC1E3AA82258395EE7886 +:1071B000B0CF0AB9EA6C11B03D8C779378666C3425 +:1071C000681E3AE8071EBC96768FC192802F1CE29B +:1071D000138C1BB37FA071E4777A9825835928AF6D +:1071E000AA699DF4C96FFC0EDAA08DC2E377EEEFB9 +:1071F00006C78B67BCCBDCF31CF17761DDFA95FC2D +:10720000A67CA8EF74F62BC90F80BC1C44E08C7ED2 +:10721000FADCEA638715D0A34DA5DF72909F6FC596 +:107220005740D756C6E9CE6A55979CD14AD5B7FC88 +:1072300064B7599C5F22B9D43EC0AE48D2FA10F56B +:10724000E1F822C3A35FDF50E213B5147D63141F7E +:107250008BA4E25BDA95ACEA32FA6EEBD4AF27513D +:10726000DE1BE5E654E209C15F5B3D78044F81E037 +:10727000BD4DF8834684EBBD6005977B018BCB4900 +:107280007FA923EC0AFEBE8F6FABB85E6E8DF27DD8 +:107290000A239064281FC2203E3417BFC6D965C098 +:1072A0004F41C6F9721B949C2F1234BE1FF93365EF +:1072B0005D4A7E94FD0FBF2E851E79DD4FEB32BFF8 +:1072C0007F5D7E11F1D6A747A49D12BB8CD3EF78CA +:1072D00025E1E511B11F31B07F8E9FD3D07737E222 +:1072E000578F87707DECD9B62484F0EEE9BC343B2F +:1072F000950EDEF23ED06749703C77823D80E5FD19 +:107300008D26957DF602DA5FF0FD0EA1DFE4F32312 +:107310009A4AE3366B5C9FEC09C442B46FF5CC55D6 +:107320009F9F0428A938AE4531C45A725757CE5092 +:10733000E397AE515D7865DA3543CE77E3EB450BE5 +:107340009F4D697F939699FFAB0C868EE02C5C1F56 +:10735000C37D7FBA31B2F059DF67C7CB0E11073E4C +:10736000D274709383784F5E48F2A35CACB322343E +:10737000E880BF2A36707DC23EFE84BFEFDBCFB30C +:10738000C38BA14E2606D4F7B42D6947793AFA2566 +:107390008DA9C077E3519FA0FFB88DEF3304E00FB4 +:1073A000CA090A6943BFE396B14412DA8DEB70EF64 +:1073B000FB14B1ADB41F38DAB3CF5024F458916741 +:1073C000DFA21494534DF567A7C31EA4C3D9FFEFE2 +:1073D000E970BFDE153453BE2F51580CF9B564ED7A +:1073E0002F952529FCFACF824FD9C6307B2745EE51 +:1073F000EE50BA725029ED5CA3D671BBA4EBB9096B +:10740000E447F55CD00EB5CEC55FFFDD9368E716A7 +:10741000BC7B8106743AA66570F95BC7F4D4B88664 +:107420001C07ECB863B89EA59DBBB3F9522AEFFFC9 +:10743000F86B477D40B7F11B587433D19F1DC77D52 +:107440002A4BD0DF12F4AEDDC6E95BBE95C70D99BD +:10745000E3A67FF9324731B09F8D2C8ADF8E5BC166 +:10746000C8BEABB88625D0401CBD3185EEF0B762F2 +:107470009B9B3F4609FB6E94873F2CE0833CE08357 +:107480008A8E783B8E5F745CE3B68367FCF156D7D7 +:10749000E7683CE09704E9F5947ED01E05F0901E65 +:1074A0005EBE1C857C3965E0B89F95EF4E79F8EE9D +:1074B000149B73F55E40CCF6D68F9F9F40AD626AF9 +:1074C000AA9D2FF94E67F69F914E2C36323B68C429 +:1074D000ED92A52AEDFF0BD82F5A1F08E1BEEE0E44 +:1074E000833D3F11FDF6973586FA66C7FA5071AABB +:1074F000DF9510723F11E46591CEF97594CEEDD30E +:10750000129DEF57ECC8E2FB7503C7DF2CEC021E9F +:10751000179A78060C9FBCD4BAE1A9EB2C392DB58B +:107520009E25EA1C8EE602EEBF3F2C4A394E4B6682 +:1075300007D9F9C001A497E43EF933390B02B87FAB +:10754000D01CAECEE6F699A5A6EEA33787CB47B101 +:1075500014BA368BFDE3C1F0D982FB92E8D7607C88 +:107560001CCA877D762407FBCF5940F18F8733C132 +:107570006E807E67EA5C0F69158CF6D9CED77336BC +:107580006FAE40FD6DCFD267F0EF901F357366F19F +:10759000628BDAD98934F82BD743C2CED6FFD49385 +:1075A000221FC0523089BF047FB3F0C8ECA3317AE8 +:1075B000FCF33A94CE5C46768E53CE124DB89E1BA9 +:1075C00062AE781DB4BB44B47394E929EDE2DC0FDC +:1075D0004C6977996867BBDAC506B4BB0AE1867661 +:1075E000CC35AE3D60DC6BE5FC586A7FD101FD2DEA +:1075F00015FD91BDDFD7CE1AD0DF0A393F573B7357 +:1076000040BBB5A21D738DCBDCE3F6BD1F63C8F78D +:10761000E427B5145C1120FFE5DDD12EFEF3D2E1A5 +:10762000E902CE8FCF162CA8437EF9DA733E86F19D +:10763000F5A3056E3E95ED9B1A59CD9A94384753A4 +:1076400078178D93E6B999FEF99241DA2F11ED651D +:10765000BE4A80F60706E39F36B11FDF26F6850691 +:10766000E84D21179A2AB9BEF2BE577D5C4E303DD7 +:1076700046F10DA3D239AF2ACDFECDFF2FF07E24E7 +:10768000E45E536575C7DC28A6495CBD3900FCD0B3 +:107690001C99DB7111D45F61576FAE2DFBDF0BEFCF +:1076A000CFF5952E78FF99ADFC5F0D6FAFBED1057C +:1076B000EF436CE390F0CAB897B7DF3FEBAAF08FC7 +:1076C0006311D4572D055F8FE0BC5B44FE454E4BE4 +:1076D000CDE64DF0DD6416FF0BCAB75BA16D37DA5E +:1076E0007FBA457A6AB8EFB4497A0CD75F7304D68B +:1076F000610A5CDF12FA4896DFD62DBE5F52A4F312 +:10770000A4A40223315EC083FB198FE93C7E2EE1E5 +:10771000FB774FFDF79E3AFCE34F683F9908FFB8AF +:1077200034FA49C8CF6D458CE2FE0F17B9F5776B77 +:1077300066839AAABFF3042E9F59B8208872F199E4 +:10774000DB173C5701F36C7E4113F97F116AE71395 +:1077500072F6E8ED0BEACA30FFEA052E4FBD7A1E3D +:10776000E3CBC80F2D22EF48DA43729CE6F0DCE74A +:107770002A303E0B7E0ED90D0513B271DC56A1EFF7 +:107780005B85BEF7D2F3291F977B7742FF961FF3E5 +:107790000003547E1BEAF189DC3F88437D2FF80704 +:1077A00058FE5363849EFF4BA345F5DB603E58FFB4 +:1077B0006E6394EA7737D65079AFF02F1E42FF02FE +:1077C000DE8F9AA3527C7277239B8D71EFDB1B03B4 +:1077D00054B6349AB3D114FBC7C608D51F68B4A8F1 +:1077E000DED45849F5271BA3547FACB186CA5AE5AD +:1077F000D2CFF9C8EF6F38EA0378B73F555E8DFEF8 +:1078000044D91C9DC73F75736E607AFF730967ADDD +:1078100032F74BF85DA5AD929DC2028E1A4ADFEE9B +:10782000CBD86EB6ADF376E18E7959F969DB2DF2DE +:10783000011F5E5825FA337B9FC94EDFDF57B05DCD +:10784000B04AF497DF41F1BB34ED9660BBB3A2A21E +:10785000BF486273287DBBEBB15D6E54C05B6A6D3F +:10786000D2D38FBB06E128C96D581C23FFCBB908C2 +:10787000FDA4FC98998BED4AF21A6EE4CFADCDF8D9 +:107880003C7B0E7F5E8AED898F3B9EC67C4AD31679 +:10789000CFB13D3D4F6888DF9C5AD18FC1FBBF639C +:1078A00021B72BF2EACD5D0160A96651CF8F593B1C +:1078B000B15EE2E7E3655DD0CB944CDC77882A0AC1 +:1078C000C6B5A1AE423D7F8EADA8502F35F8F877F2 +:1078D000CC658A02EB38CF8676280FA0AE423DDF1A +:1078E0008676502FF5F3F9645D6C52BB2D222F4044 +:1078F000BF384AFBFE39F596824BE33691AF975F6E +:10790000CBFB1F5F6F3F8D4BFF6C83D997C33AD979 +:10791000722323FB765BCBCFE662DE58663DAF3F3A +:10792000DD523A6F13D8BB25C52C4EF672C1E34524 +:1079300018772F29610D58F7151E9E84F5D2621E07 +:107940007F6B297CBE08F33A4AF13DD4C19B754C4C +:10795000F0FB7CA35E98B47808BFAB4F5EBF308F5E +:10796000E2ECE8B7D943E48584ABDCFBDC6362DDA1 +:107970008A0FE4F91F7D1C9EDB6EE4F2F47B2DBFC1 +:107980002078B41887A7C717E4F08CE1F37DF29450 +:1079900080672C9FEFF97F10F08CE1F03EF9070132 +:1079A000CF580E6F10E10113FDFCD31C9E8F747B2A +:1079B000949946EF78E71FAA70EFF783DF5084DFD2 +:1079C0003DBCF00AB61CE6EBDBC1E777B1713BF9D1 +:1079D00017CD9399AE644329FCB58C006B433C22D0 +:1079E0007E70FFED2121AF245D4AF6194EDE94C171 +:1079F000F12AE955B22FF016B693F42ADD1772F288 +:107A0000D2E477F7C121E858BA2FFC566AFF5EF836 +:107A100006D223CA901EB946AF7A2FC0375AE09FCC +:107A2000391FCFBD481F489F6DE339BCDB44FE5072 +:107A300010E1CDE5F8CD0D635E8E8057D0ADE4F852 +:107A400030F00A7A961C17F00A7A961E1F065E41DD +:107A5000E7D2E36E789FF2713D3B1C5D9B041C4DA9 +:107A6000223F2AA80F03C71963C8F9F4C17106E0C1 +:107A7000C84A81E34C6848F8FBE038137E2BB5FF19 +:107A800091C2710FC2710E9499028EB0E0BFC1E035 +:107A90003831427A9CF0D0E3C408E971E2D3D1A333 +:107AA000653287A345D02343E770C87EBCEBA8B5F9 +:107AB000C82DDF8C62B77C6B2DE6F2E02139BE5811 +:107AC0001F460997077DEB56E02D23CCE93FD87878 +:107AD000FB0EB8C7AB3AE81E6FDFC1F4E355FD807B +:107AE0008FF7B78A2714FAE29719DC0F4F6AA97E3D +:107AF0007343DCE55F43BBAB0C114FD052FDF07814 +:107B0000DCE55F43BB6B457FB6AB5D6C40BBA5A2BC +:107B10003FE61AD71E30EE0A393F35B5BFE880FE82 +:107B2000D68A768E9ADA9F35A0BFF5625CDBD5CE19 +:107B30001CD0EE66393FD7B8CC3D2E63378E687FB8 +:107B40002F7F99E1DA87CCAD77D7FD15EEBADC4708 +:107B5000A47A59FF78B2BF6C9917138F5938EFD6B2 +:107B6000CCF809CC2FBFB775C1BC7CDC97CAE172D9 +:107B7000F65EE38B4D984FAEB3F563130087BF46B7 +:107B8000E7F1D5393CEE88AC8278085A3AC5FD5BFE +:107B90007C7612F72E831551914F21E014ED65BCD0 +:107BA00064307ED2237C7F588FB475F352A77D4119 +:107BB0007699E28A6BBFA9C677217E030C14C4B8FC +:107BC000FEBC0439CE707C3BE27660F2A27D783355 +:107BD0000B4571BFB85C8B1F403ED958BB91A10BC0 +:107BE00065D4367CB5D9C2EDBA060591618EE2F94D +:107BF0005D6C69208A79B4E6BC39B4DFD854E0F60C +:107C0000077B0DBE9E8F1A1A9566065FC7605717D1 +:107C10002D4CC18FDFAFC8F737227DFE62AC78A64E +:107C20002D02F56C3655013BECAE8E1BE6D501BD41 +:107C3000CC71E2FBD241BE1FC70E60FB8F5A973D4D +:107C4000A363FBB18CF4EA9F8CC626DC2732277233 +:107C5000F9C0A65B3B9B61FE9D5F299C8AE75DF2B4 +:107C6000BEB4B10CE5455F3F6773BEF8587C07ECC6 +:107C70006CA7E6F34D08C65F42FC14D57550FE8B29 +:107C80001696F940223F4CE4BD79F1FD9AC1FD6D95 +:107C9000BFBFDFAF6CCDC77D8E40B49DA51DE76D26 +:107CA000A4FF70E3CCD7AAB2DF4EC1FB6F0D77FE05 +:107CB0005193C83792F56FE7B00EF44FFBE611858C +:107CC000794CEF9FC7EF0D93C7B1C24E11AD63134F +:107CD000CACCFEF61DF3BEA920BD3FA7C64F1BB4FC +:107CE0008F1DD753E7EDAF8BD37E765FFFF95157EA +:107CF000FF7DCF23BCFFBE7A1DAF83994AFC6ECEB9 +:107D0000BB86E2207A2DCF77648BDC7961BAE9C833 +:107D1000FC263FE61F7BF39BEA343BE027FE2E3533 +:107D2000699F92B9FD7499AFB3A44674C8AC2B7F18 +:107D300001785D79CCC7881E1F43EB94BC89B7DFFF +:107D4000E179262BC53ECE3216CBC2971F30B50E39 +:107D5000F9F203F6F3AC6929F66E859FE701B236B6 +:107D60007E1EC9813FA8879677B8CF275DDFE9AE31 +:107D70005FC72E2DC4F578DD361FC9A1959E7D9B6A +:107D80007C3FA7CFF5ACA115E3EB527F2F31999E35 +:107D9000072A6DED130FCC443D79B69FC741DE1322 +:107DA0007EBB9CD7AA70C2B0E1FD3B87A65D711E69 +:107DB000C3EF13ADC528E77318AD672FDF2E6D73C2 +:107DC000CF6FB8F97BE72BF747069B87BE57B1D338 +:107DD000C55367FB1557BEC5C640D61406F6C3E9A2 +:107DE000202FFBE2D4FF1124BD7325064DB8DF3FE1 +:107DF0008BEB9F8673B01CEEBBBF1BE4BBF6FC4451 +:107E00000CF950E66B04030EC1A4E831E2B3F6C8E6 +:107E100030EF4BE1BD36C4FB8AA1BF07FEFBE41384 +:107E2000E03F8AF550BC89E72BB589B849932F7696 +:107E300009C6FB9B5ED21826AA35F91A484F39A30A +:107E4000998572C15FC1DFFB8F6BF96A9960E27C33 +:107E5000B4E3EA76639EEA12BF4FC4ABA3A4D7FD96 +:107E600061C7B6D1CEF3C569BFC7F826B7B32E0A2E +:107E7000830103DF6991453EDC17FDC9BEA58BB0C8 +:107E8000BE2AB2404712AD15FD7CF0DD033319CC9C +:107E9000AF757F264BA2DCD41306C6F9571DD22836 +:107EA0005EB1FAFB9934FEAA83D7EFA9877E9427A7 +:107EB000CEB77E45EBB589E05FF5F8977FE60878A9 +:107EC00030EFB26993C8EB73A2912F67E238ECAB45 +:107ED000181F90F04B3E09583C5EB26A6F0EE543A6 +:107EE000F6F1970EEDE17B3F9497A6F143EFF2F3A5 +:107EF00038E5FB993C5F4DD97BF45A9A5FD7953EA4 +:107F0000844B296D60FF89F810F0413B9BF8E63BFC +:107F10004A623CBC7FFF3B3B8DF2C938EE4E6309A1 +:107F2000D9459BA89D9C6760EF5D0EAEAB4085591F +:107F30008E249EF7FDFD59B81FB96EAF96C4FC3E66 +:107F40002829CF2F6879F661991D5680EE37904821 +:107F500082F2D05A923B37746DA1FC827587DDEBBB +:107F60000DF01A4DC2BC57BFA2453134B1FA078F8C +:107F70006659309FF7BA1FC942FCC3388B0DE07BAE +:107F80009FE9DE17C6FECFE40EEC0F3537F2D9BA03 +:107F9000AEDBF8789EF5FC1EFEA368E07EF0137E53 +:107FA0004F3EC8DEBC11D91FABF79F7AD081F1DEFE +:107FB0003FF8DB07311F79CD5F3E7AF01F001EF6D8 +:107FC00054D04479B4EEBBFFF9E0DF031E3F38EC38 +:107FD00057912F4E3EF9E89EED503FF9EAC46A05ED +:107FE000EADD426F9F3CF0C7420BFAD9F0E4FC5146 +:107FF00008F786C7E6B9F63DBDE549E0A3843F75BD +:108000003E09A29F7558C1CD72C68E88D2438F6734 +:108010000E692C08F3FBE0849FF204D6C1B38DD522 +:10802000489FB5944780F55B00AF37ECBB95F6DD14 +:1080300007E2D729512358264B3065F586435FBEAA +:10804000E4FCE958FA28AF601DEB25B9EEFD6EDDC2 +:1080500071A0E33983D3ED14582C9804B36EDF6D0F +:108060007C5C0FDD3EC07FCC1E48B7931EBA9D627C +:108070006B1EDA8E2F0FE5A5CDAF92FBF86B1FBB01 +:108080007CC87C81939E753A187E57887CB6237E87 +:10809000FB2FA8AFDF3FF88F7BB6E7237DFDD17ABA +:1080A000A4F7FE536318F0C5BBBEDE6B71FDF53E51 +:1080B000E937F1FCD2AA275F21FD71F2B1170D8BD0 +:1080C000E4360B2B60879C647DFF75A35D7283C2D1 +:1080D0002BEB766726FD59FD74BA21B1B0CECAA24A +:1080E000E7647FDF90E0FC7E43E2E8654A1ABACDA0 +:1080F0000894733D912820BCACDDFD0B439CBFEF81 +:10810000A3A75283747C6B013E1F8C8E127E13E1F9 +:108110009F9542CFDD7C9D0EB61E4FEEF493FF2C53 +:10812000E97B52E42DAC4B28AFB034EBB42F2FE1F8 +:10813000AFCCEB88063CEB58C03BDC3A1E1E8EBF32 +:10814000124FB8D80B06E26B539141FBDC5A9641B3 +:10815000EBAFD567BDE2205F3CE763BBE093A6AC25 +:1081600099CC4A935FDE8CF6474ADE831E8ED1FEA1 +:10817000BB9E6F56633E83F7DC88CF54610EFDF3E0 +:1081800031CF5763E9F21718DB4AF3FC96C8D3BB2B +:10819000738E5A844712CCDB0B294FC29C7BE6D8E6 +:1081A000388AD3E74EE5E370BAE84CD8D9224F6657 +:1081B000303BE75BA3D90E2CEF2D82F29C81F6CBEE +:1081C000C240FCFA00F5E3B65FBEA58876392CF113 +:1081D0008842F9C38110C8A97B95DE63E3F0F942B8 +:1081E00095EC3D78DE16CA4D693F9BB767B66D9931 +:1081F0003379DE2C4F968247B81F2557D759510740 +:10820000ED1B8335907D12C07C9671689F7751B9C4 +:1082100059AC97302C43AC67B31E733C7596A47869 +:108220004081E8B72010E6F6FD65FAFBA9E7ED838B +:108230006C07C56B305DFC9394731C4C9CAF1AEEBD +:108240007B1CAA0473CBC53D1BF972DEE85F148A60 +:10825000147082CB64086789783B0AAD2980AB181B +:10826000DC7C9CF768D643F5B138150D53AEE39B23 +:1082700018CFEB5010CF41F63AF917AAA32A9F9CCA +:10828000ED9967413F1D99F0B30DE1674B3ADFACC3 +:10829000DAAFC6A17EB3D670B8A78CFCEF9D48CFED +:1082A000D36A432F3E3FFDC6F516FA39DB849DBFE6 +:1082B0002DD3ED67EF0B703B5996DB72041D2F1722 +:1082C00074D463CAC294F5405303FFF6FB81B5B57D +:1082D000E4DFEA1C0EEF73399E6EC66CCC67F15773 +:1082E000F0BC1FF0537B94947316FF12E07614F8E1 +:1082F000AB8771DEFED20ECAA7D54DEEAFA27FDAF4 +:108300009366DDC812F7B1711FAFB5314EE54F71FD +:10831000CD613F66079DBB80F112C82FBAA0178CB4 +:10832000F3A3CF368EC9F839B106B27B67A8F19FA7 +:10833000517F16F8C553B05F9E0FAC89BC6919AF69 +:1083400096FDBC1AE0F6862C65DEB051BC62EF4E9D +:10835000C053C74511B1CE6314A7784DB4033C9305 +:108360007F7BAF22E26F4A40AC33669985FDEB4CD0 +:108370000BD8E474FA00702CFDC8471AF25982CA6F +:108380000C5C3FC0977FC6F505F3CE643DFD4E2AD9 +:108390008C9F1D3176A27DAF03C2B45C2A93584AEC +:1083A000BEC1E7BE5CBE6F9C05E5A9402E8F4B6148 +:1083B000BD1AFDE6586F00EA914A1EEF81096AB8BE +:1083C0005E0AC5FC0AE57A5BE45E6F7DFC99E3C654 +:1083D000D79F045FFE59F0098E8FF266F0F53D20BD +:1083E0001EA505D3C4A31083FCDC5C6B19D2CB3C67 +:1083F00087FD5EC59B719CF6DA172214EF3980F574 +:1084000026BDADB60EEC0B731AE7EF8CDBB6107F12 +:108410009BB3443CA9C61D4F2A0A72BF3927C8F92D +:1084200090CDE17189F2208F5300BF51FC2347D4D6 +:1084300099CDE3237DF55ADEBEAF5EC5DF7F8AB8F6 +:108440004679307D5C635C90E4FD20710D61AF5A2C +:108450007DF2CD1D7F95F9AEF3B530C90963039860 +:10846000C180E7B1A5FC3C9255BA99CED718829F3E +:1084700046AF640987BF277F457E3FD6315C7E4B80 +:10848000D013BF2DEECB874E69077C592CF2A18B00 +:10849000BDF15B61A7C87333C3D929F3839F2EFF56 +:1084A000FCE78AFD05C29F3887D394E3CED3F0DA88 +:1084B00035C3C50FBC7AB7E9A2A927F281EF0ACF6D +:1084C000DD578B714B4DEFC27031EBCCE4E7458E3D +:1084D0005E6E503C7F3B0BF03C63CFFA3FB3929F04 +:1084E000A37B309F25F84393EE77CA90F434ED4D8B +:1084F00068E74A79A8C47FFC47B4570DA4B3867ACD +:1085000038417C26F56E16EBA532B826CAF06A8093 +:10851000A737CECD413F34836D4DBBFE245F7CB881 +:1085200081E741EBECEC6CAC4736F0B878513C9607 +:108530009DC479387677A4908E20D17F3936DEC5F8 +:10854000D14F9FBCBA40DF9925AC17C44C57BD4CE6 +:108550009CDB1AB528E2FA8E35733B168F8BF17DC2 +:108560009B18E123B20670563630BF3E22E27145B9 +:10857000CB9224B74B1ADC7E6E44E43F473CDF7954 +:10858000F9E94EC94F600E203F011EA249C4C371D4 +:108590008DEE07D07BFC849762C00BE2E143C6F905 +:1085A00060F46246F76278F121F90DFE47FEF91892 +:1085B000E82709CFFD11379E82961B4F19956E3C17 +:1085C0006546DDF89178CBAEB15CED24DEE4FD5577 +:1085D00083E1A97445D72684E7D3E2E95050E47DCE +:1085E0000B3C9584811F18F27952512C3AEF4B7C49 +:1085F000FEA0E077246020C5DE9278F1F27DD10AFA +:10860000E0639417F9CCC2232EAC2A93E2CA1181FD +:108610004F65A3E4F3F4F6A697DF7506FC8E765C4F +:108620002046874332D04E237E7F87A5DA69BE403D +:10863000969381F77205B8BCD219D81D4AFF393E0E +:1086400090C3C7495E74BBF7677CF0BD92B2EF245C +:108650004B4D67161EB99476EE44D11EED69960215 +:10866000EF44D4A353507F713C29610E1FDB017A84 +:108670003565DF5217FB3F23859B99229E87FA358C +:1086800063E0FA1E8BF0029C63DBF8FD75D62DD6F5 +:108690005C3E9C7D1CF9778298DF04790EA6D37D21 +:1086A0000EA1C201BB18CF4374B8CF3B8CD9E0AE4A +:1086B000970A395F2AF400D38E2CA4738BB78019E4 +:1086C0005D86CFDDE761465B3C2F6BF45E068E0571 +:1086D000F0D52DFCBCDC980DCC5C96D26F493CCB20 +:1086E0005C96D77FDF8B973F0321B75EF8DAC2CB6A +:1086F000485E3D74CB87A174FA614F63C45C361E3B +:10870000F3E702546676269E0EC23CAC1D1C0FD6C3 +:1087100022A65AE17EBE7DA011E6E3A37C376AFF64 +:10872000F08D7B273D6A219DE29110DAC14EFC223B +:108730005447961353511EF974BB089FCBFB262652 +:108740006E2CA5F94FD838864AAFBE29F9EF27E835 +:108750007CF7D836350A9E221B7BC66FA33D453178 +:108760001980B7ACD952F17C4D5588DB55EF0563C4 +:1087700013421857714C95EC8415FCBCEA6078F3F1 +:108780008E27CF97DDBF869F2B6F36F35DE702778D +:10879000091AD9216E17C9F37DB29FD63679BECF9B +:1087A00052D18F2FEF28DB8C74F49EEF53198F7307 +:1087B0002E13E7FB5E0EC62F24BC9829E74FCBFB98 +:1087C000CFF795ACAD0821FE76611E1ECCABE4263A +:1087D000CE17931200578ADCC2ABBC6A00E4F2E603 +:1087E0009E8B42563F9CEF05E39F47BC9406C2E632 +:1087F000B26929F811E7C5C60A3EAFBC85F1733FDF +:108800001DA038CB10EFCE660C3D2C10F27F979058 +:10881000FF8081FAC529F27D57DCCEA573D2421EB6 +:108820004BF90B6251E82D4B457B60D22DEE755113 +:108830002EE46C8547CE960BF95CEE79EEA5E3A4A9 +:10884000849996AE124EEF7A581512F27A142BC212 +:10885000BCD5536CCEA8F9563F9FC873685E3BC920 +:108860001BB793FD4F4DBAC797FD0C171F52748766 +:10887000E236BE0833D1C6EB2C10FAC11367E8B359 +:1088800067EAF0EE0A64A34002E56CA43E4EE734CA +:1088900022752C6AE1FCDBF839FE76837FA7061C83 +:1088A000C5C8477DDA7D3EFA5FEDA1308DFBA61A83 +:1088B0006B473ECBABE7FB2A79422F0C25571DAD0A +:1088C0005FAE8E09C5EF413E92F2B52CC954232507 +:1088D0008E21E5BB94E75EF99DE195C323CC3BF186 +:1088E000EBF1E4126B207E60FA56EAB9AA5B470B03 +:1088F000FD51CAF5E7FD6B7471BFDFA2F936FC7359 +:10890000CBE5072205264D2769E2BD7A9F53E87D16 +:1089100077FB8D2D98F7B06521AFBF145ACDEB577B +:1089200029E427BD23DE03465C79C8A70BCA1D5C7A +:108930002FB75A3813284B873E47D88471E089FDFA +:10894000ED343D4AE780A57CF17BF242F4B07B3FF9 +:10895000445FC3EF9F9072475FC3F3255A4B0F9E4E +:1089600058329DCEC1D37DA846A081CE47F93B6E3B +:10897000A4733F5EF91310F26729CA1F85E4CFCFB5 +:10898000902F34D37DFE5DCA9FBDA8E8E1FDC4E908 +:108990000D747999DF6A502DE8FF65143233FAE3DC +:1089A0004B529EBF2CDA07F4188B427B5F5D03436A +:1089B000BDE1AF17F1933A7E6E30AFDEA2F33CBE5D +:1089C0000A467CEAE5E3B7906F6710DFBE159AD1DF +:1089D0007FBEFA9721E14FB2A8C2E3853C7E3126E3 +:1089E00014FB15C2511661E27E9391F125FD3753B8 +:1089F000C4F3CA100F361B2A9EE7B53306F0B599AB +:108A00003F2239708761E7CCC77DBE7FF345315E79 +:108A10003B9C7F25F5ADD4CF52EF4ABD7D5646999C +:108A200088A34A3FACEB39D463A7ABD5DCD47CE751 +:108A3000ADCB581DBF2784F3B35FF8CEA7472F09EE +:108A40001980F249191AF523CFC54AFE0C0D72CED2 +:108A500049F2B56C2FF9DADB6EC4FC5CB984D6D56B +:108A6000A91D9C1E133B6E243BC4CBC7B25F75206F +:108A70003F4FCA18429F7E23649F9501F0DD511D30 +:108A80005D91EEDEB8E230D7EFF7AFD916443EBFC6 +:108A90000FF195B2FE431962FD4F5A4FF8BA44E008 +:108AA000EBD11D6E7C4586C1976CFF99F11517F8C7 +:108AB0008A727C0D76AFC010F8BA64287CB5C77690 +:108AC000B595639E4D5C8D8EB7F0DE5B357921D414 +:108AD000EF5BA1EE43FBB53D3637381EEA7BA24F74 +:108AE0001F51E0FD827026E71F33790CDB3915AA90 +:108AF00045F13DB3A30EE7B9A7B41AEF0EECB73BAF +:108B00004BF939B25B4B978496A6E0614FE7D3AE41 +:108B1000FB1BF678CEFFCB3227ACB8F27CB62FE346 +:108B20007183A2384BE07E7FED32BE8E82F93CBE6F +:108B300013B4797D62989F8B7F766A2BE5C1DF56EF +:108B4000CAB7E3A4BDD3E9B17764DC2154C1EFD146 +:108B5000ED8C832A8776BEF3B93D9621FC04784FCD +:108B6000F1A15095DBAFD4845DE3DFE1792EEC20F9 +:108B70009FC7DE91EDB561FCD09CDA1E928BAD19DA +:108B80007DF6CD58B46FB6C75482A308E040D9B47F +:108B9000757907DD5F58F4B166F3F5DF11B97A72C4 +:108BA000BF9DF3604648DEAB4B788E26CD79181A10 +:108BB000CAAEE1F16E89DF1D19DCDEDE2AF2B0A754 +:108BC00077C7E6650ED54EC45B6B7AF8F9106FBBBC +:108BD0006BC23C1EBAD5C7CF6D6E1D6F2436019C8B +:108BE0005B152E1F9D7FF5C9FB5C88AE7B969B3B7A +:108BF000917F0E1E2BDF42575FC42DDAB73A68C54E +:108C0000D5F2F0E072724998CF67425DD4E6FB95E9 +:108C1000B2BFE43E7E3F4C32720DE0636D98DB4B99 +:108C20000743201F084FF1E2D4B86886900F124F17 +:108C30008F9F589281791791522B17FD85DCD206B0 +:108C400086E727E478074BC578BAB56532C2B73CEA +:108C500099D99E02BF1CEFF1507A799429C713F875 +:108C6000FEE1BBBB5CE3F9EBDCE3F997C17838EFDD +:108C700040C7A629D3071FEF87838C972DE921E8EA +:108C8000F6D499B733304E1FA984F190FF71BCF030 +:108C9000C0F18ACEDCAD64A6ACCF3561AEBF9F9289 +:108CA00078D4E3C597A6C8A15F08FE7834B62BB088 +:108CB00014FABD6D7C6B10F9788F92084C40BD376B +:108CC00055A5FB49B7EEF83089F6EFA336B76F72BA +:108CD0006A9C8BD0EF2E0DF378FDA33BE6D2778A0A +:108CE000DE41E77BB44EF80BDFDD8AF104DC6FF286 +:108CF000DAD5C23E04FE3F8AEB7E4C3DA33CB7482A +:108D000067C3F393504E6C54C99E63E0DEEB33FBB4 +:108D1000E3359D3ED19FD87793764591B0D387B008 +:108D20002FA24CEEAB519DEFC3C9780EABB6993272 +:108D3000AE7F9F43C62DE5FE86DCD7C866C98B5241 +:108D4000F7DFC6319BEEA91FCF129B10B832DB9A1A +:108D50008BFB02133AE373E9BEAD0D8CE20B9AD99B +:108D6000C0F74BC63D90D317E73C8FB11B912791BD +:108D70003F33C4FE2BD007ED86A4A7FE6F19324FF8 +:108D800093D7F538D743FA322EE79833205F37125E +:108D90009E81795CFCBE4219C75F26FAD916BB3B9F +:108DA0008872FDA1905D1286FA1414AC05E45F5838 +:108DB000582FAA67369EB3D29AB91FAA8599FA6925 +:108DC000E81B817624F737F27EBC741B8CBE928E32 +:108DD00092AE7F2D3D41655A9A46FB85C28E7486C0 +:108DE000B41F4BF55EDA5F053782E85AC16244D79B +:108DF000E280A9223DCB6BAD4D41A42BF830E8F7C2 +:108E00008D0EF37D083FEB09E23EF26074D52B0531 +:108E10009D623C7EC49A07DCF7F6C57474EAD7E716 +:108E20006A97620DAFC73B2BEF0EA25D007A9CECF8 +:108E30000267854AE74B47A0CFF979D6F041F2AFF8 +:108E4000B6E68873FB20FFF19EFD07332CE28B39D9 +:108E5000BDDDF3B253F4C6565F3212ADC2F6C9455A +:108E6000E8F7380F7039F168CC2B271281A550BE76 +:108E7000919143FD74562C786E12AE6BDD21BF418B +:108E80008EFFCB8CAC56F2EFC249CA2BDCBA703DD8 +:108E9000DD5B24E5CA807603EE3975EF3FFDEEC950 +:108EA0005746631ED71BCB3FCAC47C9D37F5DE4CAB +:108EB0009CEFBBB7FC7B26E615BE718B46E775AF12 +:108EC0001571BBAF36FEF74C8C63B50A79DA13B671 +:108ED000BF8974611B79BEC9CA8486C16CDE3FFC40 +:108EE0005DBD370385445F7D6D579EAB2EE7B5D6DC +:108EF000CFF7F556EF3B6A94005E56EECDA178D6DB +:108F0000BB3A5F17EF1E1ABD13E3F547847EE909EC +:108F1000C7EEC0F587F3A17B3A8FF845FE62B78FA5 +:108F2000EB4BBB1EF75BE2827FBCF3FAF15319D423 +:108F3000EFF27B35B2B31603AE3782888EAF584D51 +:108F40007121EFBC97BFD1F5E36298D7F2DB14BA79 +:108F50008F0EDBDF027E647CE3AD1427F5C2B5D84B +:108F600071E7C52CED5A48F1F6251B14D2E34B7678 +:108F700028B4CEBD79BACB98B5654E599A7CDD231D +:108F80003C8FF07A4FFCD56B5F1D080BBB6A269BAC +:108F9000C5E34655775659C3EFAFBD0B763E26ADB8 +:108FA000BED718A0F2FD4693CA6F86395FAF3E7CEC +:108FB000F4C72443F4EE99C877078FBD937135BC8D +:108FC0005A1FE1F6FD053B3F6A7A1C5E4F63B1EC28 +:108FD00024C92F9BE4CC3502FF17B280158679DEB9 +:108FE00021ECF86967A09E02DF871D0AF979EB6121 +:108FF000C5625EDE3508EF14EC9FDBF5D7E0EF9F2E +:109000000C017777D89B0FF7D9E01EECBBB51A3F60 +:109010008FE07D2ED7C337853DD2F4E4B71720BF4C +:109020009CBC4BA1FB9A57ED7D8BF254971FF69B8E +:109030001A0F461E47F926F9D3CB7FE0171BB8EE6F +:10904000FBF8ECC8ED840FC907B06E22222F2BA2CB +:10905000D6A4E1B761F2BF4FFA7AC6E03AF7F2D38D +:10906000C941FC965F8679DEC232CB5E80F19AE51B +:109070002CD6CA7F77C77EE96F0987BC0FB49AC721 +:10908000BE306FD3AE85757AF063EE0F6D3E34EE71 +:109090001EB4A3A7FE54A71CEBEAC74AA6A1BD575E +:1090A000FDA33029D5EAE79ABF84EBFAC29DE23EE0 +:1090B00026A1472FC07F5A03F174C14FE668E78E9F +:1090C000005F5E3C5DF0B1EEC993EBF831E6BF5650 +:1090D000EF56C83EAB7EC1FBDEE172EE89FD8FA389 +:1090E000BC5DF58BBBB330EFFA377A4721D261FF15 +:1090F000EE962CCC8B7C5777B210AFBF4968AE7B15 +:1091000012FAFC8F4C45DE63EDCA6F656D0EC1FD32 +:1091100087477C26E691ACDBEBE77993CFAE223A2A +:10912000409DE74B1E4A9FDFBAEAD17B0B2D9ECFB5 +:10913000E6CE73DDEDA37DD01BC02FC36106CBFB54 +:10914000EBCB23EC1A3A1F729DF01FBD798F329F33 +:10915000D4BBAEBF90E95ED78017F2131D980FDD28 +:109160000527F21C9BBEE3770230CFDFBC366A27AF +:10917000EE7FBFBFFBA759780EBD6FDF52E4EFBD96 +:10918000DF356EC8FB7B4F0A7920EB83E5BFEE0726 +:10919000BD84FB256B5EF5937DB3E64535A30AE3FD +:1091A000183B7D34AFC74F3C5D3819EAAB0FF8F27E +:1091B000EB393894E72AE9D5977F2CE8B3EA073FE3 +:1091C000A27CD8BE3C6441A7D5078E1AC8275E7C16 +:1091D000CEEB3A6AF484D3D0ABEBAD05E8DF347D57 +:1091E000E7B481F2E6374F296C54D9C0EF573CF20F +:1091F000539E672EE835785E79F24B3F9C4EED4CDE +:10920000F4CB06A35F15F2CE0CE2EFEFFD10C65DC6 +:10921000F19A9FF2DA577CEF6BC4E7BFD61B88CF79 +:10922000D73CD0528876C50A9F536852C99FAF7801 +:10923000F026E2BFEB5FBCA950DC575AC4E581536E +:1092400084702DDF7139C1751D8B13FFAD7840A37C +:10925000FB444EE9ACEE401A7ABE28D6C9AF77F986 +:10926000D11961BFC6382DDA6B3FD778FE9627BF7C +:109270008634CF4CCCABE2F4D99BA9CABCA600CAB9 +:109280008F75A2D5BADDB7D2F9BFF746F373F28076 +:109290000747E04B41BDA6BD387F14A70BB3D05E96 +:1092A000A7EF4074CEC3E7D8BEDB6707A7B8BE13ED +:1092B00079BF7CFC0D627C987708F7077E5DC8EF6C +:1092C00083619EBCE81B0EADACC73CE84F049C7D9F +:1092D000EB7DB7C82317EBFDBF8E73398279D3942A +:1092E000E7DEED4B8E72E54BFB5D71F4FE7C609F1B +:1092F00058C7EEF7302FCA67EEC3E7530AD9BFD776 +:109300006DF3BBE27FEB0E89730F9E3C226F7EF301 +:10931000F562DD7BE9E795032F78E400DB5130A2AD +:10932000B8F51A5F82F2D2619D92DDB666BF8FF208 +:10933000817FBBEF9997AF06BEFE6D975C9F6E79FC +:10934000DAB73E01CF88B7150767B074EBF3B7788B +:10935000BF6EBAF509CFD3AECF3023F9F53793A757 +:109360007D7876AFC7EB0791A7A73207D849D978A0 +:109370009EECBDEFAE1E4BF78479F02AE5A7572E81 +:10938000DE9569B9F2BCFBCF5D70BBA6FF1C0CC7B4 +:109390009FE4CB55FFB896C6E9E357C997523F0DF6 +:1093A00092C7EFC5A3F7FD3FA3FC2918983FE1CC76 +:1093B0006595F87B254D06ABC4F889A386A2C8AF96 +:1093C000DEFD0B26EECDBEF96946BFA7B63CAB4C21 +:1093D000E6E5D1BD7037FF843F678CEF0B9D7E9E25 +:1093E000D7A3F3D48674F7298DCFE2F26347169F93 +:1093F000D797B22C71FF6B4CE47D76D13E5093220F +:10940000D6514E16AD239FF0BBE5B9B16886FA91EF +:1094100005B6D0B977442EC6F3B1D169EAD7C641B3 +:10942000FD735915BC7E9EFA8372A87F216B3CAFF9 +:109430009FA34EC37B2AF6B00917D7425D57155636 +:109440000DFDEBC54602C7DA02EB36007CDD9CC59C +:10945000EC1CE0AF0C3F7382D5FDF3CB30A09E4BEC +:10946000705B18BF68CA09503E67B38F7F37D2FE62 +:10947000643FD5BA358FCEB355008C65FDE354EB10 +:109480001CEEAA30FF7DA2E61C3E5E338CD744ED75 +:1094900024DE4656CA7C5F2D83D343CB561B0E4039 +:1094A000797916F717AFC89279FB3C2EF1BB2747A5 +:1094B000EDE271D4DE31F4FB0BDA87FFF10FF0BC83 +:1094C000F72B19B4BFF55A88F3C595D95B7D674171 +:1094D000BD3A30E66BC854AF29FB6EC2F29CEC7803 +:1094E0003C8BF797C4FEAEBE56E3FD851B32316F51 +:1094F0005BB1B91DAC00F1AE017C34D9CC32C6E110 +:109500001271E7CF6A5A756F92C6CD748DCB4A41FE +:10951000EFC03ABA72365F47E0D3921E7AA586D77B +:109520001725CA9B7A2C9A474316C03FD59F188DA2 +:109530007ED7D5FEC478CE5F6E3FFF24F67B0E97B4 +:1095400073788FEE74B13EA71FE676BACC9B5BF7BB +:1095500092D84710BFE727F3F9701A08CF3A841161 +:10956000DAFDE07D1ED7A97ED69D2731FB051E675B +:109570009BED9147E7897CA2F386F15F6FCB12FEEA +:109580006B312BFE6BF243BB15BB83D383FFDE4BEA +:10959000BDCE6CF1FB15B4BFB55EFCBEE2872F9467 +:1095A00067633C383B8BEB4D996F6D581AE5A31CF4 +:1095B000F2C839C9AF938F9B4BE977138FB3AF5282 +:1095C0007E95ECD7E478ECCBBF7C97E75F4EEDA9B6 +:1095D000FC36FEFE8DEF988F25ACFEBCC30F8FF3DB +:1095E000BCC399C7F839C2C7D15FC6F858C47D6EED +:1095F000256885989582978CCA5C57BD3928E829DB +:10960000F217A7F157F47B5CA9FD4C33F9EF3566EF +:10961000D794BBBE672FB8F30EABC5FCA2E14002E6 +:10962000E733F3B89BAEE70ABB6F56BE8390B29A9E +:10963000D73DEFC375B4FF73EE30FB3F3FCA12FA5C +:1096400047D277201E5DF99B53D9946FD3EFDA7917 +:10965000F1F8AE1B8F920F009F1ACACF1CDB8DCF83 +:10966000BC3A373E0B626E7C8E5AE4C65B51DC8D91 +:10967000AF921567B9DE8F6EA876D5C76E3CD7D589 +:10968000BE0C144F6A7D5CDBE75DEDC7775CEAAA30 +:109690004FECBCDAD57E526289EBFDD97B578D88C1 +:1096A000FE93BBD6BBDA49FA9F73F8EF5DFD49FA2A +:1096B000CBF3EDD58CDB255191EF3A18FD35B56133 +:1096C0001EE6F544930EFD7ED4A7E50323FBD3AD40 +:1096D000F37221EF316F19EDB3DFF9C26D688FE6D8 +:1096E000006FA09CF5EAF59C233FA1F8BA373FE153 +:1096F00066CDA27D88D3AA3D1BF9A58075515CBBC0 +:109700005915F7A2CC0D903EBE4355BF9ABAEF341F +:10971000369BCB8DB1D962DF1DF41FEABB920CE6FC +:10972000901E5499EB7735B3F298B827EAEE5BF1C7 +:10973000F72D9B737A2AAD1C801FEBA3FBE53DE858 +:109740009769E827803C3F2B1BFABD5A05790E43E9 +:109750005D693AF31580AD24C01C3CE7017A8ECEDA +:1097600047E7B07C657D15BA367DFAC4FA0498E007 +:10977000995567D3799A0F574CA2FB5A3F0CF7DDE6 +:10978000D3C87F77B88EE7055C25FC8C0F978DA337 +:1097900076AF5E0BAB0DF8E9DF70E66037BC6A7040 +:1097A000BF63B8F8D88A9DF76462BECCAB953CEF36 +:1097B000403EAF1778AACFD6885EEB966538FC9C02 +:1097C000A68FF6A3D12FC2DF13BC21C1D72FD6316C +:1097D0003ED43E7D97FB7CFD31C729817FAE3BB2F5 +:1097E000D0756FCB95AFF038DC957F662EFBEBEF35 +:1097F000B2F9FDCF7F27C6BD020ABC1FE90AA0430C +:109800000E963F99B300D7033C4F2A50BFE41898F7 +:109810005C80F785F1321F22F1DF59F4A5C760EAB9 +:10982000D765F3F12F63311FCEE7E56BD76662BBD7 +:10983000BEFE643F25D02FC0F14A8EE32B04BEE963 +:109840003D5F213D0EE305F079EC9A92160CA1CA1A +:10985000F15E66F10F5E02BEBA9445A95FD93F255D +:109860006ACEEC9783EB576624F3A0BFF5AFFA29D5 +:109870004EFCBB4DBDDFFB3ACCEBCD557F7C0CCF16 +:1098800003B078CF68D47357756ACC02BADF14B6C8 +:10989000D721DFB09A919DDF9EF7DD20AD87F5F7E8 +:1098A000F2B8DAFAEF4CA473D7EB33DDF77A4A7EDD +:1098B0005929F865FD23E3E89CB6FCDD0C6FFFF841 +:1098C0007B3F16FD9E2EFF9DE3967C9EBFABB3783B +:1098D0000BCEAFD9ACA67BBCB7E7B204ED3F968EFA +:1098E000F0775A607C07ED21C6E7F1AF824F171D74 +:1098F000C99B26ECB1BBB0FFD79EDA3F1AE5D7F380 +:10990000931E1D4FFECCF491E183093D1415708226 +:109910001E227FE1772C14F5A7F1170E087BEA666B +:10992000D5267BFE6661D79F56B9FDAEA9D1880EBC +:10993000F5AE235A06E22B0B8DE594DFFFCDC26412 +:1099400079FE7BBE7600FC99B385DCD87BE79B175C +:1099500037F3F887DB4E1371226997C5E00FCAED24 +:1099600053EC8886F04FEC74C71B672755F21B3FFA +:10997000AD1DF6C36C8F9E1EB11D167F361BF0D930 +:1099800055C9E56D5732C4CF59802AE2795E6EFB26 +:10999000CCDBCFF32837E0FBEE6C2EE7EF3579997F +:1099A00001F22F939F8B73B46AAA534A26986F765D +:1099B00001AF3BD95016A3BCC57C67E5646500E4E4 +:1099C000ECF13B7F796B5B29DEE7C0F18BF526FC80 +:1099D000772083DB1D520E3E7B16BF875DDC1F3375 +:1099E0005DC49FBDF39B0EEB8D94AD5CAFE2FBE4D9 +:1099F0008FFF44F744ECCFB57E761EDAF3CF69745F +:109A0000AE39A8F7183969E07C1CE52AAC8F1293AF +:109A1000EB91C06185EEDB0858DCDF0C9AE6548AD6 +:109A20005FC75906C6BB3F38308EFCCDE7047EC603 +:109A300065C64E22BFAFD5768E31C791FDDB9B5DEB +:109A40003010BF5D49FEFB669375D6A6E7F6E35777 +:109A5000CE635DE734DA04BEA1338FCA49E8CFC3D1 +:109A6000A375490EE7C9C34DB9E9E2A5EB46F5FE7A +:109A700001EFDD61DFE7F7194D3E32ED7A9487485B +:109A8000623CA7F87F0141130160008000000000E4 +:109A90001F8B080000000000000BB5597B7494E593 +:109AA000997FBECB5C9219325F6620848B382490FC +:109AB000100871180284A8EB2750C01861806ADD75 +:109AC000D5D6091C81E63696EEA27B6C8F9384B6C0 +:109AD0001CE46C736A2F7497F67C50EDA1957806A0 +:109AE0004924D049CE101012049B285A508F1BE9EC +:109AF000965A4B32915A70BB3DCB3ECFF37E9F734B +:109B000009B4FEB3C949DE796FCFFB5C7ECFE57D3A +:109B1000E7979FCE03F00138B599008B00E6ABA024 +:109B2000DABC803F86BC7E3E40C4014FC4CA0146B9 +:109B30003F5578DD0DFAB907D775DFAB687900E5D9 +:109B400089F63E9808901377F8A34822E7790089B0 +:109B5000FB390648B8BF7715489500C97C084838D6 +:109B6000DF913BF63E607FACC7E1DF8FF3395A3BB4 +:109B700078917E871D1E0B615B06A0BFEC4E8D5B4E +:109B8000E7E5C47F0480E3CE59A01B34AFB6C3DD44 +:109B9000EED4FC806702C024DCAF01CBD1919B9056 +:109BA000DDC8C7D86C80FDCC578A4FE0732D3ECB03 +:109BB0008CA844E78F5D7E7A22F3A5EDF7131F8210 +:109BC0004F8897FA5FA0FD9ACE72E468FE00ADCF91 +:109BD000E62B5201067800FEAD15F75493FE408740 +:109BE0002A1CCF4DF59D73F09C22FC3495BA537717 +:109BF000AE989EDE8728ADB7F6DFD33E7DE70E9C9C +:109C00005755882A410017B613BC24A79FE55491E5 +:109C1000DEA4A0D04300F5E4728AF9CFD63B912DA3 +:109C2000EABBC5BA8027EAAD41F902A7E5401B921D +:109C300080BFDE00580CD04C2763FF9FA5C4E57B96 +:109C4000D0C47F4EF455F891A7C6D3C766D8B16D7E +:109C500090E33F9C8FF37147F83E0DF57AE43D1990 +:109C6000F2500F1FFD22C7A845BDCC39BAAF4077CF +:109C70008FA7F79D0BADDF9B46763F2AF951E39006 +:109C8000B48DCD203E9BE3BFB7EBD8AEEAFEC03E1D +:109C90008CED6FB5F0060DE5A9EA6E594E7A5C0AB7 +:109CA000ED6D1AB6F36408C7B08D15223DA473F5A7 +:109CB0007CC9FE16D43B8C856F275C7E5393D8CE2F +:109CC000961DE2CFE05C2940EF334E6EADF1EC36ED +:109CD0000A7DD3006976D904DE5AE1E434D27BD719 +:109CE000F17F2CF623DDA4A1AE267CCD7BDBF99899 +:109CF0009E86BF273599CF7BD23CD7961FAE27BE15 +:109D00001B8E5FB2E7A17C91FF8ACD005C3228E90F +:109D10008DA42780841A4248D6AAA0B31CAADF9338 +:109D20008EE7331E89ED68F52359FE1551C7ECA463 +:109D300087C88788F772B6FF0E0FDAF3C5B7BBE79F +:109D4000D6B9997FF0A05EBA2E3A0CF23BEC3F4CAC +:109D50007EDAF2D6B58A619CBFD6D3703BE9F32B8D +:109D60009ACDF28765B9E47787D01FFC29BF2D27EC +:109D7000BF4556CAC91F2AA95FC6F43AEC8335EC21 +:109D8000A75D32909FA23FB07FA03F682F00AD47F4 +:109D9000FFE0FDA5ECF71D83B24EFD6822D798CDFC +:109DA000FD651BA8DF31B84263BF9751F541F2DF73 +:109DB000441FD38901CC26D34A108A95A7FB711E74 +:109DC000EB65C0D4CF7BE853D4BA1425C34FF2144B +:109DD000D9F22BD16F9378FE52FB033BBF8F7E03EA +:109DE0009A4B8602806D9AC02314621FF1F9752781 +:109DF000EF816DAF56AF3D88F26D3BA7F0FC62FD81 +:109E000089E5E85350B5BAFD04B5D5A1D8721BF168 +:109E1000B747013FDA6511B6FA4280BB1E1E3C61AE +:109E200013EE3C8FECDBD977DF3C95707ED10139A6 +:109E3000C842E75FC6DEFF25CAB7BD17F50AE3F1E2 +:109E400087EC32DE6E85CFA4349C578C3C1FD3BE8A +:109E5000BC5ACD417F592AE43CA23DB2338A8C558D +:109E6000E5EBC7085F6BBDE16384BFE4D05F0A1018 +:109E7000B6D075FE525E18EDDD69D7E769DCC2D653 +:109E8000987B3CFD03261E2A29AE9BFEA522BF23FC +:109E90007B7CFBC8BF463A15BD0075FEAE8977884E +:109EA000EA8385A8C7C785DA606BA7F281A3026041 +:109EB000B30EF00DC4E3E327EB6B81FADFB75D1A55 +:109EC0009E23D6DCA075F8F714DABB240A8104D2ED +:109ED0006F3EAF040C3F8DAB97864D1BDC9849FF5E +:109EE0009F9009278D7109FE1DFB916E5B6A1EFF15 +:109EF0001A61F7C74A05B56A8A3EAE7BEABD29EB0F +:109F00004EA69DF7AE3661E265177E2886E21B0AF3 +:109F1000E3219020FCBEA504F6E3B04D857E07F258 +:109F2000F3A22CF482F191FDE9FA3385EB4EA24ABB +:109F30009EF6EABFF6A03E7FED31F3C7321177C639 +:109F40003A2483F17F00E339F6AB3FF4EF8399AC19 +:109F500097F3858B859C849F6A15F8BCEAF3C5014D +:109F6000B27B15EA87E4DA1C970C03D76F253DE531 +:109F7000515A15F2619A851B4544AF5DA175F57B79 +:109F800025F0E1BA860359F2EF193A3505DBA658F8 +:109F9000E678C4D44B244B2F2FD387A5E3F573C3A6 +:109FA000D2CF0C9841FA01E5510FE105FA5109535E +:109FB000C6E3C4D20BB917F9DF1F29BEE0FA374C4C +:109FC000FAF8E3AE435CFCD6947F6ABEC04BB3297B +:109FD00077A3A1B0DC9B4C7CC06E810F27FE92DC86 +:109FE0001110EB9AF64A4662E678F9B61EB4D5D956 +:109FF000C91660D84308F0AD7B33F1556FCA5F9F37 +:10A00000257F7358CA381FFDD45D8776DA64E2F77E +:10A0100056FC34D884FD1A102F51FFFF1F7FD976CC +:10A0200009E69B76990B7333ECB2DAF7B9EC027A56 +:10A030002EC7B56D4E6187AB27E77AA03C8583ECD0 +:10A04000FD2B318E01C6B1557B246E3B07FB76DEBE +:10A050008972077B14AD16F7270797B9E6533C3B87 +:10A06000AB06884432BEF0D928C6B9C3FDB336F872 +:10A07000916E7048663F58782E68E4A03CC17341E9 +:10A0800057F10406818FF480FB387F26CFCE7AB358 +:10A090009CE8F4AFA8A4B4DD7236E8A27C7F182552 +:10A0A000231C49E73E799DCE5D38A02E76E0FCB7B3 +:10A0B0000B15F6B7553FAEFBB903E9D6E42B2CDF01 +:10A0C000A9C16D5F643B9C95351A1F3D2BF3BAC641 +:10A0D0009F28868CFD55876C1C5F22683789F9B5EF +:10A0E000F1F9919ED9BE4DEE94FD379A380DE6FBFD +:10A0F0009FABA5BA6E8A2B40796CD56D36CE7B5757 +:10A10000A6BA7E46F54C89BE6FA5867C5E39F6758B +:10A110008E4BC90E090A91F0A9C2132F4551BE2BCF +:10A12000AF0CD901DBE59D4376CAB31B2DBFDE29F9 +:10A13000F061E1694B42AEB3DF81F1743017124830 +:10A140000FD4763BD9A569C8EA0FDB293F87CC3A03 +:10A15000A8F9F90FB85FDF2DB17CF5CF4B861F3F13 +:10A160009EE83962273E9A0F4A307926CDEF5B4947 +:10A17000EB1A20F66D8AF3D9F162CB9ECCFE574DD7 +:10A180001C7EF5EFE0B0CDC2611994110EAFDD1B5E +:10A19000F210EEAF0DE5BACAF1FC6B030AE3E16F12 +:10A1A000E091F3DA59AAC3D0A05713B24EF25BEB99 +:10A1B00046CF5EB5539DB832FE31EBAD367E7C05A1 +:10A1C000E9E3010837927C0FC45D5A02E5AD1D1624 +:10A1D0007E571377188644F3B11D2467B2D7C1E3C5 +:10A1E000D19724AE2FACF8B3C5B4EB16D30E5B30C9 +:10A1F000B0FA30A435F68B3C057B33ED72FF9C4CF6 +:10A20000FDD48088173531112F92B6984AFA4FCE77 +:10A2100097A09DFA535C6C8FE851716E33E913CFB0 +:10A22000693C9849A7392BAFFD207F12E3F7AA2A92 +:10A23000F2DFD5F34A25C5955BE5FD6C7B7465D9E6 +:10A24000A3764CC4A71A338FF6275ACBA128A59F13 +:10A250006C7BF4FB8B3DE1F25B9FF7BA592F5BFD02 +:10A26000B5E8285487C534A1FF81C149FBA8AEAB2E +:10A270005FAA44A91EB8CD2BB33C8DFFBB616D1006 +:10A28000557645EEDB7E10E7FF58172B21BBE1FD2D +:10A29000E01C897C7AFAA6DD0B70FF471DB600C56D +:10A2A00013D0F795509DF49DC2E76A83E4A7076D2C +:10A2B00001BA0F8C5629518A9F11AC8F81C71D0698 +:10A2C000D51F91EE3F89FB01E104DB505CFA02E10E +:10A2D00004EBED8B447F1D7E9C887A58D78DF91D49 +:10A2E000C9AF5BF1B19DE225D6DDEFD27C76DD3DD5 +:10A2F00030ABD8B3915AD53FD9EBBE75DDDDFCA9A3 +:10A30000A8F3ACF166F44FD26B735CE2FB66AACEA5 +:10A310009B2C519D97EC3972D2CBF1217F01992969 +:10A32000D7D44F675FCE67754711C92FED60BF68FF +:10A33000B6193BBC38DEFC0B89F30B1C45232DC141 +:10A34000B8F8462EEB7BF415C9705000C3BA82E210 +:10A35000F966010518DD18BB44F5F2B50E27D79351 +:10A360005BD03E4F21BE379B798CFADFC0BAA60581 +:10A370005AF95ED30A3BB8DD8C7FFF101C1F0F46D5 +:10A38000BBDBEC840BAB0EE1F1A2F171A4C9C47983 +:10A390005316AEB3717A9B17713A2F855394E759D0 +:10A3A000BEEF0F281AC9D3D9F7DF3F9D4AFAC0FA8A +:10A3B000B888FCD6AC37504F6CF7E490DB207D7E3C +:10A3C00064E2F10ADDDFD0D55BAA14D68FBC54B4A9 +:10A3D000F37A8F14919D933DD7678431FEBED87B6D +:10A3E000642EE10405E1BAA3E100AE4BE3AB29E63C +:10A3F00022A7FFAC8F7C893CF1B612A07C837C95B0 +:10A40000D827A6F8EA5287F30237F12349EA63FB1B +:10A41000C9D2C98CBA3D7254091969FE85F23C460D +:10A42000F1ED0EAF5937AB6305940F177AFD8C8BA6 +:10A4300096B8B0B7DC235A3CFF21F10E62E3F3C7B4 +:10A44000CD2F8B36D2FCB5992E203F844FA3B5D4A7 +:10A45000DF5EA4C02EEC6F7FA3BE14D2CE0749DC12 +:10A460006B23B6B102BE370EC9CC5F64E86AC12C5B +:10A4700037C5B97D2B28AFDD6FC68B5345AEAD8494 +:10A48000EB289D3B19C04EF2E1FE5F51DE45FE23F5 +:10A490004BC5FE5613579D6FD4B8E693BD7A262D53 +:10A4A000505024DDACF7D67A4335DE45A9FBC7AD65 +:10A4B000EAC9B4FB0FEB238272923F1DBEE0306A03 +:10A4C00025BAAF5E7FFB11927700EB0EA4DFD2E3DB +:10A4D000887AC85EEFE41894F7211CBE83FC7A7B6F +:10A4E000EF9652CA7F20B5B23D76773F9EFC0FDCD7 +:10A4F000D774D145911C9A7ADE2AE03CDBB5E83965 +:10A50000AA5BB04EB99FEA96C3711BD72DC1739554 +:10A510008CB7C3672B7DC5747182808BE8360DA81C +:10A5200021D247D340E56BB5546F9C5BC6758B74E5 +:10A53000AED247716821DD53A96E1998C57D4B9E37 +:10A540003AAFA85392C773F8BD40822281179895FD +:10A550008197C6CE5739BF37762B7A3A6EAC7DFFDE +:10A56000E255599FFF4A78C1B62526E98C8743A258 +:10A570006DEC3E5C407234D8626CDF96833631DF1E +:10A58000215A8076DE170DC86CCFD76808ED50636E +:10A5900037A603B278C6ACDFCF5C0CDFCE71F0DE3D +:10A5A0007029B5D7BC99F1300ACB986F90D6B3DD3E +:10A5B000473A453D956DC74FBCE21D24CF078F85B7 +:10A5C0006E32FF3BD30F6AECE21D87EAB02918D741 +:10A5D0005E37F3F51A8C5FF47EF8B21937DF04ACFE +:10A5E00037246AC5BD3146BE8CF6DA709F64B4A0CC +:10A5F000FD373C60E37A02AA449D1DC25F8A5BA5D9 +:10A600007BD48CB8853336F2BB0DAB33E3D983668C +:10A610001DF4E0DFA9839EF79A79B7044A443DEE22 +:10A6200076D13BE19FFB6D9AC27587318BE8DFAA3B +:10A630000E3A8571CC8F71AC1FE318B598975EF216 +:10A64000DEE43D287BBF95975ACA7EC3EF37678EFD +:10A650005F7C299FE3660E141110FF8ADCA0FE9A2E +:10A660003493D7ACFD2DB09EEDD60A5FCCC09D656E +:10A67000BF11AABBCBC7DBEF94A9FF6618B3E3DD1C +:10A680001976CD3142D4FEA72CE2568E7377741A18 +:10A690007E8CC4D701F9774B99A8C346BE20F2152A +:10A6A000F239C39116DF47A6887A6AFB4312BFAB23 +:10A6B0001E2FFB0DE7F1A6C4A09DE24F4967DDB751 +:10A6C000C83F1168E7E97D668D99E7D63A455E5B3C +:10A6D00063DDCF2C794DBCB480372AE2F0446E693B +:10A6E0003DE5BD35669E5B5B9569EF52185C390DA3 +:10A6F000F9F8922E71BDB44ECF9C5FFFF08257A93E +:10A700005CF8BC38F91F6FE8F75EF2F3C1AB0FD10C +:10A710007B68B389EB40A9BF7B98DE555FD316B445 +:10A72000E1DA882BAF42439C264DFCEFF284467958 +:10A730009F716933BD0F7E426FEB93527E13980C6D +:10A740000BBFE64EB78BD867ADFBA657E3F68CCDB3 +:10A75000984E7E0FE5BE9BDEEBB2E36B4BD9E90A68 +:10A76000D2FB99E30315F634FB5CD9162EE5FCD039 +:10A7700073A2C0EF4EC78F6CE247E55692D69B7925 +:10A780002F134F57084F64CF4327D63C4238E8DC9D +:10A790003051F2A7E5C5AE37F366A7D11D892BBCB2 +:10A7A0001EEF3B250F4E48E7F35BCCE7484CD04308 +:10A7B0002347F99EF3CA82C5BB84DAA332F5E76C5E +:10A7C000FCF92EC23FB4F17A0B97B9B6767D1A8E9A +:10A7D0003BBBB1222C4AC91DB303D389F63A8C176F +:10A7E000B89E177124F981C6F52CC07420DCBD62B7 +:10A7F000E2AAD227F0BF04830FE16F29C414C2FF7D +:10A800001250E151EAABE8B8D8DE0586427174898E +:10A810009A382E55F0785445DCDD0DC33C7E0F3D53 +:10A82000E9E0BE7BC1AF527F3944DB2821DD194B03 +:10A83000DC4FE551A240CDBF8C38A3907233BBA54D +:10A84000F4A2C2650B77B8188B157EA7B6F85E2CFC +:10A8500009BE97E8E0A438F9659F881B01979073BB +:10A860006C04F8BDCAE2EB4E15562BC8FFDD2A3842 +:10A870007371FDA19332FB67EFB0DFA07816F099FA +:10A88000FBFE80FB6672E9018F06537256E33E7A47 +:10A89000275BA2E20D97F593B8A9BC217ABCE2FA36 +:10A8A0007BEC2B446F79DCC1758AEC8C2A546F3EAB +:10A8B000E413798DBEC7C8433AD5ED125CA0EF25ED +:10A8C0008A857C16FD6A34A92748EB457CA227DEE1 +:10A8D0000B5EF1FD461E7F2FB54223FD488902F92C +:10A8E00086EBF3EB315900CC77DEA6B1D1A72B5321 +:10A8F000DFF304E2A72F489887245DE7BC1370BA02 +:10A900001354F7A2D5AFA4D7C7F5BE8D5B7DC88F12 +:10A91000E4D7583F10063FC5F3C9B057A3FA57A66E +:10A92000753E61A60FD14E5F32F1F54E6E5E057D2C +:10A930002F74C058EF273C3F3CD11920BD079D33F1 +:10A9400016126EEFF084B7FA506FEF4807673311B5 +:10A95000D558149A90C2B30BF42AD23356018CCF37 +:10A96000A79C82DEF51CD1BA301C3B919F6711F782 +:10A970004E2FF1078CDBA8F97E197D3FC768C3F322 +:10A980009E54420CBEEB72C049F4A0287C6109B60B +:10A99000EA32DDFF849B4A6E94C3959223FB1C929E +:10A9A000EB2E4B2E3925D7F873A2B6B933E91C7FAD +:10A9B000DBB0C4F27D97E45BE0306EA3F7847F7276 +:10A9C00018B3890F4B2E54347F6FA499FAB2E4D494 +:10A9D000C80E940774B4836547D4D7B3B99972DAB3 +:10A9E000C094C78FF6983F5E8EFF03E8FDFEFAE045 +:10A9F0001C000000000000001F8B08000000000089 +:10AA0000000B2B146060F8518FC07BB950F9E83807 +:10AA10008B13959FC18D5F3D212CC38060CFE66075 +:10AA20006098C80CC1FE50FC838981E131146F62CB +:10AA300086E0132C083D4AEC0C0C9A406C00C4E6EE +:10AA4000ECF8EDD265C5149B2FCFC0E0A28CE05F7F +:10AA5000956260109406FA539A327F8DE2A1815B71 +:10AA60004D50F92F7451F92FF51918044C91F8BA7B +:10AA7000A499DF08D4DB04C400E1FB6D4A6803003D +:10AA800000000000000000001F8B08000000000014 +:10AA9000000BCD7D0B7854D5B5F03E67CE39F3C8A9 +:10AAA000CCE46498C0240C78F200526FD0210408E2 +:10AAB00010ED010262A5DE11A98D8FAB43821095C6 +:10AAC000477C54D2D6DB39214F2084A8A9373E6A6F +:10AAD000077C14ABD8A0A2DE8AB7A3A2C55B6FFF28 +:10AAE00078FFDE5FEA8F363C047C36DA5AEDFDB53E +:10AAF000FC7BADBD4FE69C9309C1F6DEEFFFD3AF03 +:10AB00006EF6D9AFB5D75A7BADB5D75E7B8FDB2359 +:10AB100012E9EB849C823F9AB68B849059999410E9 +:10AB2000491BF4404A8C5325B63C39E53A93FC174F +:10AB3000D3EC7983907C48BF47C87842BEC3CBE84A +:10AB40009F0EF91A9E31E13153125348BA2CD34F5C +:10AB50000D61794D14C82901BEDACBCD719A3CC183 +:10AB600073482E219F79596A2CA44595347DDB9B2F +:10AB70006A2922E44B922861F36C9C139F8EE9B9F9 +:10AB800090B608A4B6DF9F050EB209F1D2928CCF21 +:10AB90003C2667BEBBA4581AFAA5FF8F3DA4D1D4AA +:10ABA0004F24984F27C0067932A0BBC214CA706CDC +:10ABB000E6169AAFA0F0027CCBC57805C3874EE2BB +:10ABC0000142E64065DAFF0B81D90713B4FE273155 +:10ABD00025E6A6A537059E26A498906DB35E892428 +:10ABE000285C39523F5121F513BDBF1CDAFF2321E8 +:10ABF000B309F9D4C3C633E15A40441C2703BF1D2F +:10AC00004F03F00F5ADE256BDBAB012FFFE68A3DC9 +:10AC100084A5E95A98CFB659E3C52D740E9B935A73 +:10AC200075E914423A92DA4C89A69BE581DA7AA852 +:10AC3000FFAA8CF36D4B96E1F717664DCD1D2C07DF +:10AC400050ECE3B6E5FB6A5308674F62139DD7C625 +:10AC5000C13DF3010F35F9BD98771D7A66BE5B8360 +:10AC600076416CB7CD4BABD2EF4601493D5484F8E9 +:10AC7000ABADA7F940A55A01ED5CD11E9DE2984805 +:10AC800095940EE67CE8FF03244608E5D380661819 +:10AC9000504EC88D88970C9FE9FE029ACF219C2EBA +:10ACA000A902E4434565F99C436B969173E8BFCBD9 +:10ACB000299E681B95FEEF14C5BBFC67571CF0EC82 +:10ACC0002965DFCDF1142B3E299C2ED2F5B1EB1C6A +:10ACD00048EDDFE52F2F8D233E2B6FF235034FB864 +:10ACE000AECA053ACA95E261379DB29C386766CD17 +:10ACF000CC0CBE9A0EED98BFDF32AF8D24103EFE15 +:10AD0000770418640EF2376FEFE44F33FD2C999AF5 +:10AD1000BF5FC6F989D6F98F56BF2D49293ECD228E +:10AD2000078A12113A75D2412ED4258AA27639119A +:10AD300011286A5B4A17EB4B695E9E168BC4E8F8D4 +:10AD40002D79B4D34242EE30AE4B1B143F724B3FD1 +:10AD50007EDF0A63CFB37C5F44EBD3B4C54BD755DA +:10AD6000F9C8F1FF27C518D07DAB30504B4A32F2FD +:10AD7000C0CDE9E48EBCF26781E2759B106F3A0C9E +:10AD80007C9717443EA5E59D5208D3A54A0554F685 +:10AD900048305F8FD94E22AD5205A6354A08E6D518 +:10ADA0007FB00EDBFB916FDB0B947490E6BB8A9453 +:10ADB0001DAEA20C3C2F1301E1699719BC5DB21DB9 +:10ADC000EE27A19CAED39F1199C9CB009317446D78 +:10ADD000895C12C8D20FC7D333C6D586E187EF1A74 +:10ADE000E3735A2C009F1729A987802F7423B23C44 +:10ADF000602B37F2ACE56A736439C82983F64FF1EA +:10AE0000E38910E4774B7D8493A46939E0A100784D +:10AE100085D2317C5BCF4AFA4F294C8C1CCA6F52C9 +:10AE2000793BF2A9A4C609F0D17231F132CA419539 +:10AE3000D8F0A74475943B4E793D1A1F39E5B45BB1 +:10AE4000B3E4E13FAA65FD60BF51F5784EA6FEB0C0 +:10AE50007E3016E07892B94EC9776CE3B79F47868B +:10AE6000409EB6CC52B44D946E925F49037FC0DFD2 +:10AE7000D06CCE3702C887F60181CED71D0E1A39A5 +:10AE8000305F589F30FFA803AE31D693733DBE0BA1 +:10AE9000EB3167E47A24F18808700646C1D3F0BA32 +:10AEA0009CB33C979C66BCCD7C3D1609F13F013EAE +:10AEB000DA263C8E746A917B6A917FA72B4CCF90E7 +:10AEC00081C825D333ED0640EE523ADE0945B32C56 +:10AED000F8EC8B8A6742BF16871CA053D391AF8DC5 +:10AEE00030F2852410F30FD7A7CCF5DB5902E373BA +:10AEF000D2C3E44D908FA3C0F8943FBD24859DE557 +:10AF0000903493CFA411F39F5655A4055CA7839D5D +:10AF1000201FDD5522E5F591706D4F7A48DA3D3AF4 +:10AF2000DCDBCF63FAC5E56F243758F0AA0A416E1F +:10AF30006F5CA582FC148C0439057294F470FCC417 +:10AF400022A0EF3B924DE428D0E5A5B9440B807ECA +:10AF500089E93AED4F81F9C11A8A54B2141892FE68 +:10AF6000B3255FDD097A512EF5ACD4407E97AA97C0 +:10AF7000404A4833F62B47A65E0BFC2897F27546ED +:10AF8000123AA0482AE3EB2FB3EE2A0580C3635F91 +:10AF900077A63D402294C9E766E01C698F70FAF2FB +:10AFA0007AA3AECB61BBCB9C774A61F6CE709EB0E4 +:10AFB000BC59CF92029D39D1E56A03E72357931418 +:10AFC000A6BA747CD0BA8E78BB16C2F036AC4FB835 +:10AFD000FCC4BF30C8A1D8035B8A40FE2E89D4D3FD +:10AFE000EFB582C2E05866C783D99EE2A916F02465 +:10AFF000A909C49B899FF682A9B909E8D71FCA3A53 +:10B00000FF766AB74872363852CC8E2B24A971402D +:10B01000B72F669681DC1DAD1F271E5BE4D8C104E7 +:10B02000ACC37C05F590CBE4130AD7A5B49F9B0471 +:10B0300066DF4961C5003C2994DEB034E93C6E12FC +:10B04000F247CED39C4F4BC09C4F767AB6C27CA6BB +:10B0500064E01FFE2E73FD334A3B27FCA395B7CA5D +:10B060007A6425E89B80735E8C6EB2CAE8D6CDE721 +:10B0700027FBE9FC80FFC309939FBBB3CF2F8EFC56 +:10B08000E59C9FA47A103FE6F892676AB5343303D3 +:10B09000E7BD82CAC619862386FDB85482ED924266 +:10B0A000E25EE00B57B87D00ED2EBF4EA07F25423B +:10B0B0003B381752BDD6A0786D7D612E298776FE6C +:10B0C00018594B53C59F20CB68BDD62F5D8C1FC22E +:10B0D00095367EBD4B106DF835E1590F7064C1EFA8 +:10B0E000EF47E1EFDF3F7F01F2F7531C5FA7E1EF8E +:10B0F000A7006F4EFEFEFDF3D318BE9ECDB7C1670D +:10B10000A6EB3D25367C112E970B78FF93E3030BBE +:10B11000649A761206F7DD91837D6007C8E2606766 +:10B1200033856F5DD3E012D0959BF313FB05CB7C89 +:10B130000B561111C6DDC2E7B5D815F51EA170DD9D +:10B140005E539C5B47D3F705C1861F33BD97EA0F5B +:10B15000E04F90D7B0EE3E7B8BC13F1ABF6D4DAA3A +:10B1600073A1FE707EADB414E4F8D6F2275E5F42A0 +:10B17000F1D8162EAD40B3A04AC0FD9487EB9F4393 +:10B18000A6BEE178A2F83B04F09B7C78EFBACB3006 +:10B190009DACEBBAEA676D240B5E94C28302D0E9E2 +:10B1A000EE0421E3685793D50145A0DF2725061556 +:10B1B00045437C1C3F1D3E6EAF1191CE37AD9CBA0E +:10B1C00013D68859EF6B22DBF7102DC4F50595DBFC +:10B1D00081D1D721E8F9725CCF6901EA454BA95CBE +:10B1E0000D327B1CBE3F4CF53FC0116D1C52603EC2 +:10B1F0001F99F61D89E0BEA695B3DCE6A93E84A79B +:10B20000355FDD01F088261C0961347E13C52CF200 +:10B21000B4B03466001EA20DBA0EE97F4A09B79891 +:10B220000F781F50415F471B59FD36BE3FA6D3180C +:10B2300080FE0B337601C2E18B68A81F27888C4FF4 +:10B240000A2BDB6F14E9FA2CD02403F63B85832B01 +:10B25000719FA51CBAF05DD8F2D1EF87DDE7C0B8C9 +:10B260003D04C63D2B925A007418901213607CDF87 +:10B27000AC5BD20445809E76D32EFB649DA8140F50 +:10B280005275A31E2F077ACF262B2D7C5626B2F59A +:10B290004BE5849EB2D0FF6E17FB7777D51DDE3568 +:10B2A000E550CF87789A4C2A75E86F12A1FB785841 +:10B2B000BF4DF41F8C0FA6C1F8DAAA8157007F9307 +:10B2C000D441E413BA0E26003FF4C94601F057DF1B +:10B2D0003A85ED6F0DF21BE053AFC8E59E46FF4780 +:10B2E000F1A3F0FC90203379763E413B222F4A5265 +:10B2F0001AEE1B53CDC0D26EC007C831BDFF40311E +:10B300002D8FAC22319D56F502FE826097A4508F9E +:10B3100078017F41C4CF7CA063B4B4113C0AD40E41 +:10B32000EED1253ACE56A9F177FF48DB6F3DE08A92 +:10B3300019C4C28F0E3BC25F4ED79F653F3B2C475F +:10B3400078FDB1ED095D82FE6A3C39A8075EE272C4 +:10B3500086F2ED3701AE1AF563E45BE21F7746FD36 +:10B36000B99A5CDAB171301115ED553787AD254AC0 +:10B37000ED65B0EF3CC4102B010F240576A2AB475E +:10B38000E0FE8F185941F957D1449B5D2F857DB65A +:10B39000FDBAAB4961FDD71A82DDFF94C2F5E41A0C +:10B3A00066E246F4E74814F62D885792F6A27DC768 +:10B3B000F60DC0EECC1FF67D9B7FA153AB20D9F6D6 +:10B3C000111261FB1EA0F1A9A291ED46C78B63BCCF +:10B3D0001576B8CFB89D5FD28E5BF65DA3B793C8E4 +:10B3E00071CBFEAD15F8D6620F52FBE9592197D209 +:10B3F0002342E52BE5B376B6284907A73BA9116D93 +:10B40000F2C61511715D2F1735D64F94F195E2D123 +:10B41000D33848F4CCF8CCB4974DFD6EB1037A80A4 +:10B42000EF3C5C2F5F24C4EF03BEDB9CD790B6E2F9 +:10B43000A745210DC827DA0AACB779CA120DE485F1 +:10B44000C9679B1DF834FD7CEDC914390AF2590B0C +:10B4500033B8233184C3D4334EB84CFE1D1EB79489 +:10B46000EDF35C9E1EF4D7797B6ED7817FE937EED2 +:10B4700067E37C4B1735F0472F4D197FA470FC51C3 +:10B48000F997C33316DE9CDF3F8FC572018EFAC871 +:10B490008279A5D46E58DD7423A6754D9BE74AB416 +:10B4A000DFE35D3707ADFC7BA2EF3B4198D7894EC8 +:10B4B00019E5FA893E21057E92139DF5F89D7C7170 +:10B4C000EA948BD27B0DA737FD8F027AA4EE3E0162 +:10B4D000F7DB2FBCB571F2A01FF21D37C27EA88E1C +:10B4E0000A6E3DCB7EA155689C068BAF2D39507DF1 +:10B4F0006C4AC6EE3CC4F94631F7A1928EFE957DAA +:10B5000062E27F835C6EFAA2C53D19FC0087DCB164 +:10B510004DB4EA4BFEE209E07FDCA8344E532DF334 +:10B52000D8185212A807FCBD36BCBD21CA0EFF2890 +:10B5300083C778889449E09724BE18D849357EA6F9 +:10B54000173E1914D01FDBC6F962C43A6FDA3A57B6 +:10B55000B2F8F1A81D48347F661FED2A63A959FE91 +:10B5600009E81F4AE74F45E6FF7A5D4C7C0AFC0B71 +:10B5700072A82904EBA76B2EB3EFFCB87F35D7A5D3 +:10B580000967F3790CCE36C117033F48DB74D33E0D +:10B5900060F63691E204FC452D1CDE9A705C172C97 +:10B5A000F3188D7F3A92F1B960BFB5256B31ED0884 +:10B5B0000C02CF924D524C8FA33E8D7BC0EFB0C991 +:10B5C000C3F29DC904AB1F5EE101FB7093CABEB715 +:10B5D0004596B3BC66E679B9CEF31A2DA7F06E3264 +:10B5E000587E4BB281F5A3AD60DFC90C56AF94F71E +:10B5F000432A789EF7432A9782FE6F2B33CBAB30DA +:10B600000F8E2C58D7A63C6F2B63F5BB928DD8FFBD +:10B61000267F6CA95ECE99D65AAF9CC1136CEA46C0 +:10B62000BC67EAE98E7A0C3E135F997A86BD5E8C20 +:10B63000C135B21E11ECF5568C564FB4D5AB5C9E9D +:10B6400075DCB64A3B3C6DE14F3CB03E293F7DDDA9 +:10B6500065E16F99F3D3764296223F1AC4F3BD0A8F +:10B66000F08791D6622AD797B998BDD664F26B94C9 +:10B670004855B4DC554AA4F34316BF90463CF8BD88 +:10B680008C786CDF55A73F203BDF1A7733BE95607F +:10B690007D096027E844A81C9B2F37270DA4DFD61F +:10B6A0006415EE1BBCC4BE9ECCF46A97C8FD1AF6A6 +:10B6B000F1E97CC9F742383F9467E49017FDAAAEE0 +:10B6C000309D6788CDF7FC0ACB7C22749E21365FC3 +:10B6D000DBF772FB3C87E5BD432EB8285F6AE8972D +:10B6E0004AA19ED808FAB490F2A1EBD905E0071E52 +:10B6F0004D7E8D36FFF6A43E0FCE613A9355F34A48 +:10B7000065E6E76CAA003D53E10139DBE6A77A84E0 +:10B71000C9495CAF52A4710DD831AE435E3406FC0A +:10B720001A3BA7922254F16819FB18F6016B2CE31F +:10B730000ECBDB2F92C8CF1DDC86569A96CC2B1DE4 +:10B7400037122E77A406BF3BE7F7BA18EF06FEF3D1 +:10B7500035B5A27E19951F6EA7FC506995B78C3E32 +:10B760009F50FA80BDEFF21BEEAC7655D322ECD79A +:10B770001CF7F1967F1B05AF37211E6E7ACB4BDC91 +:10B78000C2E8F8959B6EC679B89AAEB4CDD345E5BC +:10B7900038EA71959FF385496C8AC6F43FE00DA69F +:10B7A000725B05B4BF95B54FDC827AD509D7EBA2A1 +:10B7B000FE335716BE1CC6C36E72D087E7616E1586 +:10B7C000D6C54B6FCDC1F16E3ACCD605C50BE2E9BB +:10B7D000138A277711D209F544466E27903F5A9273 +:10B7E0004B913FBC809F99E8CF24683F97323D46FC +:10B7F000A2147E6013AD4717C3C8F773008AE172C5 +:10B800008D956F49C6B19FAE6403F6EB2D35C81A0E +:10B810003A0F5F8CE3C3AC1F63F8C8A9E4FDC5D839 +:10B8200051E6707925EBCF5B3A80ED3D510AA76573 +:10B83000FD507DFE1FC027815883EDBB1261781C2F +:10B840000D5FFB0F4FCB1DCCC2171979114739D1B2 +:10B85000996C42B9D1CEF55967915E0B7A642BD7BA +:10B860005BDB40EFA0DF82E907552A62F24362FB0F +:10B8700037B47335F88F4A3CB3B9BD4BD01F80FB4A +:10B8800038292AA5761665FCDBED12E3DFF64A0DB2 +:10B89000CF99B77879BD2A92DA29B07EF07CC3CBF4 +:10B8A000FACD85D5596259E76A1DCAF32D793AEE6A +:10B8B0006FDB4983E726C817F1BC94C0BC4FD15158 +:10B8C0001F2A7242C5BC4FE7FAD9DEBF132F4A5E6A +:10B8D0009D0AFDFB42BCBDD0C0DA17DBFBDBA2B08A +:10B8E000F13AA44636BE8FE5C7EABF43BD89C11F02 +:10B8F000E2ED49136B5F6CEF6F34BAB923B5B67DD7 +:10B90000A9BF9CD2C9A65752489F606583EDBB5A18 +:10B91000DD686BF7D25BD36CF274FF60C969F9E53F +:10B9200038F089457E1FF726AE2679845C27851777 +:10B93000B646695E4E4C1668FE81D0DC4D4B271131 +:10B94000D2D0B400D7D76A2E37D6345DC4F25DF5B5 +:10B950000AD87DAB5302CAD7D55C2ED419240AFA73 +:10B96000E73289F91D4C3D4B753FEAD9BAB05DFF0E +:10B97000D4A94CFFD445ECFAA7EE3EF9F8A06DDF50 +:10B98000AE4D06BB7B4DD3225C2F66BD355D3723A4 +:10B990001C6B088B135803F21BD75362722DADBF7B +:10B9A000140848E138BE79DA6490AF4704EDFE260A +:10B9B000F06B5FE7C3F325277ECCF38D7D667C08B3 +:10B9C000D70FAB1D7107CE7435E80718574A209C76 +:10B9D0005F75BC0B603D5138579B7A89CEB7767A3C +:10B9E00066FC2361868B79407C5CB7141F59CE4B73 +:10B9F00086F107F2D922DFBF2ADE16F0719672B8FF +:10BA0000CEB4BD59DE0678473D307CFEF235C0CB62 +:10BA10005FCB4FDB32FCC4EC9A061FDA357F3B5F0D +:10BA20003139FB55E9BC4F647E7B22D1794DB7D0CB +:10BA3000CD412FB35D23E013CEFFC179356B249D3B +:10BA40009C783AD2E0135D54681E39B018F7D7F7E6 +:10BA500028DAD520B7AE03FC8D033C32BC1DA7FA13 +:10BA6000B0D572FEB3BAEBE657AA28BFD575E68506 +:10BA700004CBF8759D45ED7084B6FABEBC0A6AEB3E +:10BA800091EB3A199ED7F4AD9CD76AC107C57729C7 +:10BA9000D8CB4F727847E0BB94E3BBDC6E2FD795D1 +:10BAA000317BB92EE6C0772A3BBEEB38DFD079B6C2 +:10BAB000DE81F35C94EBF567F0541F61FBF67B824B +:10BAC0005A10E4E971AAD75AA9DC3A02763DCD1F93 +:10BAD000ED9B195C09EB4B6276FED1BE592CEFE170 +:10BAE000F9FB6839F4EFE7F5EF9B155C99451E3BD0 +:10BAF000E9513FAC8F0DF3BC01ED91CFA84500E7B4 +:10BB00001D5129F16F12EC1FFC3F7D17FCA747FD6B +:10BB100037FD2E85D5B2EB6FB3DFC246E988D59EDF +:10BB2000F6ADA2790B5EDCA5F6BC442CF9221B3CD9 +:10BB3000C43F3B735E69EA09F8FBC0124F200FE671 +:10BB4000D583FF74C1C55587BF0EF65458D4DC5950 +:10BB5000CE9D3372489B2959FC6274DA3387F50C09 +:10BB6000F82DC2C5A73DE768493E3BCFAA575C12F6 +:10BB70003598CA2D7E81A67F99077CBB3FCCCE1518 +:10BB80003EF1AB3BDC38AF4D8E73A8942DEF6A6A63 +:10BB90009F6B3DFF71733F18DD9F6BD67387766F88 +:10BBA000E220A8ECBCEEE4A60BE75ACE41A3BDBC54 +:10BBB0003EC539F8118A6A1EDA92050F78D200FE66 +:10BBC000A8F4ED789EE222CCCEF3A9CC4FAE50DCA7 +:10BBD0000EE0BEA3D10376A6AF8CF9C9C6CB8C7F8D +:10BBE000C8B32CCECAC7E54747D9BFAB50EFB3495E +:10BBF000F676048CBFD9997A64B0B1B3988EE39984 +:10BC0000251188FB22D1303F57899FF65C85EE6F66 +:10BC1000F07C508A18E897A6F966B7FD1CB6440672 +:10BC20007E59C1CF95385F0C9FBB47CFCCBF76A65E +:10BC3000F5EE48EA338F4DC9AC978DB05E28AD7AEA +:10BC4000934B318E703C6944FBEF87626216C0D51E +:10BC5000B46CA9014BCFB5ACF177AD340D4DD066C6 +:10BC6000C05168AF42D2F12A9ACFD1F640A8DB7A10 +:10BC700065F6223FA55F083607749FB1A86D710B6A +:10BC8000C45B854AB419620C865BB0E835A83F51A5 +:10BC9000FB18DAB77BCE5BB414EA4F23189F45C874 +:10BCA000371681FF20F4772CDFD6CEDA9B76492732 +:10BCB000E55B80BB3D999E07707E4366FBEA659C11 +:10BCC000AE1EC940BFA687F22FF82515298179A598 +:10BCD000E99579C7802F23EC3CD2F45F6CCE4F5CA2 +:10BCE00002F35B171F5C025DB8FCE6B95AAA0FE3CA +:10BCF0005AF8B9F3625A00F6F22765DA4EEBBAFC4D +:10BD000081CCCEFD5A9307D14FB895AA13EBF9FE1B +:10BD10009619A41FE86DE6FD6ED2887C1EE3F198AB +:10BD2000A658E0E7234A589D017C552F8B3C1E53B3 +:10BD3000AF07F8B6CA46EEF9700EFEAA0BED1289EF +:10BD4000C4098F4BC373243C772BA67892F93E41EC +:10BD5000ED1F5848FB6B534333B6209507AB87E57F +:10BD60004531F4D7DF07F4BAB1EDD98532E597ADA7 +:10BD70000146AF9BE57D9B10DF32D79724EE01FE95 +:10BD80009323849C0CA11C4BBB31AE8DF4959AF28D +:10BD90008B822AC7C4C37270ECF355291CABB6DA88 +:10BDA000C78A96C67DA05FE271A3275D82357E6853 +:10BDB00027A76F6BB2C116DF2A87991F5F4EAC9D14 +:10BDC0000974AD11125B71FD503B8258E4AD1C1E2D +:10BDD000C275EF232B72D39454BE43171C80109C62 +:10BDE000079307908FC8BE494C0EA8E67A73C4F932 +:10BDF000F592B4F71CC8B3382D7799F427ABDC77EC +:10BE0000C661DD23678F8B549ABE3FDFEA87172315 +:10BE1000090276BF197FF520E75FB35C69FA01D6A6 +:10BE20006F4F36CD073887E1E5FB1C9FC937B73127 +:10BE3000F82771F964CEEFA5B7D6A4D7517ED9BA49 +:10BE40008AC24C5962EB2D22F2AF6F1215D8459978 +:10BE5000F5E45EC5E6678EEB9CDFDE61FC9FC4F116 +:10BE60009F06C422BF0F61DE4719E0E7942FC87E0A +:10BE7000071EF9BCA58221DC97BBABD97995B37FAE +:10BE800072E0F4F86F8BE8ACBDFAD5E8F02B79944A +:10BE900078B826FA379B8710C2DF17B47476460F3E +:10BEA0009B7830E962E6E9BE2DF7747EB0CEE4E718 +:10BEB000A84FDB93643EEEE7B5E5E8EFF4682405B0 +:10BEC000E7CB9E308BABF574F62C8573549A8F813B +:10BED0003CF596B2722FE7676F67A2B3288CF9180A +:10BEE000C0A44458B9C2CB3BB53AC303229ECA3161 +:10BEF0009856816A78401F510180FE0E02AA83E2A3 +:10BF00006F079FCF44ED8FC2424855362EB9C55EAC +:10BF1000EFC71C0D93D49E38C80BBA16D12F32A987 +:10BF200074F90150F7EE281B7F6269B819F37C1E83 +:10BF30006E80B312F907E761F6F7233E6E8E9AE83A +:10BF40005960F1C398E5F7F2F23CB5F100B427D59A +:10BF5000F6F2BB393C7E680FE535F6F2DB79FB5C27 +:10BF6000B57100CB3B59796EF48EF40292A9B79D5E +:10BF7000D72BE6FEC4ADC93E5C473B939DF399FECB +:10BF800060EBCAACBF99D7EF48F6CC0739535CCE0B +:10BF9000DA9546630B75CBFE5C53D87A3053E0FFDD +:10BFA00008F8D9C006A0F0F829BEC0AF09EB13FC11 +:10BFB0006FEED8287C4F689EF2EB64FAC7ECB77E30 +:10BFC00001F625A67FC0E4B7FD87E764E53BD24ACA +:10BFD000F9CD22CFC96D94EFAC71ACB778ECF9B55F +:10BFE000AA3DBF2A62CFD768F67C75D97C5BFFA5D6 +:10BFF000315BDE84635BB216FD71DDC9A6B9351411 +:10C000009F3DDC0FDC9DAF16C03EE0F67C169771BD +:10C010004FB211BFB782BF18CE6FC01F88FA328EE1 +:10C02000691FF80965F08F31BFDE7DC9AAB93534C3 +:10C030003FB1A9656E0D958317727C537EB1D947C8 +:10C04000D46EBA5081F3B8AA78DA857CC2ECA56EBA +:10C050006FEC0AD87F4DD275225AF077A5C2CE1365 +:10C06000260E9FDFF5DBF4CD957C1C533E9228B560 +:10C070007EE9786D7CBC68233BAF52ABD51930DECE +:10C08000150A8FFBD1A86561894B541B8774307DDD +:10C090006B04FD4A80AF3B9FC2530EEBC92060A7E3 +:10C0A000465669B8AFCB294F83AF9F78CB348C2BE2 +:10C0B0000A54A60438779948ED6898774182E2C51A +:10C0C000C237BED2065BBE3B8FCDB310F6DF33C1A5 +:10C0D000FFCCF6F5075D0BAF5766817DA6B2B8C2FF +:10C0E000C0EA0290478392BE8E7D272CEE03CE914C +:10C0F000A81D11BAE82A9457D23216FF46AEB2E311 +:10C1000039A37787E3EA9A945999F36613EFE678AF +:10C11000444A14003FFF5C48FC00EA91B288C76AB9 +:10C1200077B9FCAC1F277CAF297A33E0CB84EF17BB +:10C130008ADEC2F2BC5F42FB0D00480943A4706B6B +:10C140001CDE3B2138277F24DC6027798AB2CCAF04 +:10C15000367BDCDB68E7E8D40EEBC57990213CC781 +:10C160007C5848F4413EF7901BEDF9DC6A1E0FC580 +:10C17000E31E43E3FA23332C7CF79CC2ECB9AD6693 +:10C180005C24E1FB3F1731F51EEE3364C8D3F5B5EF +:10C190005761E7AF051E62E4E482BD4D0D779077ED +:10C1A0001B15BC7F3261154538E59B7BBFA3A03DC5 +:10C1B0002AAF1D8FFB47BA86D310CF2BDFD28EE775 +:10C1C000DB0AC43597C03C7B30F5917E4CFD70D3C3 +:10C1D00086A6413A1F4855A2A2BDFFFB9583B70230 +:10C1E000911679124FC1FCD67A126741E8E1879324 +:10C1F000123F01587FCEE9F2A6A43F0DE596FA3F23 +:10C20000073A0DD797597D6AD63D877822FA3E8640 +:10C21000BFECF1F596B8CECFFD163E214BEDF11BEC +:10C2200094EF7E89EB1DEC5F9725FEE20CE34C61F9 +:10C23000699EBE7F8D9FEF3BFAE7EDFF29E79C20CB +:10C24000D86D2F75BA306D6F2AC1F46D9174578116 +:10C250007DFEAF2E92CD6F68A6836027502171843A +:10C26000F3C3BBC0B7142F2B255581FDF74AE3CF8D +:10C27000F3ACFEE29506F3FB50865C02F47FBB6DE7 +:10C28000816CDD0F9BFB6067BB8C7F6A7012EE1FB9 +:10C2900087EF31B0F8B8BA2A1301DAB7FF3785FB58 +:10C2A000BA0332C61599F690899F2347595CD77512 +:10C2B0003C2E6E158907A1F04322A2DFE643F2EF80 +:10C2C000C199163E97DD3CAEB453467F8841FF07C7 +:10C2D000FAE2DA1ED9E62F59D367CFAF26CBC7C310 +:10C2E0003E7475AF4C529417AE2316FF0B9DEFA70B +:10C2F0000ADB8FAC218DEDB09F6BE3FE823A95484F +:10C30000E3A8FDB9EE991FCD067F91DFCDE4F77B61 +:10C31000741FA659E2F3AFF7A714D8571E7D6AE63B +:10C3200065F309B44FB517E2BD1B92D5CF5BDF694A +:10C33000876F2CF89DF09A7E92D1E0907631BA3AD0 +:10C34000C72D749B71A4C619DD173CDFADF1FAF659 +:10C35000FB8263B55BE8D648B67B8663B55BF25774 +:10C360008EF78D51DA75868D38C89DE175E789E3C2 +:10C370003A1424B6EE3A2363944769B9EB34E5A541 +:10C38000A76F0FF142702F490790703F9D9E8876EE +:10C390005892E0FD8E7D72FCEF41CEEEFB0F17311F +:10C3A00004C893FD2ACC4B1034F00BE8EA2558AEB4 +:10C3B000FFC615168BF8A281FA1F2F7D10D6E9252E +:10C3C0006E99EBC30117F4ABFF51AD017B729F9CDB +:10C3D0009E9847C7AFFE0149001F2FF863BA1EF0B1 +:10C3E00075DE50AD0C2CF0CBC75EBA12FAB97E6880 +:10C3F0008904F9ABDC2C2EE8C39FEE994D683FFB16 +:10C400007607481AE097520AEC9FAF7FCAA543BC53 +:10C41000E70D3F0BE8D0CFF54FAC7B60191D5F787F +:10C420002680F0543FB1E661E6BF6BC17EAE7FFA75 +:10C43000D2DCED7C5E748F42F63573FF9B919E08D3 +:10C44000F705D6B9C9356057987830F973917F816F +:10C4500004F7BFAEDF9587F6CA305F4BB47E394430 +:10C460005F926B9667B1579BF9BAFCE06316972A07 +:10C47000EC7AE16A9C5FFFB771BE02A5C83B74BC51 +:10C480005B39BE683D9C87F188909A42CB3F7844E7 +:10C4900060F3EA9FBEC35B04E3EF50EA50AEB1F332 +:10C4A0001813DE45BB16B4C2BA5EA4E61503C9175D +:10C4B000FD6C37CAE70DBB5C69D83FD114F7513525 +:10C4C0007E97FDBE15D1FD02E583F5281269FAD4E9 +:10C4D0003A947BEBFBB7E27E73C3B3F6F54EF11CE7 +:10C4E0004B53F86F78C3155B06F9277F12847B3AAC +:10C4F000EF0D3C14047AD071562A741D7CFD73BB79 +:10C500009F18FAFF3C34B23F6A57E0FD970DFD9B40 +:10C51000D9780E79F21EFCA360E43E7797DBEE6FCC +:10C52000F894BC361B37B7BBC665D587C3F7BDB813 +:10C530007CB961F7A7F71B74DC0F9E78FF7EB89774 +:10C54000B0F62F7FB8FFFBB06FFB17AF0A7271C355 +:10C550004FDFB9FF7B149F1F3EEB16814F3E7AFEE3 +:10C56000270FDF43F31FFD765A8540F32F7279F5CD +:10C57000D19E3F8FD7683FB73CBF7802CCFF96BDB6 +:10C580008B269CEE3ED94794AF526EAB1E4BB17DCD +:10C59000D5B3B4BF0934BB8FA70EBABCF4D44B9348 +:10C5A00001BE0F0FBA31FE6083C6E24DD6F7AFC3AE +:10C5B000F86DC8DF46F1BBFEB10EBC173412CFC612 +:10C5C0004431C2D63984ACAF7FEAD2BF3FAF1252FA +:10C5D00039A6417F6408F58BB3DD86DF507A9E3B38 +:10C5E0003AFD3E255F2880F70D8F6D66E33AE8F748 +:10C5F00021FC63EE48FA0D8EA0DFDA1FDF03854FC2 +:10C60000658F4F36E9B76EEFB74E7B3FF023C7BA61 +:10C610001D0DBF0DDC3FFFB85B1F72C3BA7B22C785 +:10C6200088207DDDA965B4ECA3B63F4C26942F4E3F +:10C63000CA4357C3FA1B7ADEAD42BCC0CAE7DF501B +:10C64000408E7DB4F7754543794EFC02B5AB3E2272 +:10C65000C37F036087E3FD14C0DF838134F80DD608 +:10C66000DFD680745A9FBA6429DC4FA3DFD19FB014 +:10C670003EC5F87E7DEA85154216BA4DF38498FED4 +:10C6800048E5733B314347A10AE8777809F0DB6856 +:10C69000F433E7ADC2BCE758E868C8B84E475B8FD3 +:10C6A0001FED704B105FBC81DFA336EDFB0D29E160 +:10C6B0000D92659D9A7AFFABDEDF2CF28CE2AFE241 +:10C6C000F31D6B1D8F3D9FAF86AF3C58ECB346E228 +:10C6D000ADB9CD8D72F8ED196E8C833A2C6BFFB429 +:10C6E00091AEC7A15765B29336B9BAE284AC653949 +:10C6F00007F99DC30EBAA649689F40DB5D63303DD4 +:10C70000E23C474ADCE6229A053FEBDD436F433CBF +:10C710001EF98597607CDCBF78713FB4E17E6F0ABB +:10C72000F4DA4B7B3F7B18F4C9473F7613A6E758F2 +:10C730003CE31A95F57162EF67F7FF1F881786C60D +:10C740001AD4DF78FCBBC0E7F70A044C93DF3F91B3 +:10C750007B0EDCCFBA81D68573E835BFF8FEC5C045 +:10C76000A7908773D3353989AB61DFBFE6DE090255 +:10C77000D8331B7C837F0139F4FECF738102E4C37D +:10C78000BD9FCD067ABDFFF433E780FCA3F6A1661A +:10C790003D3FBCCEFA0E85C57EBFA17FDB00F0FD1C +:10C7A0000D50CEEA0BA7F89A013B1CC607BBE486E6 +:10C7B000677375EF39B67AD8CF06F7D0AD31DC4F55 +:10C7C0001A8522DAF4E942A0F30DBBECE3AFF630B0 +:10C7D000FDBB41195ACDEAF714327E18C076377B7B +:10C7E000981C37CB9DEDCDFA377A8A6DF5CCF6EBF8 +:10C7F000E15C230BBFFFC0C3FC2D37ECFA725AB6C5 +:10C800007B9923C761DFBF231003FC24648F17F7D4 +:10C81000BB6B95F4D450397EC7770FCC7C211F17A2 +:10C82000F2604F3DC7D7E75A1FCB3FCDE3ECD706A9 +:10C83000691EE0F50C3E0E7CB3EE192F01FB6CDD9A +:10C840002FA8BD44F1BAEEE95F4E06BAADFBC5466E +:10C85000A4FB3A771AE93DB4C74D208EEA833DAF79 +:10C8600062F907727A328CBB6E9FF7B0F59EA09981 +:10C87000AEEB77F3CDA47D3E70DE7A0CFD5F69F4FC +:10C880009BBBF8B91B44AEC1FCD0FF0CF943053883 +:10C890005FA73DFD0B4F51567BBD0DCE45C08FE9C7 +:10C8A00031886A394F96088B07FD4F07BF411C1529 +:10C8B000EC3315C023C5872C313FAE1C09CF003E99 +:10C8C0006E8F2C47FF5657B93A03D6E5F39C6FDCC1 +:10C8D000B47FB48FF7F7A2FFC313953EB1CA0BEF35 +:10C8E000313FFA3B49A9E57B31BAEEF1BBBF9C7EF3 +:10C8F000B79EFB8429DC363CD9CFE39F13183E8CCE +:10C90000809BBD33400C17ACE7CBBDC4FCC37DEAB4 +:10C910006FCDFB32522B2BCF338B5B59395FFF1B13 +:10C92000EAD8FA76D2EBF27D1D781FFFF27D05F58D +:10C9300040F7CBFDD3DE01B9FE1CC856D8CFE7B90E +:10C94000911EE7EE8B5FFA4D9AFF87862928AFCAC2 +:10C95000FBE3174DA7F9AB1A4AD08F37C8D7CF954D +:10C960003B4443A6F4DACFE3F08CEF0A08FF35E04E +:10C9700052A00D57124D619BEB14E2B59EF407587F +:10C98000BE3F1FEEFB5ADABBFCD0FE4601CF1FAF05 +:10C99000F88FDF2C065CBEF99B236D905EF31A5175 +:10C9A00072E8B82B9FD2DA993B85F7B78FF62766E6 +:10C9B000FACBE091F98D88E441BC64F0E441BC9984 +:10C9C00078A235F1BEBC05CF18EF6DE2F9F2C0C117 +:10C9D0002B003F9707A6EE27C191F874DA1B4EFC97 +:10C9E000FE118AA83E7BCFA3FFC543F1F5BA473FAE +:10C9F000E541BFD1D064A918FD482E2F6DB7DE9553 +:10CA0000386B7C09FA9DA6E503DF0D64B76733E355 +:10CA1000B175F65B128BB07D5C179B073F57FA2D03 +:10CA20006172FD0F50343703FF6F257F27C07730C9 +:10CA3000E77119ECB72B495A86F6FF400665A08BC3 +:10CA4000936EF54457A0FC5A926E073F3F85B7C0DE +:10CA50009B9F8197440730CE8BBC7666F7CB46A46C +:10CA60001E0FF18CC7781B84BB6EF0E324E0AD8E03 +:10CA70008201FA10C8C2EC0C7EAFE5D0BB5F5ACB86 +:10CA8000C970393BD718EEC7D385F7912DF56C7A6D +:10CA900006EB09D9FAA1794B5CC9C83C83C3F9BD3F +:10CAA000CE13C47705B2C0458CF18047F38FB53FF4 +:10CAB00026F49F0DEFB95CB879674D27D5278F868F +:10CAC000060A3D347FD1E6875B21CE7137DDE6C1B2 +:10CAD000F934CDD718D590D7AF86FD66BD44978A77 +:10CAE00025AE69B997E99BE55EE62FA6E506945F5A +:10CAF000EC65FEA3BA30BBE2056FF744A95C3AF2DD +:10CB000058C5AFCFD646A7535DD729B796453F1135 +:10CB10009D68E1D9EC3E1BFA6F5F89196E57E65CA0 +:10CB2000FEABFA5D4324866998C43135E32F22A415 +:10CB300007D342D28F69940C603A990C61AA1155BF +:10CB400064FCCED65B318961BE94C431DD5DC4EE38 +:10CB5000351C117CB19D59F40AD523AF2FA6E51BD6 +:10CB6000FFDD857102CDDEE2AC7AC6E5B9A8BAD5A3 +:10CB70007A8FEC110FEEE377376B4807F37BB397AF +:10CB8000C9C1662FF36FEE6E66EF121C79C413DB1A +:10CB9000497B3B1A204A1E1DF7E8B6378A21FECB97 +:10CBA000ACF76888E9E9CF0F3F7336C4E97ECBABB9 +:10CBB0006FF2E2BA48237F9AFC52EFF133FF7D9780 +:10CBC000FC8155CF68DEF816901B071EF7A17D7A11 +:10CBD000D3ED02DAA74413703DADE2747A34D4FF8A +:10CBE0009E0BE461B75B03B9BCAACB7D18DF69E992 +:10CBF00059AC5BFBBB87CF83F4FC139E4FAF1AE3AA +:10CC00007EE32AAA7881CF9CFD1032290FEC7AF4BA +:10CC100095D8D63DF3CF9AEF7A99DF3D3415F9B91F +:10CC200028C8FD1D6D4A7127A54FC7E50A9E379993 +:10CC3000F1547B38DEB46E9280F62991E1EF2E7EBE +:10CC40001FFB31AF0BFB37EBED31E7A313A73F7DA4 +:10CC50000FE04D316AF9A1383BC749293DF8DED6CE +:10CC60005D8FB8F13D9BE9B597DD007266FA2E6ADB +:10CC70001FD1757DA7908AE03B41BBDD31C0E382C7 +:10CC8000B3AB3E86FCF85D6E0D609CBECBAD035E23 +:10CC9000FF8797D92D5353372EA4CB97BC7F79AA02 +:10CCA00010FC6E1AC46731FF55108D8467D93B2D77 +:10CCB0003770DCBDF7D8A2D3BE47036AC9B0C5BF81 +:10CCC000F98861934B2147BED051BFD8563E11CE53 +:10CCD000D4A93C98E827E9004D776F321680FEDF33 +:10CCE0005C4762B0DF9D048A91D277229527F06E6F +:10CCF000131C83F842105F48BB09613971F1F25C83 +:10CD00009A3E20F62F05A21F85F9E743FCFED0AB23 +:10CD1000AD45B09E3B8546BF75FE092FC699F1F91A +:10CD20005FCFE338683F04FABD6BD74C15F010763F +:10CD3000EBD7013CEFEDE6F4D875C17540871FCA0B +:10CD4000F19540A7F72E57F8F769D7C2F7F2C73E1B +:10CD5000BB1AD2E9B5E351EF2E1ABCF1979368BD27 +:10CD6000F735827E935CD21F84FB2864173BAF2883 +:10CD70002F232988DFD90D13817A292585FDD1AC90 +:10CD80003784A91180B43AFE0DBC1F2FB13C8553E6 +:10CD900007BE2F2F4B1703BDA71FBAEE432877F905 +:10CDA00018DD1F25868AEF41BDF5935FCFA3E3DD34 +:10CDB00035B718F75B8F86626F7E9DE2E7AE192468 +:10CDC0000DF18E1D9B7D787FFA0A9F86F8EAF87236 +:10CDD000280272A5B45A498B0897E19E4CEB6D7EF0 +:10CDE000DD857204F0ECA940FC93204D1F98527E23 +:10CDF000760381F8B5C1EA563CD7D70B965BF6A10E +:10CE0000BDB27E39C43BE56EC95D1CA6EBA7D78BCE +:10CE10002C41CEF79DDD06F760EEDA4B6539954B78 +:10CE20007799E7736509AFF5DDAC884FB0C587DE4C +:10CE3000E5E5F54A135E2627135E7C27EB2D37C305 +:10CE4000DF5E0FCA9FBB6A2B8A715FB86D17EE1F3A +:10CE50002EE5F37BEFCBD464F05796EE72E3FCEE55 +:10CE600054064458F7C6D304F703777DF3CD230F58 +:10CE7000C23AE0F74FAB7C793C7E39510070DD0956 +:10CE8000FB1A7F068EEB55163F35C7C7FCC4153E0F +:10CE900066B7C738DC746CE7BA8FF966A13F3CDD32 +:10CEA0004AAB6CCAB918FDE1553E7ECEEA61E7B7E0 +:10CEB00059DACDF1811F7DD91569880334DB99E7F3 +:10CEC000B22FBFB5E6EE6B811FB7796240E7F72E50 +:10CED0005F5D00FC6BCEFB2E075DCD794C97481A49 +:10CEE000DE4D23FE5831CCEF620EB7594E6752FC2F +:10CEF0002DCB39FDC53EE627BED3C7CBCB58BB4CA7 +:10CF0000396F1FE4F7AC4B9DE54C2EBEFCD69C77E9 +:10CF10001FA4F06EDFEBC175B17DDBB348A7F781CD +:10CF20003EE519FA805E023A7698EF5D442B510E89 +:10CF3000473DA4D553914D3E31BFB4198F69CA897D +:10CF400051EDC0338DEF8C50453F9BD981F067BECA +:10CF500007B5393F713DD0D35D3BA0807B6C7DAF81 +:10CF6000B010B6018B5DCB307EC4CDE3B79DFDDE46 +:10CF700099F4C05B3D2495A43BA629107FA1627A59 +:10CF80003219C1B437A961DAE2637615451BEA9B11 +:10CF90002D5C6F6DE6E9F738BF99A959DFB487A416 +:10CFA000320F8B7B2D6B477F8754AA1CC6541D8E76 +:10CFB000276801BE2209923DFE9524F03D928785A7 +:10CFC0004407D41BCFCFF1C7D7B273F76ECE27A6D5 +:10CFD0007FCE9CDF760EC7760E57CAABD9DEA7820E +:10CFE000780CE45FF35D2B7E1FE434F81F14B2E38A +:10CFF000FF1EC0FFBA9EC34B0A348CEBC2385233BB +:10D000006EF48FD52475BA786E271D7297B17704A8 +:10D01000362713F8FD64B201D3DE6423963F2CC497 +:10D020007F02E3997107A3CDFF31BE0EF69872E03F +:10D030000CE799F2C69FF4F17D89F5DDAFB1F9F304 +:10D04000CCEA1D81F8633A9F63106F3C65ECF3C333 +:10D050008D77AE45FFFA0FC5C42F61DE9FDDF10D60 +:10D0600003DC57F55D33907FA8BD7800BED7E56A35 +:10D070007F221867BC7531C419D7B9B5A7217F5570 +:10D0800045C3627827B26E82762BEC33FC5BD72ED9 +:10D090000E43FE2C8271C65ACE3DA8077A7DFAEB6C +:10D0A0003EB47FE53C789FC2B4DB469F8FFD7D8A0E +:10D0B000F9B0199F857C62E0BB2B9C4F287FBCFD9B +:10D0C000B7F0C70F87D7A787F1C70AC61F77C27AFD +:10D0D00095911FDE3D137EF888F3C1104FA51CF318 +:10D0E0005E0CE3072F5FDFCEF13FE7EBC85CEF5448 +:10D0F0009E755AE59E2907C7BB587CF30B57FCF475 +:10D100000AD0EBEE5D538B615E3F9D942A84B8A6F6 +:10D1100061F9213746E09CB03CFAA7AB35BA8ECB1B +:10D120004B496A0AA6E9E2223AAF30AFD7CBEB4DC2 +:10D130008F8EAF67EFD9FD6D7459E58B0773F233AE +:10D14000F2E4BFA0BF480E9EEF26046607FC6DFD0B +:10D15000513CA29E00FB4FE1F60D3C014762B1B38A +:10D16000FF2BE0FD7FD53E97248C889089977277BE +:10D1700035135807549E2F00FC797B7718A0B7729F +:10D18000C8D02B100B64F2AD7216E327B3DFCB735C +:10D19000981CBF3C4718BE4703B6F454FC07CB7736 +:10D1A000D13C5C270079318DDFAB29233DB81F3E90 +:10D1B0009BF4635A4E06303D870C611A23AA0BD2AA +:10D1C0000A1273F138A8D990AEF5247E0C5BA845FD +:10D1D0009EC465C037100725B8C0EE593F0FD6D999 +:10D1E00095E6FA71EC53093F7F186BDF9A4BF46BAD +:10D1F000907F467B77948C7E7F2866895B36EF0F25 +:10D200007D857B1D8D309F11F73ACED53EC67B1AAA +:10D21000C6AB8B5F8BC0BD0C6D0FE403E39E43F97F +:10D2200019825BD9D46E7E28E7D72FE33BBA4BF542 +:10D2300034C2F060F6783A339527B0F8BBD6BCCB51 +:10D24000548CC3F3B0F33489FB89CC7ADBC1A99940 +:10D250003F320EEFBF7A1C67FFCBC5F8ED8C0ECCCA +:10D26000DE7828C71E6F688EDF1226FD70CFCF953F +:10D27000470CD7B923E169CBB9BA9F72C2F03CCC55 +:10D28000F1CC78C7AF1A8748EDA287804E23DF1B09 +:10D290006270D2F5F308C06DF627A9F63844277EF0 +:10D2A0009ECC61766F5D8EFE38F46B89DF7B222722 +:10D2B0003F6BFCDE93D03FE5D3A74EC7A72FBCF64C +:10D2C00004EEEFE43C1FDAFD2761834CF3EFEC70D2 +:10D2D000E1FDF2F7553D673AE5C7D63B4A6206AC39 +:10D2E00053EE57C9E5FBDDD6F12BE2102FBE35C654 +:10D2F000B5F7C0728CA378A75A5C0A7152A99749F6 +:10D300003FECCF72B8FFE3CAE03866A7345F86EF20 +:10D310008F6FFDDC55F826D80B5D0A01BFC98BDB8A +:10D3200014CC6F695614B0EBB7FC73E22C38E7FCF1 +:10D33000CF008BAB4CED506ACD77D8F01DA159F1E1 +:10D3400087B60899FCEAC872BC77361490900F8EA5 +:10D35000F55C3A616E18E2CC415050B87A4B4416F5 +:10D36000F76A88ECDC6D3875B173359677E23FC8A3 +:10D37000CFAF9CDF7F1564FAB8BE4AF282DC6AAF99 +:10D380003A868727C1BEC32CED7161BC184D2F04AE +:10D39000F882FA4249A0F005A32922D1FE3ECD61D0 +:10D3A000FB3E5FCF4C11F096DB45B2C6977D9AC32A +:10D3B000E6EF2B231782DD11D4458CBDF4C13B6E03 +:10D3C000E563B7FF3087C5F7F5F07B9D27E4C42BF5 +:10D3D00060F29DB83B4F3088857FFD6C3EEFD0FEFC +:10D3E000599C5202FB3FA69BEF8124306EA9ED476A +:10D3F0006F18E0376A9BC5F8C0DF2778818FFC295A +:10D40000762A1CAC8AA31FAA3DAC209C278404FA70 +:10D41000DF53CDCA45F8AE5F15A54711A608EF89C1 +:10D420001F7D7B02D0DDD7D553608D4FDA020F20F0 +:10D430005378BA391F95541DC7779046D0A7322626 +:10D44000029FF84699FF778376BFA0790F27D0CB4C +:10D45000F05652C6DAA5645238DED2FE2907DF390B +:10D46000FBFD5F396C3FDB26D3F9027D3B1502EFF4 +:10D470006D8855EC9DFEDC4A3176011D67E7792CFD +:10D480005EBC9BDFA6F3856F8DC0794FF7AC58214A +:10D49000C07D92F3AF51CDDEE7768ED31660F0BF3C +:10D4A0005729E2BB96DBB7CD9E0C6FCA1D0D0C450C +:10D4B000C27E2867706C0FF8D1BFFB5E65C510BCDB +:10D4C000ABFF9E7FED7841B3F6C3FC8BA562AA103B +:10D4D000EEF15DE89FD4DE5A4DF3B0EEA93DDDD10B +:10D4E0005DDA0EF6F4C9C75C9CDE8DB89E5F4C9584 +:10D4F0004C8450DDA38682F75B530B62BF9E0BEB1F +:10D50000769B88F1462713A65F4CF301DF3F50B9A5 +:10D510002908FCF0802E55007FFC25B7EE423F85A0 +:10D520007F5B67C807DF37B78A027C2FDD56F1AF14 +:10D5300065B49FD20521AC876F5BCCC6DB52C85760 +:10D54000DDFCFD7E750949411C5F5E357B27362F6A +:10D55000C6EED550F9C1F61B55EC9C4CED39F87D63 +:10D56000D0A76A35DBA7AAD1BB6EC63C3F8F516BF3 +:10D5700014623F17607ADA1C8FA6FE86104BC743F1 +:10D580005A29A667A3FDCADEC9348FDFD40131BD95 +:10D590001AFA2D170FD7033C61DFE17ADAFFFB2679 +:10D5A0001D0DF3DC8ECDA9FBBCA929905327B9BF73 +:10D5B000977E2F04BFD3FBA65F82E733E543F83E97 +:10D5C000BB7A60288E701BC7AF8279749F77D9644D +:10D5D00088DF517BDFF83E7EE7E748CE797D981BF8 +:10D5E000BFC50F7C993F5E487079A98F87F30B36D2 +:10D5F000CF60A588EF67E2F90C85EF9DEFB2F744A5 +:10D60000E0AA13BC03333C8FDBCCDF4D60F715275A +:10D6100083ACC5734ADA6A3CBCBFCDFAFBA0DF8598 +:10D62000F5EF6FD452B0DE8FEF258FC17E30C0CFC3 +:10D63000AF86F5CA4A364EA0AFE346F81EA8B29CA4 +:10D640003FD1FFDFE167FEB2F71FFB03EA5BF37D2B +:10D650002973FCB360FCE24CFE7EC2E0D9B33F7498 +:10D660005139EDFFC74DC5E86F6F35F1087F946EF6 +:10D6700013A01D953F13549FFE353AC97FE0EB6917 +:10D680000FAFD77D407D11E4CB825F1DC2F78F566F +:10D690000522B84EB6557D82F789B7AB0CFE355DD5 +:10D6A0008C0FD744863CE0F7BBB64B50775ACEC7B9 +:10D6B000C671784CBA97C455A4FBB82E01E340C09C +:10D6C0006010677313B104BE1B3702D24364305D30 +:10D6D00042FBD9CEFB7DA75324EC7D9741786B9F0D +:10D6E000ACEE2218F740F9C203F134ABBBC6812F70 +:10D6F00087EC8CC47E0DF977EE736B004749E72702 +:10D700001EA81FE872E11B91C0C8A2C9B7C5197C49 +:10D710004CE170E6F535E3F8532A89CEDEA5D4FE58 +:10D7200015E47AB0D7ADA15E9562DDA86F7AF2D824 +:10D73000F864A813E3BDAB45CC4FA962F04FE97D77 +:10D7400066239CC7AE8AB0795F0BEFD320BCF18112 +:10D7500012A85FA9AA704E95771FAB274FA270D36E +:10D7600071AE05B8850C5E4A385C250017C55709AF +:10D77000D43F07E77D00E619EC1CAF6D29CACCA3A6 +:10D780009ECFAB1EE0C7FB2F8C9F28098D537005E1 +:10D790007E857D5D849639D67F0DAB2FC12F1D8888 +:10D7A000A0C70D1C770A3FFF14E1BB0071E54F23B2 +:10D7B0001C255D6E5BFBAEF08A019C479F5B1318D6 +:10D7C0005C1AC82F3F87CBDF2B205EFD7D7C1E318E +:10D7D0000BBFD3F2A3AF1243A0F6687388BDBB7B27 +:10D7E000628682FE046ABCBFFD5D587FDD0AFAF9DD +:10D7F0001FF892C5D1A66628BB3631B92210536EE8 +:10D8000051202B5A146CBFBD92DD1355AB430B1541 +:10D81000904FFB7B2E45F9103BFE8FF87B248EF357 +:10D820005EFF011FDA9F936FB3E385C2AFC37E36FD +:10D83000EA38070E18E317825C85F2BC0A94BFB879 +:10D840003E6759FB85F392D7D83BBC8103F72D8700 +:10D85000F77AFD07E2C5C0271147BDEB8225B8CE98 +:10D8600002FB297458AF51847AA6BF164C7D5281B1 +:10D87000E97E48037E62E4B0BC2184D8CF4CD4D08A +:10D8800074F78238BEDB1198C9EEEB23FE4398A6ED +:10D8900021EDA9E0DF0F248A554C358DA52AA6E697 +:10D8A00078A69EDCC6EBBF1610B3BE4F1DD0FFE2BC +:10D8B000B6CA2D2968DCFA2B38FF3B9FD1AB451E39 +:10D8C000AA5D49F32D7BFDE051263FCD4B15C23BB0 +:10D8D000453705D9FE77D81F5DBE02ED6208CD81C0 +:10D8E000F910D820D0766707CA76009F4FD707C4B3 +:10D8F0001B518EB1F8C463FBA91D742EBCE3A407B1 +:10D9000041DE195111C77BE765F6BD237CD964B0B0 +:10D91000A3BA4BFD44A0DF2F09E461BBEEAA4DB7CB +:10D92000027FF4F7092190CF0F707BEA811DEBDABB +:10D93000215E6B1BFC8008ADFFE2ACE34BA15EEA0D +:10D940000511CF2C177609F7E4D0FE4EFCD68BF1EB +:10D950007927FEB9A711CAFF34C59FF5F715327EA6 +:10D960000422317B5AB7D9D5F03E35E49DF57D05CB +:10D9700047D0AE3BAB2A6E80FC55ABC802209EA6BA +:10D9800053A8E8DE35101E30D0CEE5EFC06A95EC26 +:10D990003BE54D0DE21CB528CBB72513B85F26E556 +:10D9A000CC2FDF16DE19027B63CB2E097FABA7726B +:10D9B000C7A59E6F82BC2C8728736ADFA54C3B27C6 +:10D9C0008176AEB94F7FA7AC4E0F403CD56F9838EB +:10D9D000EF2A5F380EF4D168FAE23EFFD7CCFB8421 +:10D9E00028C73004DA95D11FDDEAA007F0BCAA579A +:10D9F00050417FAC8A125CAF257D42CAAA3FC25C0F +:10DA00006E50B9BB89A09C677237CCE50895BF1EE4 +:10DA10008C67EC64FAA03E32D889F2A7C7C5F485BA +:10DA2000A4896097AD31A8BCA5B01447F47110FF6C +:10DA3000746DA3148338CF6BB99E31E567465FC51B +:10DA400015B84F69CAE1108723CCF5C33883E9873D +:10DA5000D07D4C2E8FEB65E9B16802CF5B70233C23 +:10DA60003EA3D71EF16B980975F5A3BC1FD7C7E479 +:10DA7000BE49173A3FED74BF43D1DE376321E02D35 +:10DA8000D057248AB04F8CD429909E0870FF11B7CC +:10DA9000E3918830CFBE1DB8D87D06DF4FE4B75F75 +:10DAA0000CC86CDB51AF803C2C89B17B77FEE8EA77 +:10DAB0008721F8E3236ED71392C07712486303DE01 +:10DAC000270970F87D95833AEE637B2FFD36E0B32E +:10DAD000A4B27F22D815C1DEA3E4EFE8F79F048249 +:10DAE000D83E58994A7B402F9531515C5295F04071 +:10DAF000FD6B2322C276524A13C89F8C11B559CBB5 +:10DB0000CCF3C7811CFBBEA1D7CDF70D298C9F3468 +:10DB1000F70D1D42FC6D8C7B98CBE44A572CA5AFCA +:10DB2000D460DFC0E4C40393949DB00ECBF8BE8DE7 +:10DB30008487F05D6EDC4F507B7E7AD78B4BC09E26 +:10DB400037E7E7E6F30B4407F177AFBEF3C3A33A39 +:10DB5000C0E7ABEA9F2858E0D3FC41F62E5AD90023 +:10DB6000DE5B0F56D2F9C1FC3BE9FCC2A3CF2FC04C +:10DB7000CB03912772A0BF4C3F06D2239872A940D5 +:10DB80008F60276B772D6D07FD38F9E0398E1F9078 +:10DB90000930AF806EB713C78A6F7A141818F05621 +:10DBA00061DAAF0EBDE761BFE3E377E8A383C1A20B +:10DBB00061FF9D61B16F1FE5EFF03D1A63EF854B8B +:10DBC0004176FF076404C425F91F138D09A0EF688F +:10DBD0000AF2C9DF2F19D32C7E2B7FE55F6CF14849 +:10DBE000106B6DE5E3E1FD28DF87062A197D7D9442 +:10DBF0005FADBF0BD01760BF6FD21760FE4B5F6584 +:10DC00006304D6E9C8FD2783373722A62E003BF1EF +:10DC10003C96EF9E25E23DF732BE3EBBC20FEA2B9B +:10DC200071E4C15AD89F766C53D0AE4CED60F78F3B +:10DC300052B3983DD19F66EFC06E4F29850DB8DF76 +:10DC400062F7F7B7576F2ABC1EC6A98E57BA2CFCCD +:10DC500013ACCEBE0F1F82FD3CFAA30C81FB5D040A +:10DC6000AB5E30F3CE766EEE7FC13FF057A92AEA65 +:10DC7000C7D80B526103AC73B510E35EA34191D3D7 +:10DC80008FBFEB9D0A30FF5ABAFD63EBEF8BB80EE6 +:10DC9000750C387EB72A1A04B8FCF6DF3930FD76E9 +:10DCA000EE590CBF81B082C16301EED7E94F8BE81A +:10DCB000CFD81E89E75B7FF76B495062F7D60C859A +:10DCC000F91566D8ED8BAA207BAF797650E4EF2169 +:10DCD00031BE39C1F5B2F4A339EC7D9601F65DAEE3 +:10DCE00024A8F7E87C0E3BE6E1FCFDAD59413C97EA +:10DCF000B6BF4764CEC3A4E3979C7FC0DF01FE0795 +:10DD000099CB137FCA85F4DE5A3980F2D4E4AB355F +:10DD100006E52BFA5DBCEF75F46B94807CA2FDA642 +:10DD2000B639FD1AAB3D007707B57FC0DF6EF36FE4 +:10DD300058E411E00FDFB5A4E381DDDC4EE22AC830 +:10DD40000D83F682F64CAF0BF11AE811F2AC78D5E0 +:10DD5000FC0C5FAB00AF289F5FC2F1B7C58A319E54 +:10DD6000B72DFF32F43BF93AA78AD06E3EF7FBB4E9 +:10DD7000F1B8DE605449E13CAA86D0CED879DE60A5 +:10DD800004E4BCB91ECC714CB871855AE3B37B5D19 +:10DD90008C1E265DCAD9BB1A2EF85DA6A2ACF4581B +:10DDA000837C15C9CE57BFE4E7104F0D2C0C5AE306 +:10DDB000149C76AF69DF3AEDD7484063F6B344ED83 +:10DDC000D58A8C3D6BEAD90E21F5E6F9B05E1F517C +:10DDD00034E68F8847DEA445AEA97EBC37FCA8D4C4 +:10DDE000EFAB60FE5076AEC8F9F028B727A56D738B +:10DDF000D00E907BF8BCFB0436DFB1F9B01DE73DD7 +:10DE00000A1FE673B9AE7E5E44F471163F4E0D41B3 +:10DE1000FF979A6279D550D87EE6F352AC97C53F0A +:10DE20005404BFB7E1F40B517986EF7AFD7FE30F1D +:10DE3000E27E3D220D46EC7E9EFF763FD0DEE0DFA7 +:10DE4000E007220E3F8FD3AFE3F413997E1DF8B3A2 +:10DE5000FA8B9C7E9E28DCCA2D013FCF4BC1F92056 +:10DE60003F9B445CBF27B91F72ABFFC2254634F30A +:10DE7000CE859C66BFF72219CA61F6BB986CBD9926 +:10DE800072DD94F359E4FA1B280F4791EB83FC7C75 +:10DE90007477335F5F6122813E7FF4B1173D10E7F5 +:10DEA000FA36DFFF0DEB7BD0F316BD1E003D7FCEB3 +:10DEB00019E879BE1E47DF2FB1F5777B8DE8C5F3F2 +:10DEC000263EDFBC21968606255C777944C6B4875A +:10DED000BFC798B7D48ED7739F75F273338EDFE3C5 +:10DEE000D1C397C0FA5A2A627CEA9C83F67A4B8B9C +:10DEF0005E0E5F4A410C2D6674186EE727F92B8081 +:10DF0000BE3512B69B7FD2DE2E033FAFAF32B8BE16 +:10DF1000FEF918F5C2EC1CC209FF228F3B3BFC1135 +:10DF20003DFF5BE10CFC1744ECF56A57BE9CFFED2E +:10DF30006CF047C9F8DACA0CFC1795B94F0F97C6B1 +:10DF4000E0FFFBAA31EA956687FFD2A5A3C05F4632 +:10DF50002E84FB3BDFAE1DA35F4ED72B1B4E5FEF26 +:10DF60009A26E73886ED3EC2083E2232CAEFD0102C +:10DF7000F3CBE4A932A65F9D8F8CF0720B1F39F9A9 +:10DF800061D90C19F965241F71FA713A8CC91F9C6B +:10DF90008F9CFC70A67CE4E48F0C1F19F99759F84C +:10DFA000C8C90F57DD28A33C0B2D263B5D45D9F88A +:10DFB00088B51B933F381F39F9210B1F215F38E1CA +:10DFC00077F2C97F3B7FA83293335CBEE4697F2D33 +:10DFD0007FA4C3975AF8C349E7F882C5C80723F955 +:10DFE00083D385F3C79874E7FCE1A4F399F2879390 +:10DFF000EE19FE48A31C31E177D239D13C258F9D23 +:10E00000E30FF3C599D159A374F69FF9FA2756780F +:10E010008B47D2FBAFA6B3C6E9CCD77F5EECAFD5BA +:10E0200027542F58E8ECA4D78A4BDA909E23E9CCEA +:10E03000F1CBE93C26FD389DC794DBA3D0D949BF7D +:10E040000C9D09B35B96327BD3493F4A67AF83CEC1 +:10E050005F897E63AD4F277DC7A2A399368C725F1F +:10E06000F7935C66A7BC0B861D4D1B72B2D7FB8C69 +:10E07000D7AB803B44D05FAE3D4ECB4CBFC865FBB9 +:10E08000E85B79BD27796AC2B17B536303F8FD9ED3 +:10E0900078412B584EC7F9BFABAF99F9008000000B +:10E0A0001F8B080000000000000BED7D7B7C54D529 +:10E0B000B5FF3E679E994C9299304966F262121202 +:10E0C000081874122005C5F69004088FDA01514132 +:10E0D0001107410C1048A056B1A5E5009157A306C1 +:10E0E0008C3C2CDA014CA5566DF05AA188F7131E12 +:10E0F0005AECB56DA496AAA534A09746448CAD55AC +:10E100007A7FB5FEF677ED7D32678604F0F6FEFE87 +:10E11000F97DEEF8690FFBBDF75A6BAFD75E7BE771 +:10E120008B2FF8EF6B8CFF56323682B14D2BD9F422 +:10E13000B652A483CAD414C6BE90E5E91E85CA4F60 +:10E14000AFF030CD11CB6F5E57308EF1FAE94D65EF +:10E150006BF09DB3AE1FD34A18FDBE60B17ADE0BE3 +:10E160000398D62F96662C4AFD79C6F28EDD281FBD +:10E1700048E5A75738A97F8C1F1EDA5BFFC97DF4DD +:10E180001FB84CFFB954CE98CE588668EFCC64CCFB +:10E1900026FEC92C6907CE5A7C8C3D906B0F5AF82D +:10E1A000527F92CE6A0107A33FE36BCBB59F52AE7D +:10E1B000E60D7CD55AA7318F42C6AE96F0B159F91B +:10E1C000FFCAF9FF765B7447EAC5F556ABBC5F370B +:10E1D0005211BF19BE151E95DA3BA3562D0AF85BE6 +:10E1E00079F9D058F90DB2FFD54AE8AD089FA79E3E +:10E1F000670FB506195B7BBDC097516F2AEAF1F531 +:10E20000557A2C729D610638DADCAFBEA5F0F9D8DC +:10E210009C6EDD42F3B79EEB74C6E635D5C3A87F8E +:10E22000C6DA2DAC220697BEEAAFBE1E79FC9BC1B2 +:10E23000A22B0BAEBCFF0A4F90BE4377D9A93DCBB2 +:10E24000B1478B95D87A397C285F5FCAA2AD3C3F35 +:10E25000D7C9D639393CD7284C730FE7F98A93F2DE +:10E26000F1F370FCE5C879AE2D664FAAD7F0B495EE +:10E270001D7194037F0D7E37FAC9B60751BFC86F71 +:10E280006F57F9FCD66C647A21AFB7E601B7EEE0C0 +:10E29000E56B520AA3163EFF359F8B71D7DC1E8CAF +:10E2A000AE42FF9A16F4F1FE69A8A068978E7665D3 +:10E2B000B2DE6C4F74356F17601D49CC12EB9FB105 +:10E2C0003CEF9964862C4674E84947A58BE82846BC +:10E2D000A7821E0BD75B4BAC7C7D9F305708F4B7F1 +:10E2E000DADBE048E2DF65CD1525AC3056BF71457D +:10E2F0007074A3CD94B671FCBB2FEE77793F95FA7D +:10E300007DDADB303DCCCB9F55964C0F9BE8E4CFBC +:10E310005E4127BFF5887A6C78D8093AE13D1EFB4B +:10E320001AD6E751831B147C57392722ADAB1E85C3 +:10E33000C321EA9FEA5C00B836A99E624AAFA2FAFE +:10E340003AAF0F3C1EF1DCB9AE80AFA3515787390D +:10E3500082E84F9B5CC6E19826F1146D52057E4B16 +:10E3600058B498C36F57939A3D87CF6BA0A7BC1240 +:10E37000FBFBC8CA7B55C6DB6FAC612C8BF76765AE +:10E38000EDBA155FCB897627EFEFA1EAD3E122F44E +:10E39000A308BA1F6771674FE4F53745AD2AD8C6A1 +:10E3A000C11D035FB3F1F4AE6A953978FF699DB37F +:10E3B00027338E97BD9E025AA7F5C484F719A7CFBD +:10E3C0008D4D3B3DE00BBB77640622FC1BDDB12687 +:10E3D0001BE3A78EB69EEEA15BF437D69EDDC9CBBC +:10E3E000DDC3E3F3A33382010FAFEF623CDFD8DF7D +:10E3F00005E2DBCEF74FB1A49BA3133295CE52AC0E +:10E40000C3D49ED7F3B63015E332DDED3B7315630D +:10E41000CFF37D8B7DB25BD5D424C0E7A4126AE52F +:10E42000C54F6E5CE38898F07B7D86C05BE30A563F +:10E43000FC1EA7839202350C7EF18022E8C0EA66BA +:10E440001AE062E037F15BB8BE3A2DD20B5FEBE128 +:10E450006FCE01A31B87C5D20FD8049CAD9E0ED5ED +:10E46000C3E11A7CC15396CCE71FD483FB3AF93C35 +:10E47000370DCD2FC3320C7A7B75C2C06D7379BD59 +:10E48000A5CFBA43C087EB84E314F841B2B3E96384 +:10E490007C371D9CC1829CEF252FF31517F1715C11 +:10E4A000C1CCE222CE976D1E8D619DD665F6E2F756 +:10E4B00078FEB89F9666755E629E1B56788A8BF8CA +:10E4C000FA5B5638E9BB41AEFFAA9F4E4EBBD30460 +:10E4D000AF2EC9378DB4755972C8BCBE0C2F871FBB +:10E4E000F1E3A87F8A891F4725BC8C7E13C737CAF2 +:10E4F000D9702D3096C3213AC1EED9C0F13D668A5C +:10E50000357B015F7FAB6EF780FE37ADBC79C34CC6 +:10E51000E0F30D0BD1C4A609F6EC79A67519749C2D +:10E52000D8BFC32BE6BD3BA03FA68430BFE9135F35 +:10E53000F7F37492FE18435ABF49A4C1A0AE45FA3E +:10E54000D6891AEF67371877365FA7376FA28EB470 +:10E5500057BF55E5BCF7A1F513361C19C5D3C5FA4D +:10E560003B0A4F6FF7B1F66AB42F10F51B7DABD69F +:10E5700051FDA122BDBE6516B58FCAF5F876D889C2 +:10E580009EA33B1AD3B14F5AA64CCB0EF26F6B59D8 +:10E59000D4CF787FEF6EFCF8A893F3399F22DA335B +:10E5A000FDB735984FAB4CA76E3C5683FEC64C2941 +:10E5B000DA0278ECEAB0117DEC3A7AD3ADD8EF9F6D +:10E5C000707881D946F38281702FF06E5AE12F6EF8 +:10E5D000B281EEF9B738969F12F2173F63D2076CFB +:10E5E0009EF87454090630BF597C7C2B9FDF265B54 +:10E5F000701BE07783F72735560E8F4D29C100E059 +:10E60000F155EF2E91CE90F0643FA8D1F83C36053D +:10E61000447AE0C6CD34FFC479446D2C3B547A056E +:10E62000F390F5FEBBEBE80B0E573AFEFFC7ED6F1C +:10E630000DB92FDFBE55EED73EFB29B8B27EFE5591 +:10E640007AFCDFF6FF6FDBCFF216129E2F4F0F8C96 +:10E65000F8AB4B6511F0F747A75526CD36F19D5025 +:10E6600086D0C7BBA0B7921EAD913DD2FAE8B824C0 +:10E67000C8CF4DCB432E6D0097BF3BA6B920B73610 +:10E680008557A517C37EE0FA14585EE33F563BA1B9 +:10E690009734D6A89E553CBDCB539884F28D3C8DC3 +:10E6A000F28DBE4A4AEBBA1A825C78C0979E34C794 +:10E6B000240778BD1AC8A58DD5858179A6796D9274 +:10E6C000F2882DE733E2EDD7E716EEDC50102BF79A +:10E6D0006528D28EAB9C30988F1F857EC77F4726DA +:10E6E0008C3B0A3D6D13D7D31CA4A715AE2FC2FCDB +:10E6F000343504393550A60768D6104FB24168E466 +:10E7000083DDC7A2EDE0CB2DCF2F059F5EE3E18334 +:10E71000F3F10634458E7E8DA7D3FC6A10FA336B75 +:10E72000E27A2ED7F3BCD071780707C3852BADE012 +:10E73000F32319F1F935E80FFA7B8819FA7B4A19A6 +:10E74000D793C8240B42DE8F9E5884F971FD10F5D3 +:10E750000D3DED844FE86DFDA0C7F174542FDF80AF +:10E76000793E1AB2320B6FE7996CD2BFD8C5FA5B0B +:10E77000868D695847C6607B54E7E3BA13F4B54405 +:10E78000BDAC472F0873BDC2D44F7289272EFDC977 +:10E7900089F10C7AF9C657D893506E1F7885ED270A +:10E7A00025B7790BC1618184C3072B42A31B398232 +:10E7B0008B148F0B46816540599071BA49B2343B36 +:10E7C000F12D52430F8FE1E31E7DCE45F05EEAB599 +:10E7D00047819F8D636F9E0E7875ED4C61806FA3AE +:10E7E000CDB30D72ECAA47FFB10E726CA3ADE36915 +:10E7F000C831556FD95093C7ED1DABC0D7261F5FE9 +:10E8000027AFBFA9ED85B34F13FE9D2185CFE3212F +:10E810007D690DF4D82E55D8B5CC1AF64FE1F4BC6D +:10E82000E759FB74A1FF8449FFD9BD2385D2869D9A +:10E830006AC063493F3BE161493FB12FCA562F6926 +:10E84000803DB14755A4BCE4701EC9581BF404D2E6 +:10E8500047E6FDB2DA4A7A29A5D3D3776FD04D7A4D +:10E860006AA27C0FCBFDD6164D91FDEDDA3086B74E +:10E87000DF53C964FAE713B55C8CAB48FDE2B90D10 +:10E88000DA688CCF449AFF540EF33D76A3FEBF4F57 +:10E89000ACA572659285EFF5438F3CBEDE1D88CD39 +:10E8A0006F70FA9F5FD38B50BEA4B6377DE33AA951 +:10E8B000CFB60D673580176F373D6ADA9F87FA59F3 +:10E8C00068BEBF965F3E6F35C8FB095AB9FECDBF23 +:10E8D000A18356D70253BFE5E92EEAAFD6C11A503D +:10E8E000BEAF5375CD36F557E493E35959F23B1C4F +:10E8F0008FC54D76CF4A8EB7E2E8F5B702AFB65C6A +:10E900003B53385E555F4779294F7B5F70334E81AB +:10E910006CEDD85036EC985DA3A20F5DCBF35BF3A2 +:10E92000D4900EFE96E2263C46775B6A7E04B8479A +:10E93000AFAA66D7C4C61BE913FE81B57A79C37C3A +:10E940004E2767DD6EB2EF7E620D11DDFDC46DF7FF +:10E95000E8C2F80D80EF15A9D16CE849D33615ADA2 +:10E960006FE4782892703EEA1BB25EC7389EB61BF1 +:10E970000AF9F86BB9DD85F1D7FAA63A31AF8DE126 +:10E98000062758C6F3071B6A0AC0FF8A55B68A8F46 +:10E99000B3718CD07B8B32D227627D450FA42BCCF8 +:10E9A000B4FF4E4A3A8B86045DEB3EC937AC7C1E01 +:10E9B000C3E15FA90881EF393CAC1CEBB2E53668D6 +:10E9C0005A2F78FC50F6C3B8AEEBAEA0AD49FB327F +:10E9D000B3E6F877C04FBAEC6DBF06DCD67A5DA11E +:10E9E0009D3C7F57525B2AFACF4C77A9587F16E39C +:10E9F000FFCF41D5A872BCC0CECC658497AC163B86 +:10EA0000F939325BEC64DF6CD255E26F0FCC6551A3 +:10EA1000AC234B574FC1FF93D9F9F10A8CE3F7A907 +:10EA2000ED76A467DA59D0C4AFFC27DEFF1CF6A947 +:10EA30009FF17C131FFA302DFCAD748E1F47AE473B +:10EA4000213B11752B606F8A9F4B577507EFF7D9E4 +:10EA50009582AFAEFD2E8BEE54A8DCB9AC5C54872A +:10EA60001FC72EEBB7FE8C3D0338D99D4D1D965424 +:10EA7000135C9709B8DA5BD62CC13AEC25A679F07D +:10EA8000FF1D841384C32F8F7129C0F9D5074CEC67 +:10EA900007FCACBC281F38E14B3FD7F66E12ECAE3A +:10EAA0002EBBF037908D5221ED7E93FF6273BAD06A +:10EAB000C312FBE9AF887A46FA0926FADD73247D92 +:10EAC00012E8FD87CB0ACBC0EF1B0DFEC544FF103B +:10EAD00077C04F86C7A50DE6F3BFD727E4DF1E57E3 +:10EAE00043AFFBFA3B3E31FEC6D73862393CF6AC49 +:10EAF0000A7E13F6EADACD2ADB89F5B6083C6E6A9F +:10EB000062C4873769A1DF4EC6BE6AB086743E7E96 +:10EB10006B89805B6B4D30BA52FAA1743EDF1439B9 +:10EB2000DFD6DCB0CB023A18CB3C3B391E53AA9956 +:10EB3000967435F1DB0D6837A03A9D816E1987B167 +:10EB4000CAE79F2CDBA534E94B40071B7343B71280 +:10EB5000FCAC4165CAD0183CDC128EC935BC1EEC39 +:10EB600069DF8BF7C1DF16AD9ECAC077DC3E3E4E33 +:10EB7000AAE817444EAE288E2F7793A897362D9E7D +:10EB8000EE884F82EE1773BAC13C47C6E37D93848B +:10EB90004F8E95D5D8393DAD4C17F269D77C01978A +:10EBA000E450427FAEE0DBB504473BC33ECA5F1E84 +:10EBB0005F9EDD925909BACB65A67C3EEE89742F23 +:10EBC000E123FBE8F6A92A5FD703B54CB5605CA644 +:10EBD0006BB5E5023FE01B6BC7A9D46F4E757AA5F4 +:10EBE0001DFE9B6A55039EBCB5A53BE12F33F0EBA0 +:10EBF000F57994F252D4F3540EBC9AFCB842EFC8A3 +:10EC0000E474CEC7CB39DAFD4DC02FBB2E7E7ECC4F +:10EC1000BCFF2C974FDB9CA97AF2D5F093C6EFDBB3 +:10EC20008E7E05D28F2AE842B8B2F17FC20F6B4DBB +:10EC300065AE12F83D37A8E4DF810F3297CFD1F6E9 +:10EC40008CAA67F1FE1CCF887D6D6BB3EA8352A15D +:10EC50009F30CD8EF2DC7F3ACCF3DDFD337736F09A +:10EC60001E95FE3F8BD4630D383C24E5F54392FF9F +:10EC700055EECDAD823FF4813CA18F710944FBE795 +:10EC80005E39F72E35BC3519707AC741367BF9519C +:10EC9000FDD6FFE0F53DD50C9E64B6D6DAE0F49AD9 +:10ECA000E4155F5254F5FFF7BF9BA4DE1485DE74B4 +:10ECB0000DF94548CE19FA8EB75D35E4BA0611DF75 +:10ECC000A367E84DEB21D7875A3A8638B93CDADC9E +:10ECD000FCA3F5D5D743FEE65D65E53CE7B97EC705 +:10ECE000D6DB32CC7AC26BEBA137F4AD279C9850BF +:10ECF0000BBD22D7481F9DA071A0B739655ADFF21E +:10ED00001AFC188D36FD39F0B4453EA6C36FD265A6 +:10ED1000B4D77FB01E72E75997E87F51CB0FD6EB7F +:10ED2000B997D73BF83E7585532E0FA7A895B92004 +:10ED30003FA3121EC5FDB64E5869D25BEA76774CEA +:10ED4000C479448F1E21F92BD747DBB07F5B257C2C +:10ED50005B332A5430910151BB16ED852F4EE8E705 +:10ED6000A4767B93B5AA7E232E4F5F13405FBCDE53 +:10ED7000E7E982DF0EB508BD26B1DF3BFA2986BF81 +:10ED8000BF01FA53E55EB7D05357DEFC24F848E5DF +:10ED9000A0D26DC9F09FBD7D8B0DE9DBFB59691ECB +:10EDA000D19F47067984DCCB069CE0272038FC6C99 +:10EDB00034AD23114EC6BA12F36FEA97649CF7DCA8 +:10EDC0007A68B83877809FEED9555C3EF4E2775B7D +:10EDD000DCAFC7BFCA3432823C64F71579358DCEBB +:10EDE000917C611DFE2F1BB7AB3413BF34DA5B2F50 +:10EDF000E4C49D43EDF0680CF5AD17F2293FD71A36 +:10EE00006E007C1F7B71E40D10778F4979D6DFA3EC +:10EE10002D45FE27EB86C7F9FB13BF57ECFF97E79D +:10EE2000405FD64E596DD7D2214F77B050287D0024 +:10EE3000F0DE1C821C59CFB442E41F7D6E41F318F2 +:10EE4000D829BFB2101F6954F4C5730BE027D62B25 +:10EE50003CA597B75312F76DB9C6E8BCCB6A65D528 +:10EE6000E0730360108E80F853E9FCCC7644E851DF +:10EE7000E08FF85A5844831E6CF00D6BD44AE59627 +:10EE8000130E1DF2C5A2AF21FDC6EA09933F79AA70 +:10EE90001A89F603FED771569A29C423D66B716B73 +:10EEA0002C52DA375FD8F748F384757C1F5B8EB835 +:10EEB0004E51BFED72FC136BC98FCD9AE3FBE3E3B8 +:10EEC0003C8371ECFBC2EDC9E6FEA5FDF2DC230F2D +:10EED000125FE8B3BFC68BFA7B11F490D89FC1D7FD +:10EEE0001E79E4A109FAE84BF4B7FDA2FEDA7B9B98 +:10EEF0009FC1F79A1FD9B85EE75BCFDA2EE48F1572 +:10EF0000FDE28BFE78BF760E4FE829BC9F5F123C76 +:10EF1000472B56C80FA37F987FD8A7897692F11DFB +:10EF20009C2EE45122FE9F5DD930BDB77D783E5DB9 +:10EF3000D84389F2D20679592EE46496892E1C9022 +:10EF40009757F72D2F3F831E20F800C1C590CBFFA8 +:10EF50004C8BBC8BF5387C62DD8E5CA64448BF14BC +:10EF600076CFBF6A7FDC2EF9E3AE24B6A10476C566 +:10EF700038D5033DD2B01F9E5DE999007FC6DA0700 +:10EF8000D510F4CF1EBB41DA15869DD2083A25BDB7 +:10EF900054DD89F3566E6F4C227B83DB237038B5CA +:10EFA000F27926F17DBDB1A5FCB793518FEBAB642F +:10EFB000E724DA1BD20EF1CF8DCFFF302D62F3F1B3 +:10EFC00079BA6B54D25777952C6DC73A375433EAD8 +:10EFD00027D12E48D42713F5C744FD30511FCCBD8F +:10EFE00027413FFCD2FA98D0A7AE542FC3AF377D4C +:10EFF0008CF443DAFFF70939BE52A4DFEC771FED3A +:10F00000D7DA6421D70E74AB6497479B32D331FCB7 +:10F010002E1B9B44FAF3A3C174F85BCA259E6BD3E5 +:10F02000C22AEC446E387A703EAFFA983B043D55E4 +:10F0300057CBC60761AF6BEE329C4FAE54C94ADB6B +:10F04000358ADBF3382FFA999BECE6D694671EBA23 +:10F05000167A18B7E3E97CB50FFB5D93FBE9B3744F +:10F060000F8D6BB137874AE1A75B797336E8B7D567 +:10F0700016267FF6F3D23FFA82FC5AE5B99251FE8A +:10F08000A2F4A3EEEBA37CBF2C3F20BF89E5FF2EAB +:10F09000DBB5F7D1FE906C77A48FF6AFCA7647FB4D +:10F0A00028FFA52C7FBD8FFE7F2DDB75F4D1FE9848 +:10F0B0006CF7661FED8FCB766F5D542EE4EA3BB2A2 +:10F0C000FC4442FF2765FD4E99EFF00685BFA28FF5 +:10F0D000F3B2670B049FAB3BD2A115A49AF4E8747A +:10F0E000A19F1B7ADC65FD55D2AE45DFB01F89A517 +:10F0F0000D88F5F743C937F16BAC88D98D061F2B06 +:10F100001E2EE2350CFBD3B0135F4E0F523B778BB4 +:10F11000B457591B137AD7A5E17C9B4FF0D5DD433B +:10F12000853F07F47797899FDFE1B38973CC32017C +:10F13000CF187C06AA067C549E7FB7B4DB1D5ED92F +:10F140009F37D69FD92F3EC927FC6DD1CBD0E7780A +:10F15000CCCB54AF2F3ABA45CE3F7A197A9E94D091 +:10F160005F5F74754742BDBEF65755C2B87DED83EB +:10F170001B13FA7B4E96B7C9EF753E55C2EDD2F41C +:10F180009748C7519C1373BAB26E1CB64197FE25BF +:10F19000B39FC1ADABE44FC860DD71F491CA3A448E +:10F1A000708BA40FDB8502A60D23A64AF2F2BD7E6A +:10F1B0004119071566D0D76D178AA8DC883F591703 +:10F1C0005C958E7892077CBE32EA86EB0DF073A4D4 +:10F1D000CA7DD0A37F206E00F2DD17117101317D51 +:10F1E000EE1D1FE87B2BEB55FF30FCCDE18CA40915 +:10F1F000747E3D5CF8FFF51227D9FFDCBCF0F70305 +:10F20000E7B54C0EE11CFE2DAFA0A7CB9D235CEE15 +:10F21000DCE072E7051FF9527C880BE2D234043936 +:10F2200035EEA7A59B6A1027F18685CE5FEE6BD6DB +:10F230001DF3D9C5FA83118F61C43918F11846FC42 +:10F24000C3A3F0FBC3CF5FE2DF017FD4800CB1FF2B +:10F250000FEAAA0BFA46EB3471BED37AF4D11A9CAA +:10F26000377D52AD7A00AF125B7802D2AD61E12FEB +:10F270005ED73275E260F877A2D690629A07CED751 +:10F28000CCF6C6404F4325CA5BA755927FB7F11F06 +:10F29000554EF0A3B59EC224D88BC6B9D5A61A7117 +:10F2A0009EB56B5A7C7E5FE75989EB7EC92BD611E0 +:10F2B000957EC2AB0ECF9882388B623DBD2C49C87B +:10F2C0006FF28FBDEB9574B3CC42712319D09F3888 +:10F2D000FD1473BB0B746DC4936430137E0A100F5E +:10F2E00023E8792842CAA003300E4F03BF968BF162 +:10F2F00069D44FC42BB3864A40777FF77AA8DCE005 +:10F30000E37DF1FBBFCB750DCE10FBFA51AB3E9503 +:10F31000F4386EE8832F1FF44D157E72E08D57D9B7 +:10F3200078D4467CFB134EBFF02BE39CB2B7F81D9C +:10F33000034F5D32BE2E115FBB6D3A9DB31FDA7174 +:10F34000AF1FE7406B7F1EE9EFE9A51FE3BB4AF65D +:10F35000C3C193043B9A73C42475E497B2876EC803 +:10F36000B8843DB43423793DEC97BEECBC1EBB4E53 +:10F37000DA7B867D67E203B765607EA54AAF769D3E +:10F38000718E342EC3F51AD935FF73F6E4828CFFE3 +:10F39000863D79A5E7515FC23EFC76C625ECC3DB0E +:10F3A00033DC5FD63E6CEC155F97F363F5C4D36A2C +:10F3B0006E85F3E33A66FC96907FF15B72AFD4C939 +:10F3C00038BCB11637F12BD7930AF99117EA569A40 +:10F3D000579DBE6A09FCBF74BEC1E97DFE038CCE99 +:10F3E000317939ED67A3FDC236076B37EDBFC52F05 +:10F3F000F0B4896F17301167369FEBFFED267E5D05 +:10F4000080F3E45494C7E733CBCC34E015B196BD18 +:10F41000C5692E3BB1E3BA2366BF6B460AC5EBB1A3 +:10F42000AFB0AF901D22DBF7B58F3E5B11BDEE880C +:10F430000DD103DA7319A6F81386C3EE519C8F0F12 +:10F440003E53D2DB7E36E03A6759157B97F3AF1710 +:10F45000ED9E31880FD59F5028EE774EB588BFBB03 +:10F4600036AA907D36E7FE85C3C0E746BD17B2E3F6 +:10F470005C717187F0AB645996947D977F1F3DC492 +:10F48000EE08CBF412D8B76E2D88F3B0D912FFE78F +:10F490006C0D651EC8C9DBDD1AECDCD9D3B4B771BD +:10F4A0006E307B66A913709BDD96A4D1D7C9AC2EB4 +:10F4B000C8CF7F7C4171C277496CCFB63227F2B397 +:10F4C000ECCC9AC4BF7B5BA6D811E797E5624EA44B +:10F4D0002B56F1F1399C524786697EB30F3CF537C4 +:10F4E000F477B7B5FD20C553CB78EDD9075EFB3B6C +:10F4F000ECDDBBB4B01D7ACB55BBED924805FC8763 +:10F50000B6C5A7AFD9179F2E6B8F4F0F3B1A9F9E83 +:10F510008403400ED7973EB730C48976FF3899CE22 +:10F520003F1672FDF8ABE9621AF0312CF8C9D01D14 +:10F53000887F7DF19FDFFCD37779BAFB5716B2CF76 +:10F540005F1CC27560C0CF1ACDC7FCCE3EF6D41387 +:10F55000F7F3F2B34F67C1026487BA447CEBC21F72 +:10F560003988BECFAF088DAEE67A5DD5C203F9E02B +:10F57000BBE7F7FDDB1328FFE03907F9B93F90FE41 +:10F58000BF83EFEC3FF318C67D2EB90C7CFF836779 +:10F59000F70E049C16FCE4E57CC4A59C7DFA2715B7 +:10F5A000947EFAC757E37BF6C74F0D9C4DCA5A3479 +:10F5B0001FE7F6463F0B9F493AD58FC3EFCC876EC6 +:10F5C000B7D95E34BE5FB6DF85F0FB52BF6B3BFA46 +:10F5D00061FFED4ED1F15DB0FBFB1F8BAFF286F802 +:10F5E000AEA4F2051C3223391CDF4F11727DE16E8F +:10F5F000471CFC076D8DC7C7FB5C9F799ED71B1C02 +:10F600008DCF3FC3F582E7F9B825E7674E84FC7CD0 +:10F610005FEA3D67F8770FAF5FCFF3BD3CFFBCD427 +:10F620000F12D7999F29F4E7FA7DF1E3EFB7F65E61 +:10F63000BF2853E81125383135F1876C47EF7EED4F +:10F64000219932BEFAE99EFA16E197E0DB89D3D818 +:10F6500042B9AF5E528CFB14EC9E1CBE5F16824812 +:10F660000A63F90B9969DDE4A708A501EE6FCA7872 +:10F6700088CF6C62DF9E5D11198678DF332B1A0606 +:10F68000579BF4B1795B97BC1AE07453B727A39CDE +:10F6900062CE657EDD8F0FA7C29F31A4CD46F2EC0E +:10F6A000ECEEC39BEF029DB6D918F83B2FCF44F97F +:10F6B000B9B6575261C3CDDBEE2DC7F9AAD1FEEE24 +:10F6C000ADDF1A5C6DE27B5F761F1AFCA1CE23E0F2 +:10F6D000B07764C7B81CBEDF166E5542A8B6B0ED51 +:10F6E000A61BBF0EDB66BB85FC1C155616B69463C5 +:10F6F0001D3F7B359BE7D7BF3CA202EBE15D4C434E +:10F70000FE06353C6928F8D31336F203F2FCA32A2F +:10F71000A7B343259BECA7F93A66650A7FF7869B5A +:10F72000DDB5D033797F47E061497D52D164FA2D50 +:10F73000D4EFAA6C4B85FDF2BECDBD4E49039D367C +:10F74000FC16F3D09F15FDB27631EFF9D22F5E7B18 +:10F75000C046F6487DEBEAD431B0E7FE695110D7D8 +:10F76000D4DDAA103FB87B6B3C7DD5F2BEFD7CDCBE +:10F77000B33B52A8FFB319D17CE8596753A2F9E90A +:10F78000A23DF1C1DADDBFF83BF8DEFC687CFB444A +:10F790007A5825E998FF4ACC747531DD30ABB52233 +:10F7A000565EB78CCB03D33944DD7BCD76E8EBF3E3 +:10F7B00027DB2F391EA74B1624782491BDB470087F +:10F7C000AB0E8A7802C5C9FB3F8B7F717B70E15419 +:10F7D0005663E4D33902E89A93EC5F4FFCE2210BC5 +:10F7E000A7EF6C200F7EB09F2693DFF4830FED24EC +:10F7F0003FCE7671C582AF7BB17FD8E86AD3FCCEAD +:10F80000ED3B9C8AF99D0BB6A7A67378EDC7BE4663 +:10F81000DA23D20BBB36901F7A65DBE154C4852F07 +:10F820006CEB47E7C9FB9F55D2550EE7735D3F4A26 +:10F8300066BDECD3055DE2BC38910F19F2F514FEFC +:10F84000C9E5F05399DACE4CE8318DFD480FC8EA8E +:10F85000D750D6D04B7F46BBA73383425E29A27DCB +:10F86000966529D5FF8D3FFC6C26CFF7577668B893 +:10F870004FE49FC842AB7995772DA17B3D03202FA4 +:10F880002376B29F1B33689CBB19C70BCF9F636560 +:10F89000ED564E9F732077AFA634C16FCE6E250A0A +:10F8A000952EA5C91177EF695E8B23EEFC896D3724 +:10F8B0009573F8CF875C4DA5F39D76F843173C19F7 +:10F8C0005F7F216BA771EB9EF9C261EE178ABCA026 +:10F8D00037CD0EBBE66F123EBFF16BAF625D3E19D6 +:10F8E00037D0FD2B9B909B2CFC55AC67A194E37704 +:10F8F000390ED2FAEAEFBF7FF05CAE8F7CB4EC3BFE +:10F9000083E7F6937E05ECF7AD8AA0AB6AD69EC777 +:10F91000E777ABD46F161E50DA87F2F45D7CDDD04A +:10F9200023AE7D46D153B8FCBACBC9F454D0D99B91 +:10F93000022F75723DA897560EF8E934DE9F808F2E +:10F940000CE87D1DB42E2EBF5667F2F11677719E1E +:10F95000C053470F56A4816EFECAF92BF623D74B2E +:10F960005852FAC5F84D846BEDF604389BE15808FF +:10F97000F8C5E365F10B1C9EBDD0D9A392DF9F644F +:10F980005A9C9E69DCBB7B74A522E4843E6506F824 +:10F99000F4E619151538A77C18FEB06CD9D148F0DB +:10F9A0004166C4DBB53BF938AE613D692AAF5825E5 +:10F9B000D29F677E6FD2D65CDE8F2D12801F66F3DA +:10F9C00014AEF70ABD25097ACB1781889AC5C79D61 +:10F9D0006309BF8AA3F5F7C66803892E9709386FB4 +:10F9E000296F18DC7009BD348B8F9D9C2EE7073D75 +:10F9F0006AA89BE28F029813CF4FC917F92957BB0A +:10FA0000E83E5596CA0DC95EE06D7CB3ACDC5C4F38 +:10FA1000A72F4BC1970F947289FA86BE9805650986 +:10FA20007AE790863DA0AFAC59A5E5AB0B62F3DC5D +:10FA3000ACF07D08BDF9BBE23E4DF2813DED39BC35 +:10FA4000DEA29A20F91F336E395182B8A56BB20439 +:10FA50009F4D937AF2368535C22FE0E7F4AE9423BA +:10FA6000BD31B094E70F7F4121BD7AD10B632C8B60 +:10FA7000DCB47EA1572737EC5031FE1D25343EC73C +:10FA8000CB1D53513F4BF089805BD0AB7F955E809F +:10FA90007ED20E8597BC42701371678027ADDBC99B +:10FAA000D6415FF6B3950AEAADC91074B166B6D017 +:10FAB0008760CAA6A58BEF5BFCCBADDF469B809B26 +:10FAC000D525F21B31CEA3A9625E19AAE58E29D0F5 +:10FAD000FFCB453A7DB9A2EDA4CDB851E0D1C16AC2 +:10FAE000B04EE4635D7C1ADA1EB709BE550D659809 +:10FAF00047D600F17DBDD3A9233EE7759FA107B787 +:10FB0000BB414F6C5F4085DCBC47CAFB8F6C5AD64B +:10FB100030C891376C0CF68A2F3FA17E51890AB903 +:10FB2000718F94B39F84AAD2C0243E716B695EFE2C +:10FB3000DD6713F64222DEEF9478AABF90C3A226B7 +:10FB4000F9513FFD53B217EA2FE4C7E59F5BC15758 +:10FB500032C824076B0FD17DD245AC83429917B5CB +:10FB60005958D4B47FF72589713FFBA383F8D53763 +:10FB70005B07EDA4F866164C9D9A12DBAFF5172CC7 +:10FB80004CE77BEF3A8B4AF5EBA7DBC9CF58BFCEEA +:10FB9000B203E771F517ECA2BCBFE8AFFE423FA687 +:10FBA000E36CDBCAFB198A761FAFB90BF87F59A14A +:10FBB000B8B3FA0B99546EE8C3F51714519F8F0B25 +:10FBC0007DB07EDF67727D56CA3FCD3F902FFA3EF3 +:10FBD0000BC9D7C95C9E82DF9E8EAA7A31C7CFF946 +:10FBE000D0BB244F4F1B717672DC732B38431D142E +:10FBF000CB3FEFE924F99A8DF80DA483226DC00B59 +:10FC0000E580D3F9E906FF68B7A2DFC74207ADB8C0 +:10FC1000FF53173A388E99E82506D764DCF1EB815B +:10FC20006BE6EA8E7695F38A1F6EF9F5F74B07734C +:10FC3000D23B24F996DEF17DC4E7645AD4383E867F +:10FC4000582423AE1824F2A86A91F13C6F7CBF3A85 +:10FC5000D79496F57BDAEBC726A17C78A968FFE3F9 +:10FC60002DBFFD8F5590A5865CB376E787534C6911 +:10FC70006742DACDD3434D694F42B92FA1DC9F9043 +:10FC8000CE15F567A5758EB0709BF2852DBF9F844C +:10FC90007B45B3723ABF857B5C4D96772655F3F46E +:10FCA0009CE1822F2D3EA090BFD580DFE210237D06 +:10FCB000D51DEAB4C37F9A3C3CF4AACAEBD5ED53F8 +:10FCC000283ED7DDB6A71D7CA60EED82A6766D4236 +:10FCD000CFAD6B3B45EDFAECBF44A57DBEA1E4344E +:10FCE000D55BB4EC433BF4B675C15561C8CDA96A88 +:10FCF000509CBBB38896C3E97EF1BE294CC49F0AD1 +:10FD00007E7A3EA01DC67CF497153ADFECD97FE8D9 +:10FD1000D71DDB1F46FD3F0C3DF03BC4B924DFF38C +:10FD2000F14A2BAFFFC7457F1E81F1FE802AA3C099 +:10FD30009FA383217766D6DE3918F9B72F2A3E882C +:10FD4000299CB4753E8EB891BF6EF96812E2484E98 +:10FD5000A674E621FEF86F59FF25D2199D8F039EE8 +:10FD600075FEFF43F03D99D799A7F2F47F65554C96 +:10FD7000A67471E7E348976F0D4CA6FA433BF32C4A +:10FD8000BC7DB99E3D19F06FF5087EF804B79BC1A4 +:10FD900057FF902097CF4A3EF3BB81DA7F424EB2A5 +:10FDA0003A21171FE7B69793F3CB598F753EDBCAFD +:10FDB000E130EBDBC9E2DCF6DC8D13C3024E61E817 +:10FDC000E15982F44DF2D14AFA92211F0D7CA4E44C +:10FDD0007704497E24C8AF68A6B6C89F11FB7E5E33 +:10FDE00020BE8BFC4109DF86B220EF77E64C7768B6 +:10FDF00003C525748E001D3E9C24D6C5F70FE1D99E +:10FE00006DE0C52FEC23E61776EB91CCB18BFC238C +:10FE100048DFD79DC0E7143BE9652D53B480CB87FD +:10FE20006F26C53FC7FC1F36B2775AE4FDE79645FB +:10FE3000C5E49FEBD1F39F72507BBE5D07621EB796 +:10FE4000821F99F870CBFCAA00DD1B2CD002E02F9A +:10FE500006DF64D6B60CF8F10D3E89B4E08F0AA532 +:10FE60000D7EC818AF67BA9F799B8D85611FDCB680 +:10FE700043F0BB9E7C85E797C6FAB9D2FC16AF98D3 +:10FE8000972127B356B7517C69D6968274D2272022 +:10FE900070A1976D1CB413F0FE223095F0D132E5BD +:10FEA00047497796C6E8D93648BB0AF9B7CA7838C1 +:10FEB000836EF083FF6ECE23593B1037B2C82FEC10 +:10FEC000FBF754AE77F17DF78780815F46F859E400 +:10FED00017E7FA3359E7B7B03FFE174FFFE3788AC9 +:10FEE000FC4B785AF6E72BE39B725F6E56DA6D593E +:10FEF000826F0A3F03CF873E919B15F9A6DF745EA0 +:10FF000033EB3B8B02147F24E7937CDFDE9A5B7834 +:10FF100072D682B33DFC86052FD6C74FBEE36C82F6 +:10FF2000BFEFA4BD8DE4C3496E77AE041F957EC1BB +:10FF30009372DD15DF5EF83AECEF5FFAC5B927EC96 +:10FF40007D66A6ABF5A1DF7FB757FAB208BBEF65B8 +:10FF50000BE9F93DF4D53A88E82B49D251B625BAD8 +:10FF60006D1EE8EC1637F9A95B8A55D28B5AEE4F15 +:10FF70008E422F6A29E824F8B68C0A7AC037397D78 +:10FF800011FEBA67D8A95F0E401DF53F9A9E1D0568 +:10FF9000FC39BD89716738897F3269177F545B18D6 +:10FFA000057EAF43F037CA8B556A1FA3C3EED42931 +:10FFB00026FAF948FAFD3E827E9466CA977E06AE1E +:10FFC00017A49ADFE3B85CBE418799AB8DFD20E8AA +:10FFD000EEBD4D59E437C6FEC23ED82BF9ADC18FF8 +:10FFE000FF10883C0FFAE9D1B30D3BFFE13CA2D7EB +:10FFF000B52982AEB72789772FF6FA8371F756B7FE +:020000022000DC +:1000000073BB04F287DBE3FBD0CF1DBCF93E9EBE81 +:10001000232BF2EF9D18779941C7613BE8EE2EE95B +:100020000760CBE3ED56C44DF5A42D17A7E769C2D1 +:100030001F7E919F81FDD311DF4EE83DC9A5DD36BE +:10004000D0FB962461E719F26DABA2D0FAB672FC30 +:10005000637F1AF5FE7ACEA5223EF977529E1D7D6A +:100060007D581AFCE3867D9E68AF2FC61278BFF5D7 +:100070007C6CF897EB5D41F2E35D6711FEF6EE569E +:10008000471C7D9CDE1790F4A3CDA6F2952941D0A4 +:1000900007DA635DF5458C8D4E37D5DF3A48D437A6 +:1000A000E8E9678AA4A7E87CEC277DFE1086FD516D +:1000B000EF12F4787EBD6507F6C5F98CC87CB43FB5 +:1000C0003FC3859B42AC1E9044FFFAE72BE0EF3A1A +:1000D0006D15F4023FB4D94FD0A3A7F37FE39E433D +:1000E000A29ECEF3758B391F2493193B5FAB93F718 +:1000F0007816ABA7062E35E9EF88BD257F1C2A159B +:10010000C4E806F01B5D4EDF2316C24F6745D84496 +:10011000D73DF5D4D3D45F5F76F7E2AD7FA6FB4A37 +:10012000387733D3455D8C7E942F148C6FA2279340 +:100130003D4E7A3DFC40D58CDE7D4991E9E49A0E36 +:100140007A87A55EFA83320E758EC3BE4A19DEC663 +:10015000609FD77789FD73ED811D8761BF7B6B3A07 +:10016000F240EEF5D2CF69D09B31CF5107365A60BD +:10017000971CFA50D059E5E9D933C0AF5F72052A10 +:10018000295E3E101910C830F93D581BF1A9395BA2 +:10019000140FE8E0A574A679084EC122C0A9D22E9A +:1001A000CE4196751694DE65B24B470644BC7A8DF7 +:1001B000AA0D09F0F1CFF7118F5D1190F7304E269F +:1001C00045A08F55BA92880F3EBC69D04E47416C0E +:1001D000FCB99B0BD2317E4540E89F5F04C21501FC +:1001E000D2F74215D8CFC501116750690F16C1CE9D +:1001F0007AC9955589FD3DC13847D3C714E1CA5620 +:10020000A55FC07E82D3D19E42E76BCD83C19FA6FE +:10021000CC75097D914D263AA991F4F46081C0C353 +:10022000831384BFF1B74A9B0F724D7536DF83FC91 +:1002300089452921E0E70DC59B073F279B6FF39E6A +:1002400071C6DEB9E9DB4F6365674C71150F2A5C37 +:10025000D14EA72FF96DF857477A33B60FE4B6CBD6 +:1002600041F204E5222E23B81D726FB2D341EF6B29 +:10027000A4C0FF25DA6BF0CB4C76FEE22DAC1BFE62 +:100280003CF04B5EAE19FD8A72D6867DC242B673D3 +:10029000E67798B62509FF1F6FA7839FA6E0DAA22D +:1002A00068D72EC6CDF5E29CD758DF6A5B5B19E6AE +:1002B000A72FE2728DCF6FFB18DD91EF039F4E2ABF +:1002C000837FF7C9147B7B3A9F4743C088BF0B925B +:1002D0001D785AD24351AABD1DE7DB06FDF54F1A22 +:1002E000D300FA33E0B13A89E30772F82E5708F6E3 +:1002F0003CE621E71307A7185C84DF7D320D1583E8 +:100300000BA7DB6A4FB9193EEE769C8727C2A52F53 +:100310007818EBC07CD3532F86CB5675CF42E2E7DB +:10032000E75D21E1674B8013B202249F9AB0BEC5FE +:100330002C42FEE1C54EA6C12F35CFB184FCB3B52A +:10034000D2EFCDE0F4E37AC97955F0DDF34F2B24F9 +:100350002770AE62E697382731A7EB0C3FEFEE042B +:100360007FAC94778BE027C6B72DBE1DE7EC241732 +:10037000EBF725FABDF538391DF383897DF1D8E611 +:1003800002D2073B01EC51C85C45FB13FE3521FF4F +:10039000B500FC399BE71796C3DF9C6C157AE45DCA +:1003A000CD8376AE94FA00F408C32F67ECE72F02F2 +:1003B000957BB1BF5BB32B9FA77D0EE7CEA84BED1E +:1003C00027314FA31EFC72973AA7580AFEC7F59D26 +:1003D0004381A0E053AF156741CE2E55825942CEDE +:1003E0000E8C4B9FB144E89CC2F0ABCFC73981253E +:1003F00006D779D21F3FCFF0BF733C0513F0644E90 +:100400002F30E12968C653356B4F49C093B9DD627F +:100410008E27B4039EE2E2C25BC4BAEF9072C2A020 +:100420005BEFF21D1666F253A4956B050F40AF7C8F +:10043000CD46FED5FF9474C9F15001BDF037FECA18 +:100440000380B70BF64D29F47B560B7CC39F3B15FD +:10045000FEAE1591C188AFE378AD98DA8B9CDCB025 +:100460003FA91674F281E4EB46FECE808877253FE3 +:100470003CF488F50EA9D706F3D14F45A1A12F066C +:10048000E97C7DAE3C5F5E7CB33B82FE4ECB7382EB +:10049000CF02C25EFF2C20EE591969637D463C05F0 +:1004A000FCCC663FE9E73DF5847F9759231497B963 +:1004B000D9164DBA8BF4AFB01DFAD75FCE09BA3852 +:1004C0007A74CE7CCCF32FD35D0CF10A8E6C41276D +:1004D00073E5B9D65F5850EA6303493F33D23D7A9A +:1004E000D70E4B9CDED5F56496D4BB1AE2E2267A91 +:1004F000CABB061A7A960EBDAA7B4F92A1B76BB8FB +:100500006FA0FF6C90B44F19D9055D07F2A8FE19D2 +:10051000C45120BECD1AD9867DA6B789F3DA2EA99B +:1005200047D52F387B35E47B17137C593FE020FB00 +:10053000835975D2A7CEF4E8F3D19C1B4DF8DC2F7C +:10054000E30FEBECED03A1CF77497DCB481BE7FF31 +:1005500048E3FEE34B929FD7B944BAC919B92A3B85 +:1005600003F139C2CEAA4BE5F9EE2B810FE71782D2 +:100570003E883E510EF9D2756068BC1EBA4DE8B592 +:10058000EFDB447BFDE705123EDD25F0FF76756568 +:10059000D23B6D1F85ED74AFA34BEA9B065C56BD45 +:1005A000FFA31C7AF7A147BF14F0D82CD7D1620B58 +:1005B000E60F837E05BD0EE7DCEB44DC6D7DF4DDEC +:1005C00099D0F3EA6BFF318BF213E2283E523A1FC7 +:1005D0001A48F3F0D361FC628F2833E0D0E317941C +:1005E0007A2AF37567F6A66FD6BFBF264CF1684C22 +:1005F000C41F5F2B59EE45F512C6277BAB42E8DBE3 +:1006000074DE9810B7C1CC69CBC5E939D98AF4A397 +:10061000C5E7DF059F7206E611DFDF7B363D15EF8C +:100620000474BFAF12BE16B5CC9E85388E3F6544AC +:10063000EA80FFFD9BD656C8FBEB44B7D77E904BB4 +:10064000F61C6B16E7BCEFD9B459D8A7DEEA76FBE7 +:100650009D26F8ACCE16FAC21C87D4DF39BF35F31D +:100660001BA3BCA2B2F7F39055721D2932DE8BB1E9 +:100670001B1DD00BF6E39F41733DC1A756CBFDDD9B +:10068000BF4BF899AFEDEA3E883BC8756D65146FB6 +:10069000D17F793BF187F76CAC1DFEA6F7B6A508B4 +:1006A000FA857F94F73B6FA4E8779E85DBA1A63897 +:1006B000B005126FF31CDC6EE5FC78EFEE3196149A +:1006C000DEEF82ED4A08F1BAD74A7E0DFBA53FE482 +:1006D000878C13AA651D6B3A79FFF39A987324C52A +:1006E00089452D39046746E722A923A3142F66C044 +:1006F00087CB9DC654DE6E8116A5F390C4F80B66B9 +:100700008EA7003E70EE6FD2731635AFA738821EEB +:100710003DA12D312EE09F8E78BAD1E3E4A8213F90 +:100720009F011C47C4E44A5FF294EB41CF660BFC87 +:1007300089FDBC4721782E620D220E40CAB344BD0C +:10074000E58C45C8DF798E8DF43D945D40E32D60E6 +:100750009DF27C5BE83197C3FB21493F06BEEBBAB3 +:1007600058FBF5BCFFC372FE46BDBAE5AC7DD1D5E2 +:10077000E20B7B81C359C879A790F3F8BAAE40DE8B +:1007800027CAF944B99E28CFB3EC427E1BF4613EE0 +:1007900077845E73EDF2A805787E758546F14FCBC0 +:1007A0009CA957E3FEEA6749E2AB03AEE08B2793CF +:1007B000486FBCCF12DAFA06DF12E3D68A7CF6A7BE +:1007C00064E297ABD70B7EB75ABE6FFBA9DC37A7A5 +:1007D000E5D79923F6C7218C538CFB4A3534DE3894 +:1007E000679915FB7A82E7E37C2BE889F31D37874D +:1007F000F37849EF8B1DED6BE0D73A1C58F443AF0B +:100800007CBF02EF928EC33F78FE87B6C853B840D4 +:100810003F96051B618F5739231F67F371AA068E18 +:10082000B7425EAD4A5E3C9AEE3730ED2FC84F635B +:10083000DA5FB3892FE57AE8BE40021D1AF3AB6296 +:10084000DDF956DC23709EBA17FD18F34D9CDFE1ED +:100850008022EC9F8479D539233F44283A9F8F2505 +:1008600067446C9E95CEC881CE20CDC79A9341F344 +:10087000B1E564F43D1F2B8B503C90D59942F7199C +:100880004D71D269E89775C4C7671BF7346271C3AD +:10089000E27BF84356083B9DAD13EFF28E95F5C70A +:1008A000BA1DA7B02F56A7307A1FF5307385567141 +:1008B000381EB2B17DD88FBCBB22F33BAD8799D82F +:1008C00067FA0911BFA438459C15639120E25B0FBC +:1008D000273934E2CBC1605C7CB2219F0FFF318F9E +:1008E000FC8A87921C6ED017AF4FF987FE981C2D9B +:1008F000241BD9147F5C78313D42C5EC025F5CD388 +:1009000040EFA5F8591BBD1F33014E615A6F878216 +:10091000F9E5DEC3486EB39121F9EEAAB0E7AA0C5F +:100920003825CCAF0AEFEA028FEE78BB8D356FD158 +:10093000CCF03A0438A6C5E069C02F71DE17AD7F50 +:100940002B877B8509EE4E07BD73CCB1C772D27B76 +:10095000699F60F7DDEF8F7C1D74F2998DEB7DD080 +:10096000BBA738494EA6D774D37DDA93B1775B68BD +:100970009D87E5B06AF2E85CC49BCECB917673C2EA +:10098000BC8CF524AE33110EC67C2FB7CE23467F28 +:1009900089EBF5F4D13E619D6FDAC3B558E749D6CE +:1009A0003914F8FD39E6623AEF34F8D46BD88FC5C4 +:1009B00097E7578C357C45E0BFE11A7CC77D63F62D +:1009C000273E7ADFB3F606BCEF396EFCEC7B90DE97 +:1009D0009FABDD80F8FB71550A9D7B7F2FA7E661F9 +:1009E000DC6F1977CBEC7B32F02E45DEB91B7C5CDB +:1009F0008E8CBB4D91E7E423BE81772BC6DDA190A1 +:100A000052F5CF3C5EBF14F66DC48673FB9BADE21E +:100A10009D58DE8566F657ADCB11E702EB243ED636 +:100A2000E704057F6462DE6CBA88DFE276856D2AB2 +:100A3000CD3B62C3BC8F5DCFB9501AFA8DE4359BB4 +:100A4000F49BE3131CB76BA5A29EF95C687B8E1226 +:100A5000676F27EA353F90FCB8E7FC92B7BF69A8FB +:100A6000B9DC4AE5DB313FDE8F3B28E41BE6356D20 +:100A7000A8F89AF5CDE333C68C0519DF5452D08817 +:100A8000DEDEB44776028F87031FA690DE66ED1C7C +:100A90008A7560FFED4FA7F367115FE115E73563D6 +:100AA0006B424FDEC7BFC7396EA1D71C4E75EC68CD +:100AB000E44B785DC2E9A8C18FF8AFC9E0BF521E10 +:100AC000E0DD2683EFFEA2600BF1FD8978E96B0083 +:100AD000FC371DF4BD8175D337CC3C363A4F6221CB +:100AE000FA7E34A6B382ECEF18BFFE39E6FD619EB4 +:100AF000E0D7AF263F44F2E92D8C0FFEC9DA89DE3C +:100B00007BF848027FEC938F607A99B1736B838F87 +:100B10002911CE3F517F8D4EFC2C8D455E035FCF5A +:100B200091EF41E5717E46F66C0F1F8BDF2F3DE79D +:100B30004B83158A53D9929C4A7ECE638315F27BF0 +:100B4000BE049905389729C6BB8016DC5B25F8F1F1 +:100B50004EC69728B3617F8CAFC99A83EF1609E719 +:100B6000F133D774605EE34BDEB815F95F679D56CD +:100B7000D4FF06AE7E937EE4A1F76EA6942A65F0BC +:100B80001B961FED3E84774626978A38E7507BBB3D +:100B90008AF4C4122FC54D0F7B5DA4BF3ED24BF724 +:100BA0001287BED0B90AE96F685E7A77EA9A03E1E4 +:100BB000B119E86FB2378472EF4C1FDDC760D30400 +:100BC0007DBCBDA296F67B22BE27307DDAD7F9F731 +:100BD000E89B857896867D9A3350F0B948D1BE4E11 +:100BE000DEFE267F7D08F31B3577A305FB92E93FE8 +:100BF000B6803F4E97F8F246445CC7F4C814DB1C3D +:100C000037D1C3BD581FA783FF021E0CBA30E8E1DD +:100C10004555C273AA84A755DC7F9C1611E71BF8C3 +:100C20004DCB84FBDDF87948AF37F8E37145B69FCB +:100C30002DDE4BFAFDDB5C8471BAAA0E175403CE8D +:100C4000C408F8BCDFBA3D4872B27AE62D13915F52 +:100C50001D59DB4197893DA6FB38A0ABF7EC71E944 +:100C6000C3924EFDD314F2FF30F37D1C0BE2DFC4C0 +:100C7000FD7DBF5BC8EDAC883DEE7E0FF473737DE8 +:100C8000AE9F047249AE5A29FEAC44C69F712AA396 +:100C90007554BA9528EE77ED752ACC4E7060516781 +:100CA000016D9176C4875F170D4F011DF1B4663158 +:100CB000D933B748F8DBB26B6CC0FBDBA3C4BB49CC +:100CC0002F29CDB7137CDE760725BD923C7B5AC613 +:100CD000B15DE567CEFE242F151DFE8CABF6668B4D +:100CE000F340BFB8573264A980DBB4990AC37BDAFA +:100CF000ACC945EFA0F371BFF8C2749FFB9699C2CF +:100D0000FE9FB67C7814AE8017CB8DF8B9A00D4C41 +:100D10007B6A38C2DA71EEED67217AA7AF365F35AC +:100D2000CBB937A7A99A13F3644E3A6751670A3AC9 +:100D300098E8567660DF1D57A28DE9B40E3BD1EFDF +:100D4000715B784C06E6E18CE4C13F56792199B598 +:100D50000F8BF1B54A292FF238BD8429EE5BB15AC9 +:100D60004DFC2291CFC07186F9047AD23AF319EF83 +:100D7000F5D3389D04E71443FF90F68BF13EDF7501 +:100D80009DDE398417B7D8DF793C1BE756B3720B69 +:100D9000857D30FD176F215F090A3A39FE21ABC00E +:100DA0003C8FF7719F744EAE9027AFFCF1EE3CD8AC +:100DB00067C753C279B0CF1A728304F4A2690E7A5E +:100DC000BFFF782042F9C7E57D13D43F85B4379C37 +:100DD000E7A5FAC20E437DF8C98FE745F2CCEF6272 +:100DE0001D4F32DA0DCA45BB4319C15CC44BFD72BD +:100DF000469682738DA5721E45250E3A0F30DA1580 +:100E00004D5FDB81F1B97ECFDE054F4CE0E338CE9C +:100E10004929EF9B7F5F077F08E246B9DD86F8D05E +:100E200087ECA17516E8F3D551E9178DE7CB3D7135 +:100E3000BCE7741BE4C70C67A81A57C9F94F5D9744 +:100E400019E3BFBF97FB758BC117249FDE72771A1A +:100E5000F939DE9C9DC0C74708FD607C44F2EDB0C7 +:100E6000E0DBF899F9E2F8996B3B80B744B9575544 +:100E70003CA011EB1D1F1178AF66612AAFF95DE34D +:100E80006488971B59B057B968F0BF50BBE0FB139B +:100E90004B05DF2E3F1A3A8CF4E4E1061F177C7EE7 +:100EA000524901C981B7EFFE0DA55FBD4EA172CEBB +:100EB000579FCA1DD11BFF17EB9B52E4A5FDC8F934 +:100EC000CE6EF09D2D3D72BFFD8AE4AE32F35561CA +:100ED0008F24E02F663708391B93AF4C471C5F9E69 +:100EE0005B157F97823528BDC959039FBF8BE921C8 +:100EF000F1F6C415EA013DF360C21F67FC7D0DDE0B +:100F0000D203FB3157B6AF70323D19FAC134695F75 +:100F1000497B87EB07BFCE257D58D8397ED839B0BD +:100F2000BF478616782D7DCF3B35A01D43BBB1163C +:100F300077087CED2F6F8AF7A5266833C6E29C738D +:100F4000228B3C60BEAF3C88EBEF56935C181C755F +:100F5000721B3496BE6AB7272E3DB4CD1F57FF9A39 +:100F60007DC1B8F2322E54CCE5C38E86E2D2233A4C +:100F700046C6D5FFCA5B5A5C7A54674D5CFDEBBA36 +:100F8000C271E9212CA262D1D7774F8F6BF7171668 +:100F90004DA777CE74ADA32493EEA3D3EF6B1722A6 +:100FA00071ED87CAFBAF63D8FCB8F6EC05F12E41B2 +:100FB00003FF0FF81B92F02EC140F98EF2CDD36CD7 +:100FC00071EF1B0CC43DD9547CE3EB27DE77B5E70A +:100FD000C9FBAEC3D970C8DB8BF0C3D52DF081AA95 +:100FE000DD2C1A2DC07AA82E1BB24DDCDF4D5C978C +:100FF000711F96599EB1A2DEDF820AC3936B0E7FEA +:101000003C3E9382F1F84C2E89C7674A281E9F699F +:1010100023E3F1E9D5E2F1D9AF261E9F19E1787CEF +:10102000664D8FC76720128FCF9CDA787CE635C477 +:10103000E3B1FFB2787C15E8B571E503D635C4D3CA +:10104000A3C46771F3B2B876063E75FEDFA5F0590A +:10105000E5DEA8C2AEAE7932FE9D8A2BC5EB9804C0 +:10106000BC5EE93D66CEF7C6E76580AF841BD385DD +:10107000FE1367EFFC52CA8BC381AF57E3C910FC64 +:10108000E2EC9FC16BC9FE31F41D98C3D817935889 +:101090003BF1F9443D7E0AF8BD057CBF3BDFCAD376 +:1010A0008B2DED6BA03F7C1A78E3A462217E7D1B23 +:1010B000E673AF6B23B57F35F939EAFFD025F832F7 +:1010C000CE0DAE940FF6F88F6E68203F8EE1CFE91B +:1010D000D38F13CC8BF137629E3AF1B7AA65556175 +:1010E000DCCFFECC26E238BB278873C1AAFBC750F1 +:1010F0007E8F9D9424E46795B3200FFA62658D433B +:10110000A17712DD4BC8AF52F5BA8DEE4F1EDB2131 +:10111000EA1F7BBF90F619D773C9FFD613A727E341 +:10112000A18E95854E34A0DE4D83E8FDDA2A794FF5 +:10113000E090C2341DF23A43C8F3632916D19F5799 +:10114000A138BD63058CF4C7634A09F5DF739E358A +:101150009BC59D67EDAFF388383C234E6F0993E73D +:101160009D1C3E28BF271834CEFB20C7BA538C38AD +:101170003D1107A88F0A521C3963226E717F8B972D +:10118000ECA1B1F2FD97FDD670B517F32C15F7DE83 +:10119000F7CBF8BDE312BFF077535C46B38C6B35E9 +:1011A000E6D53494E69528F7C83F8E719B93A47DCD +:1011B000145C8979EC5F1E0C6D10E88FB383F7B374 +:1011C000B6134B517FBAD0938F79DBDEDB04B8CCFA +:1011D0001812E298EDA19337273CF5FEB120ECA45C +:1011E000B574DE553D4DBC1F51E31973EA799EAFCE +:1011F0004C1774D452A0345B44FCD1F3A0DBEC0157 +:10120000026F3505AD49D87F55D24FFCCB1E7B3ED2 +:101210007E7F1D0E7C77FBD25EF6558F9EC49AE9C9 +:10122000FB2FECA757F246603FEDA0F6867F9AEFC2 +:10123000FB57315F637D6F7A05BEAB7FEEA077F51C +:1012400089CE4DFA465FFBCA804BD539DD8A2E3EEA +:101250004A11EB37F8CCB8ACC8EFF24CE71235E9DD +:10126000D1240FF98F7AD71B8EF501A78BF8CE8486 +:1012700041E4F7A99A3686D63596E9F49D8017564B +:101280002FC97FFAF4C39CCD8BF3C35C6D03DFE100 +:1012900070FA202FE362BE63E8653D7049B497AEF3 +:1012A000D41FD3A36F5D4E4FEC1D5EE3E4FB1B6FB9 +:1012B0007B94A8883BD3260732B17EF17B7B9DD8F7 +:1012C0001FD59C0F61DF4F92728A950AFD21C4FFE2 +:1012D000C3FCFEC6DC1127FC5845F17A45A57C67A6 +:1012E000A33AE1BDA41E3B52BECF5199F877B31289 +:1012F000E061AC37516E19F69EF12E7B5FEBCFCBE0 +:1013000097F22DC8067DC1CBB9EC22BDA5E37716B7 +:10131000F24BBF9271CBDC8D9C7E07FD7008F97F8C +:101320005EC9BCED9E37907E6220D905AF06EE7E89 +:1013300012E5037F20CA0DF937285FF82DAB55E57C +:101340002EF8BD4A86BF7D6B019FCF9124763BD29C +:101350007E56DB32858FE32F2D2C5F0D7E60675428 +:101360006FD2358B8699CF7DBF827E389D4F92F1AB +:10137000E77978E2B19CBE56F821F2FC51AB87F7D1 +:101380006B97F7FA72ACACD1C1BF767FB3DB03F8D1 +:10139000BA44BFAF97FDBE1CFD56178AF455A1E4B1 +:1013A0005303301F45A1F95C55A2B4E35DF4EA7420 +:1013B000513EB9FCC7D988A7ACAE34EA7FFD7DD4D5 +:1013C000AF96EFFBA66A11DB60EC37E907396C15C5 +:1013D000F89892EFA4F9EE758FB1E15D8F9BC3C2CF +:1013E0002F75C3C8950AE4D9CD116D38E2038DF588 +:1013F00085F3451CCCB491A2DEB4F06CDB5CD3FA6F +:101400006FD6BAE95DDC9BA79FB282BFFC3E611F2D +:101410004FC13FD4D83E0EE31FBCFF376E1F44F6CA +:1014200061D5CC02DA9737328DBE37B108F1B5E914 +:10143000AC99D2B7B236FACE641D62FF9EEAD9BF2C +:10144000FD7D85B47FEFCC37EDDF8EE4EFD904DF8F +:1014500088DFB77DF131BECF6BF347F4BDCFFAE241 +:10146000DF55D3976C5F5A70317F32ECDE181F6FF7 +:10147000233EF465FDC3C67AF8FABE87F971BBE96D +:1014800000C58573B9007F389FF70A31EFF8751EE4 +:10149000EA853F99F5A47F593FEA432FBAC4F9E1A1 +:1014A00016E0E74ACF0F13CF278F646AC1C211B18C +:1014B000F385FAB79CCEE035488759A11BF7AAC639 +:1014C0008C1CC0DBD54BBF567207D376F0FCC765CA +:1014D000FC7AD18020D1AFDF2EE21CF09E1DFED021 +:1014E0005D456507E929DD19CC033E629CBF3F9E3F +:1014F000C2DB95A39DD8D73DED9DACD1656A5F79E0 +:101500009BE0BF9F3E28FECECBA75E85FC729FCEA0 +:1015100070931C3DFD909DE2CA06D8C57EF419F774 +:1015200053F017741067925F20D6AB1CF2C329A446 +:10153000B30DF435E2114FCB7B6D9F7A43F49EFAE5 +:10154000A70F662AE8776E53F10D18776E536E81F8 +:1015500040AAA8FF7C7E90FA3B1DD43E3E8A754D82 +:10156000718B782D1629831FD061193ED16981DCDA +:1015700058DE7D7438CE99DCF477EDAAFB9F388E67 +:10158000F7E5DE7FC1466FAACE6FBD31AD1DCDAC94 +:101590009A3F3CF462FB617ED41667A72CDC1D9F4A +:1015A0005ED4169FAE4F900F8972E0ED7CF99E5E7F +:1015B0009085C0DFAFD47EF9AAA2750AFA8F52FCDB +:1015C000C402897F87A3A16B075FBFE3E192F29515 +:1015D0004467222E26F3918272E8A3DB24DF7F2E5C +:1015E0003FDC05BA74F42FBD1AF65765FFC9B3097D +:1015F0009FDB928290A79FE22129A45F16F2B32578 +:101600005F94B73CE6082A52DE8EA840DC8BA0E748 +:10161000FAAD425EF29F53BCB3A63981CF16BB66CA +:101620000FA0DDF7C43D9EDAAD77D3DF3FAA631D7F +:1016300074EF61687F415FF59667ECF8BB98058DA4 +:10164000DAE0957CBE0BC32EFABB48D6CFADF4775B +:1016500021110681F812D5A979F06EF7A27DE27CFE +:10166000C3DA5F9C5BADEB5E19467FC6FD25FB0BC5 +:1016700053746CCFAF7D5E4DEF7FDDBDEC367A5796 +:10168000AAE7DD07198F76F7FD3328FFF0B6CFFA0A +:10169000A1DF330FAA1ED0C199C7C774E0EF42DDA6 +:1016A000DDE40EC2CF5ECF1A42E23C267EDD8D8A9B +:1016B000787FE2CFDB7F9F0A3EFF67233ECDD3904A +:1016C0004AFB3BD8906ABEFFB56BBB85DE0FDCD50D +:1016D000B4F4D7A3F8782D536F1D8E757ECD3BDC07 +:1016E00085F7058D7243FFB7A68FFC11F8CED73E64 +:1016F000B7D07EB072F986F8CEEA872753BCE3AE46 +:10170000B0CB8BFD176CDA29EF2F8B7B22BB1E74BD +:1017100012BF2A606D6BA077D6378D23FCD436D5E7 +:1017200012FC07DCE8223D62D78114FAAB8CBB3C8B +:10173000235DF4F77798B5A637BFF3917C0BC1759D +:101740004C7FE137D9F5A678EF719C65F444C8CD9C +:10175000450FAA14777964EA3BC7F1CEB5B19FB8BB +:10176000A6952DF89CF87BA2771AF422E733FF495F +:101770000BBD8B76B97DE5E83F9AE697B8BF76E971 +:1017800021FABB0289FBEC6853B90BFEF1C4FD766C +:10179000675321BD1FC3D609BDAAA6BFF87BA55FAD +:1017A00062DF7DA37FC6C5FB8EE54E8D8B7736F657 +:1017B000999136F8BB710EEC0C31ADD54DEF16504A +:1017C0007CFB3DFDC539F03DFDC57BC8D6BF2FDD97 +:1017D000FD2B0EA7FF931F9985F1FA33AD0C7416FC +:1017E000ECF654C21DE096F179AC48DC77DB6C0B6B +:1017F000AB449FD6C8BFFD8AE7DB9A6A8761BF2FDB +:1018000091FD3D971FB91BFDCC5D1EF9F82003DD4E +:101810000DA17D3FF7C23415E775782F57DCD70E41 +:1018200057E2EFB6DA7C61A24B836F17F3F9EEE86B +:10183000E57C7B537FA11F15FBC2D4CFD2A0C77814 +:10184000776506ECD92716A8F4770A0C3D2C55E2EB +:10185000AE20C8E8BD3CE748018F8291AA3E3E9584 +:10186000C6A17CF74871BF3B79783B43BFC528E7E9 +:1018700074B2D46F09E29E4C41889D32D7E3ED4F9C +:10188000A1BCB844BC8BA83267D0CDC7BA9FFF8B30 +:10189000DECD6B1169830EFED2ACD03E5DCA772AD5 +:1018A000FECE10E2E4497E0E17F273A9DF1E34BFAC +:1018B0003BD49A3DE6C1FE5897A615F98CF78819D6 +:1018C000E22604BF514222DE8CADE97E452D88CD53 +:1018D00073AE335A85B8C144B8CD95F3FBB69CDFDF +:1018E000B5219E2EE97B7E0DFD8371F464CCCFBEC5 +:1018F000D86DA5BFA3335CF035768F4AE770F66CE0 +:10190000BF5BF2638A37CA61E2BECCE3FEDD6407E7 +:1019100025C673F85CFCCBF58A3C9559418F7695CA +:1019200055E39EC47D6A98F49AFB2CCD649F7CA6F7 +:101930000AFD688FE4DBB99EF09E797CBC1CCB1E4F +:101940007A8FAF7F92F6BCD81FF1F74612D7DF3FF0 +:1019500069CC5E82A78C9332F842E66AC99FE7ABF6 +:10196000C49FEFEC54443CCBBAB19AF9EF703FA658 +:10197000363B318FD3FDA51EE1147E98CDD7320FB3 +:10198000FC1F7E16DA6A1910C357BDC497724091C6 +:10199000F788B88032F123E3EF4824CBF85F63DCAB +:1019A0003B4BADED8E5EC6C7CF3C6FA37EF2B68ECD +:1019B00002CCABAF76DB93C43D1DB6261444BD0507 +:1019C00085917700879CD5B38342BE7414006E87DF +:1019D00002C28E3F9414CCC57BA7C6FDA0BEEE010B +:1019E00025EAEF8BA59F8ECB3BDD49FA909DE0B9B0 +:1019F00038D14FF7B27245F7B0AB0E8C09C02EAD9F +:101A00000FDB55E807F5FB847EB0B8518D3A855E53 +:101A10004EEF4704A55FCE807B7F099FF38A168037 +:101A20009EA54FB133F89F5A0A3A9FF80EF482F9F7 +:101A3000A5E4CF8BDDCFF6B8105F13BB9FED71210E +:101A40008EF8E2FBD9BC1E1F4F592EEE5FFC5F27BC +:101A500033B2EB00800000001F8B08000000000084 +:101A6000000BE57D0B7C94C5B5F87CBBDF3E92ECAA +:101A7000269B902781B09B072424844D808882B8C0 +:101A80002480511197870A3E371020EF4468BDB17A +:101A9000C59BC504888A35D48868513708145BA073 +:101AA000C1225288740141AC5AD38ABDA895264AF6 +:101AB000954720015FB4C5FA3FE7CC4CB2DF8628DA +:101AC000BDF77FFFBF7B7FFF583BCE37EFF39A73A5 +:101AD000CE9C996D51EDCBD568C6BCCB9873136382 +:101AE000ACC5A7F3A64530E6B39A1983B485B5FA19 +:101AF0007563A1BC10CAED5041857F21DF6249F7B3 +:101B00003DE260F86766B18CC58EA7FF86FAACB07F +:101B1000D582F56CA1B3AC8C7D8B7FD7057C6F7AB9 +:101B20008A617DDE94B1E6485742541663D62CB7DD +:101B3000C3E2646C7DD2EC7742C74115BD8EB16BB8 +:101B4000A88A9741DF6130A6C8BB6066EC499D9EBC +:101B5000B1C198FD67D3942181795EBFB7BD77CAC3 +:101B6000CC29136192D0B72C57E0FF2CE93A997732 +:101B700085C0BA5659FBCAD578A8DF20F2DEA899ED +:101B80005361CD3E45E6139B5CB08EC7439866BC5F +:101B9000C0F9A941FD1BA07F8B5DB6BFF916ECEF24 +:101BA000C95C99FFC5E32E98FFE3066D7FB846D95F +:101BB0001E3372BC1F249F6C5A0DF58731570E4B94 +:101BC00061EC1F499E09F618C6EC3DB67C40175BD8 +:101BD000F5C1F4A6D13056986D360CCA98E1E21CD6 +:101BE0006607F81AA215970FF3D1CC350CF05D6D8E +:101BF0004FDEA04724A8762FE2D39C60CF7D04DA85 +:101C00004DB5C342A1BF593A1BA586E8C9FE44A8F9 +:101C10006660CE0D6F43FDED499E1B70BCD861D34D +:101C20000F9B107FB346667BA0FFE28BAA8B41BF60 +:101C300069A9469F02F5CCCDCCE5CBEAC3B7C9CCA8 +:101C4000F16D463850BDDB36E961A88D76CF6CEC7E +:101C50004FD2495AB3DD88FDBD606073915E9A4BE7 +:101C600093754A565F79895D47F34A4BD751FF8F89 +:101C7000A4CFCA0F81FED4C829E3F4F6BE7AC9B650 +:101C8000541DAE3F7908AF1716EDD64D867AC9CDF3 +:101C90009E589C47B2EA9987EB4E9EBBC8E8756098 +:101CA000BF403F4077631B7D21931197253A9606ED +:101CB000FDB9ED76FA6EB01517617DC35CB3058989 +:101CC000F719F7E610EC3F2D7D436332F4CB6CAA95 +:101CD00013EBA7C1BAB19EFAC01D3E84AF9CCF23BF +:101CE00036B510E791A7F7DC87EB6783AE716D829D +:101CF000F2A15137163AC3194BD4EFC8590AFDADBA +:101D00005560DD01EB95E9870E8E9706C5EDBD05A3 +:101D1000F9318731E457593ECCC908BF757623CDD8 +:101D2000D7EEB5E59B619C895FB8092E757695DA8B +:101D3000EF533BC26C386FE6BA6F3EAED36DB11352 +:101D40005F239F43FDE83ABB13E9C01CDDF1E8685F +:101D50002C77EA9C69AC8FEFCFFD266EC3233095BC +:101D600030876735E22D4FDFF1C42DB89E475521EE +:101D70001F3A9EFB31D44B9A6DC97D04B20F477751 +:101D80003C5108E9B306E60D89626CB5F321970270 +:101D9000E5FBA2990DE71506688A87F6168BE263C4 +:101DA000D0EF58E0533D8E1BAFF8D2003E1667CF00 +:101DB000BBD8FF8DF6779D58BF40F5EF57B2912BFA +:101DC0005CA9D17944E2E20F2A413E5FE4D2808DE2 +:101DD0003E059A036A69F87610638A93F9ADD06E6E +:101DE0002A733520FE7E837885F9AF35823C81A643 +:101DF0006B75661F0A86B02C97DE0AF97BD395892E +:101E000034BFE876A647BA698242C827A7CF3232E4 +:101E1000C0CFC226CE4FF3051D32D539D83D8AB189 +:101E2000ADF630823F0C4BE97CC6E1C6561B7D9B6C +:101E3000A08BE4468711272DF1C6D8725E0FFB8375 +:101E40007E8C0FB17BDD48B763393E01B054FE0A8A +:101E5000F225F5FB90489B782AC6957C568D7C66CA +:101E6000E772C39C27C687FCFC0EA513E1D65D7202 +:101E7000211CE5C1FC36BDDF0474C71AA7BA3A04B9 +:101E80006F7E9B2C7834B6AFDD33406A21486F6D8E +:101E90007A1FD26B5F3F7F0FB75B06EEE7F7428E8C +:101EA0001C98F75578078CF74CDB0B2108B7B53336 +:101EB000196BA7FD01A81ED221AAFB5D3BADC7F996 +:101EC00093E130CE333FD133A4BFB54ABB4BCFE90A +:101ED0009CF6A57B5367DD7708F2516347E6E2BCC9 +:101EE000E25566D6033D7D26E0127100E006FD3F17 +:101EF000AD008B44F5C1F769654DC212F83EB6904E +:101F0000C333AAD0A5AF44F91DD93315F9B6E706F6 +:101F1000C63640FF7161352D48FF71F7A6E7D6C37D +:101F20003A43C7B07B6741BB2E412709D0260264E4 +:101F300076FC435E07F61771C04DF3E91915EADC2C +:101F40000055E260EDD6284A1B43B01E5BAE60BD73 +:101F500095310AF1F3CA2236F7A52C622335228A7D +:101F6000A7C7205554D660C0762A5343F9F7061CFC +:101F7000E7C970BE9E189DFEDE9959B45F503E0AB7 +:101F8000F87C03CCE51B7B24AD3BCEC40A71BDF8C5 +:101F90001DE907A6E1DA01E571053539387E5C0AED +:101FA0004F1F49F0ABB85F3CC37CEB36215CD38D4F +:101FB0003684EBF4F4C3C7109FD3CDAC558F78743F +:101FC0001ABA3AD2FBF0382D6EB6D101EBEF3EFBD8 +:101FD000E9732BE0DB93CB67CE5B88ED475938BFC5 +:101FE0007B773867E3DEC986447E9A09BC8BED00B7 +:101FF000EE17BA42750A6C48478EA4447420DC1D63 +:102000001C8E086B9600E5CC1E6183791DD93F9C20 +:10201000CA65FEF33FBF6E43A69D80FB37E2679320 +:10202000C9B7C1D1277F2C91B1A4774C18C6BC8801 +:10203000AF9E1D21BE0D4002E7EA9C13A7A4513DAF +:102040003FD57B7904AFA79FE952A89E81F074CA5F +:10205000C0689FF2BE3A8AF811C0558479CBAB7143 +:1020600076AC5FADEBD88EAA84C5C0DC88374B0B4D +:10207000D787243D5914F84EF4EBB7A17E730EF5C3 +:102080001AE27F57FCEC517DF51A841CAF30FA87B9 +:10209000A37E23DBC9FC6013AB91F948C8EF15FBA5 +:1020A0005D4528CFAF367BF21C80DF5D465642FD92 +:1020B00084C3774B005C72545A772F5C36C5F95055 +:1020C0002E235C30DFF398550BB7A747F072DC7412 +:1020D000B1FDC30AB5FF245DE73766135CE6BE4475 +:1020E000F2C66F9B19B00E098705EB3EFB8665F7BC +:1020F000C16381DBD8A9CFEE0F0FD96E416EF174A9 +:1021000006F4B4A06CD90C4C83F7B3DE7A8D26A10B +:10211000ECC037F87736CE19D6FD55C8642312D3F4 +:10212000FD3F9D6944BA5DC46A282D614D94A29813 +:10213000D2819E666F54693DF62D8ACFEEE0624FE4 +:1021400047BAA84D87DFCB410C3F83A2DB0B52E39C +:102150002AF8ACE814D4AFEC0D908F83693FAC7AC9 +:1021600071FF693916E653A0DEAA68D84001C4ABF6 +:102170001A740437EF6ABE0F41BFF16E589FB74122 +:10218000E7C27E963AF444CF8F3AC47E0B2A22CD22 +:1021900047A40D062EC7E578CB99CE8FA94EE1E96D +:1021A0002AD4072CFDE121FB6B30D498515FE9194B +:1021B000AAB321DD7E6574CDC5F57C15359CA1BE25 +:1021C000D260AD692CE4E5C4535F85F80BA93C47A8 +:1021D000C7155C6433D46FDE0F6941BC973AB8DE33 +:1021E000140CEF854DDAFCE275DA7CA94F9B5FC0D9 +:1021F0003CBF8A87A5976F09AAE7E0FAE27CE6244C +:10220000FC3418EC7F74201D3EAC329CFFF2211C84 +:102210006EBAA13C4D8E9C3297F6C548234BA3F96C +:10222000F2F927E7442938DF8648CE0FFFD5F906B3 +:10223000CFF309C770AE4781F8C4F11A800F04BC10 +:10224000486F5BB0D5F402CA8105567B38AEE38C8B +:10225000D2934EFBD063563B971736DA67E7DB78AD +:102260009F5B855CFB44716EF6433BDDE3DB1EC682 +:102270007D6CC1A3FA5CD48F0B665B48DEEC396DD4 +:10228000F199A07D09C02E01E4F51EE751D29F838C +:10229000D7077F7655EEDB80B2F9A0AF87A0BE13DB +:1022A000588FF669A01329A7A1CFBFC4B8DB504E41 +:1022B00003F965AA30FEA7A7429D08C727759FECC2 +:1022C000787D2CC949927F55CB7A363368BF33C6A7 +:1022D0007310EB773DF0C134C5DEB7FEEE57471003 +:1022E000BD8C6D30F5F58FFFB73A208FE337C222F2 +:1022F000AE86B459FBBD647D503BF64F53E03CA520 +:10230000DEB2D6E8C9403DF419775E1ECE67ADA1B6 +:10231000A910F9FDDB04CF7B28F74E4C751FD67151 +:10232000BE1B8EFACDBE4B0B52C84E3D6676A21E2A +:10233000827A2CCAC926A19FC79B9917F74FA9DF9C +:102340004A3D2A98BF3A1C5C5F38EF70DD4F7AC770 +:10235000259815C05B2FF426B3E52517EA7BAC4D15 +:10236000B1E1765265679D8B417E59DA1C5EC4638C +:10237000753C7322BCAA2CBACEABE07B9A45E71D14 +:102380008A746CD7F9908EAB9A997731E0CB6C70E8 +:10239000F9131D54CF7B5536DA539C4EE43CAA7694 +:1023A000CF641E0BCD6309EAD1689F2C84FE0D60BB +:1023B00077E09F41D82786B946E2F7B1D1521FF4A2 +:1023C000D1FCD39A3DBDF608D971CCAD73F37DD85D +:1023D000F669581FBCBF71B81293A1FE5FF103EC00 +:1023E000BBEFC4BBBE45BC7F89FBF368689FCCE7ED +:1023F00075E4E86CDA87BF646EB12FDF16817A9BD3 +:10240000CC7FAAF7DC6F037E58CCBC24974B998F06 +:1024100052D63C88E86011ECBB2AC07FD11CD7FBA8 +:10242000A84F205FFA83F832305FC1DAB91C07FE8B +:10243000F407D04F05EAF700D74A33F38761DAAAE9 +:102440006D57C57AA85DF5EE6F4D7E0DDF70BA8AC7 +:10245000D32FC9A9413805D90752DF9776005BD938 +:102460007388E8EB0AEB9DB237C5A25ED0A8F0F105 +:10247000A7E92D2E33C0BFF2311DF13574347D5CD8 +:102480001EEE4F9C8EAAEDD34EE1BE170D6C8A74E2 +:1024900063DEA5F73DE4A0FA4E3FE42B5FB5A2470B +:1024A00002ECCE92E9B8AF96FA0C1F7704ACA78C79 +:1024B000ED988622E64BF69611F9A37C8BB6BCB25A +:1024C000559BAF66EAC7BD7A1B8C53FBE79609AFF5 +:1024D00005F0E175C9D668D4CF606E8E6F11EEFA43 +:1024E000BB223C97E10F997E5DE79BF09A81B14951 +:1024F0008A6B5A32E9E73E23F26199CA5C97B34F7F +:102500009F4EE2FAFE41CBE7833C01E5F9595EF2CA +:102510003FE4E55F9E1FE724737E0C6B17FAABEA7E +:10252000659101ED076A7777B28EDA1D34F2F2C752 +:10253000AD612E8463BC91359A73FBEAC5EB588379 +:10254000390AFD0CEE7B711D66BBF42F7819EA8FFA +:10255000DE186E5F48FB3451AF23BC26EACD1BEA80 +:10256000616A57093BE6FBE8242CABC780F0443B8B +:102570001EE90FB6652F83FE8C3A90ABD82FF0245E +:10258000DA05EB439817E703E50CF576531C975FE4 +:102590004664FB5C6CCFFC0AA6A09BE0F71F27BB40 +:1025A000EF4F26B9EECA26FE16F3A81274D63B8F5B +:1025B000DD8ADF1ADE47AFE88FC27D803599487F1C +:1025C0002152A17C02E9BDC7310F7CFB6182BB9E19 +:1025D000F02BF4C4058F0F25FB9ED50E2279B1CACE +:1025E000CAED0E98B706AE92DFD62B1CBE79F9ED78 +:1025F000B4CFF53C083ABE12E09710786D4A5634D5 +:10260000F2EF92F067FC31D9B506C7EF7ADF6C467E +:102610007FE3D8B19C5FAADC16F2235501FFE3BC2F +:10262000AA9631D2CFAA84BDFD8F24CFCFB0DDAA28 +:102630000F2C5E7D04CAD316F2C318A23D63502C42 +:10264000A5E0F7D1E4AF7A1EE157BCCC737E3FEB37 +:10265000F357E57D5BB0B290CFD786FA5334EAE307 +:102660000174E74FE6FA924C5F0D9A3FFAD0089E4C +:10267000AD7A826F98BD9DFC1A553BB93291A77710 +:10268000CD43BB83954731B493AA764ECE3984F9B6 +:10269000D6901CF413E57D38DD86FA5D574E941311 +:1026A000E71BE6F0BC8CEB49D27794A27CB18EF5A7 +:1026B00027FD0CFA1BE6B690DF2398FE24DDC5014A +:1026C000BD22BCE2EE34FB905E7BFD1A06E631A72C +:1026D000F4D1E56621E787897D64D832375B68E904 +:1026E000CB5BA2399EE0BB0EE173DE317533CE6762 +:1026F0007332F71B2D89D7DB4F004938CCA09524C6 +:10270000F7E74707709605E44D2D147F8B20F042C4 +:102710003E405FB9D0A4909DB40414A8DADCBEF9A1 +:10272000C8F64BE28DD47FD84595E09A6CE37E44A1 +:102730006BA38033E01FE13CB1A7BD2002D69BDA3A +:10274000EC27FF4C088E9580A3743C3A1AFD578302 +:10275000D489E83F78AE36F700FA75D487DBAF4509 +:10276000F8DA9B6CF9E84255BF51DDE4AF619CCECD +:102770008A9B6DA4EF30B5261DED974B02CFFF4825 +:10278000729DC0F5E7BF67A0F1BF7A8CEB6FCD49B2 +:1027900015C322A1DD27EF035D2A03CB4F2F3B603A +:1027A000463D3F797532F98BAC8DDCBFC352814019 +:1027B00060BEEA637FF6F2F91D1D8A53894DB110A0 +:1027C0003F613BB41F1634D88D083E4733D3E1BC7C +:1027D000ADAB67E904F21314284F6B9CA343FF4B86 +:1027E0009AF01B058F6F4DE1EBF8ED253DF9DD7596 +:1027F00066EEF7ADB447B5E8B9DD4874539912DD1C +:1028000082FAAE3185CB5343D364F28707EB2B9525 +:102810003B8B485F09963F52EE48BAFBADCAFD6953 +:10282000BF65D29FC6E9AFC1C0E1EDFD4647F26783 +:1028300018E3FB48CAE397123C840FE9D7F251AA88 +:102840001AEC2BE351862DEF98E485AF0B5647EA3F +:10285000AAB2B01FE712EAE7310BA37E56271F4842 +:10286000473E69B431C58EFD2D1E867CC83E34318D +:10287000A417F5318B0EE5B9BAC6855F991A199B75 +:102880004FF927210FF54F261B68BCE3821E1B94CE +:102890001E85F41AE6CAC1FDEE8FC99E8C9471C2E2 +:1028A000BF8FFC5B1B4A7A9E55E5FAB2B5F6836D85 +:1028B000CB21FF9CB0D3F31FCF9A45F4F2B0AA9876 +:1028C00060FCAF22FF40F5BE1AC714D4E3C6093836 +:1028D0005F865E1219E035F955BD1BF9513570BAA6 +:1028E000571F8E6EC176BE58CFF81498DFB50D7E97 +:1028F0005255F7D94E3C5168EF8F8F81F683821481 +:10290000BBD8C7BC54BF5ACA913685E48853C73C6C +:10291000AD5CBF0C413E380C08C2FAB5E6F06C94D1 +:10292000CB5F87F0D49BCFE7E53D1EE2AB27BDB37D +:10293000E62AF23FB29AD1984687423D90BB6F9DFE +:10294000E5FE9F9962DC6185208F400ED4E038005F +:10295000A73B53B8FF6A6F1473D960FF1816E2994A +:1029600083EBABEDC889477AD91B1E9B8F7A202C4D +:102970002A09F7BD8F857F24186EC34226CF43FCFA +:10298000BC25EC451CD701E347D516B8519E80FE07 +:10299000457CD633D348FE90A80726D3F7BD8AEFEF +:1029A000E945B88E5BB91FAB79A62B21341AD358F1 +:1029B0001DD2EDAE7FEAB99F04145DDCCF0A4A5CFC +:1029C0000968170C761B7528070617D6FCE541F435 +:1029D00047BE6570E29946376B4A227DB691FB4F40 +:1029E000A51F3A1FFDA5B00E7DFC9889C530EE4F9E +:1029F00015FBD3C548BFA5625C2BF733341701E143 +:102A0000C3FC9A1D1CBECD0BEDC43FBDFE9E4AD635 +:102A1000EBCFC17DA5BBC626FD60BCFC6E59DE4177 +:102A2000FB7EF778BB0DE560AFBF679E91D6714A1C +:102A3000D095775EBAF07F717F51F7DCC1FC3CCF57 +:102A40003CD515E8FFEB5605DFA6EAC8FFDB2DCE27 +:102A5000079F65BE0CE4936E26FA2BE17CCD547E75 +:102A60005ED85DC8CF11D878A719E9A2BBF75CB0D2 +:102A7000273CD04F24BFCB73C0D8FACBEB7BD7A673 +:102A8000F07DF86CACEB29C4B7A46349F77B73E322 +:102A9000F2D1EE1888FEDF657C9F783BC5ED433AA6 +:102AA0009B6276163F099F0E0A3F1D9BCEED18A62E +:102AB0007A3CB89EF706A7E7203C82E721E5D45E82 +:102AC000D12E339199D19E07DEF5225E46EE1A494A +:102AD000FBC9AF049F238BA1BF60A4D80B33E35A7B +:102AE000A2904EFA8FEB1E356BD4778C97E2DA45C5 +:102AF000EB16F507DA77109DB87EA3B1F53EF20329 +:102B0000565A9C481747B108DABD709BC98F7EDEC4 +:102B10006E83A511F9F358D83D87630064FBCD9E01 +:102B2000D7B0FFB9B7DFB012F3CA8141F62580876D +:102B3000EEA28E3C9C6F81D97304CB2BCC9E61B1ED +:102B4000B0B4B3433D2322504EBA0789FDD73DCAE6 +:102B50007DD9F9F3F914287CFCA346CF1F10FE079A +:102B6000950EAB3385E895DA314B0CF5735CF0F9D3 +:102B70007E836BE27998FFFE35C372EA613E05E120 +:102B8000EFDF598DFBF5537139A40F09B81C14EB15 +:102B90005AA873C7FAF59AF91EC7712A6C45C31271 +:102BA000808ECF1AC47C2D62BEAA73C877CD1775EC +:102BB00029A2FB0715A27BFA83FC2BDE48E21393C4 +:102BC000AEBE85F8AAC8EC44BE5A1F0AAC037ACD43 +:102BD0003B623E604F30D48BE13BE9CD9B98732440 +:102BE000F276A289F34BE22A85E4A7F497153377AE +:102BF00012AA8EFF48F17C85F3FE4BD83FC7A1CBCC +:102C0000CE5D60A5713BDE0FE5FBF6443EFFEFC3F2 +:102C10003F63AB75E8D79825FC54B3CE1AC93E5A2A +:102C200028F4A55998C2FC66339701C7BF95790C63 +:102C3000C8CFB7332FA5F3988FD23B999FCAEF66C1 +:102C40001D94FF4358F6D05A80FFCCA746A4A17F1D +:102C50002A00DE96544E1FF74673FAF82C8EFC03BA +:102C6000315744AF33057D007F46633FC09FA9398C +:102C7000C9017C322546E0ADA33E02E03733D69150 +:102C800083E78BD75DE2789976C246F0D9AF80842E +:102C9000CCEDA30F1014960480C3F50285ED17F850 +:102CA000FE74BDAB9CFCD3475CCBA3A3619E53F5E4 +:102CB00016C24BBB53EFC37D7BB3D241E725AF2F89 +:102CC000F73444C2F7D73314673DB4BF217A668422 +:102CD0001FFB418B0AC66DCF527CB83FCF58C7ED62 +:102CE000FDC221863E3B1CFEBD31559B9FEED27737 +:102CF000E279D9F42CADFD3E83AD3E8FFEF419DFB1 +:102D000063C78F4F053B1EFD3B23D948F2A75DB932 +:102D10001D7F5D2AF70F6AEC78865E46904FB78478 +:102D20007039DA3EF1E0846E58EFE76D0E82E29B77 +:102D3000195C8FBC2FD57D3DE2E59CA16311C2E5F6 +:102D4000E33A80EC08C64ED481620934FD699D8D5A +:102D5000F227EBE2293D5D67A7B4AB2E9DCACFD524 +:102D60003929FFD354D72D388F55211C0F72FCA55C +:102D7000824E570DCD7BCA0DE3AF7ACB40F992D688 +:102D8000A669B8DCA5433F7E280CE0BDF44585FC70 +:102D900026E56D2E23C6542C7CCDB312B795C56F96 +:102DA00075CC4031527951611E609149E9EEBB7199 +:102DB000BEE3DE3B118BF0F9AC6E3CCDE3549D8B52 +:102DC000E671A6AE90D26DA9EEF958CFD5D6B9323C +:102DD0001EFABB796BA79A08E9549742FAF12417B7 +:102DE000F3F9000FEB0C7C5F5897607622DF4E1EE4 +:102DF00035EBD91F3094CB9E0A5CCFAD510BA60E9C +:102E0000423A185FA462BDDB812E312FE9F6FBF94F +:102E100095C3A152D0C4D97D0AC1E7DD9D7A9AC776 +:102E20008563A1743E7E61E7DE72CA77853A515FA1 +:102E300090F566BF9C1287F6C1929733E3D0DE38D7 +:102E400003F861B0DE55A2FC95AD4A2BDAC979DBF7 +:102E50002393904ECF44B51EFF119D1F18C92F0C10 +:102E600086E9A7CFA07C1B12EF44BE3A27E4306866 +:102E70006C61B85F5719A57EE8C9C4FC9950BE4F74 +:102E8000E3387680E3DEA4C1B4FFA62BAA0EEDBB27 +:102E9000BD2FCD74D2393DE3E3EC7A86F7BB79DB05 +:102EA000D317F6D0783EE2CF17B73F9BFC63C8BD7F +:102EB000B8E3E1D03B19EDAB6C3CC8A5BD6BC25C7F +:102EC00038CFBD06E7F15A94C3CF5AC84FF3F39FEA +:102ED0003CF0F16E4C1FABCC7D00D24DA951D44FCC +:102EE000F14FE74D4B807A9B77B11C648B4C807916 +:102EF00022CC236BDDF90309305EB62FB200C36923 +:102F00009C5B720E0E86FC2F5F51FCE857CF6D6DF7 +:102F1000D9A0A0EFE5D20B8351CFFC65AA5DA39F9A +:102F2000670E2D3C42E7A241FB7856F3F97CEC6F2B +:102F3000DBE0D62591C00F2395D6D3CB1D48BF7FAC +:102F4000CA253B49F8475E6E9BFD2E5F973701F51A +:102F5000506F9191FCD7B87C03E4CFEE4C217D619A +:102F600097CE4BFB8977BED9897AD459B7F769A434 +:102F7000A34AA88F7A60658E37FC1AB4D73E4A758B +:102F800002C5B0A1CF5D5F88F0A9DAF9E4B4C15001 +:102F9000EFEC44EE972E79F9F369642F8355897627 +:102FA000CAD99DF5B17740BB47B3F2290EC4AD6FC6 +:102FB000A57158351FE729B14FB18E6C3AD7205211 +:102FC000B453D48119BF47B545EE4F647DF8AA6E5E +:102FD0005BEE403FFC588FD9897EE7750E6F02FA91 +:102FE000BBE4BE07FBD7DBC80F0946D1AF6D36E99E +:102FF000EF57BA6F493F98ECEF2923F7CB497FD9B8 +:103000007A23DF673781BC403A93FB2C8CFB51EA73 +:10301000B8007F1B6C063930CFC4A74CE417B9D277 +:10302000F1A55E542DEC987CB15FCE1D54FF6A076C +:10303000ACF7B4D9730AD7B790B9B8FF5A75DA515B +:103040009EFEC1EC3A8DDF2BCC3D49B806D80FCFA0 +:10305000E17CAAF4A02FA504E84BE62BDB0F2F9907 +:103060005D5F90BCBEC2FAC17274E9973A96037470 +:10307000B0F44913D915F5C27EABB7E699513EB00D +:10308000D7741587615FBC96B7ECED6FA93597E4EF +:1030900007EE759783D73EE0770FC8153FC87DCF01 +:1030A00008ACD45E8FFE1817FCCF0A7433E92218DF +:1030B0007801FB5A707BC053541ACC77320BD3D4AF +:1030C00073B148F2CB324BD47F6EBD62DE1305DEA6 +:1030D000265E381686F270E997B92417075ACFABE7 +:1030E000623DBFC5F540FA5A863B15E777ED1736C6 +:1030F00015F97892AA679E80FD17E63F320DF78B8F +:103100004BA19AF9F7D2F915CEFF870A8F5F60E7D6 +:10311000795C509BB0CBDA4AB3C8EEDB85762BDA0C +:1031200055B38CA47FB659C1DE84FA6D6FC710FF0A +:10313000EF95FE94221E97D31622DA6F8A237D64C0 +:10314000B08997B338C6CB65FFF362A97F90B33CD3 +:103150000E625E288DDFDFFE3D98F92BB29BCDB469 +:103160003F34E7703BB179F908EA5FDAB383F535AC +:103170006F8E4279531F46F2B9D9BAA13119EB3D8E +:10318000A877A21C6976F8EF44BBB9F93C3FB706B3 +:103190007B969F8BAB5E2BC61980FDDA9B47FB07A6 +:1031A000EC55CAF7C523403D80EBFB027FC7546E48 +:1031B0002F1E433B74749FDFFE586F1C06EFC7330E +:1031C000234C457A0FFE2EF120BF4BBBF30303D7F0 +:1031D000339B239B62F0BCAB3ACDB308F13C6FE16B +:1031E000A6104F805F6488EA2EC1EF9F146F7A119A +:1031F000FDA0AC98DB631FC8B892BF713B79A2B148 +:10320000E3A6DB000E13FFAE53BCF6FEF8EFB5EB02 +:103210001FD469E2349EDF1827EC7A8EEF9EB7F553 +:103220004E8A9991E596E122AE45D1C4BF605C0B10 +:10323000FABDBC2F8FA0F10B6771FDF4C2325D0B9C +:10324000FA2BFC223EE679E1F7F3B65909EFCF0BF2 +:1032500038DE2BE4DCF3E21CD8DB6AE0768FEA4F41 +:10326000ACC671DB32C89EF7334177BBC344B93D6E +:1032700002F3F56F8C6138AF6E29671411CF22E22B +:103280005D9E17F0FE17E25FD6221F0E18FF322058 +:10329000DC609F40BBF701BDC65FF27CCD280937DB +:1032A000DEFE691E57D4EB0FA974083BCFF7F07010 +:1032B000ACDF1643EB3DB7EC93BC7576825BF66EE4 +:1032C000ACB7D344742EE126F1FA7C2F9DF584101F +:1032D000FD19B99FEBB8ADC31A789E75DCFDA91531 +:1032E000E5D19F6BF57EE377C4C5DC25E26DEE1278 +:1032F0007136772DFBF82EDCEFEF2AB9740F7DAF16 +:10330000D0C60D1C4F73ED41BAEC85CF299D263EEA +:1033100068CFC6DEF8200E1F6B6F398F4F389925A6 +:10332000E38378FCD0A950011F11FFFDB283D6CDF5 +:1033300004FEF7ACE3FDC9F9EE51F9FAF7F8B4F180 +:10334000527B7AFD3E3ED223255CEA6D4E73205CB3 +:10335000FE12E3398AF87EC8926BC673E79288FC46 +:1033600023E837AB52613F06383F31DCF33E964BE2 +:103370003D45FA2FBB0CED8775B88E6557B64F9655 +:1033800087B65529C0B7A7DB36EDC214E643F06017 +:103390002F7139DA65F387E3BCCAE1D3A4283C87EF +:1033A000051E8EE279D44B83E3498835637939EA87 +:1033B00003E5AD7A574838E68D7DF5A05F8F8EE343 +:1033C000816DE7FE8432D61ABB5C4F7698793CE873 +:1033D00031E776FF3A1CE54C99C5625E867A535018 +:1033E0007C47D9CE55ED29D9FDBFF79F4F907CD9A9 +:1033F000A1D7D04157001D50798C51F0899FFC72A4 +:10340000FDE5AF3F3C301EAC4BE0B92B08CF5DBDB6 +:1034100078F66BFC7B5DAD9F24E1BE7E4EDAF14E0B +:103420007E2E59FE2B7ECEB842C8DDF241AD790822 +:10343000F7C17AED399C4CCBCD4C9D1870FE589E4F +:10344000CECC8817E9872B7733F59A80B8CF721FD7 +:1034500033637E970EE48785F0A80A7C523F509F25 +:10346000F0596666E649902FC3FE30D5F9C88F2B18 +:10347000E7D56F1E41F0CE18CEFD922BA41CB11AD9 +:10348000855C74C623DC46AC336AEA9FB31AEFC589 +:10349000FB03193EED77D9FFB8E10AE9D9E9817854 +:1034A000760C0C9709C3B97DFE8B5FF4D6D7F33841 +:1034B0001B50E3255DDAB95D65C0F9BD6F94FEACC4 +:1034C0001F2482FE578EB491DC07A75D399EC42865 +:1034D00048CFE9B8DCDD1509F92CD463F9F832DFFF +:1034E0000BF7203A7FE87D23C161D7DB8616F4A372 +:1034F0002C1CCEFDA06DA2FFD3759E31270CE82FAA +:10350000A8C9284EEB5BC7A2753966A493C5EB73B7 +:10351000CCF303FC19F55B0E8623BC465A74E437E2 +:1035200039BD650CC5899DB6E8589882E563CC58CD +:10353000DE6539F07B3B7C5FB43E3237F01EC0E283 +:10354000753FCC280E8073E6162DDC47B56AF3A3D1 +:10355000776BF3D5C319C1F75F6D97E3D7E6C71C47 +:10356000D1E6598F36EEE895F1EED937E379CF7A87 +:10357000BD133F9558745E13F0BB6AE17CCCB6EA8C +:10358000E9DCA9C4C6E38B4EEE5A95877A7BF947EE +:10359000C587D13E5B7C94C327381EAEE4D8E1BF1B +:1035A000A11D0EF855287E6AB342723C384E4EFA81 +:1035B00085FACB93E5D28F9D1E484FC1783F23E219 +:1035C000812A6ACBC7E0F98A84FFD5AD6B28DEBDBE +:1035D00074BA76FDE5AACA965D569E7AB97E6F7179 +:1035E000D9113E45E25E5167FDED37E2FED7797BAA +:1035F000E129DC17AEA92D609F8C8182D57F98864A +:10360000F0297A5461284F8A7E3DE2358A3B15F6CF +:10361000D96271BE651B6FDFDD01F516FA14D24B5E +:10362000E707C5B715AF0E9A47505CDBE2DDFBFF3D +:1036300086E306C7B7C938A8B28DDF9AB4716FDCCC +:10364000FEBFA6AD458FEB5F28E7EB9D44F714F86E +:1036500055A1BEF3B21398B91AE3B3DC3B87C3FAA2 +:10366000AF69E6ED2A198FBB92F1508B4C60178041 +:103670009C3A6235125D7CBE2E82FC959F5367900A +:10368000AEE7FEC8CA413C5FF98242F66FA5D07B27 +:103690002A7FCEFDCE8B541ECF8EF4E20A9877851A +:1036A000580FD247E077D6C4ED67199F85715BAE9E +:1036B00080F3FD0A5817C6B363BC5660BBC078AD33 +:1036C000C0EF01FE71B2E7A57FE17983EFC5CD3090 +:1036D0004FFDBF873A516F66CC1D8A7409F286DBB5 +:1036E0004333B9FCEA6FAF2C15FAB281F465B057D9 +:1036F00068BDCDA56964EF0C469988FBEFCF4DD42A +:10370000BE58E77B3104BE19841D53ACE3FEBEE214 +:103710003B8C049FE6989748EF697E92FB1BD1771C +:103720008F7A64F39A11DA73B9DE386BD770F4EFDD +:10373000DCB126C1A9DD5FE5B99C2FE6F2FBAB2F1A +:1037400006F7890FF03F01BE778878EB3B449CB5C4 +:10375000B46FEEE88DB3E6FD48B8057F977C27BFD0 +:103760004BFBE6DB040F1B11709EDF1CE90BC1381D +:1037700049567265E7499B84FED0B32684D67342CE +:10378000E1F199C5A1EE47AE43B8AD4D4E46B8D96B +:1037900046F0FD2B2FDF35DCC6EBD3F993C437732E +:1037A000B986A3DD72624D482EC249C6771DCFE1AE +:1037B000FB49D8581E879220FA4918A1D3A4F1A139 +:1037C0003C7EEAC4547E2E611DEB36A2DEB4C9CE27 +:1037D000E3948A8DEEDF5D1B301F18D78C704A1181 +:1037E000FD49B821BE510F29FEA9899F63AB9E14E4 +:1037F000CCDF752C9DF07742EC6F122F8C717BEC37 +:103800008E7762E89E9C948BDF4F97F21CD9407AAA +:10381000582F5D6EE2767464AF1DCDF5707627F794 +:1038200007344F15E7C2405FF25CF8EF989F6AF7E4 +:1038300069ED68A01F6BA01DFDDD74D64B1F4174A0 +:10384000164C3703D1D315D0D9CDDF4567D07E9C38 +:10385000DB3A309D55BEB26D9717CF277EF56438A1 +:10386000837AA7D4A65827DA7F9B5684BB203DA92C +:103870007AC3B1BF533E7DE1E5E25E1E1DA108FFA4 +:1038800090CBA2049C0F9FFEC5A333280E6393C167 +:1038900086A2B07A8B89EE2D55ED2CA5F84BC87712 +:1038A000F2FC2A3A87A9DE1D148FF9F32763ED1481 +:1038B0005FEB4DC4F81CD08B295EA36AA381E2396B +:1038C000AB8EEA9D4816D5AC6725CE2FB83DCEE32A +:1038D00022D06D75ABBEC818D1BF1C2884F6DFEAB4 +:1038E0009D8F9E477F73703C6789C2F787E0F3A086 +:1038F0001F8D10E74157B1AB50EF03B838FD488F2B +:10390000309F348E76A2DFFA177FBE7D0FCCF3D4C2 +:10391000077139E81AEADAF86638DEAB94E743F261 +:10392000BCACAB3525C27319B8CAF49C3857E8C390 +:103930001B97DBF6DD0AFA9A306E9AD20A833F7C37 +:10394000028C57D162207F55C5B617363F83F2F7F8 +:103950007D13DD932CDF76E84FD7A01DB0C3103D5B +:103960009D2FC7A2C4F6E1ABDACEFDBB123F65BF07 +:103970003E64B48FE2DF516F90782ADFB1DFC84632 +:10398000F5876741EB7E6387E532F86AED9C46FE7A +:10399000CD17BF3622BF9DDAA7B03847FFF6259B6B +:1039A000DE0CC77A125FBDF8EB8737FF8C3D63A949 +:1039B0001EC55B0C84BF3BD1574AF46D65183F565A +:1039C000F281C9371DF1FA93A544E79FA9359CCE32 +:1039D0009F5D118BFA6C89C11B6BA3947F2F79EECD +:1039E0008782FE5C09FC7E8B3701D7B370FDADB4D6 +:1039F0009E45CC437457F22C8F1FFA12ECB41D97DE +:103A0000C1234BE7FCF1D90613DDEFFE4CC4277B45 +:103A1000FFA817F120F7917EF243B1468AD883FCC4 +:103A200097424FFDD388DEB80673A01D5EBD715569 +:103A30003BE2E3F450571CF9CF98EA157052301E60 +:103A400050FF87A9711C1FFC7E03B503BDA100BFF9 +:103A500063FD7603DD730868477093E3FF408C0FC6 +:103A6000F30E457FC067B1DC3E6178148B74A3F020 +:103A70003655CB4AA6DB01FED9629DBD7CBEF16105 +:103A8000CED782CFBF38CAE547956F6621F17FBB9D +:103A9000C11F87F57CFBE728C4FFC171E702FF1B4C +:103AA0000D827FB5E5302F550984E73E6EE72F6A1A +:103AB0000E886F47388973DE6AD09FFDE981EB1469 +:103AC000E7D5E23C77B1E0F760FC05F3FFDF47881C +:103AD000B86EC1FFB23D5B7FF973C73E7EF7127CC3 +:103AE0002A40BFB0219FBE6F22BDA6628D9EE223F9 +:103AF0003F597D30F66AA0EB33AD923FB5F2B497F3 +:103B00003F97F1F8F592973629489FC1FC79A6C4F2 +:103B1000A75C963FE1FB65F9B384FDDF95A7BDF097 +:103B2000D6F2E3E201E4696ABA169E5FB2AC880994 +:103B300058682B1A46FEFD20B84A7806CBC5DF8EA2 +:103B4000B05F562E320CC50980A3849FA44FC63C9B +:103B5000344E2FDD4AFA94FB532F7D06AF570BC727 +:103B6000E0F25342FEB87FC3E3592BDA14716FC100 +:103B70007B38712CF1A38BC40B6B3A9C181D98F702 +:103B800005E55B83EABB82F2EEA0FA9EA07C8DA6DF +:103B90007EC5EE83461ED7EAD7D433D5DE44F6522F +:103BA0007F3DC1C7CF21779E377A912E86F4507C16 +:103BB000ADE121E6C57BDB3DAF727F57B7BD271C6A +:103BC000F59115215C2FECB6897C24CFF7C41857EA +:103BD000A2FC93DF7B42B8FFB9DBDD131E19E07F47 +:103BE000E86CD3D37DE90E1FF76FF59F4F3DC1B54C +:103BF00043F8BFA6EA2D49B56331DE3985EE7F5D16 +:103C00006830887C1ADD5B967AE35F99FB4F13700E +:103C10009EA1DC5FCEBC2E15E354167094B1923792 +:103C2000EAC3D1BE5FD0C6E3548A576BF1B9C8323C +:103C300027C26F47F9A28D2F598CF61BDE935CAF1C +:103C4000FD5E26F8A02C880F3CC2EF1FCC072BD2BC +:103C5000855E91C372843F89CEDB9608393C559FBF +:103C600075CB5C8077F7113D3341FE429B9EADC41E +:103C7000756E55485FC58B15C85FD2FE93F0EA425A +:103C80003E1931B07ED1F5F24779180F50B1EBC330 +:103C9000EC9F41DAB5EBFDE17B31FFCA7F247DC8A3 +:103CA000FAD72FD8F7B77B50DE76EF3331A4E7EEA3 +:103CB0007DAF27FD18F37B4C64E7773F64E2E7199B +:103CC000FBACE43FE91ECAF5FAFA57BFCEEEA0FD01 +:103CD00083DFD36F4D37121E2FB4FDE338DA791727 +:103CE000DA6055A817EC0B237EA9DE1342F117DD2D +:103CF000AF7E9D17186FF35F5D8F8CABE8B6F2FB5C +:103D0000E1DD91DC0EA8DE7BF50B184F50B973BFD7 +:103D100071019417FCF69B6C9497DD2F717DE79CE5 +:103D2000A1E339F4A5EE4DBFA9D990807E4546EFB9 +:103D300083CCC978740EF2457FB8703874EFE3F61F +:103D400004C0A504E5FC40F0F8633ABF87FA3F0FD2 +:103D50001EE7EFE1F2EB2A86F1077D70515CFCBBB8 +:103D6000D5675668FDFCFBBEAFB351BE7CDF7A7BE6 +:103D7000FE3F5B6F78C6FFD4F5727A5F9B6EE7718A +:103D8000A34174DF9FAE5FB99FF2DBAD4E9AEF1592 +:103D9000F27B76C6FF547EFFEFC1F7F4FFB5F87EE5 +:103DA00043E0DB6A433F67F7ABDF24B17F61DDE5CA +:103DB000FF4BD72DF5F37CBDF3480ED47F93B51E92 +:103DC000753A48DB203DA35E9C0BBC1EEFE0EF384C +:103DD000093BA840D8416B33B8BFAB9EE9E8BCAE05 +:103DE000C05C4E7A66C190C7CEF378361DCDE775BC +:103DF000F3B59BF93B5E5ABB6FCA10BD1FCF1F0EB8 +:103E00002E87F1A1DE41ABCE56CFBF77E2F7694EE8 +:103E1000AEDF4F1B7213C5BD1698DF9E8B7EE12966 +:103E200016AD5D7453909D73835D5B5EC85E8A467C +:103E3000BF5B619681DED89A86F503ECBFFB33F851 +:103E4000BB0237B0A6069BE53F0517B25355019755 +:103E5000834170E90F070147C6F59C60B8A99647F2 +:103E6000DA296560A7F275917D2BED5409BF60B822 +:103E70003161F7AA34641F7CD521FCBC38A03F5ABD +:103E8000772F3C05BCFF55B806E3E7FBE0FC34C2E6 +:103E9000795C7F380F517354E4A76B853E3E458DA6 +:103EA000E4F921ED7A37C1CF47ED0ABE70AAA877B1 +:103EB0004CB644AA14C7651FDAF71E4C2263892A40 +:103EC000F39AD0CF6FEB780DF9AEE80913BDB73296 +:103ED0004415F76155EEE7066EF586E6527D97319B +:103EE0000AEB2D667873AB289139155E9FE1FB399B +:103EF00078690EDFFFC1B32F6C57843A34D67B54F8 +:103F0000A57BD6F407F04EC53499FA75E9A278FB83 +:103F1000F05C6AEFD5F1F62EBCB76E60B6240526CC +:103F20003BACC076FF31B4235684D039C2F47C6EEA +:103F30002F48BE1F3592FB3F64EA1F69E7F4A4785F +:103F40003250CF9DD19041F6487D88BBF265DC8729 +:103F5000B685D13D9FA29577DF3C0EE7B77D9013E4 +:103F6000C9E5F48C1D14373FBF61DE0FDF83EF9E80 +:103F70002D21F4FDAF233D5F6600DC4F2BF67B5E09 +:103F8000860FF36F3D68C4B8E419AD3BCEA1FF6E58 +:103F9000C69C308AF39CC15A7F8FF1A06C8E9EFA2A +:103FA000EFDC6E35222C6E6E3DAFA27D75F34405BD +:103FB000C51AEB0CB125DD07F32912E7B7CA48EEA5 +:103FC00017A90FE17EE1A295438727C3F79BF13E36 +:103FD000DE65EC9B5C597FB2B21EED9461E27E8E91 +:103FE000AC8FFD60BFE347F273708B808BCC0F2BDF +:103FF000E0F58B1B4D9D2968C7341AFC23207D3EBC +:104000002BDF3612CAA727B369EBC652BC0EBD63BD +:10401000D219C20E93BF7C8DC38E769C8789F88C93 +:10402000D50EF24F754E761AF15D93CE350E1BDE2E +:104030000B09CB721D46BC2F6A52ECC8EF9D931939 +:10404000F7B75B795CC3719B3F15FD1BC79D194E8C +:10405000F49B0F93F13FA342C94EACCEF4A4E23CD3 +:104060008A9A8ADE423E679760DD7918CFCB8878DE +:104070001FBD2394F9911FFADEABCA18897E1AB3CB +:10408000F3275745F7BD57354CCFE3531B053D4C40 +:10409000C77855A0B3E70C1DA5D8CFC90CF13DCA10 +:1040A0009667E1F4C5707E9D06DB705C5FE78A1061 +:1040B0001D9ED34D7F88D31BD0BF5985F60FAB2CE7 +:1040C00014CFE30DA2DFBB96ABEE169C8799A9F83F +:1040D000DED4CDAD39643F7F94E5B1E0BC4E3EC83F +:1040E000AE413C2D58BD86CE4524BE98DA3E6510C3 +:1040F0008C73729383DE6593F8FD282B7F32B6EBC9 +:10410000C5D31C85F003EB31E3FC9FCF9A7F3DC202 +:1041100007BEEF47FC4DCFF7A7E27B5253F515CC16 +:1041200085FB693C73E2BE7C8171FEBBD0A8921F07 +:1041300049F2BBE46BC9CF306FE25FC98FC17CBC71 +:10414000B98EDF7DDC5267A6F4177536A6A631B6A8 +:10415000B52E9EF2DBEBEC94B6D6A5D3F797EA9C8E +:1041600094DF59379EF2BBEA5C94DF5D5748E99EC5 +:104170003A377DBF07C087711E303EC91B29677063 +:104180007EBADC3E3920F167689CAC43392DF107DB +:10419000F62EBD8721DFA91A482FF8EF9A3FC831C4 +:1041A0006F446E1F5C311F122027316F8DEA5B1F39 +:1041B00086264E8C0A90732A7F7F00E5616C6EDF45 +:1041C000FAD1157831B70F2FD86E5210DE900E2528 +:1041D0005CA0BD3F3637102E5D8F5D85782FD139BD +:1041E000C9DFC13AB6BD42790B9DDF2619D96EF4FD +:1041F000D776FCBB85A17F54AF73C69BF05E518917 +:10420000C2D4007FC3DD35214C0DD8BFEEAD8DD4B7 +:10421000E4A3FFFDD821749FBD15E7791AE9F1F8F1 +:104220000367FFFA73E8FFF9073F1DE5217AECDA2F +:10423000F4148EBB2CD449FE08866FC591FF85CE41 +:10424000CBF02FF05DBBF9DE307AC7EE39A3ED4F2E +:104250003F477FED4ABD0DE5E8FC06BE2F7F807825 +:1042600004B8FF59E051BEAF5724FDE241EFDDFD38 +:104270007A6432C16798F0E71CFF51E24F288E70D4 +:1042800085DE26C271B4EFF189F1E578C1FD7D9C30 +:10429000C0C86F025A3FAB053C7CFCA0D18F779021 +:1042A0003F56CCF40E82628F6677C1774FE3EBF412 +:1042B0007E9B527B84E2133C660BDDEF635E4357CB +:1042C000607F4A2D7FE78D750C8944BF8E7CA72DBA +:1042D0006CACCB88F7C8512620DDCC4F3F40EF4671 +:1042E000B126C586E734C5E27BB1BCBFAE7A32E603 +:1042F0005819FBDD48FEFED5990C95D63D71241367 +:10430000E76E4DB4EF4A3F56F16AFE4E6271538E2E +:104310007151C0FE325F7C5F80EF39047CFF00FB8F +:1043200085FE0637169522310E16EF3D0C4E9F5F27 +:104330008A727BF0DC1B555CBFAC7F74241FFF4C82 +:10434000061F7F2212C7387C1794EB81F3E7DEB19A +:1043500091EECD31BB11FDAA72BCF9E9B92B314EFA +:1043600079FE6A7C8581DE81A4B8C7B5E1D336A128 +:10437000FC3A1ED46F85D8EF607D463CFF3C891126 +:10438000EF742ECCFD7965DB7F49E76B651F9A687A +:104390001F2F1BCDF75B96E5CBE3EFE369FDE753FA +:1043A0007EF911BD8B58BD93BF9F0829F7EF4A7F57 +:1043B000B093C71F06FB715FDBFE61F865FDE63B4E +:1043C000F9B9DFF7F9CDE53DB7EADF70FFAF8463F8 +:1043D000B57291CE9BAA5F5D117BB9FB64785E8359 +:1043E0007418EC47FF3E3F7BB05FD196A93DAFBC50 +:1043F000D2FB6B325F529B9D72620CDE67F32466C8 +:1044000022DC6BF35230DEA8AA7612A5C1F7DB4A94 +:104410006A33A97E59ED182A5F385211EF6632BA15 +:104420001F29FD99177C6911EC3BE651BD0E260B47 +:10443000ED2FA8F6083C8F93F796BBB7EAC97EE844 +:10444000DE3A6A03D26569DB13461D7C5F98C9F5C5 +:10445000A6B341E702555B3FA1F3BA4AD64EF80135 +:10446000BC3173E0F910C60B0E1A787EE5BFB4D6E6 +:1044700020FD96B62AAE4DB81F995BC9FF7161EB5E +:10448000DD066F003E2767AA9AF71BE4FCF332EDC6 +:104490009AEF385F9C4FB9A9F5DC07C809BF0A63DA +:1044A000FC3DD89EDFE3F9ED99F563280EBAB475AB +:1044B00047158F430BB3A15FE574507CE4CD62BC1C +:1044C0009B33B9DE77469C839DD9AE27F98BF345A4 +:1044D0003E3EAD68EFF1CF16ED660B789D42393266 +:1044E000AEAF7E69EB1AD207CFEDBC290DF5FFEE1A +:1044F000DDEF86A7C2F7BB33397F76EF0CA377F4E5 +:10450000BA77FE6CDA5EA0EBB3AD93A391FF64FFC4 +:104510006599FC7D87B36DFCBC8FF9781C5325C26F +:10452000794CE03C07D13B0BB29D8CDF3AB3F3D71B +:10453000E1BAAC3E3C569BBD47F04918F93E86D9DE +:10454000E0F1A23FC1B09BBF934CFC0DFD37A67BB1 +:10455000DD28BF653DA3D9459BAB7CF78BC9FB7EAE +:10456000E2FE0AEC5F6F7B60FE4B4A8DE44FBF6753 +:10457000B4FDF63B510EBF69207C2CC9607EF45F10 +:104580007C5E6B6D413C2F7138E99CF59E3142CECB +:10459000C4778CC3F88E8A4685B930CE2C3E89DF2D +:1045A0008F11BCDFE970BEB32A9AEE13909E5DE1D5 +:1045B000D333CF18921FC3315E9D8DF70FC738924A +:1045C00024A0136CBF2693EBF1C78D3C6EB32299E8 +:1045D000C7E50F13712715513C8EBF4BC6F9CFF2BB +:1045E0000FC7B8978A971228EEA54BC6EDC3779CE4 +:1045F00067452E8FDF97F0ADF8D181E1487715F34D +:104600005BD3B1BCD3613B47F1452F5BE9FD20DDB6 +:104610002B5611AF16B2C1C4F76FBAEF50BF298144 +:10462000DE2BD924E8ECB9DEB863673CCAD9C10FE8 +:104630005AC203EF1F941A9BF87D0385C7BBC8BC01 +:104640005C17E6715D5D829E4B43455ECCBF34BC1A +:1046500089E6DD89F72B107E2FF27B03A713DA772B +:10466000511CEA8B19F4DE62A7C3B768379587D06F +:104670007B87A55E85E479D92F4CF41EE9A917B98B +:10468000DFBDACAE96DEC32C03B6C77B6E9016E2E0 +:104690007DB55386A6241CF7540CA468573DC8F575 +:1046A000A523D6B549C4DF1B4D0ACAEB32202DD451 +:1046B000F72EB0A67B9EE1DFD15267651B4D744F8C +:1046C000C003DFF1BE25033D08E9A6970F366AE374 +:1046D000163B1DDA77160E09FE3B24E0FA4626F754 +:1046E000BB5486B5AE4DA6F5713E01FCF07872E67E +:1046F0004BF85934C671A429281FCA5A433A51EFBE +:1047000028DB6AA0F74487C9F8386187958240C3DF +:10471000F3E252C6F5CBA9FAAD141FF6F996905CF8 +:104720005C57A7782FB3EC473FE6F079C5EAE2EF94 +:104730007FD0DB44ECD4E6448A179F8E3164442753 +:10474000A3F8FD84A8A66CC467D9AAAB741427A2E9 +:10475000E77617A42E85E2E8CD24472B841CAD5CB8 +:1047600035216202F2D53B7A7ADFBB2C6211D97D0A +:104770009FABC04F9791FFC1708BCEE272A702F83A +:1047800004EF19578A7B56E59BF93B92E52BB95FFD +:1047900091FD82BF1BBA34C41F8EE32DDDA47722A6 +:1047A0009ECA8DADC363701C21F7A0BE07E592ECD5 +:1047B0006F6948EB22EC6FE9B6102ECF33A3455C4E +:1047C000CE13B1A8E7F6AF2FE6DD5BEF85F0C0F8BA +:1047D0001D59AF773DADDC9FF4396BBFFF4368F2E5 +:1047E000C5D6109A175824747F2D78BD670C301FDA +:1047F00098FF996D21747FEB3390835EBC3F1DE978 +:104800007A9CE21CFEA0A77778705EB81F2DF6692F +:10481000DB570E7246601C65E53B052AB657B3B8F8 +:104820003C063CDC42707AC740F75483E1FE999025 +:10483000DBBD7CB72D8CE8EECC608EFF33DB79FCE2 +:104840005C67A4B8876C684DC2F8E633DB46E4D0F9 +:104850007D4F548A00EF65368EF73391AD49B680AF +:1048600072496F78A1291EE903DBA4A09EC0F5B1AF +:1048700072F36A8A67C178E7BC5C4AFDA6CBC42B99 +:10488000033D92BD3E2F4BE815385EAC88AB27B98F +:10489000D56A44B9EC11FA63C5D6E078675E7EB597 +:1048A0006C0FB38D9671D618DFED55282EA6BCE19E +:1048B000BE52E48BF29A357722BDCAF997ABAC10A1 +:1048C000E541A7A2A7797486F077AB59E038C93CD7 +:1048D000B5C5F6ADB3208BF3FBF559764ECFB8E3F3 +:1048E000413F150DCA6AEADF21FD067C3DB21D80FD +:1048F000C188FB44E764513EC07AE5FC82D72BF1C6 +:104900007B671697339D0EFBE313A3FBEEB95DB8EF +:10491000342622EA3BEC6BB45C7BE38E81D74B7090 +:10492000ADE88FCBE2FECB72981FCE73F87A6DBCE8 +:1049300079FA466D7EE4566D3E6BA7369FDDA6CDB7 +:104940003B5FD3E6C9F719C3ED7DBCFF8EF63EA6EB +:1049500068EFDB4DDCDEC73CDAFB98A2BD8FDFD110 +:10496000DEC73CDAFB98477B1FF312DE68F7631E55 +:10497000ED7E2C7F56C0698F785F684FBE671EFA48 +:10498000297BE38F4B2D41F7B886C8FB3D321E349F +:104990006C8078D030C493BC171B7C7FABF79DDA5A +:1049A000A0FB5B485FD8CF5F623C8F6401BC3F5582 +:1049B000DA5726C0787B927D994B689F0FB1603C97 +:1049C0007BC78ACF56A279B433C6F378560CDEABD8 +:1049D000EED9CCEF4BFB49CE742CB7BF739DD447B7 +:1049E000806E8A00BA48C7F2FEECF7BE3FFBBDEF0F +:1049F000CE6AE944EA73CF1B7A12505E7EF2A27946 +:104A000035CEF313E1BF6473CD41F10DDC4E5AF2A4 +:104A100098B201F7A76D59FC9D810B47003ADF4121 +:104A20009F0B2E8E213DBB37BF5AD1D13B17F1B121 +:104A3000B40F497D2C49017D0CE51FAC1FF7E9112E +:104A4000EB749AF967F84235F496B9252AE8FEC95D +:104A5000604DFDD1BB9383EE9F8CD4DE6F98B37C09 +:104A60003FEECFB3578FD1D42B764F08829B98A7B8 +:104A7000D04B8B511FC47DE641339D3F2E7D4F4F60 +:104A80007A4C0916825C2CC1BE008F251B451C7513 +:104A9000AD76BF2D519917DFF75A20F621496F25C2 +:104AA00036E68A84F667739A36E3BBAAA56FBC9B89 +:104AB00067C37B79CAE438744E6C1FE1F90FA4AF69 +:104AC00024838BE2762B76A445E23B6B5D470E5147 +:104AD0005CA6A49324832D14F1D9D2C4F57BF48F62 +:104AE000E9A3FAF0DDD2342834D5D2B7AE80F81578 +:104AF000D2873FC7F815F8543259F11A47F7CD7FDE +:104B000089D837E47C4F08FD9FA5F27E7E20CA2B12 +:104B1000725F7F2E0A50D7A53BF0D52ADC9F725AD0 +:104B200087FB514F7BA625F60E80C77693A707E932 +:104B30007FC9DB05E1184FF7E55603DD27F86BF376 +:104B40000BCF619CF3AAA6178CE80728537D468AF1 +:104B5000F37CB1C58871CED76F69A1EF8BB6149184 +:104B6000BDB898D590BD7852BECB21D65F92AFAC80 +:104B7000B7C1BCE78CE2FA7A49283F779CAA9F78B4 +:104B8000289AF42B85E27DE7B8674E8D413DA53527 +:104B900092DE4F0A1DC5E54A30DD5F784BCFFDB888 +:104BA00073389E077AD769F64507D1F99C8B9964CB +:104BB00047DDEACFE0766B96D66E2D31DADF41F92C +:104BC000CE7EA7A7DF2BE9F523380DA41F57C2FE21 +:104BD00082F71FDD13F51A3AAC9E12A6A1D3B92CA9 +:104BE00080FE61E8DB30D825203F677A8AA6FEED9B +:104BF000733283E83AB7AF9CE4C1359A7B9495F859 +:104C000085EEA1E4F7FBCEEF63DEA8695FC96669B4 +:104C1000EEE7956EE4E70A953B23E9DCB144BC730B +:104C200037D7C3BF57EDE6DF61211AFE1A56E0FC05 +:104C30000FBEFF19F86F2388F387B9F8DF29FDE16C +:104C40000E98EB7D8F00DF9340FF81E61D02717EA1 +:104C500089F3267D57F8932AD3B93FA9D2DB6EC4D6 +:104C6000F73A00EEEA208CD36C52081F50DF3C2844 +:104C700097E79751DCB5367E0CFBC378CBAA23FAB5 +:104C800022E493E072A03BAEF7EEE171AF8BD70563 +:104C9000C76BAEA6F3D32AF40F05E0AD79949DFB64 +:104CA000CFB6EC383C18E030DBCDE9B3A275A6A155 +:104CB00028AB3F3D015DD33BD58B18D0159EFB0043 +:104CC000FFFAEC03AF1BD545B43BE4FAAB5C9CFEAA +:104CD0000623FD65F7A7BB4A6F8D91DE5D59AFB026 +:104CE000271CBC3EC26330D263103C087E417090EA +:104CF000F0E985575079305C167918D1C7A2DD8A62 +:104D0000CFA7F45FC740700BC6EB62D66EC47B289A +:104D10008B772A4E7C875E9EE7B0F1417EA4B75226 +:104D2000C88F54E516709174E0E6743EEB22F78B61 +:104D3000DC86EFB08EE9A38B39D3B5FC78EBC55890 +:104D40002AFF57E904767EF2C35E297DC87548398B +:104D50008CFE42A20B112F1DCC1FC1FEC6E74609D7 +:104D60007FE338364E131F3DC03B1DC1F1D172DFCA +:104D70000EDE378ADEE0FB86949F1EB11F78561840 +:104D80006259E07E23BF0BFFDB9207D3E93D92A47B +:104D9000E583A85E51888DE2FB8B96F3B8EB22A8E1 +:104DA000670FD01F5636A424E13EF0F1C3239EF3D3 +:104DB000E23B980F44C78E073C7FB2C2108DEF4E86 +:104DC000CA7A1FAF989A8471239FAC31CDA5F77D25 +:104DD000FFDD4CBF5B54B92B8EBF1BA7B7C462BCB1 +:104DE000E6D99706D1FB488785FCAF58F172385E4B +:104DF00027285FC1F7DF59233C8746D1F973CB667B +:104E00003AB8B0B564A3FC3F3A8A60C84E625FB955 +:104E1000B40FD1BE7E32C4761BF67BF2458313CF2E +:104E200063A1DC85E7463F50FC9F5E47EFDD28B17C +:104E3000E8B7E97A4F4FF7334BF5FBB3B1DF8ABAE6 +:104E4000DD49A8C296E4C27E09783E67F21CC571AE +:104E5000CB57BC904487508D2DF4EE7F80BFF77DFB +:104E60002CAF447F2FE43DCBD322F8BBB197F7F7AB +:104E70004AB8FC509C5F6F16FB37EAE998A29E8EF9 +:104E8000F13DA8A7631EF5744C514FC7EFD5EBB4A5 +:104E90007ADCDB787E1BD3E7F71DA63F4FBFABE381 +:104EA000CD67E935B4DF5AD2D1FE5CAA843A515FAE +:104EB0005CAA70BE5EFA51083F7FF22568E821F8CF +:104EC0005DD56B7B40D70AA0DBEB2E9A59E0BDE5A0 +:104ED000C92C52932F302768EA4FB53934E5D7C72C +:104EE0006768CA6FB0E768F237A55FADA97FB37393 +:104EF000B2267FCBF81B34F567BA666AF2B30BE7CC +:104F000069EADFEA2ED294DF3EB754533ECF739F57 +:104F1000267F67C9039AFA77D72CD794FF9B9ED137 +:104F2000FB7B6D685F99F0DD2133A55FEB6C2AEAAE +:104F3000874BDF4EB320FE2716E86A2E17B7909CEA +:104F4000CDE9FBF6D1AEA1D931FCFD28A4DBA1E26D +:104F50007D286736C76722036D8DECDAF604A4A3BB +:104F6000E07AC1E513C30E7C6E071C366ECFBC5DC4 +:104F7000057934F1AA03635220BF7FFB7C9E9F70AA +:104F8000E0D7C9907F63FBC6DB55902F13471FF80E +:104F90001CCB6FFCD5629E9FCD48F5782F3BFE76EB +:104FA0002FCEFFBAE4D54EEE0711EF6BF8C96FD1E3 +:104FB0007B9FC56CF1A704BC1382F0C07BF3080F84 +:104FC0004CFD40C7981E003AC6F435A0E362905FDE +:104FD00087818E313D02F6267EFF1DD89B98BE0547 +:104FE000F626A6BF073B13D376B03331FD63DD5CF5 +:104FF0004A8FD679A8DD9FEA4A283D565743DF3FBE +:10500000A8ABA5F4CF755EFA7E63B6F057ECD6FE7A +:105010005E943CAF94E793F535AC230CE540871ADA +:1050200089BFC726CF1D07B6EF55F66980FE15C1AB +:105030005CB766D3B9A2F6772D9E4DF1DC910DE3F6 +:10504000BFE7989D860FBEDF76B1E6108600BD27CC +:10505000DE1908EED729E861F468D7BDD85FEF7B89 +:10506000FFE23C7DBD819F9BCBF374199720CFCF8E +:10507000E92F209E48C62B5C6BE6F7B765FC808C59 +:105080004F9AFA0523FE9FD4A8D2399B55657E8C92 +:105090003390F14793B023C0FBA46846F2210EBEC3 +:1050A0001B73F9BBD27A4837FE0DEA6707C44399F0 +:1050B0009817FD9A71E25C1EEAD1FCA67EE1A1F888 +:1050C000A849220E63289E63F27A746E6B457B08B2 +:1050D000DB0FEA38887EB8C47F004EA0DEB30A8FAB +:1050E0001F907118583F8CD7F763BFA97F87F1C312 +:1050F000FBF864FDE47607FAE1D6FFD0EC44FF99B3 +:10510000FC9D03722A015C660BB94687EC9817FB7D +:1051100025DB1247FEA17C511E99EA5983F0779B4B +:105120006C1F85115FA50C457D60A6D097BF036FEE +:105130006B2F8737892F898F807812C287C49FC4CD +:105140006F301E25FE82F125F1F8BF156F6355FE05 +:10515000CE9FA9C24CEF077E1F1EEFED61D322A0A8 +:10516000CA1BA91E27F255D145FB61CC2F6093E9DC +:10517000774864F91F0728F77CD1638808C0F7B522 +:105180004296FF6D80FAB29E7CFF42F61F9706F5AD +:1051900063FAD75F3A95DF0B2B7C8FFBD1DF14FBD3 +:1051A000269EABE7E405C46B662D26BD9859B87EF4 +:1051B00069877F502E5D7751D5E89B858CCB29D8A8 +:1051C0009855A4BFC2A073EB1B853E7A63903E1A2C +:1051D000AC5F9ECE16FAA58339FEC5F758CF67930C +:1051E000BF57ABBF60DC17D2738A5D4FEFD1C8F7F2 +:1051F00057E57BBE53041F4DC1F77CC3F1F72C3D2F +:10520000B41F5ECFBC94DE00EBC1F426E6A7FDF32D +:105210006610BC98BF05437D207F306CC65D784723 +:10522000AF604C412ABDD7D1F75EA13A7A1CBD5779 +:10523000F8175BC07B8507A6D8E99CF18099DF0B46 +:10524000467EC3DF2B94EB7903F69D54D8170EC22C +:10525000BE84E921D89752617DAFC3BE84F91BD3C8 +:1052600097336C37CDAE8DF791ED6FB2158001326B +:1052700030BC6ECAFECD1084E79B9123A6E07ADF96 +:105280008CBC6A0AE2F7CDC8381D4F4D464C076A00 +:105290002FE9FEA62C7E3FF526DB341AEFFF013CFA +:1052A000B347C7F487A7136913FD88E677C3E39371 +:1052B000F17C8DCB9F252FBF9DAD87FC299C1AE8E3 +:1052C00011936A27D03CAFABBD9AD2CFEA5816C231 +:1052D000B5C2CCE115EC87621BE37481F1C7334C96 +:1052E0009E49387E85AE2DFC1A28FF6CFDBBDBD1B4 +:1052F0007E003DBA00F15CA1B7AF76A25FE64D1E1D +:105300003FCA2E1D4C9A65ED4F8F6CE36CCD7D47E7 +:10531000498F156609472FE53F4E7539F93ECDDFB8 +:105320004995712E434CFCBD05F96E27EA3374CFC5 +:1053300031486FC80BE5726D8889CBE95E796514D9 +:10534000FB32F4938772F0F150F2338627B8E6E22D +:10535000FAA49FF6C290307A0765923F3302F38534 +:10536000E81780A91E10F158D767D65892010F3F51 +:10537000C8F0CCC7764C7F498FF2F1AD34850D5221 +:10538000D0AF3BC64276E1F7F06F30FF978D16FC49 +:105390009FCDB235F7E4045E607E149773E1A89E5A +:1053A000E2E326B1E14FA1DFA2E0880123A7FBE2FF +:1053B00026E3F9F9E1D4233C0EA8CF0EEDA1791E26 +:1053C000B229EC19589F295EC7EC01722CC41ECA81 +:1053D000EC01F3094B8FD2E4ADCEC19AFA11E393FD +:1053E00035E591AE919AF24185B99A7C8CFB1A4DC4 +:1053F000FDB8B9F99A7C82E7464DFDC492599AFCF2 +:10540000D09A3B34F587D5CED7943BBC659A72F9D8 +:105410004E29F3BADAD363B99CC6BF94C6259A7AEB +:10542000859645742F32ADE9479AFE989DFB1BBCCB +:10543000F00FD2D59778F116D2A9F15A3F44816D79 +:10544000F26B88A24411B7041467C77DA0C0A6F50B +:105450004B245A0A297E3EF17BE29A7E395ADC1BA4 +:10546000BE523AF08CBC3C1D5470BD22980E0EA169 +:105470005C4AE1E70481EBC5738240B8E0394160E2 +:105480001ECF0902EBE3394160399E1304968F3930 +:10549000A2C5FFB8762DFEAF3A967F45F8BABA435B +:1054A0004B17125F134ECEBA2CBEE6C23FB44F3339 +:1054B000BECF4F0138F9597FBC497C49FCFD57F1FB +:1054C000F67110FF7EC9568FC377E7BB8BB8BC1E41 +:1054D00068FF3687B84EA21C192AE479B03D2FE345 +:1054E00040837F2FE5DFF41D56DC27BED6758C4246 +:1054F0007C2630FEFB148FC579BE40B91C87D124B1 +:1055000050FE4CE96D39B86F760FED398EBFA7EDBF +:105510007DC0CAE534987CA80F763C606D097C7F1D +:10552000F19E441E07F4CD68A12F38793C10FEB0DF +:105530000BE6AD4E1BC589176589DF655759D23D0E +:1055400050FE7F0071C17B78008000001F8B080037 +:1055500000000000000BDD5A7D7854D5997FEF9D47 +:10556000999B9964864C42C8071FC924217C39C085 +:10557000CC24B1A86807242CEE0676422B2488613F +:10558000421204050DA9AEC162333141A3C2366C8B +:1055900003A26D714281BA2DF449105B5BD3762A68 +:1055A0007ED03E6A51DB5D5BDD38484B554A89F160 +:1055B000D98AFD72DFDF39F7646622A9ED1FBB7F50 +:1055C0006CF2E43939F79CF39EF7FBFCCE7B6F95C8 +:1055D000C549544134B2DD1A4D2B262A72846DBE62 +:1055E00049449DBFB0DB29939F9327D3ED25FEF15E +:1055F00014865C446FD9A8B69F977C849F4F27DAA6 +:1056000022C7A274ACBBCAA213E5100D6FD2A307C8 +:10561000981E5949D07FE4605EF401EE5F55147323 +:10562000CCC4F81EDD778092C6377BE4B8458BA0EA +:105630003F7CB7113DA011BD6393E391AD9EE8217E +:10564000D0A3A8A386F998B98F97CE22F1F311FFC2 +:105650003D62A565E0EB91A81E299B4F343B6A276C +:10566000AB3D699C781C7258A38E9573892E7BCCB8 +:105670009D323EB73F3F85DEFC273D29E3FED8AC97 +:1056800094F1F293BE947E1C7A61FA95A716A4ACAD +:105690009BC67F7A80E853AF05539E17DDD2BA824E +:1056A000E689F1A09E4D74457C590ABDA20BE9BA6A +:1056B000C6E3D7F94A88A0D7B74329E3E4917AA98A +:1056C000BF3337FA00EB698A952269BCCF576D1456 +:1056D00071648B7ED0E0D68082799ED16D8D76B25A +:1056E000FEA6320F99D9922F0BE671EB10F3241F0F +:1056F0003C1EB1639CE9816F1E0F5AE578249DFB27 +:10570000DD7378E34A229B35A85329D17E5B7C1355 +:1057100059127E509F462DB0036F1B841FECDF365D +:10572000B90FFCA9F1904F17F274CF21D11EB2D35B +:10573000BA10EBADF36E2715CFC7BA7801ECB3DA28 +:10574000A7897D8ECE085EEF13F3DDA2FFA8EBEDF7 +:105750004DC424EAE7CB7DD6EAFABA1AACD7A8F64C +:105760009837B1CF7A73FDA2806CEB33253FF47983 +:1057700043F8919223DFA02E7B40EC3B1BFE7DE3A0 +:10578000CEFE5D337968ADD163835CEC6FB610F308 +:1057900053BD386E253FD18BB35FD9EBBC82E56A30 +:1057A00063BD5E49B4C9F7A9DA08FFBB9CF5047E66 +:1057B0008AF87FD8A11AFAE5F655BF45ECB3C3279E +:1057C000E5AD52F1964322DE4648F235D2664423D7 +:1057D000C5093B26D92902BB1C6E671639161E6BFC +:1057E000B78BF61BEDECBF654447DAF345FF5BED85 +:1057F0001ED1F6B7CF12CF8FB5FB44FF78FB02D195 +:10580000FF767B50F49F6C5F26DAEFB587C473B8E0 +:1058100027E5124D97AE35AA17E53F4A2FD5F74831 +:105820003B79B6DA420758846A9D96698184BECF77 +:10583000FAA55D072067A59C17F526E65559BC9982 +:10584000A79D89792AAF8CCD23AAFDDF927754BF1B +:10585000D6849F3B92FC5BC9CDE3E3C4496A3C8993 +:105860009FCB4DFD95C875130209BB25C58F88AF29 +:10587000D1F8A1781DE247E9373A5D5F067DDDE7A3 +:10588000927A567A88235E78FE83F067D61B45822B +:105890004E3FDB2B6C6E5D65F95303FCA7D9657831 +:1058A000D2784AD8B9A19A26105D130CEDBD8F9F0E +:1058B000AFEFB5511F3F6FE06DDBB265BB9DF96B7C +:1058C00088D8DE8A27E5A39B289419D3D01BB680FD +:1058D0005EE72ECDFD08F71BBB53E73593A473930A +:1058E00073E93BD8A799AC6FC5555E2A069D9DEF1D +:1058F0005926A0B526D6F1F3B637FAAE7A26297F17 +:10590000BDEC73E59CBD0C8996E67F84386BB3EBE8 +:10591000D0E346BB92CBE98B214E7E66F1A5717F29 +:10592000245A9A494E611F1157DCC6D2988F0FDA5C +:10593000A3573DC3F6F5EC6322E509BDB13ED3673D +:10594000E1DCE8B2FACA3C1FF7AF517D52AED8B7DE +:10595000D52E732AFBE94FA1B7DF9EB4501A726CA3 +:10596000AD5DC447D81CFF6DE4FDD362FCB8C387AE +:10597000FE79FFA97931962F8CFD27F29CFC547A91 +:1059800023DBEDE4467C1F774589E7BDABF51DCEF3 +:1059900064BBBFAB0FE42E284EF0138ECBF5E3C5EE +:1059A000C3CA99E10F9107C336CAAD857D8E587C75 +:1059B0001D4CFF7EE7D3B941D6CB355AF08FBE4A96 +:1059C00091AF0CE4AB9BD98F711E55F3B908FF550D +:1059D00074EE9863CA3D46AED1BCB4508BC28F46BC +:1059E0002216718E8F2CD304DF9CD782D0F7CF89FB +:1059F000A933FF3514CB418B38A53419A76811A7FB +:105A00003453C629FA8853B488533CFFCC45BFB001 +:105A1000D3672F5E25E40D775F21FA338A227A3A25 +:105A2000F2F30D9AEF1037AB0FD28E745E1AEF5867 +:105A30005D1986DDFD328FCF30CF978FD9D32FE31D +:105A4000E431BFCC3F4A9ED60E4DE4D9564D9E97C9 +:105A5000ADBB34916755FFFD1EB35F25FB9FDB2176 +:105A6000FB719BB35BCB94F24D2F93F2A1857CD35A +:105A70006D523EF4211F5AC887E7C843E8230FA19F +:105A80008F3C843EF2105AE4213C5F4FA1421C0D32 +:105A9000570F132D498AAF4F5FB4D392A43859449E +:105AA0005929FD6BED0529F3ABDCC529E3FF903FD8 +:105AB0003B65FC3A8F3FA5FF4FB3AE4899BFDCB7BB +:105AC00028A54F0BAE4BF4399F51B026A5FF19AA5C +:105AD0004DD0633D5D1F6A48A1BFBA76532ABDF021 +:105AE000D694F537505BCAFAD2968E94F9EBDA3435 +:105AF0006A4AEE733A869F35EE9B28FCE48FA5A197 +:105B00005A3FDBF7CD8CBFDC612B819D0737C14F3E +:105B10005BB7A4FBA49D7B9649BBEB24ED3C5C27C3 +:105B2000ECBCDD90FD2A5F9EFB12FE33C8765EC2A0 +:105B300076F901DB196D8CED8CF669B633DA67D82E +:105B4000CE4BD87ECFB19DD19E643BE3F94FD8CEEA +:105B5000685F603BA37D89ED8CF614DB19ED2BEDBE +:105B6000B5A2FD597B58ACFB8FF68DA27DADBD452E +:105B70003CFF657B9B68DF688F88E743CC47932DAC +:105B8000C11770EEF424FD02D74E4FD20F706C7225 +:105B90001F3836793E706CF238706CF238706C7267 +:105BA0001FF835793E706B727FBFCF23E20B7835DB +:105BB000791DF069727F6E4FE4D977E05F5FF9DDA0 +:105BC00033686764361CD338353C3C70B2D65AC053 +:105BD000FD8C86401663059BF652ED12EE872F96DC +:105BE0008B7C308F8605AE0CF35CD82D1C23710F97 +:105BF00098FB6181187F71B6DBCCDB24F293FF3810 +:105C0000097CF9E26C8F78AED6FBC86D41ABE62714 +:105C1000FA979E37767F354FE4C7243EF87CF4230D +:105C20009FFBB73B03B8AF1CD6B57521F6A7C38C55 +:105C30008F5672BEBDEC485077F078ED71B7DFE259 +:105C4000C1FC9600EE2B2F99B847CD9F61A593B666 +:105C500040428EAF7FAAF800E83DE197F93921670D +:105C6000DC8A7CCE792218E5750B874F5D9BC9F3E2 +:105C7000C3914595A05F6D48BCC0FB5C59837B4DCB +:105C8000440B1E48F2EF1F9AF4C29181A7915FBFA7 +:105C9000FEE80AB92E5DAEFBFAA313C4FE2BBAB41C +:105CA0000316DE7FE1110AF6F1FA9326BF971D89EC +:105CB00059B05F4397DC4FD16DF84AA1E1E1790D0E +:105CC000D472577E0574A411F236CBF50CE452FA67 +:105CD00053F36730491B9F1FB782553665F7AC48B1 +:105CE000087A5EA9CB79863D28F0D3AD4FD610F265 +:105CF000FDD515595539A03B483EC0D4E5152FA711 +:105D0000C82DD476B9A02BCEAF99112D96C1A2ACD7 +:105D10008874DC03B52D8F6C7D7612E61F245FB18D +:105D2000471C3D744D20C1DF9CE080CEC71F79E940 +:105D300094EED060773A3131C98F38037C1676F70C +:105D4000FB6C04BBD458DD36E48DB1E7BBC20BEF6E +:105D5000032F08AECC71B71C6FBDFBE2E9FB908F3F +:105D60009E907841E19C06B79421BC4F1379EDFDDC +:105D70002EBE6E40CF4FA44509788DF18487FDF18A +:105D8000BCFE42EE6A5EB7A5345AA8B3BE6E9EDC76 +:105D9000372FDB22F0C01F9007CF454EACA8653AE5 +:105DA000A7BB1ECF85DEDEEFBA3E332628334EE496 +:105DB0007D9A4CFD346DDF580D211BE6F61BB8D7DC +:105DC000BCC579263813FC2FCC8C43AE1E89F36AF0 +:105DD000F91779BAE1C589B9C05B63F1DFA62E5B1B +:105DE00083C1F7B44D6370DF2D26EEBBE513709FC2 +:105DF0003B60E23E1FF904EEB3ACCD0C5F221FAB5B +:105E000056E13BC63779814BE01B32EF2F9F734839 +:105E1000391B5E3C71BDC02D2D653A708BC23B6B4A +:105E20003B249EA1018A9669E85F2BE274ED134141 +:105E30009FC6EB7E6AE2989517A7087BBC6AE2963C +:105E4000EB2F5E26F24275DC219EAFBA5820DAD5E0 +:105E500017678BE72B9D323FC4BF4BD17B709F8B65 +:105E6000A4491C354802378DF5533FB9ABE0F773B1 +:105E700082DA09C0C5E5C0414CAF16B86822FCBE45 +:105E800061C724F87D94046E1DEBF7ABD71657411C +:105E90008ED9CB3442BC2ABF0F477E24FC7505FB4C +:105EA0002B9E2F8F74D872B1EE0809F9C2E6FD540B +:105EB000F9F7D878A8CF30EFEDCE7825F2C8E87D95 +:105EC0001E4CF23D972273EB8033F91E4D34593A44 +:105ED00018B19D5D5E397EE3B1B9755D56710F8A6B +:105EE000640612F72CF41D49F72AF45D4975064043 +:105EF0008C8549F75CE07B875C47B981C4BD0C6544 +:105F0000A08B49F7E212937F757F037DAB5C17CBC3 +:105F10000D24EA05AA3E813A01F26E95E58DAA3C70 +:105F20008103B302325EA5FFBC65C6ABBD6271B82A +:105F30009CD7B5DE5F96477FC52F1BD96E88CFFAF9 +:105F4000CCF81D1A9F63770528B86401511D99FA92 +:105F5000623E88FD7E8DD93F1858F18B6EAFD0B36D +:105F6000E8FF4B60415D84E977FBEE0981BF441E89 +:105F70000C05111619DE2085BD1F9743D5270E0687 +:105F8000E4FCB1758A46AF3C27545DEDADFBBFF331 +:105F9000ADE4FA8BAADFF13926EE317B57E6FB1F21 +:105FA00030F329FCEA919BA78AF3F4A180795E7112 +:105FB0005C78664AFC8B16F8D79326F12FFAC0BF9F +:105FC00068817FF11CF8177DE05FF4817FD107FEC7 +:105FD000450BFC8BE77F2E0EED0E883CDB63C7FD87 +:105FE00097660D3F7C88F7AF6F3708FCA87BF2A35C +:105FF00037A70721C7A37719222FAAFBF25AE3D4A8 +:10600000B3F6E2841E5E6FFB371BEA42ACF6320F3A +:10601000D359D3E2F0216FDB2B42FB913732BC3EE8 +:10602000037926EC8D6A1ED6EB64B759AF291DF6AD +:10603000DF81E7E5924E75893C178B2CF40CB15F3C +:106040007D332F78087CDA2BC28F81CEFA41FF7323 +:10605000533C38A7B20CD8A73E8FE346E4A1E1C277 +:1060600095AE849E9F32EB4E61C432AFBF60D607BF +:10607000D94EDD25CC5F5D8E5BE89DFDB60BF7AAA2 +:10608000A702F2FEA2EA6E89BA8455D4878C362321 +:10609000DAA9C97A821148D425949E547D21A11F82 +:1060A000F773A28EEA323CC02D0DCE194BE1F70DED +:1060B0003D5A36F24195A5FA39819B7717970037FB +:1060C0009F37F955F7C266F37C6BDD536A1460DEC7 +:1060D000FD8CDEB85F9DED1174867769EE031EC4FA +:1060E00015CF4BAA0335EDBB42C4455394DBF2F107 +:1060F000E3E786DD27A67D177E170B1AE0B7C9CD2B +:10610000E921A9EED1D8A3093F1EDBFFAF8045FAF4 +:106110003DC375E8E9C6DB8B8DF5A80332BC68F595 +:10612000420EA90FB58EE7C5308FED2AF5B19BF968 +:106130002E96FB0592E8AF07FDA4FD951FFC26E017 +:1061400012F41ADC1EA3A018AD5BF0F9313D98FAE9 +:106150006F8C456D3EF063E57DB9BFC61DB5619F8F +:10616000F55D7E03F924BC53EE13EECE32E6023F1A +:1061700059DDC634EEAF4D97F1C7FC099CD9C47AFE +:10618000C9469D2D9B71A5F3E3FA6930F96DEAC903 +:10619000329A539EEFB6C1BFEBCC7CBFBE6B91A1D0 +:1061A00063BD55CA3BA9DCF44B539FBFDEEA7800C0 +:1061B00075FEBADEE7CB34F8654B815F6339D3CA2D +:1061C000A53F4E2A97FA54FAA873F7087946F5B90D +:1061D00087E56792CDEE90A0CFFE1041DC34F54A02 +:1061E000FA4DBD0D8697DB0DD6B03155EC2FF53944 +:1061F000BAEFBE1F99FB3A7CD897DC61F19EE1ECC7 +:106200009ED585428EDE876CD09BCBE7590A9CC910 +:106210007E20FC52F9437DB98CBFD1FB52B9559E0B +:106220006FE5327F8DD6B1CDF348C555D3CE060A82 +:10623000F2BE8DF97C3E5E22AEC6D6EBEACC7ADDAC +:106240007E2314CBD71271CFE761CBB14B9C136186 +:1062500073FF35A61D582F229FA8F150B9894BA076 +:10626000D7A4F5A007BA0BD5F8E258D9566F62BE8D +:10627000DA776DB65C07BBC03F169AFB617EAB98C0 +:10628000AFA7D4791A47F1EA911DB938FF06345106 +:10629000576BDD7562DA9D88EFA319A8DCD2B9CD02 +:1062A000876E2DC0E16A8D0A3B28BE9A199F20AEE9 +:1062B0003798E75E53ECD2F1FDEB39E1E5E549F1C2 +:1062C000D7F4A5A333902759FE18F2C41B479FFAB1 +:1062D000F9959EC479A5E459DFDD27F2E28D3BB341 +:1062E00002169917BB9117C3A6DC8D5DD25EC4F66A +:1062F000027E53766DE8D2C4F9D0D8767914B867A7 +:10630000140F98F61C6B47655F6547A57F3E874471 +:106310001D57E165C5FF2673FFCDE6F9B0C6F4BB96 +:10632000351B1789BCB8BEBBA11CC76F9DF9BCAE9D +:1063300029F5F9A8FEDD4AFFDE7BE1C723FD52FF08 +:10634000233B6DB2CE7644D607CFB57EE7A5553C4C +:10635000EFDDBD7D85C9EF559ACDBAD906132FDE85 +:10636000C4FABF54BD90F57F77B2FE6F7AD4D47F64 +:1063700049FFEFBE87FCB2354DBC776BE4BF05AC7F +:106380009F7347BE649BC2CF6F68D6B2C0EFCEF298 +:106390006229677F9FAD04F8BFC5EF469D77A79937 +:1063A00007C6FA33B7414AD22FCE032D3B8157D4CB +:1063B0007CE4A301E6E3F6AD8E09341F74B3B2DDCD +:1063C0007C1F396EFAA9CA2F8AEF335B1BFE15F7C3 +:1063D00095330EE9DF9B793DDEEF9C59E42B6CF59C +:1063E00026F01CE5F40F88F760B779C57D9CF73F70 +:1063F00089F70DDF34F3DCF4E9F128F857B8D2E07F +:10640000FC84F73D0774297F8945B65F4EEF9FDD19 +:10641000F257F0DEF4CDF1F7C08FC2B30AC7BE6CFD +:10642000FA85C2AB0A7F8E97770C3AD85D82F70760 +:1064300039E4EBF424FC54D1199B7F949C5332FA39 +:10644000FF1D7E32E5B63901E000239DBA21C7F376 +:10645000E3C879A658EA733CBE15BFA37A60675CAF +:10646000909DE05FF1C31836A803977D7EAEC0858E +:10647000673A7C85D0D378F29D290E8B381D2E206B +:106480001FCED9F1F26A5D9316015D5B9B4BD41D63 +:10649000549C348DD6FFBD9971E67FA447D6FDCFBD +:1064A000687CAE40AEAD0E5DF88529DFDF5B7F3ED8 +:1064B0005F9E2D710EC55DC06B6BD3CDF88FC9F398 +:1064C00077A8AD54C8A99EABF377C81D776527E5BB +:1064D000DD5FB598E717D341FC505B291DE2AD861F +:1064E0007ACEB874E1A7923FB5EE769BA44F2E23E7 +:1064F0007A48036EA9311AF8F98D6DAFDA346E2F30 +:106500009A762C2AED0FE6E508DC267045A7CB9796 +:106510008FFD3AB37CF9C9E77F867395A8BF9C29A4 +:106520008E4D473D6AD8EF10FA1E72AE5A8AFC3380 +:10653000B42F0B6F38E876CD37D4060CBA234DD480 +:10654000D5AB75EAD6847FC48C2938BF3B34910F14 +:10655000D4F3DB2E0BA755800FCBC0EF7F09BA3BDE +:10656000327CE083FEC4FB727EC4751A71DDCD39C6 +:1065700048E8714C3D646CFDA3C8F088FAC8F08F00 +:106580002D7440E6BFFF44BFF9C7B694F72BEABDB0 +:106590004F73DF6744DDA1C97C9FD38C3A48B9783B +:1065A0007F4FC429EFDEDE6B73E1174DBBABF646C0 +:1065B000F8FC28D42884FCF22B6BBC0679E0EDBEF5 +:1065C000BCEC0EE0A72D9D3388C79BFAEE2B44FB55 +:1065D000769FA316F97989BB664916EFBFE12B595F +:1065E000A23EF7FA665917B8F9E532E187F32BCCEA +:1065F0007CFF9713FBDD7CDE37F33337D3FDEFFEF3 +:106600008C68848736B73F59884F1CBE95169E0309 +:106610003DDDA20FAEBA02F95A8B1E2E10F33D9744 +:10662000AC2FABF62CEE53EC8F5BBEF09AA0735EF2 +:106630007F61451DAFDFBCE5F109A073CB9E572FED +:1066400077EBA2BE7339E8E37D911B89795FDF3C6C +:106650009C97D768C10515E2DE945A0719BBCF3F56 +:1066600006A41C5757483B55678756D555083B0825 +:106670007B8EC7DFC627B594F7683746330DF28A9D +:10668000FAA781F7B56137091CFAB685DAC4FB258C +:10669000137FA8E7A10AE9C76F67F614C26F371D19 +:1066A0007EA8107EFA8E4BF6D71E5EFD13E4A9F08D +:1066B000C1348987AD64F8785D6344E259DA982D76 +:1066C000EA836AFF35151982DEA67DE529E71D0AF2 +:1066D0002478FE8E557ED7516479CF0F9CF4BA355D +:1066E000D60C3F789DF16444D853E6B1D77B2C4B50 +:1066F000C57724B76B04FCF07ACFE3AEE9CE04DEB5 +:106700007255F4C7908FB61CCF0A58A42B0ABFBC91 +:10671000D5ADF2917329E29C71931B7EDBFADD67A4 +:106720009792EC1369E3EBF366132F8DF68F0F1836 +:10673000C0B59B8F48BCB0B97FE0B9C939B84F9A92 +:1067400078C1C4215B4C1C72EB71A9972DC74F1BFC +:106750008DC9387F56F6BD5318B1DD7D7C55DD1EE1 +:106760009EDA00BB5D4974F4D8D56B3A38891F0DA9 +:1067700098F563EBB0C0710FCC7A45DC57B77499CC +:10678000F466BD726F8990B7666232DEF942854D5C +:10679000AC53EB591F625D9B7DC23CE4BB0F1CB246 +:1067A0008D2C26F95DCE9043BC072F728477C22FC3 +:1067B000EFB484063688BA57CB7CF8E7DFF0DDD03B +:1067C0006EAC1B34CFA1D896F46EE083E0AD4E2BB7 +:1067D000DACE2D4E8117825B5F71E07E3FF8BB748D +:1067E0005D9B0017193EA1F33EBBF2C25F469CE4DD +:1067F0001147A705E74D4C034EBFF0FDDF9483EF33 +:106800000BD38687C88DF70CFFBC6609E78FAF55A1 +:10681000C87A0A79E3E5E06FD2D3329F7FD546DDAF +:106820000EF11D4888F0FD49CC7C3F18F95017DF68 +:106830008B0C6AB1AF817E28CDD98DEF547E61E695 +:106840008933A5A16F80FF53D996B200F635DF1BBF +:106850004E33EF41C6E47C27FC5D0B06A98DE9EBC6 +:10686000DAB38DF09B0787ED847B77A7A9CF699377 +:106870009789734DF3E4E08CA1A7BD7A248DF77F4F +:1068800090ECE2FDA5A13B82627CF0F90FF15DD0B6 +:1068900014CB7B2732797CCA9D9AAF9359AD1F39AF +:1068A0002BBE8B19FAF08803C5B117F2C23F845E84 +:1068B000265BE273BFA8E11CF9B65DE3F939F37416 +:1068C000B7C5AC4BDAD9BF17CB7F6970DB8713B282 +:1068D00079FDE2E1F4D3D0EF85E1B347BF5381D630 +:1068E0002EEA878B072DB1B4795854151CADFB9651 +:1068F000882668BF3C41877A1E22C4CD6DE679A008 +:10690000E88DB7FE42BEC72AEC356C8FE9D8CFA917 +:1069100047711F5B3C78E235C8B9D8EE8CA1AE4C0C +:1069200076DB6F47EBCAD8F7D4B42CD49111331F60 +:1069300031C8C8ED9476BC2633F53E78AE42DE63AE +:10694000CF997949E95B089F726EC978577C8F3877 +:106950000D59C7DD28EBF123838C432E916755FB3E +:106960002A7008E38BF965C173D0BBF2036577B574 +:10697000AFB2AFB223DD75EAD9CC6261BFB95F2493 +:10698000DC4BE25FFDA926ECF77BF8D523170FF867 +:1069900061D74ED7D2E2B0F7FF9FDDC6E695703AD9 +:1069A000B7F33F9E5F38AFA4CFE4F603BD47C437CB +:1069B000E79BC995ACE775DE164DD6FD22DADF9868 +:1069C0006F8AB06EF43B45972EDFEB99F5D24E7C83 +:1069D000A7A8E13B4512F874789BCB1CF77458319B +:1069E000BEDDE37B80C4778A72FDB68CD4EF14B72A +:1069F000950A7C078604BD88A4A7BE03ECC43EBCF0 +:106A00002E12C910F33AF1BD6266E23B40C4B2A057 +:106A1000B399241DC5578BFC3E32B753AE1FBEC37E +:106A200010DF578633E57784E10B322F2EADCC3261 +:106A3000F37EBC12F8F6C17B5C043F54F616A57BCE +:106A40004FC2DE16D3DE93BDD2DE939D7A2C0D7637 +:106A5000DBB824986CB72F2067F2DF538CC3EDE0CE +:106A6000AF467E47D75B132CC07BC5DE9A5C1DF812 +:106A7000E8DB7FF9DC9B7783BF176D0257F6FA25B9 +:106A8000BFBDDF2F15F8694837E53B9C26D64FBAC6 +:106A9000654301EC67C92F5FD8C4E7E4DEF4E86C16 +:106AA000D8B7D7A58B79BD65BA88BFDE62B9AE7796 +:106AB0009357D019B5DF2E57CA77A61736662BFB2A +:106AC000495C6F1D9E003DB0BD449FED547B4CDC86 +:106AD000F7872724BFE7B860E2880BA63D469F935F +:106AE000FCAE54D1F9A4E7E773C35BE05F6ABC373F +:106AF0002B58005C3456DF7B3AFCDD33E0072EDD9B +:106B00000D5C3E9E9D32561BFB0F25D907C71CE42A +:106B1000CEE8BC4AF883B2D75E755E6DB3C8EF6449 +:106B2000C7D88FA64A7F50F7F4A2C8E987C54B148F +:106B30008ACF46DC70BCCDC2BD6E08796B7EC25F69 +:106B4000B5A0FCDE4BF9A7CA5F63E3566BE37C3666 +:106B5000E15271DB2FCEE50FF4988ADBDDD00FFD1B +:106B6000C0E741BF73EBA902F11DDC27C7EDDE4A88 +:106B7000F6EB6DF9E187D1E6987962B285FDC52221 +:106B8000FC6AA3F93E50839EDF34F5B78EF3D04400 +:106B90008E8FC72BE53940DBC7E42353DFF5E6FCD6 +:106BA00037CF731CCD4FD86B9D798FA9DF9E761A96 +:106BB00079AD7EBB4DC6475B55700C1D9197151D79 +:106BC000F2BC3709F2A875EB36FD611270F0B8EB34 +:106BD000E353B3CE66987991E5FD99117A02720E6E +:106BE000D119F1BDD50B7FB688F707A759DF1EF87D +:106BF000C9C13C79CFCA9234BE5F29F148853D3482 +:106C000088752FF87F5386F71DF4A71353C1C7D497 +:106C1000BCD00FA1F7FBA78F88F7204305C336D060 +:106C20001DAA7B771AF85AD7F6BCC8DBEB54DEFEF8 +:106C3000043D8DD58FD25B42DE9149C0B9FF57FA32 +:106C4000527EF23FE7B46434D02E00000000000012 +:106C500000000040000000000000000000000040B4 +:106C600000000000000000000000002800000000FC +:106C70000000000000000010000000000000000004 +:106C800000000040000000000000000000000010B4 +:106C900000000000000000000000000800000000EC +:106CA00000000000000000000000000000000000E4 +:106CB00000000000000000000000000000000000D4 +:106CC00000000000000000000000000000000000C4 +:106CD00000000000000000000000000000000000B4 +:106CE00000000000000000000000000000000000A4 +:106CF0000000000000000000000000000000000094 +:106D00000000000000000000000000000000000083 +:106D10000000000000000000000000000000000073 +:106D20000000000000000000000000000000000063 +:106D30000000000000000000000000000000000053 +:106D40000000000000000000000000000000000043 +:106D50000000000000000000000000000000000033 +:106D60000000000000000000000000000000000023 +:106D70000000000000000000000000000000000013 +:106D80000000000000000000000000000000000003 +:106D900000000000000000000000000000000000F3 +:106DA00000000000000000000000000000000000E3 +:106DB0000000000000000000000033200010000070 +:106DC000000000080000332800100000000000024E +:106DD00000003320001000000000001080000000C0 +:106DE0000000000000000000800000000000000023 +:106DF0000000000080000000000000000000000013 +:106E00008000000000000000000000000000335877 +:106E100000010004000000010000336000000000D9 +:106E200000000002000033680000000000000008BD +:106E30000000336C00000000000000020000392058 +:106E4000000000000000000800003AF800400000C8 +:106E500000000040000039380080000000000048B9 +:106E600000003A38004000000000000800003A48E6 +:106E700000400000000000180000337000280000EF +:106E80000000002800003C20000800000000000175 +:106E900000003C21000800000000000100003C222E +:106EA00000080000000000010000200800100000A1 +:106EB000000000100000200000000000000000089A +:106EC0008000000000000000000000000000000042 +:106ED00000000000000000000000000000000000B2 +:106EE00000000000000000000000000000000000A2 +:106EF0000000000000000000000000000000000092 +:106F00000000000000000000000000000000000081 +:106F10000000000000000000000000000000000071 +:106F20000000000000000000000000000000000061 +:106F30000000000000000000000000000000000051 +:106F40000000000000000000000000000000000041 +:106F50000000000000000000000000000000000031 +:106F60000000000000000000000000000000000021 +:106F70000000000000000000000000000000000011 +:106F80008000000000000000000000008000000001 +:106F90000000000000000000800000000000000071 +:106FA0000000000080000000000000000000000061 +:106FB00080000000000000000000000080000000D1 +:106FC0000000000000000000800000000000000041 +:106FD0000000000080000000000000000000000031 +:106FE00080000000000000000000000080000000A1 +:106FF0000000000000000000800000000000000011 +:107000000000000080000000000000000000000000 +:107010000000000000000000000000000000000070 +:107020000000000000000000000000000000000060 +:107030000000000000000000000000000000000050 +:1070400000000000000000000000000080000000C0 +:1070500000000000000000008000000000000000B0 +:1070600000000000800000000000000000000000A0 +:107070000000000000000000000000008000000090 +:107080000000000000000000800000000000000080 +:107090000000000080000000000000000000000070 +:1070A00000000000000000000000000000000000E0 +:1070B00000000000000000000000000000000000D0 +:1070C00000000000000000000000000000000000C0 +:1070D00000000000000000000000000000000000B0 +:1070E0000000000000000000800000000000000020 +:1070F0000000000000000000000000000000000090 +:10710000000019C80000000000000008000020086E +:10711000001000000000001000002000000000002F +:107120000000000800004870000800000000000196 +:1071300000004871000800000000000100004872D3 +:10714000000800000000000100004040003800007E +:107150000000003880000000000000000000000077 +:10716000800000000000000000000000800000001F +:10717000000000000000000080000000000000008F +:10718000000000008000000000000000000000007F +:1071900080000000000000000000000080000000EF +:1071A000000000000000000080000000000000005F +:1071B000000000008000000000000000000000004F +:1071C00080000000000000000000000080000000BF +:1071D00000000000000000000000000000000000AF +:1071E000000000000000000000000000000000009F +:1071F000000000000000000000000000000000008F +:10720000000000000000000000000000000000007E +:1072100000000000800000000000000000000000EE +:1072200080000000000000000000000000000000DE +:1072300000000000000000008000000000000000CE +:1072400000000000800000000000000000000000BE +:10725000800000000000000000000000800000002E +:10726000000000000000000080000000000000009E +:10727000000000008000000000000000000000008E +:1072800000004000004000000000004000004800F6 +:1072900000400000000000400000482E00400000B8 +:1072A0000000000100004800004000020000000152 +:1072B0000000480100400002000000000000300013 +:1072C00000400000000000408000000000000000BE +:1072D0000000000000003000000800400000000432 +:1072E00000003004000800400000000400003B8063 +:1072F000002800000000002800003BD00010000023 +:107300000000001000003BDA001000000000000147 +:1073100000003800008000000000008000003800FD +:10732000000800800000000200003900004000005A +:1073300000000040000020080010000000000010C5 +:10734000000020000000000000000008000051982C +:107350000008000000000001000051990008000032 +:10736000000000010000519A000800000000000128 +:10737000000039800010000400000004000051A843 +:107380000030001800000010000051B0003000185C +:10739000000000028000000000000000000000006B +:1073A00080000000000000000000000080000000DD +:1073B000000000000000000080000000000000004D +:1073C000000000008000000000000000000000003D +:1073D00080000000000000000000000080000000AD +:1073E000000000000000000000000000000000009D +:1073F000000000000000000000000000000000008D +:10740000000000000000000000000000000000007C +:1074100000000000000000008000000000000000EC +:1074200000000000800000000000000000000000DC +:1074300000000000000000000000000080000000CC +:1074400000000000000000008000000000000000BC +:1074500000000000800000000000000000000000AC +:10746000800000000000000000000000800000001C +:107470000000000000000000000023E80080000081 +:10748000000000800000000100000000000000007B +:107490000000200800100000000000100000200084 +:1074A000000000000000000800002E70000800002E +:1074B0000000000100002E71000800000000000123 +:1074C00000002E720008000000000001000024E807 +:1074D000003800000000003800002DD00008000037 +:1074E0000000000880000000000000000000000014 +:1074F000800000000000000000000000800000008C +:1075000000000000000000008000000000000000FB +:1075100000000000800000000000000000000000EB +:1075200080000000000000000000000000000000DB +:10753000000000000000000000000000000000004B +:10754000000000000000000000000000000000003B +:1075500000000000000000000000000080000000AB +:10756000000000000000000080000000000000009B +:10757000000000000000000000000000000000000B +:1075800080000000000000000000000080000000FB +:10759000000000000000000080000000000000006B +:1075A000000000008000000000000000000000005B +:1075B0008000000000000000000000000000250026 +:1075C0000040000000000008000025080040000006 +:1075D000000000208000000000000000000000000B +:1075E000800000000000000000000000800000009B +:1075F000000000000000000000003000000000005B +:1076000000001000000050A1000000000000000178 +:10761000000050B80000000000000002000050C848 +:10762000009000080000000880000000000000003A +:1076300000000000000029600008000000000001B8 +:10764000000029610008000000000001000029700E +:10765000000800040000000200002978000800046F +:107660000000000480000000000000000000000096 +:1076700000002FB0000800000000000400002FB43C +:10768000000800000000000400002FC000000000FF +:107690000000000800002FC80000000000000008E3 +:1076A000000030000000000000000010000050400A +:1076B0000001000100000001000050000000000077 +:1076C0000000002000000808001000000000000476 +:1076D0000000080C0010000000000001000008B7C6 +:1076E0000000000000000001000008B600000000DB +:1076F0000000000100001000004000200000000415 +:1077000000001004004000200000000400001008E9 +:1077100000400020000000020000100A004000208D +:10772000000000020000100C0040002000000001DA +:107730000000100D00400020000000010000100EAD +:107740000040002000000001000010100040002058 +:10775000000000040000101400400020000000049D +:107760000000101800400020000000040000101C61 +:1077700000400020000000040000300001000080F4 +:10778000000800040000300401000080000800042C +:107790000000000A00000000000000000000306847 +:1077A000010000800000000100003069010000803D +:1077B000000000010000306C0100008000000002A9 +:1077C0000000306E010000800000000200003070F8 +:1077D00001000080000000040000307401000080FF +:1077E000000000040000306601000080000000027C +:1077F00000003064010000800000000100003060E3 +:1078000001000080000000020000306201000080E2 +:107810000000000200003050010000800000000461 +:1078200000003054010000800000000400003058C7 +:1078300001000080000000040000305C01000080B6 +:10784000000000040000307C010000800000000106 +:107850000000307D010000800000000100001C18C5 +:10786000001000000000000400001C3000100000A8 +:107870000000000400001C3800100000000000049C +:1078800080000000000000000000000080000000F8 +:107890000000000000000000800000000000000068 +:1078A0000000000080000000000000000000000058 +:1078B00000004C10000800000000000200004C1204 +:1078C000000800000000000200004C140008000046 +:1078D0000000000200004C1600080000000000023A +:1078E00000004C20000800000000000800004C00D0 +:1078F000000800000000000200004C020008000028 +:107900000000000100004C0400080000000000021C +:1079100000004C30000800000000000800004C404F +:10792000000800000000000400004C4400080000B3 +:107930000000000100004C500008000000000002A0 +:1079400000004C54000800000000000200004C60E1 +:1079500000080000000000040000140000080000FF +:1079600000000002000014020008000000000001F6 +:1079700000001404000800000000000200001410C1 +:1079800000080000000000020000141400080000BD +:1079900000000002000014160008000000000002B1 +:1079A000000019B8000800000000000800001420C2 +:1079B000000800000000000200001424000800007D +:1079C00000000002000019C80008000000000008C4 +:1079D00000002C10000800000000000100002C1125 +:1079E000000800000000000100002C120008000048 +:1079F0000000000100002C1300080000000000013E +:107A000000002C00000800000000000200002C0212 +:107A1000000800000000000100002C040008000025 +:107A20000000000200002C300008000000000002EE +:107A300000002C32000800000000000200002C347E +:107A4000000800000000000200002C2000080000D8 +:107A50000000000100002C210008000000000001CF +:107A600000002C22000800000000000100002C2370 +:107A7000000800000000000100002C2400080000A5 +:107A80000000000100002C2500080000000000019B +:107A900000002C26000800000000000100001480F7 +:107AA000000800000000000200001482000800002E +:107AB0000000000100001484000800000000000223 +:107AC0000000149200C00018000000020000149092 +:107AD00000C00018000000020000149C00C0001844 +:107AE000000000080000149400C000180000000806 +:107AF000000014A700C0001800000001000014A43A +:107B000000C0001800000002000014A600C0001809 +:107B1000000000010000161000080000000000082E +:107B200000001620000800000000000800001630C9 +:107B300000080000000000088000000000000000B5 +:107B400000000000800000000000000000000000B5 +:107B50008000000000000000000000008000000025 +:107B60000000000000000000800000000000000095 +:107B70000000000080000000000000000000000085 +:107B800080000000000000000000000080000000F5 +:107B90000000000000000000800000000000000065 +:107BA0000000000080000000000000000000000055 +:107BB00080000000000000000000000080000000C5 +:107BC0000000000000000000800000000000000035 +:107BD0000000000080000000000000000000000025 +:107BE0008000000000000000000000008000000095 +:107BF0000000000000000000800000000000000005 +:107C000000000000800000000000000000000000F4 +:107C10008000000000000000000000008000000064 +:107C200000000000000000008000000000000000D4 +:107C300000000000800000000000000000000000C4 +:107C40008000000000000000000000008000000034 +:107C500000000000000000008000000000000000A4 +:107C60000000000080000000000000000000000094 +:107C70008000000000000000000000008000000004 +:107C80000000000000000000800000000000000074 +:107C90000000000080000000000000000000000064 +:107CA00080000000000000000000000080000000D4 +:107CB0000000000000000000800000000000000044 +:107CC0000000000080000000000000000000000034 +:107CD00080000000000000000000000080000000A4 +:107CE0000000000000000000800000000000000014 +:107CF0000000000080000000000000000000000004 +:107D00008000000000000000000000008000000073 +:107D100000000000000000008000000000000000E3 +:107D200000000000800000000000000000000000D3 +:107D30008000000000000000000000008000000043 +:107D400000000000000000008000000000000000B3 +:107D500000000000800000000000000000000000A3 +:107D60008000000000000000000000008000000013 +:107D70000000000000000000800000000000000083 +:107D80000000000080000000000000000000000073 +:107D900080000000000000000000000080000000E3 +:107DA0000000000000000000800000000000000053 +:107DB0000000000080000000000000000000000043 +:107DC00080000000000000000000000080000000B3 +:107DD0000000000000000000800000000000000023 +:107DE0000000000080000000000000000000000013 +:107DF0000000000000000000000000008000000003 +:107E00000000000000000000000000000000000072 +:087E1000070802000000000059 +:00000001FF --- linux-ppc-3.8.0.orig/firmware/bnx2x/bnx2x-e2-7.8.2.0.fw.ihex +++ linux-ppc-3.8.0/firmware/bnx2x/bnx2x-e2-7.8.2.0.fw.ihex @@ -0,0 +1,19047 @@ +:100000000000373000000068000005D8000037A06D +:100010000000553C00003D800000008C000092C0B4 +:100020000000EF0000009350000000C00001825863 +:1000300000012E5800018320000000740002B180EE +:1000400000005AC40002B1F8000000AC00030CC06C +:10005000000186D800030D70000011B80004945010 +:10006000000000040004A610021100B80000000106 +:10007000020600DC000000010306100001FF000082 +:100080000A00000100000008020617FC003FE00122 +:100090000A00000100000010030617FC020101FF26 +:1000A0000A0000010000000803060200000304002B +:1000B0000A00000100000010030602000003040310 +:1000C0000A000001000020000406024C00000002AB +:1000D0000A00000400002020030601E000040406DA +:1000E000030602440002040A030602540002040C40 +:1000F000030602640002040E0A0000030000204010 +:10010000030601E000040410030602400003041487 +:100110000206026400000028020600DC0000000065 +:100120000A00000100000008030601D800020417BD +:100130000A00000200002020030601C0000204198A +:10014000030601D00004041B0A0000020000204046 +:10015000030601C00002041F030601D000040421AD +:100160000A000002000020400306022000020425CD +:100170000306023000040427020D00440000003290 +:10018000030D004C0004042B040D005C000000046F +:10019000030D008C0004042F030D00A000050433A0 +:1001A000020D00B800000002030D00C00004043876 +:1001B000020D015C00000001030D01640002043C1B +:1001C000020D020400000001030D020C0003043EB6 +:1001D000030D022000020441040D02800000001201 +:1001E000030D030000180443040D400000000A0042 +:1001F0000A00000100000008040D03600000000C6C +:10020000030D0004000F045B020D01140000000D3B +:10021000020D01180000002D020D01140000001D48 +:10022000020D01180000003D020D01140000004DF8 +:10023000020D01180000006D020D01140000005DA8 +:10024000020D01180000007D031010000003046A75 +:100250000210105000000001071011000010046D82 +:100260000810114000000008071011600010047D04 +:10027000081011A000000018071018000200048DDB +:1002800004104C0000000100021070040000000186 +:100290000A00000100000008031040D40002068D8F +:1002A00002104028000000100210404400003FFFF0 +:1002B0000210405800280000021040840084924A36 +:1002C00002104058000000000210413800000001F8 +:1002D0000210413800000001021041380000000106 +:1002E00002104138000000010210413800000001F6 +:1002F00002104138000000010210413800000001E6 +:100300000210413800000001030C20080003068F92 +:10031000030C201C00040692030C203800040696EF +:10032000040C20480000001D020C20BC000000014D +:10033000040C20C00000003F030C21BC0003069AFF +:10034000040C21C80000001C030C22380004069D88 +:10035000010C224800000000010C224C00000000AB +:10036000010C225000000000010C2254000000008B +:10037000010C225800000000010C225C000000006B +:10038000010C226000000000010C2264000000004B +:10039000010C226800000000010C226C000000002B +:1003A000010C227000000000010C2274000000000B +:1003B000010C227800000000010C227C00000000EB +:1003C000030C22D8000406A10A0000010000000965 +:1003D000020C2000000003E80A0000010000000AEF +:1003E000020C2000000000030A0000010000000CC5 +:1003F000020C2000000000010A00000100001001B2 +:10040000020C2000000005DC0A00000100001002C0 +:10041000020C2000000000040A000001000010048B +:10042000020C2000000000010A0000010000200171 +:10043000020C2000000005DC0A0000010000200280 +:10044000020C2000000000040A000001000020044B +:10045000020C2000000000010520040000710000D3 +:1004600006200780001006A50422000000004000BE +:10047000042324000000160003221170000806A7C0 +:10048000032211A8009006AF0422C000000000065D +:100490000322C0180004073F0422C0280000000CFB +:1004A0000322C058000407430422C0680000000C67 +:1004B0000322C098000407470422C0A80000000CD3 +:1004C0000322C0D80004074B0422C0E80000000C3F +:1004D0000322C1180004074F0422C1280000000CA9 +:1004E0000322C158000407530422C1680000000C15 +:1004F0000322C198000407570422C1A80000000C81 +:100500000322C1D80004075B0422C1E80000000CEC +:100510000322C2180004075F0422C2280000000C56 +:100520000322C258000407630422C2680000000CC2 +:100530000322C298000407670422C2A80000000C2E +:100540000322C2D80004076B0422C2E80000000C9A +:100550000322C3180004076F0422C3280000000C04 +:100560000322C358000407730422C3680000000C70 +:100570000322C398000407770422C3A80000000CDC +:100580000322C3D80004077B0422C3E80000000C48 +:100590000322C4180004077F0422C4280000000CB2 +:1005A0000322C458000407830422C4680000000C1E +:1005B0000322C498000407870422C4A80000000C8A +:1005C0000322C4D80004078B0422C4E80000000CF6 +:1005D0000322C5180004078F0422C5280000000C60 +:1005E0000322C558000407930422C5680000000CCC +:1005F0000322C598000407970422C5A80000000C38 +:100600000322C5D80004079B0422C5E80000000CA3 +:100610000322C6180004079F0422C6280000000C0D +:100620000322C658000407A30422C6680000000C79 +:100630000322C698000407A70422C6A80000000CE5 +:100640000322C6D8000407AB0422C6E80000000C51 +:100650000322C718000407AF0422C7280000000CBB +:100660000322C758000407B30422C7680000000C27 +:100670000322C798000407B70422C7A80000000C93 +:100680000322C7D8000407BB0422C7E80000000CFF +:100690000322C818000407BF0422C8280000000C69 +:1006A0000322C858000407C30422C8680000000CD5 +:1006B0000322C898000407C70422C8A80000000C41 +:1006C0000322C8D8000407CB0422C8E80000000CAD +:1006D0000322C918000407CF0422C9280000000C17 +:1006E0000322C958000407D30422C9680000000C83 +:1006F0000322C998000407D70422C9A80000000CEF +:100700000322C9D8000407DB0422C9E80000000C5A +:100710000322CA18000407DF0422CA280000000CC4 +:100720000322CA58000407E30422CA680000000C30 +:100730000322CA98000407E70422CAA80000000C9C +:100740000322CAD8000407EB0422CAE80000000C08 +:100750000322CB18000407EF0422CB280000000C72 +:100760000322CB58000407F30422CB680000000CDE +:100770000322CB98000407F70422CBA80000000C4A +:100780000322CBD8000407FB0422CBE80000000CB6 +:100790000322CC18000407FF0422CC280000000C20 +:1007A0000322CC58000408030422CC680000000C8B +:1007B0000322CC98000408070422CCA80000000CF7 +:1007C0000322CCD80004080B0422CCE80000000C63 +:1007D0000322CD180004080F0422CD280000000CCD +:1007E0000322CD58000408130422CD680000000C39 +:1007F0000322CD98000408170422CDA80000000CA5 +:100800000322CDD80004081B0422CDE80000000C10 +:100810000322CE180004081F0422CE280000000C7A +:100820000322CE58000408230422CE680000000CE6 +:100830000322CE98000408270422CEA80000000C52 +:100840000322CED80004082B0422CEE80000000CBE +:100850000322CF180004082F0422CF280000000C28 +:100860000322CF58000408330422CF680000000C94 +:100870000322CF98000408370422CFA80000000C00 +:100880000322CFD80004083B0422CFE80000000C6C +:100890000322D0180004083F0422D0280000000CD6 +:1008A0000322D058000408430422D0680000000C42 +:1008B0000322D098000408470422D0A80000000CAE +:1008C0000322D0D80004084B0422D0E80000000C1A +:1008D0000322D1180004084F0422D1280000000C84 +:1008E0000322D158000408530422D1680000000CF0 +:1008F0000322D198000408570422D1A80000000C5C +:100900000322D1D80004085B0422D1E80000000CC7 +:100910000322D2180004085F0422D2280000000C31 +:100920000322D258000408630422D2680000000C9D +:100930000322D298000408670422D2A80000000C09 +:100940000322D2D80004086B0422D2E80000000C75 +:100950000322D3180004086F0422D3280000000CDF +:100960000322D358000408730422D3680000000C4B +:100970000322D398000408770422D3A80000000CB7 +:100980000322D3D80004087B0422D3E80000000C23 +:100990000322D4180004087F0422D4280000000C8D +:1009A0000322D458000408830422D4680000000CF9 +:1009B0000322D498000408870422D4A80000000C65 +:1009C0000322D4D80004088B0422D4E80000000CD1 +:1009D0000322D5180004088F0422D5280000000C3B +:1009E0000322D558000408930422D5680000000CA7 +:1009F0000322D598000408970422D5A80000000C13 +:100A00000322D5D80004089B0422D5E80000000C7E +:100A10000322D6180004089F0422D6280000000CE8 +:100A20000322D658000408A30422D6680000000C54 +:100A30000322D698000408A70422D6A80000000CC0 +:100A40000322D6D8000408AB0422D6E80000000C2C +:100A50000322D718000408AF0422D7280000000C96 +:100A60000322D758000408B30422D7680000000C02 +:100A70000322D798000408B70422D7A80000000C6E +:100A80000322D7D8000408BB0422D7E80000000CDA +:100A90000322D818000408BF0422D8280000000C44 +:100AA0000322D858000408C30422D8680000000CB0 +:100AB0000322D898000408C70422D8A80000000C1C +:100AC0000322D8D8000408CB0422D8E80000000C88 +:100AD0000322D918000408CF0422D9280000000CF2 +:100AE0000322D958000408D30422D9680000000C5E +:100AF0000322D998000408D70422D9A80000000CCA +:100B00000322D9D8000408DB0422D9E80000000C35 +:100B10000322DA18000408DF0422DA280000000C9F +:100B20000322DA58000408E30422DA680000000C0B +:100B30000322DA98000408E70422DAA80000000C77 +:100B40000322DAD8000408EB0422DAE80000000CE3 +:100B50000322DB18000408EF0422DB280000000C4D +:100B60000322DB58000408F30422DB680000000CB9 +:100B70000322DB98000408F70422DBA80000000C25 +:100B80000322DBD8000408FB0422DBE80000000C91 +:100B90000322DC18000408FF0422DC280000000CFB +:100BA0000322DC58000409030422DC680000000C66 +:100BB0000322DC98000409070422DCA80000000CD2 +:100BC0000322DCD80004090B0422DCE80000000C3E +:100BD0000322DD180004090F0422DD280000000CA8 +:100BE0000322DD58000409130422DD680000000C14 +:100BF0000322DD98000409170422DDA80000000C80 +:100C00000322DDD80004091B0422DDE80000000CEB +:100C10000322DE180004091F0422DE280000000C55 +:100C20000322DE58000409230422DE680000000CC1 +:100C30000322DE98000409270422DEA80000000C2D +:100C40000322DED80004092B0422DEE80000000C99 +:100C50000322DF180004092F0422DF280000000C03 +:100C60000322DF58000409330422DF680000000C6F +:100C70000322DF98000409370422DFA80000000CDB +:100C80000322DFD80004093B0422DFE80000000C47 +:100C90000322E0180004093F0422E0280000000CB1 +:100CA0000322E058000409430422E0680000000C1D +:100CB0000322E098000409470422E0A80000000C89 +:100CC0000322E0D80004094B0422E0E80000000CF5 +:100CD0000322E1180004094F0422E1280000000C5F +:100CE0000322E158000409530422E1680000000CCB +:100CF0000322E198000409570422E1A80000000C37 +:100D00000322E1D80004095B0422E1E800000006A8 +:100D10000422F640000000200223800000000010A2 +:100D20000223804000000012022380800000003077 +:100D3000022380C00000000E02238BC000000001CF +:100D40000A0000020000000802238380000864708B +:100D5000022383C0000002260A00000200000009EE +:100D600002238300000864700223834000000226EF +:100D70000A0000020000000A022383000000055F51 +:100D800002238340000000010A0000020000000C62 +:100D9000022383000000015702238340000000006B +:100DA0000A0000020000100002238380000C96A8B5 +:100DB000022383C0000003390A0000020000100172 +:100DC00002238300000C96A802238340000003390D +:100DD0000A00000200001002022383000000080E37 +:100DE00002238340000000020A00000200001004F9 +:100DF000022383000000020302238340000000005E +:100E00000A0000020000200002238380000CF8503A +:100E1000022383C0000003520A00000200002001E8 +:100E200002238300000CF850022383400000035289 +:100E30000A00000200002002022383000000084D87 +:100E400002238340000000020A0000020000200488 +:100E500002238300000002130223834000000000ED +:100E600005240000324B00000524800028780C93F4 +:100E70000624D5E063AA095F0A0000010000000211 +:100E800002231480000000000A000001000000049A +:100E900002231480000000000A000001000000117D +:100EA00002231480000000000A0000010000000876 +:100EB000022000BC000000320A0000040000001004 +:100EC000022000BC00000002022388400000000154 +:100ED00001200138000000000223884000000000CB +:100EE0000A0000010000001102231480000000012C +:100EF00001200000000000000120000400000000AC +:100F000001200008000000000120000C000000008B +:100F1000012000100000000001200014000000006B +:100F200003200020001A0961032000A40002097BAD +:100F30000220022400000000022002340000000011 +:100F40000220024C00000000022002E40000FFFF2B +:100F500008202000000008000A0000010000001026 +:100F600008204000000002000422110800000002D6 +:100F70000422340000000002042259000000000690 +:100F800004226040000000300422F3000000001042 +:100F900004221110000000020422340800000002A4 +:100FA00004225918000000060422610000000030ED +:100FB0000422F34000000010042211180000000277 +:100FC0000422341000000002042259300000000600 +:100FD000042261C0000000300422F38000000010F1 +:100FE0000422112000000002042234180000000234 +:100FF00004225948000000060422628000000030EC +:101000000422F3C000000010042211280000000296 +:10101000042234200000000204225960000000066F +:1010200004226340000000300422F400000000109D +:1010300004221130000000020422342800000002C3 +:1010400004225978000000060422640000000030E9 +:101050000422F440000000100422113800000002B5 +:1010600004223430000000020422599000000006DF +:10107000042264C0000000300422F480000000104C +:101080000422114000000002042234380000000253 +:10109000042259A8000000060422658000000030E8 +:1010A0000422F4C00000001004102400000000E03E +:1010B0000310201C0002097D021020C00000000265 +:1010C000031020040002097F02170008000000023C +:1010D0000217002C0000000302170038007C1004E7 +:1010E0000317004400060981021700700000000C7D +:1010F0000317007800020987021701C408100000D6 +:1011000002170344000000010317040000080989C6 +:10111000031704300008099103170480000409999B +:101120000A000001000000080217003C0000000453 +:101130000A000001000000100217003C0000000837 +:10114000021700040000000F021701EC000000026B +:10115000021701F400000002021701EC0000000277 +:10116000021701F400000002021701EC0000000267 +:10117000021701F400000002021701EC0000000257 +:10118000021701F400000002021701EC0000000247 +:10119000021701F400000002021701EC0000000237 +:1011A000021701F400000002021701EC0000000227 +:1011B000021701F400000002021701EC0000000217 +:1011C000021701F4000000020A00000100000008FC +:1011D00002130078000000320213003C000061A8F6 +:1011E00004130108000000030213010400000000C2 +:1011F0000213013400000000041301080000000382 +:10120000021301040000000002130134000000007A +:101210000413010800000003021301040000000091 +:101220000213013400000000041301080000000351 +:10123000021301040000000002130134000000004A +:101240000413010800000003021301040000000061 +:101250000213013400000000041301080000000321 +:10126000021301040000000002130134000000001A +:101270000413010800000003021301040000000031 +:1012800002130134000000000413010800000003F1 +:1012900002130104000000000213013400000000EA +:1012A0000A000001000000880200A5F8000000000C +:1012B0000A000001000001080200A5F8000000017A +:1012C0000A000001000000900200AA840000000053 +:1012D0000A000001000001100200AA8400000001C1 +:1012E0000A000001000000900200AA88000000002F +:1012F0000A000001000001100200AA88000000019D +:101300000200A270000000000200A27400000000B1 +:101310000200A270000000000200A27400000000A1 +:101320000200A270000000000200A2740000000091 +:101330000200A270000000000200A2740000000081 +:101340000201620400000000030100B40002099DD4 +:10135000030100CC0002099F020100DC0000000133 +:1013600003010100000209A10201007C003000001D +:1013700002010084000000280201008C000000002F +:1013800002010130000000040201032800000000F7 +:101390000201055400000030020160580000FFFF08 +:1013A00002016060000000000201607000000007A0 +:1013B000020160B000000000020160C000000001F6 +:1013C000020160C800000000020162080000000085 +:1013D0000401805400000003020180780000000036 +:1013E000020180E800000007030180F8000209A361 +:1013F0000301810C000209A5020181240000000004 +:101400000A00000200000008020180E40000468893 +:10141000030180EC000209A70A000001000000801F +:1014200002018038000000060A00000100000200EE +:1014300002018038000000070A00000100000400DB +:1014400002018038000000060A00000100000800C8 +:10145000020180380000000E0A0000040000200095 +:10146000020180EC0000003802018100000025E448 +:101470000201811400004BC803018680000409A901 +:10148000020100C400000001020100F80000000198 +:10149000020100F0000000010201008000300000A5 +:1014A00002010088000000280201009000000000F6 +:1014B00002010134000000040201032C00000000BE +:1014C00002010564000000300201605C0000FFFFC3 +:1014D0000201606400000000020160740000000767 +:1014E000020160B400000000020160C400000001BD +:1014F000020160CC000000000201620C000000004C +:10150000040181A800000004020181D00000000055 +:10151000020182340000000703018244000209AD89 +:1015200003018258000209AF0A000002000000080F +:10153000020182300000468803018238000209B1AE +:101540000A000001000000800201818C00000006FA +:101550000A000001000002000201818C0000000767 +:101560000A000001000004000201818C0000000656 +:101570000A000001000008000201818C0000000E3A +:101580000A00000400002000020182380000003838 +:101590000201824C000025E40201826000004BC879 +:1015A000030186E0000409B3020100C80000000145 +:1015B000020100FC00000001020100F40000000133 +:1015C00004010138000000110401017C0000001139 +:1015D00004010138000000110401017C0000001129 +:1015E00004010138000000110401017C0000001119 +:1015F00004010138000000110401017C0000001109 +:101600000215C090000089260215C09C000000044D +:1016100002140000000000010215C02400000000B8 +:101620000315C0EC000209B70315C100000209B997 +:101630000A000001000020000315C1F4000809BBE6 +:1016400003140030000209C302140040000000012E +:10165000090000020000100803140004000309C57B +:10166000021400440000FFFF0A00000400002000F4 +:1016700003140038000209C802140044000FFFFFE1 +:101680000315C160000709CA0315C198000209D1FA +:101690000900000100001008041400040000000309 +:1016A0000A000001000020000415C16000000007CE +:1016B0000214000000000000020090C40000E000DE +:1016C000020090CC0000F300030090D4000209D384 +:1016D000020090E000007300030090E8000209D5CA +:1016E000020090F400007300030090FC000209D790 +:1016F0000200910800005300020091100000000455 +:1017000003009128000709D90300916C000609E045 +:1017100004009184000000060300919C000509E686 +:101720000300942C000309EB0300942C000309EE42 +:101730000300942C000309F10300942C000309F426 +:101740000300942C000309F70300942C000309FA0A +:101750000300942C000309FD0300942C00030A00ED +:101760000304000400120A030204005400000043B2 +:101770000204005C00000006020400700000000487 +:101780000304007800040A15040400880000000522 +:101790000304009C00030A19040400A800000004CC +:1017A000030400B800110A1C010401240000000019 +:1017B00001040128000000000104012C00000000C9 +:1017C0000104013000000000020401340000000F99 +:1017D000030401D000020A2D0204022C00000004C0 +:1017E0000304025800040A2F0312049400210A3350 +:1017F0000212038800000064021203900000000837 +:101800000312039C00030A54031203BC00030A578B +:10181000021203D0000000000212036C000000015D +:10182000031201BC003C0A5A031202B000020A96DD +:101830000312032400020A98021205B400000001FA +:10184000031205F800030A9A0212066C0000000158 +:10185000021201B000000001021207D800000000CF +:10186000021207D800000000021207D80000000092 +:10187000021207D800000000021207D80000000082 +:10188000021207D800000000021207D80000000072 +:10189000021207D800000000021030D8000000013A +:1018A0000710380000050A9D0710392000050AA21C +:1018B00007103B0000050AA707103C0000050AAC12 +:1018C0000316803000080AB102168054000000029E +:1018D0000416807C000000050316809000020AB9FF +:1018E0000316809C00020ABB021680AC0000005464 +:1018F000041680B800000005031680CC00080ABD5D +:10190000021680F0000000070316810000060AC5D9 +:101910000316812800030ACB0316814000060ACE75 +:101920000316816800030AD4031681A800030AD7AE +:10193000031681E800030ADA031681F800030ADDC2 +:101940000316820800070AE00316823400020AE741 +:1019500004168278000000040316828800060AE953 +:101960000216881020200101021688202020010183 +:101970000216883820200101021688482020010123 +:101980000316E6BC00020AEF0A000014000000087B +:101990000316806000070AF1041680A4000000020C +:1019A000041680B000000002031680F400030AF859 +:1019B0000316811800040AFB0316813400030AFF92 +:1019C0000316815800040B0203168174000D0B06E8 +:1019D000031681B4000D0B13021681F4000001FC04 +:1019E00002168204000000030316823C000B0B2049 +:1019F00004168268000000040216880C010101012F +:101A00000316881400030B2B0316882400050B2EE5 +:101A10000316883C00030B330316E6C400020B36A2 +:101A20000316E6E800050B380216E79400000001F3 +:101A30000A00001C000010000316806000070B3D28 +:101A4000041680A400000002041680B0000000020A +:101A5000031680F400030B440316811800040B479F +:101A60000316813400030B4B0316815800040B4E00 +:101A70000216817800000001021681840000000136 +:101A80000216819000000001021681A400000004EB +:101A9000021681B800000001021681C40000000196 +:101AA000021681D000000001021681E4000000044B +:101AB000021681F4000001FC0216820400000003FB +:101AC0000316823C00020B520216824800920092DA +:101AD00002168250012401240316825800040B547C +:101AE00004168268000000040216880C010101013E +:101AF0000316881400030B580316882400050B5B9B +:101B00000316883C00030B600316E6E800020B6333 +:101B10000216E6F8000002040A00000E0000102081 +:101B200002168174000000000316817C00020B6520 +:101B30000316818800020B670316819400040B6969 +:101B4000021681B400000000031681BC00020B6D78 +:101B5000031681C800020B6F031681D400040B71B9 +:101B6000021682440E490E490216824C00920092DF +:101B700002168254012401240316E6C400020B75E8 +:101B80000316E6F000020B770216E794000000014E +:101B90000A00000E000010400216817400000001CF +:101BA0000316817C00020B790316818800020B7BEF +:101BB0000316819400040B7D021681B4000000011D +:101BC000031681BC00020B81031681C800020B833F +:101BD000031681D400040B85021682440000000025 +:101BE0000216824C0FFF0FFF021682540000000005 +:101BF0000316E6C400020B890316E6F000020B8B05 +:101C00000216E794000000000A0000070000200010 +:101C10000316806000070B8D031680A400020B944E +:101C2000031680B000020B96021681F4000001C07A +:101C3000021682040000003F0216823C0000007F72 +:101C40000316E7BC00080B980A00000F00004020B4 +:101C5000031680F400030BA00316811800040BA3E5 +:101C60000316813400030BA70316815800040BAA46 +:101C700003168174000D0BAE031681B4000D0BBB6F +:101C80000316824000060BC80416825800000006A6 +:101C90000316827000020BCE0216880C01010101AE +:101CA0000316881400030BD00316882400050BD3F9 +:101CB0000316883C00030BD80316E6C400020BDBB6 +:101CC0000216E794000000010A00000D00004040E9 +:101CD000031680F400030BDD0316811800040BE0EB +:101CE0000316813400030BE40316815800040BE74C +:101CF00003168174000D0BEB031681B4000D0BF875 +:101D000003168240000E0C050216880C0101010129 +:101D10000316881400030C130316882400050C1600 +:101D20000316883C00030C1B0316E6C400020C1EBD +:101D30000216E794000000000A00000D0000800079 +:101D4000031680F400030C200316811800040C23F2 +:101D50000316813400030C270316815800040C2A53 +:101D600003168174000D0C2E031681B4000D0C3B7C +:101D700003168240000E0C480216880C0101012057 +:101D80000316881400030C560316882400050C590A +:101D90000316883C00030C5E0316E6C400020C61C7 +:101DA0000216E79400000001021680EC000000FF1C +:101DB0000304040800140C63020404CC00000001B6 +:101DC0000305004400020C770305005000080C795D +:101DD0000305009000070C81030500B000020C8889 +:101DE000030500C000020C8A030500D400020C8C1D +:101DF00002050114000000010305011C00020C8E05 +:101E000002050204000000010305020C00020C9010 +:101E10000205021C00000020040502400000000A28 +:101E20000405400000000D000A0000020000000848 +:101E30000305022000020C920305028000200C948E +:101E40000A000002000000100305022000020CB48A +:101E500003050280001D0CB60305000400100CD31E +:101E6000020500E00000000E020500E40000002E64 +:101E7000020500E00000001E020500E40000003E34 +:101E8000020500E00000004E020500E40000006EC4 +:101E9000020500E00000005E020500E40000007E94 +:101EA00004164024000000020316403000030CE337 +:101EB0000216404400000020021640700000001C82 +:101EC0000216420800000001021642100000000144 +:101ED0000216422000000001021642280000000104 +:101EE00002164230000000010216423800000001D4 +:101EF00002164260000000020A0000010000000912 +:101F00000216401C0003D0900A0000010000000AE5 +:101F10000216401C000002710A0000010000000CC3 +:101F20000216401C0000009C0A0000010000100185 +:101F30000216401C0005B8D80A000001000010027B +:101F40000216401C000003A90A0000010000100452 +:101F50000216401C000000EA0A00000100002001F7 +:101F60000216401C0005B8D80A000001000020023B +:101F70000216401C000003A90A0000010000200412 +:101F80000216401C000000EA02164000000000019A +:101F9000021640D8000000010316400800030CE6BA +:101FA00002164240000000000216424800000000F5 +:101FB00008164270000000020216425000000000A5 +:101FC000021642580000000008164280000000027D +:101FD0000304200800040CE90304201C00040CED99 +:101FE00002042038000000200404203C0000001FF0 +:101FF000020420B800000001040420BC0000005FBF +:102000000304223800040CF10104224800000000FF +:102010000104224C000000000104225000000000D6 +:1020200001042254000000000104225800000000B6 +:102030000104225C00000000010422600000000096 +:102040000104226400000000010422680000000076 +:102050000104226C00000000010422700000000056 +:102060000104227400000000010422780000000036 +:102070000104227C00000000030422C000040CF5CF +:102080000A0000010000000902042000000003E82B +:102090000A0000010000000A020420000000000302 +:1020A0000A0000010000000C0204200000000001F2 +:1020B0000A0000010000100102042000000005DCFD +:1020C0000A000001000010020204200000000004C9 +:1020D0000A000001000010040204200000000001BA +:1020E0000A0000010000200102042000000005DCBD +:1020F0000A00000100002002020420000000000489 +:102100000A00000100002004020420000000000179 +:1021100005180400008B0000061807B800090CF928 +:10212000041A000000004000041B240000001600F8 +:10213000031A16C800020CFB031A17D000900CFDFE +:10214000031A404000040D8D041A405000000006A0 +:10215000031A406800020D91031A52C000020D9349 +:10216000031A800003F90D95041A8FE4000000079C +:10217000031B3D900014118E021B800000000034F0 +:10218000021B804000000018021B80800000000C31 +:10219000021B80C000000020021B8BC00000000159 +:1021A0000A00000200000008021B8380000864701F +:1021B000021B83C0000002260A0000020000000982 +:1021C000021B830000086470021B8340000002268B +:1021D0000A0000020000000A021B83000000055FE5 +:1021E000021B8340000000010A0000020000000CF6 +:1021F000021B830000000157021B83400000000007 +:102200000A00000200001000021B8380000C96A848 +:10221000021B83C0000003390A0000020000100105 +:10222000021B8300000C96A8021B834000000339A8 +:102230000A00000200001002021B83000000080ECA +:10224000021B8340000000020A000002000010048C +:10225000021B830000000203021B834000000000F9 +:102260000A00000200002000021B8380000CF850CE +:10227000021B83C0000003520A000002000020017C +:10228000021B8300000CF850021B83400000035225 +:102290000A00000200002002021B83000000084D1B +:1022A000021B8340000000020A000002000020041C +:1022B000021B830000000213021B83400000000089 +:1022C000041B944800000002051C0000326C000052 +:1022D000051C800035380C9B051D0000361919E9D6 +:1022E000051D800035642770051E00001BDA34C907 +:1022F000061E426037B411A20A000001000000026D +:10230000021B1480000000000A000001000000040D +:10231000021B1480000000000A00000100000011F0 +:10232000021B1480000000000A00000200000008E8 +:10233000021800BC00000032021B945C0000003256 +:102340000A00000700000010021800BC0000000294 +:10235000021B945C00000002021B88400000000188 +:10236000021B942C0000000201180128000000004C +:10237000021B884000000000021B942C000000009B +:10238000021B9440000000010A000001000000113F +:10239000021B148000000001011800000000000072 +:1023A00001180004000000000118000800000000EF +:1023B0000118000C000000000118001000000000CF +:1023C000011800140000000003180020001A11A4D6 +:1023D000031800A4000211BE02180224000000002D +:1023E00002180234000000000218024C0000000035 +:1023F000021802E4000000FF0818100000000400AA +:102400000A0000010000001008182000000006006B +:10241000031A1A20000411C0041A30000000001230 +:10242000041A309000000012041AD4C80000000200 +:10243000041AD4D800000020041AD5D800000002E5 +:10244000041B440000000006031A1A30000411C4E3 +:10245000041A304800000012041A30D8000000129C +:10246000041AD4D000000002041AD558000000203D +:10247000041AD5E000000002041B44180000000606 +:10248000031A4000000211C8041A500000000002A4 +:10249000041A508000000012031A6140000211CAA1 +:1024A000041AA00000000002041B443000000002D7 +:1024B000031A4008000211CC041A50100000000258 +:1024C000041A50C800000012031A6148000211CE1D +:1024D000041AA00800000002041B44380000000297 +:1024E000031A4010000211D0041A5020000000020C +:1024F000041A511000000012031A6150000211D298 +:10250000041AA01000000002041B44400000000256 +:10251000031A4018000211D4041A503000000002BF +:10252000041A515800000012031A6158000211D613 +:10253000041AA01800000002041B44480000000216 +:10254000031A4020000211D8041A50400000000273 +:10255000041A51A000000012031A6160000211DA8F +:10256000041AA02000000002041B445000000002D6 +:10257000031A4028000211DC041A50500000000227 +:10258000041A51E800000012031A6168000211DE0B +:10259000041AA02800000002041B44580000000296 +:1025A000031A4030000211E0041A506000000002DB +:1025B000041A523000000012031A6170000211E286 +:1025C000041AA03000000002041B44600000000256 +:1025D000031A4038000211E4041A5070000000028F +:1025E000041A527800000012031A6178000211E602 +:1025F000041AA03800000002041B44680000000216 +:10260000020E004C00000032030E0054000811E8D6 +:10261000030E0094000711F0030E00B4000211F73E +:10262000020E00C400000000020E00CC00000006F4 +:10263000030E00D8000211F9020E0144000000014F +:10264000030E014C000211FB020E02040000000107 +:10265000030E020C000211FD030E021C000411FF08 +:10266000030E0280001B1203040E03000000001280 +:10267000040E2000000008000A000001000000080D +:10268000040E02EC00000005030E00040011121EEF +:10269000020E01100000000F020E01140000002FB6 +:1026A000020E01100000001F020E01140000003F86 +:1026B000020E01100000004F020E01140000006F16 +:1026C000020E01100000005F020E01140000007FE6 +:1026D000020C100000000028030C40080004122F18 +:1026E000030C401C00041233030C40380006123760 +:1026F000040C40500000001F020C40CC0000000100 +:10270000040C40D00000003A030C41B80006123D12 +:10271000040C41D00000001A030C4238000412439C +:10272000010C424800000000010C424C0000000077 +:10273000010C425000000000010C42540000000057 +:10274000010C425800000000010C425C0000000037 +:10275000010C426000000000010C42640000000017 +:10276000010C426800000000010C426C00000000F7 +:10277000010C427000000000010C427400000000D7 +:10278000010C427800000000010C427C00000000B7 +:10279000010C428000000000030C42D800041247E4 +:1027A0000A00000100000009020C4000000003E8DC +:1027B0000A0000010000000A020C400000000003B3 +:1027C0000A0000010000000C020C400000000001A3 +:1027D0000A00000100001001020C4000000005DCAE +:1027E0000A00000100001002020C4000000000047A +:1027F0000A00000100001004020C4000000000016B +:102800000A00000100002001020C4000000005DC6D +:102810000A00000100002002020C40000000000439 +:102820000A00000100002004020C4000000000012A +:102830000530040000C00000063007E80003124B1A +:1028400004320000000040000433240000001600A1 +:1028500003322C700090124D033234C0000812DD98 +:102860000432408000000010033240C0000212E534 +:1028700003337400000412E7023380000000001AE2 +:10288000023380400000004E0233808000000010C0 +:10289000023380C00000002002338BC00000000122 +:1028A0000A00000200000008023383800008647000 +:1028B000023383C0000002260A0000020000000963 +:1028C0000233830000086470023383400000022654 +:1028D0000A0000020000000A023383000000055FC6 +:1028E00002338340000000010A0000020000000CD7 +:1028F00002338300000001570233834000000000D0 +:102900000A0000020000100002338380000C96A829 +:10291000023383C0000003390A00000200001001E6 +:1029200002338300000C96A8023383400000033971 +:102930000A00000200001002023383000000080EAB +:1029400002338340000000020A000002000010046D +:1029500002338300000002030233834000000000C2 +:102960000A0000020000200002338380000CF850AF +:10297000023383C0000003520A000002000020015D +:1029800002338300000CF8500233834000000352EE +:102990000A00000200002002023383000000084DFC +:1029A00002338340000000020A00000200002004FD +:1029B0000233830000000213023383400000000052 +:1029C000053400003504000005348000355C0D41FD +:1029D0000535000038A21A9805358000378B28C1CC +:1029E0000536000034EA36A4053680001EDB43DFDE +:1029F0000636C7A0270C12EB0A00000100000002F7 +:102A000002331480000000000A00000100000004EE +:102A100002331480000000000A00000100000011D1 +:102A200002331480000000000A00000100000008CA +:102A3000023000BC000000320A0000040000001058 +:102A4000023000BC00000002023388400000000198 +:102A5000013001380000000002338840000000000F +:102A60000A00000100000011023314800000000180 +:102A700001300000000000000130000400000000F0 +:102A800001300008000000000130000C00000000D0 +:102A900001300010000000000130001400000000B0 +:102AA00003300020001A12ED033000A400021307C7 +:102AB0000230022400000000023002340000000056 +:102AC0000230024C00000000023002E40000FFFF70 +:102AD00008302000000008000A000001000000107B +:102AE000083040000000020004322C4000000002C8 +:102AF00003322C5000041309043293C0000000027A +:102B000004329400000000100432C00000000020D5 +:102B10000432C100000000200432C2000000002086 +:102B20000432C300000000200432C4000000002072 +:102B30000432C500000000200432C600000000205E +:102B40000432C700000000200432C800000000204A +:102B50000432C900000000200432CA000000002036 +:102B60000432CB00000000200432CC000000002022 +:102B70000432CD00000000200432CE00000000200E +:102B80000432CF00000000200432DB80000000028D +:102B900004322C480000000203322C600004130DA4 +:102BA000043293C800000002043294400000001078 +:102BB0000432C080000000200432C18000000020E8 +:102BC0000432C280000000200432C38000000020D4 +:102BD0000432C480000000200432C58000000020C0 +:102BE0000432C680000000200432C78000000020AC +:102BF0000432C880000000200432C9800000002098 +:102C00000432CA80000000200432CB800000002083 +:102C10000432CC80000000200432CD80000000206F +:102C20000432CE80000000200432CF80000000205B +:102C30000432DB88000000020432101000000002A1 +:102C400004322C00000000020432102000000002B8 +:102C500004322C0800000002043210300000000290 +:102C600004322C1000000002043210400000000268 +:102C700004322C1800000002043210500000000240 +:102C800004322C2000000002043210600000000218 +:102C900004322C28000000020432107000000002F0 +:102CA00004322C30000000020432108000000002C8 +:102CB00004322C38000000020202005800000032EA +:102CC0000302006000081311030200A0000B131997 +:102CD000020200D000000007030200DC00031324FE +:102CE000030200F000021327020200FC0000000CA7 +:102CF0000202012000000000020201340000000274 +:102D0000020201B0000000010202020C00000001FA +:102D1000030202140002132902020404000000014D +:102D20000302040C0002132B0302041C0004132DE5 +:102D30000302048000201331040205000000001289 +:102D4000040280000000200003020004001413515C +:102D500002020108000000C802020118000000027F +:102D6000020201C400000000020201CC00000000C9 +:102D7000020201D400000002020201DC0000000295 +:102D8000020201E4000000FF020201EC000000FF6B +:102D90000202010C000000C80202011C0000000237 +:102DA000020201C800000000020201D00000000081 +:102DB000020201D800000002020201E0000000024D +:102DC000020201E8000000FF020201F0000000FF23 +:102DD00002020108000000C80202011800000002FF +:102DE000020201C400000000020201CC0000000049 +:102DF000020201D400000002020201DC0000000215 +:102E0000020201E4000000FF020201EC000000FFEA +:102E10000202010C000000C80202011C00000002B6 +:102E2000020201C800000000020201D00000000000 +:102E3000020201D800000002020201E000000002CC +:102E4000020201E8000000FF020201F0000000FFA2 +:102E500002020108000000C802020118000000027E +:102E6000020201C400000000020201CC00000000C8 +:102E7000020201D400000002020201DC0000000294 +:102E8000020201E4000000FF020201EC000000FF6A +:102E90000202010C000000C80202011C0000000236 +:102EA000020201C800000000020201D00000000080 +:102EB000020201D800000002020201E0000000024C +:102EC000020201E8000000FF020201F0000000FF22 +:102ED00002020108000000C80202011800000002FE +:102EE000020201C400000000020201CC0000000048 +:102EF000020201D400000002020201DC0000000214 +:102F0000020201E4000000FF020201EC000000FFE9 +:102F10000202010C000000C80202011C00000002B5 +:102F2000020201C800000000020201D000000000FF +:102F3000020201D800000002020201E000000002CB +:102F4000020201E8000000FF020201F0000000FFA1 +:102F50000216100000000028031660080003136525 +:102F60000316601C00041368031660380012136C0B +:102F7000041660800000000E021660B80000000118 +:102F8000041660BC00000008021660DC00000001AE +:102F9000041660E000000004021660F0000000016A +:102FA000041660F400000031031661B80002137EBD +:102FB000041661C000000007031661DC00061380E0 +:102FC000041661F400000011031662380004138631 +:102FD00001166248000000000116624C000000006B +:102FE000011662500000000001166254000000004B +:102FF00001166258000000000116625C000000002B +:10300000011662600000000001166264000000000A +:1030100001166268000000000116626C00000000EA +:1030200001166270000000000116627400000000CA +:1030300001166278000000000116627C00000000AA +:10304000011662D400000000031662D80004138A3F +:103050000A0000010000000902166000000003E8F9 +:103060000A0000010000000A0216600000000003D0 +:103070000A0000010000000C0216600000000001C0 +:103080000A0000010000100102166000000005DCCB +:103090000A00000100001002021660000000000497 +:1030A0000A00000100001004021660000000000188 +:1030B0000A0000010000200102166000000005DC8B +:1030C0000A00000100002002021660000000000457 +:1030D0000A00000100002004021660000000000148 +:1030E0000528040000A90000062807C80007138E61 +:1030F000042A000000004000042B240000001600F9 +:10310000032A300000021390032A4000001013929B +:10311000032A8408000813A2032A9348000413AA70 +:10312000032A9668000813AE032A98B8000213B663 +:10313000032A9950009013B8032B4D9000141448A3 +:10314000022B800000000000022B804000000018CD +:10315000022B80800000000C022B80C00000006663 +:10316000022B8BC0000000010A00000300000008D1 +:10317000022A9CA800000002022B838000086470D1 +:10318000022B83C0000002260A0000020000000992 +:10319000022B830000086470022B8340000002268B +:1031A0000A0000020000000A022B83000000055FF5 +:1031B000022B8340000000010A0000020000000C06 +:1031C000022B830000000157022B83400000000007 +:1031D0000A00000300000020022A9CAC000000004E +:1031E000032AC4E00004145C032AC5000002146032 +:1031F0000A00000200000040022A9CAC000000010E +:10320000032AC4E0000A14620A0000030000100050 +:10321000022A9CA800000003022B8380000C96A8C1 +:10322000022B83C0000003390A00000200001001D5 +:10323000022B8300000C96A8022B83400000033968 +:103240000A00000200001002022B83000000080E9A +:10325000022B8340000000020A000002000010045C +:10326000022B830000000203022B834000000000B9 +:103270000A00000300002000022A9CA800000004AD +:10328000022B8380000CF850022B83C000000352F5 +:103290000A00000200002001022B8300000CF850FD +:1032A000022B8340000003520A00000200002002AB +:1032B000022B83000000084D022B83400000000217 +:1032C0000A00000200002004022B83000000021309 +:1032D000022B8340000000000A00000100004000B3 +:1032E000022A9CB0000000000A00000100008000DB +:1032F000022A9CB000000001042B94480000000248 +:10330000052C000034970000052C80003A730D2630 +:10331000052D000035661BC3052D80003B8E291D41 +:10332000052E00003B753801052E8000393A46DF36 +:10333000052F0000321F552E062F787010F2146CE6 +:103340000A00000100000002022B148000000000AF +:103350000A00000100000004022B1480000000009D +:103360000A00000100000011022B14800000000080 +:103370000A00000200000008022800BC0000003221 +:10338000022B945C000000320A00000700000010CD +:10339000022800BC00000002022B945C0000000226 +:1033A000022B884000000001022B942C0000000238 +:1033B0000128013800000000022B884000000000B6 +:1033C000022B942C00000000022B9440000000010E +:1033D0000A00000100000011022B1480000000010F +:1033E0000128000000000000012800040000000087 +:1033F00001280008000000000128000C0000000067 +:103400000128001000000000012800140000000046 +:1034100003280020001A146E032800A40002148858 +:1034200002280224000000000228023400000000EC +:103430000228024C00000000022802E40000FFFF06 +:1034400008282000000008000A0000010000001009 +:103450000828400000000200042A5000000000027A +:10346000042A501000000002042A5020000000022C +:10347000042A503000000002042A93580000002063 +:10348000042A94580000000E032A94900002148A23 +:10349000042A94D80000000E032A95100002148C10 +:1034A000042A95580000000E032A95900002148EFD +:1034B000042A95D80000000E032A961000021490EA +:1034C000032A968800021492042ABC980000000285 +:1034D000042A500800000002042A501800000002CC +:1034E000042A502800000002042A5038000000027C +:1034F000042A93D800000020042A94980000000EAB +:10350000032A94D000021494042A95180000000E97 +:10351000032A955000021496042A95980000000E84 +:10352000032A95D000021498042A96180000000E71 +:10353000032A96500002149A032A96900002149CC3 +:10354000042ABCA000000002042A50480000000E1B +:10355000032A96980010149E042A98D000000002B6 +:10356000042A991000000002042AC480000000020E +:10357000042A50800000000E032A96D8001014AED2 +:10358000042A98D800000002042A991800000002BA +:10359000042AC48800000002042A50B80000000E6B +:1035A000032A9718001014BE042A98E000000002B5 +:1035B000042A992000000002042AC490000000029E +:1035C000042A50F00000000E032A9758001014CE71 +:1035D000042A98E800000002042A9928000000024A +:1035E000042AC49800000002042A51280000000E9A +:1035F000032A9798001014DE042A98F000000002B5 +:10360000042A993000000002042AC4A0000000022D +:10361000042A51600000000E032A97D8001014EE0F +:10362000042A98F800000002042A993800000002D9 +:10363000042AC4A800000002042A51980000000EC9 +:10364000032A9818001014FE042A990000000002B2 +:10365000042A994000000002042AC4B000000002BD +:10366000042A51D00000000E032A98580010150EAD +:10367000042A990800000002042A99480000000268 +:10368000042AC4B8000000020400A0000000000CDE +:103690000400A050000000020300A0EC0008151E6A +:1036A0000300A19C000415260200A45C00000C008D +:1036B0000400A6A8000000020200A6D0000000003E +:1036C0000200A61C000000030300A0700005152ADC +:1036D0000400A084000000050200A0980FE0000094 +:1036E0000400A09C000000070300A0B8000D152FE7 +:1036F0000400A22C000000040200A688000000FCC8 +:103700000400A68C000000070200A6F400000000E0 +:103710000300A10C0006153C0400A12400000005D4 +:103720000200A1380FE000000400A13C00000007E7 +:103730000300A158000D15420400A23C0000000443 +:103740000200A6B0000000FC0400A6B400000007C0 +:103750000200A6F8000000000200A03000000000F7 +:103760000200A034000000000200A03800000000A9 +:103770000200A03C000000000200A0400000000089 +:103780000200A044000000000200A0480000000069 +:103790000200A04C0000000000000000000000003B +:1037A0000000000100000000000000000000000018 +:1037B0000000000000000000000000000000000009 +:1037C00000000000000000000000000000010017E1 +:1037D0000017001F001F0022000000000000000072 +:1037E00000000000000000000000000000000000D9 +:1037F0000000000000000000002200340000000073 +:103800000000000000340035003500360036003777 +:1038100000370038003800390039003A003A003BE0 +:10382000003B003C003C00430000000000000000A2 +:103830000000000000000000000000000000000088 +:103840000000000000000000000000000000000078 +:103850000043004C0000000000000000004C004D40 +:10386000004D004E004E004F004F005000500051E0 +:103870000051005200520053005300540054007E87 +:103880000000000000000000000000000000000038 +:103890000000000000000000000000000000000028 +:1038A0000000000000000000007E01E000000000B9 +:1038B0000000000001E001E501E501EA01EA01EF95 +:1038C00001EF01F401F401F901F901FE01FE020327 +:1038D00002030208000000000000000000000000D9 +:1038E00000000000000000000000000000000000D8 +:1038F00000000000000000000000000000000000C8 +:103900000208020C0000000000000000000000009F +:1039100000000000000000000000000000000000A7 +:10392000000000000000000000000000020C021C6B +:103930000000000000000000021C021E021E022007 +:103940000220022202220224022402260226022847 +:103950000228022A022A022C0000000000000000B7 +:103960000000000000000000000000000000000057 +:103970000000000000000000000000000000000047 +:1039800000000000022C022F0000000000000000D8 +:10399000022F023202320235023502380238023B6F +:1039A000023B023E023E02410241024402440247FF +:1039B0000247024B024B024F024F02530253025482 +:1039C0000254025502550256025602570257025837 +:1039D000025802590259025A025A025B025B026003 +:1039E00002600286028602AB02AB02AC02AC02AD00 +:1039F00002AD02AE02AE02AF02AF02B002B002B13F +:103A000002B102B202B202B302B302CA0000000065 +:103A100000000000000000000000000000000000A6 +:103A20000000000000000000000000000000000096 +:103A30000000000002CA02D70000000000000000E1 +:103A400002D702D802D802D902D902DA02DA02DB9E +:103A500002DB02DC02DC02DD02DD02DE02DE02DF6E +:103A600002DF02F000000000000000000000000083 +:103A70000000000000000000000000000000000046 +:103A800000000000000000000000000002F002FE44 +:103A9000000000000000000002FE02FF02FF030021 +:103AA00003000301030103020302030303030304EE +:103AB00003040305030503060306030B00000000CF +:103AC00000000000000000000000000000000000F6 +:103AD00000000000000000000000000000000000E6 +:103AE00000000000030B03A900000000000000001C +:103AF00000000000000000000000000000000000C6 +:103B000000000000000000000000000000000000B5 +:103B100003A903AB0000000000000000000000004B +:103B20000000000000000000000000000000000095 +:103B300000000000000000000000000003AB03BF15 +:103B4000000000000000000003BF03C003C003C169 +:103B500003C103C203C203C303C303C403C403C535 +:103B600003C503C603C603C703C703E703E703EAA6 +:103B700003EA03ED00000000000000000000000068 +:103B80000000000000000000000000000000000035 +:103B90000000000003ED041500000000000000001C +:103BA0000000000000000000000000000000000015 +:103BB0000000000000000000000000000000000005 +:103BC000041504750475047C047C0483048304894F +:103BD0000489048F048F04950495049B049B04A11D +:103BE00004A104A704A704AD04AD04B304B304C541 +:103BF000000000000000000004C504C604C604C79D +:103C000004C704C804C804C904C904CA04CA04CB4C +:103C100004CB04CC04CC04CD04CD04CE00000000C1 +:103C20000000000000000000000000000000000094 +:103C30000000000000000000000000000000000084 +:103C40000000000004CE04F90000000000000000A5 +:103C50000000000000000000000000000000000064 +:103C60000000000000000000000000000000000054 +:103C700004F90550055005650565057A057A057C4A +:103C8000057C057E057E058005800582058205840C +:103C900005840586058605880588058A058A059DAB +:103CA0000000000000000000059D05A505A505AD6C +:103CB00005AD05B505B505BD05BD05C505C505CDF4 +:103CC00005CD05D505D505DD05DD05DE00000000C7 +:103CD00000000000000000000000000000000000E4 +:103CE00000000000000000000000000000000000D4 +:103CF0000000000005DE060F0000000000000000CC +:103D000000000000000000000000000000000000B3 +:103D100000000000000000000000000000000000A3 +:103D2000060F067E067E068D068D069C069C06A165 +:103D300006A106A606A606AB06AB06B006B006B5FB +:103D400006B506BA06BA06BF06BF06C406C406CC48 +:103D500006CC06D506D506DE06DE06DF06DF06E063 +:103D600006E006E106E106E206E206E306E306E413 +:103D700006E406E506E506E6000000000000000097 +:103D800000002000000040000000600000008000F3 +:103D90000000A0000000C0000000E00000010000E2 +:103DA00000012000000140000001600000018000CF +:103DB0000001A0000001C0000001E00000020000BE +:103DC00000022000000240000002600000028000AB +:103DD0000002A0000002C0000002E000000300009A +:103DE0000003200000034000000360000003800087 +:103DF0000003A0000003C0000003E0000004000076 +:103E00000004200000044000000460000004800062 +:103E10000004A0000004C0000004E0000005000051 +:103E2000000520000005400000056000000580003E +:103E30000005A0000005C0000005E000000600002D +:103E4000000620000006400000066000000680001A +:103E50000006A0000006C0000006E0000007000009 +:103E600000072000000740000007600000078000F6 +:103E70000007A0000007C0000007E00000080000E5 +:103E800000082000000840000008600000088000D2 +:103E90000008A0000008C0000008E00000090000C1 +:103EA00000092000000940000009600000098000AE +:103EB0000009A0000009C0000009E000000A00009D +:103EC000000A2000000A4000000A6000000A80008A +:103ED000000AA000000AC000000AE000000B000079 +:103EE000000B2000000B4000000B6000000B800066 +:103EF000000BA000000BC000000BE000000C000055 +:103F0000000C2000000C4000000C6000000C800041 +:103F1000000CA000000CC000000CE000000D000030 +:103F2000000D2000000D4000000D6000000D80001D +:103F3000000DA000000DC000000DE000000E00000C +:103F4000000E2000000E4000000E6000000E8000F9 +:103F5000000EA000000EC000000EE000000F0000E8 +:103F6000000F2000000F4000000F6000000F8000D5 +:103F7000000FA000000FC000000FE00000100000C4 +:103F800000102000001040000010600000108000B1 +:103F90000010A0000010C0000010E00000110000A0 +:103FA000001120000011400000116000001180008D +:103FB0000011A0000011C0000011E000001200007C +:103FC0000012200000124000001260000012800069 +:103FD0000012A0000012C0000012E0000013000058 +:103FE0000013200000134000001360000013800045 +:103FF0000013A0000013C0000013E0000014000034 +:104000000014200000144000001460000014800020 +:104010000014A0000014C0000014E000001500000F +:1040200000152000001540000015600000158000FC +:104030000015A0000015C0000015E00000160000EB +:1040400000162000001640000016600000168000D8 +:104050000016A0000016C0000016E00000170000C7 +:1040600000172000001740000017600000178000B4 +:104070000017A0000017C0000017E00000180000A3 +:104080000018200000184000001860000018800090 +:104090000018A0000018C0000018E000001900007F +:1040A000001920000019400000196000001980006C +:1040B0000019A0000019C0000019E000001A00005B +:1040C000001A2000001A4000001A6000001A800048 +:1040D000001AA000001AC000001AE000001B000037 +:1040E000001B2000001B4000001B6000001B800024 +:1040F000001BA000001BC000001BE000001C000013 +:10410000001C2000001C4000001C6000001C8000FF +:10411000001CA000001CC000001CE000001D0000EE +:10412000001D2000001D4000001D6000001D8000DB +:10413000001DA000001DC000001DE000001E0000CA +:10414000001E2000001E4000001E6000001E8000B7 +:10415000001EA000001EC000001EE000001F0000A6 +:10416000001F2000001F4000001F6000001F800093 +:10417000001FA000001FC000001FE0000020000082 +:10418000002020000020400000206000002080006F +:104190000020A0000020C0000020E000002100005E +:1041A000002120000021400000216000002180004B +:1041B0000021A0000021C0000021E000002200003A +:1041C0000022200000224000002260000022800027 +:1041D0000022A0000022C0000022E0000023000016 +:1041E0000023200000234000002360000023800003 +:1041F0000023A0000023C0000023E00000240000F2 +:1042000000242000002440000024600000248000DE +:104210000024A0000024C0000024E00000250000CD +:1042200000252000002540000025600000258000BA +:104230000025A0000025C0000025E00000260000A9 +:104240000026200000264000002660000026800096 +:104250000026A0000026C0000026E0000027000085 +:104260000027200000274000002760000027800072 +:104270000027A0000027C0000027E0000028000061 +:10428000002820000028400000286000002880004E +:104290000028A0000028C0000028E000002900003D +:1042A000002920000029400000296000002980002A +:1042B0000029A0000029C0000029E000002A000019 +:1042C000002A2000002A4000002A6000002A800006 +:1042D000002AA000002AC000002AE000002B0000F5 +:1042E000002B2000002B4000002B6000002B8000E2 +:1042F000002BA000002BC000002BE000002C0000D1 +:10430000002C2000002C4000002C6000002C8000BD +:10431000002CA000002CC000002CE000002D0000AC +:10432000002D2000002D4000002D6000002D800099 +:10433000002DA000002DC000002DE000002E000088 +:10434000002E2000002E4000002E6000002E800075 +:10435000002EA000002EC000002EE000002F000064 +:10436000002F2000002F4000002F6000002F800051 +:10437000002FA000002FC000002FE0000030000040 +:10438000003020000030400000306000003080002D +:104390000030A0000030C0000030E000003100001C +:1043A0000031200000314000003160000031800009 +:1043B0000031A0000031C0000031E00000320000F8 +:1043C00000322000003240000032600000328000E5 +:1043D0000032A0000032C0000032E00000330000D4 +:1043E00000332000003340000033600000338000C1 +:1043F0000033A0000033C0000033E00000340000B0 +:10440000003420000034400000346000003480009C +:104410000034A0000034C0000034E000003500008B +:104420000035200000354000003560000035800078 +:104430000035A0000035C0000035E0000036000067 +:104440000036200000364000003660000036800054 +:104450000036A0000036C0000036E0000037000043 +:104460000037200000374000003760000037800030 +:104470000037A0000037C0000037E000003800001F +:10448000003820000038400000386000003880000C +:104490000038A0000038C0000038E00000390000FB +:1044A00000392000003940000039600000398000E8 +:1044B0000039A0000039C0000039E000003A0000D7 +:1044C000003A2000003A4000003A6000003A8000C4 +:1044D000003AA000003AC000003AE000003B0000B3 +:1044E000003B2000003B4000003B6000003B8000A0 +:1044F000003BA000003BC000003BE000003C00008F +:10450000003C2000003C4000003C6000003C80007B +:10451000003CA000003CC000003CE000003D00006A +:10452000003D2000003D4000003D6000003D800057 +:10453000003DA000003DC000003DE000003E000046 +:10454000003E2000003E4000003E6000003E800033 +:10455000003EA000003EC000003EE000003F000022 +:10456000003F2000003F4000003F6000003F80000F +:10457000003FA000003FC000003FE00000400000FE +:1045800000402000004040000040600000408000EB +:104590000040A0000040C0000040E00000410000DA +:1045A00000412000004140000041600000418000C7 +:1045B0000041A0000041C0000041E00000420000B6 +:1045C00000422000004240000042600000428000A3 +:1045D0000042A0000042C0000042E0000043000092 +:1045E000004320000043400000436000004380007F +:1045F0000043A0000043C0000043E000004400006E +:10460000004420000044400000446000004480005A +:104610000044A0000044C0000044E0000045000049 +:104620000045200000454000004560000045800036 +:104630000045A0000045C0000045E0000046000025 +:104640000046200000464000004660000046800012 +:104650000046A0000046C0000046E0000047000001 +:1046600000472000004740000047600000478000EE +:104670000047A0000047C0000047E00000480000DD +:1046800000482000004840000048600000488000CA +:104690000048A0000048C0000048E00000490000B9 +:1046A00000492000004940000049600000498000A6 +:1046B0000049A0000049C0000049E000004A000095 +:1046C000004A2000004A4000004A6000004A800082 +:1046D000004AA000004AC000004AE000004B000071 +:1046E000004B2000004B4000004B6000004B80005E +:1046F000004BA000004BC000004BE000004C00004D +:10470000004C2000004C4000004C6000004C800039 +:10471000004CA000004CC000004CE000004D000028 +:10472000004D2000004D4000004D6000004D800015 +:10473000004DA000004DC000004DE000004E000004 +:10474000004E2000004E4000004E6000004E8000F1 +:10475000004EA000004EC000004EE000004F0000E0 +:10476000004F2000004F4000004F6000004F8000CD +:10477000004FA000004FC000004FE00000500000BC +:1047800000502000005040000050600000508000A9 +:104790000050A0000050C0000050E0000051000098 +:1047A0000051200000514000005160000051800085 +:1047B0000051A0000051C0000051E0000052000074 +:1047C0000052200000524000005260000052800061 +:1047D0000052A0000052C0000052E0000053000050 +:1047E000005320000053400000536000005380003D +:1047F0000053A0000053C0000053E000005400002C +:104800000054200000544000005460000054800018 +:104810000054A0000054C0000054E0000055000007 +:1048200000552000005540000055600000558000F4 +:104830000055A0000055C0000055E00000560000E3 +:1048400000562000005640000056600000568000D0 +:104850000056A0000056C0000056E00000570000BF +:1048600000572000005740000057600000578000AC +:104870000057A0000057C0000057E000005800009B +:104880000058200000584000005860000058800088 +:104890000058A0000058C0000058E0000059000077 +:1048A0000059200000594000005960000059800064 +:1048B0000059A0000059C0000059E000005A000053 +:1048C000005A2000005A4000005A6000005A800040 +:1048D000005AA000005AC000005AE000005B00002F +:1048E000005B2000005B4000005B6000005B80001C +:1048F000005BA000005BC000005BE000005C00000B +:10490000005C2000005C4000005C6000005C8000F7 +:10491000005CA000005CC000005CE000005D0000E6 +:10492000005D2000005D4000005D6000005D8000D3 +:10493000005DA000005DC000005DE000005E0000C2 +:10494000005E2000005E4000005E6000005E8000AF +:10495000005EA000005EC000005EE000005F00009E +:10496000005F2000005F4000005F6000005F80008B +:10497000005FA000005FC000005FE000006000007A +:104980000060200000604000006060000060800067 +:104990000060A0000060C0000060E0000061000056 +:1049A0000061200000614000006160000061800043 +:1049B0000061A0000061C0000061E0000062000032 +:1049C000006220000062400000626000006280001F +:1049D0000062A0000062C0000062E000006300000E +:1049E00000632000006340000063600000638000FB +:1049F0000063A0000063C0000063E00000640000EA +:104A000000642000006440000064600000648000D6 +:104A10000064A0000064C0000064E00000650000C5 +:104A200000652000006540000065600000658000B2 +:104A30000065A0000065C0000065E00000660000A1 +:104A4000006620000066400000666000006680008E +:104A50000066A0000066C0000066E000006700007D +:104A6000006720000067400000676000006780006A +:104A70000067A0000067C0000067E0000068000059 +:104A80000068200000684000006860000068800046 +:104A90000068A0000068C0000068E0000069000035 +:104AA0000069200000694000006960000069800022 +:104AB0000069A0000069C0000069E000006A000011 +:104AC000006A2000006A4000006A6000006A8000FE +:104AD000006AA000006AC000006AE000006B0000ED +:104AE000006B2000006B4000006B6000006B8000DA +:104AF000006BA000006BC000006BE000006C0000C9 +:104B0000006C2000006C4000006C6000006C8000B5 +:104B1000006CA000006CC000006CE000006D0000A4 +:104B2000006D2000006D4000006D6000006D800091 +:104B3000006DA000006DC000006DE000006E000080 +:104B4000006E2000006E4000006E6000006E80006D +:104B5000006EA000006EC000006EE000006F00005C +:104B6000006F2000006F4000006F6000006F800049 +:104B7000006FA000006FC000006FE0000070000038 +:104B80000070200000704000007060000070800025 +:104B90000070A0000070C0000070E0000071000014 +:104BA0000071200000714000007160000071800001 +:104BB0000071A0000071C0000071E00000720000F0 +:104BC00000722000007240000072600000728000DD +:104BD0000072A0000072C0000072E00000730000CC +:104BE00000732000007340000073600000738000B9 +:104BF0000073A0000073C0000073E00000740000A8 +:104C00000074200000744000007460000074800094 +:104C10000074A0000074C0000074E0000075000083 +:104C20000075200000754000007560000075800070 +:104C30000075A0000075C0000075E000007600005F +:104C4000007620000076400000766000007680004C +:104C50000076A0000076C0000076E000007700003B +:104C60000077200000774000007760000077800028 +:104C70000077A0000077C0000077E0000078000017 +:104C80000078200000784000007860000078800004 +:104C90000078A0000078C0000078E00000790000F3 +:104CA00000792000007940000079600000798000E0 +:104CB0000079A0000079C0000079E000007A0000CF +:104CC000007A2000007A4000007A6000007A8000BC +:104CD000007AA000007AC000007AE000007B0000AB +:104CE000007B2000007B4000007B6000007B800098 +:104CF000007BA000007BC000007BE000007C000087 +:104D0000007C2000007C4000007C6000007C800073 +:104D1000007CA000007CC000007CE000007D000062 +:104D2000007D2000007D4000007D6000007D80004F +:104D3000007DA000007DC000007DE000007E00003E +:104D4000007E2000007E4000007E6000007E80002B +:104D5000007EA000007EC000007EE000007F00001A +:104D6000007F2000007F4000007F6000007F800007 +:104D7000007FA000007FC000007FE000007FE00116 +:104D800000000000000001FF000002000000000021 +:104D9000000003FF00000400000004010000040103 +:104DA000000002380000011C0000011C0000011C72 +:104DB0000000005000000050000000500000000102 +:104DC00000000158000001A8000000C8000000A079 +:104DD000000000C800000000000000000000005AB1 +:104DE000000000FA00000401000004010000000AB5 +:104DF000000000320000040100000401000001581E +:104E0000000001A800000018000000680000015820 +:104E1000000001A800000158000001A800000018CF +:104E20000000006800000158000001A80000000117 +:104E30000000000200000000000000080215002031 +:104E400002150020081000000000003600000000DD +:104E5000000000040000000400000000000000004A +:104E60000000000100000004000000020000000239 +:104E700000000001000000020000002000000040CF +:104E800000000040000000030000001800002000A7 +:104E9000000040C000006180000082400000A300CC +:104EA0000000C3C00000E4800001054000012600AE +:104EB000000146C000016780000188400001A90090 +:104EC0000001C9C00001EA8000020B4000022C0072 +:104ED00000024CC000026D8000028E400002AF0054 +:104EE0000002CFC00002F08000001140000000016D +:104EF00000000001000000010000000100000001AE +:104F0000000000010000000100000001000000019D +:104F1000000000010000000100000001000000018D +:104F200000000001000000010003D0000000003D6F +:104F300000000001000D0000000700D000028140C9 +:104F4000000B81680002022000010240000F0250A5 +:104F500000010340000C0000000800C00002814076 +:104F6000000B81680002022000010240000702508D +:104F7000000202C000100000000801000002818051 +:104F8000000B81A80002026000018280000E82985E +:104F900000080380000F0000000100F00002810003 +:104FA00000090128000201B8000101D8000E01E843 +:104FB000000002C8FFFFFFF301AFFFFF0000000089 +:104FC00000000000000000000000000000000000E1 +:104FD00000000000FFFFFFF100EFFFFF00000000F6 +:104FE00000000000000000000000000000010000C0 +:104FF00000000000FFFFFFF6005FFFFF0000000061 +:10500000000000000000000000000000000200009E +:1050100000000000FFFFF4061CBFFFFF00000005BA +:105020000000000000000014000000000004000068 +:1050300000000000FFFFFFF2004FFFFF0000000034 +:105040000000000000000000000000000008000058 +:1050500000000000FFFFFFFA002FFFFF000000002C +:105060000000000000000000000000000010000030 +:1050700000000000FFFFFFF701EFFFFF000000004E +:105080000000000000000000000000000020000000 +:1050900000000000FFFFFFF5002FFFFF00000000F1 +:1050A00000000000000000000000000000400000C0 +:1050B00000000000FFFFFFF3018FFFFF0000000072 +:1050C00000000000000000000000000000000000E0 +:1050D00000000000FFFFFFF1010FFFFF00000000D4 +:1050E00000000000000000000000000000010000BF +:1050F00000000000FFFFFFF6005FFFFF0000000060 +:10510000000000000000000000000000000200009D +:1051100000000000FFFFF4061CBFFFFF00000005B9 +:105120000000000000000014000000000004000067 +:1051300000000000FFFFFFF2004FFFFF0000000033 +:105140000000000000000000000000000008000057 +:1051500000000000FFFFFFFA002FFFFF000000002B +:10516000000000000000000000000000001000002F +:1051700000000000FFFFFFF700EFFFFF000000004E +:1051800000000000000000000000000000200000FF +:1051900000000000FFFFFFF5004FFFFF00000000D0 +:1051A00000000000000000000000000000400000BF +:1051B00000000000FFFFFFFF00CFFFFF0000000026 +:1051C00000000000000000CC000000000000000013 +:1051D00000000000FFFFFFFF00CFFFFF0000000006 +:1051E00000000000000000CC0000000000010000F2 +:1051F00000000000FFFFFFFF00CFFFFF00000000E6 +:1052000000000000000000CC0000000000020000D0 +:1052100000000000FFFFFFFF00CFFFFF00000000C5 +:1052200000000000000000CC0000000000040000AE +:1052300000000000FFFFFFFF00CFFFFF00000000A5 +:1052400000000000000000CC00000000000800008A +:1052500000000000FFFFFFFF00CFFFFF0000000085 +:1052600000000000000000CC000000000010000062 +:1052700000000000FFFFFFFF00CFFFFF0000000065 +:1052800000000000000000CC000000000020000032 +:1052900000000000FFFFFFFF00CFFFFF0000000045 +:1052A00000000000000000CC0000000000400000F2 +:1052B00000000000FFFFFFF3020FFFFF00000000EF +:1052C00000000000000000000000000000000000DE +:1052D00000000000FFFFFFF1010FFFFF00000000D2 +:1052E00000000000000000000000000000010000BD +:1052F00000000000FFFFFFF6005FFFFF000000005E +:10530000000000000000000000000000000200009B +:1053100000000000FFFFF4061CBFFFFF00000005B7 +:105320000000000000000014000000000004000065 +:1053300000000000FFFFFFF2004FFFFF0000000031 +:105340000000000000000000000000000008000055 +:1053500000000000FFFFFF8A042FFFFF0000000095 +:10536000000000000000000000000000001000002D +:1053700000000000FFFFFF9705CFFFFF00000000C7 +:1053800000000000000000000000000000200000FD +:1053900000000000FFFFFFF5010FFFFF000000000D +:1053A00000000000000000000000000000400000BD +:1053B00000000000FFFFFFF301EFFFFF000000000F +:1053C00000000000000000000000000000000000DD +:1053D00000000000FFFFFFF1002FFFFF00000000B2 +:1053E00000000000000000000000000000010000BC +:1053F00000000000FFFFFFF6005FFFFF000000005D +:10540000000000000000000000000000000200009A +:1054100000000000FFFFFF061CBFFFFF00000000B0 +:105420000000000000000014000000000004000064 +:1054300000000000FFFFFFF2004FFFFF0000000030 +:105440000000000000000000000000000008000054 +:1054500000000000FFFFFFFA002FFFFF0000000028 +:10546000000000000000000000000000001000002C +:1054700000000000FFFFFFF701CFFFFF000000006A +:1054800000000000000000000000000000200000FC +:1054900000000000FFFFFFFF00CFFFFF0000000043 +:1054A00000000000000000CC0000000000400000F0 +:1054B00000000000FFFFFFFF00CFFFFF0000000023 +:1054C00000000000000000CC000000000000000010 +:1054D00000000000FFFFFFFF00CFFFFF0000000003 +:1054E00000000000000000CC0000000000010000EF +:1054F00000000000FFFFFFFF00CFFFFF00000000E3 +:1055000000000000000000CC0000000000020000CD +:1055100000000000FFFFFFFF00CFFFFF00000000C2 +:1055200000000000000000CC0000000000040000AB +:1055300000000000FFFFFFFF00CFFFFF00000000A2 +:1055400000000000000000CC000000000008000087 +:1055500000000000FFFFFFFF00CFFFFF0000000082 +:1055600000000000000000CC00000000001000005F +:1055700000000000FFFFFFFF00CFFFFF0000000062 +:1055800000000000000000CC00000000002000002F +:1055900000000000FFFFFFFF00CFFFFF0000000042 +:1055A00000000000000000CC0000000000400000EF +:1055B00000000000FFFFFFFF00CFFFFF0000000022 +:1055C00000000000000000CC00000000000000000F +:1055D00000000000FFFFFFFF00CFFFFF0000000002 +:1055E00000000000000000CC0000000000010000EE +:1055F00000000000FFFFFFFF00CFFFFF00000000E2 +:1056000000000000000000CC0000000000020000CC +:1056100000000000FFFFFFFF00CFFFFF00000000C1 +:1056200000000000000000CC0000000000040000AA +:1056300000000000FFFFFFFF00CFFFFF00000000A1 +:1056400000000000000000CC000000000008000086 +:1056500000000000FFFFFFFF00CFFFFF0000000081 +:1056600000000000000000CC00000000001000005E +:1056700000000000FFFFFFFF00CFFFFF0000000061 +:1056800000000000000000CC00000000002000002E +:1056900000000000FFFFFFFF00CFFFFF0000000041 +:1056A00000000000000000CC0000000000400000EE +:1056B00000000000FFFFFFFF00CFFFFF0000000021 +:1056C00000000000000000CC00000000000000000E +:1056D00000000000FFFFFFFF00CFFFFF0000000001 +:1056E00000000000000000CC0000000000010000ED +:1056F00000000000FFFFFFFF00CFFFFF00000000E1 +:1057000000000000000000CC0000000000020000CB +:1057100000000000FFFFFFFF00CFFFFF00000000C0 +:1057200000000000000000CC0000000000040000A9 +:1057300000000000FFFFFFFF00CFFFFF00000000A0 +:1057400000000000000000CC000000000008000085 +:1057500000000000FFFFFFFF00CFFFFF0000000080 +:1057600000000000000000CC00000000001000005D +:1057700000000000FFFFFFFF00CFFFFF0000000060 +:1057800000000000000000CC00000000002000002D +:1057900000000000FFFFFFFF00CFFFFF0000000040 +:1057A00000000000000000CC0000000000400000ED +:1057B0000000000000000032000000320000021172 +:1057C00000000200000002040000FFFF0000FFFFD5 +:1057D0000000FFFF0000FFFF000000000000003796 +:1057E0000000002100000020000000010000000176 +:1057F0000000000107FFFFFF0000007F07FFFFFF21 +:105800000000003F0000FFFF0000FFFF0000FFFF5F +:105810000000FFFF00007FF800007FF8000000009C +:10582000000028AD0000291800002919000000051B +:105830000000000700000000000000000000FF0062 +:10584000000000000000FF00000000000000FF005A +:10585000000000000000FF00000000000000FF004A +:10586000000000000000FF00000000000000FF003A +:10587000000000000000FF00000000000000FF002A +:10588000000000000000FF00000000000000FF001A +:10589000000000000000FF00000000000000FF000A +:1058A000000000000000FF00000000000000FF00FA +:1058B000000000000000FF00000000000000FF00EA +:1058C000000000000000FF00000000000000FF00DA +:1058D000000000000000FF00000000000000FF00CA +:1058E000000000000000FF00000000000000FF00BA +:1058F000000000000000FF00000000000000FF00AA +:10590000000000000000FF00000000000000FF0099 +:10591000000000000000FF00000000000000FF0089 +:10592000000000000000FF00000000000000FF0079 +:10593000000000000000FF00000000000000FF0069 +:10594000000000000000FF00000000000000FF0059 +:10595000000000000000FF00000000000000FF0049 +:10596000000000000000FF00000000000000FF0039 +:10597000000000000000FF00000000000000FF0029 +:10598000000000000000FF00000000000000FF0019 +:10599000000000000000FF00000000000000FF0009 +:1059A000000000000000FF00000000000000FF00F9 +:1059B000000000000000FF00000000000000FF00E9 +:1059C000000000000000FF00000000000000FF00D9 +:1059D000000000000000FF00000000000000FF00C9 +:1059E000000000000000FF00000000000000FF00B9 +:1059F000000000000000FF00000000000000FF00A9 +:105A0000000000000000FF00000000000000FF0098 +:105A1000000000000000FF00000000000000FF0088 +:105A2000000000000000FF00000000000000FF0078 +:105A3000000000000000FF00000000000000FF0068 +:105A4000000000000000FF00000000000000FF0058 +:105A5000000000000000FF00000000000000FF0048 +:105A6000000000000000FF00000000000000FF0038 +:105A7000000000000000FF00000000000000FF1C0C +:105A80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC8 +:105A90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB8 +:105AA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA8 +:105AB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C98 +:105AC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C88 +:105AD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C78 +:105AE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C68 +:105AF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C58 +:105B00000FFFFFFF0000FF1C0FFFFFFF0000FF1C47 +:105B10000FFFFFFF0000FF1C0FFFFFFF0000FF1C37 +:105B20000FFFFFFF0000FF1C0FFFFFFF0000FF1C27 +:105B30000FFFFFFF0000FF1C0FFFFFFF0000FF1C17 +:105B40000FFFFFFF0000FF1C0FFFFFFF0000FF1C07 +:105B50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF7 +:105B60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE7 +:105B70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD7 +:105B80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC7 +:105B90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB7 +:105BA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA7 +:105BB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C97 +:105BC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C87 +:105BD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C77 +:105BE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C67 +:105BF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C57 +:105C00000FFFFFFF0000FF1C0FFFFFFF0000FF1C46 +:105C10000FFFFFFF0000FF1C0FFFFFFF0000FF1C36 +:105C20000FFFFFFF0000FF1C0FFFFFFF0000FF1C26 +:105C30000FFFFFFF0000FF1C0FFFFFFF0000FF1C16 +:105C40000FFFFFFF0000FF1C0FFFFFFF0000FF1C06 +:105C50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF6 +:105C60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE6 +:105C70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD6 +:105C80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC6 +:105C90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB6 +:105CA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA6 +:105CB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C96 +:105CC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C86 +:105CD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C76 +:105CE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C66 +:105CF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C56 +:105D00000FFFFFFF0000FF1C0FFFFFFF0000FF1C45 +:105D10000FFFFFFF0000FF1C0FFFFFFF0000FF1C35 +:105D20000FFFFFFF0000FF1C0FFFFFFF0000FF1C25 +:105D30000FFFFFFF0000FF1C0FFFFFFF0000FF1C15 +:105D40000FFFFFFF0000FF1C0FFFFFFF0000FF1C05 +:105D50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF5 +:105D60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE5 +:105D70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD5 +:105D80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC5 +:105D90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB5 +:105DA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA5 +:105DB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C95 +:105DC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C85 +:105DD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C75 +:105DE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C65 +:105DF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C55 +:105E00000FFFFFFF0000FF1C0FFFFFFF0000FF1C44 +:105E10000FFFFFFF0000FF1C0FFFFFFF0000FF1C34 +:105E20000FFFFFFF0000FF1C0FFFFFFF0000FF1C24 +:105E30000FFFFFFF0000FF1C0FFFFFFF0000FF1C14 +:105E40000FFFFFFF0000FF1C0FFFFFFF0000FF1C04 +:105E50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF4 +:105E60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE4 +:105E70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD4 +:105E80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC4 +:105E90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB4 +:105EA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA4 +:105EB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C94 +:105EC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C84 +:105ED0000FFFFFFF0000FF1C0FFFFFFF0000FF1C74 +:105EE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C64 +:105EF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C54 +:105F00000FFFFFFF0000FF1C0FFFFFFF0000FF1C43 +:105F10000FFFFFFF0000FF1C0FFFFFFF0000FF1C33 +:105F20000FFFFFFF0000FF1C0FFFFFFF0000FF1C23 +:105F30000FFFFFFF0000FF1C0FFFFFFF0000FF1C13 +:105F40000FFFFFFF0000FF1C0FFFFFFF0000FF1C03 +:105F50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF3 +:105F60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE3 +:105F70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD3 +:105F80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC3 +:105F90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB3 +:105FA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA3 +:105FB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C93 +:105FC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C83 +:105FD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C73 +:105FE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C63 +:105FF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C53 +:106000000FFFFFFF0000FF1C0FFFFFFF0000FF1C42 +:106010000FFFFFFF0000FF1C0FFFFFFF0000FF1C32 +:106020000FFFFFFF0000FF1C0FFFFFFF0000FF1C22 +:106030000FFFFFFF0000FF1C0FFFFFFF0000FF1C12 +:106040000FFFFFFF0000FF1C0FFFFFFF0000FF1C02 +:106050000FFFFFFF0000FF1C0FFFFFFF0000FF1CF2 +:106060000FFFFFFF0000FF1C0FFFFFFF0000FF1CE2 +:106070000FFFFFFF0000FF1C0FFFFFFF0000FF1CD2 +:106080000FFFFFFF0000FF1C0FFFFFFF0000FF1CC2 +:106090000FFFFFFF0000FF1C0FFFFFFF0000FF1CB2 +:1060A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA2 +:1060B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C92 +:1060C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C82 +:1060D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C72 +:1060E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C62 +:1060F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C52 +:106100000FFFFFFF0000FF1C0FFFFFFF0000FF1C41 +:106110000FFFFFFF0000FF1C0FFFFFFF0000FF1C31 +:106120000FFFFFFF0000FF1C0FFFFFFF0000FF1C21 +:106130000FFFFFFF0000FF1C0FFFFFFF0000FF1C11 +:106140000FFFFFFF0000FF1C0FFFFFFF0000FF1C01 +:106150000FFFFFFF0000FF1C0FFFFFFF0000FF1CF1 +:106160000FFFFFFF0000FF1C0FFFFFFF0000FF1CE1 +:106170000FFFFFFF0000FF1C0FFFFFFF0000FF1CD1 +:106180000FFFFFFF0000FF1C0FFFFFFF0000FF1CC1 +:106190000FFFFFFF0000FF1C0FFFFFFF0000FF1CB1 +:1061A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA1 +:1061B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C91 +:1061C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C81 +:1061D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C71 +:1061E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C61 +:1061F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C51 +:106200000FFFFFFF0000FF1C0FFFFFFF0000FF1C40 +:106210000FFFFFFF0000FF1C0FFFFFFF0000FF1C30 +:106220000FFFFFFF0000FF1C0FFFFFFF0000FF1C20 +:106230000FFFFFFF0000FF1C0FFFFFFF0000FF1C10 +:106240000FFFFFFF0000FF1C0FFFFFFF0000FF1C00 +:106250000FFFFFFF0000FF1C0FFFFFFF0000FF1CF0 +:106260000FFFFFFF0000FF1C0FFFFFFF0000FF1CE0 +:106270000FFFFFFF0000FF1C0FFFFFFF0000FF1CD0 +:106280000FFFFFFF0000FF1C0FFFFFFF0000FF1CC0 +:106290000FFFFFFF0000FF1C0FFFFFFF0000FF1CB0 +:1062A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA0 +:1062B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C90 +:1062C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C80 +:1062D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C70 +:1062E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C60 +:1062F0000FFFFFFF0000FF1C0FFFFFFF00000995CD +:106300000000350000000001000000020000000352 +:106310000000000000000004000000010000000078 +:106320000000000100000004000000000000000167 +:106330000000000300000000000000010000000455 +:106340000000000000000001000000030000000049 +:106350000000000100000004000000000000000434 +:1063600000000003000000000000000000007FFFAC +:10637000000003FF00000000000000010000000119 +:10638000000000010000000000000002000000907A +:10639000000000900080009008100000000009FF3D +:1063A0000000076C0000008A0000008000000081EF +:1063B000000000800000008A0000008000000081D2 +:1063C000000000800000008A0000008000000081C2 +:1063D000000000800000008A0000008000000081B2 +:1063E000000000800000008A0000008000000081A2 +:1063F000000000800000000100000001000000011A +:10640000000000010000000100000001000025E480 +:10641000000025E400004BC800004BC80000001835 +:106420000000111A00543210000000000021054342 +:1064300000000000000025E4000025E400004BC837 +:1064400000004BC8000000180000111A0054321060 +:1064500000000000002105430000000000000001D2 +:10646000000000010000000100000000000000002A +:106470000000000100000002000000000000000613 +:1064800000000003000000040000000500000001FF +:1064900000000001000000010000000100000001F8 +:1064A00000000001000000010000000100000001E8 +:1064B00000000001000000010000000100000001D8 +:1064C00000000001000000010000000100000003C6 +:1064D00000006000000000030000600000000003F6 +:1064E0000000400000000300000003000000030063 +:1064F0000000030000000300000003000000030090 +:106500000003F00800000000000000000000000090 +:106510000000000100000001000000010000000177 +:106520000000000100000001000000010000000167 +:106530000000000100000001000000010000000157 +:106540000000000100000001000000010000000147 +:106550000000000100000001000000010000000137 +:106560000000000100000001000000010000000127 +:106570000000000100000001000000010000000117 +:10658000000000010000000100000001000000FF09 +:10659000000000FF000000FF000000FF0000007F7F +:1065A000000000FF000000FF000000FF0000003EB0 +:1065B000000000000000003F0000003F0000003F1E +:1065C0000000003F0000003F0000003F0000003FCF +:1065D0000000000F0000000012170000221700004A +:1065E00032170000121500002215000032150000BD +:1065F0000210000000100000101000002010000029 +:1066000030100000401000000000000000000000FA +:10661000000000000010000012140000221400000E +:1066200032140000421400000000000000000000CE +:1066300000000000000089060000892600000036E6 +:10664000000000360810000008100000FFFFFFFFE8 +:10665000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +:10666000FFFFFFFFFFFFFFFFFFFFFFFFF000C00086 +:10667000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +:10668000FFFFFFFFFFFFFFFFFFFFFFFFF800C0005E +:10669000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +:1066A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +:1066B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +:1066C000FFFFFFFFFFFFFFFFFFFFFFFF00003C108A +:1066D00000000008000000080000000200000004A4 +:1066E0000000000500000004000000400000180841 +:1066F0000000080300000803000000400000000341 +:106700000000080300000803000008030001000364 +:10671000000008030000080300000003000000035D +:10672000000000030000000300000003000000035D +:10673000000000030000000300000003000000034D +:10674000000000030000000300000003000000033D +:1067500000000003000024030000002F00000009D7 +:1067600000000019000001840000018300000306FE +:1067700000000019000000060000030600000306E8 +:106780000000030600000C8600000306000003065C +:1067900000000006000000060000000600000006E1 +:1067A00000000006000000060000000600000006D1 +:1067B00000000006000000060000000600000006C1 +:1067C00000000006000000060000000600000306AE +:1067D0000000001300000006000010040000100478 +:1067E00000106440001064400000004000000019E8 +:1067F0000000000100000000000000000000000098 +:106800000000000000002000000000000000000068 +:106810000000000000000000040020000000000054 +:106820000000000000000000000000004100200007 +:106830000000000000000000000000000000000058 +:10684000000020000000007C0000003D0000003F30 +:106850000000009C0000000C000000050000000A81 +:106860000000000500000053000025E30000005474 +:1068700000000054000000040000000400000004B8 +:1068800000000004000000040000000400000004F8 +:1068900000000004000000000000000100000002F1 +:1068A00000000000000000010000000200000009DC +:1068B0000000000B0000000A0000000000000001C2 +:1068C00000000002000000000000000100000002C3 +:1068D000000000090000000B0000000A0000000991 +:1068E0000000000B0000000A000000090000000B7F +:1068F0000000000A00000000000008000000020084 +:106900000000040000000000000000001FFF1FFF47 +:106910001FFF1FFF1FFF1FFF1FFF1FFF000025E4BA +:106920000000800020002000200020008000800067 +:106930008000800040004000400040000000000057 +:106940000000000200000178000001780000000053 +:1069500000000000000001780000000000000000BE +:106960000000000000000001000000020000000024 +:106970000000000000000000000000040000000013 +:106980000000000100000002000000000000000004 +:1069900000000000000000040000000000000001F2 +:1069A00000000002000000000000000100000002E2 +:1069B00000000000000000010000000200000000D4 +:1069C00000000000000000000000000400000000C3 +:1069D00000000001000000020000000000000001B3 +:1069E00000000002000000000000000100000002A2 +:1069F0000000000000000000000000000000000493 +:106A0000000000130E490E490E490E4900920092F3 +:106A100000920092012401240124012400000000BE +:106A200000000000100010001000100020010120E4 +:106A300001011001010101012001012001011001EA +:106A400020010120010110010101010120010120AB +:106A50000101100101010101000000040000000615 +:106A6000020041040200410402004104020041040A +:106A700000000204000002CE000002CE0000000070 +:106A800000000000000002CC000000000000000038 +:106A900000000000000000010000000200000000F3 +:106AA00000000000000000000000000400000000E2 +:106AB00000000001000000020000000000000000D3 +:106AC0000000000000000004000000130E490E4901 +:106AD0000000000000000000100010001000100076 +:106AE000200101200101100101010101200101200B +:106AF000010110012001012001011001010101012A +:106B000020010120010110010101010102004104E5 +:106B1000020041040000000200000000000000022A +:106B20000000000000000002000000000000000063 +:106B30000000000000000002000000000000000251 +:106B40000000000000000002000000000000000043 +:106B500000000000000000040000000602004104E4 +:106B600002004104000000010000000100000001DB +:106B70000000000100000001000000010000000111 +:106B80000000000100000001000000010000000101 +:106B900000000001000000010000000100000001F1 +:106BA00000000001000000010000000302555555DF +:106BB00002555555000002CE000002CE000002CE64 +:106BC000000002CE000002CE000002CE000002CC87 +:106BD0000000005400000054000000540000005465 +:106BE00000000000000000010000000200000000A2 +:106BF0000000000600000003000000040000000583 +:106C00000000000000000001000000020000000081 +:106C1000000000000000000000000006000000006E +:106C20000000000100000002000000000000000061 +:106C3000000000000000000600000000000000014D +:106C4000000000020000000000000001000000023F +:106C50000000000000000001000000020000000031 +:106C6000000000000000000000000006000000001E +:106C70000000000100000002000000000000000110 +:106C800000000002000000000000000100000002FF +:106C900000000000000000000000000000000006EE +:106CA0000E490E490E490E49009200920092009240 +:106CB0000124012401240124100010001000100000 +:106CC0002001012001011001010101012001012029 +:106CD0000101100120010120010110010101010148 +:106CE0002001012001011001010101010000000447 +:106CF000000000060000000000000001000000028B +:106D0000000000000000000000000000000000067D +:106D10000000000000000001000000020000000070 +:106D2000000000000000000000000006000000035A +:106D30000000000400000005000000030000000443 +:106D40000000000500000003000000040000000532 +:106D50000000000300000003000000030000000624 +:106D60000000000300000004000000050000000314 +:106D70000000000400000005000000030000000403 +:106D800000000005000000030000000300000003F5 +:106D9000000000060E490E4900000000009200921B +:106DA0000000000001240124000000000000000099 +:106DB0000E490E4900000000009200920000000001 +:106DC00001240124100010001000100020010120F7 +:106DD0000101100101010101200101200101100147 +:106DE0002001012001011001010101012001012008 +:106DF0000101100101010101000000010000000378 +:106E00000000000400000003000000040000000572 +:106E10000000000300000006000000050000000460 +:106E20000000000300000004000000050000000353 +:106E30000000000600000005000000040000000340 +:106E4000000000040000000000000001000000023B +:106E5000000000000000000100000002000000052A +:106E60000000000300000006000000050000000410 +:106E7000000000030000000400000000000000010A +:106E800000000002000000000000000100000002FD +:106E900000000005000000030000000600000005DF +:106EA0000048004800480048009000900090009082 +:106EB0000120012001200120040204020402040236 +:106EC0000005000500050005120012001200120066 +:106ED000080008000800080001200120010110201E +:106EE00001010120012001200101102001200120C9 +:106EF00001011020010101200120012001011020C9 +:106F00000101012000000004000000060000012330 +:106F100000000123000001230000012300000123E1 +:106F200000000123000001230000012300000123D1 +:106F300000000123000001230000012300000123C1 +:106F400000000123000001230000012300000123B1 +:106F500000000123000001230000012300000020A5 +:106F600000000032000000070000000700000000E1 +:106F70000000000800000001000000000000000008 +:106F80000000000002150020021500200000003063 +:106F90000810000000000036000000300000003142 +:106FA00000000004000000050000000000000004D4 +:106FB00000000001000000060000000100000002C7 +:106FC00000000040000000400000001C0000002005 +:106FD000000100000002070000030E00000415007D +:106FE00000051C000006230000072A0000083100ED +:106FF00000093800000A3F00000B4600000C4D005D +:10700000000D5400000E5B00000F620000106900CC +:10701000001170000012770000137E00001485003C +:1070200000158C000016930000179A000018A100AC +:107030000019A800001AAF00001BB600001CBD001C +:10704000001DC400001ECB00001FD2000000D900AC +:107050000000001E0000001D00010000000207806B +:1070600000030F000004168000051E0000062580A6 +:1070700000072D000008348000093C00000A43800E +:10708000000B4B00000C5280000D5A00000E618076 +:10709000000F6900001070800011780000127F80DE +:1070A0000013870000148E800015960000169D8046 +:1070B0000017A5000018AC800019B400001ABB80AE +:1070C000001BC300001CCA800000D20000000001A9 +:1070D00000000001000000010000000100000001AC +:1070E000000000010000000100000001000000019C +:1070F000000000010000000100000001000000018C +:107100000000000100000001000000010000002854 +:107110000000002C00000030000000010000000111 +:107120000000000100000211000002000000020443 +:10713000000002190000FFFF0000FFFF0000FFFF3A +:107140000000FFFF07FFFFFF0000007F07FFFFFFBA +:107150000000003F0000FFFF0000FFFF0000FFFFF6 +:107160000000FFFF00007FF800007FF80000000033 +:10717000000000010000FF00000000000000FF0010 +:10718000000000000000FF00000000000000FF0001 +:10719000000000000000FF00000000000000FF00F1 +:1071A000000000000000FF00000000000000FF00E1 +:1071B000000000000000FF00000000000000FF00D1 +:1071C000000000000000FF00000000000000FF00C1 +:1071D000000000000000FF00000000000000FF00B1 +:1071E000000000000000FF00000000000000FF00A1 +:1071F000000000000000FF00000000000000FF0091 +:10720000000000000000FF00000000000000FF0080 +:10721000000000000000FF00000000000000FF0070 +:10722000000000000000FF00000000000000FF0060 +:10723000000000000000FF00000000000000FF0050 +:10724000000000000000FF00000000000000FF0040 +:10725000000000000000FF00000000000000FF0030 +:10726000000000000000FF00000000000000FF0020 +:10727000000000000000FF00000000000000FF0010 +:10728000000000000000FF00000000000000FF0000 +:10729000000000000000FF00000000000000FF00F0 +:1072A000000000000000FF00000000000000FF00E0 +:1072B000000000000000FF00000000000000FF00D0 +:1072C000000000000000FF00000000000000FF00C0 +:1072D000000000000000FF00000000000000FF00B0 +:1072E000000000000000FF00000000000000FF00A0 +:1072F000000000000000FF00000000000000FF0090 +:10730000000000000000FF00000000000000FF007F +:10731000000000000000FF00000000000000FF006F +:10732000000000000000FF00000000000000FF005F +:10733000000000000000FF00000000000000FF004F +:10734000000000000000FF00000000000000FF003F +:10735000000000000000FF00000000000000FF002F +:10736000000000000000FF00000000000000FF001F +:10737000000000000000FF00000000000000FF000F +:10738000000000000000FF00000000000000FF00FF +:10739000000000000000FF00000000000000FF00EF +:1073A000000000000000FF00000000000000FF00DF +:1073B000000000000020100100000000010090000B +:1073C00000000100000000010000000000000000BB +:1073D000140AFF00000090020000000000000000FE +:1073E0000000000000009004000000000000000009 +:1073F00000000000000090060000000000000000F7 +:1074000000000000000090080000000000000000E4 +:10741000000000000000900A0000000000000000D2 +:10742000000000000000900C0000000000000000C0 +:10743000000000000000900E0000000000000000AE +:10744000000000000000901000000000000000009C +:10745000000000000000901200000000000000008A +:107460000000000000009014000000000000000078 +:107470000000000000009016000000000000000066 +:107480000000000000009018000000000000000054 +:10749000000000000000901A000000000000000042 +:1074A000000000000000901C000000000000000030 +:1074B000000000000000901E00000000000000001E +:1074C000000000000000902000000000000000000C +:1074D00000000000000090220000000000000000FA +:1074E00000000000000090240000000000000000E8 +:1074F00000000000000090260000000000000000D6 +:1075000000000000000090280000000000000000C3 +:10751000000000000000902A0000000000000000B1 +:10752000000000000000902C00000000000000009F +:10753000000000000000902E00000000000000008D +:10754000000000000000903000000000000000007B +:107550000000000000009032000000000000000069 +:107560000000000000009034000000000000000057 +:107570000000000000009036000000000000000045 +:107580000000000000009038000000000000000033 +:10759000000000000000903A000000000000000021 +:1075A000000000000000903C00000000000000000F +:1075B000000000000000903E0000000000000000FD +:1075C00000000000000090400000000000000000EB +:1075D00000000000000090420000000000000000D9 +:1075E00000000000000090440000000000000000C7 +:1075F00000000000000090460000000000000000B5 +:1076000000000000000090480000000000000000A2 +:10761000000000000000904A000000000000000090 +:10762000000000000000904C00000000000000007E +:10763000000000000000904E00000000000000006C +:10764000000000000000905000000000000000005A +:107650000000000000009052000000000000000048 +:107660000000000000009054000000000000000036 +:107670000000000000009056000000000000000024 +:107680000000000000009058000000000000000012 +:10769000000000000000905A000000000000000000 +:1076A000000000000000905C0000000000000000EE +:1076B000000000000000905E0000000000000000DC +:1076C00000000000000090600000000000000000CA +:1076D00000000000000090620000000000000000B8 +:1076E00000000000000090640000000000000000A6 +:1076F0000000000000009066000000000000000094 +:107700000000000000009068000000000000000081 +:10771000000000000000906A00000000000000006F +:10772000000000000000906C00000000000000005D +:10773000000000000000906E00000000000000004B +:107740000000000000009070000000000000000039 +:107750000000000000009072000000000000000027 +:107760000000000000009074000000000000000015 +:107770000000000000009076000000000000000003 +:1077800000000000000090780000000000000000F1 +:10779000000000000000907A0000000000000000DF +:1077A000000000000000907C0000000000000000CD +:1077B000000000000000907E0000000000000000BB +:1077C00000000000000090800000000000000000A9 +:1077D0000000000000009082000000000000000097 +:1077E0000000000000009084000000000000000085 +:1077F0000000000000009086000000000000000073 +:107800000000000000009088000000000000000060 +:10781000000000000000908A00000000000000004E +:10782000000000000000908C00000000000000003C +:10783000000000000000908E00000000000000002A +:107840000000000000009090000000000000000018 +:107850000000000000009092000000000000000006 +:1078600000000000000090940000000000000000F4 +:1078700000000000000090960000000000000000E2 +:1078800000000000000090980000000000000000D0 +:10789000000000000000909A0000000000000000BE +:1078A000000000000000909C0000000000000000AC +:1078B000000000000000909E00000000000000009A +:1078C00000000000000090A0000000000000000088 +:1078D00000000000000090A2000000000000000076 +:1078E00000000000000090A4000000000000000064 +:1078F00000000000000090A6000000000000000052 +:1079000000000000000090A800000000000000003F +:1079100000000000000090AA00000000000000002D +:1079200000000000000090AC00000000000000001B +:1079300000000000000090AE000000000000000009 +:1079400000000000000090B00000000000000000F7 +:1079500000000000000090B20000000000000000E5 +:1079600000000000000090B40000000000000000D3 +:1079700000000000000090B60000000000000000C1 +:1079800000000000000090B80000000000000000AF +:1079900000000000000090BA00000000000000009D +:1079A00000000000000090BC00000000000000008B +:1079B00000000000000090BE000000000000000079 +:1079C00000000000000090C0000000000000000067 +:1079D00000000000000090C2000000000000000055 +:1079E00000000000000090C4000000000000000043 +:1079F00000000000000090C6000000000000000031 +:107A000000000000000090C800000000000000001E +:107A100000000000000090CA00000000000000000C +:107A200000000000000090CC0000000000000000FA +:107A300000000000000090CE0000000000000000E8 +:107A400000000000000090D00000000000000000D6 +:107A500000000000000090D20000000000000000C4 +:107A600000000000000090D40000000000000000B2 +:107A700000000000000090D60000000000000000A0 +:107A800000000000000090D800000000000000008E +:107A900000000000000090DA00000000000000007C +:107AA00000000000000090DC00000000000000006A +:107AB00000000000000090DE000000000000000058 +:107AC00000000000000090E0000000000000000046 +:107AD00000000000000090E2000000000000000034 +:107AE00000000000000090E4000000000000000022 +:107AF00000000000000090E6000000000000000010 +:107B000000000000000090E80000000000000000FD +:107B100000000000000090EA0000000000000000EB +:107B200000000000000090EC0000000000000000D9 +:107B300000000000000090EE0000000000000000C7 +:107B400000000000000090F00000000000000000B5 +:107B500000000000000090F20000000000000000A3 +:107B600000000000000090F4000000000000000091 +:107B700000000000000090F600000000000000007F +:107B800000000000000090F800000000000000006D +:107B900000000000000090FA00000000000000005B +:107BA00000000000000090FC000000000000000049 +:107BB00000000000000090FE000000000000000037 +:107BC0000000000000009100000000000000000024 +:107BD0000000000000009102000000000000000012 +:107BE0000000000000009104000000000000000000 +:107BF00000000000000091060000000000000000EE +:107C000000000000000091080000000000000000DB +:107C1000000000000000910A0000000000000000C9 +:107C2000000000000000910C0000000000000000B7 +:107C3000000000000000910E0000000000000000A5 +:107C40000000000000009110000000000000000093 +:107C50000000000000009112000000000000000081 +:107C6000000000000000911400000000000000006F +:107C7000000000000000911600000000000000005D +:107C8000000000000000911800000000000000004B +:107C9000000000000000911A000000000000000039 +:107CA000000000000000911C000000000000000027 +:107CB000000000000000911E000000000000000015 +:107CC0000000000000009120000000000000000003 +:107CD00000000000000091220000000000000000F1 +:107CE00000000000000091240000000000000000DF +:107CF00000000000000091260000000000000000CD +:107D000000000000000091280000000000000000BA +:107D1000000000000000912A0000000000000000A8 +:107D2000000000000000912C000000000000000096 +:107D3000000000000000912E000000000000000084 +:107D40000000000000009130000000000000000072 +:107D50000000000000009132000000000000000060 +:107D6000000000000000913400000000000000004E +:107D7000000000000000913600000000000000003C +:107D8000000000000000913800000000000000002A +:107D9000000000000000913A000000000000000018 +:107DA000000000000000913C000000000000000006 +:107DB000000000000000913E0000000000000000F4 +:107DC00000000000000091400000000000000000E2 +:107DD00000000000000091420000000000000000D0 +:107DE00000000000000091440000000000000000BE +:107DF00000000000000091460000000000000000AC +:107E00000000000000009148000000000000000099 +:107E1000000000000000914A000000000000000087 +:107E2000000000000000914C000000000000000075 +:107E3000000000000000914E000000000000000063 +:107E40000000000000009150000000000000000051 +:107E5000000000000000915200000000000000003F +:107E6000000000000000915400000000000000002D +:107E7000000000000000915600000000000000001B +:107E80000000000000009158000000000000000009 +:107E9000000000000000915A0000000000000000F7 +:107EA000000000000000915C0000000000000000E5 +:107EB000000000000000915E0000000000000000D3 +:107EC00000000000000091600000000000000000C1 +:107ED00000000000000091620000000000000000AF +:107EE000000000000000916400000000000000009D +:107EF000000000000000916600000000000000008B +:107F00000000000000009168000000000000000078 +:107F1000000000000000916A000000000000000066 +:107F2000000000000000916C000000000000000054 +:107F3000000000000000916E000000000000000042 +:107F40000000000000009170000000000000000030 +:107F5000000000000000917200000000000000001E +:107F6000000000000000917400000000000000000C +:107F700000000000000091760000000000000000FA +:107F800000000000000091780000000000000000E8 +:107F9000000000000000917A0000000000000000D6 +:107FA000000000000000917C0000000000000000C4 +:107FB000000000000000917E0000000000000000B2 +:107FC00000000000000091800000000000000000A0 +:107FD000000000000000918200000000000000008E +:107FE000000000000000918400000000000000007C +:107FF000000000000000918600000000000000006A +:108000000000000000009188000000000000000057 +:10801000000000000000918A000000000000000045 +:10802000000000000000918C000000000000000033 +:10803000000000000000918E000000000000000021 +:10804000000000000000919000000000000000000F +:1080500000000000000091920000000000000000FD +:1080600000000000000091940000000000000000EB +:1080700000000000000091960000000000000000D9 +:1080800000000000000091980000000000000000C7 +:10809000000000000000919A0000000000000000B5 +:1080A000000000000000919C0000000000000000A3 +:1080B000000000000000919E000000000000000091 +:1080C00000000000000091A000000000000000007F +:1080D00000000000000091A200000000000000006D +:1080E00000000000000091A400000000000000005B +:1080F00000000000000091A6000000000000000049 +:1081000000000000000091A8000000000000000036 +:1081100000000000000091AA000000000000000024 +:1081200000000000000091AC000000000000000012 +:1081300000000000000091AE000000000000000000 +:1081400000000000000091B00000000000000000EE +:1081500000000000000091B20000000000000000DC +:1081600000000000000091B40000000000000000CA +:1081700000000000000091B60000000000000000B8 +:1081800000000000000091B80000000000000000A6 +:1081900000000000000091BA000000000000000094 +:1081A00000000000000091BC000000000000000082 +:1081B00000000000000091BE000000000000000070 +:1081C00000000000000091C000000000000000005E +:1081D00000000000000091C200000000000000004C +:1081E00000000000000091C400000000000000003A +:1081F00000000000000091C6000000000000000028 +:1082000000000000000091C8000000000000000015 +:1082100000000000000091CA000000000000000003 +:1082200000000000000091CC0000000000000000F1 +:1082300000000000000091CE0000000000000000DF +:1082400000000000000091D00000000000000000CD +:1082500000000000000091D20000000000000000BB +:1082600000000000000091D40000000000000000A9 +:1082700000000000000091D6000000000000000097 +:1082800000000000000091D8000000000000000085 +:1082900000000000000091DA000000000000000073 +:1082A00000000000000091DC000000000000000061 +:1082B00000000000000091DE00000000000000004F +:1082C00000000000000091E000000000000000003D +:1082D00000000000000091E200000000000000002B +:1082E00000000000000091E4000000000000000019 +:1082F00000000000000091E6000000000000000007 +:1083000000000000000091E80000000000000000F4 +:1083100000000000000091EA0000000000000000E2 +:1083200000000000000091EC0000000000000000D0 +:1083300000000000000091EE0000000000000000BE +:1083400000000000000091F00000000000000000AC +:1083500000000000000091F200000000000000009A +:1083600000000000000091F4000000000000000088 +:1083700000000000000091F6000000000000000076 +:1083800000000000000091F8000000000000000064 +:1083900000000000000091FA000000000000000052 +:1083A00000000000000091FC000000000000000040 +:1083B00000000000000091FEFFFFFFFFFFFFFFFF36 +:1083C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +:1083D000FFFFFFFFFFFFFFFF0000FFFF00000000A7 +:1083E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +:1083F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +:108400000000FFFF000000000000039800001500BE +:108410000000000100000002000000030000000056 +:108420000000000400000001000000000000000146 +:108430000000000400000000000000010000000334 +:108440000000000000000001000000040000000027 +:108450000000000100000003000000000000000117 +:108460000000000400000000000000040000000301 +:10847000000000000000000000007FFF000003FF7C +:10848000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +:10849000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +:1084A0000000000300BEBC2000000000000000052A +:1084B0000000000300BEBC2000000000000000051A +:1084C0000000000300BEBC2000000000000000050A +:1084D0000000000300BEBC200000000000000005FA +:1084E0000000000300BEBC200000000000000005EA +:1084F0000000000300BEBC200000000000000005DA +:108500000000000300BEBC200000000000000005C9 +:108510000000000300BEBC200000000000000005B9 +:108520000000000D0000000C000000000000001022 +:108530000000000F0000000000000000000000002C +:108540000215002002150020000000300810000075 +:108550000000003600000030000000310000000381 +:108560000000000000000001000000030000000106 +:108570000000000200000040000000400000000475 +:10858000000000200000000F0000001B0000800021 +:10859000000103C00001878000020B4000028F0031 +:1085A000000312C00003968000041A4000049E00DD +:1085B000000521C00005A580000629400006AD0089 +:1085C000000730C00007B480000838400008BC0035 +:1085D00000093FC00009C380000A4740000ACB00E1 +:1085E000000B4EC0000BD280000C5640000CDA008D +:1085F000000D5DC00000618000000001000000016E +:108600000000000100000001000000010000000166 +:108610000000000100000001000000010000000156 +:108620000000000100000001000000010000000146 +:108630000000000100000001000000010000050E24 +:10864000000004FD000005010000051E0000FFFF02 +:108650000000FFFF0000FFFF0000FFFF00000046DA +:108660000000000C00000000000000000000001CE2 +:10867000000000F400000001000000000000000005 +:1086800000000000000000010000000107FFFFFFE4 +:108690000000007F07FFFFFF0000003F0000FFFF1A +:1086A0000000FFFF0000FFFF0000FFFF00007FF859 +:1086B00000007FF80000FF00000000000000FF0045 +:1086C000000000000000FF00000000000000FF00AC +:1086D000000000000000FF00000000000000FF009C +:1086E000000000000000FF00000000000000FF008C +:1086F000000000000000FF00000000000000FF007C +:10870000000000000000FF00000000000000FF006B +:10871000000000000000FF00000000000000FF005B +:10872000000000000000FF00000000000000FF004B +:10873000000000000000FF00000000000000FF003B +:10874000000000000000FF00000000000000FF002B +:10875000000000000000FF00000000000000FF001B +:10876000000000000000FF00000000000000FF000B +:10877000000000000000FF00000000000000FF00FB +:10878000000000000000FF00000000000000FF00EB +:10879000000000000000FF00000000000000FF00DB +:1087A000000000000000FF00000000000000FF00CB +:1087B000000000000000FF00000000000000FF00BB +:1087C000000000000000FF00000000000000FF00AB +:1087D000000000000000FF00000000000000FF009B +:1087E000000000000000FF00000000000000FF008B +:1087F000000000000000FF00000000000000FF007B +:10880000000000000000FF00000000000000FF006A +:10881000000000000000FF00000000000000FF005A +:10882000000000000000FF00000000000000FF004A +:10883000000000000000FF00000000000000FF003A +:10884000000000000000FF00000000000000FF002A +:10885000000000000000FF00000000000000FF001A +:10886000000000000000FF00000000000000FF000A +:10887000000000000000FF00000000000000FF00FA +:10888000000000000000FF00000000000000FF00EA +:10889000000000000000FF00000000000000FF00DA +:1088A000000000000000FF00000000000000FF00CA +:1088B000000000000000FF00000000000000FF00BA +:1088C000000000000000FF00000000000000FF00AA +:1088D000000000000000FF00000000000000FF009A +:1088E000000000000000FF00000000000000FF008A +:1088F00000000000FFFFFFFFFFFFFFFFFFFFFFFF84 +:10890000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +:10891000FFFFFFFF00001900000000000000000141 +:10892000000000000000000000000000000001D373 +:1089300000003500000000010000000200000003FC +:108940000000000000000004000000010000000022 +:108950000000000100000004000000000000000111 +:1089600000000003000000000000000100000004FF +:1089700000000000000000010000000300000000F3 +:1089800000000001000000040000000000000004DE +:1089900000000003000000000000000000007FFF56 +:1089A000000003FF000000000393870000000000A8 +:1089B000000000000000000003938700000000009A +:1089C000000000000000000F000000070000000091 +:1089D0000000000E0000000E00000000000000007B +:1089E00000000000031500200315002001000030E6 +:1089F00008100000000000360000003000000031C8 +:108A0000000000020000000500000002000000025B +:108A1000000000000000000500000003000000014D +:108A200000000004000000010000000200000040FF +:108A300000000040000000040000002000000002D0 +:108A40000000002000001000000020800000310025 +:108A500000004180000052000000628000007300AE +:108A600000008380000094000000A4800000B50096 +:108A70000000C5800000D6000000E6800000F7007E +:108A80000001078000011800000128800001390062 +:108A90000001498000015A0000016A8000017B004A +:108AA00000018B8000019C000001AC800001BD0032 +:108AB0000001CD800001DE000001EE800001FF001A +:108AC00000000F8000000001000000010000000114 +:108AD0000000000100000001000000010000000192 +:108AE0000000000100000001000000010000000182 +:108AF0000000000100000001000000010000000172 +:108B00000000000100000001000000010000000161 +:108B10000000000100001214000012000000120406 +:108B20000000FFFF0000FFFF0000FFFF0000FFFF4D +:108B300000000020000000380000000000000000DD +:108B40000000002300000024000000250000002693 +:108B500000000027000000390000003A0000002B50 +:108B60000000002C00000000000000EC00000000ED +:108B7000000000290000002A0000000100000001A0 +:108B800000000001000000010000000000000000E3 +:108B9000000000000000000107FFFFFF0000007F51 +:108BA00007FFFFFF0000003F0000FFFF0000FFFF86 +:108BB0000000FFFF0000FFFF00007FF800007FF8CB +:108BC0000000000000000001CCCC0201CCCCCCCCD9 +:108BD000CCCC0201CCCCCCCCCCCC0201CCCCCCCCFF +:108BE000CCCC0201CCCCCCCCCCCC0201CCCCCCCCEF +:108BF000CCCC0201CCCCCCCCCCCC0201CCCCCCCCDF +:108C0000CCCC0201CCCCCCCCFFFFFFFFFFFFFFFFA1 +:108C1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +:108C2000FFFFFFFFFFFFFFFF00000000000100014A +:108C300000020807CCCCCCC910000000000028AD11 +:108C400000002918000029190000000000000000A1 +:108C500000000005000000067058103C00000000F5 +:108C60000000FF00000000000000FF000000000006 +:108C70000000FF00000000000000FF0000000000F6 +:108C80000000FF00000000000000FF0000000000E6 +:108C90000000FF00000000000000FF0000000000D6 +:108CA0000000FF00000000000000FF0000000000C6 +:108CB0000000FF00000000000000FF0000000000B6 +:108CC0000000FF00000000000000FF0000000000A6 +:108CD0000000FF00000000000000FF000000000096 +:108CE0000000FF00000000000000FF000000000086 +:108CF0000000FF00000000000000FF000000000076 +:108D00000000FF00000000000000FF000000000065 +:108D10000000FF00000000000000FF000000000055 +:108D20000000FF00000000000000FF000000000045 +:108D30000000FF00000000000000FF000000000035 +:108D40000000FF00000000000000FF000000000025 +:108D50000000FF00000000000000FF000000000015 +:108D60000000FF00000000000000FF000000000005 +:108D70000000FF00000000000000FF0000000000F5 +:108D80000000FF00000000000000FF0000000000E5 +:108D90000000FF00000000000000FF0000000000D5 +:108DA0000000FF00000000000000FF0000000000C5 +:108DB0000000FF00000000000000FF0000000000B5 +:108DC0000000FF00000000000000FF0000000000A5 +:108DD0000000FF00000000000000FF000000000095 +:108DE0000000FF00000000000000FF000000000085 +:108DF0000000FF00000000000000FF000000000075 +:108E00000000FF00000000000000FF000000000064 +:108E10000000FF00000000000000FF000000000054 +:108E20000000FF00000000000000FF000000000044 +:108E30000000FF00000000000000FF000000000034 +:108E40000000FF00000000000000FF000000000024 +:108E50000000FF00000000000000FF000000000014 +:108E60000000FF00000000000000FF000000000004 +:108E70000000FF00000000000000FF0000000000F4 +:108E80000000FF00000000000000FF0000000000E4 +:108E90000000FF00000000000000FF0000000000D4 +:108EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +:108EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +:108EC0000000FFFF00000000FFFFFFFFFFFFFFFFAC +:108ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +:108EE000FFFFFFFFFFFFFFFF0000FFFF000000008C +:108EF000032313031303231303030323A0B090439B +:108F000002000200060406040323130313032313C1 +:108F100003030323A0B0904313131313131313136A +:108F200013131313A0B090430301020000000000CC +:108F300000000609000035000000000100000002EA +:108F40000000000300000000000000040000000119 +:108F5000000000000000000100000004000000000C +:108F600000000001000000030000000000000001FC +:108F700000000004000000000000000100000003E9 +:108F800000000000000000010000000400000000DC +:108F900000000004000000030000000000000000CA +:108FA00000007FFF000003FF002625A00000000056 +:108FB000002625A000000000002625A000000000DB +:108FC000002625A000000000000E0000011600D6BB +:108FD000002625A000000000002625A000000000BB +:108FE000002625A000000000002625A000000000AB +:108FF00000720000012300F30000FFFF00000000EA +:109000000000FFFF000000000000FFFF0000000064 +:109010000000FFFF000000000000FFFF0000000054 +:109020000000FFFF00000000000000000000000042 +:109030000000FFFF000000000000FFFF0000000034 +:109040000000FFFF000000000000FFFF0000000024 +:109050000000FFFF000000000000FFFF0000000014 +:109060000000FFFF00000000000000000000000002 +:109070000000FFFF000000000000FFFF00000000F4 +:109080000000FFFF000000000000FFFF00000000E4 +:109090000000FFFF000000000000FFFF00000000D4 +:1090A0000000FFFF000000000000000000000000C2 +:1090B0000000FFFF000000000000FFFF00000000B4 +:1090C0000000FFFF000000000000FFFF00000000A4 +:1090D0000000FFFF000000000000FFFF0000000094 +:1090E0000000FFFF00000000000000000000000082 +:1090F0000000FFFF000000000000FFFF0000000074 +:109100000000FFFF000000000000FFFF0000000063 +:109110000000FFFF000000000000FFFF0000000053 +:109120000000FFFF00000000000000000000000041 +:109130000000FFFF000000000000FFFF0000000033 +:109140000000FFFF000000000000FFFF0000000023 +:109150000000FFFF000000000000FFFF0000000013 +:109160000000FFFF00000000000000000000000001 +:109170000000FFFF000000000000FFFF00000000F3 +:109180000000FFFF000000000000FFFF00000000E3 +:109190000000FFFF000000000000FFFF00000000D3 +:1091A0000000FFFF000000000000000000000000C1 +:1091B0000000FFFF000000000000FFFF00000000B3 +:1091C0000000FFFF000000000000FFFF00000000A3 +:1091D0000000FFFF000000000000FFFF0000000093 +:1091E0000000FFFF00000000000000000000000081 +:1091F0000000FFFF00000000555400005555555574 +:1092000000005555F00000005554000055555555C7 +:1092100000005555F00000000000000000010000B3 +:109220000000501400000000FFF55FFF0000FFFF8A +:10923000F00003E0000000000000A00000000400B7 +:10924000000000000000000000000000000010000E +:1092500000000000000000000000000000004000CE +:1092600000000000000000000000000000010000FD +:10927000FF5C0000FFF55FFF0000FFFFF00003E070 +:10928000000000000000A000000008000000000036 +:1092900000000000000000000000200000000000AE +:1092A000000000000000000000008000000000003E +:1092B00000000000000000000002000000000000AC +:1092C0001F8B080000000000000BFB51CFC0F00313 +:1092D00009A74BA2F217F0A2F2D1B1393F7E794231 +:1092E00098858132FD3ADC0C0C2640ECC18D2A6E4B +:1092F000CC04A1E770303074B233306400E973AC51 +:1093000008F978A8BDEFF41062653A0C0C9B342183 +:10931000EC679A94B96B140F0DAC6E8DCAD7B084FC +:10932000D04BADA07C34794DA8FC355328DF1ABB57 +:10933000B9D74D89B35FD70995BFD911BFFA596E17 +:10934000101A007AB633FFB80300000000000000D6 +:109350001F8B080000000000000BCD7D0B781CC5A2 +:109360009170CFEECCEEECEEAC7624ADE4952DDB37 +:10937000B3B2648B20C8CA968D001146F24BDC67ED +:1093800092C5187EC171640D0614636079055F8211 +:10939000D1C87A5852FC581BC7988761ED00F191EB +:1093A000C7D9095CB824DCBF020ECC2597884738A2 +:1093B0009240222070093F708A73C4E43F12AEAA23 +:1093C000BA479A59EDCA3217EE4EF948BB677ABAD6 +:1093D000ABABAAABAAABAA7BFDAA87CD3F9BB10FD3 +:1093E000F10FCABD5EC658C54469A4BF78DF6813D3 +:1093F00063EF59321B82D26A4B7F75340AE566BF30 +:10940000DE03E51DA1DBE8FD4659D5FD09F886A57B +:109410004F4B9EC2D8501763B90554FF24D6438CD6 +:1094200099871A26C6B1CB72E6616C31B6ABD6DF2E +:109430000C31FAFB10C6F6C317168EABB3EC501CFA +:109440001EBE9C6A65958C797913285799DF81F146 +:10945000634BD998FFF489FEBCBA8FE554D10F3520 +:10946000BC2492D2268F6B971B5F5E9B7DD2D1BEB0 +:109470009685A36F9E0CFF90998C7030EF56C610A6 +:109480008E28CB7AE3C5FB39D695CA3E5987F8FAC0 +:10949000CB48325CBC9D8D979E2E95E5FC8C0D745F +:1094A000E954F74699996DA0F999DFC252B368DC87 +:1094B000FE68CD819084D0A51883F9FA5F98770073 +:1094C000F1F1292611DEFAA337A86601BCDA25AB33 +:1094D00076E0A306A765513FF05FF601E847867185 +:1094E0000FC0F7B23E793CC4BF3DDEAA8F389E9FC5 +:1094F0009D4FF8089EC4D88886788579C0F79E5815 +:10950000CA1A8592C5A07D3D3C3678FBE3E12F5415 +:10951000EFA1F636BD642DE8A277C02873D33F8F44 +:10952000AF18CEBF02C765F532CC4F61C1C4104C35 +:109530006DBD94BA82F8FDFB7F69F6027E8E9A6C4F +:109540006C08EA4A34C5907FECEFCEA95847789270 +:10955000354FD62F5149F83C5ACDF9C31FF558FE67 +:10956000530BE38539F052142EA03FF239BD029C13 +:10957000B4BE2F53FFC104AC03182FCC4689492237 +:109580000C08328FB15266487C512424C41B632DD1 +:109590003AF26F34F0E7EEF712EA573277B20F4340 +:1095A00027D0AF0CFDCEFB18FA3D0EBC01760FF5AF +:1095B0008BD4F9B07CA2DF415877C094B0FE742AF6 +:1095C000FDD092D6770397335BBA62F49CC98F982B +:1095D0001E184F4BF88C21906B212DC7E2D0EEDF87 +:1095E0005AD531E01DF8E37CEB41FACD43BE64AFC0 +:1095F0007A80EEA1845BFEA8D53E17BF16A37B5FE1 +:10960000C5FC19A9A9D615ACDCB83AF15DB1761F35 +:1096100077D903F22BAE4CD465AD6682AFA7989F85 +:10962000B739C591C5920CF5C1F8F71E9642BDD069 +:10963000A35DA6E2FCD9071F7EE85DE290F35AB273 +:10964000B9105E5E61719247765DD1FBAF974AA01B +:109650008CAD33471DF0FC12FF81EB38B6C11C9D69 +:10966000061DBC72B2632DD0197822F100F0DDCE58 +:10967000D0A5ECD506D47397E6483E5654C6FDA84F +:109680008FD866AEB7548DA94B26F874B8E2C218CD +:10969000CAB5BEAA0B630CE4469F928C25A17EA49A +:1096A000E2EF4CECB7FF8308433DD91FAB89E0BC28 +:1096B000FA3F9837235D607E21C6E54510E18B7344 +:1096C0007E63F513F0F6C73C2AC273B481CB9D9D2F +:1096D000A17F30BD50F719721AFBF769302E8CDF6D +:1096E000DE74C85C0B7CEC4B6929BF3EB91F7B1C48 +:1096F000F8933E44B98F6DEC7527B9DE1784637219 +:109700003D65D6A05CD55962A8407B452DB142A7E6 +:10971000A2DC1D7FAEE3B8B53F3C25827C81ED0D18 +:109720001587964C5C5713FC9F75D19BE99E897EEB +:109730006B26E8D7EF33494E587340BFE17C64B3E2 +:1097400003F1D42B952D44FBA57FE650AC103FC907 +:10975000B181DF7A012EC0510EF9C81F5B614AD07A +:109760004F2F1830E52412B68E48A752F95B2FBE52 +:10977000D7E5B79C7C76B204760322ED34761ACE18 +:10978000B347E3F42DB68EFA601DB105C5DF2BBEDD +:10979000442A497A27FD12C221B353097EB9FAA996 +:1097A00097E200478BC4F5B11CF5590837D3E5B7EC +:1097B000471DF8A896CD1609DE2B41DE4F7EFFA788 +:1097C000C86DA604F87A8D25DBB01C882F117A2E7F +:1097D0006F5D6830F8E9C5E1B4F1AE5F9210EBDB84 +:1097E0002C912A39DFE25FB0218136068B9DE9D5C5 +:1097F000E5664E47B075603D7AD910F25ABDFC1A45 +:10980000C26DC2FF10EE9216A83BF0EA352F36E784 +:10981000C1BCF536754C8921DFF0F6363F7A911ED2 +:10982000A762E97EFE5792B0E36C7A743DCA5EAFE0 +:1098300073D889688F16C0CBABDEB6CBA58A4278C9 +:10984000289B161E0662990109E50753C722305F5F +:10985000157910BEDB25E89D41FD03E556A17F7A11 +:1098600085BED9DB6550B9BBAB9EDEEFE94A50FD42 +:10987000AEAE66AAF7779954DFDED54EE53D5D4979 +:10988000AEA7B42CC9D35D55C69D12DADFD62FCD55 +:109890001FC227BBC2C64F19D9E33FE77590D96CE9 +:1098A00026F09DF413D302BEDC556A5CE40110BEC1 +:1098B00051FE94F524C25767FC5482FA70F733B90D +:1098C0005E6C7F0A6F7F9FF46BDE3EC03A504E3372 +:1098D00063CD71F0C0E5E2B771DE50EEAA80EFB45F +:1098E000E97FF73DFC0EF0B82B7E62E305E5ACC9DD +:1098F000E7CB5A5F009406550EFF4FA4774D4B13EC +:10990000FAE40CC67E218D59349F5344FFA08F2E5C +:1099100070E8A36725858FDF7862703F2FE61B49CB +:109920008E9A88EA73A4D43771FD853B72960F48EE +:109930003B607C8B917E3380F9AB8ECF47332583A0 +:10994000DB41A2BD529D3051CCFD332A99C513CFC6 +:10995000232D26F5FB7D241EB4BF27DDA6F2756CF2 +:10996000AAC8174F8AE7F6FE417EC64B76CEE3457E +:10997000DADB76BFDDAE289CFA71ECD969CE93C9EB +:10998000600F80BD7698E9AEF9DE8B75C73C831A0F +:109990005FAFD3A5C79F043D36E5F57B435EBDECC5 +:1099A000EB1ED60C4BBBBCDDA14FE0BF5233E8B27F +:1099B0006BC28932575DD167BADA57A5DC7650455C +:1099C000F213AEF7333A16BAEAB33ACF70B5F7C727 +:1099D000DA5CF548F35FB8DACF4EAF76D53F2ABEF2 +:1099E0006FCF9BFF405E7DBAFD940BB9663FAFBC65 +:1099F00078498AF87B55133D07BA9E5307FFFCCD83 +:109A000097EB160EB142FD74137DEABC66A987F888 +:109A100093CB6F8F25913DBD474A9EB71CFD0D67C7 +:109A2000811D86F8C893EFCC59F74EAEC73D5C3F19 +:109A3000B2557C3E677F70B64AFBD0B02799053E91 +:109A40000A2A59BDAC61623E95C20EB5E13FFB8367 +:109A50001F7B71BDF4E8C601DC6FECB9F82F62978B +:109A60006993E1B7FBFF92E669C7FD7BBE1EFE92DC +:109A70007C48758E63B73F1E7EEB8CF47DE867995A +:109A8000BEDF25C93C50BFE5331EDA1F6D157E864B +:109A9000A13C3F433FE81BEE97D15F427BF1D819D1 +:109AA000CCC0F625D15113F5C7059EF6D67A80AF06 +:109AB0002466C662503FFC7F6BBA979D85A6ED2851 +:109AC000E1EFF6E6D51136853F259C70EFCF43F5E3 +:109AD00053EFCFFDB19953EE8F5E479B02F05C02CE +:109AE000FBC84403965C0E78236FC7AE74D857CB7F +:109AF0003D5E6AE7F59E97467B67BBC4E5BBFDFE0E +:109B00005E8F87F0FA63309BB1DDD91FECF070FAFD +:109B1000F2FDA4166EB372E8179158BA4E9F4C47E7 +:109B20004DC911BFFC4FE3A1A7743486F645168DCD +:109B3000D04F811CD2C0FE837FCAE5975897C3F3EC +:109B40001EB0FFBD09B4B3B557F1B922EC23BF274E +:109B5000657916933F434A917F2949E5FFF47CBC20 +:109B6000DEC6B11CEE17CEF4250EB0C9743BECE195 +:109B7000FEC1E548B70AA4DB6768BF6ED36D48E352 +:109B800074835553906E577AB81E1992B3B40ECFA2 +:109B9000FE20E2A1EF9B3DA4DFB66A0B07E7E1F7E9 +:109BA0002F781998876CAB9CA376FFDD78C8872B3C +:109BB0001C06B8D08EFC09872BAC8CE8FF137015FF +:109BC000E5B7B28EE3F1DB8F0AF19B65D33D94ECF0 +:109BD000C0753A31EF1AF233221F7A1A90DE12D191 +:109BE0007B9B90ABDBE491FF56BA8CCB6B35732932 +:109BF000CA894ECD4772F26AAFF5540AE54448620D +:109C00000FC0BCBDA807415E5EF16525817CD8F917 +:109C1000136FB3D700FDE20DB8F6AB76D929038BED +:109C20008229D009FB49C417CB2A63E3FB9D9AC95B +:109C3000FEE8DF7BDCFBCAA3BB2F88E458713CBC89 +:109C4000D5754497EB26FCD1F9EFAFF6B234E9397C +:109C5000F5908FE6756B2630D488F39BBF2C037488 +:109C60002BF5F27566EFFBAE3EF88C2E3BF0D4B9C7 +:109C70005B79D55F00EE717CD9DF81FAF1974DFEFB +:109C8000BED87780BF65088FD204AC0638EDF4A645 +:109C90002ABD68D71FBC3E079616F0D1216E3F8BB8 +:109CA000FE27E087B52DE067A7168057F7BC8AFE30 +:109CB000D8E3C17B3C7D7C74775F3F83EF7EA32438 +:109CC000E6A03FA773EB021AEF326107D978BFE233 +:109CD000CB7D9585E20DE378F76E5D8170BFC7ACF3 +:109CE0007A6F23D5E777C2F34F17E197E3F1C719EE +:109CF0005EF73EF763E30F982FF2C705367F0C54EB +:109D000010DF9F307FD8DF9D207F003F5CE485D24D +:109D10009493175E0470851B5862C898E00FBBDFF0 +:109D2000497C21E8F451E13C1E5FA81BBDC6AF167B +:109D300081BD299BA44707F4CD16D117F72AE89FC8 +:109D4000C83492DF10142DF913E12F87F254D54D4A +:109D500092F341D8B4527CACC9E3964F79F22BD63A +:109D600061E6EC7E71DEEA461F8D8B9E131C57D692 +:109D7000582E80F3117E69644BB4A3FDECE7EDF33C +:109D8000F87784AF62F39119F75BA35B09ED6B3F42 +:109D9000FBCB88D34F3B79FEEE71626B9253C66D5D +:109DA000F2DB334D36DE74E0BDF877327BD361D71A +:109DB000EF41D9BC7802FFE6B21B3A102F61E649A9 +:109DC000A09DDC53FD7716BEDDC2F8BAECC712F9D0 +:109DD00022C6FD379D289CE17B4B5A928B633CC188 +:109DE00054C7507F79B534972FB1E9F9798242EEA3 +:109DF0009F27271F4239F5A50A9641793E8E4F1FAE +:109E0000EC279007EAD7F0FDC129575AE8C753E677 +:109E1000E88D388538EC0BCE3BC5D92FDFB70E74F3 +:109E200065D9EBCA44DC493592BC147CC6EAB9BC9E +:109E30001A68E0F69AAA1E623A94A1CCE11CC62BDD +:109E400026F8CC626B4E413A72BDB81B4ABE6FCA4F +:109E5000D2384A2CE8D27FE3FC543F3D79B8BDCBE1 +:109E6000905E77C4014A8AC4779FF64A2E7AF574C9 +:109E70005967FDCAF19D574E10FCB206CF1DFC6E0E +:109E8000BF9FEE38A35E6E274EB7FDF37970DD827B +:109E9000720FE03876DB88BC1ACA73733F956B008B +:109EA0007F7F12ED8EDDC63AB19FE7BADE77F911FA +:109EB00025B992BE3F77D5B3F252C738E70AFF22E1 +:109EC0006323F2796127FEC4BE511B7BE2438C1BE6 +:109ED0003679C98E2D86EFD5B1A559B97CA2FE5C25 +:109EE0009397ECA1E7601F847CFF5C533C6B15F0FB +:109EF000D3E4FBCB57C756503FC7368DC8499A8726 +:109F00004A78C2791A00DFB9EDCFCAA6767CB8FFCD +:109F10004DE405D878BB4BF4736C538E61BF5AEE99 +:109F20001986FD699D39D36CE0F20EE1D48E9493CD +:109F30007D07FB6A75F52913FDD9FD47709E8B26B9 +:109F4000EA3B1260F7011C3B709E4D5837B2560138 +:109F50003CE5CF3382F35CE490E3369E5B3C53E216 +:109F6000F9175D66562EA00FEDF2D2B33C49C4FB43 +:109F7000A5CA6845213B341F8ECF6E6CCDCACEB8C2 +:109F8000D84784E3972D1C0FBF94C7C21F695CC0DC +:109F900043BD9D3701F83F56C3CC76DCF79631E2DE +:109FA0001B58794751FFD9714C59FD34BB75A163DA +:109FB0007DEAF0DE65270B7D33117738EADC6F8DA3 +:109FC000EB45D46B61CC6BE8E7FEF96890F60DDEEB +:109FD000A8FCE6681E7C149F9B2391BCECB1E53580 +:109FE000634F62DC406E4A7C05F1753108546107AD +:109FF0005C2CD3BA35CDEE28C519D243E42A3F44B0 +:10A00000BA4BA9AC8F703BB1B01CDFD23532C389DB +:10A010005F1B7F5B14E1EFFD60E928EA67D9537F9E +:10A020003DC527A6E9F71F9A2D754C05FF0D13F0C6 +:10A03000DF20E0B72E6B22177E1AC709E90007E080 +:10A040006FE8A4F953C23F5004FE8109F8EB510FA9 +:10A05000F47A1A4E087E1BEEF171EA18D17750CCD3 +:10A060002B7F3E83753EF227F79E94F80A8AC8ED4F +:10A07000627E301DA23BCC73BBECE04B59E7F6FB94 +:10A08000407C8FB919E396D010F56E31F802EA8B57 +:10A09000336447DCFE1E99EFE37BF111DAFF228E79 +:10A0A000AC189C0FBBE5D43D389E52DD4FFB2A25F2 +:10A0B0009A21BD19AC87797C12E3F88CE005B32EA8 +:10A0C000DB007C1F0258D426AC8F7C03EBD08EE9DA +:10A0D0008EFA381E2AAC98E6B0E7FBE2FD2FF93184 +:10A0E000CE1A65C602E4B7DC4524EF9428E86980FF +:10A0F000C727E74C8AFF24581CFD963EF510C51172 +:10A100005903D40D18279A65ADD0DFC01FBD3CFEA2 +:10A11000809B41C7FCEF90B99F2A9F3EC5E8F7BCE2 +:10A12000A0CF6AC9C68B9B4EC34897C5448F61991F +:10A13000E863E66E6A9ABC6E9E3F7701E7BBF6C2A3 +:10A1400076EF6AF5F9192EB92AF2330CFC17FC5F89 +:10A1500046D025586FDC49760ED21748968DB5E764 +:10A160002403FD3C89C16E1867567D7618413D3643 +:10A170003BF59C933F0C4B97905E5B15EEFF59EEC1 +:10A18000DD1A780DEA7B533511F4BBBE2F4B05F178 +:10A19000B0BD0BE6AAA05F53A5F2D82B0BA68CBBD3 +:10A1A000EEEB622EF9BAAF59267DBAEFA6D7324B45 +:10A1B00001EEBE68ED42949566F3AB7BD1BF11AE64 +:10A1C00037C87FFD1B313EE0F137B283CFED7DA96B +:10A1D000628E9864C7B0118AC35745592267703997 +:10A1E000273BF0146E628FD7C2FB598C91DD097842 +:10A1F000F81DE2415E976DF5B1C978D89BE2F9454B +:10A20000375C31FF8033FFAC5DE17CC2CC322E6F16 +:10A21000E4447D21FBDBA6D77D80A7060C4CB1432F +:10A2200012AE9B59B77297CE03E2F92372D2AB00FC +:10A230001CB33624141CFF39E18793982A57123F28 +:10A24000E9FB919FEEBB2D28D6BDBE1FD77D58B12F +:10A25000F3F7C6D77D5829B0EEB729295D41BB7900 +:10A2600077C6829D2E9B7BEB083DEFF1805DA511AB +:10A2700098CF213FC5252690C5D7EBAC04F7BF2F5B +:10A280005138FE4B6BB3DD1E786FFC7AD6E675F065 +:10A290007E30A59928E7E6D67DAB7529E0F53DB07F +:10A2A000E7310E387776B6DB87EBF07A1E3F285D14 +:10A2B000C63C6D484FC43BB4AF4EF37A44D8FF83DD +:10A2C0005DDC5F5E63652556603F12F065289F2266 +:10A2D0005E7BE52A342AA5F9B136941F83DB580248 +:10A2E000C3B0B336E4CCCB009E78B35FC7FEE7C6FD +:10A2F000138FD37B18BF1BE08DF7F2F7A5B04DC4C9 +:10A30000F102EC50B78AFA57CEB0F31D74D36A53FA +:10A31000D760FFBD4A6A09E2514B703916A8CD5289 +:10A3200079A73242F672B82567929FFBF43D6CAD77 +:10A3300083DF570ABE08343133AB4DF05F5624D467 +:10A34000DCBECA13BCAA01DB05F93E80ED36F5067A +:10A35000E4DB8C89F183B0E05BE0CB15387EA97536 +:10A36000A815F12D37655BB10B588F94A774A79290 +:10A37000A94238EE3CDDD741710F8BBDC89680BD38 +:10A38000ED61137FA89F6BCDFB917E7FC4C5897E55 +:10A39000BF59A3D63A1827067433000F25A3FB73C1 +:10A3A000FBA0DD538037D60CF5E66CEE31A4BB8DF7 +:10A3B000A7EA91731640FBF2184B9884E76CEE15F0 +:10A3C000785FDD116288E75236C67C71C2D72508F6 +:10A3D0006F7855B61BE50DABE17CBE4F4EFF721397 +:10A3E000B4DF77C49BB00CC77A61B05E1CFBAF3999 +:10A3F00037B1497693737D1D4F7F4EECC3B93EB2A2 +:10A40000FD82B0AEAE45BE9775BEAEA6EB6F6A05D7 +:10A410008AA0DD3BF32691FF2AE4ED2C81DA6A362F +:10A420003AEC81E773C17453A08CAF3136E3F29EEE +:10A430007749B66A3FCCB3B7F4C52A1ED75DA6E309 +:10A44000FE5932CBA50F4F9EFE3EDB866356DA9D4A +:10A450008F51DAE9AE87F3F2358293E274BC9F1232 +:10A460005B3F198984534E6D0B8CECE571FB67DB08 +:10A470007E1883BA34D28121495FF90FDADAA1FD5F +:10A48000B6F0480C43D581D0F3540FCFB1F348C791 +:10A4900054DCFF7E473138BFB7C01880AF9D864C73 +:10A4A000F8DAB1EC391DDF0F8FDE4E7CB8B385E7EB +:10A4B0006BDAED778E7A5187B3ADD01E9D125B5B60 +:10A4C00078FBF1FE00165C0F5B457FC71AE13DF09B +:10A4D000F931D01D23C8EF728EC6F7982A2BC3FD21 +:10A4E000896867F753373A46FAC0EE6F3ED3BB71BF +:10A4F0009D055B32265096D59929EB71183F92F055 +:10A500006441E2C07BCAC565A5D04F0EFA092CCBC9 +:10A51000E6900CC3AFCC088C3AEC8F9D09DE3F6B04 +:10A520008E4E4BEEA39D7CB9C34EC67A0FDA9D8644 +:10A530004C7627C8EB2771DDC84D32F949CD35ADD2 +:10A540000CED17DBBF668F735CFE9F663BE3D72184 +:10A550006E87BD2CD13EA8624E328EF962EC452F3B +:10A5600043FBC86A4BC6D17EB57E11D27B483EA65E +:10A570004F73CAC73E21A7A349EE1F39867E1747EE +:10A58000BEED57BDA95FE07A932A3B52B87E6E7943 +:10A590004D3290EE156BB81F65234C91FC24ED1ED7 +:10A5A0009E1FC6F8FE72D7FD33081EB9FC924A946E +:10A5B0006FBBDA6BA6CCC7ECEF62895A879FA15FAD +:10A5C0004EA948EFFED842B5D077BE982F51BB08B0 +:10A5D000FB3566E81FA9DFB6A0B3DF3A6FEAFF2BB1 +:10A5E0001593FBCF8FA307B487695F1138C1F8F9C2 +:10A5F000DEB5FD9427179D6136E2FAFB8E8FE5925A +:10A60000B026A221F330AED72FFA4E5BAAC17A8CC6 +:10A61000FACD460FD467FAFD4BB702FDA373CDEB1D +:10A6200031E4F686E7B34BFF11EBE89B3E83B14A7A +:10A63000FFB61E4BE01FF5FD60973E13FD40DBBBF0 +:10A64000625456FAB81D5185C9325006402FE2BCFB +:10A6500083B5D0CEB1FFC438303E8F34C75CCF59FC +:10A660008CCB475C5B683F80FE9AE343F9D5911D34 +:10A6700046B928EBF9F6654304EDCB63C3E7B01A9E +:10A68000E0AFAB7C229F4E3724B4E377A05D5987BF +:10A6900071746E57BE3F7A3E9369DFA2A6D1BEDBCE +:10A6A0007ABA2D87B294CF1EF1707F9F4D8F88FAB2 +:10A6B0006225D9CB5173024E875DA16CFCC1D9BF15 +:10A6C00072F875CAA2230CFD2F4A93517539C01F29 +:10A6D000D693ECB20684D7D04D5C0FA53C9F51D9E0 +:10A6E000F823FACED30D620BFD9ED11443FB748583 +:10A6F000AF92E0DFBAD8907CF8DD49B95802E75B49 +:10A700006174A35C0176483F00707BD61A9900EE15 +:10A710006F13A9AF38F37BCA1286E49D22FEBBAB50 +:10A7200094F7BB23CCF79965D18D339DFEBAE1D167 +:10A730007911CC93BD4AD0F1161FCFA7B0BFDFDA95 +:10A7400065CC447CF676D553B9D6574AF200AC0EA8 +:10A7500092075A6994EC49FB3BFBF9567DF5035E81 +:10A7600087BF64AD8FE767DD1274B7DB162DDBEFB3 +:10A770006EC7E9794B09A78BDD2E5C11CD6BE729FC +:10A7800018770927005E077F293AC0ED986F496D59 +:10A7900086E81E900BFB17CFD45B37F8A0DF797EDD +:10A7A0009E5FB3373E1443FE7B1FF034955CE98512 +:10A7B00075213BF3AB6593F21E64E1C75474DD056C +:10A7C00017DA31E8A77B2CD0FA05E4F779688C2EEC +:10A7D0002EB81E2C84E778EBC11EF711813F875CF1 +:10A7E000A2F58074467DD42F713E980CBF41F00FC6 +:10A7F000229DA1DC67D341D0754B759BEEB4570BFE +:10A80000BC57AFD09CEFDDF4DE52BD5A5DAB15F8FE +:10A810005ED019DEEBEEF79CBEBEBCF56997877D76 +:10A820007C5F618FEF9FBDDBF57D81F7EA150DCE73 +:10A83000F7DCAEB5E1F3CFBE5F2DF8BD800FDEE7EC +:10A84000F5CFED754577F35BB0B6DE551FE7A34650 +:10A850002E97B7C2F2912244BF8B92E46735AA5675 +:10A860003BF4E4F57E8E97F1EFCEE1DF3D2DA78638 +:10A87000914F821DE91CF2C1704327D9AD76BB818F +:10A8800030E7D33DB84983F532F48C378BFBF621A2 +:10A89000C59D9761976FF8BCF4DD9E80F03FC9F0CD +:10A8A00007FB8032B18FBBE31C43423FFAF3820EB9 +:10A8B000ECE0430F3D047C598620D74CE803B6E614 +:10A8C000820B2E80E7BBF039E9E51CC5D3CADAB9A3 +:10A8D0003C06FE33953A9E9F81F27FEB070BBA51FF +:10A8E000FE593166E0FEAEAC9A91BDEC6FF2ED47D9 +:10A8F000BBD80FFC1F76ACD79F88F1ED7E06A51C58 +:10A9000039458F0A7D53163386D1EEF1553303F75F +:10A910003BF8BDE2C0BFF7A275CF4AE4AFF7199884 +:10A92000FF0F705B9F203B829FA3626B9E7D09C7D8 +:10A930002FD32B0D94ABDBC21C5FF678B410713FA4 +:10A9400058B7E441B4339E28FD7C0EFBDBD6C81615 +:10A95000E192F5C572EC4AC4BB64E7A532B302FDCF +:10A9600028F57CDF5D79F1807F0ED62B6736620893 +:10A97000ABC4CFF9661C7F070F30A7BF3ED8A1B686 +:10A98000A2FFDDEC38CFE4F69CB190EC39C6E91AB1 +:10A99000AC36C81FEFF1DB7E0DD3E3073C6C037AC6 +:10A9A0001980EF6D17D577CBE4FF608790150625EA +:10A9B0009EB76D3502BEA11FADC9A07C0EA00FE9E8 +:10A9C000177FCC20B8E6F90D979F261F8F7B849FB9 +:10A9D00072DBE2150CD7C1B6734658FC14FC8ECF5F +:10A9E000279CC8911EB4FB9161FF8B9BF6406D2A9A +:10A9F0008E7CF9582019F3A3BD29ECDE71BE8D0FB2 +:10AA000010DF2A20F6F03C50F4FC55661FC0DF270B +:10AA1000FC8C66079F77B89AE70DC93ADF4F83FD34 +:10AA20003BCFEF80D7F6E78CDB89BA87D357D8893D +:10AA3000BDAB2A5DFEFB5EFDC4ECC42DC8BFB87E75 +:10AA4000B5C755CA3BAAF62428EF28B1F008A65E80 +:10AA5000FACE8A92FFC96EFF90D6B6D8EFC667A22B +:10AA6000D6C1D7BD684F4EA1B7278F6F0470FC5D6C +:10AA7000999AC15AC7F8BBDADB8227151E7FB97FC6 +:10AA800071F1F1E1EF6DD4333EC15A03F12B0BDAD2 +:10AA9000BF372AA9A4B31F5FCC74E379DC1E370249 +:10AAA000CEB8E889DAE1F925B077929F2F3AAA3B30 +:10AAB000F337D70ABEBF4233D7227EF3E775A276BB +:10AAC0007AB171EFCFB8C7ED157219C64DE3B8BDB5 +:10AAD000B8F891CFC7F308D2EC8D269283E9BB1268 +:10AAE00048DF368BCEA7E11AC2FD65E3E7D93F42C6 +:10AAF000BD3FA5A5B97F2495BC02964A30B3DFC2FD +:10AB0000FD2AEC9D29FE1B603C9FA0623CEECBF928 +:10AB1000576E5F41FCEB8BF178F7F785FC63D5410D +:10AB2000F73951110F9E4CEFC279520AC25F4E792C +:10AB30001092D244390AB47FECAB5FDDAA60FE41CB +:10AB400035EC1A0CCC134B75E3FB20F48BFE18ABE1 +:10AB50008DC731AD07FDD91EC9318F28F7DBA9227A +:10AB60007E3D07E741FC612686510EEE5E4EFDC339 +:10AB70003EE81EE42B5FB53B5F4241F8297EE0DEF4 +:10AB80000FCD608911B4A75933C7530973F82FA6A5 +:10AB9000B12F7AD8CFF5C897E5D44338AE963C4468 +:10ABA000F9FEA84F519F459356EB8FA2C2BF5B2A77 +:10ABB000F05E295C4E349EC5DEE4F1B6049E4BCCBB +:10ABC000F939FE2BD658AD489F6A105FF85D65C70E +:10ABD00008D9674342CF0F293C5FCE96DF6007EE6E +:10ABE00047F9BD39F4CDBDE857EC2B2F23F99B1362 +:10ABF000F0996BDCF20EE45CCEB9FE42D12C57B377 +:10AC0000C5CEC109FFD5192B53CF209F7EADCADA1F +:10AC1000CBCFB5B034F0040B5425768CD7E740BDCC +:10AC2000AEA9E039EB0F5698FF8CE37E4D3AF4B3B2 +:10AC3000F548E75725A2EBD76A1317A19C66EC509D +:10AC4000D0B9DEBFF6F51395A763244F7768478F19 +:10AC500038E5E98E96A2F2F49753C9B3AF9DE0BAF6 +:10AC60001F1F3F933F7E5179FA6F38FEB8DC6BB1FE +:10AC7000E5DE18E583E4C3B3A3E5E3917F923A2EC2 +:10AC8000FF24B580FCDBF131C93F7D625C5DA5F836 +:10AC90003CF787E68F9FDFDF785C59F8110FAE48ED +:10ACA00056A980C7DF5533CB0BEBA3A4BAFFE9B598 +:10ACB000C644BE07AB1D15E7594655B48BEC730D62 +:10ACC000DB9B3F1EBFCEF613D4C376BF93E79975C7 +:10ACD000EDBBECFE7B71DEB0DEAC73B91FE02EC6BF +:10ACE000F150C646E8DCF3A7045E2BD5648BEA88F6 +:10ACF0004FDDAED50CC6012F776F782E80F0DBE7E5 +:10AD00006D19E819E77E61F9F8F7E652FCBE3C5C84 +:10AD1000B3537C578ADFD579932B11DFBF519295BE +:10AD200014C0CB93ABBD12C85584EFF48F26572FB8 +:10AD300050B95E7CC29FBA00C7E959D536540BFDA5 +:10AD40000CDE7419ED13C6E1EEE4F1D2F2736B7709 +:10AD50002E0392F6646A687DCDBE5926FD361833FF +:10AD60000E38F7F7769EC9137EF352EC97754ED3E3 +:10AD70009F3FCD76A0BF385DCA3CA4BFBEA8727904 +:10AD8000EE4FA6482F547670BFE3E764F35AD541DF +:10AD9000D7DE3F793B0BEDA73E2FE8D0EBB3B8BC35 +:10ADA00017793EBDA531B2D72518D719B7E8965304 +:10ADB0005FC47ED57A1E77500D1E2F029D4B716F9A +:10ADC0007F35D703F02DC5BD7D311EF71E8AF338C0 +:10ADD00037EA66DD51B7FB1D8A67639A03BEBE93EF +:10ADE0001EA4B877C060C60268A7E60629EEAD1AB1 +:10ADF000164BA17D0EFC447ABB9AC7B9036A8A91AF +:10AE00007C8BF138B86224592BF4378471EF027CC3 +:10AE10007F8DCAEDFFC5AA79BBEA882FDB7AD3FC08 +:10AE2000B546788E75F278C8AC64AE95E397EBC9F9 +:10AE3000F17B04D8EB0CE31C93ED92F430DA1DB7F0 +:10AE4000A35D026FFB566D96303E386197645A7D64 +:10AE500022CE64313A6F43EDAD852CD103EFCB3375 +:10AE60008DC3B8CFC9B74B660BBB24DFFE408F1B29 +:10AE7000C617940693EC14B0170EE1BC82EBD21601 +:10AE80002A7FDB3ED93333F56D7CAE5E92261BDA2A +:10AE9000B72E99C3F755EDE6C31C0FFC3E833BFE6E +:10AEA000EA4DB2D7CA9B472D760AFA413366B20003 +:10AEB000FFFCD59CB6EF213F94CB0909E54BB9C106 +:10AEC000F7873D5A9BEAF4BB3C3281EF616C6FCC53 +:10AED000311FA7F5C1B2D2A7D10EB1D818E6CFDA8B +:10AEE00074B0E34ED164B615F969B6093602BC9F59 +:10AEF000B366AC1B431CC625BA074DC99A75090F2A +:10AF0000AB71D043C49DC6CF8DADE2FCB86336CBE8 +:10AF10006E90300E3816437EDC71D68BDA2A8C6345 +:10AF2000F5F2F7F755F1F7350363552AD637F1F700 +:10AF300036FC3B36FD3E666858F2FDF28EEE8CB470 +:10AF400008EA55B93F48F3005FAFABE5769E02C310 +:10AF5000B8E49D28B360CA3B84DF6AC77080C6A985 +:10AF6000BA95ED0F70FD2B615E9A14E07228D2F253 +:10AF7000A6854B9959395628BEB2633097C3B84A53 +:10AF80004D82E9B02698D63CCA902E3BFA72B42E78 +:10AF90004A12BA07E93517BBA604E52F2DCBC1B875 +:10AFA000A5036326B249492A974397407C158FD35E +:10AFB0004612FCFE97D2665EFF0F959F67FABDCAE8 +:10AFC000ED39BB1E1B18EB46BBAB04F814E57379D7 +:10AFD000EFA885FEE8488A255A19C29DA07DB9349C +:10AFE000A0537CBAA485C7A73FDB9263782F8174F6 +:10AFF000EB28C3F67307F873A957F7A03FCF86B3C2 +:10B0000032704BAF750270EA01EEFF0905389C768D +:10B010003D36901946FF86566DC399E3E3229C06A0 +:10B02000C6FFDD70466E1570027C04E7BA319A5790 +:10B03000551E9C5545F239BD018F2B2F7123B3BA94 +:10B0400037F37D04EDDF6329D57C01D763B541F685 +:10B05000B0CA5244577F2CC9F375607CB4DB9E653F +:10B060009E309D938DA51FC2767E3D6DE17B7F75E1 +:10B070003A887242658689FB07900524875AAB930C +:10B08000B94DE837D23D09BA5FC1DCC4FBD5399E62 +:10B09000C6FBD3A13FD28303137E732FF54F7EE40B +:10B0A0005630FC71DEB27E48C833114FAEE579DD13 +:10B0B0007254FEBD33CE3A97F1FAAC14D7AFB3B0A9 +:10B0C000EE8EEF4CD4F1BC5FCC51AF99788FAC4F82 +:10B0D000F9D8F9788B09BF96B98DFBD5C47C63A9E3 +:10B0E0004E86EBC41FE5F41F9F5F741C5FA61B5FB9 +:10B0F00026E92BC01343FAF997FDB155A276804794 +:10B10000419F3A693A78023CA39F09F08CF1E1092A +:10B110007CE91F095FBEE3E16BD9B4F125F54C85ED +:10B12000AF4E95CE05F95E98477AE77F1FDEDC715A +:10B130000259DC6FF1DF85477B9F997FAEE5CB013C +:10B14000F7B916FB1EAF62F913F6799671BD2F2F72 +:10B15000233FA0F2F24AF227805A4994374F9E4F7C +:10B160003178ECFC4279E39766FECA91972C8BF319 +:10B17000A78A9C64CE7CDC6F0ABDA118DE82F2E94E +:10B180007E211FEDEF71603FD2AD89E7371D7BC592 +:10B190002FF2AAB8FDFA684012F64B0F8D0FFBF79D +:10B1A00047030E3F6008F9C5288E8F7C3B7578D425 +:10B1B0004BFDEF32D42CFAAF7B3C46E053B85FFD39 +:10B1C000271E77D7C5BE6A014B79106F750CF4B88E +:10B1D00017F3E5DA298EB3AD2B4971BBBD5D1D5464 +:10B1E0007E2228158B33FD73A0609C2917C37C3AFF +:10B1F0002BAE92FDC490894F9F1C77CAB7DB312FCD +:10B200008BC70D552A3375FC9C459D9E68C3F90775 +:10B2100044DC0587C275A7683CEFF1D82B777490A2 +:10B220005FA4A27911FA45DE08F0FC54B3336162E1 +:10B23000DE4558E4DD7A6B8746D06E06FCBE817031 +:10B240007BB524E5A7FA4D959F6B14FEE0054DA94B +:10B25000CDD8CFA092E9E0F92A7F5886F74C0CA20E +:10B26000731CF4E6DB83913ED49B4866ACEBC130A3 +:10B27000D5F7097B83FEC00E5920EC107B9E8B8294 +:10B280005C6F9D8A17A6203EDFFFF043FF12BAD7FE +:10B290008AFE82C06718FF535AB83E092C68A8BAC4 +:10B2A000D281AF3F097D1BE8E2E7B676CD4E75242B +:10B2B0000BBC5783769E9E8D27EE17525E3E8DF017 +:10B2C000C1845F47A95D621E80BA0A0633D6012F8A +:10B2D0006A10FD499D1C2F61C00BE2CDAF1D3225C8 +:10B2E000E6981796B8BEE5F4665C6F3B61A37217EB +:10B2F000A6EC060D71CF43BAED71F46BBEA199981F +:10B3000087B2A0F6AD4DACE423C133D38687E2DF2C +:10B31000224FC53EBF638FB70F8143FE5EEE23B958 +:10B32000BCEF661FCFF358EEA3F5F511C63D692AB1 +:10B330003CD8F473D0BBCAE9D74A083A3705C5BD33 +:10B34000164CAFE2FE893CFCC177742F9AACF392A5 +:10B350001955CEFDDE4ED1FF60D7C699BF72E4B15C +:10B360003E1314719C80796610E78F8B0FD7DBF545 +:10B37000E21E24966BF572BF24D1C5AECF5CC788A0 +:10B380001EEFBFFA34D5FF7D23A3BCBAEDC11A82EC +:10B3900073FE3D962BCE6F7FA7E0F93AF82E0BEBAC +:10B3A000B31BE02885B134D86F1A29ABD5003AC455 +:10B3B000D759B4BF2ADFC0EDBD5295DB6DFD8BC7F9 +:10B3C0003AF0FB5176BD5FFE14ACCFC5EC5369F883 +:10B3D000EEEE6090E777BE2789BC8A1CD9453BFF1B +:10B3E000DDAE839D046532C1ED58AD9ABFDF51C11A +:10B3F000F30F9726F87CFDCBD87E74B1CF16ED52B3 +:10B4000002EF97215F60FC6FB6D186FD9426F4CDE4 +:10B41000F8BD3F36BF0DE1D598BE19D75964204716 +:10B4200076AF3F9572D9BD5A8CAFBF4835AF5F1D1F +:10B43000E4EB6ABDE8DFAEFF4835AF463E292F6238 +:10B44000A7DE28D661EC9E88D003BA74A183BE9F84 +:10B450000FFA443FC99B918E35D9B92487FDD55C3D +:10B460008E6A02CF9A9A6698DF512AE02955D394C2 +:10B47000771CB1CE5F4EF73656EB77F69D82789506 +:10B48000693C2DA15F84F9B25B2A7C09DC82455AB4 +:10B49000F43B2D78BFB3E24ABAA7AC7FF685B49FE0 +:10B4A000EA13FCF552858FFC0EBE65E987505FC438 +:10B4B000627AF7BFE2FEDDA653AE4AC27D4E9FB868 +:10B4C00017A854D6A519424E69B0AE33621D2ACBD7 +:10B4D0003237E2BD784AD3682B9EC35400B91B179C +:10B4E000629C4E956E2AC3E763AD280766825DA411 +:10B4F000C1FBBB03A93D386F16B55C793333A39903 +:10B5000056ECC7E6B70745FF36DEF2F9742FB6737F +:10B51000F8DB8CD41843791CA94E51DE2CE2B12102 +:10B5200032F1FE41B17E34C1A7B114F3AC77D06FD4 +:10B530007BD02FF6173AE5954EEE3F49FD2BA27FC3 +:10B54000C447A9E3FB6F093E29357D05F9E2AB82CB +:10B550002F8C549AE1FD447EEC074A73434E42BF60 +:10B560004BB8416F4439376B43B61BFD0AC16A9D26 +:10B57000FCFDDF15DF757ACDEF22DEEE0E98DF439E +:10B58000FE5B70CF48F73AA1E7508F0D8F5EBE3952 +:10B5900080FABF19F653F0DDAED1791136851F74EC +:10B5A000CE4DEDAEFC83F9F7245DF92F55A90ED7EA +:10B5B000FB8C1DB7167ABDB83DC2F5FAAC80398256 +:10B5C0007002BCCF62991171E1DE2ECB25D77E26A9 +:10B5D000E657A79B26F2E9BC68D2C2F21782FE7535 +:10B5E000206FE8F9BA4C3796F26ED3C4F5AC6C4DC7 +:10B5F0005A58C676737954B535D38D655B20F92AD0 +:10B600008EA7E86E7E01385EC3E7602705506E6442 +:10B61000103FB83ECD68413F603E7E6CBF6D4953E0 +:10B62000D2F53C1F4FC5FACBB7D7EC7CF8CB9A8547 +:10B630008E60C6A730FEFF39716FDA0D8FEC7B6A22 +:10B640001FA0FA86D361A799C07375F73D8579D39A +:10B650005E534DD2B91F96790AF3A4D7758418CFDB +:10B66000FB4C96A03E798779DA11CFEFB0E74A1606 +:10B6700039E85F12E2E744D880427E5B0BFE87EB3D +:10B68000EE8A8CE2CAEFBD6AAFBB7E255B5D89792D +:10B690000257EE5618E6B17E2E2FCFF04F42DF5DF7 +:10B6A000C5D2FDE88FEA137924D77CE7141FEAEFAF +:10B6B000CF2DD2E3E847B2E1A80CF175F216AC2F1A +:10B6C000C33FF17CBD96F5613EC3EB0F2FBAF04C42 +:10B6D00086FD64FB6736515E1CF99BF3F178F980B7 +:10B6E0001BCEE3CD231F6EFB3C6E3138E48312C9C1 +:10B6F000DDFC716B4392EB5CA9D596A67B7AACCD51 +:10B7000032C37DE21DA1DBE81E9F8D965F47FBFFE4 +:10B7100058604E16E55F4BC8B0CF519CC6ED027E17 +:10B720006FF274BF3743867DFECAF5FDB6E8481256 +:10B73000ED79FBDC7348CDD21C2599DB4BDB62C76E +:10B74000795F3BF5FB63814B2BBB012E436269BCE8 +:10B750001FE478F714D57953E7852AF0BC6DE652DB +:10B760001EFFE3703236B602EF81F1B3123AC7ED35 +:10B7700017F1038A2F90BF269333E3E87F76E79B88 +:10B780008770DD413FD7893C9850BDFB7D7E9CE1B1 +:10B7900072419F16B040703D94A85A8ECE3136BB90 +:10B7A000EF8DB1E979438CFB8F8BAD570F530DD0E3 +:10B7B00019E40FFE90FCF3BC6E8F7F3423B523BFDA +:10B7C000DF008A63E34267BF767C3A2FFEFA01BC52 +:10B7D0005FC2AFF6E3F849C4103F035D8CEE71EA37 +:10B7E00051929FA17B8B7EE2C59C4ED653CAFDEE43 +:10B7F000D66C9E07E5AF4D46705DF95FF0463D7132 +:10B80000213AA0DE5FD57E3FFA076E0EF17C352629 +:10B81000F3F3997ECD3231DFA65F49C5505FF96EF3 +:10B82000E3FBA9562D95C2EFBCB10E05F5FFD35F22 +:10B83000BF9CCED9AF8FAD90D1BEB2443FEF3C7428 +:10B840007809FA3DFBBF11663994FF72D6877A6595 +:10B85000FDC35EB297AEFEDB308DBFFE5B573D8809 +:10B86000FE5BE93B67196F92DDD3C3EDA7BF3BFFDA +:10B87000C796980FFA5B7BBA851EB11231CCFBBE1E +:10B88000C6CF3E8BFAD49EBF8D3FD5C850FC74FD09 +:10B89000C152577C75BD0CED517F42B9BAD03E5CA8 +:10B8A000C897B7C3DC6E940E0ED3FD2EEB0FFD1FB1 +:10B8B00005E72555A7D91B30DE9D21C56E47FB0640 +:10B8C000EB6F24F2B7BCFD37FB7D98CFB6FEE07E70 +:10B8D000DF65649F737D66C3A91EDC69A15C526B42 +:10B8E000F51ACC235BFAB7DF2841FFCDD57FFBC724 +:10B8F000FE339AE87E8DB155B00EAE3BE8A57CFBD9 +:10B9000080E1C9BB8786DF9F792DFE13BEBFFADBBE +:10B91000FFBAE2E7F0DD5B20F703204ADF1A79C3C4 +:10B92000F73DACA760C383FD3CEA9663D71D7C9DC1 +:10B93000EEBFD03D6CACFA4CD473EEF590DFFE3D1B +:10B94000F6810FF71DD71D1A24BFCF750FBFF33334 +:10B950009427D7E5C9C3B7F01F05FC34FF1472DF85 +:10B960004FC30E964FCB1F71F537DEBB17EDCFB728 +:10B97000BFF5FFEEB5008F1BFEF4BB7BBF88FBAFAE +:10B980007F08E828CFAF7BE88D7BBF00F37CE751D1 +:10B99000BF07F9E2DDC7BEFAE05D507FF7A70B16DF +:10B9A0004A507F3DC4EDB5770FFFA112F3D56E7AF3 +:10B9B0006CF90CE4BB9B1E593A63AA7BACDE053ED6 +:10B9C000CAFA9DF064B9DDF5A884C9217891222FC7 +:10B9D000F3E8F0F6E1633E5C67BF97D818EAAB6B1B +:10B9E0000FFDD187FCF794C9C6102F4F3CFCFA53CA +:10B9F0005F80FA3B40177F01BAC0BC6779E8DEE898 +:10BA0000DC2CBC3FFADA87CFFFCC594D582A09030A +:10BA1000E9C2C6483F4EA2E70B40CFA6097A16A559 +:10BA2000DFD707E99CF57587807EA74EA6DF3BF838 +:10BA30008FD327D3CFA3B9E9F71EDB701FC5961F9D +:10BA40002E2F68A7D87EB66B1EB960CA7BF5DFCDF6 +:10BA50005BAFC5F0DC29FC4E3F0E9965DA62E487E6 +:10BA6000AF3D785714E9EC4FAC42BA7FE3BD39687B +:10BA7000C4FE5A19BB14F130F6985F3F00DFAC7F6B +:10BA8000EC5F480FBFFBC8B33E83EFA34B24909BF2 +:10BA9000EFB2F1BFE7705F7DAD70525C73FF7FACBA +:10BAA000F8197C7F0D74817E50A01FD59F32F97DDF +:10BAB000DED766CF6B37E83E980A9AF7B559BE1EB7 +:10BAC000AECD0EAFC17B7FF3F17E8E66FB5326E8D1 +:10BAD0002A35233D5F5D81FC578C9EF6FC759CFFEB +:10BAE00069F0FE7EF77A9DCC37633E94FF367DDFAA +:10BAF000DD7FCCF773689FFB9E4FF79C017565CC8B +:10BB00004776D061AF8EF751E5D31DFDA66BC93FD7 +:10BB1000B6B9609E7B3E3F2CD3F2FCAE021FC75BE2 +:10BB2000CFC79FC789E1A949335CFC62E3ABBB8AFD +:10BB3000EF4BBD253EF263F62BC6BFE07E77EC19D6 +:10BB4000851D804F7A4A9650FC2D1FCE5EB4E31CB3 +:10BB5000F72DCB5A92EEE591A3FA42346DF2F32E13 +:10BB6000149888E180C71F1F4BD23D3EAD1E86FE54 +:10BB7000944CCB5806E1C82CF7F836031CB2E063AE +:10BB8000FBFB3BB579FC9E14D3E79160BFBEFDC8BB +:10BB900072924B19453F87F4F7E91EFD407C329CB9 +:10BBA0005B34717E73632871FFA2E2780F887CF4A6 +:10BBB000EDCD37105CBED9D1523C1F3C385CF50C42 +:10BBC000FA014ACCCA38BA901F10FDB1668DBDEE9D +:10BBD000F2C3733802CB3C981B00E395D078C7833F +:10BBE000EF468DDB4F818D81C4FD53D8457F6EF8C4 +:10BBF0006C3C6E46BE20FC6834BE8D57BC4FA135F0 +:10BC00004AE7CEC7F8FE27C96E8B528A379D7B93D1 +:10BC1000630BE9DE25E4CF08F7E77D45437FF0C3FA +:10BC200049D379DE2DA8A773F8F5B51ADFB744021A +:10BC30007A00F993E97CDFE64FC9948FE34BF1BCBE +:10BC40009CFC75E053C646F01C7949AD87F21B4B4E +:10BC50005A64EEB7157185C859E924CEEBDED9B523 +:10BC60001EE49B5F695C8FDDAB8C0E5C0570F47726 +:10BC7000478C034D382F85B68A3755B10398F7693D +:10BC80008F3B2AF0EF631ADDA7E11378B85D32EE3F +:10BC9000B804E5C05F7B683F5473A4F4F16A288D53 +:10BCA00091DFB6CE86F22DF1DD82971B3D73A03E6B +:10BCB0006CCBFD456C11AEF31B06D24FA32BFB865C +:10BCC000BFDEFC34EADB1B7B4D3FB2FF7DB7AE76B7 +:10BCD000C9F9C9F96FA3944F1CF9EBD70617A0FE59 +:10BCE0009ECDF3DF181E729F526E740BF999B05AF5 +:10BCF0009B287E3026CE27B2DB9AF8FD0158F7C686 +:10BD0000DA18C6CFF41A398DF7699B5F4F5A0BB812 +:10BD10005F83DA031D7F8E740CE959A29B1215F71D +:10BD2000386172F334EC10D821931DFCF742DE4CDD +:10BD3000E095AF07F6C4E7724B895FD531B4BFF227 +:10BD4000F9F4EF059FD8FC0092CB7A0DE3499242BB +:10BD5000F6BC8DEF62707CD4F2812E66BD46E7E7BB +:10BD60007879379675441F2A33E2F9F877B65C176D +:10BD7000F44607DB6B4060692EDF77CCDFCDEBB696 +:10BD8000BC8B3447691E76BD7A83BB6EF38B3F96BE +:10BD9000F75CF04FA9E97E9ECF4FC5F8687023E7A6 +:10BDA000233B8F72BA7C443EE28AE9D33DFF79CED1 +:10BDB0008E1FC7781E951C1B18719EE35E5F955CF5 +:10BDC000105E4CE7B829AF63B86A3E9D832A167FA0 +:10BDD000EBED3AD8E83CC765EB175966392FFA3DC9 +:10BDE0007578EFC0CF783E68C2CE074D76EE8FE211 +:10BDF000F9E34A8A1B87F46FC68611BF8D0B2F2A81 +:10BE0000743F41F1F539427986DBB4E7DAF13E510E +:10BE10001BAFDB9A8AE6C72E0D3BF4607E5EE6D64A +:10BE200013CE8F15E367F2C72F9A1F7B7EB862C2CD +:10BE30000F9D3FBEA937D0FD7A33D3FC3CCB1561B3 +:10BE40002ED766B3D16E85DB7A49D591AF34F792A0 +:10BE500091AA7F34F05CC28B71A45B84F5D27978AF +:10BE6000D03A4D1F4EA15FF3CFC32BE2FC586BEAD3 +:10BE7000FEBD786FCFCC74837D9E868F876343FD34 +:10BE8000967178727FC02B4CE7B031FA7D1A23A9E6 +:10BE9000B76148A6A623F1389600CF49FF95F3F97C +:10BEA000E3FCD2649F4F19519DE77FB6357D3C7905 +:10BEB000C303627E5768E600F2493E7DB69D601E70 +:10BEC0006CB171F3F386EF084B76DEF01DC81FC727 +:10BED0003D9730CDB8F81DE797907F427D59227B82 +:10BEE00072E7F925F4BB507E164C60DDAFF1F30C20 +:10BEF000B7CC6489CD405F658D8519F678CEFC217D +:10BF00009C7FEB2FEEA4DF7B198CA7E7E2FE739CEE +:10BF10002ECDEE7343DBF17C797CE27CF9FFB63CFD +:10BF2000E402E7CB9F72CA8162E7CBBDE15ED2B784 +:10BF3000EA09E6FB46CBCD46FABD0AB67B25FE3EB6 +:10BF4000857DAEFCA7E1F3566A786E1C1D6033193F +:10BF50007B65DB9E2D180F89CE320F63FB9B4BBE9A +:10BF6000BC328AE7CEE7F1F73FD80EEF35CC3F354C +:10BF70002D4CE238396270FB30E57B15E577A096F1 +:10BF8000E7DFC21E6F54B2FD6A06E529BC1676E4EF +:10BF900029D8F1B5E578081AE875B496113F14C3AD +:10BFA000E3DDE25C38DEB38E7909810DFC1E82DEB2 +:10BFB0002E9DEA435D312A777419D4EECE2E93EA92 +:10BFC0008FC8C931E4DF402DBF0F64AFF0870FF891 +:10BFD000F83D38CF893848BA84F3FB44C9EDE42AE8 +:10BFE00091079D69BB387299835E74C1C662279DB3 +:10BFF000EBCF7CD241675F82DFDBEC8FC173C7BAC6 +:10C00000D1C4BD875B378D31BCF73092FB0343FF52 +:10C01000564CF4B7B3AB93EE6BEC6B7CD3443EEF72 +:10C02000EF4A53BD44D687318ECB96B146CAF756F8 +:10C030000D5E6F17752D95433B1FF0CEEB60575388 +:10C04000BD1AEA28FFBA36BAEE812C5B06E338F453 +:10C05000A1DA62D1BD36FE58DA752F64C0D8E86A1D +:10C06000173F7284F292B7C4189DBBF4E50655845D +:10C0700023C0C23AC6BB06AA1F7F2902E5D1669F2C +:10C0800081FCB17D53E173CB78BED9F97B3C8158FB +:10C0900026C7CF83A6287FE44E11DFF2C73C79BFC5 +:10C0A000C3C01A9F447FEB9179A40F3E29E8E54F66 +:10C0B000703B629C3ED503678DC7CF6A500F65F811 +:10C0C000EF972D5E47CAE86E29C5D6A27E8CCB7449 +:10C0D000AFF4AC6B3BE91E8EC07C99D1FD44AD1B27 +:10C0E000627847DB492D6316E6510C18B514D789E1 +:10C0F00034EC598DFE9E48E2A135E8B78B44BF7FF2 +:10C100002195F54F7560797E499CE089D4BF7431E3 +:10C11000B5AB7FEB127CAECDB1EF3149D23D267D80 +:10C1200046CD94F7BF13908EBC32BA51C4B5BECB86 +:10C13000F2EA33F3DAD7E4BDFF44DEFB85AEFA70F2 +:10C1400023B7AFB64985CF1DA7C4BC022D604739C0 +:10C15000F8C3A71E6A74C7E576935D37379C4A9586 +:10C16000607BB10E02B5FCFE1085654DCA13EB7CF9 +:10C1700030D78FFC6BC869BC8748E9CC32CC57926A +:10C180004C358DFEA1607DD2C27C8688CAF3239493 +:10C19000CE8449F1EC4ED3447C2A9D49514F51F94C +:10C1A000DDD2D4B5389E7D8FAB2F364A72F2FA12AB +:10C1B0003BFF6334C6F33C46C9BF1F909759B8CFC5 +:10C1C0001B975FCDBE57399CE3F2CBC278A0437E6C +:10C1D0007D81E623E4576935BFA769BAF26BA8CB26 +:10C1E0009D57F5889CEAA5FEEAB91C9B904F39CA79 +:10C1F00077DAB7FDD32BE5D3493ED17D1ECCFAF4D7 +:10C20000168C1BE07575581FDABE72A545F64C8674 +:10C21000F2E602F51CCF80F71D25E82FD0F9BD7C92 +:10C2200036DE874FE2F707C2BAA47B7982420EE579 +:10C23000C3996F47CBF54349F4D385841C9481FFA0 +:10C240000D80F7DE12C365D7E7DBD7E37866CBDC7A +:10C250007A220FCFC31D9E69E14FD1FFA6519EC226 +:10C26000FF01F8FC26CD3BAA5A2E7C0ABBD696F3DA +:10C2700076FBA74AB83FD12EE3470606D0EED80298 +:10C28000720CE3617B365947F0BE62DF112F433BEE +:10C29000C497FBDC4F234D04BF1140FFC8261E0F7F +:10C2A000B1AAD82194B73941872D28D7FCC8275C7B +:10C2B0001E813CA373197E23350F49B7BE2AF5644E +:10C2C00009D747B4AF51AB1DEB1CFE7BBAC4FEFDD2 +:10C2D000A03C7E3D0E1E815F53CCAD6F470AF16BD3 +:10C2E000BEFEB3F1312FC2F58F5D629EE0E814F619 +:10C2F00012C6879C7CA21AFC5C48B1F6C39FFF045F +:10C30000C9977D45EE3518EA023942F7BF1C6C74B7 +:10C31000DE17F83B2177EC7AC89764E7613F81C26A +:10C32000FD1C157A3BE41B4BF17B1AB83DA8C4F801 +:10C33000B97EBBDDBF0BBD61E79DE2EF306139DB4C +:10C34000BE77A28195E99F9C68EF1178991D74DFF3 +:10C35000B362975284F35128E81ED76FB8C7F546E9 +:10C36000EC71F97931B48BB1F445391DFDE84FC159 +:10C37000D21833913FF6DDFCE2DA2D51CCABAC277D +:10C38000BF69C867E5302ED2B7F964CF66785E2AF8 +:10C39000FA33BFCFF8F9D37AFBFEB2F1FB014B239E +:10C3A00028170DEBB7FC9E4E9E5F69D321C41E6615 +:10C3B000D73BE63343F467E337842267E1045E4208 +:10C3C000EC5157FBD9A2BD8D1768BFCC5386F70A35 +:10C3D000B8E541ADE0DB507DBEBE38313E3F39A20D +:10C3E000DBF9C624BF15D1BE316C36441C79005B25 +:10C3F00092B7D2396DF3FE948571EE704AA3FC4179 +:10C400009FF83D445F6CFC3E82C5881F7FB5F8BD38 +:10C4100003075D9CE71BEC7BB47A1DF768C5D1BEB2 +:10C42000FAF3DDA3B512E138EE3D5AF5EE7BB486A2 +:10C43000F2EED11AAAFF78F639437FBE7BB42E8F75 +:10C44000544CEE3F7F9FA36AF7C7AE6427BECF610F +:10C45000EC10D12FFA49F3B71EDAEFE456E23D773C +:10C46000D105E661ACF76CF9DECA76DCEF2C127A06 +:10C47000953DBE12F56AF4344626D4CD9127687FE7 +:10C4800073B8D4FC3CF2D30E4C0C067837097E947A +:10C49000B5110BFD1E332EC9115D4C8D9FAF873D2D +:10C4A0002CF9B3EDE78B669BB7E13C7744C4EFE131 +:10C4B000C4BF4EF7C1D8FD5845BEBB4B37FBF8771C +:10C4C0007CDC8F70BFC68E8833AEF2B1DFAF91A433 +:10C4D000F3D87DDAEAF6B8C38FD8172DEAEFDAEF92 +:10C4E000A4FF7FFD7E0D317E267FFCA2FEAEC35CE5 +:10C4F0004EF03C7A55E8CBA193FAE977F98A9D8B07 +:10C50000BE51497DD78957D5C8BB4F637C5D665DF9 +:10C51000BF3370A2EB31BF2CE617FA4164DC2FF475 +:10C52000834801BFD089AED762E3E6FB857E363112 +:10C53000EECF0A8D5BEC7E033DABB7F2DF28CDD2A8 +:10C54000F7B79BAC19E34BB7AF3ACA7F8718F767C9 +:10C550008B310F94F36B31B886EB964C6997E8609A +:10C56000272E2BC778D5B71B9715F037EA6DEDF559 +:10C570007C3C0EC71D0B4A24B44B74CCFF2EC077F5 +:10C580000D7FDCFCF8C918C75AC6F56A69ADAF154E +:10C59000FD9137FE2860A9317CEEF6BB476F8D9F79 +:10C5A00083EF4B851D19DF1B6BC57311991F062C7B +:10C5B000DC3FFE2772664C6A008000001F8B08007B +:10C5C00000000000000BED7D0B741CC5956875CF55 +:10C5D0004733F268D433FA78461F7B244BB60CC23B +:10C5E00069D963470219B7850CB21130D8064CE2FD +:10C5F0000D63B083D8E76405788392B5332D630B60 +:10C6000049D667247FB00921E31F3109B00ABFC3AF +:10C6100066733823E310939045B0C0429ED908C793 +:10C62000614D96CD2A06126FD609EFDE5BD55277A3 +:10C630007B643B0F9277DE794F39A15C5DD555B7AE +:10C640006EDDFFADAE618DF9FA710FA3BF8FCB190F +:10C650001BD406DFCCCA67EC94CE224C622C92DE4F +:10C66000F3666E94B140B33BE22D636CFB2665B17B +:10C6700013DAF576367410DE293BE0F1C62E616CD4 +:10C680007F022A593006FE2D82F77A98EC85F766EC +:10C6900024E333E408BEC7560DF918ABE89119AB93 +:10C6A00012F3319CAF3C97C1F3B2213E8EF1BE51E3 +:10C6B0007ED271EDE34D366EA04791C4B8F31C34C1 +:10C6C000AE72781BAE73899C3A286518BF11C6AF4D +:10C6D000BEF0F1ED703396626CFE44BB7D7CC6D239 +:10C6E0000CF1E16B95DF71CD81B2FEC304C392D52D +:10C6F000B71F37FA95E17FF9FEBD5E2EB38F1D5847 +:10C70000D7192B60AC8D310DF1B2C5F3CF8527F26F +:10C7100018737AFF67E189798C39602D2C0CCF5D15 +:10C720001C6FECCCC78EF402C67AF05589EA1F7FE5 +:10C730000CF52D5887F16F50240B9C46B94582F7B4 +:10C7400061FD5BBC6CD51319F0703DBE07706CC900 +:10C75000E1FDE80FF0E95322FBBACB26FADDA0C8D1 +:10C76000343EC2A115E2FAC41FC09180BA13FF4D36 +:10C77000F84A166B803F6F094BE1FBCCB99BA56172 +:10C78000BCECB8AFB55BC5E7A9F42668678AAC5EB8 +:10C79000510BF52AE76F474DF8CCF23015FB67BD1A +:10C7A000E6500143384EDAEBC7F9783F82A72CC335 +:10C7B0007BA124437ACFD258AB1E4078A0DD63EA38 +:10C7C0005F92D2705D0063EB15E1B3DF6762FC72CC +:10C7D000ACC3FEB41D5B933AE29968BF4BC9C97FF5 +:10C7E000770AFCE3B3ECB3B47F8ED5B97144820F02 +:10C7F00006AD3B1BAFBF4BC453472A27F6D903FFF7 +:10C80000C3F98BA31C2FC5AFBDC12AA2B47F638E11 +:10C8100010D6DFD41B112F9A6788D562FD67E919FE +:10C82000D0BFACD51F91A9FD58FA0AA82B7FCC65C3 +:10C830002C24300FFB5F82FF9A01ED4D2FB4CF8087 +:10C84000F76B609BB0BDB8A9F67627E0ADB8B564CC +:10C85000426EC0FF731AAD75033E03EED96C48C635 +:10C86000F166373DB599E693993E05C67B44DBB743 +:10C87000AC2232316FB598D7A0C3595807BC049683 +:10C880001CD98C705C0464E55027F86776FDE1AF35 +:10C890004A73B004FEF0138CA3F28209BA31E8FDAA +:10C8A00077A5F19402FD8B57A5865DB82B8A2221CE +:10C8B0009E7B5C823E7D51EAB7C4519D7B3C83DC0C +:10C8C00060AC9DE6FB3EF0B513F0FFDD8487396177 +:10C8D000A05442A17A3211A27A672242F5871255FA +:10C8E000543E9850E9F903895AAAEF4E68541F4CF8 +:10C8F0003451FDB1448CCA4712ABA8FC76224EE5F8 +:10C90000C1440B95FB12ADD4FF078936AA3F9BD0DB +:10C91000A97C26D149E5F712496AFFFBC46EAAA794 +:10C920001329AA3F973844F56D89212ABFFFDEC33A +:10C93000FB2558E2A911770471F25480F3FFA58713 +:10C94000D5E2E5A6F576243A17E2FB467D383C337E +:10C9500077F41C72B43771A8C6DCDF7F7244FF27FE +:10C96000D8DF3725D68AF4E23F99BC19F7C5AFBAAC +:10C97000D7A0FCF247A1BF894E3A60FCF839E4E841 +:10C980009604DB631EDFF9BEAC67C1783F57CA6807 +:10C990003F9CEF3BDFC982715D0AF433F1DD93ED1B +:10C9A0007C5FEDE3FD5AC89BE849F55E3FE06354C8 +:10C9B00006E6BB1CDE1F89511D240ACB22E28FA58F +:10C9C00091059D11676BB782FD635A0EB4C71B3C7E +:10C9D000ADEC52787EF24696837C0FF2270BD6A9F7 +:10C9E000BDA4E96BA09E23FAB738E2BF467ACB62BA +:10C9F000439A5486F49662486F4EA6DDEB877E4FCD +:10CA0000EAB9F16E182FAA2D7728F0BCE1B5D894B9 +:10CA10004C787EFAA58629F89EC2D429A80F9E7A62 +:10CA2000E9DC7A8D31F7841E01BEF99143FB03C224 +:10CA300071A9CCE2B8DF3D09A61FAF24BCEAC7014B +:10CA4000AF95010FA76B97A63180A7E3A7726A5F26 +:10CA500019CE2B4B587F7A444E21BD3C3D72EBBD25 +:10CA6000B8FE532AABC1B187DFFBCAF3B8FEA7A358 +:10CA7000AC06D41C3BFC1AB443FD2985CDCD02BEC7 +:10CA8000FBEC318DE4A2EBA5F29403C6CB51DD287B +:10CA9000ACC6F7E7A997965F8DE33FF59A4C3CEA61 +:10CAA00052ACED875F13F3BF24A7B2A489753B9DF9 +:10CAB0001AE1E1E991E5841763DD8B51D99ADE5FD4 +:10CAC00074DA3ADED32F9D5B5FCF3DE2B6E85FF5C7 +:10CAD00007D6F79D8CD3C793BA5FC37D9B3F723552 +:10CAE000DFB7112DE3BEC1FA2CFBF6F44BCBCFBB65 +:10CAF0006F69EBBE4503203FBF5F1A678807D8A266 +:10CB0000B1CDA07FE62B71FD71A253D67A10E8CC8F +:10CB10007DB233867CE53E99D490CFDC2753322F0B +:10CB200041DECE99D86763DF8DF96E0970FEE93872 +:10CB3000997662BF8ED061CF1A1F8E0F7643063C66 +:10CB4000C5025924CFE77B787B476839F59F184F9A +:10CB5000B2B72BB75BDAC5FB28988B18FB42E0F124 +:10CB60004E1DFACD0F713BA523F4AA674D7586F1D2 +:10CB7000C6DB0F2B7758DABD04FFFC1263BE579556 +:10CB80004CEFDF1250A8EC083578E2344E83427C3B +:10CB9000E8847DC9C17D02FEAA3E9BBF9E7FEF4A0D +:10CBA000DAD7A780CE709F0FBFD640F48CFC90558B +:10CBB00036417FC827123CFF089EA3BD64A7633B94 +:10CBC000DD3F195169BCEA4761BF4DCFCB746B1D86 +:10CBD000C6277A7D2AA2517FBB3D10D0ACFDBD1186 +:10CBE000DBFB82DE8CF9ECFB39BDCDDABFB4F5DCC2 +:10CBF000F3DBDF2F6EB1F60FC7FFB4F9F39AACFD8C +:10CC0000E73C65A27FD3FC93F1CB4507ACFDAB1E9F +:10CC1000B4BD2FE67F0AE7CF30CECC1DD6FE333A27 +:10CC200033C33FD9FC0BC7ACFDEB46AD75C3FE99D2 +:10CC3000CC8E9BE07BDE6F6B6C756C5D04F4C80181 +:10CC40004D473B3507ED5A05DB357D344AAE44EBA5 +:10CC5000032AEA9508D77B429FB8F28758BC7A62CC +:10CC60009C07EA927B1CF0FE28DA92A0D7BE5537CB +:10CC7000BAC701EF6B8E5CAA3F583744F594C34F97 +:10CC8000F5AA1FBC4A759F9EC350AE559F39AE7F13 +:10CC900011ED333020D1AEF6AF7D41FF22CA9B2685 +:10CCA0002FD97FFE8DEEC5D8FE82516F7B21BD1F2F +:10CCB000DA1B5EF2EA685FFA5BDDC358BFCDA8AF4E +:10CCC0009FF9168EBF45CF25A35251C15F31E13D7B +:10CCD0007FE33BDAED38FF0E99E17A7D1B0BA9FF6C +:10CCE00072B437EBD1EFE926F8EE9659AB07ED5366 +:10CCF000D5EAAF3AD1BE03FCF685D3AB62808FDDB7 +:10CD00002E5E1AF8FDCF00F75F8C12FE8EE4C3781A +:10CD10000E612FC380DA5A580F9AE0DD6457AA3AA1 +:10CD2000D6B371FD008FA3BE730451E5A8CF7EC7B3 +:10CD30000172D2B1B6E34E94978E965D7753D9F6D1 +:10CD4000F0DFA2BC75B43E730FD5D7BFF055AA6F04 +:10CD500078E3EFB0043BE03F0330AF63E3BB9BA855 +:10CD6000DDD74AFBD5C694CD5D683F3472FFF22112 +:10CD700069EC642EFA9B9BDC91830057FFD7475FD9 +:10CD8000DC9F8FA2B254D90CE5438DA74E66A1FE5D +:10CD90006D025702FA17A5BDA4178A9A94BD5E9337 +:10CDA000DF5684FF86BD0FA6C30DDDF05E706D7982 +:10CDB0000ADB7BD01F0563BAA82525AD0139F72D05 +:10CDC000E13707D5C862C46FB009FC5E5CBE924F04 +:10CDD0007670B025D2EE467F2DCAFDD56F488A4CBD +:10CDE000FEF01D002FE973ABBFFAD05A800FE306A7 +:10CDF000EB410AC27CC5E9FF22788B9B95728C1BA4 +:10CE000018F015237C60DFE709F8F39A237BB1DD86 +:10CE100080AF78FD90B4266702BE3C5525F8F29AA3 +:10CE2000397CE3F263BD3A6C86EF41E18F9E055792 +:10CE30008B80AB15E082794A102EA897ACB7C2550B +:10CE400022F0568C70A13FB5DE0A57496BDA82B7E3 +:10CE5000627588E02A5E6F85ABB87548CA32C1F545 +:10CE60004D49C411EE9C046FAD023E9DC31711F0F5 +:10CE7000453658E18B08F84A057CA51BACF0457493 +:10CE8000269BE12B554708BED20D56F84AF511C92D +:10CE90006382CF1E87B0C3373CEAD051BF7557308D +:10CEA000D27BDEC0C9B406EF758FEEF76492CFACCB +:10CEB000C23936EEFFA2D3CB9CC7B12EEB12FB18C2 +:10CEC000FD3F96F4A09EF5E373838FCB70FC86A99B +:10CED000DCF9E3FDE9B9E3ECBA318FF3741E4BE5FD +:10CEE00099E5285F07D8870CF58DF37421B50FAC51 +:10CEF00078E830E2C15BC5F5B6D7371642F9B0B372 +:10CF000094B1119CCFC9BC38EFFD2BFC5DE5D0AFCF +:10CF1000EB1517CA5A36BCD0ED457FA95BF2E8483D +:10CF2000C7DD95BF0DA13E981D4A79CC71AAFED9E7 +:10CF300073494F2511974504A686726F1BA87DF48F +:10CF40001350307B00FEBC72A37DE5D2169083BFE8 +:10CF5000749BFA437D70A2AEA3BD90D760D4AF5D41 +:10CF6000DA02727030DBD62E4BA27E3D8DB755862D +:10CF70007580FC6A1FD4967A401EFEA3AC9679A0F9 +:10CF80007E89AE75352E3C7F7BDE12672C95693F1E +:10CF900031920078CD3E1D66A979D02F988CC7A01C +:10CFA0005FB633C582A6FED9A74B2CEDBD40971ABC +:10CFB000D0E548932C1D87FA8E2097BF8A96D4D14E +:10CFC000AE9AAEA5A8F446C734C46B76ED589AF66F +:10CFD000290A021966F5568C929CF44765A699E8D1 +:10CFE000D1B9516F61E467652B28BF739AEA291E96 +:10CFF000C1A226BD52CED184FA30FBB497E8C00E50 +:10D0000077773062A1FBECD33EEAF7E7EF3F3B23B3 +:10D010001ECFEE5F4DFDC6ED08A6DC8C7CD8A3FBD1 +:10D0200015D4D3531C43A34F92FE8AC84BA0BE2DE8 +:10D030002CA7BAD18F92F36E5E8B789C93ADEE8362 +:10D0400021978665CBBED6E5CB345E5D3EB78F7348 +:10D050008E8EEDC6D0474A7247D834A8B3B1556812 +:10D060003FB05AB77A10DEEFC0F821C0E1C6F82110 +:10D07000C07FDD73231AEE133B2E51FBEFEADC7BFE +:10D08000D640B5BDEE2BB3703F23F9D67821FD2DE8 +:10D0900020AF9482606D2CAE57E3F89A6708FD17B5 +:10D0A00056D1AA2D867A2FF837A86F9F981667CD8C +:10D0B000307EBF04FE0EE9E35686FD7BB5D018EA4C +:10D0C000674D35E24C303EC883FE409CE27EFA9DBF +:10D0D000FE08F94325D638546F1363C8C7BD4DC148 +:10D0E000148820168BF07609DF9F71767F7749BD13 +:10D0F000C53E49BA527A1EC5BB6576305FAC07CAD9 +:10D10000C14821D90FB3E689F82B93D9C740EFC99D +:10D110009C91268C53E92FBA083F5ECF7F13DEB671 +:10D1200094A67419DEEB00AEDB0C43FCB09CBFF799 +:10D13000C300976B83A188B706FD186F7CB704EB1B +:10D14000D8B3E3CAAB9DA087BB5C82EFF5FA651A42 +:10D15000CA991C4D7542FB9920D31A4B103E2E677D +:10D16000BE9CFFF52EF4A73C32AFBFBAEBDB57EB0A +:10D17000B01FC3EF642D46787B4B19F9D1BD6F8783 +:10D18000C368370E8463619493592B3B4624E49F14 +:10D19000122BFF4C71245721DED8BD3E05D7DD91FF +:10D1A000606A05CCE5C94AABA8873A9C1C0F1D8A6A +:10D1B0009BF07A8F04D634E07343A0B30AF7F9F7F3 +:10D1C00085E5445F833317742299BA436EB502E84C +:10D1D000A8CA13F3A2DFD52BFCD2A42887A3839E71 +:10D1E00051807F581B6CC2F8E400F03DCAE15EB785 +:10D1F000E2C57866D7E532DB87F595A79A2AD11E76 +:10D200007CC541F13D83CE7E56C0E97AAB2B49F611 +:10D210009F1117BF01E0C47D36FA9D2EE0749F7404 +:10D220008F75A269DE25B3A17D50FA4F07988E71E4 +:10D23000F24D236C39C0972EE0749C53BBE07627E7 +:10D24000C6ADA6FD222ED580DCDCB973A907748794 +:10D25000DF90C7FAAEA51AEC433FEACD4BB17D573C +:10D26000975E71B63C9A1AE4F0B870BF814E6605BD +:10D2700044FD222B7C3B136ACD09C0C7F6446DCD1B +:10D28000098A2B6A544EE63F5C68D965F3FFCF6A82 +:10D29000F7275B62A40F938791FF7DF3CA2D71FA84 +:10D2A000C70B25218738DCE162D9A28F0736FEC67D +:10D2B00049717040C394E2C9E7795962BA34174B97 +:10D2C00099EC94C9FA19F45122E449BF14AB42BA5B +:10D2D0003B9138AA1C80E7BD7ECE675DCB7C24E7FE +:10D2E0009893D7FB0B4AD46E86FA77E4E822E4DB06 +:10D2F0009932D9D3D0DE82F6E6D66B0B23B8AE6D69 +:10D30000D92058914F2F6264970D57C814FFEACD6A +:10D31000CFDE8B76C23AC7D889EDB89ECFF8888F1A +:10D32000B75FF3DBD0ADD0BE6B7EB68A664976A020 +:10D33000E93A0C53F7178408BEDEE8DCA9E6781456 +:10D34000ABB2DA41F739636E1C7F6023CC097434C9 +:10D35000E00B2EAD40F84A6415C3F9EB922F2A0773 +:10D360004C7267A071F995D8DFBD49610EE8FF1DC9 +:10D37000DFF27BF2E6233B9E526E85797AE591558A +:10D38000617C5FCE620711EEF957FE13FA093B97F5 +:10D390003815F4650693CFB7AC4339A5662376D824 +:10D3A0009142CE1FDB13876AD602FE7624866AD6A8 +:10D3B000C2C49DC05FA8573A658FAE43199062738F +:10D3C0009C20672F2BF8C2D548E7BF2C8F8719D038 +:10D3D0006C41417F37CAA33C215F98FE7A7603C037 +:10D3E00071D9D53EE283EEED5B96E94EB46B808E4B +:10D3F00088FFD255C847063EA2F93CEE9AB724DF13 +:10D400002B633C35BF6899B700ED10181FE65B022F +:10D4100075671DC2C1F96A47DECF96A13C4378B754 +:10D42000F07C4708E5C676A40378BF6EE783D47F17 +:10D43000BB577D0BEBBFD9F9FB6508DFF6C0D02ADF +:10D440001CEFA1BC8F96A19DB343D8558FE6BFBCFE +:10D4500054273B2AF2C801DCF7CB41BFB1B3E96ED8 +:10D46000B5D08BDBDCA9DE0588DF2B65DA7F7BBFDF +:10D47000DD029F5B2589FC98AEBF62A97D12E9ABF6 +:10D48000E17DA4BF220AF7DF638B719F0B51BF01BF +:10D490005C53EBBF28AD437F99B1B80476E2D4EA80 +:10D4A000F512D295D2E0896741BD70F54A8B3E2ACC +:10D4B0006871BD83F16EB672A5C5EF5DB5FE068BD2 +:10D4C0009E624E258CF821BB13E1BE9CD335D0BDA6 +:10D4D00007F7379755E9E80FAE954648BEB25E1795 +:10D4E000AD1F4533D953CD2CDD8D915D67ACA90CB3 +:10D4F000E0C9D1F3888F062485E81665FCD3D0EE09 +:10D5000057789D5D0B1A1CF8FC0AA5A403E5C5B26B +:10D51000B49BFC67478EF305ACBFB36A0AE5699E0E +:10D52000382ABBD740FF9FC6B29903F0E10C7ADCE2 +:10D53000CF43FB35AFF3FA60937C25DA13D7BDCD2B +:10D54000FB4F9913726F867AFC65AFC8F3B09807EA +:10D550009077B550BD2F472E5AF053D88FE323E56F +:10D56000731E837AED2887FF8B1AAB71009D9EC8CE +:10D570002BE3F6CD092D77213CBFFD25570DF2EBAE +:10D58000BC97985B8671AFD594B9C84F863CEC13B5 +:10D590007226BB6AD489FC3B5CE77EE136D42F8BD4 +:10D5A0003D912C15F943277A63FAEC1F1F81FD4149 +:10D5B0001D8AF4FFABED33BB51BF1AF569F70F6D50 +:10D5C000437ACD0A819E34ED5F677911E9DBFE6B0A +:10D5D0001482935D05A35D86AD63A1C330CF9A9B92 +:10D5E000DC11C433D8FF69C2F3A56E8A07E01FEAD5 +:10D5F000DFBED9B3C8CEC8BB26EA477B784D73647B +:10D6000005C615D6AC2CBC0D4B838F2793A3DB6EC0 +:10D61000DC1DD260FEBECA5DABD07E98F07B921E50 +:10D620004AB646D25518AFF9F1D64BE676035EBB43 +:10D6300054EE8719F6E948D32033E7C3FAC1AE4F59 +:10D64000CD427BC0030605D08390CF4A459CE2A320 +:10D650007E108757C1A3E9152364DFFBEBB97D9FDB +:10D66000A3B1762C075C9AE4C275D670FB51A997DA +:10D6700059CA926FCD662913FE960ABD0E9CA9BCAD +:10D680007B31E044AB737C0C250B052F28AE367044 +:10D690006C8584EBB8212F427016683C9ECC9CE9C7 +:10D6A000AAEBC18F63F19D92BE00B33EFCEF7355B0 +:10D6B0004C437BF977C35ED207DEEA428AAF18E3B8 +:10D6C000FE24C8E598BBED278B4E98FC4F6F28A928 +:10D6D000219E6FD9F4C39CCF021E5CC3E57391EE0B +:10D6E00056DFE9227E546F88ECC33CC84F841FB4D8 +:10D6F0005ADA112339E98C49D7E7E0F388C56E7609 +:10D70000AD04BF10EC8ED5416D7E3EAC6397C484F2 +:10D71000BD514E76A05D4EDEDBA05D9A3FFF4FB758 +:10D72000E7DBA2ADDFBA8DA1FDFEC5DD98BFBAA7CC +:10D73000C1AD62FEE6BAE7F8F8911DEBBA90CE0DE6 +:10D740007E81795B30CE325C31D8540EFDEF5EEADB +:10D75000A3FE5F17F8BDFBA795DF3B02CF3FCC2FA1 +:10D76000A9C15065973B1EC675AEF3C5AEC375A083 +:10D77000FE423AFE0FD17F327E7165694D7F8B7A12 +:10D78000AD82917DE98DCE253B8C5558E37F9D720E +:10D79000AB82FC794DFE474B3B6BCFE6C76DCB1F91 +:10D7A00024BAB7D3C7FE3CBE0F1B9696742DC82073 +:10D7B000DF4D76D39E03E7E02FEF1D1F78103FFD6E +:10D7C000800F8DF88AEB97FE8585C44F461CE0508C +:10D7D0005EF336ECD791A8227BCE6E97BBD9C89B5F +:10D7E000DFA47820D74B036146F4B7B3CCBD572FE5 +:10D7F0009BDC4E77E431A27387874D3D61C2A34B1A +:10D80000F14C3D61E2AB9AB462A9CF3B1AB2F49FEE +:10D810003F12B1B47FF6CD2A4B7BDDA86AA95F76B3 +:10D82000B2D6D27FE19866A92F3ADD64E9BF985D50 +:10D830006FA95FE1B9D9D27F89B2C6D27E55E80E11 +:10D840004BFBD2C89D96BA81FFDF0619B7BF12B154 +:10D8500014E27567424B71FBB989EA1D8955542E54 +:10D860003AF3F71EF23BAA64A2EB54FED796A2BD90 +:10D87000D20BFA11FDA0C295F09E69FEFCE6264B84 +:10D88000DD98CF1F85792CF26A95A56EF86B5FCD78 +:10D89000FF3BF2C760FF5B50DEDCB448F15E0FF582 +:10D8A000C38D41EF3B50AE9F1A24B807AA4F7BA40B +:10D8B0006A349B951B57619C292A93DE5D33FB5488 +:10D8C00027CA49B6446695D2D974572DE4E289C671 +:10D8D000BB9882EFBDE648619EB91B83AFA8FF5796 +:10D8E00071FDBFC4E1A3906E6E95BC3F8BEC01CD82 +:10D8F0002D813E2DE620B3A2AA27A46948772107EF +:10D90000CB0DA19D906A47BE2E5CEC19D3C97E1940 +:10D91000A2F630B4A37E2F5A6FCF7324C9BE513400 +:10D92000CF98D0FF521AE009C57DADA8DF436BAD9B +:10D93000FD0B99A90EF0DCF5A26B18E9BEAF364BD2 +:10D94000C1FE8AADBDE09824811863FF929F938F3A +:10D95000F29FCD63F3D0EF90C1AE42FC741F9308E9 +:10D960005FB0AF9213F5CAA844F6F45D75C130FA02 +:10D97000224B1C2537233E362C71D7209F5D16E2A3 +:10D98000F23BF7CC2D52CC649FDED8E6600780973F +:10D990006E6EF352F9C6CA14437ECE66A3AB0A710B +:10D9A0001F98A7F520ACEFA63689DA57B54DA1F23E +:10D9B000736D79EC00C8D3CFB705A85CDD564CCFAA +:10D9C000FFAA2D4CE517DA6650794B5B19951FE6D7 +:10D9D00007853E1B0BA17D7CD3A2B110EAA7FE02F6 +:10D9E000711E0B9E637C9139C742A89FFAC23CAE60 +:10D9F000FDB3963CAF39DF7AAB5807684F8A47C210 +:10DA0000FA9B523C9E49F6E8D455CA5EB41B26ECFC +:10DA10004D650DDA9BD789F7A6D6DEB818FD6A45A5 +:10DA200066639FC4EEFC873CCE7F4F4CE371D5FE0E +:10DA30000087B7D3ADA5318EDDB940D9DB8E71BA81 +:10DA4000F7EB6FCF87F1BAF3843EB7F9C7E7D36F2F +:10DA500041431F54717D906DE8832AAB3E389F7F10 +:10DA6000328C89318C6747B249EE768FAEF0525CCA +:10DA700057E0716715D83FE7F04B0B4E3B282E3728 +:10DA80005E07FD8DF2A3E0B49B9EDBE18EB01D240A +:10DA900077D654F2385CBCFD754B9EFB8E10C747A1 +:10DAA0007C36B423FE5A146F00DACB36FCB707E994 +:10DAB000E359E18FC417F2763B3C46FBF7F314239E +:10DAC0004E18C6750C8F6E97C9DFACE7E72706C402 +:10DAD000BABB60DD9867E8AAE776DE64EB9C767AED +:10DAE0008A659DD39CA3B4CE69A7FD19D7D921EC33 +:10DAF000830117A7BF813277AA1DE61D0EDDDA5913 +:10DB000066B213269BCFF04BC7EBC2CF8B861F6844 +:10DB100036FB79F13D8F379BFDBCCF177CB7D9130E +:10DB20009EF0F30EED7E6C995E62F2F32E7567F453 +:10DB3000DF76856C7EDEE599FDBC84E097C9FCBC90 +:10DB40003EF4F3C84F890DCF30FB79B5C077F97F2C +:10DB50000E3F6F8CFC6030149477AB26ECE1C9ED7E +:10DB600060277BD7943F1970653E17B511E43BE2FF +:10DB7000A35FE27208FD25A417F0976AD05F32FA1E +:10DB8000FD87B09BCEF69F0CFF8AA9D8DFEE474DEC +:10DB9000BCCF781C4262E42FE860FFA0BF93153829 +:10DBA000DA5E02F82F7E69AF042E0AFBDBD7EEFCAB +:10DBB0005129EA9D36467674DBE82BD2ADE85FB199 +:10DBC0001ECAC7B212E7D8A8094F41B19F0F1688E5 +:10DBD000F394424F6C688964611CF19E36FD2A2CD7 +:10DBE000EF5E1FBB6EA6699F8D789211DFB4E3656F +:10DBF0009D83B5668A5365873C9CDF6C719E2F09B7 +:10DC00007978A1798AF3C9BDC6A0F67441C19FEEA7 +:10DC100087E6608C6E2E2F8B8313F35656C0BC3074 +:10DC2000C725621F92D9C955B10CF47089D86773A2 +:10DC30005C94F49271DE789E83E296F6F8E8E3F75E +:10DC4000FFDB326B7CF4E432737CF4F1FB4F7667DC +:10DC50008A8FDAE737E2C2551E2E9787B5573DE81F +:10DC60004FF66A41CAD70D5435F0BC9B9FCF736401 +:10DC7000E7AEA5C8F798778A67A13CF1B0F82C3CCD +:10DC80006FA9507D6A34DE8EFE88CBC9E7BDC9CF4F +:10DC9000F9A170B5ED3C42B3B5CEE256FD62ACDF02 +:10DCA000E0A7ADC2DE9B9E776619C697065EF46D4F +:10DCB0009173019E251D21847770D9EF43E8CF8CA5 +:10DCC000E7EFF457BA34F24BB85E8AEF7865A90EE5 +:10DCD0007CD279E45408E3DF030BDDD9D267187BEB +:10DCE000BF80CB73639C0F0A22B41F9D47ADFD1606 +:10DCF0009DF916E9175725D70F4315600798E8F5E2 +:10DD00008FC24EBC4EC46FFB134DE47F80BD4C717F +:10DD1000E642AD7518F92B27CA24F4CBBA12ABE84A +:10DD2000F984FCE0EB45230CF7DB8E2FBF966F3DAB +:10DD3000075C314A799EECA8B5DF485ACE6B067E67 +:10DD4000C8AE60A4075CB3C7F861DFFAA48EF11F08 +:10DD5000D80E3D2772367EED74D15BB7E0FEDBA0B6 +:10DD60005F6F20D685EF75B5FB358CDF3F3FFFC673 +:10DD7000A59518BF1C71A8C8E781788AA13DB23D5E +:10DD8000C19266BD02F26AF71674C9634CCF05FCF6 +:10DD9000E5D68FEAE81F17AC8C509CC8B9698C2176 +:10DDA0003EB35726D17966DE33FB699CBC6646FAE2 +:10DDB00073A092A5AA257A9F7950CF558E3C566DB7 +:10DDC000B2CF072A95B0CF84FFAD4B7669B87F03F9 +:10DDD0009B920CF9CC9BDEC322386E4592C581AE76 +:10DDE000F32AB4C52837F3624A39E6E307FEE0C8F0 +:10DDF0001817DF50C8F971A08CC74FFA243696C4A3 +:10DE0000B26E8125EE6C2FBD9E8B2F5B6B8A53E427 +:10DE100056707E3DDF7A58BD95EE3F857511FF2F18 +:10DE200028BC94F252AAA057E64C36E0F9FA2D35F8 +:10DE3000C1BD98BF9CC8232812E6110CFADD916879 +:10DE400023BAED4FE8449FF9B1B112D4C785E0B3CE +:10DE5000A0BEC9ADD7E83C776FA23323FDBAA6C9EF +:10DE600044BF05ABACF4AAC4AC749A131DA373559C +:10DE7000FE7A9B1C380F5D7ED2D2C877BC2C7139DC +:10DE800059B2E33B1477E99EBD8BE0F15630DDF1EA +:10DE9000192C959B75C0EFC0F023AC1AE9B42AC5C4 +:10DEA000D65F82E71B92ACB97A72FA993595F3FF87 +:10DEB00000EC1BE6213F040306E9DE18EF2CFD060B +:10DEC00074B3C564FFE55671BAB1CF6BA713131CC9 +:10DED000B48EAFEFDA7E35EAA32DA5C955B85F5BE6 +:10DEE00098AC627CD7597923C909ED484C1FCD27DE +:10DEF00056A3F36DC679E916477C57A1291E669C87 +:10DF000077B3FBD7C52C25D1770AD5DF217B8B09C9 +:10DF10007BABB87E17F9A5607F8D61BD28F2CCF090 +:10DF2000616E7FB5BAB1BEDE6A7F850DFB6BEDB960 +:10DF3000EDAF1BD75AEB2B575BEBCB57DE60197756 +:10DF4000DC2E17F1F98295493A8F3255E5E7AA8D13 +:10DF5000BCE012C0EDC75967CBD7BCE618C9E5FCD9 +:10DF600095D6E701EDDCF4B954D82180C734E251ED +:10DF70007B3642F9AE9C6AA6625C2A3B79376B8F8E +:10DF8000A0FDA196A15DF1DD9DDDCB227599FC255B +:10DF9000EE47F4D6723FE2970D239ECBD18FB85156 +:10DFA000669877DB596BF523AE9F6ACDFF7B6D7E5C +:10DFB000446330FE4A21E0C3EB4CD2391DAFF02759 +:10DFC0009E2EE0F02E437B2B833DB26CAA47B40F0C +:10DFD00090BD627CDF64B43F3995DBE9DF1565579E +:10DFE00022527482ECBAAA22941B4F4C1BED0CA255 +:10DFF0007C933C2398271B08B0F422F40FDEF692A2 +:10E00000FDD95725E9059F9918AFAB56F8D32C4E8B +:10E01000FECB3D73833588B7BE0AA7F0B3E3C9C50D +:10E0200051D373C3FFF6B41E2DB33C17FD7DAD2352 +:10E030008B4DE318F3DCF347079DCB37E281FDA559 +:10E04000917D18A7E97F7B4F08F37CD7097C768503 +:10E05000474294AF8F9E3B0E38A1E75A16E2BA0DA5 +:10E060003BDD28A7D6C649DF7725DA16F2FC722BEE +:10E0700095C6791B838E964CA2EFED7467E4DBB3F3 +:10E080006BCF4D8F774ECD9C3FB6E78D67D7A73DC1 +:10E0900099BE0334F2C69F549EDAE3CDD0A290BF5E +:10E0A00020E0BCD0BC4257224EFA6877A285F48D9E +:10E0B0006B6B52437DC7FE8A911F39AE77C4F98ED0 +:10E0C000F1754FE3EBCE5E6DD543E1B8157F2E6F52 +:10E0D000F230EA4556534EF4D99B68A5F95476DAE6 +:10E0E00083F9027FD4FAFED9FCCFF5E6503DB7079D +:10E0F000ED7AF53AFC842F38D1EF7CF85425776C13 +:10E10000C8378157C0838AF1293B7E9F98160B231D +:10E110007FEE14DF17D9C77943D8A10E948B781EF0 +:10E12000D7A953BCAB53CAEC977E5ED0BF579CB304 +:10E1300032C991CF4D9D6F9623FC7C952147BCA79A +:10E1400025BBDC895BFB3B2D72679D2F76DBD4F909 +:10E1500013F9894F8B4E563CC7E2B8AE29FBC63C3B +:10E1600001D3FAEA0AB89CFA5E3E9F7FD1998FB933 +:10E170001D2FE23CC6BE8DCB89A97C9F76093EEA65 +:10E1800043FA734DD09FC1D7763AB3F3AF9DCE66B5 +:10E19000378F3951BEF7C0BFBB03240F2CE74DCEDC +:10E1A000A76780AE4A88AE8ACE7DEEE34F2D27E387 +:10E1B0005F55E06776E318D1730F5324847B9CBED0 +:10E1C0008B387D1BF81AF75703F25FD46EEB4AA821 +:10E1D000453CFF504B7AE8ED422E9FCFE797BF5268 +:10E1E000C0FB39CE7CDC19443DCB3C2398B7EFAF64 +:10E1F0000876611DA86A08CF3FDD5B7FEA28E6F557 +:10E20000EFAE7347502F6B6B535BB03DA75A9D87A2 +:10E21000FAE5B9A96EA1FF63CF4DC57390AC95CE59 +:10E220005DF789EF713B124C5B07F03D5FF72E43C2 +:10E230003B3EAB244EE77C73EBD505146F61A3CC5A +:10E240008DF2AC96D1F9197FFD588899E2E5A78443 +:10E250009EEDBF610DF9476EA18FD9CA350CE5D38C +:10E260003299D37DBFD0C3C67B3F177A7C40D0376D +:10E270003B0DCF0B316FC1083E77559C2D4679552C +:10E28000EFE4EDEFF3F62EA3BD42B46B42DFFE8068 +:10E29000B7EFC47600DCBD12DAD1FED484DE3DF3E4 +:10E2A000476A1F30DE6FE4EF1B74F1C3464EC7EEC2 +:10E2B00010B7AFDD21C3BEFE2AABBE04F1D2CAD671 +:10E2C000E7E0B9C0386BF64DD8D7ED4B7685F05CFA +:10E2D000EBF03BF7AFBA15F7E7EDD973D1EF741850 +:10E2E000F1B1856F84508EF486D97040F85994C787 +:10E2F0006C14FADB96C77C672A9703FD8FDC6AC52E +:10E30000E7A15B6DF8E47435293E3F9C041F063E8F +:10E310008FF1F67E031FF5367C6EE4ED7DC6FBB50E +:10E32000567CFE7C6A447CAFFD07EAD76BF48BF227 +:10E330007ECEA0A791BEFB8B32B26FC1FECC0D2169 +:10E34000FD25EFD4C26CE27B15AF396EC626E266BE +:10E35000C010C40F92E4A27D9976EC15CAFF7CDA56 +:10E360007C6BC4AB8D38D3FDB678E60EDB79B9593A +:10E37000216BFE693C2E329DD34F56C82A278DB89B +:10E38000A35D7E866C7A3FD7663715D8FC51236E25 +:10E39000698F53DAE398EB10A64B312EF9DAB2CD40 +:10E3A00080DF15228F151379ADEB45DE6AB9C85BA6 +:10E3B000ADC4BC15943760DE2A0FF35F3C6F7593D4 +:10E3C000C85BAD1279AB9B45DEEA736D1753F9F963 +:10E3D000B6D954AE6E9B27F25C3522CF7599C873BF +:10E3E000D5893C17A793012F8FF30E2C74A7EE0548 +:10E3F0007A5871ED7BC417C51EF0DB1C19FCB4D82C +:10E4000033EDB7A11CD7FEB27EDAA3423EF72DC989 +:10E410006C87FC8D882F631E0EE13F9D2FEC1791BA +:10E42000AF2BDB504CF757AC59C2F33CFD4D8A374C +:10E4300060D2DF86BE7F56E8FB81EB1F5C85E74537 +:10E4400082573F4AF9870D4BF87911A3FF17C57C16 +:10E45000467D279E43C8109F36CA823BF67BD01F5D +:10E46000EE5EC9F3DBB787362ED3F3CDFA8FC76BD9 +:10E47000370BFD32A9DF5CFB30E5291A340FD5F7E5 +:10E48000D40F0E80A7CEA67CE607B3E95E02917F8B +:10E49000B0CF6FDFA74F7B7FEE11704F769E235E6C +:10E4A000609CE738D3F9C9CE73FC82F0D887E7398E +:10E4B00068BD3C8FD457673DCFB16EE7A21ED4F341 +:10E4C00013F9FD310FE5F7EB4F7930BFDF18E6792F +:10E4D000DEFEEA931EC94407321BED74A15EAF97BE +:10E4E00019C6BBD6540629EFCF66CB6A6506B86756 +:10E4F0008539DD9C80FE947F5A0B1B47F9A724CFFA +:10E500003789BC7B17BB93F2FCFA6B0EF217C6F38C +:10E51000FE153CEF9F4BA480797DD04399CE0154EA +:10E5200058CF011875A548D46D79FF3F35CF7FCFFF +:10E530003189F2FC0598E757CFCEF3F71F7549D321 +:10E5400060FDAF8532E7F9BB449EBFBB4296E8FE53 +:10E550001923CFBF706E08E3484B1C67D21F43BF1F +:10E560000D956C2F9DA7117833F0E870AAACD59764 +:10E5700021CF0F7E2FD2939F8DAC2A243EF874F2C8 +:10E58000FCBF091979FED68F30DED3B770665937D4 +:10E59000EDDB28F1CF78BEDF391A42FDDE3B9EE786 +:10E5A000FFC0F25D7524CCED58597C37D52DE2FBC8 +:10E5B00067E5F9C7F38D3CCF5F24DE9B1ABD717808 +:10E5C000C6A790E7FF8AF093FE4FEB95DF84220405 +:10E5D00087C3C3F58AA316F44A19EA95B7AC7A053E +:10E5E000E49839FFDA21DE33E459EFFC67489EF501 +:10E5F0004E22EF97860D79FF8107C7FD2864E4D787 +:10E60000F9FE45D84A2EEF6FE0FE48BCFDA065DF5D +:10E610002E17F88F8B38775F0BF87F3ED413FFEE01 +:10E62000598EF70184B8BC8AD7C919BFBB32DAC783 +:10E63000CF83FCEFE77B491F6C0C0D77B757F37363 +:10E640000504F7423E6F5F93D52F8D0AB89F0E31B8 +:10E650009BFF3AEA31EB33A3DFE3A2DFBD767DB661 +:10E66000D0AACF2AC2D6B8E0F9F5D93C92C3F70AAE +:10E670007D56B9E76BCDA8CFFA8DFCDAC2998F1C15 +:10E68000C0F32575FCBCE2C4F77143DDE6FCDA0398 +:10E69000A1A165945F3B7A9CF2683785F93EF6D775 +:10E6A000B9B32518E70BA2DE7984B75FA85FFF74C2 +:10E6B00030764718D6A337B0AA56DFC473232E99F5 +:10E6C00014F72E29E2DE25FA46170CE0A457F07D58 +:10E6D0002812BEDEA447370B7935B890A5312E3FFE +:10E6E000D0CE529BE19D41176BC0EF910703B28AD8 +:10E6F000E7B10667431DE396356E15E554A4A76A96 +:10E700001D9E138DF4F0F83CD3AD71C1BBC4B80CA1 +:10E710008DAC0B58D7F03B59347FB29D9F4B4CBE0C +:10E720003D9BCE630E8695307E473FB090517C274F +:10E73000A25D7954F831346E447BE14DAC9F0F9E5D +:10E74000F1EFD92E109E713B1BF6CAFC9D4C5F2247 +:10E7500019FE259E3749ECA632954851793071282B +:10E76000FC4B17DEA3334475A3BFDDCE0E365AED46 +:10E77000F032DDDA3E7387B5BDEAC1CCF136C3FEB7 +:10E7800037E649259EA579BF9D48131C0389A3023E +:10E79000AE11AAF725DEB4C0659FD73E8F1D4E3B54 +:10E7A0005CF675D9EF5DCA053F9EFC3C417FA9E64A +:10E7B0007209F5658F123F8CF4AB3085ECC0FE63B7 +:10E7C000FF3652017C943A73D5089EDB4AD672FA22 +:10E7D000630B4769AB725FF2EA6867E46AFCDCD5F9 +:10E7E000B02E7B915F92BA9C8DE7A52E1EDA68C58C +:10E7F0009787D1775EB30F6DB4C097D278DE7E165F +:10E80000E3CF094EB447429C1ECECEBB8D523ED6BE +:10E810007F3A9FCE21D8D7672F87EB376F46BD3819 +:10E8200058CBBFF71DAC3F7514EDA4415D56F17B8D +:10E8300031784E7AF3C37A96C2A3924E36F63CDA1A +:10E840000D7D1ABF0FC0C093F1DD7500A7C4EFF3B3 +:10E85000120AD3F132AAFA883793FD9B7785721793 +:10E860007D3F551DF19ABF7B19AC2DF7F27B6046B9 +:10E8700029BE07753A5FD6D71C7911CF2B3259665E +:10E88000532E877DAE3B9544FCC3BE7C142E985816 +:10E89000774A3F4EF7955C3CE4661173DCEE10D48A +:10E8A000CDF428F0C716AA12EAC55C3C87548378D9 +:10E8B000E6FD0C3CE7EA73E95E9DBBBF028FB1BF8A +:10E8C0002D7F073BCABFD311F896A4F9E27B49F02C +:10E8D000C7A74CE0E7470ECD53341FEFAFB2FAD1D4 +:10E8E0002951EE13CF0F8AFA77457D50948F18E7A0 +:10E8F0003B8EAECEC5751A7EF7B745BBB19E394F7C +:10E90000C916BB32A065DBEE4D095AEA333A8B2CAF +:10E91000F77ACCDC516EBD27E4189F6F32FAA97EDE +:10E9200054B6F4CF6BB2CE77D181A0A5DDF8EE3C22 +:10E93000B7B6C8761F8975DEC9E6D357CE780BE522 +:10E940006DAEEAA6EFD272551E1FCA55B93CB5EF9F +:10E950008F6B02FFB5887F036F2C9FE3CB29B7260F +:10E960006798BEDBEBF3A7C5F75849116FD722CBE9 +:10E9700033E457AA3CFA3684A35F9C5F33F6799C54 +:10E98000AF6A05BF4389F49BAC6FA0FB51B65EFA3A +:10E990007B0DCFA3F47D7D94CE01F8D3EFD1390068 +:10E9A000D877E29767121E2AFDB5A32C0ECF739D70 +:10E9B000B1CDF4FDF00E568679925C4F9CD7778BE3 +:10E9C000BA2F7E2FD5DF843A14B94A2BAF1FE3ED5F +:10E9D00078DF9A6EBE57B196C91877AA647119CFBD +:10E9E00003F6155DD58B74BD80B53A30AF69D4237D +:10E9F0008802B0076E813AFA6DCF9EC96A9A1F9D50 +:10EA00009073CE4D76391794918FEE6E80EDCF20B6 +:10EA10009700FF2D66FC1BF03C5B2BEC73FC83F72F +:10EA2000831AB7CF8D7AA05EA1730E5F2BE2F61327 +:10EA3000F0FBDD45F327F8FDD95183DFADF2D42E8D +:10EA400047EDF2B30F6D1F93DCF06BB286E7CDFCA0 +:10EA50006CC3C47B65047702E77B5CF0D9A3027EBC +:10EA60003FDE30017A60CED018E5E2BE239EFF3C47 +:10EA7000377E1FF6AF7A6A5441753EE7D9A48CF60B +:10EA8000708FA275E2F38B87565BF30987565BE0C4 +:10EA90009EC578DD2EE767EE90996E7AEFB36F66CC +:10EAA0005BEAC8D77A06BD067A9FF21DDF4DECA659 +:10EAB000F2602245E5BE8237086EBAB7B20EEF7536 +:10EAC0001C22BD97CD540F9617D5260FE3F9AFB78B +:10EAD0008A22344ED5A3ADF214F867D98E18BD073B +:10EAE0007F741EFC97B9F183B82E25E9D6F1BE17C5 +:10EAF000454BD2B983ADC1AF0DA31F1AD4983A0BC1 +:10EB0000DE0B3A35BADF8455B008FADBDE74978441 +:10EB1000F791783556E385C741C401B6F7F0EFB9F0 +:10EB2000C26B9964F60F940AB698C717D422B3BE85 +:10EB3000D82FF260073625199AB078AEA6FC128459 +:10EB40005B9CDF900CBF91FB3FF7E684E83BDDADBB +:10EB500003EEC5C8878A7384E721A3AC06F947F1A1 +:10EB6000A4E9BC07F0460D7D6FE51BE2F56AD1AE66 +:10EB7000A478BD8AB7BB2A620CCF276F1DB8F26795 +:10EB8000B83E803332ABECECF33D8A7394CF53CB79 +:10EB9000F952F18CF171EA39DFC23C0DD4FEA8A81C +:10EBA0002B695E1FE2FDC183A4BA027200E32A064C +:10EBB000BEFF3A1C7FBD08D6A974BADFC1739E8A16 +:10EBC000A6CA3C2FCDF7E7C3DCF85BD46EDB9FB25F +:10EBD0002D4C9F024AEFA2439CCF0E88734DB30F7A +:10EBE000F0734D07C4B9A6AA14A3EF258CFAAC079D +:10EBF00039491A751887454CEDC6BE1CA8D48A2C15 +:10EC0000E79F047E021AC78F92F64A881F45631257 +:10EC1000CAB9803325937E3FC4D71BF02479FD8089 +:10EC2000A8FB745E4F71FC04945699F2BD0FF27A02 +:10EC300099A6905C3B30C9799EBD427EE4D6023FE6 +:10EC400098F8644738FE31E2A7FA51E00F8BDD985F +:10EC5000B2D4AB047DEE4FCA64F7ECEF293FE73D39 +:10EC60008C7F0FF21C3FC87F0CE4399607410EE3FE +:10EC7000BD3393F59F792FBB93EB9DF8CFD09EECDE +:10EC8000AA8B94A3DCF3A7DFA2FB23FC5A642EF229 +:10EC9000C99C624ED75BF7FC96F448AE93DFE7E67B +:10ECA0005339BFE48AFBE4A6548BBA8FFB57D9557E +:10ECB000A22EEEAB73E5DBF8AB16F80BE9C6990CA8 +:10ECC00099F55D97E09F9941B6C67C4F9401C7ECDA +:10ECD00062C3EFE6F4A624651DEF97FCC770BCAADB +:10ECE000D84A97742E670E06D032F4FF97707C8E48 +:10ECF000B53F3F57A646C71A70FDF3465804CFC527 +:10ED0000D51573797449F5E861E49FB947E0390C8A +:10ED10005699CF1C281F8CF1940A3ECEA2A2781DD2 +:10ED20001FB7E3377C5C7E6E434D73FA8F8E70FAAB +:10ED3000EFAA03FA2FA373DC44FF5D7540CF509F09 +:10ED40007B94D3BF51AF39C2E9DFA8C33844FF4633 +:10ED50007D1C6F75C990CF441F5B2B77BD796EFA10 +:10ED6000D71C44DF2306FDAB0EA2EF9704BDFB22A8 +:10ED7000BC7E54B42B0AEF7F84D7558D3990FEBBEF +:10ED800004FD1F70AA3F26BEEE094ABA09AE6831DB +:10ED9000F76F0F68CEA64C7C2289766791F6856264 +:10EDA000283BCBDC5C3EBCE84A4D81713CE527D971 +:10EDB0001D513A7FD03A45C1EF0F7F45754FB9B32A +:10EDC000750AD8019E19EFF3F6060FB5DF57FA2E34 +:10EDD0006FBFCD47F5AC694D4577C078F755BA554B +:10EDE0003C1E70DFB46554CF9AE9A17AD7E02EF5C6 +:10EDF0000E649DE9EFD339D3FBFA983A85E45F9C22 +:10EE0000BEB7AC28F10DD139A104DB8D799D0AA7DD +:10EE100026E3F9840A3DA9F3EF3641BF4031A39EB2 +:10EE2000F36B6E92ED95D14EAC65BBAB4DFC7C6740 +:10EE30003197077749EA618C0F8F8F03061FDD6FCB +:10EE4000ABCC25BDD8916049F339F7BF2B2E27FCF9 +:10EE50007842F05E14F39C9C2EB3422C599D41FFE6 +:10EE6000F647D5A5648F31CF18C0306E8F8EDB8901 +:10EE7000D1C3748F474FF438DD0F55E5E1E779FAD8 +:10EE8000546E2F2E9E7F82CE71F7454FD0F7C77DEF +:10EE90002AF7C736CC67F45D4A399E379FC7584E6C +:10EEA0003DD82F7326C6F5C173F3F98F9CB3ED9A45 +:10EEB00007707FBF21EC9A8785FDD2A78E791C163B +:10EEC0003FEBF030CA1D3F4B6EC698CC37457FB044 +:10EED000730EE0FBB90B37CB184FDADECCED30B058 +:10EEE000730E22BFD9ED1C5F27E81FFFD9F68E6194 +:10EEF00087FB3A8734B4DFEDF68FAF93DFD7598EB7 +:10EF0000FE15DDEF9322FCFB3AF9FD9D3E786E5E27 +:10EF1000E7F87AB5741AE369B94CEFBA529AC0FBB4 +:10EF20007C7682FCD3229167634BF9F71403D1E01E +:10EF3000F5574035A99E3ABA09CADD3E66E18F61B0 +:10EF400021E70E0BFE604AAC18E5579BA23D8F7877 +:10EF5000007C1EC175DBEF0DED518F7BCCE78D7B07 +:10EF6000D0BF807DD69A0616A3FD9353ADD0F93657 +:10EF7000233E9D5DC2EDDF97057DB638B49771FCE9 +:10EF800061F555A2935E28CD74D22BE86432BDE2C0 +:10EF900013F4313EFFBAEC55686F3FC0607DA8376F +:10EFA000B2D37194EBFF2AE63B21E4FA0951EF5CFE +:10EFB000F9EF4D740EB25666F45D46EDDC8CDF65FC +:10EFC0003C3F2ED7C53DECB5E372FD3D84DFD7E273 +:10EFD000A4FB007D2A97EBC6BE4F06B7C13FBEA873 +:10EFE000BA18E5BB716F61383EA69BE3A43E89C5A4 +:10EFF000B87DC7EFC3F269804F86E7404734BA97C0 +:10F0000065A142DF554B25D6735B4F16C7CF149BC6 +:10F01000EA3E3545FAC9B8CFEF7C700DD4075F41A1 +:10F020007A093AC7C86E06BAD2E89E3ED817BA2FF8 +:10F030004293E9BBE460CD874737C1FC793EEB3DA5 +:10F04000B1534A389E7D25829EF2819E2E217ACA36 +:10F0500029E1F4E4C7F26C7ADAEC35DB1D3DFED42D +:10F060001DB87F767AD298959EC225E3F4142E219E +:10F070007A12719F467E4E75502DA7EF44061B1BDA +:10F08000CE798FE864F40488A3EFF277C7E70EA384 +:10F090009E1A682C22BCAB25D6BC12D805179798AF +:10F0A000EA8146D582F771FA11FC6EC77BE7CA6D1B +:10F0B0004BE93BA138CF07E6C4C5778D367ACC291A +:10F0C00011F47881FB99539F26BA32FCF84B8AE2FF +:10F0D0008B4B889EB9FC0E8AFBB61E5019D1B553D6 +:10F0E0009C2FD11A25CAAF4DC6C74D62FD80F7A629 +:10F0F000128C17D702DEF3916F79BCADB7F6D51835 +:10F10000DEEFDEDBE8A4785BAF90EF1FD672F99EEE +:10F110006C3945F493557A4231CB11FB3EE016B47D +:10F1200080CAF2813D980565B2E1C7A1737DE7E031 +:10F130006B1C5C8E72757BF3E1F426DCAF475D11CE +:10F14000CC33827F1D47387BD521AF450FCC3F356F +:10F1500082E727CEE7BF8EC7D5EAB95F6D97E7FE96 +:10F160009228971FB5F638378FB718FB5E145716DD +:10F17000A35E0D3527E99C9EC1FFF6758404FF87C9 +:10F18000E2FCFBFF1C55D98BE768028D49E207833F +:10F19000FFDBC53EE444B9FD7759497CA3990E7D58 +:10F1A0002ABFDFFE42E9E5F5791C7E177EEB974525 +:10F1B000FCBAA52483FCB79786FCEFC17D86A90E17 +:10F1C0003645F63A4CF6D93EC1A79714697D2554C9 +:10F1D000C607B0DC1EA8ED9E41F41591F8BD3EA314 +:10F1E0009D746FDA4E2E67901E9F4039D0B8B7FDE0 +:10F1F0005C72E081097A7C00C7556AF9FDF01DC593 +:10F20000F187A8DE23D3FDF08A36C2CF37D78FD05F +:10F210003EE6F46496FBB96C54A3FB53D7E42F4548 +:10F22000FA00FAF936E235B0CEE99DC9284E1E9BA8 +:10F230000DCF877770BA1F68E6743FB0432679BD5B +:10F240003FCAE3CA18F1C57B458C50D0FEE6C3FA2D +:10F25000C351FEDD05C6A9CE477707CFFC88EEB5C2 +:10F260003B0874BC59C96047C45FD366C3FCCA3F3E +:10F2700079E977148C7D36E8CDB951C89D1D5C9E27 +:10F28000F8A299F304174A1F86BD314F891D45BC6A +:10F290006A8C7F270574F26249C1D971C8BEDABB96 +:10F2A0002CFCDDE7D62231539ECC780E7698E446CE +:10F2B0003E8A3A69DF0CBEF86149EC751CD75F9B4A +:10F2C00026793A2E9FEC76060A28133D1C9BD00B1C +:10F2D000C770DF1615C5FE15CBBE92132D0FB30BED +:10F2E0005FAFAF19081AE8A177C1A532EEEB039220 +:10F2F000670CE58909BE5F217C337AB85C2961A27D +:10F300005D063A467D7917FF9E18E9FB7A93FF99CF +:10F3100057CAE915F8610CDFB7F7C73BF6F1774E2E +:10F320001C550AF191D6589366A6F5FED738BDC78D +:10F33000FE8BCBF356C6BF071E3D9A407B61AD4C9A +:10F34000716428C97EF6A19D6C3A6701FBF531CE48 +:10F35000BB57F0F5B7C6CF73333A07ECAFE77990F8 +:10F36000B28D915790FE4DF6B1A714E380FAE8C82C +:10F37000E208C649C6E380DED20CF6B19D9E9D1B15 +:10F380004732CACF9CB599F970B875DF5BE85FEE7C +:10F39000696674BE75EB1DBBBCB310BE569961FCAB +:10F3A0002D2FDD45FC97B756A6FB8D1F5CCBEFF7E5 +:10F3B0009F6C7F8D7B72FB45FCC2EF4CA7C9DF14AD +:10F3C0007131BF67244DFEA8889BF97D63BC5E2F19 +:10F3D000DA15467600103EB50F60FCC3FCFB41CD4C +:10F3E00011CAAB04B4601ABF47B3DFA31B5C2FBFC5 +:10F3F000E3C2750A7B5FA9CFB6DC0B1F6C0C5AFA0F +:10F400001BBF5BD2A16CF620BEBDAAAE629CF27798 +:10F41000A5F13AC477713425D131C42285E4A7F12E +:10F420003B264B1CF5B9782E15EFE6761602DC125A +:10F430001F736929B7F77322FC7BC7AC46A6A67079 +:10F440005CD69AC673BFDEF5E4FAE3EF05B0C64AB0 +:10F450009C27B604F7DB5BC1EDC89E49BE1BBFB657 +:10F4600054B6DC73CE9CBA9AE9FB0D83AF7E911B38 +:10F47000BB1EC75DE258ADA1BFF9419C7F0FDA29E1 +:10F48000EC77FB7B3BC28B6F28253A8F1FC5EF754E +:10F49000EEAB6411B4933ACEACF0A03CB92FE0A629 +:10F4A000F358EF953E766D7B05D00BC0DFECA27C68 +:10F4B00014951DBEE4CD980778B794E98DE04377A5 +:10F4C0003AF52694BF7F5DFACFD7E6037E3B710FF6 +:10F4D0008A187BA4F4833EBAC700EBFCDE5E0DF70E +:10F4E000678FD7A87F70ED85BC8F37A5D1EF3D38EA +:10F4F000E35FC67D0AADF5909F188AAB2E9487AF67 +:10F500008ADF5D0AAD655B94DC8975BE2BE44248F9 +:10F51000C4BF4222EE1512E7097AC4FEDD2FCA836A +:10F5200002EF8AA6DE4CF2102429EEEB7697F87DE6 +:10F53000AE1A467A34BC96915E0E357179B2357F3B +:10F5400033C5A9838B15FADEB543CCEB6F1CD3B062 +:10F550000E76C4D652937C0E36713BE25DFC28BF1A +:10F5600000ED467D31DA94E06F6CC37E3E35B21813 +:10F57000BF77CAD5B8FC0BC753ED68321AFD07D761 +:10F58000011673E91C03D14F782D872FD4CCED9849 +:10F59000507C8461DC6E8780E31725DA761CD7788F +:10F5A000FFE592D82E8EC711CD3CEE37C4B8DF18D8 +:10F5B0001F9791DD1AAAE5E3061A755A679EC6D70A +:10F5C000B9578CFFA592580AE9C95FCBFD3663BCD9 +:10F5D0005F17C70FF079464164E3FBDC5E30DA8DDC +:10F5E000F2FB81D8217C3F77EDA8EE8E4C3C37EDC5 +:10F5F000FB63E7DA773B7D1BFB1E9ECEEF1908CF3E +:10F60000D0643CAFB2FB4B73F7E3FD19DBE3EE1EB6 +:10F61000F5338CFDA4D44DF3EC09446E467B6BF7B7 +:10F6200026FD2D8CAB0634A57C33EC6B20BDE7BDED +:10F6300099586F0A3224D9F1FC35F23FF87183CD25 +:10F64000DC0E3FA5B1BD689FECFE03DF87DD4BD824 +:10F65000F736331EBFC33CC3EE4D1C9F86BC34E05F +:10F66000545446F7892B1ABF4FFC7869C4A2C7953A +:10F670004646E319F78AEF0924DF43B932788D3B18 +:10F6800082F7653C7FCD334B713F06DADD1ACAF550 +:10F690008175CD329E1FDCBE94FF6EC6F64D2AAD3D +:10F6A00027D408EB81FEA1F43F74613E2E7434CF61 +:10F6B000B29E90580F08EEB7E877E9347E9F67282E +:10F6C000AED3BDF106DC817498D69314F7A107542C +:10F6D00085E00F345AEF430FC415C97C8FFCBBB8CB +:10F6E0002E931D6D97E3F7B95AE93B3CBBDC994C6F +:10F6F0007E398B16FF07C9AF0BFC1D880BEEC73494 +:10F700003F9EDF2454445015D5C8D3A2784ECD4136 +:10F71000BF5B80E73F295EA8F37BDBCB1BA30D78A3 +:10F72000DF0F10BD8671BB5C1669C0DF058B8CDFF7 +:10F73000F3A4D2FB25E29EA7F21EEB794EFBF9CF94 +:10F7400012D643F1E788ED1C67C9B1F78EA11F56A9 +:10F75000627B6EFCAE59B62D5E6894F6DF452B9841 +:10F7600096F977D126C38BF1BB681EA7563C0DF1E5 +:10F7700053C5F1D853D3519529AF3181C794D409DA +:10F78000EB2E15E725A2D322463C9FEE9D1C3F1F82 +:10F790000BC2C7097EE87060C1397F0FCBD1F66418 +:10F7A0004DA3C98F75F8B8FD3A717EEF17748E625C +:10F7B000F2FDB59EDF73E5F3B83EDA8528C7B7E4FE +:10F7C000F0B8BE4FE571FD2D393C4E3FA59AC7F507 +:10F7D0008D7A7615775D8D3A9E398E98DA8DF9B6E9 +:10F7E000E468214B5E2B7025C5F51D211699057B1C +:10F7F000E54EDF41793F3738A498F7733847E83B47 +:10F8000021A02D8AD33B3C695DE27614C5F51DBE6F +:10F81000215EAF16ED4A8AD7AB78BB2B14A3EF4D10 +:10F82000B6605C3FC3BECC9C26E247627F9628ADA3 +:10F830005B908E97C0F2EE85FD99BA3AB605F1D08D +:10F84000A430C541877352E27B9415F4DDC9754B32 +:10F850009982DF8319F5ABBEC6BF6BCB6BD6289FF1 +:10F86000EFD7F877D7496DF939E96900E4485ADCF0 +:10F870007399CE3ABB3D28EE8519B8FA21BA1F1309 +:10F880007F576039AC67C3341E071B5EB88BEEE947 +:10F89000B8FFEA3F52D9B5B02384F66967D96F99AA +:10F8A000795EE0452DD3BD4E6F8A712A4EDF4771D8 +:10F8B000D164C4FA3DE004BDB4D3FA931EE645B961 +:10F8C000F4E75A57FF346E777CD2755D3C5D12F0D9 +:10F8D0008E79F03C617FFDA7056F1F3B4E70F5D11F +:10F8E0003DAA5D6533CBD16F7858E0D1E83F5CD657 +:10F8F00041707756EE22B8BB2A3B98593E786AF998 +:10F90000FD9FF679564EE7E32495BF0CDCCF9D179B +:10F91000EE5D2CD3FCDE49F0BEC9C07B688CEE3BAB +:10F92000FC73C3FF86A0974F0B7E59E0FF9669FCDE +:10F93000BC6E3262D07B399D77FB28CE5AD1EF9ACC +:10F940008C5F828DD6736478CFACB95E5E11CBCDFF +:10F95000E4B718E5AF111F59E7E7AF5F09BC9D4455 +:10F96000BCCDC271531D97217C22DEFA658DC7A7DD +:10F97000267BFFCBAED1C24CBF9765947FF3ACC35F +:10F9800072AEEC7CF07C755A39E1EB7F1CB2BE772D +:10F99000476A4AC6DFABEAAFB7E2D3C0F359FBFF11 +:10F9A00029E1F37C74785E7CD6F3BCCCA785CFF3D9 +:10F9B000C1730BDA0717804F3B5D4E36DEFFAB7429 +:10F9C000D93F8DDB59E7C3A39D1EFFDC78FCBF8DBB +:10F9D0001E1FBE407AFCFF783C373CCF5D201E0DD9 +:10F9E0003979C8CDEFC19EF5CD0DAF2E05B8FFB961 +:10F9F000691EFD6E3873C62E5901F6F2F1E9DC5F1F +:10FA00009F25F239F6F98E0B7DFC6AD38A2FA1DE91 +:10FA1000FC68E51486F199D765F5A7518CDFDCE821 +:10FA2000C8781FE5AB02BFC3D303C24E8E5D331F40 +:10FA3000FA2F7FDD3117F3C493AD8F3599D645F991 +:10FA4000A96CCBEF8DBE0AFE209E3F32BE1F7CB557 +:10FA5000695E4E26BFC9D8DFD757AEF864FBBBD26C +:10FA6000F1A9EEEFF9E0199A5E7E41F266FC9C3452 +:10FA7000D3885F0E7D9DFB0FE03DB930CEBAFC58B8 +:10FA8000169D3B7C0D1FD561BC27F6ABE9D07F7975 +:10FA9000538D25CE639CCFBCB56FD63EFAEE2FB604 +:10FAA00082FA9F9A6EB5EBC6F7C7A02B997F4F3AA3 +:10FAB00075B5EE329F67BB3462F845ADA5F4BBA5C2 +:10FAC0006EEDE2C760FC57AFCD52F7219FAE68DE06 +:10FAD000863EE2EB370724F33DAB39113EDF82D59A +:10FAE000DCAE7DEACDB84B36EDEBFF0220A06A33E9 +:10FAF000008000001F8B080000000000000BED7D5F +:10FB00000B7855C5B5F0ECB3F779E47D124E9E90B5 +:10FB1000B04F5E249084931002288F9D071A15F52C +:10FB20002410091AF010224609E9D15A4BAB2D27AF +:10FB300004307251835A1A5B6C4F22D6DC5BAE06DE +:10FB40001AEFC55BEB8D0888F7D7DBC843D38A353E +:10FB50000A45EA33F5EA95565AEFAC3533397BEF6F +:10FB60009C106CBDDFFF7DFFF7A7F51B66CFEC99FE +:10FB700035EBBDD6CC9E335D95084924C4BEB46137 +:10FB8000E57001215FC2DFA2501901EDB309B9CEC2 +:10FB90002769C1684288E24DAF2D0CB597F2F74551 +:10FBA000BBF9FD343516DB4F48A4BE2F4C7B227FBA +:10FBB000BFBEFEC2EF13EF24425269493C19DEC2B8 +:10FBC000B1FD080960BF27A6FA32545ABE2EF9DFEC +:10FBD000FC56297DFA8308CFE32AC03D98511B4388 +:10FBE000485903D18205B88ECD84B65F7B959AB013 +:10FBF000AD18EA9A4C5C84D864F513A80BB8C4BC61 +:10FC000009B45DA1FDE768C4DF46DB1B2D9E5524CA +:10FC10002BECFC45179A7F741D8A560EF34D6A250E +:10FC200004E737AD4B8C27FA1FFB53E555D0BFFFD8 +:10FC3000A8C5B9C93D7EFF5E1B69EEA3EBCBED0AFB +:10FC40005857EBF079AD6AC176974CFC7D48477FF9 +:10FC50007A7D4CA8FD0A3502E9DC6FD366FC339D42 +:10FC6000E7E835764F0F01BE58F20F31741D275665 +:10FC7000C44B7635D43F86E3E72F5309BE97FBB0DC +:10FC8000DFAAD271972B4413E3D7EAC6FFEFA98C02 +:10FC90008F2A0017084720723A9D87BC2E7B1EA72B +:10FCA000456FCF77D37D61F8EFE84607199846C8CE +:10FCB000E753F3F07DF17CE992E22DAE52E49B54E0 +:10FCC00099005E2E49F7D179AF83F90B000FFEF44E +:10FCD000E202588FBADE1B7DF1EB10F836C361C625 +:10FCE00073FF90D74AE8B805CB18DFD62D7BDEB27C +:10FCF0009E96DD168A7F5ABE0D5DE785DE7B82CF3C +:10FD0000D36BF3B5477808B94B9DD7D9E1A0754AB5 +:10FD100016720921BB820B3A0380B7CD6CFEBA651F +:10FD2000359B81DEB9D5C429C7C33A8806FC7A62FF +:10FD3000414C70131D8A38B472E0AF0FFF1A47B6FA +:10FD40007960B24E847FBD4DCD05BE2444B57A297D +:10FD5000FE9F567C1B55FABCF6A43D2017D1B2BAC3 +:10FD6000D80A783A6A65F248362F453889A2E6D62D +:10FD70008695AB4D38AEE0ABDE606DDC1A1D5FEDF5 +:10FD8000576DB82E517F6D23417A1D03BAD943CFE9 +:10FD9000970D11C453BFCD8BEBFAED15CEF84D4C3A +:10FDA000EEDAEE0439FC72AA04EBD80F7C4AE7FBCA +:10FDB0002C78F4496209E1637DCFF45C92191A6FE3 +:10FDC00079BD4C06F208FE7D4942EBAF5B12657CC3 +:10FDD000CEDFCF93B575302FB9CAAE3E4EE5C755CD +:10FDE000BD1CE5FFCBAB8813DA7B6DDE4D31F479BA +:10FDF000EEB23FDE81F392208EF7A16D702DC32706 +:10FE0000C37F634F74F736DA2FB17DF85BC0579F1D +:10FE1000467BE312747CFB0B4EE710FF12C403F425 +:10FE200073D2FEB58A6A7586D1734BABE5B070DBD1 +:10FE3000ECEA19BD9E31F3616636FD275DD7670F89 +:10FE4000470401AE15246085FECB89B680C13D62B2 +:10FE5000053D7192D345BC7F920CC4CC01FD542D5D +:10FE6000A37E3AE95F1AD748D7D160ED8B29A1E587 +:10FE70002B7C1D6FDC215703DDCEF27564660F1EEF +:10FE80002AA3EF7D46FFBFCD49FB07E5809DF255D4 +:10FE9000438BFCB63D3634FE4ABF713D541E8F5E27 +:10FEA00001F37D9FCD47F5D77AC0E75BC4E9DF4614 +:10FEB000F9FB285D3FACA3D73B3928D3A98F59D490 +:10FEC000FB4A693DB056F4A7AC9244888FFD935C21 +:10FED000D7E0B9AF943E3FA5BA914E6B1ED6B64659 +:10FEE000D0FAA6A8227C6FF875B904F4C27872EC37 +:10FEF000BB9BC2E708C197FB70A401DE32B0476824 +:10FF00002706D257E9E462565614B387CB58BB791B +:10FF1000DC92AC686C3FF657B9399CBDABCE627AC7 +:10FF2000B06E7BF8F7ABB362587B67787BD895C926 +:10FF3000E6274A5F3AD0B5AE3EFC38FFEE8EC57E6E +:10FF400027D7BFBB52A3E31CB730F915ED7BDD8C7F +:10FF5000BE0FB9995D38D673E5E114A04FABE4CC80 +:10FF6000A178FC306130975004DED0729B0DF4F222 +:10FF70007637837B598637C24DFBAF19AAB0A5D21D +:10FF8000FEFD0DC423A921FD608623DE6DB63BC2B4 +:10FF9000EE754680DDA3FF3C6D2FC12E81B804A015 +:10FFA0007BE056E08B404FA4F37109F9E415A0A75C +:10FFB0008FD2739B8E9EE96EA39C99E9D9B43DCAFA +:10FFC000507F8BA8151618F7B81C84718FD9465E20 +:10FFD00001FE3F46F9AB0DF8EBFCACC21A9DBDFA31 +:10FFE00088F3FBB125B3904F3F5B126501BE1C8FB8 +:10FFF0009FDEE3F27596DBABCCECE0D64B5D2827B9 +:020000021000EC +:10000000232027AD4B989C8CF77EAB7538299C5EDE +:1000100010E537F61BE5E9D892A571A0C7DFBA7BDA +:10002000564C6398F72E73BB113FEB7A8DEFDD12C0 +:1000300034E1E56E36CE78F3BEC5D7758AEB73C171 +:1000400047C7BD4C5F887ED772FE10F5FA26E3BC29 +:10005000D73518E715F271DCDB1E097E0AB557B9F2 +:10006000C0CFBDDC7E92CDB30CF673ACFE6BC3F992 +:10007000043C547F288C4EEE1ED90D7586179F893F +:100080004FCCEB3966A17C007AE6270AEA999CED11 +:10009000AB2DA9EA58BE6B318D73B17C9799ED8D6C +:1000A0008375097D6E7E3FC46717A6C3FF2DFE1AB8 +:1000B0001FFFCC3E4EC45F42EE6F50FAACF30A987D +:1000C0003EB9859636B703F16973AB58DE4098DFC9 +:1000D00046C860514D21E8A3482281BCFE4B5430F4 +:1000E00087D2F378ED1BB97A78FE91D3A3AE73EF84 +:1000F000A114027C10EC4C043ADE2913F027DF1C1B +:10010000DAB705EA91AF5A9CA09FAEAB2F8F994DFD +:10011000EB65C7A95DA0F59FB9E3999E5DB6DAAA24 +:100120001FD7CCB77526BE4D703B995F3E1A3F1066 +:1001300027EA31BECEA6CEE2C329749EBA961DF33D +:10014000609EA6EDCF5BF3E9F32E582F9DEF11BE15 +:10015000DE06EEA712075D2FD53B6F80AE83F57EDE +:100160004742FD449461AB5E1FADF2BFBB389C1E9D +:100170001FE2787881EBD96519BEE7403F534756B7 +:1001800082F13EFC2E83AF6ED96D12ACB3066207CE +:10019000DA5E0B70CC0EADC306EBA028698C1CB9DF +:1001A00003FC86517CB6327CBE3154BB25B1747CD5 +:1001B0007C0E9AE4FF62F179BCE77A9C3F7025716E +:1001C000E618FCDCF420C4393502CE90BF2B01BF09 +:1001D0000B7E78E3B67757FA0CF19C331ED69BA9B9 +:1001E0007AE3808F4E6732BC3C1443FD5D1DDE7E9A +:1001F000CBE549C8E7C95BA44EF08F69199C143B55 +:10020000B6DF787270BD44BC40F7DEDBEDCD3D61FA +:10021000E4252F53E27E9A7731E0F3B34EC9B38DD4 +:100220002DDFE0CFAC1922CF0DAB3AFF6C3C7F6DD8 +:10023000198B9742FE5A30A684CE2BF3797E0BFEA3 +:100240005A81C15FDB52E60AE3AF35537F4DA72FDA +:10025000CCFEDA09E2BD7A36CCB784CD77DCD6792C +:10026000358C73ECFB592501685FF610EAD7C97C21 +:10027000DE635C6F9F5866B40B099913D8E9A148F7 +:10028000233F8C635F269BC699C8BE507F3E1DF4FA +:10029000DD89EE8695DF023EEE8EF4E4A863E9F395 +:1002A000DF9932F3D77A2291EF84BE117CD76FF3B6 +:1002B0007CD84FDF3FF174AA67930A7AB1B21CC6AB +:1002C000EB3D3F5592293E7B6BA39AC14FEBE5EF87 +:1002D0007FF8837CB43FBD410BB3472DD41E51D072 +:1002E000A3B9DF27F484985FD049D8A339994C4F3C +:1002F000346D7FDBAAD2F5AF12F134FCB960FCD4C7 +:10030000EE6D74A8372C5C5FFC2C26F8B89BC56595 +:100310007A7C959BF0754BD0882FB39DFA4D30B306 +:10032000C2E262FE518E3B34DF9A4E77CF365D7D5E +:10033000E5065A47BF8CF1C3C907B24AB6A9213BAB +:10034000D61BAC287C1AF8CD1F857AE16FB66741C1 +:10035000CBD76ACF003F17B267DFCF745F943D3BC6 +:10036000455D74A4C7F959FF3917D67FFB24F40FF4 +:100370004E6D67FCFA0D8EF793B681423D7CA7F86F +:100380007ADFE4EB3D15B4605C45FD8CD81A5D7CEA +:10039000B196EBAB935C9E849C8BF6BB338D7AB6A7 +:1003A00069BB11DE557718E3DF7B339D2C0EF0B768 +:1003B00047829E3C2EF8662DF3838F7B2B518FF75F +:1003C0001E37C64BF79AE69948DEAE9734B437E449 +:1003D0007B843C1E0FF2A76E027FBBF735B9BB4D85 +:1003E000E7375F996531F0E5A81ECE637A18FC0403 +:1003F0003DDE3E0439D4F5BFA1D9E4A758548B0C97 +:100400007CFB9A8C7270EC9A1BD632398920288733 +:1004100036B6DEDE4D31C1367798793D6CDEEB9530 +:10042000A061DEA7383F8C3BEF04FED1FF8F478CE5 +:10043000FD872E52BEBEAE78E4EDAF682FDE575575 +:1004400043DC2EE29263E09FB842FEC9B5F6C133A9 +:10045000FDA00FA3078B20BFA664B179D66CAF4176 +:100460003FF298C5BB2506FA1FB538219E281B62AE +:1004700071C41AEE2709786A4CFE92B03713D94737 +:100480002A2768CF3E0B467B40EF9EA85B6E0D8708 +:10049000AFEBCE4D2603934275912700395BAAD36B +:1004A00037EE4C1BCEEBCE34CA59DDB90C7C5FD88D +:1004B000AB35DBCB313F50E7DF91AA5FC71FB8BD3B +:1004C0007A2F93C13FEAD72ACCAF1D2F4F96926562 +:1004D0005CFF094E579127AB53BC61F364D72D9352 +:1004E0004D7A87F95FB02EBDBCE49AF48C185FE8B2 +:1004F000998B1DBFD6CDF4A7C8C36516D0F763C6C8 +:10050000E7CFD179783FF33CD959AA61DDE6F93ECE +:1005100007D9BF40FEA89EF35B19CF1F1DBBE65253 +:10052000E4AFE3B52FCC07BABC75F77F9D584EEB0F +:10053000BF693A341FF4793DE4931241DF101BE6A2 +:10054000777C12FA73CBB7AFB6A6A2BCFD17C6BFB5 +:10055000C78E67217F5EC7E972CCE631D82FB3DC46 +:100560009DE2709E53793C44FAD261BD13E1E7B736 +:1005700026FC7C557D7F4ACC47F523D0F15D95D193 +:10058000878E9A7EA1385B94A3F97B1BB911F8B2D0 +:100590005FD1A2802F3710E6679D711C4B3A3D8BCF +:1005A000DAE18837924ED3A11AC1D799479FC78401 +:1005B000DFBF7A3297D1432381DC8320E724D6B38F +:1005C0008D965BE203688746BA239C3DB48BFBFEA5 +:1005D00036ACAF09DA9D11547F941EDB5E06FD2315 +:1005E00025E291295DCA062B7E0EFB134DC128958D +:1005F000D0FE593999B8AEE68581DF417B738F5DB6 +:10060000857828617BB10DFCC27DBD8DB1B05F7076 +:10061000B06B4DEC302DFF09967609610BA4FC748C +:1006200006FE9506B52F7654D1FED313FB2DD114BB +:10063000559F3FF6C50E071D674B9B37C549F5D93A +:100640003F3E766C876301214949DAE0220FC5EF0E +:1006500063276A1CE9841467F1F102AFD568F329B6 +:100660009E7E24C63FB9439B42C82F2D3EB744FB14 +:1006700047EDFEA446A1F856A4AA620B1D2F26BB87 +:10068000FC4118AFF9B17BCBBE4BE72BCA4EAE5540 +:10069000DCB8EFC6DF9F525BA9D075CEE7F011350D +:1006A000A1329BEA9928AF6AA171DB8F1F7BA54617 +:1006B000A1F3F72768B7115AAFDEFDCA0E8067AE07 +:1006C0004FF49F560BFDC5788F3CF6CA8E001D2F48 +:1006D0007543253945E93577388071EED90A7FA50C +:1006E00042E7BF3B3BFFC18208EA576F2F8F22B41E +:1006F000BE395BABB517E33E57B14ACBADD9950FC9 +:10070000C2F8650D81E984AEC716B8ECC16AFABCBF +:10071000B560F0C854AA429A6526AF31567FC04EE4 +:10072000D711E508062603EFF3FD063245CD053E59 +:100730001EADE7B13CD6683D85D55F7DE9D626F490 +:100740008F1CC469B994D6E37D0512D889D4280FCB +:10075000C6FB0EDFAA9769FD55C979DBB652E437AF +:100760008C27CE2C4EEE81FD9E2D594C2E0E3C72C8 +:1007700073C6DB747DAF3E929CBE1AF6B736313E2F +:1007800036F365550EDB47E98F0CDFFE269773B114 +:100790001F1A3744B43DB43C04F13F85C34206BF41 +:1007A000D706FB420E35772585FF459ED716F223E7 +:1007B000DECB6E8B0B009C4B3AF2314E10E3BFC187 +:1007C000C7CFF2F03C3A195096822A922D084FA2D8 +:1007D0002CDD58439F274512DF5E5A264E22585F74 +:1007E0004245692F6D5F9CE5DD0DE32E4E4E2D6E6B +:1007F00077C33CBF56C04F16EF8BFC53085EE76DC6 +:10080000006FA25C5B7C5B810EFF058C3EFD098462 +:10081000BFA7FD7C11ECA30E4ECF8438E61E933E9D +:10082000A6726823F4FD921CAE6754F67E6225A37F +:10083000C7C8BD11C11E37D2CBA3D7731FF1F5B600 +:100840009CCB27C159A1E72DCA800DF45BCBB9021F +:100850007C9ED81E9E1E229FD9722E9E0466E99F02 +:10086000B37586C67161FB58783A2DB87F7DCC8A06 +:10087000F199795CA1DFEE88D192132EE05FB59CEF +:1008800093C6815FC1E7EEA9840C621E7F00F1244C +:10089000E0CB9FAF25039FDFB1B73C9944EBF0AFAE +:1008A00070FC737D0BF8B5E8E69F92CDF0D6D4408E +:1008B000F8F902BA2EBA8EC6B4025C47FF9F2B67C6 +:1008C000D4E0786C1FB25F61F15799A2E17E78D9CC +:1008D000608233208DE50341C7FE047F39E2E911D0 +:1008E00009F5B079BD597CFEB22EC6A7C90D3E7977 +:1008F000B5CE4F117C3E9E5C10721F830BE242C04E +:100900008747CDD5EF7B0BB8FF01F46922D29FD189 +:100910002D359AD18DE3672C1F4C9E800F32B0BDD0 +:100920006CF0800DF0DDC2E14C1E1A889DC1D7B17C +:100930008E9619396C1FE8812CC6CFFD7D95B32E9C +:10094000857D9B3C05CC0C299B2FF4F203472BA8FB +:100950001E4D1EAD53415711DF5CEF5237C511EAF2 +:100960001F9FF340ED6605F0A315E3BE2AFDCB29DA +:100970001E8BDF47B85CFC388B70FD61965BE2171D +:10098000F8D4CBA9C0FB281F66333BDBCCE915D2DA +:100990003B6CDFF3EBD733D2047AA686EB19D64E45 +:1009A0005CDE16684FB2B03C2A71B2F534BE549981 +:1009B0000B8BBC3D4556C19F68927C5B01F16B86F9 +:1009C000D4B5F05CAC6F2D454034F57356D1875FDC +:1009D00052389A062303722CE45F22D4689D7FF874 +:1009E00049A7847C763B9D6143C958FEB83DC586C6 +:1009F000F334DE9B13E7D3C3A778F7607E348AC352 +:100A0000E730D92DC5584F4A52D75A645D7B34B36D +:100A100063BF9FAADD934DE9708A9FE7211D890678 +:100A20007FAB3BCB1877097B71B3AADD0FEF99FB46 +:100A30008FE79F950DD6623E21F96EFA88F25572C6 +:100A40001FC1389EF4B3FC5C72C380A545C71F85E7 +:100A500039854CBE641290285E4ED751E0E242EDDB +:100A6000A7254A1FF07F238813F21387E2BDA54E06 +:100A70004AAF4389319E760A7275C34829D0E3494B +:100A8000CE5F89518C0F0F45F877C17B0AF55390E3 +:100A90004FB97EFA75463ED34F3662E013725E1E42 +:100AA00058A46B3F24D54C61F34C2B6E9774FC34E7 +:100AB0003A2E71C2B8BFFEEB374F2FA2F8B666B21E +:100AC000F15C74FE5A9D1CCCA966FAF1590EDFB395 +:100AD000D96C1FF890DBDB0FF01C8A27CEF678F07C +:100AE0007F7C7BA07E454A94477687F413F03FD005 +:100AF0008BF2A70FF827C9C6EAB9DC7FADCB61E35B +:100B00009ECC61F5A458D6CF4C9FB25CD6AF4B6655 +:100B1000FAEC3E72D40BFBC4C24FA2FE1181731AD1 +:100B200054AC09F0D3B672BA9E30E31CC966FE0914 +:100B3000B563B8DEB17645D8ADE18E2CD02F796C97 +:100B40007FCEEC9F9BDF3B63ED3C80F9A0132C1F15 +:100B500074BFD31B3719F62D4E6491007DDF164507 +:100B6000E3D930F07CC2F16AE3F1EE669E6F893D15 +:100B7000178571F087D92C9E54F24E23FD95B9D478 +:100B800035A0AF588937E0D4D1DFEAB418E295D860 +:100B900073B1F87ECBB9592438E942FABC0CDBF3C7 +:100BA00053585CF4D9C9E571240C5ECC700F7038D1 +:100BB000455DCB53AA880E9E72E2DC0CE39713636B +:100BC0001C359E1F12CBE9DF724E36D89F109C3623 +:100BD000C3F3011A0F06F4F39F65F387E68D220134 +:100BE000DDBC83D95A5C0EC68BF39D6766D082FA52 +:100BF000E65FCA685798FDA2657734B3F3A0AF45A6 +:100C0000FC05F2EC9C49C8AEECF2E49C449DDDE3AB +:100C1000EF09BD123714F2EF24FAEE0EAE8F7670A4 +:100C2000FB33EA079ACE3B5DC3ED8BD03FE3C58330 +:100C3000A2FF19AEFFF61EAC4D017ED8E7704A3216 +:100C4000D5535B22BC296017BE9DC5F8FBDBDCEEEB +:100C50004F72546AA77578DB95ADB27D2989ED4B4B +:100C6000D1E932001E2A0F01BD7F60A6CFA5A3F4F3 +:100C70008930F053883ED1F8FCEBF233CBE6FBE44D +:100C80004290BFED1281FD933955C4702EE5DA1CF8 +:100C900016175C9B1365880BD698ECF752E89708FB +:100CA00065D445F9017A3B24C921FDD7CAF9C1FDB4 +:100CB000DE519B4AF1753FF76F5A72B5EB812FBA3F +:100CC000FF52191C86B8BB4D213D2E784F0B0E9755 +:100CD000C2BA2881687C57BEA24A6DA375EBCB5679 +:100CE0000F9C0324FBC3DBA3E80D92D644F178B339 +:100CF000C0B78BADA7C53560CBA670A4B53078A6BC +:100D0000F43D2F29BA754E6966FDFC3956B1CEB651 +:100D1000C5A5F05C53205F77073CA7E3DD9EC3F8D1 +:100D200022AD4F42BB96E6A708A1F44EF3B071A3E3 +:100D30003D41694D4168BD1D969A02B0231D495140 +:100D400068AFFE9CEBFB2EACB7E5E4C000A06BCE19 +:100D5000C94105E2DED469DA5D285F7C5DAAEC4C0E +:100D600083BC55D44906576782912FA867CAE1EC26 +:100D700061FC1FED2D06789262550B3B974A32C1FC +:100D80009F4D4AE0F62389F8F681FC38BCE8F72548 +:100D900045D27EF13AFB47BCA5B08F144C2C2C01F8 +:100DA000FBB738D273C001FE5589BBA49DB6FEDBEC +:100DB0002EB6EF61C67717C73385FF213DFC13F9C7 +:100DC00009A29F759C3857F07B14E79FF215AEEB94 +:100DD00001EE96CDFF12659700FFDD5214CADFFDCC +:100DE000D84FE09BC2B13B6736B49723FFA405A858 +:100DF000BF0C7A3F32234828CB2909739301DFE3E4 +:100E0000C1D9B241D69AF4FA73B30DF1DF6D3A2726 +:100E100025E2835FF178FDDA69DE7E98B775FF0E13 +:100E20001B8C7FCBEEB76DE1CEC58EBE7F917892E5 +:100E30009A997FDAE2244EC87F94AF6842FF639D9F +:100E400083D629FD5AF64868D748BD2308A468E927 +:100E5000DB7B388DD627B768B3C1B427511E182C59 +:100E600008D9A1B416CA5716C0CFDE01D8C748BBEF +:100E70009BE02954813F6A19320E02DFD38808F2C1 +:100E8000611F587DE87F7D901AE509503E7F71EF24 +:100E9000EBEA5DF4F966DA2EA7007FF7A4009F74F1 +:100EA0004CB779C00F4F9DE67B1DF090A050FF8698 +:100EB0003E8F77C578601F49B59312E705F06E5EE7 +:100EC000B7D01BE2F99CBB991C44E4C6727EF5B90D +:100ED00061DDAA4CEE067EFF630ECB971EB69280B4 +:100EE0002301F25A6C3D7539DA1980878010A6C249 +:100EF000FA0724FD795451EAF8E703EC7FD170F644 +:100F0000615E6F1DD71FE52B764BA77474FF228798 +:100F1000ED53A7EDE99654E4E3DD6D8B5DD89F803A +:100F20001E4BDBC3E29F75B4FD2683DE58DD00EB6C +:100F3000EB8864FE21D51B965C3ADF21CB6D2FC078 +:100F40003EC5A112E201B9BCFAE4C06154BB1CDE8B +:100F50004336DF2EF473287FB4D17A6C2EB35787D3 +:100F60006D3ECC631D4EA3E315C3F89BF2FCD1216B +:100F7000B936CB616C2EF39BD2EA774B9602E6D75B +:100F80007A75F08DCA476E4542EE6CC0C320E261AF +:100F90007DBDC2F2011C9E03CB5735013CEB5DA920 +:100FA000C5908753F9B80FFF6BB7DC45E1595F2057 +:100FB0000521AE5ADF29B1FDF2CE576D753AFBBE61 +:100FC000F3E957D15E5CD5CFCE55AEEFDFABC0397C +:100FD00066F77B07904FD7533E8C2805BAA988E760 +:100FE0000FAC0319C067663E8DAA667A0F72AC39E2 +:100FF000F1CCAF817A708503FD7DA15FEBB83C53E6 +:101000007D8AFA3029A9B018E2D459B9ECB99827E9 +:10101000A41F25A483B06B65B922AFCDF4317C0643 +:1010200001FC29C61F6B176694805D58C9FD794A7B +:10103000E785B961EC8318DFFD935AA2C6E8E8069C +:10104000F8D6F1DBD5B9EC5CF7D5B90A8743530183 +:101050004FAA85CA33C42D366F810A651297E7F807 +:1010600021B54D87A7C3B6409E4AEB873323D15E97 +:101070005179B806E039B0FC49B90BF410A517E86E +:10108000DF877F5183F86C019A811EF235219D49DB +:101090000A8DD3C0FEF814B48F2DF5D7619C3F6A3A +:1010A000D7F64988F79640743082FEF3AABE1A96A6 +:1010B0005F754578B8FE42FA0AF9AACB718ECA3B31 +:1010C000C4B1221E9FE41819B092B1723909E271BD +:1010D0004AE3953C1E2F9BCFE273F80B17870BFB5F +:1010E00027DE1771F8BA0DFF07FDC65B535EC252CB +:1010F000F0BF88F344FF3B39DD6EE4F1D5F7721998 +:101100007FAC2BED437DBBEEB41FE522BA9AE98795 +:10111000E89346BD26E23CEAA8E1388BA3FA2E8389 +:101120003868F14F25677B98F589F266D83FA3E3CD +:101130002D3AFFEB58BD3FFC0F9C4FDF85FD5AD485 +:10114000FB7EF4B73FD82585DD37368F933E50358B +:10115000EFF7941EEFF7C6E179A70FF62CFD0ED43A +:1011600003BBE3F01C4EFAC032A4F307AE791EA015 +:10117000ABAB9DE1E583BE4AE487F792550BF8D30C +:101180006D7D0F2D7C87CEDBCDE5FDBD5FC81B607F +:10119000DD9B9E786A21E4B1D605A5497618BFF794 +:1011A000A77F057BD5BCFB1B4E108DF69FFFBB0DAB +:1011B000F6452CC16EF6BC37CE09FDFEF0D88E8503 +:1011C00080CFF6BE766C7FEFB16EAC1F78E229D48B +:1011D00023822FDFFB45F7737F86BA37D60379B0BA +:1011E00016DFC3DF873A59168BFB67C477D056A743 +:1011F000CBDBEDDCFB3CCA95E083ABFA187F927A3F +:101200001BE62B043F9E7A29924871B48C677E7F3F +:1012100013CF5335F17CD32D3C5F768EF3C311B1E0 +:10122000EE8D6ADA692BC4259EA415A5C886838F26 +:1012300097C2F3627C4ECECFC2EF81DEDB6E15E744 +:101240004A32603FF4D6FBAC5E9657A575DAFE3E97 +:10125000B4033D1DACBE0EDAA11ECDFA8BF59C7A0F +:1012600033A23E9C9F16828FB0BCADC58274A3F39F +:10127000C7CEA3F09CB2A8FBC0DE8BFEBFE3FC1C74 +:10128000829FC555026ED1EFBDEDB280BB88C12DE6 +:101290000BB88B18DCB280BB88C12D0BB88B0C70DF +:1012A000FF2EA2391CDC029F0AE0CF85E7780641B9 +:1012B0008FAD11F334B1BCCE7DA555BB418F3775D1 +:1012C00032FA45E569BBE19CC5D95CE6B737CB424C +:1012D0008FB0FC867CDFECD7C02FFCA42B4205BB73 +:1012E000B436C17706F5D08FD877262F3C7273C6F7 +:1012F000B00E9E531B8966CDD1C5913BCA33085DA4 +:10130000CF99FBCA33AC74BCCF9F9F97017AF9F495 +:101310007DF61BB50BACE3161E578A38C916A5AE71 +:10132000853CCCD1F2829C83C81FB11E7921AD5F70 +:10133000C1E8D8CACFC1B45E1FDF0DF9728BC349B3 +:10134000340AF7B2EAF86EC813254D63F20E393548 +:10135000D827264B24F4033B6C815EF4039C7D1953 +:10136000E00744150CD826D3FAF286BD0B210554AC +:1013700048F5EB993C8CDF767F49FDDDA50FDFBC9E +:1013800012E6D92513A79C0AFDDAF0FD0C07FB8EA7 +:1013900009463A23F299F285FC2205C715FD46FD60 +:1013A0007D2E5F1D36E69F51BF8644D0B2EC0E9E67 +:1013B000A7971ADBD1AFF9D6C07C8C37CEDE1ED909 +:1013C00052A0D78FECFDB47EE62FA5350F5E06EB5D +:1013D000B9326FF52C98663DDF4774813C829F12CD +:1013E0008836D8C599D3183F2739BD55B02E87E622 +:1013F0004DBC07EC91DD8BE7FDD41BBDD636FCAEB2 +:101400006924A30E1DAAC70D7661A7D5973A1BFCC8 +:101410009B0EEEE7EC6670D3F7713CB55273C1FBDF +:10142000747C1CCFD1A029303EF81B50FFF8579791 +:101430003FAEDF6733DB1D18BF341AFC94403DF22A +:10144000A16AF380FE790FBAE2F7938122FDBE858F +:10145000391F08F611E4E9DA69E5574E9B1D2A4564 +:10146000FED04CA7EDBCFDC834EDCA69409FDE49F3 +:10147000139CDB6774147E406B35F7037EF936DA14 +:10148000B9569FC2FC37DF69F4DFDEDFA891535401 +:101490005E763EF336EAD7DAFD8C6EADFBDD56881C +:1014A0008F77F2FC496BC507E8C70564827CDF6A69 +:1014B000EBDB0ADF07B66E23F1340224AD0B877332 +:1014C00041BF7EF40C938743160BE6590EF5CCE82A +:1014D00006FF446A667E5CAB5FEDB1639E96C58D88 +:1014E000344EDA01F1FBFA6682F982D67EE66F921B +:1014F00002261FADFB5F45FE117112F5ABA680DF22 +:1015000013EFB27BC02F49AB1ACC60F2483C3910C4 +:10151000C754F9762C467E2B2E037E3BB0FCB9AD2A +:101520000E98B78AC661F4FD9DE9DA33305EE019A2 +:101530008940BE73A7B5B302BE3BDDB958750660DE +:101540001DBE65A37E0EE817E25B86F151AB6BA56D +:1015500007F4D6B63616676DA37116C4513B9F6962 +:10156000433FAC558DF4C0B983ABF64BB7E3FB8179 +:1015700068027CD14AF109F5AB829706F5E7C9AE5E +:10158000AA1ACE80F30902EE8FAC83AB003F1F3D59 +:101590006D27015D1E3BBECABFEB2E78DF59E2917D +:1015A0003D10AF0DFAC05FA6A2EE69A3F54EABD712 +:1015B000EE817CD6155210F6DFE2B9FF9255CDE8E8 +:1015C000F883694C9FFD609A8597362EA77CDFC112 +:1015D000192802BBF621E703F85393A8FEC77F50F2 +:1015E000BA340DA01C41FC0A7475D9B5E26FEAF853 +:1015F000D455C9FC0AB10F04FB42B81FB442417A6A +:10160000A7517A83FE1374BBD235AD04F0B49FC3E7 +:1016100095962761BE80046C88AFA415BB95B5056F +:101620006C1F295CBEE159AE471327794BC12E24AC +:1016300026B3FD8544B9DC120179A962C9D3A3E2BE +:101640003E35EE3B8D24A67A7A74F814F993B349AB +:1016500031484F12FCB502FED49169E1E301F15E1D +:10166000681F2B02E9BEA4335004F1A9D8C712EBBE +:101670000EB645D6EBF5D901AECF82F93C0FE96441 +:10168000FB244916CF24CCEB44B3759C4D5A50C66D +:10169000CEFDB6235E7E3E8DD99FC42C2FE6EF464D +:1016A0001263701D8959A411DE4F6C4F91DADD7AF7 +:1016B0003C3BD1CE5CCBF1332AFFE06FB941FE99C0 +:1016C000FFDE4AF91AE238D0039C4FD9F7105C1FAD +:1016D0008CEA39AE0FAEDACFE8DEBA9FF95722CFE7 +:1016E00043C8702EC8DD594B4609D8F956DB30CABD +:1016F00061AB452D697385E47B22BDB0382A8879BA +:1017000089C533724BDADDA1F73EB2AAB8AFFCD17E +:101710006282FBCF2F3EF37A501F270ABA98E3204C +:10172000D0BFE037087DFCE75CEF27A03F5B2D03CF +:101730005BE19C8CD09FADFF76AFE17B17B3FE746D +:10174000284C5F39825141FDBE12ECD1C69460191C +:1017500088A665D406868FA802323015D65F7AF443 +:101760009F41CE89A2E23A630A0717807FAEE44523 +:101770001BFC9BC8FDB7415A1FF27E6CDFAD270AE8 +:10178000F75344FECF0CD7E79C8F04FE459C0AFB21 +:1017900048D0DF9DC7BF03CC6372353D4F32D8E3DD +:1017A000317C1DCDE2B4F1EC8E78FFEBCA4B8A7927 +:1017B00084FD0BE19BD15BEC87C1BA6A0AC6EFD707 +:1017C000F93CD3374067FDB9EE4B39DF7FCCE5E616 +:1017D00049BE7F90E95B11571B661C517F60E38512 +:1017E000BF3F71FE5546B8605B12C67156547BE030 +:1017F000FCADC6F163EEAF10E5D361E157B961FE10 +:101800003FB1EF877D04BFC31DCB6F46FFC239DFF9 +:1018100062FAEE9AF123AC23DCBD0CA2EC30ED535E +:1018200075643D4720AF19E588457E5904C125857B +:10183000E35E750A7EDF00E3D5A0FFB4C930BF19AF +:101840009E08353C3C13E1B7C3B2B719F8F31D0E3F +:1018500057E6AE0BC37F3FEF779A9FA78EF6A86D32 +:101860000A85376EBE5A0C76BCC3A256EC7485CE80 +:10187000A1C72C247F84737B4D9D3BF2E0DCDEB658 +:10188000B6BE7AE08B386598C0BD04895E23DCC99A +:10189000F5C673BEA9BE04437D72739AA17FBA3F99 +:1018A000D3D03E75C37443BB3B5062A867755C627E +:1018B000E89FD35961A84FEBBAD2D03F3F586BA8ED +:1018C000CFE8BDDED0BFB0AFD1D0BEE6AF59071E66 +:1018D000013DF11A3BCF4E1C6A995E3E44F9A33C90 +:1018E00076AE316EAE71FD37759ABE9B1C879FCC6C +:1018F000F45FD361DCD7CCF45D81FAEAB30282F9FC +:10190000A2A8EDF95B81AF52D610BF9DEAD528138E +:10191000FF4F345E88BFF3F7C3BED267D5ECFBAD93 +:10192000E7A0298C9F7BC8C4E7B5AE38668FCED5BB +:101930004EE017333E5F6C67FBCF8BA38CDF090D46 +:1019400071BD3998C7F4C844FC2ABE2B3AC3CFEB0B +:101950004607DDC89F04BEEF91605F416A83EFB721 +:10196000137CD1E8B7DDA20C9062DD7C0F73BDB3B0 +:1019700093F37BD746278EF3A38D2958EEDAA8E29E +:10198000F39F6CCCC332B8D183CF7B36CEC57237D0 +:10199000F5D7A0FCD9C66AF65DD0462FF6FBA78D19 +:1019A000F558EED9E86372E75BC1BE93E2FA879C13 +:1019B0004B089B2FBFCC653C271DA20B851CDE5717 +:1019C000153FDC1F311E3EC6BC2F375CF03B830D3C +:1019D0002757070FEAFABF9B17E3C2FDEA39640EE7 +:1019E000C6A313BCFFF9465FF060CEC47A51F00B7A +:1019F00039BF263B5C3FCA0778DEEA5FF39A1F0EC9 +:101A0000148C8F9F101F99F8B54BC2EF048A4026A3 +:101A100031FE1B4ED3CF23F49FA8AFED880B7B9FE5 +:101A2000C09A7CC6778D9C3F1B4DFCB9389FF167EF +:101A300076FEFF5BFC79EABE18F4974F593D198991 +:101A4000FA3CCE7D51F89CE43909D80192A05501A9 +:101A5000FFC216808DFA5DB7E55B79BE22DB89791E +:101A60008C88AF96EFC8DC958AF9A8CF9C44037F99 +:101A7000A8110E33537CA42C2104F3013E27DBAFC5 +:101A8000BB95FB4B0AA52BD84B8F25C4E7780E4797 +:101A900077AF853C3E3FDE93AF4EA057E7D9065C5B +:101AA00013CBD918FDF915E56C59FEFF8E9C093E44 +:101AB00027E767E586FB3EA191CB5954FE83286753 +:101AC00082CFD7807FA59BBF2D9FF9556D9CCFC539 +:101AD00039B85356D5B213F29F27B27AF4DF997D05 +:101AE00087CBC5C4F8CDB719F4A0494E277E3F82F5 +:101AF000F9711D12DABD46476C202AF6ABBC7F6136 +:101B0000FC8DA1EB7ED745E5795C247003C0B596CA +:101B100058701F78AD231AEF21225DD60F86757C91 +:101B2000FAC454EDC17C90178DA8CE2494238CEF79 +:101B3000E99FD791844700593D701BCAC11C228D73 +:101B400000DF4BC349722B1D77D7376331EE9A33D1 +:101B5000BC16F1B00BF240B00F5D455D912471A44D +:101B600015E4C6CFE2990AC730BCEF803C43169516 +:101B700021C9D32103BFB9A48347E9FBF20BD47F6A +:101B8000A04094383CED2E0BBCE295A19F44583CFC +:101B90005B769AB5CF2783EDD4B490856404DB2FB0 +:101BA000AD0EB4039C53C979E719E0A9E49FADFFDA +:101BB000928674243AE1A2F015A8F0FF14CE1B041B +:101BC0003629A49D963F8CFAFE13A0C73704EC4E2D +:101BD0003BC8BBC2DAFF607538410E7364DF2FF378 +:101BE000295DBF2D7B939E477FC63F937D7FA0BC21 +:101BF000037E8E8506A75F52B82AA24BEB6F8265E3 +:101C0000F3E7887777A89FD00FE6FA0FB6B0BC400D +:101C1000FBBD8CCFDBDB58FD04E7EBFFE0F2F03BD4 +:101C20002E0FF46F33E02F2285E107294AF16FE789 +:101C3000F4B338FC0301885BFD945E4ED04E7D8882 +:101C4000FF7BEB76FAB660F7063C17260D78C9974E +:101C50005121BC98C7D1F2BE87E3D8E838F03DA344 +:101C6000C3D1A939281F45D6F7E17EDE05C651D27A +:101C700029FE9452065FB3EC3B9DCFF637B59B200F +:101C8000DF4F1108E3D9A95F28B9F5EFFDCDF4F9CD +:101C900018F87A22FAC83155439067A908DA55C86E +:101CA0009398E97416743ECCFB271BF3AF27A05B17 +:101CB000FC74468F8A0D570461DF71D1F98DB13004 +:101CC000EFE20D9541388756B5A11CCB8A47D93E26 +:101CD0004A855575C17750951BAEC2FEE51B9662CD +:101CE000BBB6A106CB451B6EC0E70B37AC08EACFED +:101CF000C155B9E8383ABD50114DE7D3E9F3F4E9DD +:101D00002AC2A1293586E70BCFD71BDEB356786FE1 +:101D100062E7687D97011E6C244D82BC8D1C5B8D33 +:101D200078D99A9AE206BC64F075694A26CB5F14AA +:101D300010F46FC47E0CA567FA74D80FE992DE0622 +:101D40003D634B09123CA7A30C4F86F53F2719EFC3 +:101D50008110E5B4E9221F3185C92DB9B0BDDE7B04 +:101D600075FC1B2E38F11278A8EEE5B9B45E1E7F23 +:101D7000838BF2CDFBFF945207DF43ED7D95A0D21C +:101D800079697AD94EF84E6B6F5DFC8F1369FF6BE2 +:101D9000F6BCFA032BD5037B574AD8FEEB19B49D4A +:101DA000C273459E6F36C03DEB652D1DFC89EB89E6 +:101DB00082DF852D2D5057EE51218FE91986FDDCEC +:101DC000BA357615F385E7291C65843C0680CAACD4 +:101DD000BEA80CF42CFFE3EDBBE1DF94BFB2BA6EFA +:101DE0007BEB7BA0F706650FA451D776B99F77D11F +:101DF000F1B29A8A9DF07A7617DFAFDC65C7FDCA2B +:101E0000B55D4CCF6613CF08ECDBF441FED50AF785 +:101E1000C6A9EDD110E716123C8F3BB5899D1B3A40 +:101E2000F3A8BD1BF2E6670036684F97300E3EB14F +:101E300091689B73C8B87A7D8EA8533980FB3016A1 +:101E400098DA85DE977CDF96EFD4E9F905BE644326 +:101E5000DDD3412A6D14DECC2682F793D8283FA02B +:101E60005FA63986DBC10E50DA68656C1B858F8FE3 +:101E70007661B1A8FBFC0ADC2F4212A89DF280BB60 +:101E8000164C71E0FD696EBCAF4ABE9C38C1AE66AF +:101E9000540F1CB0D2FEB3B472D4F7B389EF8541AE +:101EA0005ACED3F6627DAE23D80EA9390BE433E8BF +:101EB00078F3CF333DA311A702ED15C4A3F0FBE4E3 +:101EC00030EEA94A61F6BA9A74E2F32B491F964B99 +:101ED000C82096D790112CBDC489F7BA2D74503BF9 +:101EE00045F55CDB7437EA238B837D4F52526DEFEF +:101EF00086BC5EDD326ABF68BD7E80603E7F69B5AC +:101F00008AF7320ABEAD1DBD4F42C5EF3589A2A684 +:101F10005FA7B3FB471F5D8EF785A916E3F9EF7B3B +:101F2000B8DC3D389DE9FD9D12D747B7303A13C55F +:101F3000F7C84DB47EBD771ACA236D1FC0F6150EC3 +:101F40006CDF69F5B625D1FAF10F0B09EC0B1C001B +:101F5000BD90181AFF78CDCDA9900FEADE926B855F +:101F6000B2D627BEE708703803E9FAFCEF99D5141A +:101F70004E9E87D3E7777671393E309D607986AE85 +:101F800007E59FEF9F255D138FF9A5C5A45E8173BB +:101F9000BA3F9FCEF29241C95B85F0AE67F7170852 +:101FA000796A16FCA1046C69208F1E37AE4FC07F82 +:101FB0007D90E59FAF6FAE791EF69B9634AF27609C +:101FC000D742E7E5D8B989F21555B82F5ADF65270A +:101FD00090EF969A7DBF03795ED16057416EEA9B80 +:101FE0006A707E20349C2BAAF7ADC6EFCE573834EA +:101FF000279C83B8BCE11EA4F3E606CA8B949F63BA +:102000001A96B3FD476AD465BC4FD487EF27555065 +:102010005F86BE3F75C9F3123B871F2490E7ECCE65 +:1020200027B89F90A010DCFF89A74A09CED3AD68DE +:10203000DA7108E2ACC974A1B07FA5129F0DF03D22 +:102040009E9FF6E83DE7E3D13F07BF662AD287E5CA +:10205000A337C82AD80937CF2BBF7E90609EA4A390 +:10206000A13D807EE9123A195DF7D2CEE243802786 +:102070003A91B8077018F49CC37BB90AF0C156288E +:10208000EC77AD5558FEA698B03CD18D700E0795F3 +:1020900087319E716CB0E1BC6B1D2DCCAFA303DA10 +:1020A00053C7EA0FF33A24EFB709DFA71E9E04FADD +:1020B00021CF29C377F5E4F6D851F907BDAA151445 +:1020C000E27A3C47D87A660D6A32C1A37801C2E44D +:1020D000F86E662F227E26E9FD8C4A6760958BCECE +:1020E00073F460D3D6683ABFD5E579D3590AF24F75 +:1020F000FCC01F825F5F48EF4C07BBF79B54E65F55 +:102100002D3AFF548C3E6F1C3183F16709D871BAA8 +:10211000CE62B0CBD4FECE063B4ECB52B0E3B42C55 +:10212000B985D9F15960BF693F0FD86DFA3C82DBA0 +:102130006D07B7DBC556E724B0F3A5C73583FD2D82 +:1021400079B9DA609FC5FCB133549423CF41AFA174 +:10215000DD916DB4DF15DC7E1F2BF7AE349CFF9B49 +:10216000C1E4316E06D31BE4E540069E9B58C8E4EB +:10217000F1DD5708DE677AF61546F7809570FFC6E1 +:10218000483FD0E79CBEC30F51FA4ABB925FF88E1E +:102190004EFF93E901B483E3D14D9D9189F3977686 +:1021A000D5C8705861D615B3267F9700BF5D98DFFC +:1021B000C7A3EFE3795ADE0CC87710E70D2D10D7CF +:1021C000F8EC38CF62B9652BC4C99F503ADB9D63E8 +:1021D000C72B01E0285C2B0649302885EC2AEDEF5F +:1021E000813C56E909D913A0EBF534917690DBD404 +:1021F0000E66CF12BDB04713C27772BD03CE668E96 +:10220000D6537D4E437D72738AA17FBA5F35B44F3A +:10221000DD90676877073C867A56C75C43FF9C4E23 +:10222000CD509FD6556DE89F1FF41AEA337AEB0D17 +:10223000FD49403B5AA0B3F7857D3E437F108B0C90 +:10224000A0578A4CC0FF9EB9BFD9F8FE49EADF3AD1 +:10225000C0CBF3231E4B09AB633BD51394E55F78EA +:1022600014ECCF5CBB7380BE7F7D9335E40F13F01D +:10227000AB880C7459EA8B46F9F398FC6B731EE239 +:10228000E62381C320B725477C780EFBE619312E63 +:10229000E4039E97582C4723BD3E392E7B2026B958 +:1022A0001922135788AE9FC04040CFE74910F7CBA3 +:1022B0004DEB17790B226F67717FB34426D17EF601 +:1022C00014239D2354239DA3F28C748EF118E91CD2 +:1022D00037D748E778CD48E739C3D20B8FC27E2481 +:1022E000C513A17EEBA46A23DD059EE7D2FF85C35B +:1022F000B319AF1EB2FD8F203713E1F30113FE882F +:102300003C1FF5FE675E16EFD0BF658E329DBEA600 +:102310008A12F029BDCCEC8059FE05FE8ABDC9E4C5 +:102320005B17D203D1EBB7A6D276CF20D303B397F6 +:10233000B861BB8F0CAD9E3319E89A469E15DF211C +:10234000F9E0FC924EBE77CF80FDCC0D9EE100CC33 +:10235000DB65C7738BC70EDD79D8424BEDBC1BED37 +:102360005A4CC1E002F007F6CC88463DD72C7BF7EB +:10237000805E88DCC5F64FCF2CF0AF847E4392C5DB +:10238000B3C905FA82AD6BEDCBA3F1B1D14E99FD86 +:10239000E4C0EAAD0398EF607129DE18E7423FD947 +:1023A000837922937E29F699EC9A29FF213518FD2D +:1023B00068D268C457FB5C9F5BCA1AAB3FC7CF7F2C +:1023C0000CE3F34524D00EF6FDD26ACF1B77009EB6 +:1023D000AE7E7D32F87163F22021FC0E32FCF6E114 +:1023E000F703648984F835E375E992B7DB20AE8E94 +:1023F0009C32B800FC93A1513C6B43F0FEBE08E652 +:102400003F9C7894C545A5AF36217C4992EA01BF2F +:10241000695F3CE39B131219DE47EBB38FB3F825DA +:10242000ABD9ED0136DCE7F6BC00F513EB25BCEFCC +:10243000BC6C4893E1FC58B69FB6D3F94A36792B69 +:10244000E15E8EBA3BD9B98D5F7EB816CF9705BFD6 +:10245000CBDAF795FBF11CFD89EFB1F63927037252 +:102460002CADE707F8F85267652CD8B52D12F37735 +:10247000C6D097C53D8B047D767DFEC2774A43F476 +:10248000693CEB391C4B9F378D782F8B2363E925F3 +:10249000E28C850A8B23447C5145BC585E46FC582F +:1024A0005E6C7C91559087F8AD251EAC6B3CDE8848 +:1024B000AAD6CA9F043AF963498ECE7F1165678216 +:1024C000773DEC6FBA2ABD78DF4F5601F35B4225AA +:1024D000B3FF49095ABA87B61F17F78F3BBC12D210 +:1024E000EB568FCCF29E7E05E42D985E3C0BD69386 +:1024F0005CC0CEA1676DF7A37F7B0D75F3201E1D19 +:10250000F8A1120FE708F1CEB230F17928AF663AA0 +:1025100047A804F09C6C89ACCE802F561614B87670 +:1025200042BC0EBC01DFB9CFDC93715D603EF22985 +:10253000FA2913F53BCECF25EDE3F7502DF3BA2D55 +:10254000A057F6151BFDA0057CFDA2BC9CD4235F03 +:102550005D3E57F2B4533EB85C2103B06FF0B7AEA6 +:10256000AB64536015E0A7AEC74ED8792292A63F60 +:10257000CF2DF44C1D117FDE43C0676B79FEECDD7F +:10258000423FD2FBDDEE69076BE9F333355210F2BF +:102590005FD739A8479609F78AFB57B6E8F2DA6B96 +:1025A000BB5E1C92622FC26FFAE174F9CB1921B99C +:1025B0009717062C00E7D14724768F3D872B51C80B +:1025C00043850FF59DC4F55D72FD5E29451E3BBE3A +:1025D000D91E50B922603F32F8EA12AB930377E874 +:1025E000F55C5E5FDB1DD09FFBF722EF4BFF305E9B +:1025F000DE56C3F4599223C0E326763E36B5993DA4 +:102600004F272312F45789735322DC03051B2DB483 +:102610009CE2F0D72C51E1BCDB796647EE3D50AA35 +:10262000D773747901C80F52ADE9FF119DD7EA58ED +:10263000A2B5D0F9E89AFC60EB9B65DF1D0590CF51 +:102640001A94703D3153D87C51AE20D311A6FCA30F +:102650007DC317F81D81390F6957FC4F409D04EC6D +:102660004E3817FEC3A8EF63FB06C5E1B4E39759E4 +:10267000FE39C0F73F294810E797310F293B48B290 +:10268000DEAFB73A1DC97ABFBE78C069A8CF3A920B +:1026900062E83F7B5035B4CF19CA33B4CF1BF6186C +:1026A000EA979E9D6BE8BF604433D4179DAB36F428 +:1026B0002F2735867AA56385A1FF62E76A43FBE58C +:1026C00029B718DAAF506F33D489CFBB0AF88B58CB +:1026D00062F13B96317927937E5EF070B2A68F331C +:1026E00046F33A2936A4931DE8A2B79FF33C2A94F7 +:1026F0008B24AA7F69F9459EEF29A02FD5C3535893 +:10270000FE46DB0A47AA32B5B3BD409FA7020A01C5 +:1027100038EE8F6C6D5E0D7CBF29D62951BD727F5E +:10272000AEF8EE9B723DD52B4FCD7DF000D8B9A70A +:10273000F62BC818A1EFC259FBD648C2F231D31DFF +:10274000183FFD10367F4A21FE52F07CED87168F30 +:102750001BE65F6F19CC80F2268BDF06F0355A7CC2 +:102760001E287364DF2180F3A6F8AE0C888F8AE6FA +:102770007D120979D7A25F5924B0EB4F3DFB4EC7BC +:102780002574BC4F09190138FA073FE87D8C963350 +:102790008F60F299CC9CFBCE8357013E07AD985FCA +:1027A0007CDF46B613DDFD14EFDFC9CE45AD76C83C +:1027B0005E05E443F1A4C2F990AA22661FDE1E273B +:1027C0002F7B6356F99F01AEB753C3DF23708ADBBB +:1027D00017F1DD71669E27F98618FDFBD7E0FBA295 +:1027E0006E3D174F7C93F4EFABF8BE55A116301A2F +:1027F000DA5DD84E971980F557C27D89D4DEC4C5FD +:10280000E7298097F2E84F2D78AE12BC48DA3E22D5 +:10281000B173AD4461F70191F9CAC8A81F9C09EFD3 +:1028200033FF19F3FCB45FB9C3E83FCF24C6BA390C +:102830008F7F4911B31756D37D30971499E166F70E +:10284000C1E8EF35837B811B791E8FA468F87DD6A4 +:1028500003F35DC5E0578971E614F27BA2F8FD35FC +:102860003759D83D29E6759407CAEB217E6A204581 +:1028700025B08F37A390C125DE235C8FAFE472B300 +:10288000D279F84F601FB617B1F8DFE27026FD333A +:10289000E58F55815802FC736303892DA4FD7CF9F3 +:1028A000AEFFD468F9CED333D6FE98BEFACEBF4C75 +:1028B000BBF3115A4EB2F80F83DF4EEEE77E13A939 +:1028C000C27D74293019EDC9C5DAC57DD9AB7F5FEA +:1028D00008E7196383AA93C21939FD2C9EABCC86F5 +:1028E0003D98D9300FC70F19CED59F57DA975DFEA7 +:1028F000FBC24438BF4C061280CEBFB2B3FB7A8E07 +:10290000D09082D6BFF15C3EE611BB8A7CA7607C8A +:10291000F15D3C393882F7FF541215FDAA31F4E716 +:10292000FC63E603001CF867227EC06F8C285C8D78 +:10293000B1E1E98A7FC0B78E78FC9D92BA42261F2A +:1029400062DEAFCA9FAE2CA657049F4F041FC597E7 +:10295000E15CF4A942467F510A3C99BFCB3DC5F9E1 +:10296000F05421FB2EB7ABC88B78FD38FD8FB956DC +:102970000A43A3F83E6182F536F371FED6F55E2C6C +:102980001D2E2962FCD318797170DDF577D2E162D2 +:10299000E13A23F8A3E8E2E07AE0EFC49746467E06 +:1029A000179F35315C949E67809EA46A84DD8B946A +:1029B0007071F0FDE26B802FE1E2E07B0CE49D0C96 +:1029C00030F8AEA3F10FF89D61BE6F5A8CF1F51A85 +:1029D00096878FB4A918AF46D64A98B79348B6954C +:1029E000DD5FF1B77DE7344ABF2432100FFAEF39CB +:1029F0003BCB877A4672F579E167385EBA8AB4E7ED +:102A000000AF8DB95C1F541BFB3DC7F94EF413F7A3 +:102A1000F1D015F1EFDDB2F1BB658B83F0EFDD5442 +:102A2000BCAFFC30D7EFE6EFDD48A98AFEF9560BC4 +:102A3000F5CFC1AF4D68EEDD44EBB7A746E23E628D +:102A400063CA7F0C49201B1DD45FD7D149C0F3DE78 +:102A5000C623CE6CEBF8F85827EF2BF38739EF73CA +:102A6000439EEF37853A3BBEAEF72567B6CEEF2BD8 +:102A700024C3160C9AC88885E19F9FBB4AFE6AF85A +:102A80007F3A81E17F5FB617F5BFB017ADFFF68FD4 +:102A90002AE433C0EEC3BECD484C24DA83F6E97392 +:102AA000F3F4FB6B5F703D6735DD9F13B2D37FDFBF +:102AB000FD39213F46228149E1C657F0F993928AB8 +:102AC00079682A167E88071AA32F4C97818D03B543 +:102AD000F03DE6E68D7397427960A3B6F43475E471 +:102AE0005ECE2E2F2BC2F3D2EEAA76F4778807EEB5 +:102AF0005549F41EA9D5FBDDC9F583867AAA6FA8CE +:102B000056EF774F6E1E36B48BF3D356173B3F9D6F +:102B1000EE3F6BE8DF61B1E0FED7C86AE2EF2986DD +:102B20007CF588A1BD428B0EC4C741DEFA9C61DCF6 +:102B30006D6D8CBFB33AC852435CA36878EE3AA778 +:102B4000D3B1543FCEB42EA7A19E1F4C31BC37A3A6 +:102B50005735B417F6E519C775CE35B497F3F36258 +:102B6000958E72E373F2BC017E815738B7BF01EED8 +:102B70009950EEC53C2AEC1DCF2F197B4EFFE56C1A +:102B8000ADAC28712C9F07EE99CFF7E358BE40C833 +:102B9000673B974FC19FE3D17F669E560E707C992D +:102BA000CDEFBBCC737A30AE8E64E70AC5FD5C66B0 +:102BB000B9B995FBA5EFDBC2B77B47FD56E33D45B1 +:102BC000213E65F714BD5FC1DECF275AB27E1F7765 +:102BD00025F71B6365765FD744F7565ACF4519EE44 +:102BE000AD0CCD138BCFDFCF0C3F8F58C7C5CF2394 +:102BF0008FB31EDB05EF5DBA4BE02B217CFBB747A3 +:102C0000F1956A90EBBBC6F8F953B0DD6ABABF49DB +:102C10001FBF04308F7DE1F845A3E682E8F4E2D7D8 +:102C20001FB710A4DF57F5833532D80AF73D4D346E +:102C30007E7F911683FEC4DF686723C1A6A6E238B3 +:102C4000DDC0FF1A696966F10DBBBF9998E2199260 +:102C5000E7C2F37B91B1835BBAC1DEDF1EEB09787B +:102C6000681C631949043CAE26C35B202E7FEB57DA +:102C70001136C0F3C7BF7A117F8F3214B744C9B081 +:102C80007F78B1F0897C8FB84F85FA4DF520D73326 +:102C9000651A7F51518DB39C4F413975AA25B8FFF4 +:102CA000CFBF6BF98C7C900030CFE4E73FE3A842C4 +:102CB000995C82572192F90950B2FD9AB86795F74D +:102CC000F4F88D057CCC1BBB6FF3E9E07F45C23A7D +:102CD0005E2C32EEDF7C421AE206002FF02318A9A8 +:102CE000901FA8C0FB268B9EA94A867278638753E3 +:102CF000B186F669CCEBF58DA3378E733998A2684F +:102D0000C741DFF9C6B9D7E9375C3F142ADA6FB09B +:102D10001F1F0FFAD784C913AC9829CE2732BC8E57 +:102D20009787177920E9E1D72B0DFBCB3E9560DE25 +:102D3000E813B61FB555F263FE50777EB44B867329 +:102D40007C9691494C3F07D9F71C708109ADBF288B +:102D50000DE3FEC844E7073F8F60F74B3D9EE7FB5E +:102D6000EF22E677CD61E70559BECE76C0BB6A009B +:102D7000ED70ACA707F39F815CFDB9DDF31C7FDB31 +:102D8000F3B5F38097B78AB4BF4079342203CF8F6D +:102D9000A8C5C44326633D488AE07E80CBE3207FFC +:102DA000F429D1E29C61F0264AC8DB6CD6E99BB7D6 +:102DB000E3C3D3257A26A3CB953399FC9F9FA6C561 +:102DC000CCA4F39FB5B1DF33391BC9CB58962F4F35 +:102DD00019EDCFE02EE4F5B33C9F7E368118EEC1AD +:102DE00017FD66F2F2F4468777B3CE9F547F68F7FB +:102DF000435C9998C5BFD3D308FB6EFE19164F34B8 +:102E000075BE6D83EFE3E6CD2CBF12E0827E78FFC6 +:102E100086326C83731199D37C393367C3F7D244FC +:102E2000DB07EFABC336F8BD848FF939EF8FAD2CDC +:102E30004FF571042B053CF366D65C09EF7DBC6051 +:102E4000D806FC305A9F3D8C79B67933BD38DFC740 +:102E5000F34CF5AB595D25D4EEBAE0DC363FCF9F9D +:102E6000C7FC3762E1FB7E26BB6DBE3F519BF297EC +:102E7000B5C09FE3E92F8B63F0D08F5DF03B62EC30 +:102E8000DCAD6FFF1F0FDDA522FF9C817957072363 +:102E900008FB9D9FBF4F5F7D9C3E88EBD9563E92BD +:102EA000F1A352CC9B387B709EA387E1FBD8FB3CFF +:102EB000B9987F27CA20FA293192CAD6D76F5CDF2A +:102EC000F29922FE50D977A5A67B45CD7ECF254528 +:102ED000E277D9781E6E22F97EF6F517EED2CBF79F +:102EE000732F4D86F1E73FF7CA2428C3C8F7D02FC8 +:102EF000DD13CB772BE9B4B17D85E1CB60FC5B3D85 +:102F000036DC5FD9EC7CE7B21F97E277EB7EF89E68 +:102F100085EC37AEF716FD796009E21B6B68DF9D23 +:102F2000FED7420671DCF57DC6E763CE019BFC3718 +:102F3000339FFC27974B95B0EFBC9B09FB7DB86690 +:102F40004743521BDB4FF1DB61FF2B68844FDC836F +:102F500096237B3B80AF93123A5731BBA7DA58696F +:102F6000B4EFE29EB435D1CBD01EAEE930C3ADE1B3 +:102F7000B99B9B3A27580FE7AB3D00372D6F9DC992 +:102F8000F8617DE4922320DAA47410F7F3285CBB87 +:102F9000002EA27893209FF00789F9BFA2FF87B384 +:102FA000077F3620E1396B07EECF65FB7AA07FFA09 +:102FB000D0F01989C247A2BD38CE47FBFFF01AEC0A +:102FC00077921417BFC76E7827FC6E4EF37ED9C96F +:102FD000F21381AD70EFD0C7C58CAECD8EE801DCA9 +:102FE000FF0A9AE593C14DE17A2A1C5C221F6E9676 +:102FF000AB9DDC4E5D56A2F5C37BD6CC3EBC876F45 +:10300000E45B6C7F99E20DBF6FDEAC1009E83677A8 +:1030100078E49BF85D500AC17382E27E29E2D11CFC +:10302000E0E78ADF4578D359E1807B1292E22D7880 +:10303000DFCD666763BCFE779C93248B979D0B6DF9 +:103040008C877B4B56DAF9BDBC777EB18EEDB3A988 +:1030500009F0FDA42BCA87F7618CC4CB084FF98A0D +:103060004F67C1FD1569E7A34B609FE1A71CDF62B5 +:10307000DC459523B3FCD1217CB8B2F8FD6F89976C +:1030800075811D0CB6BB246921EC875463FD532563 +:10309000251EF0FA08C7039C1D66FB1C4127C4C50A +:1030A000AD11DA031500CFABEC77093F756A71F10A +:1030B0000563EFC94D6CEFC4FD929157AD98B714FD +:1030C000F7D20BB8DEE776E67FEB9E5B91176F8D4C +:1030D00057884B770FB558572BBF2FCB4C7FD1FE5E +:1030E000CBBFCA61F9C3E1E1F74B8C13977DC9D718 +:1030F000D50ABF43A08B235AA97D03385BE177082B +:103100007471CAFF006896913400800000000000CE +:103110001F8B080000000000000BED7D0B7854D5DC +:10312000B5F03E73CE3C924C92936408135E9E249D +:103130003CA2063849262121014F12C060830E8827 +:103140000A8238418400818C68DBF4F13713021164 +:10315000B9EA05B18A36B603172B6D6D8D962A55DF +:10316000A4830F8A7F9146A0142DF58F4F50908C29 +:1031700050A5DECBBDDCB5D63E2733E72431607BDE +:10318000FBF57EDF1FBE8F9D7DF63EFBECBDDE6B4B +:10319000EDB5772E5C809FAB18BBA0978F8C17186E +:1031A0002B666CE55FD3582823FEB9C29F4B5D0E9A +:1031B000D98DED1E6AFF2963351DF950EEB3D56C2C +:1031C000CD8FF537CA3CD5C6D820C6AE1824F9C372 +:1031D000D07E6584695BDCFDF7CB4C67818E3EDA7F +:1031E0008D79EDA8EA5AE087F6095398D6D7F78685 +:1031F000A9BCDF23E3198DB723BD6BB11FFA315989 +:10320000FB99E461ACFBD763B2D70BB1FECDE3F918 +:10321000774F4F6773701D2592B6E0551F638399F2 +:103220002C84B09C1FB1D5B9713C1B8DDB3E52FB89 +:10323000FE7828190BD17B83AAD9AD389F87937E5E +:10324000686330FE9A37466D750ABDE7BD46E0E318 +:10325000DF95AC0D4E87FED99731D6092593220E06 +:10326000D6C73A56FE5560E12F85BF44EDC63C18DF +:10327000D352844CC6EAF057E8FAF0A1710E07CC9D +:10328000E7231B8B3A0B189B2A0E9BF63CD6BD22DC +:1032900073AA503285B76B2C1A82F68FB665B409C3 +:1032A000B0DEC5752C28A631B6708DFDDDAE3C466E +:1032B0003F17E8FF0DE33E81FEF52189AD8772D10E +:1032C00031B52D191F8B0D0E5CF7678C45F1BD458F +:1032D000F7C27BAED87B1F1DBCDF1181718585EEE7 +:1032E000A0E0A5F94E7B1EEAB7EF74C8EB611E8B18 +:1032F0001F347FA79E49B1F7B3811E007CAC8CB10F +:10330000A66375E157E2C69DAB267B3EBC127E29C3 +:1033100061251744C69E6FDEC9DE1B85F3999F1A8F +:1033200000F84C0480201D0194A599C931389E6B8A +:103330000E845F817EEF88550115E03943827EF966 +:10334000B8FEDCC10BE3E86E7791407035EA1F37B9 +:10335000BBD84878EF54B34CE55DAA568FEFAF5118 +:10336000030D5832293AE2135857E36A0E9FEE379D +:103370004684590A3C9F03952CC69CE21DF50827FC +:10338000E75026B716E0BC8241AC67DA98BC1EE075 +:10339000268A778A29D90467C273D9078BD2701D10 +:1033A0009E9FDDF434C26B0D3601FCD6576A052EA4 +:1033B000786FFD4CB7DA0A53DC620BD1384C66F2F9 +:1033C000DD00A7F04FCB5E1A02D5911D1BAB86E244 +:1033D000E3AE084B017A58676B1153A0DFBAC94CB2 +:1033E0006D252886E93BA55DFEA7F1FD11B3DDAA99 +:1033F00008E3ADCFD60AE4B8F1151626BA3E0DF8AB +:103400005D0FF3FEC1CEDC5406F33AB36B0C95ECC2 +:103410003CC0A78431FC16CBEE4DC7A79AE1F998C2 +:10342000587DC58E2DB6A1B01E405D8728C79E1B56 +:10343000F369581DC99C07DF8BFE4452B7C253CFB6 +:103440006FA61730E89F2D2902C2719E203B582E8F +:103450009291C024A0F7B99C24D8DC5DCF7D1FFBDE +:10346000B597335904382C64EA08EC6773290CE9E2 +:10347000EFE68010C6F5C18252FC63619CEA8EE2E1 +:1034800020CE7FB93DED43A03F11E9EAAADEF38FDC +:10349000CD4F621F1A742AC6F8CEDAEF637BD7E2EB +:1034A000B7E07B5181A95B116E4274340DCE82610D +:1034B0009C5F771A4B477C3FAFCBA995A341DEA118 +:1034C0007C1A19C846FE5B695356613B3BEC6F4062 +:1034D000B8770B32F537E0C3E40DCFFE00E9CC2618 +:1034E000ABEB017EECA85660C37167E617A25C3BAC +:1034F0006DEF1A41F201E49E00ED873A6E9B2301C5 +:103500003C560EE9FA10EBFFD5119C23011C57E63F +:10351000742DB6417D54C13DBC7E45D787581FFFF1 +:10352000F4265E2FEC5A8CF8B9E6E92DFC7D602874 +:10353000068475D3D3DBE78460FC8FD340EEE1BC17 +:10354000D5AE0538CF95CF8FB1AD8FC37F750197BD +:10355000AB1F27F07E1F67B35B6721BCF3BA46CF72 +:103560008AE3C731055CAE1A74BFF4858488901273 +:103570007B8F79FB1EFF1D5D5F2CADD6FB49D15FB4 +:1035800062BF57BC4A3AD2293B013207E1F2EBCB8A +:10359000B7225C7EABA673390FF049CFEFFDBD6556 +:1035A00002F3A3BC386D07391D27074EAB5C0EB084 +:1035B0007C3EFECA21721AE223331DF0E3C371E49C +:1035C000B4BBB3B0DC42FD3CB91C3F1E512E684574 +:1035D000FCC8D122D43BAF9C1F5680F3EF6FBEC610 +:1035E000F7BED0BFB7B45587178C25225D3C7FF955 +:1035F0001603BF69F0FE353A7CAB0B62FD69DC61F6 +:1036000000DFB1317A31C61D689D4905FF987532DA +:103610001F7F0FE8BC00E9D75807632D34DF8F5BAD +:10362000F4F74A8D792844FF4B5FF8D6662EE7946D +:1036300074E46FC61EE0EFB98CEF02FDC377573418 +:1036400055B3F7402F8AA1030EE4F315EB3A1D0A98 +:103650008CB7A243D0C2EE783ED3EE8AE72B4F2E32 +:103660005FA747D43CADC47F304FE23F4D453D6539 +:10367000A5971E785BF9B6D7784ABA793C85C6EB30 +:103680000F0F15055C2EFCDDF0D0DA373C7BE489AA +:10369000057E3DFC97ADBF970FFCE7EBCD7FE37B4D +:1036A000F066E1DBECAFF8BD4AFEDE8A6F01FE8A10 +:1036B000504E9BE978C58E6CDBC2FC58FFFB6A0F4D +:1036C000FA51BED78B0AB527EDD8121A0ABF36EECB +:1036D000BA8305709CE77EFE6C08DE5FF6D4F75374 +:1036E00018C89B8FA40D992A3C6F787C6D8A06E5DB +:1036F0000929948272F2A3B05813EEC3FE7AC0E097 +:1037000007DDAE5AC94877B08F7FFA1F6DDF86F9A3 +:103710007F2E80BD03F05EB9E38BB66F037CF66A43 +:10372000AE28EAE71352D7B4EF407D699D3BD8023B +:10373000786EDC69B687963DF1FD4C850CA7D050BC +:103740001BD94391A1F8DECA6D763582F03A2CAAD6 +:10375000F019D6C8A26D383FEBFB8D1DEF91BD254A +:10376000835D37ACBC773B681EA2FBC61DFFF2A988 +:103770009882E5476FB171389E14B3B300EEF5FD42 +:10378000D8556B0AC0AE4A825F26B009A8E70CF88C +:10379000B0F020B2635A7FF2C42FC88E7C6B708168 +:1037A000131E9FDAF6BB1401DA4F75E4A6D691BD5D +:1037B000B5DA24777AE428DA01CEDEFA5ED929A0D8 +:1037C000B1CDD82E5E36D82329E5307EC316BB1A7C +:1037D00082C70D3FFFB71F3F8A74FFA6531DA56028 +:1037E000FDACC386ED821615C88E622942490C3F96 +:1037F000CB7FFEC134E487E55922AB05FC2CFBE509 +:1038000067BC3FD8B909D07FF9D3EF4CFB0ED60384 +:10381000EEA0AB0FFC5477EC7174B9FBC04FC73B03 +:10382000D3D04E6FFDC93982FF47BB053638BBF791 +:10383000FBF58F9F7420BF9C0244C869882FB1CECE +:1038400091DA179E22D7A25D07EDF27A65607C2D92 +:10385000C2B516135D13FCEBDF72AAB5F8BD5FDCD1 +:1038600099C200DFC7A520A7EFC7D6666A30FF7AE6 +:103870007B2853A6923FAFFFE1D789EE96BCF1F5C6 +:103880004C46FA4FCBB295D23AB3707DB7B7DF4012 +:10389000EB5BCC024477F58F897E94979F49ACE629 +:1038A000E93EF8C351C8E59493DD31EEDBDCFE67F9 +:1038B000EB613DC71DF00BD44307C5F0E302B66FC3 +:1038C0007D1BE5E3679D8304E477F10DBB0BE1739A +:1038D000D78B695B9C50FF93AEFFABDFF86C1AF29D +:1038E000D15DD952D029D3FA433ABC840B02958AD0 +:1038F0005482CFE12707C73DE3B805FAFF059E3F95 +:10390000AA9AFA13BC8E6F75260AE0031ECF64F5DF +:10391000645F317690219DF0B1627CCB9433B8FE28 +:10392000627D3D8DDB8F4F7B14F90BFC955480CF6E +:103930005F0EBFE71802FD421E1B1B85F3EAFC80E9 +:10394000EA4C1DA4A47A63F068DCE96491783EDD5A +:10395000F681854FCDED600F12DC1A59AA82FEC2A6 +:10396000714774DA0BF81DF8EEE332FA45D03FCE1A +:103970002F8AD18523F63C3BC66F86DFB344E76BC5 +:103980002BBEAC7C2E14EAFE93CEE7AC9DF377FF02 +:10399000F66F88E461833DFC63844F03F06388F82D +:1039A00091F3170379380AE8FDE4932F1FB919D66C +:1039B00071B2C3EEA9A5AF99E567FD33C09FD05F93 +:1039C000043F3441453C9C73A0FDEAAD063F15E63B +:1039D0007DD20D0FC7F6C197F0BC4FBE743315ED05 +:1039E000FB7F94DC5CD28FDCBCB2D02C373F63F918 +:1039F000A9F019D017CB2F437D6485AFE1875AE535 +:103A0000E2BE0285E06C958BF07384C5C171D9CF9D +:103A10003E2139F739C839D243DBBE20BD04608D61 +:103A20003A816E57863FA5FA5AD44B54DF335B1860 +:103A3000D7D7BACDF0B4B677EB72C7C0BF7D350B20 +:103A400025A37FF6A218DE0A53EB86B9B4A19DFD2B +:103A500064763804F059ABDBEDDD723405EDECB57E +:103A600069469DDD5A87FD42E3E410BE9FC0ED9E8E +:103A70006E7F34250DCA26DD5F5FE33A94F93ED8A8 +:103A80006F52C29F32DF2F8AC1654D328F9F747B88 +:103A9000797FE3B9EF37628A02F5AE30ABE92B6E7E +:103AA00004129BE6DDC578FB54F1FC2FBA601E675B +:103AB00042236D4E98C71957F4175D584A79E9218A +:103AC000B49F743BF4FDD0D5993027F601F31F293C +:103AD000479C87344716C0FF360E1A56FF5A6B0AAA +:103AE00003D12526FBF6BE00EF2F06C08B6AEFF848 +:103AF000C732E64F8D64F78E7380FE73A0BE5F02FF +:103B00007A08EDE0FA7673FBB25D2789FE9659E8F4 +:103B10002F8073C9EA4D7FDF31E8AF801520FD4D5E +:103B200015DDE4B777EF13C3188F3AE362645F9C47 +:103B3000013E014C82FF2E12DECE3C2984D16F67FC +:103B4000A14144D72B810FD0AE32E8D3EABFF7F2C0 +:103B5000EF7FF5E792EF40978667FF34EE07509EC0 +:103B60007AF6CDD12F60FDB93F8EF813EBDDBF7A29 +:103B7000F717E4CF75EF76329C57F7EEDF8E407D76 +:103B8000DCFDBC5345BAEE5EEDD4503F847627870A +:103B90004761FB708EF7D617CF8DEB2239BE86F0CA +:103BA000F3E34207E1F5CCAEFF785BC075ED722A16 +:103BB000B88EC6DD49E433353E9F1066F8FE8BE7CC +:103BC0004A027174F1B7AE67A583C727BB811E9FF8 +:103BD000C9277F5EC3F534BE50F66F2DE87FECD861 +:103BE000E3B80DDAAB7FF39FE3505E753FB3C78157 +:103BF000F20CFCB61F32A08FA70BA73D6207389FBF +:103C0000461B10FCE9194577CF0DE5F705170E8720 +:103C10006E8003AE0BE0528F76587FF0D887F02885 +:103C2000FE6784C7A7E43F34EC9AC0C4EC78B808B8 +:103C30001A7F9E1C7609B8FE5FA7605CA83B07F45C +:103C4000BF8AEB3E370EE34B03ADFBF83F2D1D5C07 +:103C5000E2BA6DEC92D6ED28FA67C537A7FF7B0B69 +:103C6000B91EB3F2416F3A7FEE1B54FF45B24AF3DF +:103C7000BD48FE1F5DF4BF1EEFE3867A2E1DEF5395 +:103C8000FF69D73D10DE5FD3F19E2CA3DDDFFDE29F +:103C90007F8EA0F55EE4BA17FD2F5D778FDD24FAE5 +:103CA0005D3930BF7B59A4538172AD6E8FAC05BFB7 +:103CB00002C75B374CD92A72DF84FC143D56CD36DF +:103CC0001671BF642D2BD4B6A05F0576C6E364A73A +:103CD000401DD6BD2E5011C478929371FAFACCE3F0 +:103CE000FE31C609256515F56701EEC7187579A27D +:103CF00053C67A6B0BCC07EAAD836C72ABD23F7CB8 +:103D000044CFFE3968374A6E87C97F715BFC90C427 +:103D1000910E93BF92C05E9225984F822AB130F9DE +:103D20008171EF23DE8A64824B220B8764F745C1E1 +:103D300089FCC675B201278DD6EF5446AE42FB69A9 +:103D4000570F9C563105E17498FB9F3DF064C68F78 +:103D50000E376F11A3F8B9A452DD7E5B03C1516227 +:103D6000E047F27598FC4E097FB399E15A45700C13 +:103D700052BDB5CC29B79ADFA775AE55AA18C2793E +:103D80002D6E0960BB627BC739EE7F0EAE0F225CE1 +:103D90008B7BC3D5287D2CBA00ED400F4B51D1EF62 +:103DA000F4B8863189E28AE037505C5166E8CF8901 +:103DB00055AC83E2767EE9548F3D9B43ED118C6FC9 +:103DC000B5DE91C2F71FF298E2A77856854CFE64E3 +:103DD00002DF1FD9F4A2DF8E741D00B615C011B228 +:103DE000CFB891EA33DC4C1360DC19CC6F6FF17003 +:103DF000F67E9CE2ABFECE45507FDDB7C98BF1105D +:103E0000BBA0ACA1F6E942F871F273D53D4950BFB1 +:103E10006175563ACE3BA396D93D589F95AD620841 +:103E2000F0008B1EBE1EF5C61C517D9C4F77F63EE2 +:103E3000C0DBF53AD66F4CBE6B6A12F4FBB088EF6C +:103E400003CC61FE1B9064AE6DF50771FFF6BA11ED +:103E5000D1916971718E8F8BB2A9DF0D92DF7E07D0 +:103E60003CBF01679ADE9B3F6EC0C1E1F90DB2DF36 +:103E70004EFB496C8A8CFB448276857821E9D2F727 +:103E800093C623BC605DCB6B9DE1D530BFE5AAFA3C +:103E9000E7E508B75AA70C3D5895AF6E38CAC5A9D3 +:103EA00062C5635F87F51E7CD289EE233BF9C8A10A +:103EB0006118E7567DDF9C86F2B480A96B658CE7BC +:103EC00008EAAB1EC46FB1A03E4E7065E43F2C699A +:103ED000AF3B80DFB9FE4941403D95EEE37118F1FB +:103EE0004981E469C666217C35FCDA32C949F2E9C8 +:103EF000E41681FC88EADAC05E8C9B6C2A75CA4E97 +:103F0000C29B96827ED1321DCEBFB7ABAF8DC4FEB1 +:103F10003FB7ABAB157C12A6FE4B416E21BD9CACEE +:103F20005DFD104E67844FA1EF65F8EA4A22F0EB81 +:103F3000F5B56F4828B7C1CF3A986F1A2F707F59DF +:103F4000DC782D939EA0F18E80DF8B71A2939B5B1A +:103F5000A7E136F862A60AE8B7C0BADABE0EFD9746 +:103F6000C2FCD02F9EC1D48D3EA41FB181F4C2F2F9 +:103F7000ED16FF578F9B64F82C71BC6DE6FA62E872 +:103F8000935488DF31FB63563F2CDFE78EC501C6B3 +:103F9000C4C66748AC7DC4650C3FAB47FEE9F8D9A1 +:103FA00059CAE3AEE3D3B5803F4E9FCDF3F1B8BB22 +:103FB00051EEDCF5F95BCB91EE7D4E1587D158DAE9 +:103FC00014DCBF9D5B5FE943B2AA7215BC82F57930 +:103FD00041A803FCA6FAEC04F75BE477A6A641FD32 +:103FE00056AFB017CB3A257B5A3A9473102F30EE68 +:103FF0006D79957B81AC59AD3AD311E07E7315D2C2 +:10400000C51958BB13F87767D7C161F17AD6282B49 +:1040100041094B71F2AADA95C0A438F84C95D34CFB +:10402000F5ABBD59A6FED3956C53FBD7F22E37B531 +:10403000D7AA05A6F6877D5C8F1CF09DBBF94E586C +:10404000E7815D0E19417800E1E289C1E540D9B907 +:104050002AA4E3D72FF7DB314FC198EF429F44EFFB +:104060002F241E41B6E47EFED21EFA6344FF9B66F7 +:104070000AE1D580EFD78B1FDEBB08FA9ED0FDFD8D +:10408000A9E2B1F977223F84ED2A58246C090BECA0 +:10409000D5A0DF2616DC8BF26876A52B8A718559B0 +:1040A0001807107AD355CBA4E3B5F47E9928231FC3 +:1040B0002F6E37B73F553CE655FCDE53A05F70FFCF +:1040C00076B6253F6216BB97E255B32CCFAD74D9B7 +:1040D000EC33C7FB9E1278DC2CF4072E2FFB935396 +:1040E000067D5AE9F0619DFE8C72AA989F8A7269DA +:1040F000BCC3DCCF28DF043B4C8271FED4ECA2F2BF +:10410000CFCD3295FFAFD94BE53BCD0A95EF35E7E3 +:1041100051F9B08FEFBF643401BEE3F260326AFD43 +:104120008E2FE3A7987C0DE9F2347A0CE19B714065 +:1041300054B72A31FE32F21632B02EC6DE9BD1F4CD +:1041400072604A1163BFD1BFCF166D7915F5234C4C +:1041500021940CEFB3863DAFE2FE554FFDAE77CC18 +:10416000EDDF15F69AEA6BB2CDF57B2BF7C6BFDF14 +:10417000DFFC336A157B00F4EAAC07F9BEA5B5DDB8 +:1041800098DFEB2DEA5CDA6FF3680AE6B93014F6D3 +:1041900059D86EEB333FC180CB5C9105D1AE9A51BB +:1041A000A5D6F9E3F4DE6B3E6E47BDA6EB0303CE66 +:1041B0004CD5148C8FF637DE9B4BC6DB31CE398B5A +:1041C000F17C9AD9BB58BA323ED6EFA83EEE9BA9F5 +:1041D00081A9481F0C6D07A4FBB963B6C4EF2B5A25 +:1041E000CB4D73EB86E7C07855FE0201E92B63D116 +:1041F0007576DCA73832F31D1B96E37360FE30DE64 +:10420000CD1794E133E3E0745A9FFFC1FBCCFBABC5 +:1042100046795C6F7FCBC6EAB1FDAD94C0F0B9A61C +:10422000F75DD47E5AD7534792F938E3C1C01341A2 +:104230000FCCC8E17063F900F7B131B81BDFED0FA7 +:104240004E3D74878F405F2DA8651ACAF99B2F6871 +:10425000C367C57DFFBC0EAFC36BB93F84F0AD8BA8 +:104260006B1F5FCCBF63C0DBFABDF1C5FC7D437F34 +:104270001F99C1C24E6E47B5A0DD300BF423EAE3AF +:10428000A9A29BE4C091C3A2EA2469C1F5F912FC7A +:1042900055C1A0B32AA0BD38ABCE1D0CA9A48F87F1 +:1042A00023BC97CC59528BF149A6CB2B17FC43FB6F +:1042B000B0202299E497552E650C20A73CC566FDD9 +:1042C0007910F3BAECB1799ED1E7D9DFBA0D79252F +:1042D000837C96808F738A399FBC236A238A915F7F +:1042E000EC1C9EE3ED2C21DEDECB29E6FC32BED2B7 +:1042F00046FB5EBF9F746E16D2E7AAE9B936F43763 +:104300000ED69C4DC7FD67032F3D7CDAD41A1819D1 +:1043100017A7DE34DD3907F1A9302D19E9E2A0BF76 +:1043200028A1D21DC3D726FFD9741627BF60195FF5 +:10433000CA57172BE70E74D9C85E3830F933D273D9 +:1043400027F2641BEE8F4AFA7E85569C46FD4E94FA +:10435000BEE7C6FDDA9D5DEFBA915FE7B2B01DE53D +:10436000DF3C16B1233DDEC2BAA87E2B03C742C490 +:104370007C4285CADB984671E1DB599409B9686FC4 +:10438000338A5FEEFFD5B647317E394E8FDF8FC758 +:1043900054B3383B39A4AFBBD0A75D8BF01F9FDE71 +:1043A000790CF562C6643B4379AC017D613ED0EB8C +:1043B000C5131216F681CF33450B6F2A8E936319FE +:1043C000B50107F67B4ACFA74400229EEC69795BD2 +:1043D000E3E5C8029DFE7F57A4DD82EFEF2FE6FAEA +:1043E0007D7C3A9717E0EED8C8CECD536CEBE3EC6A +:1043F00081269D5E7AF8C81170209F2F568394778E +:1044000059D55E90D0D5873C39531468B0CE93DB34 +:104410004D5C2FF6873F43BF5DAA7E34F460BB4FEF +:10442000FB167E57B2F13C32297D8E17E1C3E4D9E9 +:1044300084F750B1F0A5F2685CE97BF716A1ED5363 +:104440006BA3FDF5713B953FA39FB5293457163DEE +:10445000B1FEE36ADFDD3FD287FD4559807E9B6A6E +:104460002624A0FCDDE40E8D40F89C10D404DC6F03 +:104470000A3D2ECADCFF8ACE473A5C529B9983786C +:10448000B96E5271A706F5E3B5D9856897EED6E106 +:10449000FC11E37A20E4E77EDE89E9778FC0715E64 +:1044A0002F1E5C88DFB96EBA93F8FEF8E15CCC8C05 +:1044B00062477C4B6EB813DFD1EDB49B7439757CC9 +:1044C000DB9D64271DF7E6926E017941E3BE5EC372 +:1044D000FD96D799F62AFA11B3747BECC6F9563BD0 +:1044E0008CCBC9E32827A1FFF57E737B46FBF163E4 +:1044F00048E4BDE519B7BF06926B4F159BED2FAB96 +:104500003CFBC8CDE31CB376B14703A96037D76441 +:10451000DB3F44BFA44920FA30E4DAAC5A750FDA25 +:104520000FB36AEA8A5CB0EED4F00401FDBEEA5A29 +:10453000656A128C37A34628C1F10CBCCDA8B9839B +:10454000E25033DAEF70E0FEFFEF8AFC11A417FBB4 +:10455000E3D50AEEA32F692F780DDF1B1B4A207CC1 +:104560005F37E38C0DE1BF6907D8D12ADAB56392D2 +:1045700011CF07B79DF5C4E729C7F8628303FDCCC7 +:10458000AA6D9F0E41BE30E4020B6D7B34427ADE91 +:10459000C3ED2DE6F77EA99CD3FB0D24E742552CF5 +:1045A0002F487CB57F04F923C3C01F0139776DE91B +:1045B0009E1188FF456B18ED879E1AFEA174008638 +:1045C0008C54BB82B8FF89F5713E4A1DA03C9D53B7 +:1045D000597F6DC77DBFD656B0FF8761FBE7545F3B +:1045E00023B964EC3F29CA4C7EC7557F7599FC8E70 +:1045F0004A66F6631ABADEDD81EFCBAB9D72EA3014 +:10460000F47BCC7ECD4E47A46D3F7C3FFA7DC6B691 +:10461000227DCAD9163FE8728B1F5460AA7F2DAF46 +:10462000CCD47F268B4A940FA7B0E0BF02DC1A9847 +:104630006C2739A8C9D110D467A895A6FED7954E86 +:10464000378D57B43F42FBE119F0BE08F09BE9F209 +:104650009BD7D3F439D15D79D379D2A305910E5389 +:104660007BD1BE9DA6F1D44EB91ACDCFC2A3EACB61 +:10467000589E4BB8D6DB02F351041664938115BBE8 +:10468000FCD5980E5D7222F83296A1AAE01308AF0D +:1046900010C0ABD583F9F3DFFB11EECB3601FC3153 +:1046A000AEF04D91ADC578EE395BA01EF58E6C5322 +:1046B0001EAB83FA47823FB30EF86B941818525220 +:1046C0008C69661BAA815DD8C4BF76BC8CE58ECE92 +:1046D0008A75137D080FC0338CDBE0B691FD3C5525 +:1046E000DC350EF350CE3C9954149F9F7FF21B464D +:1046F0009EA9E6ADC3389D676421C69FFCD5C91A43 +:10470000E65DAE78760CC51BCF95565E513208F744 +:104710007BA7B8B8FF21457BE20039D8AE2DC37323 +:1047200001072B459EFF32D54EF22CD11696F5E0AF +:1047300023E929C7D576B2777F56C2E5F2C1D70003 +:104740004430F18369DCBE2CE9CCB1C7F3D92CDD50 +:104750003EAC2AD1F3ED301009E3CC1C74F8498C3F +:10476000F3FEAC2499C629A9555EB5233DC8928CA9 +:10477000FE6EC651BF3C16C6DBE1F1ED41FF63C7DB +:10478000D1CE498282FD15EA3FB8A6F2CE4A94FB0B +:104790007912C3FE3BE42949D83F63BE6A4BC4711A +:1047A000F6D9C3A3609EAB26F1FD985595AE9F63E5 +:1047B000BC3DE328E379944C5B4EF473AD43C1797F +:1047C0003049CDBE05F8FB03D0638AB37F3EFEE0DF +:1047D000C14183505ECDAC9407615ED2CC47442E7C +:1047E0002F28A31BC6B3314ADE078AFBD31468DF28 +:1047F000DE53671106F0961DCCE8CF12A03E53E8B9 +:10480000E93F6F0ADA1F393DED21E4E34D82512F74 +:10481000A4F60CCB78C6F88B4A0AFEB4CE8DF09184 +:10482000F538803C08E39A19B6CE71487F2B6C9D11 +:10483000944F7EBB4D198DE5ADB981E5487F979DBD +:104840004F8D207CFE52EB08231C2E3B7FDD6094B5 +:1048500073A0F77FBC19E96D8A9DE4FB0E47E74A18 +:10486000CC13880E4AA4BC76FB734B83DF0154DC67 +:10487000FED0F4AF911FF4862D5D14FA875B86CCD1 +:10488000F9D1B0273EB1F5AC5303D39B7D22C4EAE6 +:10489000C8972B62EBD446BA28EFA567DD2EA82F68 +:1048A00034EA21FFBCF761DDCAA2ED79180F3CCBD9 +:1048B000DC418CAF9ECDBBF946C4EFD907ED98DB48 +:1048C000C376E09B48D7DE441E57F7F8F3D0DF3CB1 +:1048D000D0C9EDCE0EC0BB060BCD0D75B9C7FAF031 +:1048E0007D297D3D743B5B31B81AD777F6BB8822B2 +:1048F000586F978329204F76E42D6AADF2205D2A08 +:10490000E9A8BF8D751EC571C0EE7796690F9650E8 +:10491000DCDA88A77EFBD2E2A95294F2F01CB92C13 +:104920008879C78DA52DF9A8BF9DA50AF151E3147B +:1049300081E2F08D4D7F21F9D6D07496E0CBA48032 +:104940008A783FA5E7216FB0B35B6742D9F05FE299 +:10495000ADE85F825C59271462F99263551C9FB2DF +:104960008E4F7BE4231E151AC8EE4B0CD4D277670A +:104970000AF20D68AF744F78681EE6D9CF4C906F7D +:10498000C038CF0BCFB5F0FA70F906CCCBFFE3B34C +:104990006FCFC3BCFC9959F2F76D201FFFFADC39C9 +:1049A000DE9E2DFF01EBD167F57AB281D74FE74547 +:1049B000284EECA6FDAA333509E4FFF5379FEB9BA3 +:1049C0005E30C5597AB58B02979373B8FCF9647A57 +:1049D00016C93123FF79854DA6FCE703BA5C8BE548 +:1049E0003F3319F39F578CEE5C9082E736983A1567 +:1049F000F3BF1A026EDA3FB8BE69377DF7A04D19D2 +:104A00008E7232B13CF007E4ABD3C99DC467876AAC +:104A10000F65A2BC0D95CABA9D101D89F899CB02ED +:104A2000E4A7CCD5E3B136901EB85F33DB3DD28E20 +:104A3000FB34B3E798EDB7EB5984FC9859B5D6FC35 +:104A4000A7B878AE48DF5D0034C3EC3A3C56A467A3 +:104A50008FD2E77502E9F1A0A08CC5BADDD399C960 +:104A6000EDFB2715D22B792EDACF4EBCE2E8B84009 +:104A70001F78EF6806FD09ACF40CF8B358CEC3DC20 +:104A80004B94C3529743857156EA7275AAD8202277 +:104A9000FF9CD999CDE2ED38DB046E2FA7EEE4F14F +:104AA000204F2EC0DD83F08D7C97F2CBF339BC57BD +:104AB000D822C3100FB609C9D4DFC02BC04DCFC355 +:104AC0008776E087ABAA010FD0FFAADBF6ABAD710A +:104AD0007808E9F3DA91C8F93DFAAB84F0D6ECDE58 +:104AE000F3F44EE078B6CEF74AFDF9C5CEF3CA0925 +:104AF0005C7FF537CF2B27707DD5DF7C0DBE35E091 +:104B000064F02DD3E5D5DC39D974FEC3A8CFAACD86 +:104B1000263FD198676FFAD9A6F4453F03D18DD3CC +:104B2000A04F5D7E187034E667C8831DFA79C9D836 +:104B3000FCD2B698E797467C95DAF46B920F62B296 +:104B400044CF67E779B7E03E4D6AE719B2DB52150B +:104B50007607CAD3AB27E470BAE8F8A22DC387CF93 +:104B6000ED02E619A536EDA2F77BADEF92D7D5B7EA +:104B7000BC9C048280E41DCA6401EDE380C91EACC4 +:104B8000644B4DF662B5EB0ECB3EC0B74CFDAFF6B5 +:104B9000B698DAA72BF758ECDF8DA6FA0CF5118B37 +:104BA0007DBBC5D43ED3B5DD54AFE8EA24FBF3406A +:104BB000730DF9CF934F44C90E8DE87EF64BBA9F23 +:104BC000FD0AFAD9C09F7BD1CF86725FB34ACFFF6F +:104BD0006F732995FB9B352A3B9BFD545AF9DAD715 +:104BE000D9E5C37CB6524F2AF92165C5814D1330F2 +:104BF000B5EE7074243A1F138F76907DBC764F9972 +:104C0000CD81F187FD623841403D3921B5AF73A0B8 +:104C10004699FA5791697171A6D4DA28C33CEF54CA +:104C20003DEE32D3FDFE143A1FD2240BA9A0079CFF +:104C300092CA7C501F1190EF08417DF3046E3FFA39 +:104C4000B516F2136E84AEB80F32C7057610CC7766 +:104C50004EBD106EA5F86088DAE7016C91FF9ED911 +:104C6000B79AEA73DD2C22D2390EE67765EAFB9E0D +:104C70008867CFF5AF127D06998AFD8F66B67DDD18 +:104C800045FBC4BADE0EBD65BB70E5C5EBEDCD13CB +:104C900038DFAC15548A1784D224DA9FB0EAD3C621 +:104CA000093CAE746D2BD7F3D16C16DC0AF3BB0E46 +:104CB000F52AF0DB4C19E081766C93624378187C1E +:104CC00058DA156DCB80E73EC54EFB370DECD36946 +:104CD00018626BD0F2A2B87F5FFC7EA015E9C2F02B +:104CE0007F0C7A07FFE1E5149473C718EDF3244EA7 +:104CF000BE47447FA3EC2FE1562CAF3ADF21A2DC64 +:104D00001FC84F32E6BFAB790ED1CBEEE6009591CE +:104D1000E67A9D0E83547FA5B989EA7B9B4354EEC6 +:104D20006B5EA7D3E1066ADFDFBC99EA079AC33A54 +:104D30003D6EA7E74E5DEEEC9EA0DBB1AE4A8A2F3A +:104D40003289973657C88A7F168FFFC474DE9E0853 +:104D5000F23F5410470F807F94D70D5E5D4E0F4495 +:104D600007E9EBBEEEB0E1B9904D76F297BE223D79 +:104D7000CC7683019AD35B8EDDC8148A575AE51925 +:104D8000D8172AD2FDF50CECBEB44B90DB2CA862F0 +:104D900008C27119D825D95FC5BE0804713E037FCA +:104DA0008FE3C796343F847A11EC743A376D4F3BEA +:104DB000B240CC89F997BDE062F13797E9E7DB2F84 +:104DC000759E001F3BD2C140F37CA754934A8B636E +:104DD000F0494CE7749238C44D79DE0E6738BC1A3E +:104DE000E5CD0B093CDFC2ED1F117FCE3AB994CB64 +:104DF0009B67466AC9A5B43F787ECF05B4433BEDB7 +:104E0000145F5BF9FC9B17652735CA674DF6798FF0 +:104E10009E176CA4E71B6D2C807959854EE61260B5 +:104E20008E5B4AAB86F2EF55746AC8AFB2A4C6DB9C +:104E300051D6B2B1E9531ABFDF761BCFFF6A7CB1FE +:104E4000588E3F1F3EAF54DF1F0447F143570C6E8F +:104E5000174BD793A2734C72E29F4E7F6A3F31B5D6 +:104E600033D6E543FCDFECE17AE1BAC074C2C75C3B +:104E7000D6417C389F7552B98045A90C307E4E7B57 +:104E80002153A95CC4FC54FEAE283013F12339FC35 +:104E9000141739C0A28B5E007AFA6472995CC97AE1 +:104EA000CBC58B958386FC33E4619B433FF7D313DB +:104EB000D7F114605CC7C0C76DA5E67D3A2B7F753E +:104EC000172834DFEE5F95DBDCF07EF7EB625820CD +:104ED0003B4DD94BF94F850EF25F8AE62B6DB83FFB +:104EE00086026414E6C3ACB39F8A1FE76CC54DA469 +:104EF00097CF62541AE5A9A4E6DD1217076DD5F71E +:104F00001FB74389E7AC52E677494A1C9DFD1F7DD8 +:104F10009E9573A730D47FD27C0D93C4588ACCE37E +:104F200042535DCC9700FE283B7F361FC7BD56B766 +:104F300013D6DB5904F9617069818076C5FE91DA78 +:104F4000F7909F437757A4511C1A63AD97219F8018 +:104F50001C423EC1FC2F92430F91BCBD9169AF62D0 +:104F60001EC34A5521F9723DE3F0B0C26965C51709 +:104F7000C4D72B81AF113E56FE5DB873CF513CAF05 +:104F8000F9B7DAA10B5DEE8838AE377C615D8FF43E +:104F9000B52E235EBC827591DF779F663E2FEA6453 +:104FA0001DDA5094433BB73094B78522CF9F8C4E87 +:104FB000E7FE8E957F7FAECBB3065D1EB080528438 +:104FC000F2BB5B500AD7F37388DC7EDF7D39F917BB +:104FD000AF961AE7DA437A7E44C5DA1F7038D3F900 +:104FE000B653FA3919EB777E5D9AC6FD21D75F4C2F +:104FF000F26E65D3172639B5329FE3BFB05529C28B +:10500000FCB43BF57DBEEDAA7F17F2D7B28E8DCFF3 +:10501000EE57F0BBEDDFC0FB08CEEC7393DDC2F6BC +:105020000F2218750BE67DF1EB5D9FEA7A7D8B69A7 +:10503000FFEBD08C3F929C46BF1DCFA71D14189D3F +:105040005731E677D0D6F9E10FB263F219FCE7B732 +:10505000BF938DF239FB5FF2119EBFB253BCAB011F +:10506000E79F817EB4FF8D528AAFF13CDA83D3AFE4 +:1050700024FFCCB0EFBA3FEA7BBFDE989FF11D63FF +:105080005EA704C104C7B775B80F2DE5F6CF217B25 +:10509000E769FCCE27CF5E296080B1E7795AE7B88F +:1050A00034770C3F03D94556BBB8D2D34AF5D90360 +:1050B000D84520495FC57E475771BB68CE920D76B3 +:1050C0003A4FF415ED2163BEADC92CECC0BAC6143D +:1050D00039934274B40F66DC8B3149AF0BEE232F4A +:1050E00007601DED77A6A8A2175358F9BE588597FB +:1050F000C72B9D389E88699B612F96A22D9A81E5CA +:1051000054169078DC3A4CF0FAADD0D54AE78434A6 +:10511000D58BFEED5A4F15C53D4E307710E3E43781 +:10512000A4D54C82CFB2B98BA707902F66B7A6D073 +:105130007E92E450A53D68275CC3F7F7C09F207BB3 +:10514000FD0F1ADF7730E065E4694A69A169E4C7B9 +:10515000DC0C28198AFB142AE58DDE087625F6FF7B +:10516000A3141C949F8DFB650F8E1300D54BC57047 +:10517000CA5858C7C7077F5AF23ABC7692451C6E88 +:10518000685FF10AF0BD0DCFEF5DEAFE7680EA4B75 +:10519000D886C7F6C0B86F663EFAF53D2C0687394B +:1051A000DA8F3E58C4508E7464560AB1FDA8730954 +:1051B0000B32F77862FB1D03ED6F8C12038565C51A +:1051C000B8CFB16101C955161C4F763A8B8EC073AA +:1051D00072E530149EA7ED1EC4E930F42923F8755A +:1051E000DB55B26B429F296477F9AA6D844F7641F3 +:1051F000A1B86CB9BE0F69C859DF953CBF9CFD874B +:1052000042EF4F8A9AF3337CE36DC167DC687F48D5 +:105210005F2A7F5F2AE37CE5CBB005E3E317ADDED1 +:105220004C1E07D4EB4E45A67846BDD19F454F6333 +:105230003EF64A8C2BFBA8D76C5709AD8FE8B37CA0 +:10524000D7C936DC076D17811EE83C7247358E538F +:10525000817E848A71DFA0C6FD38C6709F8BED34D5 +:10526000CB7F235F3941631DC85FEB854E11E13968 +:1052700019CC6A2C35264B58563195CA29CC4FE5A6 +:105280003416A4B2866DA0F21AD641652DEBE4FD6A +:10529000BD49213C973A91B9C2746E39F7654EFF0A +:1052A000ECBB32E5A74C5F62C378B4EF269E47356E +:1052B000103CD6EBF0F0223C7C5F1D1EB85EDCFF9C +:1052C0009D86F7F1A4FDFDE071350B11BF4F6761BD +:1052D0002ABFC62212A74BE515CCC39E718291BC92 +:1052E000605744080EA55D0189EB050B3CAA397D8A +:1052F00058E5D8A6323DBF0663D350B60941CA7FF0 +:105300007AAE4CA1BA0BEF91A0EF85699FD868B730 +:105310003EF725559D5540843F51F6FBF918EFF6B1 +:105320001555DD990BF58EB223F3313EEE2BAFFA16 +:10533000650ED49FF9F551DE3EBEAAC80E706B69AA +:105340007973FE94F87B9832785CDAE554D5421F85 +:105350006DAB055BA0FFDD0E7E2F930300D9921588 +:105360009BDF889AC84B7694AF1EA508E55F99EA43 +:10537000FF29F2AFA804EB91FF7E20F37B9C9E2BCC +:10538000D3FD494F7611CEF721D5FF8BB241787E00 +:10539000C415C28081D1BE5DB7FB9EC31CA0E2FED6 +:1053A000CBAE32ED57F8BEF5B92DE9FC829530CF82 +:1053B0004694D950BE5616D885FD1A6D5D238AE0F5 +:1053C000D9EAA4B71D841F4DA6FCFE56835EEA8170 +:1053D0003E90EE5EE2F4D193B78F7613C0D9E70F1B +:1053E000B462CAEB84F9D1114D0A8DFB5B1A578C5C +:1053F0002E46BA389D76C8F101D1F7308E775D3EE2 +:1054000034EEFEE234DE97F6A20DE896DBC37E169C +:1054100047D78DBB1324A4EBC68F5938291BE9FC51 +:1054200027AD684797019DE33EDD8A1D4FBF8CF68F +:10543000C52ED45378CEFE372FBE8CFB04155F4BA0 +:10544000A038CDA443C772D12EBDEA58572BC6CF82 +:10545000BA5FFCE3504E7FC6FED039E1ABE8D1A97C +:10546000E277EF47B9BCAA4562781E789510E475DB +:10547000BB4BE6E7813BDBE6239C355794CE3BE80C +:10548000F971F5FABA609CBD65D0FF133DBF1DD41C +:105490000DC95105FE113F8AE7E99CEF6701D093E2 +:1054A000D03EE1A855CE46F7625E4A837E1FDA8A77 +:1054B0000ECBB9F501F2CDFFBD4CCF2B19CE867FB7 +:1054C000C57BD084898362F7A019E786573D96BBD8 +:1054D00015F78B563D76A72A233C86E71722DF1B5C +:1054E000F7A2B1887C05F67B4AE0FB6BECF0870CF9 +:1054F000CFA72FD1E7B6749D40FB7C62AEC84AC1EE +:105500000F19FFE3C1CBBE4D74019E8B17EB13E661 +:105510006CF790DD12641574EE81ECB8A7D2A23955 +:10552000346E9AC24240AFAD09D11C9467A1175D99 +:105530002A9D0369CF205ACD0DA99B51BFAE6AF1B8 +:1055400008B85F396E22972FD9874B37D3F96ED0C1 +:10555000B3888F55C9A307B33EEC49A3F4E13CE3FC +:10556000ECEC3D6FDC988476E8AF247F12E67B9DFF +:10557000399CF3A571D9E20800FD4BE207BEC3F7E1 +:1055800076627E906FB344F030E8EEF966ADCFBC42 +:10559000468585ABF15EBE55B7833C81FAAAD7FE3E +:1055A000AD15EF7B5B750F65CC821D312E15E1B318 +:1055B000E33591F69B4AD8F6D60AA817037D868173 +:1055C0007E9E671D22F2A9D36B634A1C9D24288905 +:1055D0004C89F3EF93F2D24DF5647588A97F6A691F +:1055E0008EA9DD389761D89569DA15A6FE1358A7FC +:1055F000B802D6510A7C10819966D4149ADAD95F20 +:1056000038DD97C23FAEA738FE9C21A78C7A70E2A6 +:1056100029335F947605E9DEB6049D6F120E4BA622 +:10562000F3F14EF787C7F07E3DE70079570B26EA86 +:10563000E7E287B1617DE55D3D9C9462E3F0E47152 +:10564000A91236F2E10A682FDE67676185FC35A68C +:10565000E71985D17F889DD708B762BF72940B0088 +:10566000F7417E33BC07CF31C33B2B6086F7D07A3E +:1056700033BC8707CDF0BEACC90CDFEC90199EB9E6 +:10568000EB269AFA8FDA5065AA8FD97C8DA9FFE5AF +:10569000E159A6FA95DB6F36F51FDBB1D0D43E7E1B +:1056A000E73233FE41AC231C9EEF62ECD1ECDEF41A +:1056B00050105965EE2F1E1357A0DCD3CF4914EDBF +:1056C000FB769FF410827F480F56FCB7267C8FF044 +:1056D000DF55E70E0A13891E2201A407FD5C4F2F38 +:1056E0007A18800E7E345197933A1D18F2B13FBE5E +:1056F00035F0FCAFA86F494FB8D7E61B7112588F31 +:10570000DFED7D15ED70B9CA45F76D3C9C3482FC28 +:10571000147F2EF8F705E80F8CB3A3DC525A8428C7 +:105720005D8E68F1D30477D31328A7DA5B613DC39C +:1057300030DE663E37737D8DF9DCCC40FB0AC59DBB +:105740001153BDE03013514F16BFAFB426C3F78AD3 +:105750008EF13C29AB7FE8EBE2FB1DE5A73A5FC683 +:105760007B392604B9FE2D8D1AFB1AC11F219F9685 +:10577000833C453C32FF496412E690F9FBC03F7917 +:10578000688F36B14415F9E79B22F74BCFD902E475 +:105790004F5AFDCBD64A3FD997607F0F43BBEE7B74 +:1057A000E30387270EE293417C8B6718D9DB935D77 +:1057B000E087628E0AEB60686F751B793EA1C65B5D +:1057C000F0FEAE6EB4658630B6B9B5E19610E5630D +:1057D00031B9AB04E38EFCE7E4C4C0DB13C14E7AFD +:1057E00057E0F1C83AEDBD113B60BE5DBAFD3978B6 +:1057F0007E07DD13B67FA4F6CEC44103E76B18F134 +:105800002C23BEB5A339426552BE2A527E8225FEA4 +:10581000D46593A714A0DE5AC5FDDE9338A932FAE9 +:105820004E0AC91317EB74C6EDA7DDA2E3C3E6EA7F +:105830005C8BFB870B743C2C1454F247977B4F51C5 +:105840007CC1290AB4AFE74CCDDFCAE312461C6124 +:10585000A87829F6CF40EB5DEEFDC8147F624F6655 +:105860005C547E66DC3A7F7817E717BA6FF6DDE99D +:1058700043AB505EF7FECE698A6BDD127CC344DF1A +:10588000B736BD69A2E7BAD03BA6F62E4FD48EF14B +:105890003BC0F3B0F262CCD34BB8FF4194178902FE +:1058A000C99BBA1DF66FE0B9EE81D77992BE7FAC85 +:1058B000B993F069ACF3EDE6A354EF6AEEA2D2BA65 +:1058C0004EC3EF374AC74B41F2EFA36047E2BD9F9B +:1058D00003F9FFBF2ECF213BFE9BA2FF6D1E678900 +:1058E0000CC7FCD5736D4CE07E5E7401F2C37C2165 +:1058F0004545FDD896B5F7CF1817F8832D95D6C72F +:10590000EA237FC6B876231809D45F8B3C867E5A7B +:10591000774A0AD5E78D0F68081796AFF7CBB071B5 +:10592000FBD413198E72EA34AC01FD81F363FCD50C +:10593000D48FC901A4CBFA74F033E1F9095B681C78 +:10594000E6217DAFFC37B7A01F752231741A2D9068 +:105950006FBCF03CAF3B383FB6BDB08DF8EF0F36B3 +:1059600091FC8CD0F302CF0F737739F0FC43CE98C3 +:10597000C075383EE65151DE3D3CC77BFD8CF86377 +:10598000B77E1EA33B81973796F3BC8C9BCAB99D0B +:105990006994417424E0799B5E4E15EF1D4DF7002C +:1059A000D43A19DAA9F07D8DECC4DD4EE2B7D87D8A +:1059B000894CC6FB123DB9CA59E42B8FC8287F64B5 +:1059C000697936CF8FD1E398E800E2FDB8B39E75D0 +:1059D00092BFDE33DFC33C6FF393E93CAECB30F8CC +:1059E000E38BE53F2D2DE77EFD8AD7DE7D1BE55558 +:1059F00062796045795C9ED08A943D14576A2E572F +:105A0000E87B304FF2FB9C225B83F1F9152E1EA739 +:105A10001A283EDDDFBA3FB9BDF3218C879D4E5673 +:105A200046E1FBC677611ECDE571EB33E6111BE75E +:105A3000CBF9C288B71AF54333EE1EADC7C96FED77 +:105A4000EB7CDFF775381CB3334B9E980E3766E45A +:105A500089F17B323B74BC6ED5E1F2AA43B9D3C65F +:105A6000F1A5A21FEEC90D86914E3D19FCBE6463DF +:105A70005CBC1F1CF749E607B37FB91FDA976D1BA3 +:105A80004BE7098C7918E36E57B5F6F2B83836D083 +:105A90001BBF57647A02D1C78ADD6FBE8DF261E900 +:105AA00013638B500F18EF59E10B70A5BCB483B68C +:105AB00008C10FE0FA13A4E767F61DA4FC2F03BE8C +:105AC0005F159EDDC33B49BE776FF916BF1F388B4C +:105AD000C9783E7EC5AEDF1EC5FB015618FB1E3BD6 +:105AE000CC711EABBE9159601EFA994EC6E585D3A6 +:105AF000786F98647AEF89CBB4DF9493BE650AEA35 +:105B00006DA7A4C775743D54ACEB4FE1E88DAD684B +:105B1000CF1B71637605E8731EA7A479BA5C3CDEDF +:105B2000D1A3D70555A1F680F8CA1918573CC4F57A +:105B3000F80416227FA48C055AD1F8718A77A8FC44 +:105B40009CBC1E37BA672FF9ED28C1D07F1CAE7FF1 +:105B5000FF8749A79F8E4099E357AB502C8F9CE35A +:105B60007FC94E2D619AE48FEA3ECF6EE3EC2D356E +:105B7000C1F77EB4CA584748DF97E5EB314271ABB5 +:105B80009346BC84F189AD7A7C2127A9C186226C19 +:105B9000CCA2D06A2C2F6F50872C5162E3E7AE2A3B +:105BA000FD3800F5CA0D4E1BC671EC1AF78F5DA3C8 +:105BB000C19346FA96822EF40BCFEA747F76D8AC66 +:105BC0005017EB1FFF8F34BB8E4C1915AB0F91C2D2 +:105BD00002BF9F817F6F4893FB089E3BB53765F2FC +:105BE000720AF7DBEF1E96B313F5C89DC572018AE2 +:105BF00006E37D7785F97C27FC1C59648A6FB88E93 +:105C00002C8ADB9716986C6EF77963EDE48F29A6E2 +:105C1000FE8CE559C6532DF5B04E2CA596F734539E +:105C2000DD5E635EC7D90658078B9FB7F9BED0FB10 +:105C30009ABD47A6C4E9DB14A98BC5C329A569D8B9 +:105C40009129C047439B46139CE2F0CDB44CFD5CC8 +:105C500025C029639DF6917E2E87BD1B173F4141CC +:105C6000FFAE69BED03D93E27D64A73A62ED1AC6ED +:105C7000CFFBC3E7C5961B9BC1F6895B4F0E9B49C3 +:105C800072F1EE000BB6805CDB336CA10BE5C6C68F +:105C900066EDD0FBD0AF6D5821C51BD22459C0FC96 +:105CA000F8F429F0DCE487854DF0B26BB33B111EAC +:105CB0000E56E3423B392B7D16D1A5C234AAAF95CF +:105CC00067D1782E7D7FD03ABF3530BF485CBEBEED +:105CD000A49FAB6418A42E8BC11573D4C879397FE7 +:105CE00041443FC621303DFEC5E16737DAF5FBF39D +:105CF000122B1E0ADDC6E579D0E9C5FAE6502BCA9B +:105D00000DBCDF93EA376B6D1EBA6753E1F57B3F3D +:105D10004579959017871F16C307CD0FF1E7E969FD +:105D2000FF3DD2EDDF8A9F8B2DD75AF0D8ABDDA196 +:105D3000D5A37E5A3B68B42DFE1C635645D58A0A0E +:105D4000E413DC04B908FBF9A2FBB1822CBE5FC4EA +:105D5000F1C35D09286BA711DDA7C5D3793F744F47 +:105D60007EDCFF10DDB759E0B5C9AE66211F6F6A52 +:105D700011E6F4B53FD05461DC27CDD797176214F4 +:105D800097B1B7DBC2D902C6B843742E65422DCF96 +:105D9000BF73FD79431DB63FE7712844777A3CA273 +:105DA000C4589A67712DFA1BCFB5F3FDB1CF3C8C67 +:105DB000EED11316370D417EB3B77F48E7F9304C6B +:105DC0008D7A730CDEC3A8625CC466BA6F67FCCEC2 +:105DD00044D3FD3C633BD24DF5DBD60D35F55F1A60 +:105DE000CE35B52FD97CA5A97DF9F62253FDF60D48 +:105DF000E5A6FE4E76C74B63316EA2C79BD3706D8E +:105E00007DD0033BCAEF0502B544F27B8CE5DEA0F2 +:105E1000CB6BCDF706D9ADF7C60E10FFB0C64F7EDF +:105E20005B61BEDFB4E75E93299E8BBAD764F42B27 +:105E300009B41FF6402DD7D359D770B954DDAE0839 +:105E400074AFAB8E3F4CFFA4F8A2BE6EE4BB48DC3F +:105E5000FD5DE91EBF86EF6578397D386A6C61CCDF +:105E600053992ACED7D0BEDC7498D3C7A61A33DE96 +:105E7000B31C01CA7379E031A6AEC665D42CA6F373 +:105E8000EBC2E2BC2CA2871A4E0F4BC3A2096E4E86 +:105E9000242EC4470D9F777AED2CA217E37EE05E97 +:105EA0007839C6EF6332CEC3A75BE03EE6F0DF177A +:105EB0002FFF5E61B9C7F712F1E2086D88A4025C9A +:105EC000EC3253307E3375713DE519D9BD2AFD7D25 +:105ED0008F1AFD9E06BB979F8BB5EA912DCD2C1294 +:105EE000AFAFED6BE42A46FB080D2117BCB7761D5A +:105EF0006383154469C085F26AADB7CA45E7DFC35D +:105F000001DACF5B03FA89FC9BAC692EC4CFE76949 +:105F100036BAFBAC2D3BE04579D1B685CB0B61F1B0 +:105F2000E63A9C475B5A66B693F44C2441BFBF3AAD +:105F300081DF5FCB5CFA3DB6122F43126FD7A81CEE +:105F4000DD6EE66B8647A6A15F4628D1F25CB361A1 +:105F50007F7912F7CFD36AD2CDF76F6943CCFD4377 +:105F6000EC607E89AE0A15A2175B9D1EF744FE9574 +:105F7000F4FD4BC9F340089F1BF7AF2530AEEF5837 +:105F800088D38B1107952CF779E5ACB1DEFF65A1BD +:105F9000179D6F8CEF673938BED68C62747F94750D +:105FA0003EC2E21A2FF25B367B80E1F3EC52A71C73 +:105FB000A69D0585F849027C3D2AE0BDC11B88CE1F +:105FC00025FDDE07EB3CAD7475C9F3BE443ABF69ED +:105FD000523F74DE8FBEB4D2F9BAEC3627F6EFEF3B +:105FE0009E615197376BF47B89997BB67E6E9911D0 +:105FF000FFDB65D9D8D7B7615CE35F277DDE8571AC +:106000009D708B97ECF29E7BB82DF77B187559AF7E +:106010002B1589EFA07E869F97F47B60B464E20F16 +:106020001B9B5C88E7F0D6DD817461AC2363E406DA +:10603000B601E83FE1FCC30CED8B8491AA10E0E5CA +:1060400097C20FECCE8E787FC35AA6E9F7BF589F50 +:106050006F9AE4E2741F627DDE3BF3C8249B1E9FAF +:10606000D0ED441D4E607FBCE2ECE37EB41EB8B8B8 +:10607000B93C4A9F02F38AC36BEFFE21D33D2986C8 +:106080007D227BF97C326A9516849B2C733F4209F2 +:10609000F9591DDAC9FDACE7E7B81E182FBD9FF509 +:1060A000FC7212B73BACEB49FF87AD47AEA4F57865 +:1060B000B87FA7843486F7BC24481BC8EF49602EFC +:1060C0003E2F9023F1FBB709B57DAFE79B067E24F9 +:1060D0007DDF575F8FACA9A9757DD85DD6F5C05C13 +:1060E0003AA6E45DC47ADC7DEB176BBF985FB2D053 +:1060F000E497B4FD8D7E49FFDFE5FEC71AF4A7E201 +:10610000E85FFA2E878724692C330E6EEF4F12F961 +:10611000DF059AC4F302ED32BC17874F29A4C331BF +:10612000E60F85061BFE10E04BABE1F955C9F98A75 +:106130007ECE6C03C52113872985EB596C3EF5A2F1 +:10614000767A529C9F9A80BF646369B5D301578663 +:106150003FCA4C76794F3BFA5B922E4FA4987FFB57 +:1061600077B1DB2FB644FCBCFB25F2658D43ADD780 +:10617000CFE155784B28FFC4022F9E17953199F334 +:106180005FBDE8CF983C08EFAD0C46D0E45A23CC75 +:106190008CE0BD990E0CA983FEA9F4FA23785E78F1 +:1061A0000DD8C5983FBBC62BB7503C01FC4B59E5F9 +:1061B00070910CB8C077127C7785AAB9FF19C5BF5A +:1061C000D320A93B22863F4AF7A1E665B618769C04 +:1061D000D31BC34BA20EF704DF2A96EBE1FB7BF83F +:1061E0007E52C576F267815E79FF295A670F9FE478 +:1061F00060FB4FC9BF9573B87FEB1C59D319CF47CC +:106200000EF674E46518AF4DD7A792C76F6A4FF4C6 +:1062100082DF06723F313F2E5EC162F8B6EBF47248 +:10622000E1429C3F8CF115D0171827FC7BFBC5562B +:10623000FC1A7A160049F99FFDCA858BF45FA78A7C +:10624000EED5C8271BBD36B22B377A577B1742FDD8 +:10625000FE9112DD037F7FE9C27564777BB93D68EB +:10626000B46FDC2F527B8A456EE0FE7BBCBD81FBA8 +:10627000EFF17ED5C629B3BE545F6605CCEF0FADF6 +:1062800037BFBF7D5A6019D2E7F0A0D9FFBBACC9B8 +:106290006C0F4EBC5A5B3E99EC8D923EBF777E9A56 +:1062A000D688EDF797F2F9B0D2BEE1F5A0EEF73C53 +:1062B000D4ECA272A0F96FD6FB3FAAF76F6F96A934 +:1062C000FC61B3974A03EE67959A00EE37FC0C1F0A +:1062D000F5F15D67D3EF0E4D898B53F7E8C5270BBA +:1062E000757B88DF33D71BAF5CCE5D37D97FDF642A +:1062F0009273FB0EF5D037D0E9E853CBAA9ED2F1CA +:106300008D7CBF6EEABBE407DC5FBA7A7336E27954 +:106310000AE059E97F7D5BF5F50D0487079ACDFE0C +:10632000A2EB1A4780EEABD0F5EF03BADC34DAB754 +:106330004DE6717FD7B5D02F3FD66F13F61363DFCD +:106340001BC5BC097DD17D468D996E069A5F9B6504 +:106350001D1B2539418EEBEFB8B091DB798A8BF2AA +:10636000FB415C452F43393852A67B3662CF03741C +:106370007F9573647A38FEDEAB8D236D35B85ECCC5 +:10638000FF899F578ED4B52E17FAE71CCE28004CF4 +:10639000B19F4EE676428E6E0FBF92BDB8EAC73E01 +:1063A0007C3F7D0BF263EE3AF3FB9FEA727ADDA845 +:1063B000852F61BFCF4A6DE1BEFEDE638C1E6C315E +:1063C0003E413896CEFAD23C2A6B7F94C491BCF8F9 +:1063D0007ABAA53EC4D23FC7D27E85A5BDD0529F12 +:1063E00068E95F65A95F63E93FCB52BFD9D27FA15E +:1063F000A57D99A57D95A5FE6D53FFD1E76F4EED67 +:106400008BBEAC7463F473480186F161878EBF1E46 +:106410007EB5E0FD9B1595FF3919F0ECCA291D4C9E +:10642000F2E6C9F43EED27F8E98C8FEF5742FFBE44 +:10643000EE398BF50FEBF17FFF5173FC7FCE51D31B +:106440003E413FDF8B8D13E2F7A6D706AADA91CE45 +:106450003D36BAA7222B538FDFD432BAD7DD8E7FD9 +:106460008794F69FB46BB34A18D3439F3DF7DB3D47 +:10647000A1C3C7C966A6625CC1D11EA43884B07826 +:106480000EC3B861DB16FE6774A689152D741E0C49 +:10649000EF2F063B626DE7068A2B5C91E550F05CBE +:1064A000E3586F8980FBEE7B036ECA4B653BB8DF18 +:1064B0006AC473F2DACD7EED1516BF37C352BF54EE +:1064C0003FD777951E672B623ECCC7EDF173FBB9C2 +:1064D0001FCBF073B75FCD2EE91E2D470D233BCCAC +:1064E000E1E1719DA98B9BE8D5B4C3FCEFC538A64B +:1064F000F0F6B33AFCA789F97B304EB4D1CBE34434 +:1065000035DE00E3F7F3737CE820E989076DF4AB2F +:106510006928D71C7A3C08F010C23CC6B67B8C3F79 +:1065200067E467B4AFE6E571B72C879FF27FD03E92 +:106530005A0D78C9F3F2F82D0BEBF0169880F0B7EE +:10654000C615ACF0EE2F9E2659EC85FEE0BFC88044 +:106550007F062BFA9F84BF90E322F8B68DE2F07796 +:10656000B28D141FFA0CEFE55463F7D7B5E5F37657 +:1065700023EF9842070AD0A3A35343BF71ADC0A233 +:10658000ABA17F1BEBD2F0FDA42C9161DE72F294E3 +:106590000D044F234E995C6A865BAA66BE773EC99E +:1065A00002C7FEE235170BC7FBAEEA275EF377861C +:1065B000A311B769BC2AD07E158F5BB4E05ED4E02E +:1065C000F951C6EF67E1F9CCF7E571B9725F1ED7F3 +:1065D0004346DCCCADD36DE58D475DF1F2CE883B13 +:1065E000DF83F61418410ECD4FFB0DF63C8782F782 +:1065F000EE27B04808ED5149CF77156EACA17BDB93 +:10660000D767F1F8B311F763626D68A18FE315F7EF +:106610009D1D79F335EA378CA9781EF5BEBC2A8A10 +:10662000B32500DDE3BD1D4CE5798D32FCEBCB8E4F +:106630004FB0E4833B8699F326A501F2202316BCD4 +:106640007CC6E687A42FF1170CBC7C50AEEDBDEAEA +:1066500012FCFE38BC300DEA6961D6E280F90C6D9F +:10666000E078E9EFFDFF5FFE63CBFF06C977702A94 +:10667000008000001F8B080000000000000BC55BBD +:106680000B701CC599EE79ECEE68B592466265AF69 +:106690006CC1CDAEF5B22D9BB11146188147ABD57B +:1066A000C39C4956C218877392C57612392F36900B +:1066B000107145B163BD220BC9966C034E10612564 +:1066C0004B48311CD1B9428E5CB8DC5A98C40443A3 +:1066D000447028550257C2983C0857A50026499D8A +:1066E00013DFFF77F7681F5AC98FD45D96C2AD7F5D +:1066F000A61F7FFFFDFD8FFEBBA7567289C44D48C4 +:106700006783187508586EF747813EBB498C122F76 +:1067100021198408641921E7F1B7215E76470889B9 +:106720009512D2115148CC414834A252BA3FE2A14D +:1067300065C1C78E9EF0613F15B24EE097B9EA8CF5 +:10674000215710D24B5C614985713CA729FDA006F9 +:1067500034D4B0177C683443FD4C81D0F7F63F4900 +:1067600024760521D9EEF78D2EA8A7FAE4704E25E0 +:106770008C63BE6F8C41BD1E43A1EDF21A668C9DE9 +:1067800040EFD9C1FA21E780BF7584683828F04D01 +:106790002A6788E2A6B49905FF744E7CA24180FE68 +:1067A000F288329E01CF3BDCBE6A02B4AB96A8925F +:1067B000171BF5C5F0BDF35C0EE9463E5BD5BB4F3C +:1067C000006D2BB3EB0AB4B799BA609613B261436C +:1067D0006885712D21B99B34C170211F440CC1F310 +:1067E000CF1AD0089EEFB7E9054422E440BE2AA89C +:1067F000F0BE26A0154C43B97FE367FF01EBA5CAA5 +:10680000D32A093104B1F2D2CBD4F6A9FD3A48D843 +:1068100020C0DAA70C6234C07B9B14D409C8CBED2E +:106820002CD386D6831C167F8A84803F5B51B61199 +:10683000E57CDEE98AB7DF698884E4C769AD0A864A +:10684000BA0E4AE461319415BCD4F9F3724E973113 +:106850007A9BA151B968067F5EC49E5F481E973A35 +:106860004E6AFF9FE1EB014F0A82ABB024CF650176 +:106870003E24C27ECD5268A701F3321A607E808723 +:10688000AC7212ED063D7092700C904F880CEDB218 +:10689000601D613D711D0F5C49683DB3D61E1D41F1 +:1068A000BCC86AC196AC38BFFB6BB76C453CEC17F3 +:1068B000C8D6F104F99573F9B9AB055AD64AE5196A +:1068C000D3C0FB7E62AAD8AFB53E5B5EBA3ED45061 +:1068D0004048F5679BFD43A8976EAE976E51441CE8 +:1068E000F737C0AA8128CF065A25E2C3298624C4D7 +:1068F000F9B5C4A0E53544A3E50F513F412F7FC052 +:10690000F5730D4E199EAB2424E2E47337845A715B +:10691000DE3EA2525A23FA6E19E6D33CDC68200E02 +:10692000E0B7D9B68890762EA7B87CD441944F377B +:106930009F4FB314ECC67E405E4480F647EB823D29 +:10694000489745FBFD4BA0DD58BDD18BF4DBFBEE3A +:10695000A2F8B2737C81044527F4B7BF585BD30D0E +:10696000F3593E6C10C4DB61EC17D6EBE5AAD0C33B +:10697000A85F96FCF21AC222B6FF115FCFE6F7FAC3 +:10698000EC39A8DED1708D13DAAF1B0B3E8F65C5D5 +:10699000B3FAF399F07CEDB85A93A9213FA1C7B19E +:1069A0001FBD4B38E621497C45195F9F4EC23DAE65 +:1069B0007723C549C88378B1D691C8210F3E8FCBC4 +:1069C0002748DF1339E8695A15E7B3333FFDFA1F4B +:1069D000E2F27A8697D8D2BE280987CF2C84C38C5E +:1069E000A86138A1DE8AA9713FDAB1D5933313C803 +:1069F00046F98949BF0BE80355A1E7709EDB63BAEE +:106A00005DC6794EF74D603D4B4E65457D22C2F91E +:106A10004095F19F384E7F607F0DDABDB3678007E8 +:106A2000C4B10B06BD7EAEFEC945228995311ECF8D +:106A3000D37FFBA8FCD79F71263D07BC1A43D05FCC +:106A40008787E1154A11FBDF8F7E44A0A5A8E07877 +:106A50000142FDC1FE067F66C83577BC71EE578ED8 +:106A6000226E4BE3CFD78268C6CBE970D312C8AD94 +:106A70008DAAF45C5CBEC9F103B87C13E561C94F13 +:106A80008BE3FEAD44DCE7067401ED8FB5AECDD1EE +:106A9000FEBA25D05FD9B0B65682FEF5985A83A2C9 +:106AA000691ECE5D83F4EF67F119FC1DF6931B6040 +:106AB000B8FC00ED4E02EE8FD619EFE1F880B3FF7F +:106AC000C67A56FFA9FD59F37B97E302D6E7036C1C +:106AD000077A7416CBB2589FDFC5F0FA11F6A311EE +:106AE0008DAE5BFF09A276C3BA7D2FF07E4C42B912 +:106AF0008E31BBB0B272DA8F98BA5A8F4D8840AFE0 +:106B00002AD3EC04BADE159592D6EB9A13B07E4ADE +:106B10009C06FCC8D5D0FF8E2293D68775B6537CD1 +:106B2000CF838BB8BF312D3CBBB293F19C53BD904A +:106B30005DBDD87E6F0C2EAA46BF61F6513DBDE803 +:106B40007617594F425EC0DE3E7093E1C371649187 +:106B50008428CE5C15F4B955BFB49AAD4F4F3D5B58 +:106B6000E7776E082EC7F99140905C8A9CACF1A043 +:106B7000FD1ADADE80F6E03FEEDA10AA403A775AE4 +:106B8000D86D83755DBC6D86CEB796C767BD3AE894 +:106B900095979684EAAD4AA85EC12FBB00FC593692 +:106BA000D787D4717B302E03FBBF87C765FB231AC1 +:106BB000A5FB236594EE8CE8B4DC17A9A4CF1F8C49 +:106BC00034D0B24476D2757BB088AD5B8F0DF804BB +:106BD000B99490130AF29BBFB62987005DBBE58488 +:106BE000329D468F895B8CE3CB47EDE55B180FDA6E +:106BF0004E4904EDBD00667219F62F901907C67F45 +:106C0000C4886DC779563AD46EA07B2A9A4CB427B3 +:106C100018E7A1C5C8B7F711ACDF5BADCCB4AA7358 +:106C2000FB7790B78C1D186F7A241AB7950C6F24D8 +:106C3000316C1F7285297D7C971FFBEB2D17E97C3A +:106C400066F9ACB4B37E0422603FB99BEC497A91FB +:106C5000019CCDEA0DC85F2609EFBD713994BCF7E0 +:106C6000532A975439D81BC4A4FEF2D7417D9057BC +:106C7000F596A9B472CB294CB6B7BDE5AC7ED79AD0 +:106C8000EDFEEFBA19FF189777AD9A50886BFE7139 +:106C900088E14C924F6F45534E3A7B3BEBB7B8DDE2 +:106CA000EDD1593D3BDA5B2CE5105113DAB5F3B861 +:106CB00002EADDD9E1A6385C43759EC7DD1DF837D1 +:106CC000C419E006C9F684B8CEA6A6CCEB02FC38FF +:106CD0003CC9F54BCEDD91934EBEA97C59F564D9E4 +:106CE000A07CCB329B473199521AB3E6F27184EB08 +:106CF000756FC576EAAFCE827CD11FF6CA930AB60D +:106D00000779374413F8242441CE30F1C16AE60FE5 +:106D1000BE5E651C41FD2D39F3A282F6C0C28565B9 +:106D2000172CF9C85C3E567F3261FC50DA1BB71352 +:106D3000DFCC0D3F3E8D71E66E998C40F948E6033D +:106D4000A348AF341DAA039FFBE13DF06BDA15B5F4 +:106D50004DC7F7D9D42EB4BC9145FDEF1F4533D4B0 +:106D600009FDBD50EDA5FCB5098607C75D2993F661 +:106D700022A8D7752D196A65F6634C4C8E875FC0C3 +:106D800079648279C1FA922B4CD03F0E603C539EBD +:106D900068CFB5A16ED6FE297111B76BA0D72F634E +:106DA0007CCBFCEFCBD509FEB7580AFE0CFBFD9D52 +:106DB0002DB8E8186D279F9E86798BA640CEC338E4 +:106DC0009E7FD2270D8CED57127D84603BF6DED27C +:106DD0003392484B73E977F93A14941032897297D9 +:106DE000A34E94FF07634DE6345908F765AF078A51 +:106DF00013702787296E1C2DE5AF0760FFF9D28637 +:106E0000D06F906F5BCB3A4A13788FEBFBC91B8D29 +:106E1000DFE2F393371ABFC3D2ED27747CCFA749C3 +:106E200018F1D69AF929726702FEFF3A87BF7127D7 +:106E3000EAEF934FADBD805EEAF3F05761F1F73FA3 +:106E400028675BCB4DAF07AE416984A93FB9BECA85 +:106E500038877C7DFC26E32FF87E96BFDB81BF72EE +:106E6000E4EFCB49FC65FBD3CBEFC8D8C2FCB547F8 +:106E7000B424FE6C7290F2E7F66B14C7B69622CA81 +:106E8000A7BD6535931F844072729CE0F62F1027D2 +:106E9000FCEA06231FDF7B3EAD4F9BF09E3C69D78B +:106EA0004734B4F706EF04F64DE8578224B77B0D5C +:106EB000DA2D93E23603F12B218E6394CE22D39404 +:106EC000CEE1F98C523FD38B5CA209F8FC0A7432F4 +:106ED000CBE2F251DCD02FE0D1DDA20AADA8BFA0F9 +:106EE000B837C0382E57218D33891F36306EEC4CA1 +:106EF000A1FC0A633FFEB3409DF0FDEAAF7103922F +:106F00001110CE67C6F519F497EAABDD9489A38218 +:106F1000EA2FD567B3D5A1B6B9E3EF5B6445457FEA +:106F2000F875C90C7578518F8DADC85FB114AAF48E +:106F30005F1BD71FBB6C7A82AEB97A24650DD3B8BC +:106F4000E152F507E24B3FF67F4830D6BC807C1516 +:106F5000D8A91EA6AEF727394EDCF50CE79D1BD944 +:106F60003EA7B39AD9878FFB99FE37F2F2563FB30B +:106F7000AFABAB8D8FE13A7E9EE350AB3682389E4D +:106F8000451FDA603425BE875F7B11F02157303C06 +:106F9000C88DCF111697926121C15E59F60970B460 +:106FA000CD9F909F90D5289583D59FBB86AD2BC64E +:106FB0005B8D09FBB55D7EB61FB7E683F15C63565A +:106FC0009AF7FFC8DF3724BFFF3C9FDF3B37189F8E +:106FD000C7F15FBDC1F8829FC6C3DBD45FAF045C5D +:106FE00098CB84F32BE338E8C63F21FE5B5F1FFCA0 +:106FF0000ACE3FA3B882EA9755A6CAFB5C9DF1353D +:10700000EC4FF155D2F7A42C2F6D9C696F79E935BF +:10701000D4FFB89F8AD2795B7E1C76563ADDD7CEF4 +:10702000D33EDECEC2EB6AB116E43FEA95A93F1922 +:1070300015C2BFDC85B8F032FDEB575E5B7406C647 +:10704000CBCDF8D5A233A0D72E1ED7F60B84EA8D70 +:10705000B9CA151D8167C10DC12F3D8371CB46A7EC +:10706000DE0AED461FEBF4609C97E15568DCF048C2 +:107070002D93DF3DDE86176F83F7EEC65B33B0CC12 +:10708000BF6DC7C62DF07ED127EED98334CE6F27D2 +:107090008CB3F8936D2FE273CF9D0732B6C0F382A5 +:1070A000CFD4E4EC2638CFBEA01FEDC34989E276E9 +:1070B000A3570E26FAED276A191E076BD97AE60642 +:1070C00058BE6E3E39446D0CD7724DECABC1847E18 +:1070D000C6707705EDD7D431BEBF1539A1B683FD93 +:1070E000B37B5E3AC5FC0311D13F74CAB0D5037EB1 +:1070F000F6998A0E12254B2543DB8DFCB5C994BF4A +:107100007D55FB95C4F1FF255040F9CBF1BCC2FA87 +:1071100031E599E984F8EDDFFC596EC41398291D17 +:10712000F555CE6BC859887F8BAF8EDC58F56760FC +:107130003D4E0A243C0471F0B79A27AA3B80EED456 +:1071400064962F4595007B8C7B56B4B7859B8F0842 +:1071500018D74198147678800E3E2160FCE15926BC +:10716000537A495826A713E3CC73E72575517CFF62 +:10717000418B45687FE0E7C5E7503F21BED9E78EE8 +:107180009256187F7A874B23EB118FB3FDFD0CE7E6 +:107190003951B55D111077F01C71F74BBF8FCA796B +:1071A000B452CF5061BECEDC7037E68D9DB7F8C4C7 +:1071B000DDF0BE3F8BADD36850CFC885F78F6E8FA3 +:1071C0007D11D7AB73D3DA8D99506F0476499897B8 +:1071D0001A39D8D49D09FDDA6B65156395E900B3BA +:1071E00063651E91E67D3A15DD5900ED0F6F6A72F9 +:1071F0002E2FC7F70A7D3FA20A0D3CEF40FD5361D9 +:10720000B37E98C53DFA9E6AE8DF51B556C2FDCC03 +:10721000BA3A3BCFEB9D5344783E169655E4BF3FB8 +:1072200073AF13DB1537C37C800F05ED2E742DF47F +:107230005593F357A0BDDE3C81FA92D363D730EE6D +:10724000CC09B3F7967C155F4B0CF3E21FC2BE0866 +:10725000D76B094978EF453FD8F307291BCBE4E703 +:10726000160EF646C864BB8DC5F7A76DF1E742CD93 +:107270002C9ED6A0DFA895DEB8ED76E4BB59D421CC +:107280008C266324DABB0EE80F9B658ADF479B9F41 +:1072900079751DCC73E0FE1772AF03FAB1F02F1AA7 +:1072A000AF033ACF90483BCCE3DBEDEFF4E3F3C719 +:1072B0005BCEBE8ACF3B85FEA01FDA0FBF2CE9A8AC +:1072C0009FC359565C61D0FD4C36CFE774DA61BD7F +:1072D0001270DC58C3F4D32A3B23274E617C118DF6 +:1072E00034D079EC8D0469A9B6D44CE2B82327C216 +:1072F0007760BE9E983924F32AD857F92A17E3BE3F +:10730000AA5720375783BC1A9F1F1B54320093C7BC +:10731000F29C9B544E837CF69E3A1DBC458FD3DE77 +:10732000E27B7E7938E1FDA810FCE932A0CBCDFDEF +:10733000770632705F1C9CDA09E37EA84E99820FB3 +:10734000F5EF591A7764AD62B1AF734D2848CF118C +:107350000644AA47AE72A89F9437037D4CF4BF152C +:10736000C9FA0DBFA0B288C627546FFC5107ED3F84 +:10737000BBC11EC53C4FBF6BE7E47278355AC4F6FB +:107380002380ADE07882DC0AB91DADAD61A5634014 +:10739000341DAB711F05F24BE283FBA5D81F08FA21 +:1073A000257BF1F6BE6AB44B8F897AB136D78E58F9 +:1073B000FD8E0EDCADA4F34F161FA9E358EF03B505 +:1073C00022F7E7C9E3A6D28AAFD9403BF50161E7CE +:1073D0003F8E60B381768868CCEED837FF33DD0707 +:1073E000E13910D2D67E8ADA1DC0AFD692790AFD75 +:1073F0009F3D782FD984F6AA469971E0994161C8DA +:1074000094DCB41E3DFFA9F5790CDC671497B13C00 +:107410006574E23E5183352C954D51877944D7EB05 +:1074200022048B6459E50CC1739EB22A5DC47CAE04 +:10743000BD479FC8817E8A0688867ADC3060F83333 +:10744000506F4F4AC441ED9E19C2F52F1BB06BB867 +:107450005ED93D4111E315C1D7B004F3FC8311128D +:107460000BD850CFAA9C88CF9CF6E04419D4F71AC9 +:10747000CA8C06F32DEB62F6C55745A206B52F461A +:107480007601E0818B14FAFD88A0FFFD31D80182DE +:10749000F38AF2F88DE72D7CED09F11CC1FD6EB287 +:1074A0003DC8413BB11ACBE4B8B015ED402699F583 +:1074B0002BD1C8B3E46D1B9AF2A013F7111AD16F48 +:1074C0005E8EFA05F34C170F5AE511B02F462921AD +:1074D0004F47145A3E1551890186E474C443E9F3B9 +:1074E000F5FEBD35F9A8AF6692BEBEBD2FE77AC4E2 +:1074F000D50E29DA2A801C5EA9F98DD709FAF6641F +:10750000E1E9A66A46537D7C3A76346F931EA79FC5 +:107510003A35D1744B02FDDDA2D73CC4AA9F0BFEC5 +:107520007410EC31F897C780368B80E6F9F8AB1F02 +:10753000128343E5A8BF8A897EE6C30A7510EDAEC3 +:107540009C077CA23E2FCF1B447D7E85EB911C6C5B +:1075500064F9BD54FD4508AEA3F115FDD9C8176304 +:107560007F827929E067AFF0CCD56F1B97BFCD2321 +:10757000BF9B68DF8FA6C8FF4352F5713F496B0F71 +:10758000E8FEDEB20752963B03FD7F47A48BFA79F3 +:107590006B1D3AF2ED6B12E3025B766C67308DDEA9 +:1075A000E6D531BD5C5F6F1CC375B1ECE67C71A89C +:1075B00065FFE27169E8640DB4CF94A32AE69F33B6 +:1075C000751A39A6B17BC97A0E58A7E758C3074583 +:1075D0003A8FC37D77D37DF0E1836B69393AE0EF71 +:1075E000C69409D88171EC775F3E68D1D597813711 +:1075F0005ECFC297455B385B7A3CCB978833A087D8 +:10760000127166D116CE2CDAC219A5116737329CD9 +:10761000BDFB7CD65012CEFA0167AE0BE36C69E07D +:10762000FF0767E7FF4E38FB49601667D9816B2F6C +:107630000B670581CBC0D9A81A76621E62B407FC1D +:107640006539CDA3D3798D9AEA20DDCF601394E319 +:1076500037D54113E6F9F31AC6674D65C83F80E791 +:107660003F552CDFAEDCC4F3ED3D56BE9DD9651A07 +:1076700012A23F917A4268B747FBEC1AF62BF84EFC +:1076800088BB30EE2C00BF00BC7E87E725B389267F +:10769000A29F2A1B9E36F0FD72B0E368F7978D4DCE +:1076A000D33CF58A902B8C479B165F87DB49D4C46B +:1076B000F1C6991D57E03F162784E9FE62C570B2F6 +:1076C000BD2FED11DF7280932B4DB1EFD9297EC014 +:1076D0000824E3602FB7F796BCADB86C8E9DAFF76A +:1076E000D705F2E37EE1F04196979ECF1F8CF17CA7 +:1076F000B245970DC702E9F62B8F05D8BEEC689D01 +:10770000D184FD5F023F5B0317E14F0E053625E98B +:1077100039D0497A6ED1969E5BB4A5E7944EF02796 +:107720009F03FA72FCC921AE07FFD77A7E7FE0EF94 +:10773000A3E74FC7F5FCC1C0E5F99387B1DDA5EA22 +:10774000F9F2E1DD22EE5D9B115F69C669E47CF52B +:10775000F2FC75B5AFCB791AEA8DC9FAE23CB40FE9 +:107760001C7FA9EDEC2DB74E61BE6196E6E720F6D1 +:10777000962DF4F997FDC618F24BF48B3BF77B0E70 +:107780001701F3A1F6D8B674F2EBE171B6CD09F2A8 +:107790004D83F755B2FFFB6807A7EA83CF06683C25 +:1077A0001DD5500F41DE3FB84CBB7AFC72ECEAA10C +:1077B000C0C2F3C8E5F1FE02F3F819CA0DE6F16A9A +:1077C000CA3C7E7E99B879F37270B314E701E32B5B +:1077D000B3F96E9D9ED754FB5A9C18AF3FEA0FDF5A +:1077E0008CFA71F2151B19F2CEDD3FC771D238B594 +:1077F000F39A7438D99CF41CDAD33C797F44791D10 +:10780000F70198C7CF8371BE1951E9F3DE88873E2F +:107810003FC0F3E98FF073897D3CFF3F10A9A4E5D9 +:10782000431183968FFAD8BE395756853CBAFF82EA +:10783000FE13E69B175092E8253BD5243ABB02C6BF +:107840004BB01BEE4D5A12EDD9569644AB557A52B9 +:10785000FB2FFB43AE5A90DF95E1CAA47A8B361B0F +:1078600049F52E563F0A6523AF96E286D07DD0A615 +:10787000AB4814E5EE283B3185797587DB6EA2BDF8 +:10788000838AEFCDFA371FC553412DC3D3D2DAFC1B +:10789000389E5EE5EBFB0D99ADE3884756D19F8E90 +:1078A00014B178E0B8F7E129C4CBE1833E1FFA793F +:1078B00007C81EEDB523571BC278E09F799E70A4C0 +:1078C00047A479BC0F4F49F47E854C5C948FF9F640 +:1078D000BB449D3AD59E60A75BDEB8337A3C413EFF +:1078E0007AAD2B298F7716EDB336BF7CFE1809458C +:1078F0008F17C7F320F3D5B3DB78BC5374F74F97DA +:10790000639ED623D3FD3CFC8EBB12CEE752CFEF55 +:107910001A6A66CFEB6A507ED6B94B430DD373908B +:10792000530395DF8048F357A355E612C4DDD843CF +:107930007EAA2FF3F1D3160139A4D117AB94ECEC46 +:107940009E45EAF3AFCDE61BD6523EBFA191B004EF +:10795000FE77540ED3FCCA68215BC7D12A83F1D1CC +:107960006FDF8AEBD9766C0FC17D3CD15CE4ED040E +:107970007CECAAF5B2F8DA95B02EF0FFF0DFCE3F3E +:107980008D076E7DE1DF874C961F3C99957CAE7527 +:1079900017E279BE73AD4BEDFF42799CC61A86772C +:1079A000F27C06C5AB0C78CDC0F55793E5E13828DD +:1079B0009A1827A6F6978AD30EC469421C71A93873 +:1079C0005D574B2CBDEEBD4CBD3EC8F5FAE144BD44 +:1079D0007E96EB757F06F3E7A97CBCC2F5D6CA0B91 +:1079E000979E2065DE84FDE393D67B3FBB47583AE4 +:1079F000606AF45CE522ED94550FCF53D2DD47B0B9 +:107A0000EA7509E9F953F9B9C1DE88B6E44C31E603 +:107A1000B98528BDA0C7F359C518EB2DC37C37B372 +:107A20005310B62DC1739BD14A99D132D059887F5A +:107A30009607248A45CB8C76B1FAD678C72C3BF6CC +:107A400017292D3F2FF073918F2D8B7D15F5E9D8D8 +:107A5000435B96607C34E2EDD4C4729413F3E71F69 +:107A600068DF0FD3F3B779E4646FA99E4A7BFE34D5 +:107A7000EB0F03F47D9777DDC2F73E5A7EF50B9A44 +:107A8000C76BF9FD2FF01CC4C1EF6FD83D6111CF5A +:107A9000AB2D39612E0A95ED4D1E6FD80F12239A2A +:107AA000A6DFC7ADF7B05EF43EF8B91DE4198CABA4 +:107AB0004512C67B46F660EF24E6CF53F389F6CD38 +:107AC0008EB7282E49C8443F81FB90AC05F09F5DDE +:107AD00064887DC05FD1B9AF8B28C7D281697A2E07 +:107AE000593AA02F38DF831132BE905D774BFCDC12 +:107AF00011F89380BF7D32D3117795296E84FEFFF4 +:107B000052ABB07B87B0DD407CB8CFEFD61A13C63E +:107B1000CBAE63EB9F2FF1F34FDECF88CCFC41FE61 +:107B2000415DDC88F2AD63E71DCB3C4C8EF9D84F4C +:107B3000F9DC7E4A2BD97BA257D0F3BE52392CE612 +:107B4000A5C11521BB997E1185DFDB0C8B8853E520 +:107B5000AF12B56BFDFE8FB6A35DDB1BD1979C0109 +:107B60003B385ECBF47ABEB8B2908F0FF664711DCD +:107B70008D1BD93D870BD99105E250AD8ED9175F8A +:107B80005D827D81387459DDE5C5A1ABEB2E239E66 +:107B90007EC5B2DB17697F5A0FB66AAD983F9B94DA +:107BA00074CC3B0FCB93B7DD0EF4C966511F425A1C +:107BB00089F6AEC3F7CD6E7AEE62C5ADC3C6E043BB +:107BC0005B80AF8FBE24EA26D45BFAA5E75FBC1DBD +:107BD000C5F595D7326E07FACAAFBDBD712BE5CF9B +:107BE0009444B041FFD5B2EC5F711E5709ECBB0A5B +:107BF000EB1C29B346A57C58E73C17CB777F66B6CC +:107C00007C0EAA4A2142F3EE8F64DE14437FFEED20 +:107C10002C3BCDA713BE3F2DC0BFD8BD22222CC206 +:107C2000BC07C3E9B1AC1213FD47DB2E42CFA7DA84 +:107C3000EEB3537FF2ED7C42EFC359F715DB3C8482 +:107C4000EE671D784F7919F6CFF33765ACDE55E551 +:107C50009378F9975C85F8C7F39A4A1235BDF17BA2 +:107C6000216D1196B72064FA13F83E97887A37F69B +:107C70002B1B1A9E3BB6C924BA1BEAB795ABE6E7A5 +:107C8000807E349CAD8BF81D0AD1697BB2C2A07690 +:107C90004922E3ECFB93D9FB206F93C4FB20200F18 +:107CA00082F902DFFD2297C76A7A0ED8B6278D3C8B +:107CB00034FECF229C1793CFB13D25CFE2FD91A199 +:107CC0005DD91407435925E3314ABB689C3A543CBB +:107CD000BBAFA1F704EFC97A7FB059C37B3FABEFCD +:107CE000C0712498175D5FC7D10216B4A8F27D3821 +:107CF0009FED2C4E6987FD06E2DBBA4F63E3F2B2DB +:107D000015B1BC94ADA5EA75DCDF482D75AFEFA4C5 +:107D1000F77AF4ADF8DEC9E545FC7DC742400B209B +:107D20009F6E7ECE1CB5EE6DB0F1CC66D413FEDE38 +:107D30004526E938D96486B0EF14542ACF54B98265 +:107D40005878FEC492AB9474CFC63EC1EEC549AD1F +:107D500032C1EF272E74CF66A4CEC7EF2F87AF6353 +:107D6000FD86AFC6F2963A6398D919D6EF5D75C60F +:107D700013CC4E98BCBE99F43DCCAC1FE4F7002C5C +:107D8000BA531ECF40FFF7E81793CFFB2DFF68D102 +:107D90004BF9B9FF617C05FAB43A3AE3C790A9D42C +:107DA0008CB6621C5732CCECFB8AE75859FA2C2B64 +:107DB00027EA24DACF0F793EDFA2577645FDF8BDDA +:107DC000927798D96BABDDCAD976365AEF5D1E8FA4 +:107DD000BC5B27D352F035FBBF05727AFA3F182EF1 +:107DE000951FB13C1F751CB07E2BF04F8A6B960718 +:107DF000659FD4403DFBCC12B4DBD108CB7712E9B0 +:107E00008D892F54B0FBB8683FCACC713F7EABB3AD +:107E100072ACCF8FF9FF150344CDC365452309B478 +:107E2000F6141860C07D69FBB888F7384A0C65C63F +:107E300040DC7C2FF99C4B3B27511CFA0648348AC6 +:107E40007A6F26E7414B48B815C7F5563AD4988A59 +:107E5000D70993F3A1A53C6F969A274D8D7FDFA993 +:107E6000E3E7E3D791EB687E4EDAB6A01FB7E2DF17 +:107E70003293D0FBDAA56362D48BF9E3EF9CA6F7CB +:107E8000E8A481A888FE84F4E451A57E7A2CB86029 +:107E9000FEF40897E3D3FCFB9DA7F8F77578BE8145 +:107EA000F46FF11E37D0BFE6F7B8DFE5F7B8CFE0E3 +:107EB0003DEED2383E1581E1E942FB4787100A22A8 +:107EC000DFA44026F4BB26FCD0EAFAF8FEEF3B63C1 +:107ED0003E11F17004F67F4D69F723CCDF8F8D2CB6 +:107EE000BCAF7A02F73D0BF05182FB1E4CE8998F34 +:107EF0001C8EB9F0FE21BB976BED038FE03E10F8AE +:107F00003C82FB406F9AFE8F2DA7E7B9A40BF63D8C +:107F100009FBF023551AC567E9A1E47DE0D060C9EB +:107F20001D2BD03EBC2A9162F6B8D0B6C0F725CB47 +:107F3000EB67BF2F595E7F6D7C3F77B1F3BABABE56 +:107F40007B07DD2F6A6E8A83F9F208A9FED3AA7F28 +:107F5000213F6BAD77EAFB0BE70F4C9A3F18E3F735 +:107F60000BC6A2772B34DEE638B899CF7B162F7379 +:107F7000D69F8DDFE5BD97E2E59E4191E61CACFE04 +:107F80008E7BEFA5EB3656582452FF06FA84F7C3D2 +:107F90009F8818533B81AF3D37869D4D50EF73F559 +:107FA0006CBF5E22879DB82E2593928826A2A4A539 +:107FB0006E8AF9999DF4FC2375FC129E9721871611 +:107FC000CEBF84EAFFB67D6D0B7EFF91B0CF2EB1A0 +:107FD000F6D98752F6D9D1F4F72F52F9B9FB6FE4ED +:107FE00067FEF5B4F2417C9FC8D7117EE730FE9F53 +:107FF0002F1F845F2821ED2CD4D67627E875B3C4D3 +:10800000BFA3E438BC583CB6CFB30F3E502F703FEF +:108010005AC8FC38CA438AB7AB20FAB45981F74032 +:10802000EC3AE5C31F3651DED08A7ECF911AE76362 +:10803000C480F747641E4FD84888C60B0A8F039D3B +:108040003C1EBB709CA173FFC6F6178454D1781DEB +:108050003F844EE4CF2A3BF0BC2AF1FE33BF6FA928 +:108060003C10169B12ECFB8FF97C3B228A80F54B6F +:1080700063BB8806FDDBDD3AFD7EF80A7ECE65D364 +:10808000C804CAFF80C7378471EC867311277E5FEE +:1080900068B53FE0599B81F6F5C0A685BF9FE8E033 +:1080A00071AC55AF634064F73237D9A3C5D055875B +:1080B0001C54D2EDDB7E52AF25E9B9DD9DF25D099E +:1080C000D1E9F7B08AAF6CC1FB8736E5B5C572421E +:1080D0001CD491115E82F76B466DE9F1F07A3DBBDD +:1080E0003F77601EBC5838B4BEBF9ABD4FCBCFE1BE +:1080F00066CFDF0AB52176FED6A2A27D39CDE51680 +:10810000EF27E5DCAD30F95C6D7D7DF00CDAF50C28 +:10811000EFBA9CEDDAFCF98A7375C66FEB697C984F +:108120007CFFDA29F2EF187CEC3B0625E5FCF542F2 +:10813000F7B0FF542FF0FB5229FB5B03EC5B763A60 +:10814000DCA7E88FEBE2EEF70E731C2A0FCCD0EF22 +:10815000BA72627FA678CCE90BD2FB4EC529781C97 +:10816000A962784C5D8F91AA261ADF8C1C7CFFF9DE +:10817000F350EF6C951845DB72215C8E1CE4B8E47B +:1081800079ACF9F0388578CC5F088F6C3E51FC13E0 +:10819000E69DB3CD2E609E4A8DEDA1F351AA428695 +:1081A000518EBB1B22C86E5CCFB2B5AD09F6F5810E +:1081B0009BFCDE867CF61EEDA5AA59F7A5051A677D +:1081C0006618798389DF8B2D6D60F1729F71A1EF45 +:1081D000368293ECBCC7980CA4C9F33A783EA6BF8C +:1081E000FE01721ACA47EA1FA0FBE1AE2B4BE879E9 +:1081F000444D43F2B9E4B12BEFF5E0B9D437BC9D5F +:108200001E9477D7B1FBE8FC66FBE3F3047B67E0E1 +:10821000FD534717B3DFB9F5F77BB6BBE6F637BBBF +:108220008E29782AA8326A501E7DAE3E6A2FFA8ABD +:1082300040C2D0B4CFE4F760CDB549F82A6D1053F1 +:10824000F4CB4CA2FF17A7913C60604200000000F5 +:1082500000000000000000001F8B0800000000006C +:10826000000BFB51CFC0F0030907F1A3F2B7A3F154 +:1082700067F2A2F245D1F83668FC035CA87C37347B +:10828000F372D1D4938A8FB031309C01E22B6CA869 +:10829000E2260C105A184AB300690324357798B1C6 +:1082A0009BD7AA00A13580740C10B701F11271069A +:1082B000868592407120BD459C32F7A2E359A2D435 +:1082C000356F1493863D5551F98D060C0C5B0D19D5 +:1082D00018FE1B41F80E48F2E2C60C0C4D0610F6D3 +:1082E000452D0686294035E6AAD8CDBD04949F0ABF +:1082F00094D730C66FFF6B0B547E261A5FD7159547 +:108300002F8D261F108CCA3F178ACA170B87D000E3 +:108310000162219BE8030000000000000000000053 +:108320001F8B080000000000000BED7D7B7C14D546 +:10833000BDF899D7EE243B9B4CC206164CC26C4844 +:108340002060C00D048C48EB24041A14718D68530E +:1083500054D82055B43E564A35F6A2993C091135F9 +:10836000A055501E4B001BB9D85204A5B6F62E8F4F +:10837000E2A37E6CB4D48B8A76C147AD3F1F917B5C +:1083800015DB1F5E7FE7FB3D33D999CD86C4B6F779 +:108390007AFFF8D1FA999C398F39E7FBFE7ECFF747 +:1083A0009C75CB3CD12E20E42BF8479F7FE0082121 +:1083B00053134FA332182365F4398D049BE9ABA7FF +:1083C000F9701ABC57D45D3A34216A9484BC84088D +:1083D0004AD878C947481A21BD421654109D0C2727 +:1083E000C40D7F6984886A588771D275DAB6941093 +:1083F000C9B78B844BE8936C50DF3B9B109E0EF902 +:10840000D530686C10924388AB5ED0DEA1E5801851 +:108410003704DA6F75210976D0DAB6E0C99840BF23 +:10842000F399468230AE4B269C48EB955C1234A003 +:1084300077256B6FCD57E9DC4FA04CFC24B89DC06D +:10844000FC78129309C9A3CFAF7001B43F1DCF557B +:10845000A2073BE8786E2D9DC48AF13DF98AAD777D +:108460001CACD755EFC2F9A4CBB198C0C17A356E18 +:108470001EED976338D73BAC6FBD5A05AC7738AC6F +:1084800097D68FF0198D027DBFBC365C0AE38D9CB8 +:1084900011E5445ABEF7BC27110E5E808307E150F8 +:1084A000688743A0F6F6CD7158AF21920E3A5EE38D +:1084B000B7223F85B268B8D5261FAC37B2390EEB6C +:1084C00075C96A739090873C1904BE5B7FCC1B759D +:1084D000D379AE6E2024368E908E0699C42832DA77 +:1084E0001B542CB735F8F1491168FC88B63F359D0F +:1084F0008F76D0F61416FAAE12DBB3903DEF231C44 +:10850000D2432D49C779DD6196291AE4D044BA0EC9 +:10851000A526939424E828F9E90DF20EB87A8AD3B7 +:10852000110F56394DCB7694DDFE518EF684E42240 +:108530007CB02C1032DAA44F51D44910E629D279FC +:108540002A14D69973FDD7DAE6514D046C27081525 +:1085500091107DDFC291DA5DB6FA9701E2743DEFCA +:1085600010199F179CBE842314AECD3E12ED085007 +:10857000FAF1D61831A01F8E448A54FAF4891FC626 +:10858000AD7916D07A29A666977CF370B0D677C1FC +:10859000E90BE49A8989EFED32F194EEE543510558 +:1085A000E6190D017D34178B3CACEF9B9B6F692F57 +:1085B000C0551CE60A7669FDF1B211F03215F0D70C +:1085C0008717A46B0B2F1D0AC30BE5929478B99EF5 +:1085D000A8D8AF438CCAD9265C404E79010E88AF2B +:1085E0009E10E2B98CC281FB06E1D05C591BA278D7 +:1085F000114910E121A96327839CE33D3382C574AF +:108600007EADDEB105206FAA018F743DCD8D7C2D2E +:10861000D0B935AFE47527C3D1CBB17E7FEB8323CF +:1086200083C3DD0A5FCDE0B0AB1AE150C27FA37017 +:10863000B0E6B51AE685741AAB467C07F96F964E1C +:108640003D7A6D2ABEB2F0714F1F1C7B181CCBFE09 +:1086500077C0D1D347E7BB189D977CB3746ECDAB81 +:10866000BD0F5E068397F6CDC0CBD2AF440ED6C207 +:108670003C96AA2E0DE8EC0782E1AA0379EFE1C847 +:1086800076AA4F81F7C848CA874AD3AB9A46C82C06 +:108690002E0DD74384AB32C3363E5C2A524D3A99F5 +:1086A0003EC9EA1E81AA6012957AED7C597FECE5FD +:1086B00049876CF329E5BC3EB07BC8B9E45C98CF30 +:1086C00049BAFE181978FD1F34F4168B45544F37FC +:1086D000F44C3A24F5AFFF814022C0F744DEE5C2F6 +:1086E000F5ACE84CEB2885758DADEAA4F399CB3158 +:1086F000FE270AAD3C8FB6EFFEB458B4CD67A9C2D1 +:108700001F77A798771F9CAC7ED49C7067F7EF3FCC +:1087100050BFAD5C38C45178E962A83A408790A94F +:108720009D067696ABBB22368A24C64DCC9BCA6C7E +:1087300073DE2423C53C7D439BE74070B4DA9D542F +:108740009ADA08EDD72C059FD328BE5B72F8601328 +:10875000497CD7C2BB05F766A569B81DDFFDE02ED1 +:10876000AC9E0DF3FF8C18C560DFD2F2D8A5F4FDE6 +:108770002A935EFACD6310FAF8D1FF307D74027D42 +:108780004CFD46E8E3012EE77F1F7D487DFE47272D +:10879000DA75AD853506E8A3CF280D102A2784CEDB +:1087A00052F48BE89CD0AF807F3CE8EF421DED9304 +:1087B00074EA9E403FB7C63BE492E877CA2D7F6DCE +:1087C00067CC1A17D62D997E06B813202F4585C47D +:1087D000D2603DC485F20CC8F2AB31E057DD2D17F5 +:1087E000F8B01FC26BA0F588D08F7E0FCC80AF028F +:1087F000D0EFCACCD0C433ADDFF91DFFFC5026CC7E +:1088000063A8ED89226AEFD9E03E703F91BC67E131 +:108810008DD2F7CB30404E02FE7AD5E25A808B4C97 +:10882000F820F83DCDFEDB0CF0ABDA08E3CB55E6E3 +:10883000931466233EB7721AD3D77E8AFF4930ABB2 +:10884000D931686FD50F86EF80C9EFCBF9D03B20C7 +:10885000AFBA7248A73029D14E729130F24FCB7C1B +:108860006CD7B5EAB61847E12FFD582D05BF2E206D +:108870006AE9977AEDE336E17C363744C9DB12F8D2 +:10888000BB11F4F346AF08119023F9F5BD1C94DD3C +:10889000B9710ECA56BD4577A485D1696B3BD58B9E +:1088A000502F6BBC4A9F059D8126D9417721329F6D +:1088B0007E773461FAF101F06B03C870F87D77BD03 +:1088C00093DEFAE8AB65687C703BC80DFADD537740 +:1088D000E9AE1A3ABF25B139AE024A3F019EF915F9 +:1088E000A7EE224B012E271ABE206F1725FA17F28A +:1088F000C3B17EC9EA0AD74C9B5E5F42983F492DBF +:1089000000D7A513EDDF6B34E54FEFC1AFE8D44ED0 +:10891000B60BC84703CDEF1AFF1393C42989F2DBC6 +:10892000ED02DA156F533F10E8E6EDF640D448D17A +:10893000DF824B629C27719C5377EA2EB0C34F3481 +:10894000C81CE00BD6A951B82E69AF70E9CAE0F394 +:10895000CEE69DF41B35C73975679C03FB313FF6A6 +:10896000170EC6CB37E2153A8E436220CFF29F1B1B +:10897000D605EBBCE0F42769605F5AE359E36BB0BE +:10898000CE618972B49ED94F5158A70FCADA90D6DA +:10899000A9C13A6D71853E381732BF7F2038B7358F +:1089A000EC9A24A6D027D6D355C4FC4A9714463F48 +:1089B00078B079B8FD743C1B3DF6CDC37FE679AC49 +:1089C0004A9A47879FF909967F37D877D30B697FF3 +:1089D000873D6890624AA2680A52F89D2A207A353B +:1089E000D8A3D904E149E5D349D01FBC29D744799C +:1089F0001E593139319EA0D27AC778A6BCF6B90C7F +:108A0000901BC45E6FD33F32E8058897F9DA3E8544 +:108A100076822FDD007B51F089EFC565E7FC500FB2 +:108A2000E57361E0BF664BDE117208E255A216DC09 +:108A30000AF0BA8B779974A7EB8D10C7A2FE704726 +:108A400010F5EA5D3CC447542657ACF949C38B3353 +:108A5000B1ACA4968B9B1A222562517F386E9298F6 +:108A60005F494E5F1675839EE38B6F85EF0C344E26 +:108A7000B21C69CE2B3D1A8678558E0BE596655F44 +:108A800025AF671DAC672A5B0FD8E1B6F5ACE37381 +:108A9000FAAFA7D93BD65C4F6A79D602EB91FAD3ED +:108AA000430BAC4719B85FF2FC2DBDE32E24865D65 +:108AB0002FACCAE3D83849EB5855E402194D5A4651 +:108AC00006B7C25A9F30D7953C3E5DD713A9D6B59D +:108AD00032EF41BD89AEFF245DBF0070F6A78673FB +:108AE0009A7C5B09C82F6B9EFB7916F748EF836F62 +:108AF00004C7735731BADCCE87F7C3F7DCC56DE81E +:108B0000A7B8733B511F794AE8BACEA17E16D32D80 +:108B1000644D1E899640FC8B7E1BF4CD9ABC9EC78B +:108B2000A14CDB11D556B6E6B1264F1DA9D8F8B039 +:108B300075D6F0D7804ED27289360EEC8ED81D04D1 +:108B4000E49F3B97AE933ED3C49E1807DF2A238150 +:108B5000ED1AAC2386FA94B24700E8C393BB8B545A +:108B6000D0F1D67C2930F81697E17AACF17FCDB3FD +:108B7000B85D329E0ACD7527C36937E0A9A43F9E30 +:108B8000763FEFC4D3FB263FA5C0D3FBA9F869F716 +:108B9000F326FD75A6A6A322F987254CEE3AE96FC8 +:108BA000FB4F6617B07158DC1851A5A1DB89E3B8FB +:108BB0007343EB013E02E09FA274BDBF5B037FE500 +:108BC000417F7925C82477AEC603DEFEEA0DFF5F3C +:108BD000DE36DF914B547C6FF1EB2C6145DA095A9C +:108BE0007EE8AA82CCC5F41910B894EB5BDB40D7C1 +:108BF0005604F25E26C02FA7DE1C87EB1A882F1EB4 +:108C00006920257679FC48B588F2F8911B0BD6547B +:108C100041DCCA57381964AB5E1E58BF04EC38BF3C +:108C20008671AD6CF3FB149ED9428E4D2E99F64F92 +:108C30009ADEA3839D23901E1DE2FC7E6AE7C49802 +:108C40005824A20D4EDEB2CEC6223AEE18D86F508E +:108C5000110EB902D87F610D30D80F0E0F5DC523FC +:108C60009E97D58DED126C7AE65681D11129F1B11E +:108C7000C1C5A03F95BD6BD1D7460AA7922228F760 +:108C800072D06EF47212053EBA1FDE5378BCCE87E6 +:108C90004A605DA3576802AC67BB198FE3882C0E4E +:108CA00047BA53B700DD6DBC2DDDA43B750BCCE797 +:108CB0005C811F483E9C2BA4A0BBB4B90601B176D1 +:108CC0005A0A9F0FDFCBE64259008CBCE531E4E73E +:108CD0000ECE946F067905E84BE348E21FFDEEA83F +:108CE000A08676C722131F3EADB302E82A50EEAA33 +:108CF000FC3E856B7B58D141EEE6E5F56415009F9F +:108D0000FE5120C0A7A3E6FF6763152DAB3CE9CD5C +:108D1000F4D3F2D2DE46C077BE2EF7829CF286D420 +:108D200003B0E7D3DE4070BF61548BDEE8D6FAAF04 +:108D30004B76197EB0B734EDDAB9E0C77105322F42 +:108D4000D371DA579120F457B4F78EC1FBBC80E1A0 +:108D500087F8FEC82531B2987E374F9743F01DAA99 +:108D6000472BDCA0A7459421445E1244FBA1A0BD83 +:108D700007ED69450BDF44A8BCFB500A2F02F82819 +:108D80004103E1973DE710C2679DD44354D87799DA +:108D900011D3611E6BE7B4913A9B7F1F31F141659E +:108DA0009F1E2D49D0DF7A81FDFD60EDDAB4EB4ADC +:108DB000A01DDB0F91488B49B706E1E93ABC40B7EB +:108DC0001AD2E52DF0FDC09220CFD3B250A655C2E5 +:108DD00010941F47C07CD649C648E8B76E8EAB16C4 +:108DE000BF639057C934D39ED412F84AD3F46D8030 +:108DF000AFB182C4E4FBA8CED846FA7E44B95BD5B5 +:108E0000283CB2E73F187B86C2C13F530E89E5E09C +:108E1000476B5C3EAD1FEE17881E04BE5C1B7B13C8 +:108E2000EC835A0F01F88DAE0EEA301F9029480FDF +:108E30002173BF430BEE970208B736A03B6F6D67F7 +:108E40002347DBC94ACF7EC0CB2362E44F77D2F6FB +:108E50008F3C27040DCDC63784F28DCD2ECEBD912B +:108E6000CA8714F68CD57E307D9BF07F99DEB2ECFC +:108E700005CA5FEB04D4978CBF86AABF89A11F2CBB +:108E8000A470BDB88F097A4480CF5C0A1FB463CA4E +:108E9000A4779CF69A982853847D74C7C1431B61BC +:108EA000BFE13CB7BA5DED5F3F17CAD67A29FC0E29 +:108EB0009A7C7560EFBF8F05BDF6FBA05B83FDB8A4 +:108EC00017B99EF7703FB542D0B607D8FCE469D019 +:108ED0009F30271A660E65CA5BC0CFBFD7051DF845 +:108EE000ABA78C8B42BD9B1C6F391FC6A3FCD64120 +:108EF000E7D133E3E0B14C5ABE9823B7925242E631 +:108F0000ED130CF7A4FE7098BBC77D1CE03817D694 +:108F100069C3CBBC5FDBD64DFF7B038893E2FDC00A +:108F20009B232E7E04BE433243A0C749D572F22450 +:108F30007D5E5CCEFCB2DF57FDE13D82F3A0D44103 +:108F4000E7F5FBF23FF8C04FADD039F46BE6CDE06A +:108F5000A2EE14EBA3EF258DD2C95CFD535C07088C +:108F60005237A5D753C7D9BA5EA472A591AEEB927A +:108F70007D6FB79C0F72A6524639D36F3DC9EB98EF +:108F8000E12CF7E1BD8A14C3FEB048D28330EF3F35 +:108F90008BE113C88F3BBF63CC04BF23467A3B50A1 +:108FA000BE86512E58FDE6E42C41B9222A3CEEA3A0 +:108FB000D227F2C9C95C2AEFC19EF1F129E14C72B6 +:108FC0005D209C6C743440DCD9D4FB5845F9A8E290 +:108FD0000B11C74F0F1294635E1247E59F0950A310 +:108FE000749005121CFB0751EF103203F7CD7D6919 +:108FF000FFEC71AFC271397D0DF9CAF335C615E3C7 +:1090000048AFFFF47107996F5A227FC067DF375F5F +:1090100045ED18483E686E50F1E986CC0488B3955A +:109020003039B7B2C1CF9213C4BD3AC86B25E8D26C +:10903000400E78941809D0769F54C8BD0478D08C1F +:109040006F597EA0A7981CE729DE3D419723AE22E9 +:10905000E7BA86B4DFD09A3376C499EC2AA0D480DC +:109060009CE83750BBFFEE6733D5DF019B7D272A95 +:109070000509BA3EC3FA84F23003160911BB3E104B +:1090800079163F6B5616CB28B74F7FF59530CDF448 +:10909000BF09E45384CA53C165811870D8AB92DA12 +:1090A000762B47ED02C9BF44B7F3FB556007801E1E +:1090B000F6DFA8C7878007410CD5D631FF23087695 +:1090C000CD1ACF42721CEC44CF428CC7B6E50C0FD0 +:1090D00030F9C5E2785401A21CB3E8747FCE15FEC6 +:1090E000386DDF3AF20A3FC8BD5629E48738CF739E +:1090F000394FA2DFDA763A93B8293DB5F90BD08E15 +:109100006E3B3D664424C5FA3C84C98B7442CCB89E +:109110001D2DDBF44A9B9F97613E274B98DC59E35A +:10912000F98D0EF92C2E4D8CC0F82E2584765475B1 +:10913000D92EBD0EF47B5809BBD5FEE358DFA1FF45 +:1091400038CC7B813616DF718EFA94F3E85F0EEB34 +:1091500005B85F4D50AE26D74B7286E19904765123 +:10916000DF7B15BE5BF8E2448C3F437B0DE2D254BB +:1091700022005F25E83FEAB083C1D02429E2286DB0 +:109180002E1DE584914FA2DB613DA28EF1E2162EE9 +:109190007B32C48BDB4675F853D193E86FC7B80BAD +:1091A00085510CE8C8ED9FAD837E6EA1A6DC30141E +:1091B00009AB7BB849F8FC14FD6355FCC04E67DD74 +:1091C000A2735FA6592938A39FD44AF9888C1BB88B +:1091D0005E7205C321D43B91A3300F914CC2F98B31 +:1091E000B9878F06E83C7E29323BC21657FAD06E0B +:1091F000A75CC0EBBF1429BCA474364EF2F821BEA4 +:10920000F219A85F2486FE4DA4E3B407A6997A2E2E +:10921000892F866847A957054DFED633B8E18C6E75 +:10922000E15F7A4910728688FF7C4105FB13F008E4 +:10923000FE9B04F615D05AB17802E6ADD3FFC1BC4F +:109240003366D0B20DAE82BE401F63EA7BC90F7495 +:10925000C3DA5BF428003EC00E4C7AFF7A323E1A25 +:10926000F639E2D002617941FDE880AF8C8B53532F +:10927000C16168F1AC767F673BC62F08B54FC0DE91 +:1092800036FDF6B526BE3B41FF8C83FC2BA67F5AEC +:109290004C7DB3AE41C3E7030DC558FF604310CB0F +:1092A0000F379463B9AD41C7F2BD0DD5F8DCD010CE +:1092B0003293E8A2284FD78ED4D67360AF924D95E3 +:1092C0002FD22E6BBDDA6B04CAC67A5606A770146D +:1092D0004551EBFD9506A5CBB559DAF72024F4F8F6 +:1092E000FD2D4D87607E45DA6B1C2D7F5B6A3FD07C +:1092F00042A7B476226B9FDBFA286B9F66C6F9B44F +:10930000F983C081C9C5207C8F3ED7E698FEE61060 +:10931000FB95433F0AC7B581AFF7BD7431AAB3F5DA +:10932000FEA6F24839E4E3B1F9D7B4EEC4F9A36874 +:109330009A4EC895AD3F6B32145C9F19F70991CBDB +:109340006DFA689E24B179977EBD7987CCF56686E3 +:10935000E23AFC79580C9F2DE5809F14335C14B5DC +:10936000EDDA6EE6A76B43F3731E8224C09C447B48 +:109370002937A88398BB30E97DE60C1DC73D4F62B5 +:10938000F1BD0D914A99F1B18EFB9315E67B2A97B9 +:10939000512E8ACF333BFD8201DA433BA32CD16EA1 +:1093A000C079AA83D8B3435C271143E8CF4D125547 +:1093B000A64FCD7E672595D315C6AF43C5C7BF98C9 +:1093C000F8F89BA03AE0F589E01C377B274FCA29C3 +:1093D0006B0FABB6E913FA5F969EEEB06BBCC16C37 +:1093E0004759524739DA8F0C3BEDA09CD00447FD1A +:1093F00088DAC98EF2594BA73BDABBFD958E7266AF +:10940000F9858EF679911A47F9EF85B72A3AE12165 +:1094100025C179A8E3B897DF4A82944E161E11D071 +:109420009FAB27F15923C06FABE7301E04ED546AA0 +:10943000175D0D7FD2325FFFF22CA0BF85842C73A5 +:1094400067D1A7189720BE7175BD3BC93E66E3EF93 +:109450008F0F6B5A4CDB1F5BCEC6A74FB4D38F194F +:10946000CCDF5D74E741EFB9B4FEAD23421096FF47 +:109470001689DF0365C310CCFDCF781ED0D5E56615 +:109480007CE0B819777ADDCC7725623CAF86D6BF11 +:109490002E45AF6672E3F5CA2354EEBD9E16CF8308 +:1094A00072A3F17E650B261AAC6EFB8E6D1D8B9739 +:1094B0007318F7D1435A9B1FE24BB9C1291D1A9B60 +:1094C0003FACCFA506B702DFEC90585C7F2BA7EF2F +:1094D00090E8D35F183AE3FEFA9BE6FCAC728B147B +:1094E0007E02E4C7E2E5592EC87F5ADCFEB2047C56 +:1094F000FE8AC5CF6214D7F71667C931A302FC955F +:10950000D7FF38ACCBBE5FF68AE48CEB267FA76E24 +:10951000F9CB0C6F3772410C5FCAD1BC85B679BEEE +:109520002C65607FE356F61D6324E7C8237C5662F2 +:10953000FBBDAF482C5EFA77ACB327F53A89B9DFAB +:109540004332609DC722D7207C3FA3F400F6EEF3A0 +:10955000C79F95E2200FE6E738E4C1E216C1E17F3C +:109560005DB9D4E3285FB5FCB2CC54F93A7DF46D13 +:10957000D8E8D16657564040B10CE269CC4F244937 +:1095800079DD3E12E638FA7E04311A21C463E571B2 +:109590005B76EB5955DA6BF42FD2ECBD62A419DF80 +:1095A000D7444A57F9F0178B2B1971CB0EA7F0C986 +:1095B0000F121DF23BF213EFD1AE19B55C74C43338 +:1095C0007C4B9C65EF5CD111B79193E24FD67AAC9E +:1095D000F50E37ED13A24735C0DB6A6FCC0F76402E +:1095E000E7BDA4790E7DBFDADADFAB7D80B50384F9 +:1095F000503874CCA9DA9E6A5F162D66BADEB4784C +:10960000B002F85B26C1FD1067F115B278BD4217B4 +:10961000DC03E3893D32E0DB1762F1D791A02469D6 +:109620003F7EA79E06F3B827549305F5694698B484 +:10963000D3FEC3427C341A602212E2C1DE6A311AC0 +:10964000837259670CE07CE0CD7F97E336BAB4FAB9 +:10965000935A2B7E1F3D63FC5E9F5F41AEF1E1F8A4 +:1096600011B44B297A9B7DCC9F02FF5F0C8A983FF7 +:10967000B4950B8F75A588BB5BDF1954DF0DB15D09 +:10968000A0DC85F4D67A8C437ACBCCEF0D431E1444 +:109690007995C5DB8DCAE0D130C40B27B9F03C43C6 +:1096A0004679AF06FCEF3EE651058C7F47CEBDCC38 +:1096B000CBFC8C98CDCF389594BF729C0B57B8E8F3 +:1096C000F7B8E1B561F8DEED27388C4766CE60F972 +:1096D000281967B3FCB0DAF373C92760B72BE147E9 +:1096E000A1DE4F11F71EADBFCE2530FF3AF63DDCAF +:1096F000C79394A00E79111229C5F8B92407F1195E +:1097000071B1B8F962F3799D8BC90D34FC6DFEFE21 +:109710005FBDE11A80EF185DAB04D75D5092F7ADE5 +:109720004A324FD8F837EC72CA37582FEC577D11B0 +:109730001F7346FF4B923F3F1BF647DB462D607E73 +:109740008F6FD739EFD8F83EE2627AF1EE3B9EF4A4 +:10975000437D2F1FFE3EC0294D8FE8302FB1308C46 +:1097600078EF6BE765ED24BA1C8847659C3F3706A8 +:10977000F4D36AEED35235DB22213D517F9D4BD08D +:109780000DA5A788CBE6D75AFB5DF4DF87205F5C89 +:10979000265CEE9E78AD9C6A3D27A470BDBDBFCB14 +:1097A0001FC4F50C746EC4DAF7595C6E0E4CB46FBE +:1097B00043BCFB7AD31F5BB677E36188672F3B8F8F +:1097C0007AC241C83FD97CF819C03B350F195F7484 +:1097D0001E86FD8225B51E161F272194CF1F11BEA0 +:1097E0001AECB38FE08BB4FF47CAB4AD8D01F89C7F +:1097F0004E2EA3FCBCD1C5F64F4585ED2F8B20D74F +:109800008A4D7987F06079714461F2CE207223CA63 +:10981000DF7616BF35E8FFA0FCFD4E673CF7BA7552 +:10982000CEF2B5A46638C89B6B1F904894837C7FAA +:109830009B3C0C407C80E1EB3A126903F9B4D2DC2A +:10984000EFBFE9A9892EF0B3AF9FA206204FD382C4 +:10985000E77617D36B1F50BAD26C7AEB065FD465EC +:10986000E6EB601CA6398BE9858FF6CC8C015FBED8 +:109870004DE506E23D699D2BA59E7910CF36EE9110 +:1098800082CC4E627A00680A40774377850EF16D8C +:109890000A2D6D98B33FCEFF9A76E77A078347F299 +:1098A000FA2DFB78A0F5B8BA997D934C67BFB6F84E +:1098B000D5A4A3BEF3454D22692E83F8D85D78FE6A +:1098C000A8DE70AB6EFA3C95961F857DBA63A65CE8 +:1098D000A76C702EF32F22E7C073A8FDE3FF60FF93 +:1098E00077A07F4EFFFEED3E23047C6AE507BAE5D4 +:1098F000304392C8FCA976FF20F5B9B45E38437DA9 +:10990000E199FB439C13F673EAE0E518A47FDC279A +:109910003B61DA47CD52E812CC83FFA3400C0EE83E +:109920004B457BD368E534B06FEB565F9A09F45A28 +:109930007744F0F1019395A1BDB71AF7033F714940 +:10994000A69D1817813FEBCA03B3412E374B417FC9 +:1099500016F8C377B1B86B45796918F765945A0959 +:10996000ECEC67774EC1BCF71B94D922C8F9BFB99C +:10997000983FFCD18E5F4C23747ECD8F7B490CF5D4 +:109980007714EDB51BF608482F3FF8B917F3EB6EC7 +:10999000D87DD3D6B9741CEE292FCE47D87DDDA350 +:1099A0002C5EDA8CF3B9E1C9CB7E6F98EB92353837 +:1099B000B762DA1746D00FFAEA263759C4F2ED9C9F +:1099C00076E2E2F6D2C37E98577716E60FF4D1AD71 +:1099D00048DBD3FE75F45993826E47BB19FF7EE8CE +:1099E00065FBA85CF7FE85B8BE5DDF95607D5C4BCE +:1099F00096EB5DFA3D9F5BB2DAE13A8CC7B868112D +:109A0000ADFFF0318EAD6BD7C42D6901F8FE16D7CE +:109A100062DCB760F978D67C177797B68DA2ED1621 +:109A2000AFCE2A80FDD3993F7F3C03ECD31FFCFCD3 +:109A3000CBB6E9659867DD3B97F2F32DDD02E6A131 +:109A40005ED32E24F93D2C6E76334A04DAFE893F2C +:109A5000CF7E83F6FB80CAE5342AB23EE879D7F59B +:109A60002B28879508C8E55BF6498E38D92DDD6F20 +:109A7000631E34ECBFE79E4F45F08BCE385A72FB25 +:109A8000CFC86917D89DB7EC5A85F1CC5BF67CF44A +:109A90003AF0CB2D4971B40FE08F91FDF3D067BB45 +:109AA0009DF1B5CFC88BD3D08EED1E96D23FB7F2C5 +:109AB000CF2DF9F1F1BEFFD864507AFA70F7FFD9D3 +:109AC0006450783EF7E57F6CFA1780FB33692AD043 +:109AD000F72D3BDEDDF463D023FBDC3CD0C9C7CFE0 +:109AE000FCF4D18769F9E3D7C64D06960ABB993CC9 +:109AF000FA38706A38D81DCB9F993502E871F9DEC3 +:109B00009923C819ECFB8F295D456D7465D9E7DA97 +:109B10003E0E8C772AE8CC67123EC88BBD2EC8E378 +:109B2000FE9C23BD1DD47FBD3972CA05F6D6619D4A +:109B3000F4027C0EEE79FBF08F69F9238A1F770A15 +:109B4000FCD0959DC5E3BE51EC2CD83FBA79CF65CA +:109B5000977CAB0C9E521086BF85F4A23EEA87D755 +:109B60002314AF6509BC0E8847330E7A4BE4CFAFA0 +:109B7000437E43321E3F823FCEEB8FC7867E78BC4A +:109B800071F3C350B967584A3BD5C2E34D7B2F3FB1 +:109B9000A31FF57112FF0E04E7A5A6FF31D7ADDFB5 +:109BA000E706FEDBFDAF8F3EEC033CBB837301EFAA +:109BB0008F7F964F8D19F2BED4BB10E0D0FB8C5B2B +:109BC000EDA27D6E78E6DF515F7DBCF7659786720A +:109BD0009D6470549E7E4CFAFEBD0276E5CD667E95 +:109BE000CB4D5AEFECD7E9B837D1218C20E26FF694 +:109BF000EB65803FB69F7773F4D26A0DCF07E4E040 +:109C0000BA6F8E32BEB839BA7F3EC4FD93E1FEAC66 +:109C10002957EC78E5CA019FC76703FD0D844F6B98 +:109C2000FD2AACFF5C5ABFCDC9B7FDE9A6D7057ABE +:109C3000C1C2EFC75B4EB96EA7ED63BF72A9FC74DA +:109C40005A967A5D20778C5F082A9C4B4AC63B9CCB +:109C500047AA433BA529651E51323DEC4FA207EBB5 +:109C60003C930597C1F87AF0F57C3D78FD0292842B +:109C7000A6F6875BE32C37CAE597026EDC877F592F +:109C8000D21EFA21D0C7F3128173A3F30AFE2C6A05 +:109C900029E210BF07BBC7E60F5D52CEB50EA3FD8C +:109CA0002ED1A95ED112746AD5876608B81F65CD1A +:109CB000C77A9F3DA76C35E8DF93669ED9A191A135 +:109CC0000D18F7E7C5881BF629CCB853814ED01E76 +:109CD0005E96E746FB10CE5DB3783E8BFFB75BFB2D +:109CE000CD4A18F5F451737EA47BC78E1D54FE5CDB +:109CF000081FA6A4769074B666039E4B98FEE74AAA +:109D00007E21827EB928FC0B11F2F70E99795DAFA6 +:109D100034C868D7412638E4A3D7546FC1FADF9A14 +:109D200071A20BE7D2B24D4F5E54FC0B11EC828B4B +:109D30004AB6E4823C7E01F22A53E8D1193293B745 +:109D40008DE3BFCBC37A5EB883E53FBC90F7502E5E +:109D5000E0EF50D14F372CA3EF9F2BE68280B2E784 +:109D6000EA9B1490C7CF69CE78CBFEF17FE660DE28 +:109D7000F9FE2D22C8ED2ED33FDD66C6E51E35CF98 +:109D8000A1779BE7D0773468F8DCD9508CF53F6B2E +:109D9000086279574339967737E858DED3508DE516 +:109DA000271B4258DED7508BCF5F372CC5F7191DC4 +:109DB000DD2D003F3281DB0571AEDF3444B03ED68D +:109DC000508FF5A7DDCC2FCD6FA7F6FC39942FEA85 +:109DD000597E579714AAB5EF9F59ED82263C4E64E1 +:109DE000858B654AF727ABE74F0539DC5AF4DD89E7 +:109DF00080AFE7B4313C3BF7C5CEF9A7B93AAF5ACB +:109E000046CB691932E64759E3B5E68483B2CD7F84 +:109E10002D687791D814C067B46A38E0FBFB14DF73 +:109E2000B4FD85148F902758130E68605FFC96DB95 +:109E3000D5920D7EC444B37E6EA9545932381E05A6 +:109E400099CDFFD98A482EF0DBB31C8BE77D2F2CF0 +:109E500090629B1CB8ACDA59FEC49477D9730A5946 +:109E60005EAB2FF5BE209CC774C6A9193FB9FDCEC5 +:109E7000F8799AE68C9F0BEA41FD9D29FDC7EB9B83 +:109E8000774635B39B55F13D906F1406DC577C4205 +:109E9000EEA0A764D9D31AEC1F2B04F21117DCC86B +:109EA000E2275793B804F63AF859127DBFC8E0305C +:109EB0008F643109BAC0FE5E4242F8BC967AF4F073 +:109EC00074E7C624B62F52A5C279244E3F5F80FCAA +:109ED0009481E6977C6EA92F4FDF94036EF39C88E4 +:109EE0007FBA1CB6FB57B798F8B8D37C523ABA0978 +:109EF000E867A0EF58F2C3921B7FCD0EDD2EDBF09A +:109F0000623D07EA9F8C1F6B3EC457C6F643E62CA2 +:109F10007F368FA2B6AB534379387371BB3B9F56E4 +:109F20006D5EAD4D06B1321EB24B6979D3B14017AB +:109F30008B83323B78733DF3FB37CFF744E1DCC4CE +:109F4000C915052F8F2383AF23590E3E347AD21AB9 +:109F5000C0DBE8E70494236B46FFD77EC833CB8F82 +:109F600033B992AF44C681BD5FF1D65F4642BCEFC4 +:109F7000AFD9E175B24D5E6FBA33321AE4CE15B285 +:109F8000BE9EF1E572771A49D06BFD6A6D4DB13610 +:109F9000303CBADACFBC6F9F3CEF3EFA1B801F12F9 +:109FA000F4C1DA1DF08CC6F3A07181A820172A3DF8 +:109FB0007968DF8533890E7187ABEB6312E0FF7A36 +:109FC00039FC04CCFF4A1295987FA80E073B20E489 +:109FD000D3709C4DC3DF1B89F6B6180FB0B8C910FB +:109FE000CF5B10E2D0E32B09A906BA9C41E21CEC3E +:109FF00087F09E0F47827EF8AD29DFFA8D53EFBCC4 +:10A0000057C0CDA9387F48A3DA4ED753C7877436D7 +:10A010005F5DCCF2C179366E32EC8FCCF271E80F15 +:10A020002EAA0F605EF3BFCAE11E99C5F7D9FB5C8B +:10A0300015F9B14E995005F6EB50D743743A71DBE0 +:10A040007D32D6FAFEEA0DBF01E38F510395700D04 +:10A050008B3B97C51167090AD2E9491FC17DA581CC +:10A06000C63F08F9EE45A07708E6BD4B0AD709F6CA +:10A070006017C53B9477507A85E7BF51FD04CF4DFB +:10A08000543F41FBDF52FD04E55F51FD04E59F5164 +:10A09000FD04E547A97E826737D54FF0FE753EF493 +:10A0A00031E057F26998AFDAEC62E7E5B649CE7B6A +:10A0B0001A4EC92CBE693DBF9019FEB74B0C6EC637 +:10A0C000BBAE28E68B8A9D67E13931FAC4731D3B2C +:10A0D0007B0D685AB22B8EE727A612390876CA98EC +:10A0E000D5711DCE720C33E353DBBE157E43407A2F +:10A0F000CC24E4DBB45F7EFD51C823BA9727783FB8 +:10A100008EF7740C5382A6EC895C79131D6FFCB634 +:10A11000E86337B1F814E60BCF548EC796D0FE45EE +:10A1200014B830BE978FC720DF887C9E41201F3631 +:10A13000F3820FC9F5B4FD7D776462FBFCFAB8FECB +:10A1400038EC07BCA3B07CE315718C93E62CF56268 +:10A15000FFA9AFBE1FDB4AEB333F36CB245C9185B2 +:10A16000EB0BB764D1F753AF52F1BE9F7517777BF6 +:10A1700080CC56074FE07A3A231938DEC3AE9E5A98 +:10A1800088E3EF5DACE0FD21FB5E6C39BE9A3ED703 +:10A19000BFF8C01A18E6617FD595D7D3F2A5692C10 +:10A1A0007FCC3BF5903C86B6CFBC952F1570BC0399 +:10A1B000587E24E2C3F39B534AD939B67D33C46A2F +:10A1C000BBDC1E9BC6E2DEC1B4BE734904FA51B4C7 +:10A1D00060FEAD7474B63E13F882FA1790C72AAACF +:10A1E000A1D85C809B990FBF950B07D360DF61E915 +:10A1F000A53AD88DD6F9662B2E5C96C6E29453B656 +:10A2000010A4D7BDEFF35188A73E7DA4CB03F2ED98 +:10A21000E9239305B0BBA604791DE6F7F4FB6BD3E5 +:10A22000000E1B8E2C1B81F17F12F5504B844C4984 +:10A230004BC7716680109C6AEF5F20C07332F42FA9 +:10A2400061FD215FF811E8CF25FA9F9FC6F2D8ABD8 +:10A25000FAF5AFE1E15964EB0FF648EE1F9DDF9F81 +:10A2600069F69F0BFD73ECFD2B79987FA139FF6494 +:10A27000FEBBC89CF71E2E7AF724B0836E12315EA7 +:10A280005AB033ECB1DFB771431AE38BCCBE7D25F6 +:10A2900003C7DF77B420F34C710034AA6DF99498AA +:10A2A000B1E4D0DFD949E55149ED0B92EA2724D535 +:10A2B0004F76940FBEF9201FA2EB78DAC7ECE6A721 +:10A2C0007D4D681FB6E6F2B89FFD4B8E9D73379E9D +:10A2D00017709D89F544703D07E64DC7F67B5F64B6 +:10A2E000FD0B76467F07F9A87BE6F2783E3C592FB6 +:10A2F00055A61720FC5A7D35BF83D4FAEC8B450256 +:10A30000F4FC54CFE403B07F9655C49582BC2CDC9A +:10A31000106A02D4B8A3DA410F2D9FBD33D4AC9498 +:10A3200041AA8C8C7E4DF69CF933D3405EEA04E959 +:10A330009652BC30A72C41E7DB1F987CB0828EF789 +:10A340009449D7D385500CF7A904D20BFEE8B6CEBA +:10A350001A7E3C2DEF33EBA71C99ECB00377A76571 +:10A36000E33CA5079CF91083EDDF6C6BD01DE71172 +:10A37000B79B7AECC0D8F3114EDB3B0BBA40BE6FF3 +:10A38000EFACC9E415F88E739F28310EF33F9E821F +:10A390000F4F274CB1D0793CD5C923CA09F9A3384E +:10A3A0004B443DE9A85FF9006F9659FDBEBEFAD750 +:10A3B000AAC09FDAD72962FF1D69AF55358A20965A +:10A3C000E793F165D81FF3D6C5DC1A1DCA561E3BAC +:10A3D0009507BB411EC03E11F0B1B54FE4F6E978D8 +:10A3E000BE7DA672AB1BD675914622C3A89D307563 +:10A3F0005FB405E4FBF49DC6C14C26371ECEA0F524 +:10A4000063CDFDCB8BF27B2A3D8087C91CCB8710A7 +:10A41000A960A3E3DE3EAE14E5E70BDE68533AC85D +:10A4200015894339398D04CEBA5903BE5C72E1C532 +:10A43000F4F907533E5E54105904F2E7D4094E6B09 +:10A44000A4F3697CF3F67160771D3C5A43C08F9387 +:10A450008E88C8BF922F2484510ED508D7D9F036E4 +:10A46000352899F261F1DD1381DE7DDBA69B7B7DD2 +:10A47000628E0FCE3D457780DEFF439A9BDDDB1574 +:10A48000940C739FF50F6953219F22C2EE9333E51D +:10A49000628540F01E37F206CFF23BABC31EFBB91C +:10A4A000EB27E34C4E971FF72DEFA1E3B7A8D3A7F7 +:10A4B00000DD6F5BE312013EE298E056904F27FA11 +:10A4C000E476D8918F4CBF7B82E1C1B9BF1B20DA03 +:10A4D0007D5520D74EAB95BB81EFCCF3A714834DB0 +:10A4E00037825E32F789334F67A25E7EA290F917FA +:10A4F000C97266C687CEBC227E5DB6C3FE0CD8E5A7 +:10A500004C20859C3976B623EF8ADAFB2F037F9F98 +:10A51000CCE53506D7880CFA647AA144F0FBC2CEAC +:10A5200083B09FF759B95B057E9E7ECC739CCF802C +:10A53000FB0708CA892D663EFC1EA3EB20ECEB3D11 +:10A5400059EB21904778F8689780F74E99F14CA91C +:10A55000255409F2746ABBD60C4F62E81915C3ADD5 +:10A56000140DFA8CD7E1792D7284C59F64FA3F9857 +:10A57000DFE4076CF128FADF1C628B4B0780659CD7 +:10A58000F1AAE478D4B074AF0FF39CCC78D4BD3F7B +:10A59000168278BFD7AB2CCFE7E9F3228F203D504E +:10A5A000FF4B00FB257CFEDD37D3F236323A0BF24F +:10A5B00065891C7D03E8372B5F0D80BF62C5AB8AC0 +:10A5C000D279F33C8B1BCFA56C8F337BB0223794B1 +:10A5D0000EF26AFA733C017F6372BA86EDA6C73544 +:10A5E00094A3E756F360EA92738F19E381DE0F4C70 +:10A5F000DF7116D857AD8A0BF7CD9BB90851418E44 +:10A60000BFC6E8B3F5288FF783ECAD92D12F7A9AC5 +:10A61000D25210DA87D3BB9A02307E36F2D95E1F4F +:10A620008FA9B66BC3E95BA0DD53565ECF69633C6F +:10A63000D8E5195BF5B3200EB1670B7BAF1F2198EE +:10A640008F2EE7B27383D4F83558FE915A0AFC3D39 +:10A650003D9D37CF53EAD3D3E9FC33C6DC8AFD9F57 +:10A660000A7043EA5F99E85F09FD4B20E10FEC793E +:10A670008ABB0EBCD730DE0878A8E34D3E48F20B0B +:10A6800016925EF45BA89D7F31F497C488B9C9AF78 +:10A69000CE06FCE4537B16F793876EE71B10CFB50D +:10A6A000ECFC7C5F290FD348D8FBA15AF84E205709 +:10A6B0006B02BC0DD5CE8F9AF6FD26D3AE970C82D9 +:10A6C00076FEEFC0BE2F62FC21B2F39B4BD21DF68B +:10A6D000BABE00F6611A3A2E98259E07F678BC1489 +:10A6E000CA37765CD02A8F847B30D4516038377675 +:10A6F000E8B3645A9FD1CCA13EF8312D1BB9F47B4D +:10A7000010BB003AD961E5A96B6BABE97C272CF152 +:10A71000A11D18E0E3ABC601FDDEC0A33D90D11D35 +:10A72000BB03F82B79FE5BCCB85F46F3A7B7825F1B +:10A73000DC98CEF45CA3893FABFCB63B7C17C0072A +:10A74000C224705E5132F956F2B1F34D8D90B04D86 +:10A75000EB9BD2FBF2CB46B1FD52FAF4827FC8FCF0 +:10A76000BCBF03FFF7D8F13F3798D576838FE15F01 +:10A77000F81AF70458718D64FFD57A4A5F9C8DC929 +:10A7800058038D2399F795B416B0F31D2BF3C69695 +:10A79000421CCE3A8FF23A1FDE82F8CD65F9F47D85 +:10A7A00078E6A95F0676AA79CF8B35DECF4DF85AC9 +:10A7B000CF8CE64B2398AF6FC19763746AB57FDB8C +:10A7C000BDF8F174479E4798809FBD2B5DB5F6B7E5 +:10A7D000313F89DA7BB80FFCF7C25BA2EE30C0993B +:10A7E000C2FD57F0BDBA5C761F9275DE7FA8F09E61 +:10A7F00099CFF6D7499348B697917EF789BAE54B3A +:10A8000063C0BEC9FD6F07994C4DBC990591738219 +:10A81000CC7EC53CA4E35CF825FBFAA91DB108E891 +:10A82000DFCA37AA33E373D43C9260FD95C3B432D8 +:10A8300096CF7EF3AC17A97D54098C8FF6D84DB313 +:10A8400060DFA7D2C3CA6977B7B7413E7725EC2945 +:10A8500081FD65B4CE02FBAB720CABF7423D6DFFE0 +:10A8600047597F233DC7214FA2F67B6825F57845E0 +:10A870009686718313D02E901BAC0414E6D76B5FC1 +:10A880002B6E1035E3068F9A7285D2D5874857A66E +:10A890005C19CCDFFFCCE457EBB9DDCC4FF91CF4ED +:10A8A00010CE3F348AD14968548DF904780D269F23 +:10A8B00013FE44301DF3E292E8E7E07AE69F74B5B8 +:10A8C00058FE853AFB7A3ADE3690D3B47FC67F35A0 +:10A8D0001F5F15B0D359849DEBF36A26FD6A17C23A +:10A8E000BD94F9D52201FDB1B5333B0BEC84B5E93C +:10A8F0007ABAC706F79A745DF138F1101E000FC3DB +:10A900003C43C083A4A41976B85A707CA981E58120 +:10A91000F598F2FB4590EF1877D17361DC66978666 +:10A920007146E305E66F0D84CF81E29416DE2CB903 +:10A93000C07919BE124F26175E32DB159493E96A6F +:10A940006662DC733DACDD4B6924659C7E9A87D9D9 +:10A950002719CD21BCBF152145E75BD0C2F4B5D581 +:10A96000AEDC1C87028F67F25AC5E73C735E63CA90 +:10A97000C90CF59C44FBD966FB79E94E79663D67C5 +:10A98000794C79265CEAF8EE984EFA5D1BDD7FC7BC +:10A9900063E5030579768E53C7EF06DAD9FD556373 +:10A9A00056101E9E5A674807BCBD74DE9FB7DD0F68 +:10A9B000764F4EB1B9CF166F04BB4D34027C077D84 +:10A9C0005F6BCEEB615710EDFB168E23708FB1FEDF +:10A9D00061C8807C1E5997D1AF9114E353269F998B +:10A9E0007D4EEDF55A4F8EFD9C2EB3D72DB867885E +:10A9F000A4CA6DBB9FE713737D56D95AE7BCF24FCB +:10AA00000F0DA3DF99B447C538504867F1CA097ADA +:10AA1000EE16F0174A14868FEDDDEA020FF3E322FB +:10AA200070BE67A2BB67D9EF68397A8F0BEF09DC7C +:10AA3000D1DD357E29EDD74988198F52674168B835 +:10AA4000955A0B5DF4DD8860E3F77E40D73FE95708 +:10AA50003B3B26D0F7FE1FF21867DAEA61FE16EDDF +:10AA60008FEFADF8D38EEEDD5970FFC0FA07D6CE6A +:10AA7000190BF642378F79DA3B92E251F51E168FA9 +:10AA80006AF224EEFD196FF3D32563762C291EA5F7 +:10AA9000C378B678549367EAC0F1A8360FB30BD6E3 +:10AAA0004709CB33EAE6A3E00FEE50BA509EEC50D4 +:10AAB0006A4008114967F1A01DDD663C4AE98B0731 +:10AAC000A57F17F2513D2CAE732FC8EF1C7BFF13EF +:10AAD0001C3CF36DFD311EA5F4C5A3B0FF3D1E1651 +:10AAE0004F7AB05FFFFEDFC77894D7F9FD9F98FDDE +:10AAF0003741FFA967FAFEEEACEB6CF1A38DE6BC23 +:10AB000027ED8B56025CC79BFBBEE3BAC3E8E27934 +:10AB100085980CFA6BF3F6CE703AC63FC408C0F9BC +:10AB200031D38E1FB77109E66F6E4EBA87F7E726ED +:10AB30009FFFC6E4A7831B4CBF7AC37CC403594163 +:10AB400010DFE336FE27679FCFE8252C6E366EE3D5 +:10AB5000F217C69FC1AFFE8DC7F4AB97F0965FFDAD +:10AB60001B4F0ABFFA64F512AA72293DB7B8509E6E +:10AB70004E5CDD86F90F13F7182877B52FA6104223 +:10AB8000FF3FFA8B52B4B3F2BF381FCBD217E76145 +:10AB9000B99BEF6D04B8183C8BFB48EB443C073F76 +:10ABA000DA70C67B4A14E6EF48F5D31D7EEF60F1FC +:10ABB0009E4D49F19ECD66BC277B4E19EE479FEC1A +:10ABC0002CE8126CF2A94461F01CCB9110B4DB6C40 +:10ABD000CA6DABFE40E3D87488637475D69C314E61 +:10ABE000B8C98C0FF58D77278B07E33F88F7AAEC60 +:10ABF000FE8DCD2B16AF9D03E5ACAA32E0DB1285AE +:10AC0000E593E9478DE4F8C2C776F8F332CB072C19 +:10AC10005188431F50D057C17D9989F5F08EFD189A +:10AC20009B7CC67974D632F96C95478487A39E982D +:10AC3000A058FB8A87187E673496A6DA5F1C0CBF83 +:10AC40008FF3BDDCD976FCEE4A8DDF09FF5DF8ADF0 +:10AC500077E27782898F9201F1EB4A073E8AD69F8D +:10AC6000F9FE600BBF7DE30D88DF03D917D9F03BF8 +:10AC70006160FC4E5052E0F76D77A84481F6228B5C +:10AC80003759FA99EAA716BB7E3A908C6753FF5B57 +:10AC9000FA697C94DD2B69E9A771A09FB884BDB1E6 +:10ACA000654B70543A8B87A0FC297693E7217E1B75 +:10ACB000E5486F13955797566D41FD341C44940A2F +:10ACC000FA2926C2B8AD0B09C601D76D69BBF505D7 +:10ACD000FAFCE98665285736DC988DDFBB4DC9C282 +:10ACE000F1ADF7B93731FDB47E03D54B6503EBA564 +:10ACF0008B1401D773B9D2B74F1283FE5F432F5D18 +:10AD0000AE9C619FE47BCA10F5D206262F07D24B7A +:10AD1000B50AD30B75CA007AC9D63F955E0A2B4C8B +:10AD20003F5CAF24EB95FEDF4FA597969ADFBFB54A +:10AD30005FFFE4EF3BF552C4EC37695BF400C4A558 +:10AD40005CA427C8F65F4907D0C16A803385E3E673 +:10AD50005F76463D36BDF4332EBAF642B02746B292 +:10AD6000F842B25E6A52183DAD31F9E2A041F512E7 +:10AD7000ACA37B3E9E8BB7F4D284C752EBA5098F60 +:10AD800089E9C567D04B6B947E7A698D92522F31D9 +:10AD9000B9556CEAA562532F15477B86A497862A7E +:10ADA000B738AFB90FF1DFAC972CFF6060B9F5F59C +:10ADB000F49235DEE65DEC9EB584DC0A3FEA945BF6 +:10ADC0004BA601BF725EC68F29E4D6FE54728BF388 +:10ADD000327AB4FC050AFA16BB5EB2E44EB2BC1A73 +:10ADE0004C2F7DD9A79798DD51FC77EAA5A1DA1DF4 +:10ADF0005FFE0FE9A52F07B53BBE9E5EB2C6DBBC6A +:10AE0000CE89DF497B287EB984DD31692FC52FAE1D +:10AE10005330F5928671675965F292E2F74BC5A6F9 +:10AE200057DCFBC23AECF7BDED0E735E1617C4FC9F +:10AE3000A9E4B8E00CA2E1BD7DF9CF09B86F44C424 +:10AE400078638CC9EF947128EAD7714057C9793576 +:10AE500083E57F5DF2ED3B90DEFE55D655AF2D3E8E +:10AE6000F02B3934CC8B7AD38C5FF5E57B198E735C +:10AE7000726D89737251E73939F3777FF2D9EFFE3A +:10AE800064425C0AE374CEF371CDDE6BF1FC568A4A +:10AE9000F37145F0FD01CFC78D0BE23D74CD59D65E +:10AEA000395C8BFFD839E08CF34FC7F11C983A6DB1 +:10AEB0000AE0A7D4CBF4A05E6B10FB79448A9F52C2 +:10AEC000F84EB2FC23E639530B2F6D23AF18E81C64 +:10AED000D8795E1B1F4ABE339F03A3F4BB0EE4F870 +:10AEE000324E5021FFA39963F761195C7A707B8A17 +:10AEF000F816C45735CA770BBC05CE7B777C21BCCE +:10AF00005FE5F638A7813EA4F47411C31F1153D135 +:10AF1000D346217C09D4DF3BFD03CC33F9686F9A1B +:10AF200006FCF371D94917E4353673311617CF3360 +:10AF3000E3E22462C4D8FC18BD99F7FA35DF318A00 +:10AF40009DC3CD75DE7B12F2317B20DF157F2D4C4A +:10AF5000EB6F0418B2F990DCE1780B02FEAB13E35F +:10AF600018C75A447AF07915D985CFEBE5F0629885 +:10AF7000DF0233BED5E4C9F836C6EBFEC9F3B2F042 +:10AF800070B2BA0A916354EA06D009956391663C9F +:10AF90002FC8F067C1B9C3BC1724DE70547F87CABD +:10AFA000A3630D71FD1D882F36BC8FE54919A17A69 +:10AFB000E0E3F4E2881BFAD519AFE9EFD8F82B9C4F +:10AFC000116E80755D1D39AEBFE3381FFD17473B1D +:10AFD000ABBF15C7C673695A22BE42F1DBE6B5C9DD +:10AFE000915392E10EA13CF41188379E943976BEBC +:10AFF000B192182E5A9EE963FBA0B34944047856D7 +:10B00000934E7C7E5DF97021D985FDE6921E7CCE43 +:10B0100023BDF8A47A4A64711FEB1EB17ADE7E8FDD +:10B020009820B3BC52A39214471438FF64EE9FFDDE +:10B0300027E3533957EB62FB5FC43CBFCFEEBFEC55 +:10B0400032F5EA564EEF82F516E80CBFCB46BA1041 +:10B05000BF2209C5D0CE32F3B431C7B0200197FB6F +:10B060001AD8F93AF87D2DC8E7CED4293D29704F7A +:10B070007004EFB7A5EA3508F4CE51310DFA40D689 +:10B080003AFD700E669579AF6D32FFBD6BCEA7B1FC +:10B09000E80ACC6F58E5E531FEB96A24BBA776E52E +:10B0A0009BEC5E844379B7C9F114FD572ACBF0BC01 +:10B0B000F5CADCECA66BCAE0F701F8A8FDBED3E444 +:10B0C000A7D229601EF2CADC9A339EF350DA59BB2C +:10B0D00081EA5706493B770E7C9FE9BBF1F254D9D0 +:10B0E0002EF75696D2FA4C42EE6960E74556E64591 +:10B0F000FC70AEC678D3A3029FCD9C5CBF08E4D39E +:10B100004AC2F6A1572A3CDE6FFED931EF4F61BD2E +:10B11000DCB4A30EB99CFC7DF7171C890DC37CD051 +:10B120003780FEF7174D433B56F075E279E5B442A0 +:10B1300076EFB09C1B89813C92A9C203BC0C868F20 +:10B14000274CBB479DC13BF2A4DB2A74FC1DBAB659 +:10B150002CF6BB739EE2A47A33DF5A34F381ADF14F +:10B16000B67B993DF499F9045D513E19E8F730D268 +:10B170002FFCB21E9ECB807168E517965D26EB9F73 +:10B180003379EBAC4FE849768E69BCC9C76EB2869D +:10B19000877CDECFCCF3BE563C5D5B4730EE5FDC98 +:10B1A000F240255CA94C995D87F8A6463907EE3F29 +:10B1B0001F5B21F71AECFC2FF62F34FB176F73DEA1 +:10B1C0007757B0DA592E34CFAD8C25B6F7946E0B85 +:10B1D0008FFD05EF712D24B6FBF1402E9AE74D3619 +:10B1E000C38B14FB54C9F90123329CF901C9BFBFB9 +:10B1F00093FCB4F6FFCFE6F5BC0C80CF8A6CDC4F35 +:10B20000DC74C7EC51A9FA59706CCD9AA603DDB471 +:10B21000DC49F532E02F3607E94710099E1BA68A64 +:10B22000B314EC0D41565D18B76BA165988E12935F +:10B23000B01C31EBD51E565ECEEAFBC6F7CEC6F18A +:10B240009BEF0CE2F842EC3C36BE42F5C044FC1DDC +:10B25000BBC3847D07EFC11665F53061DFC17BB2EA +:10B260004525F65BC2BEC3EAD51E565ECEEA312244 +:10B270004DE9658112952AE83ABF38FE9D33DABD63 +:10B280007FA2766F8BED9EBF38D8BDB4DF9FE6BF3F +:10B290001B877CEC3FB507F0F7C716C7C6E3EF3E48 +:10B2A0005879E0967E92A6BF3F0BE490A5A7168A38 +:10B2B00004CFAF5A705A28AB6D709ED382D342250B +:10B2C000D68A65134E0BD51E5636E164E9396B3EBE +:10B2D000C9FA6D41FB16097CF7C1F4DB22FFEC9241 +:10B2E00016E427F16FA09F41BFC13D739D7DF78D8F +:10B2F000307C58F7760DA46FC3469D63BF413F3045 +:10B300007236CC57CC2598A70EF177660712754791 +:10B3100000F3BAD8FD4B7ED205A15EC9A21B3FBB8C +:10B32000D7BCCEAC77E7AA5BE13CAF24C7A4110041 +:10B330002FF31EC2AB54FC9B78CBCC7AA587DDDB08 +:10B34000A2B0DFFBB8DAEC2F2866BD1A6D85F323B7 +:10B35000D6EF812C30FB4B3E56EFF2B3F6ABB2D8B2 +:10B360007DEEEE5C769FFBAA2C767F3BC448545B57 +:10B3700019C484DF9728C35D069AADFE3E4A2F00AC +:10B380009F5559EC3BAB0287511FDDDD50CDDED719 +:10B39000B1F301C6B7CCBCADD302FBFEC4C98EDF8E +:10B3A000771850FF6530FD77B0E8413E04F2D5BC18 +:10B3B0007FB54D39B39FFC1353AFB424FDBE65B3C5 +:10B3C000798EE87E3847449F07F2A6A15EB5C67D18 +:10B3D00068C4CDCFC15548F54704CC03AA37EF8BDD +:10B3E000EBD4597E70B392ED3887DC2C32BF707D80 +:10B3F00083F3DCA394C9E6DD5AF4E051E01B51610C +:10B40000F7DE0BB1F568370B852E9216F8E7F1B928 +:10B41000C5DF167DAE0279A580BCA2F459C6E8133B +:10B420006C95D6A2D97DF439EE1FA1CF42465F16A6 +:10B430007DA615FE73E9B32D893EDB4C7A4B2B6458 +:10B44000F4D996449F6D49F469952D7CB46585FDCA +:10B45000F6DF2368ABE3CD3CAB6BFC97D9E2216D03 +:10B460005F5EB30EF2D88D22F6BB14C974757F06E9 +:10B47000D3D3E20CC30DF67BB23C1A4C0E754AE1F5 +:10B480005ED03F2DA417ED056305877CDE2E19FEE7 +:10B4900065A05F4A8CEFC0B89E925E29955EA2FDC2 +:10B4A0004F654CC5DB7690EEAC7EED92F3DE3A75DF +:10B4B00006E54BDB3C9412CA8FB67924F45C93F317 +:10B4C0001EB024F938905E5C5F3B59D6C0AE9ECB6F +:10B4D0007E7F66E4E56572A10DBED999ECFE80E63B +:10B4E000B92C2EFCF0FCC9A9EB43EC775B92BFB3FF +:10B4F0002343C4FA7AD289FC021BEEE09F8ADFAABA +:10B50000EC817B46EF2BC9C6FDE4FF4FEFFF20BD6A +:10B510008F7C10E31F6D5F0A9847F3EEBD735642B0 +:10B52000DECC50EF830B6784AA3373127ED640F6CD +:10B5300028E65153BA9C91119A07EDAFFED1E53937 +:10B540006087B873CCBCB35C668FD1FAE6ECA9898E +:10B550007AA33291AF01719CE5172F990AFCF1EAA9 +:10B560000C1617CB18C6EE61B0E6F574268B833D3A +:10B570009DC9F8B483CAE5E8B8443E470675E8C1FA +:10B58000CFE8CDE3A35D01B00B997FBD32BCB31A08 +:10B59000EE1B5D39BF48057BD9F26F2FCFE3F17702 +:10B5A00033EFA94C5F6ADFDF58E463F4FB5FBE8AC8 +:10B5B000C7603D41258EF92AE7A824CE413CAC92D4 +:10B5C000DD1BC6E5B27BAB251294597CDE3C5748A7 +:10B5D000C2E4EB9C2BFC9948510FF24261768177D3 +:10B5E0001D8771502B2F6587AFE68E4C8863EF0B5C +:10B5F000E339C2FDD3D2F1FB9FB7B273D29FDFA173 +:10B60000BEB517CA5EB872839057F8ECB7F6D07221 +:10B610006F164FBAA07CE1596FEDA5E3D73DC8B3D3 +:10B62000FCBCD3C3F2A1FFF1E18487DFD7A3FF32D3 +:10B63000E0FC76C698DE03B09FD0DBC8615E83E491 +:10B64000FF0FDDFC7DBA0C9EFA0D6F29277F02E407 +:10B650007E3589615CC53AC776DBB0F07D0027F1A5 +:10B66000CA8B8AC15FBEC7A5E603DFDDD3E69E0CA9 +:10B67000BFAF54F029413E25977B989DD04B7D6705 +:10B680005A5E78E765DBEDF9270B73183EE4FA564E +:10B690001DCE41C85A10AF4ACA18C3E8E0AFD9E17D +:10B6A0008DF09D4AB9F410E4E35E1D09A09CA852F8 +:10B6B0002FAD827369572E65E557CD3CACE47844D5 +:10B6C00072FCE1A7261D517941EA27831E66F781A6 +:10B6D00011554CFA3D41E7BD8C163D105DD4E03E5E +:10B6E00044FC5B63F40157E6B94988DDFFA207CD4E +:10B6F000FB37FBE882FBEAECA1D3C50FA90FCDEE27 +:10B70000E509BE8C7CF28A847C72B27AC98F800E85 +:10B7100092E97D657885CC97F4E70B8B0F3ACA6A7E +:10B720007234A4FB6598A7478E731ADC87A29EBB70 +:10B730004285F7EE3A17EE935AFC60F1C194EC3E65 +:10B740007E580DFC1B56E2B3380D0140ECF4BE08E8 +:10B75000F8831F983F1690E077AB38B8E79B1899AD +:10B76000D9093A5F502EE33ED08278630FF8950BEB +:10B770005670E484439FD1B2EC8093DAF7BB83C266 +:10B78000D0E179EF9CD275403751C115E1F269598A +:10B79000EAFD2DC877238BF15D9BF7BD5628770E08 +:10B7A000D7D0DE4FCE0F6B1BEB413AEEBCE22CE460 +:10B7B000BBFB1B3412A6707DCB8C131AF3BD48DF84 +:10B7C00010D783F73FA1F66898F1EFA7C0BFAFBAD3 +:10B7D00082C44FEBAF107A220701FE6F78309EFDD6 +:10B7E000F9D3E173E0F749EE9976039E73FDFC8E81 +:10B7F000F068B5C4BE8EE82876BF427C148F777C93 +:10B8000069E67D0BC47C1F3E8BBD8FE2736303C46E +:10B810008E696B3864C7E205D8EFFF0100846E497A +:10B82000008000001F8B080000000000000BCD7D91 +:10B830000B7854D5B5F03E8F79251372F29EBC4F2C +:10B840005E1220C024241034E24978181064109449 +:10B85000A8C14C00FBA1D7C740AD1D2D3513124226 +:10B8600088A001B545293441B1DC5B6D537F6FCBB6 +:10B87000D7CF7A878788BD80F151443FAC01FDFD69 +:10B88000EABDF6BB11B4E5DED2DF7FADB5CFC99C12 +:10B89000339909F8B8FFFDE3D71ED6D9FBECBDF606 +:10B8A000DAEBBD1FC3D850AEE861AC77DCA08BA546 +:10B8B0003316CAB42B7B05067F5A4D4D35634B6753 +:10B8C000A7B31E8076D9598BAF82B12FF1EF9AC8FA +:10B8D000D3AB888CD5403DA957650A6349BDF64670 +:10B8E0007926634A91B0AD066031646F9C3F01EBED +:10B8F00029546FE3DFA7D53089B19FB61DD53E2A05 +:10B900008BB453B83E20F8273396D5ECF38492B02D +:10B910009E243A119F156C60AFCADFB74F8ED4CF0B +:10B92000C17E33A85ED3801B9EED3E4FAA09BF8D1A +:10B9300082D03400F0C6032E86E3CA5AB8E21997C3 +:10B9400060C65BE6F8B433AA57D83C2CDC4EED0455 +:10B95000042FC059E1070415F0509B99B8DAD4AE12 +:10B96000BA1EF02E67F4F725C37EFA6CD8BEF2003B +:10B970005342298CB9EC7DB63900BB6E48E86D871F +:10B9800021DFB25E60674DF5F16F049610FFA522CE +:10B99000033A87DE90FA90EE8733AE10A93D810915 +:10B9A0000E682F53D692E74079E6601A0BC137F341 +:10B9B000A100C71D3D0F7BDAA00D0763CFB4395935 +:10B9C000683C63CFB62904EF6BF3D0F39FDA547A67 +:10B9D0003ED7564EE5BF68F3123CD0564BF00B6D88 +:10B9E0001AC12FB63512FCEB361FC1FBDB9AE8F902 +:10B9F000DB363F3D5F6A5B43E52FB705080EB705B1 +:10BA0000095EEA6001A4E3ECCD7248047CB3EA3C31 +:10BA10007B1C45F0FCC9E77D6B90FE0C26CCCBD897 +:10BA2000D33ABF64796ED8FA36D4637364066CC0B7 +:10BA3000BA3C37F8DFA67AB3BC12BC7FD697F6EED5 +:10BA4000F16AA4C3382FD22765C90FEB911F535653 +:10BA5000C02BE0873D36554AAB64EC51A5A1D10916 +:10BA6000FCF5888D75A402BD1FEDBD6933C2D3AA54 +:10BA70003FBBF305E8AFA7F7DA6E27E0B12DA3F1DE +:10BA80004D15CA9FE85D4070495D7D12E2C3420BCF +:10BA9000BA0FC3FBEB07E1DF39342D2106ED6B7ED6 +:10BAA000A0F3951C769632F6F69CFB843950EFA9EC +:10BAB000DEC5DD8FC3CBA7EC01610ECC8F8D2DEAE7 +:10BAC0005E3681BE973379FB8D9385487986736E98 +:10BAD000F73297A97DE84F03D67BE3B448EDAF85F5 +:10BAE000FA216CBF5859540DE31F7E5FF4EE816A52 +:10BAF00027EDEA0692C71EE6DD0BF82EF601B3C06D +:10BB0000F84B9A593F2BD21909CA53EB94FE1EE801 +:10BB1000AF2C45A72B933F1A2A47B913D897F03E6D +:10BB200065A124B0627836F2F7061F266B003BCD84 +:10BB30007C692A97B03D467CF67631D003FA1DBE6B +:10BB4000DAD9B707DA5B8DFC5B86F3C8E579B1EF2C +:10BB5000BC8AF35D52E7AC6202BE57E93D7C1746F2 +:10BB6000FC8CEFA2EB61BBA2A9DCF88E5D3C2FE35D +:10BB70003C6FDCCA48EF24170FABEB2AACED8AD53B +:10BB8000F1DB35D563D2D8FD33618C760CB94AB67A +:10BB90006B4935D8CE5CD9BB079A5EB6F4EE7A9283 +:10BBA000CF9B9928C13C2427805E7447EA9F4D694A +:10BBB000B83F05E876BF3E1FC909CA92398407FF1E +:10BBC0009EED6B5D80F27CFF5322EB01385DE6F366 +:10BBD0009CDEAD54C294B143BA7C24A4AFBE01DF55 +:10BBE00027EC90990AEF1359C896598D4FC11B66DF +:10BBF000C8EFBD7333913F6C82772FC0D5B56BAF63 +:10BC0000AB86F666CCFD2201F19DF13B519000FE22 +:10BC1000D754DE5EE5D4A4401FE079DDD4FC69ABE7 +:10BC2000809E2902F30DB847EB11150AB0FE338C44 +:10BC30003562B9B0FB5400E7FF2F356E01E5F92FEF +:10BC40009FF90B15F8FE4D1DCFF1763E7EB42068AE +:10BC500047DA3DC0DC3380FFB2F9D36E0BACC47160 +:10BC6000D877815E82A6ED7F9FE1443BD271C141CE +:10BC7000ED3336384EAC85F72EBF9202EF8BB78985 +:10BC80001AF6D7A124F409503F39A9EAA80ADFB36C +:10BC90007AD18B7A22F96A99F8BED77D531FD2FFE9 +:10BCA000D1032EAA6F4B72F6B9007E463BA7944291 +:10BCB000F93375B28272FC4CF7321FC991222A65A2 +:10BCC00064D71411E7E319CD33DC032C9C2C844991 +:10BCD000AED85AD6877276F2965CD2BF1D82322CCD +:10BCE000559238A8F2745D35C0903B6CE103BB50AF +:10BCF0005FCF74287B157CE93D8E72DBB941F12260 +:10BD0000BF5EA91C3CF03B28EFD49CBE62D02FB68E +:10BD1000948307DEC7F2269839A8DFAB35385B2B52 +:10BD200048DE42BAFC095F3AB0BED888F383E5AB7F +:10BD3000902E9DEC4829F4DBA08B7AAFB24728C245 +:10BD400071DEC148FC3B53AF545BDD8817B463C858 +:10BD50002D1434B8F70945E9040E0BB568278BE5B7 +:10BD600002D4A339124B86F9C971DA2C72AF765A14 +:10BD7000F5804DE78BABFE647D9FC74C30F4939FFD +:10BD8000C2ED50347DA2C795932EA7203E399D3237 +:10BD9000BD8CC63727BD54EEAF265049AE45FAEDEF +:10BDA000A9AF87FA859A7358F55E1ADFABD8503B76 +:10BDB000F263C1FAB1F1BD521353902FAE04E5AB5B +:10BDC000AAF8DD4087E2C6F9E7E34D2EB6CAF121B5 +:10BDD00045A2F1813CAF40792EE916C11044DA2F1B +:10BDE000EB4D6021933E1DBF23D5024FE8CBB1D46C +:10BDF0009FB4AFD8523E7960A2A57CEAFE2A0B5CC4 +:10BE000019BED2527FDAD1060B5C33B8C0527FC65E +:10BE1000A91B2CF0CCA15B2CF5AFFAD34A4BF9D57A +:10BE2000C3775ACAAFB9B0CE02D7B31F58EA9FB48E +:10BE3000B33568DF99C73BA8213F2BE995A8BF0C14 +:10BE40007A2D4A112D7E0953E4E111FA83AE7578FB +:10BE5000521933B5372E91D33BC90BDF99FA75A927 +:10BE60003916F8565D1FA52F2C667ED3F789E5138A +:10BE700099DF542F735995A51C3840F9385187C95B +:10BE8000CF2A21B9461DB4176C5B67C64D4DADC0B6 +:10BE900077EB929C5E078C63E3D5EA8F9BA1FC91C4 +:10BEA000D76C6C037C3357EF776386763BCE7F711C +:10BEB000B79D85D2183B30D31E467D91ECB6F7393D +:10BEC000503FB97FE4C776934B9D0CFDCBE4BA613C +:10BED000867E6C675BB7566A03B96D0B69A5A0B81F +:10BEE000E43A5F18FD1A399DA922F49752C70E2033 +:10BEF0009CA271786E8A4AFDA56850DF2C8F0AB427 +:10BF0000631AE79BA248FA6F78A383EC96AC287F6C +:10BF1000FC6780FD404B09E4E5CCA249E44F92B8B0 +:10BF20006543FD05B954DEFA2391CAD9C5B4022C84 +:10BF30003F93C9C41ED06FE34ABCA45F871F90C85B +:10BF4000EF6899FF960DFD856636606325E0BFB208 +:10BF5000B084FEFAD56C889ED7302D01DF8F177D17 +:10BF600077235CDBB76D36CAFEFD69FE475200FFE2 +:10BF7000AD76FFF3D8DFD654B737A422D64A8180F6 +:10BF8000FCD2E5A8EA2942BFC8B7F56DEACFC6B032 +:10BF9000BFDB964CDEDE08F8DCF6A4E815A8BEE6AA +:10BFA000447D715B7DBA97DB7FDDBEC8CC550AF559 +:10BFB0006E7CB8B40ADFA7CBBE7A1C47FA324508BC +:10BFC00041BBEFE8FC97905E7D5485F709BDB21741 +:10BFD0009B4B646A03D22BB19B79C340AF1B8AD5BC +:10BFE0000DABB07F97A0EC017D9C7B977AF087E842 +:10BFF000772AC55E09E0BC4060BB13FD57E61946D1 +:10C000007A3D6203BB8B7CF304F8612AF2CD1507FD +:10C010006DC837F5CECF1C507FDD6B36B23FEB9E3F +:10C0200094FBD06F509C87B48F804FB256703B55B5 +:10C03000BCEB0AB253BD82B29BFCFC8D0E2FFAF909 +:10C040003B912F803F76219F94E17C746D40D765B2 +:10C0500082BB5F445698947E60033E27E79D114162 +:10C0600072D8D452A12315E0CA8A22294D45FFB6C1 +:10C07000BE039F3575AD523A3C67CC11E44CA8F72E +:10C080004A4A31F1D1CDAB979C42FFA75E71ABD844 +:10C090007FF195CE9B513F4B0AE0376DB4DD379E63 +:10C0A000D2B81D821FE57CB5FC31F9912AE871F800 +:10C0B000AE3ECD4D7C9FA5F33D3C795CB52C91EC1B +:10C0C000EE23B6C0019B295ECB6B0E0B5A057EB7E3 +:10C0D0005E187247E2A9DCE641AA977B1FAB44FFDA +:10C0E000A4A079485809F5F2EEB2F2FD7FA6FADF76 +:10C0F000417E2AB8AFDBF25E711E21FA768A5C1FA0 +:10C1000025A7FA93D02E26CF2B4DED40BD92C65ACF +:10C11000965444F8E639DD4FD9A5FB41863E37FCFD +:10C12000DBA747E2D2F37D22F0F5B3C3FE9E0938C8 +:10C130008EA08DE69B0D87A564E4C7EF2D217E2C94 +:10C14000F09CA7FE9B3F1FD8980CE5373A860F2539 +:10C15000A3FDFA07EE87ED7159E3E4A9A95C8F4CC2 +:10C16000D49FB61EB0EC53E169677ED2A7CC37747A +:10C170001CDAFF152BA8EC21BB3D2C2C01FDF17A1C +:10C180002AE7E7292F290D0CC65114560ED2F39831 +:10C19000FE3C0CCF0A4E179C78129D92D1F3D9DF4A +:10C1A00099FE7BACD7CF94DF2BA6A7AD5859508E04 +:10C1B000FD1D1107F692BA641AFAC3FD9DA97B30E2 +:10C1C0009E6010AF24005CF0403AC150BF07E79B6F +:10C1D0003D94C0D04F5283B2E61A37BABF4236629E +:10C1E000DF458C3F5888C34ED6DD8E7C3475BFC981 +:10C1F000FE33B4735678DA512B5C336885679CB292 +:10C20000C2FB74BA42947212FD25A203FC9F3AF459 +:10C210009980FEFC1120289BC98064C3EDD702FEE3 +:10C220002DE057A0DF5718B2C6432DA73F39CDC622 +:10C2300011352D7150CBE9C433E238B4A756FFA2B3 +:10C24000E5F4DD7763FD16737DA0CB19B772532B30 +:10C250003CB5C7FDDBE7A35E0E4AA4D73ED8F597F1 +:10C2600032EE1F0D67F89290BF559ADFDB1E107DEE +:10C270007D301FCEE0C6D078C0D7A97AED58EB61EB +:10C28000EF9B814300BF73CA816A85CD958E1D6D7A +:10C29000433D932FAB287FCA8CBB7E9A08F0A677CC +:10C2A000A11CE07754358BECDB511BCDCF2681E709 +:10C2B0003536D918E5475AD26D44A7C654EEB7CDE6 +:10C2C0004935FCB75022FADF10C927A2FF3E753F5F +:10C2D0006315D67C859B976B6E2CAF0C47976BE3F1 +:10C2E000EAA7F329C0BF9AA17A49498FD01DCA098C +:10C2F0009EA2B1E11E90B9EAB7E5B3663A66355938 +:10C30000E129A75D1D68874FD43BC97F65D2A70788 +:10C310007F07F017E04FA33E9E723A49C2719E1408 +:10C3200079FB5E06DF9BE89FC9CE886128CFF4BB0E +:10C33000037D583FAA3C78FA8D29872DF8879D18F0 +:10C3400087264D83780CF51A0BB4A35F787B6A526D +:10C35000FAC793A0B88255201FCC95DCDE30D2FFFF +:10C360000F9217DC5AE63833FE9D569487372486A1 +:10C37000F2B3A948DD867185F2AF12D93D259155FA +:10C3800056423B7F6D1B9C721848FFA32FBDAC1318 +:10C390009E5B1B12D6E07CFFA28D31D4FF036D4E55 +:10C3A00086FAFF853685E017DB3C04FFBA4DA5E72A +:10C3B000FEB6727AFEB6CD4BE52FB5D512FC729B58 +:10C3C0004670B8AD91E0FF935EDF910A93701AEA70 +:10C3D000B1F120BB952F3A4B903F9A25CC188D9206 +:10C3E000D31BD77ED7B91CE4C097BCEFDA0CB49F3F +:10C3F000F7497ABE63DFB5074AD19F189A8B7CCB89 +:10C40000345955607E055DAEE005FBB89C60F14B8C +:10C41000A04F8B026E17989C415486D0BF83F94879 +:10C420000FB1355EA76FF2E5B4E317F476866CB111 +:10C43000DAD1783BECC26057378CA79BB1400FFA3A +:10C4400031F2605707D0DB592413FCB4A0EA4C3812 +:10C45000380FC76DD7E55C66012D17E34EDB6080B2 +:10C46000E2D01AB71E877E9FE2D28E9F38D986A26D +:10C47000483C6AC4A1D1F18029BEB7D80FD08CA4A2 +:10C480008F129C02B7936C24FE217ECB4EE5F526DD +:10C490002A6F1C4CA1FC14CF4755783E6B48F546DB +:10C4A000E0296ACAA15453B9B7BC72769A092E77AB +:10C4B000A6DC8CF9C42794B9DD4EC0BF34A9EA606C +:10C4C0009A3792CF7A1B3BE4F92A0DF5FDFF743EB3 +:10C4D000EB5F14AEDF7E9EF19B54CC47849EE779E0 +:10C4E000BE57327E9343F1AD6EF70AD9386F0FC64F +:10C4F000B5C5213101E5E9594676146300D16C8F49 +:10C500005481A11D36D9A3DF53DCAEDBA382149680 +:10C51000E08D315F267B24E17C002D54FB747CCFC1 +:10C52000285E35CA610861B2578CDB532A2F413B24 +:10C53000216AAE299676685ECBFB4CF3CC30BEB355 +:10C54000DAA5C90356F8BFCBEE19FCB5551E74A287 +:10C55000DEDA7A3136DFCE4F33F4FD08DEE2973390 +:10C5600022F428C037C5F8E4E51A843A384E7FA78C +:10C57000CDD26F4BD00A37DF67856FB9CB0A9BFAF4 +:10C58000237BFA95E190F68ED9AE7F04FA12F59BE3 +:10C590003AD4BA10943B5BCD8AE6A13F733BF37665 +:10C5A000E1F85775275AE2CC3FA0CDA53CAA40F947 +:10C5B0007527538F60FEA6B076BC827A63C7CA899E +:10C5C00047305FF3D3FA72B22FD7A4A5109D52C49F +:10C5D000A223EF63BD5B27B10ECCF384B8FD7702D5 +:10C5E00065309E7DE44149437D1FDAC0FAF87A89BF +:10C5F000D56FB8BDD79AB75819958FD8DEB8AEB0F9 +:10C6000018BE577F9820A07F5E547DB6BE04F91FE8 +:10C61000F416E6695656A736A01E33E082EAE279A0 +:10C6200066D8A90EB73F0DF58BB4F27518B7140490 +:10C6300055FB4AF768BF666567749E3744E3437AE3 +:10C64000A6A58E1ED7571D87D1DE59B057382FECBF +:10C6500022F0DB7493FCC84302CAE5CA20D330BF82 +:10C66000B56A3DD3FA61BE24964CF3F2CEE3257B46 +:10C67000302E8466C88F507519BC47E7D7E8F95C3F +:10C68000D92C8905F0DD4A8FC4303FC482C5A42B64 +:10C6900088CFE19F2BBB3F0B7F897AA259A2B82B91 +:10C6A0003505FC2980CF6E11582FC0679BA71DF15F +:10C6B000007CFB46E625778C0D36A21E59590DF6F7 +:10C6C0009FF0E0FE8813FEA3F6D02F043E2B0A9ABB +:10C6D000FC08C403FDC229C87756FF6225FA8553BA +:10C6E000884E67CD74FA3FBA9C32F98DAE0EAB1D01 +:10C6F000B317C4B6637646768CFB4D861D1B37DBBD +:10C70000DB7D05BC1F4E1155CC2777AE961BFBADCC +:10C71000F944FB97B98CD30CF4583EBE8171BC959B +:10C72000303C19DB7BCBAE081D68BB987F2BEAE55C +:10C730003F2AA914D7BC99E29D2CF27C67C85907FF +:10C74000B0CBFB3C03D8B1E9C8FCC6FC089CD0F3D5 +:10C750006782DF4A557721BC378D85E6D461FB1CA3 +:10C76000DEE43C39FF30962730B20FAF3EF6A7CD5E +:10C77000A13CC483E3072E7388F38D55CEFF86C199 +:10C780002CD047A90F6D96806FB609EAF69AA2C819 +:10C7900077A9F89D30C6774B429BE518DFB98DEF3E +:10C7A0004046BAA6A37FC7E991A5978B3A3EE6FE1D +:10C7B00065D43B8A3F09E3A16D9B6505EDCD37C587 +:10C7C00023F352E36E0D6DB649A3BF03B4DB0DFC3A +:10C7D000C5D8F8F761B9B97FDB18F87FDBF4B85436 +:10C7E0007B76BDFC2BE307D537645EC678013F1B23 +:10C7F000FA89AA3F491CAB3DD0991B628FB737AA73 +:10C800003D17E1E7F16F1D13BF38EDC178B7458DD6 +:10C81000D7652F19DD1ECA6738935274844432C419 +:10C820003232EAF77A99DB137F2FAD33EDF033091B +:10C83000E57F54FFABB93F90C0427DE877B272FF0D +:10C8400056F3F81F3D3093D6259E5ACFBC2E40E5B7 +:10C8500029B997F470EDEADE7A3BBCDFD5CC06B09F +:10C86000EB5DCD832ECCD3EC1A1A74A9587EDF9BD6 +:10C870009BB1DFDACE24D2C533592FE5C98BAF96F1 +:10C880007DA8BF93AFFEDCB71AFA294EA992307F7C +:10C89000838E13E51B53EB9EC67E8B6D9A13F55367 +:10C8A000569DAC601CD4690FD4DB31EF751B536906 +:10C8B0001D5F56C422CAAFB1E110FA9FCDEA76CA15 +:10C8C0002375CA4C20F950B737221CCC20BDF41474 +:10C8D0002BA2FC6068BDC4FD4216106E48A27FD03A +:10C8E000BAC308FD84DE03B3917EB7338AC78A5684 +:10C8F000F40A8847D19F93545AE7C5BFE9BA3E94DA +:10C90000086FF27B9E1C993F9E9762F7F1EF61766C +:10C91000C83EE5372B7D6417F4F598E58CF366F691 +:10C920007DF2B7EBE744C1B22340EB4CEC2A639DA8 +:10C93000C95A9E75FA0736A4BB22B214DBCC4BB79A +:10C94000B77C68ED01F4678E342512EF16355BED88 +:10C950007A61945D8FCE77D46A9DB331AEC88ACAAE +:10C960007780F890BD32F864549CD7C5E33807F35C +:10C9700076931CB06605E36A237EDC8D15D18FCAE1 +:10C98000D7FDA8E8EFEB94D0CF900EC53243FB68FB +:10C99000635EA708E3712404685D122AA5B66747A1 +:10C9A000FC5CC1CE9CD95560FF45E6C778AE5D60A2 +:10C9B00032C2917E8718F61B64A07F70BEDD22C351 +:10C9C0007E3739CF4FC2BC9EC3F5B749981F4D067D +:10C9D000877810EDAAEC5350E836D9D483189F8499 +:10C9E0008EDB689DB043F12EAF87FE3B8E65B0763F +:10C9F000A8B62989E75B3A3C5E676505AE6FA82B50 +:10CA000018C8EDBDE9F31738AF06FB890B79101F85 +:10CA1000FDE0F1D93D21B0978E0BB9CC6FCAC33A76 +:10CA2000E40043FA392E1458DE1F6C0355303E02E1 +:10CA300037B88BE7203EDB31E90B749FCDBC9DF806 +:10CA4000DD6CA764590F715CC866FEB458EDE759F8 +:10CA5000DE1F047FDAEFB89CF6132DEB2B8E0B252F +:10CA600071DABF22AA7D2566FB9176D32CED6E94F8 +:10CA700019E5D3434D89C40FD171CC3FA537FC389C +:10CA80003D63F47AD4A63CBE1E457F00CF4B4FA138 +:10CA90007D11FF98CEF3A8731696C8947FCBB3AEE2 +:10CAA0004BCDD3F9DED82F3127DD16E52F7B65CCB2 +:10CAB000D735B8A3DF5BFDE405C84B31F6E58849FF +:10CAC000D58388CFBA150E15D7CFE3E5DD4FB73143 +:10CAD0005A0778C7155881FAEA68FAAD091B6B0145 +:10CAE000465D077ED47BE9F72F0801BD4E0B3C9FC6 +:10CAF000B731FD60596B8C38CF7836CB4CAEAD1A60 +:10CB0000A3DC1E2EC37D4ECDBA9C00974D46BD3A88 +:10CB1000520E03AC459F95F5111F18EF570404CB37 +:10CB20007AD469CCC3737C6A5A63EC0F33E35397AE +:10CB30003A46B9235C43F8482C100F9FBAAA4BE33E +:10CB4000F3BE9EF7DC98FE66D958F8AC90F9F8E28F +:10CB500096DB07893E2B44234F6FC56705E3F4BD81 +:10CB6000243EFA3A05E05333D67C213E7563CCD798 +:10CB70000AC720D16785C4F759C5C2A7EE72E64B34 +:10CB8000CF0F6EB283FE94E2E7098DFCE0758FEE65 +:10CB9000B5E607437BAFAD97D14F653ABC7D4118F1 +:10CBA000F039BF705D39C9971EFFDD8A1D82BEBF97 +:10CBB00055E6F2784B9EBBAFDD24CFBB41AF69A0F9 +:10CBC00017FA40FFE0730FE8096D3CEE5FF310FCCD +:10CBD0002CC4931AED5F2BA7E73F01DE58FE5C5B88 +:10CBE0002DC1463B156B048A2B27DF25505C194D60 +:10CBF000B75B33781CB92D5BB97935EAEFFA04BE1F +:10CC0000AEB3E62A08A52371236303A4DFB7DEC40D +:10CC10002AD1EF98B88FE39D3E27B34F12904E87ED +:10CC200007DB50CF2CB3A9986FDFA4327DFF0AC475 +:10CC3000ADE0C7B58ABAEE010B83F9EEA1D0DC678F +:10CC400050FFDC9461D3F32ECA91034807AF5D45D2 +:10CC50003B76CBE96C8AFB4E644B0CF3DC0E47DF72 +:10CC60002B98E70685E8DBEBA5BC8B252F9E7CF196 +:10CC700097AFE03E9277C07E635E33C367CD9B3F44 +:10CC8000D6FCB40DF3DECDADEEB5A2175117984822 +:10CC9000F8DBFBFA8A1085B082FE618657666180F8 +:10CCA0006F3CE3A07D0FDB5C61F223B609CA703BE9 +:10CCB000C67B0E2E7FCD5171ED2D5130C355728C38 +:10CCC00053A5E6645C7BDE84AF668EA67F74BEDD12 +:10CCD0009791944EEBF27A5EFD0B56F1E81C2CCC4A +:10CCE0004B25672EFA7B237FEECAE0FA75939DEB06 +:10CCF0009BE87A063E2D48C31AE4AF0BDA47B60824 +:10CD00007E05F29080F6A63008EF4D7493D3870429 +:10CD1000D4EFF1F0DF2D7C9ACDC690DB02B6E5337F +:10CD2000690AE5CD3EC6F9201912468FFBDE51E3B4 +:10CD3000AE7BBD94C59217BE8E70CB51C9DBAE469B +:10CD4000E862D0E1FFB5DCE4EB74A73F539E50DA14 +:10CD5000E055C9FFCA1479FE35BDE113790A2F3FAA +:10CD60006BE113EB7E57E9E027823A39C6FEDFE03C +:10CD7000B0B011F3421B78BEA820FC09DF7F1B6412 +:10CD800062A73BB2EF305ABF45EFC795DC819F0EDB +:10CD900001FD3C2199F6FF851A023F1BA23C9D43F1 +:10CDA000C1F5821F273EF4D321C03B283B1507C89D +:10CDB000C9F725BF1FF5E05F45BF5204433E5AE067 +:10CDC000DF9B01EDF728CFACE957516F5729B81E0B +:10CDD000DE1CFC41780EF8654A5AECFCAA61470754 +:10CDE00074BA9DB685F3711DE14241C340460CBF44 +:10CDF000A039F810B5374BD7E7D1E5AFEAEDECD461 +:10CE0000EDEBF2BB5FF8E459C03B51ADA81200AFA7 +:10CE1000C48A70FA52184FF7EB2555E8EEFF8B5E87 +:10CE20001F7CFB6AE4E71DB9FE97334C7472AA8A33 +:10CE3000EC277D353013CB67FDADE257AF631EEABB +:10CE40003AB78271DC79AFAD5A2C1E8D07B4F32A44 +:10CE5000E2EFBCD0437C6EB4F3B26B68A7BE7FF642 +:10CE6000BA53104FBC9C32942B00FCFA1313AE4BF8 +:10CE7000077E7D39632817CB1BDB2FF41C46D8C6F1 +:10CE8000ED85E747177A4230DE590B3E7DFA519423 +:10CE9000D52BECB4AF6FB3EED718FD5E9529D13C1E +:10CEA0005F9569A5C3F1BB800EE9F1E9F0C1683A6D +:10CEB0007C60A6BF81FFDA426D08E90348262F0592 +:10CEC0003EED6E63E1D580A39635307F1A3491AD87 +:10CED0000EFCE3A30CC3F4BE7AB188DAF913D6775B +:10CEE0005EE8FE4C1A1769E74C81F609B67FFCAE86 +:10CEF000838487EB185FEF65E9210DF5AD06F3FB41 +:10CF00009497BE1F8EF5BD311F0FE57139BB298B7C +:10CF1000EBAF54DD0FEAB1F77A96C05329FDD17714 +:10CF200015F8AEABA8B72916FF9DCBE47E2E841C66 +:10CF30001A7ED7A9BCE05C69E22B45A7E3FA7CED39 +:10CF40004BC43711F7BD41F9C3B5403FC073DCB1E5 +:10CF5000B42A8AB74A59F50D209F13B3F8FA02E0B4 +:10CF6000EDC8C4FA337B5177315729C7FB61CFE352 +:10CF70000CF305AE0A78D2FB218672E2627E05735D +:10CF8000419999CE873B6B711C7DE5C807D3B37679 +:10CF90003E8CE702FAD147017FD60B30C641BBED8C +:10CFA0005007FDFD1C3BC555D1E3CAD4F1F84EAE88 +:10CFB0009689788CA29363E8E947E1FBCD93EDDE97 +:10CFC00010BC9A25F636AD44BE5AE0263B0FEF9BC7 +:10CFD000FA4CF4BA3693B7776D26B7CB9BFFD3D90B +:10CFE00084EBB1D174BE5C7E9BACB767E2B7C999E4 +:10CFF00031E40EF86D0AE23F8ADF92E3F2DBF4CC13 +:10D00000D8FC3623161DA261683984F92649CF332E +:10D01000CB17A6877E09B05360018707E1DAD0EB12 +:10D02000B85E5D2C13AC1DAB0F1DC672BF3B80FEFE +:10D03000C5D3827F1EF6635702B47E28B9359ADFC6 +:10D040003F647CEDF6B595D6F66F88D5BE9AC9DB00 +:10D050009FB5C0EDC7799BA5FBDF063DBFC8E4E7E0 +:10D06000360E65F2FD3CF1E4617CD6D8F2304EE735 +:10D070002B908756A4F3A5E4E19A2C2E3F302F770E +:10D0800050FDB8F2F0223D132BB83C24A23C78B1FD +:10D090003F166AF420BE9CFF83998F3F8C797143C1 +:10D0A0003E16663D6B918FB900A37CC41B5FB93EF1 +:10D0B000BE71383EE86761A58DF6D39F6793F7A0F0 +:10D0C000BF3AAE569171BC6D9906DEDA439964C7DA +:10D0D0008718F2693F1B3EE040B9ABE3FB96AE0F09 +:10D0E0000D6ADC2DEA654BD01FD2F97AB7B17E7696 +:10D0F00005DF1FCDE45E86F488965B57E940B9DF13 +:10D1000044DF3C9DBECBB37C8F20BDFAD9D004F464 +:10D110006F8CF9881ECF637A7FD505DA63B1F8FB8F +:10D1200052F6E237997CBFEE6FF47652FFE60CC4FC +:10D1300092EB59F7FC96E4395E3B2FEADFFF5CA7E0 +:10D140009BA1D71351AF23793CA130D2D9A4D77F6B +:10D150008EF83AEFEAB1C829C8FB7331E53D0DE41A +:10D16000BD28A6BCBF1847DEFF39163DBE05F93EF7 +:10D17000184BFE76665E1EBDC52C4E6F31EB9BD103 +:10D18000FBAC4EEF772F9FDEEFC6A1F77B99B1EC9A +:10D19000797C7A9F8D43EF0F3363D973CF287BFE61 +:10D1A0006FB1F07062FF0295FF07C95B5E2884745F +:10D1B000D45671BA1BF51ECB54F47954D7A21FBDB7 +:10D1C00013FC308C17C1CE9DCFFCEFD1E72C2BC6C2 +:10D1D0007CCF12B95FD6F4A3D6874315DF4A3F4907 +:10D1E0005935A3FB792D938FE752F65E8DD8FB74EA +:10D1F000C4375A5FF6EBE752BE93EBCFCD22BA0CA1 +:10D20000CD47FDB4FBC15401F3F4795A5840BF3BFC +:10D2100053E7E32D992AF56B7CB75B0E0B32D60FE3 +:10D220002802EE0332B557969511BFBD683C00BF8A +:10D2300072ACBF3C4B9B80CFC7F4F18DF86DBAFF49 +:10D24000D09FDABB06F5F7745D5F4FD7ED8801FF1D +:10D25000255FABCCE27E56353EC10FBF0FB778A33A +:10D26000FEE6FE21D7D7C67844DF001B42BB02E1B1 +:10D270005C9F45EFAFD86BE87D3CC798897692EB11 +:10D28000FDAB11BF9A2C458FE3787BF1F05C98C51C +:10D29000EDEA427D1E0C18F09CA7E3397F2C3CA3DD +:10D2A000E974B9F8DEA7DB75C077A93EAF31DB338F +:10D2B000F61B18F366472501F1C5F14E2EAFBE638C +:10D2C00025E4A7B58CD86BDF6DD89E96A8C8E91465 +:10D2D0008F2A09D8EE4E3D7FBCF3AEEDB41ED6BF0B +:10D2E0005EA9447F2E670DB777EA5D05FDB87FE044 +:10D2F0000EBD9D683E1DF9DE3E30615A05D1E56EDA +:10D30000ECE79A3AEE1F261FA3DDF64C2B5464146B +:10D31000A65447C883716DB710F2A01F149AEFE6A8 +:10D32000EB599E6531F31EC6D3C86B18E3659EEAC0 +:10D330004BD46FA7FA4A6228E0FB2AF51D21F2338D +:10D3400022744CAB24BDE764B674D47B8E14CA8BB4 +:10D350006DD5F916E6A99BE6093753CC8CD07574C8 +:10D36000FB7CBEEA7D0101E9EC2A87AEE0ADCB177C +:10D3700022FF49547B893F124A397F30CFDBD45E8C +:10D38000048F69D3AC78544E433C22ED7719F83CB6 +:10D39000F555F031EAC5A70BAF176A0850BE20B4A7 +:10D3A0004166B86FE3C7890F513E211872280E7885 +:10D3B000FED555D0874ED8D102FF735C7F0466D06E +:10D3C0007E4516988A4F375334E4A76BBCCC8BE765 +:10D3D0002DAE71BA431847B38BF2A7E67508D3FA9E +:10D3E00094F065E2D7EAFF252E37D6FE2F376FF18E +:10D3F000AA2EEFA6BCC5AB593531EAEB798B716C1F +:10D400002884E75720D6E3F9540CFAD06FF6AA34F3 +:10D410004EA3FE5BBAFE488EE3F7BDA5F76BF0F7AF +:10D42000F28D0DAC98F409D80F94CB26A6E0FA370C +:10D43000DA7DC46761E5F7E8FDF92053F07C9E765C +:10D440005D8A8CF958637CC6788DF63FD6DB1FC1A8 +:10D450005FDF777FDAC69A7EE5E6E3AD32E1955C81 +:10D4600058FFB179DCC678A3F13EDA160CCFB1E1F2 +:10D47000FA969F9E69C1D9EC435C3F74F2F9B637C6 +:10D48000816465E332F3E06DEB00855D92FF336C00 +:10D49000F7EE2B3E79040FA60C3AA7B5A33F71EF28 +:10D4A00042F8A688F6A74B385FDF367F7424DD4F3D +:10D4B000F9B00336A72229A3F9A3636E65533A692D +:10D4C000AA490B8F41BCDE71DC7BCA0DB0DB33692E +:10D4D000A107F0EF78C3DB9401DFCDDAE1DCB20520 +:10D4E000E12582BEEF739FBB1EE8D6319FC3993BF7 +:10D4F0001A16E2FA54C7CD02F913B9F03DC107ACD0 +:10D50000FE5E44BE3612FE4BB2B95DEBA817E2D404 +:10D51000E3FA4FF570FBDAB168EC7ADB8C7A2BF822 +:10D52000F9FF78F5D665F37A410C5DD03FBD2092C6 +:10D530003EEED05243B722BD2E8A747E5D08FEEFC8 +:10D540007FC575E21375596A0FCF0F4EF2909C2B71 +:10D55000C7A6C2FBED0DA288FAE8D0D5595BA6019B +:10D56000DCDB200A789ECC21FB681D13F7F8B6A3FC +:10D570003E52D7125F74DD0CFC5C49FC3C8DDAD165 +:10D58000F87BED07FC3D1E9CF34D8ECF67C04757DF +:10D590007900FFD7CADEF90EFA517F16DC01B434E8 +:10D5A00083CE922D5E68E7DEFD129D678BC72FB19B +:10D5B000C6BB1CE0D76BA57E3C57F07A6D1A8DBFB9 +:10D5C000F762EA1E4C66BF9C374CE33C512F8A1B26 +:10D5D000541AFF7C8F493E0ECD744C1822FBE7BBDA +:10D5E0000EC7A3BDC5EDDD18F82FC57A5F1F7FEF0D +:10D5F000293FE27FD14EF80BFB3308FF13B525B46A +:10D60000DE2B257DEE467C603C2EB42F806F0BF622 +:10D6100027E50FE5A17E30F0BD5CBD78A767543EDD +:10D62000F74E4F0C7FC0D013E80778B87FF4F9BDF0 +:10D630002A9DCF23FF289E7E7AD0F395F5D3839E33 +:10D64000AFA19F80EE1BBE09DD99C654057CD05961 +:10D65000F88AEA69A4EF41C7D0FE18E14280F818C1 +:10D66000ECB4721DF2FB7A1F87ABC0C704FDDDE18D +:10D67000F77BD2A4F8ED1F2DF03D86F8D9D287A410 +:10D68000AF926FDFED1965B7769BE9134DA7B9D25D +:10D69000A71D785EEB5C9D40E3D52E303AEF08C1C4 +:10D6A0004A32E23B4BB3D139105919EAC0F5B445BF +:10D6B000AA1C40BD89679365D33A438AE664B26980 +:10D6C0001D29AD51B1C0193E8FA57E56936A29CF51 +:10D6D000F6975BCA73D7782D707EA0D652BF30A85C +:10D6E00059E0A250A3A57E49B7CF0297F53659EA73 +:10D6F0008FDFE1B7944FE85B63299FB42F608127E8 +:10D700000F042DF5A7EE0F59CA2BC3DD96F269471A +:10D710007B2D70CDE00E4BFD19A7FA2CE53387F673 +:10D7200059CAAFFAD38005BE7A78BFA5FE2C36B2AF +:10D73000DF4AE0FB2F455536F851B494F375A71036 +:10D740007BB314CA9732E3CF6BC3F5D6591E89F663 +:10D7500011B18536DABF1182FFD0BEFAA2F6356963 +:10D76000D5D6FD1EC00F8776C1F7F5B50EB2A3B3AF +:10D77000A2F64BD5B3E2643C773AEBA8C470BD7512 +:10D7800011F295389AAF18F01FF2D5173A5F8D1E37 +:10D7900097708971696FE23E34635C8B715CD0EF86 +:10D7A000F530AEB0695C9ABE9F1BDAE94C2B1A3D8E +:10D7B000BE59FABEE6E871CEC2F5CC71A3C717BD5B +:10D7C0009EE9CAD6D733C1AF359F8F3AF7363F1F90 +:10D7D00015C28A480F4D20FD708E813C01EC2B92C2 +:10D7E000032165F4388CF5CDFA90D38BF4A98776B4 +:10D7F000FAB000730E263FC8A55AE52EB1DC2A7791 +:10D80000495ECFD87C031332267DE3F0890AFFC539 +:10D81000E293C50CF802C6B518F802E9BF58FE7AC3 +:10D82000F49C1645CF2F585D32D2465B9C22C73AF6 +:10D83000D769D00BE29E99D919F1EDCBBC6C6BFC8A +:10D840007A19F6655EB6B9FEE5DB97EBB3BF815F8B +:10D8500002FA7F297ECF64BFFA55E296DBB247D940 +:10D86000E7DBB2C7B0CF23710BE6BD119FD225DC39 +:10D870002F03DF8BFB5F4394DFBE337BECB8E5CE39 +:10D88000ECE8B8E59C8C71CB01DBF7293ED16EE565 +:10D89000F109F803816C1E17F27826C8FDBCF3DE8F +:10D8A0008CC3B845B81F731A35663A68DF453A5CD1 +:10D8B000EEF81FCA1E65FF1ECA1EC3FEBDDCCEF3F6 +:10D8C000132F1FE7E7FD5F4997C219408FED6C32B8 +:10D8D000ED7331D65B1AFD8CF220F5F2B67D8CE744 +:10D8E00033BBB1DD46B55EB8C38DEFD7D2331EDF93 +:10D8F0003D91FD95FD9A27B2BF9E5FB32BFB9BF830 +:10D90000355F318EDA847114B4DFB191D327F47EA0 +:10D91000125F17D1E3A94D9BF573B7ED3CEE39A02B +:10D92000F3E72F757AB4E5F0FC49FDB85AF2633796 +:10D930000A49A42F379E71507B5D36A18FF1FCF40C +:10D94000AF715C87B3A727A3BF7AFED8A174BF8944 +:10D950005EA7753A9C8CD0E165A4DFFBDF7BE73BDB +:10D9600059663A34ADA2731E113A58EFC530C66FEE +:10D970005706685FC73CC9CDF77397323AE70F9CEB +:10D980007CFDDCE9FA111CF8BE332FC4503F26663B +:10D990004B8CF4B8CAF72175C37F14A74A3F09A37B +:10D9A0003EFC42B793368FF5DC8C4BDF2F93187516 +:10D9B0003EC6A59FBF765DE2BCEE29434FDA5916FD +:10D9C000E2DFD9B69F7D68DAE723EBEB61F1F4E59E +:10D9D000C7FA7CC8A23684F43DABEF178CAE6FD487 +:10D9E0008BA6D7E1A10F7B26A5E3396C91E68D319B +:10D9F000BFC71CAF8DF073EDF044F3BEBB14EDC296 +:10DA000044F33D06698D6C9219CEF0392799EB6786 +:10DA100035291638DBEFB1D4CF5DA35ACAF303E53D +:10DA200096F2C2A0D70217856A2DF54BBA350B5C6A +:10DA3000D6DB68A93F7E87CF024FE86BB2D49FB494 +:10DA4000CF6F299F3CB0C652FE0B36B400534255EF +:10DA500039798BE680B1ED3AB3DC83FBA83666DC1E +:10DA6000E4F4C7A0B7F13C9CC1F93D5EB921FF2F9A +:10DA7000B7F9C273CAF0FC7393451F34EA7AF170A8 +:10DA8000DB1A2A3FD216A0F765397C3EB5A3F51AFA +:10DA90009E3F00D487D1BE8B4E2D84F3E9D09CC32A +:10DAA000125FBF28CB41FE50FC8CE7B535CA435FFF +:10DAB0007301FA338DB79EDD1C9E631AEF6C67AB62 +:10DAC000A57CAE7287A5BC1118F34A8885AEF5AC6B +:10DAD000B5BC9FAF3E60F9AE3D6FE50E94BF4D1EE5 +:10DAE0003B43F9A37D69746E376F9106F86CC2FDF4 +:10DAF0009439E0E7E4642FC2F5E14DFB577AD08F0B +:10DB000031E87D7FCE2C9DDED77A30FE3D9C02F43D +:10DB10008C613F2E979ED1743CAAAFDF35DAADEB16 +:10DB2000F277E6707B693C417F5D9F83F9BAE3D26F +:10DB3000E77E15F11F3BAF11DD7F74BFA0DF6EC61E +:10DB4000F6FE0C7A7E3B1BADDFBF93C3D7D31A45DD +:10DB500008BCC05F6AB4F536FA481F04581FD49356 +:10DB6000DFE6E70C3766CCF3E239C9D539B1F3FA11 +:10DB7000322896B0492F09453736A15E6ECCB05396 +:10DB80009EAE31CEBD69B7EA7AFD9BF2C9D7E78F69 +:10DB90005916FEB82AE72AE28F78FA1EFEE47C685E +:10DBA0004756217EE77A3EECC7781ED7FDB81C7435 +:10DBB000C5928368BB19647CBF3E73DB753BC8EFBD +:10DBC0000B3C77348DCE69C7E3BB4D6D8A22C3BC55 +:10DBD0009E53D464DC9769DC57010EB0C7BCAFF923 +:10DBE000BFAB9E011BFB09A3EB07F19F98BFF0B8E9 +:10DBF000695C747B191D36F297E3FE8817753E5FEA +:10DC00009AA7FD23D269699EEFE7F8644E7F39D267 +:10DC100009E0E7095646E05FE6D0FA04C0987FC500 +:10DC20007B672E63FD01BEFB35B5238FB4B39FDA4E +:10DC300071F37600FE2D95A78FC02F119CC7EB5F67 +:10DC40006E3FA6F9E4E31EE4F7917E2E6BC978AF30 +:10DC5000EA4DC155E48FDD1CBC839EDD6D4A0AEEA2 +:10DC6000AFFDA04DABC07B2D6EBA799A82FB5E6E84 +:10DC7000BE7D153D8DF6FDBABCD88B64BAE7442A4B +:10DC8000127DCF103FF1752709DC1D4ED74EDD0FF9 +:10DC90001E9E8BFCE3C473AFE027FBD7D757745AA3 +:10DCA000CE59F5321CA74B95FFCB1C67F5DAB4F7BC +:10DCB00068DCEECB5BD7193D4ED039D0EFE7EED222 +:10DCC000BE10F17183126BFDC8186FBCF6FD71F4C4 +:10DCD00083315E836ED1FB58379736F8705D5412EE +:10DCE0009C74EF145ED7407295E4D4E58AD76F81B7 +:10DCF000F65F403E95BD2AF2698BDE9FA4AF83B6E6 +:10DD000000E9D6A746FAEBB5F9BE44BA8CA2E365A2 +:10DD1000D2E914EA611BC639032E3A37C714C1ACE5 +:10DD2000C79BF47D536040899E9B1F9ABA07E9B751 +:10DD300079E53F3B45C02F3B97FBBD0F579CABC1DF +:10DD40007B7D1F66C3DFDB837EF3FA2486F15753A6 +:10DD5000EB1735E67B7D5B0E3DA9E0FEE0A6B2CE7B +:10DD60000C5C3F6861F2E7663F311ACFA6E03DC424 +:10DD70008FA176BE2EC0F4796D09F1F33F06BCAADF +:10DD80001BE0228CB7B89E6ED1FD4CE3DC8F9494DF +:10DD90006E47BFA43564DD77BFAADB0A33B37F2AA1 +:10DDA00045E2B7101E6EC0716D14899F76E20DBEFC +:10DDB00025B81F3A4CCF7EDCC75D13C1277FBD401D +:10DDC000F8F89972442B1A8DCF283C986AC7762EA2 +:10DDD000179FFE3CBEDEEF70B25022749D0EB41F42 +:10DDE00044FAC87CDFDAE36E030ED1A1525F295FEB +:10DDF0008775A9BCDC5857CFF2F7315CB74DAC66DC +:10DE0000743E44C47A18F7250E6A785EBC75E7C084 +:10DE100022CF04282FF57BF0DC01C0C7E50CDC5FC6 +:10DE20000030E579068E1FAEA37BA726E2FE606771 +:10DE3000E773C78F5ECDF8554BB48EF4DC713C7F31 +:10DE4000DA6FC078F012C6D39F30026B4E0FC0C598 +:10DE5000237008E1DDFABE95D69DCF1DEFE4EB0FF0 +:10DE6000CDB919B86E2C92FDA967497D749EF45BFB +:10DE70005E0FEEF7ACEEC5FB29432ABF8F74336308 +:10DE800096F5F5EE5C3BD1FFDFF3FCF7E4C23369B6 +:10DE9000FD30A5A7ECD97212F257641E0689EE91E7 +:10DEA0007918E0F3503D48F390543148F350A89E60 +:10DEB00063C5309EC23A9E7657611C746F44A7A812 +:10DEC00084F145692AE12D56F3F5F5A45A41417FC5 +:10DED000A847DF9F707D35BF774171F038BD3D9712 +:10DEE000F37F6F2EDF5FDD9BCBFDA0647503ED5BE1 +:10DEF00074368AB40E9F8C4FB779FC9D7A7DD962B7 +:10DF00002FD616FAB7E49AF220309A8578AF98B3F4 +:10DF1000283D15D7C5EA55F93E8C2B7FAAEFC7825D +:10DF200079FA07AC7FBC3A2DC1CFE7EDB198F3A6E3 +:10DF30008FEB52F3166FBE8CB8385EF94D374B74C9 +:10DF40009E5974FA9FB811F0BD7B7F1ADD4777B2F6 +:10DF500049AA1E04F89EDF65D17E909FE7723B7F41 +:10DF6000AF389C89FAAF3BDCEEC3A7E3C5D650AE11 +:10DF70001AB9AFC168F7DE97EA69BFD386C4717575 +:10DF8000E83745E371F2E2AB6E9C876378DF5005BA +:10DF90004D28E5235B48B8D8C83D66B7E9BAEB75AC +:10DFA0007D7EDED6FDE293F210E57B4F7A20FEA661 +:10DFB000755BEB7DAB2B7D821DAFDE6989BCE7799C +:10DFC000CDA0ED23F3BD16ADF2123BF6077AC69253 +:10DFD000AFBC71D912BA1F65951EBF83BEB194DF65 +:10DFE0001E95FF5CDE14F167CFD3FFF7113D96A9B4 +:10DFF000DC2F5CE675F4E13EAB1B7D563FF89DBF20 +:10E000004B744FDE49FC16E87DB279FC1EAC174D0F +:10E010008F9C3C63FC3C3E18A10FA3BA6C99EF0C9B +:10E02000D103EF0391ACE7A4891E97A2839FA5CCEF +:10E03000C3CFA2E9B06A19D0A778F4F84FCA3EA2BC +:10E04000CF49A00FE63FA2E9314F5A68C375FD558D +:10E050004B0466CE9F18F846D32B9A2EE07F9E4C39 +:10E06000047A7CB885AF17BCA98F5B0AFF078DD3F4 +:10E0700087796985C67196DF0FA1E8FB0354DA1F23 +:10E08000733B1011CFC12E45FB6169D767C7BCFA3E +:10E090004A7D9FDE283B22351F31E76DA2EF35898F +:10E0A000C6337A1C8B747B31EA7E35399C87FE42FD +:10E0B000729E9EB79962CD6FB3EA8C987AD7C8D713 +:10E0C00044E49DF3554B7089251E12987F0456C079 +:10E0D0003EAEF3482A9EE37EA329E30934B73738DE +:10E0E000F9FA1E9316923FF5C57A81EE85B981390A +:10E0F00055377CB706980CC7E79BE322D868F75CD6 +:10E10000EF6774AF7FC8CF02781E6F1D341FAC8AD3 +:10E110008C739DC74EFD44FB27D1E39F1219F794E2 +:10E12000AF32EEE7F00E971ACCAFF27D35C3773001 +:10E13000B6A732926765791AF75F33F9FA6B435ED7 +:10E140008AAE970314A75D46BEB5212F46BED5CD36 +:10E15000866CF8FD6D4E7798F6A1046D9F8EF08168 +:10E16000651F8A9F611EB52BE74E2FEAB9AE8471F9 +:10E17000533059DE8D5566521CB208DBEF4AE0FB86 +:10E180009398CACFB125E07D0112EE0303FFDD4471 +:10E19000A751F6F8F0EA7DFDE9787F9C4CF7C08B3B +:10E1A000CC49F6C1FF80A0C7AB6AD7816AF2776914 +:10E1B0009F6A4BD076CEDC9E3FA994EECFF117013B +:10E1C000412A11CF89044BF56C1837A1B3721E2F69 +:10E1D0008DF41B82EF4DEB4C7E9C663CDFEB74664E +:10E1E000521CD56D6ABF38567FA0B5C6C85B45B70F +:10E1F0001FDD5E97BE0FB3CBEE1DD400CFAEDF4B5D +:10E2000095ED8CE389F1E6DA3CD16267563AD31496 +:10E21000D974CEFE6CB6DB72CEC5781ADF19741DC8 +:10E22000F1CBD8C21387F3227E99DB3EEF84C52F52 +:10E2300063F34E7C13BF6C47DEBC13786EEFAFEF19 +:10E240005F4BEB2BE702A0A82A23FBA464DC170793 +:10E25000E32CD0F74931599D80747606732DE3EA9B +:10E26000CF5309EF3455A3F3AC503480216D9AECB1 +:10E27000A5DFE9D86EDC03A0AFAF6CCF51527AE8CE +:10E280007E23BE0F4B6E52048C230DBFDFE8DF6888 +:10E290003FADDC2BE0FD61F1D6319ECFFBCAEB67D1 +:10E2A000CFE7C5583F3B26043EF821AE2FBC265190 +:10E2B000DCB3C2F300BD8F8EAB7F93C7E3A55D9245 +:10E2C000FF37283F834D6FADF83EE6B95E7450BE10 +:10E2D000F9EEFB3F79A446453AC1FC4FA378FB0910 +:10E2E000CCEF4B6522F9E7DDF93C3F27B50B14175E +:10E2F0006E56ED8D2FC2F3604EFD478897DA18FCFD +:10E3000000EF3B3E57EEB3A15C1DCC9943EFCF9598 +:10E31000F37DA9E73C095EB453C6F75D09FC3EDB1B +:10E320002EFDF75F4EE671FFEFA44ECF13FAB3DB7D +:10E33000E62F0F54E07E7A8126C918BF530ED1BD57 +:10E3400010CE0B32BD970481E2C5AE047FF9F74CC5 +:10E350007433DA755E00E5302DD6F7767A8FE3A157 +:10E36000EF53ADF7EC7EA07FFF818E8FF34222F555 +:10E37000D7950A78B9CDED8CE3EFC5D8E7881BF3C4 +:10E38000667F88743F98A37D944772A3EB43CFD1F7 +:10E3900053C2B8CBD18B7C7D69D0036E3FCE37D8CA +:10E3A0009B32D0CF3DE5E736727DE4A47519935FCB +:10E3B000A2AFFBF3FB6C5AF05FD4DEB0ADBA1A57D4 +:10E3C0002399FA9477B41FF381761E97ED46EEA554 +:10E3D00031FC4510F323B8EFE18F3AD8EA2E9D8740 +:10E3E0007EECE23AEE27AD423F89EB4B8B5F13EDBB +:10E3F000FFB8995FC1FB836EF7C80AFA13D17E504C +:10E400008FB694FC851EF017F0FC52B41F64E89B95 +:10E410002D4191A13EDB5A6D23BF7E6BF9D06BD7A6 +:10E42000205DAA6595F21AE583CB6653790DF5F365 +:10E430003A7E3A93EA93DD0B7913887E8B6AFE402D +:10E44000BF8B60CCD3D6EAB313D0EEECD6E711EF96 +:10E45000A19D9B69A203E37EF2ED9E1291FC253DF6 +:10E460001F72F8C104BA1FFD03AFBB0FF3B973F5F8 +:10E47000F5AE555B255AEF5A5579BA1ECF45ADDA40 +:10E48000289077ED0FF89231CE6A59BFD48EFB17E2 +:10E490009495EE00EE056A095AFDA7E8781D3C0A3E +:10E4A000A2CF4AA04F2C7F2BDABF8AF61B6AF2F567 +:10E4B000FB67AB5815FA0D6FE8EB5C86FFB0445F65 +:10E4C000E702F6B02F31D931C37F90C586BA7C18E8 +:10E4D000EF4A99AF5FB3BAA544D7B9D2A7AF5D836E +:10E4E000F25F5D5C8CE39DA0E767B606DF7362FCBC +:10E4F000B9F5A244F2B5DBCE487FEEAEBAF2E976CA +:10E50000C0EFC08313B33E84F2C5F9767E8E4354C8 +:10E510007F5C87FED1EF6DA4CFE2D93D675062A545 +:10E52000206FAEA0404F631E92822E269BE43C4992 +:10E530001F4F46F5B0506C92EB15F91CBF94F53C9B +:10E540008E05A60FE5025DEF518BF7509C28ABE4DA +:10E550001738F355BA17DEA8FFB4C0D703ECFBEBAE +:10E5600035CCDD16021ED89F0A78A07D290A261216 +:10E570005C1C4CA3674930859EA5C15C2A2F0B9675 +:10E58000D0F38A6011BD1F1F9C447079701A3D271B +:10E59000042BE9393178153D27815DC17A15C17A9F +:10E5A0007A4E0E5E47EFA70497D2736A70093DBD9D +:10E5B000C15BA9BC32B88A9E55C1567A3F2DF80F6F +:10E5C000045707BF4B704D702D3DA7077F40CF19F3 +:10E5D000C10E7AD606DBA9DECCE0C3045F197C8CC1 +:10E5E0009E5705B7D1B32EB893CA0DF93B81FF04EE +:10E5F000FB7A7DCA0B0ABF7F3A4C7ECFEE38FAEF2A +:10E6000027F95C7FBAF3B5CEFC8C48BD2D51F58D52 +:10E610007A3BF2B97F619CEB139D616709C5D325F5 +:10E6200055184FEF0E8A1ACD5751F11EF4BB1FCB70 +:10E63000E7F6D469E3F7191AF173CA1C7E4EE89E17 +:10E64000FDAD7CBDA136EDB2F2311DF9FCFBDD72F2 +:10E6500088FC83DD0146F72FBB4A07056CA7DF2343 +:10E66000D3EFAAD8B33F3F80EBF88B6AB46AD48764 +:10E670006AC84F799CC5DA6C828FE5DBF4BC8DF6F5 +:10E6800034CA4D6175C602DC2751D82962388D79AC +:10E69000977A84D5394C09B348BEA33FC16A870E27 +:10E6A000E71BFED6D0E3587FF794D22A7E2F113F86 +:10E6B00057B4E5C1628AEB76DBC302DEF71682C08F +:10E6C00062AF294FB9BB6BE5B3E8CF17777B0FE299 +:10E6D000EF9F1586BCD310BFC3BADC15F5AA0D2E6B +:10E6E00068AF648776D005EFCBFAFC0D09008FDFA9 +:10E6F000173A88CF09037D0D89F09CB43F7C10C385 +:10E700008EC9E1A10637C0538FB24348D6CA4175BE +:10E710007612C0D34E6987D0ADAD19F2CF1E87F304 +:10E7200064EFEB1807F8ECFE23F3B6035CFB69AF6C +:10E7300004EE7C64FEC1CFFA95695E9C6AAF86F4F4 +:10E74000CEBB4FA1BCC96E79C89552317A7EFA71A1 +:10E75000DC38CE20BF27224F1BA679C8AB665521D7 +:10E760009A077E0FFD628D9FA71ED6F903E6E16D25 +:10E770009C87FE04A51ECB87E73205EFBBBC3E9B02 +:10E78000FFAE42E2C662FA7D2083EF80BE1396247C +:10E7900099E781EB81DD23FEE1D8F41DCEE779BB5B +:10E7A000FF69FAB6E9FC1C8FBED7EBF1E7A5E45888 +:10E7B00028E07C0872FC77A463BC7A5714E8FB98C5 +:10E7C000A2E8BC5B562612BDDC4C0C55F27370E817 +:10E7D0003F151588C639BECBA26B6EC1FF1F74BD35 +:10E7E0007009BAB25A1E8F1BE794E3E99B2DFAB861 +:10E7F00063E839A2C33DBF2B223DE72DE07CDCFD61 +:10E800001CCF171A7ACEF1627D18F386869EBB88DC +:10E8100078658CA1BF743DF330A230D39C279D4C0A +:10E82000F6AF4EEF6747AE766501EA9D8A549D3F8D +:10E8300078DEF46151A9273DD3C0CF79831FD899E1 +:10E8400046F3A356F16B0219F93FBBAB26521EA14A +:10E8500008FC05B98A7E632A8CCFA46A45C473E498 +:10E86000C63E38A6B47ACC7266D8F3881C1AFC90DF +:10E870004AEB1BC8A758FF419DCF22EDF0F592AEA1 +:10E8800007722CEB34FDDE1CFACEA81F8F6F7718B1 +:10E890007CDBF926D98DA43AEE1F2477A6121F2718 +:10E8A000CFF1E38962D3794FBF1DF38BF715485F32 +:10E8B000492F7CB7E07F46EFCEC78B743230EFAF85 +:10E8C000D0EF041582DD51A1BCBF0E685D8D76CD01 +:10E8D0004EFEB4CAF8FCA975AC0F7FDF06E845BF51 +:10E8E0008F171293681D0AF8752ECDBF3D45C1F9EB +:10E8F000DF91EBDF5090115F0E9444B51227F3B116 +:10E90000DDF317BBB3F1FCA59280702FC05B30DE46 +:10E910004F1D623AFC28967FDDFCC063058DAF6316 +:10E920007EE02FF9DA36E45B5C0740BCB4F10AED17 +:10E930007735F8F852F6DF90C788FC289586FCE01A +:10E94000FD6FA0FF7699E5229E3FD3A4EBCB5F1429 +:10E950005CCA9F49AD97B99C73F931D6755F1C5B52 +:10E96000CE0D7C7F5230B6BC6F9EFF5E086B1B796C +:10E970004C6754BEC2E5E91AC4F8D3B5909D714CFA +:10E9800041BF99E731EFC03C26CCB7B3D41995C746 +:10E9900014C89F37F297D1EBCE461ED3B847229AC0 +:10E9A000CEAF1658F7C1A23EA2F5677D3CBD1B183D +:10E9B000FFFDD21312AD539FD7C44FD0BE9FAF06F9 +:10E9C00042A000EAE74616E227C4AC0A43FD833FB3 +:10E9D0003D8A712D7BC8EBC47B4117FE97C034C0C4 +:10E9E000E3D87F49F494998FF2988BBC07F218D83A +:10E9F000B90395AFE6E1BAD8B13300031E872B67A0 +:10EA0000D0BEA685C70FE5A15F1B8DF7727F6BCCCB +:10EA1000FDA3D1E35FBEE20F6EBAF7406970E2BEBC +:10EA2000B078EB7AFFA1EB817FCFF37F82FC94B4C7 +:10EA30007AB8137FA8A55311695DCF58AFCA565F46 +:10EA400070E1FA5CF65DDC6FCC617DF47B22D17CF9 +:10EA5000BBB6D07F1EF97D6764DDECD815E675B3D3 +:10EA60007B73EA1AA0812747D6CDFC1F63BF5ADA11 +:10EA70004025F2D9CEEAFF45F7192CB4437C8A74BD +:10EA80009EF66E3AAE9B37D7BC9281F81879EAE8C9 +:10EA9000F11BF9A8E878532AB4E6A9CF7B6F4C0E96 +:10EAA000936E899DA736F26446BC89793025869E8F +:10EAB0008EA6B7D17FB3C0E34B66E3F7F21FD7E969 +:10EAC0000D7A20A310F3BF9D7C1F91E610681FD123 +:10EAD00079EF2BA59417A98E1D178CE4C559B82C76 +:10EAE000D67A61739C7D19930AB91D69B6F1FC9FB2 +:10EAF000B0F695D5885773A54BC0F85866C336DC79 +:10EB00000F9EABD76BF16EA6FDABD179FFDC421E39 +:10EB10006F2EB4874B153D2FE88D214FF1E871CA58 +:10EB2000D6BB08FB3D75BBC430DE5ED83A236BAC68 +:10EB30007CF27BC817787F5A21B71323F38587FBB4 +:10EB400062D0C7D8C711BDAE3252DEEAA2FCB1B165 +:10EB50009F63443E0AB97FF180FE648EDE721C1F03 +:10EB6000EEEF40B9BCDC7D1DD1CF1698FEFD559768 +:10EB7000DEDFF14021D797D1FB424E603EA42CE26C +:10EB8000175D3FE27F58F321B2D8B0A2D09C07A90D +:10EB9000B881AF2B1F728921C0D7F546D91EFCFD65 +:10EBA0003259CF833495C9748EA5E90F9217F5BBFE +:10EBB0002B8E1C19FB4E0C38F182C0FA4C7A3A515C +:10EBC0001EA07C63E20599DE47CBDBCC287933E6D7 +:10EBD000271EBD8CF9897E6FCC4FA4DE93E5B88EDD +:10EBE000BF3981DBC5E8FACF47D58F5E9F36D66542 +:10EBF000A3BFDBAAF3FF79FFCC2CD4BF4DF650D9CD +:10EC0000E5C8BB41A793177FAC60BBAEFFE4F74EEE +:10EC10001AEBEED757A7D23AFBC92689D60392261C +:10EC20002BFDB897A9AB90C719861D8C5EBF6B6191 +:10EC3000A1036407F5F9B91EED6079643D2FB19A1F +:10EC4000C3F1ECA081DFE5AEE3FDAC50CFC745AF2B +:10EC5000E3C5913743CED6EAF279A9FD08CBED7C26 +:10EC6000DF72F4FB367DBECEFB9FBC713A74F5DDDE +:10EC70001A917ED7762BFC0FF93754CDEFA37EF790 +:10EC8000A2837E2F27A9467C1A7FCFE854EBBBCB0B +:10EC900066A33EA9B1D1BAC0483E758BD487BF8365 +:10ECA000BBA8C6467EEFD6C72B899E83A04FEEB287 +:10ECB00061BD0D741F6842090B48E004BD5BCECFF7 +:10ECC00075B9401EB05FD7DF97D33AB2ABD51DC040 +:10ECD000DF4F3CA1EBA170EBCFE83EEE5513DC29F2 +:10ECE00098575DA2099675DAC5B52ECBFAB1C11752 +:10ECF00076E6CDC4FBB65C5B6DB46E3D7B52DD4DFC +:10ED00000D989FDD6263745E4188ACEFAA747FB892 +:10ED10009EE7D5FD8921DC1F5C86F9D90FE9DC96D9 +:10ED2000F13BB7DF767ED6E0B368BEF8B728BE30D9 +:10ED3000F492C11FF1F492294FFB99453F952EA300 +:10ED40007E664F7A899D7547F492A11FDED3C7FB7B +:10ED50006EF9965D0761BCEFFAF92984772FFEEC16 +:10ED6000159C7FD71D02DB40F3E4F0C592FF4A43B8 +:10ED70008FE3BA398CE3FF02A2720E7D008000009F +:10ED80001F8B080000000000000BE57D0B7C54C5C4 +:10ED9000F5F0DCBDF7EE6EDE374F1248C2DD4020E5 +:10EDA00090070B040810754320C60AB8BC41A26C3A +:10EDB00078192040508B5851164200113F2322A24F +:10EDC000D2FE178A96D66A0352B58AB011A5D0979B +:10EDD00051A952B5900A2A024A14D0F555BF73CEF4 +:10EDE000CC4DEEDD24826DFFBF5FBFDF97FEEA30C2 +:10EDF000779EE7CC79CD9933B38C31A6F7606C9AC6 +:10EE00006F5E70640EA3BFABE0FFD3AB96B4E6BFFA +:10EE1000C3FFE31F141C5D51151CA9B6E5C3D3A3A2 +:10EE2000950FE7E8D18CDD1DC9AA1AF2DA97FFB673 +:10EE3000BB9DB1418C4D959817CB99C3C35812D443 +:10EE4000BFABDF76BF0BD299AACD0FF97B9AB2B7D1 +:10EE50003B21BFA2BBC45832E4F33E1BE48F819434 +:10EE6000B5FC783B94FB97C7B0C774E8A7F2E2A063 +:10EE700095F96DFDCF38F0B0A6437E6AF6EA647F5F +:10EE800034963FE8C67690EEF4C3F788DE913501FC +:10EE9000187706532E343B057CAEB6F6C678512162 +:10EEA0009905069ABFEBFCBBD2C0B4682CB753B926 +:10EEB0007F04745008E97B52A0169A1EEFEAC9D568 +:10EEC00001BEF35D3D7998AEEBEAC9D793DBFAA9B1 +:10EED00055D954845BB631DF2E849F7953C7C7B4AC +:10EEE000954FD4F9F87525BC5E63F2E0D4F721ADF7 +:10EEF000FD47FF5415C61DAB2B84BF976306C7356E +:10EF000077805F23BD6F454D706436E06B858FD28F +:10EF100038C63C0DD0FE5EB17E1AE47741BE4EF598 +:10EF2000A6C69BFA19A8C7D3F8B143773765019EE7 +:10EF30006B359B26E9982AE588B7D5D14AF90E6A40 +:10EF4000C7E1AE8BF13C86EB06DDB14931D89ECFEF +:10EF50004F8956BE6AC52F43B8187D37E00A9FEF28 +:10EF600044DD46E386BA7A2620DE7EDED53311D331 +:10EF7000658ADF81F85EE684F977D0EE7AC417D42B +:10EF8000EB2BFA672C5AFB20578C2BE3FAD4FC4F5F +:10EF900033AECF2A85D542FA50D45DBF6806B89605 +:10EFA00041B70E48150DCA21752A4E4D7633762885 +:10EFB000D33707C7BD4D769FF2115C35FDBC403796 +:10EFC00015CBEE088E84F5D612D90C6F74FB7954EC +:10EFD000C07A227E6BC4FABDAB063310AFA1CC1150 +:10EFE00035E6F56FADBFEC2EEA6F4B37DFB6742810 +:10EFF0002FD1D985000EA7F8741C6F1DFE7B2896B3 +:10F000007B6FC3F94CA9B3F9914F4A584C40C27970 +:10F01000E9098CA531B68DE97D588FF6FD03C4341E +:10F020008FBFE03FA1DEE7199EBBB01FE8CF8FF393 +:10F03000F1F4D656CBD84F51228D137B897E80CEEA +:10F04000736AA22F8D4F16CDF169B73BB5F51AE162 +:10F05000F33E1C0F303304E1FAA1F87C44ACAF0955 +:10F060009F8F201C9DE1F38BBF77F1209E3E733371 +:10F0700037EBDF397F3897256A8A89BFD7C55BE7C9 +:10F08000B16600CF3F2EC62F4CE7F4F9BC585FE7BE +:10F09000B252760250E770327FC400C88F661EE419 +:10F0A0008F8D76ABDC7B5E8FA1FABB33473C8FF351 +:10F0B0005EE392A6225C6BE2796AD4BB452FA1F293 +:10F0C0003D62BCE7053D6FCB8279407FF1827F8D49 +:10F0D000FACB45FDE53AEF1708A20FE2D52ECB1D7E +:10F0E000E273BFE0AF6DE9BCDF32399AF877D6BD85 +:10F0F00072C02111FF8E1D3598B11BA92BF8FE623D +:10F10000B39A89E56932F3035FB065EA7BC8CF1A29 +:10F11000FCEFBB2CC6E6000836A09FCA3C6F5C1013 +:10F120008A2BFDBCDCE077906BF620ACC34C5F749F +:10F130000DD2C1AC75D6F239EFDEEEC7F1FF3294D5 +:10F1400069521AF6A7BCD76CE81BE877D9BBAF1594 +:10F15000BC6CD23F6FE931491F44C13F0A981BF98B +:10F16000FAB515CFB11320832EB2E2B809F0791C9D +:10F17000E3F201266F1F67D2075FAC682A7819EAAD +:10F1800029B611C7900E672A1C8F8CF972CC727742 +:10F1900078378EF7E6488EEF70FC5D14EBB281B1E4 +:10F1A000726C8FF214E57782CC6A488E43BF487741 +:10F1B0001BBB76DDB65E32D1E1544DC2C5BB88F8CB +:10F1C00087F689826E14109371094847DD3405F380 +:10F1D000C052984FD43DCC06EDE0538306784B5493 +:10F1E000DC921BFA6FB637D775017CB5F461EEED92 +:10F1F000305C970AADB10BD48B1CA9335947BA6266 +:10F20000B14558DEDFE6DE0EF9F889DA1A15F2F1BB +:10F210003A4BC0E56DF64FF020BE374C659A0C7C3A +:10F2200091E18AA7F9CC58FE29B3C1F7E462004501 +:10F230004779A295A5227F4F65EEC7A0DD9F57AF06 +:10F240006259267CC4BA381EE274A077C083536723 +:10F25000B48E252C639B2C99EB7178B774F3C4B8EA +:10F2600088FFB5486F0CD131E97B961719780CEA05 +:10F270005FC79A15943B8C35312C2FCC2C4DC4FA9A +:10F28000061FADB1B12AAE276BFC1CBF5AFC7AEA4F +:10F290004423FC2A80DFF5040FA76F03BFC63C128E +:10F2A00073DC9206ED232B387F86AFEB6017E7E720 +:10F2B0002BBA79B25CC847DF7CF79D0C7CE0147CEC +:10F2C0001059E1AE0A027C112CD62DC17811BAC6B4 +:10F2D0003C90674E29902D21FC35C4471145EE44E2 +:10F2E00019E735DBC69414C64A457BCF54267D000A +:10F2F000742C231D933C55D807065DE3478FFBE52F +:10F3000000F43BEA9658F77AE0339BD3E743B846DC +:10F31000A6823E023E88E8595382F4F0CA0CDEC74A +:10F3200046C0474307FCBD4DC8A704D9976AD3B070 +:10F33000F75F35BD5C4CEBD957827EA3ED3B9A0E4F +:10F340005D81721EFEBAE27F763479F2B0DCC8B31A +:10F350002083796D8B6CCD7B9CA9247F8CBC1FF3A3 +:10F360003F8361D830D0D7AE1D4DABF390CEAFE622 +:10F37000745E0382A1BF89BE717D002F9953195B12 +:10F38000998660837C8A69A3F7B679EB7CDD3AA124 +:10F390007B435E813C5175E8EFA8CC5A70BD27B124 +:10F3A000D577E2B89A9369F740FFFEAF00CFCE362B +:10F3B0003C9F7B71CA2B8F42FD354B62DDA8D7D5B0 +:10F3C000119CEED49FC4056A49AF07A85F89E51078 +:10F3D0005D4D9C2AB9D7D3F2B42CC2FCB4BD51DA2E +:10F3E0007A17F6F35606DA8D7FBFF37C0C83F91F8C +:10F3F000575A62705EA796BF11E38175F8FB729948 +:10F40000ECA21B25AEAF67ACF876F04CC82F157C8C +:10F41000F2BACBB3D065D2576C5932E9E37901988F +:10F42000A949BE2DD81925888EE71736245AF286A9 +:10F430001E5EE86035B8FE0B7EDD68EF06F39CB714 +:10F4400033BE3FC27C0A0408E2FBD49E8C6D688FF9 +:10F450003D29F8EF7597F72E1C1FE7E58376C7F770 +:10F460003A5890E45593CAA2B9DC9780DE7D7CA817 +:10F4700076F33AB8AF9B1DE5C31C89B53888EFD841 +:10F4800041C4EBFBA932437A0D9FF79CBF6B765CBE +:10F49000C73925ACC5DF1FE729ADB9AD90EB015CDD +:10F4A0008770B8C2F5C6AC862576863426E795A166 +:10F4B0007CBBB84E22F916AE3F401E1C7C01FA9D63 +:10F4C0002DF4CB9C7A6BF967876E39F828DAAFCFC9 +:10F4D000D9C9AEBB09F58BC9DE0FD72F3F77817E27 +:10F4E00041BB71301BF21DC8A3DAE8AC38DFF7D896 +:10F4F000D7A756405D0763A75738293DBB42A37481 +:10F50000A14B27BC2F78AEF16037A2A7A6C1A89760 +:10F51000C71C2E755E0FD99B5365FD24F2C7B60933 +:10F52000C14775A457D09F2EE497A08AFCA18244BE +:10F53000898679FD1F40C2774042B20679335CF577 +:10F540008DAFBC80FB1F80FB31806BCCA06C07D2E1 +:10F550006B2D631750FE18F3BB39D54EE35484ED81 +:10F5600073C2E17EC925F4EA10805B467D9AF7AA52 +:10F57000CE3A87DBD0A79DC1DF59BB85A0273BB220 +:10F58000DF0D3E5928E875F68E716BBAC2046A5FCA +:10F59000FC30B3399AA89EE85ADE2A05901FE5D4BC +:10F5A00014A22F27D2631AE24FF10BF824C41734A8 +:10F5B000789399E8F9A6BD514407A9DD64E628C20D +:10F5C0002F9C3E650FC811A4E768DEDEC99C2BD1D5 +:10F5D000AEF1EDBD93D77FC1AE395289EF526D9434 +:10F5E00006536D4544AF272DF4BACE9A073AB4E4DA +:10F5F0003F519B33515E00FD9D34AFC32752C7FB83 +:10F60000A023AE2C8E07DD53867A6B0EF3AED18825 +:10F610004FEBE9FB29A5FEE01DC8E73B24E6073CCC +:10F620002D7CF6C967503ECDFFCD83B1289F3E5259 +:10F63000EA5370BCEAC7EA6251BE9F52FCB1D8FEE1 +:10F64000A3009753E1E30DC892847CF5C44AA0B7A8 +:10F6500016E13F910066B7ACF9098CF339E019F96E +:10F660007CD19E2F297FD0E36C61A9D86F7319CE0E +:10F67000635E6574CD4A285FFC9C95FFE6FFE2C19E +:10F6800014347D017FDD04FEBA61BB453B5437DA9B +:10F69000858B8EC86E1C66316B21F8C2DB2F6E38ED +:10F6A0006127F96E632DE9C3DB9783A56347BE5AD3 +:10F6B000CC367C2A1740BAE7A3B719A661766495C1 +:10F6C00090CBE174EFCA12FC2EE81EF0E3463DEF4A +:10F6D00087796563A50097D3B5BF7478ECF0FDA377 +:10F6E000B7BB6C73407F6777FC3156CA6BE303C6C8 +:10F6F0005611FECE36F4F85E79F189E097563D203A +:10F70000F48FFE1C4CB00B64F7F2B45A0DC60E0712 +:10F71000B8ABB7A96EA4FDEA27654F34DA4B7F7307 +:10F7200090BD51FDE479A2DF6AC9D322F52770624A +:10F73000517E1BEBB6E0C9F7CB503E2F00BB7D34AA +:10F74000B0E4FCA72FF2FA40EF11288F77FDA3EC6D +:10F750000ECC83FC7076B06EA50D8DF6E6E80ED665 +:10F76000ADE11F650CFD10BFFC82D6E5A37D12EB59 +:10F77000E26ADFBEEAB13376E4D7B3B0405A3CAEBA +:10F78000A35C698FEB68FD82639F2FA4726DBD7EC1 +:10F79000E97594D00E49267A7FEA7918BFEA6D8719 +:10F7A0007B348EF7D42DB10CE8E043A586D3FD4F12 +:10F7B000EB52502F57A9FE148D52FEBDEA673F262B +:10F7C0007ABCE9B51FA730B2273D69369207FE34EF +:10F7D000846FCED64904DF5CE6237AACFAA9EC4507 +:10F7E000FBF6A2C2CA7775B0AEBF107CE3604B0ACD +:10F7F0007E827A0A7A5A0FF07C68676467F85F97AE +:10F80000C9BE75B0EDC724F87EB1295922F9F59A21 +:10F81000EA44FCDCFA623CD1D31D59DC6E2B7DED51 +:10F820006219F2D7AD2EA5C6A111FC56B906ABAB35 +:10F830000CC6EFF09785FD7E66BF01EA5F80EF8F13 +:10F84000B82DF5095F1F6E77444AFD204DE17634EF +:10F85000FCBD8E727111EFAB8D9F99FE19C2FFA690 +:10F860008067F1CE0FCB1E41BE9B195D1307F8B91F +:10F8700070E484BD2BF245928D65E3BC9ADEA73C13 +:10F880007327EB71A96DF858FC1CD81566FEDDF1E5 +:10F890007E18FF5ACB417F13DE16C34E627D12E203 +:10F8A000ADA50CF5B91FC67D0CC699BB09EA9BF83E +:10F8B000B58D2EEC6DDF5D6DFCC7E48A38B46F6EDC +:10F8C00012FC1EBE5EE1FCBF2DCBAAF78CF66C2BA2 +:10F8D000E7FBCEF49E618755AB81C7114FD57F738F +:10F8E000B8510E573FC9F90C0CCA966CA0FB33BF38 +:10F8F0003EF0E6F500CF99063569348D6A95AF552F +:10F90000BB814FD11E053B2A82E4EB176467A596A5 +:10F91000825E83F99F49F232A4EB76FC09DF3BE477 +:10F92000CF2446F2EB3F2657F7DCF3A91CDB393F27 +:10F93000DED4895CFD53985C057B220E8661A77F2F +:10F94000B5A03BCAC770FC1A780D978F55597A87B6 +:10F95000F211FEDE64263CCE7FE26392779F83BC89 +:10F960009335D42F40D7A8BF619F80FA7E51E053D2 +:10F97000CAD7A1DEA27CE344A9A023B8ADF80C2F1E +:10F98000BF4FC81F63FDD555CC1F03FDB6BC28076C +:10F99000B6C3D4CEE92DB109005F5D04F71F9CD337 +:10F9A000443EDEC8B3199530CF73FE020DFDDB2D4A +:10F9B000118CFC3FE7BC2DB1F1E8DF14FE9D5AE746 +:10F9C000F9DC9303811C23BECE3D69DA27D5C688B6 +:10F9D000FAA9BCBEF1FD1F7BE5581DFD0301EE97A2 +:10F9E00008A75BB20C61BECDC26F314AFEE629F4B6 +:10F9F000DF7DE6EF69437FDD67AB2FF2BC9293C0FA +:10FA0000D0CFC35612DE4FFAAF4E8139B1F799F716 +:10FA1000CDE1645779EC6980F7591C25ACEA706D2B +:10FA20002CDAE9724CE141B447E702C2D1CE9EBD67 +:10FA300021CC0E10F6EDDC4D6A1BFDD07F03E41FD8 +:10FA4000BA49D8EF555BADE5F3F79E21BA9B1F4647 +:10FA5000773E9C4B5A7BBAEBD643F0737FD61FE9B7 +:10FA60006E941C6D433A3F7788FBB73E5BADB23571 +:10FA700008EFAFA500837E3EDB2B939CFEEC399E06 +:10FA800067FE64A26783FE0DFC9D45BAECDDB95E9E +:10FA90003FFBDBBF0FBE03AA543FF34EC1A3909EB2 +:10FAA0007DE66FBD5EC0FCB36F65BEC3DAD72FDDE8 +:10FAB000F7E58D34AF7D0E86F33AB7EFF799A88F4F +:10FAC000CF3DEF70233D9F5BE5A07DB37F5F0CE9E9 +:10FAD000FB7319DC4EAC7DF18B826692E3ABB9FF10 +:10FAE000AE073F47F96CEFD7C7D02FF1D95E878EAD +:10FAF000702CDE1745F6F2E2E723020CDBBFF805B7 +:10FB0000EDFBFE53F02CB273BFEC39A0C7DD48D734 +:10FB1000F1DCEFB5F885A13F5F09E32FDCD3689FE7 +:10FB200005E5A5FBBF2D4039756E77A31DE518D8F7 +:10FB3000C13F43FA1AD763F3FD2AACDF27681B766F +:10FB400005B9D0E3CD71FEBC8EF0C2F1700EF0802D +:10FB500070015EAAD07EED0C1F55FFB5F8F8F44693 +:10FB60001CBF7AEF1086FE9C36BC481EFE3D260068 +:10FB70007B19849F7FDFF74501EECB2F05EF9AFFBE +:10FB8000CFE0DDF15F0B2FA7F7BC1E3AB7E3C2E869 +:10FB9000BE3D5D3FBB94F24FC5B869BE97C9EF2F1C +:10FBA000FFD7C2FFBFB3DEEF21BCC9FF8DF05E6A95 +:10FBB000BD0F8BF58ED11CE43FFC3693FD00B8A53C +:10FBC0009EFF6FC2DD6A17D9DCCE4298DFDB2C3096 +:10FBD000A94422EB83EC8E5A50C7D85FD344D77622 +:10FBE00099EF41683F3216FF0D5D16F4E47EF85A36 +:10FBF000F6DEC84ADC3F813DF118F9B1DF538E00D3 +:10FC0000DC4DBE62B2131C8CD3D5C524E7E3B89F8C +:10FC1000BACE3341DD8C76B78FEF5730BF07EDDBBF +:10FC2000610E0DF37F5909F381FA7F89B169B57AC5 +:10FC3000E7F8199B7468AA04F6EE7545D67DCAF5F7 +:10FC400061FB8D2953ADE593D9F66405FA9F5CA558 +:10FC5000B280847E696BFDE89E1AC13585D5D4716A +:10FC60003FCE25F144FBC3A6747DBBCCCF9FD952B8 +:10FC7000806792DEF366F4C35CDF8AA79B999E449B +:10FC8000FE0ADA673266A3F56A4A2A7A7CBD19BF92 +:10FC90007C2A00DFE74A6112EEF718F96FC67ABED8 +:10FCA000A57C6AA993EC640783FD239FB765BFE930 +:10FCB000A0AE314CA30DCF2308AF5E750FE275A83F +:10FCC00043AB755BDA13DCB59E814E3DFA7F1FBFF7 +:10FCD000FD11BF83DAE3D748F358CB8D6867C6B20E +:10FCE0005837EECF639DE94C49A2E6E43FC4134D7B +:10FCF000F2078E600DE40F2C52CEB6C29145E5415D +:10FD0000F473D52E81F6488FE94CE7E7D8151467D0 +:10FD100020311FFB2EAACDDE7CB508EC4D17A5C403 +:10FD2000AFAFEEE0F6E5C5E2A7D7F407FA43DFB7D9 +:10FD30007F30DAB5E2CFDF5C81ED646673E33E9835 +:10FD4000793CBA3618FBE57C115764B3EC83E33D8C +:10FD50009116FC24962758F2C9DEAE96FA5DA66687 +:10FD600059CAD37C7D2DE5DDAA0658F21935C32C7E +:10FD7000F5BB2F1B61C9BBFC3FB2D4EFB16EBC25F4 +:10FD80009F5D7FBDA57EEF2D332DE57D02F32DE533 +:10FD9000B93B6FB6E4F31B7E62A9DFEFB95596F26B +:10FDA000FEC1F596F28187365AF2839A1EB1D41FAE +:10FDB0007274BBA57C68F3AF2CE5C34FEDB6E4AF1E +:10FDC0006879DE52FFAAD04B967C09FBA3A57EA9D9 +:10FDD000F30D4B7E94F68EA5FED5A927C2FC1E9A84 +:10FDE000FF16A00BA5869FF75DA39FB1D4879D5AF0 +:10FDF00005D28D2AE8E1DA9CF396F231EEAF2DFDC3 +:10FE0000D9413EE0F9A913FDC39046B2064AA35971 +:10FE100013A51306F8F6F744FFC8CFFC6B90A8FEB5 +:10FE200032F48B4CD41BAF16DF42E75E1753F979DF +:10FE3000B0C25A14A4EBEB9CD17EDCF71B7C1B1BDD +:10FE4000925910F6A3712189522D14C582B02F8DBD +:10FE50000F45509A104AA4EF89A1784A9342DDE8F1 +:10FE60007B72288DD294500F4ABB845C94A6867214 +:10FE7000294D0BF5A1B46B6820B5EB16EA4F697AF2 +:10FE800068387DCF080DA53433544ADFBB874A2834 +:10FE9000D543D752EA0A5D4369566802D5EB111A79 +:10FEA0004769CFD074FA9E1D9A4669AFD02C4A7B21 +:10FEB000872A29CD092DA0B44F681EA57D43B750D0 +:10FEC000BBDCD0124AF34277D0F7FCD0ED94168415 +:10FED0006A29ED175A49A93B740FD5EB1FBA9BD27B +:10FEE00001A107E8FBC0D0FD9416861EA5EF834252 +:10FEF0000F533A38F4734A8784B6515A147A82D22F +:10FF0000A1A15F523A2CF434B51B1EDA456971E8A1 +:10FF100005FA7E45E877945E193A40DFAF0A35521C +:10FF2000EA09FD91BE97840E533A22F4067D2F0D07 +:10FF3000BD46E9C8D03BF47D54E86F9496854E5099 +:10FF40007A75E81F949687CE507A4DE8234A7F143D +:10FF50003A4FEDAE0D7D4AE9E8D0D7F47D4CE84B41 +:10FF60004A5BFD08C56A985C6C957FB6EFD0DF13DD +:10FF70009DD0A1DFADB5BD90C7F747FD8CA1FF6354 +:10FF80006C8D44FBF287A23E7999E4E450878EF9A8 +:10FF90003AAC9AC6C7D15218BB01FFA133D638D4A8 +:10FFA00041F6C35FEEE4EDD6949C78F716D47F4B10 +:10FFB0001C0CE314C2E5AF31EEAB450792D1EE5A0B +:10FFC00033A0B91AFD30F7BA9A2B30CDCDE6FECE6C +:10FFD0002C91F6C9E67ED8AA015C5F572CC9267F12 +:10FFE0003E4BBA3CB8E6093D6FD4FFB48FC847B763 +:10FFF0006492BEB8CC7E2EB7DEA5E2B0BE88C80C37 +:020000022000DC +:10000000E0617F6CB6EFAAEC0EE2AFFE857ECAFF20 +:1000100043FD8CCB1ED4793F4CF1D8C780FE9B2E7C +:10002000D6FD5DD53B15FD66CD1936F72AF85497F8 +:10003000FC8CBA0CF28E34EE6F827527BF67F31119 +:10004000D98DB6CACC30FFAFA3DAEA579A0EF2B216 +:1000500004E863FAADF23F1C05EDCB9B3D8CE86CE8 +:100060006DB514E0718D0DAFB8A07F9FC7D982FA2E +:100070007F7AD839F2CA25CF6698E3307DD51FBE86 +:100080008B70FAC47986EF12714D37675BFDD00033 +:1000900032C1F30EC083E7220792971E1A8CF0FD3F +:1000A0005966B01300A668C8207CADE37E54C37FB8 +:1000B0005A09F2D903FCFB4EF23319E80F3CB0F0B9 +:1000C000B654B4CFD7D6ED52F15CB0396309633181 +:1000D000663A0AF078A70C66C778D9E9FE250AD2F5 +:1000E000BB6A635BC98F9DC9028FC17C6D51CB75A3 +:1000F000D417B288C733DA5F10FC62A4C76D1C6FD7 +:10010000FE4512D9A36BED353909BC3F6A7708CF9C +:1001100045008E13F7BBB6AF82F272853995011692 +:10012000BB3192FCF90A8C69B63B99D5AEFC9FECC9 +:100130007861DFD550BCD00989FB45F10FFDEBD4C8 +:100140000EE389941ACF4A186F36D3F44734133D1F +:10015000D48F5B80EB735CC4D1E01FC6FB4C47BA05 +:1001600001FC4F5F1EE5E903E53BB2B99D0DF4E1EB +:1001700037FB335589C3C1164A841F80B81AF38EE2 +:100180000D8EACF52ED33CB01EC849B517972F275E +:1001900024819F95A21DCCAF04E90AE787F12919B4 +:1001A000BCFCE4BD52603B2F67A9909F75A42BC592 +:1001B00059CCE8B26624233A64E8E364BED54B82A6 +:1001C00058EE83C5D1715FA430C50EF8AC14F15B55 +:1001D0006C8344F15B16F8603E27EB76BD82E5CD7B +:1001E000929EA541BF7F10F2AF3983C3D58CE363E4 +:1001F0005DC57BF42DC8CFF2C7338C8B31F0377DD2 +:10020000C3CA258CE8BA41BD1DE9E46C8C8EFBB4F1 +:10021000E962FC19328F4F09C71BF21DE2F77331F7 +:10022000DEC93B635AC743FB18C6BF11E31699E208 +:10023000A6F83D63DE061DD44935419C8F5F62FA06 +:100240006F71BF21E65197BC94E13C4E7C1CA3A387 +:10025000FF9FF54AE0FEEE95B7D17EE864A52EC972 +:10026000FD2DF2C0322F643866A29B707A536D6206 +:10027000BD053F187C60D0CF3941FF461ADB4B12D9 +:10028000F4693A8F93F1BB66A1DBABCDE5D0EFD536 +:10029000E94B18F2DF71115F7526DB3101FDA277A2 +:1002A000678B767A4D0EF2BD313EFC79884F04DDC6 +:1002B0003AA29D9E3E808FAF05DDD649203791DE64 +:1002C000EE75101D84EB9163621DE0CF6737E4ADDE +:1002D0000DBFEBF47DFA06872702FA9B5EFFEC6DFB +:1002E000785EF29E8857806133697D34813741574B +:1002F000CF8B719FC7F6343EF001AED7FD0E7E0E58 +:100300002AE8231CBF86DC3F86FB5FE87F337E0242 +:10031000F97D206E863413E0CC10FC932CE23B1B5D +:100320001DD7499526793BB0178F1B490A8B8F6DD6 +:100330002BE7ED3D467CE837F07D30EDB79939DEAF +:10034000B940F463E4CB626C5EF4D35CFB50C771DC +:100350002B35BD79BFD7DED770E175A48F297637ED +:10036000DE47787025B3C4F51688F1978BFA6C6A6E +:100370004287E78BE1FAFDD8323902E56E7DE8F479 +:1003800013BF81FE23BC763A9D8960CD4FFC06F9F0 +:100390006E22A3F10EC49DA37CECE8AC0118275596 +:1003A000EFC99230FE2C458C67F4FB4091AD1CCF19 +:1003B000B30FC45D97361BCA378D9B2CCD36CD331A +:1003C0005989A3F848C06F5A9528AF82F27DE33F60 +:1003D000C8257D32455B8EF1A4CED14CC3254F6834 +:1003E0008BFF8CC0FA386E95094F09A37979E384A5 +:1003F000B2B439D0AE7EF4AAA1D86ED3387B444FC4 +:1004000098EF03E5FE22D9449750EEC77DFEDA91BE +:100410004059004744FA80E518D216A1AC3884FA56 +:10042000971533379256A3A3BB64F67B9509383DE5 +:100430003DF9786B75EB39D8E6DE9C2FFFDC9BFB32 +:10044000D55E8AEAFE4D4F94D7A36D1A8E4F7C8FEE +:10045000FDF7B4137F6F949A07225D94CA5A31F264 +:1004600055D71C4E179B24D08B85744C24E4BED7E3 +:100470008F7ADAAE2B35289FD5367E7692FF44E808 +:10048000313A32CEB29413DDDFD1CBD0635C7FA89A +:1004900023ED59C26F43FA83DAC1F8F74B5E8F6AD6 +:1004A000927BF02FD203C940D0180709725A1A67FD +:1004B000D2EBEA44EF02948B0F087E8279A699E38F +:1004C000A1EB053D3E90EE9D867630533409CB3747 +:1004D0004A9A948076B2905F46BC3930BA44F68628 +:1004E000A867E8F17557B000EAF175AD7281CFDB0E +:1004F0002EE0658A2F88788E13FACD18DF5EEC2502 +:10050000FD6B1FE95F82E9DD1287C75FC2D863FD1B +:10051000F13C5CB1C8E70727D989B9EF4FD302E8AE +:1005200037DCD12BDE88074D1378B3A1DE75E0569A +:1005300004F195A14DE37AA486215E361AF681C2B4 +:10054000084F8456D3BA383C5ECF4CF20F313D1180 +:10055000649A5AE427BDA24E7CE636F4576D6CB31C +:100560002F3C76844FE272D25E6E2779FB2B814F4F +:10057000FBC867484E86CFDFD02FC67A86D3413B73 +:100580003D1096BF6F9C3D0DC77B10D687EC9AD56A +:10059000A9077B0E26534ED8C7F55B66031E36B9F6 +:1005A0006C1809C1D68D7E9D21BFDD9D2A73190D62 +:1005B0009640AB1F0FE59314E4F795041DAF5CF272 +:1005C000E118BCE7B3769C4DA33AACC99308E5F7B4 +:1005D0006CB533B47795F88941B4BF238B1C1AEA04 +:1005E000D7EB7BF3F8B4FBC66C2CC776D1FD6D441A +:1005F000959BBCEFC5205FEE177A71D8A9A6D238BB +:10060000284F1CAD0D403E33BE0F3D1994F17B4287 +:1006100039FF3E7C4C3D3AE920EF27FD775FC99BCF +:100620006386A09F2E4F718BF9AE9371BE5730DA5F +:10063000E7C58D0C6AA5D03E3E9D8FEB19192C1F86 +:1006400082F95B652641FDE88F934A508E0C97E254 +:10065000F9BCF03F227E197D6FB5AA915F32A12AC5 +:100660005DC4A383BE3DFDF8B207F0BE583CFA4D11 +:100670000AA9BE46F4C88E8CA2BC0F70027AE9B0FB +:10068000DA4476C561E08595D0F853B43706A19D6C +:100690005C918AF08F49F42B58DF5ECAD876EC5C07 +:1006A0007E97EAAB03F52CB31DF2A9E0B356BB84E9 +:1006B000BDAEA7A35FDB63D7510ED49758F58891E1 +:1006C0004617DA2DFE9FC83C6BDED9D39A57D3ADBF +:1006D000F9D1425E1E885B41F87608BDF860583C4F +:1006E00062B4909B46BADFAEDF8A70EC8F8C4159C2 +:1006F00004792E07FC9F28421EBA8B2798E4CC521F +:10070000216F518FE33886FE3EB6ECC4BDA8CFEA18 +:10071000BDBACD2CFF0D7DD5991E2FECC5E7312636 +:10072000D157D3D1FD963CD1BE76C5327622BBEDF2 +:10073000BB2CFA1B74C4578BF11A6ABA4E7AD228B2 +:10074000CFEACDD7E1D1BE9EACDE66B977A08FE40B +:10075000CA37F7CFF54042B4CF83F1656CEAF84B66 +:10076000ECD3795C9261D78497CF1578F55CC22E73 +:100770002911F52ED72E5925E0B9945D5222EAAD04 +:1007800015E9E5DA25A572F37917DA1FDD6DC48F57 +:100790006BD33732B33D76AF98EFB45E8CF72BE274 +:1007A000AA3AEB377C3F3CB177B4257EE852ED8D19 +:1007B000FDEF77623C97FB5127DA9D1BDD36867C87 +:1007C000F4EE352F69983FEF56C8A97E8C79223A0E +:1007D000BAE7E60CC9CC93087C8BFB68485FEFA5B1 +:1007E000D3FA39F57A86E3DB53B97C3A107715D121 +:1007F0007362AB3DDADD628F1AEB157E5FCB48DDAD +:10080000A2BCA437A3FECB1DBEA9A4AFA60EB0D038 +:10081000534E983D6AE0DF90A32F9C7DEF9E7EB003 +:100820000EC913B91C8DEEAD5BE82479A2BB18E7A5 +:100830007DD537FD2270BF51760DA79BF0F918F6D4 +:100840006981C09F319FF07AC305FD1BF3BEEA9B0F +:10085000734EB40BCA86DA284E32BCBE415F46FDE9 +:1008600063A16117906E6293B81E8A9D587388F2D7 +:100870003D19C979B588DB6FA5DD6F7646E671BA9B +:100880009A1F8D74E4A0F6063D5DD9491C796E8EE1 +:10089000ADD5BE93C9BE631AF2B983B91B511F30DF +:1008A000258EF8C0DFC74B7601C86BBD12FAEFD5B5 +:1008B00066DF4D35FB29D65DA1939FC2A4AFED66DF +:1008C000FF446776DD9EDE867DC2ED1AD5C36C6877 +:1008D000A785DB49863D00F69B474D6A6F27A9C275 +:1008E0004EC23F75B0C9AE623EBF22EC15AC0FF3ED +:1008F0008D403B6BED189B7B15C0B716EDA9A43658 +:100900007B8A291EB2BF638B53C89F74B70476538A +:100910000FDE0FE229FE4824E9F9FFB4DDF28CD89E +:10092000EF82FD44E399F717E6FD8771DF2A518CCA +:10093000D938A586E1B9A163743DC3F8F5849EFC5E +:10094000DE56FD370F04AFC27DC3E8F13D5741FFCE +:10095000FB6C3CAE3562B44DC2FA9A472BF671FC83 +:10096000A621BDEFFB2A326DAE894EF68DF860E010 +:100970006C68BF2EDB4EF799D7093F8EFF4B7E0F79 +:10098000ADB447AF34DD543F5ED0D303137D1EF4C6 +:100990001FAF73A5D0BECA28CFCCE1F47DDFB8C9A4 +:1009A000649FBD14D5AA4FB9FDB09AFBC1DAC92D19 +:1009B000C1170E818F4D636C114EDA3F8DE0FBA79E +:1009C000DE11443FF54A9C84E33A3C1CFEC609FA1A +:1009D00034A4E3CA227E5D13E48EFD2628FF67EF70 +:1009E00048EE77D00C7B9D9112BDAF2465DB7A93E6 +:1009F0001F3C42CCB75E6A49C5F5785035EC5AF7D2 +:100A000061DC8F3D98DC7300D2C77D576C9E8AF6FF +:100A1000B07A573EE949A3DDAA6C9F3307E6757C9F +:100A2000C4E42DB3E1BB9CD52B13E17EA617E7EF01 +:100A3000BF6B4C4139FB7710B22B25ECDFDB8447D1 +:100A4000D5EA959FFF78A64EEDB5B0F637223D1B4F +:100A5000EDC7677B1373905EAE994C76D40313F5A4 +:100A6000349C875DB71329624400E6378E6203CC5D +:100A7000FEA853429E66E6F07EEE1BB72615E7758C +:100A8000BA3797DFF548EFC867621FB3D1B526754F +:100A900026EE9F4672B963D825B02FA5B882FB26F3 +:100AA000F5A2F8045C4FF43F9C12EB75BA37973F00 +:100AB0000F783E4B9DC3907E74A26B631C83AFE2A4 +:100AC00019A7F7385C5F137D3FC08C3F7D6F0BD259 +:100AD0006186D61FF1FD88A12F268AFDB2238ED60E +:100AE0006FD3286F00CFFF914FE6D0FC3E27BC3478 +:100AF0004EF112BD270BFE8828E7EBCD26DA03D98D +:100B00002E339F8CC8263E013EF0119F644948DF7A +:100B1000C67C13CA9B9F46BF41636F3BED83AF9476 +:100B2000393C976B07785E8AE0F7E9DC7622C8D417 +:100B300024CDF638E68FC8812C18B7E4A5088F2895 +:100B4000DF6E3E8FD920E46CED0AC682BD59ABDD65 +:100B50004331213D18F93C8D7EB19F1161FDAC59A7 +:100B6000E16441475B3F467B45F8C1C2DB9762FBCE +:100B7000C2B6F6EB5668346E787B7B27E38F0C1B8E +:100B80007FFD8A54D19EC3EBFFABCCED5FD18FA329 +:100B900093798C0A9B87126D3DD70F9F8FB3937EFD +:100BA000CAC2FA71A45AE301C2FB89E804AEABC31E +:100BB000E08AD013BEB79FC84EFA614A30757C7E7A +:100BC000FBF535DA4509388CF306A35E548E354EB5 +:100BD000E138496EC61ECEF16ECAE1E74005E47702 +:100BE00058CEDF27A8B03566E3FB0315AB829486A9 +:100BF000D36339ECE99AB8FF3805E5A6AB66581C13 +:100C0000EA81F31B06C5E1FED217CBCB25C537041D +:100C1000F3E5FF9C35C48EB0BC1DC370FD6EE8C10A +:100C2000668C87EF33243E8F1B6AAF29C7FDFC1308 +:100C300039DC3E7A7505BE9980F7CE9DCC03F4F77A +:100C400006D011E6FF0AF480F9B756E894FE6D4528 +:100C50000EA527EDDC4EBB41BC6F80F7CE703EBBCE +:100C6000845ED99563F8896F4DC5789CF27FBE315B +:100C700008EFED26F9A74D1C057BDD66F14EC87522 +:100C80001EEB7DCCA913ADF72D2BBDC32DE52C6735 +:100C9000605B9EFC308CF4D1CC75F1DBD11E9E36AE +:100CA0003AD1527FF2BA6E96FCA11C2E1FC695F760 +:100CB000B07CBFBE22D792AF0C814582E7F07AAA02 +:100CC000CD0FFD5FF8934AF7F32ED40CE9721BCFDA +:100CD000933E0FC7FB49E37ECC9B826FE03BAEC3E4 +:100CE000C5A31964AF97FF13F6F1B82EBFE27EE3F8 +:100CF000595B24E647E3A0C54F7175B76E73B8B171 +:100D0000DEEC2D32F30DC4D94804DFE9D7B2B7AF1A +:100D1000A775F4FF0CEBB5403D3CC7B0456DA07620 +:100D20001F45301DEF47CE6A16FD490328CEFFDD73 +:100D3000256B3371BC8529500EF6D2C763EAE7DA1A +:100D4000500ECA7F4AC673B08F77CB14D7386FC99D +:100D50005F076B80CFF9071BDE2C827E4FD6CB4C12 +:100D60008371CFEC746CE3F16C9E2EE81F6B8337BC +:100D700040F17E93B3BC9FA0DE3B3D375040F1492C +:100D8000CB93899E3BC0CBDCB7102FB658FD3148C2 +:100D900097CE724F46B896DEA7C6FB2533BD8BFBB8 +:100DA0002EA21F3F2B4CC37B0D2737A874BF0FF813 +:100DB000662C9D7BD427DAB83F7137D1D74C45B725 +:100DC000E3F83337C8644F18EF24187CC9EE977DD9 +:100DD000B0E762FE75920FEF59B890C860FC5B32C5 +:100DE00022695D6F5932A40BC263DC730ED70B9F6F +:100DF00000CFF84CF737E6BFC8EF4FB142CD867150 +:100E0000F7639B463D86F3F9EC508F38B45F3F3A69 +:100E10003241E578E3718FF36A1B0BF01DA2336357 +:100E2000FC1F2890DEEBF0A5F401104FA5356CC631 +:100E3000FB07E7F6FE3C13DFF169C6771F4CFB7B2F +:100E40005FAB9FD2FAEE83621B91DE6790E9BD072C +:100E500071EF9A2981C71F417BF9ED2E64EFB4D75A +:100E60006F2B393E8CFA20F2F83DB1608A0478F499 +:100E7000E98CEE654E670D22DE8CE34FC74502FC20 +:100E800069D512DD53996573DFF806DA81AB6234F8 +:100E90005C4FA3FF1382AF07F4E1FC6FC8BD45228E +:100EA0003FCB386FDAC7ED47BCCF8AFEBE2A02912E +:100EB000EEC9D991BF8CFBAC257D12841C69B1DFD2 +:100EC0009684F78EEDF4EECA5CF4D243BE7AA72383 +:100ED0001080F55BDE47A77AF3ED4F6E1E80D55D7F +:100EE00035744F6FDE1E893D2261FD6D6514AFCBF9 +:100EF000584DA03FDE570D9435417EA1AED404D1AC +:100F00009316E0F75A9D205050AEF859604D02F408 +:100F10003F479C8BB39D506E923B0B1BACF7601709 +:100F2000E3FD57CBB98F770DFACF67A3FF5CA3F72B +:100F30003FACF7DDEA553A2732EEE57AA362282E78 +:100F400072FE261EFFD1361F997D07389BEB0B1CC6 +:100F50001C4BF04AEE006B3F9F9B70BCA436782E72 +:100F600035BFF0F9CC757339535D2F05021DCCCF19 +:100F7000C06F5C31D3516E2CD82191BF7A54D212FC +:100F8000C2F37CC07322F43BD7EF8D9D5288F70CDF +:100F90005910DF7D007453F9E2AD7C1D00B1AFF74D +:100FA0004C695BEFF7935AEC88A7F77DD1357EBC8F +:100FB0002753F305ADFF415867E4FB79BB0276D4B4 +:100FC000AF67587D6C34F04DF596D70E22D9BEBF71 +:100FD000E9E914B4172B1282D9B678DC5FEDDF543F +:100FE0007E451B1DCE0B58E15FB0D39A0FC78F9F74 +:100FF00079497FB5C393734313C68BB55B3F113FEC +:101000008AB632DAF97376C8749E68AA6739FFAB7C +:10101000F2B7D07DA02A80B356C3AF7EA2C7396095 +:10102000A5635CE60F9D6F3B7A932B88DE2EC2FA98 +:10103000CB1DD1DB65CE37DC5FF5AB3E227EC3CD69 +:10104000DFA5C1FB6E53B050D82DE1F225FC1EE1A7 +:10105000BBAA665B05F36A798DDF23BBA068429F5C +:10106000660750A4742677E70ABD3807F520A41F49 +:101070006C793A16D7DB58F79B50BFE4B5E997A5D2 +:10108000B3821948374B9F8D70FB71F8D1C1BFDE19 +:101090000EF98F77C9AC23391872F90EA2FC34F41B +:1010A000E442795BA6867A51C8C54BED0FFE55B870 +:1010B00066225C0351EF73B8DE5BC7E139B181C3CF +:1010C00037BB1D5C7EBA7FB0F4E70E37F67B2A2271 +:1010D000487AFB14C0554BEBCAED868B4EA0A3FE9D +:1010E000640F90BEFF2899EBFB56F86E7EEB9802DA +:1010F000EB3EAF575301DE57ABB8DF41FA7DDE6FF1 +:10110000F9FDA3D3524917B2635F0EC622DEE6EFA4 +:10111000E6786B9B4FABBE3FDBC7ACEF2F135F781E +:1011200058837A7111E3EF122CDADB85DEE5D950B2 +:10113000C21A64BA97D64CF20B4887CE1BD973D625 +:10114000783C07733B9DB83E9DC427A36180EFA305 +:10115000CCC5FA1487F1E98D37137E5A7A115F47AF +:1011600006557C6FA3659744EF0B2DBCB524B68460 +:10117000E1783CBE34AA2FD74FB17DB99C933C3562 +:10118000143FEAD799761FCE6F2B8FA3662FB10637 +:101190003A97DCCAE181BD38C123E91AAB18C0E334 +:1011A000D19DA8DFA26D1DFA478AFB727B7BA16CE3 +:1011B00023BBB9DACEEDE773625FD14D9477EBCB09 +:1011C000FD76AEBE3CFEFB1C6C47E9BED82847004E +:1011D000FD0FA0A616E2FC5E936C14F7FDBBBE3EAD +:1011E000BD2FD45BFD37477610406852F5BA66587C +:1011F000D7D5F173E95EEA8DF005D7776CD1929D72 +:10120000D8EE5857A6C9FCBD132F33C5A3FD457DA5 +:1012100077D4ADE83782BA32EC39A6177D9881F5DC +:10122000B7621EF0702CA261D4ADD8DEA5308C8BD5 +:10123000F7BFE8207B401DD19C41FBB648D8FBF6A8 +:10124000C7F8C5037548570753137334A83F43893C +:10125000748B7B11233F857A4A157FEF82AD6E1E1A +:1012600084EBD38FADD670FD00EA3DDF257E1F3DB8 +:1012700059DF17AAC6776F86314E684584574BBE33 +:10128000DACECBC7F7754DDA940E79DC33201D5CCE +:1012900023531CD2A4A21605DFDD4142B90EE87823 +:1012A0004AF033C583EBEAD11BE2201F3C6C7DDFA3 +:1012B000E83A455711CE740FAB91C97ED247617F92 +:1012C0004773F979B5C472283FB69C25103F3A752B +:1012D00015E1F7964B03D0CEAE5E7579F35DD0374E +:1012E0006FD2A662C8DBF8BD9296DB79DCD28D4A5C +:1012F000838AF14D714C6BF1C37A2C4E68A0F9B41E +:10130000001FE179DC74A599C64FAF6209B85ED5BC +:10131000A01C119E96793CEECAE6E4E5153A94C30A +:10132000FCB6F86C29E8079A67D0A5B19F539AEBF1 +:10133000289E6D2A7F8FAA3F4CCFBC3E8BEDADFB24 +:101340003E1DFB5B006601D65BB0F7D96C7A874B1C +:10135000D26D38FE8F055F2D704607315E90FDDA45 +:10136000CAD70FF565DFCB0F9B44FB4D7DF9BED28D +:10137000DFD7D8573690BE5EB0F7F747711FDB59FD +:10138000FF0B1D2C48F87BD141F04BB6969EE44FE5 +:1013900062F43202F6938DF9B9209F70FE1BFBF2C6 +:1013A000F34E83AEE78AF8461B085FD4A33731BFFC +:1013B0007DA8AB83FBBCAC9EEC94F93BC2EF019BD8 +:1013C000E223658BDCA2B862C9DE321BC797AE8C04 +:1013D00070A33C9F6E6FA0FDBF84F22CA74D9E852D +:1013E000B753EBB9BDA66E90C8FE35FCB20EB0DFA8 +:1013F00050BE57A6B7E4F37714F4327A4F51D8D9D8 +:1014000073F954E07BB5C5CE76D47CF836F9E3B7F2 +:1014100070BB521176F0ACB0F75E2AD799EC4EEA69 +:10142000B685E490BA3C8AF6B78EB077608EDBC69C +:10143000F951AEFBB3147AF7C0E46717768997F1D8 +:10144000F861FE5D11F6E6E37D55CB3D1783FFAFF6 +:10145000C3FBD626B9EA1DC9D89503D08F200590C5 +:101460000EAEF3941CE2E9CA20DDC7514096266017 +:101470003B90BD54EF6E8A5B057EF44761B9473DF2 +:101480006D86E755FC4707F7FEFFD837A6C3733BC9 +:10149000569C7859EF2918EF4B56A01CEED116CF69 +:1014A0005D7198DFDFFE22E29F994720AF4B80906D +:1014B0004CC66E8B3CF68A0FF2CDDFC631A92BBE2F +:1014C0003FF6CA4F31DEB862A542EB5C11BB94E235 +:1014D00091830E27D9C9FE11C19F527CB2DD49F715 +:1014E000951E42E00A118E18DEBFAD99C69DC19AC5 +:1014F000CF60DCEFD5494D314816461CF89A9281F1 +:101500005BF0FEF2C55FFD64923383CE6D791C8182 +:101510007FC55FF13C7822FABB28EF9FE4E907FC26 +:10152000F94ACB8D30328BCE5D394901F8CF3DD8A9 +:10153000F233CCF7CCBD87E7EF6DC98CA0FCC64970 +:101540000AE0F3DC4AD11FDB3809FB3BF730CF7FE1 +:10155000D577E3248C03AC10EF97550C93E8FDB2DC +:101560006FC57EC3F08755D85EE2E9081644BBE13B +:1015700052F50A72BDDFA29D22C79CA4B88DFC7CE7 +:10158000CFB7B8DF96FB78D55CA4AB238194641801 +:101590006FBE8D35A1FE1C2BF6D96B6DD6F72DBF16 +:1015A000EDC3E58E9126E479A91F036FD05FDCBF00 +:1015B000D3DFB65C6B7F861D3347F03DF4DFEDDF94 +:1015C000E9DF9023467F0BF2385E4CF3EFFDEFF43A +:1015D000FF8F307C18F6AE01473EF22AD0DD7194C1 +:1015E000CDA6F918DFEBA460F214940F87653ABF1B +:1015F000AC4B4EB1FD16C7FF5322DD0F3C5F3324C9 +:10160000CE86FECC5C2EF7EBEEE4FE85BA953C6E02 +:10161000FECC93430623692D12E7DB671AFF66C7EA +:101620007770168B73EE457B1AED6579F8CE47A37C +:10163000BDD464AF56B7FA559A157C27B32EF9037B +:10164000A592C6B109B9B3F27BE31B26E71A7A88E3 +:10165000C35920E0B9A1C0735DAE094EE3BBF12EC2 +:1016600072783F8F887EFAE5324B7FFD24BE5E158F +:10167000915C1F0E3AE29EFB06EDAB0B6C78AE3927 +:10168000F8688D1DF5766E9F1137E40E6A1BCF68E2 +:10169000D7E62F6EB1FA8BF7727FB1318E5BCCAF8C +:1016A00022A1E9568CBB7EE489671E745E41F11766 +:1016B000ADEF24A2ABACDC61E4FF3C69643AF763B4 +:1016C00062FECE270E3E88714587229B7EFC06EA8D +:1016D000D9BB63D876E0FB1B86C464EE2EC4F8EA5F +:1016E0003889811D53E288E985E7D1F7E7943C42C8 +:1016F000F4C618D9E5F7E77897E2FC9B5D513630E0 +:101700000299CFCEE9C1F70799DE9DF11544F9D0D2 +:101710009F77C8C646B28436BCDD2AD6E911C4DB41 +:10172000201C9FBF43027F99BBD13FB8AABB8474E2 +:101730006C8CFB704EC9C3B983DAC67D38C7BB4613 +:10174000CC43D48FA3F78D3A1B3F7CDD6A73B97D00 +:10175000FEB018DF5B0CF467D293E3474659F213EF +:101760004727328FD92F3DB19B253FB5A287A5FED4 +:10177000F5B3732DE5631C4D8566BBC058B7CBDD53 +:101780007F3535FA92920B29CEB205F90BD66BCF85 +:10179000384C3777D3D01FB160DD35E4EF8E0B4D79 +:1017A000A7B4BAFE1A3AB45E189A40F945A128CAFD +:1017B000BF2A3795D1BEE85989CE15A09F0BF8FEF8 +:1017C000CCA184010CFB59B46757E1116E5F79B36A +:1017D000A1FF31F2EB85A887C674D76CB5F85E56C9 +:1017E0002882FA691AF14E21F6538E320EBE57EF57 +:1017F0001E3A15E9A7A4364643FAEE8C5F1A73B970 +:101800009DAA36F3F98E0A8DA3FE8CF2DFE76659A6 +:10181000EC05357987827C62C0A1364B94FE289412 +:101820004BE9E23DE3143C37FC43CECF93504F40AD +:10183000FD684C5DDEE19C5F40FEB0E8CEF1EB1050 +:101840007267BAB89FF2A77CCFBB48676397372B04 +:101850004EC443B45DC37DE0D8A2FEA9734DFDD450 +:10186000364E6328A71C49CC8EFA703AA4A5A672FE +:101870005F27F135EF85C927434EB30BBFC0B71DB6 +:10188000D98D3C26B2952E5ECDB5C65735495CCF75 +:10189000FA7FCBCF1FDECFF75D443E682A615377D6 +:1018A00093BC68CAC4F891FFD4FCA1675AE7B11A87 +:1018B000DF1FC42ACD0CEFCD7CD50A07A7CF4BC1C3 +:1018C000F1A1A8FFAACC96215DBC7AD5554DB8AF41 +:1018D00069BC63E0403CC787EDD037E467DC37BCC8 +:1018E00007DAA11837C8E3E918D94186FD8FEF0C54 +:1018F000A07F64F13EC77609EA2D8E6DE985F2F589 +:10190000D1025F641E9E83EDFFF218DE87F644C7A6 +:10191000507CE5E27D112F63FE4A99C26FC1AEF0A3 +:1019200044E525773ECF4BF1A1CBBB2009F5EC79FF +:101930009812BEAF75BEE6AD3DE330DD14854F4F66 +:1019400033DF3ACE773EC17F95826E670AFEAB5495 +:101950001A88BF66608036CC6BE672291FEFA9C378 +:101960006250FCB88AF43810E992D36375285EF0AF +:10197000B14BF4C3E93E9C2F178512A99EC19F7AF3 +:10198000816F68DE20BE7ECB60BC1F6936BAA7E3DC +:101990005B955688FC7169FAF852C17B576AB1A40D +:1019A000227D38202D35F1B3B72DFEBA2C05F5FD7B +:1019B0006A97CD1CF77065DE0FA3F3DC3C2E8F67B2 +:1019C00046839E243F522C43FF5C45B24E7ED69BFD +:1019D000EF96F0D087DDAC06B3D18F73F39208F2A7 +:1019E000A7CD3D52B326466FBF5ED342054C073CA0 +:1019F0004D08F5A434B78F6F34AE7B6568B2C06311 +:101A0000C1659D0F0EF270FF9D1A70B8B7B9D07FF7 +:101A1000E793911F4E6530ED01F2E3F072C37F87CB +:101A20007E41F40FB69DFFF95BFD79C83F8E249B84 +:101A3000E59CB29D5FAF84EBAFB33B54FE6E5BE3BE +:101A4000EB836D507EDAE521FFDEE42CDF1C84633E +:101A5000FEF8C0532ADA83F73E1D3B546FC36383FD +:101A600012CC46BF56430DC74FC30699EE55C05F13 +:101A7000D438F33D46613F1C66DCDE08A7EBF9A1D4 +:101A80001E841F43AF18F2FAD915A9B45935E4F6EC +:101A9000A5F4CD42A569CF6B809F859BE2343FBD05 +:101AA00023F7DA057CD70F1F78C3AB43C03F245F11 +:101AB000CEA7331B33E99731F2EEC223A47F346FF4 +:101AC0002DEA99D2E1C5B41F0E93D7A777BE41ED99 +:101AD000F10C0EF5D08827BE7EFA6DE85E5583BD09 +:101AE000F0FDBA1F29316E3F6B4F1F861E36E0375F +:101AF000F0F10791BF27DFF353C4F3A5F92482EC7B +:101B000055877F1C23390AA9598EAA6176AAF17DCF +:101B1000FB0FE48F7AC11FC6BC8D7936D90DBB8906 +:101B2000CFFF8F8CDB15C638EFE78FFF1DC901D0C3 +:101B30000B38FEBE3CAE7FFF737075AC1FF689F9A3 +:101B40005EAE7E7822CFBADF31E030E0FA9380F7E4 +:101B500072F5C71B79FC3DA270FD01F53EC0F7E0B0 +:101B6000CEBDD8474379254B2D1F903FE9C5081DB1 +:101B7000F1F0EAFE08AAEF71C6915FBD74FF87E736 +:101B8000F11DE41B0A26BC81F4E0D9EB5098C98E04 +:101B900033E665CCF3CF62DEA0678EE699D6CBF84C +:101BA000FEAFEA9DB271BB881FE0CF7BDD9560DFA1 +:101BB000DFD3447A873D14A5A15F269C5FC3F93427 +:101BC0009C2FC1EE23B97AE899783A8730F8379C90 +:101BD0003F5DDE7748CF207FA27C3B5FE3C8C7F73D +:101BE0006BCEEB5CBF8E41FF27F2696E3CFDBECC35 +:101BF00001B9E1816112BEA7C8EDC311C23E0CD785 +:101C00006B35F9DEC87C80EBAA27320A11BF97A694 +:101C1000C7DFA9A48FAA25B2571C909AF591AF13DC +:101C20003E8BCBFF617CF66D5EAB9DC2EDAC383B6D +:101C3000D95997A23757FE7F9CDE5CF9267AEBCC08 +:101C40009EEE95CFF919E8AD57FEA07F9DBE5CDEF4 +:101C50001788BE40FE7B711F75ED1FDD71A807114F +:101C60001118470FF45288EFF91C1A9CE146BFCDBA +:101C7000B5DFF1FD08E824DA8F84EF07A60B39ED14 +:101C800013FBF86B0ABCD7E47379F06B84B7A447F5 +:101C9000547FD4B7976BA74E4FAAA178421FA46672 +:101CA0003964DC0F095FF7B13F70DD8BF37F987DFE +:101CB0007A63FE0FB64FABF22FC33E75799C134883 +:101CC0001F0615B6DE75E9FD8BBC85E3B7155F41D0 +:101CD000C5D0F789A8EF812EE6E5FF1BF6EE98D276 +:101CE000860B4E58CFB5F9C1C9E8179C8CB126E4D4 +:101CF0004768DCECE989728819E71FE46720BEA118 +:101D0000FC4B6F8E84795CFB006B3B1F81F251C5ED +:101D100071AD7E0989B5D55F93BFFFCD0D346FFEE0 +:101D20008E38F3352BFC9C50E40B211F63CA1785BA +:101D3000E5B7F2FAA87FCCEF91B7E927C6F8EF72C2 +:101D4000F88D7894B278B45BF748F4BEF3F5C5E744 +:101D5000ECE8571953DA7CB01BD47B38FFF0E46809 +:101D600060CDEBF74834DF5F3ED9B4D9AF50689B04 +:101D70004786FEAA8BA400F9CB1B1ACB3C1DF0E5CD +:101D80002FF3ADFB23FCC3DFDDA816E87734480C46 +:101D9000DFEDC67E304EF172DAE3FA51FB2C6A1F9A +:101DA00074245D7EFB29C53C7E37BCDEB3463D1105 +:101DB0000F49FDC39A4C68903AFC3D92FDF95CAF27 +:101DC00037D96C0BD15EFBFD932737A3BF6914E3B2 +:101DD0007471F8C91393FDDC8FC33C61F07EDF7C26 +:101DE0009FCCB7DA0BF8A75BDB07BF0F5F4FB76B72 +:101DF0002FD6BFCA4A27718AF7E5F3308FB8244936 +:101E000043FB7A91376203FE58CE985241D7FE4F7A +:101E1000267B8A01BE0866F19FB5D2B5FFDC64A4BB +:101E2000EB45CCA8FFE9665C7FAF8D59EEF18DDA0A +:101E30002BB5B6CF51E8F778A8FD89275B36237E0E +:101E4000603DA89CF2CAF7D0794358BE388C2F1851 +:101E5000CF135FA23C2EE2BFFB128E9F7F0AFC7C59 +:101E60002CEE79348DE0766393F8FDA68C02EEC7F4 +:101E7000540B383DC414887536FDDE0A4B6F5B6722 +:101E8000267E8FC50437E1695A9280DB1F3B65349B +:101E9000C887A604962F019D74792AF2A1D519D876 +:101EA000DEABE03985E28F7EE84F204FA609BC64A7 +:101EB0003C15F316E205436B90BF1616F1F365C7A8 +:101EC0009ED73AE4AFD3EDE9C58FF7411612E16032 +:101ED0003B89EE25633F591DE0A3A53D7F79C2DA1A +:101EE0003335E987B417EB313A6CBDCAC3D66B649E +:101EF00058BEC29A8F55B8BC8A454480BD35F3B9E7 +:101F0000FBEB5292309E48A237D7401EDBF15DFDBD +:101F10000105A953A287225DEA6A37A83BB8A0EB66 +:101F20005B4EA0D97128AF48DE767B08E5F304E468 +:101F30006BCAA74FC1739FC9453575A950BFB8205B +:101F4000E321FCFDC2EB57DFAFD28FED15747F4864 +:101F500081759A56F89B83D89F22B9DE1A2D7D0F82 +:101F60005DD687C1B1352CEF0FABBFE912F27B759F +:101F700058FBE561E51BC2F25BC2F2EBACED2B67EF +:101F8000F3F3D54A583F44DCA5F863BCA0F757E506 +:101F900086423C079BF654FE4375D0E6DA5A4EDF84 +:101FA000D30B0AA698E95315F27F7A92D7D3117D05 +:101FB0008E2DE8843E72C2F5142FBF2A2A3F0EE709 +:101FC000777210D3915F4E46E87174AFF830D85FE6 +:101FD000B80ECEA635C5585E5244BF7781EFB58F97 +:101FE00031C55DBE7CBF83E09BB3879F478E8CFA73 +:101FF00069595A129D17B738282EEFA1B2B4C2B64C +:10200000DFC798FB2EC7C7DCBD52007F3A6C5E204D +:10201000ECBD7179834C7E8DAD3C2EF0A62DEDDFAD +:1020200061C77361FC9D86F53C5EB15D39C67BD6A8 +:10203000FECEAE6179F8FBECC7F11F1DBC93ED2F0E +:10204000B0C6AB19F1B4C679ADAF93785AD3EFA847 +:10205000AD2D18648AAB15716E4C0926635C63ED77 +:10206000E144BA9FB3DFC69C45A6F308C34E3CBB10 +:10207000C247EF947EB2A28A52A3FD39A9D1DE0DE8 +:10208000EDBCF7F9EF9B0DDBB3EB9EE13AD6AF2148 +:1020900023F493B385C5E887FE64C53271982FE2B7 +:1020A000A045FCED157B1A65FCBD9D4F9E3B11457F +:1020B000FE693C2C403BEFAC427474BEE68B03DF00 +:1020C00051DE46FB00170B1DF80EC6BB25268ECA37 +:1020D0006F59C2DF17BBE5DB482A37F077FA76463F +:1020E000F1FCC63C1B9F48DC3B0CF72D51711AA23A +:1020F000ED26E1873ABD53A6F6A79C718F8F463F28 +:10210000D6D6092978497F8EDA6277C37CDC2F8E98 +:10211000A3DF63791FEA05C98F1C90D11E1A56CE22 +:10212000C81E1D06F6A8EEC22DA2772CD2C5D0E798 +:10213000A01EE4CF04F9EF6E32616FCEF99D4CF72B +:10214000383FDCFA34D5FB6847723C8EF7C98EBF46 +:10215000A6A05F6B3ED31AF1FCF798E08F5320D70F +:10216000B0FFF940B71150EFA39D9C6FE7035DD21C +:102170001D93303A2FDDB992E86A7EAACC90AEE783 +:102180007BF87B54F3F17705744437A74327FC0FA2 +:10219000E310E2059D2E003AC5B8DA053B3BA6D315 +:1021A000EAE7389D86D37138DD86D3EB9B06BD0EFA +:1021B00060037E487C65F87BB8090DFD4BE8F79815 +:1021C0005AE5853715E5C431FC27D91D03A7E2FA86 +:1021D0001C68B5AFB9BE6D94B97CFAE0A9814757C8 +:1021E000135F703FC446718E68DC43C473D05D1DBD +:1021F000D87F57BBB9DE3FF0357FC7C5DFDD4E7EE8 +:10220000E80371FC9ED7DABBA7D03D2FA37E63778E +:10221000FB327E0F6C45EA1C93DC3BD03DE51B3C5A +:10222000CF3DD085BFBF72E08E81DFE03D32FF62DF +:10223000FE7B35C7969D3883EFFDBC131AA699EF38 +:10224000D5ABD53CDE5F4D6A8899639ADF81C503C3 +:10225000899F0C782E8AF3B277D2976A48978DDDE2 +:102260006F6DC2F7A9FC5D149AAFE3CB0A0D7FF73F +:10227000A654DCBF8DEBC7E5B91AF331DDE7AF4DEE +:10228000C21F32C1EF7CBF5C973ED949BF1793C4D0 +:10229000DF9D51636ED0EC26783C490A9F978BFFF7 +:1022A0000EB0F17D95E8B7B21FDFEFBF246B0437A6 +:1022B000CC43C3F3EF195F571C6D8271D4CCC13A84 +:1022C000065B1DECD783EA1DB769C518BF71A5EC85 +:1022D0002E64267FD1341B872BFC5D33FC3D41A44B +:1022E000DB5A177FBFC5F42E91E5FD96CEDE217334 +:1022F000F773F17B9CF88B943DF8F7D677BF64BAFF +:10230000974B769F83F1FBB8F85E0BC65339929CCE +:102310009E88587A0F69A49A40EF8979518EAA193C +:102320006CD178A2AF06FA1DB02BFA49AD763AF619 +:102330006BBCCFD4BCEA855125386F89E9896ED34F +:10234000BB5B5DEC63711F6BE48DF1A78B7166C89D +:10235000FC3E32FE3021DE0B6EF70E16731FC5FBFE +:10236000270E7F940DF76B63C43AE29FF91DAEE62A +:10237000CC9A20D66BB6317DB7E9DDB13A118FE644 +:1023800088E6EFA634AFBA83EE97D556327A7FABA4 +:10239000CE38575B28EE3588F7548C77C9A627D9F5 +:1023A000E9DDB5E9D0DE5560F23FFCC0F7BA2E7525 +:1023B0002FD9F0171A74711C6C3684B3B17BCA72B2 +:1023C000E2A72E4EA2F7B5191FD0BB4AEA5DC3DDC6 +:1023D000E89F68E5CF2EA9C578FFB27171E2F216C9 +:1023E000137FBC533D419B857ED9AFA2E97DEF2B86 +:1023F000BF4E5F8EEB74DC7E95851FF7DD75E6FCC6 +:10240000B34998C6D03DE47D5F0DD329CEC4D64CE8 +:10241000F2817D1549745E1A3735D57C1FF97641F6 +:102420000FE3B33DB7F583F9CA2940FFD16D724C74 +:102430004D29F4219FAC8DA69BE26CAD88CBA8956D +:10244000ACEF3E1C14FC7550ACEFC17E3C7E96296F +:102450003ABD5369DCAF6FECAE2C33EF4F378BFADC +:102460009B45FBC6EE4B8F569AF0D5E8D8FFE7C1E7 +:1024700088AF94896EBA4F8AF22E097F7730CA8D61 +:10248000703676E1FAB8B18B9D7EBFB871B1CCEFF2 +:102490005FC739C95E34EEBDAA5F56903C3CD84F49 +:1024A000B7DC176CEC9244787F49AE39CAE581936A +:1024B000DE357BA73AF11B9453AA1A47F7FD8FDB51 +:1024C0005A0621FF1DECC7EFC5D4496E9D99FCDC6F +:1024D000D7B7C9832DA8270D79E0C07B0C05167AE4 +:1024E000B25FCE7B84BB841C30DE75FB57E500FEFB +:1024F000A9A677D80ED91B46215C2DC0E7BB91CF8A +:10250000C3DA1B7CFDBFCD27D787F1C94BB8B8888C +:10251000FFB5FC1D4335F9B918B3FFEC2D41278DEC +:1025200051715C8F2D4EFC06E9C2B1BA3285E9E6E5 +:102530007A32979F4EE35D80AB887E2BA327ABE476 +:102540000F047A9C04F4F8663F85EAD5C6F37DB59E +:102550006A6BC947785665FBDE413E784FDC636F96 +:10256000BB7F1E2F61FCB7317F43AF19EBFFB9C8AA +:10257000AF5CF27B1E0F5ACDEF13BD2735BC42EF87 +:10258000D50D7590BFDF7867C9880755EF5C48F1B6 +:10259000A06BF15D25588FB54973CB12517F6FB594 +:1025A00033FEBB39FC9DA559A2FEFB20DEF09DD178 +:1025B0003E6E1E6FE13BA595C5EA88AF537FC67797 +:1025C0002F1CB7CBF4CED9FE7FF2DF6BBEE2027FC9 +:1025D00017C9B7DA65799FC67756A1DF25AB641AAC +:1025E000FD9ED3F1D865E52B51AE0ADDF09EE40DDA +:1025F000FA0AE93D27F2230FCF289C8AEF240E5FC9 +:10260000994EFC748C358DC1F791FC9B54E2975A1E +:10261000B586EBF57B1329FF7F0194DA682A0080E9 +:10262000000000001F8B080000000000000BD57D9B +:102630006B6054D5B5F03EE7CC2BC92419928003CA +:10264000463C0921061CF090849090002781407838 +:10265000D9E121061A6040AAA8A823C54B6CA99904 +:10266000900422448914945A4A07146A153020F6BB +:1026700062AB76004554D0888FDA8A36A0456DED7E +:102680006D04A9F47EF6F2ADB5F63E99398749C0DE +:10269000F67E3F3E1077F6D9EFB5D77BAFBDA36787 +:1026A000B41FCB2A644C5FA6308931F65DD792F116 +:1026B0000CF2CCE7919C258C25683263BDE1BB2DE3 +:1026C000E060198CB918F334F465EC557B7B25E692 +:1026D0005F5DC058FD30680FFFB5F9183B22331B12 +:1026E000CB676C6A3A9BEF877CAA68CF14DEEF77E2 +:1026F0000BD46CA5176317F0CF18C69C9BEC9F7486 +:1027000040A7F8E702FC6BF889E495AE636CD1064C +:10271000CB773BABC6FE1784CCDFBFDB62CEE7E3F3 +:1027200078C371BC9AD4803B3A8E35AD3DF1D6D09A +:1027300097F2A2ED0668EE8CD3D7C20F23D8880B90 +:10274000CAA5DB7F5DD73EF4253B8EC7687D59DA8D +:102750000F3D12C0E36CA68DAD01409E0D2E774952 +:10276000859887F964E1281DC9FE2117F7D3510721 +:10277000807332F6F7EB783F12B3E9A7615E7F878B +:102780003E2E0C60EC90C26A71DDA72456BD07E6B0 +:10279000F35B87BA0CE1FEDBC4ABA4106E186B4B85 +:1027A0009F96CC58B980F36F1D6C31D6674C2B9B2C +:1027B00001E3FD5686BC1BCB1582CB6FBEC82FC371 +:1027C00075BD783EBF6CA12F3A8F434AC753236033 +:1027D000BEA154996D47783356F54C9CF5FF75288A +:1027E000EFC798E77A9C27C20BF3B00F3F16F3367A +:1027F000F6DFDA7E9E2651FB8EBA5AF6F1C0E8F774 +:1028000000E20F8C37FC9D404332ACCF9EA9E62BF3 +:102810006AB4FCA7832B6669C3A378C60ECD66593C +:10282000B03EB6A280B1BED82FDFF740061BAF4343 +:102830003FCCEBF74E4F8EB6CFBF5636CDDB982749 +:10284000637E2FEECB47F8E348F8172AA8D67D041D +:10285000779EC721615D0730DF0FFA79AAE0FD4658 +:102860007774BD0F89F5EBACF3D005A41BB71CDE64 +:102870000EDF6A64360EE9C018FF87627FC627CB79 +:10288000FE30F45F931819B814D2C98FB020AEA7E8 +:10289000CAC9E64F837E6BD2F8F7683B89DA4D5E92 +:1028A000C7EB4D6EE029F6B3D51D2DAFA9E0ED8C39 +:1028B000BCB14E637EF9D77A385DAC4867ACE4E2D0 +:1028C000F9872A585E10FA6B70047FDE8178B0D2E7 +:1028D000C6B667E0F7E02F3A305DE9F43440FA48D5 +:1028E000D27D545E6B73799C80FBCB15CFCBC838FF +:1028F000FEA665D1B85FCBAA5D821F6764748C4366 +:10290000F454C6CABA9C8108E50C6FCFBA181F36BA +:10291000887D1B0C3C04D33D9A87FAB1B320106527 +:102920003405B673951FF6735A52DA3915AA6CD569 +:10293000BE536D83754C2B4DBB6700CCE3C9B61BF2 +:10294000AA6D8007D30AD29ECD86FC4E6D26CF5F3E +:102950009736DC0EF9FAFA59D5E320FF9AA6FF5C08 +:10296000EB1D1DC7E817BE6F43FCBA212BB0035304 +:10297000C63A6F8EC0BCFF26A5686B70FE399D43BA +:10298000114F8C766F49ECA3DF48D17C879DF5D73A +:102990007C9837D6113FFD5AD39FD6E27CC70D39BC +:1029A0000B705D582C85D7009C6497EAA885BC5FA6 +:1029B00073688A46E57E571FC6BE833F015D2C744F +:1029C0007D330EF9008047737A216DB67FD161F0B7 +:1029D000B36CC606B1460FEE2F4077F385F4EEF9DF +:1029E000180CCB4E1BED10C7439DF370DD0D0CD6BC +:1029F0008DF8BCD9C36C388ECC3AD700DF9600F87E +:102A00003580D7D2F3AFFC431A8AAD6A3CC837256C +:102A100016902F601A78FF57881FCBEA810F42BBB0 +:102A2000ACC01F287F0EF0650DAC63E9B31FA6A8EC +:102A300030A95B1139603FBEB83E921B81F51EC9BB +:102A40007AA53FF2A54FEB9896037CE10B47E07720 +:102A5000B84FC63C3FDDDC903212FAFBEB6E459B73 +:102A6000024D972840074887DF28913119D87ED03A +:102A70003684DB177B56672E807DF8A3C0AB2FB260 +:102A8000B8DC60DF1CEAFF43A857953D71F81AC80F +:102A9000BE51B7DFC47FAE17FC0780EB9816C3A703 +:102AA0006D72C59F701E0B6DA2FCF11B68DE13DDFD +:102AB000419DE464B59AB61AF0B02687D39DD3E65B +:102AC000A7EF5EC439A2B356BEBFEAF7E9FBAA5B23 +:102AD0009967CD30BE9FAC28BA9FBA76611C965FCD +:102AE0000FFB8970925D9D36CCFBAB80867AE17ED0 +:102AF0006EF69C4E8AEE67A5B2E24184EB5280B33B +:102B000013D6B5540AF2BCDDE50979B0D3F65535D4 +:102B1000F0FD2EDDD5B986F27ACA54186FB1180FC0 +:102B200036FA7009D4FFAB5761541EB69F4239AADA +:102B3000C25FC41FA67CE3403C381770071528BF4E +:102B4000DE633B152B67813E0E9740F992FD0EDA4E +:102B5000D73BDAECA6F2BB18D437F02AEB6279DB6C +:102B60006B587206AE870D63C310EF8CFD30E46EB8 +:102B700077FB61C85DD817EFB0987DA954DC32D2DD +:102B8000C3D29F0DD8E6CCC274866A4378F4CECB0C +:102B900047F96BEC0F7BFE2043B8DF22E6CA36A76D +:102BA000D37E4EDD7F2553E1C75BF74B4C05913259 +:102BB000657F3AE553CEF7A53C0088F671EA2F6EA3 +:102BC000F1E61792480F62BBCF777CB0EC0730EE8E +:102BD00094B530750FCDC385F338A34B619C078046 +:102BE000BA09E1B834CB1644383F9234F4913268D4 +:102BF000DFF0AA9D3909096C210137E902C9733553 +:102C000095F6FD08EC0BEA0DBA3DC4F7C5558FFBF0 +:102C1000E2F4CA4C8D81B32D34BB09FBB3C33E87AC +:102C2000611F12D444A6C6C0F95D16B013FF0CE9AB +:102C3000C77360DDD562FF93F2D24CF598D2F27281 +:102C400000E914F001F94DB2D6CF340E74F38909BE +:102C50003F58870DD7E92F93D8A330EF1BAAA13C8B +:102C6000A6BFD50929F608F4D7B1C01D94408EDA65 +:102C7000CBBE2479602F33EB6BFECCD327580AC12F +:102C8000E1939EF0E546C417D4CF06B141882F00EA +:102C9000670DFB3FF38EA2396949FE4D063D20DFEB +:102CA000B13195E03CEB889D8561BD6718DB85E51A +:102CB00067424E4FA8308A472C07DAE13A9C9C3F86 +:102CC000A5169BE1DB4B37C333BDCA0CB7DE7E33A1 +:102CD0009CAEA8CE3695F70D0C36955FB938DF94CB +:102CE000BF2A38D254FFEADA0A533E2B34C9547F44 +:102CF00040F374537E60EB1C53FD6B362D34950FFF +:102D00000ADF662ABFF689A5A6FC90B61F98EA5F7F +:102D1000B77FA5A97C58648DA9BCE0C87A537E789A +:102D2000FBA3A6FA23DEDF662A2FE978D2545EFAE7 +:102D3000D95E537E54E7AF4DF5C79C3F68CA97B341 +:102D4000D74DF5C7BADE36E52B3D1F98EA4FF07E2A +:102D50006C2A9FA8FEC5543E39EFAC293F55FB3F76 +:102D6000A6FAEDAC7120CAA3EB7202BF40FE222787 +:102D70007D4178FEFE5C89A503029F3932C3134072 +:102D800079F22DED8BA70D7E27F0F71C73CF93B34F +:102D90002F6D5FAC17F645A53285A13D71A64D227A +:102DA0007CFF9B7D05D7D31A6C4C190DD3717339F9 +:102DB0007D27306605E48B3DC3C350EFBA23C2DAEA +:102DC000507EA416034DC4F25FDDC56C317048AF70 +:102DD000F298F2BDFD5E53FD2BAA555379DF409E5C +:102DE000A9FCCAC59A297F55B0D854FFEA5ADD9488 +:102DF000CF0A5599EA0F68F69BF2035BAB4DF5AF2E +:102E0000D91430950F0A2F36955FFB44D0941FD20A +:102E1000566BAA7FDDFE90A97C58A4D9545E70A49D +:102E2000D5941FDEBEC9547FC4FB61537949C713D3 +:102E3000A6F2D2CFDA4CF9519DFB4DF5C79C8F9885 +:102E4000F2E5EC5553FDB1AEB74CF94ACFEF4DF575 +:102E500027784F9ACA27AA9F9BCA97FC05F474D477 +:102E6000471A9C9EED8588E75F9ACABF4EE81FF916 +:102E7000217C9796A6685231E2FD3F4CFD3D92942D +:102E80009287F853CB1235A7847A3DD7BBAFC8CF12 +:102E9000167A3DEB48807C43C80FC886AD3A991737 +:102EA000EAA7C10FA8CF48EC2B867492A2B336D400 +:102EB00013417F217DC703FA0CCA1303AFD3E4ACDF +:102EC0002CB43392A2FA69E68582CBD74F07E6335A +:102ED00092C333F203FDF2615EB7B5ED197F257C35 +:102EE000BA958556A150AE547CA91D409F6F24C44D +:102EF000B73F27BA006E31E3BD9AD09A99DF031D20 +:102F00004F747D41F5BBFAB5F37E25586CAC9DF648 +:102F100020D8F136A0D7D63AA02BD063D6D77928BF +:102F2000BFA1CE4BF987EB544A37D5E551FA689DDE +:102F300046E59BEB8A29BFA54EA77CB8AE8AD26D29 +:102F4000757EFAFE785D35E577D405287DA26E3171 +:102F5000A54FD605A97C27D8D198DF5D17A2B4ADBF +:102F6000AE99BEEFAD6BA5FCBEBA4D94FF555D9812 +:102F7000D2FD754F50FAEBBA362A7F1EF42ECCBF25 +:102F80005817A17CA4EE08E50FD6B553FEA5BAF7F5 +:102F9000297FB8AE83D223759F51FA5A5D27951FBA +:102FA000AD3B4FF92F849F615ABED0B31437EDBFAC +:102FB000BFE29A6D8A14FDFEDC60FFB47CD8BF9539 +:102FC00049297760F974266B0ADA17163BC2BA0FE3 +:102FD0007F16FDDB2B182B447DA75FEEB606D8EFDE +:102FE0007A5922BCAB4F53B735A0DD9DCFFD0BAB5B +:102FF000135928219FD086F4EC5BF02715D4A98CB7 +:10300000BAC36807DC1C04FB864C62C0C33CC2C365 +:10301000A3DFCA4E62215A8F32C87F3BE2217387F9 +:10302000DF433FDA6D326B47BBE9DA41813BF1FBAD +:10303000CDEEA083D43AA6E5A29D39D519E97D232A +:103040009477BEAA68DBD4EEC7BBAB752230E51E11 +:10305000CA5FFC3C13E54FD5FF280184CB1BF6E487 +:103060006AF42B84049C43F9B2296D1BE4AF43B886 +:103070007F3A3078FAA7A80FDF3D3015E5D877D032 +:10308000C406BA9EC6543BD2F50CA6BF9C85FA1C5A +:10309000EA8D90BF9185287D282FD08CED6783A184 +:1030A00080F9C048677F04DA5427A707EB3C5AC56C +:1030B0003EB4E6CBA6F4F541FE5684CB2703F51DBE +:1030C000DF872AD26095E6773DEBDC82F3F8FB0BD5 +:1030D0005F9E960644E16BF825186E11C0ADE68838 +:1030E00042F631E87F8CF2F7809E0DFDAC2AFF3E60 +:1030F0009787F5DC6FB13CF1A34A2CEFB815C600F9 +:10310000067126F8F2CF50CFAB81726A7737CF9F26 +:1031100001BB14F9D3D7091F913F535A08FFFAC6D0 +:10312000E3871DEEDEE4C78B50BF5F0F660CF9DE50 +:103130009783B2685D35E824C27E574861C44396E0 +:1031400011B1637F7F1BEEA17ACAA0C09E7CB2F34F +:10315000C30F17C0F737104F10EF3DE15CF42BACF5 +:1031600096395E845E53B4ED00129BC7AFA33FF166 +:10317000E6CDBD86A11F0CF107EDA07F08381AF837 +:10318000716733A431FC0CF0EE051CE7BF9E1B9168 +:1031900087F871D78B252AEE7303F69F11ED9FA157 +:1031A000CB0AC653527D5BD15F3915950AC4CB92C9 +:1031B000E4F0B62CF277D5EE89C33F4F897D7DC30D +:1031C0006BAF0A53BF9C2E8DF20FC4FC3E10F5A6C8 +:1031D0001E7CF5AAE5D0EF9D47EC9A13C72DECF0C5 +:1031E000F993E3E073ED63453931EBB86BFF49EEDA +:1031F000C7438F1FB47FA38F4AF3B4BBDC91F4A104 +:10320000D1715886ED8B2E7B221BE1C3086F0C7C9D +:10321000541CC981ADEED8F9F376400F27110F91F8 +:103220001E42B0DEEB9D6AEA8DD07F07802E0269D8 +:10323000E0E71E07E2E342A651BA88F929BD858579 +:103240001C88FFFED0430E06E3DDC6DAE8FB9DC511 +:1032500037F5C7FC5DAC739C17FABBA1B9FE65746A +:10326000CBCC687DA8B22FAC7B7A78C1CB984E7B53 +:103270005C3A1D52899ECEE0F81D52B0A91F8C37D2 +:10328000676779D395F0FD7A85E3171BC1D876F48B +:1032900013E4681D21D8B74F1E1A948F7E0B631D4F +:1032A000FF10F07D7D90FE0FDCEF9A958CF0A5F37A +:1032B0000527ED5F175D15DFFEC72B65645F9DF386 +:1032C000101FEF7AD199467625E3FAE26D427E63CC +:1032D0001EF5453BCA6FCA077F8EF4717B88DB53AE +:1032E000CB13FF87DA7748B226F5077E6CE77EC2FC +:1032F0003FDB5D9E060DE934DC1FE70DD0610DBD9F +:10330000887E68DF6A4F24137D7E2D0B3F5EFF8031 +:10331000377F40545EFF590E17A50C2079DEBB00A5 +:10332000D671D80B763B8E9BE1D2142CEF15EECFE5 +:10333000E9BF4B3EB00B4951BFE083A8076744F596 +:10334000E0E589FD19DAFD1D12EB944A49EFA175FC +:103350004915AC0DE95A2AFE8F00CE6B7312F32883 +:1033600025F1E83CE02D5270BE9A8BE69BE9273FA1 +:1033700002EBE3D2D64817CF03F0B31AED7BA7F0E8 +:10338000971DF9673AC13504E36FEF151D5F2D678F +:103390006D0CF890E4F90FD2D336839EA66442BB3D +:1033A000C4E013381FD9CB3CE82F0A5508FFAB8384 +:1033B000C3F5623872FDABBC80F39D065C2AF78FC3 +:1033C000E679D0EEB525D23CDF710674846756A04D +:1033D000DFCF62EDE223595750FE7A07E77BEC9B83 +:1033E000864CE43F6EA686707FAFD7256D0DF187C2 +:1033F0008E46B4AFA70122907FA8D86EA23366F1A3 +:103400005F011A913F723AFAAFC8DFC45E427FE6AD +:103410000CF4674A68F69C30E046FEAB9D83C0D64C +:10342000C27DB58121027C248715BB701E8DEEE91B +:10343000A9985F99743D0BC4E13FAB40BF8A3863E4 +:10344000F2B680CBD383FE66F86D1C9B525804F80D +:103450008BED7C2E8BFC1BE33759C6B7A676BBDF02 +:103460007339F3B17718F3C9A1749DE0A3B08FE469 +:10347000EF5A3033F27E2FF2AFAEA4FA0B5CEE902F +:1034800002A8C01ACD7E5E434E1A690EF600707F08 +:1034900072A723CCF11530B48F3882823F593BC7D5 +:1034A0007FAE0CC5BC8D9D32F6930A63F28AA80CE0 +:1034B000FBEBC054C1B4AB5C473F5577EBBBDC744E +:1034C00015E8CBA7ECD1FC934FEC9D83787E6E275B +:1034D000B05798CF53E55B27D9910E7E29B378E793 +:1034E00006A80E444CF34D6411937E9666C9F7B35B +:1034F000D4CFB6940FB694E75BF2232DF52B2CF9BD +:103500004996FAD32DF93996FA0B2DE5B759CA9792 +:103510005AF23FB0D45F69295F63295F6FCAAF2851 +:10352000C81678F2A8A5DD364BBB10D58BD207980C +:103530006A6E4C5CA47F3DFD954C78D5F6FCC1C10C +:103540004F417E7748D290FE777F756ACDB5B87FC0 +:103550006D363AAD58E0FFAAA98377CB3AFAE0EA94 +:103560001921E19C36D749C4BFA761FF918E9E11F6 +:10357000F4F49F602F45AE61EC37602F61FE45B0DB +:103580009730FF1CD84B98FACE015DF64057DAF31E +:1035900072745DF0AFF06862745DF0AFF8449AA9A0 +:1035A000BCEC8B7EA6FC98F3D9A6FA233F196CCA13 +:1035B000EF4C36C323D058606A9FABFF3311F51A26 +:1035C000B6A234FA3D1BE1944FFCC48A2F7362F11A +:1035D0002506BFDF01B8E8D744F3EFDEAB54235F25 +:1035E00038F8E172F62BE0AFBBF7A56D4539F0F482 +:1035F000CCA4C6B454E0A7855CBFDFFDFCF1241C5D +:10360000E7DD94F6C9B80FD77D25B395B02FE5CF88 +:10361000B308EE9BB69F91FC482A54A9BEB6BF5D85 +:103620005661BE43F6B5F7433DF1DD942043F9F111 +:10363000C27E39BC12EA1DBCE1776BB19F5DD00F31 +:10364000AA86EFA641BF50DE704E468EC46886C083 +:103650001F86A09203EB019DB79A9FC7B4F7C3F3EF +:10366000E828BC3A12115EB9CCA58F83FEDA9670B9 +:1036700079B03BB2B7F23AC89FD55D9D4C43F8256F +:10368000939C6B0BF2F3AFDD910A0EB790FE3BF407 +:103690005BDF2470E935019FFA3D87E7A0BCD97D47 +:1036A000C0A1A29F1DE11682EFAF033E61FAEEBDFD +:1036B000058E252887FB2A6C3BF4FF3EE057883BAC +:1036C0008A5507F437153B23FED9E57F972F5C8792 +:1036D000DF6DC2DFCE0EE0BE041AEDA158BF365B2F +:1036E000610F99E5A02D9AA77D8DC9E3BC6C8CAFC5 +:1036F0006B83B48D9FD78798AB28861EF6CD72F862 +:103700000AA9FA97788EB72852E1F0A15DA07BCF85 +:10371000A442FEEB93D3A8FC0F15DE2FEBB568B9DE +:1037200047F6507953DE63770CC77D0386E144B9D1 +:10373000DBC2FDF0AE2E3F7D8C5F1DE6F7822DD201 +:10374000743BCEA7D8E9C1FEA6F8CCFEF836FFDB65 +:103750008978FE5D63F1C7EF8AC85561D8C7394BD8 +:10376000CCF5AD711AD71772BD7481C0B3C9A1B6BB +:10377000711EE86F0A8B34A25C9C6D8B109F1FFA40 +:10378000154002FA1D1A38B93209D7BF48D206428D +:103790001309BEE3BE6A8BA4AD13A0ABC43C179D56 +:1037A000EBEC7A5E26BCB0D2FDEFF79D4A443C6953 +:1037B0000B1BF8D64EF8B67BDF71A2D31790FE7ABA +:1037C000E01BAFD7F1F88B776C7A724F72FB06BFB4 +:1037D000C242B1E721428E4FF125B1500C7ECC0E92 +:1037E000A49BF2F57B1CB49E7DCF313A0FDA69EFD2 +:1037F00090EF80F5EE2D717A5612A7E4E77205027C +:10380000BF9D6C58C312710EB3C613B573F745381C +:10381000FDEE63EA58849706FA6508DAE7EFEB9065 +:10382000514FF32C7407D1C79B7FD461E25B4ECD1F +:103830009CD740924762F675A8256FF8B5711B3189 +:103840004EC00A07AB5F7B4D61B2296EE6693CC78B +:10385000B347FBB9CE88D7682FA4FE76FE4855A69D +:10386000BB63E267229FCBD9C837593DC1F3E93A20 +:1038700097F4718C5E30F479A6A01DA8A14709E9E0 +:10388000E279C6ED57D19F54ED3C487CE048369D27 +:10389000FFEE3E7286E230F646B2B7615CC2DE23CE +:1038A000D35317FAA2FDB3F60C3AEF33FADF857261 +:1038B000E81A5E0FE76BE0F92EC0A3B438FA9FB1A7 +:1038C000EF5DF3DB279BE06BEDFFE2F621A28B06B9 +:1038D000FC11EA2D290C3C5308F921EC204B87F907 +:1038E0004F2DBC9BF4CE2EB8B9A753BDC94327CAF0 +:1038F000786EB5B17FDA56F4A7817E2A6F81FC1508 +:103900001ACF678414C2938CE2FE5BC9FF20F4C611 +:10391000C983CD7C7877E6F1443B4CF15C2899F083 +:1039200072728AB97CF2D0E716E1F7A766BA54D46E +:10393000C3A4A1B3FBA2DF73BD80D39BFB96267605 +:10394000C4814BBA5DEBD513FDA477D848EFBEE236 +:103950007C26E9BB93F37B96E7CEF30AD533F2AB33 +:10396000133ABCE867727A7FFAC127B1DF33D3120A +:10397000105EB9FA8F5C287F776772FDBDBB7E8DC4 +:103980007518F91FA37CF5A17C7586107E2D4F64F8 +:10399000927C5D3D25B1310D36E1BF0AB9BFA0056E +:1039A000E086F375069222089F964C46726C97B695 +:1039B00092F8CF8F53DA659C5F39D023C2E71FC8D6 +:1039C000FFA0DDD0CC0853D1BED2FCC302542F4897 +:1039D000FA794BA690B3538B06E1B9CE2E2FC8319E +:1039E000DCB748E408FA117B17C80CEDB05512A3F8 +:1039F00079857EE9A6B82243EEF6461B1DB6BC6566 +:103A00001F1F3F97DD21A39F605726E793937FB544 +:103A1000506E453EA2C961A403EB3EAB9E76AEAFAD +:103A2000B8D3888E0CB818F0AB54766E43BB77379A +:103A3000730531CE47654157ACDFC6A8FF30EA6F4A +:103A400090FE78CADE345CDF23DAD25707227ED5B7 +:103A5000B889BB552ABECFD12FD15293E8C1F53DCD +:103A60005CBD3E2DF6DCECE271DDB20CE3AE063D52 +:103A700004F9655A442D47BC4A675A3DA69B44FD4C +:103A80009F88717F8A7A23F0EF9FA1DE780DC12392 +:103A90002117C7F7DB482FDD522BCB0AF4B7639F02 +:103AA0001C56E2D82D467F61D1DF16D1DFE3A2BFDD +:103AB000D5FBD7973B108E0146EBE91BD256A21FD0 +:103AC0004B5DA156B8687D53E404845323A373B9B6 +:103AD0002D429F35DAEFDE57518FF119E7407164BF +:103AE000C0CF336A030909E88F9040EF017EBD7DA6 +:103AF000032FEF9360A373F7ED0F4FA2FC236E9E8D +:103B0000DF23F4E4C7C5BC326A750DCFCBB788FE9E +:103B100073DBE7A6C6F3A719A9A167EF12F3DA636F +:103B20000FC81FA27EF83B251C8A234FAD7CCEAA6E +:103B3000570FDD9768CA1BF873297EB72ACAEFA60C +:103B40000D877E7D93DA65D70068AE07755491BA0C +:103B5000F89D97F33B239EA32187EBBB0D3915C43A +:103B6000FFCE01BF437C768436B9D04E36F85C6A0E +:103B7000179FD35C88DF8D62DDABC5BEDA439A6BDD +:103B800000B477BDA3503C40C5E8BCFDE8376A717E +:103B9000F37D33E223C8A503E52D394B899F029DB0 +:103BA000338F14ED4F1ABDC9DB01FD37D9FC3DFA47 +:103BB0001DEC9B6CC4BF94F3FD89EF855830827473 +:103BC000AE6430F2AFB8542D8472DBA9DA82B8CF7C +:103BD0000A8BD14325029B6AEB238EDAB24DE52492 +:103BE000A753D13047F86431E2234C69610310CF09 +:103BF000409FC6FE92DC374F61E83FF0D92C711B25 +:103C00001A433F878BD93E89ED4FC9397D02EBDBE3 +:103C1000336D267D4E612D5FA2BDA65C223E63ED15 +:103C2000F0E4B8F1B3CC1B1F3FBAE22F0CFF4537CD +:103C3000F5AC7834D8554CF6CC6A15E088C364E608 +:103C4000133FDE51A810BDEFD8C4E5788BC0376BA9 +:103C50003F0D16FEAF1871465A3ED5078D7FCD2019 +:103C6000E8AFF5DD74F2B71E2854C84FBE5ACFA591 +:103C7000B8A2D58537111EEEF072FDC2D02B767832 +:103C800017CA27F03BF05FEE6C31FB27766C5AA920 +:103C9000E33CCF796592ABAB3257BAE2C9A90705CD +:103CA0009E197CE431611737ABD37B8C3730D665F6 +:103CB000D45380FD6971FAB7B9CDF49C7BA467FE3B +:103CC000B159CCC7A897698B48D86FA6A057A3DE77 +:103CD000554173BF6F0EE776E90F0AF463C37B4764 +:103CE000F14EA9753C8CF25B19358EF497D5AA4C30 +:103CF0007AED31752913F02179B5DA7BA67D2C9404 +:103D000037A832EDEBBAB265AE587DC10ADFD4AB4D +:103D1000648ACF65A133FD0EE420BE875CE8775D41 +:103D2000A5CA1447D5E0E5FA4603F08778746BED31 +:103D3000AF19E3B6291EF8AF73B0BF838537B1E67C +:103D40008CE87C21257F887BB842FB0D5A8DBF0013 +:103D5000ED18E02F183FDD3D1EF7ECB7BA303C5BA5 +:103D6000C483F6ECBFBA14DFBFD4383B369DE1F014 +:103D7000C678915EB83D9CFEAE861F57A445FBC138 +:103D8000782813BF1772E1EA5AB37F25A725CDAC77 +:103D9000076B9747CF56FD3487015F467DA88DF3AB +:103DA000C9DDFBE410FA01CF3117E1C5D3D8344E99 +:103DB000BFBB2C7ED9DDD05F4FFC79E82637F1E51B +:103DC000DD76B65F4A6578CCA47AFA304ED2306E92 +:103DD0006A4920B708E6E73B3F94F8B8B4FF30C51E +:103DE000BB02DC391D6BFCFC8F95F9391F9E0A79EB +:103DF0008463DB0C2A5F750FF350DE16EE8778DFE5 +:103E000026E873A790476D599139A82FEEFACF8F06 +:103E1000E4D838FC1145DC7E1EE24AD1C371E8B714 +:103E200058943B6D2C9488675DCFA711DFF2328FD9 +:103E300003F1E1927EE2EA4835C50DCB328FEFB552 +:103E4000AC7B17A67D71FDFE4A5CBFA4F175B7F887 +:103E5000FD21D4CBC0BCD55829D4D9C7F7D7C7FCCE +:103E6000B4DE051A5FFF9BDA74CABB011ECE61384F +:103E70009F1A1127CB3CCEBED80F8F9B0DDC0EDADC +:103E8000D095F1E6C9F1AB0BAE028E6F6A321B8D95 +:103E9000F2DAEB20BD90E569D5D46F37EBD820D6A8 +:103EA00031BBC43F8FD6E1E6EB5807E88CFD865264 +:103EB0001C148F7E7741605111F127A6A39EB86E26 +:103EC000964A7624F3F925F46331FFE5E1F165D7ED +:103ED000CBD37B847F434A3FB600CAD72D4DA1B8D0 +:103EE0009998752C2FC2FB0BEE357E92EB7E03FE6C +:103EF000DCBFB7C0ED20BDFF52FB1FD593FCAE5811 +:103F00007A6BCCE4F2B441F2BBD0FE08BDCBF9D859 +:103F10007A313E1B075386EFBE3E8EADB17E9828A8 +:103F20009F91C47D0A339F71B234939FF37FDB0F5F +:103F3000FFF3A22CC12F7BF6C71F07DD0EEB35D98F +:103F4000FD5E945FB9ED7730D483CFB9E3FB958CF8 +:103F5000B459C83FE3DCA93941AFF6C7E12BABF652 +:103F60003A168763BEBF2EE8F4F5226E3FC2D652E2 +:103F7000BC6AA357E670F6ACA478BE73A0C7B01EA7 +:103F8000CE53125433FF757ACD7CF7DBC621468AB7 +:103F9000CC7A5A9304F3CAA0FDD6B633F107F2D512 +:103FA000EB7B6F15E7474B92003F4F8A22A35F439D +:103FB0007FDB22D6975FAABF8674B405E10CE9C304 +:103FC000C3FDC730BF734F11233DB08AE36BABC451 +:103FD000E3F1BBA30FC5C102640754713B209755A1 +:103FE000B9A6C5917386DE1FF533737C6EF24CE77C +:103FF0006906D7838C71BBDBD706B1AFAB847DD5A7 +:1040000094B1DE24172F775F0CBE65739BF7C7E969 +:10401000B5C8C56EE673111C2466D84B5F23DDFB63 +:104020002ADAE5FEF1EC25F74C93BDB45EE3F61217 +:10403000D12DE0D7034B3C5BD1EFFC00DE87407C09 +:104040005BE4D9CA62FC43FDF0A41AE3FCD0A338B8 +:10405000206AE76C1672AA59E89F8F8973993575A3 +:104060003AA5DBEBAA849E1AA0F255758B29DFE8EE +:1040700039C5D01E7E140C31E4A729915B491EA4DA +:1040800056314F028C9BB6B92344F15E4B1209DFC7 +:1040900036D605A97D6A19C7BB9F06121EC3B57B1C +:1040A0004738080EF9A501EF08CE9F3BEC80870B3F +:1040B000F02715FFA7F741B9BAD31E0EAD2C243D4A +:1040C000258CEB94CAB87F25F91D253C81D6C9FD06 +:1040D000ABBD04FE1AFED896ABB83FD6A9F1F8F3F3 +:1040E0000760FBDA119E363501F1677D3187D7BA5B +:1040F0004246FADDBAB2E311B4AFD2CAC1BE023B46 +:10410000FE90F720F9B1D717F3F3875EC5FFC19092 +:104110008E0E07DC41B4EB53ABE4903385D2934E63 +:10412000E0D7A9E31C267CB9BAD6EC974D660E13EE +:104130009F745AF2DF96CE478DB0DA636ED257D1B4 +:104140001F84F08D399F213BC4A1737FE0BA99FC95 +:10415000FCE5C1B2E995958584479DE8B730E83D17 +:104160006D18D77BCF151B768EBFE97B909FA9BBBF +:10417000284E20875555A2FFE70171EF247A8E184B +:1041800021BA7C5DE8410D927AFF801839E308FF7F +:1041900093E87CE7A8EC0429669DE8778F851BFAF5 +:1041A000DB4DF4E44D339DB7B51466933C3BE7E536 +:1041B000FE9AEEE0D562B1035B607E3DE98B8E62D4 +:1041C0007E7EEADEE420BDD171BE0FE985EB8BB9BE +:1041D000DF6AA73D209FC820BC217B7C7DF14193F5 +:1041E000BD32D067F613B7683DDB73ABC4FC8C7A85 +:1041F0000E5B80C59B1FDE07F936F6DC1AD1AF5186 +:104200002FD116A67E136D667B2E29CFDCEFBA1157 +:10421000DC9E53BC67AFF9244EBCEE0F0A022D237F +:1042200062EE6B29DE2D1F7C027062DF5C207F65F1 +:10423000571C81B0FF125D5564FF3D58C8CF93777E +:10424000961C9C83F4B50EEC27B2E31378BC9F1345 +:10425000F07525E059CE980E86FAB2B53F96299BA7 +:10426000F67F9DC6EDBC573C6718FA6952CA2248D2 +:104270005CECA7B608FA5E588A5BD6C06287EF414D +:104280001DCF155EA93A48FAE83AB72C231D1F4501 +:10429000FE4C7C94DB798DDA992384A70199CEA713 +:1042A0001C42DFA17542FDF555C75D789ED6AF3E35 +:1042B000F566E4777B472804A707D0CEF645F1FEE4 +:1042C000010FE463E8ED3723F87DCC96B253CD3986 +:1042D000D06ED3621BAD5B66EDE4676D2CE4E71036 +:1042E00089DFFCCDD507EA1F2E3EEE3A4DED44FFA7 +:1042F00065DB22E827DC847C0AE6F97AF11917FAF3 +:104300009DD7556DEB85E3395832C98375C55CBFC0 +:10431000D9396A3AC5873D50C3E9E281E2E9912A79 +:1043200021E7F817BF5E5148E1309D780FC6A14ED6 +:104330008D2C463E29E87AE7B0856C15F283426EF3 +:104340009FDB32CCF801F84EFB77AE8AAFC3C15E7B +:10435000A5F3D9F5650E15F77753954C707DC0CB55 +:10436000F9E92137E7AFEB3DFC5CCBB5CCDC5F5A1C +:10437000C9B6508E697E2C656A9FA87F2EB16A6F80 +:10438000E42628F7F453189E83D6EFB959C7F11FD6 +:1043900004FEECA4FA66FBD7C9CA4358FF5CB1938C +:1043A000EEF9DC9F03FA228CFF1371BFADEF43F9E6 +:1043B00012FA751DED437A115DF8CCFC39B3C69C39 +:1043C0007758CECD6C167E7D29FBDCD03F1A0D3997 +:1043D0006B0F925E898E488453A3E21946F625D06E +:1043E000655FF45B666792DEED2836F449BDF876CA +:1043F00084AFD89FB489D30DBD25E8F9167A8BDD3B +:1044000063D1273D21965184C37238DB98ED34DAAD +:1044100011CD188B6C921BED5C6E309709CF1E2866 +:10442000E37CAF45F04586877671F49D7E4BE2EBE9 +:104430004FDE45E6F9A4D758F4A76EFAB3EA4F0F5A +:10444000897BCA434236E62CC438BA8F0E22BEEDB1 +:1044500079969FB35CEA5EF38167B99EB0EB431E29 +:1044600077B7EB6507E1EBCE0F9308FF1B92DBC933 +:104470007E7FD2EEB97218AC77CFCB3BFA2DC0F36A +:10448000CE62CE27F774A3E716144B425F0E1414C6 +:1044900073BDE60B2546AFA996F53EC4D7AA3DDF0E +:1044A0008DB56F534B022554DF622F4A2F815D0B70 +:1044B0007A86439941F6D910B0CFB791B213A47858 +:1044C000BE218BC57D53979FE63F648A4A7E0BA72A +:1044D000B0DBFB2F639E7AD01F0F15042A8BD18E81 +:1044E000B22DD5F17CD9F78354A213C0D2C188C7AD +:1044F0006EC6CF0D16BCC3E3AF1DED57AD427D6751 +:10450000B7111F68B1378DF51AE70F7B059E3F9DE8 +:10451000C5E1F6CC9B66BFC79C62B3DF035AC9E80E +:10452000DF7FFAC5D71217C48163A064C19CE298EB +:1045300073585F9B4741F8ABAC93F011DF4AE0FE44 +:1045400019CD1BFBEEC2EE977A3E1FB49E77141C6A +:10455000B1D04757FCA75FC27B0A06BEBDDE2B6801 +:104560008A3FBFE4BDF9E22C118FC508CF96DF94D6 +:10457000C0FD0E22FFF57A3BE5F34BFDCB059EB85F +:10458000E4A2289E74C5DB88FAD5EB076E13F69A71 +:104590005B467CE23FB3FBBAF04DBF0FE1756B7534 +:1045A000A01E53DFE06383F15C61F2D057FBC5C608 +:1045B000395E67F1EB1AE96782EF4CFA6E789F9DDE +:1045C000F0624ACD51D07327DD18FECA0EFBFF49B9 +:1045D000F1849A46C0A3494EEE87FDA078E9E61023 +:1045E000CCEF419C07E4F716076A30FF74A1BE0EBA +:1045F000C71F5DA4B7F2758DA3FB17063CBBA76B65 +:10460000F3FD8B3618DB7CBE1D30F9331A3CDC7FA2 +:10461000B8CADDF339F3B78D27BDB328F0CBE23844 +:10462000F1A4D175B4525CF0E5AEE35081BE07FB56 +:10463000FB0CD703F0183B74A21C2EC47973FDE366 +:1046400052F357CE979ACEC915A1C7B171CB972F08 +:104650002F12710603A2E511B18FCAF9D1FC1CFE1D +:10466000DF84DFBF1B0F7B6351E06DC4036B3CEC49 +:10467000BF0A4F032F3C45FA09E267FF227E19FB70 +:10468000017CFA33417F4B9422139F7EF838D15836 +:1046900026DDCB37DA45EFAD44DFD16820F9731F53 +:1046A000F183DA90D3837A5B4A298F5BF7611CB67A +:1046B00087E8F22B1C67B912198CFBF5B51CF9437E +:1046C000438C5FEA3AA679D10EFBEFE2559BF15D90 +:1046D0000BC5D1A161A4E57FEF5FB1B90ACF3D6CF5 +:1046E000C0A781CFA54CE8683B847223DD417132BD +:1046F0008D13B91C6A2CE7FC422991F8FB1A22752C +:1047000096707C385BA4CB25902695F075DF57A476 +:10471000DB62F35387EB8E92DED13CC025A984C3C4 +:10472000A55932CBAF870F4984D76E5E1E1F3EACB2 +:1047300056F877DDC26FCE78DE9929F8B611270DCD +:10474000283B328D5256990F43E4B527A33C72DEC5 +:1047500033A347BCFCA3C5BE33FA0BAC504CFCDC06 +:10476000E5339F676FEC63D04388C785EBB7525C36 +:1047700078B3B767B9F19A9073D6F126DBDA6C8813 +:10478000FF93CFDB4C746A4DCBEF7E96F4F7B5C147 +:10479000E13D8EF3619DAB7DDC405A1FA5C6F7C09D +:1047A0000AA97D5CCCBAE6D93B7AA39FF344E859C9 +:1047B000573C38CD5B96D03E2E66DD0DBEA5646FAE +:1047C0007DB44C21BEB336B3632ABE07B4F62D8543 +:1047D000E23DD726733C5A3BC441EF6D24D54A3B9A +:1047E000942C33BC31BED25FC2DF071AEB6B23FBC4 +:1047F0002BA9F62D3BC6BFCC2A5169DFE72E3B69BA +:104800000FC0FECD5BF1A51DEDAF240F33FA0BD722 +:104810006761BB763BB69B5BBB87E26692208FF5F8 +:10482000E7862407BF0FD4DAB58FB171760ADE139D +:10483000A2F7620264173A11CF204DC07D50A2FB4F +:1048400091C422E23D9976D6937EBE27F2AA8CE3EC +:1048500033209A8FE3F8D1EB672512BEAEB99BDF08 +:104860003F83DD6F5A08F980B02F0CBFD322411768 +:10487000CEB9FE5BB17E609043453FD5A2BCC3F488 +:104880003E82E12F62ADFCFD0C17FCC571B242E621 +:10489000F7360296F7346A2C7987F017AE2811F7AD +:1048A000CCF3593ED29B5A1326FC750E12FAB83738 +:1048B000BEFE9C24E2ADACF16D6B7D0B1363FD1469 +:1048C000ADBAEC423C39AB32F2236D748442A80796 +:1048D000AECAB20557A21E28E228168A75C3FF5633 +:1048E0002D80FAF3453C63E96732D363D635AA33AA +:1048F00091E9A638EC3453BE9C5D69AA3FD635C019 +:10490000545EE9B9D6543EC15B60CA4F544B4DF575 +:104910005D40D8026E3CCE82491467414D645339E4 +:10492000F7BB35F3F8561DFEE2BEA4E99D768C6315 +:104930009E23DEDB30F0605516F727CEB7C449A4BE +:10494000B35008CF7366035E4460FDB3179BDFC9A5 +:1049500070617C45CAC5F118C67EFECAD84FC38FA8 +:10496000D7CDFE45F90EC7CFEEF9188F47CF551FAB +:10497000203F03ECD77B395077BCD8AFF1331753C6 +:10498000DC88E37C2FA6233E3C3FE2E95C281F2B1A +:10499000E063F8A11CE733A83CC4FC83B2614A8EF3 +:1049A000A30AC5AB395C2DEDB81E07B3C4B3A83C50 +:1049B0009E85FC36D9A6725A2FD817141F50057839 +:1049C00088FD4E382F311DFD6C33B97F9679F93E45 +:1049D00018F43156C0EB96CA0112B69FA09AE1EACC +:1049E00010712B0ECB7E3CC4385C4F9658FCA3E371 +:1049F0002ECF2F9F2C6F5D84767A4B8D52157B3E88 +:104A00003B7124D7B3BF2891C47994751FD414BEC9 +:104A10000F25F40EDCA929337AE4F393CE0F20BDE1 +:104A2000B24BBED8C2EE9EF4A849420FDD98621E7A +:104A30002F9755F5AA84FD39D6C8EF759D2A1C40DD +:104A4000FADDD91512712923EEFE9888BB3F5578FF +:104A5000A8F27B50FF2BC057F2BB58E2E58DF87BE4 +:104A60005C6024E65E8735FEDE88B77FF75E85E210 +:104A7000FE437748227EB1E7787B161B6F8FFCF6EA +:104A80005BC7DB87881E8F2D9628BE6DB0326D3CCC +:104A9000C665CC51D897789FCE7A9F6051E1D8F106 +:104AA000781FD788B7FF5E61C1F8A642F42BA5D363 +:104AB0009B1973664EA1F6C054283EFFEB935B2B07 +:104AC0008717523CFED27AFEAE12B5FF1E53CFAC12 +:104AD00089137FDF94F78C7D30D47F13F805C5E709 +:104AE0005BE2F1DFB445282EAD7D33F74B5AE3F19D +:104AF000DBFDE9C928F7ACF1F8EDE338FE5D2A1ECD +:104B00007FF24849C4E1EB5329DED7AFB070563489 +:104B10001EDF8A47FF6A9CFB7F978877DBC0FE48D1 +:104B20004DC3387F907785F49E19C5F92F0C64AD7D +:104B300042D6D515E78F762994CF6896B64EC88AA7 +:104B4000C6F91F1BC7FD0B0B0B15DAC7F645D2566E +:104B500016A367BC1D36F0BBD38DF8DD5E3696D646 +:104B6000751CE68DF58E8F2BB8AC78FF7F77BD0670 +:104B70007D1BFDBC874A12ACE7FE5952789B8474BA +:104B80003797EE7FBF0E2485FAEDC6A1339A301E0B +:104B9000E92C4C11E9AA7CD857872EA0DEE3E3EF7D +:104BA00044011FB563FB44E63A89F5937CD39AF040 +:104BB0005EC72497B44786FAED62DE93026192B72E +:104BC00033545B50D5B0BE85CFBA389F4D14F41A1C +:104BD000532ECEDFFD768CFF9E5C6627793C7951A3 +:104BE000C44FEF30F8402E67B12E79107BAF13E938 +:104BF0006126CA6F18EFEA6FBE53790FCE0BF41619 +:104C0000C277F19E930C7F11DFDD4CAFDC08E589A4 +:104C1000E89784FA6BF3B6EAC84F26033FC175CC18 +:104C20009C69C14FFD31F2C332E86F20944F9F62FF +:104C30002E4FB4E0FD9691FC1CC6908F6B7DD3C9BE +:104C40007F8FF126785EFBFA3468920AA9BDCDDB2E +:104C50000A78F0E690F1071662F94699A1DF253C43 +:104C600052F07D1FF37D1B79EA9C1BA9C7B8DDB507 +:104C7000CCD581F17FEFDFCD083F67AF90C255A85B +:104C8000B72EE2F89CB98CEB8357073B5F46B938E7 +:104C90001BE87E028C9BB9385289F83A7B09D7030E +:104CA000E7041DAA1E733E69D84FF5B3FA396E8129 +:104CB000F2DFF7559893FBD54C7AE19CA0FD54ACFC +:104CC0009C9BBBE853928FF32DFAE05CA157CC6517 +:104CD000317A24D29980DB8191563DB195E492F3EB +:104CE0007B3DCB25231EF08F96F7F3E61B7194795D +:104CF00085228EB28D4D87FE36CEFAB52BD6CF6784 +:104D0000C44BAEAC0E1C1F19433F493E8F83DE558A +:104D1000CABBBCFDB8DC7A5179C892F93DB4CFDC8E +:104D2000A8F7B41773FB315A0EFF7753B3E388FF2C +:104D3000D3C57ED8105E2531E76622CE7E8D8FFBEF +:104D4000BB370EE6FE91359B98EA4CBD781EEDA26E +:104D50005DA572E228E243FB3B0ADDA7B3D65B33D5 +:104D6000BED4AEBAF13D150EDF199192ABD438F630 +:104D7000C9D1F17FB1A900A7EB23CF71FBC8D6E65B +:104D80008D8DF37C43CC636DC9330CE5C65B433931 +:104D9000BE25153BD50498EFD5BEF646B4AF327D9F +:104DA0006AD3F761ABA6005D231F09B1F6F2F442A6 +:104DB000E247EC51C2C35F139F39067A3DD24D12D0 +:104DC000B3E8CD61E03346BCB46C2A177CA68DEC09 +:104DD000ABA4428E9F98473A9F8A7C03F9595E7B29 +:104DE0008687E23C38BDE7C1DF58BFB1914EB5D0F0 +:104DF000FF64CDCC1F922C7AF3D5DFFCB619E9F411 +:104E000018D029DE775F0BFB8EE3B4173EE3C27B3D +:104E10006DFE210B0FE23EB07257C740A0AFB5FA4E +:104E2000F0B9089FB585B778F0DDD2638378797BD8 +:104E3000B9EB34F2ABB7CB475CA5C6C077ED4FD822 +:104E4000E8C0756807FFCA7B33AC2FD7F7F7BA0005 +:104E5000ACEF6DF13EF19AF16BAFCA8A913FDB473F +:104E6000960F29457CC5CB954017831DE1EC7871E1 +:104E7000B906BE561FFC25E1D74DEF28E184ACEE04 +:104E8000F1FBC32E3AE4FEB79B96BD55A9C7917BB3 +:104E900006BD55E7F2B89A450F0D742C88A937BDA9 +:104EA0005436C9B1532B5815D2F1A203831CB93122 +:104EB0007EF3C9A5FCDC71E18AF8E3CC2935EBBDB2 +:104EC0008BEA558706F516464A1C88A73785A05DEC +:104ED0009C755BDB550F16F33C50E2C81A125B8FD2 +:104EE000FBA96EAAED6E9D3C9E45AFAA70201F7671 +:104EF00031FE5EE96392CAE32599AE7BD1EE6E5D29 +:104F0000C0E3912ED2CFB9FFD3A5E9F206C48F0C2E +:104F1000FE8EEFAA0C7E7FD015B955C6F85F077CD0 +:104F2000C73816EBF82D423EAF01BD17F563B72D1C +:104F3000C2EDA4BC308DE73EEF20BB26F17C1FB252 +:104F40006B0ECEBA8DFC3D46FFDDEDB3D12FFA5985 +:104F500075BA6FE311E37829FD51692F1E97600B35 +:104F60009653DC658D87F42D978BF3E3645B3BEB05 +:104F700045E729CCDD3BC64F97AC99ED704746A27B +:104F8000297F45B5D90ECF2F55699CA4BC7EA67A42 +:104F9000D583F53EB2148567A5E25E290BFE887ABB +:104FA000CD1ADF42F90F851877C2E3A43D217EEECA +:104FB0003B4DE7F686C15FA7F93B67A2DD69F0D9F3 +:104FC0008DF95C0E25E6456CF1DE61B0FADB26E575 +:104FD00085F578F8B555E0F7641F2F9F86CFDEC5BD +:104FE000C4376F2BE5FAF1341BC02C1FF562EE3F7E +:104FF0004FB29C833C25FA31D2FCD2C053A584B772 +:105000002CE289737E67E877891AD7EF20AD5C863A +:105010007C18F89FEC2168556E288CEA495EDFBF4A +:10502000A9D759F436B7D0DB128DF75D2D7A9A7F68 +:105030009C998FF66561D2D3A6A39F22AE1EC6EDC2 +:1050400069AB3EF65AA9D93F91CB8EF9C92FA6F18B +:10505000F74B370E3E7300EF639EF3313A373DAAAC +:10506000CD30E96B477D111BEE8BC11F0D7969C0F7 +:105070007D8AAED079E051D0EB3C20D78EDA2399EF +:105080000F015E6768374EF200DF3D3AEC15F7021C +:10509000C2EFB0C96FF5A676C87332A6DFEEE8CBD3 +:1050A000C0DB1D9B1E0F21DE865446F64982D0933D +:1050B0000E6D5237A33C6121AF94321AE8A48CEFF5 +:1050C0007F2E7B81FC291B87F6EC1736D6734B8924 +:1050D000FE5F2807BAD59B60FEF85EF9C6594FBA45 +:1050E0001642FEBCC04BA31EE84BE74B63F2897926 +:1050F0005C5F0279D41FF5DD83431CD5E1387C6405 +:10510000EDA636928700885329FD63E63574AF57C4 +:1051100076E3BA6D1467C272B8DEB6F6977999B8BD +:105120009E83C98F65C7CA3D438E9C18A93BCB603F +:105130001E6B4A7557D970E2B3FCBC49B49F6563D6 +:105140002FD9D3E2C199B73F5DC2E35E580ED7DFD6 +:105150008CF452FB73BF140861FC0AF0363AD7B0E6 +:10516000D6CB2AE3F07A2F3BB0D81FFF5CF489D46A +:10517000987351633EF918CB0EE9C9523E2F971A26 +:1051800036C987FB25B612CFD543F728142FEEBCBE +:1051900047A1FB84E75628DB909F397F54902AC7AC +:1051A00081FB29C19F3A847C1E2EE637394F31F1AD +:1051B000CFA95A9289CF7EA738DD9437DE9F8ACA5D +:1051C000A9F664EE474A203EFAC71C1EF7FDE18AA5 +:1051D00002C2C3846B4ED8E3F14B23FDF047FC1CA5 +:1051E00028E1D03FECB9C9943679A19FB9CD0B8A9B +:1051F000A0475655C6FDF7F3CE2791BC32DAF9CB5E +:1052000038FF9F5B7B92FA9F773E85CA131A3AED6F +:10521000A8CFCC8FFC9EFCFCF3CE27907C9BDBF2CE +:1052200090E6423D6685E4413FB1511E6DEFA67A9E +:1052300037359BE3FB1684CCF17D86DC813F7E779E +:10524000ECF95BAE3EEB6056749F0C399253A67F2F +:1052500017F152CD6B23FFA67308D7CFBBE303979B +:105260007D4E94678D03E0EFEA54E10F7C1E2FA181 +:10527000DE3811F50E7A57E9C2053C2F34EC08C62A +:105280005A1BD1EF3681B1E0A3806A553976762A70 +:10529000CFDC9F0AFD55E20FB0960955D31A356E43 +:1052A00017AB13F07C20D34EEFEF5CB8C06C17F057 +:1052B0003DAF8CAEF66FC69E4BA84892308F3781BB +:1052C000DF225EDCAEB7915CB91DE40AFAAB9780D1 +:1052D0008A8BA058C25C9DE88F1E2B6BEF90FFEB72 +:1052E0003D85215D1976757DF2A799B1F7BC176FE1 +:1052F00036C3E3E60D49A67DBBC19F6E2ABFEDF123 +:105300002B4DF94ACF00537E82F75A53FB89AAF9F5 +:105310003D951955A5A6FA17D91F8CFBEDBBB33FD8 +:10532000DACAB85E74080F0E51BFEF2D6DA37B92E1 +:10533000E27CA24AC0BCCA37CB86EF491EC677487A +:10534000F02D13E14736FCFD494CB35D9985FB62B6 +:10535000B633928AB95D3376A7D9EF9C24EC6EAB55 +:105360005DF27499D9DF7C00E39D7BB32E7BD398EB +:105370000FE211FA2B2A85BFC53A1F20035B21EAF1 +:1053800011224ECF3AAF256D7B4268D78D05398EFD +:10539000F7472E777E97EB0729CF5940F71F0F79F4 +:1053A000F939E1A19C87C6A541FE6006F7271FF4E5 +:1053B0008E75A7919FCB4571C35246BD3B1FF22FFF +:1053C000F795E8FD3FC3FF60F47B50E8B7C751BFD6 +:1053D000C57B866C90DB4FF77AF594CA183BFC606E +:1053E000FF6026F29957FA0E6BC478CEB7938765A3 +:1053F000C6D39B0F2570FFDF2B074A6CC86FC6DA38 +:105400008236B44326A8036C68374C7049840F6316 +:1054100055AE97FDA5CEF067876CC3601D15226E53 +:1054200079ECCE3DE3B19F8A36581FD28BDBA9E9D8 +:1054300050EBF68856837CF776AF530D131EAA4DBA +:1054400077437985A16755717F8D1FFEE27E2D61BF +:10545000EAB8BBA1FE1271FEB364A7F99DFC2A8BCA +:10546000DFA642E8591596EF5F9799F52C95050947 +:105470004E2F65723F4677FE908382BFFD55C45F15 +:105480007D2AE2F9FF24EE8FBF23DE59FA5CBCB31C +:10549000F4529D46E9E1BA624A8F8878FFE322DE42 +:1054A000DFEAF77C50EA68BA82E4A3A4C5F28FB5BC +:1054B000AE82163FFC78CFA85EC2BE6BAFBC02A620 +:1054C0009892A8E4E339C42D65BA67D4F0EEF1ED03 +:1054D0005F4D5FAA33BF2B7651B9A3E30E8C3F7BA0 +:1054E000492AA7F3EE43F70CD8561F63CFDD338A62 +:1054F000CBE9433718F701DAE8FC6CEDB267C83E38 +:105500005CEBCBEF316E3B293CC32437ADE95A59F4 +:10551000FC7E1E17BF0F94B4FC1A8287513E66941E +:1055200064D2639322B3A8BFB9CD33495E168F12FC +:105530007C44F8ED5AF5BDA4079C0DB020BEFBDD00 +:10554000EDBC443F56BAFBABA0BB4F855DF927616C +:1055500057225E608A788129E205A6881798225E24 +:1055600020DD205E60FA615D357D3FEB03A9247389 +:10557000BC45F91860D13FAAC1AF419FB97DD9811F +:105580005557C0BAE7B7CEA0757537EFF9F7DDEB21 +:10559000457D61B5241DC673E40FA72506F1DDA284 +:1055A000C025DEAF4BC23CA71F9DCB8BE951BD4A46 +:1055B000BCC7A6C7D4FFF0C0730CFD6DF36A958716 +:1055C0003F8999CF3C5F07D757306EBD87795E6EB4 +:1055D0008A7E9B5331FAFFE5F2DDC365817B915EE4 +:1055E000E62EDB1341BD60A2CEEFA124F94236C402 +:1055F000C76EED0AAFE18FEDB0737FEC9F93E3FBD5 +:1056000063554EA7623EF36A7B717FEC65CECF781F +:10561000CFA66594DBE457BEDCF7215AF585749F6D +:10562000F32CBE074DE76DE638D743B3FA8570FF1C +:10563000EF0FA668E88F943CB3888FBBF00CBB04D7 +:10564000CFA5797CAB27137005F5403C9984F255C2 +:105650001A0BA01FA89931F17B8F449C919F853034 +:10566000CEE87EAFACE37D25E37EB1233C8BF091A9 +:10567000D56AA6F74E1C9638BBE839F8684BBC9A39 +:105680002E7F9B7835A6A65D967DDA28E289BBDE63 +:105690008754FFB5F72109E511BE79E23C569CD34A +:1056A0004DF2E6AA147F2AF411BFA0D9497952130A +:1056B000CAF7B786395485C73B34613CC36B783E23 +:1056C000A1D1EF41A2FE427D19D9478E3CAE1719F8 +:1056D000FA38526A24F6BC48B7E83378590BEA4DD9 +:1056E000D26D744F6A92452FB1C64B58CFF30DFC63 +:1056F000FD6094908FC6B9CE65DAFD975BCF887B4D +:1057000039E765618C7B4AD303A457CF41BDDA8367 +:10571000711EAD4D9E18BAC23897587D16E35C6273 +:10572000F5598C7389CD639C4B6C7D8C7331EBCFB9 +:10573000667D19E35CCCFA73A9E57E82C57FC4A4BB +:105740001EE32F8C75E6AAC7683F376470FB61E3E0 +:10575000F4E93ADEEF3A8BF10014DFC3DE43FD9942 +:105760009EEC52E9DC406F421076E9ABDC4F758568 +:1057700018A70FC673003D6588780E239EC4F0639A +:1057800039FD7E2D02FDF44D9CD217E5C606BBDE29 +:1057900017E96A832499E2E7FB32B3FE7F8575FE41 +:1057A0008536537C88E1A732E2439CD536131ED957 +:1057B0002D7894365A36F9A1010E741EB67129D788 +:1057C000271153588CBDA12C68A3F75B6A60FF4377 +:1057D00031BFDF608E885F992DD66B7C8FB14F6CA7 +:1057E00038FF9ACC36DDCFFDB22167119E2B72783F +:1057F00030A98DA19EB48079B21E857EFD625E4681 +:105800007B1BF3D68B781AC662E4E9C5E72F1AC56D +:1058100099061A15FA7D844DC5DA1115F33F92B435 +:10582000108D5A7D38364E4B8A6DAFD07BC0140731 +:105830009124F67541B3990EE7872C76C54CFE7E10 +:105840008C955EADF6860D06C3F9DD399A19BFF762 +:105850002CACC49C2345D7CFD44735D3BAB7D2BAE2 +:10586000FE3F5FB7815FEF25FAB7F486713E969CE5 +:10587000ACB130BAAE79020EC7923B5EC6DFFF769E +:105880001A7F1704DE47D978E316A4CB8FEF77325F +:105890007AFF80A9F3EE85FCFC0D4E8ABB9ACBDA29 +:1058A00028CEB17E7416F52F279551FD79F725D3B3 +:1058B0007BBA7FDAF8E91094E7EFA505E6A17FEC63 +:1058C000E35E7E7ACF7BFE0FAF95F1BCE0BDC47680 +:1058D0007A77FCB4CC3C787FE4BDEAB7EDE80F3DC5 +:1058E000A1312D56AF9CB7C2FC1EE69BA3B9BE5A90 +:1058F0002DF3739BEA39FC1DBA13ADD76C138F0ED1 +:10590000137ECF97F8BA5C6378FDF9815B293E027C +:10591000DF15A8E8413F80F9DE19EFBEFD3B62DCF0 +:10592000F7323BE6A6131C996725A5DA167C6F3E75 +:105930000470A27702C5FB9B8E2BFB89FBEC6A7F70 +:10594000F4233A7E3840C6FCE3A3B9BEFF91CAEB0C +:1059500085BC89422E06F26625F3754AE67DA1B81C +:105960008CD31253F7023F9CD7FA3B8ADB7816E0C0 +:105970008672E484A7A3E900E4FF044A19F285795A +:10598000DE3F105CBF9F0F3B0CE5F36BCDF0EB1CD3 +:105990009D46E3FF69C3A164D2B73C2CE0E843FA1B +:1059A0001BF183F92DFFB91CDFAD98CF38BF738988 +:1059B00038292BDED6C07EA1DFC093C85A53FBE244 +:1059C00039C3BB9553609E9E0AA933B504F1BABD95 +:1059D00012F17A9EC0EB9A6596DFAFEA3E45715FA1 +:1059E0008B84DF6091CFCC2F195E912D12F362175B +:1059F000E3FB3CF60DC105BAEF7416139E98FA4FFF +:105A00001DC3E3834E049A7A33C2430EEFD3F7F1FA +:105A10007819D008FAC7EA5B9B46CB86DF4FB5C73B +:105A2000C07F5EF5A1A6E1A41FBA3A2BBC1CFE18EC +:105A300077FB2CAC3B1E7CAD7068701F27382CC2E6 +:105A4000DF73E6B9180E6E16499E85700AD819BE26 +:105A5000D3702938CC9BF9779ACF1BF8DE7C713C48 +:105A6000B8703E70313C18E1EFA9AB3AA6A667D0FA +:105A7000EF77F56C837E3EDA30763CE64F20269059 +:105A8000DFDEEFE0FE1020EFA2285E305BA7BD6FE7 +:105A900006C69D79884F1A7863C069FE86934DB516 +:105AA000B81F7F4B5631BE78BE77E42D142762E0D5 +:105AB00093054EC87F705DD47E00A666BE6AC5B7EA +:105AC000E7BAF87780E878FE3811B76F837D8CF3FA +:105AD0007B6E69BFFBE1BEDE363F9489ED42DCCED2 +:105AE0009E95988047000D47F9EF71CB010D10F19D +:105AF0006295CE82A8B71BEF3619FDD8C2663BF679 +:105B0000E2FB2FFCDD2BE37E4B57BB08B7CBEDCD83 +:105B1000D3E2DAE73685FF5ED5A603B359F6109CCB +:105B2000D748D72992CF5CBFB439B5E62CDC8F3784 +:105B3000F97D7596E1661F1BFB09FB614B2FF3A2F4 +:105B40001DD69060BEF73742F0BBB2319CCFD85221 +:105B5000F93817EB992BC5BD9C04D3FC0C7F34AEF0 +:105B60000BF52205FDE6F4AE9C59BFB8B89E8DCA70 +:105B700015F4E3F7582F85EB6586FF789C5EB8A790 +:105B800010E3229C1EC4FFF604F6567661F49EBE16 +:105B900071FF7AAEC013236FC8634FA5BE0FF7EF36 +:105BA00094EE4C47B93297713D98C647BF294B34A4 +:105BB000DD9F9E2BDE8731F2DF1F932BF49D7EA6A7 +:105BC00076A07F5FB52703CF111DE9A8DE1B71D733 +:105BD0001D22FE7EAD3DD2548CE743E5AE4E7CEFF8 +:105BE000F9A5210E86E70FD32ABFF7188FCF0FD064 +:105BF000B96392C0AB8D8E3686F2F554D73BBC2C80 +:105C0000A53CE61C3730AEF72AA41F64681817EAD3 +:105C100008CFA4F8DA8A101B3F13E5AE88FF0E34D4 +:105C20009AFD796331CE2503F9873B88E7A840F7D1 +:105C3000A6726BDC7E92253ECBD807D4D3CBD22E76 +:105C4000DE37236FCC276A9F70BF94617759F1EBE1 +:105C5000B2FD526EFE1E8CD52FB57E4CCF7EA9B5FF +:105C600063FE77FC524AB3D91F64DC733C346B92F9 +:105C70001C467B3E237B9B33C65FF70B31AF5F8BAC +:105C8000B88BE785FFEA45E1BF8AA0FFEA1AF477FF +:105C900069C28F554CF9C3E8BF223F5615A5461C73 +:105CA000C6987FCE64B1FEBDA692C02FC6C4ACDB41 +:105CB0007E3E97E6F7A0012F61BF027E123E9ED581 +:105CC000B2E8F75DE11FF47F4D367475E21960DFCD +:105CD000FA54711E596FE8BFF47B16C81EE2FA121F +:105CE000F9C95C829E26974DA1DFD73059339F17A3 +:105CF00025E5D9A3FE2E86E75336CB7952CFFEAEEB +:105D000054651AC58D29E8EF2A40BE772BF9BF14D8 +:105D1000AF46EB37DEE933D68D7119E857FDDFB6B4 +:105D2000ABEF1DA3BF85F07D7694FFED31D8CE1D7E +:105D3000A2B8B1C65EE36723FE3C2C89DF0F66BDC7 +:105D4000F7EC3F4DF0DC3C8005D3D1BFE5F6845045 +:105D50007F51541BF9E1BBBB0764DCFF8121C232D8 +:105D6000C145A7F1A2F77AF97DC3CBF55B3589DF91 +:105D700063CE0E25901C73801CC37354C31FE6C8EA +:105D8000F0D33B13CC2DDE97B469DAF438F2D1C0EE +:105D900007CF18FF57080F253293E8421E0D78FAF7 +:105DA000FFC04F6EA4FF173959A800008000000003 +:105DB0001F8B080000000000000BE57D0B7C54D514 +:105DC00099F899D79D9BCC244C20C1411EDE24A07C +:105DD00051061C9E020672934C200F02C3A3594425 +:105DE000C009040CFEB11DAD76D1B5CB0D8F1813D3 +:105DF000B5A3428B8F6D27902074DBFEA3825AB52A +:105E0000EDF05051A10E6A9116D0885171B7B5F1DD +:105E1000D196DDB575BFEF3BE7CEDC3B9940EC6337 +:105E200077FFFF8DBFF672EE39F73CBEF3BDBFEFD3 +:105E30009C3958576D8DE632D6ECB6469D167C4E91 +:105E40001CC4DC8C7D817F257D9F5B364C63EA65BD +:105E50008C953842CC0FED1C76A676F918637E8DB2 +:105E60002D1C976C77910A9D4D612C7475305BCD1C +:105E7000634C3A379AA99318DB3733E851E13D7305 +:105E80006B2C98054F36C2F3BE8BD1DF17367C3FA3 +:105E900098B1E9FD8FCF98C618F4C7363FFBECB335 +:105EA00053617C7C05DF39CECD62EA101C2F3412A1 +:105EB000FBD7C7C379E13830EE257F957107D80E3F +:105EC000D63D8EE6E1D55808E073AF852D41381DEB +:105ED00014F0FE76B06087331F9F0B0759018EC503 +:105EE000025EA9FD39CE5DCD62930C651DDE873E55 +:105EF000FAE8A3A1B01F38A435595FAC5AA91F8492 +:105F0000077EF7A614BE91F919AB54C78672874174 +:105F1000391BDA5F8CD3F44555E8E75BD09CCD2084 +:105F200030A84C06B05A443DBB32DA08F3CAB0EA96 +:105F3000E5E92195AF83CA5F55A78734288764FFB9 +:105F4000616532635945CCDF4ADDC4D52D50767882 +:105F50006DACD503C5C9F69E6E59C0B980B14C066B +:105F6000E52251CEC7FF3794711F17BF7F8A65E3C3 +:105F7000BE9ADBA92AA3752D51B372DF1F0BFFBE9A +:105F80008A5D85EDF5F713AF0E2DA7FD851D1A036C +:105F900070A9C77F29D0DEAA0E658676DBA02EEE1B +:105FA000C6614319CC87EB53AD5B613FD8426BB4FC +:105FB00053EC07BEEF1FFF15167326CB923DC43C72 +:105FC0006E8E6FB121C97DD6EB6F16FBAA3FEFB580 +:105FD000B2C6AE34FDC74BCA6EC6F9039EDEA2E65A +:105FE00025F17473CEEC6B18C0F3DB16ABDF86F3D0 +:105FF0002C83FFC1D3E266D156829F87AD46788756 +:10600000B3FD046FE6D15643BDA4D809FE4EC44784 +:10601000587F068BD2D3C5628C15C27E31D66D29CE +:10602000E4DBCEE9619907E16A6121F605D2853B9F +:10603000774078DEBA613D7B770C140F66C4705EE2 +:10604000F232573403E625219E00BEC9459AAA22A2 +:10605000BCBD93A9DC7F7F4D041FEB2CF50184C3ED +:106060005835B88DF6D31F62C171F8FDC0E633D044 +:1060700076AD1B989877954381FE178B79EAF36686 +:10608000DEC5F4DC8DFB86FD06F3D8BB3A3E021E6E +:10609000B7203EC1FBEFAB6E8E8F13D944C4C71639 +:1060A000D543EBD0E731E0796F0D2FC17D6656AB5C +:1060B000BF75326D8BE2198AFBC1F178D07485DA35 +:1060C0005946BCF06F16A00F8BA7398874A27F9F2A +:1060D000DAAF8C1FC2B8A38BD59F201C53F9CF5BBE +:1060E0009B0B7720BF7F6BF3A24156787FA41FFEE6 +:1060F000B31CF9CF104319F90FEEE7E6EF7FFFFB72 +:10610000C07F4FE3140A92F54704FF598EFC07BE87 +:10611000CBB86C9DF55730DE8A5B6C511B0CB1ED32 +:106120001B8BD2D2D75BDF84F941BF6FC3BEC440A3 +:10613000BE641CFCD07129ECCB29D546FDADB8E37B +:10614000E30AE43F0C99CD79E1C9F1A847EC4FC6C9 +:10615000A6B803E5D4F2D83049013CAFD7BE5C3FC6 +:106160003AFF3CABDE1ACA85F66F66867F032407CA +:1061700078F28D5025940B67A91F22BDFE8BE02F6E +:10618000DF53D57FC5F227A2DCA2AABF3196814F8B +:106190007D22F854C03DB52F9FB2975BC2C4DFDDAE +:1061A000B0B130C5372FF6B4239D27F84D29C7C7A6 +:1061B000CDBF4ACF47985EFF0CAFC77E2CB9D88FB2 +:1061C000B2C3DC8F95DAD99D7C3CBB8B3FF57A67F7 +:1061D00029C707FDF966762866B1215DAACE52F877 +:1061E000AE60BA2A97C2FB8CEB5818F72DE329163C +:1061F0007E3CCD7C72C47C3216F176A9F5C3C53CD9 +:106200000ED4DD606D21BCB445395E4E3AAF1E221E +:106210009D7391BC4F94137C389BDE83DC0AE1783C +:10622000A9FC76B958CF5CF18CA8130785CE338EC4 +:106230002BBA88F488FEEADBAC0938FB63307FD7E1 +:10624000DF5F36B15549D64F2B35D3952B5647FDD9 +:106250002D6F594CF39C580AF2CC95E41F11F5713F +:1062600086FBFE6988856D13CE332FD1CFC1BACCA2 +:106270008CD130EEE9B8CD0F62898D66FF92151C86 +:10628000D7B7FD331B3C4C03BA7A6E839769D0F0C5 +:10629000A720C7F019DB5044EF0F6CF053F910E85A +:1062A00077587E61834AE5C31B2AE9797AFDA7AF57 +:1062B000CF87713E0339CF94BEFDFF5DA9625A6757 +:1062C000E6B9F14C83F9296E4F36CA17E796F2F317 +:1062D000CAD5E780EEF9BC64312F0F3D0F88F91E57 +:1062E000C2F9D2BCF87C874E0F5D8BF837EB5CCCE3 +:1062F000660178B914A622BC64FBFED751EDDB32EF +:106300005D5D564A74D6AD203CEEB232924FDA0A49 +:1063100057B413B6A4C2E63E80F2F4F47ACE074F27 +:10632000AFE77CF0C6D2F47CB055F0A5C4BE8F5B5D +:10633000B3D10AE35E51C6BA6DC01F2E2DEA2D45BA +:106340007EDC39237423D2C7A5454C7566D37B9573 +:106350008D676CD7767B6514F0ECADEDF17FCA40AC +:10636000FEAE792DD9B3A09E8DCC5E00F0D926E883 +:10637000605B737AFEA83FE3621ED74F57D7E3FAFC +:10638000DEDEF034C931BDFE3A26F833E3FAF8B662 +:10639000BA567925F4B751D0A1DE6EE392D0C65239 +:1063A0004359563C12EAA9EF3CC846B141008F2D33 +:1063B000CE25D134F37867BBE7DE8C5CD233CE6474 +:1063C0008F32CCAB79C828D463F575BEB3478E59EC +:1063D00011BEC3583B03BE73FAB69D058A3BB94E46 +:1063E000E02311DA1F25F7027A01976F3A3DD31F98 +:1063F0007C923DC367E2673F2E35EB57F0477471DF +:10640000EFCF0B27B6B2E477738BF277B45A92EDE5 +:10641000490302395BC30C7F53514F85BF7C5E54E7 +:10642000A09E5458D297BA0E1D443A0F668651BFAB +:10643000AAF13BD8195D2F80FFB98AA02C27CB7217 +:1064400091DD540F8A26530DFA2E634B992A27CBE0 +:10645000836CC746A2BC92D6DBBEDD03887C7AFF84 +:10646000870E945BD2FA7AB223A4F512BD37E2E527 +:106470001930824ECD509FC1FD6CBD5A7D169F8351 +:10648000A6ABCF117CD7C797E3BA37B1F47AC5FB77 +:10649000D343CF9792FEE151FF1EEB6F063DD24FE3 +:1064A000FBCBEA11CE85A047FA492F7DB1D4A09746 +:1064B00026F545D54AFAE200F771A0ED743D0CE8E7 +:1064C000FCCD52DAFF88BFC982FAAB467AEC8F5115 +:1064D000CF32E87B03D5B3F47E17563E46F004393D +:1064E00029EC1B6820931C4C9465D8871229EEB3C5 +:1064F000025F195F36AADD3E92B1DA42BD7D5E3B96 +:10650000EA11251536614F79DAD5D18C1D970CFD2E +:106510004D63ECD55EBBA877D737C23F5DEA3B0140 +:106520000F4CFDF3FD19EDA8A3D9AEB18A7AE73B74 +:106530002AD4CF285277BBA05E3E60C9BF2B07C7C5 +:10654000577767C1F8FF7AB9527F783A967B87BF51 +:106550000EE57B0ECCAE973370BEA5610FECCF136A +:10656000070AEA65A83F5AC0C7DF5936A65E1B81F5 +:10657000700AFE89F62D18F1231F84F18248D73363 +:10658000803F19E97B5019D7B3E43207C1A9C41180 +:10659000B321DE94E4335583799416B1CD56C09778 +:1065A000578B0F0E41B8BD8C76C814EA3FB30CF17F +:1065B0006C09F49FD5F73B6719970BA9DFC37739AF +:1065C000F4DD62FEDD0CA489197CDD4D76AACF2BAB +:1065D000C3798779FD3CFB84C8180FCEF34F51B7C0 +:1065E00025D9DE5666AF6F1A4DED87537F5DBCFD32 +:1065F00085E16CFE5ED7978E80A98CCFAD39DA929B +:10660000203CBF59C6F955EA93B1DE2138CE71A9B5 +:10661000D73D1FD63996FD211AB89CE6E1A3793FF4 +:10662000CDE1ADE3477ED9EF421A5F979FE6D9C827 +:10663000E7D91FBEFEB94F1D3FAF28FB8CEC731886 +:106640006F16CD67199F8F8E1FE3CB3E8D227ED8AC +:106650005D1FDB54E4E736A675025ECD9DF4C7E10D +:10666000467DE8BB655C9F3F5AA035223C328B7A61 +:10667000697F55456146FDE4D9326127C11E5BA79C +:106680000A7EA970B98C7806F332E9974F0938FE73 +:106690004CF47F5CE2FD17C3A7B6891C4F56C23C81 +:1066A00096887AFDBB043DB1FA76DCC79209EFD239 +:1066B0003EAF282B4DD9E7E277901EF57D5E5D76E3 +:1066C000958E272182FF05E8E136A40798DF57055C +:1066D0003D1C2DE85D847A59CB9FEC6C07314F8EC1 +:1066E000E7B03E7F2BC081D9A31AEA032E7B8EDF51 +:1066F000A8FF95F8BAEA50FE1BE8254CFB21E8E517 +:10670000CBF67BA3A0A7D4FEA1DF7F48474F5F3D18 +:106710003051A7A70D34EE5EBEEEFEF0B73F3A78DB +:1067200058EC43EA53EF47A7CFDBCAAE6C37D2A78A +:1067300001EEDFA2F1437CFC0BF12DE6E5763FE8AC +:1067400009DB685D2978B550E1FD33ED5AE2BB3ACB +:10675000DE2F38705DBBE6A6F1FEC9B8DE16017FFC +:10676000DDDED1F15987E313623DD565167D9F3A91 +:1067700069DC060ECF34787DA1F17F68A4BB1206D8 +:1067800086F3E0247D5D68FD5BC53E27EC4199C53D +:10679000D08E93BC1EAEBFA8C11F1BF9A33EFECF77 +:1067A0000E14D58BF17F62E433D565DC2F9159C48B +:1067B000EC82FFEE37F2A905089F3C7A7F88DE0B5A +:1067C0003EFA65E96BC07238B680EC9766C6D2EACD +:1067D00003928DDB8BCC3B91EAC1CE21FDED987706 +:1067E00034F94D47B34C15E9A6AD4821781CF39513 +:1067F000294D689F2C1B3B91A4AFB0DF9F04FD483F +:1068000005FBE169B02BF08976902AEC2055D84140 +:10681000AAB083546107A9C20E52851DA40A3B0881 +:106820009F36C763EA905CC2030FCE478A2DA675D8 +:106830004851FECC3C3795EC1ED917650AF9190E64 +:106840001FB20D45BD85E3CDD12B3D0EF4332D5048 +:10685000BA5818ED81D2D0676506BE19E493670B6C +:106860007D1EC72485FEF95CA6C19F39F16A45E803 +:106870003DDC0FADFB0DF4F205F52F58A20DF949E3 +:1068800091358A70735EFEB886F6C8EF54D6CD484F +:10689000EFEBD250BF97EF60E43F746DD734D21B5B +:1068A00001D3B2BD8CEDAF7B86DAC781513BFDB819 +:1068B0004E30AC0CFA6E7CF10D560DBE6F09DBA2AA +:1068C000A864B6845759E368CFAABCBCADCC46FBDC +:1068D000F6D9E84C2A5F2BFC54FA3C7F29F62B2E84 +:1068E000ECC111E1A8239D7D7EECC08337EE85715C +:1068F00032434E0FA8418007910AB47F4FAEDBC9E7 +:10690000B0FDB12B340D9D9CA7F24353D085DD66BD +:10691000D7285E21AF7B82FC7CA71CA12983617FE5 +:106920008E6FECE27267496D657E76D27E491D6F8F +:106930006539976F27F6EF69A1F55BE46E8453DC48 +:1069400011DD81F039952FF99B606B4E5D7E6024DF +:10695000F61FBFE9FA7DBFC0FACB25BF05DEC7F73A +:10696000C8644FC54BEFF4AE31F09DBA42298CE3B9 +:106970001D2B58538170C9ACF44B193948A75DF7EA +:10698000A0FD747CDDA421B8BD2DF9BBBCABB0DD8E +:10699000CD4F1D9D0AEDE425B6A9B86E5989117C2D +:1069A0002E5134AD1BFAFDDAACD0CC7298E7B2C6EA +:1069B000F60AB423E586FBB6A01FE592CFBFD582C9 +:1069C000F33DC5E4EE5678B6E66F94F17D4B7893CF +:1069D0008CF30DE6AFB416A01E502A77231F6F511B +:1069E000B7C897C2FB4B156BFDF5D97DE1D1F220FD +:1069F0009B15BA12E7D5EC5D9385ED7EBF2104EDC2 +:106A00005A4BD3DB8D4B04FCEAC6EEDAB112F163CC +:106A10008FEC41B8B45834EF4A588F764D96BF93F7 +:106A2000F5FDEEF172CE8F9786617F15DA1FE237A2 +:106A30002BCB1F68D750DF1ECCF7AFCECE64C7E09C +:106A4000E4779D334A97971BE4649F71F3D74C41D9 +:106A5000B8B58878C6E307BF4F7CFBFAE9C1D5F823 +:106A60005D7CBBB69DEC5C4D6668A7F767679F02CF +:106A70007BD93328F9FE91722E475A6E023860BDD9 +:106A8000EFC0D18274F6F2CD0747A2BDDC26F0ED4F +:106A9000D41E99F85BCB72573B19673ECD3B19E08A +:106AA00022EDF67A50EE8F554BBF51FEFF06FEDD0C +:106AB00083F0FB6FC43FC28F25E58FB6A3BEADB296 +:106AC0002ED223B6D53D23A7E3231B9784761AF154 +:106AD000C4E5E37E10DC577665721F53BF3BB53DBE +:106AE000764F5A3F88D8D75D03DFD7C770FC6F94C5 +:106AF00073FD84ADCB1B907D7CAF559DFC18D2CD32 +:106B0000CD4E4F27F4131476AD73392BB3237EF893 +:106B100006EFD0404E1E11F4E319675D60CF453E8D +:106B20006FE3C6FFE7D01FC89B1076694B96494EAE +:106B30001526C70B31CEDFA99C8FF599A672880D5B +:106B400066B12263FDC5A6F229476C24FA15B47D0F +:106B5000B21FE709D3D7486EEE9BB613E58F3ECE42 +:106B6000EFCA255A579390F3A7C6B128CA7957F8A8 +:106B7000AA4DA550FEB985F55AA6E1E4D4ECD2A9F8 +:106B8000E4222579B84DF26F2A45FC2F957B379288 +:106B9000FC526D38DE95187F84F2A4B8FD4CB741E5 +:106BA0003E95CB0E53F94AF5091683F69E95EEF005 +:106BB00020E8FF4A66684FEB3197CF969BFDB5FD05 +:106BC000F1058575672D00BC8BAF5F34C802E5FF0A +:106BD00028B7A68DD3FC48F8F3BA403FC1B8E2E32A +:106BE000A09F60792FE827587605187D77CAC2E301 +:106BF00023876EBA9EE854AA6516670E2E770AEDB3 +:106C0000FB6B82EF14CEE2783400BCB706D2E03DD5 +:106C1000CE1BF53E9CF7F9FC90179A37C3A0C7002E +:106C2000F49188FAC9C12F385E527CA8FFF15AC48A +:106C300078117A3EBE61BB182F6A8AC7EE536D4445 +:106C4000778121CF7AF37DC6F136125CDA1C1C8E77 +:106C50007A1C2CEE9BB813F10C9E836CD0FE8A80BC +:106C600094769F5CE76CA678C353E50AF5E7B277A4 +:106C700051DCC1754EA2FAC784DD94EC9FC7F9B10F +:106C80007FAB3BA997FEB9FDEB70CBB6C56A8770A9 +:106C9000BBDDD33959288D501E57E4A1B8F031C659 +:106CA000F52A997924A4EF79817C9E8FC1B431A013 +:106CB0005B33DB4DE5EE09D0FEE45EFB04940F3F51 +:106CC000CC0A798330CE8161D248E4E3F11F872E6C +:106CD000F19C272E021BECB57A6954AF751A1F9DE3 +:106CE0003F63567C9FDA3EBE776F1EEAC33FDC27C8 +:106CF00013F16AC3ACD131F97DDBDD13E07AC2B8A0 +:106D00007D7B096FDB340BAD6B69D81255E09FCBEF +:106D1000363F46F2E79A2536BF4AFADEBE5FD4A177 +:106D20005F5FB5F9C728587E82E4EDA9BD765C2681 +:106D3000BBF6C655F264285F3B6C25A217BB213019 +:106D400054E8C121A2A393952109EDEC6677D72FD2 +:106D5000EAA0DC0CFDEE403EC5BA1C4807A7D427CC +:106D6000B270DE378879FDD0618EEFEBCFF703E9A3 +:106D7000E306C7111FD2C0F16BB3CAC2487FD75A0E +:106D8000BAB250EF6E09CC58699F8EF0398B11164C +:106D900036EB83CB770426D07804AFF83E7B14F92A +:106DA000793C8B8DBC05D7B74FF20346B303373D13 +:106DB000E5ED4638E17E9D875E2FB45FD7965A3465 +:106DC000E778B0939A8E2D6D03BEE27EFEEE95F6C7 +:106DD000CB013E2CBEB40DE4F1A2406025FA1BEFBE +:106DE00015F920F71D8AAC447D09088DF8CFA1BDA7 +:106DF0003D61631C3895CEFBCB7BC8AF18581C4E49 +:106E00008A2E386F1CAE19FB4FF3FDBB625F3C014D +:106E1000F5BB0198475989FA3D7C1E2FE07A230B78 +:106E20002CBA009FE27C2318F334A3CD1F7A2E7E68 +:106E3000B131DF2681DF629FC7EDB3D7D6C0FEB484 +:106E4000AD1B33D8A624EB078B75368B763ABD5E27 +:106E5000774B3EC53180F1CA187720390EFD2F16C9 +:106E6000F33E9E19FA21B66B1B2FA93BA05DD0F70C +:106E7000FB0ACAFF40FB13E61D943F77A09E264FF6 +:106E8000607EE730B41FED9A9057D62FA0D1AF03A4 +:106E90003904FF66EF992C84EF128CA3C0BA975C7B +:106EA0006C25BC7A2B7CD90E11E7D09C28FF717C15 +:106EB000D847B982E3BB2BB4D641C216E450D9748B +:106EC0006AA738860A3B15DA05BD67B6E4535C410C +:106ED000EE2D033C0A86FFE0407D7E5F268B205E20 +:106EE000B85487D66D887F2C0FFDAE622ECADB3278 +:106EF0004BEF20E86F93FB938A2D30FF6520AF3175 +:106F00008EB6E20E478F513EBB411E217DBB420E25 +:106F100086719C65B798EBE1EF6EBBC16E762D96DE +:106F2000683EBABE2017D94DED5DECEE8F6DD934B9 +:106F30002FD3FBC501EE1FD1F9CE53E56A0FD2273F +:106F4000E0CB7BF8FC5E80CBD5B8D74AFB16F7B117 +:106F5000A8C5827C412138C51B2D59A8D76502FFE1 +:106F600040F6E16A68D2982F1DBC3E71A01D02BB9D +:106F70001D291B86F070107C3D758C0DC2BC1384DE +:106F800097215F6A85F7938AB9B94978B9592FC1B2 +:106F9000CB25F49B54786D723FAE62FECFB2694E42 +:106FA0008FCD736178F5858F7B4B3E7C0FDDF73A93 +:106FB000A7F585D33B011E77690E6DC9C3F5BD20CA +:106FC000D60F94E120BF25C0A915F5127B6C24F2E1 +:106FD000CF93421EB2C0241EA7615D790BD2F8BDCB +:106FE00075B958382B985B9147F65CCC3E38C95F31 +:106FF000FAA74FCE5FCA5446F85CE6B145A3B02F5E +:107000008724BF1DE77328DBC222960BF331D8EF2C +:10701000828AF3F085CE80397E9AF0A70C707E9735 +:1070200086404F42BB670423BFCB3F17713CFA3405 +:1070300064213F48856D590BFA657A008C4EF20346 +:10704000B316E40775629F5AA6DCF7D660A8572CE2 +:10705000563F031D6FD9390BE903CDE316503FAC02 +:107060001664FA706A7A00E170ADCF4A7A400FEE8A +:1070700034D43B6F651E8CC75CEBFDF4B21EF84E3A +:107080002BE3F0D26EB04437C178D7B070169A0AAD +:1070900019F65B6E447D2153FEC7292BA1C99D9D26 +:1070A000D7EFAB872D768EE379A17F67EB7DA31AAF +:1070B000F02E58655DED01F9906DEDAA1D8D71966C +:1070C000394CBB45C63CA3DEC501A83F3A7BCF8EF9 +:1070D000CD283F0267489E95BEF2F26AD457F5FC70 +:1070E000C185CFAF598570D7F7E1F3E05DBB315E65 +:1070F000B11CE39EA8E7087B448FBB2E177184E583 +:10710000B7707DA0F9976C879BC389E2B743F0DF26 +:10711000B0DED86CCE378714AFDED42DFC5697780E +:10712000797F36E86F2DD3FF140BEAC7434EA4C610 +:107130006779BC97EC20E86A70C7636A27C237E4B6 +:1071400056E6A0BCACB4537CF78B2F98FD0B9CBBD0 +:107150002FF1FDAB5FA4917F7FABE7FD1B78DCB720 +:10716000DF7A297E23E2F1FD55970EF3001C061508 +:107170005E3AD806F0B1A37481F57C087A29E2C79B +:10718000F3025E2D5F219E060DD46CA4EB3B2DEA2D +:10719000BC19A857B5DB18FA65CEFACEA82AEA477B +:1071A0000AEB65B08FF367BEA7623F39F52C6C839D +:1071B00072C61CAE5F7ADA6D77E52B286FFE4A79CE +:1071C0003572977FA1815FE4CDE1768EEE3FEEEFE1 +:1071D0007BDD7F9CFA7E8F90C3BA7EDE1CB5919DCD +:1071E000094F5ACF67A75894CBC36E537C0EC3BACE +:1071F000774C64ECAA733EF2EFA6FA7DF5767F6DCC +:107200007FF3FD1B96D0FB71E7EA89DE7FB4A19185 +:10721000CA5D1BC2F47C7CC37A7AEEDDA051FB69A7 +:10722000B733A28FB3B73AA31BD15ECD88BD6B2312 +:107230007D5B5230EF051100E9FEF48D97117F68F8 +:10724000B684C60DC27DB664B24EA0D3E6ACEE2EB7 +:10725000CC6FD08615913F8ED9352FD69F6C2A6280 +:10726000E8673A2E45466543F93418333BE0D9F3D5 +:10727000B1362A1BDE87ACC054812F3D3D928F6F03 +:107280009FE1DE81E36FCA0E4F61A0C7BE719875A2 +:10729000A27EDBD2F968EC23E0177F7AE9C9D51822 +:1072A0004F386DE91A89FCA1B5B2A203E320CB7A6D +:1072B000623ECCAF9B59F3C70617E0D5518CBDE8B1 +:1072C000F9C9D3927112C0E09D8DC5B0BEFB9CA2DE +:1072D000FE8355180FB46786BDDC8F3D7AF5616873 +:1072E0005F7749E8562C2FAFFA64A51DF874DD4589 +:1072F000BCBFF257D5DDC87FEECC087B81A3B2833B +:10730000AFBCB31AE777E704DEFFD1C3EFAC467E2C +:1073100064AB67C12EF243CDF448C8BFBD602FC037 +:10732000BAB65D31719084FCB0CAA6E7917898CE68 +:107330003700455DF2DD711BE8D34BD1AE03FCB8DD +:1073400046F0EB04FE0360855E64473DEDD6615D6B +:107350005ECC8F691B195911E47A03E9632DF82F6C +:107360005CB345A33CBE05CC93FF10CC375C23E255 +:107370006F1E1642792EE9ED5848BD1DDA057F9D36 +:10738000A5A07E207BED26FD0B7D26384F6A6FC3BE +:10739000A75D33FA376C37055B302FEA98EA6068EF +:1073A0006F306DC90BA3A1FF6BC5B71666E8CF465A +:1073B000FA4605E67B57A0FE06FBB6609DA3C738DC +:1073C0009E9BF1385E458A1E21893CEF6B1ACDEDFC +:1073D00025D4CFC6D3BCE8BD1D06C579D925FFF39A +:1073E000B9C8CF875A385EB2C3518CABE8FCFCE811 +:1073F000A38F39301FC3897C88C739148CA72C13FD +:10740000F5A5F6FBA47AA89F26F4DF1967A39B10C5 +:107410008FA58EFBA6A39D98A0F339328F4F7534AC +:107420009DC0F12496C930BF6CF3336A17C6EB9E3A +:107430007FF1CC4E99F23074BCFC7CA73A02E01389 +:10744000D6F346FE7D27E2E1D1321D4FFFB04A2D33 +:1074500036E68D7CBC13FD9DFDE689B0DFAE6A1C6F +:107460008D71379157C2FE95FAB32DF78F413C9637 +:10747000AADB3A32A68BFDA3F8E3C855D8DFEB169A +:107480005E7EE5C5913B116F03953705F260BF162F +:1074900007EB29DE5732DB9CA77CBC8CC77593F9C0 +:1074A000DB0F527EACB592E3D5A2B2F86AAC4FB511 +:1074B000DBF47AFDB9B628AAA1FDB11CA8AE00C6BE +:1074C0002BB672BDA67886B7BD89E473C81A8772D9 +:1074D000F60343288FD556C9FD60CBBD0F9FC43C32 +:1074E00026D85E4532E0EF697B6C15F2A7563CB9B1 +:1074F00001F43F588D15CA505EDA2BAB51C247F6E6 +:10750000E668433C6C08F3CC467DF81AC0BF18C04F +:1075100027D3FBDD93A43F30831D745512CF55C68E +:10752000F6233E5D7DD64C17337BCDE59273E67234 +:107530002933DB31E5B2B95CE13197E778CDE52A53 +:10754000C55C669B393D8094203D3FF51C04BDD150 +:10755000E994F5A593D2090D2AE6FD37829EEFF452 +:1075600024E985EA617D259FFFDF16F483AC0D5881 +:10757000E95CC6B6FB37CDBE18F5CD22843869A5C7 +:107580002407566CB6903EBA421E313B904B79E3CD +:107590007127EA4B325312E317F0781CCA97CC904C +:1075A0004772C077D7153B98827161968013D99B3B +:1075B000A9FC04063A8EFC63AED82F907C01E41738 +:1075C000BAFD02924C5D8FE386DC944FC7FC1C2E03 +:1075D00056F80FE1E27674A9DB2763FEB51CD6A04E +:1075E000BD6BB3190E7243EFFE2F50FE803DA6A275 +:1075F000BCF3C5685D995E16B5C27C32D555640F83 +:107600003180D318F83E74472ABF31C3EDEC9C1C7F +:10761000C2EBB3D14514A774A35E8DF68C3BE44551 +:107620003E76A0AE95F2F43F6556BF13FBDD1AE43B +:10763000CEE86C61F7A4E4D759943AA287472E812B +:107640007ED03FBF7EF83134192C1EFE1EECF610A2 +:10765000DA194EBBD0D3834CD326505EDE93B3F3FE +:10766000B0FD286ABF697D98F8F56691C70F8C5FF9 +:1076700042FF72BDF785133930F64F66737AAC97C7 +:10768000DD1ADAB7805FBF4EAC8BF02B255F4FD889 +:10769000257ABE476AFEF7F3A2BF7BE658F4763A36 +:1076A000BF524D7972DA9A5501D217B99C3DFAC290 +:1076B0001AE28FCD3399E04F0FECDC0FFCE93B076A +:1076C000FEED8D45888F118B3F03E0F29DFBEF9B14 +:1076D0004DEB8F5A3C95D0D54585BD6F2C42FDB200 +:1076E000C24EF9C5CDC386E610BEFA9882E430C713 +:1076F000175C8B706EE8702ADC3E52B32B86EAAAC8 +:1077000001FE45CB51EE5D25F00AF4E3D7020EDC15 +:1077100082F0418C1FB4A9722FE2D7E058388E65F1 +:1077200059B5FBA30AF28F70BC00F9BC8A09C2F0FC +:107730003E925F8AFA6F53DD0D3C6E03FB7F11E2D0 +:10774000F159FB19846710FEE3F0E4726D48A53926 +:10775000BE20295CAE5D95123730C8B533467CFB40 +:1077600064B6F93CD3698C2738D01F7686EBA3B07A +:1077700080218057CB193FF7857E7DD487D1AF8F8D +:1077800079BDA86F6A42DFD49C7F799EF733BADF58 +:1077900047C403362E511D73A6E07B46F830F544EE +:1077A0004442BDBE7036F703CC381BA2787B9DD314 +:1077B0009CDFA53FEFAEE0FC7EC0FABEDDACEF7F04 +:1077C00047CC673903BC1EDF377FFEE239E6784CD1 +:1077D000B3F7CBE5CF27E4FE85ED0942B6EF3DFFD9 +:1077E00006F90BE6CF5CED45BBAAA1D8CDD0B1FC24 +:1077F0009DFB3F26FC7505ECFE4A86F87EDBC798AC +:10780000B7D5A8480CE3A42DF9CD84EF9F7A99074A +:10781000DBE70CE3FC772DD81B56C083391DDCAEAB +:107820006D5059D469B06BA70AECD6F1F9C9E25B87 +:107830009FED56108FBB54F4F70E017641F1018194 +:10784000B7320B1D3C08FD0E096686511EEA766FA5 +:107850004382FF1AF299C538C55393FA60C9E7DF2E +:10786000227BD705F62ED24B43C4323D9D1D37F502 +:1078700094D96E76A97653DE339E3F33D60FB295F8 +:1078800072BB24DF1A45BDE06CC2DE0C511CB85936 +:10789000B10ABBD44AFE1078127C7A4E707BAC27BA +:1078A000B2EA20DA259F2AF630EA9967F73F386F67 +:1078B00006D1ADDD8FF095BCC01F90AE7D92E2CABF +:1078C0004FC31F4E88BC6B8C3159916E9726F3B015 +:1078D00019D2FBF70FA2DFF2C3613686F2F43A91B8 +:1078E0007FFDA4B0B3AF53F87E5D27E4CA75220FC5 +:1078F0003B0D5F20FDFB2A903708BF54FE7095DAE0 +:10790000608A37F6E51366FED0137997ECEE08F23D +:1079100001C0E7F573CCFCA2BFF8634FC4C6FD4BB2 +:107920001E6FBB8DFA291F540FEF7707CDF994F620 +:10793000C862935DF2D7E7279C6FE8FC5F46FECFF5 +:10794000FAD28B6C0F13BD4851276B52903EB45145 +:10795000B7237D1CB1F9316F38411FA774FA48E590 +:10796000FFC0E7091F389F37F0FF38BEFF10F00453 +:10797000F520E0FF41C41B17F07BCEFFB56623FD69 +:107980006C933489F00EF8FEFD16C20BDB6D506E61 +:1079900043BCF0F7DDEF3EFCDFF7E5F8FFE3FDEC7D +:1079A000672AFFD7F7F56FCDFFED730627F83FE69F +:1079B000DFEAFB37560DBD3427CF948FA8A25DA414 +:1079C000E723EAF6D0B917735789BCF3A3D89EF919 +:1079D000781EE1D5B399C8AB0C1D4379923D7CFD6F +:1079E00038B493D90F78FEE1AF2A12F5BFC0EF1279 +:1079F000F5BBF9F77A7DDFFCD4F872B4533A843DD5 +:107A00009CFA9C32DB63CA53857975CF31E53772B6 +:107A10003BEBF88B17AFD2789E6A0FCE4FCF8B4CD3 +:107A2000D869DA30B2F3743BEDAD1787ADC2FC1202 +:107A3000E6EEF2A23EDCDC9445FE915DB3151167E3 +:107A4000D64645605EAFB6CFB1201EBBB759097FA1 +:107A5000F47CA3DE1787EE14F9D99FD07C2AF9783D +:107A6000BA9D78E6C58B56893CCEDFD37C02227F57 +:107A70005BD8951FE1F71CCEFF4EF52A5F8F6E870E +:107A80007EF6621EADE7D9E9EA1FB1FE3AB4B70C43 +:107A900074FEF61D4332C4B974933F36B388CBF3FA +:107AA000B55E7E5E6AF93257B4204D9CF69FE77250 +:107AB000B9DE62491F0FED9C51E6AE243B32568879 +:107AC000473E967F227B447EF32A3ABF63637ED48F +:107AD000978B3772FBB0F80A6B3B9E3D3F25F6ADA6 +:107AE0003FFB70B01AAFA57870878DA19FFF42F65B +:107AF00060E984ADE4C794C10EC2FCB1B5FF4BECA4 +:107B0000C36D57AC24FBF05390432CAD7D3848A691 +:107B10003C92F516F203CADEEE2D2897D6827C45FC +:107B20007F986EEFA5DA8117B2F7EA813F513E11D7 +:107B3000EC03DA938DD015F2E3B5297663AA5DE8FC +:107B4000DABC9FEC42EF70E0B3E867EFC70E6CE978 +:107B5000C70E74336D36FAE724CDC21E627DEDBCCC +:107B60004B3EFF1AD9810D422EA7C2A325B280F841 +:107B7000AD0413B2E6A01CD924A35DC0FC763FBAC5 +:107B800047D0FE33EAA5EE0516FDBC198FA3CC90B5 +:107B9000E9FE00FA43FCBE3A93FCEB1155C479FCB4 +:107BA000F93B50EFDB25FCEDF8F7E79C3BAB16E724 +:107BB000CE18E6F764FD2DCE9F3DE6C53CD97A117F +:107BC0008769DBBF87E1F9F8FA220FE9FDF5A8F72D +:107BD00018F8887EFE6C17F2778C0B0EE3F9353DB2 +:107BE000E3EA4F60BC4A63B9136C86FCB8FB057DC1 +:107BF000F7E4F376CD3921EF04837EF95D51DFECB4 +:107C0000D0ED5C46FEA5372FF6EF349EF77BA852E9 +:107C10001272497DB092E0A9D1F885B3D487B1AC96 +:107C2000DBB3BABCD0BF8B0AFFD38E4A8BF83EB809 +:107C300083BECF15F70CB86351EB50639C88FB11E2 +:107C40003345E1E8A34D12FA191BF1BC08C6F1B7A0 +:107C500046FCC67B4F7E50691179F4EA0F2AF3E89F +:107C60003CF80FF1596CDD7812FDB7C5059282FA28 +:107C70006F8B23F6AE85FCEECCDF9943E7A60A11A5 +:107C80008F4AA02DFABD804F16A27FB26CEB58B27E +:107C9000676341DEEF6C16B6233E54B2083DDF9BAE +:107CA000197A16E77F60DC4C7B2ED05120B0603310 +:107CB0003E7F3A33F893CA3C0E177E5E8FE34BE368 +:107CC0008CD07E6C0F7A17E57BB87C51E2F77DF1A2 +:107CD000D81CFFF895D01B1F53D517B1DFF7A7AB02 +:107CE00087F1B96F66F065825F7FE702C5BE809C51 +:107CF0007A15DBBD698D746517D239F8D7F9FC5850 +:107D000064649A73F0FA7747845D78340BE4BC01BD +:107D10004FF609F9B35DCCCB561FADC47CA836BC79 +:107D200000039E7F2A0BBD8DE3B515ADA4F87AF351 +:107D30006298D304ECBFEB9E7C00E55A9FE569CBCB +:107D400095F044DC27BFC6AD1DAAAFAF9F63F3AF6C +:107D500044593BB11AEF43499E0FFCD56AF4BBDA94 +:107D60009DBCBCF795139D283FD72AE27E9653AA67 +:107D700062C48B2F045EBC5EAAFE56E0452FCEEF98 +:107D800078198FD3A5919F9F613B170BD17C61DF41 +:107D9000CEA5DB37D88F7FC3F7B01FFF8E4FD88FAC +:107DA000CF07B21FFDF97DEC551CAE476A2CE29C53 +:107DB0006E50AA32D007CCDB5975FE79BBB0DE30ED +:107DC000EF4155E9E7EDA9E2F3CEA9E27834A46AE0 +:107DD00000F36E9CDC4E7E79A66528965998960233 +:107DE000F4C0F145C238D76CF4695BF8FFB8FFA95D +:107DF0007237EEABCB3DF93DB41B6B5FBABF434668 +:107E0000FF3EF353DC69E60B6FAE6E99867A4C7CCD +:107E10001D96A3F151ABF09CE7D67CBEEFDF8E8FB1 +:107E2000DAA915831E53E01F6301BADCFDCA831D66 +:107E3000F24883FF5DE089EE7F07C874229E2C4ADA +:107E4000C407BEDB817AE3A24CCD8B71B0CAAAF61F +:107E50000E8C331D4DF8FF7FB31AEBF5F15EAAE9E6 +:107E6000E840BDCEE551B6E4A21DEEB1F861E56C87 +:107E7000EDD990960BF39FFED223A3F17E95458317 +:107E800079FF5BE3DB1A707EAC88EB87C077AE4688 +:107E9000788EADE2FCD8E5511D79D88F17FA01FA3A +:107EA0005AEC31CF7BB1C2CB55C7BEDDD0827690C4 +:107EB000275841ED47F071BFC260DE1E9CF7AE4609 +:107EC0008C9F1D95D461281F5FAAF9CDEA00F0753B +:107ED0005BD6663A472BFBCCE7E7F4E7CCD91C8F9F +:107EE000D834AE9FC2FCE6E3FC660A7BE0F5D2E044 +:107EF000422CBF6955436E1BF185BA2ACE17BA2EA4 +:107F00004A738F8F6E8F007D2FAB22BA8FCC43BA0E +:107F1000EF01BA6F42BC88A9E41758F2559B07EDF0 +:107F2000BD3C318E5DE2E7C74106533CEFE9A663F5 +:107F30006437CC9CCFF1FDEBF3B83CD8324F97CFF0 +:107F40009115D8EF22E817F3D56D9D4FC9149F1BEB +:107F5000D17518F582E66B6CFE8D30AFE6CEEBB7CF +:107F6000E339E99363DCE4B73C99A364A15FA6CD50 +:107F7000F3C028467A8EF4C1618CAB0AFCB8E9A53F +:107F80005777A1DEFF9AC2F7FBD5DA8B3FA03C3AC8 +:107F9000055A1BF45C492E76603EA25C2A531E8E65 +:107FA00041CFA27821FE390CED37B9576A53269399 +:107FB0009C5286A09DEAE5EDBDACBB89F2143C2C39 +:107FC0002419E3938CEB71B2D0776D37A9774F41C9 +:107FD000FEE9B179104FF4B8DF4201FFD4B89F9B9E +:107FE0002914F793C43D4FAE25AB28BF45F76BB8B6 +:107FF0002ACDFA57E65C7319F463533CB06C09F769 +:10800000D397817EA6C0FCCB113FA15C3ECD1D8DD8 +:10801000C1FC0E25F3E6287F4916F30AE46CD17003 +:10802000DE8798A717F3C724C59CCF54915BBF394F +:1080300007FB75E74CC07C3CE83617FDE6ED556E56 +:1080400093DF503FA7A5EBD3478777D1392FD003D4 +:108050003CA87F1CC3389903CF7FDD27613913A368 +:10806000CCF9ACCFB92DFD1EA406710FD211FFCEF5 +:1080700018FA353E2C621E1CA601F388882F1DDDE0 +:10808000857E9D819E3F6FAD5DBFCB7CFEFC1BBBA3 +:1080900050FE7CF8B95DF417DE8571C2FECF9FAF4C +:1080A0005B83714509CF45039C8E542DD82DE71B6A +:1080B000CEF3B1FFE8E1E7F9F8F9F3DFBEF4E1E868 +:1080C000BB2624CF9F6F9C73FB2EE3F9F36F1EFD3D +:1080D000E91AE3F9F3E6A3DF5C230F4BC6E76FAFC2 +:1080E0006D5A837C09E4FECF89AF5FE0BCEDEFAB56 +:1080F000F879DBDF563988FE2E74FEFCBF2A0EA30A +:10810000C75F403FD29CA81F655BE9FE10C6C2FC5A +:108110007EAE14FBF739A197FC7CAEE07BFDEB4310 +:108120001F135CFA3937FF6695D2DFB9F973F45D36 +:10813000CA395FDC2F7ECE36F4C72AA37FE5B0D9DB +:108140007F02F29C55931E168A71BB42D3E5BC4D4B +:10815000BC675683FEF54C85B867814514EC6731E2 +:10816000EB3A817209E52FFA89177BBA4E503EE34C +:10817000884B292E7FB6B6F42DAC8F62B23B9E455C +:1081800000BD13E92DA79AF3559237D8DEC7381CE6 +:10819000EDDC9FD55A6B198CF78EDC69D1F1F79A1B +:1081A0005D28B7CF3A40EE529C90A9F6E2A41CF4A9 +:1081B000577B3B117F7B1C4C9767443F0462FAFE60 +:1081C00012D2D75A1D66FAFA0AD3DB8F2039ADCB0B +:1081D000FDAE23234D727FD2CB23C9BFA2EB09FE94 +:1081E0006A37E587F437DEACEAECD52DBEE4FC5EF9 +:1081F000A879770C97D3EA0ACC971A51FD6E27C657 +:10820000C58CED857F6722C25DF79379AB1987F73F +:10821000DC84BC9C82F533D1AF94D737AE0FDFCF6F +:10822000A8C6F69379FB0BAD07DAAB349E9FD3E378 +:108230005F0A1F5D9EA6CAFDF61ABEDF5705D45A17 +:108240009C5FCDC1D76F0DA6695757CDF5F79A92B0 +:108250002E2FCAE3B691DC2E4C6DF75E35A7A79A98 +:10826000830F8CC27E3E6C4AEF77BA23D16ED3283F +:10827000ECEFEC7EDE0EFB5F60E8B7A19AD3695BA2 +:1082800056FA7EFE54ADDB71C13504DFBB397C414B +:10829000FFBD1EE1F7DECCE00DF83E41B713B8DDBF +:1082A0000676D73A82AF5D237DB9CDC1F909EEB527 +:1082B000EDEA347CC967E64BA9FC28C1D716320D1C +:1082C000CF29EC9B19BA0DFBD7E3C117D2976B4AA4 +:1082D0005482438F5867AA3D7CAD80C31F175A4C08 +:1082E000F78AE1F97BA3BF63AB68A7F3FF7BABE73A +:1082F000AC36F2FFFB5EBE64AD91FF336DE41ECA87 +:108300007B71F2F2832FD7AE16FECE08C1F30E8139 +:10831000AF02DFFB3BE78EE7FFB17D6D3FF1C58725 +:1083200093FBF430C1FD16DD6FCBED93D4FB243A03 +:10833000ABFBDC2751897208FDC1467BAD53F02BA6 +:10834000A0BF4EECB764822D984EBF9DB450E4613F +:10835000F90EC76CFAF93985F32BD40B1A45F9E8F5 +:10836000952186FC4C8A5AB8DFA025628A733E911B +:108370005887FA4435D77F553634A9E71C2D8CF33E +:108380007BEB803F1BE7B946CCF3E870A8E7FAC265 +:108390006AA35DA6D72B0BF9FE01FEFEAC7A8AC15B +:1083A000DF00388B72AED83A31AE927FC2E26F8274 +:1083B000F1AA8BF6939FB60C3805E63F94FB4AED85 +:1083C000E836AD985CBF199FEFCD0CBD8CF39C5384 +:1083D000FC8E1FF5CFE28DB142F47703FE1FA91684 +:1083E000FE18F24F09BAAF2909791718E6F586D8B1 +:1083F00087E691E9E9AF72A1AE8727FC1627AA07A5 +:10840000E4B7E07EEBECE152BBF17CA163115F3F8E +:10841000D89D6F5773BBB3BB9ADBCB67701DCDC3C1 +:108420009AC98EE98F8EFAE69B4DA07CB465B91689 +:10843000BF95BF223F919E27A78FFB61ADC58B7271 +:108440004DCF1F1BF7DAD03D94E7B84EE879DA81BB +:10845000DDA87725F2C5B49F359AF2C5B467769F3B +:10846000375F4C7BAAB191EE4199147740FF771D9D +:1084700073EEF1C27E2D1279D57FACFE88F21C7F9F +:108480002AE82C95FEF5E752E1CFEC8FFE736BCC1A +:10849000F49F5D73A789FE735ED9DB68A6FFC7777B +:1084A000A35DABAF63D82BF7E8F4EFA931D0BF5C85 +:1084B0007341FACFC3F6A9F7C7E8CFE13509FA1F30 +:1084C0005E3300FA1F533330FA1F5393A0FF313548 +:1084D000E7A1FF850B385C74FAD7ED079DFE13F416 +:1084E0003B3C22A9C23F948EFE2725D6A14EAA313D +:1084F000D07FC2EF3896D337B346A4B4F4FFA86E4A +:10850000374C5A8D76851E8FFB69B5670F97FB2117 +:1085100015FB4DE8853173DC4D8F0FF58DB7F4D623 +:10852000227D2DF559D940F2EFDA7C8329AEE4C2E1 +:10853000380BC66FD8FFDF71163D8F35359E901A08 +:108540005703FDFA6B35797DF56EF88BDA743CC113 +:108550007D49E4F93205F37CFFB7E4F7EA7E1A803F +:10856000D3D61A6187580C76C896E9A107117E7A8E +:108570003CBF05E3F9305F67BE3503F347061ADFFA +:1085800084FEA3621F54AB611F0A67A93B70DC9A8B +:108590008336A29B05D5633B85BEBC8BF88AB84762 +:1085A00028359EDCD74FC7E8FB1FBCB2AD41E3F7CF +:1085B0002EFD88E859E8F7BA5F6E5E95E8477FAF11 +:1085C000069FA831F85925D14ED77BD8115531F2E5 +:1085D0008BD74BCB9EA67E35A6598626F50C7A63A3 +:1085E000D41B76DE47F18A04DF79C3DCCF6F451CEC +:1085F000E4F552F500F6F7DB4AA6F3D3E7F93E447B +:10860000C2D90638C1FBC334AEF037A6B1575EC13C +:10861000EF2AF5F9EBF7F8C4CDFE70987F9CD60BE6 +:10862000AAB8C5C027556BBC18FD2BAE22A6E0FE2C +:1086300066FAC4BC4FF43BEF5F1AE7FD728DB0578A +:1086400045BCFCBD99EA69ACD7EF15E819C6EF1532 +:10865000B8142086791DAD221EB82D5BBF175C9320 +:10866000310FA4A56821E51BFEAEC3A9301E677EAD +:108670000DF95E2DD3FFE201A4C36A3D8F7532C7A9 +:108680007355F091EA943C9F6A66F04BE5A7A30B03 +:1086900033FFD8D3B190F2991A234E05E3862F6F9A +:1086A00060FC5C3D53B36BA7127F20782D883CBAE9 +:1086B0001DE36C2F3039CC306F37C0EF3790E13F7E +:1086C0009CC7CBD9E138C65D25C5CA9AF249FFF4EB +:1086D000539CF70D1BE5DD94635E0DE6C31459282A +:1086E000AFE612C4351CD7CBA298FAE95A1FB5637E +:1086F0001E71AD2AF762DCB6A9AEF505F4B77C3879 +:10870000C1C22E82F1E74E36DFA720757C700AEFDA +:1087100023AB1E60FECBFA53C7C61F32C021776E53 +:10872000FAFB15986D199D27D2F360502F5C382EF7 +:108730009907F3870DF1F187C0961D3597E3C5C6FC +:1087400025A151730D723E79BF41EF41CC17EEF177 +:10875000F273782D914574AEAD354B637EF463C7EB +:108760006E8B38D0EF576465191827F26A24B78FDB +:1087700008F883AEB511EB5D1DB628C2738F2F1CB0 +:10878000C4FC8286376CC4BECBF1B021DA6F5E8E3A +:1087900067B2DF4271F6B93E46E7D7E5E27D1AC21D +:1087A0009F2976C20B6972536CD2640E5FBCD27281 +:1087B0001EEC53CC18CF65E6783BCA67633CBE6FAE +:1087C000BEB5FA1AF2733DAEBC4D6222EF8ED1797E +:1087D000A09AE89D1AFAAF5F80F1085F7C1C0F75C4 +:1087E0007C013AA17B8C7B7EC1EF13D6F35CE51450 +:1087F000FC95221F107FAFF5A7F0FD14FEDEDF3ED3 +:108800002F989B653A8FB0C7CE082FDB002FD1FF82 +:10881000DCD6B1F730E29DD661E5F1771054B88E21 +:1088200010DE638AFEA318482A83DC6A5BD045E722 +:108830008E95AF8FF223FF6D1BF7A403FDF26DF948 +:10884000B90CFD99CCAAEE473FD5F2476C161E3FF6 +:10885000E770695B9F4378C05844C27DBD0E8404B5 +:10886000F6AFE3D37C411F8D9B397DAC647E09E577 +:1088700077030BD2730D0BD3D3C27C745FF7D2B0E6 +:1088800085E412E0A77C3194F76843A8AC5EEDC89C +:10889000795FE626FBF9CEF5A1447CDF207F4B27EC +:1088A0007C46F76324F0C91BA2FBB4D6466C9487C0 +:1088B000B8ED7E9B4CF905805FDCA9D0A5E1FE2DCB +:1088C00007FCA275A6E46F00DFAAC0BC8C15222F9E +:1088D0002391E7C1E20EE4138DC50EE267A97897F4 +:1088E00006CF8E8F36E42FACB8E5A900EA8189FC6B +:1088F0000D81577AFEC6DA5077C577A0FFEB543961 +:108900008CFEFDD47C8D15B7A4CFD7C844FE9C3611 +:108910006F7F19E5E77BE7830E30BD2FBEB91D21C0 +:10892000D9787F457351A805CF8537FAED944FD894 +:10893000A8DAD2C6AB1E15FEDBB30B40F5BE12FDA6 +:108940008F5D5ECAE31A377B3FE2979EC7B52785E6 +:108950004F35560A792E87BC2807ADB3D41FCCE516 +:10896000FACC8FE6A23C12BF63208B76C7CB34BA19 +:108970006F6372B5595E817CDD4BED47F372AE904B +:10898000AFAF97869E9E6BF4EBC654BAD73A713E52 +:108990004E5BD780F6966E7F3D125F4771C488BAF2 +:1089A00052E57EF2F3E743CFECBD389907C250EFB2 +:1089B0002E30E5C796B2B1A6FA727992A95CE1B9F8 +:1089C000DAD47E8EB7DC54965AEA28CF54F797BB98 +:1089D000C5F905AB6BC428CC4B3D2EE0DE871E06E7 +:1089E000788E01E07692E026F2FA2E1CE7E0707BAA +:1089F000FDA53F34E0FD98FDE5156EAFE5F662EAB2 +:108A000033797F2613FDBEDD61CC0FFCE5DCB77545 +:108A1000FDEF239A97C827D4E335EFCC3DADD77F40 +:108A200082FB9A7A3F6B6BEDC90EA17FFE9EBE5F03 +:108A3000A6DF9B79FEFB5A6F15F33B5AC0ED5FD65C +:108A4000D86BC3FDCF28F4B056C3FE5B443BD0D7F0 +:108A50002CB55392F742EAF12C3D5F5C8A087F55B2 +:108A6000D86C1F67D426ECD58C5A837D8EEB34EA04 +:108A700069D9B5093B3A1BC7E9CF2ECFABED639758 +:108A80000B3FC2DD14D7D2EFA11C51FBF02E7E0F9D +:108A9000E58E4D56CCE3B2DFF73EA6C6A0FD8FFDB6 +:108AA000EBFB9F57CB74BC1845EF53E24FA97836C8 +:108AB000BA56D2EFFD1C4DED93F195B47CE28A5A83 +:108AC000BBDEFE0A5C7FF23ED718C1FB7401F3EFF8 +:108AD000C0F899839F8F2B7170FB20A762F15A8C8D +:108AE0009BB4F9464F4459502AE0A8F73B7E7A6878 +:108AF0000A8E5F8217B34C44BD85DFAFF6A6D0A7C0 +:108B0000FBC3D3B5B59C7E529FA9F7B316D4DEBB89 +:108B1000CB9D9FC4FFA2DA6D9722FEA7EABF9B9F61 +:108B2000095935F4AB8DE7BF8BD3E2FBA49CF80861 +:108B3000EEF179F8C89D284F2E437D959F7FD6DFB3 +:108B4000FF5D6D81699D724503E5FDD738BA72916D +:108B50004FCB23AC267E91DA6F4D91CB54BFC97BAE +:108B6000339D17381BE1BF177136B2EA30DACD9F5B +:108B7000792505E3B2776E889EEC1983E799C57D68 +:108B80004FC3A45809C6D3A3F5BB9C429FC6FCE7BC +:108B900075B5E2DEEBE86394E7268F789AE2B5528A +:108BA00087A52B43413DB09DA1FE97E98D127DBC69 +:108BB00029ECB69A221B5E0D98980FE0C1FF213C6C +:108BC00010766231E21FFA3773188DDB10B590BE54 +:108BD000581E6962785F4F7FE3ADA955F8FEF9DA58 +:108BE000C95F9CE9EDB2D37DB1897B6BCD7937CD7F +:108BF000826EAC093A0BDE41F310F7D65A9374B08B +:108C000081DEA7DCBFDB5FDCD670FFEE16FC4EEF2B +:108C100067B398DF79EEA5BD9BC6F91BDF6FFDEB4F +:108C2000B9A71A843FF1A15A837DFEC15C3E4F90E3 +:108C3000BF8FE03C40FE7E97EA85FCEDAAE2FBC2D6 +:108C4000BE7CBE8562F90BF22D0E2D79423D00ED02 +:108C50000FFD3A4BB178D2E55FC4B83E0A7A9E4622 +:108C6000F6E6F9F32F162E6E24FBF285903B8CFE70 +:108C70006017E64FA0BD39C3E9F9F3F22F6C946F8A +:108C80005136CD1D55104F997F33D2E59F9B77F11B +:108C90003D11BFEE2FFF02FAC86506BDF4E4C8100F +:108CA000D9452DF9F6F00E8F09FE12FF9D3033FCE9 +:108CB000415AD1F8762B531EF2A4813FF33BF0DEEC +:108CC00020FD3C08FE25E233586FEF223F9AC43C5A +:108CD000DCCF96026F9757A9D0F559B293C47E2680 +:108CE000F0457992E17DC3FFF06A06C37BB4F0DE04 +:108CF0001DDCDF4CD85FF493B9D2F8E5127EBCB42A +:108D00007E3973FE4DDF7C1B467A9C04FBC37FF7E4 +:108D1000CBBC1F7F79FECD26C2E732101868E797DB +:108D2000B310E9DFE5A07FA35F57C78340CE5702AA +:108D3000B89F8764BE9F7DF79DF3C7D95E6E079786 +:108D40007BF2E8FC51F2FBD5F24AF144BD2F6F1ED5 +:108D5000E75F817EE2C837CFE3F291EE894679B4CE +:108D600097E70D8CCBEC0E231CAF94DF3980DBDB57 +:108D7000E599549EA360BC3934721EB49FE82D6DF2 +:108D8000CB477CB3C70BF0BEA1716BB91DB7B488DC +:108D9000DBE18C45D5A130BF4003B73FB26DCAE6D9 +:108DA000A1F0BEBCA1F408DEB933669EF9BCFC7F1D +:108DB000757ED0C3B5271A50FE9E14F769C09E4732 +:108DC00077E4F7A51BA403DC7759C90DA39D94860E +:108DD0006E98C564FF85689FFBA59B543C2F9A4AFB +:108DE00074F40FE572AFB837CE444788F7B71BF875 +:108DF00020F03986EB3F04428BF236EC5D4427D9F4 +:108E0000402764578E7EEEEFF1F7CBBE3C7DC4FE6B +:108E10009BF963610089F06FCD17F57BAF0A67A9F5 +:108E2000B7201E7FE37F081E5E15509B713E89DFD1 +:108E3000D7D1FBE33E2918AF5E1D4278A00C463A1D +:108E4000FB5E9545C8593EDF641C3B4AF18D061810 +:108E500007EDF0B74A435BB1DF0625E69E847EB599 +:108E600080C5BF4941BD5771A0BE75E17B0117990F +:108E7000CE2FA63EFBBB1770D07C3EBF1D29F0FD58 +:108E8000ABFD1E98F067A5FE1ED83322BF34D15F1C +:108E9000CA79E6BDF3B252E6F3E5CE33BF5A167C8B +:108EA0000EE1C96495F2B5EE9BA9FE04CB674BD4E5 +:108EB0009FCECB3B5FBEE1CA471B7D493D507AB593 +:108EC000F57AEE3F983820FF814DD8F7579DB09A3C +:108ED000FC02D3BB334D7AFBD567079BCA7F6BBFC0 +:108EE000439552636A3FEE5C03CDF3CAA76F30B57A +:108EF0009B10BBD954F69484CE22BC261DBEDDF453 +:108F0000FD94F84653BB03753306A13EDF9F5F43D4 +:108F1000CF33D4E1F4E9BC02DA7FA73D4CF7BAEADB +:108F2000F9857DFD1CE6DFA7FDC3FF103EE00A7C4E +:108F30006613F97B745FE1B6BA673CE9E805ECD8E3 +:108F4000ECF926FF3BB7630FCD6324CF014F73E6E7 +:108F5000239EDA13783A18DBE7CE37AFF327D87EB3 +:108F60008AD13EE5F793A5DAA73D7FA17D3A76FE4B +:108F70005FDB3EDD21235EE876E8652C44F6690B75 +:108F8000D8A774EF565694CE9769C76C0CEFC5D628 +:108F9000EDD386A2D02EF4F3361475B14B012E0D0D +:108FA00009FBB0FE49B40F75BBB5256813F7EF8810 +:108FB000F348689F127CFBB54F4BE653DC33D22B52 +:108FC0001552DE9EF0AF4CBF1EBF7FBA89F38155AC +:108FD0002F955D8FF61FD07A05E579021FA7FB96C6 +:108FE000DC877B10DF0CF7088CC67352BAFFFD1FBD +:108FF000831CAF9B3FDF9A8DBF5B71F4817AEB6B73 +:1090000030EF653E6B3BDE6FB094459E47BD6BDB3A +:10901000F88574CFE1A78D0EFDFE81B4F766E9F205 +:109020007D85E83F53DCA325E33D5AF05CB1B87180 +:109030002EC69952EFD162111E4F4FCD73B7336FC9 +:10904000FB1702FF13E3159ABE273D23558F60EBF4 +:10905000B91E50043DA07EE416F948A9F13B17C69D +:10906000BBC79FE7BE51113FD1E3DD7A3ED06DF122 +:10907000E2DD980F6447DD8BFCB8B147713F12F910 +:1090800041ECC0A3E8FFA2789F816F1BF2815419C5 +:10909000EF5D157167AC97E9F76822F7E6032A34AC +:1090A000FFE2E0A39597633944BF635A1A1FB95B87 +:1090B0009E99F4AF7D3DAE340A3FE4A6F9147FE6F5 +:1090C00076F4D7E733DD9FD04CEF156ECFDF9A7C77 +:1090D0007F17BDD7FD9A5E6BDADFCD9828CE671576 +:1090E0006B8C5D017A4D2485BEEF147C4AE74312F8 +:1090F000F2218C378CE0F92EA9FD3D24E436D8F717 +:10910000DBE773FBFEA1F906FB5E71F3DF53423F21 +:109110002BFA233C9D070F627CED538C77F993F774 +:109120001E49A379FC4F921F51C5BD47DD78EF5111 +:10913000E93F6D651807CA7CCE4EF740047BCD74BD +:109140005F1230D3B9414FE5F139F9FCF1B9CC16D2 +:10915000467AEC35510BD9D98D777B88CE969C63B6 +:109160007E55618973B17A7C175640F9174E1167A5 +:1091700076B3B08A710809EF4B42FD3A603E27EBA7 +:109180001CDD98D073713DCED1667C5CD260D66B0D +:109190003516223DD925EE5F4A8DA37832BAB85DE7 +:1091A000AED8F9B9DB247DF0F5A6C41B9BEA965234 +:1091B000DCBA679CA438C9FEB098E03158ED3A8417 +:1091C00071B8A5B09EA8BF2F7C5CF88B04E8E3F1D2 +:1091D00099E3E92E6525BB2DD7A0BFA7C4238788B7 +:1091E000755C03EB88792E1C5F0FAAC76CA85F9E85 +:1091F000992FE2383EE6437CBCCCA1AD207B8B5955 +:10920000FD285F5A3B3A5A884F3F62A7FBC5F1C021 +:10921000A6DD10F73A50F78C1DFD089F86B3FD4E72 +:10922000F23344BD883F9759465AF03E80D6CB9BD7 +:1092300087E34F5FB7B65F44F79204D5D2A6951483 +:10924000CFB3596C7ED1098EB798C721757DE16C7B +:109250005388F050B364317EBFBB4AF1CFE51D4E59 +:1092600005DBCDF786492F73818E46F761E05D04FB +:1092700043313F9F115FFD4A606F00ED324F819D8A +:10928000654F4BEA19D9D66E3FC2B79675D3B9B9B7 +:10929000FF040AFD4DA60080000000001F8B08009F +:1092A00000000000000BE57B0F7454D5B9EF77CEBA +:1092B0009C9939E4EF01034E30EA490419EB80131D +:1092C000920281202784400841277F19BC50260A3A +:1092D0001AFC73EF28B6F2AC6D0E24C498A8441F94 +:1092E000F4DDDB6A3BB2E05EF0DAD7B457FBD4E7DB +:1092F000750D7FCAAD8468A0166DF5B64191ABF7C8 +:10930000B56FC54B51EAB28FF77DDF3E27734E3202 +:1093100009F6B55DEBADF7C615B6FBEC7DF69FEF34 +:10932000EFEFFBF63E3783E6050F403D84BD700D41 +:109330004033C4B98C422F97B7401F97EB60884BDE +:10934000001D92A5001B8252A2BB10A02882FF7CA8 +:1093500019A056052F1401748706B36359005DDE0A +:1093600008401E8089FFEF5984AF19A06BD30024F9 +:1093700031047448D88EE3985702EC2BC6E77A3351 +:10938000F77FAA04629E32ECFE7B90CEAA404B830C +:109390008B4BB07DEF1AEEAFD68109F900574770BD +:1093A000B2A9D8F8AD70979FD76572BBBF437A86D4 +:1093B000D675917EF85E8B9A657A72B0B9C3FB9BC5 +:1093C000A120F0EF6211FDBB4E3B7B3DADC7902F5E +:1093D000665AEFE3783224DA73709CD60084BBF1CE +:1093E000E9C2846424700F6A00B8B4C7CD8C78B821 +:1093F0007F6644E6FD3728912A5A3FA8A06DC3F541 +:1094000037403DD71B1E02689F0C50FE716915AD99 +:10941000EF5751DC5331BDA7F37BEFFEEED0D439CB +:10942000F85A54FDE14F347C741CA0BA2F04B06B81 +:10943000F2E0FA482835DF7C6B9EB288C4F3BE6444 +:1094400044CA225887E77BC391D9008FDDAC713BBA +:10945000C0F065916C6E5F1C21FABC28DA4FF906EA +:10946000EF718E67977F638DB7A4F8705609AE0FC2 +:10947000F2E5F04C7D6CBF3BACF9EBAB5B80F87B6D +:10948000CA877283FB6A8ECC6E5571BF11D077E4A8 +:10949000E0127C1D335BA3D7F1FCAB797D2ACE8F24 +:1094A000EBF17D88F44B337F43C4C7E362FF06EEE4 +:1094B0009F25D6FBF8CD823EE538AD3E05CBEDC904 +:1094C0006B7A43B43FD1FE926144A97F0462664E39 +:1094D00038356FDDDBD8653AF52BDE6F28B8FD42F5 +:1094E000622208062F0038916DB59B735B5BCBC77A +:1094F000BE8FEBD8C874B3E65987624AEB5813B1F4 +:10950000E8AB88FD74BC0CADC4A74EE257568A5F29 +:109510005FB3E834BA5C1E71F3E78D61A53A1D3D77 +:109520002A52FCFD2AAFA34FCC5761AD039F6F7544 +:10953000F2FD1E7A8EFDAE3762DFA0FE4AA514A7AB +:1095400075A11C1A12F2D317D0F674E390F7DE0C53 +:10955000F6B826F57B4BEE0D4B28C27F937ADE6E74 +:109560003FCFC1E77317C51EE679004257A2DEB6AA +:10957000587A1B958D69AC9496BE744E86E412D2CF +:10958000CB2024B6E13C95BAE11B427A6C0CF68103 +:109590008EEBDE58F06252A675EC95FA26E1FB0BD5 +:1095A0002DBE6E0E6DF31959A4677D4A2CC4F3FFCE +:1095B000679E6F86D8D7952BC5BA16AEB4E8161439 +:1095C000CF6FB2EBB5822E0345E9E5FA17D582EEEF +:1095D0003FAB887D8FF69573C5D6D9A8DC00FB0D0F +:1095E0009DDEFB45B5187F64BC65B65C45F632DD93 +:1095F000E362FC9B94E2DE99D8E5939567F766E118 +:10960000FE1606853CFDECB54F376E53C8ACF50130 +:10961000BDB7BBF965359635761DDBA3B11FD07894 +:10962000237623A4F968BFE77A2B73CB90140A0D35 +:109630003777EC7B4A6F231897A5EA3F6E438AFB86 +:10964000519EDB542E5F6ED3C09C05F04A5B80EBCD +:10965000AFB6E95C26DB82FCFC505B98EB47DA1680 +:1096600070FD689BC1F59FB65573F9E80AB1FF25F7 +:10967000D71A574570DD67664294E4267399625E97 +:109680009EC3FBD15AD2D0754E59CB6BEEFD24BD93 +:10969000D46F29C414F20F2BC054483E564258C907 +:1096A00043DDFB6071EC0DE2EBB265751D79B8DF4F +:1096B0005537CC2E203ABDBA387242E89909446732 +:1096C000203A62D9BA30F673EA4FEBF0CFA1F1132A +:1096D0006C6F1E27DE91BF58A826F6914EC310F37B +:1096E000C75EC7D16AA137F443098555E0F8CD03B9 +:1096F000C8A0B25054F569A41EF863BFD177E43016 +:10970000DAE9C7EB33E2DDC8E773C62185E4A406D6 +:10971000D743FB58856EF13DDB6FE05F6610EB6A67 +:10972000AAAE0615573B7952C3AEB39EDC02869AA9 +:10973000AAE77AB65D15C6FDACDFEAF9D619E4EF03 +:10974000870737838EF2B33E30E88DF1731F3FB742 +:10975000F7D58D7C7FCF0BF043C3F884E872B6CC8D +:10976000F894E8F6C2E2C8EF85BDB4E997DE9F2D14 +:109770001E9653F3E3DF920B19A9F5E15F055CE652 +:10978000AA57AA57B8FA5769D7B8DA75880F56207A +:109790001F3E3214F68F2B02D7BBFAFBF779260156 +:1097A000CAC3CB55C25E4196719517FB776ECB86C7 +:1097B0006EF2ABD542FFCF78CD00D9F3370A974B85 +:1097C000B7E2F3ACDD32F8D10E3F2CC1A419C4E7E7 +:1097D000014F781FBEDEEC07B667363D027542AF1B +:1097E00067D7495C66261AC028192BA776D9230BA0 +:1097F0003B8D0C0F136EC97C60D6DC6E3DD56E8F31 +:109800003322CFC9661E6F7D97D0BF6BEBB2F38852 +:10981000AE3017E612FF7A8D1FB11C9E8B419CFC67 +:10982000F878F3DAE3D8755FB26EC275FA3CB84FD8 +:10983000E4FFE1E61A3981F2D81328DAE32FA452C3 +:10984000360847FCEE5D7D0FC96F669D2DE742FE31 +:10985000D17BC243683FE65F088159E2B61786654F +:109860002F0CCB5E1896BD302C7B6158F6C2B0EC45 +:109870008561D90BC3B21786652FA81CD9579DCE19 +:10988000F3FB928DBC1F5F4294683757D5D1BAC2A3 +:10989000C28ECEB6EC373EBF899F970A7BDA250D84 +:1098A000DE0DC8E75FAEDABB5141ECB78B7412FD39 +:1098B000F16BABF6EE350B527E75340EBA95F83E71 +:1098C000756C79DD2AB75F5DE21BDC44FD616B6F6F +:1098D000B8DE611F36587C46DCB0A10E4B75959002 +:1098E000C32568810DC417B5257FB882F48FFC7F2E +:1098F0009DC3BF46EB2C3936C5FAF1FD3B683FAB43 +:10990000AF11EBCEEF7F6C9319223F34EC21B9F805 +:1099100057C4967B502EA0A3375CE7987FEA2A2194 +:10992000B7B7D78DD0E5DE3A877F5F525C32E84526 +:10993000BA3C72C27F2080B8AA4116E3FFA1E67F3D +:10994000EE37C5BA1EA873E139B0708EC0358827CE +:109950002C5CF3DF5A5B954B8FF7110171F463DBDD +:109960004EFCA77DD6F8EDBCEF6A31BEBDBFAF9E01 +:109970007890F787ED0FF3FC969F1C582ADADBE806 +:109980007DE49BAFB4E25779841FCD49BA74237646 +:1099900083B82270420C3C28BFCB0368CB90D767BA +:1099A000247BDDFDFB0D1CD79755FA8107D779E89D +:1099B000C4F1FDEA545A17CA07B2F497751B362949 +:1099C0008B53F271AA6E03CF83EBF8DB3A074EE8B4 +:1099D000B5E8D950149E29E13E074F9CD8AFE27BF1 +:1099E0000D3EB13F30DFDC6FE07B0D19BD57115EDE +:1099F000FDE7136FED5710AF0E8CD0EF37ADD46E7F +:109A0000CF3370E257FB793F9ABE83F6E3D3A4B01D +:109A1000A9D350BA97D6F59313EF31DE6D9822C6CD +:109A2000FFCE89F7ACFE86772AE32DEC8F4D8D1A99 +:109A3000D8B8D32067D3A88BFAF493AFB776D1BE4A +:109A4000B54815F72F10E33701AE2F4CEB7BA7F588 +:109A50008BAC0FE9F012D3C1D22BE467B42F0DFE0B +:109A6000F8A9A5279EECE7817047E6A838C62E5FC7 +:109A7000AD11FA010B46E4FC08F1FBD51A415F1B5E +:109A80007FE1F37FA1E7DFB1F462C08A2B7615BADC +:109A9000E395B72D7DFB67CB5EDB780DDF7FA38E73 +:109AA0009F8B71C7D259D0E9CD1303AD247747EB13 +:109AB0002CFD0E89F70FD7B9F1DFEB5477C8E548D5 +:109AC000BB556F84C4DB422E33605F29F1C5B0E41F +:109AD000F43A9DEAA880DCEE8302E8CE13F24A76DF +:109AE000E3AC6567916F06D115147C8EE375AD9676 +:109AF000A6C00D0E3936A50324C7DD5E943F4DF098 +:109B00005B294FC98BAFDE7380E4A5C70BA938442E +:109B100015765BD4A76E6EE578D9DDDE34D23EE5EE +:109B2000406B28A5174527BFE9D28B8C93DF64BD16 +:109B3000186FFC2F9DBCC0F266AF27FBA46FB390DB +:109B4000DFBE28E9C3C7277CBC3E677FCB1E78EB0E +:109B5000A7A6F4EC23DB0E8646F8A8527B8F3706C7 +:109B600024B765E685FDCBF25D7CCEAAFF724A7E06 +:109B7000FCF59A4B8EC6B3F357D60B79195DDAF61E +:109B8000DDB3DEA6FB91FD15A1B476B280E6B5FD8E +:109B9000D0D3D6BAF1F9D5F50EBB3EB55E3C1F91D8 +:109BA0001743AC3BB3DE2D4FF8DEB5F52E3D9B9849 +:109BB0000FD83FE49CFF636B7E8CCF8AEB2788CF66 +:109BC000D6DD2DF1383B4E6CDD64CE189F3E55F549 +:109BD000429F4797076ADC7ED0E1AF16D3BCABFD4E +:109BE000629D7F776CF517F257BB6B04DDCBEB47BB +:109BF000FCD50A96078B7E65D6F386A596BFCD8ADF +:109C0000059CEFDF6FF16D2C6E07CEF3E42CCAD804 +:109C100043FEA0D790B97E2E5CB8C78324B8A7FEB8 +:109C20004FC3F1351181E3ED78E22F80DF034EFC65 +:109C3000DE75F080C0EFC189F1BB23BEB9B73E4DE0 +:109C40007C83F8FE3EA22FE2FB2DD43E5423E46633 +:109C500037C662836C7F4C9570F5B5F0B7355FC23F +:109C60007D76F74A61C2B15DC1FA5CE0BC8891B310 +:109C70001AE953C784417D5B6FAA9AC31E1FC3753F +:109C80002449063CEB7269BEEEEBA404E5C546DA56 +:109C900073621026BFD42B31BF5A8352A21AE95CDB +:109CA0009990983FE837128447AF0E2594226CDFD5 +:109CB00068A8C32B90CE995B0797018EB7ADB9E624 +:109CC000A81FFB7D582CC1E538CD6E5F0C1EC47EED +:109CD00067CAFCDA76B40F75BD774012DB8FC6B267 +:109CE000E284576099F7BD2195F8A7723EAEB6544D +:109CF000D46D3ED48092AA17927DC27A3055DFFA95 +:109D0000EE8939471C7CFB4EBD1BA7FFBAED457899 +:109D10007F666ABF1BC0B2E3C8877A2B5EBF15F7A8 +:109D2000FB69DBE09C23C89F7DF5C25F61BCBEAFD1 +:109D3000DE190F58F1BA8E7E84E8D213008DE4D676 +:109D4000977CE4A745B89F8D6F7A80F21A4B3ECF7F +:109D500055A97DF3569117DDB8F7F40E8A375A7579 +:109D6000252E239D5A95C866A6E35EBFBE0DDB8FE8 +:109D70005BFC381082ED141FA9094F42267AEB7163 +:109D80006D21F6CBC071FD386E46785BB201EBB544 +:109D9000A8D83AD2D1BFD64C9610FF91FE669879DA +:109DA000AD2BD32CFB8D74BC499721E9A0CB575028 +:109DB000702CBAC91725A6A3E9A4EBB6E60CE66F8A +:109DC00057BEE02FF93F8AC7362EF06BAC47A6711D +:109DD00072C63CA71EF62D7B308FF2A11EE8A6F9B5 +:109DE00043DE3334BECD47F03C6A125DCEE3FA0861 +:109DF000D7A9A09C71CEB7B1B485F3C7AB510E0CF7 +:109E00006C5F1DF69E71F2DD47FD27E0F3DBC4E7D2 +:109E1000CC149F0F2822AEEB79D3C3F8A167EFF3E0 +:109E2000CC1773AF1C9EC96FC5A2C49718C861F642 +:109E3000EF490914DCCF5F597AD253D7B7A3059FF6 +:109E4000EB5BAE0A93FFEB99FD632FD57B0AF32002 +:109E500093F62F1B076FC5FAFAA73C92B02BC0F4FC +:109E6000EAD93A39D1CDC96CD347FCDB80CE87C65D +:109E7000B7E5E9664B6F3677484CD75B21EC233B5F +:109E8000B511225CDE0E712E250899B4BE5BE2424C +:109E90009F91BED5D3F1BD03E6655C371679273BAC +:109EA000F3E0E3C58F94493AEBB05BB5B61F53635B +:109EB0008189E222B961242E921BB0ECAAD1D3C6CB +:109EC000456C61FEAFCEAB3C7115D92FDB2E7F7494 +:109ED00070A58FED72EF096F2C34BE5DFE95ED37E6 +:109EE000D17F915FB3F3268777173E2A935CC83002 +:109EF0004C72A110AF09C7BDB0AD8B9E83471D2624 +:109F00007FDA93ED8F521E17B4526EDF74635FA039 +:109F10003E4DDE0C358DE7419CC638DDEE7FD81B0B +:109F2000592EB3BCE9733B108FFDF64A940FAC1F5A +:109F30005EACCBDBD12F6F0A7DF2153D27F5FE61BC +:109F4000EBFDA66BC305758E792A1B84BF3D6CE5BE +:109F5000F1BAF47A2F8DD31DD224CF64B277CF6AB1 +:109F60002D59A97EA97C5EACB2C191CFCB0826BD8C +:109F700082DF09CE6B663466981EF4530F96C7AA2B +:109F8000A95F86EA394D7E2B2318E6BC6DEB422192 +:109F90002FA0E164F934EF1E35164AD5C797574113 +:109FA000E72ACF43DF1B42520C980A90FFC891D199 +:109FB000DB112EFF920C022F348A731D3480DDC515 +:109FC0009C7FFA8721EC77CC44FB84E55F05CECDFE +:109FD00022BEF280D3E8FC4AFC3E9DF415D63FE950 +:109FE0006BA04948E7FF92991354B0BE152DAA1FE4 +:109FF00079F980273E9BE4F453B957A7F2DB0DE2D1 +:10A000001CEBADB0F20499B1EEE09EAEB9346F85B1 +:10A01000CCBAF7CE32396DBEFEAE862CDEC78E329C +:10A02000E34ED29FEF3600D71FB7F34E689F7DF304 +:10A03000F89C0038FF6CC25B33709DA7AD757ED76E +:10A04000E2C74D81EFBC43FB986268CB77E03A6F83 +:10A0500041FB9A40FBF8BA129668FFC7374AD05BBB +:10A06000383E3D6B03DF7DE74C09DB01DBBECB17E0 +:10A07000E7A7ECBD017090ECE9A20F47FC01EBD51E +:10A08000E261777DC90577BD02BCAE7AA5EAAE571D +:10A0900069EEFA8A80BBBE5277D7A143D87B84BFD2 +:10A0A000D6399CC3DE7B4439E2CFF0B7B6D57BC648 +:10A0B000F9BEAFF1ECBB9033D64FD8741F8F4FFF72 +:10A0C000BD6CF577497E6D3A3F2E893CA6992F8766 +:10A0D000F7A108BFBEE0B24931C77B3F6A103874B0 +:10A0E000241F1794D98EF758786B3C3EA817164159 +:10A0F000D2616754C58E1F4B4A4A705F5DB4608F52 +:10A10000731E81DFD50B37F27B4B9FB99F55A7F6A6 +:10A110004D8FE58F05AE5B0E2C4B88AB80E5FAD8F2 +:10A12000BD5262BB44E156ACE33EDCC73294179D9E +:10A13000FC53C00F4907AECA243DF3909F3F5635EC +:10A1400009FBF567233EC3712A35D1CFA66B664163 +:10A1500047F23E1C575BE8D77217D07BBE547B2179 +:10A160008DF7E8C78417D551CF6D7C351E3D46FB72 +:10A17000EFC106CB7FCF87F9C4EF73058DB949488E +:10A18000E1B5917C9D85D7C84E2FF3A6FCEAAF1BA5 +:10A190002633BD3282820E6A08386E98E0FCE5D71D +:10A1A0000D69F09C7F71EC7D9287CE405116D9DF0E +:10A1B000A5120C7B341AE7DFD95F04BD62FC9E0553 +:10A1C0006AC2941CB822A1F0F928FE9ECB98973A57 +:10A1D000179BBB28F65BF69F167FA24F7AF93D7C52 +:10A1E000634A1DE50D72CC0F294E46C376E7F10593 +:10A1F000563FCE4FFD6133E50FECFAA73F2BFC77BE +:10A200008A63BBA699AD12F67FF5CDDD77E6A1FD99 +:10A21000EAA29817FF56FCFC85674DC6FB229E7884 +:10A2200091124B144FE8B2E9CF49C513B8BFFF45AF +:10A23000FB3BA61F1AA8C02E4BAF3C534572DEFF56 +:10A24000C2C175F9E4BFDA91895761BDD82FE2B375 +:10A2500099909889EBAD78BAD1C7E7753ACCF5A358 +:10A26000BDF575F502ED7B2D8624843F4DE805C2D2 +:10A270003BBE57141078286612FEF223CEA5BA030F +:10A280005F32DE448171E1D3D1F813073C35C31945 +:10A29000B7CC985645F62F7005E25F1127B0BD90F8 +:10A2A000F13F612FE2C676C2C7861A67FC0947787C +:10A2B000FD149F10EEF6CF50DC78B2F1C706E579B9 +:10A2C0005E97202E05F0BD47638C3FA3843F71BD90 +:10A2D000D18D6EFC991947FF96C6BE3C581E99D584 +:10A2E00048740E09BF37CB3BB88EE6ED475C695228 +:10A2F000B9F7F9E3E42FCCA746E483E560D6079AE3 +:10A30000851365C69DF3AD7DF6D7C52BB7607FC3BA +:10A31000C29DFDB3FDDCBFFF232D9129F4FE20E992 +:10A32000E3A280853B353498F3D88EF3FBE49FBDE0 +:10A33000D85E0ED98C3B6FA6B5125F7E27707CD29B +:10A340000712E1411B37DE88E24D7EEEBA26212F4F +:10A3500012044D9A6FDE90B8E7702CB8E549CA47F1 +:10A3600054783D61618647E2D5158DE9E46B6D8CCB +:10A37000EF3774AFC33D4F6679ABA57E5DEAFB2C2A +:10A3800067DDC1A23CCE370681DFBBA62116B1C670 +:10A3900039ED8C7BDB138A95B77AF94E6306D96564 +:10A3A00021E77B1B7EB1D9E4B82BB29CE639AEE342 +:10A3B0003A699EE22DBD247FFDA51EC69DE7438719 +:10A3C0001F0BE37C3735FEB06A3A96B7EC7FC28B41 +:10A3D000DD209A3779079595AAC7150FFDF5F399F2 +:10A3E000AE7AEB5397B9EAB7EFBAC265179B22D79B +:10A3F000B8EA77EEBDDE55AFD24A5CEFAF082C72FB +:10A40000B5AFD42B5DF586EA55AEFE91828F9529C6 +:10A410003AD3EFFE46D4D79AE74E57D1B9576D5F7E +:10A420006163892EF0249DCFF664F771DEC1C68F7B +:10A43000364EEC298CCDDB3E3965DFF6347A5C385C +:10A4400073B43DEC6D1478A3A9A82F96EEDC7CC400 +:10A450004EC62573D61C710E7C6BDA73E05BBB1B9A +:10A46000A73AED6AD24BFD9A163C71741AF1A1B568 +:10A470008EF1E79D2171DF65D9C63A3203B07CD9F0 +:10A48000BD04C3E0E6F26D4A2C2B25679984337333 +:10A490001867EE663929157A68EB5B7FA861423F41 +:10A4A000F36F6D1A2467017CD016E0F2CD369DCB98 +:10A4B0008FDA825C1E690B7379B46D01973F6D333F +:10A4C00038FE3ED956CDE50F1066925FF94BCFB3FB +:10A4D00009F7327D0AF9D7A4EF3294DF9AE00F8DA5 +:10A4E0007D4890BBD0B051BC8CFB7F81E89A59A0CD +:10A4F000587A22F63F42A7517AD8BAD07889E8D55F +:10A50000AC40D23BF7D2FA84727690FA77935F80B0 +:10A51000945F1878A1259A4FB8DBF20B03F93E112E +:10A52000D758766C5281CEF9BA8AA777B13FF081BD +:10A53000FE1E9DD7FEA651E024F213648FD6A25FC3 +:10A54000201C62A29D26BFEA433B4B76DAA73EC49D +:10A5500075B54289FB037FBA9F408358B5A39470B9 +:10A56000AF958718E327FE38BF504B7E216F22BF7F +:10A57000D0B05C227C5404E1DCFCB4FEE17F38FD09 +:10A58000434E93902713845DF6DBEB50EF66FAA9F8 +:10A59000120C111DFCE0CECFD874F0F31357BBA002 +:10A5A00003C498CE0AF95FDAB7699CA278A2CC629C +:10A5B0009512E8AD24BAD8FEB3E2E96526D9F55A7A +:10A5C00003E94E7EE48C58778A4E49E6EFAA02B141 +:10A5D000BEDAAEB8B109FB2F5AE0D7888F4AC04D1A +:10A5E000B7558FC6994E0BADFCCDC2DFB8DBFDA3CE +:10A5F000F23D394D6EBC37CB9B5C4FF418B0FCE696 +:10A60000C0DE376B4BFE08BF395017F73CE0F09BBC +:10A61000035F167E7320E5372BB64CE837636EBFB9 +:10A620001910FCC924BF298DEF3747FBCBEEE07D25 +:10A6300027499E6D7FF9D5262B8F9097E03CC22647 +:10A6400059E4B537CD8104E5FB321B6FB99DEF07A7 +:10A650000284FDF9ACE7254D281F87D47F4A521CA0 +:10A66000A256887C997265E9111952FA8EFE777E9E +:10A67000537A7CB7909E1FD267E4911EDBB8B5FF7A +:10A6800085675C7ADC7F9DADC78D9D240799BA3EB6 +:10A6900097E2E8DDCD355A05F98FD933E67A902E69 +:10A6A0002F597A6CDB395CDFF226176E1672FD12B9 +:10A6B000D949DA279A99DF215D27592CEB215CE9EA +:10A6C00098B7A778BE5A83FBB9FFE7FFF02CE54E99 +:10A6D00046DBA14D370E1690FF19981C56290573BD +:10A6E0007FD3B3CF2AD78DED77CF8309F67FDDF9FE +:10A6F000616BBCE79E55268DEDD7A5D71F25FADEE9 +:10A700005C0861F23735D0C7F7916A6190CBB5E547 +:10A71000B118EDE726C44D53F1DD3776ED30A73B98 +:10A72000E8ECF03F9B9AD2D8DFD38B227734F1F953 +:10A730008AC88B5CCACEE2AF20D31D1FC4695CBA45 +:10A740003FB747A2F54EC9F922F80702429ED03022 +:10A7500045597E64394CF76872CB625FE7F58CBA75 +:10A76000572B058EFE5EC2759F922149E7EE668EDD +:10A770008FCF5D46FBB1B3652BCD263E67D17CB450 +:10A78000FF96E0D1B7E9BD4BDF978D481729CF6E13 +:10A79000E56F660C7DD44572853A314CF6A8FD4BC9 +:10A7A00027B97E0ED4613A276BCFF90CD2F953DF6B +:10A7B000058FFB7ECC487E5EE41935DA10E9F3E7BD +:10A7C000173DB4BF4992D8DF4F9A849C6A0B843EF0 +:10A7D00068E0C8133AF2906C3F25924F25955724B4 +:10A7E000FB5B6EDE2BD1FE0A46DE7B83F6379EBF17 +:10A7F000FF73979D56DE71DC765FAC95E4BD53AA7E +:10A8000090C92E75CF2CDA43F72AED767BFFDD4D0C +:10A81000F6B95042A5F397EE1973736102DCE2EFCB +:10A82000AD73DD271CD32E43CC79CFCA2E8F59F3BD +:10A83000E596C7CC6BF2E85E9F88938F96EBC2EFEC +:10A8400097CA225E0A988CE77E6BDD37229C44E52E +:10A8500007D67D235B5EAE1DFC06E7FBCE9B0ADFC1 +:10A860000733978A7C9EB9DDAFB5E7519EEE9BDC3E +:10A87000BE5551353FC777F1F924FF8FD079C92CE8 +:10A88000AEDFC0756F2C4A74F2C3FA5CE7B9E350CF +:10A8900093C0B793B4BF7F47E4057D8CB7299C175D +:10A8A000F9A5028DFD91559FE4D3CCAFE27C3BF33B +:10A8B000E58449F2A3A1999F27EC3FFD76CEFCFCED +:10A8C000EDDB687D853E3E4FF0807296FC5B17D1D4 +:10A8D0001249A367C5C0C4F69DD5B2F0578AF027C8 +:10A8E0005DD9D3B9DE593E97CFED743054D2B3273A +:10A8F000B589F347CF58FBEC403A5239E511F44B98 +:10A90000731CF8BE6B19F3DB8B8A48FAE279E47E9C +:10A910009E6F4779D11EF25F3BCAB76B328E7F754F +:10A92000B3C8EB7754A7BF676CB7EB1053899E6A27 +:10A93000FEC4EBEA6913E75523FE201C3388DF537E +:10A940000ACD08CD3FA5304F62FA412440E70B9F66 +:10A950005B72B3235BC421181FF03DA09D8B6F2F4A +:10A9600021DAAAA13E388BCFD57012DEA77CC76250 +:10A97000F453349E37C2E73553A65E2B9B0EBB358E +:10A98000A3D91AAF50E4B747AF2FAB59E4D13AAAD5 +:10A990003B22FCDD81AEC0CC34760FAC7EED3EFDBB +:10A9A00035EAB763A50C34CF8EA9F382B49F1D5747 +:10A9B0000AFB9BF5D627CF6ECB2279BD07FE95E427 +:10A9C000354F617CA483FE4435C98BA668CE7B8459 +:10A9D0007669CBE96316FFBC8B9FE4F39DF33320CC +:10A9E0004CF6ACCAF36E92F2893B0D95F1D8E8F7BC +:10A9F0003366C8AE78719226CE897742AF46E7B902 +:10AA000039A519AEF8D17EAFAB2956DEECF0D7935D +:10AA100066C4D8EEDAFCF5127F27B00FA3D7FD8805 +:10AA2000849E05E38947260B3DC3F0FBC34429C937 +:10AA3000F3B4E26EC7BC77350B7DBBD4F8A3F73512 +:10AA4000DE3E7E407940877DBC81FC421A7EFFD28B +:10AA50009AB7F3858F5D78A773B1C03B9B6E1C0ED0 +:10AA6000D43BD6739B253F3BAD7B523B512E7F940D +:10AA700066DC364B2FC69BF76A6BDE949CFA84FC2F +:10AA8000140AB999DEECFB47E1FF7B19FFF9557118 +:10AA90006E112B8BC59BE91E4CA9F05BFE02CD23EA +:10AAA000CE956DBAFA1857FE05E9C8EBFB6573E859 +:10AAB0002E93F9D90B845F3B512E49AEBDF94F322D +:10AAC000AE3F8F72497E5BE91D82CF38CE83F8B7E7 +:10AAD000AD73CFCFE7597E55A7E70FC167A51CC758 +:10AAE000C42F0B5C7A5D7ED8C479B7F3563C38DE50 +:10AAF000FE7C053ED7387F6C7EF9A966EB1E80157B +:10AB00006F80A7607B25ED2B20273CD2F8E3D8F996 +:10AB100065B862623BF8D8283B38BACCCE199601AA +:10AB2000F99D6C5EF38F1D48976CEB1EDFC7CD5F00 +:10AB3000BF8BEE078DB527C3AC9F5FC08EB03C9D29 +:10AB4000279F3FF9FF5C3E6C39B8FA5409CB01D21C +:10AB500047F02502098F889FF81C59326581F30C54 +:10AB6000FC9B665DC96190894FA6F1D11ECBC1687F +:10AB7000FA5F0EA6249CA7C67E69FADD22AE2C8061 +:10AB8000218970F8D514D071EA2E56F6193E9F36F9 +:10AB9000FF9444F1CBCF9ADD71E2A5F86EF36BF42C +:10ABA0007E7ED0A64A24F73BBF310C145FE42637E3 +:10ABB000F37728BE578681BE37C98561C6C5F00ABE +:10ABC000F0B94F7BD67F1CBEC8F251B4C7291F51C4 +:10ABD000CB0ED8F5EF5BFC68CFAAE7757D3F205719 +:10ABE00093BFFABE3298312534BEBD88368BF38AC6 +:10ABF00039CFBBF9327ADD4B64E33FC83EA884C746 +:10AC0000511E5A4A7D69717876462C6DDE2E222FB0 +:10AC1000FDAC796A3AF902BE3FBEF315603CF2E73B +:10AC200092B3579B75710E7349BD7F9AEF939CA7A2 +:10AC3000F381700A978D1EEF5238CDC68F88171991 +:10AC40001F9ADB15682F65BCC8F871ABE9D7E8FC23 +:10AC500038ABF8FEEF51BD16F123C5D30F78E2D91A +:10AC600095129DF38AF3DE113D950FAA25B8BF9A80 +:10AC7000B79FB8AB03D7FF2845F1C88F37DE7AE21C +:10AC80002E84A6E0A3B3541C2752E24FEC21BDB0A2 +:10AC900070DDF1D997BBE8D85FEC5F9F4E4E3F5C0B +:10ACA00023FC4495274BE6FC75489CE71D0FDD26E9 +:10ACB00053DEA337E849101E48DDEF42AF84657FBD +:10ACC000D0C3F39C2FC04013E7D18AB768B494591E +:10ACD00020BEA73C46E7E0934110C471DE6DCB2750 +:10ACE000AD73785A2A2E477A1AB98EEF8BBA5F3C29 +:10ACF000C2F3B487FF296B88F205C1C3C729AF75BA +:10AD00003EECD7C181978E670B9C75B8F85F14C273 +:10AD100069CF5976EFB535E2BBC7DA3E8CAF514EFD +:10AD200057852A74DABF324EFCF0F41AE17773AC1F +:10AD300076FBBCDE6E7FDF6A1FEFDCF6F668B67D61 +:10AD40008F509CA78F3A3F6F696CADD59086ED6BA5 +:10AD500004AEF38D9CA327AA082F755AE7E7FD746C +:10AD60007E2E62483E8FB7F38CA3E75B45E7E81C75 +:10AD700037FCFF798E6ED3C1A6A39D57EA0C4C71A8 +:10AD80009D8FFB82168E591CEB594374A77C09C713 +:10AD9000813AC7812AB5F3F941B7964E3FE694C58B +:10ADA0009E5CE3B0AFAA2EEE9D1C1B95473A56EC75 +:10ADB000B7F05C5F8113CFD972D56FE1B9FE71F046 +:10ADC000DC05ABDF885DCC922DBBD8B78EF5D2BE4B +:10ADD000176618BA362F954781A8C6E7E1705F4E0F +:10ADE00098EC56A7A55F012592EBFCEECC2E3B0F0D +:10ADF000093F03015FCAFE15D1BCEBD3F61F79CF23 +:10AE00001AB7CBB2BFEDE1DB84FE5FC2FEE696C5AA +:10AE10005E21FAF903EEFB7E93F40C973D3E457AF2 +:10AE20009386FE67CB5626896F5910E7BC664B1098 +:10AE300034C2A950AE75120E6C475CC7F9E54BE4FD +:10AE4000815AA3C0FA797C7242A1FB5795C1830A4B +:10AE50007DFF59FB3CDA876C977DE03CD7EAB75E13 +:10AE6000BF8BF0F1A34F1D12DF8777487CEEDCA289 +:10AE70001E5F27F2A3F25C7FC1D8793744853F86F5 +:10AE80005DE2BB71925DB683A3F82685D788EFC8D3 +:10AE9000116878F2699FB121DA276C15F6B33D0C81 +:10AEA000FAB7D97EC6D37E37175A23F633C13D92FF +:10AEB0007FA3F1DAAD7EC7467DE79E65D9E99602AC +:10AEC00081FB47AFAF455DC7ED180DEA97E7A7A136 +:10AED000EF2ECDA4FB1CB6DCB56F8D5BC988F4EBFF +:10AEE000EC0ED6FB28DF66E73DD163F1B95B4D4838 +:10AEF000CCBF0A929CFF5C0D43FC3DCEDAF2981465 +:10AF0000C5F7D4FD1FD7AEC5DE8D9167409CC389C0 +:10AF1000EF08D5541ED4C7FDAC3CA8AA8B3CE8A1D1 +:10AF2000E63BE52ED21BF45F946F384EFE0AEBE74A +:10AF30001664B1BF1A4F5EFF6B9BF81EAD9BF243C8 +:10AF400028E77DD6F768CF517E08CB4C052A390F0C +:10AF50009F048EA76E78D1FDDD6266D0FDDD625163 +:10AF600059AC80D6579C9CE27A3EBB6FBAEBBDD3FE +:10AF70008B2257451D79DBFF07EDC0E2E89F66078E +:10AF80002AA27F463BB07BDA485E328BE2285F899B +:10AF900021EFC27D446EF0308E3A16B2F04DD8CF1C +:10AFA000F242D74C99FE16AEF2A278E44E49E12A5D +:10AFB000FF856B5CF7A946977E6F5CD3D2EC2BB410 +:10AFC000A6D085DFFD17AEE5713E24BD99CAF9F81C +:10AFD000DBA2E23B83E7A4B4DFB7BBF1A7AD6F3BD5 +:10AFE000CA8C3B88DEB6FEDBB8F45CDF27723A3CE5 +:10AFF00031E22FD52DA1658E7D744E8AF3793EC93D +:10B00000258DF3B07D2F5419969B1DF750390FCE27 +:10B01000877B83AC9FD9C932FEDEC0130A1B746FD5 +:10B0200028BB340CCEF3F96F7D79E9D7695FD9CAB3 +:10B0300020105DB2EDEF978C521EC7EEF7B5A8EC6D +:10B040003AEFB1E7B3EBBFA6386A26AE9BE677DCF2 +:10B05000E33CFD501F503E2833F912CB79E64312F2 +:10B060007FC71FB3F3F78152EE2F45FD8788AF43AB +:10B07000A1223E371E0AC93994971C32CF89780B1A +:10B080009F8B78739B8B4F7669E3D921539CC77F45 +:10B090003F24ECB11D6F8D47E7D171963F233E44AD +:10B0A000A16822DA74377D57E7B7E2F17DD1BF7E20 +:10B0B0008EFCD0F5466C2FD1EB349A1B3E2F990EA7 +:10B0C0007C5ED2F2F03766DF8AF30E59721DB0CF84 +:10B0D00049C6391FB1FB8DD897C0887DE13CD1109E +:10B0E00088739B31FE2A743BDBEBA736204FE99E29 +:10B0F0009785B30356BC717E812AF2CA51D09D79DF +:10B1000082AE432B859DD11CF9922F60671EB6C677 +:10B110006F273B8365A7B9E58BDA99634427B5C0F0 +:10B120004D5F25CB6D67D69619FDD46F027BF3C6B4 +:10B130009FC3DE4020CF25CFA34B5B9E51CF87849A +:10B14000FD07539A3756CF71BDA7A369E40F0A04D0 +:10B15000DFECF33658AAB1FE49A1A3BFE7F3A391F0 +:10B16000F5C480BFB7FF82EBF9A2FDECFAFF0661E0 +:10B17000BB84A3A047000000000000000000000006 +:10B180001F8B080000000000000B0BE16760F85106 +:10B190008FC0EBF850F984B0083F69EAD1F113266B +:10B1A00006064166CACC00E1C5BCA8FC127606863C +:10B1B000686E0686236C0C0C8540EC08C4DF7910A1 +:10B1C000F27BD921F4244184D8070AFD328A873ED4 +:10B1D00066106560601243F0A78AA1CA338A22D83C +:10B1E000FD5294D9B500A81F0074BFBA0A800300AD +:10B1F00000000000000000001F8B0800000000009D +:10B20000000BE57D0F7C54D595F07D336FDEBCF9E6 +:10B210009779492661121278090944083241A04100 +:10B22000A1BE84A8B14BB723A28DAD6D07FF50B06E +:10B23000A8A9BA96ED6AF342FE90C400030B8AA057 +:10B24000764041DA6AA5AE75DDB6B603F8A3B45F01 +:10B25000B79B5AB7EBDF6E50EBBA6DB5B19685EE82 +:10B2600047CB77CEB9F765DE7B998458EDF77DFD46 +:10B27000BEF0D39BFBDE7DF79E7FF7DC73CE3DF700 +:10B28000C6AF7A58F574C6CEE0CF858CED0830C6CF +:10B2900016E6CA7D7FEB2D5FB38031F37E25B10FBB +:10B2A0001E1DD8B1BA7C8DCED8E11DFBB75E0CCF88 +:10B2B0001FBAA37ABE1F9EB73289B112C61E8EB4C2 +:10B2C0007B346CDFE3C9EC8347FB23C647EAA0BEAF +:10B2D0003FED611BE0BB877656475998B17AA6507F +:10B2E000FB9E3DBD2FFAE1FDF49D4C9F05ED676689 +:10B2F000D77AF40863E5C33263C539B8321DD993F0 +:10B30000AFFB18FB6AC7B193AFD7427B996D08C4F6 +:10B3100060609335205CD3556D4300FA61DD508742 +:10B3200071A68733BC7E40BCD70EF2FA23FCFD43E6 +:10B330001D43D41F76A02E82F7F82B3CAF32619CC0 +:10B340003A463F67E0BF9A9D866715C03BE7008C91 +:10B35000ABE69ED7A6871CF5E94CFEDDB0F55D1582 +:10B36000632FE02F258817C763F629C0F7BCB1F813 +:10B370005A785978FFA5E177F89529C13500E74358 +:10B380002C9AF463D97DCB8B0CCAFDF7C168809FE2 +:10B390003FF5B5AD17E3F33B3C8901F8E4E4F13D3B +:10B3A000543FD0E94974427D969A0A9E8378EEF420 +:10B3B00030C46356981907019E593294F58CAD1725 +:10B3C00072F54F58823CEE14A5CECC1771BC87EFB6 +:10B3D00060FA00C0333DBBF687D8CFF4E7BC2CA0A1 +:10B3E000239D57370FD7E7E4C72AF59D0ACB9E3731 +:10B3F000BE5CCD94D961BF8DEE3355EDB0DF46F71D +:10B4000099E10CAF0BBACFD40EF2BA8BEE56FF35E2 +:10B410007770FABAE9EEA6B79B4F93A5BFCE8C60C2 +:10B42000722ECEAF15519854E3E28D729805393CD7 +:10B4300070E788940CE7F09E9EFDBD6497BBBF3C0F +:10B44000FCB91CECC9C9C147EA262107E5C3FFAF17 +:10B45000C9C19F361F50CF6627D0B37F2974C0F66D +:10B460004807377E5699EED04FD4001C7D1DEC4422 +:10B470000DE035D8A152B9B943A3E7031D712AD312 +:10B48000A0AE19C09F7E9E654C503540BB1335B6AB +:10B49000712309F8CE0677B45173D443757147FB15 +:10B4A000424377BCF79B4186FA71F018CB0C4838C1 +:10B4B0003E63C62C844B65062CA4B7343CABE2FA41 +:10B4C000B869C1B6368463D15C45F74A889EF1D32A +:10B4D0007829638B79572C50903E720DF4B3A9CC28 +:10B4E000CB36688CF5FF515F762DD4EF5AECD7360A +:10B4F00024E0BD5F3F720D7CBFA9494DE2FBBEAAAF +:10B5000099F47EE0AA10F3C2FBC8FA4F16BE0EF201 +:10B51000AF561F8BA7703C1F6B43BDCB641FE1DF91 +:10B5200090D5F6A01C496C7B3BD637D5975621BCED +:10B53000D3250FD17960615131C2D95F997E33BA79 +:10B5400000EB8ABE01DA27EA8EB649E7423FAFCB6D +:10B55000AF227FEAE0DF996AC083F1BAC5AF682302 +:10B56000D41DFC06B200BFCF17BF27EAF77B6BA044 +:10B57000DFDF482CA13532369FD9DAC3F783958CAB +:10B58000E383F8013E89679CFD9D5F77E5E7088EC0 +:10B59000376DE3021C0B253E5F7E58AB1849A4DFD4 +:10B5A000332CE3AF1A0BEF26F9C0F328C70D407F09 +:10B5B000940337FC6E78DDF80C566608FE3E898DE4 +:10B5C00020FDDDF09F5FAFACF21440C50E378C7BE1 +:10B5D000BE0E70178C85DB92EF431D1AC9CBF73A6C +:10B5E000EA485E0E425DC7FA1FBCC43F9D71F9DD9B +:10B5F000FDBCBE17F9372A37129F47B7497CFDCCEF +:10B60000A26D00F89B3F6064A731D6FEE61EA867D6 +:10B610003A4BE70FE8367D20815C80DEB8E546CF07 +:10B620005F61FBCC1D1E0997E08CE9B91CEB8BEE2A +:10B63000F478BC30CE8505239FA4F7370A39B8C308 +:10B64000736416EA0D23FEDB681CF037EF3EB21A76 +:10B65000EA3F067995809FDFFBE3C8AD0467A768E2 +:10B660007FAA94E9A087E6AF538E7BCEC5F6AB6F79 +:10B670006440075DC8E9283CE3CAE9EF5E92A09EFA +:10B680005907720AF5BF11726AF1D5807F48C7A7C2 +:10B6900037788EACC6EF1A149D6963F97AA17FE4FE +:10B6A0005728CF99B50017E0D92CFB72EFF3C9A941 +:10B6B000B9FFC8AC09E474E974D685E33D309E9CBB +:10B6C000AECF2FA716BF73A5735C26EFA3711B180F +:10B6D0001B19807E7FF8879FFD0AE535B346D1FDB3 +:10B6E000D258BC33F20182A3A14935CCC458BCDD89 +:10B6F000788EC563A42C599F475EEF98585EAD7253 +:10B70000734786BD062CDBD21127B91DE8D0498EC0 +:10B7100007851C6FC5A66563F5F6260F5B83F2B738 +:10B7200029C8D63C8EE3B7CCCFDBCE2A19EB24F95F +:10B73000DE82F25D4EE0180CF882BC11C4CB066BC1 +:10B74000607CFBFB0AE85F1AADC3C2037A3CD7DE1C +:10B750000C41FB2D01FE7EB8B3ACC9ACC8D5FFBB14 +:10B76000536B32978C7D3FE03B687A8139DFEC7C0C +:10B77000D1A80F38FA37B07F3B7CEA92B1FD0D8833 +:10B780007A81274CFD0D4AE938F382BE95B27106E5 +:10B79000FCFB8EC48C9646EC17EA20C78BA7FCDC1A +:10B7A0007C66716E9C57A49F9B26D06B9194FCAED7 +:10B7B00004F458BAA4BD8E55E3B899365608F31070 +:10B7C000BF877E4306C7F319E93F58979CA3CBF385 +:10B7D0009D274C8403C9112E15A062DF2D45B408A6 +:10B7E000851A334D6B613EC3546C97001E4F02EABD +:10B7F000205F530DB5DD0FF5F275F21BCE799393F3 +:10B80000877CFD69A23F15FB037C3C3AAF9FB53FA7 +:10B81000F1FDF8F2C0DB011DFE5D8272695DFB1A6D +:10B8200006AAE1BB621D68FE70E3BF2C8171024372 +:10B83000BE04FAB181C611D22B1ADA0185F8FD488F +:10B84000F6425CAFAB58FB00F0F34949E7E3CAE9C5 +:10B850007812EC666D4939CBD8E0B2FAFDA0E90662 +:10B86000F09F24F8051FA1FE7BE2EB38F8A8880FB3 +:10B8700080AA223E311B3E32E003E3F50B7C2C3ADA +:10B88000B9F11808986D38DF9B67377E0CE9A10E77 +:10B89000D57A48AFC819A2CFA04FF70C407FB33D6F +:10B8A000DC3FB3E8A23666885E219DB5A3720AD557 +:10B8B00039FBB5FA037A335C77038DBCBFD0287CA3 +:10B8C00019826F0CBD19D07BEED8FEDE15F0DC06B8 +:10B8D0006098C4AF8C835FD677563F16BE63FAF983 +:10B8E000D1BB4427ECC7DB90E3BB9B4E5E8F4EFA87 +:10B8F000653CBA9D0D1EEBBB3F159EB3E1E5866727 +:10B90000B2F363FAA9739801EB6C1A1F41FB0D9D0A +:10B910000A8DDFBF8EDB47FDC72E22FFF2CB9EF4E0 +:10B9200031942FF3591F43FBFECB965E36E6D37757 +:10B9300099483ABE223CBE5E7E00EC5DD38F7A8C85 +:10B94000AFE3FBA19E81FAB435B23905D691FD3B38 +:10B950001F0FA07FD0EFE376C7CC7B5FEFC478C129 +:10B960006E23FE8E17EDDC007FFEF07DBFEDC4F888 +:10B97000D36EA6F1E711DEDFACFB7FC79F8BF6A38A +:10B98000FEEF7A0F336DEBAEF57CAA925995CCE3BE +:10B99000177579B8FDF034AE57B3D0CEE2EBD5D4FD +:10B9A000E0C1554897F269417D2FF066F78D4FBE93 +:10B9B0008076CDC3F7EAF3BD408FC3373E29BD0A79 +:10B9C00070DCEBE176D6E362DD1B1DEFD84109E9BF +:10B9D000F8B44FEF8A827C7CC1C38C76806BEA29F5 +:10B9E000F649D4EBBD1B2E90FCF05DC33A5E7F346C +:10B9F000B84CFA3EAF9332D9BD614513EAE9A56A66 +:10BA0000FB9B4B00CFA5308FBA60DCA5F290B71D31 +:10BA1000ED22A328EFFAF8F009B52D03E32EBDAF10 +:10BA200077E8F202924B871C7FF877203736FA3C92 +:10BA30008DF8927DC9D7EBD59EFC7A6DA9CAF5D950 +:10BA400052D0675D40EFA9EB78FDC3A0CFD0CF28DF +:10BA5000DF09FACCD6EF52D909F70705EF225C349B +:10BA600016E6FA03FDF880A704E119F2E27CFC3047 +:10BA7000D0CC5B3816FEF2ED8AE92DA0F2B8F7DCE7 +:10BA8000B1F06E1678437F07F2F5F7E7C2676918E1 +:10BA9000FA8DBDFF7EA7FECEA50FC6E9C7AD0F96F6 +:10BAA0007D718D87515CC543F3FF0145FB21DAF3BE +:10BAB000E6CFBC14A7AB662301D43FEEEF2BD3E750 +:10BAC00038E209EEB2F9F67870388CFDF278D503D9 +:10BAD0005F2C2F4FD9F4C51E31EFF78879FEEF6246 +:10BAE0007D79C5E3A3F2B898570F14805D9857CFBE +:10BAF0006CE072809A0CCAB9A7C2044FAEAEB8EA25 +:10BB000032C58172F50251E774309B9924633CBBC6 +:10BB10009C25900F852DED2C0570F92B98E99D073C +:10BB20003280738EAF13997AA0930C62A8D2FA3A3E +:10BB3000F428D67DB8F6DAEA0AF842F158AE0EFDDE +:10BB400030DDF6DEC2A3BF2A1D0FDBF4524FEDDD60 +:10BB5000E48F067570F7A09D9ABDB70DFD7B75BB90 +:10BB600092405351D54D96027B2428279807FDAE6D +:10BB700030AB423E05558379301EA3411DE00F8650 +:10BB800093BC1E13EFB5146F1FE775BFDECE9A602E +:10BB9000DC7EE14F1EA95D4D72D0AF57EFA5754019 +:10BBA0009F1FF5C0F3B097F36593940A7917A2DF4E +:10BBB0006CAA280FD06E0A1A37FF31AA2FE4FF466D +:10BBC0007BC68BF287FF6361ED8D39421EBD393A2A +:10BBD0000F60DCA916E3203CEE3428E246667326AB +:10BBE0008BF3CD2CE0F407F33D1707A2EF8FE5E2CE +:10BBF00048541F72D4439A69A05F28C75802F5734E +:10BC0000C0C81AC84FA582D7918FFE688E8F3B900F +:10BC10008F528E8F3B902F528E8F56DDE2A355B7F9 +:10BC2000F868D52DBEEDA84A9639F878C5952F3815 +:10BC3000F978D555D7FF19F9B803F998677D7B498D +:10BC4000E6F3E8C80EE02FC6295AF83CDF57B98161 +:10BC5000EAE6159ECCBE2A7CBEA1B516EAEF1EF31D +:10BC600051FCE0F08EDB3D1A8CB35987F6D045BB12 +:10BC70005CCCFD3BBD9AE4E4D65ACF7ED4AB5F15D5 +:10BC800071AD01E1DF59E31E396766D41E87BC4BF5 +:10BC9000F87777093BA2F9DC3E15F5435F0DD70F26 +:10BCA00014FC5A88F13B46718EC10E95CA3EA8A776 +:10BCB000FCE857AA2C05F5ED1D1AD5EF83F50ACB44 +:10BCC0006DF03E0BCF77C2FB2CDA1B86A715F5E48F +:10BCD000B73BC0440354F674A854DEDDA1BD2BD796 +:10BCE00052FC8FCA473A742ABFDE5147E5818E0461 +:10BCF000950F763452D9E459B1D6CBF54B6B35C696 +:10BD00003BD6D6CCC77D8D408327994119D2D2C965 +:10BD1000E605B9E7169E4D9EE69BF0BB2D864C705E +:10BD2000801D7E6C46FE76B762BB6883CCFB8B8D34 +:10BD30000C2D8BE56DB7DE0B74DFD1C2F1626AF2B8 +:10BD4000D2DAFCFDDD89ED4A160AF8E2C9CB2ECA2B +:10BD5000DFDF066C777F0BC087EDC24397CECADF6B +:10BD60006E23B6AB5C08F0E1B81543975D927FDCBB +:10BD700041C46376D141B2AF40A24C9C77252BB52C +:10BD8000226C37BBF8E0E7F9F3E1AC8CFE8ACE9F7A +:10BD9000CFC1F6615AA82405FDB21AF11CDBD3F31A +:10BDA0006C133E2F6814FD28BCFFBD5730B2BB0B8F +:10BDB0005BB4BD2A88CC6357F0F95CB252DF83F5DF +:10BDC000D97E3E5E75B5C924D05385BA2649D0DFE9 +:10BDD0003CA87B60BE95E84909F5DA1C858FBF77E2 +:10BDE000669A49F0BCB006DAC1778F41DD03DF9572 +:10BDF000D4403BA8CFF17378AA2F18A676565C637F +:10BE0000DE055AA717E02868D125545383C26E2C4B +:10BE100069E4FD178E68870A40B7AC84656739CC42 +:10BE2000A72D9F67648C3CD1F573F2FB0BBB19F90E +:10BE3000E34572C361B306E02EE7FE1B0B327D1FA4 +:10BE4000D8FD775FB5BF1CEDE3D953593BCE9BD2EC +:10BE50004F1C984DFB77E52C85FAFAEE4F7CAB7CB6 +:10BE600015C287EFA15EFAC9EFCCC6FABB3F5A36BE +:10BE70002595470FCC390006A8CDEE70FB0F254F56 +:10BE800024A510C0AB0B780705BC3FECFA4F8A4BDA +:10BE9000943CC5EBA7BC95874DB089664FCB121F6C +:10BEA0002C780FEC11F04EE7F0D4ED15F04E03783E +:10BEB000019E037B05BCD3393E750F0A7865638A02 +:10BEC000360978230927BCFF1FE873A2F74B72A637 +:10BED000D3041C773430599A47FBF5B45EBF2B6707 +:10BEE0004DF21B037A35FA9F169C3F157A74F6348F +:10BEF0002E27B30715B3F8DCF1ED348B5FB307D50C +:10BF0000E3D8CEE2D79CC1A0595C30FE77161FE77C +:10BF10000C868FDBFB7F1117DB8567E75FDF528EB7 +:10BF20004F9FC027AAB23EAD28D7CFD3C2EE985DAF +:10BF3000CEE11938C7391F82B39DF361603697AFE0 +:10BF4000A771FC92DCBC08CEE172D627E8D7E71BCC +:10BF5000A59F3129FA3D3449FA3DE4A2DF4393A479 +:10BF6000DF437F1AFDB6223E20FF5B23A3F890FD3E +:10BF700074567CD2CA84708DE293067C0A6CF8A455 +:10BF80008313D261149F74F8B8BDFFC9E2B359C8D6 +:10BF9000C366C19FA83CB13CDCF329A73C4CF9B473 +:10BFA000531EEEF9747E7998F2192E0FFD4B39FD70 +:10BFB000AC7842340CE3CD1F7FBCBBE63AC70B9D87 +:10BFC000EB1CEFAE73F38F179AC7C7DB77FCF39EBA +:10BFD000C7D1FE5AECC998686F419B21D45DB24E1F +:10BFE00076F4A1AADE38DAF9FD15418AE71DAE5ACA +:10BFF0003405EDA3FEC6F9641F0DE27EA62DBE003A +:10C0000076F47FADF3E5F613C7E34B9FB0BBFA843C +:10C01000DDE57E6FD95D83751EB207DCEF7F2C4BAB +:10C02000220E9A2CE3713976A2DEC637373C169C75 +:10C03000EF17AE67C4B8837587D3CD09C676777F0F +:10C0400074835A85FB93CF0E61FDBBE64737B44836 +:10C05000FFE7E1FABAFC71075C5F611FFFBF02AE48 +:10C0600043DD29075C7799A909E1DA21F6FFC69338 +:10C070008F1759EA7FC8D0FFC652A7DCEAE88B6168 +:10C080007E102EBC3639099FC3EDDA4DF54EB9EA64 +:10C09000933DD49F55F6CB7CBE8416CADCFEB942D4 +:10C0A000C9D40A3857C07AFA982CE23DA2DFFB5C6B +:10C0B00075CBEF4437F4CC0CACE7F73BD55321A656 +:10C0C00083BF1F3E15A0723CFA0E36887868D5CC27 +:10C0D000BD88FAE09D09D2ABA1167D3EE6B559F1C7 +:10C0E000CD9E86FD06CECFA0C85F92354DC2791E8B +:10C0F00054793D94BD8AFCD1600B6BC0BC0C6B9C29 +:10C10000C23AADC920FA9971C46F747C417FC66090 +:10C110003C18BFEF22ADC16E67877C9C5E612FD754 +:10C120002B83D5E978918D5FFD776618DABD3DB533 +:10C1300077135C01175C01015710E1427BDB0D575F +:10C14000CDC470B9E965D1C1BDFF5771CA4BFBBB06 +:10C15000534F4954960BBA9721DDA11E3F554CE52C +:10C16000945385F4BCF4D454AA979C2AA37AECD4B3 +:10C170000CAA179FAAA232726A0E95E153E75019D2 +:10C180003A751E95C1530D54064E5D40E5A087C714 +:10C1900089D4538BA9BE6921E7637A29E7E328DFB5 +:10C1A000162E227E16B4B0C42CC0BF401E7A9EF25A +:10C1B0005E5AC18E9572F42A50797E5A91A0570129 +:10C1C000D2CBC68FC246A017F7EFE22B6CF1B12D90 +:10C1D00022DE6DF1710BF2D146E7161F8F3747BC97 +:10C1E0007C1DD954CDCAEC7CEC6952C8CE2C68E5D4 +:10C1F000766681CCE1F8A0E01A8F8F53DB3D4CB717 +:10C20000ADCF656B828EFA945491A35ED256CE74F4 +:10C210009BFE08C3BB25B07E1627AB9DCF17CC76FF +:10C220007C67C52D83F5F31DCFD59AF31DDF59F239 +:10C2300054847901C0CF28F2B00CFC7D8BBE188CE1 +:10C24000B5C5373F23E89AC38B7F1FC15FD1DE4E50 +:10C25000328A7380BFD9D905742B4D28FA80867431 +:10C26000BAA8F341F41FBFE367B8BF2EB196CE233F +:10C27000D07EABA126B1BEC1572DE41C646911A5C7 +:10C280007832867AC6FBEBB61AECE7E332A3F812F3 +:10C29000665E40FDC47AD0EDB86F8341DD3CFB3172 +:10C2A000A54C615955E82BC029B692D77378439DA8 +:10C2B000D3E175D45F7E7655341919DBCFA4FB5BCF +:10C2C0006EABDBF6EBDDF08EE917D4F1D4A2F7DE2E +:10C2D000FF165F24F646082A1F621F22FD3B0E1D33 +:10C2E000DC7C9A6CBB2AD42FA02774D42FE7E17E84 +:10C2F00016D72FD3845EAF14FAA502F50BE9A1A9D6 +:10C30000F4BC5CE89732D42FE7A11EAA12EBC11C43 +:10C310002A43A85FA054849C0551CF9C87FA85EBE3 +:10C32000192B7EC5E25CEE54D43BF0DE2FF40D6396 +:10C33000598ADB6E5BAC570FD8F54DC322D203117F +:10C34000A16F22AEF91C11F3B940AC1711F77C5E56 +:10C3500060CD67BDCC3E9FB7B9F4CC66D77AF19C6F +:10C36000980FA3EB45C3D13AF43BB75D5A4A793CE9 +:10C37000A3FAE6D299A46F2249AE6FC6832F26F4A2 +:10C38000CDF8F00D3BD68DCDD67A165F30A93C8E18 +:10C39000C18627491E1585EFB768F3D7C51F84B737 +:10C3A00005F3DFA83B0274FBB82FF5920FF0293894 +:10C3B000EF45DC9460BB6FFA653C45EBF5DD12E9B7 +:10C3C0007385EF9F6E9EFFEB047E07ED5FF5F17CBA +:10C3D0009AAB308E14616A3BCEE7CDD7B30CEEFF3B +:10C3E000E8DD4E7D37ED8EA043FF54DC56E4A89780 +:10C3F000AF2B77B44711477D47C10490DBF8754EEA +:10C40000BD174A38F55EA06EBE4BBFF17D08BF7EFA +:10C41000BE533FC627370FCAC43A1B17EB6C18E749 +:10C4200041714E7E4362BDB5BEB3D6478B1F8C1D96 +:10C43000A475AFBF8ACBAB37AC49D7D48FE54BCF10 +:10C44000DCDBC99EF0BBE4C22FE4421572EB77CB74 +:10C450004585251769C73AD4EF925BB79D3347E10D +:10C46000721B12EBE35D739FACC3F8487FAD4B6E5C +:10C47000C53E09FC47F9F5E3C117392B7CE3D861C8 +:10C480009396DB5E762D344D4B8CF641EF9ADB9B19 +:10C49000C57C4DA55AA67A68DE60F630C6A09AD54E +:10C4A00076DCA706B95CA894A0BF3890DD0BCF7BE3 +:10C4B0005785E979840D33DCF2B2F84F4B5C11CA31 +:10C4C00095534E438960DE7572B272B352D1096ED4 +:10C4D000B399DBB5E67CBEDF12D23206A50E3EA7CD +:10C4E00092DDD4FBB294C1FCBA4D651EAA9FB81A66 +:10C4F000166EAC570EC5911F6695A2E17A1AAF4928 +:10C5000049B81E96B0F6559DD0416F078FC7DF53CF +:10C5100075FBBC6B7058B9FD4397037DFDE1D44AB0 +:10C5200005C63D59C6D238FFA4F235291CFF0BAF12 +:10C530004A94C716ACE3FB6C61A0198EB7A98CEFC7 +:10C54000B385EA793C6F5319DF37837614CFB3EAAA +:10C55000167E508F876DF64DCFC29F917C0446E3C7 +:10C5600075FD0CF3DFAD385D40CEF2B85B82C7DD00 +:10C5700002EA411E97AB17713A3D4371B84D625FB5 +:10C58000C51B3618EABF70BDD680EB3DC615C9BEC7 +:10C59000AFD1F6A05C5EA470FBFC8B41E32685F472 +:10C5A0004E8546EB2073FA21FEF55E1DF31CAB644D +:10C5B0004EFF2D358CCE4B6C5CD24CFD9DD00122B4 +:10C5C0009DE4B70EE3E851164C605E6AFA0FD7EAB5 +:10C5D000B8B9164DBF93C5B833AB60098433002B8F +:10C5E00033AEBFD3A03C23F1F1907E7EA395F28EB3 +:10C5F0007D7AD0B15EFBD72B347EAF94CD223FBF86 +:10C60000184CF5225F2CFEB3709AA15F35137F871B +:10C61000716E59EAA17EEEF519FDD86E0BF87D48D2 +:10C62000B72DC77C0CE1DAA27B5A291F430FD1B882 +:10C63000B72C2DDA33608BA3F689F9FCDF3E63ABB0 +:10C64000F8FE1EE6F89EB5E6F32FD2E2BBB4A07F5B +:10C65000BA6975A613BEDB585947F9175AF39A9D64 +:10C66000ABB03EAD7E3E9277AF2209BF7088E087C7 +:10C6700079B647B1ED8FFB2B86693F772FAC13D886 +:10C68000EF57711E94905C1AB89EF8620986FBD32E +:10C690005B96CE8CE68B9F5BA5B2FE9142DC0AF3E3 +:10C6A00086B9BC62FC98F02971C69FB794F07832C5 +:10C6B000C6A7355BDDEA674BC988535E97FED7593D +:10C6C000E4B59DCB670597CF802BAEECD51324AF97 +:10C6D0005BC47EAE1BEE7D829E67974BBE0FDE97DE +:10C6E00000B9847E37EA454DB86F73A29ECB655181 +:10C6F0006B3BC59D838037FA55FEB444720A4F12D6 +:10C70000DCBE860E51DFD618243761219F95423E4C +:10C7100083F5F9E511E4F0DF70DE84C307298DCEDF +:10C7200017CB103FDE11FACAFD7C63A55847742E63 +:10C73000A7F1AB130F0ED8E4BF7425AFBFA3F0F37E +:10C74000671BAB58F3265AEF3C99CE2AAC6FA37DFA +:10C75000F513572B09F115934B411F89DFFB6B6FC5 +:10C760009F67CF57D8887ACD169F3959097ACC164A +:10C77000E7F4FFF156D2670CF419D2419AB67ED68F +:10C78000B0ED7B7FB8F91D9447B79EDB28F62D2CC2 +:10C790003DB751EC43587A6EA36B5F626355BB3370 +:10C7A0005FA0F2F60F44CF6D14F36C74DE57165190 +:10C7B000BEB535CE8B42BF457C46D08FF4443D801C +:10C7C000F0E13C467AA21EA8B7E901D7F7013FFF86 +:10C7D0007E58368A30EF6923EA01C7F7AC95DB054E +:10C7E0009C2E813A6D8FE0E7692FF85D5B18E77545 +:10C7F000A1E847FF515B345F5E4A6EBDF3E4E48C11 +:10C80000E43C28FCAA3354D79F9AF8FB8DB89F0CC0 +:10C81000EBD85D1D1A95FA759F88F2781333C029FD +:10C8200022FB0FE1717FB749C8899F7D92DA471AD1 +:10C83000870C942315DA1A64AFE8199C3791632AA0 +:10C84000BB03D6F75005CB06CEC5FE06DF41790AFD +:10C850002D18F5FFF8FAEEBD3A9ACA339FAD72FD76 +:10C86000CBFF59FC8CADFD857EA7FF7582BDCCB298 +:10C87000E8BCB1A1EC608CF28047F2F97B273BDE8B +:10C880002C7E06B7FE8FB54DE86FFAC1EEC4BC1919 +:10C890000B3F4F85C950CED5443B192DA3F8B8F0B6 +:10C8A000D88230609EB5F9F565D9FAB3F3AF5FD899 +:10C8B000115BC4BEFE78ED46FB655FE9C27EFDEC10 +:10C8C00025DAD73901128F7806C2195A57C1C6A284 +:10C8D0003C90682CC9ECF474C369E135DE7872D8F9 +:10C8E000E9FF9EADBD1273F1731CFDAB1F8C3FEFD2 +:10C8F00045B835A6A3DCCB72FB978763689ECAACAC +:10C900007301D51F1EC6796BFAB57D68B735C37B39 +:10C910002C1555EB4AE4F4538F9507E127A38CDDE2 +:10C92000132AA0F9BCFEE508E5719CF4A4D5BBE090 +:10C930009537BA9CFC27AFB7A11DF7B72F3C7DA157 +:10C940006AB7D377F8F97ABA31CCF30E36CAED2A42 +:10C95000C6A97466A8281FFD1ACFDB180F6FB5C2D1 +:10C96000E3A093120B4E4887EF6052368CD72DEC24 +:10C97000EFEE40A2CD9EAFF9157F80F0E9F7F338D6 +:10C98000F785A7A394BFD2A579C84EED0B6F53AB23 +:10C99000D02E7DCECB6A19C6974DB5E8CF005F8CFF +:10C9A0008D1C39837C0973BBC81F6936B3C817B0A7 +:10C9B000FF6B319EA4C9BFB69F8FD0597B12E5B1E2 +:10C9C000BB42F6D8F5E1074DBF513F20C5ED4619F2 +:10C9D000D6631CEF989A3A82FA5A6FFC88D10D7090 +:10C9E000FC16E77F09DA29299A07D67797965C47DC +:10C9F0007282782189A1243DFCDB0AF097A11F7F78 +:10CA0000CC63FAF3ECFFB10A8592F92D7CC785CB94 +:10CA1000A5379B4EF1787F30C1CFC7A1FF43F62DDC +:10CA2000527206A688EB122593B18494A420DE12DC +:10CA30008AEBC7021F74BF5753BF92B1959D09BDC2 +:10CA4000877EE5618A037EE0FD9E05DE00BB8FFAEE +:10CA500045EE9C29CEF5DB0FF31E9411EB82F58A8F +:10CA6000D1FA13207E82DD46F36363479C9E33F93F +:10CA70009B06DA03618C7FA27F1A063700DAFDA6D7 +:10CA8000491D6171EC8FEB2B6B3F2554C7E89C5619 +:10CA900028E1D47B6AC5E4F45A4FC9CCBCF928A379 +:10CAA000F203925A655BA7C76BF7E72EBB407F5630 +:10CAB000D9F657E570754EAE27C0CFDB98E2C46259 +:10CAC00049665F07640FDF37EE0A5FA322FEECF4CE +:10CAD000993368C7787917E017241BF3D1E502DC96 +:10CAE000B4B3F92D3EADF7F378EECA17BFCE70E4BC +:10CAF00057E3EF0BF1F93A6378127CF0CAA99DABCA +:10CB0000504F2DE07EE3D6D0A7D9F17A5C1F3E4D81 +:10CB10007E686F4969159D8FB4F26AD5309DCBB59B +:10CB2000E4F450C99571CCE7EB29BB328EEB7C8FD6 +:10CB30002F1947FD7CACE44903FBED3D1D6578AE44 +:10CB4000A5375E4DFE53EFE91953DAF3E017625C47 +:10CB50005F0411BE2A2E6FCC96C7D91BF7A808CF49 +:10CB60006FEBB9DED91AFAAE81FEAEA2CB746E4677 +:10CB700009C3B8307EEB828306FA7F4A2A9CF26BA7 +:10CB800063FBB1C6811F89FC626C63CD3BC9F13E7A +:10CB90002F1C63EB29A37A01F283915E75BFF7A97D +:10CBA000056608E6892FF75CC3716B7E3457D88D14 +:10CBB0000AC57124D00838AF72F29F71F09B699E4C +:10CBC0005CBFB6787DAF62F0739C33C53E866CD097 +:10CBD000B9E16EA968FE00D2BF7C209E4F9EE4782A +:10CBE000DF3B186F0980198BE70F03F18B291ED6E5 +:10CBF000CD587B711CF5C9E010CA5700ED4F6A276C +:10CC0000FFD22E4FFD2AD893B89F2AECC9AE70F5FB +:10CC100084FE31C67FD8AC09EC212591E2F97DED87 +:10CC20006D1E5AA7CE25F8E58AA3CF57C1F8BB548D +:10CC30006E77C871C54478DCEBA9143476A9400F2F +:10CC400025C8FB71F75F146C7E405D8887ED9219F3 +:10CC50006CD757B548AC73AE79119E5CBC4CBB3AEF +:10CC600021E6B751209572B9C59F607D02738D5939 +:10CC7000FC02AF2637723EA2FDE68B7B19ED2BD569 +:10CC800039CF65162C719E07F51A9F30302F546BE3 +:10CC900056477C71941BE7394DAFE087D7F5FCDB35 +:10CCA000AAD3BEEFEA788ABD569B831B1E19F9FCF6 +:10CCB000FFA381E643EAC27C7498DCB9A1BE78BACE +:10CCC0004F223F5F1D8902BEC826FC6E9BE0771A8B +:10CCD000D71FCADBE5EB4FB7586F7676E8546EEF97 +:10CCE000A8A3F7777724A8BEABA391EABD1D06D50C +:10CCF0003777B452795F4752AC531986EBDDB632C1 +:10CD0000FD5E3C3FC7CCCD2D3F824FB645F4171892 +:10CD100079EC03BC2ECE31BEA676B7E039C86D855E +:10CD2000FA551E00E1D1E2BFE9C67392DB6AF5173E +:10CD3000F0C8C8F4FEF5CF7463FBB9BCFD1FD47B0B +:10CD40005A30AF6E9B387FC0F49567A103D78B85AF +:10CD5000E2BE9C6D2556FC6172DF95E17740C76DA0 +:10CD600055EF6DBCA09C3138BE8FB53C17A7FC02B7 +:10CD700082FFBCC0FD043FA926F07F9604BEDC4DB7 +:10CD8000F8CFB5F20892EC0ADB7A342FC0CF556C9D +:10CD90006B786F703708B8A3C9610349FDB09A0A70 +:10CDA00007300ED096353134D3A73F4E7135A6C724 +:10CDB0002675DE643D3AC20B73ED7D150903D5DCA3 +:10CDC0001CD7F3E81283FA2D0FF07C8FFBDA9B550A +:10CDD0003E8F0D3A7F501D10F92660F0A25E947FC1 +:10CDE000E0253B471FA73DB63317E4DA8D0BA77646 +:10CDF000167B769278323949F21B5535075EA7FDCE +:10CE0000CE7A50DC8333597E5C2DE4EF25573F43C7 +:10CE10007E410F512F7AC4C31A616A17B7DAD6134D +:10CE200086F754041D764D2451E4A8FBB47247FBE9 +:10CE3000B294D30E2A49CE76BC9FD236DF519FBA28 +:10CE4000E67C477B7FBCD9518F367EC4D1BEB27D94 +:10CE500085A3FEA7D2FB1D17FE6FB8EA93ED47C16D +:10CE6000386831C641B99FDBAB5D43F1CE13C823AF +:10CE7000D4CBE906B297C056A67BB250C0D09E561E +:10CE8000341EEF0CC26445790BD439FD375F85330E +:10CE9000EE196F33B256BF186755300E4AF6BC41D3 +:10CEA000722387593640E7BCB89D8DEA16ED063FE0 +:10CEB000FB5A5F35FF2E61CF2B7197B2D8B7C76B86 +:10CEC0002070DD385B9CC23D4E7C6572C23890BBE1 +:10CED0003D0BCBFA1BB67933FE77327BC36637FD49 +:10CEE000BD90678BFE46CB2D6DE40F314F6200CABB +:10CEF000AE8ABB4DB43F376213981FBD58223FE343 +:10CF00007CDDBA1E9398D0BEADF01CF717209E575B +:10CF10006629261C9FDCBA1612EBD8A260723FEA83 +:10CF200035A59CDF9362B553146EC7B37A3E3F07B5 +:10CF30001B6ECFE23E9052AD35A07856C959F5B27E +:10CF4000081B334FFBF13C682DE69BF37364811A99 +:10CF5000EE6FAB7A9A4A7F8549CFADF796DCB17A0E +:10CF60002EA7BD8915747F9AA2669916C66D99433E +:10CF7000CCEB90BB145B19C9EDFF6CC7F83AD9A58F +:10CF800019B1AFEC8C178CCA57FDE4E6C11744DE2B +:10CF9000C0C92F65E51500DFF2EC0FE46A909FD75A +:10CFA00002DC3E3BF9259E0FF16CC72987FDF14657 +:10CFB000A094DE2F5F7E485E66B31397339E7FC6D4 +:10CFC0005856BE6CAE7D3C9147268F1C3983767FC8 +:10CFD0006262FDFCD1F8B5B4FF62D5FF39E1A5F876 +:10CFE000D43FCB30711660BD8AF26BC7E29571D821 +:10CFF000D91F8DAFA67E4EDE9995D18E7CB6439516 +:10D00000F0FC2EE289F1F3E5AD8764CC873B1BDCB5 +:10D01000CFB9E4F75ED1CFC93B93948FE7CB5E45A0 +:10D02000F178DF754983F69B1987D377AC98EE6D5D +:10D03000B9F0F46728EE66F567F5AF229EB63CC5F9 +:10D04000BE188FC3F5219E31ACEB93C253453C6DA6 +:10D05000E71C47E91CE3F1ABF1E8DCD5912A946BBE +:10D06000C77FEF2DE1E78CBCBE84962FCEE68643CA +:10D070000E437F763D6FC1119E188E6E84C3E69776 +:10D08000F784793E698F9CCC1BDF738FEBD35CE315 +:10D09000021DEA4AC97B237D7EB29A19AD40CFDEDC +:10D0A000698CE80980FD7658CDC53FFCEA5FB33B4B +:10D0B0006C79E14A05BC77F4D74EFADAAFF3F3C5E1 +:10D0C000CCFEDEE6BFA9B82E403B6FAC97DBF5B1D6 +:10D0D00020B5F7C69CE79047D7A16912E5957B4537 +:10D0E0003E07C3145FB473EA120F92DC0415C2F357 +:10D0F000FA40EAC220C99F61E2FE2898CEEDE87F9F +:10D10000F8589A74BF525E47FEDA78FE4E5FC70148 +:10D11000079F2DFA59E724D8E96B755ADF3C759FB4 +:10D12000C778D164FDA6AECA86E753E8AF96F0FB98 +:10D1300024C7C3A32DC8F7E7008FB620D97306C54F +:10D14000132C3C025A9298D1159939211EDD020FF9 +:10D1500037FFBB2D3C2609B75FAC0763E854D949BC +:10D16000F9F966A542F113371E7D553CDFB4BB3299 +:10D17000F120C62D6E1578597121C0EF56C46F7419 +:10D180003E6869B18FD9CB36E03C603C7F8455E482 +:10D19000D7CFAAFA75C73CEE0C72FB26304A57214E +:10D1A000870BB81C5E1F4C75A25CF86B7A87B06E5B +:10D1B000AD3763F22C2A9DFB8F9B2A9DFB8F56DD9A +:10D1C0008203F33F1CFB8F22CF42AD107938D9BFC9 +:10D1D000257DE7AF68A7FD4755CE66C96F14FB8F65 +:10D1E000AA7A90D6CFD1FDC70A679E05C3CBB46C8F +:10D1F000F8DF11F438E323AEFBDFCA5CFCDA552913 +:10D2000009FFC7C99F5D6B9DFC79782C7F1ECEC737 +:10D210009F5D6B85DC5D979F2F65EAD71C7C194F5E +:10D22000BE66B40E3D9F6242FF83FE29E2BFB36D2E +:10D23000E1BAC398027F17E378F83DC3C7302FE205 +:10D24000FBD1D43F21FFCA6259B2B18A5AF9BE77E5 +:10D250008F38377F91F7B48AF74F6C59521DBD064E +:10D26000CAE1A0E4A09355E23E1ACE8B2EF0CF5136 +:10D270008F9E7C65D684F19BDD1DAA43DFEEAEE177 +:10D28000E74477AFDB966C0612F4C46A28DFA2BFCE +:10D2900056E92E467FAA4EA7FCEA9F04F9BE8CAC45 +:10D2A000717B06E8F91384DF174B8BF80BA7F30C9F +:10D2B0002363A03D538D378B417FDA202682F11FF7 +:10D2C000D94697609DDE3983937C04F3A3801E2F9B +:10D2D000217FAAC16C96F3D063CB12BE5F714BD392 +:10D2E000CCBDF63CB14488CB0FABE7F72130391108 +:10D2F000CF67D75AFCBB1FE8554F7AC49010DED8D1 +:10D300006D3C5FF021F17C5730F92BC42B96CC4853 +:10D3100088E7BD62BF4A02492F2579E3F794DD7F94 +:10D320007B50C81BCF0F3A11F4B8E5ED4470E158BB +:10D330007953D249034DDA1F8753BF0FD2FC3EA861 +:10D34000E13E40E56D7CFE6EB4F2D34CF62CCA5142 +:10D35000B995F3C0F87C2ED6F5BDB89E4E0B717909 +:10D36000288CE99896C5F4E70E34E13D7A3DA9B0E2 +:10D37000817AB5B2645B5333DF271DC1F84265651E +:10D380009AEAAC491DD907EFCBAE4B1CC2F3CDD303 +:10D390000D95E85FD69A31504E7B3AF8BE6C11CBB2 +:10D3A0001A4A9E75DBA7F0F86C796CF57286795E87 +:10D3B000A5073A15E8A7A793D1BD4BC5CB4DD2EF32 +:10D3C000E58D7E0DF55D6515F3A808D7658CEE89B2 +:10D3D0009D7E077F5F0CEE9797D631AD93721AC191 +:10D3E0009FBEDCC6373596BA11FB3F144E4D0B2D50 +:10D3F00044BB9AEFEBFA62DCCE4EFB320CCF9506C3 +:10D40000979806C2D35F7B255B6593FB7921CE0F8E +:10D410005F1D3332F539F9DB463E27639B1BAB03B7 +:10D420009F0D63BB20D171065B29E4364979B04179 +:10D43000945B9DE4F25C1CBFBA2E6BA2CD5016CB60 +:10D440009848279897B4EF91F6B132FC2E5DABB4B3 +:10D45000D1796B93FD8C2D02FDEB61E2123FCE374B +:10D4600035663C8472F38B208FD3F80BCCECFD3106 +:10D47000F497FD9A9EC03CFADEECD3186F5CA626AA +:10D4800031DE181EEECCBE02743ADA16429F00EC72 +:10D490001C93F23A0AC02F3418E9775AB763CB19B4 +:10D4A000E51B14AD2B92701D057AB520BCC1C614C6 +:10D4B000F949D12559A2D76EB9FDDFEF84F6BB8FAC +:10D4C0007913A66E9B2F2C11B7FB8D15EB403FE413 +:10D4D000B157ACF6675B5F73FE2D8FEF5A7601CCC8 +:10D4E000AB2B43A43FF8BC9AEC7A6D9DFFF5C5F9D0 +:10D4F0007E8192BD94F2F4149D250244DF14D9DBA1 +:10D50000FE38D3BE5AC5CFFF529E718CED0DA15F80 +:10D510002C274C5A8FC4795C19DF2FA073EA0F7A3D +:10D52000AA789E1FB6EF29E3EB2486A9709DEC290B +:10D53000E3EBA2D9CCEAF03E9E9EB2A4339F4B12FD +:10D54000EBD0E9CBE397DBE8D7334E7ED61F435CC5 +:10D550007FF6609E12F43F58C6CF090E62FE25EE9C +:10D56000E3BD2C51FEE56065B20DE787F94A88EC12 +:10D57000AA43250AE137F872E441BF4DEF59799883 +:10D5800056DDCABBB4EAEEFCCB6A732DC5C906E30F +:10D59000D6BDA42B26CC3BC17B1930CFA0D7959FFD +:10D5A000D13BCE3993AF89F986FB46381FBCE124C5 +:10D5B000D90D0AD80DB4BF8C7C433E21DF18EE1B79 +:10D5C000DE4E7E8EAF826998D764E5D9011FF722BF +:10D5D000A97C7282DB11E2DCB42CDE5B7CB3F8BC8C +:10D5E000A984E7915A7CDB54E2CA1B2D71E68D6E4B +:10D5F00042BE91DDFBD3B85DDF6C5A7825BF3F5545 +:10D600009CCBFEE35DDFEAC1F86BB5F9398A13F50F +:10D61000941D26BA292C199D21211F5384A79B0EE6 +:10D6200003822F20EF4FA0BC2B71B18E083B35E851 +:10D6300011E799051DB70ABABD2AF4F9AB623D1B83 +:10D640004CEC25BE9F40BBB181B129984D09A095F6 +:10D65000EAC926BCBACC1F4E1DC6FE4FFEFCEFCA5F +:10D6600010EE10C6A36C7E4B4C8CC3D8502BEDFF34 +:10D67000FDEB0C0FAE1BC81FF4ABB60A79B4E05635 +:10D68000FAF83DCA16DF800F7ABEF9D653B29AFB7C +:10D69000B730DFD01E1C9D6F15A37C33C91E1479D3 +:10D6A0008CEEF966F1F9CFCDB7AA60F2F55009D743 +:10D6B00023C43F975CFEA5E2C7CC6FF5F03CA84FB2 +:10D6C000BDA778DFF8791B69CA3B287BD94FFA3AA6 +:10D6D00096D3D7E130DAA7D739E59725578A75432E +:10D6E000F71C03BC627757EFC917CFB1E26427A1DB +:10D6F000EF21D493722A88F930FBB75F13C479B451 +:10D700007FE7C4FAE75EA17FF608FDB31BF3F46C74 +:10D710007A68B7D0B3F7B9CE2FFE6D98CF9F656109 +:10D720003E9FF6ABC920F29D1DB9EA23788F76CDD6 +:10D73000735ED23F53B71E2C9C68FC8A759EF7958A +:10D74000A7B720EC3A277596EFADFCBCF74B97FBDB +:10D75000907FE54887A25EDC2FF266A3248FD5B7C1 +:10D76000F1FC93B2BED400E374C0CC13163DFD1897 +:10D770009DAFD93B083CA7F88851B00AEC24329100 +:10D780004176F7F7ADF04C83F695655EE6419F7202 +:10D790003BDFE754E11F8F7F649B18B7E3E93EC38B +:10D7A0001969E73E6899C87BAC74ED7396BDFC9F20 +:10D7B0002FA37D57E6BA9FF6FDD2FDDAB0733FFB8B +:10D7C0007F17DD77CB0703F6F560AAC492289F5335 +:10D7D0006F7CDD71EE667D98EB5DF885BD668BA78D +:10D7E000DF271D2C44FDBE671D8F7FC14F37E679B3 +:10D7F000F9EA86BF8E7CDBB9EAF6DFA07DD853F26A +:10D80000E68731CFB13B1CA27E76AFBB85D9FD3D0B +:10D81000F03BBAC336BF6C4FF70A6EFF9DBEF59062 +:10D820000FFAABBD8D25F83967F633BC4F5A177C1C +:10D830006ED9CE88CFD5712FA37C0BD3C9E7EAEB85 +:10D84000B89EAB1D6419949B196B4CBAD7A7663D63 +:10D85000D8A3F07DE57AD971EF70CDF631F7823734 +:10D86000A39C4C01BB15EF1BAD49B71FBA1F430169 +:10D87000C24F98E2BE97DB35FE7EF5E0A5B41E826E +:10D880007CA0DD54ABB74B591C3F156ECF60A8A4EC +:10D89000CD397E19A089FC70CBA37B9CF72B6FDF61 +:10D8A00070C9DB0976F5270E003D323D8FFC84728E +:10D8B000AD59C663F7472D799399F18FC82796E440 +:10D8C0007630938DAA7CFA7C544F272719DF629714 +:10D8D0004DB82E14279D795E85ADCE3CAF60C25900 +:10D8E0005798AD5E951B2722E2322CD5AEDBC7EBF5 +:10D8F0008B98CFA3BF393C78C3C531500A7D785788 +:10D90000E3F958BFA517D76509777E0095811A9965 +:10D91000F4D1C9733C6407862A950C2E56356CAF3A +:10D92000817E1D5BC0954A2DC61180EFE1388F23A3 +:10D930008413CEFCDE51FA88F6A08626F4FF8D957E +:10D940004D0CE37C41D457B4EF6E507CCEAFCB147A +:10D950008F84F9F35698C75B19FAC73EF08FF1B977 +:10D96000E5BF5BE39C8D0F936D679DC7EAC6F358D7 +:10D97000807FE134AD0AF3F518DECFA8DBEE2D9CF5 +:10D98000C6125D8CEEC5AAA278EDCB218D7C2B71E1 +:10D99000FEAABBC3757EA1909F5F783090F2476C62 +:10D9A0007108A9A8D5E117C4593BB72B59924A6D04 +:10D9B0000A6B7806C72FE671D0AE486F15EA97EE6E +:10D9C00012E73AFBB108D763F18897E7D184F87E74 +:10D9D0001253CD32FB3ECAEA085F87E1FDE7512EC4 +:10D9E000AEDEF4F747FBC066D2A2AC01F3360AB54F +:10D9F000072E6E053A6933C4F715E37C3F837D0338 +:10DA0000DBAF88A48FCAD87E3A97ABB6C8D7699DDA +:10DA1000D366F1F3846C81BEA71BE0DFF9A9523A0B +:10DA2000975FFCD7EBABF01E97D17E70AEC2FAF8D1 +:10DA300009FC0EC74BF1789D95B707FE7E7DA404C7 +:10DA4000E321D92CC6A1BC61775CAE3EFAAA4DFE9B +:10DA500016479C7139F4CB301E776A7806C5E164AD +:10DA6000CCAF8D8EE5BFA2FE358F2B6AC762A3F7C0 +:10DA70001C56239CA3F75FC47B63A8F7553A3F96D7 +:10DA800007CE26E4EB583885FF18E1717937BC1FC3 +:10DA90008938EDFE6E8C1BDAF607EE29E17EE4286C +:10DAA0001C8944BC77410E8EA4F53C6CF2FB3934E2 +:10DAB0002823B9F6E9655F92108E4783A92B103EA3 +:10DAC0005FAB41F05D1CE7FB23A3FDC69CFD8E3ED2 +:10DAD0008FF37E47EBADBCEE03F4314EA62D5B4ECB +:10DAE00079CE3D229E6EB4F1737BC10A7ECECE4DBF +:10DAF0006798CFAB919FEE38A53F6C7C3642F37CA4 +:10DB00001CBB58C4DFAE69140467FA87717D5C2BB7 +:10DB1000F2BF6EF9E6FD4771FDBA6531AC9609DCDE +:10DB2000E7FBF2515C9FBD78AF00E52BA68FBE02EC +:10DB3000F5EBDA428CEB996401E2FF16E3E7E9DEEC +:10DB400062CF169C678FB347F87E0FEBF3D17A65EF +:10DB5000C23F9487EBD33EC7FAF5D99DCEFA6AB699 +:10DB6000A214F5C3EAED3EFC1B0F6CAD6B7DFB9B75 +:10DB700008DF47F82C6BEFD56C727CE33FCE5590F5 +:10DB80006E6BCFD3AABCB6F3229B22DC7EFE25C8E7 +:10DB9000B16ED3273784330AEE6FBEF6C479575E71 +:10DBA000C0B09F4C6FF902BA1B9BF4849BEED7F672 +:10DBB00039E13C1B1E6EB82DFF613C38E4039291A5 +:10DBC000EF3EA3DD42BE73F7BE8A73141B64D6B565 +:10DBD00000F361BFF4309EBB586FFA353C1F7D32B5 +:10DBE000302D837F9FE21F22BAF8AEFD433C9FA8F1 +:10DBF0007D1E9603B14C12E5CECA4308A8ED04A3DE +:10DC000024F37568207E96F715F0DE3BC1FB9A89F8 +:10DC1000BFC7BCE2338B78CA1CDD4B21E275567C52 +:10DC2000A6CB97FC18AE1F5DFFEAA5F3965D85FCB9 +:10DC30001CA159C974BA6FAE2619453EFB9FF3C6A5 +:10DC40003C554294A1DE5BD64AF1C8EF467C62DFC8 +:10DC500098CF4F7FD834705FBCD7978A17029D95B5 +:10DC60002FF1FC88A6702A85DF79E36D3E8C437D19 +:10DC7000FF916B298FE386F8C532AE233F10FDBCC0 +:10DC8000F5D56F2C62005FEFA3119625BF2FA3A0DF +:10DC9000DF77C3135E8AC37EEEB1088D7FC3E39F37 +:10DCA000DDBF1CFA91FE71A9FE06CDCB2EFAFE86D1 +:10DCB000272FFF1753E083BE7357A7150F4F905FB1 +:10DCC0007CA39F7D06E3BD16FE16DF553D4D793AD8 +:10DCD000371C28A4FD8B517991A17D3D9D1FFFCC60 +:10DCE0008A3CFB226F0979FF7544A1FB97A5038746 +:10DCF0003E4DF01DFCB80FF1922ADAD92F60BC57C7 +:10DD0000057ED08EE203E65724BAC7E8D75FD9A3D1 +:10DD100060DEC40D07F628D7D0B900BECF6FC1A909 +:10DD20001ED86AE23C516BB46A8CDB2C7BECD102CE +:10DD30003C4FF5B9C7FED07B3E3CFF9C978D2C072E +:10DD4000FD70F301EF713C7F11D05DF6A8C84BBDAB +:10DD5000895410B4FF87FFB8F825F8EE97A08730F4 +:10DD600015EE9743BF50BE8D75B083510FDDFC9407 +:10DD7000735EDD7CE03505F1D13C6CA4E2028C23BE +:10DD80003BED6177FB13ECB482E7656F3ED84F7EC5 +:10DD9000DBCD4FBCF522CE8F9B5DF3F397F84BD9CB +:10DDA000587BB8B8C0E57F1D289E94DDFAB9474F6F +:10DDB0003C60021D7FFDF8AF1E30818EEBFEF8EE59 +:10DDC000037F87F1BFEF0634D42F377FF5170F7C21 +:10DDD00011F07CEB29BF07E5E2EDA71FDEBF0BEAE0 +:10DDE0006FBF306BBE04F5FA023EEFDFFEC6EF4BAD +:10DDF00075E8E7B6A72F9A827277DB3797D13D5641 +:10DE0000E38DFF7607BFB73E074F869F3F7C4A42B0 +:10DE10006781FE4007952E3EB0F48882F3ECBF2464 +:10DE20003682FECC4D07FFA0A0FC1D35D808D2E5F8 +:10DE3000C813AF1DFD22D4DF02BEF8F3F005F09E3B +:10DE4000EAA1F318D9A918DFBFE989CB3FB674015D +:10DE500096BE04767F331B217D3D869FCF013F1701 +:10DE6000E4F8392EFF1EE9A73C849B0F02FFCE1D6C +:10DE7000CBBFB7F097C563F9F75705EEF385EBBE57 +:10DE8000BC0B5F3E519CD79EB5FC991BBF79C584E6 +:10DE90007ED3DBAEF93A1E9DD708BF225E607CB20E +:10DEA00000E7E5E35FDBBF2B867CF627F0DED2B729 +:10DEB0001F3D310D2FFD79D337F269A4C3C8D37E3E +:10DEC0000DEFEFBFE1E97FA375E1ED6FFE44D1F9FE +:10DED00039CE0209F4E6DB6CF4E759DC97B949EC7A +:10DEE000A7DDF8D0FFBCF845F8FE46DC1FD3887FDD +:10DEF000543F6AF0733237652E6BD531DF235342BE +:10DF000078DF94E1F3E1A6CCA1959867EFA6FBB684 +:10DF1000026BFF2FC757FCFB48373D71FC6294BF73 +:10DF2000F1F869E1AF21FE1F82F70F39E7EB58B92D +:10DF3000195150FF5BFC7D7BCF49E525689FFDB6FD +:10DF4000A279C01E7EDB37A2D0BAFC0DAFB62F314E +:10DF500096EFE8DFAEA2FDB00D79F793DDF2B0C920 +:10DF6000250F163DCE369FCF8EC77BA3D39D05BA16 +:10DF7000435E2C7A759629E43F7A0B14BAF7BAD728 +:10DF8000A7FF1BE6018FFCC0C7F6C2275D058B28E3 +:10DF90005FC10D27FA4BBA6DFF440E2729EF538E50 +:10DFA0006974FFC0D83C238FEB9E2B7E7E53316576 +:10DFB00086E71BDCE735DD76C617BCC60BA92AF25F +:10DFC000C79E2AC0B8BDA7FDA9618C1747570FDFB0 +:10DFD00009BD6D1776D9F688737FE54801F72FAC38 +:10DFE000723BFAD338CE15E2EF7DC949C99E9F48EE +:10DFF0002208FECDD1CD5FB8C4ACE7EF515EDCCFD7 +:10E00000ADF1648DEF77FA13FCDE0BF0338671DE31 +:10E01000748B49F3AF42AEBF1F4DFE18E12EAB002B +:10E02000375DE77E45BEBF43689503221FA1AF233E +:10E0300045E530CE25CC57D1B2740F05F82F2F62AD +:10E040007F305E06E725FA08A857DF7BFF1AE379E1 +:10E05000413C3F665730F53AF6EBAFE3FEAFBF8287 +:10E06000C7AFBD22CFD3B27F47F592A0AB555A714F +:10E070006EB5BAAF0EEF6F4937C5395D5892FCD215 +:10E08000DF8875C6BA9F7087C4283E614A2AE78731 +:10E09000C174AD94C7DD111FAF6A90D3E6C33C765F +:10E0A000BAEFCBA43280F245E798B264D71546F9AF +:10E0B0003D64D6F940CC9342B98E269884EBCBF6DA +:10E0C0004882EE5D3057316D5F43EE7DEF52711F38 +:10E0D000591DAFC7931AC3F6A16891B51F4BF9CD6F +:10E0E00053529A86EDFCE1A43FBA30E7EF2F602946 +:10E0F000928F5235CCF3DBDA9CE77146E5B2D0491A +:10E10000372D2AF20FA25C3E3017A7BCC8717E9152 +:10E11000D9CF2F5A718E1E71EF4CE1346D159EE7E9 +:10E120001D37CE51DD3E2F8176A1886F5879098544 +:10E130002D7CFFFFA4F053613ECD88DAFC59A9B4D1 +:10E14000CD15DFB0EEAF318FE3FCD3E6B177288E8B +:10E150006DEEBA04CF9768B3D837B0DE25EFBC8434 +:10E16000E210E7F1793267CB6E9A27DA87445CA236 +:10E17000D11997582CF06E00DF9EDF6FC6FDD46575 +:10E1800051EEB7CA5A3BF9C10D51EBEF99703F7987 +:10E19000B4DEC2DB8FD6EBF9FBF7E1E72E8BE6F7B7 +:10E1A000735BA213F8B95AC443F7BF8FD5E3833C1E +:10E1B000CF4FDC2BD515F694618A94B6A3B481DFDA +:10E1C000CFD2780C53EE336B63627EF0F544660277 +:10E1D0001F11F7B4C6092E5DF102C2BF13AC56DCA5 +:10E1E0003FDB21A5EEC5BA2905E8BCFBDD92D06B6B +:10E1F0009F9A29F49A199889FE5AA49AF2E077A274 +:10E200007783EF93FCEF196CA9BB8DF4EF4E733B52 +:10E21000D105F42FE95B73835FC3FBFFB6A76EA143 +:10E22000F7A6AC6A786E7BEC39F9CC0F701FF77BE0 +:10E23000D169045FF7926DFDCD30EC9604CF870A6B +:10E240009ED3A2DAF349F647F9BCB7DEBBE9F57411 +:10E2500034C2F15C9C9F9ED6F7D6FBE03932CDE705 +:10E26000EED4B38F621C6FCB92C31AFE7D809ED812 +:10E27000334B903D5DD81FD0B1BB4ECEA25F60182E +:10E280007B48BFB9F90B7CDF80FC951B3DE43F5810 +:10E29000F959DDCC0CA01C5D124DF5A25C6C670930 +:10E2A000B5AA0AEF555E5447796F025F8671799B74 +:10E2B000FEDD21196C26E999B08679424C35084E6D +:10E2C000E07111EA95513E9D337ADF22E997823A57 +:10E2D000FEFE1E29C16AEDDF1B86AE2DCAE9433C56 +:10E2E000A8692C4239173FB35324EF39BD7890EA1F +:10E2F000613644E5D7502F96E079E94CEB4CE86461 +:10E30000D79AC3A4470AAE607BEC79602596FE5A83 +:10E31000E9D45FE3E9A39DAAD18FE35D124D7E05A9 +:10E32000E9D7A5CD7FF37A806F6394C74B2CFAA809 +:10E3300028CF305E09DE975388785CDD89F701C409 +:10E34000ACF8B16B3CC40FF19D2AD0B3F6ED91BE91 +:10E35000B8FF52B686EFC355B021D24BD3D808953B +:10E360003A5A4A33500F272599E07E99E6ABC7F415 +:10E370004867E6E4E07E58E88B9D0CE09F415E3301 +:10E38000D1DF4C79043F1801B733B9819F0B8FEA75 +:10E390007C1E3371FF8A6A04DA6CF3D2F26BAC4FE5 +:10E3A000FDAC90F6814E8838D745988083FEEB7A95 +:10E3B000FEF7C3F4BAD8063C270B4268D03941981F +:10E3C000F818279FD6A48E9814E7D2E8FB72FC3E7B +:10E3D00081F7F039F71BC2D739EBE5627F709A6B92 +:10E3E0009FA15CEC0F96335B7B61BFA2FC5AE744B4 +:10E3F000CE66BFFE22FAA7EDC3BE15307E85F3665A +:10E40000B2E74C261B6772C797BA9A1A9E8F019D76 +:10E410004ABE75FA92D6C5788EFB20A675B34357CF +:10E42000F4BE8074DFC53C09BABFD665579C5A5B01 +:10E43000C4E8EF91B617245044FF17EDE8A52A0071 +:10E44000800000001F8B080000000000000BE57C2E +:10E450007B7C15D5BDEF6F66F633CFD949D87910DF +:10E46000C224E11120E82609C8AB75481053A4BAAC +:10E4700001AD685BDDBC24421EDBF8A2ADF738219C +:10E48000112970BDF1D1965AF06C38BCACE0DD407A +:10E49000C0D406EEE65104C41AA8A278B48D5A1569 +:10E4A0002B909816B13DF6707EBFDF9A217BEF244A +:10E4B000426FEFF9EB860F9FC99A35B3D6FAFDD6B6 +:10E4C000F7F75CBF09800AFA388044C01F0DFFAB24 +:10E4D0007A83E405B059ED123F40218003EE0350EA +:10E4E000005C10E27612B4F33505BAF8EAAEF681B4 +:10E4F00024031C585AEEE948A2F156AB1F8F02C004 +:10E500005B70299D0633000600DCA060671940F7A8 +:10E51000031072E6D33CA352A99DF5800D42124030 +:10E5200076C09F1AA1790DFD6416AE2B1FC48F47CC +:10E53000C7678BC4EF97F07F7AA50B6CAE9EF60091 +:10E54000BF1AD34642E4BC0C1C374B81952A40E6E7 +:10E550009CAC98F7A1C9F641471191A8C1A50280CA +:10E560004120DADC8F93DAC1D8BF0ED73570BC53A7 +:10E570008DE0FBD90B0C2982E3E50692828A0FEF2E +:10E5800007F1F9A8F9B2E2DE5FFAEEA7E987A2E6A1 +:10E59000BB564DCE207E20BBD54B0AF3C117213E82 +:10E5A000BCA1F89C78DBD6E164BEE4205F880FDD77 +:10E5B000F422B607CD859091DF9B1F171F3D937EF8 +:10E5C000C84EEB041FAD2B0FC789E07D67562C9F0B +:10E5D000DC5A2C9F128B62F994EC8BE54B7E47033F +:10E5E000D37D18E986F100A9E3B558BE9A7C2BC209 +:10E5F0007F7DF12DB72ADC40F4F4E6CFEACF956BAE +:10E60000AECCA75BE3F8A42485EE00A46F20C83E3F +:10E6100005D7A5D8043E6C6AC769BA9F4BF733F893 +:10E6200075BF0B719B6DE156074DC5B664B62FF3F0 +:10E630002BA3B9E11E7C7E5030C547FBA8170F32D3 +:10E6400016114EB04D38819200E3D94978C5F9DDF5 +:10E65000847785F01CE1FBC9D0C1ED5440BC171292 +:10E660007E430D62123FF847D373EF9AB8FF102E26 +:10E67000111D26EEB1DFE8C860B90A3E8BF3DA5D02 +:10E680003322019A578120EDD94277E041752CADB4 +:10E690000F6C83904E77118414E48F5345F92B88C7 +:10E6A0001E475C251BAE07DF57D68AE76CE5C165C0 +:10E6B00084035C4A90E9586B3B7B99FFF47E81CEE2 +:10E6C000EB47B8BC4DEFD9916F2B996F6A2480F35B +:10E6D000394CFAAF966E27AC553F4EEC2DDF0091CA +:10E6E000860E921BA293D601FA29C2ED50731F72B7 +:10E6F00097FA855C0E54C089F8CA0D86196F79881F +:10E7000037859E7F46E0C685FF68DD794BC32C7751 +:10E71000F92477D8AF35C5E2AA70456C1B947767AA +:10E72000127D171E9181F832300E6F055AFBFEE103 +:10E7300065C40E5797A1D2FBE05B1085BF418114E1 +:10E74000DF825280E7E9C684DEF8DC6AE1F33AB89A +:10E750008EF079FFCC5B198FFFFAC8064F0055DBAE +:10E7600025FAB9BEE7BAEDD12CDF02C4DDBA475DA8 +:10E770007C4D0E437922CE9FDF22C6CC9FE37FD60D +:10E7800049F4415250F2F5E074C3A3B82E64DA2F75 +:10E790001E55F93D1B045A091FA11F1C2B2772BDD2 +:10E7A00065A17217CE7B50D67F45F761631A837FD0 +:10E7B000F4D25C5E7FF1D23CBE5AEBB0F667D0DF9C +:10E7C000DF9A7923CE37B859F62DC3BB83BF74EADD +:10E7D000E16280674D7AF39B3AA479D87E5595F82B +:10E7E000F995AAFE1B1EBF4A8CDF1FBFE2E7794ED8 +:10E7F000823961E4C7BA074EF27C4D6AC61885E8D3 +:10E80000B5E9093393017EAF2272705CC75245FBB4 +:10E81000637ACFFBCB9B67A5A27101874B9755BC51 +:10E820000E699E22BBCB5881F836F1AC01B8359900 +:10E8300070274304D7B100AFB4AF0FAB81F7789D19 +:10E840006A0244A270EF58EAE0F1073D38352180B2 +:10E85000746D747548848F4112048D3188BFEA58F5 +:10E860007A0AAA7D32E92F6B3D167D2BD5C019158A +:10E87000E9CA7325719BF844FBAD4452590E07AFAA +:10E8800081D04A64D9C04780F5FA903748BB109FC1 +:10E89000C3921BF7699A3223A1A398E5E1E6B95127 +:10E8A0007A7C6300ED143E3F2C5B01C2A3A55F514F +:10E8B000FD09B9055D26BD92FB48148EF1FF10538A +:10E8C0009F0E8328FCE3A043DEFDF45D34CAD81F0D +:10E8D0008BFBF87DCBAD465C45C98D45A7455F3CBC +:10E8E000EE9D1EC43D390999907D09E5FF024CCE8D +:10E8F000BC41EBC1451E2AB6F1693D7CB370DC8397 +:10E900008B10EFB735FE9848ECFCD638F1F2138F38 +:10E910002BC966E8ACBFB2405548EFFA8C3B24D215 +:10E920006332EA33C289AE6BEAB81EBD2F050EFF13 +:10E9300055423E392A0D4943FE67CD081812F91B8E +:10E9400095E0D3B05F5F916FD0780943DABFB11221 +:10E95000DB5901DF7E1BB69D19EDDF50B03DCC9336 +:10E96000C4F32E74EBC33CB8FE74D27F0AC9A3E58E +:10E970001705F9EA8266BE2640180CA5C73FDAA73C +:10E9800006AEA5F72C3F293F02B243A2FE20EFEBD3 +:10E9900070579241FB18AFAF13E3F56B521ACBE7F8 +:10E9A00095F8E3B40522F3B4DE7CC0656BFEE49E0B +:10E9B000E71F1F04ADD2B5D89F8BFC492139C50D87 +:10E9C0009C48C36CAAD48700ACBA6D47D600D6DF8A +:10E9D0001051514FAFFA96C4FD8B9FDCBBC24096DD +:10E9E000AC9A29DA759ED61506F275D51DD8CE01DA +:10E9F000F891D99F0F2399AF8F69E023BE5E1C5019 +:10EA0000EF027CEEF1DC59A97DE949EBDAF8284EFA +:10EA100038BCE739C5A696B39DCB954386D4FB7920 +:10EA20005B92D003168E568D9EA60FCF6053D545B0 +:10EA30001268E917DB03B6F79D48E7721C97D6E129 +:10EA4000700541C5ABB3F9BE08E3274EBFB84CFD16 +:10EA5000329FF48BC4FAE55E0FF25789D62FD0A30C +:10EA60005F2A3CC0FC1F5DA6B23E70FA90E3A85F2F +:10EA7000821E8D71EFD4DA65C29FA59F83E6F32EC7 +:10EA80009B1F7C48A7BD32081A5E9D33FC3AADC778 +:10EA900049F8C447D26768CC47FB10603CEA2BD6E4 +:10EAA000C3F7717D3FE8C1E50F085F8F78549E077B +:10EAB000375AA27DC61980AEFB54FFBFD0BAF3B35C +:10EAC000E0006101DF02C2FFF024A1AFF0B965A44C +:10EAD000AF6CFDF90DF4338EFD4C565A7DE1BDAFA0 +:10EAE00078A0177ED58CAB92EF271CBAE7067CB4D2 +:10EAF000F1B776DF06A4D7280FFE2BF913C6321B19 +:10EB000034E2F56789FFB285FCA8A5865325BB7959 +:10EB1000D19D17227D67D94BCBCE5A76D3B2BF0792 +:10EB20003CF9A67F12BC8EE40EA0FD5B64972E9686 +:10EB3000C8692BA1671DAB174025D9C37CC82927FD +:10EB4000FFFBF1A2799B57E2AB1707CD4B7020F387 +:10EB5000F67B141E67F39AABC3B1F59C62F381DABE +:10EB6000C7F3F1F8B53D201BCE6BFAC06DD13C83E5 +:10EB7000D67361ADD887E1CDF71DE8CB2E5AE3CA35 +:10EB8000BDF1BBDFF335F6D1EBD10F104E9E28F16E +:10EB900055F9FB58E7E93461AFD73DF08C9B70FC29 +:10EBA00073E253520F9F5606904F38CFC511F5CCE4 +:10EBB000A78F4D3E6D597B757CB29EFBA7F9143033 +:10EBC000F9E4137C4A6ADE0FCA3FC6A78FBF8E4F97 +:10EBD0002BFD1B5614206E8C80EC1B8AF87CC62FF4 +:10EBE00047AEC7F6CFABE46DE46FAEF497BB876278 +:10EBF0007BB3EF409B84FDB6F46481173572849E2D +:10EC00003386C8DA26923BB5B992D6B939B70456DD +:10EC100046E9B5CDB972652889F4DFBC84F9517C29 +:10EC2000D8BCE64056341F37937F55DC9B4F2FA44A +:10EC300049BC4FCF2E90590FB9031092F1D654D43E +:10EC4000E9D4CECE107177B62EDAA40734EC3F3477 +:10EC500066F914B27B8F2F4013AF91BFB22D928F04 +:10EC6000EB5B837AD4C99E8CF05BAC3CC19A408844 +:10EC7000FBED53D08FC6FEC48E319175193D716383 +:10EC80004271BC5F3E19C88FBF60FAF1D96B63FB5C +:10EC9000ED71FE8AAAFB221417A49A71817285B8BD +:10ECA000D133B503C8BFCB4DBBECA70C263FA5F1B4 +:10ECB000D156F890820FE57B025F4848B80F7C5927 +:10ECC000FECAB5E932EFD7B3FE65928ECFAD9EDBBB +:10ECD0002C91BDC8FE4A613F19A039EBCED13DEF62 +:10ECE0004D4C4B607EAFB68BFDF045D48AA40C5AD8 +:10ECF000B73A86F4B5F5DC78735F56BBC57365ED3E +:10ED0000FE8AE4AF7B2E59F8CFE33B9A2B52FA7878 +:10ED10002EC75C27CECBFED0EAA18E5003F265B59C +:10ED200024F4A7F19ADDC4BBD8E7CD0BD5F584B3A5 +:10ED30009D470A5615130E025A098DB7530BC80585 +:10ED400049FDEB4F2D5DC401C32A7D3A1B8FCBE3F8 +:10ED500045B609FB11C9FA1EF26354BAB0473B131A +:10ED6000507F309F023933A3F8B429EDF27A99FE2F +:10ED70003D6FCF4B94290ECCD5D2282E48CB0D8297 +:10ED80005CDC33DFCE5C733E9BB66A34D1B7309225 +:10ED9000BC328A7E6BBE3D097DEBAB2DA6BEB2F8C0 +:10EDA000FDF2990D31F3392B63E7732EC0F968DD5D +:10EDB000AEE6866BCAFA9FEFE57EE67BDEA2CFDC8D +:10EDC000B77D5F7E9028939F5984F3E13809345FC3 +:10EDD00052EFF9B2BF7C4A4A8E92E391340FAE7B78 +:10EDE0009FC5475B20675694BE7A384DBCBFC5BFF0 +:10EDF000C1351FC7FDF1D0E56EC2FD6629E41A4694 +:10EE000076728C0C9BF0FEEAB5DD11CA8B6CD18159 +:10EE1000A5D733DE984279847F4F4BE3F1B7AC2D11 +:10EE2000E7F7245B73838DF22A28E8B44EB48F6F22 +:10EE3000935ECAB3F203717E64F60C353217EFA706 +:10EE400007535051237D6B82C74650BE62A9EC63C5 +:10EE50003F3322816D5C4F1EC60506E76F869BE33C +:10EE600065071EE23CC55A05820AEA893EFC0D1F71 +:10EE7000F91B03E9376A97E89C6FB0A3DE8ECE3F9B +:10EE8000F6CE4B44A6D07530A97485BA7499FA872A +:10EE90009AF9997C5D2BB7E17A86AD09B03F99F676 +:10EEA00000707E405183FCBE849243FE5262E13A80 +:10EEB000CFE5BCE5246415F92EC8EF9BD354E13FA0 +:10EEC000E07E90FFF0BDB8F6E2B8B68EECA6FD404D +:10EED000EDD0457ED5427760471AF25D76E93ADD9E +:10EEE00077EB2EF64FEDE84F49F9A46F64CEF7FDAE +:10EEF000FFA6AF4FA699F914535F5B7ADAD2DBFD18 +:10EF0000E96992618A3FAE7DDAF32D8A3F267AF471 +:10EF10007788BF87C9AF1ECB71D71FA89D3D0374EB +:10EF20003BE1BB098143FB9D04725FB8471C735EE4 +:10EF3000CC8D38853EE2481720EEC96FB6F2847159 +:10EF4000385F6317F93703054899C87642BA87E4F2 +:10EF5000C87AFE0A384798690AC59594EF53C8CF16 +:10EF600036BED6BFCEB5754974C5F08AF13E04FCF5 +:10EF70008CF71C972A13CE0BA66A0D94771866138C +:10EF8000FEFE20C48DC1C4A840FEBE1371467EEDB6 +:10EF900033FE0F580FF4877BC4AB51C07C11F114C2 +:10EFA000E238319DE30C1DC8CFB1238E893EBD6987 +:10EFB0000A50DC92908BF11E44FB417258D2AEECA9 +:10EFC000FFAC297ACA4DFE14FA3FEC4F195572680E +:10EFD00068FE55F9411C77BEF0D4DF39EE5CED11C7 +:10EFE000F6D0407BB8299FECB3C6744CEE6AAF48AC +:10EFF0008DB2A3ABED912C5F313D1F99338FF4E6B9 +:10F000003AA137B7F8E3F566C8351FAF3F48F3F0CC +:10F01000386B864C3B3A82F49CCD607D61CD6F3C71 +:10F0200055F363C2212445B248FE57CFAC4F20FBB5 +:10F0300065E9D9F8E70EBB751FF1F1783F7EDCB8C2 +:10F04000F4F2B2749CAF300DFACEFB4EB5F2BE6A4C +:10F05000434CDE776A1CCE34E07C17A459F1DE3FC6 +:10F060009FFFA56B7FF9DFCEBD6F0D3290FEF716C7 +:10F07000FE39195F823FD8BA9289CF671EF95D3297 +:10F08000F953EF3DA25486B07D17AD6502C0DD8F08 +:10F09000FE7D1CE51BBF6BDAC597D2F5D944372C32 +:10F0A0001DC0C2756F48A1C386CB7A63C9D644120E +:10F0B000C6CBED9A707A4CDB5A478D1382648797E2 +:10F0C0006CDBEF188874DEBBD5C3F9C73374B08529 +:10F0D000F49E6919B49ECE559E4E177EC24BE9FE32 +:10F0E000F9B41FB41EC2D71FDA9C1061FBDB6E1788 +:10F0F0007E8F7EB3348EA207F113BFAEC3FB063AF8 +:10F10000C8DE2F9450FF7AF8F6F23D38EF4774FED0 +:10F11000E4EBBDEE85EFA90EF247164E812ECA43F1 +:10F120002ED9262D7F18DF9F679E2FC5D335D7B0E8 +:10F13000C7E8DFF9E1FB1CCC7CA5785A26E9E91584 +:10F1400012EBB1F92B629F43581CFE358EBB00C7F2 +:10F15000653BD41CDBDF7DE4FEE57BB07F67AB83E2 +:10F16000F5F6A2B87C62BCDE5E916EFAD7E3E03AB7 +:10F1700091072CFE5FC55AFFF19DA5AFCF609C871C +:10F18000A0813F3DEAE2EBD947196C303B5D63FE5D +:10F190002F69DD7F9875A1AD7D1CC9CFCE231F26B9 +:10F1A000DE895DF55922BEFBE6FA3F37EEC1EE522D +:10F1B000F0A746F8DC306227F9BB1E5C5A12AEEFAE +:10F1C00009337E2BFD12DBD1F435EFFFCDAF395E75 +:10F1D0004B0A6E42BED623E09796F4ACAF3E4BC4CA +:10F1E00075DF03DB5FBE8EEE2DE9B179FF7F96EE12 +:10F1F000FEDEAB41BFA82F7D60C9C76C13AF8D7B0E +:10F200007F362D07E93AFFA4E473E23A166F7DFFDB +:10F210002E92EB85AD687F4572F914787BF08A6495 +:10F2200033DE16913F82F80C54FD88717118F94253 +:10F23000F63FD03688FBB32A10BF28978BAA3E7BB7 +:10F2400087F22AC8B92C398BAE912C797C1F388C67 +:10F25000C35B3CBECEDB3BF248FEE37175BE1FBD17 +:10F26000F7EBF402A67381A64FA3FCDC42F02F5704 +:10F2700085FCBDF5DF41CF8196FB4125FC1FB185A3 +:10F280009CC8E292A3226E2E79CDC1FEC22E7BFBDA +:10F2900079B6274785DDA27E8AEF4A7E931462E71E +:10F2A000E02B83F5C998FF50D99E9E4B336EA6F68E +:10F2B0004ED40F1B58DF2A9C8F18F37A91E85F5ABF +:10F2C0005A48A930E3CB241FD9A7EBA7FEF1BBC74F +:10F2D00079DC0706939DBDFEAF0912E5B5AFC467A3 +:10F2E0003D54AA4C2CA3536EE84A457A4A421F5615 +:10F2F0004C627FDD554FEDF87D280D29B6E8E7C952 +:10F30000DDA076A95ED445FA297E7F7478F2F08F6D +:10F3100088CE8DF9EC6B7DF3AB58FFAFE4789CBFE2 +:10F3200068E9DD97B6EF21FDBFF8DF9F4A01BC7E9B +:10F330006A6BF6D2FE6FDFF8588A4E76C066A4D0AC +:10F340007E7E1A1276207EFFA76648A6BDD353A8FC +:10F350000EA196974A8AA76BF90F713D5FA07EA513 +:10F36000F5D61EFA1BB70FA3FF0159346EC7B41FA1 +:10F37000213DF7CE4D0A36607F5D6B2CFD8BB7FCCF +:10F38000C4AB715ED41868EEFF407AAF76A39DCF10 +:10F39000CF6BDF5038DF5A075D8CB7F8F7EBC21F31 +:10F3A0003A0807C4BFDC49BDFB11860ED25B75E687 +:10F3B000B94CDDA13F31DEEAE2FCE02AD3EEC5EB39 +:10F3C00097D28C58FD82FCE1732403D7C567A7212F +:10F3D000610F1B9F771A2E5CC7A7EF64AEA7B8E03A +:10F3E000ECC65753A4E21E7D03B08CF5C3D97061FF +:10F3F0006AA00FFE5AD7F3A65EB2DAD6F98CD62AE7 +:10F40000912F0ED026AEDBD15EBA701DD5A79DEC34 +:10F410003F569FE866B942EC770DF5501C7FC03B24 +:10F420001AFB97ECB067CC10E4A4909DB4F66DF194 +:10F43000AE8FA66DA3F7D10EBA69DF5A2EB29DB476 +:10F44000E472C90E2991F211D521BB8FCE33E3F9B5 +:10F450005A11DEEFE848EA63DFC2EF4FA3F8B9F1D3 +:10F46000F98BBC2F9FEE932033BFF7FB559B3E7368 +:10F4700090FC9DC50D523DB48FCA5C476A5FFB1777 +:10F48000B9F9E532EE5729EEBFD23EA6130F04DEDE +:10F490005F7C197FAF7AC7E923FAAB5EBC9F71FF2F +:10F4A000892DC8B8AF5EF79897FC9E2ABBE155F945 +:10F4B0002AEE573DF720E371D18907BD20CE05B371 +:10F4C000491F219DD944DFC2B5B7317DF74080F196 +:10F4D00058B54EF1535EF0820D2A77F4B1AFADA668 +:10F4E000DC38E1BE6B482E2EE048741EF6890358C6 +:10F4F0009F19279510E92F276CF83DC50317DA07E8 +:10F5000048A48F94137617F1E781BD1EC6D3FFCCB4 +:10F5100010798C8A1317A6FD90EEE7DB8218211272 +:10F52000FD86C92FE912EB35D028FEA9A3DF0A68B2 +:10F53000DC6EC7F7F1F9BFE07DAA6F887A9EF9F516 +:10F54000C90667029D377DE2852A9147839314FFA0 +:10F55000D48AB110177F5D4EF31D06AD9BE8FFC442 +:10F56000A4A76EEB27D39E25B99B97144C45FEFCB0 +:10F57000E58D0F1D392417B8CEA1B4AEF68FB80DA6 +:10F58000BE011AE9358B1F75ADCE98739ABA8D1FDF +:10F59000C5C96F6C3FFA49CCB73A48D5C82FFEC4ED +:10F5A000D1358DEC8981F36EC279EE79C619937FDE +:10F5B000AE6BF9F41D207C60A41689C285257F56A8 +:10F5C0001CBBC894F7F8FD8A97FF5D19A65F65CA52 +:10F5D0003FAC1D7055E725D5F6D066E20FCAA7CF20 +:10F5E00040DC566FBF10239F9F6D3B78EA4EA4E32B +:10F5F000B3B0259FB17AB56AE747D37E41F1443F66 +:10F60000F2F95912DE1CDD875CE2FD3EE532499CD1 +:10F610007FFF3FD3A72DAB3E5752A2F91D2B878BFF +:10F62000FAD1A7EF65F4F2D752711AF8D32F970CDD +:10F6300026BD18CF5F4B7FC6EBC51F66687DEA45C8 +:10F6400030FDABCB7AEE8573D37E81747F91AD00B4 +:10F65000F9D1B51BFFCAF609D9DA45752EB5A1CF88 +:10F66000B9FD18D92B6EEFBF95CEA57BD31DCBCF9F +:10F67000F8FEF5A6DE41FEDC457C56E41471EE8D05 +:10F68000713DE5831AC93E8EA135A940FB08E510FE +:10F6900026FF486A7B85CFC1E3E336A31C8A8294A8 +:10F6A0006F71F49CB36DCAE073373E67339639D5FA +:10F6B000C60C3E77E3FEA536974AF9A53903F2ADAD +:10F6C000F3C608EDE3C307A164A5C017E7012E1E2A +:10F6D000C6B646F54C9A126D877C1572B0AFFCBB6E +:10F6E0007780D03B4F126D38EEF50304DF9B14BFDB +:10F6F00099EC09F3796623ED37ADCB93C2F1BDDD0B +:10F70000CC8FE0C81C77FB12E53F23E9306AC09339 +:10F71000D36D880B5FA97C7F21B627FE64AD684F4F +:10F72000927715607BF24FD64DB7E1FEFBAE954B5D +:10F73000ED48CF16E3B9E953B1DF26EFA8227D6883 +:10F7400093416D44BE35A58483D4A67A8365D93DA3 +:10F75000EB026D5780D6B13C1BD4951CEFE91AE53E +:10F76000931A3D2E1FC5D93679CA9CE8715639F4D3 +:10F77000339C57CA00AD01C749748603D476E0B8FC +:10F78000D406ADB082DACB07A1DE46BA4A6C5A0580 +:10F79000E7A3903C8A532FCF1B374F9347CFA2FD4F +:10F7A000BB7E80C0C5D55E1BCD3CBC9228F64349CC +:10F7B00095833BF03ACDDC871B0758E7C9227FD4FD +:10F7C000B9377383C81F74E5119F1565C376C243AB +:10F7D00057830D366450FF96ED8497B71C2E95E243 +:10F7E000D7DB5357DB47E2924B5C79F713D8DE91B6 +:10F7F000B63D48D7226F60D600C62F4468DC3BEF89 +:10F8000052C4B849C164AA0B021D714CF4997E3DE3 +:10F810000410C784F90388E331247A6B63EA4AE36E +:10F82000D7A1A46EE375DCEE14EB98132A68ECC044 +:10F83000758C71860651DC88F3CFA3F9EF74868648 +:10F8400012AE8C5C38427C7FEBEE6BD70BFA7259B0 +:10F850003E58DEB84EF3EC8B345E1D8E4FE7CDE79D +:10F86000139E53E87909F596942DF4E95C2F8700EF +:10F87000C24F05BD91E2CD4966DC0FEDC24FB6EA3D +:10F880004C41F9CACBE793C765203FBFE4506C5D9C +:10F89000CF24587BB098E31617EB8D0971FA6E529E +:10F8A000EB67AC07275D214EFF1F034C7B920339AA +:10F8B000444738EE1CCC679E83E136D8A2CF692C32 +:10F8C0003D78D85DDE447C9A6113CF69A0EB5CB7CC +:10F8D000EBD364DA97EEE3F3A084DAA0D503B62F76 +:10F8E000668873AB78B96E89D3A7168E47BFA1CE51 +:10F8F00027BF6AF41B7037D173B92EF88CC8778F85 +:10F90000E970C99CA73A62E77AD89F255EF3B3C92C +:10F91000D8DF74D40E14EF5AF5B1DD6F98F5B14A03 +:10F920007523F55F30F3EA14DF50FF9E08C0B3E49F +:10F93000F764C9A045E951B796005A14BF128BD29B +:10F9400062DA56BD6DA9B805C9BE9C98F74BD57152 +:10F9500021C2C56103BDA35CCA2B16C4BE7F3CB6E1 +:10F960004E76DC1BB1FB6CCF082914775C67E67B15 +:10F970007C91D04103D73B9EF2E7D81EFF6EECF39B +:10F9800013AF904FFF75DC7EC7D7178F811499F5A1 +:10F99000D895F87946F0B3279E08305FC79A795E0C +:10F9A0008F1ECBC7F4CA583E0EF0C7F231734E2CEF +:10F9B000DFB203B17C1A583532A67F50B024A63D81 +:10F9C00078E9C498E7F3D16045B70B574C8F797E3F +:10F9D00068F3AC98F6F03577C63C3F22342FA67F0B +:10F9E000D4D6C5B1FB16879B781C8C0ED7C73EAF0B +:10F9F0004C56E85CE002CA3BEDDBB5AD3F8C19DF4D +:10FA0000C28181FFFAC28192F0A242FBD48171AB24 +:10FA10003411F190619024F4DEFFA4335CD7772594 +:10FA20001C7C1587034BDEAF94A74A37EDEE457774 +:10FA30009E44FA57433F820E273AEDB912E95FA37D +:10FA400002C20A3A500F27E4EDA738BBE3BE149F69 +:10FA50009413559F837ABFD147B84A611C2D7D37D7 +:10FA600099F32917658DCFDF9E51FC12E95B1C329B +:10FA70005F467BDD248B38E00959BE3BFA3CD5EB71 +:10FA8000157EBFD72BECD02F1CE11DA4076C2E6177 +:10FA9000279B64A68D7E74CA8FA650EE99CF5B52C9 +:10FAA000564DCD257BD851A47928758A6DB4A5CB48 +:10FAB000125F647B5062D8441D0884B83D06ED0394 +:10FAC000E119ED41A197EC818CF601A7BE5D356E81 +:10FAD00090345CA70B8C9412B69377D339AC073271 +:10FAE000A4FA62CA7F5FB63FDAA5D2DEFC3CB878E2 +:10FAF000924C7E57F70285E9EFAEFAF9B90B19512E +:10FB0000F285B4B68B736DAE733DEDD06E1947FCC4 +:10FB10003BA6F0F9C36FE9B93EFCFE2BE511ABD66D +:10FB20003F9D4CF563A78B445D8E75BFD22BF4725D +:10FB3000A557D4E3D42DF8CC7127F3C1F24BFFCCF9 +:10FB4000F1B15A00C1D409B4C66EF6CB57EAC28FE0 +:10FB50005C488748F85E82BDD948223DDA3A33C214 +:10FB6000795A33FEB8FD2D91AFBCFD3F20C6AFBB27 +:10FB7000C36BE7FE3BCC794B8E04C6D2B8B79080FE +:10FB8000B1BF14184BF6DFAF8246F3CC09CC7DF041 +:10FB900038B667AE96D87FA67E7A7E16EE29F5FF38 +:10FBA0000E7C6FEEC6F9EFF16A4CCFADE0B793DF94 +:10FBB00077EAAE9A648A3FDFF288E7BB24D0364406 +:10FBC0008D778B39DE5B772DD94D7E29CD47F3D3E9 +:10FBD0007A68FE992A1450FB1404CEBD99DF7BDEAF +:10FBE000D9A0DB857FE9B793DF83BF4628F6AF3F17 +:10FBF000EDE4F394FA7B1381F231F57B9D9C0FECDD +:10FC00005C7C71FB4F7189770FEC18E4288CE2C79C +:10FC10001A0534C4CBF474BDCE4B7ED5F8F4ABAA30 +:10FC2000E7ACF8E504C653FD2681A7FAE7C57722BD +:10FC3000F5CF8BF3CCFAE4CB78CA243CD56F2ACC31 +:10FC4000E43A4B1AA28FF11F431C694E3A5F4546B6 +:10FC50000CE7BAF2265ACF6319A27EBD4995738884 +:10FC60004F9B24179FFB42EED5D5E5922C1AA8276F +:10FC70006F67150AF09A89E3396DE9A5A6DFD74CBD +:10FC8000F3BCB36FFB2054AD706CC496A11C879578 +:10FC90005D1D1F502FBD407A46433F0CF2D8BEB1C8 +:10FCA0007FD01991992FA8975E20B9EEB0BB54D29E +:10FCB000A357D64B3A6FA6153F28B22FCB467E529C +:10FCC0009B9248FC4BA140C3D2332827298A6CEA77 +:10FCD00019D05D18978D32F5D0F3DEB9373589FC30 +:10FCE00074BC1F58B1AD0F3FD08FFF841FB8562989 +:10FCF00016FE0A9F370E5F139B4F9D44F9A7943E53 +:10FD0000FC3FCA475D85FFB7D7FB7F670776929FA9 +:10FD100088D77091D057E14802FB0325A6FE8248A0 +:10FD200012C75DF17E23FA8BC7BC51FE62FCF8ED71 +:10FD3000A65E3FE51576663DC5D0D84E74E97C5E7B +:10FD4000EB451E374CE036CFA3DE6AC649A8875381 +:10FD500071F2B139E2798774BEC885F2FACE4F17D5 +:10FD6000AD5A31196137C4B407C6A25507F1F7423D +:10FD7000EDCF072F91BE6DB771BEBDFBD048AEF77A +:10FD8000ED8FEE32944B32EE91C313D93FEA3C2211 +:10FD9000E46C7B9AF6FA248A2B8E2A4075A86E5B57 +:10FDA00087C3D3075D7B482FA31C0DC914F6CAD5A2 +:10FDB0002AE994D77669220E76ABEA18AE530F0083 +:10FDC000E739CFED28E4B8F875532F2764F8BB491D +:10FDD0002E6A94F5796A610FFFADF14BC84F2FEE93 +:10FDE00093DF5FD27B16BFC391935C87D95DA9C9AE +:10FDF000CA98DE7CB7DA756B4AB9D8A0764D3A5FFF +:10FE000047505E036FD545041FCEB736A6F595372C +:10FE1000AECB6C3F40FC80D7DD40E76875FFE73D27 +:10FE200096BF176622B4703F7EF9E5281ECF93E98E +:10FE300031E3C6765ECF48BF2651BC50E71476E268 +:10FE4000FC970A3F678D3BBA758AA222CE8B23CDE1 +:10FE50000738DE6D736A8437F74610FC6B73B35E48 +:10FE6000ADDB77A388433DE0A37A99ED095DBFA799 +:10FE7000F1BBF63A353A6771ABCD9046E70C0E61AF +:10FE8000AF4720DF7626F5DCB7E673B7FD8C8BA095 +:10FE900011373AE553DDB666F846D4BEBEEE4DE600 +:10FEA000F59798F8DC9E1091E9BCA70B63A70DBCF1 +:10FEB000AE9E7502CF6BAD7304E7C7B73BBA3EA6E3 +:10FEC00073135C974AB81901629DD0365C23B971EF +:10FED000AB3AD3E156355F743DBBB5AEBA6B50AFAC +:10FEE000A7A25FB40C2EEB1BD23F75093D6D17CA5C +:10FEF000E6F6020BF7CFAD9A3A39AA4D0A737CCFDA +:10FF0000FB9599EB5735E5125DC26EDA6C6196B7D9 +:10FF10009439A01A13887E5DD48992BC79FA94C76B +:10FF200048B43CFA528DB4E9D8EF7B45F635E290FF +:10FF3000A95F89EF5F6ADBED6C0FABFF73766A3107 +:10FF40009D4BC8071EDA86D7CFE68687915F9595C9 +:10FF500012989549E7ECEFCEE37ABE3F6DB7FB66AA +:10FF6000909EEC309E1A88E32FFEA55DA3FCD1E3A2 +:10FF70006F77472ED13EFF4AE238B0D32EFAB18DCB +:10FF80008E24CED3F68983CE916E6C7DDF41DFD394 +:10FF90009CCB0C7C3713F7697C6B4305F16F023403 +:10FFA0003752BE11F57380E5220BCC3871D8860626 +:10FFB00092C3AEC0E05928473FCE8C8D57DB4C39F9 +:10FFC000DE47FED5F0FEF5850107382FB7DBF40BD1 +:10FFD00097C1A181C4EFDDFBEF28D470DCCE908DFA +:10FFE000EB77479D72DDAD47E1AE31D33CB735E7E6 +:10FFF0004DCD0AD4133F96ECFFC091827CA8FB63E1 +:020000023000CC +:10000000388FECE43F20FF4B33A3E51FFDC9689C0C +:10001000F792FB38B9ABB37539382F7B06585FBD03 +:1000200070AA95E3FB177EA87A487F207D908AED21 +:10003000DD74EE93CF6DCE1735BCF9C53594F7FD61 +:1000400062EF92C1C4EF7B32ED4C0FCA497902C90D +:10005000E30E607D69C97331C9332EA5581579A4A3 +:10006000629213925F47FB7496DFDD329F93A29CEE +:10007000B0DCA09CA854B75AACA2DCF0FBC3591F5B +:100080006C6F3F39929E37707B868EA1B6CC38DD7F +:100090001E991E92F0FD327BE400BD5F86F3376847 +:1000A0003DF25D26813FFA9CF9756F0AAFD7D2BF4A +:1000B000EF7B4D3B44C55751F21365EF45FBB23F13 +:1000C000F0C5AABFA03C15EAA532F9EDF5AF296C41 +:1000D00067EA7F33F1966DA2CDF67F9C1EACA052ED +:1000E00093F195CD07E93AD11FAEA0709AEC8D86B9 +:1000F000FB3016AF3AEADBC973DA0FDA85588FA204 +:10010000FC66CB816F8DA2F8ABF3B413DC3865CB02 +:10011000DFBA7EFF4BA4EBA17DC847E8D33F62FC6A +:10012000F587D74EA92385F29F87323FB8C9E646A7 +:10013000F99920E8DA9FD9B10A4322989AA51F229B +:100140001CCDCB0E1C2239EA3CF1372F7D1EB1FBB2 +:100150008D0F52C85F6871E8A354BE62BCD687FD9C +:10016000DB69EE7F99596F43F24679E8736BD2D71A +:10017000B3BCE9ED3793DDB84752F7D3B9CA47A608 +:100180001C5871F542E1B24055CBEC69E42FA93916 +:100190000AD039CE3DCFD863E2DF6186C1714A2DE6 +:1001A000422684FB5F6DD68154C5F941C321E2A08C +:1001B000BC4A5D202948DF6DC7E7CFABCDF3BCEA71 +:1001C0002BC4D11F659AFE53211492FF84FBCFF9F3 +:1001D00094AE3715DF06BC6DB7C111270AE70BB225 +:1001E000E00BFA294DA9693D7ED413D9FA9B649F8F +:1001F000DF34FD9DEDE5420F756D97428CF7ADC084 +:10020000F236F18CB69E3F0634F453595EA20718BD +:100210003F136D069F9B4ECC2A04AAD71C8F6A9A67 +:10022000F07E4F9B140AD1F32141970DFF913F7946 +:1002300001B62DA7F28609D0C5F42F22FAB9EE280F +:100240008EFE35270E53DAB2261C771ED3CF39E740 +:100250004E803ECF57DC59E6F94A1EE445FB9770C5 +:10026000A4EF78A1279F64B0BC7D661775D227CD17 +:10027000F1F12785EA553F34E91F9A255BE70BCC5E +:100280008733E677FCB5261FAAB79A7C582D706293 +:100290007D2F5C0721A6BFC6A43F9E4E9CFF30C5A4 +:1002A000BF8BD0EF263C56AD8DC5D962930F8BE343 +:1002B000F8501B90C4BC2145CC6BFAFBF3C1FA117A +:1002C000EB5C6CAE337E5D4BECE25C6C09E287CE9E +:1002D000E9FEBBD619BF4FDFCC32713C1246C6ECEB +:1002E0005365FA55ED532168A914F75A7EB48587F2 +:1002F000F8F7A6997EF48D6B843FD9D27E6005C94C +:100300007DC95E45253BDFD95E9E4875029DC76D60 +:100310009C9DED6C2B5D65A0BEDB7564C86CFA9E80 +:10032000A8E484CCF250FA5A49C84DF1C66B25892D +:10033000855CAFA1A5D3FCF81EDBD5CEE3437E5789 +:10034000CC7EFAD432522F0DC74B12C90FD80522DA +:10035000EF21BDF697DFD2BCA5476DE328EFB91CAE +:10036000F783C6BDF1E77337933F711BB5A94EB84C +:10037000BDFE56DACF9AE3B24AF7CF1F17F5D7D5AD +:10038000EB94908CED1B7788BA903ADC2F89D76B71 +:10039000E7F9EBF60E4D9F1F15EFCD33F15AE2D181 +:1003A0009E9E417E5E76227F7771E3203BDBBBB36E +:1003B0003989FF3603C71BA6E75FC647083970F6C1 +:1003C000E5FB45FCBA5D822C9CE070D6FD0E8A0FE1 +:1003D000CE96BB2234CED93D271C74EE5AD1724240 +:1003E000D43F98F53F169EE2F97FAE3DC1AC576C05 +:1003F00076D03ED59CB0DA1D0EB2D37ED35FAADD97 +:10040000F83EB71793DF4FEBD928713DF9C1BD2FE7 +:1004100071DEA7769BA8A358DCFAA483F0BA18F182 +:10042000A9911E8166D6CF4B5A1D6A5F7A65D19A13 +:10043000D8F6BD57C0E593162E47C008C2E517533E +:10044000843EFFE24402C7495F1C1559FCAFC12737 +:10045000DBBDE3665EAC3B22EB8E6B7B9E3B7FBCE1 +:10046000DB417517D3DA3E67FECD68DB3F95F8F2C6 +:100470006D0854139DDF6E4B54C92F9DD121F4C9D3 +:10048000F43627E7C5BF0DE126B2779DFB5E594ED6 +:10049000796FA3DCD53554EDD14F8BCCFD060832F6 +:1004A0003FCE5AF13DB6997F3EC8A778A7D3DEC1AB +:1004B000F2DD39372948FA1BD6C6EEDF4D45B1FCCF +:1004C0009A0E42BF4CDF26F4DA4DD0C1E3DF44FC84 +:1004D000C6F93BB347DDC2FE0FC6A354175DBD2D61 +:1004E000F6FDDA383BF86F59F6983A84FEFC83F84B +:1004F0007D3914B72F33BA84DE9AFE86E20B21DDF4 +:100500004722CB8A29DF66F1297E5F8E685F5F779D +:10051000F45BD3CFB6DAB798FE6D580DFDB414E98D +:100520003D0AEA09238397C375E00FECC8E67339E7 +:100530005FB6B00717861CBC46C35FAB5F7939CF87 +:1005400051C071C5BB59E447CB6D3FA563EF5772EE +:1005500015C8A0F8E2797788E4EEF1AC0F9F282D5A +:10056000E33A95763ABFABB335CFA073ABBA6D76AD +:100570001FC51375AD0AEB9DBA6D4E21F784175C4C +:100580008FBF4DBA81F0827EFA191A7F261DD9508D +:10059000BEB055E2BFB33273EAE70EE2EBF1387F4B +:1005A0007D46FFFEFAF9AC287FFDE890C2D479744D +:1005B000B569996949FDFBEBB55F0A7FD1BA5F8BDD +:1005C000F24C7CAF6D93D8BFEDF1173325F2173B9A +:1005D000F73EECA078B453523F4F44860C32F9D624 +:1005E00072E0070ED2475D53A0AB80F2AF5213CB3F +:1005F0004F2D3BA578DD2D8973B45FD9A966021A0A +:100600004E26B0FE3B7F4A9C1F917F42F50EF708B5 +:10061000A8C0F97901C627D53B10BE6BA07A397FF7 +:10062000573F1F825C6F19A70F9614AF5F4EA5EC62 +:100630000DB08CE3A765D0C4D751FBDE62BD38EAAC +:1006400065872AAB9C7F70705E3014F57E416F7DAC +:10065000537385FC972F3B16C748CF2ACE1F1C55D6 +:1006600054CAEFB41CF8EB735437D4857E7601D1AD +:100670006DFA2D2D07DC1C57749E480A113FFF644C +:10068000E2F5AC99776F18AF307FE409E23A6ADFA0 +:100690004B058483CEBD17F302B8DF2FEC7B69A432 +:1006A000CEFB1F1275CD5B63EBC46BC2B175E01658 +:1006B0009FEB4C3EE3BA8639327AD6B5DBD691E26F +:1006C000EB43CE24E900EF9F2C1D8AF1FFEB7EA5C2 +:1006D000F8A3EB2A919EBB490F969B38005B979736 +:1006E000ECE9B46C8DF1D6D026F65BDE2BAE38FF8C +:1006F00077445EC5CEF3F7EA2F37AAA9FF8BFC44F7 +:10070000AE4B802F8D19D47EA840E1BA85874E2E3E +:100710001E1E9D6F0349C4CB75F62EAE7FAB3B21E9 +:10072000F3FAEA4E747B872491DE5B3F95EA7C6F97 +:1007300032F5C9E182C42AC2B541F36652BEEF1058 +:10074000BF7FCCB4DB7513C4FBCB4C1CB59C9C9E0B +:1007500048F984CEBD03F8BB8E9BB2441E6E5EB6D4 +:10076000FFFBD9637BE298FEFCD2A8384A9C8F201D +:100770009D244FBBDE7686664814E75E3CF55DA29D +:10078000F7A88DBF6F6BD8EB34E83B92BA77DC9C4F +:100790009F8040E05A8ADB1EDAB768B8F8B87E1945 +:1007A000EFC7EAD6859D540F54733A91CB846BF60C +:1007B000BEC9757E35BBC73E4D7E0FFA393791DF16 +:1007C000B3ABCDCEFAA7E4B532C6DBAEE365E985BF +:1007D000FC7DBA2F91C6AD396AE3BABF9AA365AF63 +:1007E000CE207FE5B572F67BA4D7CAD2494F955289 +:1007F0007C4B7ECFD121DCB6E879205B9CBB74EECC +:1008000077731E428202811718128397EA96DFB02F +:100810003F508D7A301A37D67B2BB26DE23B4A0BB4 +:100820002F6149673CEC10D7EAD65D5EA263893D33 +:10083000CCFBDBB0CD2EFAB78B2BD0DF09C0F70D88 +:100840009FCCFBF92ADDC27D98EE08E5D279E03134 +:10085000330E38763A3098F4E0B12981E174F5E44A +:10086000C4E6670C28E77583348BF7FD5C8BF0C713 +:10087000E2F731D57C2F251D62CE15ADEB7F660BDF +:100880007C4C7788FC10F971D95EF3DC8DED7AC76A +:1008900054D247B3B2D225B2EBAF9ACFFFCE3C6F62 +:1008A00002657232D76FD0F7501ECA93FBED641FFA +:1008B000679B75C7B3BF7DDB0DF43EA0DD4EA27C08 +:1008C000C178E1B75B79FFF83CBFB5AED995B1FA15 +:1008D000EDB62BF84FBFCA36E3AF61304CF8F5499F +:1008E00089A4F72F1CB19BF5FFA121FED1BDE9BF63 +:1008F0005CDF41E740A8D78EA05EA3EB3F90777AFC +:10090000257BEC95F3FC0D23DEE23CD1B1FDA75F26 +:10091000F4B09E754301765DFFD51FBC7DADAB0184 +:1009200066F1FE2E835B63F069EDF339107F97214A +:100930007E9F7F6FEAB55A8C7B697F561685FC7463 +:10094000B5CE2DDDAE478C81F86B5DDB4C203DD004 +:1009500030E26213E9F773E6773AB8BE3C67941D5C +:100960003897FD39F73F540E5D06F6EF1F21CEDBB9 +:100970006AA64A7C2E501311F6B2E656612F87B54F +:10098000CCB493FEFE0EFAC9BA8FD5C829AA6BBDA6 +:10099000D9B493D77FD5C978AA31FDC4064833842A +:1009A000DECEE06B4DCBFB4D7C2E198020E5DD6E5D +:1009B000191F8B83E110786C00F6DF5E29F942E4A1 +:1009C00077E8B1FDB77F6F26E36DB6F9FDCE957080 +:1009D000E4CDF1430EE985F6EEEF8C46BED49A7273 +:1009E000E01BAEB5D2F999EF55754C233EBB35D41B +:1009F000BD87DA9D468644E7E6093982CF3FF6FA9D +:100A0000DDF43EDA913D74BE56EB70A94457AA79E5 +:100A10003E63C99D2F134AEF4B8ADE2FF1BEF55C72 +:100A200073B6A82F3B660FE5F2F71DC557770ED8B2 +:100A300030E2956B48CF1DDB7FF41A47D4BE9DADE5 +:100A40000F0C67FBB2F7A0574B8AC6956CE2CAC67B +:100A500057499A65DACD589C9D259C917EDE71F0B0 +:100A6000E6EF123E5A6667485A945DDDFDBB94A1DD +:100A700051E39E6B13DF2F607C35ECB6E4E8753EE6 +:100A8000C6EB3C1716E3A194F1DF6FA9DD33669C3A +:100A9000A88F0483EA296A8BC4DFCBE04AB701310F +:100AA000E7ECFA4071CE1EF377DFC2F44128BE674F +:100AB000EC73F2F95BA75DE5EF733B4FABEBC577EA +:100AC0009D412517DBE341FD9CE20F7F8E953F0999 +:100AD0002A3ADE9FA08BFA39E43CD7194E9A21CEF0 +:100AE000B7B19FEB0C2707C127E218D13FB152F4F1 +:100AF0007F033A14D2D3D753AA09E56A0A68366A43 +:100B00005780D148866D52387213A9A188D7E6F96B +:100B1000D8254A35FBDABF1EFED8E0630B8FF830CC +:100B20003A3D9C4797E01185ECEE38D0BACD75710F +:100B30001DCE785DDB49F43C6CCABB2F51C85FD732 +:100B400039E03C9AB5BE49B676A62359D3D2E85CC3 +:100B500063C7A17A6EEFC3E895EBABD2CDF73EC584 +:100B6000F7907FD7D9424CA737289E9F00913EE946 +:100B70005C9C932FCEE14D7A3BED61B6D79DF7A2F9 +:100B800020E3BA8239E2BBEF89CD12BC8D4AD3573C +:100B900028E8C1F1153E4731C79F0861DE3FA8D262 +:100BA000D25ECDA6F724B38E77AA4AFC90225EF9D6 +:100BB00052E2D5F3ADD30BBCDE94F95DE77F54D69A +:100BC00073DEE46BCBE4FCEB6A49EE52E8BCC695FD +:100BD0002BEA80231026BF1CD579CCF7A14D39B361 +:100BE00096B13C07C4DF878AAFAFDC1ADAC0F532B2 +:100BF00073ACFA995C8033DE9E737E7B81A8A7B1CB +:100C0000D339BBCAF59EA584DB226F6059CE58AE9E +:100C1000FB1CCA83D94263C5DF2512784E047D3C94 +:100C2000F1F9A23B8FD76BD51B3D9C90C7EBED989C +:100C300002616952EF73FC4467B88AF948F54013C2 +:100C4000FA3AD717F5C228551AD519C123151A8DA6 +:100C5000BFDCAC978DAF7FBEE816F541565DC1C3D2 +:100C6000092F723DA9554740F44EB6E895AFA6AEA0 +:100C7000C0B08FCCEFA97B453EFC6F930F5CFF8A21 +:100C80007679A8E04384E3FD445D7C97ABE23ED9EE +:100C900044DCDBE5A404AD8EFB54D4B34F54DF4DEC +:100CA0007AA3A9C292E3F056AE8F443E50DBA2373E +:100CB0009EBEFF024D25FE04E0550000000000002E +:100CC0001F8B080000000000000B0B926360F851BE +:100CD0008FC00B8451F9E8385214957F4C04BF7AC9 +:100CE00042F8300B82FD448081611507046741B1F1 +:100CF0001C107342F13928BEC689D093CBCFC050A7 +:100D00000AC4B5FCA8E62A3141686B460686560639 +:100D1000A039401CC98590676186D052360C0C2BD7 +:100D20001C10E2C6A60C0C75401C614699BF46F12A +:100D3000D0C09AC1A8FC301F547EA51F03C349240C +:100D400035E13EA4991F18C2C01014825B7E6B046B +:100D50002A7F46122A5F034DDE3E1795DF1B09A14D +:100D600001FA5B832FC803000000000000000000B0 +:100D70001F8B080000000000000BCD7D0D7854D5BE +:100D800099F0B973EFDCB933B933B981042630C0B7 +:100D90004D081035C00502C69FD64B4016777DDA48 +:100DA00029766D745B3BFC34A2A24EB15FCDB6B424 +:100DB00033901F428C30FC7C1814E9A8A0A850A3E3 +:100DC000AB56776D3B086569EDD72FEDE7F6411718 +:100DD0006D408BDAAD35B2557497AEDFFBBEE7DC04 +:100DE000C9BDC324845DF7677CF47AEE3D3FEF799B +:100DF000FFCF7BDE7312D07CAC6612639FE0EF0AFC +:100E0000C6822A636CEEE093B1648ED5337621FC02 +:100E1000CFBDE58C7E6FCE63AC960DFE94318C5DBC +:100E200080FFE3636C6C2CFD22D65F2FB1E4588BFE +:100E3000315582F795F831F3E252687FD1218D75F3 +:100E4000198CD5B13E1F9BCCD80C36404F8B193234 +:100E50003E67338B9EF52C4ECFF7E6F77F139F77D7 +:100E6000198928AB606C959E98148271DE9D9098CC +:100E70001681F7FB14BB12DFB328747EC9E03C0A6D +:100E80009F8CA519D6ABD16EB025A8FA412FB3BA65 +:100E9000F06DA345F34B3FC6AC56285F64A473586E +:100EA000DB69D791622C370DE6682459A28EB1CF49 +:100EB0003293F052174DF7C91178F6265842C716EB +:100EC000368B8761AA81C474FCAEE86A5A9E81EDB4 +:100ED0000654FCFE8732D6D4AB9F0DD7658834A864 +:100EE000DF1E5E64F743FFADDFB1581C9E72EE1249 +:100EF00066427FB26E31E891294A96F0CAF6B2AAEC +:100F00003D0082A2F5BEC8901EFBA0CC102E83C36C +:100F1000A5E77CF3619C37D4C467B12C215CD0BEBB +:100F200035BC288AF0AB5196966732A6411FD8BED1 +:100F3000B58C65EBAA180BC4E05D3D96FBF6631912 +:100F4000EA31C35576E06D2DB3A27ADD60B93D3C40 +:100F5000EF6800EAF90D664E837A4AEE2A825B3129 +:100F60006C9680A75F493309E13639DC7E2DC9CB09 +:100F7000315E568D049B8FF3FE935C143F1708FC83 +:100F80005CB897C3ABE82C2B4B889FE75F0C4159AB +:100F90008E322B485C68D9881FBFCE8CC7F0BBCE81 +:100FA000EBCB067BB0444238B21C5F061FF722F140 +:100FB0005D8D1A0FF9AA10AE9CAFA49EDE5988CFA2 +:100FC0003AFC8EFD95F3EF8AE1C517E2C78D2F7FBE +:100FD000F9C8F0D55A25D13CD99939D16BA6BBDED9 +:100FE0008BF9E3EF6D942F8970463F1DCA1748FCBB +:100FF000FFD70045111F2EB9F836C90503B980F295 +:10100000BBFEC423212E176BF07D807DA5343E7D71 +:1010100038B950590E8439843C2FD368C6C98BF82F +:1010200058BCCCE546D68D46C44783E9E3F86F91BA +:10103000CD374783C819D90512C0D96ACE4E237E51 +:101040003E580C4D60FEA3326BE508E233CAF1292D +:101050002F8EDB202EECD2B7F374DC2D231E81BE45 +:10106000398DB189F0FC04FA55CA4354A6F1B15D3B +:101070008B4AE334F40B7A21FDAB90FE3B1644908F +:10108000BEE55EFA2B48FF2A17FDA3407FA49F927E +:101090003EC8383C242F9788EF79FA6AD9D608E7FA +:1010A0000F0BF9E352F15D31F877A43796B78481DD +:1010B000FE12A737D27F4B18E82D71FE305CE57425 +:1010C00023AB4DEA58362B75175F6FC9D37F72A5D6 +:1010D0009BFE5BFE04C8BE14D19DB473C02F5BAEF3 +:1010E0009A5A9AA81B9A6EADA9F80E658AAB2C7114 +:1010F000FDD21A644D4FC1D35E63EE58013006A293 +:10110000E66CD473AD6195CFD7301F44FA1D107CC7 +:10111000F4AADF3E80F4DDE2372B0D1DF16CBE82B8 +:10112000F20C7836B99C79F1DC7ED5BC3C9EA7FDEB +:1011300027E27973019E3717E0D9293BF3DF1C368C +:101140003C78DE9CC7F3680F9E375F39B512F5F126 +:101150006681EFE3E9EBD269C0F365A0A72230FE18 +:10116000C76AE2B724376F26D211943F3D4EFA93F7 +:10117000143CD8398571B954A4C504A756CEB25DC4 +:10118000D0EE4AF96AE603B83A8011C7028C635080 +:10119000F592FC2434C4C7E6728575A10CCB575B6D +:1011A00048D700FBABA272A9192C1D9C8972A07AAA +:1011B000E440B34DC98076CA62960B82207DCCC2D2 +:1011C000E524A717B38BB99C9A12F6374A31D72A70 +:1011D000309E6CFAAC07014E50C33E1C7F7B69F514 +:1011E00003B20B5F4189EB557F789906C698AD3500 +:1011F000676BFD80970E7D49292BA2879DA7FC91E7 +:10120000CC72208FC647123D653D7109E2737B2089 +:10121000F1FC6F695C663D08D048E6C0279F207EE0 +:10122000A2E6837F26E1D3628D30CE4489F35D99B7 +:101230009E388070C114C94FD0742B8A76EF40B8A5 +:10124000398A76B0E34050C8BB9A0D569D0D47438E +:10125000346BDB508F295674C9F4B3E5604C93C5E9 +:1012600096B9E447618D13A5B9841F09F97C94CD23 +:10127000EC5EF8BE59318265AE7AFF82F606E8BFB1 +:10128000D9668B7B8BC8DF7BC21EFDA8C2AE952AB8 +:10129000387DD01F9AC7067FA8AF2F167C72191B06 +:1012A00098A8007D6E0BE43AFC12E9EB59D8EEC326 +:1012B00057FA6E40FDCDFA13D3D06F007D3D1BE190 +:1012C0001BA9BE0EE6F573CC385972B6BE3EDBAF35 +:1012D000C93522FB4DD7FB7DA8AF679627A2BE6A12 +:1012E000C67EA6DAF371DC3CFE0E5C1745FBDDFE24 +:1012F000E8BC26C46FFB930D4DB68B1F160BBE8941 +:101300000B3AB6573693FD077D40F6DFF15B14A527 +:101310008FDBDBA7D92CEEAFF4F3F273BC3C531F89 +:10132000F02D453AFB1351A4478790D7992FF435F8 +:1013300096A03E318D59C04BACEEA9B7D75179225A +:10134000945108254E9F2AC5D6106F79BED4B91F77 +:10135000E6D8A5FC7C0CE0E761F4A886F607F03936 +:1013600041D81F3556607FB40443F8D4CCD234F949 +:101370002D3AB767E8B17ED13DBEB053D39F2EB4AE +:1013800053EF70F8476CA704DE84FE9C7196FE1C38 +:1013900078B1C4A53F670A3FA5507F7614E8CF8E89 +:1013A00002FDD951A03F3BC289A85B7F76E4F5E7F7 +:1013B000728F9FD2E1D829F68F64A73A2ACFD34EF5 +:1013C000F9413EEBC88F12762AD1B374183BB55D54 +:1013D000CADBA9ED28370EBF4C7F3AC1FDCEBC9DBC +:1013E00012788E019E4DE4CB21EC5479019ECBBD49 +:1013F000780EC44686673F6F0BFE2FC7B3E33FB737 +:1014000017E0B9BD00CFEDE1B807CFED793C5FE360 +:10141000C1737B457314F9B95DE0FB59E910D92913 +:10142000B04FCFA3BC6A4F27D328F6EA0BF13403A1 +:10143000397EBFC2FE5BC4CF27B7C55FC0E7FE677A +:101440005409E9C2F65A0CF53AC847531AFAEF9014 +:1014500012D1589D9BCE9C1E43D1F9576B4FA4D3FC +:10146000D05E0BC5FF9EF05FB99DE4ACC36F47D162 +:101470001EB53D0ACA7B3AF61FA7FEDBCBAEF5AE22 +:101480000FF2FD0F3F3F671CFCF58FF1AE2FC9FF38 +:1014900015FAF4BDA5E0F7CAA4475F958AFBBDFF26 +:1014A000289D87DF8B3AF193C9344A51BF776A7A16 +:1014B000D951A4FB074C4B74A15C7D26A9C5D1CFA3 +:1014C0008A2DD1D04EAD8F4119E520AA6AD24CB4F5 +:1014D0009F6037F0BB58377644977556D13AC39A18 +:1014E00087DD3AE32F88269844EF13A30355DEF7F0 +:1014F0006FE8B42E8ACAA05FD464A386F3683796D7 +:10150000686EBBACEA89A80AEFD7EBDC4E75F8939E +:1015100047AA50AE636CCE3A182700EBD539684F16 +:10152000A38D0467BBB13A2771FFE4439CCF8218B7 +:10153000F70B02E5CBB20140424739B7FB0B6249DA +:101540001AFF6C39E6F371CA013DC954177E713C2C +:10155000D9A50F034A322789F519FA212C738FADCB +:10156000015DFD625DE333E3695A87DB5367770111 +:101570000B8DF14984EFB3E854CEE94474013EEF9A +:10158000085A4D887F30404C9B37747FE0D190DE05 +:1015900038577F0E9DF3F44EACFE5E3FF693067F08 +:1015A0000DF0B3F633C947B0ACA403C6BA72B4ABFE +:1015B000C9EFF5A35D5535A315C6B9A724427AA195 +:1015C000E55898F0B811F11460AC3BA5D1B32B6588 +:1015D000D0B33315A527F8836C2AD43FDDE8CB764A +:1015E000D17A87FB21F9670D7F6E12F858E40BD191 +:1015F0003C568A32B857C40F197D78BB56DAE01BC7 +:101600009C27FC1BB6BC76ADA47694A71C34C77986 +:10161000EA17FA1532322FC635149B5908A7027003 +:10162000A25E29BD3ADAEC82639E4FE6EB45F90BE8 +:1016300049A4539BC4E5DFF9FE4B1FF71F7EEDD392 +:10164000A8DE15674A655A570B3F3A125E92CEA143 +:101650006E9558720AADB995DFF73B7002BDDE9406 +:10166000E24D3E6817F1F71BA3EAFEFBF121CBB375 +:101670000672688746ABE4F7B6AD5D42FCE98CFBC9 +:101680002331DF793E6EC7E48065D5925D50CD078A +:10169000ABD08BB0459CC17C00F9A175EDEC019CF1 +:1016A0007FBA4C25BBE3F4E3D7748A2715E2A31075 +:1016B000BFEF0B3E791DF13B17F17B05F94977EB45 +:1016C000BEC559C257DF62C277BDCF87E3FD8FC168 +:1016D0005BC13C1EF7713F6F5E7E1E9F273C397CCD +:1016E000D2AD039FD493D4129F982CB798BE5B3091 +:1016F000AFAAC17915E2EBBF6A7E0EDE4BC3BE789E +:101700005647F806E204DFE58A07BEFF6ABC3B7075 +:10171000E979B8721C2EEB7F065C6F4A897F40F92D +:10172000DE28F875A3D2AFA19C37F904DF94C44931 +:10173000BEB0BE7BDDE7C817B47FCD07CF4DD81E46 +:10174000EA6D52063CED9D71C2387F2E0F712E0F4F +:10175000CA7FAB3C38707509B84D96E5FC5CEBFB75 +:101760006FA14BDE2ED6B35A05FD7116B2103FA500 +:101770004A2224631CFDE75F61EDF0FE94ED1BE857 +:10178000C23842B91307E7EDAEAA58C1FD65DD477F +:1017900076119EE42F9F8AF17551A0DC970ECC281C +:1017A000629F632A0505088EEA61E012F118FA6467 +:1017B0003236FF2385FA0F598CEC6A98F533F4130F +:1017C0004BD192807F57C64C118FB124C43363979D +:1017D00093BF571EFCB4FBFD32F52BD99BD92725AF +:1017E000E7D1AF02FD4EFE4FE8F71CF006D94EEAF6 +:1017F00017A9F3C9E8C17E3780FF024E34F87D0691 +:101800003D031871403FB88EEBDFF5E0CFE07BA6DB +:101810003C63FB603CDD524DF4BB4AF41C433FF497 +:10182000BDF9DA00C3B5A8F0B351FCD0CF2EA9653D +:10183000C77D40F712AB20BE155347C48FED15533B +:10184000C70EB7DEC4484F9536D86EA87AFFD94F79 +:10185000F497ABFC836545AF1EE4EB61E6273724C4 +:1018600038B2188F3BE6DBFB5882D6CDFA328DD6E4 +:1018700075673EF9449EC7382919ADBF1A8AE165DC +:101880001D0A9BCB0FF61B1D5F97C065F54757D808 +:10189000FD2E78DA841EF24757D9FD23A083ACC40D +:1018A0009B96623CA49EAF8F3797DCC08ED7A13F3A +:1018B0007C03C59D3A2AC654E1BA0620E0FB889A0B +:1018C0004EFEBAC3A7072AAEA5385F7BE5B5515CCB +:1018D00077B4FBE314FF3B52F1AC8DFD769C296598 +:1018E000010BD74FD5145FE83833796CB2C8FC4A86 +:1018F00018D717B47F51C5F9CD593C22BC1D511FD3 +:10190000C55F4FD571BDB3B9E447B68CF16D53498E +:1019100062FFAA0EE3C2F88BEB7B6D8C43A8093DF6 +:101920001130CEEEC719077E12C68970BB2D2F77F6 +:1019300092E77B5138CE2E27ECEA7ADA37B3BA8AAF +:10194000D4F76B9174C90CD4BBF9F7068E5BF3F333 +:10195000E9A53C1EAD3253C3A1251BE56A90FFB338 +:101960001E7A33C337D8AF6BBDD3A1DAA427D21305 +:1019700059760FCE47B19B104F6DD2A8D9B8EEE97A +:1019800018D7152DC64F4AB4F37DF443014739E407 +:10199000A3407411EDA7B6811F369A5442779F3445 +:1019A000839EEFE3FE68C0507EE7E6B33E395C4EAF +:1019B000FC24E2D6AD7AF5B0F1A3769023366DE83B +:1019C000EF7ED54AD07A90258F221C0A9B41F02BBE +:1019D000B1C347AB008EE332F7879572BE1FCB0CC5 +:1019E000F0075DF8F86BD53E2E23DF87783F85FD45 +:1019F00077A98DBFC5EFEBE5F85BF8ECAC9A27EC67 +:101A00005C815CE8E523DA7F36BE6C09F9B623D247 +:101A100018CEB7F80BD559B80664D1CB644369E04A +:101A20007494D1EE4665DA2F072B7C02E1B6E11FF4 +:101A3000843B723994DD714AFB7A7B32CCDB68D40B +:101A400006FC51E41B5EDFE14719E931039FDEF735 +:101A50003EC5BB8FD09A7A8EBDE18AD7C12BBBD849 +:101A6000BEEC67D5464DA92886875123C24367340B +:101A7000D349F154A60D94C27C35E44168B745D0F2 +:101A80003B83F6671AAEA3B9FD6913F6A62765D2A4 +:101A9000735BAA96BE6F4F5954BE37D540E58E94FE +:101AA0004DE58DA9C5F4DC998A733BA565697F7EF8 +:101AB0004BA5B943A2F8C0ECC69F37D0FEDC2B0C77 +:101AC000CBE9E9BC0C3A9B8D63ECC2B6698D188FEB +:101AD000DA52665EE70310F66F8DAE3B84F04D314F +:101AE0005F91A0DCACC45E6CC3FAD379FD856D97C1 +:101AF00036627C6E4B50C4BBCC2F9E030F5C2F36DE +:101B0000E186123CB754F07D8B91B64B603BDCB75D +:101B1000AB3ABFF1424AD6E6F35DD2F832A034A424 +:101B200071F8BFD56613FCA49A2E053E686B5C471E +:101B3000F39F2EFA077BF4972E7BF44DC5CFE19EE1 +:101B4000757E70B708B84BE3FD36A2FA0F72E21A41 +:101B5000E4A370532EAD02693BCDA728CF8299E54F +:101B60009437722E3EFA316E12CC1DACEF8F59367F +:101B7000AAB9D5F8BE62F07DE9E536F5BB1403B32A +:101B8000F07E67B25113791B143FB8493144BE4B04 +:101B900082EF47FE54263FE7C621EA63BD74FD602D +:101BA000BD21E134CEE1CF8E709E4C8913FF5E2BB8 +:101BB0001B9E792D900DCFFC433A97D791D2E3210C +:101BC000418FEA827EC7169447EDF3B10610EDD13E +:101BD0008B5DF604FE2DB3431EBF266C8DF294FD83 +:101BE000C6384FFDCA84D70FAA885FE8F93EB669A8 +:101BF000B6A73C7EE5A59EFA8168A3A75CDAF0E76C +:101C00009EFA13924B3CE57F2FBE1B0AF03ABD00B3 +:101C10001F23A61B534CA1A7D33CCE9C2F0B3FE008 +:101C20005CE533D3BC65DE6F805D5FCAD705DCFF42 +:101C3000FF2A13750AE1B05C7EB58CF578D984F57E +:101C400032F931CCFB7D70FF50C439D729B036460C +:101C5000BFEEBB14076D49078C003C4F0727661980 +:101C6000D8F727FC8997149E277631978BE44CCAC6 +:101C700037928AE73B397CB73E656D7DD365670255 +:101C8000B1AF537C9A35707FD216FB2D81A8F51029 +:101C9000C505D126D2BE90F5109AF45714D5D917A0 +:101CA0007A05C73F30E19B47D16F3CD5A05A016808 +:101CB000FF1BC5A479AC9FC0D70B0017C9CFDD733C +:101CC0004F925F135092B4AF17A891485E70BFE077 +:101CD0000BAEF8F5DB8ACFEB4715E0690D2A2F8CA8 +:101CE000534CA8DA7439E2E9FFC8625FB0BF09E17A +:101CF000BC7BEE188A276C48C577D4F8C98FC9E138 +:101D00003ED8067F5FD372ACFF533FCDB335A5E518 +:101D100050951E983BB514FDE1D70BC66D0D879A03 +:101D2000304E119CDA93C07E4FCFEABD08E7BFB1B9 +:101D30002A47FEC1E9134F5EB69661BB08B5BBBB2F +:101D40004A22BCA52708BF8EC178502F5C6FCCEE0D +:101D500032115E8EC77419FFAED5031D3CF262339B +:101D60008CAB85137A92FC0EC413965F9E93E57E2E +:101D7000AA1DA974AD37EFACEF2538A2E3651600B4 +:101D80001A49535BA6E13CFCE519F2931686BFC8DD +:101D9000A85C63E7EE877AC1868061A2C98EDAB952 +:101DA0001FE2DE24A8539BECB16D633F6A5309F731 +:101DB00077EAF8FAD0807F506FCA1F2F673B302E2A +:101DC0003CDF37B06716B4ABF1AE1F55377D70FFFF +:101DD0008EB9BEA3FFF3A73914E7BABB7E75682D91 +:101DE000E5617CB994F68BEB7DC703803A3911C964 +:101DF0002D74ED1BEBC7823F39E4C2CB347F713FBA +:101E000029DFCF107ED2E994F6934340DF949FC739 +:101E1000A73EABDA33FDC037BFF37BE39DCE33E59E +:101E2000E7F4FF8162D7633D87CFE469B9A805FD78 +:101E3000779731B2D776FBA117C95EB7C6A3188FC3 +:101E40006FF717BC5F20DE078B8FB3C1CFE3F4EBD6 +:101E500025E0D7C9837A441374DD28A519CA53FA3B +:101E6000EB116B0FE667B034EDA78E5A6C4AE94A66 +:101E7000ACDCF011EA836034427994CEF7CA15FCE9 +:101E80007B5B55F228AEA7D2953AC9455B999AC3B8 +:101E90007CB0BBA7A80FC82E7BB9DACFFDF3363FC5 +:101EA000D71777FBBD7A2321BE7FD9CFFD8DB6B082 +:101EB000F0478CADD12F4C2FD20FE2074CC60AFF52 +:101EC00033EB100FABFD5C0F6C84CFB83E484F5125 +:101ED000B37B908FED0CE58DB8BEA7CBDCDF8DCD4D +:101EE000D125A85FD3D0FF189C272322BBEA7338E3 +:101EF00072F01DD6B541B4099371FC8E1CE2459574 +:101F0000603D64E0FE48770EF1D001F2245BA8AF9B +:101F100012ABFD3C6EA3D07A25C6E3349A1927791B +:101F200071F4FA9076A5409F17CA018B16EE6F15D3 +:101F30005FBFD764AE1B767FB470BFAFADCA8E52A1 +:101F40008AA93FDBA8207DFD7614FDE8CBFC3B1B76 +:101F50001702DFB57DC6A614DCF62A965D87FBE185 +:101F6000AC9DD6D31F00C424CF57E4A271B1BF3BB0 +:101F7000308F56BB9427A859CD842F4DE2EB474DA7 +:101F8000AC1BB568C1BC849C0D056F4B81BCDEEFFA +:101F9000F7AE33997CB5AF1DE357315F561EC65F70 +:101FA00073E4954D1A3E0F6A7D8AEFF33DE9B71F42 +:101FB000457A82394AF0FCCD7E0F5FAE11F23C1FAC +:101FC000FB9C3B887F58E188B215453A04D47802DF +:101FD000E31F8A580739ED7FE2E7FB208110FF5E9F +:101FE0000807AC4F9FF7433F81489CAF8351595F2F +:101FF00082DC659B5F28425F675F14F44B0EDB3128 +:1020000043F833CC368BF183036F14FC5DFCAEC612 +:10201000C43A3AEADD578175F4CF088EA1E1FCC5D8 +:10202000BF07CE1F0BFDE7C039A45C38712991FFB3 +:1020300053A5A4299EDE6AF2B8B90C0A0AF3F3602C +:1020400059904DA33DC848365FD7F03C1E35E68D0C +:102050009F0F95871A6DCAF238A8CEE516C6CD89AE +:102060003C13867A109E949FB73E365BC409BC79B8 +:102070000643E5FD394FC76E61DA0BDAAD73D52F34 +:10208000EC3FFAC5F8F0FAA330EF4157CC93C3EC1C +:102090008F0DB653D84997DE09A8CCB36F6E2F5C6D +:1020A00046F1A300F359187F698D5ECB1226E51B1C +:1020B00010DD3A19E76B668EA2F2ABA847713F2795 +:1020C0000AF617F849D5EC1C752EBE9F8BCE8AC137 +:1020D000F5A5ACF3751DC85314FD479981DF625116 +:1020E000DE7786F48890A7EFABF149EADCC13CB11A +:1020F000BC9E53D94AF7FA79C3944526E6A55529DB +:1021000019CDED0F3A7E6B472ACBEDBEF0FFD5A877 +:1021100045FD39FB1F85709D958F56C3F58AAC65CB +:10212000C8FF0C6636DBC8978579654E5EF436CC01 +:102130004B23BF2BCBF7DF87E0CB91AE47EE945913 +:1021400012F5D4E9EF66D525F0BC39F7A85A0DFC95 +:10215000F5572AF74F4E7F97E3E3DDD4479E38D0FB +:102160000DEA18FA7EF3730FA80B5CF8BB59F83D23 +:10217000009FEAC517975FA60F1CC43CD0537B6530 +:102180009297A1E05B193D784871E1E9EDBD32ED30 +:10219000FFBDAD80AB518EE52A92DBB3E795F5F834 +:1021A000CB2BA387A99FD3DFC9AA719A8726BDE14C +:1021B000E7F3C4BCC49B9F7E40C5B5C5B9E0BEBAB9 +:1021C00080BFB3A21FE897CE6784728F529E6328A8 +:1021D0002DF250C11CD0BECB91D10FA29F7CC599CE +:1021E00027687FB2300F2588F39CE3F2C36AF97E3B +:1021F000DF069C673D96CD6CBA089E0AE719C47944 +:10220000CE19842F8FE77ADFB0F188BB52B943EE45 +:102210007CBCC267C95CBE2F5CE2EFA5FC8A73C1BF +:10222000A1D7417F6E3BEDC051373C1CDD08876B69 +:102230007FE4EE3A8E87BB953E6D24E386AD8271D6 +:10224000010FB56318DF7282714F57337B31C0D1F4 +:10225000D3CCF53D48CE29B457CE3E54A5F639B679 +:1022600066F6607FD115F0DDB30ECAD0FE58651357 +:10227000D83B3CB8E0FEEE8AA36BE27C8D12ED20E9 +:10228000BF458986F8B99F9872B2BF003EACDF2A7D +:10229000F4A1336EC704C939F77148217F10D6BB4A +:1022A000988F55C9F320DB2AF87AF7EF54B5683ECA +:1022B00013F8937FA7923EF49E4372F232878AC747 +:1022C0007614E4653AF8EDF03BF97A73F6A27FDA1A +:1022D000EAABFD3AF96F238CEB764C584AF99CE94E +:1022E0000A959FFB9098F02FBCF37B59CCC789CB04 +:1022F000C33C5EC679A8A03F457CBC601EC5E3EB2D +:102300006D380FFFD9F370D61378CE06ED42AB547B +:10231000F775CA0B1B619CDE81FBACF126CC8FD21A +:10232000BA28AC0A7DCDE7E58FF1388593BFDA5E38 +:10233000C6E9760AE75951946EA754CFBE79DC39C5 +:10234000A7C5D6621C83315A2F0C05AFA25DBB43D3 +:1023500071EDD7E2860CEDDFE5F16D517F720DE78F +:10236000DF37D4040BA0FD2BEFE8A37D00619F0AAB +:10237000CF836D28C867DD20F2579DF3601B0AF2FA +:1023800059378433DE7CD629DB8BE6830F9E63E3EB +:10239000FE12339D736CFC7C61FE3C18D8673CBF19 +:1023A000B6C1390F555EEFA1C3BFAA8571193EFFB3 +:1023B000DB0AFC66E7F9DE10F2F5DE0F031EF99A80 +:1023C0001618924ED3106F85F2F5DE0FA771BE7C02 +:1023D000AEA2289FDCA65DE3A1CF20BC7C9D4D244E +:1023E00082F9EE28FFA869293C4B04FC7749ECAA46 +:1023F000B580B7391726E6E1B8B7C6FB17A1AB54CD +:10240000B982F970BC2E219F57CAB1E0098067F3E9 +:10241000C2EAD265F0FC4A402A0A7F37AC5350CE5C +:10242000DB531A433939FDDAB461F7DB76A6D21EE5 +:10243000BDBCD352C80EEF4CBE682C40BE2EAF9927 +:102440004D79F80D3CCE1430CC07119F9F0B481EE0 +:10245000BA00DE3E1770F177F7AC6BE9596E676D25 +:1024600083F619B269CC1B881ACCCA995C901417F0 +:102470005E42B519A906FABF15968B187A057C3409 +:1024800005502E13FDAA5A041F9B17F2FC92D54B40 +:10249000A73EE83EE7F2FD005F3FB13AB1CE5160A2 +:1024A000BD55C43F76E8B40BF05587FE1DEBA5F390 +:1024B00034E35B5816E5E56E7CEFC7F39DF1953884 +:1024C000AFF1ABC4B94E11079098A68C21FE32280B +:1024D0008F6FD7B74282BF0C3A77738780A3087F8C +:1024E000DD1128A2BFB5FA641AF15C154ADC89DF58 +:1024F0007569C0C0F8C3C4962CD5DB20E2AB00F6EA +:10250000AF909F4C890DFE60DC713526F9213B05AB +:102510005D22B10C9E9C60357BF517311EB83EA143 +:10252000DBA80F274EE8FF25E66BB07F9019CADFC6 +:10253000246BF701A433B3B581D228C65D07242CE0 +:1025400087A08CFA68D21AC387E33BEBDF712B07B5 +:1025500028CF7C5C5B7F0EE3AECEBC026A92D6FBDA +:1025600066ACF96A8C134B13359F86E36E60166E6A +:10257000C755776672A847C737040CA4EFC4AA24CE +:10258000C5AB2A57F0F7136D2D2ED3D65E86E7AB79 +:1025900028FD6B51AF04EA2DABCB354E3096B89584 +:1025A000017D3E0E2676229E8235FC9C6E2096A6EC +:1025B000678F3F4B7E76E8F28C8D7E5BF7AC6FB217 +:1025C000A52E7DB55FD02550CBECAC3EC8873B44F3 +:1025D0006245C6DE12BCB10EEBF13C5C857D43F07A +:1025E0002FCF6F0E09FE05FEDC877C61AEE83B4C09 +:1025F000E1C5DAFE0E9F49F23996C391A6F3753D07 +:10260000B3548AE702DD7E8D8786302D8A998374E4 +:10261000D362F66EE49F65011EEFBAAB2297C378D2 +:102620007119D00BE3A6DAB19FB28950EF1795323A +:10263000931A308E9AA638AA21E2A83B93EB72AF88 +:10264000417D7F530923FB512DF8A181AF57014FE5 +:102650000710CEF0C25E09B7C84276663EC2BB53D1 +:1026600049FEE63BD06EE711D94A3397BC88F8841F +:1026700083AF0949D00F1E3F29ED91AF73D9556043 +:102680002C05FB5BA895905D3AC8B8DE03B9FA7FCC +:1026900008D742E37D922BA68F1E517F85EF3FB274 +:1026A000AC52C4F3F2E8D26D35E01F2F6BD9BCAD4C +:1026B00006BA5AD9F2E856F4974F742F8FB8D77FDD +:1026C000273BFF5704E9F356D64F783AD929517C76 +:1026D000E864F68EAF62F9C4CE80896527DFA6591B +:1026E00090EAC0FD01D27F6F3D20517EDBCA1E29DA +:1026F0008DA9E0A7CB121391CFDEDA71E7C462F1A6 +:10270000A3E663208633F1FBD289C5F2F956F6AC15 +:10271000A7FC9C959D7EDB2EE63F9625A7A13CACB1 +:102720004FEDDDF9A67FD04FF1A101277F94E78F10 +:10273000338D9F8B9BFFFA55513CFF713490903441 +:102740008C8F1EFF33CAB73958B6288A7EDAEAD78B +:1027500002248F77AAC969860BDE3B236A82F8546C +:10276000DFE6A1C319E4CB8AB3E990DEC3F30465C5 +:1027700016B2D07E2DD42D5A0F9DEA97A8FF76B1C0 +:102780006E2E9CAFD2F2F856F7BA4F29B798E98A65 +:10279000A7CBB5DEB87A540BD178E3351EBFFE3037 +:1027A0009018AFCDE5FBD62DA3309EB06F2BB7BBF5 +:1027B000C5CF73ACFD0C87739314B2D6019C9BF20A +:1027C000FBDB03FC9CA732C0106FEB947ED2170B8F +:1027D0002F1FC8C9AE79403D0DE35585F3694DB54E +:1027E0006C453BBB3E95A667AB7E4A43BBBC4EE304 +:1027F000FD6CD2FFC8CB86417C16D15916F3BF378A +:10280000A4925BD1DE6E32A03ED45B67669AD05F45 +:10281000C533B29817BDC9F8237F6F8B7E62A25E65 +:102820009A97BB529D34DEA698A8C78EF37AA6A8C5 +:10283000C74E88B2F3FDCDC5A89737D50AF8D8DBC7 +:10284000A22CE0D3FB17E3FA78535D35C1B94937C1 +:10285000491E06DF2F2CFABE3B95213834F43BC1CC +:102860007E6DB24E79FBB31409E5E5ACFEEA7DBEA0 +:10287000A2E3D47378FD2DDFDFEA5E2F03BDAFD373 +:102880005C7E46A9A0F726C6CFDD2835169EC96511 +:10289000B9C9E629FF6583F56ED4B87FD4E2F05557 +:1028A000CC62E87F80E65CBDDEC5DFB26DD9787EA4 +:1028B000369A28786FC07ACEA3F78AF3577A07E75B +:1028C0002F0DE500865C68A6E95CB0C33F43E9B321 +:1028D000CE5496F8A02BD5444F478E0BEBFDB52672 +:1028E000FC9982F15B00EF1AF7AB697F4C2EB7E8D9 +:1028F0003C8C333F584ED0395367DE67CDAFD6BBE3 +:102900005E75DEB7219FBBFCC107849E516A666B72 +:1029100026C5BBF83EDFFCD737909EE93C7E6314AA +:10292000F5DAC1CAE61EB4E38E7E196ADEEB534DBA +:10293000DB6AA6E038896DB84FDA6ACE36E81E0C3D +:102940005D6139B4034A1A63634CC3756139ED1B89 +:102950000CB032F09763099A9F6650360B53CDE462 +:102960008DB48E38166453705FC1B4D98D2EBDA15D +:10297000087CFACFA46A5A66A3DE6926FBE08FAE14 +:10298000A0E79D111EBF2F846F83C6D7A91F06E243 +:102990008FA0FE0CB6ECDECAE32E43D07F33D0BF4F +:1029A000DEAD07B9FD3D752C487642D6D38162FB7A +:1029B000184ACB72EAF730D2A002F17909E547B69E +:1029C0001EBFF346CA4F7F2D4841DB83E179471391 +:1029D00023C0ABBF652BD93DB9E5DBF4CCD319F4EB +:1029E0002BC51F0D7E3E18EFBB9862221D2DBEBF6A +:1029F0006E2707E432773FDB793F896DC3E2E96FE9 +:102A0000F278B25FD2E60E839FFDEC28DEDB713AEE +:102A1000CC0C948F83AF5D4C70AC3ECEE563A19E31 +:102A200026BB0AEBDF8140D9E03D0A797AA4561231 +:102A30009F74A7D2F42C11780B5A49BC548605EA2E +:102A4000B85F065C41F30AD5F7E650FE02163F92E6 +:102A50009DFF5E0FDFC92E2539DFA53A890F4BEAAE +:102A6000FA886FFC7A417F3AEF4F35447F7A417F95 +:102A700006EFAFA48EF35DD802F85CF204F6F77DA2 +:102A8000E41F4587715C7A448B6E23FC0E85AF434F +:102A9000C7A795F617C1B7F3DC24ECC7C6540FE9F6 +:102AA000DF6E61873656D9744EA203ED911FF54B48 +:102AB000A7D02F5C4F5F8087EA498F1894977B37A8 +:102AC000133F95F3AB5E5F4EEBBA8C9F979528B79B +:102AD0005701844BC6BCF12C3DBB15FEBDBBCECC13 +:102AE000B6C2F74CD0B6715C0916104B8AEC5B7419 +:102AF0001B2F925ECF94F17ADDEC88B61ACB55A2EB +:102B0000ACE4A86CA836D92DDD9F33A81CE2E5A162 +:102B1000FAD5CB5E34B05F639468271DE1EDAABDA2 +:102B2000FD64543E0EC619A91C1A1EDEBB8D5F71D2 +:102B300078478976EC286F57EDED6728FA842DA049 +:102B4000878BDEE0AF6FF5C62DB3FCBE25B3D35344 +:102B5000AFA436E3291F7C6DDAD87ED73887FA27F1 +:102B60000FCB1727911F5C7AFB64307103EACD6F9E +:102B70006FC82E6C8B41D99F98284179A2F162DBF6 +:102B8000E209601F5B96921D6D167A6359CB2DBCCE +:102B9000DCBD5C453DDFBC53A2F551B3D0078C25AD +:102BA00054B437EF54254F77413FB704431EFBDA47 +:102BB000AC27549EDFE9B533CDE5890EA988FD69C0 +:102BC000EEF47BECABF37E59CB72D23BF972F76437 +:102BD000826799D0E7CB841E07C337B109E8B72CC9 +:102BE0001824384EECB96722FAF5EF48991BBE85D8 +:102BF000F1C89B429EF374CED389CF1F0D309167ED +:102C00009738FC09C07D62AD3CD0356BE87E9A8573 +:102C1000DD28EC676990F7D39CDF5F48E6B0BF77AB +:102C200036B43F4AF9334A66E2756087AF096A1ED7 +:102C30003F7A59629B474F9FEFBCFF2AC8CFC92DEF +:102C400013E38FB4BDF3FD1E81B7C17DE9EC05E848 +:102C50002FFC7BF9E2DE6AE00BC0DF7D9F325F383C +:102C60007AB1F94C8AA11D77E87054C43F9902707B +:102C70004F1FC47FE0CCCC31D7B9E23DEB04DE7707 +:102C800004CDA2F82F9CFF3B2B433E8C8FBE73E4F8 +:102C90004ADA47BE57CDDC80FA64A5C08B838F9398 +:102CA000608FDA5CF2D6DC7DC7E10698E74DBBCBDE +:102CB00046492E7EBE69F7E645E3CA116F65B371DA +:102CC000FDBD7237C7DF8D3D6BB7B579F48283C721 +:102CD000CCC788C79C803B8FC79A444731FFB5B9A2 +:102CE0002EA1CA45FCD7A1F07893E8EFDE4866E351 +:102CF000C3D0EE0DF6BDEBD621BF1E59501AAC1B4A +:102D0000C4D7B2285F47BF21FCEC936067DCF33D7A +:102D1000D1333982719537147E1EFD44CF145ED6AF +:102D20004479277C87E71BE27CFC899D53A85C28BB +:102D30008F67D1256F1FD3CEBD266F6731FEFE7A18 +:102D4000C06A85AA73838963415CD7452E5D897605 +:102D5000E8CE1392897ED6BD91CB7F619A43DBD5B5 +:102D60000D295372AFDF8243E46FFD262879F236D6 +:102D70005A538B1F7DD3356F59B128BEA4E8F0BEDE +:102D800088FF3CD2713E0AF2B8F648EBFF5350F28E +:102D9000EC4F8E5BE53D0F1059E1CAF367E8077908 +:102DA000BF6BCC55AE1AEC873086E7EA99F3CB8A35 +:102DB000F933F67BD7FD47FEFEB2E518D79B5F934C +:102DC000A17DCB53BACF74DF6370B69E65B9BCDD0D +:102DD000233A68B9BC7D1BC13990B654D376F77ECF +:102DE00055FE1CBAD0674ACB0DDB510E0F413FC7D1 +:102DF000693DBFCEC9AF11F737653DF169B9E5E16E +:102E0000ADEEF8BC21E2EF8CF57AE2C35DC1EC5186 +:102E1000CC7B6A0895B7FBE17B97C8BFFB6CD7E416 +:102E200076CC2F73E2CFCCDE26DA03AE711F65D6E7 +:102E3000C23DC5F6BBE9A4CC5C9CFD2F298E186071 +:102E40007D741E29623270C8A12DE0B88FD63D195D +:102E5000BAEF21D2C0E3998D212E1741ED6DCA3F03 +:102E6000DFD070CAC0EFA72778EB3BF57CE07C622F +:102E7000BEDD464BA17D58A7FE81D7BEC43A11BE28 +:102E80007A5F36C0F3E0164F467FEF330AC3B82AA5 +:102E9000B39D387966D838B9FDC5F9E965E574B4EC +:102EA00082E789323B8DF723F84D85F22F945A85BE +:102EB000F22A5FF5273E1F2AB27FE28C3334BF0827 +:102EC0007E1C61BD2D2993F2896BF6EAB47ED8731E +:102ED0004CA278E7B654ED5694575847F0BCD8EB5F +:102EE00019F9A9A3275A4B2F403BF46B1EF7063E56 +:102EF000A942BF7EECB11283DBE9E4C5D7B8E6EFA7 +:102F0000E4C38D5ACCF7CD60FD92915DE757C7AA17 +:102F1000895B430087146948E0388E1E1A7D35CFDF +:102F20000F1935D69C85E746603D988B47A15C62BA +:102F30003E892BD71F97BC7EA58EF9F501CE57DFB2 +:102F4000EE9AD0817C356AB239CB47E7342A16E154 +:102F5000B99451E3CDF7B17D7BC9A8458BB13EC093 +:102F6000C2EFE1A95E84F1925117F1F28C6EDEDEC0 +:102F7000B1137781DCBC49FE7F623BE2675D88C7A5 +:102F80000FDA049F9428BDA4BF4A407EDE043BAA0A +:102F900029692A6B2DCDDB29AF24CAF7AB1C7D3004 +:102FA000E7C2C486906B5FCA5FEEECC3647B96B9E0 +:102FB000F645AF94391D4ED5980FF273802C7FAF34 +:102FC0000FE2F7999077BF08EFD944F9FE08FC5A51 +:102FD0003AEFE7CFD0BA2A2D29C93D166F8E71F985 +:102FE000369A32FC6B2432F3EBF15E9351B330EF3F +:102FF0004AD50EF7A03C3BED0BF9645FA8CABB6F46 +:1030000058F3DCCEBC3EAAA67B857A901E7BBA968E +:103010005CE9AFA4FB93089F8F84AE2539DF1712BC +:10302000F9FF2C4E796578C6EAED5184975C6036DD +:1030300075D353E3E8471FEE07FB8EFB679C7BBF0E +:103040004D29EFEB71FBF9EB275ECFE5A4FCA3FB69 +:10305000F279D97864A22EEE43FF638AB877236DA4 +:10306000B0F467311E82FB4D2EBDFBAF216E47DAF7 +:10307000528B3DF9F57BD5440EF9D35FCEF3ADFC11 +:1030800089ABB7227DBB532B892F98D897AC16A458 +:103090000AB22F96E624EC2749FCD3954A53BDEAA1 +:1030A000FA4C0EF70998E1B3163460FD9DB943E878 +:1030B0006F2CF00D04006FD535CA876EBB539897FF +:1030C000D917F2E66576A4609EC85CF24EF693725C +:1030D000BCBFC547F10735663522DE14234EE70B2A +:1030E000A76C33668B2D190F9CF97C4DB9AE315806 +:1030F000CFF34D31EFB65A9C772B84C7C147215C83 +:103100006F14C0156979A807E5E103B6D3C6034576 +:103110003E71FE20D2C9486FAA2DF7D1F750436FF8 +:103120001AF537C5DE5CF0F8A2A6CFC7E35516DE68 +:103130006F17697998EA078FFDD9118CEFAB2DBB1A +:10314000A85C081FCC98CA4E7E5E753DCF271CAA8E +:10315000DEA11563A8DE4B17DAFF82F4FD373C5081 +:10316000887918A99E9E37292E90A5A743E783AF9B +:103170008DA5793C54CBF8B9FCAB1F277AEE067AC3 +:10318000A2DE7E287382E295A1FF0D564F223D42BA +:10319000F5C1E6F3F302DB001E97DED36A010EF7FA +:1031A000F99F12A15F529D345E04714AFC98E17C44 +:1031B00026EF237FE103932547835FDB1ECDDA48AB +:1031C000F7C9407736CB251795B68FE27E193EFFBB +:1031D000C2711C3E70F2D5B5EE6CFA274803E86761 +:1031E00041A52B8FB8A05D21DDAB4B0AF384CF50F6 +:1031F000FED207DDFC9E59D6023FF087A688710AF1 +:10320000E5D7A1B75386757A69FF30F20E74D98E6F +:10321000EBF28753597A76449768220F238BF65244 +:1032200015F2B93EB6CC467E6E07FD8B60056299FD +:10323000B5B46EF2B1815258BF577627ED2AB14F1F +:103240008BF79F04B625BA2E28A77B152C3CFAD203 +:10325000115DB62E588E72ACD1FEB95AB9A211EBDF +:103260002B362F4FDD96FC19D69F2AEAAB95DF78D7 +:1032700011EB5789FAEB63AB1B715F5813F5A76D20 +:103280000394C2F76935EC0105F85FE94E1EA1F120 +:10329000D7F0B8579A25FB501F57D51BB43FAB75D5 +:1032A0004319BF7F83C7CDD20CE083EF9316F2EFB3 +:1032B000E16E0E2F5B95FFBEE52AF83EA1817F2FC0 +:1032C000EBE665B622DFFFCFB0FDF88C41E70D22BB +:1032D000DD1C7EB6D0699FFC15D6AFDCC6BFD774A7 +:1032E000F3B213E703AB26E1BECD946E66E3BE56A0 +:1032F0009AF531CCFB73EC649B7690E45109BED413 +:10330000837AD1919F8752CFD1737DAAB707F9777E +:10331000776A2F959DFB6A6ABAF9BEB10EFA0AED7B +:10332000F09D255CFF163EFD9559CA638CA0433A7B +:103330000B9929CBF77B6D46710680288DFB4CE0FD +:10334000CE59F75AC5F89DCBFB44F8219F3A7CE64D +:10335000C4850E1DBFD8C377AC06F8CC9DAFD6068A +:10336000FCE63E87B866AFB7FC8D5E6FFD55CF7942 +:10337000BFAFC879BF2F3CE22DD7F779EA3B70F495 +:10338000A47AB62E9C82F86CA2386B4F8551897155 +:10339000B3CDE2BCEB068CFB4FC1F3BB2D22AECB11 +:1033A000E3BB1B312E0BEFEF4F65E869B43CB4155E +:1033B000CFE7AC4F356D5D48F688C76BEF1371E012 +:1033C0005D42EF80BFB9AB04FDD3CBD3928A71DAF3 +:1033D00028BFE7DBBFC226A3D113B4AEC7F5BB1627 +:1033E000CD309F6B5DF578095F4F19CEFEA9C224E1 +:1033F000775EE8E3A27F875FEC090986FC94AE4A1A +:10340000D07EE16325DC9FD9ABDA8F97CCC579C23A +:1034100038C817561F9D6B1A9F3469BD1F69E0FBA2 +:1034200089A13A5E1EB7B24FA2B825AC47707EB1F3 +:1034300055DEB87149AD375EDC53C6E19F20E22D01 +:10344000418CE3C0F38F5AE3DFE2B80B75EEA7B40B +:10345000869B2B51AF68A1F88FF0FDE9D7EEE1E72D +:10346000B174AE8F8BF87587106F67FB754EBE51C8 +:103470005DE90917BEAA756FBE5197F0DF3A449E09 +:1034800051979FE713A47F2A178DBB0DAEEBC0FFAA +:1034900071E94FA5CE77BC6206DE4FC0F390F7E02E +:1034A000BE0FE93DE3972597E13DDEEC908C7ED79A +:1034B000365F6E4C64B01D6E99ADE4FED81119FCF8 +:1034C000B190CAEFCBF01B5EFFEA5CFE585BCAF01E +:1034D000E4452A754A7AEC0C3CBFC0E151A2EAF1FE +:1034E000D1500E055892F70FF55DF41ACAFF749E7D +:1034F0009D29F03B710B5DE77A41AD5613A83FA6BD +:10350000A125433BBC6DEA83EE756385CEF96A77EE +:10351000E65CEB63468BB1BBC4B9F92E716E3E4FCE +:103520001F912F74CFE8D7D971171D4B75CED7E1F6 +:103530007E1E87D2EFB056BBCF6F38DF4B7527DECC +:10354000C0168EA91F3CB7846618D7817E5C07E23F +:10355000BA2F9AA6BC0E659B7A5CE47596EA45F292 +:103560009BF6F8ED9FD13A6DB38F61BEF39EA53EF9 +:10357000824F1DD71975E7E77C20F4A72AA74BD106 +:10358000DF652F717E5A3F6191B5CCC38F5EFF3EE0 +:1035900068029ECF83EE8ACDF3291DF9D978E9CD53 +:1035A000243FD303F16908FFDADAA6F9FE7ABA6F8D +:1035B00094EC53A19C3D17B12FC47A8E7C5D19B653 +:1035C000EBF422F2D88A791B2EFE929DF3DAF843AF +:1035D0007BDD997818F13AEA2F2E3FDE86EBF4CEA8 +:1035E000E679328D2753BFF69799C8BBE3F85FA001 +:1035F0009B9E79AB35F134B2E3A8BFB83AD786FECB +:1036000083C823B59BF8F9D7C2790F756EE155BF12 +:10361000BD509F3B48AFCA40623196956301EFDFD2 +:10362000351079B6A346DBD1592EFCAE127C93CF70 +:10363000C365227E4467B0C57C31CE84E56A8C0BBD +:10364000F3F98D1A6BAF23799759F21998FFD80CBB +:10365000986A283FF43595FC55A6C4732BE1FD8E7E +:103660009FD43227EE20F68593F752396E37237EAA +:1036700012BA89DF358CE74EC67B367AE9A983DD3D +:10368000C767840DD0D3C0C8CF64CFBDA25F433A13 +:10369000AED212933061EEDD09894710E65B700E01 +:1036A000185709D937E27757FD5B102FF9FA7E5E7C +:1036B0007F9F62AFC2F73F50EC5B75929BE2E7F0F1 +:1036C00086E2C703FDCB35A4DF8E748461DE5BC761 +:1036D0000A5F15964FADF15988BF5DF38F56AE80E6 +:1036E000E77DF37F062E1263DF8B25E85ED24CAABE +:1036F0009FF2379D7B48577E9020FA95D9FD9EBC5E +:10370000AD5D95CCA6D08A0D8E085F9F1F407DAD24 +:10371000E23A00FDC515DCEF56ED023FC472AD4341 +:10372000806EF749BDD7A1D1FC9EFEE78BF05CE02F +:103730007DC1DE57B0FC8CFE97BC5CD67B1DC62DD0 +:103740005ED21354BE5FEAA3FAAFEBB7F072B08F4C +:10375000EAFF41BF8397CBFAA87E67E0DB8B165F59 +:1037600002707E87DB9F5D07DEA9C435D6F85589D8 +:10377000D141977E1C9F7BFE808AF67595F56CD0B3 +:10378000656736A25C609ED0AADEF9B80E1B5F6347 +:103790004D45F48FAFCDB205759F4ABF07D01F1FAF +:1037A0001F837EE1D57833FD69F5BB56C776474464 +:1037B000BF3FB7E44FA95F0953C9C7E7041E0E19FD +:1037C0009F56BF0770DD307EA7E8379BF67D4AFD28 +:1037D000CEC73C9EF16DA2DF4EB368BF93D678FB97 +:1037E000F587B93E9C94FB98E83EA9C69A87FD4FA1 +:1037F00002BA2F3FBFF644DF4931680FE34F02FAA8 +:103800009E677BA2E3A423A23DD0F13CDB13BD263F +:10381000E504FC40AFF3851FE93269A7680F74190E +:10382000497BC41BE27D529B680778C7765183FBB6 +:10383000C507FEFA64A5DB0F74F63DEF1FE2BE87F5 +:103840009A30B7DF83E37E2C4D9D8EE30E48CD7416 +:103850007FC5760EEFB6B86F11B4DFF527DECFAEB9 +:10386000B5BDD2BC3AE49357A4A9687FC2B2B32FC6 +:1038700047CF09DFE897F03CC1C49E84CFA679F119 +:103880003CFF5DD2F1CA28AE03572446AF75CDABDD +:1038900032B783F7B32243E356EA16C3F1F0FDE4EF +:1038A000F060BFF87D397E376C86E7DCCE821BE0A6 +:1038B000C4FB6EE96463851BDE01699ECEE936D5E3 +:1038C0003D2F80AFB9087C78EFB31B3E357713C32B +:1038D000762AC0D5AC0FC283EF113E15E059AE0F6A +:1038E0006D370EF6CBE417B4C7785CA7BDFF8E1C0E +:1038F000E609B5774B26C6355BC7ACCEE17D35A76B +:10390000E8CA5CB08F699E971DD0D77C0EF3A7CF15 +:10391000BA372C667AE2A3B05EC832D7BED04EFC6E +:10392000CF25B46EF88B70D178B0D81749CEA67A6F +:1039300057A263518EFB44531FC0F819C29B86F2F5 +:1039400063311E1FBE525E93FB0E94F719D5B3F977 +:10395000FD6B9CAF30EF1EEDD9BDB8AE9882E7F09D +:103960004C7A3ED67F3044F1E59842C1B21EE15711 +:10397000AD9CBF6E3B9E1B98B1DBF9BB1CDD63A603 +:1039800040BF8FF772BC3C94B2C8FF6E4FD5EEA417 +:10399000BCC9944965275EBD3BCAE37B57CAABD21D +:1039A000F8F7809E10F13B35E6B58301B692F25FE1 +:1039B00002C76EB471BFA70DE38E0DF47740FE1CF5 +:1039C000FBE906B8B09FA891DE3E05FD990CA37BEC +:1039D00005AE948F85DCEBF461FA6525AE7E1FD7CA +:1039E0009206EE17AD5CFA94AF981F375C3F18470C +:1039F00072FA794217FDDC74EA7CFBC9855CFD74C0 +:103A00001BBC9FA1FC97C27E60C41CCE2780F10D19 +:103A1000A0EFBDE16A9E770FF8A3731271F6A40CB4 +:103A20007CB2BF9C5978FF48A0529F956623EFFF58 +:103A30006994B90AC4EFEFB7DF06EDF73DC7E90DAA +:103A4000E531B7235D77F372BE3D54FFCAEC61E701 +:103A50004BF477E6BB2F7ABEF36DA17DC700C67B22 +:103A600041BE76C7787B26E296AA902375B7F0B35D +:103A700044BCFAAC7ECEF3DE8317C2DE7B4A80AF55 +:103A8000099FA75E9629BFCED1E385FD3871CC0D85 +:103A9000621DBF5EC8DB53B08EC4676F2A4ACF4732 +:103AA00050FEA0DE03A95A2ABF14E6EBC23D298BC3 +:103AB000DEB7A61AE839BF7F6D00CF293C0AEB7F3D +:103AC0003C1752C932E3B0CC5E5069BFEDD1B2BEF3 +:103AD0007194B4AD65C6E13D1B778975B103CF5DC7 +:103AE000D31F1E877AE431BFFD2AC64BD26B23E673 +:103AF0001E98C781673EBC1EEF23FAFE7E9561BF0C +:103B00004F6C3E39EEBB48EFE7555A57BC15E6EB14 +:103B1000E5B55846BA4FE7F27CE0F80F7237A35C80 +:103B20004A8CEE7DDC3DEB30FDFD8143B39E358755 +:103B30008BD726F5C45BA8DF4A7AF97AB6A48ED172 +:103B4000799791F77F98F238BBC3BDE670FC03E329 +:103B5000FC315C71F638078EF3736ADD629C927DEE +:103B6000FCBCE4EE59CF8EA3FEF78BFE2BCFD93FE2 +:103B70008B149987D3FFE3A2FFDDFB3FBC17F1BB9A +:103B80006FBA4AE439F4E4B3D7A31FD40DF8C77B66 +:103B90009FBA2F187815E7593223C48AC9278C1386 +:103BA0008EB8ECD3E038A7EFEDC07E04DD400CC644 +:103BB000E139A4124BA5F81CD0C183BFEE29B95737 +:103BC000D10F29591731D14E3CF1E4E171C5CE4BEB +:103BD000C078E3879B9783B7DDA2FFEF43FF18CF41 +:103BE0003EF4FCB3E3106F8F4F07BC0D235FD0FF93 +:103BF000B462FDEFF7F78DC3768F3EA336D1B921BE +:103C0000A5734C0DAE435F80F53BADA71264CFFCAE +:103C1000C6B279B89E7A39CCCF2BCCD4E239D42B2A +:103C200020A256C6C27D44EFBE8EAA3491FE09156D +:103C3000ECF7A8C7BE9473DB99C2761769B01086FB +:103C40007E6BC07EA525F7F87C3DA7C5BCF56BB49F +:103C500038D9850B100E636838E61CF1EA2380C35F +:103C600076DB81C27617201C30EEF421E09895F3C4 +:103C7000F61735E236FDDD3DE8EF9922704C17F37B +:103C80009A19E5E7B8C16A7BBE2F8B8CE27E12E001 +:103C9000C7ADAFFDE0167C85E2815CAF16F65BDD5B +:103CA000E62D7F0BCF78433FB7BD732DF14D4D9C73 +:103CB000F562AEC75078296C0FE3B3E030F471F4CD +:103CC000BEE33FD588795D20E6E5DF9DF0ECAB4EA5 +:103CD000DDE66D3FD43C14FD3F662FD645BCFB5F4F +:103CE0001FB01768FF3ABBF6591BF58022E2472543 +:103CF000F5FCDC7049BA8BE070EC45491DCF6F389C +:103D0000D8FFCF21CC477DA27F72D17B732E0E27A7 +:103D10003647DCFEA511DDE9DE3FB0592FD9CB9245 +:103D2000068DF45B49031F0FDADD43F227C675C623 +:103D30004B3BF5578AFA2BF3F5EF2F56FF10FAC7D6 +:103D4000E47F727D20B7A83B71BF07751CDE03F0CE +:103D50006120B1DBADB7E4043F57E2E49374633E06 +:103D600009CF1BA9C27C997CDE4892DF5732BA3A50 +:103D70003913F3919CBC11275FA4F0FC5C7EFEC25A +:103D8000DF96315F04FA3B7D5CA2BF632445F8FDFA +:103D9000694EBF43D1319F1FDE3F2747F72DE464B3 +:103DA000CA9777FC60D4A9D81EE6F5E3E1E6D53AD8 +:103DB00038AFE3A66B5E85F371DA17DE0B55980713 +:103DC0005398FFC2147E1EC8C1770BEBFFF5ED3888 +:103DD0004E8CEF27DFB63F40293E01C374EE972398 +:103DE000399085BE807501ED17B7E2F5AF5583FEBA +:103DF0004CBBF067F27031DB407D2CC7B83F558873 +:103E00002FD9F0CA89829DCA18CFBC98FEAED7A020 +:103E1000FFFE65BA77BFC3E0FE7B00F46431BB5A96 +:103E2000D81F6E44D23D10C2DFEBD06C8FBF97BF5E +:103E3000A7BB9CEF9FE7EFE32DE8A7503E3F2C90F8 +:103E4000CF427FCEC47B0D8BF057A758373972EA2B +:103E50009CFFC6FBDCE97C518CEF83FA637CFFD2CC +:103E600069F78B088FDB3A4F597C67B5B3CFC18FA9 +:103E70007CBD1675E2D9B5BFF29CC7FF45442E7ACA +:103E80006E9FD58EEC5E89CD251115F5CB3D259124 +:103E9000C3489F136B03C45FC70BFE6EC801703B22 +:103EA000517EFA374CA3F39707370422F4770DD7E6 +:103EB0004C8EB8FDBCFECEE27ACA79FE46ECD35FEA +:103EC00050CAE317B34A4DE7DE5D15E522B166C778 +:103ED00076773C35B146227C02632D4279FECDDAFD +:103EE000F97E775E8E93F7E7940BDB0FE61D0F4CA0 +:103EF000E0F98A023FE27CF7B206C140CCFC2CFA22 +:103F0000D137897BA1573F73FFE1FB011FAB2F091D +:103F1000D049A82BCE7CEF309E07966D2DCEE3E3E3 +:103F200099C3AF417905DEAB487954F108CAE3BBC8 +:103F3000CC47F1E177D9AF22735C78F97C29BF07D0 +:103F40008175FA293F340DFFA07EFE5AC6EFC91FC6 +:103F5000BDB1C75B6E664BC6E0B9A7E66D7E9695B0 +:103F600030AFD87BCFF415A57C1FE44696EC4039E2 +:103F70006D17F1815B7F305DC5FC9E9BE61855B2E5 +:103F80002BFFE34B02EFBF033E365DFB5837EB5987 +:103F900015E33D6F3C3DE7DACB18F693ED18574F2C +:103FA000F75916DD675CDEE985F35CF32884DBC92D +:103FB000231D0A0E65AFE4911FE7F9B5526F7EEE3F +:103FC00048EF536D177C56789FEA48DB6FF80FB6C1 +:103FD000BF1BDB579CDD7E7D79328EFB24CEBD5D21 +:103FE0002AE8455C6F490ADF2F5A1F3DC7F7187C46 +:103FF0009787F95E337C7B3C7F8DF72CDA0812DDE6 +:1040000057C9EDEAC114BF87A0D51FFF3C9D93FBA4 +:104010000799F6135BCBD821BCAF242D4926E623A4 +:10402000DAC6174A91CFEC97E5729F2B1FB135BCCA +:104030007837CA694FA95F9CFFE893B15FFB8FC6D1 +:1040400042CCE768F55B51FCFBA0F277F97EF2FC0D +:104050003F5A64DF3EA337F951FFFCFDBE3974DFE0 +:10406000EBCDFA2285E24BD80FC0FFEE634FCEC3F3 +:10407000BF8BD7BA3FCC72A417B22AAE5F6E7E5AFE +:10408000263D71CB1361B26B373F75EB4357C3F8D5 +:10409000D20FC2FCEF133E75E3C33C5FB295E0B9AB +:1040A000F9D96BFE6F5ACC0B8F5EB6AE1571B5B4F5 +:1040B0001545BB7C6B807D15F77D1C3C38FCB740FB +:1040C0009FAFE07D9637EF2DA3BCB93CDF2A50BFF0 +:1040D0000E4FE1B3AF2E2962D78E08B9FB7D98DF72 +:1040E0005320ED3D7003CDAFF74B345F0928F25BF1 +:1040F00018EF87629E508FE6917E54CA4E81EFBFC3 +:104100007F54E2F3EA9DFE001E31BB79EF03EAB271 +:10411000F0A07D70E05DB0777E1BCAED02A3AC1A03 +:10412000EF4958F0C47ED2D3B73CF1A78E4BE1FDE6 +:104130002D321BB81AF4D5ED7B65CA87C2FD4FEF4F +:10414000DF07E1F7E7DF462A11EAFFCD5B8BFE11BF +:10415000DAFD0EF4621054CDEFFA7EABFE1D96131D +:104160007A12F5E2EDCF79E5FCF6BD6FA8382FC3E2 +:10417000C70662A048AEF8C89B1F5F58FF0376468B +:10418000C57DCADB7B37505ED9ED4FBFFB2ACACB5A +:10419000ED05FAE277F83F9567DBF1F74A0BFDECA6 +:1041A0009FCFA324C6BDA38BDABF7C5EA3D01FB76D +:1041B000ECFF6017FE7DC5DF3FF54FBBD280CF55CA +:1041C000FFF6CFBBBE8D7ED48F8206EABDDB1FFB20 +:1041D000EDAE6FC17CDF7D2E405701FCE1878F3C47 +:1041E0007C2F94FFF0CAB4D9129483068F8BFCE124 +:1041F000C98FC798D0CF377E78E558E4C7FF0F53F3 +:10420000B692DF00800000001F8B08000000000055 +:10421000000BED7D7B7C54D5B5F03E675E67F23CCC +:104220004926C34C5E9C04122306996040B4514F4A +:10423000222258D401D126B6B543401E1A317A7DC8 +:10424000E47EC5E6E44108218141630C0464006911 +:10425000A9481BF894E2ADB60322D5DBF6365AAF77 +:10426000AFA20DD15ADB6B71B48A7EFDF47AD75AB6 +:104270007B9FE4CC2408B5F7FEF3FDBEFC7EBAD9E3 +:1042800067EFB3CF5ECFBDD6DA6BEFB9EB89CB2743 +:10429000B014C6BEC0BFCBC696279B188BB846EBE2 +:1042A00050636C0663DA2189B109507D4A944C4F02 +:1042B00093BC8CADC27F6A8CBDB7FF13A75CC1D81D +:1042C0002989C56CE5F07CE073A7EC61EC98CE62BF +:1042D000CCCFD8338FBF75EC7F41FD2FA19406570B +:1042E00080B1DB0F39868714467F5FD0FF8D5CD9A4 +:1042F0008765349741B9EAF1EBAEBDA4024B4700A4 +:104300008667B7B358BB9A32F6BDDB5F7ACBC9A0DC +:104310009F2AB358DED7C6B67FCC3E73B22278FE52 +:10432000D8BA0F6CE74339F097D71996CC3E3C5476 +:104330002AFA15C2BCF01F1731D678DCFDECD1D2B9 +:10434000D1F74BD554CF3BC9F08F0BD9855FD870CF +:10435000BCFAED5BB0F1F12C867025E2EF9326E517 +:10436000D9A30EC66E7BE2FAF4D019F01C3D0B3CCB +:10437000AF90F8BC3E4ED767A9D980E703C9860F36 +:10438000E03DF99A2B321FDA4EAEF96B014B65EC2A +:104390005D47EC26C443EC6997BA139E2F7EFA154D +:1043A000A70EDF3FF9C40B4E6D2A819326CD843AC8 +:1043B0001BF97B91417D95C42BB73F921A75A5419E +:1043C0007DF5A7735EAF40BA2931A24364C15C2D6D +:1043D0000DA7974DF0AE8A001EB15FE4F022E9FC14 +:1043E00071E801844038ACF49466211D4FCC41BE85 +:1043F0003B1D1D4DB85584FB426837FEE0649ED3DB +:10440000D315207506A7E2785D44D7933B3E39B6B5 +:1044100016FA477FEA54E58BA1EE883973000E63E4 +:10442000BF4DDD1D184B6F66FB56FAE232ACB5D0BE +:104430007C13E993C8072B13F800DF47FA9A783901 +:104440001D1FC00C18CB3E1B78FE3E7CD5AA5A1C03 +:10445000BF98786B5EE3D2910FDE2C77455CF0E875 +:1044600084437BE85EF86EEC7907DB09AFDC34FD52 +:104470008F0E2D75EC7C7F0FFCA859F8F13B8D5207 +:10448000FB0478EF3B46C6741B1BE54FB33DB4DA23 +:10449000C6340B7E56B9626F4AF05DF67337DB0D9A +:1044A000DFB5FDCC2DE13C6E7FD8117101BE6F4FA1 +:1044B000625184FF8FDBDC1103EA0FFDEFA69BBE88 +:1044C0000BF5F71F7631F82C5BFEF04F083FCB1849 +:1044D0006B60A03F9E79E2DE533F453EDF6E632E68 +:1044E00015DA930748CE972F511B5A33E0BD27BFEB +:1044F000F83EF65FF9181045C2FECB6F92A07EB26F +:10450000DF25E1F74EFEFC151AFFE4CF530338C751 +:10451000FF38F893F359D9E8FC97F739B4212B7D8C +:10452000995D1BC12FF287B50E08B875A07B10F9F5 +:10453000FE567CCEDF93BE10B28372742B9693A08E +:104540003C94AEBBCF8FEB47E3DDEE8ADD13482111 +:104550003AE7C8B388CE3948EF5BF7C4CFE3C74228 +:104560007E6E77C696F1FEE11CCE1783F4DE53AA69 +:10457000C4F949B427BE6FF6FF17B528611CFEFECB +:104580002A176B1818472FFD428C7BEB9ECFCF89E3 +:104590001FCF10CF13BFC39FDF2D3103F53CDBEFDF +:1045A0008EEC0638EB9DD192CC327A1E1C281BADC6 +:1045B000E788EF623D03EA3F75B01AAA27F1FA4196 +:1045C000275B41FDD3A08EF355864E227D6FFB897C +:1045D0009B75C2B8B71D7CE5D4EFA0FE1EE21C2877 +:1045E000FA5EF6E0A9EF023FBCB7CDC60CE08FDB68 +:1045F0005CD1827ED47FFB5D6C277479CF112DC88E +:10460000B4D0FBB6A7DC27504F8CD40780EB94B115 +:10461000F0B436D5F4BE5DCC585B53884A1B6BD8DA +:104620003E84F01976B61B4A3B6BF801AF4F50B190 +:104630006E54433BEA19A7A2B6C2BC1E4A0626A97D +:1046400040FD914AF2E7CEC810FAB0611AEAAB35E4 +:104650004D731F781BF5826230D58BE3315A3FEDE5 +:10466000CCFE0EE2F76F825FCC793A1D21350070E7 +:1046700038119F8017873DD45108E33B7C9E729888 +:10468000316BF72DD491EFBBCAD47294535706E720 +:104690001F178C8FFCC88EF630FCAE9267FFD0AA35 +:1046A0003FDC4B7FC9481FC1FABC11F4179B6C69F2 +:1046B00007D6492983BA85DE4E0FCC3B8EFE29EA08 +:1046C0003BE78DCAC74FA580EF14E2A1D9A5EE86BE +:1046D000B296851D383EB3957EB011E07868C91753 +:1046E00025430047ADBDC7A1E37A7D79D9071B27D4 +:1046F0008EC259FBD4DA41290D4BFF125C9F6B53DC +:104700004AFE8025105B4982FECF486CA013CAD9AF +:10471000CA5FFBDFBE00EA827F8E623D6B749CA3A2 +:10472000F81CBED3CAD8DCFDF83D25ECB8C3C26F77 +:10473000D39E0A5E7735CCEBDB2B8A49AF950D040F +:10474000BF3E15EADF5A3169BA0DE8303583CBC177 +:1047500051C740F614A42F7C17E1B989C51C88CF36 +:1047600010539D8457A10FEB5840D419E1F377F50E +:104770008E9DC8AF89EF7F2B1AB9FE6AE8F2EDA3D0 +:1047800091AB7139BEE9B9D8B3C8E6A101754E3213 +:10479000B38C7728702C998D1D0FF0DB37341E7E7B +:1047A000258DF01BB02B36039FDF5CBCA3531A2B67 +:1047B000DFB5A9AFDEC810BFA92547B13C9D5D623A +:1047C000CE23911E1F6113F0C98519FABC0CC08F4E +:1047D0003743BF0ACB7A255660077E59AF86AEC1F4 +:1047E000FA2A5B68A217F0F197FCD039D98897C1F3 +:1047F0002CB25F4EFF3D2E7750CA5180E7B5A58E93 +:1048000008CEBF25F9D23E94B3575B5DAA0DE0FAFE +:104810002B7681716E64034487D7D27AF311FE6AD6 +:10482000102CE922D27BDF8E229E595AA013E4F08D +:10483000DB6CC801C2CBBE03AC8BE562A651B98468 +:10484000E944AF9B59B41DD70D98F7CDD679B3BCC9 +:10485000C1029417F6ABF1EDBBC479BFDD14EE478E +:1048600079369F3F9A116AC0F19682605F3A1DBE09 +:1048700013DED46F951BB35FABE053A6E83317A4E8 +:10488000A20E98569502EB489FD0079755CA34BEA2 +:104890002FAA9C403B2B711C169AAD8FC8671192B2 +:1048A0004D6629A04F7C8275CCF712FB99DFF73556 +:1048B0005ECEDEBA00E7ABB766CC183BAF447837C4 +:1048C00064F0F9D4E17B1679AB0B694E0DFAD77D14 +:1048D00096AEE37B97553A887F5A40ED71BDA71F8E +:1048E000437D5817620D9DE548A6877484D39C6765 +:1048F000225C753D6BA52EE46B5D0914AB5F1DCE8C +:10490000ED19F6B8F9B2816355CACC33BFC7740745 +:104910003B9B7E975572F8028016848FDD9844EB9E +:104920005F5D632B7D6F1DE843E4B7443C0E3BB5F0 +:10493000F371BDEC2DF116B6407FD01E21C4DB70A3 +:104940009276BEDDFA3C533C6FD1CE47FDBEAE360B +:10495000879E9BE3AC93B83E33E5B557662B0E605C +:10496000DD1EF02D04FE5D7AB2ECE1469897DE9AEA +:10497000A6B102A8E377B0DD630CFF08C65BEA6569 +:10498000459D80DF463B23BA41CF9285C0877F6A31 +:10499000DAB315D7BDA59D5796A0BDB452E5ED8DF0 +:1049A0001D5796D459BE67CEE3A7F7FBAB514F34E2 +:1049B000C20038FEB0F24C1FEAE73AF72FFBAC7AA0 +:1049C000793895F3D5276F5CE99D42F2ACEE47B993 +:1049D00036DB4F08FE5A2AEC869F56B3EF2C2CC3C9 +:1049E000F9A89B6717235C7A4927CC7BB8796A11B1 +:1049F000AE034B3BD756A37D3F2C69FBDD20EFA5D3 +:104A00008FEC3F0FE990A2822103723BBC7B3D6F8C +:104A10009FA115CA01ECC76A103FA58FBCA0679C77 +:104A20006FD53B6182A775049FFCB90225FAB3AC30 +:104A300092057643D1796E6FA805BEBFB6D6598E62 +:104A4000EB449AF0CB4E8979BBCF9709BFEB800E30 +:104A500058F64A1CDE0F326CD46EF63B25D617771B +:104A60008962477A67E7B1880DE8FABA23740AF5D4 +:104A70008683E9B46E672F0A31F42FD63941E5A158 +:104A80001D5CEBD45AE0D507A4C116B46B8D7F4FE3 +:104A900062E8D7644D1C6CB919DADF073BA805EA58 +:104AA00055EDBE1CB4C3BD875C01B43F3C99850481 +:104AB000DF8AC80B47F0BD12D02E36E8B7F291134B +:104AC0000F3BA07ECE1E6700E171834C0D12FFC428 +:104AD000D2D0EF385759E10E023FBC5F539DFE65BF +:104AE000F102C664669872418E421233146B3D33F4 +:104AF000A19E93D0BF28AE3DD73328A15EB7439F78 +:104B000056C0AFCF3E7018E1F77D8BA968F7EF6B09 +:104B100019A8C2F6C82D8CED2C47E51EA5BAA23007 +:104B2000B519E89ECFA01DF9A091A906BCBF4B1EE8 +:104B3000988B72788EC0836A8F3DDF5688F27D88AD +:104B4000DE0339CF6C2DB7C23F94867C7FAEF2690D +:104B50001AAE03279FBA4045F81B99BE92E4FC9019 +:104B60004B4339F7B8A22D687FF63EED622D204702 +:104B70000F3A041D1624111D3A510E80FF93500E5A +:104B8000401EB29D8347B0FFC9796EEA3FF5D02F32 +:104B9000AA15F87EB9AC0CE0247A9F88527D68BFD4 +:104BA0004B031401FF44FAEA70BD2F740676037DAF +:104BB0003A52E3F5727526E7A3EA4C59F0F16737EC +:104BC00025C3FBF5868BA17CE8F5878F21BDC1CA83 +:104BD0006D403907FEAACEB4F057FDC062E2AF6760 +:104BE00086FEE917F90887C602E887651584DC9711 +:104BF000A2FEFD998D21DFEFCB0F133E7B6B988AD0 +:104C00003AFDFD9A1765AC6F5099CA50C7B3411968 +:104C1000F1E885F64EACDB078FA05C7B7BA6335CAE +:104C200087A71E7F92F0FCF20D60AA003DBC2CD439 +:104C3000EC403C6A2904575611D79FBD3B4A22CD10 +:104C400080D7741C12BFFF981C413FB2B7F69EDF9D +:104C5000DF07F58E9F4964AF7DE26888E6E2F78C56 +:104C60006932CAE34A8187AA9A28CD7315F0810B6D +:104C7000E6B12AAF6122CA417A0DACA6855432D47E +:104C8000A3AB1E4B8AE0BACF6679687D9F7D488AC8 +:104C90005E8674EB76929FFA7E398B5E8672BE2EAC +:104CA00089FCD4B59FC77CC1B2513D31B9D21995A9 +:104CB000D3102F46FAA5F05EE4055B00FDEA5C3BED +:104CC000FFBE0C066233F25D73D92D756C945E0FD6 +:104CD000361DDADA867A8C05FDA89F479E3B82B5A1 +:104CE000E8CFDC73FF9C791E78EF413774B918D098 +:104CF0007FFF1DEB8C32E40B983720A557D8AFAC63 +:104D000034E45E60F1DF9B107E8B3EEE758B7E930C +:104D1000436EB26358C88D7A1DF0F6FBFBD01F3F7F +:104D200024055A60BE936E7CB1084497553DB55832 +:104D30001AA2F8822423F2BD4F7DC090FF3FC9081C +:104D400049C114C4DB9013F97FF6A1C5FE210BFF06 +:104D5000F576BF5B80CFF7676A84FF93024F267EAC +:104D60001E700ECAA83F8D83A03F018FBD57BF3E66 +:104D7000FC08AE1EB8BE8089F0486606E75B7BC8BB +:104D80008FF03CE0147A53CC5F53F97AB22B93DB6B +:104D900013DB059F6F13F0023F6FCB84522F034547 +:104DA0000DDF71F95804ED64C7FCB9C69086E3AB1A +:104DB000DCFE50427EC403F4DF85FCAF9705FEF4B1 +:104DC0008887FA073AD9687FC0931FF51DF0DB7713 +:104DD00070BC493F93349B84F8B983F8CF0B7803B8 +:104DE000C9FCCA784AC4CFE4451B5C0530EEC73520 +:104DF0007C1E530F7EEA1B2F5EB8E2531B8B5E6056 +:104E0000A90BBC540FBD5054807CBB2F673ACEEB2E +:104E1000FD138BFD123C7F2B93FB7FC399DC3E017E +:104E20003A54233CC6358CED46FB2B255064E59F58 +:104E3000DF08F931F10F9647D1F553ADED1CFF0FA7 +:104E40002489F6D2D3BC9FC6FD773639B19DD3ED08 +:104E50009337EE25BC7A2B61FD2944F8FFB31DF58D +:104E6000C0C7463AC375BDAA92D365D5E30AE179B6 +:104E7000D5087E879C885F130FE9873E70E2F3D9DF +:104E80004F019EF1B91A7AAD83EB6586FAE4E4E747 +:104E9000860BF1B211A40AF9BC71A8EAC8121877FE +:104EA000AFAC056DEA287EAA873EF0219D36D60E6E +:104EB0004CC1F1D68AF53ACF1E6D46FD232B5A061A +:104EC000AE2775226EB10E601A2C233B84D643396F +:104ED0008BC355DC77D75CD4D3EFB35415E158FBC3 +:104EE000948DF4D9878F4911D43BEB3E0FBFEA82F2 +:104EF000FADA4B9886F65B7AF487E16AD243B68099 +:104F00001BE6B7F6BEC089365CCFF725933E8C34DE +:104F10003152DAC8B93A3C5F01F601FA43AB8CA1D1 +:104F2000390A8CA3B5852EB011BF0E1CDB86FA3E64 +:104F300094A2A29E2D34603E163BFA3616213F679E +:104F4000FA7921292B1BE35BC69B47713EC5F7F815 +:104F500042008796C5F9A3BDF886967938FF276D7C +:104F600014AF78FFC90768BEEF570ABD19DDFC6AA8 +:104F70003A7C273DCFA9B92DF6E7FB4F4D4A0F8D5F +:104F8000E32798A509C7DAFBB83E53B3D63D6F00B7 +:104F9000DEB2B254C25BBAC1AA313E9DDE0625E93B +:104FA000D7061FCA1FB337F8165AF8C7A48B5EA1DD +:104FB0001D1A22B955CB515ED615971C7C15EA0EE9 +:104FC00055257B2C3F4B167A41CF4778DF6B62B17A +:104FD0003660DD3F372931D4BBEF36A95437F91C91 +:104FE00096DD39145FAA5725DCAFB8D5CEDA5CE080 +:104FF000AF4DCB8A9707B35FFD8AA043F45BE4CA49 +:10500000C47EF17261F6BBA56164BCA3BC9F589FCE +:10501000C57A73DB80146BB3C4616EDDE38EB55962 +:10502000E390918CB8FA889D2ADE3FA31F0D7A1079 +:10503000E3916E3E04C68DE8BD0BA684AAB3302E64 +:105040005433E8C470CFAA1EA91A5D972B6CF3D312 +:10505000510E5C8CDBF989E33ED0A430C4DB3AA06E +:105060002796912695CA779B7C0CF1DAD3A451F947 +:105070004D81B74299FB193B843D1D11F45B28F02B +:105080006096667FA4B813F8CD2EF81CA6A17720F1 +:105090005DD16E01BEB6B7B553DCD56E38297E073B +:1050A0007AFC9B485FBBCAED63E8CF886F18E86164 +:1050B00028FDAED077B0DD3B5F31B0BFB726E6C488 +:1050C0007E1B043D4F8A75D4846FB998C77231AF87 +:1050D0003F64687CDDF079C8BE77E5190CF9DCAC7B +:1050E000C37A55101C277E6EC1FF10EEB3A078A1C5 +:1050F0001F6FC1FF9D88FFDBC227E6F8D1EE990F35 +:10510000A64219E23F85F4C547358CE4EF74F44DAF +:10511000A483773E0B237C91A610E3FCBD829EF70F +:10512000343550DDEF0A36E1F7CE047F5B165F4F72 +:10513000D799F4384B38FF90115C9FC5F77908FF79 +:10514000492CD88C767652F086C36D004FA1666FDD +:1051500060B3B01EAC42FDB854571AD0CECD5E1429 +:1051600061E877D4F7480CFD90A460680EC6A336BA +:105170004D09F522DD924A6344D7F4CA01A715EF21 +:1051800067E6FBB3EB37DCA451FC75246EDB62678A +:10519000AD1518C7297D00FDDE8792BF47F1DD46BA +:1051A000C3A5BA3CA49728FEBBCCAE909E9DE00C54 +:1051B000ED45B8EF7D60BE8131824FEEBF388AE5A4 +:1051C000ECECE03E9CFF8E35ED0538EFBA74ED1443 +:1051D000A39D07D755BFF2D13A427A9019BF9B875A +:1051E000FAAE2E99D7BFD633AF13EDBCBA09DA3D6C +:1051F00012F2BB67689E07D79D89BCDD87ED182733 +:10520000CFD20F6591BC3832DE51302E0DB08D03F8 +:10521000E728BC76F68EC5CFDAE26182AF0111DEF7 +:1052200051FD007CF9AC952FDD9313F8B292915D9E +:105230007CBAEF3C88FC588C7CA95099BE08F812C7 +:10524000ED3FA127800F0771FCF4CA2FE7C37F173A +:10525000FCF78AE0C7CFB284FD26F8D02DF44AE2ED +:10526000F7DF34F957E89BC4F5DB6B83F51BE039B6 +:105270007CE3A337A29DEFDA535284F03C9A1FC916 +:10528000C178469218B7D301EB0EF42BCB3B759344 +:105290000672553699458AA98C1615023C1ED1AF67 +:1052A000C711F063BFA9F3BD4B705FF433F1FD4646 +:1052B000D650938C7608F85FB82F90E8FF99EB589A +:1052C000E7B9BD64E7AD4B8D87FFB311B8CDFDD312 +:1052D000CF6AD09FB3A33FE7417FAE2ABAA422CEC4 +:1052E0009FFB0CF1EA5483E8825BF4E03FC61F9514 +:1052F0005941A7277B549FFE378CA77A381D25EE8E +:105300008FFC63E3BD9B6AFAE9DC0E9BEAE4FE3F97 +:10531000AB662AD9B701EEFFEF02E70BFD518BFE1A +:10532000A4F5FF41B40B885F552ACB3CDC0F8121EB +:105330008E3AA7E3783CEE06F51EAC9BEF97791CFE +:10534000D46F6AD248BB1DD7F7D1764E37EF2216FD +:10535000B77E7BE62B71F53C85190ABC9734598DD5 +:10536000B303FE51BCDC8B2FE2BF2F631487FCA478 +:1053700088FB7B6BF34BCA0D6DF47D581F2F47FAEA +:10538000823D47EBA32997A63C025E9D7E78EF1DE8 +:10539000780FED2C67F80EB2073B2F510B516ED6EC +:1053A0007BF83A991EAD25BB317DB21C7103EB76BB +:1053B00016EF54901E9DA5456417AEFD3C42FE4E6F +:1053C000E2FC4DBBB013EDC21CC6AEEB99F2AFA828 +:1053D000FF6EF09876614C47FD98DE0625ADEF7FB5 +:1053E0009F5DB8345C18671786C47CC12E0C211FE2 +:1053F00016F77DA4207C9DC25EDF585AFD26EAF98F +:105400000F27737BD71D9DF7663AB46795727B179C +:10541000D66905F9C90D7A3019E1BC2FC6FED9430A +:10542000FB3A0DBB55E42B0E4F7A6503D909EEF913 +:1054300061867E4D56303449D6C8FEBE13F16DCE1E +:10544000DB333FDE4E7F3B819FBF64FD27FE1D8126 +:105450007F41CC87DF8920C714A07F31D38FEB6ACF +:1054600027B8A738DFCEAB7B7DE8D7AC7324E24901 +:105470009B1E8F278DF6BDD6784CBF5A5FC3E5DFE4 +:10548000C2C714A75346F995EA6A42FD1F5C97BE4E +:10549000E2FBE92C64F860EA4BBA3E88DE27E25D65 +:1054A000685728E14D3ADAB9C0EF3B109EA4BEFD23 +:1054B000A42713F9DD3991AF0FE6F88704BF1CF27A +:1054C0008CD8A74CF352DC94EC39FCEB82FA39F817 +:1054D0008F22E24F19FDF8D2A30A43BD7C2E6E50F5 +:1054E000C0BCCE635119FDAFA96C88EAD31034A8B3 +:1054F0009783FB8BF50B58ACC069C37DA7683BF263 +:10550000DD7A357410F9F3D4E6C13725787E4F4E35 +:10551000E85F86E0F9931EBE0EA6B000E5BBA85872 +:1055200002CF2C5152487E5997E33DEBBEED4FEC34 +:10553000FAD3A46F599EFA4EB2953EC6083CB8FF06 +:10554000E260E65F44E01F78C4B21FED18CA5882DB +:1055500076D9FD682F819E9CBC87DB03ADC7258A69 +:10556000B3F4A0BD447614A3E7C68D2CD28AF252C0 +:105570001038A1214D5FB6913F0E0AB910E34013D8 +:105580008E27ABF81EC8F185D759E4B815E4270A71 +:10559000C8CC9CAB93FC7C92CAED5AB31DECADD742 +:1055A000917E52DAAC107EE7DE6149433B396B7E77 +:1055B00080ECC4CC69DA0718DF67C65D6467659E56 +:1055C000A3EDC77AABB3E1AAB9C0009917723D73D6 +:1055D000AAE71ED233EF783482D7A6809C2289179F +:1055E00071B9D5155D42F9B14D66814E6DF4F9077B +:1055F000E7EB7F24BA08FDD451748B3F6419C73898 +:10560000CD7B995F9F1F453B788DE047BDA6818D7F +:10561000674F3B3CDC8FC1F8BF87FC9A20D56D29D2 +:105620001C1F980E23FC9ABFE13C5CC75D44775772 +:105630005E3C1F278E6BCFE67C1CF5E85FE0B8EF81 +:105640002F1EBA07F90EF8CC963D03F76D431351A0 +:1056500055FCC511FA811D9E3F66D7EDF81CF8C7B1 +:10566000919D7D7AFE1991432585F6C9968CF0D1DE +:105670007427C65D967E964E71DF25CCC93405FD34 +:105680000226F269F4634F5750FF20CAC992E3F330 +:105690008EBD01787B33D7C630DFC9ECCF447F8322 +:1056A000E973D0FE5932DF4572B5F4F845EDB8BF65 +:1056B000AB16D91B2434B8C3AED1FCA3A2B8F7E310 +:1056C000F272687E8563C767D6BA6DBC3A97B7C475 +:1056D000E74B943423F9FCF1C6833983FC2C15F293 +:1056E00063BE3F2C0D4C41BB7E56F696AB3A00CEC6 +:1056F000BD9983390AD42FCE7EB8B32D8FB17DCD1D +:105700009C3FA17E95518975ED265C3797DAD9517A +:1057100087C5FEA8CAE6FAB92A9BEB036837B0FD35 +:10572000926CCE9718E3CA83FA522CC1BE78EBB1C3 +:10573000EA7F9BA29D5E8F2E097FE1D2C68B33E864 +:105740004CF3CCA4942A0EC7B180E1B2A15E08D27A +:10575000BE8113F8114B05E3E19390BE0354A6B04C +:10576000412AD3588C4A95A91296992C40A58705B1 +:10577000A9F4B2062A7D2C4C650E1BA0328F0D5267 +:1057800059C062546A982967C9B328C29D56A84F68 +:1057900066412AF71572FF6DB8D9CE767AC89F2375 +:1057A000BFCD6871A9AD1EF2E3A8BD11FC36CC37A0 +:1057B00035B28BCC3C9C17AE80F67B7F6B2BEF24F5 +:1057C0003AF1BC9C44FCD894495BDB2C71D7D61FC2 +:1057D0002A3591B251FA98CF8D6CBE4E1842DEF642 +:1057E00035075E0DE1BC7EA804300F696F268F8BF4 +:1057F0008EF6E7FDBE27E83979D1A56FA2DDF6B1B7 +:1058000091A6A13D723A7A9D3E0E5C5E80EBCF3050 +:10581000C681E17BC327AA0A24F8DEDBDD3F99823B +:10582000F160B02F9CB87FF0F6A6578A489F449D40 +:10583000CCEEB5D0F79A00D311CF1AACBFA562FD5C +:10584000CD3DFBF57776B6BE1EF5C5733F4AA27D0A +:10585000A13BBB25F217993DD08EF91C75C25F495B +:105860005CA7946CFD7E7CCFC40F53F5EA3FC0FB70 +:105870007B5F9E1497BF12C9E676F5BE226D15E2D6 +:10588000DDC403584D75EB61FCB7BACF213A9E09D0 +:105890001F6F6DE2F850B243BB48BFD93592CFE7D6 +:1058A0007E346502C691CF348FFDFFCDF340714049 +:1058B000FD69EA8BBD97060A30CEBDB4CBC5F30DAA +:1058C000C257E8567C2D0D3FC41A33795E89237385 +:1058D0006C3B63F919A8AF4DFBC994E7CDF84FCAEB +:1058E0008F0929B88E7CE4DBC9D2B87EF28DC7F768 +:1058F0006DC2CE7C48C44FD764B388753D5EE3BDAE +:10590000F15DF407943CA69D03F851EC1C5E5774BE +:10591000F3E569E89F96B2728C2D280A7F7EF1BB71 +:1059200011B6D8C2FF497911B2EFCD3C8511F912F9 +:10593000FEFB9AFCF87DCE3F0BF97A3BDB49A5A331 +:1059400035D080789AF0AD00ABB3F4B3B3EAE34856 +:105950005787AD9CDA7DA131ED43BC9DC7F3ED6A5D +:1059600080AD4CB1B6CF7B3BFB2BD8BDED2921459B +:1059700085EFB46BAEB9E43F2D9D1E17878A0ABE32 +:1059800019951F4E97354D2C80F6934DC40781A075 +:10599000448F75D93AC37C6E985F8D01F5D6E29934 +:1059A000BE14CB3C5B3344DED06717F8AEB3E2EFF6 +:1059B000F30B5E0DA1FE2B7652BEC2B1D439E9C302 +:1059C000299CCEE8371579E3F7093B9BD400FABF51 +:1059D0006B9B9480D5AF18A1F3944789CE2E95D3B5 +:1059E000D9651FACC6F5187C171ADF1EFD530BC610 +:1059F0003BEC82DE2E41EF694F25D05BFD727AAF22 +:105A00003BBC4EC5FD107B4AD1741E93D2699F5694 +:105A100051B503E8A7E48B793B5423AAC1F71CBA1C +:105A20001293555C7F60DED67C6E06F058E8B2CEED +:105A300011F661DEF4BACF6DE3DA471F093DECF4ED +:105A4000001D2CEBE0B7CB42E778D10E7BCA30D0FB +:105A5000BE773E1E34C80C4A39BBF8A2C7A52B98A6 +:105A60009FD97B3DD7FF6D6AF0AA54A867CB5AC473 +:105A700080210EF74CA77A77477200FDCE7D52E069 +:105A8000AA4948B7723BD9CB49821FB2A71F257FCD +:105A9000BA37C7CDF345C2DFA0F7C24C19C4FDFD2C +:105AA000AE9EE19A1428FB01B1B87EF4EB47D4CB4B +:105AB000D10EAF6401DC66DEC4227D4B2C71BBBB12 +:105AC00072781E4AD7A76FD5DC8CDFEB70D1FEFE53 +:105AD00091757F9C970AF5F592F232CE67FD93435C +:105AE0003598C770EA22A713E30661B0CF10FF1BF9 +:105AF00076386B22291C4FF8BDED77077777168E25 +:105B0000D6EBCA1652BDDC67A7FE0F372E7CE81C09 +:105B10001827B581A97CBF8AD9791EB35946156B60 +:105B20003D119F93441E50E2F33B73B93EF0752D37 +:105B300075237DD67755C8E8E74EEA90242CD546E4 +:105B4000598F5059378FCE85D454DB259897DA106A +:105B500090ED30FF555EBE6F33A97121BD97DAC35A +:105B6000A87FE277567939DC93BA42621C99647552 +:105B7000128C43DF3BC3FBCBBC5C5FF5323617E1D5 +:105B8000D8EED09CB8CFB17D5D86648DC77C4FF0D8 +:105B9000773F8C1F25391940638A3D3C52D7685F97 +:105BA000B9F3BE970F63DE58E7DD1CE5E91D8BE70F +:105BB0004D867AFA6C99D60F558FD4E03CD7973A38 +:105BC00019EEAF6E9778BEE3868B9C5F47FA4CD296 +:105BD000810E129534DFEDF7DDF00DA4F3A49EB035 +:105BE000DF6699CFBE090ACD27FC2C1866603714F2 +:105BF000EB4E491B477ED40A26A17C99E325B65F6C +:105C00002DE8945F7F3FC54BD41E46FBA1AAC0D7A9 +:105C100006C790CF6B19F7B5099C3F4D3E4B1CEF63 +:105C20005A41B7FCBB98C4FDA228EDD767C16B14DD +:105C3000A7FF9A93F245403F513EF486195EF25316 +:105C4000B78A3811ACD3BE0553512E18E969556F88 +:105C500078AE10FA857B8A28AFC4FCCE9E099C1EC4 +:105C60006B75796E84E2C2805794AF75551E039AA6 +:105C7000E48EE6E6B7CBB01F8F07F62F0EE4201FA9 +:105C8000ECCA88F9111FDB2F7A87E22E1B66BC4C09 +:105C900065776A0AC1B3569FDE80F1DBB529F54806 +:105CA00071CBF738DC3D722407FD845FF47E737D91 +:105CB0005B25061F19F90581FE25EB31FEBF49352D +:105CC000F961C88DFC7064F6B082FB761B1AE5247E +:105CD000A4CF0C9B2D09F961C38332C37DEF4D2105 +:105CE00033AE3440FD3748D2F325A81FE6C9A46778 +:105CF0001EE8A9AB3A17EA0F30F543DCA7C8BCA2EF +:105D0000AE0ADFCFACF27DC8303F297FE12F500FC4 +:105D10007A6B86589D907BB41BBDF80F0DF11E92D7 +:105D2000707DC004798ABB56869AD1CF071ADC8170 +:105D30007157A40BE54B2DE1F148A61A55E8A3ECE9 +:105D40009654DAD7EBFAB4F5B00DF510E8738CA3DE +:105D5000ED4A8D45296FE8623960707D41718A7422 +:105D6000A162B63A62A4677649ECB7945BCA787DC3 +:105D700078319B8479A5DEE0DFD86478FF691BFB6E +:105D80002DA3F31521FADEF62A85EC4F6FD7291DD6 +:105D9000F5DC4536E565DC87F20E7DC050EF7E719F +:105DA000B9720FF6F7869C71E759BCC02F283FDE09 +:105DB0009E76CA83F606924E2C4923B8285EC4EC20 +:105DC000C12DA9044FBE8CFAB84DC839B3C7F4959C +:105DD00038AFA7CF21BFD523EC0D78EEC775B8CD6E +:105DE000E44751B7B44797C37BDD17F1F7CCEF0C0D +:105DF000CFB8E7FDA7F1F983CE720CF3A757BCFC2F +:105E00005DCCC74E3FFEA7CF313E935E133FEFAF51 +:105E1000E59AFB0775146FF71E4F8ECAB80F7AFC10 +:105E2000B6F9F89EF7F1C0B7A93CEE3E41F9F5D6B8 +:105E3000F7419FE6E5079D13B2719F6219C9D90822 +:105E4000BCF0179849FA8CFEC27AE62D7B3C981775 +:105E5000964371D60A1FFFAEC78C436F9438DD0599 +:105E6000DF2C41A6A77D0A9050E4D34B79BECEFE2D +:105E7000A332C33CADB7664DD9897AABFB89988113 +:105E80007E835E087EFEC5B83EC674941B63714A6D +:105E900008F31D13E15DC11A48CFFDDAEF37F3397E +:105EA00069DFC2932CE60DB48ECE243F847F1FEAB7 +:105EB000B297448BFCD4D7FD85025F51CA332FE8DB +:105EC00029CAA4754D659C5E82AE30BAD2379DCA90 +:105ED000B953A12CF6713DE14F61463AD8E37E55A6 +:105EE000A6733F1BE430E52F1A0B813732F87C5044 +:105EF0000E72EB358DF29FF10FE6B352E2DFB7F988 +:105F0000B89E4CC91F5270FDF6AE66EA4E425AB8B2 +:105F10007D178C93CB546D4B60F43D9207B4F73BE7 +:105F200078FC03D484F1858CEFC7F47311AF12D3DE +:105F3000EE07FEC9698CC7539CFC621CB43E741802 +:105F4000F5A6CFC6341570E27FC415D73F5D5FD686 +:105F50008C78FFEEFBA91AAECFE989F18E04BE4919 +:105F60008C932C8FB846EB6C948F1C6AFCBC12E3AC +:105F700028FFE19747E29148373C7A88CEEA0C3314 +:105F8000CF7A26D727537EF89262CD97DAF0128B1C +:105F90003801391BF6D85994E429CAACE7BDD202BE +:105FA0002C9A0483A51D351620DFA7751DBC170785 +:105FB00037D707B35FBEB0B7FE3481CF2375D67F26 +:105FC000BAAC7078D282B5BF44FE9EE924FBA9D555 +:105FD00031D85707F5D627521886721ECD88E4DCD3 +:105FE00009E35D99C3F96364FD295D24EC7C9E2F70 +:105FF0003925439379BEE4502D9A966ED9538E7A03 +:1060000064AA3E548BF6D9D4C97952AB86FDF9F90E +:10601000C4F58C5D85F69E01F61EEE2F46A20B6B35 +:10602000111F5B3BA44CC4CFD6D29276DC670FD74E +:10603000331959EBA1097C5FABBA9EB951AFF71D7B +:106040002EA2BCAAB03D568BE30CC038785E64FB30 +:10605000F5ED9BD1AEDFF09A8BE264472EEA6DC07E +:10606000F97515A7308CB3763D193A47B5E0878DA1 +:10607000D86F864DD86F367E9ECDF08D67C7A54C04 +:106080005D28E3F980893DD16811DA2BA0EFAF0CD0 +:10609000901D5085EB92A6C36A7221D0A372C840AE +:1060A0007A69B3785D0B403901CA0E89EA59B6C8DE +:1060B000428483EDB513DE596905E17317D0BD64E1 +:1060C0001A63B3AE1876CB71F36CE6786BD2F979BC +:1060D000AB526EBFAF2F939342A01777CD36D7D375 +:1060E00041B2B7CC38D3C3C601E51A18BAB34CD6FF +:1060F00070FF26F5EDC87338EF8B86EC5C0AC53867 +:10610000209FDA78FEB3E907ACEF58506DE53FB356 +:106110003C57E80D531EF245DEBCD97E50D81FD344 +:10612000843EADBB2B4CF693D6C0EDA7AEB222B2E7 +:106130000735D3DE6D10F6DCB95EB2533BAFA87302 +:10614000223F1457822385F86E58F67DAC4FF3D961 +:10615000847E1C5028AED9B0E28B2F40BE260A3D6B +:10616000A8AE0E54E3B877DF36FD08DA09F95D030F +:10617000B980F991796DF1A6717BF82E7618DBD193 +:106180009E443B6052FD810EB4F3BD65328593366B +:10619000D96306D637553215E54115ED6AD901DCCC +:1061A0003EB38CA3D27C27CD066F0EEDD2FA0FE959 +:1061B0003D2FBCA76963F1F6DC84647A6F0B2AB0CB +:1061C000ECD1F9A789F9E7CF0A10BECDF917E3FCA6 +:1061D000D9E8FB7DF8DD6CB47707E3E6DFDF35F067 +:1061E000E5F3D707A55B61DCCD62DE4313F8F75317 +:1061F0006739E3F4DB99E2C97B33B9FE32A60B7B46 +:1062000028B1DD1E35307EB917200B079025E3F548 +:10621000E28A9CC211BD887166DA9A27FD10A5F347 +:106220007D9EB441B27B5935F8E720FA298F1D6174 +:106230005F477D09F65D3AC865EA63B2E102BD9742 +:1062400052F19F7171DF15029E31EB0F8B0EE278D8 +:10625000B9B39C5AA7259E3EB2FE809D83F6E3C843 +:10626000FA94B01EFDDDEB0FE3FD15664411DEFF71 +:10627000EEF5E74CEB0ED9AB60145CFFD0C75DB810 +:106280004F84B930B8DE974DD0F83AAF321DD77D84 +:1062900073BD77875D645FE5A3FF93427E099DBB75 +:1062A0005641DE6C16BFFBF004EE071E9EC0E3F6FF +:1062B000EA5D513FE26F8B5713EBC38022CE0F8A0A +:1062C0007C0B40A5C5EE3D581523BBB65762B19D6A +:1062D00080E796834924D7E12A75A78BD3A58159F6 +:1062E000F8E1E127D8168C13E8120B4897E2C34176 +:1062F000B2A7FC9A9DECE0B063D0588EEBC4E2BC30 +:10630000505B00EB8C9F039D9513C1F3251E5B4CE6 +:1063100047BB8E5DAED0FEB64937BFC4E97EB8D963 +:1063200049F199BE59493B31CE5BA5AB5F2FC3F113 +:1063300096CA14E7DC2719EBC8FEB90FFC0C684FAE +:10634000AD8CC7FB3216247BED19FFB9047F2E1BE1 +:10635000922868C962B44E69E0CE63DCC7B4DB96AC +:106360000B7E31ED36535F8DD8776C50413F424301 +:10637000BB0DE7A80E2A78AE26FC605106D6EB844A +:106380001E459FA67DA610196E8792FF68DA77B921 +:1063900068DF655239772A943FF773BB2C17E90DF4 +:1063A00074CF45FB2E0DEDBB01B2E74CFB8EE64FE3 +:1063B000761A9B7EFF45B4154FEFFFD4CFF5788159 +:1063C00078BF605612D987DD3E8EEFDE108BE03D40 +:1063D0000DB0FED378BEA04AF92A8972B62F93CBAE +:1063E000592FA8A70368FF86F8F77CB70328644FE6 +:1063F000C4D852D477EFA56A1467DF1A2F87138D9C +:10640000783DD5F69A338E7F721BE3DB13E5AC5BE8 +:106410008931F46B814FFC9B78292D8032DD17AADE +:106420000A929D1594E9FC22BEE3C53C633E6FD5FC +:106430001E9EE386794D0423AD4D453E0E3BE97C1F +:10644000DB1BC90CF9B83B8F1968F7872F917720B0 +:10645000DF99EFAF10F43DE8E7FB352BF5F663E885 +:10646000677EF7F7C90CED8C6EEC07F5EED56C077F +:10647000FAE3FB32592DDA2FBDB28BEDAC20FA3F97 +:1064800087FCB9B16302E9AD62A436F05777650BBA +:10649000AD97BEBCD85CF4FBBCC067DCCE1EEC4044 +:1064A0007C4C6C04FC4B64AD0BFF8CC355900770A7 +:1064B000529DC5C1E91370CE6C3124CCCBF68293CA +:1064C000BC13E0F4E9F7DCCECF2D733A9AFCDB9DE8 +:1064D000D7706C52058D4FF6B939CE2DD88EFA6A29 +:1064E000B521211D7DA0EFD01FFD91F04B6EE96914 +:1064F00068C7737C9F9CE4CFBB954105E971F8CDDB +:10650000D709CEFE4A27ED87F7AB9CAF7677487464 +:106510006E6537C087F5877516014B8175377E2804 +:10652000E1FA3E316F681ECEC302BF82E3D4192A5E +:106530001B89E7CD247E26F8B4BC81665A1F19E773 +:106540003F661F68C6544B3594477E2ACA953C93D4 +:10655000F89EFA17E803879758E0003AFB894F54F2 +:106560000E6FBA80B75B1D9270AFB21BF8D6807108 +:10657000F7CB7CFF6545821FB27C4F7CDD571FCF78 +:10658000AFA3FAD0F821E9A3376B92703F67B762E7 +:10659000B8D16EEDAB284AD304DFD620DF26F07BDE +:1065A000951E7363FFE1D51C5F11C017DA23DDC6AA +:1065B00030E1CB427F6941EA287EEA47E433EA2CA6 +:1065C000B5C867BD6EDC81F437E13EE5E3748C54F9 +:1065D0001C71227D115EC4C5ABC79268BDD0746DBD +:1065E00087D0E3A4FF3591878DDFAB491DE5F7BA6E +:1065F0004A4674ADCB03FE467A343A35AE3F18E5D1 +:10660000BBA5AF5675A29F95AF8A10AF9163E8D72F +:106610001AC09FE83F9BEDB70939BB451F24F9FA23 +:10662000E4CD6462EA03E847CFC0EF46DA97578CBF +:10663000D207E48CE4B5F75299EB2D95CF6BE36A62 +:106640008DFCF8EEBCC129C847C3554E1DE5B9BB4A +:10665000F2801FE9EB438A7BC6933BFE3EC81DE5F3 +:106660007DF74B208738CF668A218DB417F4F076FA +:10667000CD843B64C2CDE5B6B8229359ED935B85DA +:10668000BC25EAA35B2BEF277D84C915D5BEB1FAE3 +:10669000E6D6D5E163CB709EBFE77858D138102796 +:1066A000772B4307EFA57D3916BC0AE33E5A1B8BB7 +:1066B000E07EED6EA16FC21D2E0DF55158C85DFF35 +:1066C0006A2177F53C1FAB40F0D5083F25E8076607 +:1066D0006F388676A986F614E0B6FEF1043930806C +:1066E000AF60FD59DEF1139A473FF035EAB36155CB +:1066F0004BC3EFFB2A6586FCE1CBD3FE0DEBDE1E20 +:10670000C013F2835D4BB3911ECE6422AE41F26A98 +:10671000CAF7C6BC81C348FFDE10D75F20DF55181B +:10672000BF52DFCBD7304E77CB63F1F3E85362042F +:10673000AF06FC67105DC43AA0717C4E14F04CD4D7 +:10674000F97CAB7EFF5933C6B5C2C047B80F3F4690 +:10675000BE85DD07E48E62DE46EEEA787B61C43EEC +:10676000B01BCF23FD73577B3593CF652BBDD9C0AD +:10677000318CAF2F073870DEC3B3068E21FFF623AE +:10678000FF5AEC98E291FEF172DC9FA75D8374EDF5 +:106790009694C116E41301B78CF382FFED7E49BBDA +:1067A0005F023F73F75C9684F7A9F41B4748EED36A +:1067B000F1A81AAECB79036E740DBD2199EED931D3 +:1067C000E75B60CE57E4D3D63772BC5CF6D96FE690 +:1067D000A09E2CC0751BDEDF107849413DD5DD71D0 +:1067E0005D35EA6703C69D81EBE44BC123883F76A4 +:1067F000F26A2DF5629C6FFCFABC2F735099CCE5C0 +:10680000927FB727DE2E3E3474E73194BBDDBAF2B7 +:1068100061328CB7B1479651AFA9066B41BAA7D583 +:10682000330DE30289F6F3CD7DF1F6731AD8EB3818 +:10683000AF89BAF201C68B37BEC4683F8A75240798 +:1068400092C0CEDC783C89AF373D5204F75B0E37FF +:106850007239D8DD27D1B90675753009F1E39B256A +:1068600033FCDE868A0F25A4D7CDEB6CC43BC31D59 +:10687000FFE444BF7B5995F241B23AD65E37FD033F +:1068800013EEE509F56563F27142128E970A70E323 +:106890003A757342BB37E17DB493F15E10AFAEC47D +:1068A000901EDE3EC709BC0F2BB1DF4509E3A426CD +:1068B000B427FA11BFF56923F6A73C7374FD33F9C9 +:1068C000BAD42FDA053F8FE82316E6F78A88E72344 +:1068D0007602669E4E42BB83D1F980277DAFCC37CE +:1068E000F2808F6018B45F1BC4F70AD05FC91CB573 +:1068F0003F7345FB0AD19E2BDA4DFB1675DE116FF7 +:10690000BCBDCD2CF18165BF5E9436155EBDF90529 +:10691000BBFF5926E2BCF0FD5F6E7E7F3EEE4FDC92 +:10692000E8E37948A65DEEB1057E3B1FF9769783D3 +:10693000F68BCDF1EB12C637E3B07FF0F37B72FE3E +:106940003878A717EF4919B5EFC78FCB9688F85C51 +:10695000C9042DCEBE37ED90942AC6F94F77469ADA +:10696000857DD9E21DB5FFEB4CBA28831DE83F6C4D +:10697000E895555C47FCCFCA9B2579B4BF39DEC882 +:1069800077946818E763F65F82FDA15DBAA154E8C9 +:106990000F16A17DDDCCC13E3CB2D55B3DB2DE49D8 +:1069A0006CE6A8DD8819C4E8EFA4B5B128F25B95C0 +:1069B000881776BFF129ED1B6DFCFC841FD7897009 +:1069C000E33BE4AF45D6004343BF34C349F1C27350 +:1069D0009BED78660AED491E5798C1F8FE977D88B1 +:1069E000FC81544008F27DD7A736F26F7C154374C2 +:1069F000FFD6455F0396BE88EAF7A19D927ABC5DFB +:106A0000C2FB78C07B6D77F9C98FD495E9BCCC0007 +:106A1000FE98953389C73B8E0765D45BA9AF36E8EE +:106A2000D6B829A62AB04C2A8F62B9AF2A541BE4E3 +:106A3000CF0D09C649BB9019781E844C273E6E14B1 +:106A4000CBBE998CF218538F8764954A4D57B1DFAE +:106A500071954A73FC0D33F9FBA63F3D39273E9FE4 +:106A6000222D347E3C43BAA1631EEAA77EA407967A +:106A70008B8709FEED8D809872F8CE6A79B1F37C30 +:106A8000FA0E31E1B2873E5A8FF29A164A8C5B9C1D +:106A9000294F70E02A1C37E53159D8CFF1ED292272 +:106AA0005F30319E431C304E1C87E2442814C6E7F9 +:106AB000EB316FC2CC0FACDFF2F97ACC0FDC2A0DD0 +:106AC00091DD88771BE0BEDB69F12FF09A9DA30969 +:106AD000FAC5E337FC1AD007D6B3F08C1B68FFF277 +:106AE0006F420FA5F5383723DE0A81C84EE0AFB4F8 +:106AF00057C3D5B87FB43733F23A9E77371E75D275 +:106B0000FD07CC1EA13C0277490AF7D713F2A66A0B +:106B100072443E5C516825B777789E54F78C12CA50 +:106B2000934AC1FC29CBFD2029E29E9123275EF1E7 +:106B30007D0FFD249137153EE1F263DE5477D5C118 +:106B40002958AE9507FE15EF0F310ED849AF3CF727 +:106B5000236E47DF999FB4C365FA2FF09DF6BC3CC6 +:106B60009A4748F04B5F93C1DEB2C481B7E5ED7C34 +:106B700035AA213EF97D5A46BE4CE3D926D6CF3DF3 +:106B800087E8C1CFFBEFB54728BEBF37AF2CD0ACED +:106B9000213D387E13E393FF57E8234F5A54A77BD8 +:106BA000F0441C2EF5B117E3E2702918874B3B7DAA +:106BB0001CEE5E1BA37C0C66530631CE6F9EE34039 +:106BC000BC19F87D89C3674C15F28E37EA58F66513 +:106BD0007DE52DEEC948CA5C1FCD27F9C265CF9768 +:106BE00040BDD03EE81E2F5EEDAD19A43C636FA3FF +:106BF0004D7BDB925FD87BD7C2F4F1E2D766E90325 +:106C0000251A057E9E0325F2737245128B5AF74FA3 +:106C100031971FE6991AE27E4B6AF8051DEBAC86A8 +:106C200005785E78485A04F3B9B220F4608E25AF37 +:106C300018FD1A9C07E6A253BE9DE0E7C061BB8128 +:106C4000F183EE86CC1D185F3B723D8F636CABF217 +:106C500012DD2FF4727EDB91167F4EDB933CB81968 +:106C6000F525FB9D8BFB15B3A26E6B1E529DCF1DB0 +:106C70006BCB42FFD1598DFD8A993D80F32C36C6EE +:106C8000CF6B78314731E3B04EB1EFE110F92CB260 +:106C9000755F645719E81D4BDE5CB2C86731F9D3E4 +:106CA0003B4B25FE04B868BFA777568E84FBA8BF70 +:106CB00011FC7AAF4DA573FBEC3C59D0B9611AEECB +:106CC000AF27F73865D433DE9A06BA97C0D7E3A466 +:106CD0007BDF4CFA252F7A879521BC78CF2ADE2BD3 +:106CE000527A405F09EF7D8CE731D533D3F372934D +:106CF0009EB3C6D093E42C59D03339BC3F2A8F4F72 +:106D0000CFDF8C47CF5D393CFED9DD25D722FCDDB6 +:106D1000BA93F6F502E25E3B132F69651C2F03D18F +:106D2000858497B4695E82EFCF429F8CE0E5768ED2 +:106D300017136E534EC2555C4E7AEB65E28F8F434C +:106D40007CDF24596F1FA4F3C00ACF5B51C3926448 +:106D50008F9BBF057E5B1C3C7FCE99310E3E045C51 +:106D6000DD01FB5CCA6779295643726B4C994EF67C +:106D7000F025076B909FD2A4C9D3D15E708B7C980D +:106D800091735ADFE4F29B386F6F9921CD277DC153 +:106D9000622ECC4BD0DBABD07E57AA145EAFE1F0B5 +:106DA00027DF25D3BD4163E5B6AE19DB3FC631A46D +:106DB000D3CBDDC8FA8970035C5798740F25111E78 +:106DC0004C38017E77EE8C517899C7A0B87781D87E +:106DD0006F4DF9E7188F2B35BCC8709F2FB5C34690 +:106DE000F1F0C0E10AF29337B0C657F0FBBB027670 +:106DF000B253D2AA1A7E80F3BAD09B147F6E6D1A5A +:106E00001B979EA6DE2BB40FE898AF1411E7C27B48 +:106E10008D033AE677987C8D74A57C33C01BC62B16 +:106E2000C6C2CDA432F2CFE6D3FB26DCF34CB8F5D4 +:106E300078FA02DCA57170A770B8373CCBFD7F06ED +:106E40007EA20DE89C1EF0501E9A3BFCC73EF4E764 +:106E5000C2A54E3A07D2D57380F26EFA7599D6EF75 +:106E6000BB72B4F5CD93E1BB9F16321DF4CDA6D90C +:106E70000BE99CED2F701F00F8226DF630ED57A73F +:106E80007D3A99DA755FB3E4F48CDE53F2BA237479 +:106E900071AE45AE1C357A14F7274D3D69E61DB23B +:106EA00087F83A9628DFB7E672FBD2932EF24DD8D8 +:106EB00020B3EA41B31D469C4B79380663088764CA +:106EC000840EE3B98D5CC682B86F3B9247526F0463 +:106ED000F11E1359D8C589792567E2F37D52F04632 +:106EE000940F4382751C9E6F6EBC7F13AACF2DD169 +:106EF000BA953743FB6DB87E61FED1E5DF5FB09296 +:106F0000E8CFE34FBB42FC9E80B1EB58501E771D8B +:106F1000EBAAA3F3C01FEB5C1EC6CA7DBC3CF80500 +:106F20005F5C897C21111FDC827C50BC627CF9DFB4 +:106F300020F62367E772FF87A9834CDC377307D2FB +:106F40004BCFDB54857EEEC87D332B74C3A18DBE41 +:106F50003782A7E5A7C3136F376A79BB8F857F8810 +:106F6000799DFE67EA6A6F86A6C7C53AEFAD6E7770 +:106F7000CF273C0593C63B67E4AD8948E3E2A7E72A +:106F8000EFC34FE23A91B3748CDC6C44B847E4C66B +:106F90006E50DCA356C0BBE1FA8373492F80FCD04E +:106FA0007E191B54CA307E1879A70FE5D9E8628193 +:106FB00062F86E77454BCE2D683F54042BACF989AF +:106FC000932AC65F97CB7DE6BAAC8BBC04B3642E24 +:106FD0006B3DF1BDBCD3E499C684BECEABE2F97F74 +:106FE0006A295FAFD43299F4DB4054A6BCCAEE865E +:106FF00060B675BFEFAD5C9EFF9A37CBC9F31CCB73 +:10700000E3F34B5ECDE57AEF5F84BC3D20F806F3F9 +:1070100021554B1E00F0CF93C8777A4ABC1E702CC6 +:10702000E5FC539BC83F0972B6ABDBE49F18D993CC +:1070300086C4ED4955D76E42B9F349DCCEE9BD614E +:10704000D90718737843F051DFEA17C38D6CD45E0B +:107050003C2DDF98EB0C7586F5207CA299F201CFD0 +:10706000C037A65CE5548CE19B97E3F8C6C7F5ED05 +:1070700001819F81E88B94EF93AE8BBC86D932C59A +:107080005347F6511D030AC647BA742659ED56C038 +:10709000E33097C366294E0E2B381E5FCEE5784C41 +:1070A00007BA521C5D8CAB961DA078DC7A36F07C5A +:1070B00009E24FE779EF03F601A9DC32FE662FB74C +:1070C000D77291DE3CEFC8CFF709A274CFD71691E3 +:1070D000DFBB25915E4BE2CF698FB1EF85BCFB9999 +:1070E00041F2EE437987F6B43C21EF337BDDF32D9B +:1070F0007ADE17E2742AB41B826E8312E26B0CDD17 +:107100004267B20FB89DE70DE9717AD6D48BA6DC41 +:1071100003BD52F3301F7745BCBD60D2EFFBB92CE5 +:10712000CE4F073A64E5211D52401F5AF9390474C5 +:1071300060A3FD4DFFEC7476AA995FD35BD34276D2 +:10714000D2461055BCD7C91B6B93AE413874258607 +:107150007ED646BC6FA06234BF3431BF73DAA1441F +:107160003FBF99BEBF51D13D0B10FF21BE8E5EF8CF +:107170006A7CBFB985CF7AAE43F9A995C5BDE8E26F +:10718000BD1496BD08BF5763273C7EEDDDF8F7467A +:10719000E72FFAAB7CDFF9B24FCFD0CFC3F3951313 +:1071A000E77FB9E21A7FFE3E3DFBFA8AD1F95FE93B +:1071B0008BEF57B3F8D9EC6F8C37FF3C6019CFE8F1 +:1071C000FCBF5EEAFAF279697CFED7CE3A43BFC9CA +:1071D000E3CFFFBAB9A7997F696C2EDE77FD8D9A50 +:1071E000338C6BE7DFFFE68A2FEFF79DC6C4EF18FD +:1071F000E67DC3E3F3115B235D9BC047C40F7F377C +:107200001F199E85163E4AE487F9E58EEC45E3F2A8 +:1072100091A09FA0C319F943F051223F9C2D1F2537 +:10722000F2C7281F19D93758F828911FBE758783D0 +:10723000EFEBD5B29D7486690C1FC934FF33F2871A +:10724000E0A3447E18CB479C2F12E79FC827FFE39B +:10725000FCA1AE918209FCB1F02BF14794F488892E +:10726000DF443A07ABAEC8BE7E5CFE107411FC7101 +:1072700046BA0BFE48A4F3D9F24722DD47F9239A18 +:10728000FD0D0B7F24D239D4BC26839FD318E18B0C +:10729000B3A3B306744E397BF967214B5CB5682CF8 +:1072A000BDBF329DB535D2828A783A5FF795D61345 +:1072B00046726EE229915E8B16ACC9BE615C3A0BD8 +:1072C000FC0A3A9F917E82CE67D4DBA7A17322FD90 +:1072D00046E9CCF8FE4288DB2389F4033ABBE3E9B4 +:1072E000FCF7D1EF4CF29948DF33D1F1C1D3DC8701 +:1072F0005098CFE347FE3C46E33EE81EBF5F49BEE1 +:10730000C8BB35FB25DCBB6B96E789F1BE8FFDA0C2 +:107310007C4BF437E7B1AF656005C62D67D876F9C9 +:1073200017A68C856B8B249BF7774B563FBC2A9F07 +:10733000FB1DDB9B54A65B7E8F65C3EA5815DAB54F +:1073400039066BA1FCDFD599C09A63F1E6FB741294 +:10735000C50F46BF17E171FDC506C5697C9F9650F4 +:10736000FBF62685C6C7EFA37F3676FCA4D38CEF49 +:107370003FC3F879D43EE6BE08DB7CBA17088FF32A +:107380008E67DFF53545C2E39D431DF9EE874B1649 +:1073900007459C50F18A73CD386CFA56379E37D525 +:1073A0000B38DD7C693C5ECCEC037FC63846EB8D48 +:1073B00025B4FFEE4B0A37633CD15BAD0430CFA15F +:1073C0003575968FCE612F9D1D778E7AADCCEF3BB4 +:1073D000B69CDF388C71159BCC685F38B1BF24BE7A +:1073E000DB2AEEFD067B7B2BDEFB55BAE311693110 +:1073F000D44F083E5122767EFF1B2206E479EA2E06 +:10740000A7B80F2EB661C564BABF4CB41FBF06EF54 +:107410003DA2787E0EF80BF9C737E0FE6A5F534055 +:107420007ACB821F5F42DEB8591E12DFF336EEDDE3 +:107430008A76B8B9EFE155C7EFFF413EF74FF68ABC +:10744000F96F59FC28E517466CEA9DEC6B345DBA80 +:10745000F7BAB7B6A410F1B857FC4E4B5FDDA304E2 +:107460005FEF4A26ABE963C7DDB29229F8DC3C57EF +:107470006FF637DBE13DBBF53DE89FA44E3B3DFD9C +:107480007B57866AF571E4F09090173C4F8FBF0BE5 +:107490004029911A9EA76701CC7BDDF2822D805B8B +:1074A000E56C6EB819F37B7AAB94C07874EC4DED53 +:1074B00095FE19E16CB6C7A40CBC47E841E2838F86 +:1074C000838CD1B99D84FEECB32F28FF9C420B36F0 +:1074D000BA76338CE791695EB80F854A9F26138888 +:1074E00020DFF95214BE4F067FB199A209E3393566 +:1074F000BDCD98F7DDC65843960FC7E9A2F366BE27 +:10750000A5CE38BF6A649D72445E0B49A3E7A7B756 +:107510005C12AF9F9E11F87827DFCCF70F523CCA60 +:10752000B1E2D8AB9837E430EF0DF2D8E3EE636800 +:10753000C53D6F5CA7EEE47A7E4B7194FCC4A89BBA +:10754000653A7229FF58E7F13AC5DC77A2DFAFC987 +:1075500015306D39CCEF65EFBD8F492DE54877BD0E +:1075600085CE19CB2C887967BD9B427EB78788B3BF +:10757000C0819BEABAAE792CF750F4AEA9F7533C20 +:10758000A2B6A41CE329AD8DFC9E90DECF19BF1FCF +:107590007CB116C1FB73FD6CD08DF89E5CE3A473C7 +:1075A0006D63EE3D10783F1D1F8DE051023C1612B9 +:1075B0001E851C9E20B96BBD84D77F96FFD77F4365 +:1075C000B9AB648157715E8E1427DD5F743AFC8D10 +:1075D000E03905F09C76FA7ECFE4B33879A31B52EC +:1075E000113E49BB13F9ACCF612CA6FA4A6F21E6D4 +:1075F000D199F2D6BB18E46C1ACA27CBB4CAD59677 +:10760000C521BF93F05C20B14BBF4C7E385CFDF9C7 +:10761000C7AFC1733FA3F75D0C4C59387554AFFA2F +:10762000056D8B0BB85E704D7CEACF08FFE61A271C +:10763000DDDB9CF89E39BEBFC67902E14E9413BFD4 +:10764000B8AFC2EFE3E70F12DBB3C5776ECDE7FB50 +:1076500043E67D1CFB8AF87E72EFCBB608E5B18964 +:10766000FDE32D2BF9FE71227CDE84FB514C7D77EE +:10767000E4C40FFCB89FDC2BF6937B4F2CA7FDE4F2 +:107680002DB57C3FF9D67C2D2E4E71B6DF1FC197EC +:10769000E05FD7C4AD6E8AB77CC57998FDF766F216 +:1076A00075CBB851ECB3ABB06E21BDAA4BC7D55B5F +:1076B00067C26F96589FB251E6B247D7D945F9BC19 +:1076C0007EB6F262AEDB9B9DC1AB0AB231DE14A284 +:1076D00078D335883FCB38CC1E28A5730C67392E5C +:1076E000B3AD6618A7F9E8255B84FCC804BD8A7FA2 +:1076F000567D695487495F825E6978401DAB777D0E +:10770000AC7AE35C1CA7D49050FFB716DA03980755 +:1077100093A84FD7391A5C786F615B537033DE835F +:10772000F108E004F7331B53143A07D126CE45186D +:10773000A9FC775D12E7FF60215F671FCD30C8DECF +:10774000D82735D7062DEBDB9B13395F3F27F0CFCA +:107750002A426E7EBEA3ED45FC7D81F61532E5A77B +:1077600077449676607CB1DF27E32FB04159E7C6B6 +:10777000B8B7D120AB1807EFF7B5BC88F7961A95C4 +:10778000B2560CF3385A59D781E7D637D6CB1760A3 +:107790001EDD1C714FEB3695DF1FDCDF2007F09EEE +:1077A0002C434DA138FAD606918F9A1FE0F865FA5E +:1077B00035E53379FA2EF2EDD1DB9C12DEDBB5DD57 +:1077C000C77F67AF7BF58B8378B75D49657514EF2D +:1077D000179F38CBA56A2ADE77A747711FC8A72B4A +:1077E000C1289E4F5A3D80670C306FF779BC87D017 +:1077F000582CD3FEFAE11D73A26FE07835C9345ED0 +:10780000DFEA03FEAB30DEB7C34E59977B84BCEF93 +:10781000D9718AEE51EBDFD19E837663AA6EF97D32 +:1078200046F8EFF07D07E97EF7E4803DEE770FFB49 +:107830006B07E99CBD8B599E17F2323A73541E9F19 +:10784000BBFB18FDAE813DA15FDED218BF3F607566 +:107850008A077FBF6C17CC07F33BF7C8BA8CEB9352 +:10786000F1A6447EDA230EC365CDF3B8A294CFBB54 +:107870000DEF6D017E292D948318DF5F23D6617B88 +:107880000ACF5F31E99E5816AD9BFDA5F7A57B9504 +:10789000EB365BEF9B327FEFC1AE0ECA2AE033F7C7 +:1078A00071B51C0FD0E5D6F37B1CB75D51509EA27D +:1078B0008DF2E1B6C3AFD5629EA8F7B114BA57FEF8 +:1078C0005E5B48A2F360593CAE7BECEE7BA6217F69 +:1078D000DF59EB94315FE29337263447695DCD6B16 +:1078E000B059F202D41A7ECF7646A3273019E6A308 +:1078F0006ADEC064B067ED8DCE00DAB5737E5C36AB +:1079000061E84BE00837A981C90EBA47884AF33CC1 +:10791000C5793F9E9F5E67918F370AA438FFC0D517 +:10792000981CB6C2EFC8E7F8853FFF02CB3AF38058 +:10793000C067581ADF2F33DB5985EEAB42BEBF1B41 +:10794000D66DA856653CEEBF05E0DD5AEF5451FFF9 +:107950006EBBEDD8BA6F21DFBE60A39CE06D771FD0 +:10796000F42FB3CCAF5F1ADF3FFC4CCC7B8FDFD85A +:1079700022D189D0E30BF1DEC13D6E630BDDF76CE4 +:10798000BCB6F057B3A03E6257BCB910EDD63DA8C7 +:107990004FC09EFF3F0F6F5C8876C59E0CE346BCD0 +:1079A000C766C3BA5FDF7F14F4EA9E62E37509EA33 +:1079B0008F14B3E86C1CAF90F7EFDABD7A23F59F14 +:1079C000CAEB9B760F2FC43CB57E8407E0B3EF7003 +:1079D0001292FA77B465A21CB565F4F8711F7E7334 +:1079E000398802CCE7B5EDEFFD4601A1B04B613F10 +:1079F0000A7DDFC45F5F3BFB62C4C7E48710FEAD56 +:107A0000830EFADD97ADCF3D48E7893F02FCE07E6B +:107A10004E7F7ED41F1C07FEAE265FA0AB18EF0F73 +:107A2000E2A5F93C35E00B3C6691D3E4D2F87ABF8D +:107A300014A5EF2F98F8AB6BED17E17E4D7433CEA4 +:107A4000AF6AFB23D7DA617E5B53A37E84BF7CFBE6 +:107A5000565ECF66220FAEE75AB4CBB6FA79DD3F59 +:107A6000317C2DE223711EFD8E013FC607CF380FFA +:107A7000D1EFABC2713A3C9CEDF7FF1F7EBF16E31E +:107A80003E677ABF6F62BCDC8F19A7F0ECC6F9477E +:107A9000F9F1FFBFFF3FFBFE8289FCFCDE99F98113 +:107AA000F173B132BF577B8DA75AB1DE1F36AB944D +:107AB000DB4F6F1430737F9FEE43DD7CF31CDA0FD6 +:107AC000DEBA7AD08DF71796EEE821FB7BAB5AAD84 +:107AD0005C85EB5AA54CBEE5C6CF5A292F66E36AF2 +:107AE00059C538C0B6CA0FDDD8BE0DEC2B4983B2DC +:107AF000A69ADA8D7A99ECA5DE9A17DD4B2CDF87F2 +:107B00007E94DFB5EDAE23FE6596E723F73AAC86AB +:107B10001979F03C6C11FD4EA7D9BEB694F3F9D695 +:107B2000DBAAE7927DB742E6F6D61DDF7F1EEDB9F0 +:107B3000AD60FFE13A7C74C51137E62D6D992B934A +:107B40001E2E11F5FCB976FADD73BA6718DECFCBBD +:107B5000639128F43FCF35300FC773E5CA0CF78B1C +:107B6000D3EF1AA49F8B39ACD63D8776E5361F1F1D +:107B7000B79DA951F4F3C08E247F7DCE8F5747B7B0 +:107B8000A15D06F69C8BDF64905EEE1DFD9D0AC62E +:107B90001AC8BE4B06FB0EFD8C6D0DD3A5021ACF85 +:107BA00046C6E235A58584FFFEFA3BC9BE5B03F6F7 +:107BB0001DDA0DDB561F50ADFBED99F3E3EDB5D4A7 +:107BC000CAF87A72823D9668C7391C7CFFD951E5A4 +:107BD0008C1896FDE7C4D2A1827D61B1173374354C +:107BE000AE9ED8BFADE910B3C6CFECA7F9BD93F2F6 +:107BF00052F3FE9101FADDA846C6F32CD9A08DEC14 +:107C0000A836F1FB8676F1FB86DEC6648AB3ED2BDF +:107C1000D47D8B61DE7D0B9CF47B606D4D837DE8B4 +:107C200057B4AE7212FD5AAFE1F97A98578C71A62B +:107C3000CC7C99CECDD9AEDBA4A19FE3B6359462BE +:107C4000BCE37EA69F4BF7C26845C43F192CB0B178 +:107C50004A42BFF496CD184FB9F3EA24BAC763C2BB +:107C6000B7BFDC9ECCC6FB4B2D71DA07F1FE5290FC +:107C70008FFF02F7F9215A00800000001F8B0800D7 +:107C800000000000000BD57D0B7854E599F077E6F5 +:107C90003EC964E62484901B6126998400094C3017 +:107CA000D868833D81A878D97644D4D0DAEEE166ED +:107CB0000143778AACE22E3627215C42910C186290 +:107CC000424006040B22ECE0EF6D77D9FD27882EA9 +:107CD0005ADB7F6C6D952E7683ABDD6AB76EA46A36 +:107CE000EDBF58FFF77DBFEF64CE9C2404ACFB3F93 +:107CF0004FF33CEDE73BDFFDFDDEFBF77E87CF3E3C +:107D000083BFAF30F699283D9516C6C633B6FB85BE +:107D1000E4424F2D6389564996AE01F8BB3F5FC8D8 +:107D200000CEBDC3C1AC12635DF6442F9319AB3ACC +:107D3000648FDA0AA0DE9E7C1CE15266EF9A379BC4 +:107D4000B12336068D19DBDBE488690128E336822E +:107D5000FB963A6212F4DFD6FCE47B8FC3783D6178 +:107D60005768323465D81EE0EE5515B12D509F6B23 +:107D70006591B8077F8F17DC52CDD8F1A38EA61876 +:107D8000C20CE02CC68E4AAC89D7470B9A003E74D1 +:107D90001BAFEF5B767B408172BD852DC77A7D5F1F +:107DA0005B020EDAD79600EC6F166335EB5BBF1BF8 +:107DB00086FA0D671C7C5DABFCFB9C52AABDB9EC3E +:107DC000B3C7A5F986F18A9A43356A15AC17FAB09C +:107DD00042DAC04E9CF7B8057EB81A61A6B03A5890 +:107DE000ED3E0787B5277EDA188425C0F408D7C68C +:107DF0000E3CA45511ACC6AB86CF77C364BECEF89B +:107E000002D19F9D78A80170747C0E13F0F65B95EB +:107E10007A9C4F9F9F318B0B60875EFFEAADCB8BC7 +:107E2000619F7313A52C9BB17726336D29ACE7684E +:107E3000066F7FA3FF938734E8FF78B668AFBDF77E +:107E4000AA02EB3832DF25C6BB638762A3FDDC6480 +:107E500085369D07FE6687E72AC37ED8ED3FC1FAC7 +:107E6000A312EFFFF5D8F3B7B441FFAEAC58A90C9D +:107E700074A0C4DEBAD53691CE51C787C65C4837E8 +:107E800043EB555C80AFA925B15256C3D83593F763 +:107E90003EE4BF2AD5FEDAC9FE30E2C70CEBE76E3E +:107EA000C6D7A632379D6F7CC133921FDA15D99899 +:107EB00082780DF53FE55E69C0EF127F06B5DB699C +:107EC000E7E33C37F0A47B91613C7BB9C0BB8DDD1F +:107ED000B40CE8625293436EF543B9E0AE8548278F +:107EE000DE350E26013D5BEA9233AB805E0B9EF2DF +:107EF000B0EBA17ECFB2C8E900D2EF55961003B81F +:107F0000FBDA68810CF3EE095735321F63BD591E49 +:107F10004E9FC596798F8D70DE85E5569A775BF317 +:107F2000CCC85D30CF268F4746D41EB1859A902F9E +:107F30008E781CB2867C6789154A21C636FA674757 +:107F4000DBE17CBB1C1C9F03E573A31A8CDF3EEFB7 +:107F500049B704EDB7A9B00FE4B3B076C364E4C386 +:107F60003516380098C2FABB1B2663FD0D16D6C61F +:107F700052F36F9324C2C7436B4A6FC1F91E9A979D +:107F80002B31033F649471BCE0DE3C790073926353 +:107F9000EDF27E7610C61FFFB19759615DB94EF5BF +:107FA0000CE2A9678A8BED0FF063C6F5642E705959 +:107FB00090AF01B30AEE0FA68A6C81F6E3ACF144F0 +:107FC00005D4B3B9AEC18321A4C7987217C08F3747 +:107FD000B822EB818EC67FF571560270EF051F93B4 +:107FE00000EE6DB6909CD85DCB62B83E4FC49270E7 +:107FF0004C87F5543998BF92AFE933F89FE7ECBB53 +:108000009F322FCE03BFBBC4EFB09E4A7D1FCC7200 +:10801000D33218C7A732790B40F9EA60E29F605D5E +:10802000B0B5B015E6F19D5D7533F6F73D15FA264E +:108030009567DDE7B064F586F14A192B9EA81CF61A +:108040008F273AF5E3BAD89759ECA0C4EBFD3098E6 +:108050004FE0A9F7E9012D01F54AC01691809E7DF8 +:10806000CD6FD13E99EA517DF9D862503904F3972A +:10807000282EC28BB73E7D3F246160BC121C1B7949 +:108080009EC9375541FB6D7F6399B985402E3FB737 +:108090006D09C4B6C03EFB421CD6BA603D0097C90C +:1080A0006C8EE44F9DE7FC3207E161488EC21A12E4 +:1080B000573236D126C607D802F3E5210CA4F9526F +:1080C00039E7AFDC4C90CB55748E6E2B8C9FDF5C08 +:1080D0009A43E72A470BE6831CEE0B48346E3B9C21 +:1080E0007B00D6A7452CA183FEE1F4BE4FB4A3BF0D +:1080F0002B059E609E6D964186F4A95998FF69D81C +:10810000C3B6AB5F2E500DFCF203433FC48797E923 +:10811000F8E0E3201A5819FCDE6C91BE9DCB8F610C +:108120003EECC5BBF499FB24A013B6869F1FEC5E02 +:10813000FB0CFAE5A9E978F629E9B0971960C06364 +:10814000F96667EAFC19D22FC7877FAB23EDF712D8 +:1081500013DD2D1374771C1907F9E31A16DB2FF1C1 +:1081600073473DEB556D6C0BD29D8D6DF6CD64EC78 +:1081700013BF44F89E85FA610479371FCF63D67028 +:108180007A64C679ADC3E12339822EAED6E934BD17 +:10819000DEEBF26A99DEE1FBB6970686F0AE19E8EF +:1081A0001A240F0BC3B9E77A0715E4733687850ED7 +:1081B00082BEF03EF116BBA99608F33CD237D42715 +:1081C000A6E6D2590D1E9491BEFFE834E259DF575E +:1081D0006E29DFF7A1A74F14A01CEF43390DA5DBD3 +:1081E000840735C0E9570D707B65FBA99C292F00DA +:1081F0009DCD79F604D350DE9DB1C69C6877FCBD59 +:108200007F3DE2F7E30616D2A0DEF7CA0083E5B2AF +:10821000EC53DAB5483CFA785015B3E48F5DF6BEFE +:108220001027BB48654EB28B86D5DBE36750BEEDA9 +:10823000BCC513D258EAF7434FEF96FCB0FE8284D8 +:1082400065C83E40B24DD90BBBA2A8AFABADC9A922 +:108250002EC04FB7FC64B47136EAB3BC6936E08314 +:10826000FF08BC13B58FBF98BE7F3D6CD4F7DF2AE3 +:10827000077D9F9FD2F7D7ED7B6A07EAFBB84BB427 +:10828000D71E4FA2BEEFB22BC7198CBFA1DC1FB502 +:10829000A1FE758AF1B56351ACD7FB6F38782CAA73 +:1082A000A1BEB9E59902D5837A5E9FF7D9F968F73F +:1082B0004CC57DD0BAF68695E2E17ABF6F14BDFF5A +:1082C000D9C1CF7618F5FE37CAF7A6E97D1D66AE8F +:1082D000B83B5C3DF6F9F4D9E26E19F5ACC0B312C7 +:1082E00038126E05BBCB7E287923F2BF6EEFFCAC53 +:1082F0002C106DF520BEB99D69E6AF7B859CA97EEB +:10830000D41189C1FC73267B886FF7ACBAFD00D20B +:10831000D59C67CFF666A2DD7866A11DEDC6350156 +:108320001BD161DFDFAB936461A7E27AC16E2CA041 +:10833000F53C7D416255C3D73B29E650D02E30FF36 +:10834000DE1C10FCCDE20B4FE6D23AD816A83CDA80 +:10835000A6AD088FB0DE0DBADC6D813D93419D90D6 +:10836000902F1F921505E72DCE0D6BA874EDB20569 +:108370000E6038DFD93E2962CAB8149C93AD30EC48 +:1083800067FBA4847E9FE50E6F0AC0F8BB9EA9DB45 +:1083900016446AB5083952E120FD0276783EDAE9E2 +:1083A0005F9DA87C3F0078F870736D253803A3DAD1 +:1083B000D3ED2DE1DEF672036C1FD9AE5B59C2E539 +:1083C000417BCB73ECDF91866CA14ADC17AA254E6A +:1083D000A7E7BF26EC7D3AD75987CE77921D04FADE +:1083E000C986FAA7D922939C039EDA7825A9357409 +:1083F0005258AF947023CA927E2E3FB659060E3D56 +:108400008AFB59ED207D85076131E8257D3DAFFB75 +:108410002D23EA1FD0378A1B805FFAFD437692C571 +:10842000A88F84FEB9CF2ADFFD04CAC16F64D03C97 +:10843000BF2F8DFCDB03B5E87F54D4A07C027D9C6C +:10844000897A5D5B087A93E1EF0ECD8276C9127668 +:1084500018FDAEE9CFC5A515B0BF6F54B868DD856E +:108460006BADFEB7AF80FAA60109F9326053DD8823 +:108470009F5D4DF37D6C047C0EF92FB0E8040C3148 +:1084800019CACF90755D7109EDD5A2E8F17E07CAD2 +:10849000EDE58CE381C5A40570AED797A82FE1F96F +:1084A000979CC8A07E3AFD14AE75D0FC57230DCC26 +:1084B000FA3CFBCB9B837494778F45EC0F0817E055 +:1084C00022357AD80A63FEA6DC45E3EAFBD4D7BF9F +:1084D0002B7269FB0B5EFAFEDE41BACDC3FD550E71 +:1084E000DF9FEE77FD47A02F8A72F4F2F7F9AB36E3 +:1084F000941779F7B0AB50B4CD3821D3BE8BD41DCF +:10850000B4EF3F8CB64F15F689F2CFAF113F9BF712 +:10851000598CFB84F506C43EF39A4DE733F6BEADA5 +:10852000A5B30C7E88BE5F8B7C3712EF1AB647BEB0 +:108530000EF4D0D1566DE14872C72DF46FAE77407E +:1085400091101F42FFFB9E389FA6FFBD4F5834E796 +:10855000F4E17A3FD7ABF37107E91BB7D06FF9FBB2 +:108560003BA2DA087A5F2FC7093F1EEC99E5648FBA +:10857000CACA9C77D04FFA79D9BE2D06BFA5A2945E +:10858000B73B5ACAE566DE275696B802674F2EFEFD +:108590007E2E3F2F94AB7932F88B507FF2DCB305FF +:1085A000DF83DF7B8F16CE4455D87BEEE10209EDE9 +:1085B0009065CF4C95A07E9325FEF25494134FDA2C +:1085C000E85C4F1FCB50F01C574FCCD8877A419FA7 +:1085D000778198376FED91DD88CF9E168DE4973EB9 +:1085E0008F793FDEC95C7E1F11710BD41F8FE1FABA +:1085F0005AA74B5B088FDA0A9CA777594500EDFB19 +:10860000230EBEEF9EC5FF202D82B27715B3C8336F +:1086100046885BAC622ED997C293DE5EAF877E360A +:10862000633F689F61847B576D5CA854F1F342FD02 +:10863000B7B1B898F0CBC212F98179C2D759502A94 +:10864000D67F4D94DD8F7E488125D6863221BCA809 +:108650007509C0CEB9AE10FA35ACA9511930D8ABF6 +:1086600079D187D9DA1CEE67D87386D7C717DC7B38 +:108670001AFD88A2A59690E447BF3E349820BFC952 +:1086800041F8DF937FF24C3F949BF2670E62B9B8DA +:10869000742AAD23D4DF754305E22F7F7F08F9AD3F +:1086A00067D1BD21F42346F3FB0B45BC4587F73466 +:1086B0005BE6A15E8E2F70DC84FBDEB64CC945BF45 +:1086C0007F9B3DDA807181BD006B30EEBB1576EA91 +:1086D00067591A6D1DA8C2DF07F2915FB709FF5FE6 +:1086E0001F6FF7324713DA117B9A4F2EE4FEFDCD50 +:1086F000B988BAF576F093603FEB6F9B57DB6A1849 +:108700008FEC308C8F55839F10403F3B4EFEE278BC +:108710008B3FA2C96C981F8E7EF241A8DFFBA19708 +:10872000FCE46D59BC7FC64CC6E36FCD4F929FBD34 +:1087300047710D225F8FB326148C0B806E4B1E2465 +:10874000259548EC81FAACB53E790BC1FBC94FF7D2 +:1087500029F9118433063E20FF187C845B30AE3546 +:10876000CCDF36F93B6F54707C8EE647C7176CA49C +:1087700038CD707F3ADC85F2285F552555D09DD1E4 +:108780008F36FBD9BD4F0F26F09C15890D4A85E821 +:10879000BF5C203FDAD5E08A3849D90FD03E4AC0C5 +:1087A000CFDE227FF17E753E4659CAB0E120437B81 +:1087B000EFE50A1E6734FAD5E89792E92BFC6AA325 +:1087C0009F9DA8E07EF590BF8DEDCAC6F6B34F0819 +:1087D000F962B66BFA143614676D45BA616C1E8E79 +:1087E00003F873F5E45039AF1ACA1315DCAEF27909 +:1087F0009886FEA64FE6F60BFADFB4BFF98C911C03 +:10880000C7FDA19E626CE68EAB68BA79D5D0FEB981 +:108810000ACEEF32F687F1E4BA0CEAAFE3D3601781 +:10882000517F1606D57015DA410E82FFF6AF98DF3C +:108830000270E19AF4F3F8A2FC71BB9CDECFEC8FDE +:108840003F52C1F5D6A5FAE3EF97A6FBE3D2ED9F21 +:10885000681487BA3F5AE0043F66EF6B205B7CD810 +:108860008EDB65BB1F78D28DF609EC7F9103FDE9A5 +:1088700053C95BD8F491E8EF7FC65F8F575C9EBF0A +:108880007EE489275F46FFBCB3CE5283CB38F2C467 +:108890005BAEC523C42987F495498F8F43593F1E8A +:1088A00083DEDC4EA99EA87ACB908FD780DEF7229C +:1088B0003F0F30E4E7AEF93C9E33521CF1DBB57F4D +:1088C0003E71C4BD7E4997D39191E2F7AF978B7A01 +:1088D0009FB8C740AF0BE5E93ABF05E588B44E8FB6 +:1088E00037FAE75F2FA7DA0FC9CB262D6CB93CB951 +:1088F000F9E5B2F129B9F9E7168F4CF8AD5C0E8EA7 +:10890000C10FFABCA9B85F7AFD38EB00A7032B8F23 +:108910001F9AF9C2DC7EACB8DDFBE29CA5DB7B6E66 +:10892000C8CAA5FB9E9813CB658BCF3C887662C4E2 +:1089300041B4BCFB5389C70766336EF700FE502F66 +:1089400079DB5902F1E73B354072E5D87A10FC75C6 +:108950001CC6F8E4D7363115E1DE351F537DDF3B09 +:108960003686F17D6F73F77C3CFFCB95173A7F5FBE +:10897000AA9CC0BF91E403C91DB2CBDBA3E85F1F73 +:108980006DE5B07B7F3BF93FFB60AC24D2A14D216C +:108990003F0CF49566237AB3D0F9829DA5A1DEDA67 +:1089A0007D95653FDE5BC4238E7137737F3C540E2B +:1089B000F83A791BC068DF807FE404B824DF3DD833 +:1089C0000E76F291B20AA2833D892E7715FCDEF372 +:1089D000923A49BE881C02CA7159885E995E3A2C47 +:1089E00075F4BB13E19DF64401E2B9601D8FFF4DA4 +:1089F0005ACA14B4C37AD427DDD7E17935E7302BCE +:108A0000FC9E2FB130F2E96E3BF7DB762F2B9DA950 +:108A100031BCF7BCCB8D727050E8BBEE04D8852317 +:108A2000ACA7A7CC2EECCEA56EF4C3BB85DEED5D66 +:108A30003A9FEE8D2645FC16ABC13F6811FA77527E +:108A4000840DC5C9909CFBD6E8F1C19C5B97DBF017 +:108A50003EC8228C07EB4F1300F7D5ED20FE2F58B0 +:108A60006BA17DE49AE2575FA970D23ABE2EE21460 +:108A70007ED64571B3E34BB93D7BFC540EF9AD9DF9 +:108A8000F58535B86F0C5BA1DFB65795C9AED7FB3E +:108A9000DD27C6D5FD51B37FBB6B1DF7BF7DCD1B59 +:108AA0003FB04E473F733061453BBD8951DCD3EC4D +:108AB0006FE6093FF566F45389EE86FCCFD7CA8886 +:108AC000EF0D7EB735E5877E1DFA229EB2C7C953EA +:108AD0005E003DBBF0B1AA5B5DEEB4F8A282F1C5C9 +:108AE000EDA7049EB42AC29B7C7A30E1013EFAB71E +:108AF00047FF6BBB0BE6F326F5F68170020358B611 +:108B00007801E941ABD65AC5ED60D21BBA1CEB5DCA +:108B10009A3313FD42FABB52D865785FB0B4AD15F5 +:108B2000E9569EE31ACC443EFED1D27EEA0FF667A8 +:108B300039F4579462ED2DDA079C07F25D52ED4748 +:108B4000BCB14889BF5C46FB06EA0DF2261CE6ED87 +:108B5000256C5F36BC3E4FAD17E371B85B4A727B44 +:108B6000D316BD01E55CF7B5392192B72CD19A81B6 +:108B7000EB6EF531F417FB167EDC9A81FC05675A23 +:108B80008AEBB325258CCF75BEC2E9403E9D949CEF +:108B9000B4AE3C7F39A3F1E85E1D3042F3FF0CCF49 +:108BA000C98A7EAFEEFFC525A423C01B8DF34236D4 +:108BB0006F7747236F57B42E5A80ED7ABFBB712170 +:108BC000EA1FB003DA34C4D39AD2FD467FFC85296C +:108BD000529A9FF5A796BB5A98F616B0DE3651F614 +:108BE0002F6F73A31FD65FD7D641FE5F9385A12B4E +:108BF000B5CB01EB417B62B185FCA9BEBAC56EAABB +:108C00007FC54EF2BB6FCD9C09E8B71D9FC2E9BF7F +:108C100057E2F70E3A3EA44C4E97FABCF706F93EDF +:108C200066597F571046BF4FDC9F9AD7F749251FDB +:108C30006F9B97C71F4A3EC966B171C4EE12DAF145 +:108C4000D707B91CD0DB9794FCFB22A906EBFDF3F8 +:108C50004F17039CC1D2F209B633A6C7D1B54A5803 +:108C6000D7231B32443CFF93AE469417A2FDF5C1B7 +:108C70005F77A19C36D62BC1E1F5F9EB14F2BFF377 +:108C80006D4CBB19ECDCFCB5577EDB86F7646A6E75 +:108C90008A0E4B87F7EB3FF72F091FCACF858CEE63 +:108CA00059EC37E6129DDA6B383DEC79734503DAFF +:108CB0000F7D3F726B789F9AC778FDF55770BDB3F3 +:108CC000F5B5782FDA7385CD0E86F64161F3C624AB +:108CD000C6472FF7FCF5731FB55EE09DD918D1B7D5 +:108CE000FEFB59712E6C796E8ABF2E12AFFEA2CA9E +:108CF000CFBBDE2F4F117939822EA3161ECFD1EBB9 +:108D0000778BBC9DD72B393DF5A25D86F6D62D1904 +:108D1000A48F65539EC95641BF8A1837B8E05B3EA1 +:108D2000E4EFD1D6A5C7CD86E0A178D9EBA5DF4386 +:108D3000BBFA96FC99A8C7F57859EFD3F302182F20 +:108D4000CB06BA72E4A4F24A8E054BC35A90F40BD8 +:108D5000E959F615CB28F1531E5FD56667A4C5897E +:108D60007D4B789C585FC707E5E971705F3D23FB39 +:108D70007797BABF15DB7FD48C227FA4F8273020E9 +:108D80008C5FA82A31A37C92859EFA9AD053A09F2B +:108D90000E052FA29FE2FB785CC78CAFDBFD3C0E7B +:108DA00060BECFD3E39D71C48367ECF8E53F07F95C +:108DB000F9FCFF8E5FFE67F0F2E29717A6FC79C719 +:108DC0002FFF33981EBFEC4DC52F1BEEFA13E29711 +:108DD000BDC54F9E49B0547C72E3D2D58377B1CBE9 +:108DE000CFABDAFB82BAD083FCD22AC9D612A0A7B5 +:108DF00007BAE93EB140DC1F9AF1A606385F54E598 +:108E0000299F06678D7D9F6E2DE7F45AA0DF7B9A20 +:108E1000E876A79BC7B34E0C5A282FAAAF292F0775 +:108E2000EDC76E3BA3F8E89E07FC3968E72F11FEFB +:108E3000D2CEACC106CCAFD1AE6232D219D8E49E4C +:108E400010DAE1CD961A9E2FA5786AD07E596599E1 +:108E500089FAB7FBDAA4FB05A45BB744F7F7D5CFD3 +:108E6000AFA67CAAEA2F5BC82A1B2B7F6AB5E03726 +:108E7000B7231AAA92C6BE57E85BD54D71885E7BB0 +:108E8000746108C67DB2253FB415E8FB2951FE4147 +:108E9000DC3BEAF5CFE0EF60283D374AFD3F88FA3A +:108EA00013A234D7FFB3E89718A5FF49D1EFD42810 +:108EB000FD5F14FD4E8F52FFB2A87F6594F17F2CA9 +:108EC000FA2547E9FF13D1EFB551FAFF5CF47B6354 +:108ED000583DA78B5F88FAB3A6F17F29DA0F88DFA8 +:108EE0002F94F8F93D79F653052BE19C6D48F7284E +:108EF000DFF7B5E7308AABBD7143562DE939F2B3E0 +:108F000077FFF5798AB3F5AD05D19C3D763CEDFF51 +:108F1000A26C87F1AF09F8890EBB04BDD71C4ADEED +:108F200018983EDC5F1AE21711AF3E9A215B29EEDA +:108F3000646183FBD10EF3C8CF53DEEB4D4CDE02F0 +:108F4000F3D7C459C20EE35C17C8A6796AE2C939DF +:108F500068B7E43A9502A477F657FC5E02346B0DCD +:108F6000EA6F3D4FE23B070F44795E03E839E4E3E3 +:108F70009F5AB91E1A1A5FCEC6F1CDEBEA6991E984 +:108F80009EFC9A4020CD4EEC5173328D72B0FB9412 +:108F90002561F7A5FCCE1A9525C61BECA9E253ACBA +:108FA0005082FAE2C4DF4B7ED0F33DDF1176A5D6C6 +:108FB0003F5F81F51C9DC3F9633DE65B14E37C32A2 +:108FC000CF9355930AEEEF6880DFFFD94F25958048 +:108FD000216F4611F7E7A3E557F421FD548D4E7F2D +:108FE0000A3A1F289FAAF939215F2E33ECABB1DC76 +:108FF000CEF3816A389DA5E8A6C2A2D38D05DADF3B +:109000005CCEC7BB5022C6CB4E8DB7C4305EA89C89 +:10901000C799F4758DC6B755625D7ABBD1F8ABBE02 +:109020009CA58D371A9F874CED46E3B74653BBD1BD +:10903000E44EA5A9DD68F2A1CEB48F63A23E2E4A0C +:109040007FB945E0EDE27C69E66F3D9FE70F258F34 +:10905000ED403B26D71AFA29C677D8F7ED9CFEF3E8 +:1090600041A6817E9D88FF5DCA86EE41F4FB8D7727 +:10907000CA73685D0793F373FE027F0375D59697F5 +:10908000BAC7F8A19FAF87B9E21D1847DAF61D8B62 +:109090008C7643C90B3B7A25CA73E3F160DF3AC68D +:1090A000D2E3A92C7CBD3C3C8E7A65199707E67803 +:1090B0006AC62701A65C918A4BFB44BB0C5B0CEF94 +:1090C00036A03E48F563DDC7FC50F0419F8883FF22 +:1090D000C2AEFE5739D27774A02D13ED877C467E41 +:1090E000BAFD84A2D9FDC3F309A0FD47E5688FD777 +:1090F0007F407194A1F6E0F621BEC6B20FA0FFA793 +:10910000345FFB28F399EEF38F33E503635E8BB98D +:10911000ACF130CD93333C0FEB3E2BB7A3D857784F +:109120001CD71C1F02FB8EECF7806D50A17B5211E7 +:109130009FDFB5EE3CC5973FF2DB22B88E42972AFF +:1091400021BD143036A8918657FBD11F9715D72023 +:10915000B62F884AAD656437F2B84CC15226559196 +:10916000BDEE89E0FD801E4F9A27F21E5092A11C91 +:10917000D5ED79B0DB2755E0792B23E7AB18E26812 +:10918000420E4EFA29E6D7EBFB3D51564DF25ADF1F +:10919000DFD0BEE7F2787AC0C6FA31FED203EBA385 +:1091A000FDA996065CFF47B03EDC9F8E8FDDDFE5B4 +:1091B000F81861BF0D78FFEAC3FDCAB8DF0F9465E8 +:1091C0007CBF11BC8F2D583A48F72185802FE37E54 +:1091D0001B53FB554CFB9D7DB1FDEA714447C5BF58 +:1091E0006EC77CB8D4BEF8BAF4F857C0A6D2BEF6A3 +:1091F0008A75ED5AB77A8605CF6DA9C3827ED4EF02 +:10920000DFFC412BE2A17795CC309E29B341A24FE0 +:10921000B9EE3C9D37AEDF5737DCDF9213FCFCF331 +:10922000CB6C742FABEFE786A178204BB0DCB4FD9C +:10923000DC71B1FD98CF69A04C16F7073CEF0EF832 +:10924000E12FB1BFB27B647ED0F395F4FB99E3A725 +:10925000E6D4A0FDD9DD347526DAB5AC4A93E6C371 +:10926000388B855E192B1E5AE84A529ECDC4E8A25F +:109270007EBC97624007788E80CF563BB68BC0FC91 +:10928000D06E5733CFE799B82626EEB7791C7448CD +:109290004F0BBCFC853867C0C3DA8A8BF89F603FF0 +:1092A00058C97E80F3DB5293E25BDD4ED1ED133D76 +:1092B0008F7345F9A361943717A16BA2E3BDB07E0C +:1092C000CEB7E2FC23E9E7BF7B994CEF80F2C4F90B +:1092D000E7AD394FF42B5BF8F91744B7373872997B +:1092E000C1DFD6E9B991C6D5CF7FAE387FF339C398 +:1092F000BEBB2BC61BF669E3F78ABD89F312DE0BF2 +:10930000ECB4272494CF971A3F7FA6CCFA538C3B1A +:109310005CEA3DCE5EBCC711F7C163DCE324705F3D +:1093200043F738EB3E56D04F1BEB1E67B094D39FEC +:109330009E57E5CD65B6E299FCDE95ECBA52AE4F8C +:109340006C657E915FC5FDB5A17BDAFA9C99787456 +:109350003254F740BF974B793B19FC73BC9FD7EF52 +:10936000E57D580FE5C952A1FFB03E2775EF3F9646 +:109370009E5EFCA30519D5D0B5FCD5AE02CCAFD608 +:10938000F9EE74C58A5B91EF9E2A954DEF02CCF7FA +:109390007303949F01E3FB77A1DC671AC5AF936267 +:1093A0003D7918FAB672FAA0F8B2C90E3821DA8DF2 +:1093B00066078C76FFFA7E85F9FE354AFC6CAE07AF +:1093C00009310FE5946F0DA3FC5A690DD811B5242E +:1093D000A7D3ED88A5DC8EE8D4F168B223C605F8E2 +:1093E000EF476C3CAE7524E809B5C24F8FFFD64AF3 +:1093F00072FAF17217C513062A849C92A3144FFFC8 +:10940000E2F4A926DD5C6BD42F5A03BEA330E853E7 +:10941000FE1E4271915CCA17F9913AFF99F5EB086B +:10942000FAC53DF922F238756F6609698CDF9BD168 +:109430003D5882F3DFE365AFDC827A27151FE2FB3C +:10944000EE5B56B11FCFB3C7AE2DA2F8D0AABC4079 +:109450009B213ED4BB285E80E733B0BE4862D7C0B4 +:109460007A05FEF578905EAF590BA93E15A748CF57 +:10947000EF5A2CF2D3168BFE3BB3B87F9060733D4E +:1094800035B88E66CE4F7F6A5E27DEA761BE6E9FBF +:109490001A3D8CFB7A73727A7C525F8FAE07C6CA14 +:1094A000CF34E777C2395C8DE7306A9EEA28EF0354 +:1094B000F64F2E096F2EBE7CBB4F7F7767F6A3CD8C +:1094C0007EDE7DD6B042F15C917F61F387135385D8 +:1094D000FD86F904663C2279DD08EDADC2CEB0E729 +:1094E0008612A83761B911BC2F00FD7D07EED32687 +:1094F000B35339D0CF5ECC62A86FAC1E85F248F46E +:1095000077916B27172551AE1F955A498EBAFC5A91 +:109510000E8EBB6B796E0D4F17D024F4C343A97B1D +:109520004D1E775E325ADC59F899AB1E6B45FDD55E +:10953000D306E7EAE779D50B619CDDA39D67D37E6F +:10954000D28BA3C79BD3F5BC5F9C6B856EFFA886AF +:10955000F32CA573BE77B251FFE56B242FF4F7A36C +:10956000374C2E14F6F8179B87DC3DDAFEF43CE40A +:10957000E28BE721EBF9D69F230FB96BB221BE61D5 +:10958000CEBB2E9D5CACFB49BB265F825F65681F2E +:10959000A3F63D313ACFA1F6AA42FAE98BC727CF0D +:1095A000CF4F98F098D7A45D567EBE8E4F3D3F3F7B +:1095B000BFD9C4EF2E46EF028A5416C3B8EB45F06C +:1095C000FABF47C26B3DB6E17EEAA9C917B193F570 +:1095D000769F376EA5F80369F7BD971BB72AC2B807 +:1095E000D50C28316E9565885BB1DFDEAAD4A6E282 +:1095F00056BF4039559C8A5799E513ECF3DCE48B50 +:10960000FAC7BADC2C91E754A5CB4DA4A3D1E286CE +:10961000BF9B2CEE672E316E78A33F9BC7D5845D30 +:109620007EA38873E8768C1E3734FB253D2AF74BE2 +:1096300002B6841BED987745BEF898791A112197E8 +:10964000D6317A0F3C29DA9AE69F14A9B17E2727F2 +:10965000AB84C5A0EFF5F713063FC45D49F6D2C849 +:109660007EC8BB93399D64FAE5B478A06EDFEEBC8A +:10967000EDB152E3B95B853CD6EB757DAED79789EA +:10968000FBD980B8CF0C2EF8E785E8477DA479FD9B +:109690005B723FCF3DE5C8F762BDABF8BDD8DEDBFE +:1096A0009803E96CEF033F2F45FD62FEFEC1E963BD +:1096B0002F531ED1EA5B3C21ECBFC71EA6FCEEB1C6 +:1096C000BE83305ADC3453C48B321097B3867FAFDD +:1096D000402FDF99C4DB5DE350AE44FCFF6A12C744 +:1096E000EF7B879FA577781B6CDA7C3CDFEE988D4B +:1096F000B502AAFA9B785E23F8EF317C97B6F7F4AF +:10970000B28E72803FCCE5F728DD4D735CEA08F33A +:109710006C69C90FB5DBC15E117140FDF78ACAC81B +:1097200049648D4376AD10E38727F76D2CC0FC8A22 +:109730001EF1CE6DB47388E038442F9A9BE76525FF +:10974000DC9897D557CBED4A0DD6477989D6FA06DE +:109750005CBFF30AB5C26A9023AF4CE271DA9C9BFE +:109760006D6F0D18F448567D3A9CC90C30881AA7C5 +:1097700009B6CBAE50D02037B315390D5E5C999544 +:10978000FBAB4CF88F100B213D5FF777553BE6C1E3 +:10979000FA56BF6AA5BCB46054F93AAEF7BE01C927 +:1097A0006FBC771EA22FD7ADBD98B7D6DE02F3D817 +:1097B000E93E8CEC87688B4CF006F11D8C6E257FA2 +:1097C0001FE663778B7BFAFEA6B68E72A4C775166A +:1097D00099E8D1744E957695D737737BBAB7A96D52 +:1097E0001EFA519D6B2C32FAA99D179650FB4ED94B +:1097F000126A03785BFD0ECA07DA1DB38510AD7BD4 +:10980000233CCF6777E4BC7B09947B9A4EBAF1FD89 +:10981000A97ECE7AFDDE75FB498FECEE55E99D44BD +:109820006655C482F4A1E71998F77B4CD0631FCA30 +:109830006BA4EBF1AF59C85FCE97253CBF69CFBB96 +:1098400069BF45B9F23E37ECF78C68EF5C6B0DBD34 +:109850003D0EDAAFB39CC37CE0A2E208437DEB5C33 +:10986000EBA0DF7F3989D38B9D011E0DE7071E4CCE +:109870000AB60E3F4FBD9FF95CF57782607E26D019 +:109880002FF28A389D8B9D5382A8AF15579CDE031B +:10989000243F64D5A837C10E453B55F1A7E76FC1FA +:1098A000DF85CFF4FC7D7CC777F6DB0D9837B07B86 +:1098B0001C0B61FEBAB73E3D5FABD0A6F693DF044A +:1098C000F4B41EF091B7BC382D7FCBDC5E5BF03B6F +:1098D000F27B7DED57F3BC9B7A9E77F325F0FFFF7B +:1098E00027F3512E390F457C6F054B8C73BF24E451 +:1098F000F1B6F60CA21FFDFB2CFA7895AE37C8BE68 +:10990000E9AF3BE91E403AAA3B4F79F07BD7CCB98F +:10991000A8BD93F74936D30CEF4FB739D4858740AC +:109920008F361EBE7B417B652AFF280C30EA79709A +:109930000CE81D41D74AA069D4F5B212403CEA793F +:10994000ABC7447E457FDD6A0BBD075F63E1EFC1B6 +:10995000EB2C247FBA41FEA09DDE3DC6BA76B580D1 +:10996000A1E54CCB2F8833D013FDAB3E2EC0FDEDCF +:1099700005BDC2E89EE9E72751AF7EF8061802A1AF +:109980008BE13DFDDDABB9F43AF578059B8278DDDE +:109990002D31417C5FEDC23CDCA8B053FEF600E007 +:1099A000C183F9673CBED0D7E0A078559F6425F904 +:1099B000D37FEEFA7948A77B66FBF7A31ED8F3E6C0 +:1099C0008A02CC63FDEB29FCFCBA0B06497FF9D671 +:1099D000F1BC2B9DEE882EE97E85C3E3AF013A2CC6 +:1099E0004BA39BC36F97135E0EBF0DE7EDADE3F97D +:1099F000E6DE7AD6E60056DCD32253BD8FC5FAAB3D +:109A000000BFDEA6DC347A2FD272D3F8A1644D7A7F +:109A10007DF8A5D724C4EB936B54CA6F604DB17E1B +:109A2000BC0F01135123326486F623F8B19DB37F36 +:109A3000FE12C689FA5ABD0A95D949FADE490FC8FD +:109A4000F3FD0CEBAF9C3092FEDBD3C20EE1B9C04C +:109A5000FE624B615F256B9312E2EB11A46BC3793D +:109A600075DF0F7EA8418F3F92C1F9A4DB0E7ADE2D +:109A7000202F578A3CC2BB44691EC75C3E9231B05E +:109A800002EFB7BF74784F976BE2D8E7FE08F2DFBA +:109A900008F259CF4B643616403E1C6B9CAD412EEC +:109AA0003FA3124BF07C31A197819F90EFF3F258C6 +:109AB000EA1D3FF05D5E863E1EC0E9F9884AD0F897 +:109AC000CE5FBBBBABB16AF87C66D8CCF743F9A7D5 +:109AD000A556A2BBEE0D194D23E5B7FCA972EFA068 +:109AE000C857EAAF6BA33CD53D4D5C3EEC41795580 +:109AF00085DFAD9A43FEEE369147A2CB9DD1F05E55 +:109B00002DC67B7ED5C712DA4793D4B884F450B4FF +:109B1000462DC00F4E740B7D0AC329E23D16D9A510 +:109B2000F788FC3BBDD4C7A99E22A79DE39E967CE7 +:109B3000E2B75D2D7E2AFBCFBDDE80F1EBBD8B1839 +:109B4000D9A385CB93E45FEAF8B383CD8AF82B5190 +:109B50004DFC67E2B7BD6F9E213B725B4B25F1ED7B +:109B60009E8238C9056F1DBF9FF02D4FE7D7ADAF5F +:109B70002512BE5AE2777AD761E6475FFB7B098CF4 +:109B80004BDE536A0BB9EAB05D7AFF2FEA1C3FEF58 +:109B9000B98F5AEF4D1420FFED3E04FC77D50874C1 +:109BA000FA79F980C5BB1A47A07B33ACE3F1592F92 +:109BB0004B93B7BB5AC05573E2F9BBA82C5CCEE5FA +:109BC000EDDE1699A99353F748454D26B96A3A3701 +:109BD000B62E3DCFD57C6EBD12EC3F8479A4B93B47 +:109BE00046DAFF9F8A77BD34E781F6D7B7919DD0DB +:109BF00053BF98EC844AD766B21FBAD5391318E11F +:109C000085C7BDCCE3EA79D4C3E446A3350D7F7A9A +:109C10003EF5EFA70C2E40B95A9221BBF1BB233978 +:109C2000DAF905F30A2E3DFF59BF571C6D7F95AE3B +:109C3000E5F4CEA21FE407D905753F2139B2A78903 +:109C4000EF635B469CE8EBB5C39F2C68C7EF948835 +:109C5000FBFB0F0E97CDD7B81DD58BF9F8725B863D +:109C60001FF3257F53E92779D0BAEA9933A4C75F58 +:109C7000B5FA518F57AFB9EBB798F7F408CAC52AB0 +:109C8000EA5760BCD7F8959023EF4C61A67C4CF660 +:109C9000B9E2EDFF1AE4EB182DDEEE1A1FCE984A5A +:109CA000F7937E87783774D17CD6FCA95FEC7B7CF8 +:109CB000D778B5C838FFE96353270C78C65EC794D8 +:109CC000A95F6C5EED7A37CFAB5D7FDC166A65A964 +:109CD000755CEEF700519CF07B6CC52B81CC69164E +:109CE00047E764FD8E128CE3E45BE95DEAB5560F4D +:109CF0007FDF7D40223FFF6EED94A312FD18D5A3B8 +:109D0000E0FD6B068B3BD08F5DD1E012F74109EA95 +:109D10001F10FDEF8E3BD3E2B3DF79CA99165F0CBB +:109D2000B0ADF4AE670573A47E073A099C7DF72CAD +:109D30002AB180E97766BDD3877AC48D745D309C83 +:109D40004FD69E75BF70CA30FE2D53C1EF9E06FFE1 +:109D5000F125F625F2B344FFD1E4C8EF5B5C2F9CFC +:109D6000023E5BE650EEA0F346270EE4D49629BFF0 +:109D7000AA347E1F2C250F381E33D624341EDF8ACA +:109D8000713BA792D5611E5C54D9E1520DF81E6D4E +:109D9000DE4D405349E24FE5A27E82D3CFDFAF8D47 +:109DA000365ED585B693D360C9EE4A46F1B58CE2EE +:109DB000EEC42280EFF9B15B73E5E3EFE97A79D382 +:109DC0000303A717C1F9B95996DC86FD12F7BF81C5 +:109DD0007A37A3DEE1471C976B07348CD77554B2F2 +:109DE00038D269E703DCBED8162CA575966FED72E4 +:109DF0008D24AF76B610310DC1190B629A1DC61FA6 +:109E0000DFA4E217CA86C6C95B60A1BB587D3DFAD4 +:109E1000B8A3ED7FAC7175FCEBF5E6F19D4F7C804E +:109E20006FCC596C62EC9798D7A5ADF7E1634C16EF +:109E300093B493D3102EE7F7A3EE43137E81F5F38B +:109E40002D591824679D13A309FC6E8FFA7FDC1A25 +:109E5000EA95AA0B96971FC57812E00DE3849DDF63 +:109E60008B28CBA15C09C2BE4D263881F52B5E99AB +:109E7000A2B5015F3883E97A726562A105F966656A +:109E8000714E8C68F902AC17FCFF95F8DFA05762A1 +:109E9000C51692A3E70F48FBD07FECFC636C6321EF +:109EA000C0FB0E4BC7DBA0C98AC4C293C477B132D2 +:109EB000EABF4FE0B303F13339B5FF15C1E8468C73 +:109EC000BBAC38B0E80A24FFA1DF0F6DA7F1DC9529 +:109ED000E23CC47D5446301D5FB1D8EF7E8DFAE27E +:109EE000FC21298071DD95893F10BCF24076E9485C +:109EF000EB5E91E071991507021497D1D7B3F2D0B8 +:109F00003EC7A2ACD43A2F755DE6F334AF6FADB067 +:109F10006FDB5DCFF7607CD8E6FE610FC679AC429F +:109F20003EB48F125F1A98CAFD53FD7B50B00F2BC1 +:109F30007E2FA1030736ECAB9D9190626F4F954643 +:109F40007C4FD62EEE81E90FD72DFB49EFE9F56F57 +:109F50000B3D84E32B79C867E20FC66FC913DF9707 +:109F6000F2E3FF45A7E13D83B38AF32DB3AD65F876 +:109F70006EDA85F93132FEAE25E87D9F6C09CDADF4 +:109F8000433960FB78C0404F992E164AC0FC99AF08 +:109F900059298E07E324DCD3713EDE8ED61318A137 +:109FA0005F7E84E17BDA4C8545B46C5C0FD4BB0CDE +:109FB000EDAB3485F206FC2C32B760787F26C647BD +:109FC000D305E5AB59FE4AD344DCD3247F9987CB34 +:109FD000D5D1E46F4A3F45E89DB0B3DE720EEF3550 +:109FE0009CC10F5B502F38597DEB901C33F8073F15 +:109FF0002BB588F7C9BCBF0B8905E384CBB91F51CA +:10A00000147BAC15DF29C2B90E5AF3113ED43017B8 +:10A01000F7A7B8E2A8378B628F37607D20E2F55B47 +:10A02000A8FE89863900CB7FF48964111EA7C3D0AE +:10A0300010D27B51ED8BFDF8DD981AF1CD8DA2DAAF +:10A040003AB2EB8A22A6785D281D36CBEF896C9058 +:10A05000F255B6867E42EB7904D683F19D2D95E7C5 +:10A06000FB1BD06F445328949ADF2FE6D7E954FFA7 +:10A07000FE97A7C67612DF33605AAE554EF1CFC4B5 +:10A08000E0C9FB252F9680BFE929BEE944BE017EC9 +:10A09000F121DF00FFA08EC773E9748B7789F92A5D +:10A0A000C5DDF475DE388DD373F76C96C0B8C7CEB6 +:10A0B0000D3C7FA9DB2ECFC1BCACEE6C4B08ED8014 +:10A0C000EE2900E3FD658D2344F97EC595CB489FBD +:10A0D0001783DD8BBE6E7BBADD7BF5346E27B1E274 +:10A0E000DC11F5BA59DFF69F7352FE6A27CC8F6BED +:10A0F000EE7C7305F997DD05FCBE64E7ECC17CF4EA +:10A100008B03F5D79DC67DEBE306EA5F7C43F28EB9 +:10A11000BD9E21FABBC4F5E870474B74CA3B40BFF3 +:10A120000FB6F450D9D912A3B2A7E5D09477289EE0 +:10A13000152738D55FBCFBF4717F2C2398AE9FBDEB +:10A14000B5E9B06CF2730BD474B8C8EC8FE9E34F87 +:10A15000626971ACCE96E7681DBB5A12B4AE075B5C +:10A160004E8B752609EE6879236D9DE679CDF398BF +:10A17000D7695E97795F66BCB981CF917E6D3AFDF4 +:10A18000D5FD84844AD93475CBB459741B48DFC7D4 +:10A19000EB387B5F1453D53A2F5C9F443DB4A558F0 +:10A1A0007C076176442B453BE615B786F17777E56A +:10A1B0004C3AD7FEFAFD2EB48FB7D49F77A19F34C7 +:10A1C000495B97B6AE4AD72117CA97896BD37FEF01 +:10A1D000ACE4711999ADA375EBF290C99C1ECCFA51 +:10A1E0007C484E7D924B71A6B1ECBDFE601BBD1349 +:10A1F0007EB0D842F4FB6070C73C5CFF83F5FCBBCB +:10A20000CE0F0AFDFF61907F37C4C6069FFF0CEAA0 +:10A210003709BB4EC793CEFFA482AC788E32C5916E +:10A22000597D7244BBCC3B97D1F7C85955D265F4E0 +:10A23000E71E2CFE09DDD7C92C42F878B0B894DEB1 +:10A24000296FAA4B6E463E63160BCB043F2C6BE284 +:10A250008E30E21FCEE59FA619E47367FD6A19FBF5 +:10A260004FD2D2BF7331716D3AACE38FCD1EE0FA9D +:10A2700092F17C52597C2F42C7B3BBFE2DAABFE797 +:10A280005EE88EFB0C9AF9334A72C82BF02D49B365 +:10A29000389D333BFB2C33859F7F732B495CE77ED6 +:10A2A0001117FDBEF0A33B05DC234AFD7D774C94DE +:10A2B0000F8A528FA74E39BDC087FBEC10F06E514C +:10A2C000AFEFA76CB325CDAFF154A5E7A5C8F5391D +:10A2D0006970815A98D6BE6879695AFD94B37CBE7C +:10A2E000D1E827A0A5CFE7AD4DCFDB98B4367D3EB2 +:10A2F0005D0F64040BD37E9F18499F77B4F9B405B2 +:10A30000D63328EFDD950E3FEA5177E5C624CA51D2 +:10A31000772597A7E6F331E09F558D4FE14DC7971D +:10A32000D51299576AB0933ABC91E5FC1E282AE2EF +:10A330009121FFFC8BECBFBF98C753B70639FF6C68 +:10A340002DE6EFF8B61EE0FCB335C8F97743C92E09 +:10A3500005E3A49BBE07748AF78089FB19E5778023 +:10A360005D8A7C12C77B17B04F9DC511A6C2EF6EE8 +:10A370009BD64FDF17545900F36EDCAE683F7DBFAC +:10A380006829C030AEDBC39E273821EA6599C3A790 +:10A3900078FD36C17FFAFEBDC503ACA10A4D83A886 +:10A3A000844AFAB627A676233D87986C35C294C7AF +:10A3B0000A7E4505C0E89F1FBEE09C370BF723E4EB +:10A3C0009BED81082B33CAB7D079F2CBEF9903C745 +:10A3D00077D5707904789F51352B85771D6F8783EA +:10A3E000FCBB22F407FBCCAA94F7F1F82A873D4185 +:10A3F000FE7D8E862AAEE781CFAFAE9A95E2F3C39B +:10A4000007743E4F979766F969969BB7E19C467B28 +:10A410002E6451D04E72B235A97E015AF77538DFDD +:10A420003EB1EEBD82CFF608D8C9E493183FCF42C3 +:10A430003A017D71E754F5ABD87EA216094F05FCB1 +:10A4400007DAF9F749CBA6295FC3DF276977A6E9C1 +:10A450009D896BD36199DD49F39BE57B816A619AA4 +:10A46000A15D4D22836986FDF9EA72D2605DDE6FDF +:10A470006D0951DC7C7F4B1DC5B97B5A142ABB0288 +:10A48000574AA8CFD66353183F87C9948F9C891029 +:10A490009425A16403E6DD3C8249E7304EF1E6787D +:10A4A0003F4E5FA86ADCB886FDA23C5F34556D461E +:10A4B0007E72DFE9D0F07EC81D8C509EE2A6EF25AB +:10A4C000E76472BF3F84FEE106FCA003FA130B1C95 +:10A4D000B1C968C7DBB8BD37FDB918C3FC18A78B75 +:10A4E000C3EEC41F4E623F6725AB711BF83FA33814 +:10A4F000A6D07B665BB8C0C8873B853FF530D0E30C +:10A500007CC14FA5D5B86EEE4F4545FD866F762BC5 +:10A51000A877DDB610E79F9B590DE7273FE7AF7996 +:10A5200000133FC9BCBE51C0729CBECB0ABC4BEDF0 +:10A530005DC51AC3FCDA0DDFBCF70CEA7B7731F39B +:10A54000D37E041FA7F83691A071433ADF26F9386D +:10A55000B53ADFFA4F12BC59E7DB1087B7F27A7CC5 +:10A56000A088B01BF81EE31C3A7E674E5377211D6E +:10A57000B9C38E7318A7D2F1AD9FC7DD53D547A8D5 +:10A58000DE741E85CB999689A185B59CAF1E9EC8A9 +:10A5900062784F39710DECA916E1E4518461F94CF0 +:10A5A00036C045CD202B7253308CC3FC867AFD1CFF +:10A5B0001E9E1829F018FC5A1D3F1941C08F84E7D0 +:10A5C000DA4BF87107A34CADC67766030D18C701C7 +:10A5D000C39FF69FE14A72788D803D090E47383E51 +:10A5E00032E438879B797D61302635C0393CFCA93F +:10A5F00075C4EF8F2CAFE2F67B5608E8DFC03777E3 +:10A600004E534F217ECA36033FA4D9AD4A1A5CE9A6 +:10A61000E27EDACE3B2DE4A7ED5C50EA1B29DEA6F4 +:10A6200097FB445C01EFCDB1EC6991D3E242E6B215 +:10A63000607D3412E6E77606EFB33695FB4B51CEDC +:10A640008DBB39C6E8BB4B55DCBFDFB0EC45D2173C +:10A650001EF1EF7AB813535A6D9CAF6ADC80178FE6 +:10A660008BFF9EDDC8F9C8E3E17C9459256099D73A +:10A67000BBFC1C1EE2A720F013C5F722F9467EDAC8 +:10A6800024F8A52027AA1AEF75F5F5BC2F4A9DDE00 +:10A69000DC77F2EFDCAD9FA6FE369D2EF977EF0654 +:10A6A000859CDD3B2D3C8872E2E13B79FC3170B347 +:10A6B000FF24EEA3A28B614618FB6F21670A1BE300 +:10A6C0000DE8FF07B7C2EFF053BE5F95E81DBB98DA +:10A6D00007F8ED1CD2B5B34AFD6F3E1FFF0E934E37 +:10A6E000E7794D9CCE2B7A389D6F2AE7745EDEC5E4 +:10A6F000E97C5339A75B2043A2731D2EDBCAE95CBA +:10A7000087611CA2731D1EC24F7924DF63A0B70DA1 +:10A7100013EF7DE3E274AECEC1B812EB1174EC0A14 +:10A7200073B84BC01E85C35141F77288C3420EE413 +:10A730000555A2F34D48E728E76CE197887F17E4B9 +:10A74000489A615D1F0BFDF8B0629B37123FBC2831 +:10A75000EA5F99A6F8ABA1DC58C0FFFD9F875FB206 +:10A76000C732611C47E1E604FACB1B2516C9047DFC +:10A77000BEB1700BC18E525B241348D951B495D72A +:10A78000CF7151FD86F11B79FD120FC1F6BCB56783 +:10A79000D0BFDE30D111C2F0CA86BCBF21D85EE284 +:10A7A0002278D3B7EE1D5C06A57DC2567A27B0E1AC +:10A7B0007646BF83DB9F8FF1E009B99E38E6A56E30 +:10A7C0006E6187307F6C822D42EF9C266811467C3B +:10A7D000EF677EC4CFF820C950A007B6CF82769F1E +:10A7E0009F1DAA32F0F715D59CEF574BE106FC6E82 +:10A7F000EDD038CC467CC03C33791CAE85C5820692 +:10A800003B64767529F573C861CA7302DA24FAB31A +:10A81000CB403F23E9D520BB81D6C55C8378EFA030 +:10A82000DB57297F6AB58BECBCE07E17BFDF5B4B43 +:10A83000FECF96629E77D3507E80FB81C103E407F2 +:10A84000C2EF745F16C0BC008AA7A7DB255EBCF709 +:10A8500033E4778E60A77CA31AD6D52BEC9303C282 +:10A860003ED9529748F3979C4CB5601CB44FD44FD7 +:10A87000EC4A46519D83DDB20CFBBB6B56CB88E2A4 +:10A880008A9E21BBE5AEEA11EC166F3BE897E9C35F +:10A89000ED17DD5EF1B6C7291FD96CCF78DB37879E +:10A8A00029CE817E12ED33C6FDA6F6A842DF3580A3 +:10A8B000DF719F59B583CC41FE986B90C78D0ECC4C +:10A8C00043BAA944FF4C4EF9E70E1157CD77F3FC7C +:10A8D0004A188BE2E5BF7FF36192339D1E96C60F47 +:10A8E000ADD5DC2E681374C264AD10F1EC9BA6AC40 +:10A8F000C77D021EDBAB47B0533BE01C8DF2BFC3EC +:10A90000CBE8FE4C9997DD8072CC992FD7D0F7C851 +:10A91000C4BFE76597B91DDB59CDF9EE1776A513CE +:10A92000F1ABFBD91DC53CEFA2A372079D7F47F198 +:10A93000C5F3B19CA67C914DD7F2FC901E918FE897 +:10A94000CC608B703D8F88F90E544BA2E4F0E60585 +:10A9500047E6917F5B6961DC5FE2F108B39FB4BEBB +:10A960009AA5DBC595FCFBE57BA7A987112F4ED5E2 +:10A9700046F2DD590CF20DF547FEC87153BDD4F90E +:10A98000458F7FCB551A3E376619950926EECDC205 +:10A99000FCDF33D324BC5F7536723CCA4A54C1F322 +:10A9A00076CE92E97B7D09715EFAB86BAAD57FAC51 +:10A9B00036C4BF9DC5FC9DC168715CF37AB26C3131 +:10A9C000F2F7B2CADB2D4A29D1938276AFEC12F9A5 +:10A9D000FE41FE4E46F670FDA9F77F49D0CFCB3A37 +:10A9E000FDE402FD5413FDFC50D0CF2B23D34F8E3A +:10A9F0003B9D7E069673FA69951C06FA51583AFDFE +:10AA0000BC2EE601FA791DC7D5E9A7B38ED34F67EF +:10AA100090C7913AEB2E937E1671FAE9088A7797E0 +:10AA2000E2F7F704BDAC9FA6BC83F4AAE3D31C4FA6 +:10AA300032E373F382A21B88BE1A057D358E4C5F0C +:10AA40003FD4E9EB12CFC95D17A1F7AD3A9F7B5414 +:10AA500026E1FB958FA6A917101F9DC1689A1CDEE1 +:10AA600054BC9FDEDF592D518A5FB18DFCBD8AD267 +:10AA7000D8CFAC17E153DBF4213EB54D273E3D7FE7 +:10AA8000BA0CF934C4BFD3D951BCBF03F38C3B2AF1 +:10AA9000459EB290E73ADFEAF8D9D7CEFD517D1F47 +:10AAA0005E13DE1125CB73A0047BCE09E5D699EFAA +:10AAB000E5D3F778969E9447B22FBDB53BE6935CFD +:10AAC0003CFBECED18D7E8A88B7718E539F8C3C53F +:10AAD000D367211DEF4856F853726F2C3F53E75B45 +:10AAE00056CFED38B39C76B78F7C7EE638974F0112 +:10AAF0007EF6A7F8BBA04A6EC5F3D2D7EF1BE2EFF4 +:10AB000018DDDB3AEB64CA2F2858CABF9BE99C22A8 +:10AB1000D37BB5FAE9E9FCFD51B5FAA5E9E38DFC73 +:10AB20009DE47ECE25D2CDCFAED0BFCB07754EE211 +:10AB3000CBAF4C1F812FCDA5CE971D411EEF7C546E +:10AB4000F1EF33E6BF7F53D0C947D3941BA653A977 +:10AB5000DE8CEBDC9555796329A72BCADBD92571EF +:10AB6000FAD31EE4F467B530F5C92AA4C38BF3FB0E +:10AB70006DD387F8FD363AD72023BB775EB5BA9000 +:10AB8000E0CD3C8F3CAB56C85F717EEECD239F97E6 +:10AB90002ED7B2669F9A87292D402F8B711CCFB577 +:10ABA000074EE3754DC7D9FB929872D3BF95C7AFD7 +:10ABB0007A97F3F855EF560B9DCF7E11EF450AD1EA +:10ABC000AE2497862E7BF62F5FCDF03B671F22E1E8 +:10ABD00087C6A6B7472FDC9740B9FAE813763FDE61 +:10ABE000479BE9CD59DF95A8847AF9C76E2D333F8D +:10ABF00075CEBABCB1AD13F2672BDFE7F078B7764C +:10AC0000597245B7D79CD3C2EB111F0AFA33595C6E +:10AC1000FF1BE944B76786D18923E4E7F1413E5E33 +:10AC2000061B48A03D0A7E400CCF47E7076D7AB867 +:10AC300013C7CBA81C645C2EF1F7ECC3EC061448D8 +:10AC4000063AE84ED14137F50F72FF27A33183EB67 +:10AC5000DF2AB50FE92EA34EFB00FDA18CCAC86503 +:10AC6000F187531950906FC1FE7A09E30C658CBFD0 +:10AC7000472D2B8EF672F9E2A2EF1918F67108D75C +:10AC800051B655DF8790AFDFE1F48D746FFC6EE352 +:10AC9000AB62FDC027C7B09FB9BDD2784EB35E642A +:10ACA000FFCFA4E4F133D3C91E89BFD482ED550B85 +:10ACB000C57BA11C2D5E7702DBC74CF1723D3EEED9 +:10ACC0005F1BA1F8955F830961BE009C177ECFC30F +:10ACD000BF2E19AD606407BF88FD9DABDE6A70F9B9 +:10ACE000B15D52B783FF057F1F8BCE6DEB4691A7F9 +:10ACF000EAC8FCD9DFBC83FCFF1E85F9519F6F5861 +:10AD0000B6F125D433CE660B8611989CE8E0DF932C +:10AD1000552D31B2DBD552FE1E759473D6F31BB69A +:10AD2000621CC28971B628DDA7B3208F67395D31F7 +:10AD30000E570AD893405F07E3541C96931CAEE568 +:10AD4000F12E8C1F1BF337BCCA20C945AF9293C0AC +:10AD5000772FE6FC07DF727E2FAEDBF559A18CF46E +:10AD6000FABA9C34D82EE86B83A7EDB402F33B8289 +:10AD70005A25EAF72BA6AABF47BA59151C785142A3 +:10AD80003A2D6416F29FC47BEC6BADF5BEB7E83E7E +:10AD9000987F772143E272C93983DB670E3FD7374B +:10ADA0000E8D85627EF27B34FA8EFE535228014D61 +:10ADB000D7039E1AED384FD83A6316C64B061CC807 +:10ADC0003FFAF866BC7A6688BC895CA1376D5AE5A3 +:10ADD00048F7593A7FA953C3DE19E3F93AD1CFDBDB +:10ADE0002CDE799ADBDF39AD216706D177F8F4578D +:10ADF000D0BFAE667E8C036DB830D785F1978D5984 +:10AE00003C6FEED1BFFBFE1DAD367E4F7033DD8F44 +:10AE10004289EFAC3CDA4294BFB1194C6BAC8779F4 +:10AE20006CDA3C8427CF88DF910B78DD4C415BC620 +:10AE300096CC483E8CF9961B10367C3FBAC7CD4461 +:10AE4000BE6EF28E4BE90F9448FAADC0A94EC375A1 +:10AE500067AB2EF203B31B071DC827EF8BFC956C65 +:10AE600095B51BBF471913F8CB1671AC6C3D6E2519 +:10AE7000EEFDE7CDE0FECAADA2FC4BD1DE5BC728FC +:10AE8000EFD2099613CA8BA8183F5F654487D9F59E +:10AE9000F23EE4DF763987E4A96F11F717E6E8FDA3 +:10AEA0006B6309A41FB0271A6618EC095F3DB7272A +:10AEB000006F745E3ED89723407EC5F5D80EFD4FD7 +:10AEC000CCA3F028E07F023EB2EAB47EB453F4F69D +:10AED0009D8B007BF0DF9D825EF2D5019267D90ADF +:10AEE0009F5F9F272CD6119BAE7C0DC7D5FB6F991A +:10AEF0001E9ECFF117D5B0BDFEFB2E1CD707E5D0A7 +:10AF00003E930A8D5BC9ED24C08784F1E76FCCE0E6 +:10AF1000F275CA74E5EBC6718F55ABDFE2E3C61478 +:10AF20001CD75BC7ED04BD5E2FB74F0D2F46BA6F20 +:10AF300056E3D7390CFB329CEFB7B17EB4F335D36F +:10AF4000B17EBEF993F87BDEFCB230BD8FDBBE6212 +:10AF5000E6A3F8FE2FDAE8D81A823936CCE0FF7E75 +:10AF6000654FF66013EACFED0FC824FFBCB5722918 +:10AF7000E66D78131D8751FE79EB7330B633749FFD +:10AF8000EC45FE0604742AFC9DE7F95AB60FED92D3 +:10AF9000ED9F72BC6FBF8A1DC7F78059893314FFBC +:10AFA000DF3E4AFE59563049EFFEB26A55CAF3DA1F +:10AFB0003DC39F9647955597A4F1F47CAF9E6CEDE9 +:10AFC0005D8C07753638FCF8EFA43CDFF0981BED7C +:10AFD000B76DAD0E05D7BD6DD19D16CC938ACEB69B +:10AFE000D0BBAAE8038CF6935D07FB01383B71F8F0 +:10AFF00025BC27CB3E3D8EE75A89FD648BFC34F897 +:10B000003B43EF0A6AF388EFB31B656951566ADD6B +:10B01000DEC4BBB49F071FE078F7060768FDDE3A81 +:10B02000352D4FCDDB08FADCB0EE98695F6639BD8F +:10B03000D1AEE6635CCC2C5F469353AF4C6BF8C14A +:10B040000C83FC1BCBBEB8D4764BD6CE65FF7E05F9 +:10B05000E87B07CF27D0BA258ADF3CDB55731DEE8E +:10B0600067D9AF798EDA92FB6F7A08F382AE7A5B9A +:10B07000263E5FB23B9BDE6D7E2719B98EF2C1C0C2 +:10B080000AC5EFD04FB0069E1B8071263CFA6A6855 +:10B090003DA060E749F69728472758BF5BF35DD28C +:10B0A0009B8ADF03F85FC4B8BE9860CDBE0EDF5741 +:10B0B0004FB8D5116A87FEFF69975FC477E79ADBBF +:10B0C000CB304F6851FCFE45343E7E8513E4E122CF +:10B0D000974CF3B9FC724E2BC0133298CB3D93B111 +:10B0E0002BDBE417FF16C6195C9125EFC7F79575A2 +:10B0F000F28B7DB8FE4889CCF3A46269E7B14C09B4 +:10B100003B508F4F3BE4483B97EA783A3CE3B974B5 +:10B11000B826910E5F713A1DBE09E79A85D72A714C +:10B1200007DE8F3395450E820FF4AEC8AB5A21F27D +:10B13000AAFEF1532BC37D0F1ECEA4EFC2E3F23063 +:10B140006F75E5916ABA6F7DE68FF7501C64F04722 +:10B15000FCFDD83353F57FF7225682EB7E6FD70F75 +:10B160001EB91FEADF7B7C420E92F2C95F2FFEE51B +:10B170008F61BCBB2D590CE9FFFD96640F7ED37126 +:10B18000EEDD274A50FFBDFFDCFF7A04F1F69B633A +:10B190004EFA7EDA6FC477BCFB7FF10FBFDA85F31E +:10B1A0001ECBAC41DFE237479FADC078C4CA23FF56 +:10B1B000548272EEBDC78F5C49F0E387A763F9DE66 +:10B1C000E11F542C223D142B417B531FE7EE27DC5B +:10B1D000E7C65DE43BEAE671FF1F96EC3350008062 +:10B1E000000000001F8B080000000000000BED7D38 +:10B1F0007B7C15D5B5F09E73E6BC724E9249C813A0 +:10B2000012980309040C30092731BC278788019163 +:10B210009E00628280272142402007D08AF76A99E7 +:10B22000909497A8A146042ED803168BD67A83B59E +:10B23000CA456C437888AD6DA305AA1434204554E3 +:10B24000C4542BD0FBD3FAADB5F64CCE8304F0F644 +:10B25000BBF7BB7F7C879F4EF6EC3DFBB1D6DAEBAC +:10B26000B5D7ACF9E4F99F1556E632B6E0F9E786B2 +:10B27000E0F593E77EDABFD2C5E017EC5D16CBD8D8 +:10B28000BD26E66F86FBF7BEB0BAAD471C5C77C53E +:10B290006A785DB0EB91BFF2ABF036BFD651FD02DC +:10B2A000C6C4A244C63E8E65E5CD2E6C6F63CCCE7F +:10B2B000E8F72DFC37609335A2FCB18595BF04ED0E +:10B2C000060623EF9F13E03E8C9B7371E644771CC8 +:10B2D0006F87F33807D7DDD0BE16EE27C0FD8B8C05 +:10B2E00095E2FD6FF1373674EDAD088C2543BB3D1B +:10B2F00091E3EF15BB6E9FA598A87D0EB3E2FF7892 +:10B300007B37633D6D2C80EB886E3F08DB1730F692 +:10B31000FCF39DEDCDDF9AF973720AAC9BFE60ECF5 +:10B320003581CF1B7EF7F52A84FB302DD63774FF8D +:10B330005E16B66E18EF4B7BDC0E299EB1B787F216 +:10B34000FE2F5BD8DD3EC4CB0AF589B3D9B0FE151C +:10B35000AA5A6209CD63EEA62587D393185BB83B42 +:10B36000391F8737EE2F7CEE19D35D70FF826AEFAD +:10B37000302950AE78F6B111D8EE397333CE6BE187 +:10B380007307525458D785E64371D86EEED6847C45 +:10B39000B31C7A7EDEA65BD4929C10DC6EDA158933 +:10B3A0009FC1CD91E5A17B22CBAF16751CF8D603CA +:10B3B000EB6BB604ED025E8F8DEF05E3B04D82922C +:10B3C0000DE3148A7E3383FA588F6AD1863336F6BA +:10B3D000EB5F1FEE09F5B5AF1714AE83FA7526DFE4 +:10B3E000D4DBA1AC3D6D5676C263BF3C5A65665056 +:10B3F0009E379899CC098CB5E6FCC87A06E63F0BD7 +:10B40000F10C705A37DD55137461BFECA0299FB160 +:10B41000B89F08AA5E7ED704F4C8D4C6D92DF0FC24 +:10B4200079539CB2CE43F4C9B03FEDE7E6E04E80DD +:10B43000FBD896157FC4F13E7EC1A2AC63B8FE482E +:10B44000BAA9D967D16C43607E3BEBE38AA1DF5791 +:10B45000FE61164468DFB153507684C1BD069090FA +:10B4600006E37FB23D768D0078FC2439D85B42FC40 +:10B47000C5067B27F2E7EEF6C1B566D71B7F17A09E +:10B48000BFF9C1C871A2E961A54EC7F0CB09A7AB4E +:10B49000E876F013C5C250FDC2E5B73D7176581885 +:10B4A0003D9C6DB4321877FE24EB35C703BA643285 +:10B4B000C1C54170B97750737F0B940551F236A422 +:10B4C0005333C10EE37C827FF5E36506F35A807443 +:10B4D0000D24FBE5C9371E33037DF73437BFBFD8D2 +:10B4E00083BB82B19D0AF193552F423F9F429B75CA +:10B4F0004A685E8BD3FEB8A9A447A87C61CF2F56BB +:10B50000FD1EE9D6EF0A306877416E894B04F8EDED +:10B51000C57D8EF42AF1B2D1BEAEF9405C3BEEA3FC +:10B52000E61E5E33F083BD3F17124D00F70BE79F19 +:10B5300075B22EF6ED82F3895EEB90ABF912AC9802 +:10B54000E07C1AFF047A7C4E517FA2005DB1069820 +:10B550001CAC3BB547202FD0457FC67389F627FE2C +:10B560000DE15D29F0E77F6409E4111C67B91484DB +:10B5700063F473CD3AFFF834DFF70B1C27CDDBA65D +:10B580009AA17DDA44A6D443171F9A95EF4B00DFAA +:10B590007B98DF8A30640DC9348F790CF04870577E +:10B5A000C6E3FE593009E009FB61CEB4C6F148CFCD +:10B5B0004D4B98622E82B2185C85E5398C059E90C1 +:10B5C000609FADB731356C3FCF6D8272F8FAB786A8 +:10B5D000D503FE16FC24B2FE5ED642E32E7CE15B70 +:10B5E0005B783F8C35D23A6083597DB0A7BED2E1FB +:10B5F000F769BEFA16AE4B98029DC03C97FD5C08F9 +:10B60000DA000E49D6669A6707CC7307CC6BC6F290 +:10B6100071EC4380DB5FCC3E5A6FED83956A3594C5 +:10B620003F5F3E47AD06D0932842BED12C707A2CA6 +:10B63000693E4C7C84492FDD9506F3B1FBA83FA001 +:10B6400079E9561877C40B65B46E56C3A4DB7A410A +:10B65000B9A68CE03422C02406709AA1E3891DE5C6 +:10B66000783D01BC14EBB5CDBCFF794C2378CF6796 +:10B670006DB4DE8F9544C2EF91FD569AC7977B1249 +:10B6800082362184C72F99128FFB3B35863147E2E2 +:10B69000D5788E8673CDD628B887C3B92FC2371216 +:10B6A0004F8B5F06787741A74FEAF2E37DA6D23A47 +:10B6B00042F45847F878B24EE072472BABB807E631 +:10B6C000BDB1A290F8EAE30003D653EFA808F92C25 +:10B6D000FC3582CA2D76182766586799EA0B57F20F +:10B6E000B22DAFBE7C5306F463F1A74B80948D65F9 +:10B6F00056D682FD8B410783EB648FDF9507E3CE3F +:10B7000031FB0E9B003E678BD5FE44B7CB399C9F27 +:10B71000CA0F0C0C7421778DF53C9E10A823BAC873 +:10B7200063D28E3CA22B2A3BFB3109E93BB637C7DB +:10B7300053EC9098E0CA30F8A79A98D615DC3BEB0A +:10B7400045A6B912E9CA62F10A03C65EA33DF02913 +:10B75000825FEAA0C0121C3FD524B37A984FAA3367 +:10B7600090B73437AC5E6C2CC6F9A401DD69B0BE6D +:10B77000D833CB8AB17D6C3E93EA61BE1B05D8CF2E +:10B7800048570F0B24BF9CFB76B720DD2E2A954D22 +:10B79000C89F93EF5C4FCF3F9A2F9BCCD0FF983C34 +:10B7A000CEE7E35BB9BCDF2C6C48C7FACDE9B280C9 +:10B7B000FD795E067906F717BD5C6C5EE4223C52AB +:10B7C0003B98D77613CEF3EE9CFC7AA0DF717932EA +:10B7D000F51333AC713F3EDFB1442678A6ADD4DC1F +:10B7E00038FFF8561DCE651CCEC9773E5487ED1E36 +:10B7F000E9C912711E69AC4EC076AB9239FDACAA94 +:10B80000E47A98C82415DB65944B42DD702C078AD6 +:10B81000F9BE93127E9B8E65D6100F72EFC9383E2B +:10B82000AF6493F9EE32B83E99CFCB890F09EA0E97 +:10B83000DACC1B687EA936562A24F2FBB82E203DAE +:10B8400075B72B0CBEE338BC53FBF1EB40FB11D7B3 +:10B850006330FE7D020BA0FC7E0BC66E23FA6B717B +:10B8600021FD7D6E51538721BF7DDBC27602089298 +:10B870007A47D6F7CD2A8DF70D66EC6FCAB8786493 +:10B880002A7F73A9F10970DD83FA55177CBD368FC5 +:10B89000EB15B5577AB160987CAA2DBF64C5FE6AD6 +:10B8A000AFF48EB87F6105CC7C4098BCAD691D8F2C +:10B8B000ED16B1B655B85F16359B59306C5FEF7118 +:10B8C000F0712F9FB2115F59B6B6DF0EB3FBEA7D60 +:10B8D0005C7BC5CC34D893CB013E28FF42E35BE9C7 +:10B8E0007EE7BCAEF4605A97F34C89BC7F45882C48 +:10B8F000EFB9ACB713E93E2B6A8F433EFEB1FDC0F2 +:10B90000A6B3509EEFF8ED26E49723CD269A2F1389 +:10B91000E5B83280E3C83EACB33C05CB6681CA864D +:10B920003E3F09E43AF271209038B4232E2A1FC614 +:10B9300021DCCF885C8E9F099AB4ECA108373BD3F9 +:10B94000006E67743DDEE8CF989F71FFA2D44E72FF +:10B95000BFA719F4712CCBED117A00D6239C2F963A +:10B960001B7CA945C4F1B628FB4519CA0B95FDE31C +:10B9700059187D85F0E2645A185E52EADB5A4CB0E1 +:10B98000DF5ECE7B6F53AE0348B5D5E0877FDEA484 +:10B990008E827AB329823F3A3D9DFC92D8F4932659 +:10B9A000B3CE5F4F6E2A19155EE6ED43CF9F2A2F67 +:10B9B000017EEAC9E5CFFF2AEFFD77578A61F2548D +:10B9C000ECE88D78E82CDBA3CA2E280F0E2B4B5108 +:10B9D000F54951F56951E50CDE7E767C7B8119F4E1 +:10B9E000AC37F3CE948BB08F67F76ABF5F80F2FA03 +:10B9F000FAB3E525509EE3E17C6CF13E0135D14E72 +:10BA0000F82D5618E9D72EA5DD3A2717E1A01C36E8 +:10BA100041BB857B044980FDE76ADEDD827C6921CC +:10BA20003E27873DD7CCF5F285CDA7E9B96EFBCF90 +:10BA300031115F58977386DA2D5AFE9915F5CBD5DB +:10BA4000F2521FCAE5131699DA89CCAFF6827DB39C +:10BA5000784F19F3BB42F2E462BA7A00E7A3BD2E35 +:10BA600048C80F3AE91DFB7585F697D1FECF83F7DD +:10BA70001DEB8B7CFABEBFD689D0FED4A28F0A7094 +:10BA8000BC3F6393E1C8CF8303519ECDACA91A8814 +:10BA9000F7672DCADE0FA281BD6F69DF867AAA2300 +:10BAA000FF3F097EEFC7B6670AA0D738F32D1554BC +:10BAB0004E6EDF86F05C936FAD10A19FF733DB33E2 +:10BAC000D11E93F24B787D76FB362CDF96DF9F9765 +:10BAD00007B7679A259CDA808A1268BF53E2FCF3A5 +:10BAE0006913AB413EFCE72879FFADCEA78E95A840 +:10BAF000FF998776C2422E6F676F69AB40BE32DB1B +:10BB000004F209E879E7850F7FBE13E0B173B993BA +:10BB1000EDE0E4E8437B2195933EC8934692031DF4 +:10BB20006E900BA823B0B67601CACE02BBBCCE1D68 +:10BB3000C24BA75C1D14D84DF271762EC99D1D8A8B +:10BB4000BA36BF20741D3516AE309FB5F9B26EBF40 +:10BB5000803E0CFDCD9CE952D621A2C5F602A4C7B9 +:10BB6000C71D7C7DB08F08DF2E1D3F29F95C1EA606 +:10BB7000E473BBFC37CA2DD41FD8279A1DF15A662F +:10BB8000257DADA94C4D8F41BDB72CC5A409685F7B +:10BB90002DFBE061946FBFB3905DD684BA04D62FBD +:10BBA000CA0E6A6EE21FA447B027B87D63AC670671 +:10BBB000F2AB30BED8347F5C3AF2C526B79A8E7CA1 +:10BBC000C6E0BFDDF3C5E6E448BED89CDC155F04E3 +:10BBD000453619F9A131CE5D16E6C37EEFDACEF90E +:10BBE00061E77D01EEE786FAB9D1FB4D097CBE869F +:10BBF000DC4DAD6F26B99DFA943B11F184821AEDAC +:10BC0000D68D1B06EC403C4CF64C217C35953DEB2B +:10BC1000A8CA0DD1BB13CC7FBC3FC3CCFD1F065DB2 +:10BC2000E14F84FEE63C91BA1DE962AD8E9FB326DA +:10BC3000D0F7605F0EF2187867442F6BF325AA9F48 +:10BC4000C9DAEFC7FDF3FFF1F73F86BF87100FFF9B +:10BC500055FC2D5AFED18DF15B7D1F6F145A2CA916 +:10BC60009CDF92BE8BF7A7009C6ECAF33F8EFD1936 +:10BC7000EB9CFDAF8BD2FDB9A1F9381F78B5F44E1E +:10BC800028CE5EF009F1A7D9FFE224FF45B47DE09C +:10BC9000CC6DFFF9A3B0EE44162BA19DFCBEB57D83 +:10BCA000B082F68FC9FFCCAB386E4FB304BC12EC38 +:10BCB00021BE7E189FD6F9C1707F0ADA3D1FA17799 +:10BCC0008CF30F6EEF19F4B756F9D3C35DD2A19977 +:10BCD000E8AEE375737087807418DC3C17EBEFC82F +:10BCE0005534E8CFA1D31BD0A34A7AF05DD01FB65C +:10BCF000CB366944AF1531418665371FAFA922871E +:10BD0000E87739E3F4CC6A4C347E17F4C8C7CD36F3 +:10BD1000D1B8A00790FE14A2CB8E3884EBD574D98D +:10BD2000417A9901B7CF753FE7E7A867C587DDD7A7 +:10BD3000FD28463F377ADFA0CB947A631E9C0ECF56 +:10BD4000FE08E88804B7DA1FE779349FFB350C7EDC +:10BD50003EC8E36F43FAECD4EF450E8F398F67127C +:10BD6000FD1ECDE774B53A96D3FB56470BD93D2659 +:10BD7000BB9C50974E7E8463F8FC4A679C15E1F2A9 +:10BD800011D0730F904FFE54DD2FA2DB97CE5C3F96 +:10BD9000D9F9B3034C417D661E88C931C883B448C4 +:10BDA000FB9A316BA86CBEBA8C7EBF48FFC63F6C55 +:10BDB00091ED355D9E7179B84958B219E7B5299D65 +:10BDC000DB7D1F08ED874C80D72AF433C0D4BEBC7E +:10BDD000106312802F9CB1707FF891B786C5B7BBF6 +:10BDE000427E832F75781DD95F188F7E2CE3FE620B +:10BDF000D6417E0C20E9C0E3B0BEDAB876DA9FCB3C +:10BE0000995A49F4A3C5CA486F867FE5DC5A33F9CD +:10BE1000251882DA837AAD10C4FDBDD0FE35F563F6 +:10BE2000AF64011BEC8B2DFD3BC6A35EB4C5CB02FA +:10BE3000A817E000E4BFC327A1FD46AB7FA01466AE +:10BE40000FD5C6B4F726BD3AB9C38AFD5EAC84A14E +:10BE5000E1B95AED9B152CAE0BBB694F24FC2E2289 +:10BE6000A9E77745E767E288CE614E64EFDFA05D22 +:10BE700061D8139DF641943D116D3774674F2C3690 +:10BE80009DEEBF34CC9E885EC7627874543E5D0FD1 +:10BE90009AD17FCCDA0B7DB15DB4339DA17EA2EF48 +:10BEA00077D66FFAE81B84D3E297A3FC3E5174B7B0 +:10BEB000305416BE15101F61F5EE303EE8D1F9473B +:10BEC000090B660BE83FE76567695B10EDC75ADD54 +:10BED0009F96DCDA3E1EE116EB69665568379EE7F1 +:10BEE000FB71C4BEED07D00F9150DA9689E452ABD6 +:10BEF000FB89A3F5BBE1FB3698D15E5A2E3215F5CE +:10BF000040668F257E05F03F8BFE596FFD1099FC32 +:10BF1000E82B766DC57309AF73E0C917E97EBC8C59 +:10BF2000F3992FE97CB19CF3C5E57607F10BEF138C +:10BF300003689E933DFEA9C3603DD526A510F7B1C9 +:10BF4000536CFE591BF4774F0393EB902659F34D36 +:10BF500002B6B73219FD3FDE447E0E551C3330F772 +:10BF60002F706D3DE3CEB5C0FC6A868934EFDFDB10 +:10BF7000D419D8DF457D9F45E361EE302EE7BCEF55 +:10BF80003BFCA85F7A631C241F1EFFD1801D365A1C +:10BF90005733CDB77AA33B11F7CDDC615CFF9CEC46 +:10BFA000F1CD1D46FB5D29443977C730AECF78AD62 +:10BFB0007216EE8BD7629E2AC17DE106BE634A43AC +:10BFC00034156725C17EF2A631FDD7D81080FA322C +:10BFD00018600BF0A5CDDEB634B48B36175A957ABF +:10BFE00018620A5332715FDF26041B505E882C23CF +:10BFF0005382F6A5253605E731C1D6E841BF339B0C +:10C000006F49386727773AEB8ACE42F25264E78C61 +:10C01000FD078D37C6B4A5E1FC365A616AB8CF1466 +:10C020005E6E85B1D6919F8D9727D979B9B5E244D7 +:10C030001AC2A115602E24E0FD3FC958BF1EDA9B2D +:10C0400061AF3E2A04B663D9029C03CF6D26D9DBCB +:10C0500008DF78C3968EF58D9BB1DE2A71BF185329 +:10C060002C17DAC3FCCAA931BCBD09C6ABA3FE5864 +:10C070008B40FB2B23E1DC4DA1F5CDB135E721FE53 +:10C08000592DF79F6F2D56B73442BF5B0556560F9B +:10C0900028C88A197CF6F748975A6FB705ECE83D2F +:10C0A0003A7EAFA657D5741AE9E80FD9C40F43F406 +:10C0B000EA20BEE9053D12F91ED22BD2D772FB4011 +:10C0C0004F15D1BD5CDD82FDB03805F59265D99C78 +:10C0D0003E97FD50923589E892E87199A0A4A21F7D +:10C0E000C91B0765B82E7340F91AFCA06A8D99F92F +:10C0F000C3F4D4918FD80241CEA79E5E0EFD575F48 +:10C10000CCCDC7F327A3BEDACAFB8DEEE7F584E2F8 +:10C110003DC3D0DFEA6C237C311BD8767908CF365B +:10C12000C217C251237CC03EF21059B8115F395179 +:10C13000F836DA8B226F3FC97E92EAB1CF1BC1E796 +:10C140004F1CB7ED08109CA4320BD07CAC89F76F64 +:10C15000CAE0FD6DF66A03919E3757C528A8BFBE99 +:10C16000666DBE89E8390ADF4EFDDCE4D37CDF5121 +:10C17000DC6F784CEC20FEEB1F438DC4D324C7E664 +:10C180003EC0FDC1213F7D90EB01B949FC7C244AB2 +:10C190007E5F446734545D7C4908E2F878DE1629F6 +:10C1A000DF5B486F5804FB771DF29D5DD1FA421B9F +:10C1B0008D5B0B72788B847235F2F9DA3D5D9F8767 +:10C1C000BC867EF5FC901E14F26F72D86ED9E826FC +:10C1D000FDBB1D955DD457D94A7A0EFDA65CFEA91C +:10C1E000E9F7E0BE9DDF97E8C12972BDFD9EC6015B +:10C1F0003BEA747D0BF534C3DF6AF0A7C91EAFE0DC +:10C20000417E55E0FD1AE9839C7AC3AFC52FB85C27 +:10C2100031DAA1BFF55AE75C23F4F393A59F815E61 +:10C22000037AE55EFD5CBEF4CDEC54D46B960A72E5 +:10C230002AEA2F711E937E6ED23FE2FE39B39FCE63 +:10C240007942F86BE1F8D3F1B000F140E785FE5593 +:10C2500084971A8EEF85255CBF630126DD369CE34B +:10C26000590E833BE235BC8C7894BBC0E362C4A317 +:10C27000C2F12847E28DF4B85AA073DC1788D7883A +:10C28000FA260E9F4A94AF61FB37A161BB99E58600 +:10C29000E0139FAFBA7F887E9437C17E05D4FE0538 +:10C2A000ABC8EE520B51BFF934DF6BF5005E62D0C4 +:10C2B000EECC45BB8BD5205DA03F7F0AEA592B9879 +:10C2C0009A6521FC174EE942DF58B7D7514372DC1B +:10C2D000638A90D7178659687C3AAF41BD6AAD4DE5 +:10C2E000B71FE4DED84F61DF4EBD8AE23AAAF5B847 +:10C2F00086C5D35D7EECEF8C7E9E34DEC3E5DE78B2 +:10C300008F95FA37CAC6FAA07FEA276658A4DF7C61 +:10C3100052673BEEDF67A23F9DEC424BD0718F1B13 +:10C32000F5739F15ED45837E365AE53FA0BEB0718B +:10C3300065BCAC2585E8E8C8917EA41F57EBFCA03E +:10C34000DC9348F3F882C9A417033D51BD51EEB404 +:10C35000A7CE9B48CFB85ACF5CAAFB13CCE44F3092 +:10C36000EC8FBDE77B06D1FE007D534379DCB1DB6A +:10C37000A1C38BCB8FBD2F0F207901FA27D9DF1DE9 +:10C38000AFC70677A0FCB0F837E3BED47667733B3F +:10C3900097059F7B16E7BF2F9DE206CEAD68DB8435 +:10C3A000F1197B453E2F6D8F93E4D0F2F6EDCE412F +:10C3B00050FE5C602FA1FD6AC06D6FA7DD15742271 +:10C3C0009ECE85CA374D0DC3FF5EA013BCBFD0DA29 +:10C3D000D23FFC3CDC281B712A5846F9F39AAE0781 +:10C3E0002D8CE1E563925F43BA7BC50AFD4079611C +:10C3F0001CDC77DD08FCBE88C3F57608AC0DCF6B7E +:10C400000DBEB4774D2AAD17E0C78430F8803D42A9 +:10C410007AD4B98F4D3BD01E1969FEEB2B0F227CCD +:10C42000D3CD123EFFB171DEFA1F6E5D3E77E42080 +:10C430003C001FE4675CF9490CC7CFB302D9337BDA +:10C44000C5C6C3DBB0BD6A57D0BEDFABDBB3844A21 +:10C45000D0B3E6EA2C351A8E1BF5F53759E4DEC366 +:10C460005CA175D7AEB19DC63881DAF36766328CB0 +:10C47000E7A8F97A365DA3E2843E17DA1FEB8FF363 +:10C48000FB892D140FD4B70B7BC77EC1AAC1FCEC6E +:10C49000FB5907CA4B96D491D2959D50FBF13A9F18 +:10C4A0007948F77C387A7CB2AF0B49EE9090AC8D2E +:10C4B0008A4B62E165F3D5E55F77EEC7C8FBFB9178 +:10C4C000871620DC22FB3B6BF18DC738A28E5F0AFA +:10C4D000C4B7CE5982C31E84FB2787FA8F780A74AB +:10C4E00020437DCDA731DCDE07FA44BB8A35F2B8A4 +:10C4F00084B3167536F2838492166B5598FEF3BE9C +:10C50000CEA7E6D8B89D057CDE1ACED78CFA426F4E +:10C51000D7E770A73CDCBF1DDBC6E5E8FDEC19736F +:10C52000B89FE394FEFCFB1E99AE7DCEF37389FBAE +:10C53000D997FB6D1E3C67C8A373EF3E0FB510FF84 +:10C54000396BF1931FE1AC600ABC84FAEF7A1EA745 +:10C5500034F76702F1835777159B63A17EC156417B +:10C5600071C07323747B6A2EC82DEE979012EBD2A4 +:10C57000F93A081E28AFF2D03FF1A299CE77CF0347 +:10C58000BAE0B9458D6F525C42DA32A6D8D210DEDD +:10C59000FEC376AE272D5D9D1EE2A37145412BC6DD +:10C5A000DD19F059A0FAE9B905352C81E585D619D0 +:10C5B0001D8FC4C2E38650BEED8AA453946F91F1DF +:10C5C0002DFFB045D28B7643F2DC905F8E02CE8792 +:10C5D0000D391E2DD73FCD57630A381EB9FCD92D12 +:10C5E000103FB84ABFD2E5A8218FE7E9F2F89C993D +:10C5F000EB03736D1BE8DABBC04DE32D60ED7ABC35 +:10C600004B8715E5497774D0BB80EB1B7D0A22E987 +:10C6100060E1F996C33682BBF20AC58B3CC45A620C +:10C62000611FCE15039538AF9E20EF119FA9E3FC43 +:10C63000349FD4654CC2F3FEB9180B91FFDDF58C25 +:10C6400068BD225A8F30E66BD055B4DD3DE2A120A3 +:10C65000E9138757C84F9C055EA979033F6E47FED3 +:10C66000B75264F5707DCAF9839FB6C33C976B36A9 +:10C67000C906D7CB8E319B12E0BE6012034211C8AF +:10C68000EBD58CFBC73F30EC9FC050845BFD5ACE8E +:10C690000FEBEB387E671670FEE0D5AFF717F07D35 +:10C6A000D48AE3827D7470450E8D3FDE9E2762BC86 +:10C6B000628994A791DD001DF6802BCA0ED447CD68 +:10C6C000FB6CDCEF04FCCA05FCF8569D558CEF357D +:10C6D000BA05E17920D62A9B797C1A93A07E3CFE8C +:10C6E00001ED6F75CD6DC0FA2926164880792FB6F9 +:10C6F000B5ACC2FB97D2DF9E8DF8FF7E4C9988784F +:10C700007F44F2DF8974E5B52B59CBA81755C4F5E2 +:10C71000BC20AAE50530EF5745B5A280F8538674D2 +:10C72000CE79357D1BEB01FCD3FCC721BDA1FFC336 +:10C730002537487035A7098A8D5D3D7FB3BEBEFAA7 +:10C74000D76DC195E47757B6229C179BC500D74F8C +:10C7500023D763C02B7A5D0BEDFE1F2798681D0160 +:10C760009CE76716FF4F2533F93745E447B08E2520 +:10C77000781FD6B1F45AEBC01964A29D96C182BA53 +:10C78000BF55437B14B838CDE784C5FF103E2F4A10 +:10C790003EFD1C5465FC3C588BD0DF9E72C6E5A064 +:10C7A0001F66398B51106F59D20F7E8CF474481369 +:10C7B00019FA731E8889DBC1E291AE7A07D16F75D1 +:10C7C00025DB88A3F0531CC5E124EE173F7C32968D +:10C7D000EC66E18099E8EDD02927C5E51C2AEEDA60 +:10C7E000FFF2844E6787F673FA3B6CE7747AD89E43 +:10C7F000BE430B3BC7D9AAEFE3AFD2FA65E1F943D9 +:10C8000077F2F2A915C059C2E22D46DE6D0DE07E29 +:10C810007F6A9695F4B591CE8111F1145E13B7A39A +:10C82000B3A6CD8E47F973F83356E88675FEAC8013 +:10C83000CB979166F77DA88FDF7AC5CC5A8045E506 +:10C840005C689330BEF856DD2FE06DAFCCE80DFD8F +:10C850001E70A4E623BD1C38EDCE10A0BFD6F40197 +:10C8600074ED9C873D758E00CF651DB9FD641CB4C9 +:10C87000FF4AB3C9EB701F581A05D27B009C3D4696 +:10C88000127AC84F44A80496C51AA49600EA614BD0 +:10C89000E3C8FE79435F1F9E3123BCBF9AC9F1FEF6 +:10C8A00086C0CB5A25A3FDADB4DAA97C70911C34A7 +:10C8B00063DD1E60FB6174BC9C05C425D82FEA4F64 +:10C8C00048B71936D6122627A0E2243E0FE6BA84CE +:10C8D000F86FD5F53FAFAEFF65C250783E9FE932A5 +:10C8E000117E5BF5B8EEAC350B5D785E728049BBAE +:10C8F000717D9763A7C60B00A7933A1F391C159744 +:10C900006DACE735AFBCD01776FF1D9D2EFEA4E3BE +:10C910003D276337C505331FD80CE9D81FE7E73932 +:10C9200019FB55A4C79C8CB75584EF1BBDEF15634D +:10C93000703F6B0E19E737DEE56E608057AF2897C2 +:10C94000A05CC5760943C2E95776A13F334B1AE391 +:10C9500042FED1EA9A43F42C1C189611AE771CE8DB +:10C96000867E3FD5E779E03AF4FB3763FD6953E310 +:10C97000FD5DF4635C5B757800F2B3709F8E74DAD2 +:10C98000887E5B1DB61BA2DF033AFD9A0BF9BCAE95 +:10C990004FBF7944BFADE99C7E5B4F5712DD1E8EC1 +:10C9A0009D1749BF6940BF00B783B17E19F9636B1A +:10C9B000BA4DDDC18974EB1278FEA010CB10DF6098 +:10C9C000076484CBDF838E0133319E3C07E3C4A030 +:10C9D0007E9C22E7A3DD6E72E6D23E385037A02F50 +:10C9E000EAF983F5F946EF0FA31FE68AF42F19F74A +:10C9F0000F21BC6CB81F7C14C77548B75795D69CDF +:10CA00000CD43759E3532AD2FD2DFA7EBAC56E3BBA +:10CA10008DEB604940EF61F239EBC82C7ABE3BBC2C +:10CA2000743F4E291F6713ECAFC2B071A4AEC78923 +:10CA3000F66F3D99EFCF2B2CC078FEC0070FA3BD3A +:10CA40005466273D3BB1B443C0F3D00F044E773951 +:10CA50004C5D7912E177B407F9874CCE493AFC5224 +:10CA6000DD08BF698591767F777003FAE88BE74E22 +:10CA7000DDAFA72803FD9C57C1CD05EB89FBDF0384 +:10CA8000B7E478DFF442A0970F98D41B6F1E1BCD3C +:10CA900022E276BAD393DE42799CDD95BEC4E51AD4 +:10CAA00088CD9B793C14D78FC67FAFF26F4924D7CE +:10CAB000FF75E65BA0278EBFB5F23E2CB7EF99302D +:10CAC000D305FAEAF87102C5712D2A6CD8A6A19F88 +:10CAD000E4CECAFB92A1FEC9FFE8352B09EBEF12A9 +:10CAE000F438AFC02C15EBEF1628AEAB72046FEF25 +:10CAF000F4F82D1887365DE4FBD1A5C72318F07B29 +:10CB0000A0D04CEB7AA050F76317CA7425D0203F11 +:10CB10002CE7F1C920872D647731BF05E7FDC7D128 +:10CB200020258762BFFECCC630BE7AFC76DB2CD5D2 +:10CB3000C5DB859F973DA2EF3FC32F198DC7753A7F +:10CB40007D197138F8FC1D83C3EBF979CB23FAFC0E +:10CB50005C32D7B3715ED306F36BB8FD7BBCA2D851 +:10CB60008261857778803FE323F1FE0DB80F0EA434 +:10CB70007F138BF21D14168A4BFBC0A28824D7DCCE +:10CB80002CF04BD0BF4B8A7C0DE842F9E0E179B341 +:10CB9000486F8B73AAC80F7FADCF6F837308DDAF6B +:10CBA000602605F18ABFF586DC033A7A67C25387AF +:10CBB000B0BF37B26D9DFA675A61485F3BF03628C7 +:10CBC0003C00F289AC59E4F645A06429EAB7A50E09 +:10CBD00009ED94DB593BD57F0F4F36FAE1F98D42D1 +:10CBE000D7CF8BDBE9BCCAD0EB3ECBE4FA1CE877AD +:10CBF0002F209D4E61FE7DEDC42F1B4584838B0548 +:10CC0000F9FC619E285FA3E5FE38FB56D20BE0D706 +:10CC1000969A7EF53EA6E9A684E2B4404FD0BE8F38 +:10CC2000ED753DE155D1BF0FE199C69A05EE476D0F +:10CC300013489EDFC764D2138B143BA7F3C87DD57E +:10CC40001907512990DF07F442E2DB6F560AFA799F +:10CC500018333714EAF08487B2AE3C2CA620BF56B6 +:10CC6000ED0CE1B3C1F98392A5D07EE2413BB3C1A3 +:10CC70003C26BA02B4CE3F0A266525AD2770F0BE29 +:10CC8000A4103C8F74CABB483C9442BBFBB1BD2C82 +:10CC900072FD04F4151CE7F697AD34CE64D641F866 +:10CCA000F13189E07FB2D0CDE3C27C65C5C900BF58 +:10CCB0005E72E5BE7678EA589069169087C7743F31 +:10CCC000D0AD76D07BC80FA6BF47E4B6281807A81A +:10CCD000B448E35C38EFDC843CB4D3F38F2807B06E +:10CCE0003CC9C3CBB9CD6D5E2794278FE2E5217B8C +:10CCF0003A5AB1EC2BE1E5A1FB5A4C58BE2DC74D79 +:10CD0000EF4BF562BEDB0623FDC966EA1FF01E8B02 +:10CD10007AC904417A09E5DA7BD55C5F9E90DD8FA4 +:10CD2000F4B3A32B4A892F25CC9C566CC1754FE2D6 +:10CD3000F132C37D9575581E5ECAE320134A82E620 +:10CD40004D509EE6179E41FAFD7B610AD7E3FD2513 +:10CD500096E980CF043F8FA31CA14DB04C1D4C74AD +:10CD6000F97DDD5EFA06E9219A3E5FC1BD867098C5 +:10CD70006BF0117E3E5B318DFB39F1372D85EC2355 +:10CD8000A2CBE318C488F4718CBF1F75E23DA504E3 +:10CD9000F1A2C570BEC6EC4AC3F7E1F9634FF66570 +:10CDA000DC1E0ACE247F07D239CAAF69AB8564B8CE +:10CDB000DA05D68C76107345F1F9B3D6283D54AB1D +:10CDC000C3FD971A88E37E0216560FF34FB5C76965 +:10CDD0004E901718F6D1126E7FB37FD8C2DB811D3B +:10CDE000D5EBE6645CC2593A6FCE710B12FA7F5EE6 +:10CDF000952BE9FDB18978169387EF9BD552B9C27F +:10CE0000C3DF9F999853ECFD0B94E38E9A094F96DC +:10CE10009E7BCC88C737EF10651BCEE76BE067853C +:10CE2000BA2905707E25DFD02B031664E686DEF571 +:10CE30009AD03893E0F69E8BE23324D6BC12FDA341 +:10CE4000CF0724D2875892A061F9A6577B723F5A28 +:10CE50001AC7CBA0C96EC2C3C4EA25167CDF8AF903 +:10CE60000596EDC679C6933E3831EB66D2FFB3A680 +:10CE7000FDE0541CDA039A89F42693BF8CF6DD1486 +:10CE8000E483782D7D9BF6FF2B752C88F1FCBF99F0 +:10CE9000F60E9535C051368E2F064FA21E3195F5F0 +:10CEA000213DEE38F4690DB32798DD7F2009D7FDC9 +:10CEB000CB14DA7FA03F32A2D300233EE16D5F9214 +:10CEC000897AE4890AD02301AE274E0B0CCFF78E66 +:10CED0003FDA93ECC1E3B33EAAC7F91C2F48A4F88C +:10CEE00027EF15276B213F87208A617CCC2B36D713 +:10CEF000DF8FEB3C6897D1AF7B953D040A262BD49E +:10CF00008F4EA8AC31ACEF857FC238A959A92A3E13 +:10CF1000BF7E499C827E0FD8A13605C6ED53C1085D +:10CF20008EF36EEE4B72C2CA5CAA3D09AF763AFF31 +:10CF30009BE6AB3C85FA54B26672A3DDD029A70408 +:10CF4000FF2C8C8559F6EA2FEEC238DDE30EFF2C5C +:10CF5000DC028FBCFAEBBB302EF778BAFF14961FB9 +:10CF60005DFFDBBB4AD3316EFF81BB719DE5D5020E +:10CF7000C997E2EA0D620A8C73A716CF100F9713B8 +:10CF800002B724C2B5B454602B61FE53E4ED16B46D +:10CF9000374A6A2A3331CEE7DF6F96697EC763D599 +:10CFA0004C8C23389EAE9A900F023E7C78BEFC7F5C +:10CFB000ADFF04E81FCAC733A1FFA4FF86FE93F5A7 +:10CFC000F9BBFF9BFAB7E8F31FD8357CA66441FF95 +:10CFD0004034C5594B7E88745BDED9BF762819AEC4 +:10CFE0003364014F5659694D25EDD39272DE7FB4FB +:10CFF000DED3399E838F97E5B3B59886FC33E36C17 +:10D00000A071DECB6ECCC4FD76B4C286BA4D67BFCC +:10D0100059E5ABDB4C11FE95C6586E9F4E8E457997 +:10D02000FD9E6F0E958503E332C3EDD3A3DDD8A734 +:10D03000BFBE99EB754775FBF4B89DF395E3689F08 +:10D040000AA176476ED6FD2BE5FDB25817E7199D6C +:10D05000EDA2FD2BFDB87D7AC47D63F6E93BBA7D78 +:10D06000FAA79B0DFF8A70FFB5ED5337E72B6E8350 +:10D07000AFD465A03FE1C884D591F6A9CCFD2B972C +:10D080002DB209F9FBBB33CDE49F7B77663DF1B947 +:10D09000AF405108F79B77677777CE5BD7C34732AE +:10D0A0008DDE679296CB8914E7C09AEB30FEE4B12F +:10D0B000A560C7427F97F475FC46E0EF4F69794C55 +:10D0C000C2788BD424AE6F25820CAA4F0F7B2F4CD5 +:10D0D0008F9788B507EAF07C315666F9181F08D299 +:10D0E0008B9EB7DBB9DF39537FCFCDA5BF47F6772E +:10D0F0009D0E63F5F7AB9CD5CCC4DFBB6D96902E2F +:10D10000D2C4E671D87F6F95313A8710DB73F0FE99 +:10D11000F5ECB3E875B70A5DD3D1DA224E478A93AE +:10D12000DDCFDF4FD2F77196BB2FA7FFEDA49FDDB8 +:10D13000A90D3521FD27EBEDEFCC59D207E5DA8CAF +:10D14000524146FE5C77EAA73F4C427DD22D606893 +:10D150000A2B91F9BE6BCD9E97897CF758998DA1CA +:10D160009E79F41BDF365CE77BC36318FA97D6160B +:10D17000C9DC3F500DFB04FD68D57C9F283DD82CB1 +:10D180005F187D45CFB7139F57049237CD31EC67B9 +:10D19000F85E867B4FCF996900A7E69EEC53E4DFEB +:10D1A0000B8B06CE447EDE0CB204F5989BF7946C94 +:10D1B000D5A0DF66FD7CF5F2A97996CA30FE30AACB +:10D1C00088E31D5F7727FB4E2BD98AEF1785E06236 +:10D1D000F005032E9DFCED87C8DFA6D770BE30A3F7 +:10D1E0007C03E70BD5EECC76FD8AF475CC0D708010 +:10D1F000E7D71471BC1FF9C6770AE188FC02E16128 +:10D20000F08B254512CF0700F343BF9257E47E040D +:10D21000B00B497F8CC6E3AD45DC4E9A2E6A3F4C7D +:10D22000D6F9EE4AB816CFACB4E0B8C0AF6484FF0C +:10D230000CBF9BE635452EE6F3F36DA0F919F379A3 +:10D240002FB6711BCD13F917E91F1C2F972D2AF547 +:10D250003BC5E8B794F75B5ACDFB2DF595113FBF61 +:10D2600003F83EF1F5ACCA887E8F5B82193A5F5FA6 +:10D27000B9348CAF47AFEBB2A5F187C85FEFD0FAF6 +:10D28000086857144F837150BF2E4F7023DCFCFA8F +:10D290003A27546FA7F7BD26962FE1EB985947F42C +:10D2A000F66E4290F8B931EE896FFCC44FB3CA8D67 +:10D2B000753436E03A2A701DD87F35A7E3897EBEE3 +:10D2C0008E89594B681D77FAEBA8FF12793BF50B55 +:10D2D000D76DA4E74CE074FC904EB7EFFC5DCDF445 +:10D2E00085C98FEBE1E9079D780A103C271AF0CC3D +:10D2F000E1F02C2FE5F3289FB99DD635A3B48EC35A +:10D30000532EE6742417CFC2F91EBF83D311C86110 +:10D310006FB89C5CA3D3CD717DDD06DE6618EBADE6 +:10D32000E1F09C82F400CF4F41BC41BB3BE44E395D +:10D330009681E3BC99DD988172EC3D830E8CFDA94A +:10D34000CBB1D6152AFBD0427E0DF2178F739948C8 +:10D350005FF596280D9877610445EEB02EECDB481A +:10D36000BBD4F0EB4CB307F6C791DEA7AEFC00E1EF +:10D37000007AB96EA798D6A484EC5256B224C2BEE5 +:10D38000DE30F50FAE61481F2E0B9DEB3C25341EA1 +:10D39000247D7CA04D46FDF6A9A9F164F71C473B0E +:10D3A0005708C939939DDB9D5EB06F317E1CECD26E +:10D3B000065D3FD5F317041A904E4BD09ED5CF7F14 +:10D3C000C2ED58A6DBB1B7801DBBEE06ECD8578A7C +:10D3D000F8F9E624B0DB13D12E9CFAB80BED8DC31F +:10D3E000E6C8F89023FFCFED593916FDFC6F32F6F1 +:10D3F00012C2F79D52DD9EBDDD4D7652B43F04EC66 +:10D40000CFDF172587EC4EFA61FB0909FC7C5D54E0 +:10D41000FF80F52EE68BC0DB557E90687B209A6EF0 +:10D420001A2495FC06BA1F2415A9D28CF36F11108B +:10D43000BED1E716DDD199C4B47FDA3F231A76094D +:10D44000FD0409CF0533F4E705FF3CB287B68E64CF +:10D4500012C6CFB255019ADFABA2FFCB22F26372A4 +:10D46000FD210DFD354012F545CA820473F7F32DF9 +:10D470001CA65E46F8DD627629189FFAC55133D1A5 +:10D48000F924757309F2B9DB59634922D2832C2838 +:10D490002D72888E066C827986D9CD038376268696 +:10D4A000C507DCB44B8A280F6E4E8B683F748F1C07 +:10D4B000519F07467778FDB0234A44B9A0AD28A212 +:10D4C000FDCDEFAA11E5E1EDA511ED479EF74594DD +:10D4D0000731BF09173FBAA33CE2B92F98BF15E344 +:10D4E00081060DB74968D3324D7D2707F6E1601DEF +:10D4F000FA63AFF823FA19DC5E6942381DC67C2254 +:10D50000602716B3F911FDB197C53388CF00FC43EE +:10D510007C0E62500E8BBB9F285B4265F8AF7F5438 +:10D52000FDF2938E4307C3C6CB1D1E9B44E7B71E77 +:10D53000E6417FC45578C24069D49376B16050C04B +:10D54000F5505B366833A3F783A2D7737985FDD096 +:10D55000418C99329F24FFE857602FF5807618534D +:10D5600012BE4E871C894F674E243E6395487CC689 +:10D570001745E233418DC4678FD2487C26FB22F1E8 +:10D58000995A1E89CF747F243E7BD544E2333310F1 +:10D5900089C73ECB23F1E4D66A22EAFBAD0944D227 +:10D5A000637B65EB3658FFE1229B8478CC6E5C1E72 +:10D5B000F1BC81470DFE7585C72935D1785CFF57D1 +:10D5C0008C03BB1E3EE7223E6F0AE19399675EF330 +:10D5D0005CCFC017F0B985C3C94FBD7816F13FDDE8 +:10D5E0003F83BF703FF5F18AA7483EBD3190FBA94C +:10D5F000C7315544FC1E489F55D243E6EDA3E40CC9 +:10D60000C9A152430EE97E290CBBC1FD72DB557ED8 +:10D610006BD982E5A9ACA3B7D80FE3175A56A17E00 +:10D620007E29FDEDF7058AB3D860C459340C4F4606 +:10D63000FA6CA3F261E78B22FAE75D2C40F30FE767 +:10D640008F189776C3FC7192D4F29DF8B49C19E2BE +:10D650007BC45435E27B60079B4E93DDC0EDBDB0CB +:10D66000B804B2938F15FB630B502E569859F8FBF4 +:10D67000DEC6F599E1DC4E38B69FDB3DDDD9C72F1C +:10D680000CBF31FBF89F8D3F3886F6F15090E7C311 +:10D690008DF3DBEBD9C76599BDD18F3081DBC747EF +:10D6A0004F83FD00F7DFB963005D3BE751CACF6FE1 +:10D6B000B38EC46AE8F7FAAAC64672B7EED403A4DA +:10D6C000877ADF02BD88F026F0F71FCE9B282F0F48 +:10D6D000136B480EDEA2E3F9807E9E376EF9381F89 +:10D6E000C601DC72F22992539289E3B93449F0DB26 +:10D6F000312E689C9C89F2C66766811DA4F768314B +:10D70000182793C6EC2F21BE2FEBF19E1D093C1E5E +:10D710006CDC83C5D45FE7F9C322EE77F4BAB66751 +:10D72000A29F715C8D4DC0A9795D65A7F0FC1909B8 +:10D730001E79DD89ED1C5F2796C841FE7EE61F69D4 +:10D740003E1DF73319CFA74FE4713A3A11DB97EA40 +:10D75000C7E9F9275A8576F2036BC3C15E6758FFA4 +:10D760000BCA4B70E24981667B02C6463DFBC4860C +:10D7700001F45C673CECFAD86BBF9FB9C1C1E3DB35 +:10D7800044B90EE384F63E24E9F1B05AD68FB0BE18 +:10D790002286CE7799A879DEC1FA9A41BCDE5C97E1 +:10D7A000FB5252E8FCF7638BBCED3E8443457F237C +:10D7B0009ED889E7EAD17AC85E51D2701F6981B8D4 +:10D7C000ABE260C3CF87A2E3600DBAB8DEFD1360A1 +:10D7D0002785E7D33831FF56F2EF1F758B01D487C9 +:10D7E0004BA6D934E49725D20611CFAB277BFCCECC +:10D7F0001105F8BEEBF62568E7C286253C6DC91217 +:10D80000829827CD380FE8E41B517C6F83F3C5ADB8 +:10D81000C8C7EECCB0915C1CDFEBE143480F072A90 +:10D820006D644F47F33DAF5D257E847A359E7FDD85 +:10D83000A29F2B95B246E257B7B116BA5E7D6E77BE +:10D840006DFE077CAF1FAEE3FB31DBE9F995CEC57A +:10D85000A390BF03FFCEC2FB232FA822C2DD2B0360 +:10D860001C60BCA3091AD16D49AC40F4021A38D926 +:10D870003717312F4D17F64DABE3726FEC2F1A7E31 +:10D88000D1FCE48E3CBF6744D8B9FE84C4A043A257 +:10D89000F3D7AEF5C00DCEA7E99C61623772E5CD36 +:10D8A000EC9F72B9727B77F0544A9271FF329F718C +:10D8B000FE49E775865CB91E3CAF710E7AFB886441 +:10D8C0009477417AEEB0738C05E703F09C8CEBFB08 +:10D8D000A7F57E76D57968841DF05DCF410D788EF1 +:10D8E000C7803FE8E73D89E72983894C4E2F44FAFA +:10D8F000E2BFF7D66822FA274BD2CD7496C2502FDA +:10D90000847929F00FE7E565BEF81678EE762552A2 +:10D91000CFF09E1C48EBFDBD60528451086FAEA74E +:10D92000503DF23DC6D79F66E6EBF746D547C32389 +:10D930005A3FC1F360C4DB8DCA576D84AE9FCA6C79 +:10D94000C0B7FDD06EDFC33EC4F8485DAFF146C539 +:10D950002544EB354F8CE0F26A8C555D83F8FC442E +:10D96000F7234A4C1191AF989CA328AEC46817DDE9 +:10D970004F343E812E368C48BE1A2F3016F9FB0EDE +:10D9800025DF59BD01D637E0C78328BFE5A194BB89 +:10D99000EE7B1BCB4FF7277B758B3E4EFF5EF39ED6 +:10D9A000DF00E51293700FC57F79DE9BE1C6382654 +:10D9B00007EF278DD53495219C73FBE6D7633B2B6E +:10D9C000A376B70D5D342C3C5EFD79BDBFDBF4BCA6 +:10D9D0000999AC99FCB931CB2541237F2D13CDF9A1 +:10D9E000704D0B8A12F46F1599189308D7B44697A7 +:10D9F00084FB3B86F7FB56DE9FF2B1DF92BEBC7C18 +:10DA000093E23CDD0FE72308349F9B72849681509C +:10DA10002E49E4F593F29FEB89702BF11AED6FFF1D +:10DA200018DB97E87A439CDA71E05B58F774FF865D +:10DA3000E704A08B57FDC59681180736C24EF39DAB +:10DA4000EEE3E7C1938BEA048C339FEE573DE1FA96 +:10DA500047EB08FE7ED0B422DE6E9AAFD2521DB6DE +:10DA6000EEE96A0743BFD2F4F2D31497BAC1399BE7 +:10DA7000F4BE6951FCA50CFF80FD7EEC8E5B895FD6 +:10DA8000BF3D2B92BFF8F00F37F19783C9267ABFBD +:10DA9000D5C2F98B7408FD29D375FE52CE1AE9FE62 +:10DAA0000CD64CD799AC8DC7579CEEE42B7D92FADF +:10DAB00046F09577914EA6311FB56B73FE80F88ABC +:10DAC0000BE80EE32CC6D95DC45FBBA0AF53230A9D +:10DAD000AEC947699D33BA892379E39E9B1B701DAC +:10DAE000335C2D2ECC2FF69B588B82E75557F3D302 +:10DAF0004EF944FAF9D5F2A98DF861B41F68CAF558 +:10DB0000E34A2E8F203F91115712A4F5C2BAAE8C72 +:10DB1000203F8A725D7E1AAEAF77A59F5F9B7FB470 +:10DB200009F4DE58377A39BB7E5C72FCC81B884B1F +:10DB3000AE05DE48F9CEF4EB6F1475CED8B03825BB +:10DB4000A7A763D5A31E1442434CA8AF6D73B0358D +:10DB5000F87EE80EA5F829159FD7E3AAEA5599C7DC +:10DB600037B531753B8C6711358AF3B7D8A584BAC0 +:10DB7000047C3FA18DF4BF8E6426A1FE65BC4FB02E +:10DB80002D9669D85FBDCAF77FBDCADFF386E7E986 +:10DB90007CC69203CFE7019EEFE272E2D25A1EF7F3 +:10DBA0007E2941207FE2A50A17E9031FAEB3511E6B +:10DBB000DA2AFDBDDD2423FF0A5B45FDE58FE47E07 +:10DBC0003F8D79D3E9EC5F58974657FDFDCF2A3D4D +:10DBD000AFDFA5047936F5BB3655C07EAB9BFA4D59 +:10DBE000C771ABD7A7BA993BD47ED048BEDE2AB75F +:10DBF000FA577C7FB8A3CCC5DF7363FE3CD4236D9A +:10DC0000E6ACC97633CAB7879AF740FDA24C978431 +:10DC1000FA7F499F931B8BA0FCF1CB163A9F99BFCB +:10DC2000736A7C0B61534DEBEA1C697E3052AEDDAA +:10DC3000BB2BB2BCA839B25C1B25C7A2E556D9489C +:10DC4000DDAE96998272E82CCA21F273703954CDF8 +:10DC5000383E81DEADE1F16B861C1A63F5968F8448 +:10DC6000752FD0F16EB305CE6F0778D91E19985F66 +:10DC700047FBB3633FEEE79427DCF918FF91389236 +:10DC80009FE3F41FE9F3E373B63EA38690BCEB3346 +:10DC900089E8E3D26607F9D92F39B85D74E975814F +:10DCA000FC314DBDBF5EB519FA691A6193B8C5A0C4 +:10DCB0004E2E48C1F4A27C3F2559D5F9947FA32C60 +:10DCC00046E27E4666A73C00F816315CAB1BEB567D +:10DCD0003D08F57D40C0A3FEB890B5C5E126FAA980 +:10DCE0008E37669E34B00EFAAF9D1A437B6B81D699 +:10DCF0003C1EC1287E23FA902EF1750E7C5FC6640F +:10DD000057A56268B7684F421EB67B6824B7535761 +:10DD1000772CF1E183467E1EEBCB651A6ECFB1DF27 +:10DD20009430D433E72D1F49F91D92AC1D3D8A91E3 +:10DD30003ED69A89EEE73D389CEE0B534ADBC6E2AD +:10DD4000FCD73AC9FF7F60B38DE713799DBF7F771A +:10DD50006E1B87C7BC0C17E5718E5E7F83D0A2BF98 +:10DD60009FD3168774F3D1B607E210AE1F19F937A7 +:10DD7000A400E513647220320FC7567329EE933363 +:10DD80006B96FD7E38C277CA0C0FCAF3B109597180 +:10DD9000B22B546FBCAF2926163D8BFC65EC376661 +:10DDA000DA1F22C8457C6FF6E0BADBE6E33E39E3D2 +:10DDB0008B49C0F9CA6B9EA13C7FB02EC2EB99B5CE +:10DDC0000E5A979B35AF42FF68ED9AD5AB3641FBB3 +:10DDD000DF831E87712367A6C4907FEECCBE58C236 +:10DDE000EE192987E729646269577AD0A89166827B +:10DDF0007B711FEED73B837E3D19F757EE6494BBD2 +:10DE00008BD69AE91CE6E094131B8B9242FB4B984D +:10DE1000B2BC03DFBD3BF328D443FB0F3585F215BD +:10DE20001E59FFE52ADCB71F16D9248C339AFF133D +:10DE3000F369DB907F7EBFE1AF05F87E958EA7E8A2 +:10DE4000FD57B5BE1FE57D646BF83E6C85FDF1ADF9 +:10DE5000E9BFB40FDF44FE6EEC43963125E27D73DB +:10DE600063DF75EA7F3ABF37E24BED0A5377BA2892 +:10DE70001FA82A00FFBD3892C7975E1C69A576E2ED +:10DE8000DF97EEFA1DCC7FD948FFBBB86FFB30356A +:10DE90000FE94DEE90BC68FEBA50A0A0BCCBE2F9F1 +:10DEA0009C365A7C26A247D1FF8BDF21DF5F337F70 +:10DEB00018EEFF4FF5FEFA8FF49FC67EAA1FF2FF01 +:10DEC000753F43BA1B417CA0FACA3413C6E7BA9A1D +:10DED0008CBC863EAF03F97E928FE8D2E0E3D93066 +:10DEE000DFED5DD86FB1A3B87E959DE4A37E1A47A0 +:10DEF0004B465EE40A94574F2F30319CC7D8AFFB96 +:10DF00009830FFCE63B015513FB0174D3199B9DE4F +:10DF1000D1910D65F7D7DFF6580E7070159974B969 +:10DF2000E76BC5F7135D5AFCDF04E87F699A594631 +:10DF30007F84AB28913FA7DAE9B9EC9CC456D40F93 +:10DF4000A5D6F8BFC58F0ECDCBC4ECB20BE8E4412B +:10DF5000F80BE9C2DDC4CB061D7CD128D03E5D8A1A +:10DF6000A10FF93C4F41732E97BB283F97A65969E3 +:10DF7000BC4EFC1514DB4621DF52D5ACA4423D3F1C +:10DF800033C3B86C9D9F35480CED0D188EF29D384B +:10DF900073DB2DC8878C7957DB83E3F0BDCA68F843 +:10DFA00055EBF3FC177D9E231428E7743FCF4F7485 +:10DFB000FE693C6FCCD3E9F1B71F26FD279E655360 +:10DFC0001CA13F88FC759B18ABC729B6ADC572AFC5 +:10DFD0001C339DCB99F5F71FB7313FE525712571AE +:10DFE0003DFFB263F2768C2797EB801E7B437BF379 +:10DFF000128A23EF559F2A617C79BD458F3707C56B +:10E0000002FD319A57DD8EF59AD52ED52B144F4B44 +:10E010007C6BF9C958E2A3974D3E529EC68EE271C1 +:10E0200069E98C9F036548BEDD7361BD4A3F2EF7E9 +:10E03000A3E152388AEB230B30760F9E53C6F1765C +:10E04000AB0585E75D61B209F3A8F4324FA1F17A1F +:10E0500099E52F9E48C071045DBF12FD9D7C01C6ED +:10E06000DF66E1F992CFAE68FCB7B396ABC733AECB +:10E07000F7E8E3E43409C1ECB03C4FB7EAFDFE3603 +:10E08000412D1D5580795254F2CBB2B72CB4FF9676 +:10E09000652BE5C8179709BD158DE0C4F9B7B681A2 +:10E0A000E7EB33F2A5D4EBEF11FD0FE64B998D743E +:10E0B0009B66E4FF66CABB2FC2F35BB478CA63B445 +:10E0C000C998E7FC188A7334DEABAACF4EA47C450E +:10E0D000C67B55063F4DA9970FFB519E16DB15F2E7 +:10E0E0007BAEB945EDE4C7A857DB79FEB98D23981F +:10E0F00084F3DB342A81E096C6944DE67EA1FD537D +:10E10000ABEF1F619F40EFA57AF5F9391AE7B5E348 +:10E11000FC9C757C7EADC6FCEEB7EBF33B42F92A66 +:10E12000AC319264A67C9DC009C2F83D6B9057212A +:10E130009DA32186745F955B4DFD31586FFCA82E21 +:10E14000E6CB22D767CCC3B919E8CC8CE33737626A +:10E150009E036DB048F954113E6938FEE20C0E1F63 +:10E16000D6E646395F9566E7EF8F30F9B017ED00D8 +:10E1700013F0B92EE0F3E258B511E9A7358FFB99FA +:10E180005A2B0665A0DC9F647FE35DF45F4FB2B35A +:10E1900066B2E7946BC70B2CD6FDD3495646FEEE0C +:10E1A0008E322BF9651777FA9979FC85F63B0BF9D6 +:10E1B00057AFCEF3D7CF8478EAF89D59CF5F509A06 +:10E1C0008EFCABD66735911F48C793019771FB1240 +:10E1D000B4340FE1AD3955C2F77BB97EB4788D25E3 +:10E1E0006877E3FAB9DF39B1D4F73ED27F1F14A5BF +:10E1F0001ECC3368A6BC6C4D157114277B51687F0B +:10E20000FA5F89DE5C74CEDEE46E6E41B9D03441D3 +:10E2100056404286FCD02E7B3779193AF331A74419 +:10E22000E54D4BE9266F5A4AB8FCAED2F356564537 +:10E23000E5ADACEACC4FC9FBB9D1FB4D098D0CF370 +:10E240003C34AD75733FBAAE0F7C292AF1D7DADFC3 +:10E25000D557CC4C0DDBDFD522F73F3D1EA71496DA +:10E26000853DA78CD6F308E872D8D1F8D33F53BECA +:10E27000B1BA3EEE754921FA3FA3EFA72F46F1F65A +:10E28000297A1E3EA31F232F84D2BAAB57789C57FE +:10E29000D5792BBD8F5465DFF9E7EFB24F8CFED9EE +:10E2A000263989E73BB95EFF96165BDCD5FD960CF7 +:10E2B000E3FCFD352BC7A3A371C0599C4777EBEB5B +:10E2C000379AEBFFC63E35C669B574BE1797551928 +:10E2D000C607ABEC0EDA9755F6ECB308B7EFCA07F2 +:10E2E0008CF55DBFFFAED7F7EA58356E7432D94B67 +:10E2F000DB29BF98C321E339DE7EC7AD7A3996ECBE +:10E300002F2146CFCB15E3243FACE01CBCB53189AF +:10E31000E7EB423D3A2951A6F7355B1D03B3283E92 +:10E32000296602E543F4C6D848CFDFEF1870169F80 +:10E3300087FE292EABD531D883ED42CFF1F213C33E +:10E3400064825F893396F699D7C9ED796F2FD983A7 +:10E3500076C21C9BF23EC1A93E5EDE09D70F13F8C0 +:10E36000BA8DF50ED4E13F6434D76FE73879FE8675 +:10E37000E87606DD2A7ABBB787A943110E4B753FB5 +:10E38000476CAECFED02FE9834F2F1533105DF2138 +:10E39000BFB8B6EDC7D7CE2FFEE9DD586F47DEAB6D +:10E3A000D7A3F9067AB75156510F5B1D1BAA17C1A7 +:10E3B0005EB5AF11F8F3DACB77DF92C5D85F0463AF +:10E3C000FC9F3D8DEFB53DEE6011E385CF4F8CEAAC +:10E3D0001F4D5297ACB7D7D6CEC2FE9ECC37CA1FC0 +:10E3E0006D5333A03F4B647F4432FAF35830C66B11 +:10E3F000F9F59A1FAF1F15D2FFC11E98817034EC3A +:10E4000080D52726350E85B19CD254524A2D57A669 +:10E4100031D4C32D49DCDF6949626A1FB4B333FAD2 +:10E42000D2B92CF031CA07604B97C93F503D9AEBE7 +:10E4300035272C5C6FB72415B7A01D6D61F2B3BFF3 +:10E440007393DD50331AF1D367D261A4C390DD20FA +:10E4500092FF271BEC0FF4CBDA9B800F224C324C3F +:10E46000949FD18EEBA7FAE93BD14FDA32DABF6441 +:10E4700074983D94DDA45A513FFE50DF574DF3FB95 +:10E480009AC2CF7357E974969D63E4439F4276899D +:10E49000985052807689D1AEAF9465C275F7CDD0D1 +:10E4A000ED06B043D05FD0B7C98F91AEACAFE8AF47 +:10E4B000C0F5F62D9F6B45BFC6AAD1FC7D43CF9A10 +:10E4C000A003FD02ACC6C4F0BB4C8B753DDE2255EB +:10E4D00073BF59B9DD85F26A8BEF5907F69F9DB37B +:10E4E000634D5FDC179248DF71CA6EE2F697F8E081 +:10E4F0008C60B8BF799D2496E23C0ACD7EFA8E06E8 +:10E50000EB314245FDAF97F96DF776D4537BE49B31 +:10E51000318FDF462172BF18D7CCB11C1F0D824F3F +:10E52000FB9E87E72E0C8F9FECA3E79FDF369AE7D1 +:10E53000A99235C98BF27FD4DF7C04976DA3457A0D +:10E54000FE5762BB13EDEC6CA62EA9C275FA5C32C5 +:10E550008F6B6B263F60D20A5941FCDB93DA1F199F +:10E560008AF58A49A17411BADFE1E27FA4529EDAEA +:10E57000A163FCCF23BD159ADB9FF81EAEE7119176 +:10E58000C7C7895C8EF79EEA223DD492D446705E5E +:10E590009BC6482F1BB3F6AC13D53D7B928FA17E53 +:10E5A000E30434A1DEE47209F47E8C4751287F2411 +:10E5B0000B30056C4BB03B25A642FD44FBDB5CAF4A +:10E5C0008AB2B3B2619B601E48A08A866F51EE2862 +:10E5D000DCDE1AAFE7973CF2F534F2439BEC7EF2B7 +:10E5E0008B9494C730A4BB4EFB6C55FB214C89E740 +:10E5F000690B8A0B894EDA18DA91554D02F1FBAAA4 +:10E600009C2AFA4ED4DC26FE5D8E6A9DEE98A8D038 +:10E61000F7028E8C76EA764503C1BD9A7138B1F562 +:10E6200036D2EFAB1A8BC9AFD0692FEA79F6AB9B24 +:10E63000F83EB4EA796FAA74BF2E0092EAFF38DA86 +:10E64000B05756EA76B3FE9D027DDC984EBD3D5232 +:10E65000CF5D67E17A87F6BA99F4A4CF6BBE88C321 +:10E660007D1F7391E7B301392C47C8A91CAE9F5693 +:10E67000ED337729A7D8A620E9C99FA35D9014316F +:10E680006E845C5C67E978EC590F8D4B7105C63878 +:10E690005B74BFD7F5C6F9425F6F6BC525FA7ED5AF +:10E6A000967DCFD07774369681264D7A9C427EA88F +:10E6B0000287EFF2688287F2587FB4571E33931FA8 +:10E6C000A1F3FB32798CF4DAD95953961C82F926DE +:10E6D0007A06E5E3FCD24466C7BCB53163B8DCE931 +:10E6E000F6BB32A57C1F2596AAFA7765DA6FE98B0F +:10E6F000FAF00446DF0988FEBE4CFC1899FAFB5F6D +:10E70000F77D19E007F87D19794C02FF7E8CF17DC9 +:10E71000192532FF62F47765D6E9F6C71616DC8450 +:10E72000793EB51C2BE1F3B5CF0E3720BFF83CCFB7 +:10E730004AF9A453661CA1BC2E17051E07106D973D +:10E74000DC91376ED09802FCEE525905E5871BCC60 +:10E75000F57AA6ED56A6D27947A4DD22EA7AE31728 +:10E7600017389D3618F9A1F5FC77E4C38775178D26 +:10E77000B95EFEBB00E5B7636FF1EFE4751BAF92C6 +:10E78000271AF9ED68BFBA1252787EBBA8FC77173A +:10E79000317F5D36B56BA176BF34F2E095A902B545 +:10E7A000B3E8712BFCFD51EDF5C1B4EF989E97DAFB +:10E7B000F57A2AC5B1D69ADA5F44D5C465E1F68107 +:10E7C0006B7B641E7297C0ED0F26B648786E6C7C2A +:10E7D000C711CF1FA686D9170DBA7C58A8E7B93341 +:10E7E0009E5B78E379EFEE1E937C8DBC778AD88DA3 +:10E7F0007D95FF18CAB950DE3B4679DD5D8F661AFC +:10E800007903F53C8B02C1AD33EF5D9EA8E7BDCB2C +:10E810008BCE7BA7DB612D5278DE0C9745B1E2F7FA +:10E82000B958B13D8071E6D78393717F4E7EF52450 +:10E83000CC633067C14393BBCAC3DDD96E4D641E40 +:10E8400030E3BE18651719F4077C37C2CFFBC81830 +:10E85000AEBF06A3FC45F335B69FECFCA8FC788F51 +:10E860008F6106FFA67C5DF34F3A789E87A8769766 +:10E870001CC594E7EBFB3F2AA3F383B92C40D79A3E +:10E88000CEEFDBF17314798D48709677094199C703 +:10E8900065D84DF4BEA764C2FBF78218DA82A24B9A +:10E8A00003AE7733C3445802EA9132661B4885753C +:10E8B000AE153594B7DBDF75060568B73A49E6DF74 +:10E8C000356830717FCA7A2198CDFB4D4339A33525 +:10E8D0009854ECE7DFC7703FFF1B6374FD024040B4 +:10E8E000F3D1AF0DFA77A38CF1EA98A905AF268191 +:10E8F0005F57A3FED3851FCAE8AFC112B0A37ED66F +:10E900009169A2F3984B56B59CCEFB12FBD37B8248 +:10E910000DB18135A5BC9E78C125474B29D5E79916 +:10E92000B8228FEC01F5B9F71CF41EF14E1D4FD142 +:10E93000F8BEA731B21C9D472EFAFB937398FFDFF8 +:10E94000D3CC577F1F71E718AE17573185F0D360CE +:10E9500091DF7123FF5F2B329C7F5D06879B29939C +:10E960005FFB269494935E906065D9345F3EFFBE52 +:10E97000798902CEB72181D3DB3F3BDFE879FE61A5 +:10E980004C7F0EDF04BE3F1BD61A715A5C4F9DF3BD +:10E9900082ED19E44FB24EFF9F0A9C1F6A6BF97B10 +:10E9A000EE5B6A4C94B7ECCCFA6CD2BF82169E9F99 +:10E9B000527B94E7DBFF50509EC5381F81C994E716 +:10E9C000F1B331FCFB80A6C74717225F7E2B6A9FFD +:10E9D0005429C2DB98F771DCD4F585D8EF881E4C3A +:10E9E000B1C1DCF65A834E4C2912BD7E8699100CBB +:10E9F000FDC684790BE5F1F87ECE22B8DF03F9502D +:10EA0000787BB2D723F33B9E1CEAFB660CEDBFE09C +:10EA100030F46B9DFB987F6FE749D387BBDFF01025 +:10EA20009F27FEBDF8A18E6731BE61F750BF381633 +:10EA3000DA5F78F0C478410EC1E9F3D707105D7949 +:10EA40001AC2F62DFE6F7DE43E666B12793EBFA6BC +:10EA5000C8FBF89DC388E7AECA3FC8F53BE37B031C +:10EA60005B7C8585389F8D96C6528A93F0F85370EB +:10EA70005E676FF11D36F1FDD91FF9C9AFBEAE2734 +:10EA80007D42CB61D2CE04D4EFFDFD709DBF7A37BD +:10EA90004D413CBFA8EBB906FC0DFDDFD03BA3F711 +:10EAA000635FDDCE50C6AA4DA8DF8FFDFAD7F41DF7 +:10EAB000CEFA7D3C6F80DDD54ADFED635046B1B8BC +:10EAC000586E3F8CE731526BED97F199A08FBB4C9C +:10EAD0005A6698BDB7B889D7330DEA4787CE656DBA +:10EAE00016BF867694B88F9FCFC2788DA8D7A19D88 +:10EAF00086FCDF5243C123CCA2DB6996722BF10165 +:10EB00004F929E5F45CF1398DDE4EFB4CBB8DFD5CD +:10EB100067E2F1149179E3468D556721FC8CFC8DF9 +:10EB20009FE6AB63309EC2AFEBB35FE9DFA568370A +:10EB3000F2EE1E9D4A7AC557CC477AC5F8B126FD3C +:10EB4000BB14D3E9BB14C6FDABF337EBF9B73BF30A +:10EB50003AF23CCD0B27F1BC0A58C6B8DE453E2B35 +:10EB6000F9A1713FB744EDE7F032E6530CCF0BB19A +:10EB7000506CA33CD0199877B088E7570C6FBF98BA +:10EB800075103FC23C8B11FDE8F4956A5E4AF9AC02 +:10EB9000BFEB79D5776DFFB1DC9882FA8EF13D8EAF +:10EBA00056FDFC7CBCD9A5EAE7C2FAF739A2E30717 +:10EBB0003A5661DE37EF089BB4929F4FD1B9F167A7 +:10EBC0002F5B48CF67E6F5ABD0FF55DBCB4CEFA50D +:10EBD000459F0B2F60BBC7235BF88ABD65C5FDF35E +:10EBE000CFC665348CED8CCB70FF17E3321E191B3A +:10EBF000169711BDDF12F4F3E003AE2F7B84C7C17B +:10EC00007A7335F2D774970776B3BE4F9D7ABC8E70 +:10EC10005DD458B85FB9BBE7B6EB747CC0DAF16E6F +:10EC2000B387F43986E73569E805F184BE33D3321A +:10EC3000DAF70CCEDB2E1BFE18FEFD342D9DBFE750 +:10EC40006D979BE9FB6596852E85F65D03F71FB0F2 +:10EC50007FE1F125D375FF5E279D44D18FA0F0BCE5 +:10EC6000A3E8FFC07E7BC15EA5F7C14DCDF41D3585 +:10EC700001DF1787FD9390C7F9C556471B9F9FC4B7 +:10EC8000BF9300EDF2489E66502C3BF58372A1D7EE +:10EC90000376CAAB6F8D695E82F5D644FE1D9AFE7F +:10ECA000797C1E5B2DF05C12CFC78FFD647AFD7EF0 +:10ECB0002C67F6B4D3F7278E8CF5B58EE5E7D443F1 +:10ECC000888FE8F35EACD36718DD6BC407A3E81E3A +:10ECD000FD7FC87F59A38DF42822352AA7935E6D46 +:10ECE0007C8F6990C7D786F035EC0FE3FB3FC6F702 +:10ECF0007BBAFBFE4FC88FA0F1F7DFBC6DA467772E +:10ED00003C0C7814C2FC413A5D9CD2E9C4B83F7215 +:10ED10002CC74B9EAABE8FE37B3C2D4F631CD96250 +:10ED2000509A117E8B9B1FD8F5BB249E179ECA3923 +:10ED3000DC5E623E17F1F36523FDE7397CDA57E1CB +:10ED4000FAFB24B142F4F3ACCB99C2E6B8C82FC8A1 +:10ED500030FE0CE4F4B3D80FEC8F00CA8F943EA3BE +:10ED60008674F5BEEFFFB6EBFF0105BEC8820080DA +:10ED7000000000001F8B080000000000000BE57D74 +:10ED800009785455B2F0B97D6F6F4977721392903C +:10ED900005C24DD88204E8668920889D84840001DC +:10EDA0001BD01115B1C31A204B0BEA1F67D0740892 +:10EDB0009B884E505454C406C16DC06998888C0419 +:10EDC000A7898838A213B779B88C93880BC8D686E0 +:10EDD0005171C619FFAA3AF7A6FB761297F7FFF30F +:10EDE000BEF7BE17F53BD63D7B9D3A5575AAEA9C0A +:10EDF000CEFBBE704D491263A1DB99BC9D31966478 +:10EE000066DE402E63DFE3DF158CF57119184B0EBB +:10EE1000A7BD5C02A56758D0929F05DF935CD70A17 +:10EE200023A162B981F557188B555A5C08573542B2 +:10EE300039F8CB13B151F8EF57BDFC3B05FC9EEF01 +:10EE40007C19E180D589E5F33EB0B918943F735B36 +:10EE5000BA5F84FC61E33DC9AE518CD94786040F8B +:10EE60008CE3CC9E494E4C99CBD52F298F311BE397 +:10EE70007F3DC544262661CA02F7C98CBD7BB942D5 +:10EE8000E34A3179AE657DA1C09AD6970DD09ED95F +:10EE9000C5BFF749622E3F54EEB3C2CD16D8C2B0FB +:10EEA0000DD35CFA6EC07E1C5714995DC9584FA2F1 +:10EEB0007ACB5245E5931E8C655998816587F1A2FE +:10EEC000A559CCA2D87218AB81ECEF71CA3E802D47 +:10EED0007C8CDF43F9F606A104F1B98C31B9667870 +:10EEE000783C5AFD65A9266A3FF622F40778C89651 +:10EEF0004D7E01F06A5FC708662B98BF3FC0E342B2 +:10EF00002D85F130DF7E9B82E34468C28A7DA56156 +:10EF10002FAD770D83EF493DA471EBE1FBD69AE16C +:10EF2000CD1680A53B5B2E47D42B0D72811552E97F +:10EF30009F921BE7497F90BF7053C2B6F5D886E415 +:10EF4000CD9961676C36AE2BE07DF9585721CEBF65 +:10EF5000E05D23F5FFF5DDB17E33F4BF29B3A24FA9 +:10EF600002D49BF7819931A1331EB4D4C79A535967 +:10EF70002ACC63435F132E967D9D40F865FD80206B +:10EF800060BCD2DD1FF82C23717CEFF4C6A1DCE25B +:10EF9000B251BF58CF301ACA6F100D38FE05EB04BE +:10EFA0000753B0842F4D188D705201D65BD0203896 +:10EFB00070D80B36E71BAC48473EE6E80F49FF4DDB +:10EFC000B2C1630B8FA3429DCF1FBE134B02F0DD76 +:10EFD00060612E587356D92B719B48F3662EC4433B +:10EFE000659FA46DEB617E0B91BEA1BC7173BE2BBE +:10EFF0000DFA7DDFA810ACB557D958C6B07D8D0E7F +:10F00000AB70684A98EEFE20C9BE0C68EF0F40D97D +:10F010000D8E30FDAD32727CFBFE6920FAEF032DC0 +:10F02000203D9CB8E71F6944D76C25F5C3989F52D3 +:10F03000C9A8AC4945FCD4B58EF7C1D7F90D0986EE +:10F04000AA5C6CC75185EBE1BB3B96EDC47DB7A1D3 +:10F050006FF36880FBAC9399A0607B957D04ECE72F +:10F060007D33437A91EE8E253C4A1B5D48454C4AE0 +:10F070004821FC49F7030CE527BA8C34EECB557ACE +:10F080005C2584048604C35C4EF710C69C2ECF3AE0 +:10F09000A483D891EAFEAD89F1F787F1DB116FF017 +:10F0A000CD5EF3FEEE3A80B79A5839CEA7F99EC1ED +:10F0B00033B0DCD7774A02D2CBD7096F52B9AF470A +:10F0C00031C187F4A3F28F2EE82583E8E5A0E8C6D6 +:10F0D000FD281939DD4B77266DC37ADB1D9E07713C +:10F0E0001C97AF0A8AB8AD5E943FB9AF44E97E1D64 +:10F0F000D82ABE0EB01D030FC33AC4E6B61A11CF0C +:10F100000596FB1EF96404D6F351BD6A752B341BBA +:10F11000E52096F7092CF09CA3F3F89E54C7ED3038 +:10F12000304F80988FDF8AFB65D93846EBF5606DEC +:10F13000C3239F0001FA0ABC8FB5E2FAAC94583D94 +:10F14000A40FC6DEF1642BB45BE333CB6648BFB1DA +:10F1500066FA591C63A9857C7EA1BFD8FDDBB38804 +:10F16000BE0D26CC3758F6AE8FE8BF51A5DF1A4941 +:10F170003148389F63A21FD7FD82A4D44950FFC2F3 +:10F180000AD9E1832927C5BCF1E1B3002B75F10A47 +:10F19000CBC4F9BBB6E13898C922AF97C3ED255E61 +:10F1A00014996B44042C713A3C90C826C8C3C3DF41 +:10F1B0000FABF3FDBCA37F46FC9CD92C44BF8089D8 +:10F1C000E36F002CAE1CAAAC87719DAA7D6A0BCEA2 +:10F1D0005F8CCB5370BF2F9679BB35B63C652EC084 +:10F1E000AF2578FEE48AD84707E2520B84A1D8AE57 +:10F1F000CBD086ED1E33D2BC96F777CC0A02BC5C2E +:10F20000C874F820AD57E9C0B7D1CAF30547CF0499 +:10F2100068AFDECE66E13A2CB7029CDB3D1F9ABB9D +:10F220004E649E1E6178EC5D662FF12149D95A0328 +:10F23000EDCE3F973B7C3D0BE7CF37F1F58D6EE789 +:10F240006042FEA738FE6309BCDF6367630C59C3E5 +:10F25000007F35856EE4DB4926E0F8283FA79B68F0 +:10F260003D136FCBA7EF0704FF430B71FC57DB1C6B +:10F270003B619D364D77A5C524619A62005A63FBB8 +:10F28000FEB5FCAFB763BDD78D0E94BBC28C923474 +:10F2900011CAA7BB4D0633E41796F37D97DE24FA17 +:10F2A000114E2F097EF22CC089BE7805F7B198FA6D +:10F2B000F6E6F93DC274BDC99E4D74B2E975D10F31 +:10F2C0004289DD2B280FCD47BA5EACF69FC5F1B958 +:10F2D000A94CF1E3BEAA51E5009BCF685D4F595E92 +:10F2E000DA8CE35E6C7D6D33B6375634507EA8926F +:10F2F000713A05F184FCE5BC57F623BF1CDB87D7C8 +:10F300000FDDA0E5B732A4CBF3A31519E5D05864FF +:10F31000B2987F2DE005DBD7D6F3DA1C958E60EB33 +:10F3200063F959E9D4DE9DACC58AFCE7BCA4F2CBF5 +:10F33000F2185A776821EE12801F666CEF7AA48B60 +:10F34000D1CA21E4ABE71923BECEA4501CEE476D11 +:10F35000BD7EECFBA604575A22F22B23AC27CAFB36 +:10F36000E6A3FDCA72399D23CCF633664901BCAAD7 +:10F37000FC01F69B741FEE3757AAC3877CDD52E46D +:10F380006ACD09CBF7687A991AB5CFA6AAEDFE3AED +:10F39000CE91373D825E6BF2F93E9B2782BE05E33C +:10F3A0003A606237BA23E86F4A3ED7B3B4749EAA74 +:10F3B000976974A895BB4C6DA7A35C6CD7E5AEE8C4 +:10F3C00028A7F66BE6F4C4EAE3959D909626EAE951 +:10F3D000BF289FCBC359F99C0F68ED4697D3E63100 +:10F3E0004B2D5F93CFF9E2DD592D0AAEE3DD50BD21 +:10F3F0003E01538047723AF28D41B8E15A840D3292 +:10F400009339CCF3250B4A7CC61E2A684945F8A1DE +:10F4100014AD3EB0E8E19406854448AD2DA95E5B8D +:10F4200098FEAD0D97121F2C043E8874D26C74D0D8 +:10F43000FC7C757C7E8EE6FD839743FAD26A591177 +:10F44000655A3E97252FBCCE394C39EC857AA52ECE +:10F450008B03F930DBAC1C7603FC92C042EBBB584B +:10F46000774D8ECC55E58F368E524B2F5F6A121535 +:10F470000BF41C1D4967A389CEF02F92BE0A6CD6EF +:10F4800036210E5373D03CB48B7E1CC6333A98F5AC +:10F490004AF86C3023518DF84FA9D7D38D963EAAE8 +:10F4A000F2F16F1CAEDBF34785C71B2D2F0F0CEF5E +:10F4B00049F212B65A2011C6ABE92D6F633958874D +:10F4C000BDF9EE35F950AED0A2DC7C3F54693680F0 +:10F4D000BCC7FD550ACC620CAEA7C783EBF46E7AAD +:10F4E0008E13F771F43834FDE680C0F1C052037B0F +:10F4F000918F5C92A80C5F0FEB2AA3E885FACF34BA +:10F50000A6933EBA49A5A3C13DB725A21EDFB93FC8 +:10F51000F7901943BAEFC79FEF7A84E6AB96EF4EA8 +:10F520003E20FBC1F99B4C8E25B7A03C1698773B3B +:10F530000CE61DCC827A19E6D09C208C33438C7368 +:10F54000D4437A3C76CE9164987F6C82E769C4C7D5 +:10F55000AC6B26AD415868EEA12C83F19D2F6BCD8D +:10F56000C3F1DE257B7663FF15164F9F1498CAD929 +:10F57000DE9E81F1B858EE1EAABEEE1EE2EE72FCCF +:10F580007C3C8755BC27C77BF6613BCD8690DD81EF +:10F59000E71949CEC47A4CE6F3FAAB4A57878C8E0A +:10F5A000EF4230FE431BFB38EB910E63FF727D355B +:10F5B0008C77FE833D9D784ED0F052A09E17161892 +:10F5C000DC29415137DE97703E15B6B23E69385E90 +:10F5D000A33A5E4BB28A6F25D76DEF7EBCF582CA27 +:10F5E000AF6F17547E1D7C1AE1E7992CAF77C27973 +:10F5F000C72072395027909CF8938ADF478D500EB0 +:10F60000F9818525D6C1B85263783BA90F18FCF55E +:10F6100050CE5DF0FB9B30FFF12A9B034549195307 +:10F620004C48F4F398CB84E3FE34FF1F075B617E04 +:10F630006DF99E0F71FC4CE6F2EAC60F62489F77A7 +:10F6400017DA33495F1FC7F1FE63749083CA0BD486 +:10F650009F3155F0D3B98829EF5641FF57C1FFE1DB +:10F66000FE5FD071DE5292B1DCD5F81DE6F70BE6F5 +:10F6700035E27866B1064AAF63014A67B3164AE7D6 +:10F6800030F9602BD47DABAEE72DB7419D19865084 +:10F69000A609E6512506D7E0A603FC5FC0F17F5D11 +:10F6A000F4E64702E27D45D9405AE74DC93F897EDD +:10F6B000A70B1C9FB04FFFA1EED3914E43C4BE9940 +:10F6C00090CCC72DB5D6C7C37CA6A7643951EFB976 +:10F6D000E23BB917CEA398C98208F328126D249F84 +:10F6E0005B3E91B799B3C274038C232E0DF8D544B9 +:10F6F000955F3D78218E2541BD966C91CE85CC7568 +:10F7000093D40830682F8427C63CE9E7013E067A87 +:10F710002FEA872DB0C0D84FCB6881F48EC9A91BC2 +:10F7200027C0B667AFD43107EA7BAFBC2B3A906EE7 +:10F73000A76D3E228D04F88D7C4B08CF7B70AE9573 +:10F7400070FF4DF1D8BC917A71492FE3C71DFC10B1 +:10F75000FE9BDC4F0F97E6026C09C3D39814CE478B +:10F76000BDE743EBCB8723CA6717D893909FB24B73 +:10F77000D825DF03FE5FAADDCF4EA0AE22CE8E4796 +:10F78000FA2954CF6BC0594CD323F6C137B596979D +:10F790000F43B9F1A682410580A7259AFE20C3C96F +:10F7A00003C6FDC4E53DB6231DB68C7B69EC79D458 +:10F7B0001F9AB286632B7F99C8E5F4EC02B7B300B9 +:10F7C000D273C6D68548271FD742470319FBA41614 +:10F7D0000EAA70C4FEAC5626F8646D2AA55FD42A22 +:10F7E000949EA9CDA1FC73B50E827D05AE31D8BF24 +:10F7F000C2BC9BF1BCB1BC4E6228FF96DB9771D8AE +:10F80000689191C9AEED7DC4100BF05A3F3F572F60 +:10F810006EF4AF8985F12C6D72996C002FEF9D58B5 +:10F8200068C3F2F70BB48A0B8F7A8F20F99C7BE7C1 +:10F83000E35F4C6511E7E08B02E9D5138B5D25D8BA +:10F84000EFE7B5A3693CA76A5D349ED3B525943E26 +:10F850005AE09E8AF37335B5AD4985F6A7EE6A93F3 +:10F8600032202D720974EE1EEF627E3FE067B39185 +:10F87000CB8FCD691607EEFBFC21331EBD19B19D60 +:10F88000EFB906EB5F9D38AFA8077C9F36BA4CC234 +:10F8900072D77CC718C21A5DFFD8FE5058CB399476 +:10F8A0006F677D1C2F6F37BE4D70BB04788199B692 +:10F8B00037C6D239B5FD788C1FED1A339FE3F9CBEB +:10F8C000EAB83DE68009EA536A91EB018F3D9BB2AD +:10F8D000AE398078FCA39199159C2F7405F33F9065 +:10F8E000B93ED1C5E568C87039F0BF5D6527D291D2 +:10F8F000BFADB630733A94DBFD7F5A115E2BD8BC96 +:10F9000022F47B3A91CB6DC6BCB14857E78C5C5F63 +:10F910004318F5D62A9376DEF40C46F8740C2F8F34 +:10F92000FD2903F977AC777AF7F383717C035224CE +:10F9300005DB7D62F7C6F674D43F448BD70CFBE839 +:10F94000E9671FCDFE1551BB9FF6F3D37BEE8CB953 +:10F950009E91FEEFC2F64FDCFD7C06CE7320E8A13F +:10F96000C807E6DDF3FB8CDF43FD278187607B075B +:10F970008C8E73FB91BF3F6AA173C49377570E4778 +:10F980003E36FFDE6B8BD390CEF73127B2AD070A40 +:10F99000B8BEB170F39E7B519EE73A9803DB1BB66D +:10F9A000A5CD900EF59C3B847A4C47ECCA1233707F +:10F9B00038A9815F229E2F3130079ED3D9778FA738 +:10F9C00047CA99470A149DFD6570EF92A322E84942 +:10F9D000B99BBE2C4867917A430CF16B4D5FF84D93 +:10F9E000E6F1F632927B0D54FFB9A6996FE37C0FD6 +:10F9F00008BE343CA7F9CA4C0E9253800E23D24560 +:10FA0000635FD23BF6197CDB488ECD8579027CD6CC +:10FA1000ED7B08F15209E5F1BC56E96C69BB0DF2CA +:10FA20002B13B2199E034EFA9793FE7AA9C0649CD9 +:10FA30006755E3FDC5B8BE67C7318700FD973F77BF +:10FA4000A198E45B6FC6D06E72B6B13EE53AA87F6E +:10FA5000576EC12894CB6E3140FDB16ADE5F75D31D +:10FA60001E0BC2A0DA268AC020139AF25FCA50C2C7 +:10FA7000EB6668BD270BCF57C91ED04FA1FCE62C03 +:10FA80005F1AEABF9A3C6DCB773715901CBCAF0C60 +:10FA9000DBF914C685FAD54F957F268377318D27FC +:10FAA00095EBE35ABBBD0DC1C5A49743CBA897EF17 +:10FAB000945BAE655CBF957F4DFD7A8E211FC810AB +:10FAC000CB48DFCF30737D9DC93333713D7F6AFFF3 +:10FAD0000FC6FE8BF4AD6A439CC33C32ACAFCCEA9C +:10FAE000517FB015D6EBD204CF719CDF0255FE33A7 +:10FAF000C9A1A09C4C4970BD87DF2B2C20570D2439 +:10FB00004FFF82709508FA57DF08FDCBF2D3E4E986 +:10FB1000C404D7099CCF4F2DAF30C766B4B774F07B +:10FB2000DDAF86EBF86EBDDDC49C786EDD6426FE2D +:10FB3000C20E1B2A8E801E7E39366108B7B7DC3EA6 +:10FB4000BC2703F951CF5897F87A11F6BD07701BFF +:10FB500004F9E0A1FDDF528FF66017FC6B073A193C +:10FB60007FD1C03C11722FBA3EAC935008F3CA67E4 +:10FB7000B1BA722E9660223BA42DF127CE37F8B889 +:10FB80005ECE343F1E39DF71EDC7635195023CF400 +:10FB9000C4B4BBF91C54E7F3079C0FA47F9EE8EEA6 +:10FBA000518876BEBFC912CADDF192C83C11721AE3 +:10FBB000C69F86E3777D17A31B7F079DFDC4F1DFFA +:10FBC00002E74803D2EF9726B24334A97689A6C547 +:10FBD000B97EB2CBA03D07ED14334CA4CF36D9BDCE +:10FBE00064A7697A3DD9E1433EA2D973CBB83DAE53 +:10FBF000C9CAF743539A2CFB800FA49BD9678DB8D1 +:10FC0000EFC57886E7CE8EF69365D27F0E084CB5A9 +:10FC100083F0FE3BDB85449247A16B63C86EB2C99B +:10FC2000191CFC5BCACF217B9F66F74917614274A0 +:10FC30007E37D33836D997BD3604EA6DAA8B25F9BD +:10FC4000BD29CBBF2E1BE1DBFB52BD1A167C04ED98 +:10FC50004B2C6422FB7117F61E2E8F249F7DFA1009 +:10FC6000B2EF74C078DE1A2B0A049F0239B597E40C +:10FC7000129403BCBFA7AEEF7189DB578EFB0DBE9C +:10FC8000FEC3C2783F8E7697DC703B3FF5BB66A71C +:10FC9000795F3DE76C4A684896219D5BE8B916E9B3 +:10FCA000E4DA053BAD9E087BEC28ABFB7AA48F130E +:10FCB000F3773E8D7E1A369F9F93A03EE91BBE6F61 +:10FCC0000D84A771A6D629BF003C8CFBBB4140BC6C +:10FCD00044D347875D6C052FDF194FCB54BB9D483C +:10FCE000763B648CB85E8FD95234BB18D157688F7D +:10FCF00095D6AF648685EB172B0CDBD18E07787415 +:10FD0000E1F937F49C59B38BF1F11D1CA2D9C5A8B8 +:10FD1000FC638164926BC1DA96CD13FA032C053330 +:10FD2000AA916E9AAC8E9D542C64BD04E07306B605 +:10FD300017F5EC1B557EF91853E289BE8E8AB4CEB6 +:10FD40000FC6C651FBE76F87FE010E76E0DD913AE4 +:10FD50003342DED60B5CFFA830050720DE1F53CBF5 +:10FD60006970BA99DBA91046BBEB01555FA988E120 +:10FD7000F0BBB26703E27F9FEA0FA88883EFB69FCC +:10FD8000824F0343391EBA4DD4D9191FF3F656F1E9 +:10FD9000C9EDD921E037DBB11D0960CC9772C8BE2F +:10FDA000DD6167AC14547CFAEF1C80F33FD89FF000 +:10FDB00024CCB0D0FA7C76BB81CE35E7569CC8DB2C +:10FDC000AC607D36743F966B3453B9C7A2E8F6B188 +:10FDD0000E3C85AC489F1ED4C700FE486EB547DA7E +:10FDE0009D3F727F66473EF7618D1834C575CF7FA2 +:10FDF000666FFEFC9F6C28A46E539B88E98A8F6710 +:10FE0000A33F6076F97773E87B8519CFC261BEC6E0 +:10FE10004C7828E530C8AF0F0A5DFB10BF1DF83CD9 +:10FE200069E8D66E4BF8B41B081F9A9FEB8593E9DF +:10FE3000444F489FC45F4ED9547C078206805F6858 +:10FE4000CC72E0B9B0039F0F99293FBCDFFDB1D35D +:10FE500023F6E90B12C7CF0B88B7F888EF1DF657CA +:10FE60003FE9B11ADEEA658725126F1F0EF3BC85E4 +:10FE7000FB78A56DB8A515BE97C7171C453BD87D67 +:10FE8000133C7F2E247DE75C319E0FAB599C03E928 +:10FE9000FB8CB1E508DAA5D88A9F269797C634551A +:10FEA00009C007BE68DAB90F531807E185EDE57C94 +:10FEB000FB8C1C8CC3F1780C0113E1732EF3EE0460 +:10FEC000BD6509037824E997DEB5D0CFD2A7A2D7C4 +:10FED00005A606E7E1A5F83FA88740F9B149588F84 +:10FEE000290FCBF8DD142E4FE7683FE981507E19CA +:10FEF000EA634B13F6DF3316BE2FB1D92C2B123B1E +:10FF0000AFF392C6B52D7D8776FEDE791C51FC2AB3 +:10FF10002076470F2A1F0FC621BF0EF3F520D9C741 +:10FF20003BF3752817B1CE67D4753E13B5CE673A4B +:10FF3000D699B7A39D2756ABFD1BD5FECF044E64C3 +:10FF4000A27E714EB3FF8174423D76E96F7B6F47AD +:10FF50007A5CADF2F7A53D0279B81EE9A23EFE40FB +:10FF60004B975A026B904E6597BC6C6D5AD89EB8F1 +:10FF7000D41D30A1FCB428FCFB3ED5EEB184F9D7EA +:10FF800020DE533DFCFB523763A313F977E4CF5ACD +:10FF90003B4B0CFE4C5C476D1C9DFA8DC2FBC009AF +:10FFA000FC9CB35AF367D8B99E80FC14F13670B349 +:10FFB0004957FE9CDD7423BAB807F9F5DFB5F6475B +:10FFC0004C1054FB53C47A67758F87316AF9679E6A +:10FFD000E9282F7E2FF27A8A46970AD7338C38BECB +:10FFE000F7D4F131767306E89D4B710F6587F1B454 +:10FFF000CFE9C948B4911C21BEBD2F01E05CD49F5C +:020000024000BC +:1000000079FF1ADC81EF28FA5EF95E1EE9BFFBEA90 +:100010002401FD9C8B2670FB6D93C1417AB00FCEFD +:10002000CD3B615FD4D9F37AB6DAD08EE1BA0FFD59 +:1000300085D1F3FAACD6E59A1FF17DE166A705E913 +:1000400066D116A7656E847DBBFEA9C79B15E40724 +:100050002E4BC800B4542FF9EFB92C09BF8B01D82F +:1000600011908EB020BECFD89ADFC0720BB7240C8F +:10007000C7F396567FD1E622D7FC887518FC947E8C +:100080005D8604F4F0B0FD7AF8A6098CDBA77F66E4 +:100090003D67500F8F38AA879F1F1D12BFC77396E9 +:1000A000CDE0B70898AE3421CC7CF1A1FED0DFA81A +:1000B000775799502E7ECED8D7782E3FB96F6D1EC8 +:1000C0009E1F4EB3C09FA7C23A2C6CDA6892145C94 +:1000D000576FF110C47B8125B4D381F3EDC437D6BB +:1000E0005442BB4BBCC057615D16FBF5F99DF94C02 +:1000F0009D6A07643991F4154D07A7999FECB315D4 +:100100003553EEFB24C2FF3526B091E2401697EA44 +:10011000E7BB549218F2BFEEF89A14D7528C7CAD1C +:10012000ED2E81AD27FA95C7D7003C6F9381AD279F +:10013000FF8D7CC76A80E7BB63C85F73594D213B65 +:1001400081FEFD0D371D417B4899C8FDFFF26839DE +:10015000EF57002FB008743E59197BC71AB43B946F +:10016000C3FCD10FB4581DF7654DDB441CE7DC55CB +:10017000E6F03E84FFE66F881ADFA6887CD847E564 +:100180005BF4E597ECF8DE1C096BF359A08E4FF495 +:100190004D237DE632D51EF509160139737AB8BBB9 +:1001A000114D5A976DCAE7F9123F4F5532CFAD3214 +:1001B000F0A74A8BE756D55E2E4F84F247E15C8963 +:1001C000F8B9B0399EECB017B01D84B7703B6B39ED +:1001D0006BA07372650FFEBDF27702D9D52BC532C5 +:1001E000924795CB998CE774A40F57C478911E223F +:1001F00061D6A0F92D82546F899771FF18AC9B2BA3 +:1002000022CE09F24D27A19F2A9F107818DAAD0C53 +:1002100044B5C35AC85E52CDB85DA27AFFF7667D79 +:10022000BE9FE8EC3123F71F801A43E7A9C7965C0D +:100230001783FC0AF80F3F974DE7FCECC7FCE99BDE +:100240009C7CDE9B16F7A7735D3AF248C4DF7D3CC9 +:100250009E60BEE14D3AB7CD4FE77830AAE7AAF7E6 +:10026000712869687E6F26FFC4260156C149FE7356 +:100270009F95DABB84DAAB51F57436CBD48DDCDDD7 +:100280001BA473C0FD42C73901F7EF751B7BEAFD64 +:10029000E777AB7120926B8085F207917DA7430FC2 +:1002A0004B66D17A5872A47CBECEC8DCC897AFDB4F +:1002B000A697CFD709F09DEB61C9917EF01FFBAEE9 +:1002C0009DBBA68DF4988A22EC6F9B12FC5619EB0D +:1002D00095FF34BFDA4EF55C14DA68A5F17F22B8D9 +:1002E0008F1810EF31EEF55720DE1FC8CE467A4C3E +:1002F00029E2F22CAFC03540E6E51D840F173F57C9 +:100300007F82762CC0FFFC6CD78065B9588EEB2FAE +:100310001F39B93C8A1DA9C6EFA9EDF42932E8526C +:100320003681DBF53EB172BA9BCDDCC588DA9D0A19 +:10033000B4938B711FEE3F5E1E319E0EBF1453C8E7 +:100340002F35486D77BE4170A1DE32FF5E33ED235D +:100350002679FA223CFB780EADD727AA7CD4E80791 +:10036000D447A2C7EBFE943C1CE321343EFAE3746D +:10037000ACFACB161BD5F33FA7B34DD70E20BA4B23 +:10038000089FFF393DFFDACEDB292A4843FB11C61F +:1003900079FC1DCB1775C479905ED6BD5E08F4A4B8 +:1003A000D30B395D74D60BFFCBE8EEEA1FA23BA856 +:1003B0003FEA87FC9195CFEFDEE783712EF9EDFDE3 +:1003C000710CCA9D921A521C781EDDB93ACE05E90D +:1003D00049C91787ED9DF28B25FE2EF4AB4DEA7AC5 +:1003E000A3DF4B4809FBCBBF78E61F6B7E09EBF21E +:1003F000B5C0422837AA1ABF5DF34BC0F311D043F2 +:10040000307EEDA4D45A8C72667199CD5BE740FEC4 +:10041000A6F7432D79F2FE14C54EE3CC30A412BFEB +:10042000A4B8B7AA1D4607DA3DABDE111D4826D594 +:100430002CB406C7175DBF3A7082CE29B281857A87 +:100440008DED9C8F861DB4875637DEF525DAC9AB56 +:100450001B4FBD8FE7CAEA28FF57B9EA2F8CF683F6 +:10046000D517A97EB04BD9A5A84F027EC83FE78318 +:1004700071F5E7CB4F745DFFF493CFBE00E338F521 +:100480007E4F27483E7666C76B71426ED81FA6F92D +:100490000DCF04FAC67BBAC0AF969E53FD26E1F598 +:1004A000E3FC5FD90F03EC0960134F2B8CC1383C80 +:1004B0005F556C333A608559C5EEC79F7818E9FEE1 +:1004C0003DB303E3872B765F30219FAD105C21C1E4 +:1004D00049D3891322E21C96EEFEB4F8113C6FA4B6 +:1004E00089AC14D66DC9EFBEE2E55D2C6485F24B94 +:1004F000F7B415FF0A618FCD6BE962DD0A03874C03 +:10050000ADB62ED62DD0564CF6DAA7BFA17539F56B +:10051000A2C07A6675AE5FBEF3349D27E1BC14922B +:1005200051EE05C432537C57EB179CF6C248CAA75C +:10053000F8A91F5BC779454CA5773BC3B8DCF2F738 +:10054000CDFE525CDF7B9613DD7F2E7939DD3FBA1D +:100550003A05F5E172A32F45A6947F2FDF7A8B4AE7 +:100560008FAE3403F95B7D6938AF055BAEA6792D9C +:10057000641EA2C3F247795CE657700EDCD3C57ADD +:100580005A8AF97E31B39B86E2FEF80A5A42BDE6EA +:100590007313976FBEB7F8B9D4CCB67F84E7EFAFCB +:1005A0005A9205947FE29B460BE2E5E68309649745 +:1005B000F950E5D7856F7E558CFBEAE62CC96B9622 +:1005C00069DE3E154FC2F7DC3EA6485AFC6636B6D9 +:1005D000DB6EBA01CAFF0DCFDF0E5D79C2D3E7DB58 +:1005E000CD31C2304853F8F906FEDE62481FBC2DFB +:1005F00056B5E222DFC74C69C7F95FAACEA7FAA9B0 +:10060000CF8B1FC6FD36D7E68D07FCFCED9D13266C +:10061000F4EFF8920CAC3F8EABE5538299235989E5 +:100620004F0DE3A37ABF990523F7ED8E4FA3F6ADE7 +:100630003E1FE404E1AD9AC5533CE5E7A69009F9F5 +:10064000810FFAC573D342D0378311FBB47AC54901 +:10065000951E4CE1EF59E17DA7F9AD17A9FB3C7A56 +:10066000BDA2F7BDA158BFEFB5FA6C4BD7FED5F0D0 +:100670003EF7119E2A8CCC27E3FE79CF4CF2A9627B +:1006800023DF8F0CF8647FA0F7131B5E4A190378F1 +:100690003A1D30269552AF7ABE5ABEF7D3236BA1CE +:1006A0007C7AAAC8ACC457BF31E1393FB59085CC3C +:1006B000A81797FB0536A48B7D09DFBBDC97E5EC1B +:1006C000FF2F3F651BBE447B5D18EFFA7DB8A81B6A +:1006D0007E3A04F11A1BC6EB572C377E2C66CA658E +:1006E0007DC85F11855F0DAFD17CF1D522A54BBED2 +:1006F000087F7F66117864ACF5C85AC0DBD76A1CE6 +:1007000046D58E6F495E015A43E807AEF27F49F045 +:100710006A9457041FBA0AE3703BCF5B8FCFE8FCA3 +:1007200090CA77DCBFE7F7032A9A048A4F857A7468 +:10073000EEAA467F14956E3892911409FBA3E0400F +:1007400054795714EC8E2AEF8982BDBAF215FB5FFB +:1007500032F1CB21415D3973CD143A7775D617FC50 +:1007600084D7EAC62F4D3EA48F5E2113F23DE34AA3 +:10077000E6B3A3FE755024FDEBBC128A43BD64B5FD +:1007800095EB8BE765154ED0607663198CE3BC6FF3 +:10079000A8ECC37A566E173FEF0EC5A9F66FD2BF0D +:1007A000EA55FD4B54F5AF0E7B861ACF7C3E9597EC +:1007B000D7BEB73589710AB4DFEAE776B6CEE3AFC4 +:1007C000A7756855ED7045E277CFE2B9B1DDD7CFB7 +:1007D000807698F6555F7158CA4964E411E2FAE7E9 +:1007E00027BE89296833FC94B9FF3C16D7CDE73280 +:1007F000617CCF3CBEC4ACFCD5FA38B42B88F691F2 +:100800004730CE61211010DA1BE66F88D267983B23 +:100810003E8876874DFAF81B8C93C1FDB708E376C6 +:10082000643C1FEBF397349DA67DB4246A1F795472 +:10083000FF45F43E7A40DB474EE6C47D5424DA2877 +:10084000BEE6FC511E17DDBECAC8D6E07C7709148F +:10085000F7DCDEC4F5E7F6FD1C663E358E4DDDCFD8 +:100860001AFECEE03E1BD8BD7E72E6B9BFE461DC65 +:1008700044C5BE0F863E02E9997DEF0D3880F0F346 +:10088000FF91F901EB5CBEF0C56FE7D0B85E343381 +:100890001CD7F9175FC944BDE2FC0B668AB739BFA4 +:1008A000D24C7ABCEF453BDDA338DF9B9F17EA0FA4 +:1008B0007E33B495E4D22A5A9F43C5264ADB9BFE79 +:1008C000F1119E17DB9BCC0ACEA3FAC558DA6FD57F +:1008D0002F58C98F7CFEE0377991F75DFE5FE7A363 +:1008E000C59B9C077ADC8B749DC0FD06D507C63C72 +:1008F0005E877683C643A679905FF8877F0E45BEF4 +:100900007B7EEF2113F2E573C6D6AD485FC78ECC70 +:100910007CDC3806ED9DD0583AE811AFDC370FF794 +:100920005567BC703C9C073CE0BC002FE5A887776E +:10093000878F13FF6DF1F1E51CCEFF2E6562562403 +:100940005E0417FF6E273B1ECC9F7F7FF19BA1C8E3 +:100950009F7E6CBEC24413EDEBFF2DF3EDF3DF760B +:10096000BE9CDE9F2C56B85E1A45F79DE9FAF95BEE +:10097000097ED6EEA0F1FEC4FD7EC5C4FF5DF47D08 +:10098000C3FFD8F57E555D6FBB8CE795F307FF99E4 +:10099000C97EC6BC57FC0F9DB7A6E717888EA34E2D +:1009A00028FF1A0BBCE3C822ED83F48E7A1B8FBBA1 +:1009B0007E25356BBBC8FD4C74BE2A54CF574FAB58 +:1009C000F1AEF56CF8AA00EE07D0277692FD7EF81E +:1009D000E137B19E671CE90966C6E9EA2B8BFD0980 +:1009E000B4A74DE8354F5A8EE72B0F3F7F017C7837 +:1009F0000FEAEB979965845FAA83F100FC92DD20F2 +:100A0000D777218F3BE4B2E5F559E8579E60D39F35 +:100A1000BBA6449D9F2629FAFC12B63709ED7B251B +:100A2000B946062710568CE523CE956B27CA34AFFE +:100A300049AC61956CFB4978A2F3EE2BB2A2E2C9F6 +:100A400015F4035CACF45B86F37F17F1340ACB2F0B +:100A500063E8B7F2BD23AAF120065AAF572C973F9F +:100A6000B13E12BFF87F0ACE6FCA61C4C311507085 +:100A7000505F2FEC3595E0D4420BE9FD1283F33043 +:100A80009FA7EEFC2C51D390229E93389E0B08AF6B +:100A90009EC37B605C2F8D3153BC6B447D9A777D08 +:100AA000AF1116C5F6EFC7EFAE6EF0DB4B724AB86A +:100AB000AF2E57F5FA095202877BB5886EDA6F7E42 +:100AC000C263E1DF1C12EA1FF9B60489DFB30DCD62 +:100AD000417B96688873A07D023DFC785FAE1EEF77 +:100AE000F738197B5EF27C3A91EE8DC8AC00F1517B +:100AF000C002682F169A5EF956207FBCD7E026FF09 +:100B0000EE91E3080FB4D882689F615BA4331D7A2D +:100B100031FA4194DEE1FB3919B0CACD56DA1F3102 +:100B2000FD4CA4AF0EC97115E0FAC6C0FA66C33C0D +:100B3000F39BAD2E359FE27334BCDEA9C6E3D4C36C +:100B4000FE0F62BCDF77F01DD68DEE2EF7C576580E +:100B500047BBD84E41543BAB6B2D2C680EB7A3D589 +:100B600097B0BED8B97E21D61F19AEBFB656A67EA5 +:100B7000A3EB1BBBE97F4254FF77D5A6AAFDF3F98F +:100B8000FADEE571175A3BA66EDA298A1A8704FC49 +:100B900025D2FE113D1E7337F3298E6AC79414F3D4 +:100BA00083ED58BA696762D4BC2CBD127FB09DD862 +:100BB0006EDA6152436A649C5B743D9B8A0F8D7E42 +:100BC000B572B6DC745D7F4C0EE463BB65C0F49116 +:100BD0003EA7D982F99A7F6325D0716FC943F2C4C9 +:100BE00094C364F45F94DDF77C3EC2658B80969D70 +:100BF000B87F5A042CDF0B7476CC37B14681CACB50 +:100C00004CAE87FCB2F8202F3F0FDA4BE0FD22BF3D +:100C1000E9876936863307A87ECC047E4F0F180714 +:100C2000CD33BB3F1F8F91C999788FA54FA17CEB26 +:100C3000713C0FAFB692FFABB4809F97B5793D5032 +:100C4000C2ED7D5A3A7892C2F99FE019847898B63D +:100C50006A109DC7EBADEECAE7506EEC8EA5F8F3B7 +:100C6000B235374C1D85E37BB607BD03F0C5B43DF7 +:100C7000748F69EEAA6B6F7917BE7B9EB2D2F72B89 +:100C80002779E69440BB5F08CA9CE7E0C3DCAB5F12 +:100C900032E13D8469813DE7D07E3DEDAA588AD39B +:100CA0009EC6026F60FC00BB4AA4F6DB9EB59B307B +:100CB0003E7D6AE04B09ED0B53C70914B6DB669520 +:100CC000336FCA25BF32C5452C2951E59A95FB479C +:100CD000CAD6F41E900DDFA7AAE7FD6839F44809CB +:100CE000E7EF7DEA1DA9787F262458E5ED23C3E5CB +:100CF000B11D6C775B098F9FB8454D35B84F21F713 +:100D0000CFCC5F676EEB1B87A9313810D2A42905C1 +:100D1000B7E13C4BB359F1E6911447C7B6D37841DC +:100D200024603F1BB314B46378981AFFB4218BE49A +:100D30004A5BBEC3940670DBC62C19EFDFC4E6BA6B +:100D40008EE0BA2F6C1014944F6DF99C7E43767E22 +:100D5000AFF92359CEC4F21FA5F6957DC09AFB8842 +:100D600087FA91BFCEC9FD757F99E4B91BC7A1D1A0 +:100D7000F325EA3E602C9083F6AEBBAE83FD87F48C +:100D80002E39E2505F1A6575DF4BE52D8E7B2E857F +:100D90007E1EBE476468F76E2FE174D0470CF6A341 +:100DA000B87399D3D95663EB626C6FBA9A5F9A287D +:100DB000E7D9387D31ECBFCD280FC0F9B5ADB61AF3 +:100DC000F04E5AE94A4E6F774A01A267BF4B31F89D +:100DD000803EABD4FAB3EB24F73618472F0B93ECD5 +:100DE00089B00E533CB7E078A606EA3E42FBC93C08 +:100DF000346662BA61A309F5B13EF59A7FAC6542EB +:100E00000F68EFE4CE2CDDFDF1A9530A9E29895C21 +:100E1000A7ABBE74525C96AC18E2D390FE5DC5C918 +:100E200049982ACB50AEC2BA05B0BF22B189F66F3D +:100E30007B0DF032185F3B6BE1702AF77FC3FE2415 +:100E4000D8349FC7D5F7B2E8F76F86BAFFA47E1CE7 +:100E50007EA296BFA1F014F07F4C9F013E2EC1DE12 +:100E6000DC05FC18E1676B154A03B539F47D6FADFD +:100E700083E0C6DAD104EFAB7511BCBFB684D217DC +:100E80006ADDF47D8E12ACA3FB791626635C5C6F81 +:100E900029407CA3131F18C4FDB5DA3A1AD7E51B05 +:100EA00050CFD0D6AF48CC8D4779DDCE9478B90BF2 +:100EB0007F8296FEBBE6D18F717AC8047CD78D09FC +:100EC000C3885FC45F3FC6E79962E1FC339B717CD6 +:100ED000CBC083315E2C437219882E3D4CC1FA265B +:100EE000E6E67C1EB75A1AAE8F42F6A95E1EE6AD44 +:100EF000E378E2EB3781F7A7E185A9ED6CAD640AF1 +:100F0000DDD3905A07E13E2912CFDC7D297C6F2F7B +:100F10003738D0BFD6CE5A773F4FB08DE2B8334D79 +:100F2000ECDC2B23491B52C44CD4671CA966E4B7E4 +:100F3000779464A19E737DB9C0A408797183D74A60 +:100F400077AA35F8C69A041DDCE6F48893F05CB6FF +:100F5000A2EDD1FF80F6E7DCF1C5D9450A8D63E744 +:100F600083D8EF8A1807DE736A87B248BFEDAB8C6F +:100F7000E457C63FBCC7ACDD7F2EBBFD1213DE13AA +:100F80006A73591C828CEF8228C5A351EE1B18C5C9 +:100F900021BD8FEB09F8FF505D4F6BC33714E7D2CB +:100FA000A6C6C1B07545AE483DAAF7A46CE2AF1F16 +:100FB000FDF21F3CDED76891D10ED9569E4876517E +:100FC000A6DEDFD6FA9FEB8B6D43BD6CEE2A91DF78 +:100FD000A38E6A8F39B8BEF731EA7B24D740CF435E +:100FE0007911E47ADEC7B7A7F8D00FF1F14D710E91 +:100FF000BC01E759D7D3B708E00D4E9343447B7843 +:10100000135B83764DA0653AAF309F51AFF7B5F6CD +:101010004A403BA5762F3B76A49FF47D202B19E513 +:10102000EEDC9C6686FC93350832FA2DE723FE122F +:10103000918FABEFE3489E4157611CFB2491E67D05 +:1010400055894474B2B384516A650EB25FCEDF2015 +:10105000D0BB45F31B9CA685117266AEFA7D5E8EF1 +:101060008152EDFB04B5BDF475658B517EA7637E9F +:101070002EA673E9BE4FFAACC9922084CB8F9F2471 +:10108000A9FD331EC7814C0AFE5D9FC3CF797367EC +:101090005DB7837450A698905EB5FEE6E60C5F835C +:1010A000F70DE66EC8472CB1074C3CCEF881B8E28C +:1010B0009DC84A4B26F1F968ED56A8720F1062C21E +:1010C000788093789385F808B7532F79F637E467DB +:1010D0005EF28199E4F992615CEEB25C7FDE4CEEE7 +:1010E000B7D4F99126FCE62CF93FCEC2F992FC86E2 +:1010F0008D274C74DF01F621F2DFEA46B1CD1CD713 +:10110000D99F71F8D90FE2BAF4233572FFF78FF93E +:1011100091B47BB3D5BFE77E100D8FD5C245F2B732 +:10112000561F5C9DE2E9421F40FF654D62677FD21A +:101130004FF53B45DBC97F3549EF6FD2FC78DDF1D8 +:1011400057CDDFA4C1E53543FBA25F62494D5E5F29 +:10115000F45354D58CA754CB3FABDE8BD5E0CA6E8D +:10116000EEC58E3715DC85FC44BB0F5B5E33586DD6 +:101170007704B5F786AA072992128FF4D3EEEF1FF2 +:10118000CF7E609CD59B61323DD08FA1C4A3DF5A36 +:101190007BC7E3FC2E91DF6BD835643BD2EFE2A630 +:1011A000FB4C06F8FEF624AE979D8DF2A355ED3A62 +:1011B000417EED4AD642EB08EBCB2C917E558CDB81 +:1011C000EDD1795C4B7F63F7227D2F0E08AE9D2811 +:1011D000B72C01B2F3B5EFBAC1E88B58EFDFAAF430 +:1011E0001D3DEE1DA8D72687BFE338711C4BCD816E +:1011F00073EFE34EF96D2CC622E1BABF81710EA7E1 +:10120000B78C70A01EB438B0A78AF4875DB132DA0B +:101210000FBF888A4F3EA0F6776012D70F4FABFE04 +:10122000F6D3CF8AC49F71BCB8CFBF10F4EF801C37 +:1012300052F7F721154F3327F1FDA8955F1CD848C9 +:101240007AE3B9C629FDF11DB2F3FBDF8EEB07DFB0 +:101250005F53EB9D6F8C2D417C9C6F7CA4F800EE5E +:10126000B7407E12EE4FADFDE393F8BB52679B781B +:101270007C0DF3F3F8C14AC4EF88C871F6A0F79D5E +:10128000B47ADA7DCDD38DBF8B33E486D7AFDAE283 +:101290003D9A6D08BFC765367A7C683733EECF0F4D +:1012A000A29E4EFB1FDA5F9BE375E339402B67B2CA +:1012B000B8E8BC52B57F3ABDDBA5F98D963D67A471 +:1012C00078C939C3946BAE47FEF09A91F0BF6C10A9 +:1012D0000BA25DEE428D7D1BAEEBB2ACD6D73D00CE +:1012E0002F5F8C8C0CCA8F50F94F6AEB288C83AA25 +:1012F0005827D03B2F35CCB5F208B6A3BECFD49635 +:10130000E5F813CA91D0EB5C0FAFF08BCC3382F8C9 +:10131000CA003CFFB1D1C101B85F3237F37762FE3A +:1013200035899F7F3E32F178EC8A6C7E9FA68F1ABA +:101330009F5591C8EFDF9CD1EEE7CC080EC078B185 +:101340008ABD69142F7646BB6F03DF519FAA18CE62 +:10135000EFDD6878ADF865F300A4B78AB9811CCCDD +:101360006FCB92CF515CDE737686E702C3F3761EB5 +:101370001FFAA4753BBFF7EF7F13F58BFABA5E0235 +:10138000C623F498CCC7B7154539EA1D3BAC1DF10F +:10139000EE5DDD1F5A6C6AE0F785041E1FA6C1DAF8 +:1013A000FC10C6F99D51E979718C0AABF3581CD732 +:1013B00040E36F33327E4FEA697E0FE58BB496AF20 +:1013C00071DC5F3C3D08DFEA8279F817EEA77CD03C +:1013D000FF71FFD81A4CF8EECA92424B08E5F3921F +:1013E000679EFC1AE5C1A94745BA73507FFBAE3C26 +:1013F0001ED7C70C860C8C9F7D228FF6B1C40CA81B +:10140000779F32FA29FF9455A673C2A9647E8FEAAA +:10141000D4AB3DA8BF534243268ECBA3C5D3ED7CAE +:101420002813F17A6AE793C5E8577FACC042F7BA50 +:10143000A3F9D7921DFAF8E0B62CFD7B2D2327F3F4 +:101440007D3852C5F3E8C9DCEE55191B78209BE6C0 +:10145000C9F70BAC17BFCFC3FC698F24615C537F06 +:1014600001F9441F71BB09E39B42F9167ABF64C9B5 +:10147000AEFB4D2E3ECF901DF68570C7668A73A8D1 +:101480002F635E9C27EE037C5FEB4280BFDF702101 +:1014900030221EE7B1C4E0BC92E27BDFE84F6F7AF6 +:1014A00000FED5FBE9FE279E87FAA7B6F6E0EF3BE4 +:1014B00004FDB77E807831280AE2B934D17F2BC68B +:1014C0006587EE1EC6B643FEA944158F890AF351FF +:1014D0003C969FF05CD993DB072AD7FEE66BDC577E +:1014E0002C4394FB7781AFEEF0167D1F66F564CE3A +:1014F0008F2A36F377BE2ACD1C4F4B9F10280E65DE +:10150000E91A6E5767CF08F47EE2726B306E2CC01A +:10151000CB778A0EDCCF4B4D8101C9303FAFDA0E5D +:1015200094F720BFD2DA5B6E0D2CC4F696EFB6129C +:101530009FF74E4E52E3DAEE4B413DBB7379474F76 +:10154000D91659EEF1B8C8F837AD5CC7FC02A08FC8 +:101550000CC5B8ED965B3F802A7FDB65A571C1891C +:1015600086EEB346CFFFB411C63312EFFB5B19F220 +:10157000CDCF813FFAF0BD8504D7AF29CEEA4D919A +:10158000EDE4F3F6A09C5AE4D7D7AFECE188C7FDB1 +:101590005BF9A74209EBDF32D948E3AC5C3B96D656 +:1015A0009DFDC948F7D4A3D761965AAE633FEE8E2E +:1015B000253A3C8D97F0713CCF0E2479D396E037D5 +:1015C000215D850EB1D0F6041A6F26EADBA7770FEE +:1015D00074223D2DA901BD3C0EC71BC89423BE77C4 +:1015E000D05910586B1EC6F131B28369FD2FB56C0E +:1015F00068413D08EF1DE40DA73468EEE2DE406966 +:10160000223FEFFF7132D72F30761EE363E8BE0B27 +:10161000F1B58009F9B6B67F2B7645DF3BE0F9CF0F +:1016200068F5411548D2EE3B18709C0113BECB18EB +:101630001298B217E876E9AA9B16E3FDBDA5DE8DE8 +:10164000D7A37EB65462252618579B20D238DAAC31 +:10165000ECC619282F22FBC9E6A99C129E67A3DAC3 +:10166000DFFEC95C6E55A02484762A56091BB05D46 +:101670008D5F90C13EA21EC6DBA31C69CB57F3BB96 +:1016800099AF86DFE8F96AF83D3699EB0F6D59CAD4 +:10169000AFC72585EFB5B67F37223EF107CEE7B855 +:1016A0001F3BE2FF613FBE3799513B5B55FEB514CE +:1016B000C687E31CB0457FEF2367871EBE64971E75 +:1016C000CE6DD4C3439BF4B0E3B01E3EA4F68BF6BC +:1016D000027C1703ED0598A2BD4031737B01C268FF +:1016E0002FC014ED05F81DED0508A3BD0061B4176A +:1016F00020ACE11BED0608A3DD00F313A718F4F7F7 +:10170000ED7EE0FE25FA35C2F72B7DC4FF5E9065C5 +:1017100007F2BFB17DD47DA4BE8BA7DD1F7EA13CA7 +:1017200097DF0B10B91F2C742AA6CBFB97DA7DFA32 +:10173000E8FB979F092D6BD284CEF72F3F1CE6F96B +:101740007E7232A7479CD7657DFD23308EBE6DF536 +:101750002B03F05DBB56C1CEF09CB46798479A024C +:1017600078ACDAFCE51CD49BAA63827370FD5AEB5B +:10177000943F5DA1E93359F80E13B3209D6BF7ED4B +:101780004746DD97611BF4F7637EECBE4C341D6960 +:101790007AE063C6509A4C7ADBB8AD681F5826D8F9 +:1017A000E91DCD1356B612EFFDF85EE5FEB1F6A3C6 +:1017B000461EEFB341D8CE22F449658A41A78FCFA8 +:1017C000BB3882F4F10E78836060C3D09F63D08D04 +:1017D00067903F46475F839F4A8CBAE795AE2B3FA1 +:1017E0006C7FB62EBF9FC7559C8CF215CE9D282FBF +:1017F0009DC14B74E52FAC5847F1C0745F07E86199 +:10180000E68611BAFAF3DD6375E533056E2762AF3C +:101810001B69BEF3516F447973FBBA35249FB60937 +:10182000146FA0D4ACA3FB52672CDC9EA4D109D0CA +:101830009F89E26E93F8F779AA1C3A25B4648AB0BE +:10184000BE8B2F6978609C80F782B665E23DA3FD70 +:10185000459E895328FEBD753AB677F31E6322DD97 +:101860006F9082F7CC86762AF6F460754A78FD335D +:101870008DDC7EB66D342379BFAD81EBFDDB1A7A4A +:10188000C4F48BF0DBF563BE14B47BB733D682EBC4 +:101890005924E6929E7CE1A8886A3E8CBFA400EFA2 +:1018A000BF2C7BD348F794B5F1570C7F656BA20131 +:1018B000DF4562741E386368FE7A2DCA1F67604078 +:1018C00010E5CAC3DB52AE8375FF2ADE73038E7B3D +:1018D000D9EB8571186FFAD52E2345BD7DBAE9F194 +:1018E000AD781F606DC3E326B43B2E91FC268A7F42 +:1018F0007E7A9B09EF034C7C6A1B7D5FF854199D2F +:101900000F17312F9D0F4F6AEFF1A8F32C12370CF0 +:1019100048A2754B4B403A3CA8F283F218EE5F9F09 +:10192000599A6F44FBD8925D09F4EE9A326B5611C6 +:10193000D2417B2081DEDBBA55A5C7F66322EDF7E5 +:10194000F6ABF83B9DDDBD0737F36216D1EB5517BB +:1019500007D3B9E9EAE0207E3ECD0D913E07782419 +:101960003B56FBB10BA699D81EC67562BC9DA985D6 +:10197000BF3B63E0F79995592D446FCBB3801E614F +:101980007D96BFFE3687F35908EF35B9C7893A7A95 +:10199000AB9E10ABA3C7592C5177CFEF1718DC15AE +:1019A000015F55DA5757FE9AAB0647EDEFE1E17C50 +:1019B000DADF97E9F4387A0951074FD695AF6433E7 +:1019C00074F76217EFE076F9CAC604F2A3971BF822 +:1019D000FDF2591EFEBD6A7F82EA5F8FE9783F04FF +:1019E000DF7FC1F3BEEEDD10D58F5E89FFA7A0DDDE +:1019F000BE85EC47A13491F4D8CA9C56F28FA4C29C +:101A000027B47757FA00C67E5D2C847EB24A89E3FC +:101A1000D5E690B357A685E9A0AA511FEF58759453 +:101A2000E35B8B338ECE07BEBE06DF6BAA2A159C06 +:101A3000A8CF2FDDD56642BBD3559E5E5EBC67B294 +:101A400068B3DEDE541168A3715EBD3F85ECA1551D +:101A500068178A588F7F4D91B9FEA2FA6166614678 +:101A60005FD2FB9B51FFBB7094EBFDEDC71E17349B +:101A70003A62CECEF8A85C71D284728CE20A60FE23 +:101A8000E98E77F9BDE9B9DC9E164D37881F29022A +:101A90003FE9484711F90B19C7D74210BB7EE7CF82 +:101AA000C7D322FC1FC85FB45FF063DC69345E16E5 +:101AB0007A5A096F0B3D36AF5FEE3C9FAA15C729D6 +:101AC000CEFC59585F7C5F2E1A6F8B580BCD6F116F +:101AD000F0ED6002D18389DEF57D4E70A09C564604 +:101AE000B79AF03E7578DFBD4DFBACDD01BB18E762 +:101AF000E366749F15FAB3F488784F79C6456EF79C +:101B0000F805BEEF3E02F78B7E7F5D7D3185BEFF1F +:101B10007CBA6925FB6B15DA09E33AE3A30AED8683 +:101B2000719DE7A9F9A73AE483383B9EBF4BBA52AF +:101B3000272FB534DACE682955EF0B8C62A374F7E2 +:101B400005BA797F27FABE4091586A30C1BCCA5E97 +:101B500055E9708585E479BBCF48FCD0B3BA88E4F9 +:101B60009DE7550E2FBB3DA767A47DD0A3DAD534E2 +:101B700038B3AE470AE6975965BAD7525627D23BD3 +:101B8000F765504E8928B76655DF4CE4F31FDF39FF +:101B900070AB0FF0F6F16D4929F87EFA89D5C624AD +:101BA0008B122EF7F1EAA24C8C7B3AB1D13C8B7EA2 +:101BB0002FE00E0BFDCE40E5BE9EFCDD78D19632C7 +:101BC0000BE0B37B7BD0BB67C34AB91CA858FD5C54 +:101BD0001C5EA359BAFAED3C195482EB8A3C434B84 +:101BE00047A1FD6DDB13321694B70D453E3FBE9401 +:101BF00070C7CA56AFCEA4F336B429D2FEF3517CD7 +:101C0000D9CD562EA74F5A5910F5AE937BAC7E7A9C +:101C100063D35247E5CF24F37B8C1EC00DFA5FBF20 +:101C2000DA61A7F3EE19C321552EFA06A05CCF9313 +:101C30003DE34B510F3734FD02C7F585E07F225558 +:101C40000CDB792BD1CE0BA9A7AE3FDDD36A45FBC8 +:101C50006EC4FD7B4F877DBE937D77626917F65D0D +:101C60002DFF23D52FFE842AAF511FC714F5718C89 +:101C700063437D1C61D4C731457D1CBF576FD6EBD4 +:101C80006779E8274B0EDB7BFB885F3A516FF515D0 +:101C9000B01CAF8DD3D14328C75EE5F6BCE582F713 +:101CA00031F413E1BB54780EF51578E9FD75DF4A80 +:101CB000B38CEFB73E187B07BDCF5E235964336901 +:101CC00006DE4B713D2E0F814E1541DF575CB4B0DF +:101CD000C8F701F241498B840B2D69BAF24572961F +:101CE0002E7F62EA205DFE24C5A983A7E48CD195EE +:101CF0009FEAC8D7C1578E9EA42B3FDD355D07CF25 +:101D00002CB95657FE6A77992EFF9A598B75F9D7D9 +:101D10007A6ED2C1D797DFA62B7F83B74E97FF0D80 +:101D20001C5F505E34E179CA8CEF8E5928CD67CAAA +:101D3000B1D911F6817185066F57710EF7AAFBE1D3 +:101D4000F3A9AE0DA5A447B66421DDA2AD16F58FAB +:101D50006DA58A7ABF927FEF25F1EF00A7D1BBA7CF +:101D600051E5BB2B372EB6F98282718353E72F944E +:101D7000808F8DBBB479445F80A7BCFE2487C736B3 +:101D8000FF2E1BE09953CF727858F305CCFF60EA21 +:101D90002E0ECF64A48ADCF0BA7BA10FE86ADC15B2 +:101DA000D91B1CDC0E42EF01D980BFA2BDB6CA62AE +:101DB0000BF68D78D707F182EF54205E300D025D6F +:101DC00063DA0C748DE961A0EBF9C0EF8E005D63FE +:101DD0007A14CE99F8FD8F70CEC4F4189C33317DFF +:101DE00003CE9798B6C0F912D3B76A6751FA4EADD1 +:101DF00087EAFDB9B69CD2E3B55EFAFE7E6D0DA50D +:101E00001FD6FAE8FB0BA57C9FB1FD51EF437B6524 +:101E10003A7FD6AB728A35A9F16CCD2C40F86B9520 +:101E2000123EB384FD94DD9FEF25F659845EF6BC27 +:101E3000E43AC2D7B3974C7E26F57B7DBEE735FCEE +:101E4000FE6ED6CCFE23449473DE97E138CADE558D +:101E5000DF17896E779B4A1F4D535D2DC8472EB7FC +:101E60007C44F7BC9534D05EC722FC22F9CB855F59 +:101E7000C27FB04E974B2DF564BFFC96292B619F16 +:101E80001FB21FA1F2F556269B613EC245EE9F1F71 +:101E9000EFE0F113F5DFB6505CC2781C3BE45F2E37 +:101EA000F3F349FD0290704ECCE7710BE3657EAF12 +:101EB0009FFE22E29B265C6C29A47C9B49417FDE2D +:101EC000F87E6A798C7348A0FE697CF537F1FE775D +:101ED0007CDBC2DF01001A32E2782D3C1E6BBC872E +:101EE000C74F0917BDD43FC0DAF8A8FC78AC93807F +:101EF000E3F390DE5A3F88C76FC1F86EA2FAA97C5F +:101F0000FC3D255EDEE4E0F10330BE32AA8F6CD5E5 +:101F100089BFC7C1DB8F53DF6734B14627DA174C5F +:101F2000153607CA8DF1B92D696A7B144FA2958FBA +:101F300077307AE7B1DFDF79FF8800BCBF912DB839 +:101F4000495FD4F6E996FC962C6C6FCB2D166A2F60 +:101F500043DCE344FE2BB95C0CF5A59953453AAF3D +:101F60005DCCF7D8A7C27A4A49061A6FBDCB4EF6A8 +:101F70008C370F2ABDF1FDEAE9AA9EFE03F49038E2 +:101F8000F53F450FFB3AD6D74CF8E6F169B8BE3AB3 +:101F90007A7074D003E5D717013D74412F9DE92174 +:101FA00078AD8A6F6A6F7CBF307DA0DC3D64FF3303 +:101FB000F921EB87F0FE777CEBA5F1A200457C765A +:101FC000D08397AFAF70314C1F66E7FF1C7A18299A +:101FD000F1F74ACD15167A0FF5C7E8E3C6102B8E38 +:101FE0008722FB0B3CDB709F975D548E203C8FE576 +:101FF00017A37AAEE51FC2FCE4CEF99EBF858C081C +:102000006BDF4FAAED68F952D25BB12807B476B402 +:1020100072A642DE5EB8DC700BEAC9CB8B025B5065 +:102020001F2841FD00E7C7383C59E2BF9382F10405 +:10203000CE94705C3513C71D5E86FA957AFF8DD9F4 +:10204000B87EADC03FC867AFB828E9F4EDC96C03EE +:10205000BD4F4CF72DD330BE59EFAF9F9CFB39E9F4 +:10206000E393A3F4F168FDFAE6A9AA7E9DC5B2FE4A +:1020700093EF51FF6A6A72E47BD43CFEE88932D95F +:10208000C0E35E1C86E149F80EB342EF9169EF515F +:102090006BEF9F4F48D3DE3F77BD5395C4DFFD46BE +:1020A000FC94B006D20B26B300A5A5AC85D2692C52 +:1020B00044A99B399AF09DD6C35FE58D1C81FBC670 +:1020C000C0DF378F7867BE01C7F5B55D7DE73CE4BB +:1020D000A177CE9B27F0F12DBB9ADB8F9A2D5DBFA8 +:1020E0001BF02AC8D77EFD111F8CD29741FEF683C4 +:1020F000F9BE02F217E1C939750CEB152BFAF82776 +:10210000ADFE14B990493DBA97775386FEBE17E2EB +:10211000F7B5848113709D5E4BB87402DADF5F4BB4 +:10212000E869E0A9D9846977F5B5FD3025772DF9FF +:102130002BA6C8C5D45F075E93F5782D66FC5DF9C4 +:1021400089CC27A1309EC4FC944E6141C2E7541053 +:10215000D4085F8921B500BF143B6D7635745138C2 +:10216000A2B01FBDB3147EEFF600E2B54AF4FC55F1 +:102170008E78EF769B7ACE68B6BCBD8FDF0B95C8A4 +:10218000CEDB6F550BC1371B39DD573E3F95E2B3B0 +:1021900097BD2BD2EFAF9DC22102FD8EAF194BE34D +:1021A000BFA2660CA59FD7321FE2BBC2C2F178D690 +:1021B0007768A808FDDC1FEF790DFBAF3034C55DF3 +:1021C00006E3FB7CCBDBCFE2F94AA3DB0A51D9E083 +:1021D000C0FDF61A8FAF65DFBD948976E9EEE81889 +:1021E000E8F7EDA911E70B66F3A4A3DD9BED984991 +:1021F000E3D2E8B5C252AC5B4FED7CF966818BF659 +:10220000BFCC82F4FB01558CC72356598EF1F78D54 +:1022100001C67BE5D17A535E4C90F8AC09E3FEC66B +:1022200084D733C3CCDF3FCE88E5F1D1CC33E21283 +:10223000E42779235C27A7D279367797865FB40B9A +:102240008E0F0E26BF71C95191EE35BC1233741733 +:10225000F29956C0B700FAE6C4C15E5B36BE3737A6 +:10226000D17301EB33F13B11FB3DD65F603DC89E5E +:102270003DC246E7E91F89DF89E61BFF98AAC6FF32 +:102280000C6543D57BB214BFD4FE8E4871840FC653 +:10229000C651FC43BD7A5E1ACF063C380EF20B8F56 +:1022A0001A31E29CE2FBC89E91CAFDA71A3FB9828F +:1022B000B957A15F6882CB120AA28E956A604A0460 +:1022C000DFB32A314C8918476C4EA20EB63BD2754B +:1022D000E5E34767EBF2135C97E8F27B940CD7C118 +:1022E000C9EECB74E57BCE2AD0C1699EC9BAF2197A +:1022F000E53374706FEF75BAF27D6AE6EAF2B37C8B +:102300004B74F92FABF79A99CFF5564E1EF23DFE5E +:10231000D777DD325D39287018FDD819C0F0711FEC +:10232000F56FF8A5AE5DA6707B8D0FFE41FA2A4AC7 +:10233000D5DB6FC49817055C9FD6329B17E9A25076 +:10234000CE3F8C62A850D6DB71326C273F447E941E +:10235000F123F15F63A7FDCCF5F75CD2F5FA5730B6 +:10236000F2E786ED367CFD8B61FD915FA1BF2472A3 +:102370009EE82F89C40BFA4B2261F4974496477F5D +:1023800049643EFA4722F3471CD5AFFFA816FDFA71 +:102390005F7ABC206A1D42B47F5E9605F67017EB2B +:1023A00036A6554F1F4CDC40EBA6C9F5B127677424 +:1023B000B96EB3E09FFF8A755B364D95F7EABA7D3B +:1023C000C5368C7266A3DCE47CBC3B7BDACC04575C +:1023D000CD34E01F1B543EFF8DF55F1427ABE0EFBB +:1023E000166432F67F62FE45F1B51ADFE9F87D3AF0 +:1023F000FC1D0307D103AD77CD87768A5BFCC6D081 +:102400006A47B9F291A1817E0770BBD3B306DBBFE7 +:1024100031D72BA0FF3B95B9F72C4479DE3BF41163 +:10242000BE73E4BBCDCEF9391C81D1AEDC7A9B9D65 +:10243000DED1D7C6392783C74BFD7A9AEA4F77F0AA +:10244000B8A97BA7713F88DD21D37B0D65B94C8D81 +:102450007F65997386D0EFC53D386D14F9FD36DF81 +:102460008D76414022BE07CFD4778DFBBC2AD27B2C +:10247000805DFC7E9C07E373B5DF8F13D538337620 +:10248000AF95FC66DAEFC78971DC4EFF5FF8FB7130 +:10249000BBA745FA8DCBBB7B07F92D3A9784B210C9 +:1024A000F7D80F3F973CDC4F66DC6F1CB40EC4FCC2 +:1024B000FB0DBA77A71FAE5034BF317FD7F7F6A810 +:1024C000DF5BBB6580F6AE34F5FF30FE7E9B80FBA4 +:1024D00098E9F4A487D5F7BB1F56DF411EE4B7E89F +:1024E000E2C41FEE780FD94FEF210F7E4AD6E50FD9 +:1024F00009A4EADA1BB65FD1E53B8339BAFC114780 +:102500001D3AB8D518DA3320097F674264182F3E88 +:10251000AA65B4AEFEA5C75D3A784C6B89AEFEB92C +:1025200069D99CCE94D097F83B6073EAFB507CD27B +:10253000D8936E5DB90C89DFAFC8547FE7E0E7DE62 +:10254000AF807C3A2F1972F4F90939BC3D382FB9A4 +:1025500070FF6871FEFD582BFF3D5A35BE7F8EFA25 +:102560008EB6F62EF3D6DBD275FBE66FEAFE684731 +:102570000686F1D7161ED7C224C7F157B0BCA06497 +:10258000635C9E56FEBB695C1FDA3DC1F5F769547A +:102590008FFB7F1EB39F5C8CFB76CE30DEDF6C83BF +:1025A000E1C6E9B93C4E6F6F04DD9BAFE4F53F71C6 +:1025B000F3541BF79C783E3EF62BED7D5B1F9D335D +:1025C000B7C6B004A4C71B3604EE1E0845679B1AA5 +:1025D0008CFC9E8FDF88FA7C6901E8AD4EB4DF9AEF +:1025E0009FB0E1BD9D1A89EC6C7157AE5F042A1251 +:1025F000E8B5217E3EF6C2DC9C788E803D19E12F45 +:10260000A9718BD4FFA02B395FEB7C3F2658477212 +:102610000ACED3688FE9ADDEDF8881F5F3D13B1FA9 +:102620008CFC07C6064674AEDD3BF977DD27D1D6B4 +:1026300049BB6FA4DC64746F077C971A588910310A +:10264000AFBBDCDCCE71953A2F2C87FCA4483C460E +:10265000F79CDA9364039F9F128F7C4A2B1FCD4F08 +:10266000FE5DF3C890F8BDBF4C0BB71B44DF23D40D +:10267000F2D3BC9CCEB57B803659B3331CE6F768E9 +:102680003CFC3D4DFA8BB0A364A8F7681272BABE49 +:1026900037D8715F286ABFF8FB19289E60AD5D7F4F +:1026A0007F70D5957C9F0C53E917E47E9C338FDFB8 +:1026B00073C3BF22F13BFA1D9405766EC75B709B16 +:1026C000E508CAFD056922FD7ECB78974CEF54CD15 +:1026D0000596B90DED40D64C825BF35948C800B958 +:1026E000E4D3CBF345A8170AA40F93FF7D1E86BA47 +:1026F000E1EFE5AC8B2A67FB8CE4FE82E877A2343D +:102700003FDD8F9DFFAF54F5B8616C18F7AFD95618 +:10271000A2DFF22B3F9CCFB222F6836AEF6CF7FF69 +:102720008EC32B18D98FA2F5040D56D06F16E1A7D2 +:1027300001BCC6E4A07C5825D13B7AD174A6E11532 +:10274000D66FE56A3ADF703B9F16B77106E336A095 +:10275000DE19DF8536821BADF4CECD5967CB50D460 +:102760009FB57812CD5FD7CFC37CF8FB63ED4F598F +:10277000A99DF615406838EEA762E9DD8356DFEFC4 +:10278000BABC27E169D5FBFBA2D3EB8A3C5BAE0464 +:102790003AF01819F9E5EA77898E3A18C79DB666B6 +:1027A0007AF7EE67F8B5B65F1961372905792826FB +:1027B00086F335BF16E8D5AABF527D7FC87781E37F +:1027C000FF6646F6B92B4181447EF32E036E887670 +:1027D0004F065A49DF9FEF0F9B79D1C9FDC517C737 +:1027E000D2FC3DEBC6103CA08FCF80F1DFEC7A81AC +:1027F000FC14D7EC60AB63148CD3BA6614E22F7868 +:1028000025D7B706A872261A5F4E37DF37D3DC1AF2 +:102810007FB5D13E5F5627D0B96019EA0A08DFCDEF +:10282000DF11D6E00B0D2A5CC4E1E5AB05ED1E1807 +:10283000DDAB9FCBF8BDFA2754FB0CCE13539C277E +:10284000DA0D76A9F61B9C27A6384FFC8EFC096191 +:10285000E44F08237F4218F913A6C89FF0FBA7098D +:1028600085F44E33FAEB2644EC37F4D74D88D83F45 +:10287000E8AF8B84D15F17591EFD7591F9E8AF8BD6 +:10288000CC477F5D248CFEBAC8F2E8AF8B84D9E8D0 +:10289000496118FD2FAEE93A78269C232644EC774F +:1028A000F4D745B68FFE3A5D7B9E9B74F5AF07CD9E +:1028B00031B27E5F6F9DAEFC8D3582CE9F076C89F5 +:1028C000E4F0BCCD3D885EDAF2DDFFC2FDF1D7D881 +:1028D0007FDD62CC26FE4176906595310E5CEFFF80 +:1028E0000B9A32AD98008000000000001F8B08009A +:1028F00000000000000BDD7D0B7C14D5BDFF99D9D5 +:10290000DDD9DD64934C42123610E2E48541376133 +:10291000C34B50AA43021834DA4D782590C70602FB +:1029200004446FC456838D6643421209B41183A2D6 +:10293000A5B020A2554A576A2BB5D66E0029166C51 +:10294000A97D81525840B95AAF3542A9F4FE6DBDF8 +:10295000BFDFEFCC243B9BF0D0DB7BEFFFDEF8C189 +:10296000C99939731EBFF37B7C7FBFF39B931542DC +:1029700057111BC7D88A6691F9D2E12AF49663F9F8 +:102980007CA3C4CBD3DC436507639FE3CF2DFDD786 +:10299000579B189B6A61ECB5261B5D834D325DF732 +:1029A0003639E9BABF496153B3193BD09443D78351 +:1029B0004D6EBAFF8BA689743DDCA4D2F5974D45C8 +:1029C000743DD2E4A1EB5B4D6574FD6D9397DEFB26 +:1029D0007D531D5D8F36D5D3FDB79B1AE87ABCC9F0 +:1029E00047F74FC0386A2DFDE3BA76236359364660 +:1029F0003F9FC3BF517E1BCBCAE92F5FFF9C6C2852 +:102A0000E7069C86FAA3F72886E7F9C11CC3F3B151 +:102A100007DD86F2F823130DF56F38AA1ACA53BEE4 +:102A2000AA4025C626858A0CEFDDF4BEC750CEED40 +:102A3000F2BDFE015CEFD8F4E7FD781D1957B35BDA +:102A40009019BBE5C8F03A730A94A36BC6C4BB19CE +:102A5000B308E975532731E6BD3896B1218CE5B14D +:102A60005E91654219EAE2BA7983CCBF4D80F6FEE9 +:102A70009642CF2714C18324DE0F4B84F9BCC4B621 +:102A8000AE11F0BE42F7F5F7DD4C36E155AFDF5F32 +:102A90001EBC5E64FF7A3DAFCD380EC67AF365EC9E +:102AA000B7D131660DF0D30E51A8F6003FED58C5F1 +:102AB000AA4B5DB01E3B55D10ECFCB5E92F34D0AB3 +:102AC000D6AF1F5312C3D87D1E91E8A6D787160B29 +:102AD00070FCCF562BE29AF8FEF9DC31317D1BCE2B +:102AE00067BE47A0FA138A185DBFD2CB543FBC37EC +:102AF000B9F748611CD4F3FAA68CC7F68B2556EDBE +:102B000071513F3796E442FF3E41DD16C6DF8BB080 +:102B10001D9C87EFC5BD51D8DF963BF97B51FCBDAD +:102B200067B7C452BF77B60ADB4C309FC93B99BA2E +:102B300015DEBF471BEFF53B8326ECAFA695F7A745 +:102B4000B75BB3294D521CFD74AA61F50F3AC7213A +:102B5000AD04F60CAEB7D92B22DD8656C8A20F966F +:102B6000EE1E1C225CDB73EA3D48DFB72D9C8F24F0 +:102B70009BCA58063CDF53C2BCD0DE57C6C54F4B7C +:102B8000C4765E65EE6CE49F71BF36CC97C83401A5 +:102B9000DAC75F14BC7FAFE8C4F1030186003FDDF4 +:102BA00001659C8FD7CBEAD3F3199B53564374CE60 +:102BB000A9608209CAA32AB68A89F0DEF5DE1E1151 +:102BC000FBCDED0AD1559F877B72BC09CBC5167929 +:102BD0001A8EBF789A407A23CBCB56B5433BE75A3F +:102BE0002D7E5CF76926D7AFB07CFEA0895961289D +:102BF00059CCFDD53228AF586D616BA0BCE2A18BDA +:102C0000A7DA510FFDD0EEC6717E947F242F08EF16 +:102C10007937C27A00AB2DBFF7771344E8A766A3D4 +:102C20008929C0777F4AF7EF8807BAFC29E3C5D81E +:102C3000895065DE34EF260F8CE754EB0F92912E0E +:102C400035AB5F8FF5C27A9D6FFDA1C4449CBC1A61 +:102C50009B9F0CBA42A30373A907703C352926B683 +:102C60000665C7F4AA1484FE2F781DF526289F0652 +:102C7000BDA25E8BE37E95EA9DDF23C956A017EBCC +:102C8000B29C0E018F97C17F9FE378DE1C92CCA08F +:102C9000BF851DFCBE2ECF4B5B2D35D268B832F3FD +:102CA000E990AE0F603E7761D9D65F6E386E7F7D5A +:102CB0007F98BE78C9139378F67A8682E6FEDC8424 +:102CC000E3D8C3CE58707C157138AF0530AC00F135 +:102CD000AF5F4239D1F9EBD326DBEBFBA1DECD525E +:102CE000C14F900ECBCCBC9EC282B3499FD7678B9D +:102CF000B80E356F9A887FCF05946D0CCA278A3835 +:102D0000BF573417921CB21F723EAA68E6F52A7E9E +:102D1000ACFA05A8F22BA0072E5CE9C5E1B41EBFF2 +:102D200001FD8EE5D917AF273D501CB2D3FD3917F1 +:102D300053E83AF7E228BA5FEAE0FA20F453E65F94 +:102D400005ED9CF359A97C6E3FF363FF91FC59623A +:102D5000F68B8902F255F3AA2428DF71F1266AAFB7 +:102D6000EC623EB5F79571F7BE9E84FCBE7D707E29 +:102D70002F35076761FBA56E0BF1E1E5F85D880F64 +:102D8000D35BCC6749C6F9EF646E2E8F6CBF650CC0 +:102D90006355D1AC3E80737084C6A3BED0E95D0597 +:102DA000636137E2A09BEA54A073551CFC3A8CA6E1 +:102DB000A33258DF1897F6BCA4A9AED58CFC1E9898 +:102DC00082E34A6B60AC79527F5902866C4EC172C5 +:102DD000B019C7956C63329633D81101CB32F046E7 +:102DE0003B94879B55D20F662F53F07D8979687D80 +:102DF000A240C13E0ACF536D0ACD2B15E685CF47C1 +:102E000098A17D284B53F5FE583019E6730EF53B1B +:102E1000E891CD96D052064B5C218AA45F2BBF2649 +:102E200050FB0B3BB2B79AB8BC0E3D05F75F282D9F +:102E300060A5409F158F640F6583E000FDBA10D632 +:102E400009E5B22A2EF47501E89C5AC2D4A91319D7 +:102E50002B673A9D5890C15CE669E5E9255BDEEF9A +:102E600070107DA9EC2C79A4CE07E576F70A0F8EB9 +:102E7000AB5FDF795428B26897CA509E23C75FB909 +:102E800036B0EE5A05DBE3EB58217559F03EC887A2 +:102E9000C503EBB5D0C5ED0033733E3CFDC8CBBBDD +:102EA000D05EE8E33E6D6165B4BEACF714CAF9E3E9 +:102EB000A5CEFC354ABF7D796A592AD9CB49259AD6 +:102EC0003D023950402F3C07B807AFCF03EE518089 +:102ED000A57702EEC1F22E900BBC0600F7E0FDDDF7 +:102EE000807BB0FC12E01E2CFF08700F96F700EEFE +:102EF000C1EB2B807BF0FEE45B3C634BC84E77D983 +:102F00003C20D72CA7F7C967A0FFAA2689E178CE75 +:102F100015717A6C5916A5E23CB63C28F919DA57B6 +:102F2000736814D6AF908EBC6E4BEFA7C33B0DEB0E +:102F30002D5CEF05B31568675EBDDD8DF2FF42A91C +:102F4000472D198FF4744BA84FBC2EBFA0005D878E +:102F5000C9A02FA07C4D666FFED7911EA5BCBFE215 +:102F60000C6EF7AE31B1FD2C015ACB576FC571BE57 +:102F700050EABD0DDB59F06AFE81E10ADAA3780957 +:102F8000D7A76A28C80BE9A7DEB4D230FD5451C2D6 +:102F9000EDB33493DBE78F91EE548FCB4179832CE3 +:102FA000AC01111FCE8E50392547167C93F03D4E53 +:102FB0007789FD96F3B393C92D20B7234062B1EC16 +:102FC00000C6467BA9D3C79273BA1CED513F5DE49E +:102FD00003D85E6F8CA4201EA9718C9C3E14CA3548 +:102FE0005D428200AFD43AD8AAD5D04E6D77E6B60E +:102FF00055409F75DA3881FFA514B4478F0832DA3F +:10300000ABE20465EE246CE70D0BDB06EF2DF85AFE +:103010004F36C90B3C13F207CA43EDC649240FB51E +:103020007EB88EBDB4DCCC7F74DF881F23BF05550E +:1030300009C75B2BAB52822B4CAEBA04E2DFC8F25D +:10304000432526CEEFECA005C75191A5082DF938F0 +:103050007E4E87CAAFA54B0B1CF89C05C531B48EBC +:103060009C0E8F0AF2B674DECF98B0761760BB6103 +:10307000FDEAEBDE8E4606DAAB91152905ED872CCD +:10308000D3F860FE16A4FFC22C3EFFE204B7E4C0F2 +:10309000F69742FB688FE5E0347C3ECFA5B06658DA +:1030A000AF05ADF912EA0FEF5ADE8FB7235ECA45BE +:1030B0003B6D96A51150AE88E2F206E323DC580B77 +:1030C000F4487060BB80131D03E952A38DB7B62B83 +:1030D0005E5A64B8FFA805F9B99C717E5ED05A9219 +:1030E000F6048CABD6979B80EDD79AF9BC5FD6D609 +:1030F000D9ABD1B3BCFBE7D9023C2FAF4FC917D234 +:10310000FBDB7B0EF92F09EB1BE5A15CEEB2603B0C +:103110007D74DDC0E7BD480E66633F8B6C7CDE7D51 +:10312000FCD0CDFBA9EDAE915C705D6CF6A43D01C9 +:10313000F516FBDE4CF52562FB9CCEE51B7BB471DE +:10314000D8DD380E267BD3902FCE6E989B46F3EABF +:103150007EC282748C712BD3113F023F90DDD4F973 +:10316000A26A2C973FBDDF374ACCD4EE1B9A1CE9EC +:103170007621AA81CB4DEDDA5F537921C815DA4368 +:1031800089BD24E876E9727256CE42E5884B374B0A +:103190009EA053E8977BB083F5BB07B113AC94F7BF +:1031A0003F4F5B970A91EB13FD79AFB61E1548DFD1 +:1031B000B0F7B13D6CF784FEBC20987DAFABBFBECD +:1031C000DE6F45027F0FD707F9E584365FACBF821B +:1031D000EA8B9A5C3B48DE57AC33F9AD025E9F5EEA +:1031E0008D767FC58B02E1CE0F57BCFCCB3970FDCD +:1031F000D3E35BAB707E7D7E01E00F94E7C59A9DC3 +:10320000AB0D0E2ED75F9DE1FD08F563DFBA3FF6EB +:10321000BD91A8173FDC7588F4C571584B13D07564 +:10322000FEF79EB6A09ED2C7BFA0636B474622DAC8 +:10323000B3F8318863869B8FD0BAA4E528E40FB039 +:10324000523EDF85AD7CBD18AC57763CFA19354C43 +:10325000453E70BADD68B7876BB821056C30EA4F20 +:103260007DBD103860FF9B0134A19ED5D7AD22A350 +:10327000CB207791F3B16BFD3A347B304FE3B379D8 +:10328000758FD27B0B3A6A9EC67ECB7539AA35DE26 +:10329000D7E97D6EAD85E87D6E6D769B93F027A7AF +:1032A000F75DA640DE0350EFC3E5CFDC9392417695 +:1032B0003B0DED36D21B71DF620DFF2D017A23FE2F +:1032C0001B84DEC34BC3E8BD640BA7774546E0CF44 +:1032D000AFE0BCEEB5BAB741AB1FEE1C2BE1B8E6D0 +:1032E0000BAC1EFD9AF2C056CB7094B3BAF80434FE +:1032F000A3AED2749A5F9F9EADCF97592CDEE7F6AE +:1033000034926FFBE9CAE57D33606FF24BF57202D0 +:103310002FEBEF95337528CA3BF3A532B4EBFDFDD7 +:10332000C427C879806F4BB99ED1F58BFEFCCCBD0C +:1033300035DF04279B9DB173BE5E0EEDED86E7671A +:10334000A6B8D390AF75FCC61283C45F55D7807FF3 +:103350008C7634DAABE03886472B096817BE5ACA38 +:10336000717E5696721DDE8F1501FF024933C08CA7 +:103370004C1C83FC066B3DE6D276EADB518151F5AD +:1033800097C17F59CB439FE038514D603B788D0109 +:103390001A7C5DA31F9459F2987E1C1AA98722ED0E +:1033A000BBFE5E243FAFC95940FC65C9E272A4CFA1 +:1033B0001FE6EBC7F9EBF385F19663BD6F27F0F2DB +:1033C0005DDAFCCFA4AB0522EAEB4936791B40C994 +:1033D0006DA2B202DF839F7AC4D92C47DD2B21EE88 +:1033E000FA864B5E83FE5E964AB8BA6AB82CE37AD8 +:1033F0009E69E638FC4C398C33FFEAE777269DCB93 +:10340000736F0A93B7E55F59CF96D70A3E11E7D994 +:1034100010B3CD20475DA0B7D2F13A368DFC28F429 +:1034200025715CF7DA45E293743DBEA1C6A2DD3B8F +:10343000E1CB8D5F93C8712BFA6B885BF18AB895ED +:103440005DCB712B967769FE1CE256BCDFA5E9EBDC +:103450008A28AE5701BDD3F84E3464121ED6EFEB66 +:10346000F6F9841C8A4908D3C3601F6250BE5843D2 +:10347000267B069A3ED175264624BEE5E3D3EB7F34 +:10348000CDC2DB653192FF1901714B895403F72BD3 +:103490001B7E6311E0FA6D6DDDAEC90CA843130904 +:1034A000C7C988BF5A62DC4EECA725DEED0CC70504 +:1034B000D18E39146739931ECCC2B8536FBEDD8DDF +:1034C00078E78463CEF4141CFFC67837CAFBD704B0 +:1034D000F789065CF7D556F2F796077AB2C82F74CB +:1034E0003211F5C399F4C05FDF463E591DEDC6FEAB +:1034F0008A45D621C0BAFE7186F7F9D2F18887B520 +:10350000B8D467D02FF8AFD761A3204BD796323EFF +:103510005E491525C28B26D2ABB0ACAB56239EDCE0 +:103520006A32C44316BD61625605E31F65C937A2FE +:103530001DDA6021666CC1FFA584E34913E9C1452A +:1035400018FF08B33B6DDD85C921C4418F4E7BDC7C +:10355000077A334D601ED437EF9A4325C81FEF6FAB +:103560001D9AD08C78EAEE96910C9ED76E6D4FC363 +:10357000EBFB5BED65A8AFA7CA2553E311876C8A07 +:10358000A7F8DB3BCBB9DFBFECD7D9C477BFD6F404 +:10359000FFF27FECDB2C833D5C04F7648C9304A288 +:1035A000FD3E78B4BC694F9A0958E5429CF730EA71 +:1035B000E1BBC457E74C42FB29F877A4507D65D0A6 +:1035C000F8B17E3D8BFE14F0DDDD0F1FA5763E12B7 +:1035D0000FDF590EEF2FBFFB07B1D8CE5D1B7E3337 +:1035E000411629BE7314E9FE2761EB0E19FDBB8D50 +:1035F0005BF3D04EFC09E323D9FDED2DD3F46D64CC +:103600007CE466A9E004BEAFC74522C7F19116F776 +:103610003B53CAFD93E204CF9C72BE7EB4FE971A60 +:103620007FDD1E1E9FD2CB95FE3889B928FE29C9A1 +:103630002E8ACB126E7DDFC41AB05F1D9FE8F7FFA4 +:10364000AAD1F7FDB8AE34E4A7A53B9E4843FEFDE2 +:10365000208697BDDB7FBEE8411887B75B94198849 +:10366000ACD7CC2437BCB7D0C7F12F7380929D1450 +:1036700086B36646D33C966E1C6BB097400FEAE764 +:1036800003332B0A903FF7493EE2A877CCC145C8E7 +:1036900027EF00DEF4D17A73BBF64E97693ADEF776 +:1036A0007D4D60D902967F1093E5203C46FA90FD4F +:1036B000C4E27F06EAC78C0B04514FDDFD12E01611 +:1036C000C6E306C88F2B7E6C993E9CE32A8CAEB174 +:1036D000E5E6A034181F2CD3F0545FF9A51725C4D4 +:1036E000B9CB773E4A7805D4A43F3B1DE5F3C5032B +:1036F000C312D1CFAC198BFDE8F5EF7989D3C1CED8 +:1037000042D2CCB0F5AEC949681B0EFA3BFD37CFAB +:10371000D66D8029D5E03ADD0876F0D7DF5ADA0C8D +:10372000C2F8D5122D2E6EEE257CBD26E72DF25F58 +:10373000EF6EE5EDDD9DF3565B06CDAB64080B5BEC +:10374000FF8C9916A28FFE3ECC9BDEF315D46F0939 +:1037500021BD5699590B5C9F887EF8D910BCDFE0DB +:10376000B3CA568C232CBD7F0B9693AC36D904E399 +:103770003A14EF1D33733C999D1B908FE13A1AAFB9 +:103780000D66553C85F33ECCE97B5FB6BB0CE392FE +:10379000F709696E1F5C5B503D603F8FDAF973C1BA +:1037A0003D341EF5600C8F63DC6787F220FCAD5F53 +:1037B00017749898378CDE37755AEB898FCCCA66A8 +:1037C000D487B57F768D591346DF5A89790383AC48 +:1037D000DB4FE3A714E1F88377FFE27A1A8F09F051 +:1037E000044035F59EC9470FC03C832DF0D2CD8CE7 +:1037F0006DAADFFBE12E78AE36C72938EFEF3070C7 +:103800005860016F71D50B189FD896EF9D89ED38E0 +:103810005940E0719BA080EBF1F14FFF752CD2F580 +:10382000E311BD2790EF2DC20B4B71DF63FE4C1EE1 +:10383000FF61AED058A457D25ECD3E998F90BDB7F0 +:10384000389504B4D34141A3D3DF44A2D3AB42F0B3 +:10385000696A5F367D3D08F58E887963D02EAE9F0C +:10386000C9E5EFE014CFC299C80F8A291BDBFDD848 +:10387000723C1DDBF381389986839D1E367123AE21 +:10388000DF9416004A931913852466867227137BEA +:10389000AD68BFB5E7EFC2FAB2895045925901F45D +:1038A0003F792F0BF8C09EEC752D50BAA83E985961 +:1038B00094880639F80D5CE715B16EC419C34D9FA5 +:1038C000EC8B43FCF280E046DD5F75EEEC52A4CF5A +:1038D00089BFEDB4A39F702ADFBB12E934CCA49E4C +:1038E000F2E2BEC3B93D3601ED7B9E289BB438AAF7 +:1038F0002D99B102FE2B7B75E5DF6293E0BD8F7BD6 +:10390000479ABF0FF53E566D6E8CCB9D78F0FAFD51 +:1039100037E1B844D68B716E669BA6F6C5A7097FC2 +:1039200033D536A1BF1D7BD7B57DEF131E7229FBA2 +:103930006F4A24FBD44BE588F73F762B66F49B3E19 +:10394000EEBD188B7AACE0D57D4705C0250536471E +:10395000D0148BF52DFFD617FFC6FE8E8C88C77846 +:1039600037C934D039B985AFE7CD71463FF6E9990B +:103970001C1F3F3D93EB69B3E2267A9FF39919AE82 +:10398000A3C2A08CE334DB648CE79F73483CCE5C1D +:1039900067A538D9B95733E3D865E4E237888F0093 +:1039A000F7A415AA4FCFA4F8D4646ACF07EB6D0231 +:1039B0003E6EB1A7D17A0BA2D88BB819D68FD69705 +:1039C000C1FA22DEBEE533BE9E95F5B16EA42BACE6 +:1039D0005FEEB718FA59A1EFFC4AA0F50B60BB4F98 +:1039E0005D04F427A2BC4E4FF7BAFEEFACDBA7F69E +:1039F000D81D482FA519E4238DB107A2A00CFD8581 +:103A00002C3659B8314C3F4A36B9C58DFA3196D665 +:103A1000A7E1780CF9859F8A9EA86BD3492FFE0EEB +:103A2000E994C27A5F17A13C94F9482FFC2FD28BFE +:103A30001FE2F81B905068271D22E1DA0F6CFB365D +:103A4000BE0BED2FB51FDAF82E98E69B4C6F915FF9 +:103A5000D39B8E3A90F417F9032D5932F9E7375D6D +:103A6000C308FFF7AE8CE1FBA866A02C3E6F54DCC8 +:103A7000388E9B4C02F7DB5746D3F30FF4F9AFCCEB +:103A8000A4FEE0C747EDF986FA11AF8744AE5F5157 +:103A90007D915EAB674427C6DCB6EBA0FC1D81EDD3 +:103AA0005E33AE7F1EC0274584A3CC6E1BC67175E6 +:103AB000B96466F6578C27576DC9A47D337B97F59B +:103AC000AFBB90AF7CA3152C0F99C5E5B373550C14 +:103AD00013E2FAF992B646C08E0E73459D1260E964 +:103AE0008739C4A015F9AA6EAA1ACE5777CE62F408 +:103AF000FE4F04E6B3E17C4A241A6777899A82FB79 +:103B0000B1DD25C922E2CE1FFDE3BE930FE1FCDF4C +:103B1000B4907FDF9DCFE7D5FDD34CC2A52744FFEE +:103B2000938BF1FD390E37FA1F8F0BDEEF227F9B4F +:103B30009CBFD9580BEBF094D865437A74C788239F +:103B4000378EC3766D148FE84EE774EC5EEAA2768A +:103B5000FAD6716D0C8D63E03A8A7C1D968A7EF4EC +:103B600033004FC422EE84F5D3E8D51B8BF4BB4958 +:103B7000F317609DCA76133E857A61FB491F6BB8C7 +:103B8000EC63BFE8CB8E0BBBDFB70EBC9D2BDDFF1C +:103B9000D4EDFDCAACA4FEE7DDF16A0AE24C7BD7A6 +:103BA000CB3947B9FC2BB8CE1B9AF33B46221FC436 +:103BB00088F2336CE03A6D98BDA3671B3C8F2EB43E +:103BC000913E63BEAD3DB8EED12637E90FA4E73391 +:103BD00048DF66EE3F45AE63480CC59072480D8DD8 +:103BE0000F1F9F1E37B9C677EA498AD3B3D028B4CE +:103BF000B7BE029683F1851396E32417BE4C6E7709 +:103C00003FD5F4AE22B05E361CFD64AE77ED41B018 +:103C1000AB9350CFA4F91E8072E8DE58B730EC6A3F +:103C2000F40C97835478253A93F4CDC259301E93FF +:103C3000E8765A097F1C49191C8729E5E1FA66FDD7 +:103C400025F4CDFAFF7E7DB312C7BF618CF7E15931 +:103C50008427D5AD38FF612DDC2EEAE5A7246E1749 +:103C6000F5F74E0A7C9C39ACD782FC5A0D7A7E0857 +:103C7000E8FB2766713BCB1A23F4BDC61F551A7F9C +:103C8000D8BB3EFD23CA7D35E03AECA7AAD17A0A1B +:103C9000ED4555A385CB75C33435E27DB273FAFB90 +:103CA000CC73EAF507F0FD29DC3E552FFDF724B46F +:103CB0003B977C3F941A7F365AB33730FEA438CFF7 +:103CC0009338DF936C481ADE3CFC7713ED27659937 +:103CD0001336E37C5734678938AEC3F943A95C25B2 +:103CE000E524201F6FD5F453A3ACFA895E9FED4BFA +:103CF00045BC797DBEE7692C3F92758EF6C54EE4D2 +:103D0000F75A505F9C28FFD3081C5775C3CFC91EB4 +:103D100056EBF6F0CAF449423EAA5E7AAE8F4EC226 +:103D2000FF009D6E1B091C4D7CA5DA10FF6497DD1A +:103D30006CC371B53A4A2F8B874E36B95910F0D003 +:103D4000AAE858A247B5B9D72273BF9AE4B7FAE2F6 +:103D500004161C827940E35870EC97EFE754D34483 +:103D6000AD9F3CF2A3703F28BC9F9A8B37533F0B0B +:103D70002E4EA67E0AAF9BB1F7A5446C57A438D847 +:103D800095DA6F6BCAA1F6F5F6F4FB525F9CC0475B +:103D9000FC50D8377EAF0DF757B2CBEE6488AF57E3 +:103DA0005730B2B743556F513AEA83DF9A285FE73D +:103DB00052FDAD6F9259D00AE6A249A1EB394D9E52 +:103DC00012CCCA1EE4C38462E6F6B1FEF1245C4C58 +:103DD000A6790DB99848D7A153F9B856456F166A18 +:103DE000C2E4DD3E5B934B008F417DBD495F45B131 +:103DF000604E7839C1504E018D8E6584049F132E1C +:103E0000C888A87F5D447B6322CA7C9CE83C1BDF9A +:103E10002B30948716F1713BB4793AC6C9F9BE309C +:103E20003AC18CB476787B8E8B2369BE3117B3E8A8 +:103E3000AAAF03FEAC05FEBF9D0F95ED8BB9D587EC +:103E4000F6E090C0EA87C0355ECB7333BB05D2E79E +:103E5000F8D30572771BFE02F26A76F85BF1792BD4 +:103E6000D45F2FF7C7D1180B986BE0FE1D45768AFB +:103E7000EBDEC97A09EF7A984C725ECADC749DC594 +:103E80003C749DC3EAE9FA717368020A53A7ECCD4A +:103E9000990DE35B6EF36E49C038D508EFB3148714 +:103EA0008A88BF445EF57945DE47F8C6C705359276 +:103EB000FBC78F3F8E09DAFC19F57F3FDE87FE27AF +:103EC000CE1E1FD6BF45EB1F0C8626FFBECF330D7F +:103ED00065BE4E8E441ADF80FB03CA9F5D6B2CF3D8 +:103EE000716737DC12447AB62B5C0E4CA96382B83A +:103EF0001E17B24477785C24F2DA02FE14CA5DDF42 +:103F00007CFBE54DC5F75BD21332300E9A5D5C4504 +:103F1000F892B1668D3F8CFCDD917879F91ED08FD7 +:103F2000D9CD303E667688FDFC09FFB26755C5796C +:103F300062BE783BFAB807B4B7BF220EEDE6BF68A1 +:103F4000723970DD2F2FA73D59A522EEFBB6295CF3 +:103F50008FB5652DA0727BA248FE6ABBB282F45079 +:103F60007B6A29E57D5D69DC6B9A6CA46FD6A1FE46 +:103F7000817287CCFCD63CDC23A9B5613CAE0DE94F +:103F800008EDB4CAB5A49FCD292281BDF6DF0597FF +:103F9000A1CB3680EE8AE7ABB84E1DA0EF100777B5 +:103FA00038797DE60B2EEBC9C27115901C5E00209E +:103FB0008BFB30389F0E283F02E3B70EB28F1849B3 +:103FC000BFE89CA8FEFEE05FECB804C3736887F20C +:103FD0005C2E3824CA13BBB47CF907E59B817A9127 +:103FE000F3B3106B27BCFEFD2799A63FBC7BEF8285 +:103FF000F2A88956C247D34C8D14DFFEFE6F4DDA0E +:10400000739E37E8D6E4F1FB59EE5A1CD7A8172562 +:1040100005E9F2FD9DCC7417DA05A789C539318F02 +:104020006DED27880F7234F9D6C7397A273B85EBB7 +:10403000313A2819E63D4DB61ACAA358D8F3746C24 +:10404000CF58D6F3002F458FC87CC2D7666BF98452 +:1040500037B01B900EDF8DC8271CA5E713FAC7D118 +:10406000780B1F0E8A9897ABE713BA824BC58CDC8E +:104070007EF9FC6E934D3813966F3D72BB5F541DF5 +:104080006845FCABA2900EDB19F95B7A7B9257DC9A +:104090008BF4DE11C8A03CDD1D8173FB3E87F2CEA0 +:1040A000E73228FF7067A0346E812B4CFEFD890635 +:1040B0007D8AFB56C8D7580FC7BBE339B108F72D27 +:1040C0007698BD510983E885483B7FED4623DF455F +:1040D000B67F297DDD85BF42BDCDB33D6751EF324F +:1040E0005F4044FDD1472FB5D4D0CE87B339AE5C05 +:1040F0008F89BB3CCFA040FC023865B526C72D9AFE +:104100001C9F9AE5FD2BDA9B44A7EA3383E8991CB0 +:10411000B280F307F5F9560ED8074C9B43FD5B08B8 +:104120004086FCFC245800E8674AEC8F835EEC175D +:10413000F811E38C3ABFB7646BFC6EAAA0E7178056 +:10414000DF110F5B7C650CE3A12D5E473DE5C1BA35 +:10415000787E2A6E36209E6C758015BD0CBFD923E3 +:10416000F25BE33D6165F86789781EC99F09738C2E +:10417000FCA9F32553130CF2A35F75BECC9DCDE9CA +:104180007CA97A91EBD98FEF7A6338BE7BCD81F829 +:10419000F4A46B26E9C5DB0436285F9C6C52693DAC +:1041A0002271F0EC25DEEBE6100E9E4EF8C57B7119 +:1041B0002AE1D4F69800C5710E615C87F2D403E45D +:1041C000CFDEEEE67917C3519B4239566532FAAF1E +:1041D000C3311E0EF5E53A5EBEDDC6DF77CEE2796D +:1041E0009FB76BF9714EAF4CE5DC3AEF8D7310273A +:1041F000F97F40ED3CFD306FF7769740E343BBE439 +:10420000C9BD343D4E6A7C16D2F8EC647AA002E354 +:1042100012A7DA7F665E10C69FB7CDE171F1DB6D44 +:10422000B17C9F2967FC15E44693DF9C245A8F5488 +:10423000338746975A0FBDDE95D64DC76F208773DB +:10424000E7909EDF6D90C3C8F776DE53301FEB3DDD +:104250001AFD9AA0027DBCCB991BF9FE89E858CAC9 +:10426000D33AD96C55501E4F3EF432D1356F2CCF16 +:1042700023A09F09DCE5C2F86C4FB335AD0171E7AF +:104280004F2537E6FF1DD2EAEFC25CD6FC707E6296 +:10429000B1C83F3DAFCC5BF51E3C2F7B88EFCF878D +:1042A0001ACF3CFF02CA99D744A623CFC7F36BF3BA +:1042B0005A99BF05C673680FCF0FF016C2C39B187B +:1042C000FB95EB3ECA9F0FA98C59A1FD0EF45BB084 +:1042D000639BCD660ECB8FB6417F13E13D5BABD9BF +:1042E000EDC3F2C53CE23FBFEF315F08CA4E73D762 +:1042F000149D9F9A39BE145932E509331E6FE1FCB3 +:1043000074DD429E9F62BFE8A2F781AF5A91AFAEC3 +:104310001FEEBE6E12E0C8911B19F15361EC24B27E +:1043200077DE464141CC3AA5F14533E6EF54FBE256 +:1043300018EE6B55BB4E917EAFDE032612E65D98FC +:1043400010A279DE0EBA64553E3DE7F9D6A99C6EFF +:10435000537DCD8209E95AC3D7259BEDA1F1848A0B +:10436000F8780E8DF20918E73C09CFD1BE16C6EADF +:1043700074061406E339E42BDC8BFEF00584EEEEC4 +:104380007E3D1B6AE4F65A191724BA1EF23219E56B +:10439000429FEFB63A2E271DC8F7C8FF8D990CDF54 +:1043A000BB506F22BCD5A19C4BC0BC109760A3F83A +:1043B0003AB66B0E6B17F851405C50E9659447DBD9 +:1043C000ADC9515F7BAE99532CD89E87438569A6B2 +:1043D000B50CDB3B340BE6A90CE4D340C4FBAF685F +:1043E0007EE3A1C6C7541A5719237C3DE4FD60142F +:1043F0004E3FF2FD5722DE9FFBB16F552CC67B046A +:1044000016B04E043E539884ED98412C31D8D59186 +:10441000DED61E0DE51704733DD23FA0F5D7007E12 +:104420000ED66353EDEC19187907C637811F6C1847 +:10443000DF047DF6938FDAA8DDE7817648970E0BCF +:10444000EFC7379E2958FFA63F3F67C1B8EC75AB51 +:10445000ECB4BFF7933F3F4FF9F9CF83DDC1FAEFDB +:10446000CCC9E0DFC564ECB90EE3B4152D9F642C14 +:104470008079FD214A5D7500E99367A2B8E9AEBC79 +:104480007D5F27BFA21E84FB3278AF43C3037A79D6 +:104490005E9648B86A9EDF4F797C2356A5A78B139A +:1044A000F9FA59B07D1F5FBFD1B10107CA0DFBBD3D +:1044B00089F25114F6520F7DE7329B515E4F643FF3 +:1044C000A7B47E22D7E7649393CAD9FB9767888401 +:1044D0007FC16EC2BC77A4DF3F662FB4FB6CC6837E +:1044E0000BF64237CF662F5B011E2FDB31B22D3822 +:1044F00014AE76DFA3BB8FB27EFD7BEA4D65D71E7F +:1045000078BFFAD9288A078C5AF3E453186B3EAD6A +:10451000F5A78FC3DB6832E0C3BC6B8D7A27CBF184 +:104520008F18D4F7A1C6B171FC3B946843FD5DAF11 +:10453000CC8BAB09D39367A07F15F105CC07AFA94E +:1045400073330C78E9D4EA07B251EE4F361DD9B86F +:104550003F1BD729447AECD0EF791E441E137F8984 +:10456000793879CC196841F9F0DDC7F37CA731C1FE +:10457000C4F3DFE83B89934DF29368A79323DACF26 +:1045800069FCB58AF17F8400DE045C87D684CBF9B0 +:1045900065398D42D09287D71E15F3F11632AF6F71 +:1045A0001AAE63AD85F63926CC5534FCCF281FF6FC +:1045B000F8AAB40C8CFB797D3DB968CF16F6F99D4D +:1045C000BD95F45C94E9794EEBD6D7316EFCBD0B0A +:1045D000791922E0F6BCB9DCDE8DBE449CF57AED9B +:1045E000F91FA202CB317F2987D5D3BCD9545958A2 +:1045F0000B7AB6C2CA44CCC3AC783A71AB2F8C7F6D +:104600006F6F1524DC07B9DDD5938B74AD30052FA2 +:10461000D07B6004306E5C004A0EF3CD8E2D8ED9B7 +:104620008A7683D5768D2FCDC579F1FEA05D9E4F1C +:10463000EFED1A8FFEE6A225EA0D73E1FEAE5823D8 +:104640001F1C5C319FFCC7439ABE0A35FEE0F01880 +:10465000289FAF35911ED1E314873E7B2C17BF17DF +:104660007B67B90587C08EA505CCB283F325E70B20 +:104670001B5D43BEA7DFC33C798F60A3EFA1745CD1 +:104680006D72A57F13E5A8BAD8E2BE5541FD5E3F25 +:1046900002F35CEED0D641C7CD4CF138715D575B6B +:1046A0003C4EF4A3AF844B743FB64DC3252D765FCB +:1046B000996710FBDE769DBD2E3C4FFDFEB91C7741 +:1046C000DF3F578B8F992653DCAECDC1DC68AF221C +:1046D000FDCEC8F6AC4EA31FFA45FDAB657301BF16 +:1046E0002218D7F0EB6A81B9114FFB7E67726BFB22 +:1046F0002A9F454DE0F158EDA7350B9E4BA9FC3B99 +:104700004CF02C299E6291E57C8CAFE8F8B6589B62 +:10471000CFDB16F5EBB8DEC57319D177EA6C4FC362 +:10472000DC24B2CBF4FD5F8B16C767EA18033E7B2F +:10473000682ECFDFD3FD9153B33C4DF81E9BAA32B8 +:104740005C97DCD95AFE8B869FAF164787E1B1474D +:10475000A8BDD08B22AEEBA5F0D8FA7B0AD6613D7E +:10476000F067BA701EF168A1304EA5C23872FBED39 +:10477000F7FA89DC4F5A3FB174EFBB680752C5CBDB +:10478000FAFDAD9A7ED6E31E9D5ADC63BDA69F0B53 +:1047900025C58EB8767DEAE5FDAE487B6233071805 +:1047A000CA43B48DE735616201F9B3668FEF53E018 +:1047B000AB0393C7EC40FB0FB73F413BBA6EEAB285 +:1047C00091581E51C6BFC7B0BB8CFC56787369C1E7 +:1047D0007B50AFF3B7269ACF905B7AD9A07CDD648B +:1047E0008C3F49662F8DC3EA34B6D7398EC7717EA8 +:1047F0002E831F0DE3891EC7FDBA38573DC3BCBECB +:10480000B8E0CA20EE33C44D14DDE0F9B147270704 +:104810008F0830FEB871BD0CFDF438B34CFEA075A6 +:104820009CE8C7BC40ABAB5EC5EFD7F43C4689649F +:1048300000DA2F3A4DDF8577BACD22B62F69F11510 +:104840001A1FFAB3E3761FC4FC289F2AD277788711 +:104850008B0A6C181F5FEF1409EFAC2F5A7110F31D +:104860005DA4E6B8C548A7DFCD35111FB6BBCD2C7A +:10487000487AEB08C5A1DA656897F63143543E31B2 +:1048800097E7F7AC739DEEC882F6BA9C66C2BD226C +:104890000BD17751AD13B9FF6FFBEC5B412B3CFFA4 +:1048A000E6E40512EADB0313DFB29DA5F7F93AACA3 +:1048B000738976C28B937753FCABB36801F9B1FD72 +:1048C0007852A1E71666237CDA3959A4BCCCF5AE40 +:1048D000029689ED82C14024F7CDC9054194D70BDA +:1048E000AA8DCA166F195B8B713A9748FBEA8569E6 +:1048F000E21B4807D32491FBE3F9DB7D880BD6014B +:1049000083207C97A68A06FD22CB5186F58C4A34FB +:10491000C6BD4C5FD9A666727CDBAB059D62F30D0C +:10492000FEBE5FC5F17D6B8AAD77158E2731105CB9 +:1049300008653BF8FBDCD330C6C184D8950CF36026 +:10494000D7FF8EDB0589A93C4E5EB4D887EDFC12FB +:10495000DA1126A219E171AB2897313E65CB329668 +:10496000258C4785F9F3E688F8D495F4BC2EB7BAC0 +:104970009E6FB5D497F1EFBB558A0BB799400F12D4 +:104980008E60C16CC4AF09A95BB97C717D8634DDD2 +:104990001396A7FEEF4BBC23CAC6A3FE34CA49A494 +:1049A0005ECF9DADA661BDAB8DD75F6DBD2BE5FD27 +:1049B0007D6A4FF3236EE9C76D4A2CF2F969ED7BEE +:1049C000C4F3C76328CF40CFFF8BECA7AA2173D3D2 +:1049D000D4B0FCD213953C6F37B2DE4D75053796D7 +:1049E000C178FC59201FD0FEE60633C949B7875F5E +:1049F000A797717B1279F52BBD3D188F5BE013FCF7 +:104A0000E674BA4E5707D14FC56582BE3FE3B784FF +:104A1000D9B3B72DDE62EC572DE279105627233932 +:104A2000B23035489B4E36470EEE8B2ED6EA3F11FC +:104A3000BDF98E09E8EF817D443D71AC76A1847E9D +:104A4000F6B9CFE2C85F78343AAF8AFC4D067A24D3 +:104A500091BFA382FF5AADBDBF58E3BF288DDF28A9 +:104A6000568438F44981E25F7A7B171AE264DEDE0D +:104A70003F5687A83D563F14714C8EC0703C4B3456 +:104A800079F23A787C2694CEFDD5C511FCED635DB4 +:104A900034DEC5BF35B9F13BCCC5B657293E6303FB +:104AA000DEB04EC2EFB7DAE97D67219325DA679170 +:104AB00038B8D5E42FAC3D01F7DF2ED49AF8F7E8EB +:104AC0003896648D2E380F7317B5930A7EBB89EC28 +:104AD0003153F0BB68411B67E4B88ED5F2F8CF05BF +:104AE0001067CC5767AFCA3ECA67D7F20907F26BA7 +:104AF000D838320D652D3E6E2C57FBAC06793AF650 +:104B0000D9BE8F4CE8EFF8AC4A0BF4BFC4C7F7B17D +:104B10002FD30FB5232A9ECBEA03B6292CFE9DD1B5 +:104B20005F9F753DA1E23EB8BE4E91FD45BE377B0D +:104B300089FA14F2616E9DE73B65C4A7FC7B6A2F7E +:104B4000FAEBF9987FEF29380CE59ADFF2FCFB1AB3 +:104B50009BC347FBF8AD967F0BCF83EB93334D4F51 +:104B60009DD1F4D48974568576FBDDC7E2A4F03874 +:104B7000D9F734B9F06A71B2130F464BE1FED6AEE5 +:104B8000BA29DF43BD53855F508CC13C029381AE8F +:104B9000B56B8DFE5AE4FEBDAE670027919D3AD1FC +:104BA000C8E34B70E5FB2F0EFE1DFD95F410B03FE2 +:104BB000E51F9BB5FCC8429B711CD364E3386E753E +:104BC0000E31946728C30DF56FCFC9343CCFEAE2AC +:104BD00071E60BA0CFD6509E8D872621B17AB237D1 +:104BE00036F40C32F17C188E73F66B7485C5FD15A6 +:104BF000DAA728F4A313D1CE05A95E0C0BD1FB7163 +:104C00001A5E34D9663E691E8BF851E1796C086EE4 +:104C1000304E7407231C7352CFC729E1796D49CCFC +:104C20004BF5F4FCC114E6A7EB70CC0CCEC43CA24F +:104C30001095AF418369421154E89AC9543ACF6440 +:104C4000E73D8BCF221F6533FF71BC5F10FDD1089C +:104C5000CC4F2898AFBC64213BFBC0F2C3E03716B1 +:104C6000CC55FE62017A6EB1DEBF7C3FC86D8155C6 +:104C7000A43C73DBB1D53BF17BF65973D48FB09D67 +:104C800078FC107EFC95E3D09792934BE563C4E3E8 +:104C9000C7124903F331BE6C3F97CAC7D0FB89CC1A +:104CA000C7183147B597D3FCB83FF10B8B3F95E759 +:104CB0006FB09029D96027E2CB2F6727C03FC7F597 +:104CC000AB01BD8FF969AC5E6E5B01D716B7C4F35B +:104CD0005723F4618D2D35F800D58B7563BC2B52AD +:104CE0008E5F367B46607FEC55F044353F0371F1B3 +:104CF0004917C7413A1D74B9D2EF47D2E34A72123D +:104D0000996F819BA4E1F8EB4AF48E9487039A1F74 +:104D10007350F3637E817924617E010B99E3CFDACE +:104D2000FAF5C3A5F189999D0D1BD7C0F99FA9A4D8 +:104D300078658355A67340ECDC8FFCA2E34B983D6D +:104D40007D4639C55F5265F283FBE8C0F5569F5E2C +:104D5000700AB4DEB7329F99334597393CEE13D9C8 +:104D6000CF39C7D67731DECA4C8E7AEB8D979EA7A6 +:104D7000AE17F4728B5D75BA719FDB32F87CD6DFAB +:104D800033BDBA9CFCE72F9747A497FBF287CC660C +:104D90009ADF01E7D06D6B2EE3AF1E1094AFA1EB4D +:104DA000F58D633FDE89E73915608207EE25F85EF1 +:104DB0005B8E7E594121B10E5B79EC67A437C05FF1 +:104DC0007E00C709F779FC47652AC6C5CDB24CFB02 +:104DD000A880671BF0F96AD42B706D9BAB3E88EB03 +:104DE000A09767CC551BC3CB6766AB0F8797E1A72E +:104DF0005B34E2B8D5F8FC52F2F9B2596D23798AE6 +:104E00005CE7ABC4C9EB9B94C7DE054731EB3907C0 +:104E1000DFAF3CCEF941CFFBD4EB0F49739F52C2B9 +:104E2000E2B44332EA47BB498FD5DF10FE7D8F1EC7 +:104E30002F4A28E2E7827C1AC3BA4C61F860A8E4E2 +:104E4000DD82F31162277AB1BF074E0B0AF2FD90A3 +:104E5000623761C6844237C5A55AECFC1C8AC8710A +:104E6000EF28E7FE6A71B9FA0CE76F3E8F84DB8B9F +:104E700083ADD0DE6AD03CE86FA965F56CB0F8A5CB +:104E800025D14BFD005DBF8F7433CB1E2A9B1C7C4C +:104E9000BCFDF94EFA95E7FDD934FDC63CE9B47F77 +:104EA000B05AC32BABE5F56C25D0A52355A4F378F8 +:104EB0008EDF1C28C3755A2D88EE552827AAAA24F0 +:104EC00026F7EBC7D1921C5CA0E1C16780EF0A62B4 +:104ED0003B54CC7FEA546D6EFAFE44910CF889691C +:104EE000F98B7AFFED8E2CEABF03FAC7FE3A1DE676 +:104EF00020EE1F74321BED97E43902E4FFE739CC52 +:104F0000F4BDCAF1152F8CC2F3266C8912E1B4C826 +:104F1000F63F2CE73829DBF7FEEE4338AF9040F937 +:104F2000446549A79F7F81FC203A5D89994AC16EFB +:104F3000915CD5F3F880635C6CB8FE5CDFC4E394ED +:104F40001D5A9CD27487DB8F7231A4888F7BBCDDA5 +:104F50007B12E93D04F8580DD3D376258AA9E17177 +:104F60009451B244795D310769BF689D9D9F7F5020 +:104F700033EE4784ABD72E82B61187831DC2BC5F48 +:104F80009823DF1F8FB0339178CD8107DC00BFDC21 +:104F9000D2FBF1EE4389FDF33425EB710E3EAF6C8D +:104FA000DF9E83182F59ED30D3F92E57A2C3F11588 +:104FB000DF3888F1E5A7BE6962E1DFBF5D053D84AA +:104FC00079FF83F4A0E0C355C4154D187777E1D578 +:104FD000AD849F4B327C1EE79B17CBD5E479E3AFC2 +:104FE000BEBD5F8CE0DF4F74AE8C26BFB013630A8A +:104FF00018AF5A1943FB0691EF8D9CC7E30BC3967C +:10500000AB9948AF1BE62B9A5CCA742E4B4DC3A1DB +:10501000A3B86FD19934B8BE7069EFBFB35CBD1E41 +:10502000DF1F3F9FEBD9636FF95371BF748B4752FA +:10503000304E35FAA17326F4B7DB8BB91CB707568F +:105040001C4CC771A59A298EB633709AF088D5EE9C +:1050500026BFAEBBD9FB387E87EA1B61A238A4F518 +:105060008E52FA8E799D22B845286F695C3F1DBF2C +:105070008B5CED16E8DC8871F313B4FD90234518C2 +:10508000477A33358BFCD69E71194208E8BAB4884A +:10509000919FB2743BDF8F2E4E1DB303E3E4275282 +:1050A000F7D2B9757FC9F24E60D40ED77FD9DE8BA7 +:1050B00094AFB3791C235C7FB461FD748CE79D6F62 +:1050C000E45BE5931B3D7387413B938B24196FF49D +:1050D0002466D0BEEA062D7F6AC3F647D94A8C877C +:1050E00035F278AEF9A289A9801F4D1705BA9ACD7D +:1050F000FC7CBE210AA3FD6C53B1914F2B8B03FBAB +:10510000CD38FECA6B8F513CF20E89F6EFD715836E +:1051100081403AFC055628BD5F7F9935FDB54E09A3 +:105120001CC571B63748AC199E3F26F4BE81F2E625 +:105130008B1765A4E3F19B393F6CC995883F98397B +:10514000743BCEA3F36F1932CAEB6DE2BD07F0FCDE +:105150009FDB760BEE56286FCE9D1E5C02E50D534D +:105160006C6EF2DDE501FA93F4B7DEBFAEBF376BCC +:10517000FA7BF3ACC7CD94970A4017CFCB59DA7DB1 +:105180006A19968B1A248594B696D77397FE3E0BB0 +:10519000B4617F773B4D0CF1AFB9F1F76D374059F2 +:1051A0002EB0F59A9C03FBFF4AAFC87C6174BBE547 +:1051B0006214F385C9F71436C4502EB40D37D49F4A +:1051C00026671A9EDFEABCDEF07C8632D650AECC73 +:1051D000B9C950663BF9F9770053683CCDAF4491AB +:1051E0009DDFF01D9EA77B77C4B97775FE7BA72F47 +:1051F00002FA2FD6F29016072C86BCA1C7EEB89FF4 +:10520000CEE35B8FE7F1B9310E607CFFC979C6BC94 +:10521000216B92C8FB73F27CC13F543E5049FB4066 +:10522000C31C0CBF8F0CD67AFD28972DA9E37230D2 +:10523000FEB241F6C86EEEA738B326F4A556C355A4 +:10524000EAD78BA8372AADC4279B97327EDE16B2E9 +:105250004A32856E689D3E48DDDE8CDF4F6DC1753C +:105260009571DC8B7BB0DC26B05E1E8F95889FD15C +:1052700024E238873DB7ACE779BE8EF5565C47E649 +:10528000B1212E37178B32CA57729D64E07FEC43F1 +:1052900009C36999A985BE4EC447409738F07B1E63 +:1052A0006B1CB36A7622D9751E2F96F9F8A1091BDB +:1052B000AE83353B4071747BA299D82AB3DB6AD0A8 +:1052C000FBFA7C68FE343FCF8129D05E828FD1B952 +:1052D0008C480F5F183D36AF3CFB24CA77185D0F32 +:1052E000A15E6E691C5387F925098ACFC75CFD74DE +:1052F00045371DEFDB59D8BCE03D3543A5FCCE2139 +:10530000F83D627C3F9D2668746A13BC47D18EF9D4 +:1053100066F3FD9748BA9866311F7EDA639225C31B +:105320007C327DC67AA7E6C5EBFBC3249F74BA42E4 +:105330007A7F7F4CEBCF12313EC9FB9C87CE599BC5 +:1053400025325C975D0F9FEBC1FD96CE22B18F0F8A +:105350007CBABC0B03DBDBE7E238BA5561E45F449F +:105360003E073A3F82EB62719A157EDE9CF1B9CD21 +:10537000ECF161BC2615CF2D847576A5BC3B8FF66C +:105380008D574A0CBF87B728C6796F8EE1792E8F6B +:10539000CDE071CC4AA04BB87CE6153F4ECF591DED +:1053A000D875B09FF6F919B4E819527011B69BB1CF +:1053B000C24E7A7203CC17F556D4BDF6AD26BE3F69 +:1053C000F964349433C418867EF9631625A50BE47A +:1053D000E65733CEAEAAC57A29268688A5614FFD49 +:1053E00016C4874CB091BF8678D01B6627F3A450B3 +:1053F0000AEE136FAEFCE849D46BBE1FDBC8DE01BA +:1054000060C8C07C017DDFBD3DF52D5B0DE1A306CD +:10541000DAEF291BF1960DF34BCEAF35119D2F65B9 +:10542000F72371D0BA6285E27F848304C24119F305 +:10543000AF0207294CA5EFC8F538448DED303F6F1A +:10544000C9C6642BC5658D383B12FF089E1F517C71 +:1054500078D3120D2FBDE6B6D177655F1217152DE3 +:1054600052C7CF27FE35E2904BC52F07F86757D9B3 +:10547000CF55E3B47B2CDAFE9D9FF2D3CBE36C5A7D +:10548000D943655DCE22FD9856B48340B4D644A37B +:105490001F335A0A525C9925480AE2B282D8F709AA +:1054A000FF807F255B29AE1DCC7D199F2F8BA2EF3E +:1054B000E16CB244DF8F5ED17FC9C930F82FAB7386 +:1054C0004E131E5F13C2535C302FE6C16BC2E3B8AC +:1054D000976A37920E1D16B647180DFA697EBA966E +:1054E0007F6AE4074139F0376C27DBD7C1F9377D94 +:1054F0000CC57F22F1FC9AD43197F56BD6140FC0FE +:10550000F10F221F5C897F5B351CDFAAE1F835882B +:10551000E3F3F13C0CCE975F16C73F8B78F6B27E73 +:105520008D8FCF4BE17ECC1AF46314A4C3415ABFD4 +:105530008EBA28EEEFFDF3E8B1E96AE4F9BF8A1EFE +:10554000FA77355792970C31F80C9E8BC8DEB6521D +:10555000BE8F191905DEBBE6B39FD950EFE5557232 +:105560003DBCC6556A9F42765315307F2D2A77B7CA +:105570000DE3421B5C7CBF7B836BEF5BE86F77BA0C +:105580000A9204A5BF9F4ED7EE22DC27DD30ABC0C8 +:10559000620ABBBFC1CCBFFF8D1CD7D84A81D631B0 +:1055A0006D91773FF2536716F7E3815D79BE8AC24A +:1055B000F352336E53295FB2E217DE6B2E777E8F84 +:1055C0003E5EC0248A350EC7B32009F5FEBC34EF19 +:1055D00006C4251B4A98BB59C1AB475C0B748806AF +:1055E000B9C7238737F44CFA08714492478235A330 +:1055F0007662C783FC166A72D43DA294C671DEC57A +:10560000283E3927374478D93A4B52F05C805B53B7 +:10561000DD53178DC3FC789EE71ECD42E418FF6B67 +:10562000133FB759C79FED9F70FB9BB8E954CB0D53 +:10563000D0DE12C0490AE22487F11CE7687FCF3E22 +:105640008C8FD4011E55A1BDBA4D463C7A7304FE21 +:105650009C8CFBE5797835E6B7FFDB7C0D974E60D7 +:105660001350FFEAE713B1AE273C7F87F92DC28ABA +:10567000A6FE738A22E9F9DA3D05E7715D4E348CA6 +:10568000BD6C1E927E8EBE7E0EFF2FBE332505F7AB +:10569000D1BB9BB97FFA45CFE55FDC703BC37DE6AC +:1056A000A50D33D85400658B1A6652795E15F76BD9 +:1056B0008FBDD56B42FCD3ED12FDE4C79614D8B371 +:1056C000C7D1F74A749ED695FCD89F6F5C3D15C52F +:1056D000CC9A5B6047BE5EEA11E9BC4085054D7817 +:1056E000EE4937F89DA81F4E78DE2AC4F25F142FCA +:1056F0004241E89FE773DCF259F55CF473935C1266 +:10570000F9674B67058E62FB892EE00718C0644F6E +:10571000E0E802284F764A6E05F58EF7A889BEE3C9 +:1057200007FFF029C4F142D774F4E77CE9FCBCF52B +:10573000A39E6D743ED8F91CBBCA9537F87F507E86 +:10574000E3A228877F77AD5F87697E6B32FAAD4031 +:105750009761668F8072910C78295CDF54CE0A4C79 +:10576000C5A38B57CB1E3BFA171BB697509EC90695 +:10577000D71C3BEAB94EC1E3C9267F33E0C4EFDE54 +:10578000F4FCADCECA1B3C48CFEE18D210AC7B94D3 +:105790009A82FE51670ACF0FBDB382E3D8CEDC1FD9 +:1057A00039D18F9586888289E4C6F8DDBEBDEB5A73 +:1057B000B27BDD9ADFD93D6B2FD9D7A7804E680722 +:1057C00099A7C43E58BC72984BB37F7583FBB57DD7 +:1057D000E702385DE4DF3FA5D9D54BF1E7A5DAFB59 +:1057E00067FBA94B36713F7A39E805F44722FDD6AD +:1057F00048BF3AD28F053F9BFC50DDCFBEB25FFB66 +:10580000761BEA91CE29B65E2BF9A55E6958FA405F +:10581000FF7689EBEC7174FA22FDDA255A9E4DA4CD +:105820003F7B5F85318F109D07A47B22AFC28ED551 +:1058300016366F457EC5B833E563AACD6887933EBB +:105840008BA371276D2F6CEE49E47E25FA85C76A1C +:105850006736F7005DCE6971EAC459467FA14D6095 +:105860003C1EA6ED97BEB3BC70CA14943B30CB541B +:10587000FFD5B37F67F4A70E8C7E51647E03DB6E89 +:10588000ED7F9EC1F38522FD4BA6E332911795640F +:10589000CD2F44DE723EA5A2BF298BAC17F7F16C69 +:1058A000B6B54750AF5EB61DFE9D2CE12EDDBFB4F0 +:1058B000D57E5BC5F80DDE2F75623DFE3E902A4811 +:1058C000DF3D67F179C0A30338CEFC4AA12FEE2E4D +:1058D00027F7B76B734AAA3DAFFFFDBE796BF91A84 +:1058E000544FE87F6ED6DA1FFDDA1E8AEB5FBBD11C +:1058F00038EE6807CF8B8C361BF5BDB78ADBE17FAE +:10590000D1F42BFE98F57C0711F38CEBDBE660FC01 +:105910000AE8B20DD663D426AB01E7E8EDFCA48219 +:10592000CF23675344DC40F3BF1335FA0C5C47DEEA +:105930001F9152C1FFB9F762DC225B3B1F48CDF0DB +:10594000ACC272927E5E50441C435FC7346D6932B4 +:1059500077CE5B658C6B78CB30FFFE1A0FFF6E380D +:10596000B3DB38BEE4D4F3CDE1718C362124E07E84 +:10597000A44F60F53F84FED21A8D744C2EB39CC2A6 +:10598000F30E9223E2177FAC30FAF7FAFA44FAD317 +:1059900092F77DF29FBB5D12F7E74BB578511D334F +:1059A000F8F3C44F409F7DB3761FC5E78F7824DAA4 +:1059B000378AB2F472FF7F9648F95A03F863807F02 +:1059C0001F590E104E4B467F9F0D7C3ECCEC6DC692 +:1059D000FC8D7E7FFF25EE77823F8FE7FC46C63F3A +:1059E0002AB324831ECCF33CCEEB6BFEFDB42AEE2F +:1059F0009F44FAF79DAE6D32F2699E1470CA6477C7 +:105A00007E4A7633D21FEFCB2BC64DD8ABF8EE2BA8 +:105A1000DB57E699C2F101ADF768C99784F365BF1A +:105A2000E4FB7896F810F90D965302D9B34ED76976 +:105A3000FAAEC0F2C7A16E248F1E2F88C4FD963B1C +:105A4000148A5BE87E7C24DE073F20B572FC40DCD4 +:105A50006F2971C762BC218BD597FDA7FCF954BE95 +:105A6000FFF1CFF2E70F69FB0AED1A5E6E4FE578A2 +:105A7000F9E90AB96F3F10EDB3BE1FC2B473645B9E +:105A800066F0F3F199765E63C68A9478B4EF3F9B33 +:105A9000CFF3F86245F5118C7763A22C9E2FDCEDD5 +:105AA000D9F61EC615E7CC9652308ED3ED291531A6 +:105AB0006F353175FD77D14E1E9A6FA3F736942856 +:105AC0008417A2C19E0F86CB07E2707846385CF43B +:105AD000731CCE488E125D1C671F7B8B7FFFD56EBB +:105AE000C3587B3F1E6F4FDDB6BF90FBF5F47D556D +:105AF000E2A6AD744EC392894C56E2117F0BA4AC62 +:105B0000EA1CCCAF22BE1C71EE20EE5F746E17DC77 +:105B1000028CA333502AB611BE14E93CC8A3A9A530 +:105B20007FC0FCD5F38007916ADF4A3CF726DAE5AF +:105B3000F654FEBD4367CC1115714F673A73E37796 +:105B4000389D02E043C47F2912F93903F19C2A20D1 +:105B5000BF247B22F61F3C0133E2B97659253CD79E +:105B6000EDBA9FE21CDD82E7483A328D594D29A5F6 +:105B7000EFA38D386C49483DF6759C1FE81B3FA389 +:105B8000F39736225DBB9D0E46B82C75159D47FDDB +:105B900014CC3B5EC0FD08EEDFB497480AED57E534 +:105BA0002ECE09C7FFC352BF1C3E03FCF3FB1C3DB6 +:105BB000BE8BACE7595CCCF2AEA2DD591C9FD8E09D +:105BC0003F8E7B1E74621E75658E11CF985201E761 +:105BD000C40EF4974C9A7F648AF08FBA2AFF8FE044 +:105BE0001CF7FF0E9C5356F5CFC63965C2603827A7 +:105BF00049C33949113867858673025562DF38BE5B +:105C00000CCE39AAC52DFEAB704E229665BEEE5F56 +:105C100010E73811B75C338BD13EEB009CD33800D2 +:105C2000E74C415C74459C13B12EFF5E193F304F29 +:105C3000E47238679611E7B45F0AE7A4961E1B0C5E +:105C4000E76C48FDB238C7F346FA7F23CE69469C1D +:105C500033E83E46A907E52DAA44A47DF13CC9439B +:105C6000E7936C18C1E31765234ACBD1EF3BBF879D +:105C70009FFBB7A1B252467BE9030626FF9C71BC8D +:105C800092773A9ED675B414A2B8263B61A5FD283A +:105C90001DA7747BF6E6BE8C3866E93037F6A3E3C1 +:105CA0009604B3E708C62B138AC9F20F865BC65663 +:105CB000255D0EB704FE73B8C5F5CFC52D4C5169EF +:105CC0001FA842DB07EAD6F26D373C62F3B702BD8C +:105CD0007E35FB6C01C6E3F4FDA04BB5F76571A7FB +:105CE000BD52347C47AA8F2B58A99D07ACE1A6F87A +:105CF00079EAFCAA2FB09F0182397DD938D24714A6 +:105D0000F75DBCBD41C2734C6C536C0194EFC5DBB5 +:105D10001F9470FF495E6163A8B7176F6FA4B2F359 +:105D2000019B42E53EFE1EF908CA87C26A25CC37B0 +:105D30005D5C67396589C573D58DFECA4F2A188D9C +:105D400077945F1AF4FE7FF7788E5632FE778432AE +:105D5000940C549291FB76DD3F06B41387EB5DEF14 +:105D6000A47DBF1167F7D684ADB38EFBDB3D1CF776 +:105D70005BE27DF49DB94530D7E3F7A8652356D0A3 +:105D8000BEE07966ABC7FD6990C3145C7F90379223 +:105D9000BFC8F5D7E54ADF0FECF66410FEB7CC902C +:105DA00069BFB9DF2FF0C8A84787ACA5E46D94A7F9 +:105DB000CD5557B13FF2FF9B5C45F281BE1E57FBAC +:105DC0007E8F8F7F07A8F672FC0D5792CB2917198B +:105DD000E17319C389509E0ECF9574C471C368DFF7 +:105DE000239824B0A1509E6E3A6CAA87AE7A265AA8 +:105DF000652BC75B77E687C5E17B0E032E85E7370A +:105E00000B563AEFA890FDDC84DFB71E007B86E7D7 +:105E10005CEB7174FDBC9869CE2BC5CD8D78703F5D +:105E2000FE02F3FC4D9516371FC3C67DC9B8F9DBDA +:105E300028F7D77CF6335ACF9E227E9E44BAC5748B +:105E40009B1BE6BBFBB0A860BE145CF97702F5565D +:105E5000F223761FDEFB960BEAEF3E382699D65CDE +:105E60001E427A67B7A274BAB05E8744FAFEA54DA7 +:105E7000330F610AFC8FFCF745CF83EB9EED8FDD7E +:105E80008E57FDBBE8C54F5AC88FFA4187F434FAE4 +:105E90005B6737664653BEA7E6C75569FB3E7A7E09 +:105EA000DB390D974D9FAFF97D0D49FC3BDC1CFFA5 +:105EB00071B443271E1614B4DFD572AF45A0F8CBDA +:105EC000C3FF727C229E3FD93B0DF34C6CE243A38F +:105ED0000F40FD6AC42098475CDDFC7D1FF473F120 +:105EE0002EF5FF211D6CD59C8F1E5CAEFE1DE5427C +:105EF0002F47DFAD7E1E5EFEEE7255A80E2BC34F00 +:105F0000D06ECC0BB6555F262FF84BEF4B6BF3BD25 +:105F1000127F6F1382DFC1FD33DF312BC3FDE193AD +:105F20001ABFE8F57EE74D379CBF063F71B81F35B5 +:105F30002FAD2B16F711DE1358A819AE0BB72F9CF7 +:105F40007D23ACD77BEB4AC80F5EECE3FEEE7B3DD6 +:105F500093BE87F9748B00DF2326FAA079E674F2EA +:105F600077D70295E1F99C755C7E16770B7EDC672E +:105F7000B87523F753BD17F5BC0EE3BE55E4FED349 +:105F8000994FF8F7B9DE88FDA75D9247C2FD86D02C +:105F90005681AD87570B7D3FDF87DF6F1D00390CC2 +:105FA000972B7D7FEACBEE47DD5CADF95B5F7E3FF3 +:105FB0006A1AAEFFF986B14E36C87EB87E1DB01F94 +:105FC00035A28BBE976266B713F5FA07962FB72FE7 +:105FD000B5ACA190F6A3F4FDA9E35EBE1F94EDB5A8 +:105FE0006D46BB72069C37D4E321C1F7E644E493C7 +:105FF00037F9F99CB7EDA99F8E7E5D5FBCB5CCE209 +:10600000BB16E853ABF9FDBB5E799E9F6B336A9478 +:106010008AF25A6BF6D2DFEB58A8E525566E7CB1B2 +:106020003505D6F385250BEA70FE0B379A0C7ADA24 +:10603000EB8BA7BFAFD722744D4D403BB65A203DE6 +:10604000719BD86C4E80766F5B23B85B154D88E0F2 +:10605000F91B3E137DEF3FD6CBFDA0F30DFB0E6089 +:10606000FB91FB137D7CF34341E3AF2394F7877CE3 +:1060700083FECAE29C496C6AD8387649F507F07B02 +:10608000C7B393ACF22AD00B776D7C400AD7CF33DD +:10609000C0E84E0DF78722F63306E6E5D5D0F74582 +:1060A00003F72D8CF51EA936FAF1A36315FABB5E32 +:1060B0002C83D361466BCDE643284FB563BF3A01CD +:1060C000CA4BBDF15A7E6C611CFD7D2E6B70FC1FAE +:1060D000104F7F8B9F1F7D46307EAFF1432FF7F728 +:1060E0001ABD5A7C5C757831BEB240A3D307DB334E +:1060F000DB30AF54FF6E7481E6A738F579D6C74B15 +:1061000018FF5908B59FCA87ABE6E72F1CE81FAAFE +:10611000E8EF52BBE4B71BFDFE059A9FAEB70F3008 +:106120004DC2F746BFE694709D96169B82B8BF5944 +:1061300013E98787602CC9FCEF43A27CE9FD821F2D +:10614000AD86FBD9D46F667FFBFAB822FDEBA50EB6 +:106150002E9F4B23FE7ECD692FB723793597DF47DE +:1061600008A17F2D5FDABFDE5F7D79FF9AE691316E +:1061700028FDB6F77DC7AAFDA0BF5CA3AD134CB444 +:106180000DF75D619EF54F0DB28F70FD73C679DE20 +:10619000F2D9E836F497177AF9B93A351DC6F14ABB +:1061A000DE896D9857F09E260F91E329B419F12DE1 +:1061B0009EAF185EBED5692CCF5006E643DAF47563 +:1061C0004B1FD8FEAEC7CF2CC075FF60AD9540A267 +:1061D000DFCCBF9F7E6FA349FB8E9BFBD7B4AE8302 +:1061E000F8E7672ABF427F774AC7BDFBB6CFFC26D8 +:1061F000FE5DD1D38D16C5AA0CACAF9F5F9557201D +:10620000B3F03C49FDB9EBA11F1AFCE7C8E7954084 +:10621000BFF0FDCC839ABD3C6E51284EF01FC420C8 +:1062200050F30080000000001F8B080000000000F9 +:10623000000BED7D0B7855D599E8DAFBECB3CF393F +:10624000E124D9799260083B24D1D006384082609D +:106250001177C22BD8E81C106D70404E1EE4C16B44 +:106260000ED88ED189668724904042239C205046C8 +:10627000C2234E5B1D6E746AAB8EB7730296E23B0F +:10628000B6DE2ABD0C1C0844A99DDE28C5A633FA3B +:1062900079FFFF5F7B27E79C2410EDB4DFFDE6CE9E +:1062A000E1D3C5DA7BEDF5F8FF7FFDEFB538DB2CE8 +:1062B0002B7A1A63977D96088F93B17A8115754171 +:1062C000C96A663196CCD817F8BB6378C9581D6384 +:1062D000B98C4D97DB1E60F15015455727969AA64D +:1062E000C6273226601395B1FCA80F457CDFCB98FA +:1062F000629BC1D8773D305802BC7B59D11EC1F694 +:106300005BA25C3B5C8C055AEE119B72A03C66392B +:10631000821F57BF5073E869785DD47972EA4FE005 +:10632000F9D5CA0817F66759CE580FCE4F724731C4 +:106330002803BE59512C7B685EBB6B610A36C69A36 +:106340006AED54060A5D1D127C1F57C0E793EBF0FF +:10635000A47B12B02E32CDCEE8F705FCE75023988F +:10636000963554EF9BA2C82C1DCAC8D3790CE7E51B +:10637000608A00F32FD67F2260BD652DCC05E0C377 +:10638000BCCA363FD4EBE16F3B14A837587F1B30B3 +:10639000FB990CFF0BA4C4F48D83B65847B8D5C441 +:1063A0003136F77A70D5093E964D56E6CFC675322E +:1063B0005AE7CA68BB5177511D7F76807399016790 +:1063C000E64E6322CCA3EF5D4BC70E00715FCBC9D5 +:1063D0007FB3007C2FF96CAA007547DB07ADB7C20D +:1063E000FB2B6F585C3B6818ED1759B3195B6F7C3A +:1063F0007F5CF69E4AC6EF9F155C5BE15199EF27E3 +:10640000DB1E86EF950916664982076D36E6B707EB +:10641000AD0BC06C9F3D34FE153D9D89381E8C2F01 +:1064200000FEEA5E8A6008A7DEE7850E5B1A36EAA0 +:10643000D986E35768F67EC47765C7E653D5502FF3 +:106440009F63532C0A8EF790ECC7F14A9C5ECB9C5D +:10645000E1E3ADCE9ACB1606E16B29730DD5B1FF02 +:1064600067AC170350D7E00FB6DFC824AA9BEFCB69 +:10647000BBE07D107E2BC2DE977A22E3FBBE0E9539 +:106480005BD9AD5F00B2A647A9DB92903E270BAE69 +:106490004E58DFD286E2275F87EA95B2597F351BD7 +:1064A000EADF5D134B78FADF1B16447B102F0B9D40 +:1064B00065088F12131EC7D2B73D0CEBFBE4B3681F +:1064C00086EB2B6132D11792CC17B839F6C56CB375 +:1064D00042FFA5D0FA00D055E9CB7D9F03A6A12E9F +:1064E0000FD125C18D2D6466BF22FE4F66CC5C079F +:1064F000CCB3C4DED2639936D47F3934C0EFFE61A9 +:106500000DE3FBECCBCEAB2D46C67995E0BC62A08B +:10651000C47905F51F3EAF52FCDBE4E1F32AC579EF +:1065200005ADA70CE7250CCDEB8EFEFFF3DCEBC829 +:10653000170202D1A3659785F9695FB7F17D7DAC3C +:10654000F7874FC3FBC0591BEDFB4CFD34F1812B8A +:10655000C00776A8C8176645E3BEFF4FE0079D9EBB +:10656000DCFFF7F901D39C9EB1E031C9C48F1E2333 +:106570004B63C3A3C612C78E474F187DD50BEE27BA +:10658000C7C1387A5D2443FE7FD9CA880F5CD96CB5 +:10659000EB68A0FE03F9C8E78FB48B0CE161F7F05C +:1065A0007DF376A72D22E01CFBFA5F7840FB15F205 +:1065B000EDB3AF7A2629D9C3DBDDB446A57643DF38 +:1065C000B16811F8C86F1FD0FE15BF1B339C9967C7 +:1065D000F13AE45306FECA8F55CB1150B7E7D9BB49 +:1065E0006C49587F448E403EB5C5CE6C73B05E4357 +:1065F000F5A487EC2AD507F7EFCDCD082715183875 +:10660000CABFF22681F8727965E6B69D399CCF8DB6 +:10661000C3FE0EDA42E80C7E491941FB6A047EC0D3 +:1066200054C057B14107F03B86F82BE7AFD81D9F08 +:106630004DDA867C1CBEF71E50383EF1FB69063EE3 +:10664000BFFE7D3964BCE2265B08DDCB9E39DBEE04 +:10665000453C1A7C3A7CFC05F6D0F92E5242EB4BB5 +:106660009242EB4BD561EB23B945EB4B1BDEFFF1BF +:10667000BDBD25B89FAEB4D80C2502309368D0BDFF +:1066800030B41E933E4F1EB3DC89F0BDE8B3302E0C +:106690006742DFDFA83EE9B37FC9C3EFFB34C676AC +:1066A000C07EEE5D7DFB39944BFA8B765726B4594C +:1066B0000DF0D183E073D6DA45EDCF2E8536D0FECE +:1066C00088D57DF75C687FA44E748146C42EEFB3F5 +:1066D00010BED7BC683F2CC27CB21F850D3181B182 +:1066E000D31EA14BCF606C4A87FC65F11D82DFE1B0 +:1066F000F85708DF25886FD78DF17DC767D3B7EDD1 +:1067000044B9E3717A11BFFF8DFFBF2CFEC7CA8762 +:106710008E03CFED217D0F660B65261BE8FE02C6BA +:10672000D9932276EC003834145E7C270DEAD7E248 +:1067300045A2826CABBB00EB91D98CE6F1648A4830 +:10674000FA97B58A7588A48FFDE64DE4CBE7278AD2 +:10675000CC2670B9E8BF85F43EA660BFFFCBD2B1AE +:10676000159E4B0863989FFA70EC8E25D0F3EE28A7 +:106770004D70019F8EF72FB5AB9150E66805B8BEFE +:106780009202512980B6F1D9EA521CD75224AA05A7 +:10679000D0FE649148EB9FE46686DEA775A7413D75 +:1067A000D2A0A7C89A0FCEA29E53DFFC1E437D4FF6 +:1067B0002F767A33E17943D189E5D84F8332398610 +:1067C000A35D8B9A01784F34E8BCC1A9D9B11FDD14 +:1067D00009760691BDA7BB0CE56CD22C86FD36C6AA +:1067E0004B051D304FEBB32BDCD84F933A3311BF21 +:1067F00033E1DA14BFD59EEE0CAA3BC5828E6C6ADB +:10680000672F877292BF4D43FDE1A4F3489E13BEEC +:10681000DF09DF8E87FFECAAAB7B32D4811AFB51F4 +:10682000CEC6658B176CB0B9E28A64E60FA26B5BCB +:10683000863CA4AF320441D07B8043240B7A0FF511 +:10684000678B41DF043D0074A8D94887BFA97D81CB +:10685000F522C1B53DE1FE1CF8C15A6C08CFD70145 +:1068600020BA9CC3E9E4A79BF25F2806BDE54C6A09 +:10687000DB549C6FAC2A33B4E32C05EC04E239B250 +:10688000C9D2B1040019897380F7DB97891D3AD406 +:106890009B85AEA404E8B7296D2F43FDA1A940EC68 +:1068A000B0C0F3734DBFD4D05E389023D33E6BAEEF +:1068B0005A1ECD4618D72C5307405F0352DE5FE1C6 +:1068C00079BD3848EE3E595D9280FAF0D5B27B042E +:1068D0003FF0B33327DC75AFC338173F8F663AF10B +:1068E000277777318C938AF215EAA939F7E595E68F +:1068F00020BAED5E94AF179B6E21FD3AA13A946FDA +:106900002530EDEDD9B0BE73B2BB6E0EB43F27B2E9 +:106910009E3AF83EC1D06B1286EB352C69368D431A +:10692000BF8B9FF73ADC86DD847A2B897A20D58469 +:1069300014F902EACFE17A4F82A15787CF23E47B93 +:10694000D00713CAC6698EA0F18144FCA4477BF826 +:10695000F883ED8CF7A00D68343F94CD89C3DF9B9D +:10696000F35F5BE5BE86709DFED32201E1B98671BF +:10697000FD53CD56B67D0DD67F1EE871878B2F1344 +:10698000E5C724633D93C2FA395713B7ED87087FF3 +:10699000802F8ED9DC7CD58AFBF31A7CCF62F8BAC3 +:1069A00083E505FE9CB369FAF4F33CF34923CA0B73 +:1069B00006F2221AF49B270DBE41DB3291A64EFB54 +:1069C00033A15A3CF543D48BF2EDD42EA11AF63FF5 +:1069D000743AA926207838DCCB70BD938CF69E865D +:1069E00050B9905EC3F471D3B00C7D3E12FCED261D +:1069F000DC040E373D68BD5F54683795C0CB666BCD +:106A00005711D255F35459D161BCE6CC9B1DB88FB8 +:106A1000D3816F59A09EEECCA73A738B2C937F4EF7 +:106A2000F66C9331C6EE8213643F371525A659A044 +:106A3000DF93C522F93B44D5755A45F86530B2431A +:106A40004CBAB717C91784A8203EAECAE1F632CDBA +:106A5000DB6EAC7FE7D49B494F6E027B19FB1F6D49 +:106A60009F99FD86F7D750A1CD2921FF8BEBF41D0F +:106A7000889FBB45B513FA3951F88905E5C4816C87 +:106A8000F130F25F5F65BE03F7715E099FFF9E6C98 +:106A9000D1B0B374922B3E95BFFF6E85968FFDEDFE +:106AA000719B72A7CD8ECFC13E2A40789AFE98B3D3 +:106AB0005BBEB97432F209B0D7905CEAE39F237BE6 +:106AC000A8116D76A0A7C62E89F86A6357CE9904DF +:106AD0007CCE0A2401E5CB5DB393CBA632F6DEDD96 +:106AE000B2A6019EEB15CE7FDF93DDA28EFCAA40FD +:106AF0003C8CF2E7AF72FA49CEC567B3C328A71A38 +:106B00004B6269DE8D302F1CE7700A3B8CFC6A48B3 +:106B10003EF6D03A5A0B625F43FFC7B522AE151D51 +:106B20009779FB86484672ADEEA547F45B619CA35E +:106B300079F67EB02899A5A58FE49029076D6C069B +:106B4000C9A36B865E148E87DD513A7365233E3A86 +:106B5000EA18AC6341A52A93FD62C8A958836E2642 +:106B600035A509C530EE9A240B5B02FD94B4697912 +:106B7000E4AF29E0F2C00E7F107F6B7C20A6A1BF9E +:106B80003877A8DCB085C9094B981CA92E09951B3C +:106B90002A73D9DD309F73CEE5640FE3EFB320F99C +:106BA00011BE8E2E63BDA6BC319F5F47CE3422FE40 +:106BB000F758FDA4F700D528966FB0617E3EA1F08E +:106BC000C702BE3F5861D8C13F75D96D4820012921 +:106BD000A6CF3E64EF8EAEF748AC2F88FF3225FE7D +:106BE00006FE479D98C022CB867332EA8B4C566CCA +:106BF0005472BC9FDBC048DE6D8F0CE8167C7E3B78 +:106C0000731D817976E89C5ED36628A26506CA7FEB +:106C1000A3FEA82A5A807ED77802A71741BB9B58AB +:106C20001BD9F54EA6F4B4CD457F10CB42BF01135E +:106C3000235C9DB868A587DEA77C9BA9A88FED7013 +:106C40001F5116C1E3AAD234A2D723BA74276EFB10 +:106C5000F10C6601EB9976CBE0BE223FC515C91554 +:106C60003D921D6B96C5D5E90717CE1AAA5F58ED60 +:106C700028EA18013FDFA8CC7F11F72DCB6A233B10 +:106C80001CE4A2B203FD7842608200FCFE62EF3B8E +:106C9000CFDA27A25CF69D63242FDE7CF63494695C +:106CA00099F98E45502E79A5E4D985C827DC20991D +:106CB0006E43B0FEC7B39A84EF45AADF76E9A9CD4B +:106CC0003A9AB06BDC3FA77124978AF4965627BA9C +:106CD00071FF5A64971A1BB48EBDA5C494A1BDF66A +:106CE00006B61F43BB77B0DD77D64E257E7819FDFB +:106CF00087E88F2E7BF3DF106F978FD9544118E20E +:106D00009F6B8C7D96B7F1DE28E42F7DA8F70BD81A +:106D10007EE35BF7A17E0BFAB7A092BF5344FC5C05 +:106D2000064CA15E3F5DF6139E5904533AA1CE5E18 +:106D3000EE22FCA16185EF99B77FD123A84F6A7637 +:106D4000F24733904383FB2EC8DF698E7F791FF7AC +:106D5000779E37E6DBE772931FBC8F4D76213F0BA2 +:106D6000DF1F67B7DCA4A1BE75604B940BF5C86943 +:106D7000FFFCD922F48B54C3781617FAB73EFCE116 +:106D8000D348A7676DE40F2BEA2C8D8A86F7575BF3 +:106D90002CBC93B0F90CE34F617EAEBE42B51BE74D +:106DA000437E2E81F8B8583A06BF770AE81988DF83 +:106DB00062BB5347BFCF8DFC573BB2B8DE1D3E9F31 +:106DC000BB0CFC32294078B0881C0FCFFCB527A63D +:106DD00094FC462E852B0F1AF12FB39F703A791829 +:106DE000FBC9C5EFB444FC6E0CED6E2ACD1D4E2FD1 +:106DF000A67FFC8AE11FBFA29C20FA3ABF8FD3175F +:106E0000D0CB09F2EBBD00723D6D38BD5CB1727A3A +:106E1000D1CB60EC9B907EFA1B119F2C7F6CF412FF +:106E2000706684D04B2630521BFA379DDC9E2BAA0D +:106E30000B8D7384D3CF9A7DE335A44F05E9276981 +:106E4000F8787DCE86EDE89F36E9C0322340F464C1 +:106E5000F9579B0B3825EBDB974EF46059AA30D4D9 +:106E6000374C3AB1DCE552A2A15D1CD2591AD1C906 +:106E700092D231F843BF2C9D88AA9FF4A96BB09F92 +:106E800011BE60E768C1F85973CCF600C2571145CE +:106E900097250555712E6F8A41DEEC8819BE5E512B +:106EA00055B6F9B91E4BF29AB905160CEF35C77EE7 +:106EB00042F2482937E451183C87E12B7CFE2F2B06 +:106EC000AC1AF7B1119F625E2E6787F96F4D7B5D3B +:106ED0000890BF5A7FD342F6E9687C3D50DBB36F20 +:106EE000A115DABF745B34EAC59775A1C33A1DE3F7 +:106EF0006F47C96E1A6AA7EC5F18249FB3F4773402 +:106F0000D403FFB144A5F1B274C1DF3E0DCB6E0DC9 +:106F1000240A7B76A5F64869EE7F7D382FFE6BED5F +:106F2000095CA70917E00724A79CBD20A732187B9E +:106F3000B058FB1EDFFF409F9128475F7F1FE1365F +:106F40002A9DB21485F42966DA3F7C9C2F2BAFA5CD +:106F50003079DD30BABCFE1F38BFCC5736B4A39FA2 +:106F6000ED9A8FC7E3742BDF4FE1EDEB0D7DED5212 +:106F7000A5E785D2203BFBBE18B0AF603D01AB5FFB +:106F8000B89E5E7613F3D7E1FB648D29FA5CA4B357 +:106F90003886FEADFB367339F4A7EA695645D2D17F +:106FA000CE3BFED2FD8A6704F83C5DE1793B185F79 +:106FB000D67845C676C72BDDEFE0F3FAA80819F7B7 +:106FC000C17395DA2FBE0CDE86E0D3F4E225D82714 +:106FD0008DB56D54C294FCA88C4B4E781EC4AFE4A2 +:106FE00078781FC4CF46C3FBFE0AAD17E1FCDA4434 +:106FF000CF036E98E7995FF4933D75655FDC61D4CC +:1070000027AF1CBBBAFC36B46B7C713168473E516C +:1070100026D27797BB96931F504F91C86FF84CD7E5 +:1070200016A514D655B0D6F37F82F166DBFFA0A279 +:1070300039FF74FA0439FAEFD82FC8C1245CB4457B +:10704000006E9D3EBA7C3C5436281FBF40388FA14D +:107050009D54761D393A186736E5E8B1B1C9D1BEFD +:10706000E17294F4AEBF981C3D365E7FF83A72F43C +:10707000CA0DE4E895636396A3AEB23F83BE65EAAA +:10708000D3A3E95BA0A7DF8E789BE6641AC2799A46 +:10709000D3DE519F36BA1E7EA46C500FCF2FBB8E0D +:1070A000BE1ED46E49D97F017D3D53AF8C423979E4 +:1070B000799F45443A2D6A0FA51BD3DFD1D7CFC79F +:1070C000E98571F411C6B962652F08D137D6BFC3FF +:1070D000E9309C2E805EBE8370158EFDFC8FC2B49D +:1070E000FFD6B76EA407F4393CA9E88FE9B3B2A282 +:1070F000AE11F6C3D1F58B0FE2FEFBB854257E1618 +:10710000CE6F415FEA30E89DE233A69D0BFAC5D110 +:10711000B2FF0FF428B31498EFAED9F05D8299173F +:10712000C4DCDD1DB0AED44B4E8AD72724FDA65B50 +:10713000257BD6DE8FF1ED84177E5BD79D43B2C8E9 +:10714000CBA07EA6EC1EAA7FA2D9BD68C70EF7DB36 +:1071500007BA5580DF36C19D97877A8AC07A3A157B +:10716000CC9BB9A77B3DD47F5F1DADD077C3FCF727 +:10717000A1FE78561D14B733FCA9C17E7C0253E2F0 +:1071800090BF1FE64DE32922A379DB33C2E63546E3 +:10719000FF3E761B6FF63B19FDFD1F7178C0F3E5CE +:1071A0004923F8FD8D79C2AB53384FC75AC30E46F9 +:1071B0000A0CF6F727C9217183C17507C7058490AA +:1071C000B801F53FFDA703140FB8655FE8BC2701C0 +:1071D000BFC77D30490AF5E38D5BCBE5F984B5A2E5 +:1071E000B10FA0AF44CA6F20B8BD17E1DD867CB8EF +:1071F0001EE07404C69E7230341E3CA4F7D5D1F74D +:107200005907E590F7261DF5972946FF6E01F7D936 +:107210007F7E1E4519F1BFF24AEB056BD448791306 +:107220007C1EC3E3EB7A08BDE74DF9FDC92F601C56 +:107230006B0A8F4F4249FE424711EBC078ADA32045 +:10724000B00EEBE3526415E976B1C549EF9B556882 +:107250004F9B51BB7B46505CA9F98D00C5B312937F +:107260002D4C47DC554B9467A6C01FC4BF9907D768 +:10727000B88C7F6F2FD4F2B0BD7D8E4DD1301F26DC +:107280005B0AC94B4B0CCB4B8B672D1F239DC6B3A1 +:10729000A076F05CC6B9009FB86DAD91B73693E5A6 +:1072A0007CC53862DE5A840F26BB817D3073FFAC0B +:1072B0003D2B5598F2DFDFF34B2C671F7E30EE7EBF +:1072C000153BE920FCCEE9DC730FAFFB3311CFAFE8 +:1072D000D5CD988071B5A3753C6FD462CCCBEC3F13 +:1072E000B382D3FFD175DADD38CE6B75179251AF0B +:1072F0007EB26E64BE1D5DC1E9B590694524EF9D07 +:10730000A282718DFA14C9C87F5405F47317A8338B +:10731000B68E43BCB16866A1FDA80AB1506E5F018C +:10732000FA01D49A321E7C1FC158B042EF4175E178 +:107330004C791ACDA321F3A41407DFBDDAC248CEDD +:10734000DBEED525D1895BD27D3F8DC7445727948D +:107350000FFCB33D300EF94C181F7E6CED649A9F04 +:10736000E0EBA3BCD683E338BF9EA6F0BC806905E2 +:10737000AA500F034658791CA3DD2D76605CB6DD5C +:10738000BD9BF419B90A5812C887ECE40CCA7360A3 +:10739000CD762513DE1FB7FAD7627DF76607C57174 +:1073A0007747BA9766427F7BA648948FE9AA88E11F +:1073B0007669A1EC6751C3E16696D3E4FE6405D615 +:1073C0007368F5E7672AE287F21840104C5E86F290 +:1073D000C0CBF5AA7A434E810AAEC933D957B6FF5E +:1073E000AE962D781BC88CBDB7FA8348B40B0EC47B +:1073F000484403EDCC958C7CCE277892391F0D2420 +:10740000E3FE3DF9F0A713316E723C465D8974735B +:107410007E6A607F05EA7DED6C861DF13171611138 +:10742000C2F17C018BC17EF6AFE5F6556601D3460D +:10743000B2A70F949B7E463519E9B111F7207C7FE6 +:10744000348B75D4011C8FD61CF563DCE710C82F74 +:10745000F47FEF15DCE7C8FE689519F9F159BF63B1 +:107460002DBC976B4486F1BC03ADE5FA5A78DF7901 +:10747000D949BC38C257AE97737E4FF1E9CE048F1D +:10748000BF12EA3BD232BCB8DFCF9495EA98C76806 +:10749000E6E1B5D72CA778DA8E29F74D2841FF8E83 +:1074A000914FBDA7BD5CAB827EF7E4D9BD380F39E3 +:1074B0002B9C8FBA499F907D722CEA1B9D911EFFD9 +:1074C0002D380F41EDD9AA20E979FC282F8F564F8E +:1074D00057909FCAC3F28442E5A5D5808BD4CAE3F6 +:1074E000F89215EC8178AC33A2C77038EE423F8336 +:1074F0002D681FCE09E5A397ADEE0938EF0F2F8B4E +:107500000F4AC0273AADEE0358FFE5E5DF6D597825 +:107510001B6D0D1DFBEF6C6164174AEDE6B89AA276 +:107520008C80B71B8DA732573EC203FA637FC9FE1A +:107530002EB7CAE4B7B9517F267CA15F51F80AFD86 +:107540009AEDC2FB0DFFEE2FD57EB4757E68EC3F41 +:10755000FACD46738C1979A25CDF928D571195E5AF +:1075600044AFA6BEE5133A74CC83D5D3242FEA7B6F +:107570001149E1F4CEFBA3EF79DE01F159B37FB9F4 +:10758000EC69FFAD39FC39EA5926BD0FEA5959A11A +:107590007AD6B1726150BF511287FAF52D2B67B8B8 +:1075A000BF3175226EA47D63E85BD43E6DE8FD902B +:1075B000BE5544FEA9707D6BAD93CBD3B512D7BB3E +:1075C0004CF8E519F26B7EC510DC46D2B776DF4089 +:1075D000DF9A6DD057B8BEB51DD78E709DC23A3AAE +:1075E00069DF77E891F1347F2FD91D50C738E078F3 +:1075F000C636A39DBC5BF0D67D8DEBDDFD9DAE2137 +:10760000BC45B3C11FE58F384DBCAA2C03EDE4EF98 +:10761000DE31ED30FA539C23E49FE27A62063F5755 +:10762000BA311F4531F351B242F5F4F1DF8F102624 +:1076300007E9E18E0CA51BF344A20C7B8149828EE5 +:10764000A15EF9A66C1A2F7DDE5B2C3F9EECA27E1C +:107650007C1FB32A74FD4AF5E7FEF1A82782FD31AD +:107660009EE8CCAFDF8BF0C8B3D3FAA2B5503C395B +:10767000C3E8B9B43C86D389E475A3BCDA9EC9F5E6 +:1076800085F0BCC0BD02D74F9EB4EA94EFF6645AB1 +:10769000AC80FE3F133F4F9573FC3E19C3F735D2C4 +:1076A0008D1E04A7C1FDB5D63A4897F6A03C01D37C +:1076B0008FD68A7E34E8B7B5F014F94F7657CA747E +:1076C0005E63BADCC6F0FC05BB5BEC40397522E6B4 +:1076D0003EB109E7516339827A6BD1A3BDCF615EB8 +:1076E000D5D5401A4A6F76FCA5AFD59543FD0F79E5 +:1076F00059DCAF5B208FE80F31C7DFB36232F9434B +:10770000761BFE90F6EA13E4FF68AF8CA0FEC2F988 +:107710006B6CA57C01FD12E1FDFE8BB1EF2207042D +:10772000A6CD02FD6A59683E7EAEC3D3560EEFDB8E +:1077300073DC4BE7C278912D7CB3470E48D43E539F +:107740002F70A05E50B46C667470DEFEB0F1072C32 +:10775000D4DEACBB2B541A3756B999F4C1D8019971 +:10776000DE7F2741A2FDE15B29D3BA7C916E37DA37 +:1077700081BE472DAE2344BC7CFFEC5D7A33C17DD6 +:10778000508F58AB123E0FAC7C2A19FBB3A556267E +:10779000A39D955AAED07319F83C3211D963A7EF67 +:1077A0008FCEE1726EB81CE6F9AAC4C750AFDBC534 +:1077B000F3210FB940814E1B4E67276B2E925CDE82 +:1077C000015A814D19FE3EBCFEA4D5AF0760FC27CF +:1077D00005E66D5386D3F7EAACA07C28F8AF49D212 +:1077E000EDC8EF814EC9CFB1B1FCE75BEA32F0FCE6 +:1077F000C51A3A6FB5B786FB711B568AE6F922CADD +:10780000FB297AF49E57D1CEBDBA821BD7E1781DF1 +:10781000CA07FAEBA5E8F736F3814C3A30E10AF8EB +:107820007F9BE3BF8798CC9F0BEF991E3BF90FCF4F +:10783000578AB49EF76B8E66205FB99AE5D050796F +:10784000AF38F8B884EF37205F0116604DBBB00E3B +:10785000E15EE0B3A9A4DC879D8732C735D7132B3F +:10786000752DC6FD98088C07FD8091456208DCCF18 +:1078700055723C5FFD91D081FDD5BDF4EB6DA477D1 +:107880001AF94615CC234F4823BE730AF55DDB6D0C +:107890003605F9E5EDFDA17EC03B0642FD7E792C63 +:1078A0002EA4BEC07E5348FB454A7A58FEF5D74306 +:1078B000DE2F556785D413B3BE112A87BFE4B9A95B +:1078C000C422AF8C727DB5C749FC3BFC1C5562518C +:1078D0009784F232B222F43C55F15AEE1F2874CD4F +:1078E00010715FFDB44DA07D540676375874ACC15D +:1078F000EAE94E42BBA445608FB3E1F65E215377BF +:107900004D477DA0C9A2E079ACB1DB7FFD0BD0CDA6 +:10791000AFE9756407CE6B7BE724D68BD18E837D70 +:107920005DD294573413FA999F01F4ABE2FC36BB55 +:10793000AD504F570511E9F90C26DE43BB9E81C9B6 +:10794000DBA2555AA624019DCC37E8E42EF67B290C +:107950001AD67DF7EF351965EAD1759EA915D0BE07 +:10796000F4F7CA29AC03F191FE1064F7D23E8CFE05 +:10797000E007CFE9B83ED57500E5F52A319261DE22 +:10798000CE5110174847F5CDF68E0680CBDB917DA2 +:10799000273CF03C22D9C26C23E4A585DB7D8F19FE +:1079A0007C6C34FB2FDC3F321BD747F2E92FEBAF67 +:1079B000191CD7193FA67CF8EF09BA83EC48A58DAE +:1079C000E79931D686E79A800B52BDDE6BF85D5998 +:1079D0000FD5C7635E561ADAB73AD51D05AC676B8B +:1079E00032C543298E1009759DEACC6F89E576B0C2 +:1079F00044C2B183E685CF338CE7D3402266AC78AE +:107A0000207AA4F8AC59961AF9D0837585EB85F9DC +:107A1000FFFCC63FA27DF8FAE69B66DAD4A1FE5FC2 +:107A20007FF1E51401DE9F9DF6F3A942F6D03A4DB1 +:107A3000BF41A3C2FD068DCA73E457682800F51143 +:107A400008B8A1CBC7F3F02A999209EB5D25AB25C5 +:107A5000585FB5C34EE7781BE345D22B22363B284F +:107A60004F92B1ADA65F6E1FD2D96483CECC79346C +:107A70005AB5A436A09BB763FAC4E2203A33E7D3E1 +:107A8000FDD2FD24279A5244F25F35A5CCBC6E5E30 +:107A9000B80DF9665C30FEF838B60C2FF17F1BF29A +:107AA000EB38E4FFD576B4D78B26DEA8BF50793209 +:107AB000D89F7B0B23396DC893FB533D144F3FDF99 +:107AC00029D0F987F38F7E6B1AEEBBF39D1F37B277 +:107AD000C8A1EF7FF9D8E3A9385EA67F2012C7BFFF +:107AE000F2283F4778F9C41FAD6A50BB3552BF1525 +:107AF000E30BF73DFAB88CF1DA25C73EB606A0FED7 +:107B000001C67928FFB98DE8DB9CCF9A839B176368 +:107B10003F551D75DBF8798DA22877E4F0F5E43543 +:107B20002E8A42FFC7A5062B9D530CF8665D77FD94 +:107B3000BDB53CAE74332B881A89FE2EB4F17EEAB3 +:107B4000F57BA8DF408A3B0AE571E01D0BDB0AF4F8 +:107B50007601E3E3C0530291DC0F11A8B3F9315F62 +:107B6000D8D3263C85F47111FAD7613DAF56580839 +:107B7000DF0B7481F25A3D6D7932C2C3D3B0544EDB +:107B8000E6EDBB1CB0DA770CF95BD694477029D3CD +:107B9000D388BF7914E6BF2387DA75D40937EEA7F7 +:107BA000AC05BECFC6EF67503E00C093FA2D6DB254 +:107BB000849CB7C964EFDB475A77DECA1FD9B1FF8F +:107BC0009D450B1D94C79C5322EAA80F678BA467A1 +:107BD0008D064F334E37DAFBBD85BCBF7AF72FECED +:107BE000886F5F4ACF69B45F7C063CCD763E039ECA +:107BF000BE6532C1333E87113CB17F1DFAFF18E1EB +:107C000009EB59E0D6049C677C4E174338FCA182EF +:107C1000F3E771D99AE08175C517A802C221DE8009 +:107C20001FF4C3E1E7EE6238FEB81C4DA073375075 +:107C3000F74039AED025F0FC010E2F8C2306C38B04 +:107C400065EB6C0EE89F56FE084AA90FE57313EE2C +:107C50004961685F4F93DD242F4CFA6D5FBD7AE573 +:107C6000DA91FC85467B2BF31AF110DEBEC1DA45B2 +:107C7000F57372DBD44898F7B94491A1BF6DBB3559 +:107C8000407E51F84AA1F87E98FFD4F40FDF5BE103 +:107C90008EAD44BEF4B2E247BE63C6AD06E36E29C4 +:107CA00032E5D59A71B7C1F5A4703B64901FC4CB7F +:107CB00061713637F16933BE36D6EFBE729EF21867 +:107CC000E5170082E0B22689CBA90C3C6181767071 +:107CD0001653EAE662BD8BFCB289658C35037C02E3 +:107CE0008226623C4F7F385A41FF099334711F7ED0 +:107CF0003F673CF9FF4C3CA4E877892FC077F9BF78 +:107D00008D540590D3D36A662C46FFF050FE928BBB +:107D1000F8DB68F2EB626DD241CC330BD4661DC444 +:107D2000BCB441F905FB57980E654BF754DCDF37BF +:107D3000926FBD867CEB7D715E2AC9B55D5CAE99A4 +:107D4000ED4F6FF906F1A7DE96596F219D9FD9601F +:107D500071212D94B0FE8BE83CA8AAFCDAB71B6019 +:107D6000FEDFC2C36AA01F157F98F36D3D05F8576B +:107D70005D9D887A21FB91AC8AB7A15DDCB188E278 +:107D80009C9F46A968EFBF17D1BFD11D344E552522 +:107D9000B747AB2A45A3E4FC2A8B7917D13D150BD5 +:107DA000196B01F8AEB23151837E571D9548CE5EF6 +:107DB000A8AADB9A789D717AAB3637E2FB8E25361E +:107DC0009A5F6FEBCF73112EBD567F6E4C36E587F1 +:107DD000A752FB071C745FC02A50FEA2A07DB1F31E +:107DE000E623D87F7EC38CD48BC4E7781C6D95C501 +:107DF000952463FBED16867E9CDED6F16FE1F76776 +:107E00003659B93BCCD396BB0CF67BB5B11E98AFB7 +:107E100046ED2B22B9DFC7787F26559195EC217A64 +:107E2000B034CCD8867CA334DB3B5109D22B3A2426 +:107E3000D02BE0FBD60CAE57B46670BD42CA833D72 +:107E400003F4283DFB239E6FB114786E0C9E73548F +:107E5000EFA7738EC6FD20AD395CAFE8F0DAC2F44F +:107E60008A9E7DA8871FA90BD52B5AAD6D5CAFC824 +:107E7000ECCB2FC1EF7C22E3F62D9FCF71D03B706E +:107E80007E0D915A12C6011A19E70B8F56BA7D95CD +:107E9000C89F1499E21C5B2A8CB8627C2CED33B32A +:107EA000BCD17E6BB6F2BCE3D1F89090D1F73CEA3E +:107EB00043072DFCBE09339E360DD802AEA759B03C +:107EC000139C1EADF47C1FE7D3BCFAEF8B701DC36F +:107ED000F8A311374B91BA48CF1461FFE27E36E325 +:107EE000EFE1F3F2F81D240F991EC97A43E2D9FCA1 +:107EF000FDD5B2743AFFC6ECCE2CE45F71C67CCFE0 +:107F00007C36AB0EF7D9EF3F8B66F52E3C47E2256A +:107F1000661567C487D1DFC0FD0F2AF975E28CFCB6 +:107F2000ACB897B7917FE1DC83CC85FCC16CCF8C7A +:107F3000F63AF3EA81781A67F0FC70701CE1EC7C89 +:107F4000571DE62D34A449DEADAE90EF059227868D +:107F5000FF94E6290CEF7FAA6117C0AB3C2E7FAEE1 +:107F6000EFDFB0A9617EE22CCEC7E399F90BF2B343 +:107F70005950FE6874DEE65CBEDD558773718F2252 +:107F80000F0C3962F613AF84C90377B8BF8CE323B3 +:107F90001B0508F45F5A23503CC9BE327731D247E3 +:107FA0005FB3A022BF3B7FE05619FDA6F94DDC9ED2 +:107FB0002DD7051E27D6D9AFD09FB0D1C05FF98786 +:107FC0003DDBD05F57926401930FFAFB2DE8AB5075 +:107FD000DF5413E9D2A0C905E6A7C9E92D02F9FBD0 +:107FE0008A1B734FAD87F76B6EB3517E44BDB13FB3 +:107FF000E4AA34DA0F8122EBA6227C6639BB18BFD3 +:108000002B9DC526A35F63703D3FE276BD047FE8EC +:10801000BC911E6AC76F6A0AAD9786C597AD55A118 +:10802000F6BB52C542EE57C075C5C5FEE9E3302721 +:10803000DFCF53A51E71A4B88E8907338EDE9E6BE9 +:10804000C6E17B34D457E2E6D80C79A845E506C5ED +:10805000E58FCBAE3AF4BFB4E7D9FB317E96BAE2F6 +:108060005774BEEB94C749792B669CBE08FEE0BCF2 +:108070002B0F86CE332ECCAF11195637F9C5D7AAA0 +:1080800042CF639DAB9E4579DD265F085FCFCBA0D5 +:108090001FA29CFD69AD9D4A7FAD42E589DA242A85 +:1080A0005FA95519CAE353B559549EAE75D1F3D79C +:1080B0006AE750595EFD4D8679C6265C54C6E9F3E1 +:1080C0008271BFC4B9865ECA5FB85AC3FD5A752FA4 +:1080D0003D42F7FA5CD82FB86CF419F773790C3875 +:1080E0009534D84E3D04537D0BEC3E61CE5FDE1FD0 +:1080F000F54DF44785E46BA8E45F2AC6737888578A +:10810000839E4CFF5471B585CE5F1787E1A3729FA4 +:1081100075A88EEB0A7B6FEE1F4F185D9BF47723DB +:10812000799260E4D784C7817ED0B9B76407C0AFC5 +:108130006F7FF20CF41F555799711F2FE59B5574F3 +:1081400030EEFFF833E5BB244823E775D45671BD04 +:1081500061F47C9891E352DBFEC43C20B33C93DA9B +:1081600076D76CC0E384372C2E78C22C955D6F6275 +:108170007D7C8FC585F70A98F838077F477A956226 +:10818000EC745E6F2FEB49E27686B71BF50DDF6A64 +:1081900099911DC03A28BE7F72D97D1350BF391EF8 +:1081A00013A0FC81CEA95A32F281F65621247FA079 +:1081B00013F307008ECF1AF828C5FC01F8CE9AB049 +:1081C000E25B79D06FE7BEF194BFDD17D991BCCCEB +:1081D00039D4CE26324F97E1775C3E15F3C0D5E413 +:1081E0006550FFA1F17ED08E74F0F810FA1D49BEE3 +:1081F00018ED0F98F1B9561BD7D324B50ECF0DF655 +:10820000C664517EDD7355AA012795F2219E687DD3 +:108210002899826F46FE427BA4DB8EF1E4BE568B2A +:1082200082F0E8F5F17B1CF6B430F22B3FB1FFD6BB +:10823000FC29D85F1ECF6790D03D8F42ED1146726A +:10824000A3B7F503A10EEA472F3B291FA13721D081 +:108250008DF0392AA85EF45BEFA9ECABC3FCE73DD7 +:10826000AA44E7C1CF94F5D605E72F8064E9AE4470 +:1082700079A7D9F9F9FC9670FAF1BC9A01ED538B04 +:1082800078BE446B6B5F37D65B05D683F34935EE1A +:10829000B14ABD417E427B2BD7A399FEBB6FFB2524 +:1082A0008AA3931CEB6B11781C7DFF3D64B78C1681 +:1082B000EF3F5FCBCF4598754F4D28BD0EF5FFE1E1 +:1082C0008FB07F82B8995707F3EE64EEEE0CAE1FC5 +:1082D000F6937D85BFD943797EA9ABCC7B01F8733A +:1082E000D26F802E53EDF3F27E0CF3B40B4CC5F835 +:1082F00063EA8A50F898FA8F19A7FED8D8879F208A +:10830000DE791C90F450336F31C127521EA099378B +:1083100077C0883BB21583F7399D32F31D31AE1D0E +:1083200087F405F0FBF72A1E1FFE8F2AAE1FC755E4 +:10833000CA9A03F38241CDC37EC2F5B0D1F434337F +:10834000CEBDB6CA6D59973B74DFC0609CF95E4ED6 +:1083500057AF4D74D7A19DDF2B30EF56BC27C5E139 +:10836000AE43FD19DE6DAE9B41C3501C79107E619A +:10837000F8EF74703AD5DB05BE2F82E136192F076E +:1083800000C5CF42F7DAD03D0713D6A573BF1AF365 +:10839000167183486DC0784EAA4F988D7457E64C7D +:1083A0009363A02C8E17B661B924E5632BF9D92706 +:1083B000EA76F4D774365B5CE8AFE98C0C3CFF1EC0 +:1083C000AEA33992ECB2703AFADA3A6E27EE36EF93 +:1083D0003D44431DD6912930F3E711016E7B8CCAD1 +:1083E000BC753C7E9CE97375E3FD5A17B64F9F81BF +:1083F000D39BBD8ED1F34E07EF277C9C39C3C7A119 +:108400007B7DFA0C7A2CDF1733BF381BFB174CFE31 +:10841000ACB3A078716C81321FD777FB3AC31E9240 +:108420002ECC40FED119C3FBD34465FEB2207FE3BE +:10843000EDC678CCCEDB1D103A560E20FC410FC0A5 +:10844000F36965BE507952BC4FD0C7450DBF0F6868 +:108450008D1E5A5FBA4E30E838546F974CBEC938FB +:108460009E4B1AD28EEC1086EA09852AD53719DF81 +:10847000BF36913FEF5DCA3AB6A2FD6BF0D3E17C07 +:108480004325BE90DA24CCC4EFEF37E1235D207B97 +:10849000B504EC1AD413DAC7A52E1EA706F16FC6D1 +:1084A000E3B0B45FD2E85E2307F2E752E37B134EFA +:1084B000C7EF9E4CFEBE9305331DE89F58FDED347B +:1084C000BAAF221C0E37B25BC2F388630B43E3B032 +:1084D0005EA48F04BEBEE03C019F915FE04B133170 +:1084E00052C17C463E81991F70E8DD05C74C38A219 +:1084F000FD6233729DF756F1BC8243397B294F6090 +:108500003BD8F53C6FC04F79046CB6ACF2BC814FE0 +:10851000E9FC926F9F85EE8330D76DCB31EE9548A5 +:1085200019764F05E509D80CBA6C2E9A4CF3D86E23 +:10853000DCEBB8D75DE218295E3B5A7F6DEBB8DC07 +:108540006CD86FDEEFE7A5FCB8BDAB783F99FA8732 +:1085500094C7D08EF700C27845F75EA4739457CFC6 +:10856000F228C450DCB983DA9FDDB2BEF9E6F8A187 +:1085700078B339BE15E30441FEA95C87E7C97530BD +:10858000EEDE7837C51DAC182740E637467DAF3B99 +:10859000F709BA1F67EFBD22E509EFCDFD16D9F740 +:1085A00047278A24878FCEDDDC837AC4A709924BC4 +:1085B00057E9FCCA4E8C4FA6E758691DCCB81FD1AD +:1085C000B4370B5BFC163CCFCD0A99E13FD06D78F8 +:1085D0003F1D94B29844A515CB4297A0C7A13E93E6 +:1085E00052F99425486FB5DDFB8B05F4FD52FE7DF5 +:1085F000E4804EF2C3C134435F0A50FEE5384522A1 +:10860000F9D9BEA2A4793AB4B72E9B49F79DBC997B +:10861000CBCF2382FE13E309E24F49EBF97EF4C985 +:108620005ECAB73DD42E131DDA1EFBF40CC6A9D9C1 +:10863000F2081AAFB3FD6F9382CFF755AD97094E8D +:108640009DABF9BE3D27B2CAAE90F736EE7F33FA46 +:10865000BFAB8AEFF7492D3CDE9B5EEDA1FB2F7C83 +:108660002B24CACBD35BC40ECC83F5AD58B1EC1E22 +:10867000DC0F398B2441A5FCC5A5A4AFAD1009942E +:108680009DEE3716623EC73597108FF469CEDB97A3 +:10869000BA58427FCD3939303507D6B7697D66C8BB +:1086A0003E4FAC1143EF67B2699B0939B58CEE4D73 +:1086B0005958C3EBE9A05422BED3572CA47AA24F39 +:1086C000660EB4FB8BDA748C0BDB333CB3109E2745 +:1086D0006364F22FA51771FAF061C7B80EB793E47F +:1086E00065BA6F711BE6EFA6BF6B610E15FDE52E37 +:1086F000BA97A9017810D24B67CCBBAB783E26580D +:1087000092C4E702EBB17ED71F2708B8DFA5F53C7E +:10871000CFD8A18A21F74CD9D1EF0FF8EE6E9DFD8D +:108720006BD4D33A736D64D7CDD3DC549F572403F5 +:1087300080815EE7BE63C1FE3EBD067BF03AF190EC +:10874000D1E8D057C4E85C673BEB5981F8D00744C7 +:10875000929FF3FA7B880EE30AD4990807DF62F749 +:10876000043C27B6DFC0737BFCA57A3C07A7E70073 +:108770009DE23ADBEFA33C665FA2948BEDBF73AF43 +:10878000A803E6D8A1D6FB3A919FFCCF75128F576C +:1087900063BE33D2DFBD12CFD389774D5816E43F85 +:1087A0003BDABE780AEE63A06343AFF33CEFCF60E1 +:1087B0006CFE7F44F07CDF2A46FCE9A8C3F56BCC55 +:1087C000CFD573B91FF6955699E1FD587272D951FC +:1087D0001BD9C3F7FBDFC0715A39DE26D47CDA809F +:1087E000F4F496C0FAD1FEC5802FF79B7B1CFC3EAB +:1087F00015EE575866F0C3E3727F03D2E321C3AF8F +:10880000B0B725F6671867DF9B04DC0838D65F2D04 +:108810000CF52380DD22A03D9B6ED8B3B7F74B212A +:10882000762A73BAB6E2BAEFCA9F43F973E9617662 +:10883000EB84B0FA9CF586FDFAD5EF0DBB637DEEB7 +:1088400090DFE0508E8DF2A0F6D67CD2CCF363455B +:1088500092979DBE9257B3709F413D98CF86976F78 +:10886000197A78A76F39F93D5425D080FCABB39ABB +:10887000DF8FB4D7F7C92B583F54C9F3EDB75BDD91 +:1088800013509F8FDF378EF96761FF5B8A9035B891 +:10889000DDA28EE799DD5AB110CC67DEA9E5F9A912 +:1088A000475B78FFA3CDC3ECEF500D6FE773CF8C20 +:1088B0001CE93CF2BB467F83ED306F227B38BF0B57 +:1088C000EFD7AC9F36F4529FBB84FADF9BB3C8A1AD +:1088D000660FC99579853DF5686ECCCF01A9250E47 +:1088E000972B837CE7BB06DF69E1F549B06F913ECA +:1088F00027B997C7203D64AE90145499EDBE36CD8C +:1089000011C477F6467AF6637EFAA1654EDA277BC4 +:10891000AD5A15E5B32D9B2020FF3B19F3B764FF3B +:108920004E4A4914285EBF9EEB81D03FE7573EB1C7 +:10893000C381FCA59DE72B5D037E85F84ECFF62411 +:10894000E719F203F1140EB7D1F8D03CAD87F8184F +:10895000F11DE8B77B6539CDCFE44B9D2B65BE3F5C +:1089600073AD34CED1B917D6E33C3EFD6304C9994B +:10897000DB594FFD287EBFEBF225930F247DE47970 +:108980009EEE5534E0FF9D84DB26A8D0DFD1C8FEE3 +:1089900095C171A141FFC418E57F21E3FE9EF0F36C +:1089A0002C3F30E069ADD4BE8FFBE89F30612C17BF +:1089B000CF89B7D9918E9A3396DB912EA667EEB602 +:1089C000235D3477ED2EC07BC686CE857F62C138AD +:1089D0008C2D7326DDBB77749DE79FB09F413D2AA8 +:1089E000730B9D0F2F646D3AFA99315317EFD56DC4 +:1089F000CA78D08E76952343A37CA5ED993C5FE998 +:108A00007D633EAF4D6CA3384AB3A147677AEC74DF +:108A1000FEB73925E930EA03778A87331E47FBC85A +:108A200068FF7EC6F5F3EE9C46FE5B84A15739A530 +:108A30003686787A7FBD4ADF476484E6BFADCEE8EC +:108A40005A883751361B71F13B8DFBB7EEDC16733C +:108A500018F398CC7E7F618C7FA9D2FD0EAEFBCE41 +:108A60004450606662BFCCB47BBC687F1957D1B1FB +:108A70005F5B3DEF633BAD80D3AB2D89E75D5A99DA +:108A8000E6473D6C4E957606DF17321EEFC10BD6DA +:108A9000F0BC70F87A02EBB91EFABD4AEDFC7A28F8 +:108AA000AF18789BA6B4D17E99C644573DEECBB0A3 +:108AB00038D1B0B8CECB8A5682ED8C7875BD37F000 +:108AC000FC4E94DF5F317EBCB34AFB18E7D350E124 +:108AD000BE8AEB6888D9CBC87F3CC6B8F26B13B5A9 +:108AE00024A473534F6C30ECCFE3795A5130FDDB43 +:108AF0003670B8DB3670392D15598D7B1BEE544618 +:108B0000E2AB4F5778E40D41742929FCDE86A80DAD +:108B10001C4F37FAFEDD0A4F54E8F71EE2EB77CA26 +:108B20001C4F02C0AA3E79683FBECABC2D2B913FA4 +:108B300018F455F8FD779C48EF77CA1D196D41FC74 +:108B4000F546F050B3791E50BD2292BFED9C535CA8 +:108B5000417CAE81E76586EF67B344BF77307F43E2 +:108B6000BF77B0BE887EEFE03AFABD83DBA3DF3B80 +:108B7000F83DFABD83DF5FAAF4CC4478A0FF3BF850 +:108B800039FABF83BFDB5FE1CEC1764B26AEA5FBD2 +:108B90006012AAB45CAC7F05393F6F03C0A37CBEF2 +:108BA0009BE8A33181D3C57D2B2F937DD5181F3F23 +:108BB0002358AE9718F401785B148C376B3CC79B35 +:108BC0009ACDEF5FAD2FE2F68D79DFDC68F898671C +:108BD000E40BDC0EFC03CBF903E3A8BC63C041A5A6 +:108BE00036104765DE400C95F9033751B96020997E +:108BF000CA8503E92477170DA451B978E0EB542E08 +:108C000019984265C1C02C6AB774600695770E7CCE +:108C100083CA6F0ECCA5D25AE95E8DEB28DFFF1D0B +:108C200027CE7F67957B0DD69B9897EC25D86FC58F +:108C30001BC88FD2C6D05F56BA81F383E72AB552DC +:108C40007AFEB271FE50043ACAC17C154F15C27348 +:108C5000581C5939F547B47BA7567A36D27776BB7C +:108C60005D0ACE3B8967941FF5DD4A6D13BDFF3366 +:108C7000E7991C4FEB5F8D72E0B2C10F328B1E7310 +:108C80002C87F5351BFBFEF8CDA67EDB1F89FAF499 +:108C9000F955FC9C10F38D7C2FB1252CEF23C2C815 +:108CA000A7B0482E92079601D9BC07B615E173A765 +:108CB000EC7D7719F2FDC91657838A25F0F758E243 +:108CC000D3BB3670BEDF4670B4F2F3F8E7C3E2F40C +:108CD00000E727084EE1E7DF5F56FC0F05F15D80F6 +:108CE000F7F7A81D023CF85C7E0DCFB7FDAA707E99 +:108CF000AED2F0AF19F0180D2EE17037F90AACEFD3 +:108D0000195C9F5FE2F735D4ABCF6BE8C373F4EB2C +:108D10005A34ED6FCFB3F8DE36E0F647D3E8C50935 +:108D200078E002F6F9735F719FBF48743EBF87E435 +:108D30007F6B644F12DED7DC6AE5FBFDB5893D45EC +:108D4000EEA0EFDEDCC0F3FC7EB681CBC3579D5BAB +:108D50005F4197D2BC8C1E0B9673AA3C3FC3F9CDE2 +:108D60004FE95F804B9214B08430DE92D743F20417 +:108D7000F9FE2D519CEF978CB0FF9FAE2879335CA4 +:108D80006EE0394890BB6FFD29F40FFBF257443772 +:108D900063DC0741F8388FE39E562DE4676B00399A +:108DA00040E74A2BDC17B0BFD36AA9C9672F7E45BD +:108DB000F85FE1F07771399CC6F52FAB22EAE3A3A7 +:108DC000F8BD48C523CAC7E24F3604F92790CF62E1 +:108DD000BB11F8CEC048FB2188EF7C4670199DEF8F +:108DE0007CFEA7C15D09C9D3FEB27CE81C3E9A3B5C +:108DF000C487266CE4FED751F95075DC88F2D9821D +:108E00007224C80E1BCE87247A0FF84ED99880C9D9 +:108E1000DCA3F297F48D23F0F111F8CB2D1BFF9C0E +:108E2000FCC558E768EB0D87A78DDD2E1C463D4637 +:108E300095282E17A7EC7AF152DC48ED791E0BBA73 +:108E400062BF20BFE0C8F74765BE527308F37EAE2D +:108E5000E912E56DE9F9DE7FC0BABED5A6A01EFC19 +:108E6000C4B8C70EE139A36AC9AE704FACF756E477 +:108E7000677B0CFB19EAD3A96EED27BE6063ABA339 +:108E800083E30FCB3672FE62CEF346F3FAF70A6D38 +:108E900039C23B4EF630F4EF3E1EC3EF2B579DCA4E +:108EA0004ABCE77D87C2FFDD97B825F731BA5FF38B +:108EB00016EE2F044436A17D25C589FC1C9FA465B0 +:108EC000E13CA4498CDF67CA16FE01CF91A8CC43D0 +:108ED000DFED58C8EF896ACEBAFEFDE68DB5A1F187 +:108EE000C561F4985CD6867EA3B67889ECDC6D49C2 +:108EF000D2528C27D63B79B0518E148DF1F31F429C +:108F00003F95CA0294EF6E997B7DBD697B6DE879D0 +:108F10005C9BDAAF217FB2E25AD19F9B907824F814 +:108F2000FC76DD262ED71B0DBBCB96A253FED78E2B +:108F300029E5B310DDF6142FEB73E23DF63AEB852D +:108F400072474C04F981175956B5A1BDFF78526C90 +:108F50000C9FFF270CE34F7FB789EB812DC67D6AFD +:108F60007B8CFC71A7E2BC80F70EC5D95D8217FD32 +:108F70003785A1F7AB45BADA42EA52B4E9B70FD068 +:108F8000FDCC56CCE386F5EFCAB948E7CB54D6639F +:108F9000D48D7D6FF8D94C7F79385C761A70D95DA5 +:108FA0006B37E88FC7DD6317F2FBF877A682DC83A7 +:108FB000715A6FEFA17BBFA3E2EDAE0268B567AE59 +:108FC0009BB5407D572EF7DB33D6C582F3F277E5AC +:108FD0005EA4F985CFC77AE20AE56B474901BAF783 +:108FE000390AE08379DAEDC63C96CCF3D215C55147 +:108FF000EF5AC88F18B582E327611EEBC07B43840C +:10900000B8CFC85FBC6B259DC56592AD9FE4F3B832 +:10901000397D67F1B2F5F8793F66E8171CCC473225 +:10902000F2CFCC7CA4C415A1FFBE406CD83DD0E3E8 +:10903000C2EE89669655D7F58F559F75FCEC95A0C5 +:10904000FEBA3786FA116FF4FD1F6AED3F7B05E823 +:10905000E0F19CEBD3EFCEDA39B46F1EAFD5084EFA +:10906000BB6A0BA8FC01CAD5A0FCE229867F45AAF1 +:10907000ED67CBA18CF6FF804D067C7EB091D3F3DB +:109080000F6AED4270FB88638CF2E4817B0A740FF7 +:10909000F33146FEDD06E513BACFE5DAC2C9472C47 +:1090A000417E06B31FB3FE9481B70685FBFD9E5A31 +:1090B000C8EF1F7F4AF244C45E673DB7EC0BB50BA7 +:1090C000CDE7E6BE18DC2702D33058BB2786F3C3B2 +:1090D000167F33E5D746BF9B7EC411B45F3F31E4B2 +:1090E0005F1C3262540CE785E61DEE9A0A4B9C7EAB +:1090F000E3FD65F6F7F85C968AED772DE271C3A87B +:10910000F94AF2F2A0F57837F1F11E8FE17AC9CE73 +:10911000892C79B973F8FB36238EDCE66045CF8D58 +:10912000000FEF267E9E61A7919F60E26FE8BD9DD4 +:10913000FAF16E32F8BEAAD5E1BFC311A7D9FBEB95 +:10914000296FF4AC7E2987CE81D3B9EDF0F5D9D85B +:1091500022E6403C6673FF4EF87AC7B1961EC1C83E +:10916000C7F8CC3CAF4EFBE00DFD52FCD079F0715E +:10917000AED0FBD4BFECBEC8D864E4F3399883EF1B +:109180008B42B111E67D6D1EFF77320042E248E767 +:109190007ACCFDC1EEB8FEFE08BF6F21BC8C8A0AF6 +:1091A00078D80CC6BEB1E9A6871AE6119CC9CFB91A +:1091B00070D3CD0FE179C18765EDD64DB9E8E632C0 +:1091C000EE839B238F781F5C5444BFC73DC23C761F +:1091D000C8F9776CE276AF88DF87E3D12C0B0DBA44 +:1091E00008A7F338BC5F7326E259E5FEEC1BD029D3 +:1091F000C08FF8DC3537A37FE7403F2108837A131F +:10920000E565C354CCFBB684A1FBD2C3F1928CDEDE +:10921000658B717E0FF487892C40F5491805A52BC5 +:1092200017552AD3F19C453A9E1BF250FD16A653C2 +:1092300039857550F975E6A7F753D15FC89D8C74D1 +:109240002E78BA9FD3DD0CA652607916D32C8C5C95 +:10925000FD1EAADFCA742AE732CF8B97609EBBE659 +:1092600096CF40B9BC6E18BD8C8D8FFEDD26C6CF63 +:10927000FB25F1B88714F7CC88F7A7BE5BE17968C6 +:1092800053101F8BC8E2FE98D1F0D660C8EF46ABF2 +:10929000DB4DF74E2548749F5063DAC8F72D3D6CBF +:1092A000E86916AB8BF2ACAC86DED2F0BB1FFF18C0 +:1092B000EFC36B766A5EF223C34BD4C74CBDAAE9F9 +:1092C00077C77F5CE7FCCFD74B7F22697B36258C45 +:1092D000F07E8CFEBFA7F0AF7351CFD70E623FE692 +:1092E000F94FBB71FFEDE0BDFE95504F1EBA1F3721 +:1092F000CAC35CF81EF4FE7FE0E373BF6FBD66DC9B +:109300003769D43D1EA3BE2F764C7A3B2BF4AE2496 +:10931000A5C6B0E70E6CF23C47FB4F63AA146CCFB6 +:10932000AD3A45F73EC2FAFF09DF2B37BAEF519D40 +:109330001883F27B701F8D113EBF41B90AFBF8F80C +:10934000637E19F9C306FFAB741E61C3F79FA5F3D3 +:109350007C6B0CBB79BD415FAC2697E79D7BC4134A +:10936000B88E8FBAD28FE03EF9A8CB42FEFD8F1A9D +:10937000D2E8DF6BFDE899AB5C0EC37BCE27EBCC6C +:109380007C37CA27918C75B2424D9B4BF62DBF2F6F +:10939000C494CB1F3D730F97CB5D16432EF33C96C1 +:1093A000A7BA6E5191EED67EB180FD1D7EB7C0EE9C +:1093B000C2F3386B9FF8B7A92541FB2C5C4EE37DC7 +:1093C0008B3FC1F9B864CA0F32E1380C2ECAC8FF0E +:1093D0004E8B39DFCB7BBF4EFA74C30DFE9D16A9B1 +:1093E000CB46E7097E6BDC073AACDF307C87E3F3E2 +:1093F000C026F755C4BBD0C5EFFF1C86DF9A84B1E9 +:109400009D331B63BB16C6F10C13253D3AC63F972F +:10941000F45D8BE6D250CF8A59E862C1FE9D85F794 +:10942000E6CB7F03F38B911401F9448C6AD0876BF0 +:1094300066C83E10FE460CD1BBCCF1CCFAFF05F15C +:1094400090451C7078000000000000000000000043 +:10945000000000400000000000000000000000408C +:1094600000000000000000000000002800000000D4 +:1094700000000000000000100000000000000000DC +:10948000000000400000000000000000000000108C +:1094900000000000000000000000000800000000C4 +:1094A00000000000000000000000000000000000BC +:1094B0000000003D00000000000000000000003C33 +:1094C000000000000000000000000000000000009C +:1094D0000000000000000008000000000000000084 +:1094E0000000000000000000000000000000000C70 +:1094F00000000000000000000000000E000000005E +:109500000000000000000004000000000000000057 +:109510000000001800000000000000000000001C17 +:1095200000000000000000000000001C000000001F +:109530000000000000000013000000000000000018 +:109540000000003E000000000000000000000001DC +:109550000000000000000000000000020000000009 +:1095600000000000000000010000000000000000FA +:10957000000000100000000000000000000000508B +:1095800000000000000000000000000000000000DB +:1095900000000000000000030000000000000000C8 +:1095A000000000AB00000000000000000000000808 +:1095B00000000000000000000000C00000100000DB +:1095C000000000080000C0080010000000000002B9 +:1095D0000000C000001000000000001000009C0807 +:1095E00000040000000000040000C0800010000023 +:1095F000000000040000C08800100000000000020D +:109600000000C0800010000000000010000093382F +:109610000001000400000001000093400000000071 +:109620000000000200009348000000000000000855 +:109630000000934C00000000000000020000935066 +:1096400000000000000000080000969800400000A4 +:109650000000004000009358008000000000004817 +:1096600000009458004000000000000800009468CA +:109670000040000000000018000630100028000024 +:1096800000000028000099500008000000000001C0 +:1096900000009951000800000000000100009952EC +:1096A0000008000000000001000020080010000079 +:1096B0000000001000002000000000000000000872 +:1096C00000009BB80000000000000008000000013E +:1096D0000000000000000000000000020000000088 +:1096E0000000000000000003000000000000000077 +:1096F0000000000400000000000000000000000561 +:109700000000000000000000000000060000000053 +:109710000000000000000007000000000000000042 +:109720000000000800000000000000000000000928 +:1097300000000000000000000000000A000000001F +:10974000000000000000000B00000000000000000E +:109750000000000C000000000000000000000001FC +:1097600000000000000000000000000900000000F0 +:1097700000000000000000020000000000000000E7 +:109780000000C4C000000000000000200000C4E68B +:109790000000000000000001000060000020000048 +:1097A0000000002000007300000800000000000816 +:1097B00000009BF0000000000000000100009B90F2 +:1097C000000000000000000800009B930000000063 +:1097D0000000000100009B9100000000000000015B +:1097E00000009B96000000000000000100009B9715 +:1097F00000000000000000008000000000000000E9 +:1098000000000000800000000000000000000000D8 +:109810000000000000000000000000000000000048 +:109820000000000000000000000000000000000038 +:109830000000000000000000000000000000000028 +:109840000000000000000000000000000006000012 +:10985000000000000000002000009B9800000000B5 +:109860000000000100009BD800000000000000087C +:1098700000000053000000000000000000009BE01A +:10988000000000000000000200009BE40000000057 +:109890000000000100009BE5000000000000000146 +:1098A00000000009000000000000000000000001AE +:1098B0000000000000000000000000440000000064 +:1098C0000000000000000001000000000000000097 +:1098D00000000050000000000000000000000089AF +:1098E00000000000000000008000000000000000F8 +:1098F0000000000000000000000000000000000068 +:10990000000016C800000000000000080000200849 +:109910000010000000000010000020000000000007 +:1099200000000008000017D000080000000000013F +:10993000000017D10008000000000001000017D24D +:109940000008000000000001000620780038000038 +:1099500000000038000016E00000000000000002D7 +:10996000000016E200000000000000020000A0401D +:109970000000000000000020800000000000000047 +:10998000000000000000E0000020000000000020B7 +:109990000000F3000008000000000008000016F8B6 +:1099A00000000000000000D80000173F0000000089 +:1099B0000000000100001717000000000000000177 +:1099C0008000000000000000000000008000000097 +:1099D0000000000000000000000000000000000087 +:1099E0000000000000000000000000000000000077 +:1099F0000000000000000000000000000000000067 +:109A00000000000000000000000000000000000056 +:109A100000000000000017780000000000000001B6 +:109A2000000017B80000000000000008000000510E +:109A30000000000000000000000017A0000000006F +:109A400000000004000017A4000000000000000453 +:109A5000000017A80000000000000004000017AC80 +:109A6000000000000000000800001798000000003F +:109A700000000008000017C80000000000000002FD +:109A80000006000000400000000000400000C00090 +:109A900000400000000000400000C02E0040000018 +:109AA000000000010000C0000040000200000001B2 +:109AB0000000C00100400002000000000000E200C1 +:109AC00000200000000000200000E2040002000866 +:109AD00000200002800000000000000000000000E4 +:109AE0000000E20000080020000000040000F50073 +:109AF00000280000000000280000F64000100000D0 +:109B0000000000100000F64A0010000000000001F4 +:109B10000000F6C000200000000000200000F6C099 +:109B200000020020000000020000F30000400000DE +:109B3000000000400000200800100000000000109D +:109B4000000020000000000000000008000011A834 +:109B50000008000000000001000011A9000800003A +:109B600000000001000011AA000800000000000130 +:109B70000000400000200004000000100000590018 +:109B800000300018000000100000590800300018D4 +:109B90000000000200005700000800000000000163 +:109BA00000005701000800000000000100001158EB +:109BB0000000000000000001000011600000000033 +:109BC00000000010000011AC0008000000000004BC +:109BD00000004000002000000000002000005300B2 +:109BE0000010000000000010000000000000000055 +:109BF0000000000000000000000000000000000065 +:109C00000000000000000000000000000000000054 +:109C100000000000000000000000147000000000C0 +:109C200000000001000014B0000000000000000867 +:109C30000000005000000000000000000000147848 +:109C400000000000000000040000147C0000000080 +:109C50000000000400001480000000000000000468 +:109C600000001484000000000000000400001488BC +:109C7000000000000000000800002AF00080000042 +:109C80000000008000000001000000000000000053 +:109C9000000020080010000000000010000020005C +:109CA000000000000000000800002C700008000008 +:109CB0000000000100002C710008000000000001FD +:109CC00000002C7200080000000000010000415854 +:109CD0000038000000000038800000000000000094 +:109CE0000000000000002C440008000000000002FA +:109CF00000002C46000800000000000200002C5468 +:109D0000001000000000000400002EB00000000061 +:109D10000000002000006000002000000000002083 +:109D200000007300000800000000000800000000B0 +:109D30000000000000000000000000000000000023 +:109D40000000000000000000000000000000000013 +:109D500000000000000000000000000000002F587C +:109D6000000000000000000100002F98000000002B +:109D7000000000080000005000000000000000008B +:109D800000002F80000000000000000400002F846D +:109D9000000000000000000400002F880000000008 +:109DA0000000000400002F8C0000000000000008EC +:109DB00000002FA80000000000000002800000004A +:109DC0000000000000000000800000000000000013 +:109DD0000000000080000000000000000000000003 +:109DE00000003128000000000000000800062A20C2 +:109DF00026000040000000080000A0000000000055 +:109E000000002000000040C1000000000000000130 +:109E1000000040F000000000000000028000000090 +:109E200000000000000000000000600000200000B2 +:109E300000000008000040000008000000000001D1 +:109E40000000400100080000000000010000404048 +:109E50000008000400000002000040600008000448 +:109E60000000000400004080000800000000000422 +:109E70000000400000080000000000040000400452 +:109E80000008000000000004000040400000000046 +:109E9000000000080000404800000000000000082A +:109EA0000000800000000000000000100000504092 +:109EB000000100040000000100005000000000004C +:109EC0000000002000005008001000000000000406 +:109ED0000000500C0010000000000001000052C7FC +:109EE0000000000000000001000052C60000000059 +:109EF00000000001000030000040002000000004CD +:109F00000000300400400020000000040000300881 +:109F100000400020000000020000300A0040002045 +:109F2000000000020000300C004000200000000192 +:109F30000000300D00400020000000010000300E45 +:109F40000040002000000001000030100040002010 +:109F50000000000400003014004000200000000455 +:109F60000000301800400020000000040000301CF9 +:109F700000400020000000040000C000010000803C +:109F8000000800040000C004010000800008000474 +:109F90000000000A00000000000000000000C0688F +:109FA00001000080000000010000C0690100008085 +:109FB000000000010000C06C0100008000000002F1 +:109FC0000000C06E01000080000000020000C070B0 +:109FD00001000080000000040000C0740100008047 +:109FE000000000040000C0660100008000000002C4 +:109FF0000000C06401000080000000010000C0609B +:10A0000001000080000000020000C062010000802A +:10A01000000000020000C0500100008000000004A9 +:10A020000000C05401000080000000040000C0587F +:10A0300001000080000000040000C05C01000080FE +:10A04000000000040000C07C01000080000000014E +:10A050000000C07D01000080000000010000101819 +:10A06000001000000000000400001090001000002C +:10A070000000000400001098001000000000000420 +:10A08000000011100000000000000002000011128A +:10A090000000000000000002000011140000000099 +:10A0A0000000000200001116000000000000000285 +:10A0B0000000604000080000000000020000604254 +:10A0C00000080000000000020000604400080000DA +:10A0D00000000002000060460008000000000002CE +:10A0E0000000608000080000000000080000600020 +:10A0F00000080000000000020000600200080000EC +:10A1000000000001000060040008000000000002E0 +:10A11000000060C0000800000000000800006100AE +:10A1200000080000000000040000610400080000B6 +:10A130000000000100006140000800000000000273 +:10A14000000061440008000000000002000061807F +:10A1500000080000000000040000300000080000BB +:10A1600000000002000030020008000000000001B2 +:10A170000000300400080000000000020000304031 +:10A180000008000000000002000030440008000049 +:10A19000000000020000304600080000000000023D +:10A1A0000000366000080000000000080000308059 +:10A1B00000080000000000020000308400080000D9 +:10A1C00000000002000036A00008000000000008A7 +:10A1D00000008040000800000000000100008041F5 +:10A1E000000800000000000100008042000800009C +:10A1F0000000000100008043000800000000000192 +:10A200000000800000080000000000020000800242 +:10A2100000080000000000010000800400080000A9 +:10A2200000000002000080C00008000000000002E2 +:10A23000000080C20008000000000002000080C48E +:10A2400000080000000000020000808000080000FC +:10A2500000000001000080810008000000000001F3 +:10A2600000008082000800000000000100008083E0 +:10A2700000080000000000010000808400080000C9 +:10A2800000000001000080850008000000000001BF +:10A29000000080860008000000000001000060004F +:10A2A000000800000000000200006002000800003A +:10A2B000000000010000600400080000000000022F +:10A2C0000000604200C00018000000020000604072 +:10A2D00000C00018000000020000604C00C0001820 +:10A2E000000000080000604400C0001800000008E2 +:10A2F0000000605700C0001800000001000060541A +:10A3000000C00018000000020000605600C00018E5 +:10A310000000000100006640000800000000000886 +:10A32000000066800008000000000008000066C011 +:10A3300000080000000000080000DA820018000099 +:10A34000000000020000DBA0000000000000000090 +:10A350000000E00000000000000000040000D10048 +:10A3600000000000000000040000D1040000000014 +:10A37000000000040000D1080000000000000004FC +:10A380000000D10C00000000000000040000D1100B +:10A3900000000000000000040000D11400000000D4 +:10A3A000000000040000D1180000000000000004BC +:10A3B0000000D1000000000000000020000092809A +:10A3C0000000000000000004000092800000000077 +:10A3D000000000280000805000A8000000000001DC +:10A3E0000000805400A80000000000010000800070 +:10A3F000000000000000005000008050000000003D +:10A4000000000010000096000000000000000004A2 +:10A41000000094000000000000000004000094040C +:10A42000000000000000000400009408000000008C +:10A43000000000040000940C000000000000000474 +:10A4400000009410000000000000000400009414BC +:10A45000000000000000000400009418000000004C +:10A460000000000400009400000000000000004014 +:10A47000000094200000000000000004000094246C +:10A48000000000000000000400009428000000000C +:10A49000000000040000941C000000000000000404 +:10A4A0000000943000000000000000040000942C24 +:10A4B00000000000000000040000943400000000D0 +:10A4C000000000040000928400000000000000046E +:10A4D0000000928000000000000000040000929044 +:10A4E0000000000000000004000092A40000000032 +:10A4F0000000000400009438000000000000000488 +:10A500000000943C00000000000000040000B98836 +:10A5100000000000000000000000D000000000006B +:10A52000000000040000B100000000000000000472 +:10A530000000B10400000000000000040000B108A9 +:10A5400000000000000000040000B1000000000056 +:10A55000000000100000BCB000000000000000047B +:10A560000000BCB400000000000000040000BCB00B +:10A5700000000000000000480000D8580000000063 +:10A58000000000040000D85000000000000000049B +:10A590000000D85400000000000000040000D85C57 +:10A5A00000000000000000040000D850000000007F +:10A5B000000000100000D84000000000000000046F +:10A5C0000000D84400000000000000040000D84053 +:10A5D00000000000000000080000D4C800000000D7 +:10A5E000000000080000D4D8000000000000008037 +:10A5F0000000001000000000000000000000D4D89F +:10A600000000000000000008000000000000000042 +:08A61000070802000000000031 +:00000001FF --- linux-ppc-3.8.0.orig/block/partition-generic.c +++ linux-ppc-3.8.0/block/partition-generic.c @@ -249,11 +249,11 @@ if (!part) return; - blk_free_devt(part_devt(part)); rcu_assign_pointer(ptbl->part[partno], NULL); rcu_assign_pointer(ptbl->last_lookup, NULL); kobject_put(part->holder_dir); device_del(part_to_dev(part)); + blk_free_devt(part_devt(part)); hd_struct_put(part); } @@ -418,7 +418,7 @@ int p, highest, res; rescan: if (state && !IS_ERR(state)) { - kfree(state); + free_partitions(state); state = NULL; } @@ -525,7 +525,7 @@ md_autodetect_dev(part_to_dev(part)->devt); #endif } - kfree(state); + free_partitions(state); return 0; } --- linux-ppc-3.8.0.orig/block/scsi_ioctl.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/block/blk-cgroup.c +++ linux-ppc-3.8.0/block/blk-cgroup.c @@ -790,10 +790,10 @@ if (!blkg) return -ENOMEM; - preloaded = !radix_tree_preload(GFP_KERNEL); - blk_queue_bypass_start(q); + preloaded = !radix_tree_preload(GFP_KERNEL); + /* make sure the root blkg exists and count the existing blkgs */ spin_lock_irq(q->queue_lock); --- linux-ppc-3.8.0.orig/block/genhd.c +++ linux-ppc-3.8.0/block/genhd.c @@ -25,7 +25,7 @@ struct kobject *block_depr; /* for extended dynamic devt allocation, currently only one major is used */ -#define MAX_EXT_DEVT (1 << MINORBITS) +#define NR_EXT_DEVT (1 << MINORBITS) /* For extended devt allocation. ext_devt_mutex prevents look up * results from going away underneath its user. @@ -422,17 +422,18 @@ do { if (!idr_pre_get(&ext_devt_idr, GFP_KERNEL)) return -ENOMEM; + mutex_lock(&ext_devt_mutex); rc = idr_get_new(&ext_devt_idr, part, &idx); + if (!rc && idx >= NR_EXT_DEVT) { + idr_remove(&ext_devt_idr, idx); + rc = -EBUSY; + } + mutex_unlock(&ext_devt_mutex); } while (rc == -EAGAIN); if (rc) return rc; - if (idx > MAX_EXT_DEVT) { - idr_remove(&ext_devt_idr, idx); - return -EBUSY; - } - *devt = MKDEV(BLOCK_EXT_MAJOR, blk_mangle_minor(idx)); return 0; } @@ -519,7 +520,7 @@ ddev->parent = disk->driverfs_dev; - dev_set_name(ddev, disk->disk_name); + dev_set_name(ddev, "%s", disk->disk_name); /* delay uevents, until we scanned partition table */ dev_set_uevent_suppress(ddev, 1); @@ -646,7 +647,6 @@ disk_part_iter_exit(&piter); invalidate_partition(disk, 0); - blk_free_devt(disk_to_dev(disk)->devt); set_capacity(disk, 0); disk->flags &= ~GENHD_FL_UP; @@ -664,6 +664,7 @@ if (!sysfs_deprecated) sysfs_remove_link(block_depr, dev_name(disk_to_dev(disk))); device_del(disk_to_dev(disk)); + blk_free_devt(disk_to_dev(disk)->devt); } EXPORT_SYMBOL(del_gendisk); --- linux-ppc-3.8.0.orig/block/blk-sysfs.c +++ linux-ppc-3.8.0/block/blk-sysfs.c @@ -229,6 +229,8 @@ unsigned long val; \ ssize_t ret; \ ret = queue_var_store(&val, page, count); \ + if (ret < 0) \ + return ret; \ if (neg) \ val = !val; \ \ --- linux-ppc-3.8.0.orig/block/partitions/check.c +++ linux-ppc-3.8.0/block/partitions/check.c @@ -14,6 +14,7 @@ */ #include +#include #include #include @@ -106,18 +107,45 @@ NULL }; +static struct parsed_partitions *allocate_partitions(struct gendisk *hd) +{ + struct parsed_partitions *state; + int nr; + + state = kzalloc(sizeof(*state), GFP_KERNEL); + if (!state) + return NULL; + + nr = disk_max_parts(hd); + state->parts = vzalloc(nr * sizeof(state->parts[0])); + if (!state->parts) { + kfree(state); + return NULL; + } + + state->limit = nr; + + return state; +} + +void free_partitions(struct parsed_partitions *state) +{ + vfree(state->parts); + kfree(state); +} + struct parsed_partitions * check_partition(struct gendisk *hd, struct block_device *bdev) { struct parsed_partitions *state; int i, res, err; - state = kzalloc(sizeof(struct parsed_partitions), GFP_KERNEL); + state = allocate_partitions(hd); if (!state) return NULL; state->pp_buf = (char *)__get_free_page(GFP_KERNEL); if (!state->pp_buf) { - kfree(state); + free_partitions(state); return NULL; } state->pp_buf[0] = '\0'; @@ -128,10 +156,9 @@ if (isdigit(state->name[strlen(state->name)-1])) sprintf(state->name, "p"); - state->limit = disk_max_parts(hd); i = res = err = 0; while (!res && check_part[i]) { - memset(&state->parts, 0, sizeof(state->parts)); + memset(state->parts, 0, state->limit * sizeof(state->parts[0])); res = check_part[i++](state); if (res < 0) { /* We have hit an I/O error which we don't report now. @@ -161,6 +188,6 @@ printk(KERN_INFO "%s", state->pp_buf); free_page((unsigned long)state->pp_buf); - kfree(state); + free_partitions(state); return ERR_PTR(res); } --- linux-ppc-3.8.0.orig/block/partitions/check.h +++ linux-ppc-3.8.0/block/partitions/check.h @@ -15,13 +15,15 @@ int flags; bool has_info; struct partition_meta_info info; - } parts[DISK_MAX_PARTS]; + } *parts; int next; int limit; bool access_beyond_eod; char *pp_buf; }; +void free_partitions(struct parsed_partitions *state); + struct parsed_partitions * check_partition(struct gendisk *, struct block_device *); --- linux-ppc-3.8.0.orig/drivers/Makefile +++ linux-ppc-3.8.0/drivers/Makefile @@ -130,6 +130,7 @@ #common clk code obj-y += clk/ +obj-$(CONFIG_MAILBOX) += mailbox/ obj-$(CONFIG_HWSPINLOCK) += hwspinlock/ obj-$(CONFIG_NFC) += nfc/ obj-$(CONFIG_IOMMU_SUPPORT) += iommu/ --- linux-ppc-3.8.0.orig/drivers/Kconfig +++ linux-ppc-3.8.0/drivers/Kconfig @@ -134,6 +134,8 @@ source "drivers/clocksource/Kconfig" +source "drivers/mailbox/Kconfig" + source "drivers/iommu/Kconfig" source "drivers/remoteproc/Kconfig" @@ -158,4 +160,6 @@ source "drivers/ipack/Kconfig" +source "drivers/net/dpa/NetCommSw/Kconfig" + endmenu --- linux-ppc-3.8.0.orig/drivers/char/virtio_console.c +++ linux-ppc-3.8.0/drivers/char/virtio_console.c @@ -152,7 +152,8 @@ spinlock_t ports_lock; /* To protect the vq operations for the control channel */ - spinlock_t cvq_lock; + spinlock_t c_ivq_lock; + spinlock_t c_ovq_lock; /* The current config space is stored here */ struct virtio_console_config config; @@ -277,9 +278,12 @@ unsigned long flags; spin_lock_irqsave(&portdev->ports_lock, flags); - list_for_each_entry(port, &portdev->ports, list) - if (port->cdev->dev == dev) + list_for_each_entry(port, &portdev->ports, list) { + if (port->cdev->dev == dev) { + kref_get(&port->kref); goto out; + } + } port = NULL; out: spin_unlock_irqrestore(&portdev->ports_lock, flags); @@ -575,11 +579,14 @@ vq = portdev->c_ovq; sg_init_one(sg, &cpkt, sizeof(cpkt)); + + spin_lock(&portdev->c_ovq_lock); if (virtqueue_add_buf(vq, sg, 1, 0, &cpkt, GFP_ATOMIC) == 0) { virtqueue_kick(vq); while (!virtqueue_get_buf(vq, &len)) cpu_relax(); } + spin_unlock(&portdev->c_ovq_lock); return 0; } @@ -748,6 +755,10 @@ port = filp->private_data; + /* Port is hot-unplugged. */ + if (!port->guest_connected) + return -ENODEV; + if (!port_has_data(port)) { /* * If nothing's connected on the host just return 0 in @@ -764,7 +775,7 @@ if (ret < 0) return ret; } - /* Port got hot-unplugged. */ + /* Port got hot-unplugged while we were waiting above. */ if (!port->guest_connected) return -ENODEV; /* @@ -934,13 +945,25 @@ if (is_rproc_serial(port->out_vq->vdev)) return -EINVAL; + /* + * pipe->nrbufs == 0 means there are no data to transfer, + * so this returns just 0 for no data. + */ + pipe_lock(pipe); + if (!pipe->nrbufs) { + ret = 0; + goto error_out; + } + ret = wait_port_writable(port, filp->f_flags & O_NONBLOCK); if (ret < 0) - return ret; + goto error_out; buf = alloc_buf(port->out_vq, 0, pipe->nrbufs); - if (!buf) - return -ENOMEM; + if (!buf) { + ret = -ENOMEM; + goto error_out; + } sgl.n = 0; sgl.len = 0; @@ -948,12 +971,17 @@ sgl.sg = buf->sg; sg_init_table(sgl.sg, sgl.size); ret = __splice_from_pipe(pipe, &sd, pipe_to_sg); + pipe_unlock(pipe); if (likely(ret > 0)) ret = __send_to_port(port, buf->sg, sgl.n, sgl.len, buf, true); if (unlikely(ret <= 0)) free_buf(buf, true); return ret; + +error_out: + pipe_unlock(pipe); + return ret; } static unsigned int port_fops_poll(struct file *filp, poll_table *wait) @@ -1021,14 +1049,14 @@ struct port *port; int ret; + /* We get the port with a kref here */ port = find_port_by_devt(cdev->dev); + if (!port) { + /* Port was unplugged before we could proceed */ + return -ENXIO; + } filp->private_data = port; - /* Prevent against a port getting hot-unplugged at the same time */ - spin_lock_irq(&port->portdev->ports_lock); - kref_get(&port->kref); - spin_unlock_irq(&port->portdev->ports_lock); - /* * Don't allow opening of console port devices -- that's done * via /dev/hvc @@ -1500,14 +1528,6 @@ port = container_of(kref, struct port, kref); - sysfs_remove_group(&port->dev->kobj, &port_attribute_group); - device_destroy(pdrvdata.class, port->dev->devt); - cdev_del(port->cdev); - - kfree(port->name); - - debugfs_remove(port->debugfs_file); - kfree(port); } @@ -1541,12 +1561,14 @@ spin_unlock_irq(&port->portdev->ports_lock); if (port->guest_connected) { + /* Let the app know the port is going down. */ + send_sigio_to_port(port); + + /* Do this after sigio is actually sent */ port->guest_connected = false; port->host_connected = false; - wake_up_interruptible(&port->waitqueue); - /* Let the app know the port is going down. */ - send_sigio_to_port(port); + wake_up_interruptible(&port->waitqueue); } if (is_console_port(port)) { @@ -1565,6 +1587,14 @@ */ port->portdev = NULL; + sysfs_remove_group(&port->dev->kobj, &port_attribute_group); + device_destroy(pdrvdata.class, port->dev->devt); + cdev_del(port->cdev); + + kfree(port->name); + + debugfs_remove(port->debugfs_file); + /* * Locks around here are not necessary - a port can't be * opened after we removed the port struct from ports_list @@ -1715,23 +1745,23 @@ portdev = container_of(work, struct ports_device, control_work); vq = portdev->c_ivq; - spin_lock(&portdev->cvq_lock); + spin_lock(&portdev->c_ivq_lock); while ((buf = virtqueue_get_buf(vq, &len))) { - spin_unlock(&portdev->cvq_lock); + spin_unlock(&portdev->c_ivq_lock); buf->len = len; buf->offset = 0; handle_control_message(portdev, buf); - spin_lock(&portdev->cvq_lock); + spin_lock(&portdev->c_ivq_lock); if (add_inbuf(portdev->c_ivq, buf) < 0) { dev_warn(&portdev->vdev->dev, "Error adding buffer to queue\n"); free_buf(buf, false); } } - spin_unlock(&portdev->cvq_lock); + spin_unlock(&portdev->c_ivq_lock); } static void out_intr(struct virtqueue *vq) @@ -1996,10 +2026,12 @@ if (multiport) { unsigned int nr_added_bufs; - spin_lock_init(&portdev->cvq_lock); + spin_lock_init(&portdev->c_ivq_lock); + spin_lock_init(&portdev->c_ovq_lock); INIT_WORK(&portdev->control_work, &control_work_handler); - nr_added_bufs = fill_queue(portdev->c_ivq, &portdev->cvq_lock); + nr_added_bufs = fill_queue(portdev->c_ivq, + &portdev->c_ivq_lock); if (!nr_added_bufs) { dev_err(&vdev->dev, "Error allocating buffers for control queue\n"); @@ -2150,7 +2182,7 @@ return ret; if (use_multiport(portdev)) - fill_queue(portdev->c_ivq, &portdev->cvq_lock); + fill_queue(portdev->c_ivq, &portdev->c_ivq_lock); list_for_each_entry(port, &portdev->ports, list) { port->in_vq = portdev->in_vqs[port->id]; --- linux-ppc-3.8.0.orig/drivers/char/hpet.c +++ linux-ppc-3.8.0/drivers/char/hpet.c @@ -373,26 +373,14 @@ struct hpet_dev *devp; unsigned long addr; - if (((vma->vm_end - vma->vm_start) != PAGE_SIZE) || vma->vm_pgoff) - return -EINVAL; - devp = file->private_data; addr = devp->hd_hpets->hp_hpet_phys; if (addr & (PAGE_SIZE - 1)) return -ENOSYS; - vma->vm_flags |= VM_IO; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - - if (io_remap_pfn_range(vma, vma->vm_start, addr >> PAGE_SHIFT, - PAGE_SIZE, vma->vm_page_prot)) { - printk(KERN_ERR "%s: io_remap_pfn_range failed\n", - __func__); - return -EAGAIN; - } - - return 0; + return vm_iomap_memory(vma, addr, PAGE_SIZE); #else return -ENOSYS; #endif --- linux-ppc-3.8.0.orig/drivers/char/random.c +++ linux-ppc-3.8.0/drivers/char/random.c @@ -852,6 +852,7 @@ int reserved) { unsigned long flags; + int wakeup_write = 0; /* Hold lock while accounting */ spin_lock_irqsave(&r->lock, flags); @@ -864,19 +865,25 @@ if (r->entropy_count / 8 < min + reserved) { nbytes = 0; } else { + int entropy_count, orig; +retry: + entropy_count = orig = ACCESS_ONCE(r->entropy_count); /* If limited, never pull more than available */ - if (r->limit && nbytes + reserved >= r->entropy_count / 8) - nbytes = r->entropy_count/8 - reserved; + if (r->limit && nbytes + reserved >= entropy_count / 8) + nbytes = entropy_count/8 - reserved; - if (r->entropy_count / 8 >= nbytes + reserved) - r->entropy_count -= nbytes*8; - else - r->entropy_count = reserved; - - if (r->entropy_count < random_write_wakeup_thresh) { - wake_up_interruptible(&random_write_wait); - kill_fasync(&fasync, SIGIO, POLL_OUT); + if (entropy_count / 8 >= nbytes + reserved) { + entropy_count -= nbytes*8; + if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) + goto retry; + } else { + entropy_count = reserved; + if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) + goto retry; } + + if (entropy_count < random_write_wakeup_thresh) + wakeup_write = 1; } DEBUG_ENT("debiting %zu entropy credits from %s%s\n", @@ -884,6 +891,11 @@ spin_unlock_irqrestore(&r->lock, flags); + if (wakeup_write) { + wake_up_interruptible(&random_write_wait); + kill_fasync(&fasync, SIGIO, POLL_OUT); + } + return nbytes; } @@ -953,10 +965,23 @@ { ssize_t ret = 0, i; __u8 tmp[EXTRACT_SIZE]; + unsigned long flags; /* if last_data isn't primed, we need EXTRACT_SIZE extra bytes */ - if (fips_enabled && !r->last_data_init) - nbytes += EXTRACT_SIZE; + if (fips_enabled) { + spin_lock_irqsave(&r->lock, flags); + if (!r->last_data_init) { + r->last_data_init = true; + spin_unlock_irqrestore(&r->lock, flags); + trace_extract_entropy(r->name, EXTRACT_SIZE, + r->entropy_count, _RET_IP_); + xfer_secondary_pool(r, EXTRACT_SIZE); + extract_buf(r, tmp); + spin_lock_irqsave(&r->lock, flags); + memcpy(r->last_data, tmp, EXTRACT_SIZE); + } + spin_unlock_irqrestore(&r->lock, flags); + } trace_extract_entropy(r->name, nbytes, r->entropy_count, _RET_IP_); xfer_secondary_pool(r, nbytes); @@ -966,19 +991,6 @@ extract_buf(r, tmp); if (fips_enabled) { - unsigned long flags; - - - /* prime last_data value if need be, per fips 140-2 */ - if (!r->last_data_init) { - spin_lock_irqsave(&r->lock, flags); - memcpy(r->last_data, tmp, EXTRACT_SIZE); - r->last_data_init = true; - nbytes -= EXTRACT_SIZE; - spin_unlock_irqrestore(&r->lock, flags); - extract_buf(r, tmp); - } - spin_lock_irqsave(&r->lock, flags); if (!memcmp(tmp, r->last_data, EXTRACT_SIZE)) panic("Hardware RNG duplicated output!\n"); --- linux-ppc-3.8.0.orig/drivers/char/hw_random/virtio-rng.c +++ linux-ppc-3.8.0/drivers/char/hw_random/virtio-rng.c @@ -92,14 +92,22 @@ { int err; + if (vq) { + /* We only support one device for now */ + return -EBUSY; + } /* We expect a single virtqueue. */ vq = virtio_find_single_vq(vdev, random_recv_done, "input"); - if (IS_ERR(vq)) - return PTR_ERR(vq); + if (IS_ERR(vq)) { + err = PTR_ERR(vq); + vq = NULL; + return err; + } err = hwrng_register(&virtio_hwrng); if (err) { vdev->config->del_vqs(vdev); + vq = NULL; return err; } @@ -112,6 +120,7 @@ busy = false; hwrng_unregister(&virtio_hwrng); vdev->config->del_vqs(vdev); + vq = NULL; } static int virtrng_probe(struct virtio_device *vdev) --- linux-ppc-3.8.0.orig/drivers/char/hw_random/core.c +++ linux-ppc-3.8.0/drivers/char/hw_random/core.c @@ -40,6 +40,7 @@ #include #include #include +#include #include @@ -52,8 +53,12 @@ static LIST_HEAD(rng_list); static DEFINE_MUTEX(rng_mutex); static int data_avail; -static u8 rng_buffer[SMP_CACHE_BYTES < 32 ? 32 : SMP_CACHE_BYTES] - __cacheline_aligned; +static u8 *rng_buffer; + +static size_t rng_buffer_size(void) +{ + return SMP_CACHE_BYTES < 32 ? 32 : SMP_CACHE_BYTES; +} static inline int hwrng_init(struct hwrng *rng) { @@ -116,7 +121,7 @@ if (!data_avail) { bytes_read = rng_get_data(current_rng, rng_buffer, - sizeof(rng_buffer), + rng_buffer_size(), !(filp->f_flags & O_NONBLOCK)); if (bytes_read < 0) { err = bytes_read; @@ -307,6 +312,14 @@ mutex_lock(&rng_mutex); + /* kmalloc makes this safe for virt_to_page() in virtio_rng.c */ + err = -ENOMEM; + if (!rng_buffer) { + rng_buffer = kmalloc(rng_buffer_size(), GFP_KERNEL); + if (!rng_buffer) + goto out_unlock; + } + /* Must not register two RNGs with the same name. */ err = -EEXIST; list_for_each_entry(tmp, &rng_list, list) { --- linux-ppc-3.8.0.orig/drivers/char/ipmi/ipmi_bt_sm.c +++ linux-ppc-3.8.0/drivers/char/ipmi/ipmi_bt_sm.c @@ -95,9 +95,9 @@ enum bt_states state; unsigned char seq; /* BT sequence number */ struct si_sm_io *io; - unsigned char write_data[IPMI_MAX_MSG_LENGTH]; + unsigned char write_data[IPMI_MAX_MSG_LENGTH + 2]; /* +2 for memcpy */ int write_count; - unsigned char read_data[IPMI_MAX_MSG_LENGTH]; + unsigned char read_data[IPMI_MAX_MSG_LENGTH + 2]; /* +2 for memcpy */ int read_count; int truncated; long timeout; /* microseconds countdown */ --- linux-ppc-3.8.0.orig/drivers/char/ipmi/ipmi_devintf.c +++ linux-ppc-3.8.0/drivers/char/ipmi/ipmi_devintf.c @@ -837,13 +837,25 @@ return ipmi_ioctl(filep, cmd, arg); } } + +static long unlocked_compat_ipmi_ioctl(struct file *filep, unsigned int cmd, + unsigned long arg) +{ + int ret; + + mutex_lock(&ipmi_mutex); + ret = compat_ipmi_ioctl(filep, cmd, arg); + mutex_unlock(&ipmi_mutex); + + return ret; +} #endif static const struct file_operations ipmi_fops = { .owner = THIS_MODULE, .unlocked_ioctl = ipmi_unlocked_ioctl, #ifdef CONFIG_COMPAT - .compat_ioctl = compat_ipmi_ioctl, + .compat_ioctl = unlocked_compat_ipmi_ioctl, #endif .open = ipmi_open, .release = ipmi_release, --- linux-ppc-3.8.0.orig/drivers/char/tpm/tpm.c +++ linux-ppc-3.8.0/drivers/char/tpm/tpm.c @@ -1291,7 +1291,7 @@ { struct tpm_chip *chip = dev_get_drvdata(dev); struct tpm_cmd_t cmd; - int rc; + int rc, try; u8 dummy_hash[TPM_DIGEST_SIZE] = { 0 }; @@ -1309,9 +1309,32 @@ } /* now do the actual savestate */ - cmd.header.in = savestate_header; - rc = transmit_cmd(chip, &cmd, SAVESTATE_RESULT_SIZE, - "sending savestate before suspend"); + for (try = 0; try < TPM_RETRY; try++) { + cmd.header.in = savestate_header; + rc = transmit_cmd(chip, &cmd, SAVESTATE_RESULT_SIZE, NULL); + + /* + * If the TPM indicates that it is too busy to respond to + * this command then retry before giving up. It can take + * several seconds for this TPM to be ready. + * + * This can happen if the TPM has already been sent the + * SaveState command before the driver has loaded. TCG 1.2 + * specification states that any communication after SaveState + * may cause the TPM to invalidate previously saved state. + */ + if (rc != TPM_WARN_RETRY) + break; + msleep(TPM_TIMEOUT_RETRY); + } + + if (rc) + dev_err(chip->dev, + "Error (%d) sending savestate before suspend\n", rc); + else if (try > 0) + dev_warn(chip->dev, "TPM savestate took %dms\n", + try * TPM_TIMEOUT_RETRY); + return rc; } EXPORT_SYMBOL_GPL(tpm_pm_suspend); --- linux-ppc-3.8.0.orig/drivers/char/tpm/tpm.h +++ linux-ppc-3.8.0/drivers/char/tpm/tpm.h @@ -32,10 +32,12 @@ TPM_MINOR = 224, /* officially assigned */ TPM_BUFSIZE = 4096, TPM_NUM_DEVICES = 256, + TPM_RETRY = 50, /* 5 seconds */ }; enum tpm_timeout { TPM_TIMEOUT = 5, /* msecs */ + TPM_TIMEOUT_RETRY = 100 /* msecs */ }; /* TPM addresses */ @@ -44,6 +46,7 @@ TPM_ADDR = 0x4E, }; +#define TPM_WARN_RETRY 0x800 #define TPM_WARN_DOING_SELFTEST 0x802 #define TPM_ERR_DEACTIVATED 0x6 #define TPM_ERR_DISABLED 0x7 --- linux-ppc-3.8.0.orig/drivers/firewire/core-cdev.c +++ linux-ppc-3.8.0/drivers/firewire/core-cdev.c @@ -54,6 +54,7 @@ #define FW_CDEV_KERNEL_VERSION 5 #define FW_CDEV_VERSION_EVENT_REQUEST2 4 #define FW_CDEV_VERSION_ALLOCATE_REGION_END 4 +#define FW_CDEV_VERSION_AUTO_FLUSH_ISO_OVERFLOW 5 struct client { u32 version; @@ -1009,6 +1010,8 @@ a->channel, a->speed, a->header_size, cb, client); if (IS_ERR(context)) return PTR_ERR(context); + if (client->version < FW_CDEV_VERSION_AUTO_FLUSH_ISO_OVERFLOW) + context->drop_overflow_headers = true; /* We only support one context at this time. */ spin_lock_irq(&client->lock); --- linux-ppc-3.8.0.orig/drivers/firewire/core-device.c +++ linux-ppc-3.8.0/drivers/firewire/core-device.c @@ -1020,6 +1020,10 @@ ret = idr_pre_get(&fw_device_idr, GFP_KERNEL) ? idr_get_new(&fw_device_idr, device, &minor) : -ENOMEM; + if (minor >= 1 << MINORBITS) { + idr_remove(&fw_device_idr, minor); + minor = -ENOSPC; + } up_write(&fw_device_rwsem); if (ret < 0) --- linux-ppc-3.8.0.orig/drivers/firewire/ohci.c +++ linux-ppc-3.8.0/drivers/firewire/ohci.c @@ -2729,8 +2729,11 @@ { u32 *ctx_hdr; - if (ctx->header_length + ctx->base.header_size > PAGE_SIZE) + if (ctx->header_length + ctx->base.header_size > PAGE_SIZE) { + if (ctx->base.drop_overflow_headers) + return; flush_iso_completions(ctx); + } ctx_hdr = ctx->header + ctx->header_length; ctx->last_timestamp = (u16)le32_to_cpu((__force __le32)dma_hdr[0]); @@ -2890,8 +2893,11 @@ sync_it_packet_for_cpu(context, d); - if (ctx->header_length + 4 > PAGE_SIZE) + if (ctx->header_length + 4 > PAGE_SIZE) { + if (ctx->base.drop_overflow_headers) + return 1; flush_iso_completions(ctx); + } ctx_hdr = ctx->header + ctx->header_length; ctx->last_timestamp = le16_to_cpu(last->res_count); --- linux-ppc-3.8.0.orig/drivers/dma/dw_dmac.c +++ linux-ppc-3.8.0/drivers/dma/dw_dmac.c @@ -1,6 +1,5 @@ /* - * Driver for the Synopsys DesignWare DMA Controller (aka DMACA on - * AVR32 systems.) + * Core driver for the Synopsys DesignWare DMA Controller * * Copyright (C) 2007-2008 Atmel Corporation * Copyright (C) 2010-2011 ST Microelectronics @@ -9,11 +8,13 @@ * 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 @@ -46,15 +47,32 @@ return slave ? slave->src_master : 1; } +#define SRC_MASTER 0 +#define DST_MASTER 1 + +static inline unsigned int dwc_get_master(struct dma_chan *chan, int master) +{ + struct dw_dma *dw = to_dw_dma(chan->device); + struct dw_dma_slave *dws = chan->private; + unsigned int m; + + if (master == SRC_MASTER) + m = dwc_get_sms(dws); + else + m = dwc_get_dms(dws); + + return min_t(unsigned int, dw->nr_masters - 1, m); +} + #define DWC_DEFAULT_CTLLO(_chan) ({ \ - struct dw_dma_slave *__slave = (_chan->private); \ struct dw_dma_chan *_dwc = to_dw_dma_chan(_chan); \ struct dma_slave_config *_sconfig = &_dwc->dma_sconfig; \ - int _dms = dwc_get_dms(__slave); \ - int _sms = dwc_get_sms(__slave); \ - u8 _smsize = __slave ? _sconfig->src_maxburst : \ + bool _is_slave = is_slave_direction(_dwc->direction); \ + int _dms = dwc_get_master(_chan, DST_MASTER); \ + int _sms = dwc_get_master(_chan, SRC_MASTER); \ + u8 _smsize = _is_slave ? _sconfig->src_maxburst : \ DW_DMA_MSIZE_16; \ - u8 _dmsize = __slave ? _sconfig->dst_maxburst : \ + u8 _dmsize = _is_slave ? _sconfig->dst_maxburst : \ DW_DMA_MSIZE_16; \ \ (DWC_CTLL_DST_MSIZE(_dmsize) \ @@ -72,15 +90,14 @@ */ #define NR_DESCS_PER_CHANNEL 64 -/*----------------------------------------------------------------------*/ +static inline unsigned int dwc_get_data_width(struct dma_chan *chan, int master) +{ + struct dw_dma *dw = to_dw_dma(chan->device); -/* - * Because we're not relying on writeback from the controller (it may not - * even be configured into the core!) we don't need to use dma_pool. These - * descriptors -- and associated data -- are cacheable. We do need to make - * sure their dcache entries are written back before handing them off to - * the controller, though. - */ + return dw->data_width[dwc_get_master(chan, master)]; +} + +/*----------------------------------------------------------------------*/ static struct device *chan2dev(struct dma_chan *chan) { @@ -93,7 +110,7 @@ static struct dw_desc *dwc_first_active(struct dw_dma_chan *dwc) { - return list_entry(dwc->active_list.next, struct dw_desc, desc_node); + return to_dw_desc(dwc->active_list.next); } static struct dw_desc *dwc_desc_get(struct dw_dma_chan *dwc) @@ -120,19 +137,6 @@ return ret; } -static void dwc_sync_desc_for_cpu(struct dw_dma_chan *dwc, struct dw_desc *desc) -{ - struct dw_desc *child; - - list_for_each_entry(child, &desc->tx_list, desc_node) - dma_sync_single_for_cpu(chan2parent(&dwc->chan), - child->txd.phys, sizeof(child->lli), - DMA_TO_DEVICE); - dma_sync_single_for_cpu(chan2parent(&dwc->chan), - desc->txd.phys, sizeof(desc->lli), - DMA_TO_DEVICE); -} - /* * Move a descriptor, including any children, to the free list. * `desc' must not be on any lists. @@ -144,8 +148,6 @@ if (desc) { struct dw_desc *child; - dwc_sync_desc_for_cpu(dwc, desc); - spin_lock_irqsave(&dwc->lock, flags); list_for_each_entry(child, &desc->tx_list, desc_node) dev_vdbg(chan2dev(&dwc->chan), @@ -178,9 +180,9 @@ cfghi = dws->cfg_hi; cfglo |= dws->cfg_lo & ~DWC_CFGL_CH_PRIOR_MASK; } else { - if (dwc->dma_sconfig.direction == DMA_MEM_TO_DEV) + if (dwc->direction == DMA_MEM_TO_DEV) cfghi = DWC_CFGH_DST_PER(dwc->dma_sconfig.slave_id); - else if (dwc->dma_sconfig.direction == DMA_DEV_TO_MEM) + else if (dwc->direction == DMA_DEV_TO_MEM) cfghi = DWC_CFGH_SRC_PER(dwc->dma_sconfig.slave_id); } @@ -222,7 +224,6 @@ channel_readl(dwc, CTL_LO)); } - static inline void dwc_chan_disable(struct dw_dma *dw, struct dw_dma_chan *dwc) { channel_clear_bit(dw, CH_EN, dwc->mask); @@ -248,6 +249,9 @@ channel_writel(dwc, CTL_LO, ctllo); channel_writel(dwc, CTL_HI, desc->lli.ctlhi); channel_set_bit(dw, CH_EN, dwc->mask); + + /* Move pointer to next descriptor */ + dwc->tx_node_active = dwc->tx_node_active->next; } /* Called with dwc->lock held and bh disabled */ @@ -278,9 +282,10 @@ dwc_initialize(dwc); - dwc->tx_list = &first->tx_list; - dwc->tx_node_active = first->tx_list.next; + dwc->residue = first->total_len; + dwc->tx_node_active = &first->tx_list; + /* Submit first block */ dwc_do_single_block(dwc, first); return; @@ -316,8 +321,6 @@ param = txd->callback_param; } - dwc_sync_desc_for_cpu(dwc, desc); - /* async_tx_ack */ list_for_each_entry(child, &desc->tx_list, desc_node) async_tx_ack(&child->txd); @@ -326,29 +329,29 @@ list_splice_init(&desc->tx_list, &dwc->free_list); list_move(&desc->desc_node, &dwc->free_list); - if (!dwc->chan.private) { + if (!is_slave_direction(dwc->direction)) { struct device *parent = chan2parent(&dwc->chan); if (!(txd->flags & DMA_COMPL_SKIP_DEST_UNMAP)) { if (txd->flags & DMA_COMPL_DEST_UNMAP_SINGLE) dma_unmap_single(parent, desc->lli.dar, - desc->len, DMA_FROM_DEVICE); + desc->total_len, DMA_FROM_DEVICE); else dma_unmap_page(parent, desc->lli.dar, - desc->len, DMA_FROM_DEVICE); + desc->total_len, DMA_FROM_DEVICE); } if (!(txd->flags & DMA_COMPL_SKIP_SRC_UNMAP)) { if (txd->flags & DMA_COMPL_SRC_UNMAP_SINGLE) dma_unmap_single(parent, desc->lli.sar, - desc->len, DMA_TO_DEVICE); + desc->total_len, DMA_TO_DEVICE); else dma_unmap_page(parent, desc->lli.sar, - desc->len, DMA_TO_DEVICE); + desc->total_len, DMA_TO_DEVICE); } } spin_unlock_irqrestore(&dwc->lock, flags); - if (callback_required && callback) + if (callback) callback(param); } @@ -383,6 +386,15 @@ dwc_descriptor_complete(dwc, desc, true); } +/* Returns how many bytes were already received from source */ +static inline u32 dwc_get_sent(struct dw_dma_chan *dwc) +{ + u32 ctlhi = channel_readl(dwc, CTL_HI); + u32 ctllo = channel_readl(dwc, CTL_LO); + + return (ctlhi & DWC_CTLH_BLOCK_TS_MASK) * (1 << (ctllo >> 4 & 7)); +} + static void dwc_scan_descriptors(struct dw_dma *dw, struct dw_dma_chan *dwc) { dma_addr_t llp; @@ -398,6 +410,39 @@ if (status_xfer & dwc->mask) { /* Everything we've submitted is done */ dma_writel(dw, CLEAR.XFER, dwc->mask); + + if (test_bit(DW_DMA_IS_SOFT_LLP, &dwc->flags)) { + struct list_head *head, *active = dwc->tx_node_active; + + /* + * We are inside first active descriptor. + * Otherwise something is really wrong. + */ + desc = dwc_first_active(dwc); + + head = &desc->tx_list; + if (active != head) { + /* Update desc to reflect last sent one */ + if (active != head->next) + desc = to_dw_desc(active->prev); + + dwc->residue -= desc->len; + + child = to_dw_desc(active); + + /* Submit next block */ + dwc_do_single_block(dwc, child); + + spin_unlock_irqrestore(&dwc->lock, flags); + return; + } + + /* We are done here */ + clear_bit(DW_DMA_IS_SOFT_LLP, &dwc->flags); + } + + dwc->residue = 0; + spin_unlock_irqrestore(&dwc->lock, flags); dwc_complete_all(dw, dwc); @@ -405,6 +450,13 @@ } if (list_empty(&dwc->active_list)) { + dwc->residue = 0; + spin_unlock_irqrestore(&dwc->lock, flags); + return; + } + + if (test_bit(DW_DMA_IS_SOFT_LLP, &dwc->flags)) { + dev_vdbg(chan2dev(&dwc->chan), "%s: soft LLP mode\n", __func__); spin_unlock_irqrestore(&dwc->lock, flags); return; } @@ -413,6 +465,9 @@ (unsigned long long)llp); list_for_each_entry_safe(desc, _desc, &dwc->active_list, desc_node) { + /* initial residue value */ + dwc->residue = desc->total_len; + /* check first descriptors addr */ if (desc->txd.phys == llp) { spin_unlock_irqrestore(&dwc->lock, flags); @@ -422,16 +477,21 @@ /* check first descriptors llp */ if (desc->lli.llp == llp) { /* This one is currently in progress */ + dwc->residue -= dwc_get_sent(dwc); spin_unlock_irqrestore(&dwc->lock, flags); return; } - list_for_each_entry(child, &desc->tx_list, desc_node) + dwc->residue -= desc->len; + list_for_each_entry(child, &desc->tx_list, desc_node) { if (child->lli.llp == llp) { /* Currently in progress */ + dwc->residue -= dwc_get_sent(dwc); spin_unlock_irqrestore(&dwc->lock, flags); return; } + dwc->residue -= child->len; + } /* * No descriptors so far seem to be in progress, i.e. @@ -457,9 +517,8 @@ static inline void dwc_dump_lli(struct dw_dma_chan *dwc, struct dw_lli *lli) { - dev_printk(KERN_CRIT, chan2dev(&dwc->chan), - " desc: s0x%x d0x%x l0x%x c0x%x:%x\n", - lli->sar, lli->dar, lli->llp, lli->ctlhi, lli->ctllo); + dev_crit(chan2dev(&dwc->chan), " desc: s0x%x d0x%x l0x%x c0x%x:%x\n", + lli->sar, lli->dar, lli->llp, lli->ctlhi, lli->ctllo); } static void dwc_handle_error(struct dw_dma *dw, struct dw_dma_chan *dwc) @@ -487,16 +546,14 @@ dwc_dostart(dwc, dwc_first_active(dwc)); /* - * KERN_CRITICAL may seem harsh, but since this only happens + * WARN may seem harsh, but since this only happens * when someone submits a bad physical address in a * descriptor, we should consider ourselves lucky that the * controller flagged an error instead of scribbling over * random memory locations. */ - dev_printk(KERN_CRIT, chan2dev(&dwc->chan), - "Bad descriptor submitted for DMA!\n"); - dev_printk(KERN_CRIT, chan2dev(&dwc->chan), - " cookie: %d\n", bad_desc->txd.cookie); + dev_WARN(chan2dev(&dwc->chan), "Bad descriptor submitted for DMA!\n" + " cookie: %d\n", bad_desc->txd.cookie); dwc_dump_lli(dwc, &bad_desc->lli); list_for_each_entry(child, &bad_desc->tx_list, desc_node) dwc_dump_lli(dwc, &child->lli); @@ -597,36 +654,8 @@ dwc_handle_cyclic(dw, dwc, status_err, status_xfer); else if (status_err & (1 << i)) dwc_handle_error(dw, dwc); - else if (status_xfer & (1 << i)) { - unsigned long flags; - - spin_lock_irqsave(&dwc->lock, flags); - if (test_bit(DW_DMA_IS_SOFT_LLP, &dwc->flags)) { - if (dwc->tx_node_active != dwc->tx_list) { - struct dw_desc *desc = - list_entry(dwc->tx_node_active, - struct dw_desc, - desc_node); - - dma_writel(dw, CLEAR.XFER, dwc->mask); - - /* move pointer to next descriptor */ - dwc->tx_node_active = - dwc->tx_node_active->next; - - dwc_do_single_block(dwc, desc); - - spin_unlock_irqrestore(&dwc->lock, flags); - continue; - } else { - /* we are done here */ - clear_bit(DW_DMA_IS_SOFT_LLP, &dwc->flags); - } - } - spin_unlock_irqrestore(&dwc->lock, flags); - + else if (status_xfer & (1 << i)) dwc_scan_descriptors(dw, dwc); - } } /* @@ -708,7 +737,6 @@ size_t len, unsigned long flags) { struct dw_dma_chan *dwc = to_dw_dma_chan(chan); - struct dw_dma_slave *dws = chan->private; struct dw_desc *desc; struct dw_desc *first; struct dw_desc *prev; @@ -729,8 +757,10 @@ return NULL; } - data_width = min_t(unsigned int, dwc->dw->data_width[dwc_get_sms(dws)], - dwc->dw->data_width[dwc_get_dms(dws)]); + dwc->direction = DMA_MEM_TO_MEM; + + data_width = min_t(unsigned int, dwc_get_data_width(chan, SRC_MASTER), + dwc_get_data_width(chan, DST_MASTER)); src_width = dst_width = min_t(unsigned int, data_width, dwc_fast_fls(src | dest | len)); @@ -755,32 +785,25 @@ desc->lli.dar = dest + offset; desc->lli.ctllo = ctllo; desc->lli.ctlhi = xfer_count; + desc->len = xfer_count << src_width; if (!first) { first = desc; } else { prev->lli.llp = desc->txd.phys; - dma_sync_single_for_device(chan2parent(chan), - prev->txd.phys, sizeof(prev->lli), - DMA_TO_DEVICE); list_add_tail(&desc->desc_node, &first->tx_list); } prev = desc; } - if (flags & DMA_PREP_INTERRUPT) /* Trigger interrupt after last block */ prev->lli.ctllo |= DWC_CTLL_INT_EN; prev->lli.llp = 0; - dma_sync_single_for_device(chan2parent(chan), - prev->txd.phys, sizeof(prev->lli), - DMA_TO_DEVICE); - first->txd.flags = flags; - first->len = len; + first->total_len = len; return &first->txd; @@ -795,7 +818,6 @@ unsigned long flags, void *context) { struct dw_dma_chan *dwc = to_dw_dma_chan(chan); - struct dw_dma_slave *dws = chan->private; struct dma_slave_config *sconfig = &dwc->dma_sconfig; struct dw_desc *prev; struct dw_desc *first; @@ -810,9 +832,11 @@ dev_vdbg(chan2dev(chan), "%s\n", __func__); - if (unlikely(!dws || !sg_len)) + if (unlikely(!is_slave_direction(direction) || !sg_len)) return NULL; + dwc->direction = direction; + prev = first = NULL; switch (direction) { @@ -827,7 +851,7 @@ ctllo |= sconfig->device_fc ? DWC_CTLL_FC(DW_DMA_FC_P_M2P) : DWC_CTLL_FC(DW_DMA_FC_D_M2P); - data_width = dwc->dw->data_width[dwc_get_sms(dws)]; + data_width = dwc_get_data_width(chan, SRC_MASTER); for_each_sg(sgl, sg, sg_len, i) { struct dw_desc *desc; @@ -860,15 +884,12 @@ } desc->lli.ctlhi = dlen >> mem_width; + desc->len = dlen; if (!first) { first = desc; } else { prev->lli.llp = desc->txd.phys; - dma_sync_single_for_device(chan2parent(chan), - prev->txd.phys, - sizeof(prev->lli), - DMA_TO_DEVICE); list_add_tail(&desc->desc_node, &first->tx_list); } @@ -890,7 +911,7 @@ ctllo |= sconfig->device_fc ? DWC_CTLL_FC(DW_DMA_FC_P_P2M) : DWC_CTLL_FC(DW_DMA_FC_D_P2M); - data_width = dwc->dw->data_width[dwc_get_dms(dws)]; + data_width = dwc_get_data_width(chan, DST_MASTER); for_each_sg(sgl, sg, sg_len, i) { struct dw_desc *desc; @@ -922,15 +943,12 @@ len = 0; } desc->lli.ctlhi = dlen >> reg_width; + desc->len = dlen; if (!first) { first = desc; } else { prev->lli.llp = desc->txd.phys; - dma_sync_single_for_device(chan2parent(chan), - prev->txd.phys, - sizeof(prev->lli), - DMA_TO_DEVICE); list_add_tail(&desc->desc_node, &first->tx_list); } @@ -950,11 +968,7 @@ prev->lli.ctllo |= DWC_CTLL_INT_EN; prev->lli.llp = 0; - dma_sync_single_for_device(chan2parent(chan), - prev->txd.phys, sizeof(prev->lli), - DMA_TO_DEVICE); - - first->len = total_len; + first->total_len = total_len; return &first->txd; @@ -979,23 +993,52 @@ *maxburst = 0; } +static inline void convert_slave_id(struct dw_dma_chan *dwc) +{ + struct dw_dma *dw = to_dw_dma(dwc->chan.device); + + dwc->dma_sconfig.slave_id -= dw->request_line_base; +} + static int set_runtime_config(struct dma_chan *chan, struct dma_slave_config *sconfig) { struct dw_dma_chan *dwc = to_dw_dma_chan(chan); - /* Check if it is chan is configured for slave transfers */ - if (!chan->private) + /* Check if chan will be configured for slave transfers */ + if (!is_slave_direction(sconfig->direction)) return -EINVAL; memcpy(&dwc->dma_sconfig, sconfig, sizeof(*sconfig)); + dwc->direction = sconfig->direction; convert_burst(&dwc->dma_sconfig.src_maxburst); convert_burst(&dwc->dma_sconfig.dst_maxburst); + convert_slave_id(dwc); return 0; } +static inline void dwc_chan_pause(struct dw_dma_chan *dwc) +{ + u32 cfglo = channel_readl(dwc, CFG_LO); + + channel_writel(dwc, CFG_LO, cfglo | DWC_CFGL_CH_SUSP); + while (!(channel_readl(dwc, CFG_LO) & DWC_CFGL_FIFO_EMPTY)) + cpu_relax(); + + dwc->paused = true; +} + +static inline void dwc_chan_resume(struct dw_dma_chan *dwc) +{ + u32 cfglo = channel_readl(dwc, CFG_LO); + + channel_writel(dwc, CFG_LO, cfglo & ~DWC_CFGL_CH_SUSP); + + dwc->paused = false; +} + static int dwc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd, unsigned long arg) { @@ -1003,18 +1046,13 @@ struct dw_dma *dw = to_dw_dma(chan->device); struct dw_desc *desc, *_desc; unsigned long flags; - u32 cfglo; LIST_HEAD(list); if (cmd == DMA_PAUSE) { spin_lock_irqsave(&dwc->lock, flags); - cfglo = channel_readl(dwc, CFG_LO); - channel_writel(dwc, CFG_LO, cfglo | DWC_CFGL_CH_SUSP); - while (!(channel_readl(dwc, CFG_LO) & DWC_CFGL_FIFO_EMPTY)) - cpu_relax(); + dwc_chan_pause(dwc); - dwc->paused = true; spin_unlock_irqrestore(&dwc->lock, flags); } else if (cmd == DMA_RESUME) { if (!dwc->paused) @@ -1022,9 +1060,7 @@ spin_lock_irqsave(&dwc->lock, flags); - cfglo = channel_readl(dwc, CFG_LO); - channel_writel(dwc, CFG_LO, cfglo & ~DWC_CFGL_CH_SUSP); - dwc->paused = false; + dwc_chan_resume(dwc); spin_unlock_irqrestore(&dwc->lock, flags); } else if (cmd == DMA_TERMINATE_ALL) { @@ -1054,6 +1090,21 @@ return 0; } +static inline u32 dwc_get_residue(struct dw_dma_chan *dwc) +{ + unsigned long flags; + u32 residue; + + spin_lock_irqsave(&dwc->lock, flags); + + residue = dwc->residue; + if (test_bit(DW_DMA_IS_SOFT_LLP, &dwc->flags) && residue) + residue -= dwc_get_sent(dwc); + + spin_unlock_irqrestore(&dwc->lock, flags); + return residue; +} + static enum dma_status dwc_tx_status(struct dma_chan *chan, dma_cookie_t cookie, @@ -1070,7 +1121,7 @@ } if (ret != DMA_SUCCESS) - dma_set_residue(txstate, dwc_first_active(dwc)->len); + dma_set_residue(txstate, dwc_get_residue(dwc)); if (dwc->paused) return DMA_PAUSED; @@ -1113,22 +1164,22 @@ spin_lock_irqsave(&dwc->lock, flags); i = dwc->descs_allocated; while (dwc->descs_allocated < NR_DESCS_PER_CHANNEL) { + dma_addr_t phys; + spin_unlock_irqrestore(&dwc->lock, flags); - desc = kzalloc(sizeof(struct dw_desc), GFP_KERNEL); - if (!desc) { - dev_info(chan2dev(chan), - "only allocated %d descriptors\n", i); - spin_lock_irqsave(&dwc->lock, flags); - break; - } + desc = dma_pool_alloc(dw->desc_pool, GFP_ATOMIC, &phys); + if (!desc) + goto err_desc_alloc; + + memset(desc, 0, sizeof(struct dw_desc)); INIT_LIST_HEAD(&desc->tx_list); dma_async_tx_descriptor_init(&desc->txd, chan); desc->txd.tx_submit = dwc_tx_submit; desc->txd.flags = DMA_CTRL_ACK; - desc->txd.phys = dma_map_single(chan2parent(chan), &desc->lli, - sizeof(desc->lli), DMA_TO_DEVICE); + desc->txd.phys = phys; + dwc_desc_put(dwc, desc); spin_lock_irqsave(&dwc->lock, flags); @@ -1140,6 +1191,11 @@ dev_dbg(chan2dev(chan), "%s: allocated %d descriptors\n", __func__, i); return i; + +err_desc_alloc: + dev_info(chan2dev(chan), "only allocated %d descriptors\n", i); + + return i; } static void dwc_free_chan_resources(struct dma_chan *chan) @@ -1171,14 +1227,56 @@ list_for_each_entry_safe(desc, _desc, &list, desc_node) { dev_vdbg(chan2dev(chan), " freeing descriptor %p\n", desc); - dma_unmap_single(chan2parent(chan), desc->txd.phys, - sizeof(desc->lli), DMA_TO_DEVICE); - kfree(desc); + dma_pool_free(dw->desc_pool, desc, desc->txd.phys); } dev_vdbg(chan2dev(chan), "%s: done\n", __func__); } +bool dw_dma_generic_filter(struct dma_chan *chan, void *param) +{ + struct dw_dma *dw = to_dw_dma(chan->device); + static struct dw_dma *last_dw; + static char *last_bus_id; + int i = -1; + + /* + * dmaengine framework calls this routine for all channels of all dma + * controller, until true is returned. If 'param' bus_id is not + * registered with a dma controller (dw), then there is no need of + * running below function for all channels of dw. + * + * This block of code does this by saving the parameters of last + * failure. If dw and param are same, i.e. trying on same dw with + * different channel, return false. + */ + if ((last_dw == dw) && (last_bus_id == param)) + return false; + /* + * Return true: + * - If dw_dma's platform data is not filled with slave info, then all + * dma controllers are fine for transfer. + * - Or if param is NULL + */ + if (!dw->sd || !param) + return true; + + while (++i < dw->sd_count) { + if (!strcmp(dw->sd[i].bus_id, param)) { + chan->private = &dw->sd[i]; + last_dw = NULL; + last_bus_id = NULL; + + return true; + } + } + + last_dw = dw; + last_bus_id = param; + return false; +} +EXPORT_SYMBOL(dw_dma_generic_filter); + /* --------------------- Cyclic DMA API extensions -------------------- */ /** @@ -1298,6 +1396,11 @@ retval = ERR_PTR(-EINVAL); + if (unlikely(!is_slave_direction(direction))) + goto out_err; + + dwc->direction = direction; + if (direction == DMA_MEM_TO_DEV) reg_width = __ffs(sconfig->dst_addr_width); else @@ -1312,8 +1415,6 @@ goto out_err; if (unlikely(buf_addr & ((1 << reg_width) - 1))) goto out_err; - if (unlikely(!(direction & (DMA_MEM_TO_DEV | DMA_DEV_TO_MEM)))) - goto out_err; retval = ERR_PTR(-ENOMEM); @@ -1371,20 +1472,14 @@ desc->lli.ctlhi = (period_len >> reg_width); cdesc->desc[i] = desc; - if (last) { + if (last) last->lli.llp = desc->txd.phys; - dma_sync_single_for_device(chan2parent(chan), - last->txd.phys, sizeof(last->lli), - DMA_TO_DEVICE); - } last = desc; } /* lets make a cyclic list */ last->lli.llp = cdesc->desc[0]->txd.phys; - dma_sync_single_for_device(chan2parent(chan), last->txd.phys, - sizeof(last->lli), DMA_TO_DEVICE); dev_dbg(chan2dev(&dwc->chan), "cyclic prepared buf 0x%llx len %zu " "period %zu periods %d\n", (unsigned long long)buf_addr, @@ -1462,8 +1557,94 @@ dw->chan[i].initialized = false; } +#ifdef CONFIG_OF +static struct dw_dma_platform_data * +dw_dma_parse_dt(struct platform_device *pdev) +{ + struct device_node *sn, *cn, *np = pdev->dev.of_node; + struct dw_dma_platform_data *pdata; + struct dw_dma_slave *sd; + u32 tmp, arr[4]; + + if (!np) { + dev_err(&pdev->dev, "Missing DT data\n"); + return NULL; + } + + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return NULL; + + if (of_property_read_u32(np, "nr_channels", &pdata->nr_channels)) + return NULL; + + if (of_property_read_bool(np, "is_private")) + pdata->is_private = true; + + if (!of_property_read_u32(np, "chan_allocation_order", &tmp)) + pdata->chan_allocation_order = (unsigned char)tmp; + + if (!of_property_read_u32(np, "chan_priority", &tmp)) + pdata->chan_priority = tmp; + + if (!of_property_read_u32(np, "block_size", &tmp)) + pdata->block_size = tmp; + + if (!of_property_read_u32(np, "nr_masters", &tmp)) { + if (tmp > 4) + return NULL; + + pdata->nr_masters = tmp; + } + + if (!of_property_read_u32_array(np, "data_width", arr, + pdata->nr_masters)) + for (tmp = 0; tmp < pdata->nr_masters; tmp++) + pdata->data_width[tmp] = arr[tmp]; + + /* parse slave data */ + sn = of_find_node_by_name(np, "slave_info"); + if (!sn) + return pdata; + + /* calculate number of slaves */ + tmp = of_get_child_count(sn); + if (!tmp) + return NULL; + + sd = devm_kzalloc(&pdev->dev, sizeof(*sd) * tmp, GFP_KERNEL); + if (!sd) + return NULL; + + pdata->sd = sd; + pdata->sd_count = tmp; + + for_each_child_of_node(sn, cn) { + sd->dma_dev = &pdev->dev; + of_property_read_string(cn, "bus_id", &sd->bus_id); + of_property_read_u32(cn, "cfg_hi", &sd->cfg_hi); + of_property_read_u32(cn, "cfg_lo", &sd->cfg_lo); + if (!of_property_read_u32(cn, "src_master", &tmp)) + sd->src_master = tmp; + + if (!of_property_read_u32(cn, "dst_master", &tmp)) + sd->dst_master = tmp; + sd++; + } + + return pdata; +} +#else +static inline struct dw_dma_platform_data * +dw_dma_parse_dt(struct platform_device *pdev) +{ + return NULL; +} +#endif + static int dw_probe(struct platform_device *pdev) { + const struct platform_device_id *match; struct dw_dma_platform_data *pdata; struct resource *io; struct dw_dma *dw; @@ -1477,10 +1658,6 @@ int err; int i; - pdata = dev_get_platdata(&pdev->dev); - if (!pdata || pdata->nr_channels > DW_DMA_MAX_NR_CHANNELS) - return -EINVAL; - io = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!io) return -EINVAL; @@ -1493,9 +1670,33 @@ if (!regs) return -EBUSY; + /* Apply default dma_mask if needed */ + if (!pdev->dev.dma_mask) { + pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; + pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); + } + dw_params = dma_read_byaddr(regs, DW_PARAMS); autocfg = dw_params >> DW_PARAMS_EN & 0x1; + dev_dbg(&pdev->dev, "DW_PARAMS: 0x%08x\n", dw_params); + + pdata = dev_get_platdata(&pdev->dev); + if (!pdata) + pdata = dw_dma_parse_dt(pdev); + + if (!pdata && autocfg) { + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; + + /* Fill platform data with the default values */ + pdata->is_private = true; + pdata->chan_allocation_order = CHAN_ALLOCATION_ASCENDING; + pdata->chan_priority = CHAN_PRIORITY_ASCENDING; + } else if (!pdata || pdata->nr_channels > DW_DMA_MAX_NR_CHANNELS) + return -EINVAL; + if (autocfg) nr_channels = (dw_params >> DW_PARAMS_NR_CHAN & 0x7) + 1; else @@ -1512,6 +1713,8 @@ clk_prepare_enable(dw->clk); dw->regs = regs; + dw->sd = pdata->sd; + dw->sd_count = pdata->sd_count; /* get hardware configuration parameters */ if (autocfg) { @@ -1527,6 +1730,11 @@ memcpy(dw->data_width, pdata->data_width, 4); } + /* Get the base request line if set */ + match = platform_get_device_id(pdev); + if (match) + dw->request_line_base = (unsigned int)match->driver_data; + /* Calculate all channel mask before DMA setup */ dw->all_chan_mask = (1 << nr_channels) - 1; @@ -1543,6 +1751,14 @@ platform_set_drvdata(pdev, dw); + /* create a pool of consistent memory blocks for hardware descriptors */ + dw->desc_pool = dmam_pool_create("dw_dmac_desc_pool", &pdev->dev, + sizeof(struct dw_desc), 4, 0); + if (!dw->desc_pool) { + dev_err(&pdev->dev, "No memory for descriptors dma pool\n"); + return -ENOMEM; + } + tasklet_init(&dw->tasklet, dw_dma_tasklet, (unsigned long)dw); INIT_LIST_HEAD(&dw->dma.channels); @@ -1574,7 +1790,7 @@ channel_clear_bit(dw, CH_EN, dwc->mask); - dwc->dw = dw; + dwc->direction = DMA_TRANS_NONE; /* hardware configuration */ if (autocfg) { @@ -1583,6 +1799,9 @@ dwc_params = dma_read_byaddr(regs + r * sizeof(u32), DWC_PARAMS); + dev_dbg(&pdev->dev, "DWC_PARAMS[%d]: 0x%08x\n", i, + dwc_params); + /* Decode maximum block size for given channel. The * stored 4 bit value represents blocks from 0x00 for 3 * up to 0x0a for 4095. */ @@ -1626,8 +1845,8 @@ dma_writel(dw, CFG, DW_CFG_DMA_EN); - printk(KERN_INFO "%s: DesignWare DMA Controller, %d channels\n", - dev_name(&pdev->dev), nr_channels); + dev_info(&pdev->dev, "DesignWare DMA Controller, %d channels\n", + nr_channels); dma_async_device_register(&dw->dma); @@ -1657,7 +1876,7 @@ { struct dw_dma *dw = platform_get_drvdata(pdev); - dw_dma_off(platform_get_drvdata(pdev)); + dw_dma_off(dw); clk_disable_unprepare(dw->clk); } @@ -1666,7 +1885,7 @@ struct platform_device *pdev = to_platform_device(dev); struct dw_dma *dw = platform_get_drvdata(pdev); - dw_dma_off(platform_get_drvdata(pdev)); + dw_dma_off(dw); clk_disable_unprepare(dw->clk); return 0; @@ -1679,6 +1898,7 @@ clk_prepare_enable(dw->clk); dma_writel(dw, CFG, DW_CFG_DMA_EN); + return 0; } @@ -1699,7 +1919,14 @@ MODULE_DEVICE_TABLE(of, dw_dma_id_table); #endif +static const struct platform_device_id dw_dma_ids[] = { + /* Name, Request Line Base */ + { "INTL9C60", (kernel_ulong_t)16 }, + { } +}; + static struct platform_driver dw_driver = { + .probe = dw_probe, .remove = dw_remove, .shutdown = dw_shutdown, .driver = { @@ -1707,11 +1934,12 @@ .pm = &dw_dev_pm_ops, .of_match_table = of_match_ptr(dw_dma_id_table), }, + .id_table = dw_dma_ids, }; static int __init dw_init(void) { - return platform_driver_probe(&dw_driver, dw_probe); + return platform_driver_register(&dw_driver); } subsys_initcall(dw_init); --- linux-ppc-3.8.0.orig/drivers/dma/tegra20-apb-dma.c +++ linux-ppc-3.8.0/drivers/dma/tegra20-apb-dma.c @@ -1158,6 +1158,7 @@ list_splice_init(&tdc->free_dma_desc, &dma_desc_list); INIT_LIST_HEAD(&tdc->cb_desc); tdc->config_init = false; + tdc->isr_handler = NULL; spin_unlock_irqrestore(&tdc->lock, flags); while (!list_empty(&dma_desc_list)) { --- linux-ppc-3.8.0.orig/drivers/dma/ste_dma40.c +++ linux-ppc-3.8.0/drivers/dma/ste_dma40.c @@ -1392,10 +1392,12 @@ return; } - if (d40_queue_start(d40c) == NULL) + if (d40_queue_start(d40c) == NULL) { d40c->busy = false; - pm_runtime_mark_last_busy(d40c->base->dev); - pm_runtime_put_autosuspend(d40c->base->dev); + + pm_runtime_mark_last_busy(d40c->base->dev); + pm_runtime_put_autosuspend(d40c->base->dev); + } } d40c->pending_tx++; @@ -2337,7 +2339,7 @@ unsigned long dma_flags, void *context) { - if (direction != DMA_DEV_TO_MEM && direction != DMA_MEM_TO_DEV) + if (!is_slave_direction(direction)) return NULL; return d40_prep_sg(chan, sgl, sgl, sg_len, direction, dma_flags); --- linux-ppc-3.8.0.orig/drivers/dma/ep93xx_dma.c +++ linux-ppc-3.8.0/drivers/dma/ep93xx_dma.c @@ -903,8 +903,7 @@ switch (data->port) { case EP93XX_DMA_SSP: case EP93XX_DMA_IDE: - if (data->direction != DMA_MEM_TO_DEV && - data->direction != DMA_DEV_TO_MEM) + if (!is_slave_direction(data->direction)) return -EINVAL; break; default: --- linux-ppc-3.8.0.orig/drivers/dma/dw_dmac_regs.h +++ linux-ppc-3.8.0/drivers/dma/dw_dmac_regs.h @@ -9,6 +9,7 @@ * published by the Free Software Foundation. */ +#include #include #define DW_DMA_MAX_NR_CHANNELS 8 @@ -184,15 +185,15 @@ }; struct dw_dma_chan { - struct dma_chan chan; - void __iomem *ch_regs; - u8 mask; - u8 priority; - bool paused; - bool initialized; + struct dma_chan chan; + void __iomem *ch_regs; + u8 mask; + u8 priority; + enum dma_transfer_direction direction; + bool paused; + bool initialized; /* software emulation of the LLP transfers */ - struct list_head *tx_list; struct list_head *tx_node_active; spinlock_t lock; @@ -202,6 +203,7 @@ struct list_head active_list; struct list_head queue; struct list_head free_list; + u32 residue; struct dw_cyclic_desc *cdesc; unsigned int descs_allocated; @@ -212,9 +214,6 @@ /* configuration passed via DMA_SLAVE_CONFIG */ struct dma_slave_config dma_sconfig; - - /* backlink to dw_dma */ - struct dw_dma *dw; }; static inline struct dw_dma_chan_regs __iomem * @@ -236,14 +235,20 @@ struct dw_dma { struct dma_device dma; void __iomem *regs; + struct dma_pool *desc_pool; struct tasklet_struct tasklet; struct clk *clk; + /* slave information */ + struct dw_dma_slave *sd; + unsigned int sd_count; + u8 all_chan_mask; /* hardware configuration */ unsigned char nr_masters; unsigned char data_width[4]; + unsigned int request_line_base; struct dw_dma_chan chan[0]; }; @@ -293,8 +298,11 @@ struct list_head tx_list; struct dma_async_tx_descriptor txd; size_t len; + size_t total_len; }; +#define to_dw_desc(h) list_entry(h, struct dw_desc, desc_node) + static inline struct dw_desc * txd_to_dw_desc(struct dma_async_tx_descriptor *txd) { --- linux-ppc-3.8.0.orig/drivers/dma/pch_dma.c +++ linux-ppc-3.8.0/drivers/dma/pch_dma.c @@ -476,7 +476,7 @@ dev_dbg(chan2dev(&pd_chan->chan), "scanned %d descriptors\n", i); if (!ret) { - ret = pdc_alloc_desc(&pd_chan->chan, GFP_NOIO); + ret = pdc_alloc_desc(&pd_chan->chan, GFP_ATOMIC); if (ret) { spin_lock(&pd_chan->lock); pd_chan->descs_allocated++; --- linux-ppc-3.8.0.orig/drivers/dma/pl330.c +++ linux-ppc-3.8.0/drivers/dma/pl330.c @@ -2459,10 +2459,10 @@ struct dma_pl330_chan *pch = to_pchan(chan); unsigned long flags; - spin_lock_irqsave(&pch->lock, flags); - tasklet_kill(&pch->task); + spin_lock_irqsave(&pch->lock, flags); + pl330_release_channel(pch->pl330_chid); pch->pl330_chid = NULL; --- linux-ppc-3.8.0.orig/drivers/dma/dmaengine.c +++ linux-ppc-3.8.0/drivers/dma/dmaengine.c @@ -709,8 +709,8 @@ !device->device_prep_dma_memset); BUG_ON(dma_has_cap(DMA_INTERRUPT, device->cap_mask) && !device->device_prep_dma_interrupt); - BUG_ON(dma_has_cap(DMA_SG, device->cap_mask) && - !device->device_prep_dma_sg); + BUG_ON(dma_has_cap(DMA_SLAVE, device->cap_mask) && + !device->device_prep_slave_sg); BUG_ON(dma_has_cap(DMA_CYCLIC, device->cap_mask) && !device->device_prep_dma_cyclic); BUG_ON(dma_has_cap(DMA_SLAVE, device->cap_mask) && --- linux-ppc-3.8.0.orig/drivers/dma/omap-dma.c +++ linux-ppc-3.8.0/drivers/dma/omap-dma.c @@ -276,12 +276,20 @@ spin_lock_irqsave(&c->vc.lock, flags); if (vchan_issue_pending(&c->vc) && !c->desc) { - struct omap_dmadev *d = to_omap_dma_dev(chan->device); - spin_lock(&d->lock); - if (list_empty(&c->node)) - list_add_tail(&c->node, &d->pending); - spin_unlock(&d->lock); - tasklet_schedule(&d->task); + /* + * c->cyclic is used only by audio and in this case the DMA need + * to be started without delay. + */ + if (!c->cyclic) { + struct omap_dmadev *d = to_omap_dma_dev(chan->device); + spin_lock(&d->lock); + if (list_empty(&c->node)) + list_add_tail(&c->node, &d->pending); + spin_unlock(&d->lock); + tasklet_schedule(&d->task); + } else { + omap_dma_start_desc(c); + } } spin_unlock_irqrestore(&c->vc.lock, flags); } @@ -661,32 +669,14 @@ } EXPORT_SYMBOL_GPL(omap_dma_filter_fn); -static struct platform_device *pdev; - -static const struct platform_device_info omap_dma_dev_info = { - .name = "omap-dma-engine", - .id = -1, - .dma_mask = DMA_BIT_MASK(32), -}; - static int omap_dma_init(void) { - int rc = platform_driver_register(&omap_dma_driver); - - if (rc == 0) { - pdev = platform_device_register_full(&omap_dma_dev_info); - if (IS_ERR(pdev)) { - platform_driver_unregister(&omap_dma_driver); - rc = PTR_ERR(pdev); - } - } - return rc; + return platform_driver_register(&omap_dma_driver); } subsys_initcall(omap_dma_init); static void __exit omap_dma_exit(void) { - platform_device_unregister(pdev); platform_driver_unregister(&omap_dma_driver); } module_exit(omap_dma_exit); --- linux-ppc-3.8.0.orig/drivers/dma/Kconfig +++ linux-ppc-3.8.0/drivers/dma/Kconfig @@ -83,7 +83,6 @@ config DW_DMAC tristate "Synopsys DesignWare AHB DMA support" - depends on HAVE_CLK select DMA_ENGINE default y if CPU_AT32AP7000 help --- linux-ppc-3.8.0.orig/drivers/dma/ipu/ipu_idmac.c +++ linux-ppc-3.8.0/drivers/dma/ipu/ipu_idmac.c @@ -1347,7 +1347,7 @@ chan->chan_id != IDMAC_IC_7) return NULL; - if (direction != DMA_DEV_TO_MEM && direction != DMA_MEM_TO_DEV) { + if (!is_slave_direction(direction)) { dev_err(chan->device->dev, "Invalid DMA direction %d!\n", direction); return NULL; } --- linux-ppc-3.8.0.orig/drivers/dma/sh/shdma.c +++ linux-ppc-3.8.0/drivers/dma/sh/shdma.c @@ -326,7 +326,7 @@ shdma_chan); const struct sh_dmae_slave_config *cfg = dmae_find_slave(sh_chan, slave_id); if (!cfg) - return -ENODEV; + return -ENXIO; if (!try) sh_chan->config = cfg; --- linux-ppc-3.8.0.orig/drivers/hv/hv_util.c +++ linux-ppc-3.8.0/drivers/hv/hv_util.c @@ -49,6 +49,16 @@ .util_deinit = hv_kvp_deinit, }; +static void perform_shutdown(struct work_struct *dummy) +{ + orderly_poweroff(true); +} + +/* + * Perform the shutdown operation in a thread context. + */ +static DECLARE_WORK(shutdown_work, perform_shutdown); + static void shutdown_onchannelcallback(void *context) { struct vmbus_channel *channel = context; @@ -106,7 +116,7 @@ } if (execute_shutdown == true) - orderly_poweroff(true); + schedule_work(&shutdown_work); } /* --- linux-ppc-3.8.0.orig/drivers/w1/w1.c +++ linux-ppc-3.8.0/drivers/w1/w1.c @@ -924,7 +924,8 @@ tmp64 = (triplet_ret >> 2); rn |= (tmp64 << i); - if (kthread_should_stop()) { + /* ensure we're called from kthread and not by netlink callback */ + if (!dev->priv && kthread_should_stop()) { mutex_unlock(&dev->bus_mutex); dev_dbg(&dev->dev, "Abort w1_search\n"); return; --- linux-ppc-3.8.0.orig/drivers/w1/masters/w1-gpio.c +++ linux-ppc-3.8.0/drivers/w1/masters/w1-gpio.c @@ -72,7 +72,7 @@ return 0; } -static int __init w1_gpio_probe(struct platform_device *pdev) +static int w1_gpio_probe(struct platform_device *pdev) { struct w1_bus_master *master; struct w1_gpio_platform_data *pdata; @@ -158,7 +158,7 @@ return err; } -static int __exit w1_gpio_remove(struct platform_device *pdev) +static int w1_gpio_remove(struct platform_device *pdev) { struct w1_bus_master *master = platform_get_drvdata(pdev); struct w1_gpio_platform_data *pdata = pdev->dev.platform_data; @@ -210,7 +210,7 @@ .of_match_table = of_match_ptr(w1_gpio_dt_ids), }, .probe = w1_gpio_probe, - .remove = __exit_p(w1_gpio_remove), + .remove = w1_gpio_remove, .suspend = w1_gpio_suspend, .resume = w1_gpio_resume, }; --- linux-ppc-3.8.0.orig/drivers/cpufreq/Kconfig.arm +++ linux-ppc-3.8.0/drivers/cpufreq/Kconfig.arm @@ -83,3 +83,18 @@ default y help This adds the CPUFreq driver support for SPEAr SOCs. + +config ARM_HIGHBANK_CPUFREQ + tristate "Calxeda Highbank-based" + depends on ARCH_HIGHBANK + select CPU_FREQ_TABLE + select GENERIC_CPUFREQ_CPU0 + select PM_OPP + select REGULATOR + + default m + help + This adds the CPUFreq driver for Calxeda Highbank SoC + based boards. + + If in doubt, say N. --- linux-ppc-3.8.0.orig/drivers/cpufreq/Makefile +++ linux-ppc-3.8.0/drivers/cpufreq/Makefile @@ -50,8 +50,9 @@ obj-$(CONFIG_ARM_EXYNOS4210_CPUFREQ) += exynos4210-cpufreq.o obj-$(CONFIG_ARM_EXYNOS4X12_CPUFREQ) += exynos4x12-cpufreq.o obj-$(CONFIG_ARM_EXYNOS5250_CPUFREQ) += exynos5250-cpufreq.o -obj-$(CONFIG_ARM_OMAP2PLUS_CPUFREQ) += omap-cpufreq.o +obj-$(CONFIG_ARM_OMAP2PLUS_CPUFREQ) += omap-cpufreq.o obj-$(CONFIG_ARM_SPEAR_CPUFREQ) += spear-cpufreq.o +obj-$(CONFIG_ARM_HIGHBANK_CPUFREQ) += highbank-cpufreq.o ################################################################################## # PowerPC platform drivers --- linux-ppc-3.8.0.orig/drivers/cpufreq/acpi-cpufreq.c +++ linux-ppc-3.8.0/drivers/cpufreq/acpi-cpufreq.c @@ -347,11 +347,11 @@ switch (per_cpu(acfreq_data, cpumask_first(mask))->cpu_feature) { case SYSTEM_INTEL_MSR_CAPABLE: cmd.type = SYSTEM_INTEL_MSR_CAPABLE; - cmd.addr.msr.reg = MSR_IA32_PERF_STATUS; + cmd.addr.msr.reg = MSR_IA32_PERF_CTL; break; case SYSTEM_AMD_MSR_CAPABLE: cmd.type = SYSTEM_AMD_MSR_CAPABLE; - cmd.addr.msr.reg = MSR_AMD_PERF_STATUS; + cmd.addr.msr.reg = MSR_AMD_PERF_CTL; break; case SYSTEM_IO_CAPABLE: cmd.type = SYSTEM_IO_CAPABLE; --- linux-ppc-3.8.0.orig/drivers/cpufreq/omap-cpufreq.c +++ linux-ppc-3.8.0/drivers/cpufreq/omap-cpufreq.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -254,7 +255,7 @@ .attr = omap_cpufreq_attr, }; -static int __init omap_cpufreq_init(void) +static int omap_cpufreq_probe(struct platform_device *pdev) { mpu_dev = get_cpu_device(0); if (!mpu_dev) { @@ -282,12 +283,20 @@ return cpufreq_register_driver(&omap_driver); } -static void __exit omap_cpufreq_exit(void) +static int omap_cpufreq_remove(struct platform_device *pdev) { - cpufreq_unregister_driver(&omap_driver); + return cpufreq_unregister_driver(&omap_driver); } +static struct platform_driver omap_cpufreq_platdrv = { + .driver = { + .name = "omap-cpufreq", + .owner = THIS_MODULE, + }, + .probe = omap_cpufreq_probe, + .remove = omap_cpufreq_remove, +}; +module_platform_driver(omap_cpufreq_platdrv); + MODULE_DESCRIPTION("cpufreq driver for OMAP SoCs"); MODULE_LICENSE("GPL"); -module_init(omap_cpufreq_init); -module_exit(omap_cpufreq_exit); --- linux-ppc-3.8.0.orig/drivers/cpufreq/exynos-cpufreq.c +++ linux-ppc-3.8.0/drivers/cpufreq/exynos-cpufreq.c @@ -222,8 +222,6 @@ cpufreq_frequency_table_get_attr(exynos_info->freq_table, policy->cpu); - locking_frequency = exynos_getspeed(0); - /* set the transition latency value */ policy->cpuinfo.transition_latency = 100000; @@ -288,6 +286,8 @@ goto err_vdd_arm; } + locking_frequency = exynos_getspeed(0); + register_pm_notifier(&exynos_cpufreq_nb); if (cpufreq_register_driver(&exynos_driver)) { --- linux-ppc-3.8.0.orig/drivers/cpufreq/cpufreq-cpu0.c +++ linux-ppc-3.8.0/drivers/cpufreq/cpufreq-cpu0.c @@ -179,10 +179,20 @@ static int cpu0_cpufreq_driver_init(void) { - struct device_node *np; + struct device_node *np, *parent; int ret; - np = of_find_node_by_path("/cpus/cpu@0"); + parent = of_find_node_by_path("/cpus"); + if (!parent) { + pr_err("failed to find OF /cpus\n"); + return -ENOENT; + } + + for_each_child_of_node(parent, np) { + if (of_get_property(np, "operating-points", NULL)) + break; + } + if (!np) { pr_err("failed to find cpu0 node\n"); return -ENOENT; --- linux-ppc-3.8.0.orig/drivers/cpufreq/cpufreq.c +++ linux-ppc-3.8.0/drivers/cpufreq/cpufreq.c @@ -1851,6 +1851,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# @@ -1873,7 +1887,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-ppc-3.8.0.orig/drivers/cpufreq/highbank-cpufreq.c +++ linux-ppc-3.8.0/drivers/cpufreq/highbank-cpufreq.c @@ -0,0 +1,115 @@ +/* + * Copyright (C) 2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This driver provides the clk notifier callbacks that are used when + * the cpufreq-cpu0 driver changes to frequency to alert the highbank + * EnergyCore Management Engine (ECME) about the need to change + * voltage. The ECME interfaces with the actual voltage regulators. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include + +#define HB_CPUFREQ_CHANGE_NOTE 0x80000001 +#define HB_CPUFREQ_IPC_LEN 7 +#define HB_CPUFREQ_VOLT_RETRIES 15 + +static int hb_voltage_change(unsigned int freq) +{ + int i; + u32 msg[HB_CPUFREQ_IPC_LEN]; + + msg[0] = HB_CPUFREQ_CHANGE_NOTE; + msg[1] = freq / 1000000; + for (i = 2; i < HB_CPUFREQ_IPC_LEN; i++) + msg[i] = 0; + + return pl320_ipc_transmit(msg); +} + +static int hb_cpufreq_clk_notify(struct notifier_block *nb, + unsigned long action, void *hclk) +{ + struct clk_notifier_data *clk_data = hclk; + int i = 0; + + if (action == PRE_RATE_CHANGE) { + if (clk_data->new_rate > clk_data->old_rate) + while (hb_voltage_change(clk_data->new_rate)) + if (i++ > HB_CPUFREQ_VOLT_RETRIES) + return NOTIFY_BAD; + } else if (action == POST_RATE_CHANGE) { + if (clk_data->new_rate < clk_data->old_rate) + while (hb_voltage_change(clk_data->new_rate)) + if (i++ > HB_CPUFREQ_VOLT_RETRIES) + return NOTIFY_BAD; + } + + return NOTIFY_DONE; +} + +static struct notifier_block hb_cpufreq_clk_nb = { + .notifier_call = hb_cpufreq_clk_notify, +}; + +static int hb_cpufreq_driver_init(void) +{ + struct device *cpu_dev; + struct clk *cpu_clk; + struct device_node *np; + int ret; + + if (!of_machine_is_compatible("calxeda,highbank")) + return -ENODEV; + + for_each_child_of_node(of_find_node_by_path("/cpus"), np) + if (of_get_property(np, "operating-points", NULL)) + break; + + if (!np) { + pr_err("failed to find highbank cpufreq node\n"); + return -ENOENT; + } + + cpu_dev = get_cpu_device(0); + if (!cpu_dev) { + pr_err("failed to get highbank cpufreq device\n"); + ret = -ENODEV; + goto out_put_node; + } + + cpu_dev->of_node = np; + + cpu_clk = clk_get(cpu_dev, NULL); + if (IS_ERR(cpu_clk)) { + ret = PTR_ERR(cpu_clk); + pr_err("failed to get cpu0 clock: %d\n", ret); + goto out_put_node; + } + + ret = clk_notifier_register(cpu_clk, &hb_cpufreq_clk_nb); + if (ret) { + pr_err("failed to register clk notifier: %d\n", ret); + goto out_put_node; + } + +out_put_node: + of_node_put(np); + return ret; +} +module_init(hb_cpufreq_driver_init); + +MODULE_AUTHOR("Mark Langsdorf "); +MODULE_DESCRIPTION("Calxeda Highbank cpufreq driver"); +MODULE_LICENSE("GPL"); --- linux-ppc-3.8.0.orig/drivers/pci/access.c +++ linux-ppc-3.8.0/drivers/pci/access.c @@ -515,7 +515,7 @@ return false; switch (pos) { - case PCI_EXP_FLAGS_TYPE: + case PCI_EXP_FLAGS: return true; case PCI_EXP_DEVCAP: case PCI_EXP_DEVCTL: --- linux-ppc-3.8.0.orig/drivers/pci/probe.c +++ linux-ppc-3.8.0/drivers/pci/probe.c @@ -1667,8 +1667,10 @@ bridge->dev.release = pci_release_bus_bridge_dev; dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus); error = device_register(&bridge->dev); - if (error) - goto bridge_dev_reg_err; + if (error) { + put_device(&bridge->dev); + goto err_out; + } b->bridge = get_device(&bridge->dev); device_enable_async_suspend(b->bridge); pci_set_bus_of_node(b); @@ -1724,8 +1726,6 @@ class_dev_reg_err: put_device(&bridge->dev); device_unregister(&bridge->dev); -bridge_dev_reg_err: - kfree(bridge); err_out: kfree(b); return NULL; --- linux-ppc-3.8.0.orig/drivers/pci/pci-acpi.c +++ linux-ppc-3.8.0/drivers/pci/pci-acpi.c @@ -53,14 +53,15 @@ return; } - if (!pci_dev->pm_cap || !pci_dev->pme_support - || pci_check_pme_status(pci_dev)) { - if (pci_dev->pme_poll) - pci_dev->pme_poll = false; + /* Clear PME Status if set. */ + if (pci_dev->pme_support) + pci_check_pme_status(pci_dev); - pci_wakeup_event(pci_dev); - pm_runtime_resume(&pci_dev->dev); - } + if (pci_dev->pme_poll) + pci_dev->pme_poll = false; + + pci_wakeup_event(pci_dev); + pm_runtime_resume(&pci_dev->dev); if (pci_dev->subordinate) pci_pme_wakeup_bus(pci_dev->subordinate); --- linux-ppc-3.8.0.orig/drivers/pci/pci.c +++ linux-ppc-3.8.0/drivers/pci/pci.c @@ -651,15 +651,11 @@ error = platform_pci_set_power_state(dev, state); if (!error) pci_update_current_state(dev, state); - /* Fall back to PCI_D0 if native PM is not supported */ - if (!dev->pm_cap) - dev->current_state = PCI_D0; - } else { + } else error = -ENODEV; - /* Fall back to PCI_D0 if native PM is not supported */ - if (!dev->pm_cap) - dev->current_state = PCI_D0; - } + + if (error && !dev->pm_cap) /* Fall back to PCI_D0 */ + dev->current_state = PCI_D0; return error; } --- linux-ppc-3.8.0.orig/drivers/pci/pci-driver.c +++ linux-ppc-3.8.0/drivers/pci/pci-driver.c @@ -628,6 +628,7 @@ goto Fixup; } + pci_dev->state_saved = false; if (pm->suspend) { pci_power_t prev = pci_dev->current_state; int error; @@ -774,6 +775,7 @@ return 0; } + pci_dev->state_saved = false; if (pm->freeze) { int error; @@ -862,6 +864,7 @@ goto Fixup; } + pci_dev->state_saved = false; if (pm->poweroff) { int error; @@ -987,6 +990,7 @@ if (!pm || !pm->runtime_suspend) return -ENOSYS; + pci_dev->state_saved = false; pci_dev->no_d3cold = false; error = pm->runtime_suspend(dev); suspend_report_result(pm->runtime_suspend, error); --- linux-ppc-3.8.0.orig/drivers/pci/quirks.c +++ linux-ppc-3.8.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. @@ -1062,6 +1077,8 @@ DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_HUDSON2_SATA_IDE, quirk_amd_ide_mode); DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_HUDSON2_SATA_IDE, quirk_amd_ide_mode); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x7900, quirk_amd_ide_mode); +DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_AMD, 0x7900, quirk_amd_ide_mode); /* * Serverworks CSB5 IDE does not fully support native mode --- linux-ppc-3.8.0.orig/drivers/pci/xen-pcifront.c +++ linux-ppc-3.8.0/drivers/pci/xen-pcifront.c @@ -678,10 +678,9 @@ if (!pcifront_dev) { dev_info(&pdev->xdev->dev, "Installing PCI frontend\n"); pcifront_dev = pdev; - } else { - dev_err(&pdev->xdev->dev, "PCI frontend already installed!\n"); + } else err = -EEXIST; - } + spin_unlock(&pcifront_dev_lock); if (!err && !swiotlb_nr_tbl()) { @@ -848,7 +847,7 @@ goto out; err = pcifront_connect_and_init_dma(pdev); - if (err) { + if (err && err != -EEXIST) { xenbus_dev_fatal(pdev->xdev, err, "Error setting up PCI Frontend"); goto out; --- linux-ppc-3.8.0.orig/drivers/pci/pcie/portdrv_pci.c +++ linux-ppc-3.8.0/drivers/pci/pcie/portdrv_pci.c @@ -185,14 +185,6 @@ #endif /* !PM */ /* - * PCIe port runtime suspend is broken for some chipsets, so use a - * black list to disable runtime PM for these chipsets. - */ -static const struct pci_device_id port_runtime_pm_black_list[] = { - { /* end: all zeroes */ } -}; - -/* * pcie_portdrv_probe - Probe PCI-Express port devices * @dev: PCI-Express port device being probed * @@ -225,16 +217,11 @@ * it by default. */ dev->d3cold_allowed = false; - if (!pci_match_id(port_runtime_pm_black_list, dev)) - pm_runtime_put_noidle(&dev->dev); - return 0; } static void pcie_portdrv_remove(struct pci_dev *dev) { - if (!pci_match_id(port_runtime_pm_black_list, dev)) - pm_runtime_get_noresume(&dev->dev); pcie_port_device_remove(dev); pci_disable_device(dev); } --- linux-ppc-3.8.0.orig/drivers/acpi/blacklist.c +++ linux-ppc-3.8.0/drivers/acpi/blacklist.c @@ -193,6 +193,13 @@ return 0; } +static int __init dmi_disable_osi_win8(const struct dmi_system_id *d) +{ + printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); + acpi_osi_setup("!Windows 2012"); + return 0; +} + static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { { .callback = dmi_disable_osi_vista, @@ -268,6 +275,77 @@ }, }, + /* + * The following Lenovo models have a broken workaround in the + * acpi_video backlight implementation to meet the Windows 8 + * requirement of 101 backlight levels. Reverting to pre-Win8 + * behavior fixes the problem. + */ + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad L430", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L430"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T430", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T430s", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430s"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T530"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad W530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad W530"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad X1 Carbon", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X1 Carbon"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad X230", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X230"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad Edge E330", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad Edge E330"), + }, + }, + /* * BIOS invocation of _OSI(Linux) is almost always a BIOS bug. * Linux ignores it, except for the machines enumerated below. --- linux-ppc-3.8.0.orig/drivers/acpi/video.c +++ linux-ppc-3.8.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 bool brightness_autoswitch_via_bios = false; +module_param(brightness_autoswitch_via_bios, bool, 0644); + +/* * By default, we don't allow duplicate ACPI video bus devices * under the same VGA controller */ @@ -447,6 +455,46 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP Folio 13 - 2000 Notebook PC"), }, }, + { + .callback = video_ignore_initial_backlight, + .ident = "Fujitsu E753", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E753"), + }, + }, + { + .callback = video_ignore_initial_backlight, + .ident = "HP Pavilion dm4", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dm4 Notebook PC"), + }, + }, + { + .callback = video_ignore_initial_backlight, + .ident = "HP Pavilion g6 Notebook PC", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion g6 Notebook PC"), + }, + }, + { + .callback = video_ignore_initial_backlight, + .ident = "HP 1000 Notebook PC", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP 1000 Notebook PC"), + }, + }, + { + .callback = video_ignore_initial_backlight, + .ident = "HP Pavilion m4", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion m4 Notebook PC"), + }, + }, {} }; @@ -1442,7 +1490,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) --- linux-ppc-3.8.0.orig/drivers/acpi/proc.c +++ linux-ppc-3.8.0/drivers/acpi/proc.c @@ -311,11 +311,14 @@ dev->pnp.bus_id, (u32) dev->wakeup.sleep_state); - if (!dev->physical_node_count) + mutex_lock(&dev->physical_node_lock); + + if (!dev->physical_node_count) { seq_printf(seq, "%c%-8s\n", - dev->wakeup.flags.run_wake ? - '*' : ' ', "disabled"); - else { + dev->wakeup.flags.run_wake ? '*' : ' ', + device_may_wakeup(&dev->dev) ? + "enabled" : "disabled"); + } else { struct device *ldev; list_for_each_entry(entry, &dev->physical_node_list, node) { @@ -337,6 +340,8 @@ put_device(ldev); } } + + mutex_unlock(&dev->physical_node_lock); } mutex_unlock(&acpi_device_lock); return 0; @@ -346,12 +351,16 @@ { struct acpi_device_physical_node *entry; + mutex_lock(&adev->physical_node_lock); + list_for_each_entry(entry, &adev->physical_node_list, node) if (entry->dev && device_can_wakeup(entry->dev)) { bool enable = !device_may_wakeup(entry->dev); device_set_wakeup_enable(entry->dev, enable); } + + mutex_unlock(&adev->physical_node_lock); } static ssize_t --- linux-ppc-3.8.0.orig/drivers/acpi/sleep.c +++ linux-ppc-3.8.0/drivers/acpi/sleep.c @@ -177,6 +177,14 @@ }, { .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"), --- linux-ppc-3.8.0.orig/drivers/acpi/video_detect.c +++ linux-ppc-3.8.0/drivers/acpi/video_detect.c @@ -164,6 +164,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "UL30VT"), }, }, + { + .callback = video_detect_force_vendor, + .ident = "Asus UL30A", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "UL30A"), + }, + }, { }, }; --- linux-ppc-3.8.0.orig/drivers/acpi/glue.c +++ linux-ppc-3.8.0/drivers/acpi/glue.c @@ -95,40 +95,31 @@ return ret; } -/* Get device's handler per its address under its parent */ -struct acpi_find_child { - acpi_handle handle; - u64 address; -}; - -static acpi_status -do_acpi_find_child(acpi_handle handle, u32 lvl, void *context, void **rv) +static acpi_status do_acpi_find_child(acpi_handle handle, u32 lvl_not_used, + void *addr_p, void **ret_p) { + unsigned long long addr; acpi_status status; - struct acpi_device_info *info; - struct acpi_find_child *find = context; - status = acpi_get_object_info(handle, &info); - if (ACPI_SUCCESS(status)) { - if ((info->address == find->address) - && (info->valid & ACPI_VALID_ADR)) - find->handle = handle; - kfree(info); + status = acpi_evaluate_integer(handle, METHOD_NAME__ADR, NULL, &addr); + if (ACPI_SUCCESS(status) && addr == *((u64 *)addr_p)) { + *ret_p = handle; + return AE_CTRL_TERMINATE; } return AE_OK; } acpi_handle acpi_get_child(acpi_handle parent, u64 address) { - struct acpi_find_child find = { NULL, address }; + void *ret = NULL; if (!parent) return NULL; - acpi_walk_namespace(ACPI_TYPE_DEVICE, parent, - 1, do_acpi_find_child, NULL, &find, NULL); - return find.handle; -} + acpi_walk_namespace(ACPI_TYPE_DEVICE, parent, 1, NULL, + do_acpi_find_child, &address, &ret); + return (acpi_handle)ret; +} EXPORT_SYMBOL(acpi_get_child); static int acpi_bind_one(struct device *dev, acpi_handle handle) --- linux-ppc-3.8.0.orig/drivers/acpi/thermal.c +++ linux-ppc-3.8.0/drivers/acpi/thermal.c @@ -719,9 +719,19 @@ return -EINVAL; if (type == THERMAL_TRIP_ACTIVE) { - /* aggressive active cooling */ - *trend = THERMAL_TREND_RAISING; - return 0; + unsigned long trip_temp; + unsigned long temp = KELVIN_TO_MILLICELSIUS(tz->temperature, + tz->kelvin_offset); + if (thermal_get_trip_temp(thermal, trip, &trip_temp)) + return -EINVAL; + + if (temp > trip_temp) { + *trend = THERMAL_TREND_RAISING; + return 0; + } else { + /* Fall back on default trend */ + return -EINVAL; + } } /* --- linux-ppc-3.8.0.orig/drivers/acpi/battery.c +++ linux-ppc-3.8.0/drivers/acpi/battery.c @@ -117,6 +117,7 @@ struct acpi_device *device; struct notifier_block pm_nb; unsigned long update_time; + int revision; int rate_now; int capacity_now; int voltage_now; @@ -359,6 +360,7 @@ }; static struct acpi_offsets extended_info_offsets[] = { + {offsetof(struct acpi_battery, revision), 0}, {offsetof(struct acpi_battery, power_unit), 0}, {offsetof(struct acpi_battery, design_capacity), 0}, {offsetof(struct acpi_battery, full_charge_capacity), 0}, --- linux-ppc-3.8.0.orig/drivers/acpi/acpi_memhotplug.c +++ linux-ppc-3.8.0/drivers/acpi/acpi_memhotplug.c @@ -406,6 +406,7 @@ /* Get the range from the _CRS */ result = acpi_memory_get_device_resources(mem_device); if (result) { + device->driver_data = NULL; kfree(mem_device); return result; } --- linux-ppc-3.8.0.orig/drivers/acpi/pci_root.c +++ linux-ppc-3.8.0/drivers/acpi/pci_root.c @@ -240,8 +240,8 @@ *control &= OSC_PCI_CONTROL_MASKS; capbuf[OSC_CONTROL_TYPE] = *control | root->osc_control_set; } else { - /* Run _OSC query for all possible controls. */ - capbuf[OSC_CONTROL_TYPE] = OSC_PCI_CONTROL_MASKS; + /* Run _OSC query only with existing controls. */ + capbuf[OSC_CONTROL_TYPE] = root->osc_control_set; } status = acpi_pci_run_osc(root->device->handle, capbuf, &result); @@ -454,7 +454,6 @@ acpi_handle handle; struct acpi_device *child; u32 flags, base_flags; - bool is_osc_granted = false; root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL); if (!root) @@ -525,60 +524,6 @@ flags = base_flags = OSC_PCI_SEGMENT_GROUPS_SUPPORT; acpi_pci_osc_support(root, flags); - /* Indicate support for various _OSC capabilities. */ - if (pci_ext_cfg_avail()) - flags |= OSC_EXT_PCI_CONFIG_SUPPORT; - if (pcie_aspm_support_enabled()) { - flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | - OSC_CLOCK_PWR_CAPABILITY_SUPPORT; - } - if (pci_msi_enabled()) - flags |= OSC_MSI_SUPPORT; - if (flags != base_flags) { - status = acpi_pci_osc_support(root, flags); - if (ACPI_FAILURE(status)) { - dev_info(&device->dev, "ACPI _OSC support " - "notification failed, disabling PCIe ASPM\n"); - pcie_no_aspm(); - flags = base_flags; - } - } - if (!pcie_ports_disabled - && (flags & ACPI_PCIE_REQ_SUPPORT) == ACPI_PCIE_REQ_SUPPORT) { - flags = OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL - | OSC_PCI_EXPRESS_NATIVE_HP_CONTROL - | OSC_PCI_EXPRESS_PME_CONTROL; - - if (pci_aer_available()) { - if (aer_acpi_firmware_first()) - dev_dbg(&device->dev, - "PCIe errors handled by BIOS.\n"); - else - flags |= OSC_PCI_EXPRESS_AER_CONTROL; - } - - dev_info(&device->dev, - "Requesting ACPI _OSC control (0x%02x)\n", flags); - - status = acpi_pci_osc_control_set(device->handle, &flags, - OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL); - if (ACPI_SUCCESS(status)) { - is_osc_granted = true; - dev_info(&device->dev, - "ACPI _OSC control (0x%02x) granted\n", flags); - } else { - is_osc_granted = false; - dev_info(&device->dev, - "ACPI _OSC request failed (%s), " - "returned control mask: 0x%02x\n", - acpi_format_exception(status), flags); - } - } else { - dev_info(&device->dev, - "Unable to request _OSC control " - "(_OSC support mask: 0x%02x)\n", flags); - } - /* * TBD: Need PCI interface for enumeration/configuration of roots. */ @@ -618,14 +563,66 @@ list_for_each_entry(child, &device->children, node) acpi_pci_bridge_scan(child); - /* ASPM setting */ - if (is_osc_granted) { - if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) - pcie_clear_aspm(root->bus); + /* Indicate support for various _OSC capabilities. */ + if (pci_ext_cfg_avail()) + flags |= OSC_EXT_PCI_CONFIG_SUPPORT; + if (pcie_aspm_support_enabled()) + flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | + OSC_CLOCK_PWR_CAPABILITY_SUPPORT; + if (pci_msi_enabled()) + flags |= OSC_MSI_SUPPORT; + if (flags != base_flags) { + status = acpi_pci_osc_support(root, flags); + if (ACPI_FAILURE(status)) { + dev_info(root->bus->bridge, "ACPI _OSC support " + "notification failed, disabling PCIe ASPM\n"); + pcie_no_aspm(); + flags = base_flags; + } + } + + if (!pcie_ports_disabled + && (flags & ACPI_PCIE_REQ_SUPPORT) == ACPI_PCIE_REQ_SUPPORT) { + flags = OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL + | OSC_PCI_EXPRESS_NATIVE_HP_CONTROL + | OSC_PCI_EXPRESS_PME_CONTROL; + + if (pci_aer_available()) { + if (aer_acpi_firmware_first()) + dev_dbg(root->bus->bridge, + "PCIe errors handled by BIOS.\n"); + else + flags |= OSC_PCI_EXPRESS_AER_CONTROL; + } + + dev_info(root->bus->bridge, + "Requesting ACPI _OSC control (0x%02x)\n", flags); + + status = acpi_pci_osc_control_set(device->handle, &flags, + OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL); + if (ACPI_SUCCESS(status)) { + dev_info(root->bus->bridge, + "ACPI _OSC control (0x%02x) granted\n", flags); + if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { + /* + * We have ASPM control, but the FADT indicates + * that it's unsupported. Clear it. + */ + pcie_clear_aspm(root->bus); + } + } else { + dev_info(root->bus->bridge, + "ACPI _OSC request failed (%s), " + "returned control mask: 0x%02x\n", + acpi_format_exception(status), flags); + pr_info("ACPI _OSC control for PCIe not granted, " + "disabling ASPM\n"); + pcie_no_aspm(); + } } else { - pr_info("ACPI _OSC control for PCIe not granted, " - "disabling ASPM\n"); - pcie_no_aspm(); + dev_info(root->bus->bridge, + "Unable to request _OSC control " + "(_OSC support mask: 0x%02x)\n", flags); } pci_acpi_add_bus_pm_notifier(device, root->bus); --- linux-ppc-3.8.0.orig/drivers/acpi/ec.c +++ linux-ppc-3.8.0/drivers/acpi/ec.c @@ -223,7 +223,7 @@ static int ec_poll(struct acpi_ec *ec) { unsigned long flags; - int repeat = 2; /* number of command restarts */ + int repeat = 5; /* number of command restarts */ while (repeat--) { unsigned long delay = jiffies + msecs_to_jiffies(ec_delay); @@ -241,8 +241,6 @@ } advance_transaction(ec, acpi_ec_read_status(ec)); } while (time_before(jiffies, delay)); - if (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) - break; pr_debug(PREFIX "controller reset, restart transaction\n"); spin_lock_irqsave(&ec->lock, flags); start_transaction(ec); --- linux-ppc-3.8.0.orig/drivers/acpi/power.c +++ linux-ppc-3.8.0/drivers/acpi/power.c @@ -256,7 +256,7 @@ if (resource->ref_count++) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, - "Power resource [%s] already on", + "Power resource [%s] already on\n", resource->name)); } else { result = __acpi_power_on(resource); @@ -298,7 +298,7 @@ if (!resource->ref_count) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, - "Power resource [%s] already off", + "Power resource [%s] already off\n", resource->name)); goto unlock; } --- linux-ppc-3.8.0.orig/drivers/acpi/osl.c +++ linux-ppc-3.8.0/drivers/acpi/osl.c @@ -642,7 +642,7 @@ * Both memblock_reserve and e820_add_region (via arch_reserve_mem_area) * works fine. */ - memblock_reserve(acpi_tables_addr, acpi_tables_addr + all_tables_size); + memblock_reserve(acpi_tables_addr, all_tables_size); arch_reserve_mem_area(acpi_tables_addr, all_tables_size); p = early_ioremap(acpi_tables_addr, all_tables_size); --- linux-ppc-3.8.0.orig/drivers/acpi/Kconfig +++ linux-ppc-3.8.0/drivers/acpi/Kconfig @@ -268,7 +268,8 @@ default ACPI_CUSTOM_DSDT_FILE != "" config ACPI_INITRD_TABLE_OVERRIDE - bool "ACPI tables can be passed via uncompressed cpio in initrd" + bool "ACPI tables override via initrd" + depends on BLK_DEV_INITRD && X86 default n help This option provides functionality to override arbitrary ACPI tables --- linux-ppc-3.8.0.orig/drivers/acpi/acpica/exfldio.c +++ linux-ppc-3.8.0/drivers/acpi/acpica/exfldio.c @@ -721,7 +721,19 @@ if ((obj_desc->common_field.start_field_bit_offset == 0) && (obj_desc->common_field.bit_length == access_bit_width)) { - status = acpi_ex_field_datum_io(obj_desc, 0, buffer, ACPI_READ); + if (buffer_length >= sizeof(u64)) { + status = + acpi_ex_field_datum_io(obj_desc, 0, buffer, + ACPI_READ); + } else { + /* Use raw_datum (u64) to handle buffers < 64 bits */ + + status = + acpi_ex_field_datum_io(obj_desc, 0, &raw_datum, + ACPI_READ); + ACPI_MEMCPY(buffer, &raw_datum, buffer_length); + } + return_ACPI_STATUS(status); } --- linux-ppc-3.8.0.orig/drivers/acpi/acpica/dsmethod.c +++ linux-ppc-3.8.0/drivers/acpi/acpica/dsmethod.c @@ -151,6 +151,7 @@ status = acpi_os_create_mutex(&mutex_desc->mutex.os_mutex); if (ACPI_FAILURE(status)) { + acpi_ut_delete_object_desc(mutex_desc); return_ACPI_STATUS(status); } --- linux-ppc-3.8.0.orig/drivers/acpi/acpica/hwxfsleep.c +++ linux-ppc-3.8.0/drivers/acpi/acpica/hwxfsleep.c @@ -240,12 +240,14 @@ &acpi_sleep_dispatch[function_id]; #if (!ACPI_REDUCED_HARDWARE) - /* * If the Hardware Reduced flag is set (from the FADT), we must - * use the extended sleep registers + * use the extended sleep registers (FADT). Note: As per the ACPI + * specification, these extended registers are to be used for HW-reduced + * platforms only. They are not general-purpose replacements for the + * legacy PM register sleep support. */ - if (acpi_gbl_reduced_hardware || acpi_gbl_FADT.sleep_control.address) { + if (acpi_gbl_reduced_hardware) { status = sleep_functions->extended_function(sleep_state); } else { /* Legacy sleep */ --- linux-ppc-3.8.0.orig/drivers/staging/Makefile +++ linux-ppc-3.8.0/drivers/staging/Makefile @@ -63,3 +63,5 @@ obj-$(CONFIG_DGRP) += dgrp/ obj-$(CONFIG_SB105X) += sb105x/ obj-$(CONFIG_FIREWIRE_SERIAL) += fwserial/ +obj-$(CONFIG_FSL_DPA) += fsl_qbman/ +obj-$(CONFIG_FSL_PME2) += fsl_pme2/ --- linux-ppc-3.8.0.orig/drivers/staging/Kconfig +++ linux-ppc-3.8.0/drivers/staging/Kconfig @@ -142,4 +142,8 @@ source "drivers/staging/fwserial/Kconfig" +source "drivers/staging/fsl_qbman/Kconfig" + +source "drivers/staging/fsl_pme2/Kconfig" + endif # STAGING --- linux-ppc-3.8.0.orig/drivers/staging/vt6656/usbpipe.c +++ linux-ppc-3.8.0/drivers/staging/vt6656/usbpipe.c @@ -165,6 +165,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); @@ -179,12 +184,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 ++) { @@ -224,6 +230,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); @@ -237,10 +248,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-ppc-3.8.0.orig/drivers/staging/vt6656/hostap.c +++ linux-ppc-3.8.0/drivers/staging/vt6656/hostap.c @@ -133,7 +133,7 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Netdevice %s unregistered\n", pDevice->dev->name, pDevice->apdev->name); } - kfree(pDevice->apdev); + free_netdev(pDevice->apdev); pDevice->apdev = NULL; pDevice->bEnable8021x = FALSE; pDevice->bEnableHostWEP = FALSE; --- linux-ppc-3.8.0.orig/drivers/staging/vt6656/rxtx.c +++ linux-ppc-3.8.0/drivers/staging/vt6656/rxtx.c @@ -1454,7 +1454,7 @@ pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL; if (bNeedEncryption && pTransmitKey->pvKeyTable) { - if (((PSKeyTable)&pTransmitKey->pvKeyTable)->bSoftWEP == TRUE) + if (((PSKeyTable)pTransmitKey->pvKeyTable)->bSoftWEP == TRUE) bSoftWEP = TRUE; /* WEP 256 */ } --- linux-ppc-3.8.0.orig/drivers/staging/vt6656/dpc.c +++ linux-ppc-3.8.0/drivers/staging/vt6656/dpc.c @@ -1190,7 +1190,7 @@ if (byDecMode == KEY_CTL_WEP) { // handle WEP if ((pDevice->byLocalID <= REV_ID_VT3253_A1) || - (((PSKeyTable)(&pKey->pvKeyTable))->bSoftWEP == TRUE)) { + (((PSKeyTable)(pKey->pvKeyTable))->bSoftWEP == TRUE)) { // Software WEP // 1. 3253A // 2. WEP 256 @@ -1299,7 +1299,7 @@ // handle WEP DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"byDecMode == KEY_CTL_WEP\n"); if ((pDevice->byLocalID <= REV_ID_VT3253_A1) || - (((PSKeyTable)(&pKey->pvKeyTable))->bSoftWEP == TRUE) || + (((PSKeyTable)(pKey->pvKeyTable))->bSoftWEP == TRUE) || (bOnFly == FALSE)) { // Software WEP // 1. 3253A --- linux-ppc-3.8.0.orig/drivers/staging/vt6656/main_usb.c +++ linux-ppc-3.8.0/drivers/staging/vt6656/main_usb.c @@ -644,8 +644,6 @@ if (device->flags & DEVICE_FLAGS_OPENED) device_close(device->dev); - usb_put_dev(interface_to_usbdev(intf)); - return 0; } @@ -656,8 +654,6 @@ if (!device || !device->dev) return -ENODEV; - usb_get_dev(interface_to_usbdev(intf)); - if (!(device->flags & DEVICE_FLAGS_OPENED)) device_open(device->dev); --- linux-ppc-3.8.0.orig/drivers/staging/vt6656/iwctl.c +++ linux-ppc-3.8.0/drivers/staging/vt6656/iwctl.c @@ -1348,9 +1348,12 @@ return rc; } + spin_lock_irq(&pDevice->lock); + if (wrq->disabled) { pDevice->ePSMode = WMAC_POWER_CAM; PSvDisablePowerSaving(pDevice); + spin_unlock_irq(&pDevice->lock); return rc; } if ((wrq->flags & IW_POWER_TYPE) == IW_POWER_TIMEOUT) { @@ -1361,6 +1364,9 @@ pDevice->ePSMode = WMAC_POWER_FAST; PSvEnablePowerSaving((void *)pDevice, pMgmt->wListenInterval); } + + spin_unlock_irq(&pDevice->lock); + switch (wrq->flags & IW_POWER_MODE) { case IW_POWER_UNICAST_R: DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO " SIOCSIWPOWER: IW_POWER_UNICAST_R \n"); --- linux-ppc-3.8.0.orig/drivers/staging/zram/zram_drv.c +++ linux-ppc-3.8.0/drivers/staging/zram/zram_drv.c @@ -228,11 +228,12 @@ return 0; } - user_mem = kmap_atomic(page); if (is_partial_io(bvec)) /* Use a temporary buffer to decompress the page */ - uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL); - else + uncmem = kmalloc(PAGE_SIZE, GFP_NOIO); + + user_mem = kmap_atomic(page); + if (!is_partial_io(bvec)) uncmem = user_mem; if (!uncmem) { @@ -279,7 +280,7 @@ * This is a partial IO. We need to read the full page * before to write the changes. */ - uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL); + uncmem = kmalloc(PAGE_SIZE, GFP_NOIO); if (!uncmem) { pr_info("Error allocating temp memory!\n"); ret = -ENOMEM; @@ -460,13 +461,20 @@ */ static inline int valid_io_request(struct zram *zram, struct bio *bio) { - if (unlikely( - (bio->bi_sector >= (zram->disksize >> SECTOR_SHIFT)) || - (bio->bi_sector & (ZRAM_SECTOR_PER_LOGICAL_BLOCK - 1)) || - (bio->bi_size & (ZRAM_LOGICAL_BLOCK_SIZE - 1)))) { + u64 start, end, bound; + + /* unaligned request */ + if (unlikely(bio->bi_sector & (ZRAM_SECTOR_PER_LOGICAL_BLOCK - 1))) + return 0; + if (unlikely(bio->bi_size & (ZRAM_LOGICAL_BLOCK_SIZE - 1))) + return 0; + start = bio->bi_sector; + end = start + (bio->bi_size >> SECTOR_SHIFT); + bound = zram->disksize >> SECTOR_SHIFT; + /* out of range range */ + if (unlikely(start >= bound || end >= bound || start > end)) return 0; - } /* I/O request is valid */ return 1; @@ -625,7 +633,7 @@ static int create_device(struct zram *zram, int device_id) { - int ret = 0; + int ret = -ENOMEM; init_rwsem(&zram->lock); init_rwsem(&zram->init_lock); @@ -635,7 +643,6 @@ if (!zram->queue) { pr_err("Error allocating disk queue for device %d\n", device_id); - ret = -ENOMEM; goto out; } @@ -645,11 +652,9 @@ /* gendisk structure */ zram->disk = alloc_disk(1); if (!zram->disk) { - blk_cleanup_queue(zram->queue); pr_warn("Error allocating disk structure for device %d\n", device_id); - ret = -ENOMEM; - goto out; + goto out_free_queue; } zram->disk->major = zram_major; @@ -678,11 +683,17 @@ &zram_disk_attr_group); if (ret < 0) { pr_warn("Error creating sysfs group"); - goto out; + goto out_free_disk; } zram->init_done = 0; + return 0; +out_free_disk: + del_gendisk(zram->disk); + put_disk(zram->disk); +out_free_queue: + blk_cleanup_queue(zram->queue); out: return ret; } @@ -763,9 +774,11 @@ for (i = 0; i < num_devices; i++) { zram = &zram_devices[i]; + get_disk(zram->disk); destroy_device(zram); if (zram->init_done) zram_reset_device(zram); + put_disk(zram->disk); } unregister_blkdev(zram_major, "zram"); --- linux-ppc-3.8.0.orig/drivers/staging/zram/zram_sysfs.c +++ linux-ppc-3.8.0/drivers/staging/zram/zram_sysfs.c @@ -186,8 +186,10 @@ u64 val = 0; struct zram *zram = dev_to_zram(dev); + down_read(&zram->init_lock); if (zram->init_done) val = zs_get_total_size_bytes(zram->mem_pool); + up_read(&zram->init_lock); return sprintf(buf, "%llu\n", val); } --- linux-ppc-3.8.0.orig/drivers/staging/comedi/comedi_fops.c +++ linux-ppc-3.8.0/drivers/staging/comedi/comedi_fops.c @@ -1180,22 +1180,19 @@ DPRINTK("subdevice busy\n"); return -EBUSY; } - s->busy = file; /* make sure channel/gain list isn't too long */ if (cmd.chanlist_len > s->len_chanlist) { DPRINTK("channel/gain list too long %u > %d\n", cmd.chanlist_len, s->len_chanlist); - ret = -EINVAL; - goto cleanup; + return -EINVAL; } /* make sure channel/gain list isn't too short */ if (cmd.chanlist_len < 1) { DPRINTK("channel/gain list too short %u < 1\n", cmd.chanlist_len); - ret = -EINVAL; - goto cleanup; + return -EINVAL; } async->cmd = cmd; @@ -1205,8 +1202,7 @@ kmalloc(async->cmd.chanlist_len * sizeof(int), GFP_KERNEL); if (!async->cmd.chanlist) { DPRINTK("allocation failed\n"); - ret = -ENOMEM; - goto cleanup; + return -ENOMEM; } if (copy_from_user(async->cmd.chanlist, user_chanlist, @@ -1258,6 +1254,9 @@ comedi_set_subdevice_runflags(s, ~0, SRF_USER | SRF_RUNNING); + /* set s->busy _after_ setting SRF_RUNNING flag to avoid race with + * comedi_read() or comedi_write() */ + s->busy = file; ret = s->do_cmd(dev, s); if (ret == 0) return 0; @@ -1472,6 +1471,7 @@ void *file) { struct comedi_subdevice *s; + int ret; if (arg >= dev->n_subdevices) return -EINVAL; @@ -1488,7 +1488,11 @@ if (s->busy != file) return -EBUSY; - return do_cancel(dev, s); + ret = do_cancel(dev, s); + if (comedi_get_subdevice_runflags(s) & SRF_USER) + wake_up_interruptible(&s->async->wait_head); + + return ret; } /* @@ -1547,6 +1551,11 @@ /* 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) @@ -1774,7 +1783,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 @@ -1784,7 +1793,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); @@ -1826,7 +1835,7 @@ } s = comedi_get_write_subdevice(dev_file_info); - if (s == NULL) { + if (s == NULL || s->async == NULL) { retval = -EIO; goto done; } @@ -1850,6 +1859,7 @@ if (!(comedi_get_subdevice_runflags(s) & SRF_RUNNING)) { if (count == 0) { + mutex_lock(&dev->mutex); if (comedi_get_subdevice_runflags(s) & SRF_ERROR) { retval = -EPIPE; @@ -1857,6 +1867,7 @@ retval = 0; } do_become_nonbusy(dev, s); + mutex_unlock(&dev->mutex); } break; } @@ -1937,7 +1948,7 @@ } s = comedi_get_read_subdevice(dev_file_info); - if (s == NULL) { + if (s == NULL || s->async == NULL) { retval = -EIO; goto done; } @@ -1971,6 +1982,7 @@ if (n == 0) { if (!(comedi_get_subdevice_runflags(s) & SRF_RUNNING)) { + mutex_lock(&dev->mutex); do_become_nonbusy(dev, s); if (comedi_get_subdevice_runflags(s) & SRF_ERROR) { @@ -1978,6 +1990,7 @@ } else { retval = 0; } + mutex_unlock(&dev->mutex); break; } if (file->f_flags & O_NONBLOCK) { @@ -2015,9 +2028,11 @@ buf += n; break; /* makes device work like a pipe */ } - if (!(comedi_get_subdevice_runflags(s) & (SRF_ERROR | SRF_RUNNING)) && - async->buf_read_count - async->buf_write_count == 0) { - do_become_nonbusy(dev, s); + if (!(comedi_get_subdevice_runflags(s) & (SRF_ERROR | SRF_RUNNING))) { + mutex_lock(&dev->mutex); + if (async->buf_read_count - async->buf_write_count == 0) + do_become_nonbusy(dev, s); + mutex_unlock(&dev->mutex); } set_current_state(TASK_RUNNING); remove_wait_queue(&async->wait_head, &wait); --- linux-ppc-3.8.0.orig/drivers/staging/comedi/drivers/ni_labpc.c +++ linux-ppc-3.8.0/drivers/staging/comedi/drivers/ni_labpc.c @@ -1202,7 +1202,8 @@ else channel = CR_CHAN(cmd->chanlist[0]); /* munge channel bits for differential / scan disabled mode */ - if (mode != MODE_SINGLE_CHAN && aref == AREF_DIFF) + if ((mode == MODE_SINGLE_CHAN || mode == MODE_SINGLE_CHAN_INTERVAL) && + aref == AREF_DIFF) channel *= 2; devpriv->command1_bits |= ADC_CHAN_BITS(channel); devpriv->command1_bits |= thisboard->ai_range_code[range]; @@ -1217,21 +1218,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, mode) == 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); @@ -1311,6 +1297,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, mode) == 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-ppc-3.8.0.orig/drivers/staging/comedi/drivers/s626.c +++ linux-ppc-3.8.0/drivers/staging/comedi/drivers/s626.c @@ -1482,7 +1482,7 @@ case TRIG_NONE: /* continous acquisition */ devpriv->ai_continous = 1; - devpriv->ai_sample_count = 0; + devpriv->ai_sample_count = 1; break; } --- linux-ppc-3.8.0.orig/drivers/staging/comedi/drivers/dt9812.c +++ linux-ppc-3.8.0/drivers/staging/comedi/drivers/dt9812.c @@ -948,12 +948,13 @@ unsigned int *data) { struct comedi_dt9812 *devpriv = dev->private; + unsigned int channel = CR_CHAN(insn->chanspec); int n; u8 bits = 0; dt9812_digital_in(devpriv->slot, &bits); for (n = 0; n < insn->n; n++) - data[n] = ((1 << insn->chanspec) & bits) != 0; + data[n] = ((1 << channel) & bits) != 0; return n; } @@ -962,12 +963,13 @@ unsigned int *data) { struct comedi_dt9812 *devpriv = dev->private; + unsigned int channel = CR_CHAN(insn->chanspec); int n; u8 bits = 0; dt9812_digital_out_shadow(devpriv->slot, &bits); for (n = 0; n < insn->n; n++) { - u8 mask = 1 << insn->chanspec; + u8 mask = 1 << channel; bits &= ~mask; if (data[n]) @@ -982,13 +984,13 @@ unsigned int *data) { struct comedi_dt9812 *devpriv = dev->private; + unsigned int channel = CR_CHAN(insn->chanspec); int n; for (n = 0; n < insn->n; n++) { u16 value = 0; - dt9812_analog_in(devpriv->slot, insn->chanspec, &value, - DT9812_GAIN_1); + dt9812_analog_in(devpriv->slot, channel, &value, DT9812_GAIN_1); data[n] = value; } return n; @@ -999,12 +1001,13 @@ unsigned int *data) { struct comedi_dt9812 *devpriv = dev->private; + unsigned int channel = CR_CHAN(insn->chanspec); int n; u16 value; for (n = 0; n < insn->n; n++) { value = 0; - dt9812_analog_out_shadow(devpriv->slot, insn->chanspec, &value); + dt9812_analog_out_shadow(devpriv->slot, channel, &value); data[n] = value; } return n; @@ -1015,10 +1018,11 @@ unsigned int *data) { struct comedi_dt9812 *devpriv = dev->private; + unsigned int channel = CR_CHAN(insn->chanspec); int n; for (n = 0; n < insn->n; n++) - dt9812_analog_out(devpriv->slot, insn->chanspec, data[n]); + dt9812_analog_out(devpriv->slot, channel, data[n]); return n; } --- linux-ppc-3.8.0.orig/drivers/staging/tidspbridge/Kconfig +++ linux-ppc-3.8.0/drivers/staging/tidspbridge/Kconfig @@ -4,7 +4,7 @@ menuconfig TIDSPBRIDGE tristate "DSP Bridge driver" - depends on ARCH_OMAP3 + depends on ARCH_OMAP3 && !ARCH_MULTIPLATFORM select OMAP_MBOX_FWK help DSP/BIOS Bridge is designed for platforms that contain a GPP and --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/Makefile +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/Makefile @@ -0,0 +1,10 @@ +# PME +obj-$(CONFIG_FSL_PME2_CTRL) += pme2_ctrl.o pme2_sysfs.o +obj-$(CONFIG_FSL_PME2_PORTAL) += pme2.o +pme2-y := pme2_low.o pme2_high.o +obj-$(CONFIG_FSL_PME2_TEST_HIGH) += pme2_test_high.o +obj-$(CONFIG_FSL_PME2_TEST_SCAN) += pme2_test_scanning.o +pme2_test_scanning-y = pme2_test_scan.o pme2_sample_db.o +obj-$(CONFIG_FSL_PME2_DB) += pme2_db.o +obj-$(CONFIG_FSL_PME2_SCAN) += pme2_scan.o + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_ctrl.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_ctrl.c @@ -0,0 +1,1332 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_private.h" +#include "pme2_regs.h" + +/* PME HW Revision */ +#define PME_REV(rev1_reg) (rev1_reg & 0x0000FFFF) +#define PME_REV_2_0 0x00000200 +#define PME_REV_2_1 0x00000201 +#define DEC1_MAX_REV_2_0 0x000FFFFC +#define DEC1_MAX_REV_2_1 0x0007FFFC + + +/* Driver Name is used in naming the sysfs directory + * /sys/bus/of_platform/drivers/DRV_NAME + */ +#define DRV_NAME "fsl-pme" + +#define DEFAULT_PDSR_SZ (CONFIG_FSL_PME2_PDSRSIZE << 7) +#define DEFAULT_SRE_SZ (CONFIG_FSL_PME2_SRESIZE << 5) +#define PDSR_TBL_ALIGN (1 << 7) +#define SRE_TBL_ALIGN (1 << 5) +#define DEFAULT_SRFCC 400 + +/* Defaults */ +#define DEFAULT_DEC0_MTE 0x3FFF +#define DEFAULT_DLC_MPM 0xFFFF +#define DEFAULT_DLC_MPE 0xFFFF +/* Boot parameters */ +DECLARE_GLOBAL(max_test_line_per_pat, unsigned int, uint, + DEFAULT_DEC0_MTE, + "Maximum allowed Test Line Executions per pattern, " + "scaled by a factor of 8"); +DECLARE_GLOBAL(max_pat_eval_per_sui, unsigned int, uint, + DEFAULT_DLC_MPE, + "Maximum Pattern Evaluations per SUI, scaled by a factor of 8") +DECLARE_GLOBAL(max_pat_matches_per_sui, unsigned int, uint, + DEFAULT_DLC_MPM, + "Maximum Pattern Matches per SUI"); +/* SRE */ +DECLARE_GLOBAL(sre_rule_num, unsigned int, uint, + CONFIG_FSL_PME2_SRE_CNR, + "Configured Number of Stateful Rules"); +DECLARE_GLOBAL(sre_session_ctx_size, unsigned int, uint, + 1 << CONFIG_FSL_PME2_SRE_CTX_SIZE_PER_SESSION, + "SRE Context Size per Session"); + +/************ + * Section 1 + ************ + * This code is called during kernel early-boot and could never be made + * loadable. + */ +static dma_addr_t dxe_a, sre_a; +static size_t dxe_sz = DEFAULT_PDSR_SZ, sre_sz = DEFAULT_SRE_SZ; + +/* Parse the property to extract the memory location and size and + * memblock_reserve() it. If it isn't supplied, memblock_alloc() the default size. */ +static __init int parse_mem_property(struct device_node *node, const char *name, + dma_addr_t *addr, size_t *sz, u64 align, int zero) +{ + const u32 *pint; + int ret; + + pint = of_get_property(node, name, &ret); + if (!pint || (ret != 16)) { + pr_info("pme: No %s property '%s', using memblock_alloc(0x%016zx)\n", + node->full_name, name, *sz); + *addr = memblock_alloc(*sz, align); + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + return 0; + } + pr_info("pme: Using %s property '%s'\n", node->full_name, name); + /* If using a "zero-pma", don't try to zero it, even if you asked */ + if (zero && of_find_property(node, "zero-pma", &ret)) { + pr_info(" it's a 'zero-pma', not zeroing from s/w\n"); + zero = 0; + } + *addr = ((u64)pint[0] << 32) | (u64)pint[1]; + *sz = ((u64)pint[2] << 32) | (u64)pint[3]; + if((u64)*addr & (align - 1)) { + pr_err("pme: Invalid alignment, address %016llx\n",(u64)*addr); + return -EINVAL; + } + /* Keep things simple, it's either all in the DRAM range or it's all + * outside. */ + if (*addr < memblock_end_of_DRAM()) { + if ((u64)*addr + (u64)*sz > memblock_end_of_DRAM()){ + pr_err("pme: outside DRAM range\n"); + return -EINVAL; + } + if (memblock_reserve(*addr, *sz) < 0) { + pr_err("pme: Failed to reserve %s\n", name); + return -ENOMEM; + } + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + } else if (zero) { + /* map as cacheable, non-guarded */ + void *tmpp = ioremap_prot(*addr, *sz, 0); + memset(tmpp, 0, *sz); + iounmap(tmpp); + } + return 0; +} + +/* No errors/interrupts. Physical addresses are assumed <= 32bits. */ +static int __init fsl_pme2_init(struct device_node *node) +{ + const char *s; + int ret = 0; + + s = of_get_property(node, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) { + pr_info(" -> in standby mode\n"); + return 0; + } + /* Check if pdsr memory already allocated */ + if (dxe_a) { + pr_err("pme: Error fsl_pme2_init already done\n"); + return -EINVAL; + } + ret = parse_mem_property(node, "fsl,pme-pdsr", &dxe_a, &dxe_sz, + PDSR_TBL_ALIGN, 0); + if (ret) + return ret; + ret = parse_mem_property(node, "fsl,pme-sre", &sre_a, &sre_sz, + SRE_TBL_ALIGN, 0); + return ret; +} + +__init void pme2_init_early(void) +{ + struct device_node *dn; + int ret; + for_each_compatible_node(dn, NULL, "fsl,pme") { + ret = fsl_pme2_init(dn); + if (ret) + pr_err("pme: Error fsl_pme2_init\n"); + } +} + +/************ + * Section 2 + *********** + * This code is called during driver initialisation. It doesn't do anything with + * the device-tree entries nor the PME device, it simply creates the sysfs stuff + * and gives the user something to hold. This could be made loadable, if there + * was any benefit to doing so - but as the device is already "bound" by static + * code, there's little point to hiding the fact. + */ + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 (p4080) device control"); + +/* Opaque pointer target used to represent the PME CCSR map, ... */ +struct pme; + +/* ... and the instance of it. */ +static struct pme *global_pme; +static int pme_err_irq; + +static inline void __pme_out(struct pme *p, u32 offset, u32 val) +{ + u32 __iomem *regs = (void *)p; + out_be32(regs + (offset >> 2), val); +} +#define pme_out(p, r, v) __pme_out(p, PME_REG_##r, v) +static inline u32 __pme_in(struct pme *p, u32 offset) +{ + u32 __iomem *regs = (void *)p; + return in_be32(regs + (offset >> 2)); +} +#define pme_in(p, r) __pme_in(p, PME_REG_##r) + +#define PME_EFQC(en, fq) \ + ({ \ + /* Assume a default delay of 64 cycles */ \ + u8 __i419 = 0x1; \ + u32 __fq419 = (fq) & 0x00ffffff; \ + ((en) ? 0x80000000 : 0) | (__i419 << 28) | __fq419; \ + }) + +#define PME_FACONF_ENABLE 0x00000002 +#define PME_FACONF_RESET 0x00000001 + +/* pme stats accumulator work */ +static void accumulator_update(struct work_struct *work); +void accumulator_update_interval(u32 interval); +static DECLARE_DELAYED_WORK(accumulator_work, accumulator_update); +u32 pme_stat_interval = CONFIG_FSL_PME2_STAT_ACCUMULATOR_UPDATE_INTERVAL; +#define PME_SBE_ERR 0x01000000 +#define PME_DBE_ERR 0x00080000 +#define PME_PME_ERR 0x00000100 +#define PME_ALL_ERR (PME_SBE_ERR | PME_DBE_ERR | PME_PME_ERR) + +static struct of_device_id of_fsl_pme_ids[] = { + { + .compatible = "fsl,pme", + }, + {} +}; +MODULE_DEVICE_TABLE(of, of_fsl_pme_ids); + +/* Pme interrupt handler */ +static irqreturn_t pme_isr(int irq, void *ptr) +{ + static u32 last_isrstate; + u32 isrstate = pme_in(global_pme, ISR) ^ last_isrstate; + + /* What new ISR state has been raise */ + if (!isrstate) + return IRQ_NONE; + if (isrstate & PME_SBE_ERR) + pr_crit("PME: SBE detected\n"); + if (isrstate & PME_DBE_ERR) + pr_crit("PME: DBE detected\n"); + if (isrstate & PME_PME_ERR) + pr_crit("PME: PME serious detected\n"); + /* Clear the ier interrupt bit */ + last_isrstate |= isrstate; + pme_out(global_pme, IER, ~last_isrstate); + return IRQ_HANDLED; +} + +static int of_fsl_pme_remove(struct platform_device *ofdev) +{ + /* Cancel pme accumulator */ + accumulator_update_interval(0); + cancel_delayed_work_sync(&accumulator_work); + /* Disable PME..TODO need to wait till it's quiet */ + pme_out(global_pme, FACONF, PME_FACONF_RESET); + /* Release interrupt */ + if (likely(pme_err_irq != NO_IRQ)) + free_irq(pme_err_irq, &ofdev->dev); + /* Remove sysfs attribute */ + pme2_remove_sysfs_dev_files(ofdev); + /* Unmap controller region */ + iounmap(global_pme); + global_pme = NULL; + return 0; +} + +static int of_fsl_pme_probe(struct platform_device *ofdev) +{ + int ret, err = 0; + void __iomem *regs; + struct device *dev = &ofdev->dev; + struct device_node *nprop = dev->of_node; + u32 clkfreq = DEFAULT_SRFCC * 1000000; + const u32 *value; + const char *s; + int srec_aim = 0, srec_esr = 0; + u32 srecontextsize_code; + u32 dec1; + + /* TODO: This standby handling won't work properly after failover, it's + * just to allow bring up for now. */ + s = of_get_property(nprop, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) + return 0; + pme_err_irq = of_irq_to_resource(nprop, 0, NULL); + if (unlikely(pme_err_irq == NO_IRQ)) + dev_warn(dev, "Can't get %s property '%s'\n", nprop->full_name, + "interrupts"); + + /* Get configuration properties from device tree */ + /* First, get register page */ + regs = of_iomap(nprop, 0); + if (regs == NULL) { + dev_err(dev, "of_iomap() failed\n"); + err = -EINVAL; + goto out; + } + + /* Global configuration, leave pme disabled */ + global_pme = (struct pme *)regs; + pme_out(global_pme, FACONF, 0); + pme_out(global_pme, EFQC, PME_EFQC(0, 0)); + + /* TODO: these coherency settings for PMFA, DXE, and SRE force all + * transactions to snoop, as the kernel does not yet support flushing in + * dma_map_***() APIs (ie. h/w can not treat otherwise coherent memory + * in a non-coherent manner, temporarily or otherwise). When the kernel + * supports this, we should tune these settings back to; + * FAMCR = 0x00010001 + * DMCR = 0x00000000 + * SMCR = 0x00000000 + */ + /* PME HW rev 2.1: Added TWC field in FAMCR */ + pme_out(global_pme, FAMCR, 0x11010101); + pme_out(global_pme, DMCR, 0x00000001); + pme_out(global_pme, SMCR, 0x00000211); + + if (likely(pme_err_irq != NO_IRQ)) { + /* Register the pme ISR handler */ + err = request_irq(pme_err_irq, pme_isr, IRQF_SHARED, "pme-err", + dev); + if (err) { + dev_err(dev, "request_irq() failed\n"); + goto out_unmap_ctrl_region; + } + } + +#ifdef CONFIG_FSL_PME2_SRE_AIM + srec_aim = 1; +#endif +#ifdef CONFIG_FSL_PME2_SRE_ESR + srec_esr = 1; +#endif + /* Validate some parameters */ + if (!sre_session_ctx_size || !is_power_of_2(sre_session_ctx_size) || + (sre_session_ctx_size < 32) || + (sre_session_ctx_size > (131072))) { + dev_err(dev, "invalid sre_session_ctx_size\n"); + err = -EINVAL; + goto out_free_irq; + } + srecontextsize_code = ilog2(sre_session_ctx_size); + srecontextsize_code -= 4; + + /* Configure Clock Frequency */ + value = of_get_property(nprop, "clock-frequency", NULL); + if (value) + clkfreq = *value; + pme_out(global_pme, SFRCC, DIV_ROUND_UP(clkfreq, 1000000)); + + pme_out(global_pme, PDSRBAH, upper_32_bits(dxe_a)); + pme_out(global_pme, PDSRBAL, lower_32_bits(dxe_a)); + pme_out(global_pme, SCBARH, upper_32_bits(sre_a)); + pme_out(global_pme, SCBARL, lower_32_bits(sre_a)); + /* Maximum allocated index into the PDSR table available to the DXE + * Rev 2.0: Max 0xF_FFFC + * Rev 2.1: Max 0x7_FFFC + */ + if (PME_REV(pme_in(global_pme, PM_IP_REV1)) == PME_REV_2_0) { + if (((dxe_sz/PDSR_TBL_ALIGN)-1) > DEC1_MAX_REV_2_0) + dec1 = DEC1_MAX_REV_2_0; + else + dec1 = (dxe_sz/PDSR_TBL_ALIGN)-1; + } else { + if (((dxe_sz/PDSR_TBL_ALIGN)-1) > DEC1_MAX_REV_2_1) + dec1 = DEC1_MAX_REV_2_1; + else + dec1 = (dxe_sz/PDSR_TBL_ALIGN)-1; + } + pme_out(global_pme, DEC1, dec1); + /* Maximum allocated index into the PDSR table available to the SRE */ + pme_out(global_pme, SEC2, dec1); + /* Maximum allocated 32-byte offset into SRE Context Table.*/ + if (sre_sz) + pme_out(global_pme, SEC3, (sre_sz/SRE_TBL_ALIGN)-1); + /* Max test line execution */ + pme_out(global_pme, DEC0, max_test_line_per_pat); + pme_out(global_pme, DLC, + (max_pat_eval_per_sui << 16) | max_pat_matches_per_sui); + + /* SREC - SRE Config */ + pme_out(global_pme, SREC, + /* Number of rules in database */ + (sre_rule_num << 0) | + /* Simple Report Enabled */ + ((srec_esr ? 1 : 0) << 18) | + /* Context Size per Session */ + (srecontextsize_code << 19) | + /* Alternate Inclusive Mode */ + ((srec_aim ? 1 : 0) << 29)); + pme_out(global_pme, SEC1, + (CONFIG_FSL_PME2_SRE_MAX_INSTRUCTION_LIMIT << 16) | + CONFIG_FSL_PME2_SRE_MAX_BLOCK_NUMBER); + + /* Setup Accumulator */ + if (pme_stat_interval) + schedule_delayed_work(&accumulator_work, + msecs_to_jiffies(pme_stat_interval)); + /* Create sysfs entries */ + err = pme2_create_sysfs_dev_files(ofdev); + if (err) + goto out_stop_accumulator; + + /* Enable interrupts */ + pme_out(global_pme, IER, PME_ALL_ERR); + dev_info(dev, "ver: 0x%08x\n", pme_in(global_pme, PM_IP_REV1)); + + /* Enable pme */ + pme_out(global_pme, FACONF, PME_FACONF_ENABLE); + return 0; + +out_stop_accumulator: + if (pme_stat_interval) { + accumulator_update_interval(0); + cancel_delayed_work_sync(&accumulator_work); + } +out_free_irq: + if (likely(pme_err_irq != NO_IRQ)) + free_irq(pme_err_irq, &ofdev->dev); +out_unmap_ctrl_region: + pme_out(global_pme, FACONF, PME_FACONF_RESET); + iounmap(global_pme); + global_pme = NULL; +out: + return err; +} + +static struct platform_driver of_fsl_pme_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME, + .of_match_table = of_fsl_pme_ids, + }, + .probe = of_fsl_pme_probe, + .remove = of_fsl_pme_remove, +}; + +static int pme2_ctrl_init(void) +{ + return platform_driver_register(&of_fsl_pme_driver); +} + +static void pme2_ctrl_exit(void) +{ + platform_driver_unregister(&of_fsl_pme_driver); +} + +module_init(pme2_ctrl_init); +module_exit(pme2_ctrl_exit); + +/************ + * Section 3 + ************ + * These APIs are the only functional hooks into the control driver, besides the + * sysfs attributes. + */ + +int pme2_have_control(void) +{ + return global_pme ? 1 : 0; +} +EXPORT_SYMBOL(pme2_have_control); + +int pme2_exclusive_set(struct qman_fq *fq) +{ + if (!pme2_have_control()) + return -ENODEV; + pme_out(global_pme, EFQC, PME_EFQC(1, qman_fq_fqid(fq))); + return 0; +} +EXPORT_SYMBOL(pme2_exclusive_set); + +int pme2_exclusive_unset(void) +{ + if (!pme2_have_control()) + return -ENODEV; + pme_out(global_pme, EFQC, PME_EFQC(0, 0)); + return 0; +} +EXPORT_SYMBOL(pme2_exclusive_unset); + +int pme_attr_set(enum pme_attr attr, u32 val) +{ + u32 mask; + u32 attr_val; + + if (!pme2_have_control()) + return -ENODEV; + + /* Check if Buffer size configuration */ + if (attr >= pme_attr_bsc_first && attr <= pme_attr_bsc_last) { + u32 bsc_pool_id = attr - pme_attr_bsc_first; + u32 bsc_pool_offset = bsc_pool_id % 8; + u32 bsc_pool_mask = ~(0xF << ((7-bsc_pool_offset)*4)); + /* range for val 0..0xB */ + if (val > 0xb) + return -EINVAL; + /* calculate which sky-blue reg */ + /* 0..7 -> bsc_(0..7), PME_REG_BSC0 */ + /* 8..15 -> bsc_(8..15) PME_REG_BSC1*/ + /* ... */ + /* 56..63 -> bsc_(56..63) PME_REG_BSC7*/ + attr_val = pme_in(global_pme, BSC0 + ((bsc_pool_id/8)*4)); + /* Now mask in the new value */ + attr_val = attr_val & bsc_pool_mask; + attr_val = attr_val | (val << ((7-bsc_pool_offset)*4)); + pme_out(global_pme, BSC0 + ((bsc_pool_id/8)*4), attr_val); + return 0; + } + + switch (attr) { + case pme_attr_efqc_int: + if (val > 4) + return -EINVAL; + mask = 0x8FFFFFFF; + attr_val = pme_in(global_pme, EFQC); + /* clear efqc_int */ + attr_val &= mask; + val <<= 28; + val |= attr_val; + pme_out(global_pme, EFQC, val); + break; + + case pme_attr_sw_db: + pme_out(global_pme, SWDB, val); + break; + + case pme_attr_dmcr: + pme_out(global_pme, DMCR, val); + break; + + case pme_attr_smcr: + pme_out(global_pme, SMCR, val); + break; + + case pme_attr_famcr: + pme_out(global_pme, FAMCR, val); + break; + + case pme_attr_kvlts: + if (val < 2 || val > 16) + return -EINVAL; + /* HW range: 1..15, SW range: 2..16 */ + pme_out(global_pme, KVLTS, --val); + break; + + case pme_attr_max_chain_length: + if (val > 0x7FFF) + val = 0x7FFF; + pme_out(global_pme, KEC, val); + break; + + case pme_attr_pattern_range_counter_idx: + if (val > 0x1FFFF) + val = 0x1FFFF; + pme_out(global_pme, DRCIC, val); + break; + + case pme_attr_pattern_range_counter_mask: + if (val > 0x1FFFF) + val = 0x1FFFF; + pme_out(global_pme, DRCMC, val); + break; + + case pme_attr_max_allowed_test_line_per_pattern: + if (val > 0x3FFF) + val = 0x3FFF; + pme_out(global_pme, DEC0, val); + break; + + case pme_attr_max_pattern_matches_per_sui: + /* mpe, mpm */ + if (val > 0xFFFF) + val = 0xFFFF; + mask = 0xFFFF0000; + attr_val = pme_in(global_pme, DLC); + /* clear mpm */ + attr_val &= mask; + val &= ~mask; + val |= attr_val; + pme_out(global_pme, DLC, val); + break; + + case pme_attr_max_pattern_evaluations_per_sui: + /* mpe, mpm */ + if (val > 0xFFFF) + val = 0xFFFF; + mask = 0x0000FFFF; + attr_val = pme_in(global_pme, DLC); + /* clear mpe */ + attr_val &= mask; + /* clear unwanted bits in val*/ + val &= mask; + val <<= 16; + val |= attr_val; + pme_out(global_pme, DLC, val); + break; + + case pme_attr_report_length_limit: + if (val > 0xFFFF) + val = 0xFFFF; + pme_out(global_pme, RLL, val); + break; + + case pme_attr_end_of_simple_sui_report: + /* bit 13 */ + mask = 0x00040000; + attr_val = pme_in(global_pme, SREC); + if (val) + attr_val |= mask; + else + attr_val &= ~mask; + pme_out(global_pme, SREC, attr_val); + break; + + case pme_attr_aim: + /* bit 2 */ + mask = 0x20000000; + attr_val = pme_in(global_pme, SREC); + if (val) + attr_val |= mask; + else + attr_val &= ~mask; + pme_out(global_pme, SREC, attr_val); + break; + + case pme_attr_end_of_sui_reaction_ptr: + if (val > 0xFFFFF) + val = 0xFFFFF; + pme_out(global_pme, ESRP, val); + break; + + case pme_attr_sre_pscl: + pme_out(global_pme, SFRCC, val); + break; + + case pme_attr_sre_max_block_num: + /* bits 17..31 */ + if (val > 0x7FFF) + val = 0x7FFF; + mask = 0xFFFF8000; + attr_val = pme_in(global_pme, SEC1); + /* clear mbn */ + attr_val &= mask; + /* clear unwanted bits in val*/ + val &= ~mask; + val |= attr_val; + pme_out(global_pme, SEC1, val); + break; + + case pme_attr_sre_max_instruction_limit: + /* bits 0..15 */ + if (val > 0xFFFF) + val = 0xFFFF; + mask = 0x0000FFFF; + attr_val = pme_in(global_pme, SEC1); + /* clear mil */ + attr_val &= mask; + /* clear unwanted bits in val*/ + val &= mask; + val <<= 16; + val |= attr_val; + pme_out(global_pme, SEC1, val); + break; + + case pme_attr_srrv0: + pme_out(global_pme, SRRV0, val); + break; + case pme_attr_srrv1: + pme_out(global_pme, SRRV1, val); + break; + case pme_attr_srrv2: + pme_out(global_pme, SRRV2, val); + break; + case pme_attr_srrv3: + pme_out(global_pme, SRRV3, val); + break; + case pme_attr_srrv4: + pme_out(global_pme, SRRV4, val); + break; + case pme_attr_srrv5: + pme_out(global_pme, SRRV5, val); + break; + case pme_attr_srrv6: + pme_out(global_pme, SRRV6, val); + break; + case pme_attr_srrv7: + pme_out(global_pme, SRRV7, val); + break; + case pme_attr_srrfi: + pme_out(global_pme, SRRFI, val); + break; + case pme_attr_srri: + pme_out(global_pme, SRRI, val); + break; + case pme_attr_srrwc: + pme_out(global_pme, SRRWC, val); + break; + case pme_attr_srrr: + pme_out(global_pme, SRRR, val); + break; + case pme_attr_tbt0ecc1th: + pme_out(global_pme, TBT0ECC1TH, val); + break; + case pme_attr_tbt1ecc1th: + pme_out(global_pme, TBT1ECC1TH, val); + break; + case pme_attr_vlt0ecc1th: + pme_out(global_pme, VLT0ECC1TH, val); + break; + case pme_attr_vlt1ecc1th: + pme_out(global_pme, VLT1ECC1TH, val); + break; + case pme_attr_cmecc1th: + pme_out(global_pme, CMECC1TH, val); + break; + case pme_attr_dxcmecc1th: + pme_out(global_pme, DXCMECC1TH, val); + break; + case pme_attr_dxemecc1th: + pme_out(global_pme, DXEMECC1TH, val); + break; + case pme_attr_esr: + pme_out(global_pme, ESR, val); + break; + case pme_attr_pehd: + pme_out(global_pme, PEHD, val); + break; + case pme_attr_ecc1bes: + pme_out(global_pme, ECC1BES, val); + break; + case pme_attr_ecc2bes: + pme_out(global_pme, ECC2BES, val); + break; + case pme_attr_miace: + pme_out(global_pme, MIA_CE, val); + break; + case pme_attr_miacr: + pme_out(global_pme, MIA_CR, val); + break; + case pme_attr_cdcr: + pme_out(global_pme, CDCR, val); + break; + case pme_attr_pmtr: + pme_out(global_pme, PMTR, val); + break; + + default: + pr_err("pme: Unknown attr %u\n", attr); + return -EINVAL; + }; + return 0; +} +EXPORT_SYMBOL(pme_attr_set); + +int pme_attr_get(enum pme_attr attr, u32 *val) +{ + u32 mask; + u32 attr_val; + + if (!pme2_have_control()) + return -ENODEV; + + /* Check if Buffer size configuration */ + if (attr >= pme_attr_bsc_first && attr <= pme_attr_bsc_last) { + u32 bsc_pool_id = attr - pme_attr_bsc_first; + u32 bsc_pool_offset = bsc_pool_id % 8; + /* calculate which sky-blue reg */ + /* 0..7 -> bsc_(0..7), PME_REG_BSC0 */ + /* 8..15 -> bsc_(8..15) PME_REG_BSC1*/ + /* ... */ + /* 56..63 -> bsc_(56..63) PME_REG_BSC7*/ + attr_val = pme_in(global_pme, BSC0 + ((bsc_pool_id/8)*4)); + attr_val = attr_val >> ((7-bsc_pool_offset)*4); + attr_val = attr_val & 0x0000000F; + *val = attr_val; + return 0; + } + + switch (attr) { + case pme_attr_efqc_int: + mask = 0x8FFFFFFF; + attr_val = pme_in(global_pme, EFQC); + attr_val &= ~mask; + attr_val >>= 28; + break; + + case pme_attr_sw_db: + attr_val = pme_in(global_pme, SWDB); + break; + + case pme_attr_dmcr: + attr_val = pme_in(global_pme, DMCR); + break; + + case pme_attr_smcr: + attr_val = pme_in(global_pme, SMCR); + break; + + case pme_attr_famcr: + attr_val = pme_in(global_pme, FAMCR); + break; + + case pme_attr_kvlts: + /* bit 28-31 */ + attr_val = pme_in(global_pme, KVLTS); + attr_val &= 0x0000000F; + /* HW range: 1..15, SW range: 2..16 */ + attr_val += 1; + break; + + case pme_attr_max_chain_length: + /* bit 17-31 */ + attr_val = pme_in(global_pme, KEC); + attr_val &= 0x00007FFF; + break; + + case pme_attr_pattern_range_counter_idx: + /* bit 15-31 */ + attr_val = pme_in(global_pme, DRCIC); + attr_val &= 0x0001FFFF; + break; + + case pme_attr_pattern_range_counter_mask: + /* bit 15-31 */ + attr_val = pme_in(global_pme, DRCMC); + attr_val &= 0x0001FFFF; + break; + + case pme_attr_max_allowed_test_line_per_pattern: + /* bit 18-31 */ + attr_val = pme_in(global_pme, DEC0); + attr_val &= 0x00003FFF; + break; + + case pme_attr_max_pdsr_index: + /* bit 12-31 */ + attr_val = pme_in(global_pme, DEC1); + attr_val &= 0x000FFFFF; + break; + + case pme_attr_max_pattern_matches_per_sui: + attr_val = pme_in(global_pme, DLC); + attr_val &= 0x0000FFFF; + break; + + case pme_attr_max_pattern_evaluations_per_sui: + attr_val = pme_in(global_pme, DLC); + attr_val >>= 16; + break; + + case pme_attr_report_length_limit: + attr_val = pme_in(global_pme, RLL); + /* clear unwanted bits in val*/ + attr_val &= 0x0000FFFF; + break; + + case pme_attr_end_of_simple_sui_report: + /* bit 13 */ + attr_val = pme_in(global_pme, SREC); + attr_val >>= 18; + /* clear unwanted bits in val*/ + attr_val &= 0x00000001; + break; + + case pme_attr_aim: + /* bit 2 */ + attr_val = pme_in(global_pme, SREC); + attr_val >>= 29; + /* clear unwanted bits in val*/ + attr_val &= 0x00000001; + break; + + case pme_attr_sre_context_size: + /* bits 9..12 */ + attr_val = pme_in(global_pme, SREC); + attr_val >>= 19; + /* clear unwanted bits in val*/ + attr_val &= 0x0000000F; + attr_val += 4; + attr_val = 1 << attr_val; + break; + + case pme_attr_sre_rule_num: + /* bits 24..31 */ + attr_val = pme_in(global_pme, SREC); + /* clear unwanted bits in val*/ + attr_val &= 0x000000FF; + /* Multiply by 256 */ + attr_val <<= 8; + break; + + case pme_attr_sre_session_ctx_num: { + u32 ctx_sz = 0; + /* = sre_table_size / sre_session_ctx_size */ + attr_val = pme_in(global_pme, SEC3); + /* clear unwanted bits in val*/ + attr_val &= 0x07FFFFFF; + attr_val += 1; + attr_val *= 32; + ctx_sz = pme_in(global_pme, SREC); + ctx_sz >>= 19; + /* clear unwanted bits in val*/ + ctx_sz &= 0x0000000F; + ctx_sz += 4; + attr_val /= (1 << ctx_sz); + } + break; + + case pme_attr_end_of_sui_reaction_ptr: + /* bits 12..31 */ + attr_val = pme_in(global_pme, ESRP); + /* clear unwanted bits in val*/ + attr_val &= 0x000FFFFF; + break; + + case pme_attr_sre_pscl: + /* bits 22..31 */ + attr_val = pme_in(global_pme, SFRCC); + break; + + case pme_attr_sre_max_block_num: + /* bits 17..31 */ + attr_val = pme_in(global_pme, SEC1); + /* clear unwanted bits in val*/ + attr_val &= 0x00007FFF; + break; + + case pme_attr_sre_max_instruction_limit: + /* bits 0..15 */ + attr_val = pme_in(global_pme, SEC1); + attr_val >>= 16; + break; + + case pme_attr_sre_max_index_size: + /* bits 12..31 */ + attr_val = pme_in(global_pme, SEC2); + /* clear unwanted bits in val*/ + attr_val &= 0x000FFFFF; + break; + + case pme_attr_sre_max_offset_ctrl: + /* bits 5..31 */ + attr_val = pme_in(global_pme, SEC3); + /* clear unwanted bits in val*/ + attr_val &= 0x07FFFFFF; + break; + + case pme_attr_src_id: + /* bits 24..31 */ + attr_val = pme_in(global_pme, SRCIDR); + /* clear unwanted bits in val*/ + attr_val &= 0x000000FF; + break; + + case pme_attr_liodnr: + /* bits 20..31 */ + attr_val = pme_in(global_pme, LIODNR); + /* clear unwanted bits in val*/ + attr_val &= 0x00000FFF; + break; + + case pme_attr_rev1: + /* bits 0..31 */ + attr_val = pme_in(global_pme, PM_IP_REV1); + break; + + case pme_attr_rev2: + /* bits 0..31 */ + attr_val = pme_in(global_pme, PM_IP_REV2); + break; + + case pme_attr_srrr: + attr_val = pme_in(global_pme, SRRR); + break; + + case pme_attr_trunci: + attr_val = pme_in(global_pme, TRUNCI); + break; + + case pme_attr_rbc: + attr_val = pme_in(global_pme, RBC); + break; + + case pme_attr_tbt0ecc1ec: + attr_val = pme_in(global_pme, TBT0ECC1EC); + break; + + case pme_attr_tbt1ecc1ec: + attr_val = pme_in(global_pme, TBT1ECC1EC); + break; + + case pme_attr_vlt0ecc1ec: + attr_val = pme_in(global_pme, VLT0ECC1EC); + break; + + case pme_attr_vlt1ecc1ec: + attr_val = pme_in(global_pme, VLT1ECC1EC); + break; + + case pme_attr_cmecc1ec: + attr_val = pme_in(global_pme, CMECC1EC); + break; + + case pme_attr_dxcmecc1ec: + attr_val = pme_in(global_pme, DXCMECC1EC); + break; + + case pme_attr_dxemecc1ec: + attr_val = pme_in(global_pme, DXEMECC1EC); + break; + + case pme_attr_tbt0ecc1th: + attr_val = pme_in(global_pme, TBT0ECC1TH); + break; + + case pme_attr_tbt1ecc1th: + attr_val = pme_in(global_pme, TBT1ECC1TH); + break; + + case pme_attr_vlt0ecc1th: + attr_val = pme_in(global_pme, VLT0ECC1TH); + break; + + case pme_attr_vlt1ecc1th: + attr_val = pme_in(global_pme, VLT1ECC1TH); + break; + + case pme_attr_cmecc1th: + attr_val = pme_in(global_pme, CMECC1TH); + break; + + case pme_attr_dxcmecc1th: + attr_val = pme_in(global_pme, DXCMECC1TH); + break; + + case pme_attr_dxemecc1th: + attr_val = pme_in(global_pme, DXEMECC1TH); + break; + + case pme_attr_stnib: + attr_val = pme_in(global_pme, STNIB); + break; + + case pme_attr_stnis: + attr_val = pme_in(global_pme, STNIS); + break; + + case pme_attr_stnth1: + attr_val = pme_in(global_pme, STNTH1); + break; + + case pme_attr_stnth2: + attr_val = pme_in(global_pme, STNTH2); + break; + + case pme_attr_stnthv: + attr_val = pme_in(global_pme, STNTHV); + break; + + case pme_attr_stnths: + attr_val = pme_in(global_pme, STNTHS); + break; + + case pme_attr_stnch: + attr_val = pme_in(global_pme, STNCH); + break; + + case pme_attr_stnpm: + attr_val = pme_in(global_pme, STNPM); + break; + + case pme_attr_stns1m: + attr_val = pme_in(global_pme, STNS1M); + break; + + case pme_attr_stnpmr: + attr_val = pme_in(global_pme, STNPMR); + break; + + case pme_attr_stndsr: + attr_val = pme_in(global_pme, STNDSR); + break; + + case pme_attr_stnesr: + attr_val = pme_in(global_pme, STNESR); + break; + + case pme_attr_stns1r: + attr_val = pme_in(global_pme, STNS1R); + break; + + case pme_attr_stnob: + attr_val = pme_in(global_pme, STNOB); + break; + + case pme_attr_mia_byc: + attr_val = pme_in(global_pme, MIA_BYC); + break; + + case pme_attr_mia_blc: + attr_val = pme_in(global_pme, MIA_BLC); + break; + + case pme_attr_isr: + attr_val = pme_in(global_pme, ISR); + break; + + case pme_attr_ecr0: + attr_val = pme_in(global_pme, ECR0); + break; + + case pme_attr_ecr1: + attr_val = pme_in(global_pme, ECR1); + break; + + case pme_attr_esr: + attr_val = pme_in(global_pme, ESR); + break; + + case pme_attr_pmstat: + attr_val = pme_in(global_pme, PMSTAT); + break; + + case pme_attr_pehd: + attr_val = pme_in(global_pme, PEHD); + break; + + case pme_attr_ecc1bes: + attr_val = pme_in(global_pme, ECC1BES); + break; + + case pme_attr_ecc2bes: + attr_val = pme_in(global_pme, ECC2BES); + break; + + case pme_attr_eccaddr: + attr_val = pme_in(global_pme, ECCADDR); + break; + + case pme_attr_ecccode: + attr_val = pme_in(global_pme, ECCCODE); + break; + + case pme_attr_miace: + attr_val = pme_in(global_pme, MIA_CE); + break; + + case pme_attr_miacr: + attr_val = pme_in(global_pme, MIA_CR); + break; + + case pme_attr_cdcr: + attr_val = pme_in(global_pme, CDCR); + break; + + case pme_attr_pmtr: + attr_val = pme_in(global_pme, PMTR); + break; + + case pme_attr_faconf: + attr_val = pme_in(global_pme, FACONF); + break; + + case pme_attr_pdsrbah: + attr_val = pme_in(global_pme, PDSRBAH); + break; + + case pme_attr_pdsrbal: + attr_val = pme_in(global_pme, PDSRBAL); + break; + + case pme_attr_scbarh: + attr_val = pme_in(global_pme, SCBARH); + break; + + case pme_attr_scbarl: + attr_val = pme_in(global_pme, SCBARL); + break; + + case pme_attr_srrv0: + attr_val = pme_in(global_pme, SRRV0); + break; + + case pme_attr_srrv1: + attr_val = pme_in(global_pme, SRRV1); + break; + + case pme_attr_srrv2: + attr_val = pme_in(global_pme, SRRV2); + break; + + case pme_attr_srrv3: + attr_val = pme_in(global_pme, SRRV3); + break; + + case pme_attr_srrv4: + attr_val = pme_in(global_pme, SRRV4); + break; + + case pme_attr_srrv5: + attr_val = pme_in(global_pme, SRRV5); + break; + + case pme_attr_srrv6: + attr_val = pme_in(global_pme, SRRV6); + break; + + case pme_attr_srrv7: + attr_val = pme_in(global_pme, SRRV7); + break; + + case pme_attr_srrfi: + attr_val = pme_in(global_pme, SRRFI); + break; + + case pme_attr_srri: + attr_val = pme_in(global_pme, SRRI); + break; + + case pme_attr_srrwc: + attr_val = pme_in(global_pme, SRRWC); + break; + + default: + pr_err("pme: Unknown attr %u\n", attr); + return -EINVAL; + }; + *val = attr_val; + return 0; +} +EXPORT_SYMBOL(pme_attr_get); + +static enum pme_attr stat_list[] = { + pme_attr_trunci, + pme_attr_rbc, + pme_attr_tbt0ecc1ec, + pme_attr_tbt1ecc1ec, + pme_attr_vlt0ecc1ec, + pme_attr_vlt1ecc1ec, + pme_attr_cmecc1ec, + pme_attr_dxcmecc1ec, + pme_attr_dxemecc1ec, + pme_attr_stnib, + pme_attr_stnis, + pme_attr_stnth1, + pme_attr_stnth2, + pme_attr_stnthv, + pme_attr_stnths, + pme_attr_stnch, + pme_attr_stnpm, + pme_attr_stns1m, + pme_attr_stnpmr, + pme_attr_stndsr, + pme_attr_stnesr, + pme_attr_stns1r, + pme_attr_stnob, + pme_attr_mia_byc, + pme_attr_mia_blc +}; + +static u64 pme_stats[sizeof(stat_list)/sizeof(enum pme_attr)]; +static DEFINE_SPINLOCK(stat_lock); + +int pme_stat_get(enum pme_attr stat, u64 *value, int reset) +{ + int i, ret = 0; + int value_set = 0; + u32 val; + + spin_lock_irq(&stat_lock); + for (i = 0; i < sizeof(stat_list)/sizeof(enum pme_attr); i++) { + if (stat_list[i] == stat) { + ret = pme_attr_get(stat_list[i], &val); + /* Do I need to check ret */ + pme_stats[i] += val; + *value = pme_stats[i]; + value_set = 1; + if (reset) + pme_stats[i] = 0; + break; + } + } + if (!value_set) { + pr_err("pme: Invalid stat request %d\n", stat); + ret = -EINVAL; + } + spin_unlock_irq(&stat_lock); + return ret; +} +EXPORT_SYMBOL(pme_stat_get); + +void accumulator_update_interval(u32 interval) +{ + int schedule = 0; + + spin_lock_irq(&stat_lock); + if (!pme_stat_interval && interval) + schedule = 1; + pme_stat_interval = interval; + spin_unlock_irq(&stat_lock); + if (schedule) + schedule_delayed_work(&accumulator_work, + msecs_to_jiffies(interval)); +} + +static void accumulator_update(struct work_struct *work) +{ + int i, ret; + u32 local_interval; + u32 val; + + spin_lock_irq(&stat_lock); + local_interval = pme_stat_interval; + for (i = 0; i < sizeof(stat_list)/sizeof(enum pme_attr); i++) { + ret = pme_attr_get(stat_list[i], &val); + pme_stats[i] += val; + } + spin_unlock_irq(&stat_lock); + if (local_interval) + schedule_delayed_work(&accumulator_work, + msecs_to_jiffies(local_interval)); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_test_scan.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_test_scan.c @@ -0,0 +1,653 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_test.h" + +enum scan_ctrl_mode { + no_scan = 0, + do_scan = 1, +}; + +enum db_ctrl_mode { + create_destroy = 0, + create = 1, + destroy = 2, + nothing = 3 +}; + +MODULE_AUTHOR("Jeffrey Ladouceur"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("PME scan testing"); + +static enum db_ctrl_mode db_ctrl; +module_param(db_ctrl, uint, 0644); +MODULE_PARM_DESC(db_ctrl, "PME Database control"); + +static enum scan_ctrl_mode scan_ctrl = 1; +module_param(scan_ctrl, uint, 0644); +MODULE_PARM_DESC(scan_ctrl, "Scan control"); + +static u8 scan_result_direct_mode_inc_mode[] = { + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 +}; + +static u8 fl_ctx_exp[] = { + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 +}; + +/* same again with 'sos' bit cleared */ +static u8 fl_ctx_exp_post_scan[] = { + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 +}; + +struct scan_ctx { + struct pme_ctx base_ctx; + struct qm_fd result_fd; +}; + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; +}; + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd) & PME_STATUS_UNRELIABLE; + /* hexdump(fd, sizeof(*fd)); */ + complete(&ctrl->cb_done); +} + +static DECLARE_COMPLETION(scan_comp); + +static void scan_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct scan_ctx *my_ctx = (struct scan_ctx *)ctx; + memcpy(&my_ctx->result_fd, fd, sizeof(*fd)); + complete(&scan_comp); +} + +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + +static struct bman_pool *pool; +static u32 pme_bpid; +static void *bman_buffers_virt_base; +static dma_addr_t bman_buffers_phys_base; + +static void release_buffer(dma_addr_t addr) +{ + struct bm_buffer bufs_in; + bm_buffer_set64(&bufs_in, addr); + if (bman_release(pool, &bufs_in, 1, BMAN_RELEASE_FLAG_WAIT)) + panic("bman_release() failed\n"); +} + +static void empty_buffer(void) +{ + struct bm_buffer bufs_in; + int ret; + + do { + ret = bman_acquire(pool, &bufs_in, 1, 0); + } while (!ret); +} +#endif /*CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID*/ + +static int scan_test_direct(int trunc, int use_bp) +{ + struct scan_ctx a_scan_ctx = { + .base_ctx = { + .cb = scan_cb + } + }; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .cmd_status = 0, + .res_flag = 0 + }; + struct qm_fd fd; + struct qm_sg_entry sg_table[2]; + int ret; + enum pme_status status; + struct pme_ctx_token token; + u8 *scan_result; + u32 scan_result_size; + u8 scan_data[] = { + 0x41, 0x42, 0x43, 0x44, 0x45 + }; + u8 result_data[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 + }; + + init_completion(&ctx_ctrl.cb_done); + scan_result = scan_result_direct_mode_inc_mode; + scan_result_size = sizeof(scan_result_direct_mode_inc_mode); + + ret = pme_ctx_init(&a_scan_ctx.base_ctx, + PME_CTX_FLAG_DIRECT | PME_CTX_FLAG_LOCAL, + 0, 4, 4, 0, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + return ret; + } + /* enable the context */ + ret = pme_ctx_enable(&a_scan_ctx.base_ctx); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + + /* Do a pre-built output, scan with match test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + memset(&sg_table, 0, sizeof(sg_table)); + + if (trunc) { + fd.length20 = sizeof(scan_data); + qm_fd_addr_set64(&fd, pme_map(scan_data)); + } else { + /* build the result */ + qm_sg_entry_set64(&sg_table[0], pme_map(result_data)); + sg_table[0].length = sizeof(result_data); + qm_sg_entry_set64(&sg_table[1], pme_map(scan_data)); + sg_table[1].length = sizeof(scan_data); + sg_table[1].final = 1; + fd._format2 = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + } + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto ctx_disable; + } + if (trunc) { + int res_flag = pme_fd_res_flags(&a_scan_ctx.result_fd); + /* Check the response...expect truncation bit to be set */ + if (!(res_flag & PME_STATUS_TRUNCATED)) { + pr_err("pme scan test failed, expected truncation\n"); + goto ctx_disable; + } + } else { + if (memcmp(scan_result, result_data, scan_result_size) != 0) { + pr_err("pme scan test result not expected\n"); + hexdump(scan_result, scan_result_size); + pr_err("Received...\n"); + hexdump(result_data, sizeof(result_data)); + goto ctx_disable; + } + } + + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + if (!use_bp) { + pme_ctx_finish(&a_scan_ctx.base_ctx); + return 0; + } + /* use buffer pool */ + /* Check with bman */ + /* reconfigure */ + +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + ret = pme_ctx_reconfigure_tx(&a_scan_ctx.base_ctx, pme_bpid, 5); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + ret = pme_ctx_enable(&a_scan_ctx.base_ctx); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + /* Do a pre-built output, scan with match test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + memset(&sg_table, 0, sizeof(sg_table)); + + /* build the result */ + /* result is all zero...use bman */ + qm_sg_entry_set64(&sg_table[1], pme_map(scan_data)); + sg_table[1].length = sizeof(scan_data); + sg_table[1].final = 1; + + fd._format2 = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto ctx_disable; + } + /* sg result should point to bman buffer */ + if (!qm_sg_entry_get64(&sg_table[0])) { + pr_err("pme scan test failed, sg result not bman buffer\n"); + goto ctx_disable; + } + if (memcmp(scan_result, bman_buffers_virt_base, scan_result_size) + != 0) { + pr_err("pme scan test not expected, Expected\n"); + hexdump(scan_result, scan_result_size); + pr_err("Received...\n"); + hexdump(bman_buffers_virt_base, scan_result_size); + release_buffer(qm_sg_entry_get64(&sg_table[0])); + goto ctx_disable; + } + release_buffer(qm_sg_entry_get64(&sg_table[0])); + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto ctx_finish; + } + pme_ctx_finish(&a_scan_ctx.base_ctx); + return 0; +#endif + +/* failure path */ +ctx_disable: + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); +ctx_finish: + pme_ctx_finish(&a_scan_ctx.base_ctx); + return (!ret) ? -EINVAL : ret; +} + +static int scan_test_flow(void) +{ + struct pme_flow flow; + struct pme_flow rb_flow; + struct scan_ctx a_scan_ctx = { + .base_ctx = { + .cb = scan_cb + } + }; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .cmd_status = 0, + .res_flag = 0 + }; + struct qm_fd fd; + struct qm_sg_entry sg_table[2]; + int ret; + enum pme_status status; + struct pme_ctx_token token; + u8 *scan_result; + u32 scan_result_size; + u8 scan_data[] = { + 0x41, 0x42, 0x43, 0x44, 0x45 + }; + u8 result_data[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 + }; + + pme_sw_flow_init(&flow); + init_completion(&ctx_ctrl.cb_done); + scan_result = scan_result_direct_mode_inc_mode; + scan_result_size = sizeof(scan_result_direct_mode_inc_mode); + + ret = pme_ctx_init(&a_scan_ctx.base_ctx, + PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + return ret; + } + /* enable the context */ + ret = pme_ctx_enable(&a_scan_ctx.base_ctx); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_finish; + } + ret = pme_ctx_ctrl_update_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT | PME_CMD_FCW_ALL, &flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT, &rb_flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + if (memcmp(&rb_flow, fl_ctx_exp, sizeof(rb_flow)) != 0) { + pr_err("pme scan test Flow Context Read FAIL\n"); + pr_err("Expected\n"); + hexdump(fl_ctx_exp, sizeof(fl_ctx_exp)); + pr_err("Received...\n"); + hexdump(&rb_flow, sizeof(rb_flow)); + goto flow_ctx_disable; + } + + /* Do a pre-built output, scan with match test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + memset(&sg_table, 0, sizeof(sg_table)); + + /* build the result */ + qm_sg_entry_set64(&sg_table[0], pme_map(result_data)); + sg_table[0].length = sizeof(result_data); + qm_sg_entry_set64(&sg_table[1], pme_map(scan_data)); + sg_table[1].length = sizeof(scan_data); + sg_table[1].final = 1; + + fd._format2 = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + + if (memcmp(scan_result, result_data, scan_result_size) != 0) { + pr_err("pme scan test result not expected\n"); + hexdump(scan_result, scan_result_size); + pr_err("Received...\n"); + hexdump(result_data, sizeof(result_data)); + goto flow_ctx_disable; + } + + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT, &rb_flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + if (memcmp(&rb_flow, fl_ctx_exp_post_scan, sizeof(rb_flow)) != 0) { + pr_err("pme scan test Flow Context Read FAIL\n"); + pr_err("Expected\n"); + hexdump(fl_ctx_exp_post_scan, sizeof(fl_ctx_exp_post_scan)); + pr_err("Received\n"); + hexdump(&rb_flow, sizeof(rb_flow)); + goto flow_ctx_disable; + } + + /* Test truncation test */ + /* Build a frame descriptor */ + memset(&fd, 0, sizeof(struct qm_fd)); + + fd.length20 = sizeof(scan_data); + qm_fd_addr_set64(&fd, pme_map(scan_data)); + + ret = pme_ctx_scan(&a_scan_ctx.base_ctx, 0, &fd, + PME_SCAN_ARGS(PME_CMD_SCAN_SR | PME_CMD_SCAN_E, 0, 0xff00), + &token); + if (ret) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + wait_for_completion(&scan_comp); + + status = pme_fd_res_status(&a_scan_ctx.result_fd); + if (status) { + pr_err("pme scan test failed 0x%x\n", status); + goto flow_ctx_disable; + } + /* Check the response...expect truncation bit to be set */ + if (!(pme_fd_res_flags(&a_scan_ctx.result_fd) & PME_STATUS_TRUNCATED)) { + pr_err("st: Scan result failed...expected trunc\n"); + goto flow_ctx_disable; + } + + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&a_scan_ctx.base_ctx, + PME_CTX_OP_WAIT, &rb_flow, &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + pr_err("pme scan test failed: 0x%x\n", ret); + goto flow_ctx_disable; + } + if (memcmp(&rb_flow, fl_ctx_exp_post_scan, sizeof(rb_flow)) != 0) { + pr_err("pme scan test Flow Context Read FAIL\n"); + pr_err("Expected\n"); + hexdump(fl_ctx_exp_post_scan, sizeof(fl_ctx_exp_post_scan)); + pr_err("Received\n"); + hexdump(&rb_flow, sizeof(rb_flow)); + goto flow_ctx_disable; + } + + /* Disable */ + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, + &ctx_ctrl.ctx_ctr); + if (ret < 1) { + pr_err("pme scan test failed 0x%x\n", ret); + goto flow_ctx_finish; + } + wait_for_completion(&ctx_ctrl.cb_done); + pme_ctx_finish(&a_scan_ctx.base_ctx); + return 0; + /* error path */ +/* failure path */ +flow_ctx_disable: + ret = pme_ctx_disable(&a_scan_ctx.base_ctx, PME_CTX_OP_WAIT, NULL); +flow_ctx_finish: + pme_ctx_finish(&a_scan_ctx.base_ctx); + return (!ret) ? -EINVAL : ret; +} + +void pme2_test_scan(void) +{ + int ret; + + ret = scan_test_direct(0, 0); + if (ret) + goto done; + ret = scan_test_direct(1, 0); + if (ret) + goto done; +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + ret = scan_test_direct(0, 1); + if (ret) + goto done; +#endif + ret = scan_test_flow(); +done: + if (ret) + pr_info("pme scan test FAILED 0x%x\n", ret); + else + pr_info("pme Scan Test Passed\n"); +} + +static int setup_buffer_pool(void) +{ +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + u32 bpid_size = CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID_SIZE; + struct bman_pool_params pparams = { + .flags = BMAN_POOL_FLAG_DYNAMIC_BPID, + .thresholds = { + 0, + 0, + 0, + 0 + } + }; + + if (!pme2_have_control()) { + pr_err("pme scan test: Not the ctrl-plane\n"); + return -EINVAL; + } + pool = bman_new_pool(&pparams); + if (!pool) { + pr_err("pme scan test: can't get buffer pool\n"); + return -EINVAL; + } + pme_bpid = bman_get_params(pool)->bpid; + bman_buffers_virt_base = kmalloc(1<<(bpid_size+5), GFP_KERNEL); + bman_buffers_phys_base = pme_map(bman_buffers_virt_base); + if (pme_map_error(bman_buffers_phys_base)) { + pr_info("pme scan test: pme_map_error\n"); + bman_free_pool(pool); + kfree(bman_buffers_virt_base); + return -ENODEV; + } + release_buffer(bman_buffers_phys_base); + /* Configure the buffer pool */ + pme_attr_set(pme_attr_bsc(pme_bpid), bpid_size); + /* realease to the specified buffer pool */ + return 0; +#endif + return 0; +} + +static int teardown_buffer_pool(void) +{ +#ifdef CONFIG_FSL_PME2_TEST_SCAN_WITH_BPID + pme_attr_set(pme_attr_bsc(pme_bpid), 0); + empty_buffer(); + bman_free_pool(pool); + kfree(bman_buffers_virt_base); +#endif + return 0; +} + +static int pme2_test_scan_init(void) +{ + int big_loop = 2; + int ret = 0; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + pr_info("pme scan test: can't set cpumask\n"); + goto done_all; + } + + ret = setup_buffer_pool(); + if (ret) + goto done_cpu_mask; + + /* create sample database */ + if (db_ctrl == create_destroy || db_ctrl == create) { + if (!pme2_have_control()) { + pr_err("pme scan test: Not the ctrl-plane\n"); + ret = -EINVAL; + goto done_scan; + } + if (pme2_sample_db()) { + pr_err("pme scan test: error creating db\n"); + goto done_scan; + } + } + + if (scan_ctrl == do_scan) { + while (big_loop--) + pme2_test_scan(); + } + + if (db_ctrl == create_destroy || db_ctrl == destroy) { + /* Clear database */ + if (pme2_clear_sample_db()) + pr_err("pme scan test: error clearing db\n"); + } + +done_scan: + teardown_buffer_pool(); +done_cpu_mask: + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) + pr_err("PME2 test high: can't restore cpumask"); +done_all: + return ret; +} + +static void pme2_test_scan_exit(void) +{ +} + +module_init(pme2_test_scan_init); +module_exit(pme2_test_scan_exit); --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_sysfs.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_sysfs.c @@ -0,0 +1,565 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pme2_regs.h" +#include "pme2_private.h" + +#define MAX_ACCUMULATOR_INTERVAL 10000 +extern u32 pme_stat_interval; + +/* The pme sysfs contains the following types of attributes + * 1) root level: general pme confuration + * 2) bsc: bufferpool size configuration + * 3) stats: pme statistics + */ +static ssize_t pme_store(struct device *dev, struct device_attribute *dev_attr, + const char *buf, size_t count, enum pme_attr attr) +{ + unsigned long val; + size_t ret; + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n",buf); + return -EINVAL; + } + ret = pme_attr_set(attr, val); + if (ret) { + dev_err(dev, "attr_set err attr=%u, val=%lu\n", attr, val); + return ret; + } + return count; +} + +static ssize_t pme_show(struct device *dev, struct device_attribute *dev_attr, + char *buf, enum pme_attr attr, const char *fmt) +{ + u32 data; + int ret; + + ret = pme_attr_get(attr, &data); + if (!ret) + return snprintf(buf, PAGE_SIZE, fmt, data); + return ret; +} + + +static ssize_t pme_stat_show(struct device *dev, + struct device_attribute *dev_attr, char *buf, enum pme_attr attr) +{ + u64 data = 0; + int ret = 0; + + ret = pme_stat_get(attr, &data, 0); + if (!ret) + return snprintf(buf, PAGE_SIZE, "%llu\n", data); + else + return ret; +} + +static ssize_t pme_stat_store(struct device *dev, + struct device_attribute *dev_attr, const char *buf, + size_t count, enum pme_attr attr) +{ + unsigned long val; + u64 data = 0; + size_t ret = 0; + if (strict_strtoul(buf, 0, &val)) { + pr_err("pme: invalid input %s\n", buf); + return -EINVAL; + } + if (val) { + pr_err("pme: invalid input %s\n", buf); + return -EINVAL; + } + ret = pme_stat_get(attr, &data, 1); + return count; +} + + +#define PME_SYSFS_ATTR(pme_attr, perm, showhex) \ +static ssize_t pme_store_##pme_attr(struct device *dev, \ + struct device_attribute *attr, const char *buf, size_t count) \ +{ \ + return pme_store(dev, attr, buf, count, pme_attr_##pme_attr);\ +} \ +static ssize_t pme_show_##pme_attr(struct device *dev, \ + struct device_attribute *attr, char *buf) \ +{ \ + return pme_show(dev, attr, buf, pme_attr_##pme_attr, showhex);\ +} \ +static DEVICE_ATTR( pme_attr, perm, pme_show_##pme_attr, pme_store_##pme_attr); + + +#define PME_SYSFS_STAT_ATTR(pme_attr, perm) \ +static ssize_t pme_store_##pme_attr(struct device *dev, \ + struct device_attribute *attr, const char *buf, size_t count) \ +{ \ + return pme_stat_store(dev, attr, buf, count, pme_attr_##pme_attr);\ +} \ +static ssize_t pme_show_##pme_attr(struct device *dev, \ + struct device_attribute *attr, char *buf) \ +{ \ + return pme_stat_show(dev, attr, buf, pme_attr_##pme_attr);\ +} \ +static DEVICE_ATTR(pme_attr, perm, pme_show_##pme_attr, pme_store_##pme_attr); + + +#define PME_SYSFS_BSC_ATTR(bsc_id, perm, showhex) \ +static ssize_t pme_store_bsc_##bsc_id(struct device *dev,\ + struct device_attribute *attr, const char *buf, size_t count) \ +{ \ + return pme_store(dev, attr, buf, count, pme_attr_bsc(bsc_id));\ +} \ +static ssize_t pme_show_bsc_##bsc_id(struct device *dev,\ + struct device_attribute *attr, char *buf) \ +{ \ + return pme_show(dev, attr, buf, pme_attr_bsc(bsc_id), showhex);\ +} \ +static DEVICE_ATTR(bsc_id, perm, pme_show_bsc_##bsc_id, \ + pme_store_bsc_##bsc_id); + +/* Statistics Ctrl: update interval */ +static ssize_t pme_store_update_interval(struct device *dev, + struct device_attribute *attr, const char *buf, size_t count) +{ + unsigned long val; + + if (!pme2_have_control()) { + PMEPRERR("not on ctrl-plane\n"); + return -ENODEV; + } + if (strict_strtoul(buf, 0, &val)) { + dev_info(dev, "invalid input %s\n", buf); + return -EINVAL; + } + if (val > MAX_ACCUMULATOR_INTERVAL) { + dev_info(dev, "invalid input %s\n", buf); + return -ERANGE; + } + accumulator_update_interval(val); + return count; +} +static ssize_t pme_show_update_interval(struct device *dev, + struct device_attribute *attr, char *buf) +{ + if (!pme2_have_control()) + return -ENODEV; + return snprintf(buf, PAGE_SIZE, "%u\n", pme_stat_interval); +} + +#define FMT_0HEX "0x%08x\n" +#define FMT_HEX "0x%x\n" +#define FMT_DEC "%u\n" +#define PRIV_RO S_IRUSR +#define PRIV_RW (S_IRUSR | S_IWUSR) + +/* Register Interfaces */ +/* read-write; */ +PME_SYSFS_ATTR(efqc_int, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sw_db, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(dmcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(smcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(famcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(kvlts, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(max_chain_length, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(pattern_range_counter_idx, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(pattern_range_counter_mask, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(max_allowed_test_line_per_pattern, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(max_pattern_matches_per_sui, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(max_pattern_evaluations_per_sui, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(report_length_limit, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(end_of_simple_sui_report, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(aim, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(end_of_sui_reaction_ptr, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sre_pscl, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sre_max_block_num, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(sre_max_instruction_limit, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(esr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(pehd, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(ecc1bes, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(ecc2bes, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(miace, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(miacr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(cdcr, PRIV_RW, FMT_0HEX); +PME_SYSFS_ATTR(pmtr, PRIV_RW, FMT_DEC); + +/* read-only; */ +PME_SYSFS_ATTR(max_pdsr_index, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_context_size, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_rule_num, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_session_ctx_num, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_max_index_size, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(sre_max_offset_ctrl, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(src_id, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(liodnr, PRIV_RO, FMT_DEC); +PME_SYSFS_ATTR(rev1, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(rev2, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(isr, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(ecr0, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(ecr1, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(pmstat, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(eccaddr, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(ecccode, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(faconf, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(pdsrbah, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(pdsrbal, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(scbarh, PRIV_RO, FMT_0HEX); +PME_SYSFS_ATTR(scbarl, PRIV_RO, FMT_0HEX); + + +/* Buffer Pool Size Configuration */ +PME_SYSFS_BSC_ATTR(0, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(1, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(2, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(3, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(4, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(5, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(6, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(7, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(8, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(9, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(10, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(11, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(12, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(13, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(14, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(15, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(16, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(17, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(18, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(19, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(20, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(21, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(22, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(23, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(24, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(25, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(26, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(27, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(28, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(29, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(30, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(31, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(32, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(33, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(34, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(35, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(36, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(37, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(38, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(39, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(40, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(41, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(42, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(43, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(44, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(45, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(46, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(47, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(48, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(49, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(50, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(51, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(52, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(53, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(54, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(55, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(56, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(57, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(58, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(59, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(60, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(61, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(62, PRIV_RW, FMT_DEC); +PME_SYSFS_BSC_ATTR(63, PRIV_RW, FMT_DEC); + +/* Stats Counters*/ +PME_SYSFS_STAT_ATTR(trunci, PRIV_RW); +PME_SYSFS_STAT_ATTR(rbc, PRIV_RW); +PME_SYSFS_STAT_ATTR(tbt0ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(tbt1ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(vlt0ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(vlt1ecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(cmecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(dxcmecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(dxemecc1ec, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnib, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnis, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnth1, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnth2, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnthv, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnths, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnch, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnpm, PRIV_RW); +PME_SYSFS_STAT_ATTR(stns1m, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnpmr, PRIV_RW); +PME_SYSFS_STAT_ATTR(stndsr, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnesr, PRIV_RW); +PME_SYSFS_STAT_ATTR(stns1r, PRIV_RW); +PME_SYSFS_STAT_ATTR(stnob, PRIV_RW); +PME_SYSFS_STAT_ATTR(mia_byc, PRIV_RW); +PME_SYSFS_STAT_ATTR(mia_blc, PRIV_RW); + +/* Stats Control */ +PME_SYSFS_ATTR(tbt0ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(tbt1ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(vlt0ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(vlt1ecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(cmecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(dxcmecc1th, PRIV_RW, FMT_DEC); +PME_SYSFS_ATTR(dxemecc1th, PRIV_RW, FMT_DEC); + +static DEVICE_ATTR(update_interval, (S_IRUSR | S_IWUSR), + pme_show_update_interval, pme_store_update_interval); + +static struct attribute *pme_dev_bsc_attributes[] = { + &dev_attr_0.attr, + &dev_attr_1.attr, + &dev_attr_2.attr, + &dev_attr_3.attr, + &dev_attr_4.attr, + &dev_attr_5.attr, + &dev_attr_6.attr, + &dev_attr_7.attr, + &dev_attr_8.attr, + &dev_attr_9.attr, + &dev_attr_10.attr, + &dev_attr_11.attr, + &dev_attr_12.attr, + &dev_attr_13.attr, + &dev_attr_14.attr, + &dev_attr_15.attr, + &dev_attr_16.attr, + &dev_attr_17.attr, + &dev_attr_18.attr, + &dev_attr_19.attr, + &dev_attr_20.attr, + &dev_attr_21.attr, + &dev_attr_22.attr, + &dev_attr_23.attr, + &dev_attr_24.attr, + &dev_attr_25.attr, + &dev_attr_26.attr, + &dev_attr_27.attr, + &dev_attr_28.attr, + &dev_attr_29.attr, + &dev_attr_30.attr, + &dev_attr_31.attr, + &dev_attr_32.attr, + &dev_attr_33.attr, + &dev_attr_34.attr, + &dev_attr_35.attr, + &dev_attr_36.attr, + &dev_attr_37.attr, + &dev_attr_38.attr, + &dev_attr_39.attr, + &dev_attr_40.attr, + &dev_attr_41.attr, + &dev_attr_42.attr, + &dev_attr_43.attr, + &dev_attr_44.attr, + &dev_attr_45.attr, + &dev_attr_46.attr, + &dev_attr_47.attr, + &dev_attr_48.attr, + &dev_attr_49.attr, + &dev_attr_50.attr, + &dev_attr_51.attr, + &dev_attr_52.attr, + &dev_attr_53.attr, + &dev_attr_54.attr, + &dev_attr_55.attr, + &dev_attr_56.attr, + &dev_attr_57.attr, + &dev_attr_58.attr, + &dev_attr_59.attr, + &dev_attr_60.attr, + &dev_attr_61.attr, + &dev_attr_62.attr, + &dev_attr_63.attr, + NULL +}; + +static struct attribute *pme_dev_attributes[] = { + &dev_attr_efqc_int.attr, + &dev_attr_sw_db.attr, + &dev_attr_dmcr.attr, + &dev_attr_smcr.attr, + &dev_attr_famcr.attr, + &dev_attr_kvlts.attr, + &dev_attr_max_chain_length.attr, + &dev_attr_pattern_range_counter_idx.attr, + &dev_attr_pattern_range_counter_mask.attr, + &dev_attr_max_allowed_test_line_per_pattern.attr, + &dev_attr_max_pdsr_index.attr, + &dev_attr_max_pattern_matches_per_sui.attr, + &dev_attr_max_pattern_evaluations_per_sui.attr, + &dev_attr_report_length_limit.attr, + &dev_attr_end_of_simple_sui_report.attr, + &dev_attr_aim.attr, + &dev_attr_sre_context_size.attr, + &dev_attr_sre_rule_num.attr, + &dev_attr_sre_session_ctx_num.attr, + &dev_attr_end_of_sui_reaction_ptr.attr, + &dev_attr_sre_pscl.attr, + &dev_attr_sre_max_block_num.attr, + &dev_attr_sre_max_instruction_limit.attr, + &dev_attr_sre_max_index_size.attr, + &dev_attr_sre_max_offset_ctrl.attr, + &dev_attr_src_id.attr, + &dev_attr_liodnr.attr, + &dev_attr_rev1.attr, + &dev_attr_rev2.attr, + &dev_attr_isr.attr, + &dev_attr_ecr0.attr, + &dev_attr_ecr1.attr, + &dev_attr_esr.attr, + &dev_attr_pmstat.attr, + &dev_attr_pehd.attr, + &dev_attr_ecc1bes.attr, + &dev_attr_ecc2bes.attr, + &dev_attr_eccaddr.attr, + &dev_attr_ecccode.attr, + &dev_attr_miace.attr, + &dev_attr_miacr.attr, + &dev_attr_cdcr.attr, + &dev_attr_pmtr.attr, + &dev_attr_faconf.attr, + &dev_attr_pdsrbah.attr, + &dev_attr_pdsrbal.attr, + &dev_attr_scbarh.attr, + &dev_attr_scbarl.attr, + NULL +}; + +static struct attribute *pme_dev_stats_counter_attributes[] = { + &dev_attr_trunci.attr, + &dev_attr_rbc.attr, + &dev_attr_tbt0ecc1ec.attr, + &dev_attr_tbt1ecc1ec.attr, + &dev_attr_vlt0ecc1ec.attr, + &dev_attr_vlt1ecc1ec.attr, + &dev_attr_cmecc1ec.attr, + &dev_attr_dxcmecc1ec.attr, + &dev_attr_dxemecc1ec.attr, + &dev_attr_stnib.attr, + &dev_attr_stnis.attr, + &dev_attr_stnth1.attr, + &dev_attr_stnth2.attr, + &dev_attr_stnthv.attr, + &dev_attr_stnths.attr, + &dev_attr_stnch.attr, + &dev_attr_stnpm.attr, + &dev_attr_stns1m.attr, + &dev_attr_stnpmr.attr, + &dev_attr_stndsr.attr, + &dev_attr_stnesr.attr, + &dev_attr_stns1r.attr, + &dev_attr_stnob.attr, + &dev_attr_mia_byc.attr, + &dev_attr_mia_blc.attr, + NULL +}; + +static struct attribute *pme_dev_stats_ctrl_attributes[] = { + &dev_attr_update_interval.attr, + &dev_attr_tbt0ecc1th.attr, + &dev_attr_tbt1ecc1th.attr, + &dev_attr_vlt0ecc1th.attr, + &dev_attr_vlt1ecc1th.attr, + &dev_attr_cmecc1th.attr, + &dev_attr_dxcmecc1th.attr, + &dev_attr_dxemecc1th.attr, + NULL +}; + +/* root level */ +static const struct attribute_group pme_dev_attr_grp = { + .name = NULL, /* put in device directory */ + .attrs = pme_dev_attributes +}; + +/* root/bsc */ +static struct attribute_group pme_dev_bsc_attr_grp = { + .name = "bsc", + .attrs = pme_dev_bsc_attributes +}; + +/* root/stats */ +static struct attribute_group pme_dev_stats_counters_attr_grp = { + .name = "stats", + .attrs = pme_dev_stats_counter_attributes +}; + +/* root/stats_ctrl */ +static struct attribute_group pme_dev_stats_ctrl_attr_grp = { + .name = "stats_ctrl", + .attrs = pme_dev_stats_ctrl_attributes +}; + + +int pme2_create_sysfs_dev_files(struct platform_device *ofdev) +{ + int ret; + + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_attr_grp); + if (ret) + goto done; + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_bsc_attr_grp); + if (ret) + goto del_group_1; + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_stats_counters_attr_grp); + if (ret) + goto del_group_2; + ret = sysfs_create_group(&ofdev->dev.kobj, &pme_dev_stats_ctrl_attr_grp); + if (ret) + goto del_group_3; + goto done; +del_group_3: + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_stats_counters_attr_grp); +del_group_2: + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_bsc_attr_grp); +del_group_1: + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_attr_grp); +done: + if (ret) + dev_err(&ofdev->dev, + "Cannot create dev attributes ret=%d\n", ret); + return ret; +} + +void pme2_remove_sysfs_dev_files(struct platform_device *ofdev) +{ + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_stats_ctrl_attr_grp); + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_stats_counters_attr_grp); + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_bsc_attr_grp); + sysfs_remove_group(&ofdev->dev.kobj, &pme_dev_attr_grp); +} + + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_sys.h +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_sys.h @@ -0,0 +1,64 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int pme2_create_sysfs_dev_files(struct platform_device *ofdev); +void pme2_remove_sysfs_dev_files(struct platform_device *ofdev); +void accumulator_update_interval(u32 interval); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_high.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_high.c @@ -0,0 +1,944 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_private.h" + +/* The pme_ctx state machine is described via the following list of + * internal PME_CTX_FLAG_*** bits and cross-referenced to the APIs (and + * functionality) they track. + * + * DEAD: set at any point, an error has been hit, doesn't "cause" disabling or + * any autonomous ref-decrement (been there, hit the gotchas, won't do it + * again). + * + * DISABLING: set by pme_ctx_disable() at any point that is not already + * disabling, disabled, or in ctrl, and the ref is decremented. DISABLING is + * unset by pme_ctx_enable(). + * + * DISABLED: once pme_ctx_disable() has set DISABLING and refs==0, DISABLED is + * set before returning. (Any failure will clear DISABLING and increment the ref + * count.) DISABLING is unset by pme_ctx_enable(). + * + * ENABLING: set by pme_ctx_enable() provided the context is disabled, not dead, + * not in RECONFIG, and not already enabling. Once set, the ref is incremented + * and the tx FQ is scheduled (for non-exclusive flows). If this fails, the ref + * is decremented and the context is re-disabled. ENABLING is unset once + * pme_ctx_enable() completes. + * + * RECONFIG: set by pme_ctx_reconfigure_[rt]x() provided the context is + * disabled, not dead, and not already in reconfig. RECONFIG is cleared prior to + * the function returning. + * + * Simplifications: the do_flag() wrapper provides synchronised modifications of + * the ctx 'flags', and callers can rely on the following implications to reduce + * the number of flags in the masks being passed in; + * DISABLED implies DISABLING (and enable will clear both) + */ + +/* Internal-only ctx flags, mustn't conflict with exported ones */ +#define PME_CTX_FLAG_DEAD 0x80000000 +#define PME_CTX_FLAG_DISABLING 0x40000000 +#define PME_CTX_FLAG_DISABLED 0x20000000 +#define PME_CTX_FLAG_ENABLING 0x10000000 +#define PME_CTX_FLAG_RECONFIG 0x08000000 +#define PME_CTX_FLAG_PRIVATE 0xf8000000 /* mask of them all */ + +/* Internal-only cmd flags, musn't conflict with exported ones */ +#define PME_CTX_OP_INSIDE_DISABLE 0x80000000 +#define PME_CTX_OP_PRIVATE 0x80000000 /* mask of them all */ + +struct pme_nostash { + struct qman_fq fqin; + struct pme_ctx *parent; +}; + +/* This wrapper simplifies conditional (and locked) read-modify-writes to + * 'flags'. Inlining should allow the compiler to optimise it based on the + * parameters, eg. if 'must_be_set'/'must_not_be_set' are zero it will + * degenerate to an unconditional read-modify-write, if 'to_set'/'to_unset' are + * zero it will degenerate to a read-only flag-check, etc. */ +static inline int do_flags(struct pme_ctx *ctx, + u32 must_be_set, u32 must_not_be_set, + u32 to_set, u32 to_unset) +{ + int err = -EBUSY; + unsigned long irqflags; + + spin_lock_irqsave(&ctx->lock, irqflags); + if (((ctx->flags & must_be_set) == must_be_set) && + !(ctx->flags & must_not_be_set)) { + ctx->flags |= to_set; + ctx->flags &= ~to_unset; + err = 0; + } + spin_unlock_irqrestore(&ctx->lock, irqflags); + return err; +} + +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *, struct qman_fq *, + const struct qm_dqrr_entry *); +static void cb_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_dc_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_fqs(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static const struct qman_fq_cb pme_fq_base_in = { + .fqs = cb_fqs, + .ern = cb_ern +}; +static const struct qman_fq_cb pme_fq_base_out = { + .dqrr = cb_dqrr, + .dc_ern = cb_dc_ern, + .fqs = cb_fqs +}; + +/* Globals related to competition for PME_EFQC, ie. exclusivity */ +static DECLARE_WAIT_QUEUE_HEAD(exclusive_queue); +static spinlock_t exclusive_lock = __SPIN_LOCK_UNLOCKED(exclusive_lock); +static unsigned int exclusive_refs; +static struct pme_ctx *exclusive_ctx; + +/* Index 0..255, bools do indicated which errors are serious + * 0x40, 0x41, 0x48, 0x49, 0x4c, 0x4e, 0x4f, 0x50, 0x51, 0x59, 0x5a, 0x5b, + * 0x5c, 0x5d, 0x5f, 0x60, 0x80, 0xc0, 0xc1, 0xc2, 0xc4, 0xd2, + * 0xd4, 0xd5, 0xd7, 0xd9, 0xda, 0xe0, 0xe7 + */ +static u8 serious_error_vec[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/* TODO: this is hitting the rx FQ with a large blunt instrument, ie. park() + * does a retire, query, oos, and (re)init. It's possible to force-eligible the + * rx FQ instead, then use a DCA_PK within the cb_dqrr() callback to park it. + * Implement this optimisation later if it's an issue (and incur the additional + * complexity in the state-machine). */ +static int park(struct qman_fq *fq, struct qm_mcc_initfq *initfq) +{ + int ret; + u32 flags; + + ret = qman_retire_fq(fq, &flags); + if (ret) + return ret; + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + /* We can't revert from now on */ + ret = qman_query_fq(fq, &initfq->fqd); + BUG_ON(ret); + ret = qman_oos_fq(fq); + BUG_ON(ret); + /* can't set QM_INITFQ_WE_OAC and QM_INITFQ_WE_TDTHRESH + * at the same time */ + initfq->we_mask = QM_INITFQ_WE_MASK & ~QM_INITFQ_WE_TDTHRESH; + ret = qman_init_fq(fq, 0, initfq); + BUG_ON(ret); + initfq->we_mask = QM_INITFQ_WE_TDTHRESH; + ret = qman_init_fq(fq, 0, initfq); + BUG_ON(ret); + return 0; +} + +static inline int reconfigure_rx(struct pme_ctx *ctx, int to_park, u8 qosout, + enum qm_channel dest, + const struct qm_fqd_stashing *stashing) +{ + struct qm_mcc_initfq initfq; + u32 flags = QMAN_INITFQ_FLAG_SCHED; + int ret; + + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, + PME_CTX_FLAG_DEAD | PME_CTX_FLAG_RECONFIG, + PME_CTX_FLAG_RECONFIG, 0); + if (ret) + return ret; + if (to_park) { + ret = park(&ctx->fq, &initfq); + if (ret) + goto done; + } + initfq.we_mask = QM_INITFQ_WE_DESTWQ | QM_INITFQ_WE_FQCTRL; + initfq.fqd.dest.wq = qosout; + if (stashing) { + initfq.we_mask |= QM_INITFQ_WE_CONTEXTA; + initfq.fqd.context_a.stashing = *stashing; + initfq.fqd.fq_ctrl = QM_FQCTRL_CTXASTASHING; + } else + initfq.fqd.fq_ctrl = 0; /* disable stashing */ + if (ctx->flags & PME_CTX_FLAG_LOCAL) + flags |= QMAN_INITFQ_FLAG_LOCAL; + else { + initfq.fqd.dest.channel = dest; + /* Set hold-active *IFF* it's a pool channel */ + if (dest >= qm_channel_pool1) + initfq.fqd.fq_ctrl |= QM_FQCTRL_HOLDACTIVE; + } + ret = qman_init_fq(&ctx->fq, flags, &initfq); +done: + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_RECONFIG); + return ret; +} + +/* this code is factored out of pme_ctx_disable() and get_ctrl() */ +static int empty_pipeline(struct pme_ctx *ctx, __maybe_unused u32 flags) +{ + int ret; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & PME_CTX_OP_WAIT) { + if (flags & PME_CTX_OP_WAIT_INT) { + ret = -EINTR; + wait_event_interruptible(ctx->queue, + !(ret = atomic_read(&ctx->refs))); + } else + wait_event(ctx->queue, + !(ret = atomic_read(&ctx->refs))); + } else +#endif + ret = atomic_read(&ctx->refs); + if (ret) + /* convert a +ve ref-count to a -ve error code */ + ret = -EBUSY; + return ret; +} + +int pme_ctx_init(struct pme_ctx *ctx, u32 flags, u32 bpid, u8 qosin, + u8 qosout, enum qm_channel dest, + const struct qm_fqd_stashing *stashing) +{ + u32 fqid_rx = 0, fqid_tx = 0; + int rxinit = 0, ret = -ENOMEM, fqin_inited = 0; + + ctx->fq.cb = pme_fq_base_out; + atomic_set(&ctx->refs, 0); + ctx->flags = (flags & ~PME_CTX_FLAG_PRIVATE) | PME_CTX_FLAG_DISABLED | + PME_CTX_FLAG_DISABLING; + if (ctx->flags & PME_CTX_FLAG_PMTCC) + ctx->flags |= PME_CTX_FLAG_DIRECT | PME_CTX_FLAG_EXCLUSIVE; + spin_lock_init(&ctx->lock); + init_waitqueue_head(&ctx->queue); + INIT_LIST_HEAD(&ctx->tokens); + ctx->hw_flow = NULL; + ctx->hw_residue = NULL; + + ctx->us_data = kzalloc(sizeof(struct pme_nostash), GFP_KERNEL); + if (!ctx->us_data) + goto err; + ctx->us_data->parent = ctx; + fqid_rx = qm_fq_new(); + fqid_tx = qm_fq_new(); + if (!fqid_rx || !fqid_tx || !ctx->us_data) + goto err; + ctx->us_data->fqin.cb = pme_fq_base_in; + if (qman_create_fq(fqid_rx, QMAN_FQ_FLAG_TO_DCPORTAL | + ((flags & PME_CTX_FLAG_LOCKED) ? + QMAN_FQ_FLAG_LOCKED : 0), + &ctx->us_data->fqin)) + goto err; + fqin_inited = 1; + if (qman_create_fq(fqid_tx, QMAN_FQ_FLAG_NO_ENQUEUE | + ((flags & PME_CTX_FLAG_LOCKED) ? + QMAN_FQ_FLAG_LOCKED : 0), &ctx->fq)) + goto err; + rxinit = 1; + /* Input FQ */ + if (!(flags & PME_CTX_FLAG_DIRECT)) { + ctx->hw_flow = pme_hw_flow_new(); + if (!ctx->hw_flow) + goto err; + } + ret = pme_ctx_reconfigure_tx(ctx, bpid, qosin); + if (ret) + goto err; + /* Output FQ */ + ret = reconfigure_rx(ctx, 0, qosout, dest, stashing); + if (ret) { + /* Need to OOS the FQ before it gets free'd */ + ret = qman_oos_fq(&ctx->us_data->fqin); + BUG_ON(ret); + goto err; + } + return 0; +err: + if (fqid_rx) + qm_fq_free(fqid_rx); + if (fqid_tx) + qm_fq_free(fqid_tx); + if (ctx->hw_flow) + pme_hw_flow_free(ctx->hw_flow); + if (ctx->us_data) { + if (fqin_inited) + qman_destroy_fq(&ctx->us_data->fqin, 0); + kfree(ctx->us_data); + } + if (rxinit) + qman_destroy_fq(&ctx->fq, 0); + return ret; +} +EXPORT_SYMBOL(pme_ctx_init); + +/* NB, we don't lock here because there must be no other callers (even if we + * locked, what does the loser do after we win?) */ +void pme_ctx_finish(struct pme_ctx *ctx) +{ + u32 flags, fqid_rx, fqid_tx; + int ret; + + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, PME_CTX_FLAG_RECONFIG, 0, 0); + BUG_ON(ret); + /* Rx/Tx are empty (coz ctx is disabled) so retirement should be + * immediate */ + ret = qman_retire_fq(&ctx->us_data->fqin, &flags); + BUG_ON(ret); + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + ret = qman_retire_fq(&ctx->fq, &flags); + BUG_ON(ret); + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + /* OOS and free (don't kfree fq, it's a static ctx member) */ + ret = qman_oos_fq(&ctx->us_data->fqin); + BUG_ON(ret); + ret = qman_oos_fq(&ctx->fq); + BUG_ON(ret); + fqid_rx = qman_fq_fqid(&ctx->us_data->fqin); + fqid_tx = qman_fq_fqid(&ctx->fq); + qman_destroy_fq(&ctx->us_data->fqin, 0); + qman_destroy_fq(&ctx->fq, 0); + qm_fq_free(fqid_rx); + qm_fq_free(fqid_tx); + kfree(ctx->us_data); + if (ctx->hw_flow) + pme_hw_flow_free(ctx->hw_flow); + if (ctx->hw_residue) + pme_hw_residue_free(ctx->hw_residue); +} +EXPORT_SYMBOL(pme_ctx_finish); + +int pme_ctx_is_disabled(struct pme_ctx *ctx) +{ + return (ctx->flags & PME_CTX_FLAG_DISABLED); +} +EXPORT_SYMBOL(pme_ctx_is_disabled); + +int pme_ctx_is_dead(struct pme_ctx *ctx) +{ + return (ctx->flags & PME_CTX_FLAG_DEAD); +} +EXPORT_SYMBOL(pme_ctx_is_dead); + +/* predeclare this here because pme_ctx_disable() may invoke it in "privileged + * mode". The code is down with the other ctrl commands, where it belongs. */ +static inline int __update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token, + int is_disabling); + +/* This gets invoked by pme_ctx_disable() if it runs to completion, otherwise + * it's called from cb_helper. */ +static inline void __disable_done(struct pme_ctx *ctx) +{ + struct qm_mcc_initfq initfq; + int ret = 0; + if (!(ctx->flags & PME_CTX_FLAG_EXCLUSIVE)) { + /* Park fqin (exclusive is always parked) */ + ret = park(&ctx->us_data->fqin, &initfq); + /* All the conditions for park() to succeed should be met. If + * this fails, there's a bug (s/w or h/w). */ + if (ret) + pr_crit("pme2: park() should never fail! (%d)\n", ret); + } + do_flags(ctx, 0, 0, PME_CTX_FLAG_DISABLED, 0); +} + +int pme_ctx_disable(struct pme_ctx *ctx, u32 flags, + struct pme_ctx_ctrl_token *token) +{ + int ret; + + /* We must not (already) be DISABLING */ + ret = do_flags(ctx, 0, PME_CTX_FLAG_DISABLING, + PME_CTX_FLAG_DISABLING, 0); + if (ret) + return ret; + /* Make sure the pipeline is empty */ + atomic_dec(&ctx->refs); + ret = empty_pipeline(ctx, flags); + if (ret) + goto err; + /* We're idle, but is the flow context flushed from PME onboard cache? + * If it's not flushed when the system deallocates it, that 32 bytes + * could be in use later when PME decides to flush a write to it. Need + * to make it coherent again... */ + if (!(ctx->flags & PME_CTX_FLAG_DIRECT)) { + /* Pass on wait flags (if any) but cancel any flow-context field + * writes (this is not the pme_ctx_ctrl_update_flow() API). */ + ret = __update_flow(ctx, flags & ~PME_CMD_FCW_ALL, NULL, + token, 1); + if (ret) + goto err; + return 1; + } + __disable_done(ctx); + return 0; +err: + atomic_inc(&ctx->refs); + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_DISABLING); + wake_up(&ctx->queue); + return ret; +} +EXPORT_SYMBOL(pme_ctx_disable); + +int pme_ctx_enable(struct pme_ctx *ctx) +{ + int ret; + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, + PME_CTX_FLAG_DEAD | PME_CTX_FLAG_RECONFIG | + PME_CTX_FLAG_ENABLING, + PME_CTX_FLAG_ENABLING, 0); + if (ret) + return ret; + if (!(ctx->flags & PME_CTX_FLAG_EXCLUSIVE)) { + ret = qman_init_fq(&ctx->us_data->fqin, + QMAN_INITFQ_FLAG_SCHED, NULL); + if (ret) { + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_ENABLING); + return ret; + } + } + atomic_inc(&ctx->refs); + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_DISABLED | PME_CTX_FLAG_DISABLING | + PME_CTX_FLAG_ENABLING); + return 0; +} +EXPORT_SYMBOL(pme_ctx_enable); + +int pme_ctx_reconfigure_tx(struct pme_ctx *ctx, u32 bpid, u8 qosin) +{ + struct qm_mcc_initfq initfq; + int ret; + + ret = do_flags(ctx, PME_CTX_FLAG_DISABLED, + PME_CTX_FLAG_DEAD | PME_CTX_FLAG_RECONFIG, + PME_CTX_FLAG_RECONFIG, 0); + if (ret) + return ret; + memset(&initfq,0,sizeof(initfq)); + pme_initfq(&initfq, ctx->hw_flow, qosin, bpid, qman_fq_fqid(&ctx->fq)); + ret = qman_init_fq(&ctx->us_data->fqin, 0, &initfq); + do_flags(ctx, 0, 0, 0, PME_CTX_FLAG_RECONFIG); + return ret; +} +EXPORT_SYMBOL(pme_ctx_reconfigure_tx); + +int pme_ctx_reconfigure_rx(struct pme_ctx *ctx, u8 qosout, + enum qm_channel dest, const struct qm_fqd_stashing *stashing) +{ + return reconfigure_rx(ctx, 1, qosout, dest, stashing); +} +EXPORT_SYMBOL(pme_ctx_reconfigure_rx); + +/* Helpers for 'ctrl' and 'work' APIs. These are used when the 'ctx' in question + * is EXCLUSIVE. */ +static inline void release_exclusive(__maybe_unused struct pme_ctx *ctx) +{ + unsigned long irqflags; + + BUG_ON(exclusive_ctx != ctx); + BUG_ON(!exclusive_refs); + spin_lock_irqsave(&exclusive_lock, irqflags); + if (!(--exclusive_refs)) { + exclusive_ctx = NULL; + pme2_exclusive_unset(); + wake_up(&exclusive_queue); + } + spin_unlock_irqrestore(&exclusive_lock, irqflags); +} +static int __try_exclusive(struct pme_ctx *ctx) +{ + int ret = 0; + unsigned long irqflags; + + spin_lock_irqsave(&exclusive_lock, irqflags); + if (exclusive_refs) { + /* exclusivity already held, continue if we're the owner */ + if (exclusive_ctx != ctx) + ret = -EBUSY; + } else { + /* it's not currently held */ + ret = pme2_exclusive_set(&ctx->us_data->fqin); + if (!ret) + exclusive_ctx = ctx; + } + if (!ret) + exclusive_refs++; + spin_unlock_irqrestore(&exclusive_lock, irqflags); + return ret; +} +/* Use this macro as the wait expression because we don't want to continue + * looping if the reason we're failing is that we don't have CCSR access + * (-ENODEV). */ +#define try_exclusive(ret, ctx) \ + (!(ret = __try_exclusive(ctx)) || (ret == -ENODEV)) +static inline int get_exclusive(struct pme_ctx *ctx, __maybe_unused u32 flags) +{ + int ret; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & PME_CTX_OP_WAIT) { + if (flags & PME_CTX_OP_WAIT_INT) { + ret = -EINTR; + wait_event_interruptible(exclusive_queue, + try_exclusive(ret, ctx)); + } else + wait_event(exclusive_queue, + try_exclusive(ret, ctx)); + } else +#endif + ret = __try_exclusive(ctx); + return ret; +} + +/* Used for 'work' APIs, convert PME->QMAN wait flags. The PME and + * QMAN "wait" flags have been aligned so that the below conversion should + * compile with good straight-line speed. */ +static inline u32 ctrl2eq(u32 flags) +{ +#ifdef CONFIG_FSL_DPA_CAN_WAIT + return flags & (QMAN_ENQUEUE_FLAG_WAIT | QMAN_ENQUEUE_FLAG_WAIT_INT); +#else + return flags; +#endif +} + +static inline void release_work(struct pme_ctx *ctx) +{ + if (atomic_dec_and_test(&ctx->refs)) + wake_up(&ctx->queue); +} + +#define BLOCK_NORMAL_WORK (PME_CTX_FLAG_DEAD | PME_CTX_FLAG_DISABLING) +static int try_work(struct pme_ctx *ctx, u32 flags) +{ + atomic_inc(&ctx->refs); + if (unlikely(!(flags & PME_CTX_OP_INSIDE_DISABLE) && + (ctx->flags & BLOCK_NORMAL_WORK))) { + release_work(ctx); + return -EIO; + } + return 0; +} + +static int get_work(struct pme_ctx *ctx, u32 flags) +{ + int ret = 0; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & PME_CTX_OP_WAIT) { + if (flags & PME_CTX_OP_WAIT_INT) { + ret = -EINTR; + wait_event_interruptible(ctx->queue, + !(ret = try_work(ctx, flags))); + } else + wait_event(ctx->queue, !try_work(ctx, flags)); + } else +#endif + ret = try_work(ctx, flags); + return ret; +} + +static inline int do_work(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, + struct pme_ctx_token *token, struct qman_fq *orp_fq, u16 seqnum) +{ + unsigned long irqflags; + int ret = get_work(ctx, flags); + if (ret) + return ret; + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) { + ret = get_exclusive(ctx, flags); + if (ret) { + release_work(ctx); + return ret; + } + } + BUG_ON(sizeof(*fd) != sizeof(token->blob)); + memcpy(&token->blob, fd, sizeof(*fd)); + + spin_lock_irqsave(&ctx->lock, irqflags); + list_add_tail(&token->node, &ctx->tokens); + spin_unlock_irqrestore(&ctx->lock, irqflags); + + if (!orp_fq) + ret = qman_enqueue(&ctx->us_data->fqin, fd, ctrl2eq(flags)); + else + ret = qman_enqueue_orp(&ctx->us_data->fqin, fd, ctrl2eq(flags), + orp_fq, seqnum); + if (ret) { + spin_lock_irqsave(&ctx->lock, irqflags); + list_del(&token->node); + spin_unlock_irqrestore(&ctx->lock, irqflags); + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) + release_exclusive(ctx); + release_work(ctx); + } + return ret; +} + +static inline int __update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token, + int is_disabling) +{ + struct qm_fd fd; + int ret; + int hw_res_used = 0; + struct pme_hw_residue *hw_res = pme_hw_residue_new(); + unsigned long irqflags; + + BUG_ON(ctx->flags & PME_CTX_FLAG_DIRECT); + if (!hw_res) + return -ENOMEM; + token->internal_flow_ptr = pme_hw_flow_new(); + if (!token->internal_flow_ptr) { + pme_hw_residue_free(hw_res); + return -ENOMEM; + } + token->base_token.cmd_type = pme_cmd_flow_write; + + flags &= ~PME_CTX_OP_PRIVATE; + /* The callback will want to know this */ + token->base_token.is_disable_flush = is_disabling ? 1 : 0; + flags |= (is_disabling ? PME_CTX_OP_INSIDE_DISABLE : 0); + spin_lock_irqsave(&ctx->lock, irqflags); + if (flags & PME_CTX_OP_RESETRESLEN) { + if (ctx->hw_residue) { + params->ren = 1; + flags |= PME_CMD_FCW_RES; + } else + flags &= ~PME_CMD_FCW_RES; + } + /* allocate residue memory if it is being added */ + if ((flags & PME_CMD_FCW_RES) && params->ren && !ctx->hw_residue) { + ctx->hw_residue = hw_res; + hw_res_used = 1; + } + spin_unlock_irqrestore(&ctx->lock, irqflags); + if (!hw_res_used) + pme_hw_residue_free(hw_res); + /* enqueue the FCW command to PME */ + memset(&fd, 0, sizeof(fd)); + if (params) + memcpy(token->internal_flow_ptr, params, + sizeof(struct pme_flow)); + pme_fd_cmd_fcw(&fd, flags & PME_CMD_FCW_ALL, + (struct pme_flow *)token->internal_flow_ptr, + ctx->hw_residue); + ret = do_work(ctx, flags, &fd, &token->base_token, NULL, 0); + return ret; +} + +int pme_ctx_ctrl_update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token) +{ + return __update_flow(ctx, flags, params, token, 0); +} +EXPORT_SYMBOL(pme_ctx_ctrl_update_flow); + +int pme_ctx_ctrl_read_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token) +{ + struct qm_fd fd; + + BUG_ON(ctx->flags & (PME_CTX_FLAG_DIRECT | PME_CTX_FLAG_PMTCC)); + token->base_token.cmd_type = pme_cmd_flow_read; + /* enqueue the FCR command to PME */ + token->usr_flow_ptr = params; + token->internal_flow_ptr = pme_hw_flow_new(); + if (!token->internal_flow_ptr) + return -ENOMEM; + memset(&fd, 0, sizeof(fd)); + pme_fd_cmd_fcr(&fd, (struct pme_flow *)token->internal_flow_ptr); + return do_work(ctx, flags, &fd, &token->base_token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_ctrl_read_flow); + +int pme_ctx_ctrl_nop(struct pme_ctx *ctx, u32 flags, + struct pme_ctx_ctrl_token *token) +{ + struct qm_fd fd; + + token->base_token.cmd_type = pme_cmd_nop; + /* enqueue the NOP command to PME */ + memset(&fd, 0, sizeof(fd)); + qm_fd_addr_set64(&fd, (unsigned long)token); + pme_fd_cmd_nop(&fd); + return do_work(ctx, flags, &fd, &token->base_token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_ctrl_nop); + +static inline void __prep_scan(__maybe_unused struct pme_ctx *ctx, + struct qm_fd *fd, u32 args, struct pme_ctx_token *token) +{ + BUG_ON(ctx->flags & PME_CTX_FLAG_PMTCC); + token->cmd_type = pme_cmd_scan; + pme_fd_cmd_scan(fd, args); +} + +int pme_ctx_scan(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, u32 args, + struct pme_ctx_token *token) +{ + __prep_scan(ctx, fd, args, token); + return do_work(ctx, flags, fd, token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_scan); + +int pme_ctx_scan_orp(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, u32 args, + struct pme_ctx_token *token, struct qman_fq *orp_fq, u16 seqnum) +{ + __prep_scan(ctx, fd, args, token); + return do_work(ctx, flags, fd, token, orp_fq, seqnum); +} +EXPORT_SYMBOL(pme_ctx_scan_orp); + +int pme_ctx_pmtcc(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, + struct pme_ctx_token *token) +{ + BUG_ON(!(ctx->flags & PME_CTX_FLAG_PMTCC)); + token->cmd_type = pme_cmd_pmtcc; + pme_fd_cmd_pmtcc(fd); + return do_work(ctx, flags, fd, token, NULL, 0); +} +EXPORT_SYMBOL(pme_ctx_pmtcc); + +int pme_ctx_exclusive_inc(struct pme_ctx *ctx, u32 flags) +{ + return get_exclusive(ctx, flags); +} +EXPORT_SYMBOL(pme_ctx_exclusive_inc); + +void pme_ctx_exclusive_dec(struct pme_ctx *ctx) +{ + release_exclusive(ctx); +} +EXPORT_SYMBOL(pme_ctx_exclusive_dec); + +/* The 99.99% case is that enqueues happen in order or they get order-restored + * by the ORP, and so dequeues of responses happen in order too, so our FIFO + * linked-list of tokens is append-on-enqueue and pop-on-dequeue, and all's + * well. + * + * *EXCEPT*, if ever an enqueue gets rejected ... what then happens is that we + * have dequeues and ERNs to deal with, and the order we see them in is not + * necessarily the linked-list order. So we need to handle this in DQRR and MR + * callbacks, without sacrificing fast-path performance. Ouch. + * + * We use pop_matching_token() to take care of the mess (inlined, of course). */ +#define MATCH(fd1,fd2) \ + ((qm_fd_addr_get64(fd1) == qm_fd_addr_get64(fd2)) && \ + ((fd1)->opaque == (fd2)->opaque)) +static inline struct pme_ctx_token *pop_matching_token(struct pme_ctx *ctx, + const struct qm_fd *fd) +{ + struct pme_ctx_token *token; + const struct qm_fd *t_fd; + unsigned long irqflags; + + /* The fast-path case is that the for() loop actually degenerates into; + * token = list_first_entry(); + * if (likely(MATCH())) + * [done] + * The penalty of the slow-path case is the for() loop plus the fact + * we're optimising for a "likely" match first time, which might hurt + * when that assumption is wrong a few times in succession. */ + spin_lock_irqsave(&ctx->lock, irqflags); + list_for_each_entry(token, &ctx->tokens, node) { + t_fd = (const struct qm_fd *)&token->blob[0]; + if (likely(MATCH(t_fd, fd))) { + list_del(&token->node); + goto found; + } + } + token = NULL; + pr_err("PME2 Could not find matching token!\n"); + BUG(); +found: + spin_unlock_irqrestore(&ctx->lock, irqflags); + return token; +} + +static inline void cb_helper(__always_unused struct qman_portal *portal, + struct pme_ctx *ctx, const struct qm_fd *fd, int error) +{ + struct pme_ctx_token *token; + struct pme_ctx_ctrl_token *ctrl_token; + + /* Resist the urge to use "unlikely" - 'error' is a constant param to an + * inline fn, so the compiler can collapse this completely. */ + if (error) + do_flags(ctx, 0, 0, PME_CTX_FLAG_DEAD, 0); + token = pop_matching_token(ctx, fd); + if (likely(token->cmd_type == pme_cmd_scan)) + ctx->cb(ctx, fd, token); + else if (token->cmd_type == pme_cmd_pmtcc) + ctx->cb(ctx, fd, token); + else { + /* outcast ctx and call supplied callback */ + ctrl_token = container_of(token, struct pme_ctx_ctrl_token, + base_token); + if (token->cmd_type == pme_cmd_flow_write) { + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + /* Is this pme_ctx_disable() completion? */ + if (token->is_disable_flush) + __disable_done(ctx); + } else if (token->cmd_type == pme_cmd_flow_read) { + /* Copy read result */ + memcpy(ctrl_token->usr_flow_ptr, + ctrl_token->internal_flow_ptr, + sizeof(struct pme_flow)); + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + } + ctrl_token->cb(ctx, fd, ctrl_token); + } + /* Consume the frame */ + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) + release_exclusive(ctx); + if (atomic_dec_and_test(&ctx->refs)) + wake_up(&ctx->queue); +} + +/* TODO: this scheme does not allow PME receivers to use held-active at all. Eg. + * there's no configuration of held-active for 'fq', and if there was, there's + * (a) nothing in the cb_dqrr() to support "park" or "defer" logic, and (b) + * nothing in cb_fqs() to support a delayed FQPN (DCAP_PK) notification. */ +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *portal, + struct qman_fq *fq, const struct qm_dqrr_entry *dq) +{ + u8 status = (u8)pme_fd_res_status(&dq->fd); + u8 flags = pme_fd_res_flags(&dq->fd); + struct pme_ctx *ctx = (struct pme_ctx *)fq; + + /* Put context into dead state is an unreliable or serious error is + * received + */ + if (unlikely(flags & PME_STATUS_UNRELIABLE)) + cb_helper(portal, ctx, &dq->fd, 1); + else if (unlikely((serious_error_vec[status]))) + cb_helper(portal, ctx, &dq->fd, 1); + else + cb_helper(portal, ctx, &dq->fd, 0); + + return qman_cb_dqrr_consume; +} + +static void cb_ern(__always_unused struct qman_portal *portal, + struct qman_fq *fq, const struct qm_mr_entry *mr) +{ + struct pme_ctx *ctx; + struct pme_nostash *data; + struct pme_ctx_token *token; + + data = container_of(fq, struct pme_nostash, fqin); + ctx = data->parent; + + token = pop_matching_token(ctx, &mr->ern.fd); + if (likely(token->cmd_type == pme_cmd_scan)) { + BUG_ON(!ctx->ern_cb); + ctx->ern_cb(ctx, mr, token); + } else if (token->cmd_type == pme_cmd_pmtcc) { + BUG_ON(!ctx->ern_cb); + ctx->ern_cb(ctx, mr, token); + } else { + struct pme_ctx_ctrl_token *ctrl_token; + /* outcast ctx and call supplied callback */ + ctrl_token = container_of(token, struct pme_ctx_ctrl_token, + base_token); + if (token->cmd_type == pme_cmd_flow_write) { + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + } else if (token->cmd_type == pme_cmd_flow_read) { + /* Copy read result */ + memcpy(ctrl_token->usr_flow_ptr, + ctrl_token->internal_flow_ptr, + sizeof(struct pme_flow)); + /* Release the allocated flow context */ + pme_hw_flow_free(ctrl_token->internal_flow_ptr); + } + BUG_ON(!ctrl_token->ern_cb); + ctrl_token->ern_cb(ctx, mr, ctrl_token); + } + /* Consume the frame */ + if (ctx->flags & PME_CTX_FLAG_EXCLUSIVE) + release_exclusive(ctx); + if (atomic_dec_and_test(&ctx->refs)) + wake_up(&ctx->queue); +} + +static void cb_dc_ern(struct qman_portal *portal, struct qman_fq *fq, + const struct qm_mr_entry *mr) +{ + struct pme_ctx *ctx = (struct pme_ctx *)fq; + /* This, umm, *shouldn't* happen. It's pretty bad. Things are expected + * to fall apart here, but we'll continue long enough to get out of + * interrupt context and let the user unwind whatever they can. */ + pr_err("PME2 h/w enqueue rejection - expect catastrophe!\n"); + cb_helper(portal, ctx, &mr->dcern.fd, 1); +} + +static void cb_fqs(__always_unused struct qman_portal *portal, + __always_unused struct qman_fq *fq, + const struct qm_mr_entry *mr) +{ + u8 verb = mr->verb & QM_MR_VERB_TYPE_MASK; + if (verb == QM_MR_VERB_FQRNI) + return; + /* nothing else is supposed to occur */ + BUG(); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_regs.h +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_regs.h @@ -0,0 +1,173 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef PME2_REGS_H +#define PME2_REGS_H + +#define PME_REG_ISR 0x000 +#define PME_REG_IER 0x004 +#define PME_REG_ISDR 0x008 +#define PME_REG_IIR 0x00C +#define PME_REG_RLL 0x014 +#define PME_REG_CDCR 0x018 +#define PME_REG_TRUNCI 0x024 +#define PME_REG_RBC 0x028 +#define PME_REG_ESR 0x02C +#define PME_REG_ECR0 0x030 +#define PME_REG_ECR1 0x034 +#define PME_REG_EFQC 0x050 +#define PME_REG_FACONF 0x060 +#define PME_REG_PMSTAT 0x064 +#define PME_REG_FAMCR 0x068 +#define PME_REG_PMTR 0x06C +#define PME_REG_PEHD 0x074 +#define PME_REG_BSC0 0x080 +#define PME_REG_BSC1 0x084 +#define PME_REG_BSC2 0x088 +#define PME_REG_BSC3 0x08C +#define PME_REG_BSC4 0x090 +#define PME_REG_BSC5 0x094 +#define PME_REG_BSC6 0x098 +#define PME_REG_BSC7 0x09C +#define PME_REG_QMBFD0 0x0E0 +#define PME_REG_QMBFD1 0x0E4 +#define PME_REG_QMBFD2 0x0E8 +#define PME_REG_QMBFD3 0x0EC +#define PME_REG_QMBCTXTAH 0x0F0 +#define PME_REG_QMBCTXTAL 0x0F4 +#define PME_REG_QMBCTXTB 0x0F8 +#define PME_REG_QMBCTL 0x0FC +#define PME_REG_ECC1BES 0x100 +#define PME_REG_ECC2BES 0x104 +#define PME_REG_ECCADDR 0x110 +#define PME_REG_ECCCODE 0x118 +#define PME_REG_TBT0ECC1TH 0x180 +#define PME_REG_TBT0ECC1EC 0x184 +#define PME_REG_TBT1ECC1TH 0x188 +#define PME_REG_TBT1ECC1EC 0x18C +#define PME_REG_VLT0ECC1TH 0x190 +#define PME_REG_VLT0ECC1EC 0x194 +#define PME_REG_VLT1ECC1TH 0x198 +#define PME_REG_VLT1ECC1EC 0x19C +#define PME_REG_CMECC1TH 0x1A0 +#define PME_REG_CMECC1EC 0x1A4 +#define PME_REG_DXCMECC1TH 0x1B0 +#define PME_REG_DXCMECC1EC 0x1B4 +#define PME_REG_DXEMECC1TH 0x1C0 +#define PME_REG_DXEMECC1EC 0x1C4 +#define PME_REG_STNIB 0x200 +#define PME_REG_STNIS 0x204 +#define PME_REG_STNTH1 0x208 +#define PME_REG_STNTH2 0x20C +#define PME_REG_STNTHV 0x210 +#define PME_REG_STNTHS 0x214 +#define PME_REG_STNCH 0x218 +#define PME_REG_SWDB 0x21C +#define PME_REG_KVLTS 0x220 +#define PME_REG_KEC 0x224 +#define PME_REG_STNPM 0x280 +#define PME_REG_STNS1M 0x284 +#define PME_REG_DRCIC 0x288 +#define PME_REG_DRCMC 0x28C +#define PME_REG_STNPMR 0x290 +#define PME_REG_PDSRBAH 0x2A0 +#define PME_REG_PDSRBAL 0x2A4 +#define PME_REG_DMCR 0x2A8 +#define PME_REG_DEC0 0x2AC +#define PME_REG_DEC1 0x2B0 +#define PME_REG_DLC 0x2C0 +#define PME_REG_STNDSR 0x300 +#define PME_REG_STNESR 0x304 +#define PME_REG_STNS1R 0x308 +#define PME_REG_STNOB 0x30C +#define PME_REG_SCBARH 0x310 +#define PME_REG_SCBARL 0x314 +#define PME_REG_SMCR 0x318 +#define PME_REG_SREC 0x320 +#define PME_REG_ESRP 0x328 +#define PME_REG_SRRV0 0x338 +#define PME_REG_SRRV1 0x33C +#define PME_REG_SRRV2 0x340 +#define PME_REG_SRRV3 0x344 +#define PME_REG_SRRV4 0x348 +#define PME_REG_SRRV5 0x34C +#define PME_REG_SRRV6 0x350 +#define PME_REG_SRRV7 0x354 +#define PME_REG_SRRFI 0x358 +#define PME_REG_SRRI 0x360 +#define PME_REG_SRRR 0x364 +#define PME_REG_SRRWC 0x368 +#define PME_REG_SFRCC 0x36C +#define PME_REG_SEC1 0x370 +#define PME_REG_SEC2 0x374 +#define PME_REG_SEC3 0x378 +#define PME_REG_MIA_BYC 0x380 +#define PME_REG_MIA_BLC 0x384 +#define PME_REG_MIA_CE 0x388 +#define PME_REG_MIA_CR 0x390 +#define PME_REG_PPIDMR0 0x800 +#define PME_REG_PPIDMR1 0x804 +#define PME_REG_PPIDMR2 0x808 +#define PME_REG_PPIDMR3 0x80C +#define PME_REG_PPIDMR4 0x810 +#define PME_REG_PPIDMR5 0x814 +#define PME_REG_PPIDMR6 0x818 +#define PME_REG_PPIDMR7 0x81C +#define PME_REG_PPIDMR8 0x820 +#define PME_REG_PPIDMR9 0x824 +#define PME_REG_PPIDMR10 0x828 +#define PME_REG_PPIDMR11 0x82C +#define PME_REG_PPIDMR12 0x830 +#define PME_REG_PPIDMR13 0x834 +#define PME_REG_PPIDMR14 0x838 +#define PME_REG_PPIDMR15 0x83C +#define PME_REG_PPIDMR16 0x840 +#define PME_REG_PPIDMR17 0x844 +#define PME_REG_PPIDMR18 0x848 +#define PME_REG_PPIDMR19 0x84C +#define PME_REG_PPIDMR20 0x850 +#define PME_REG_PPIDMR21 0x854 +#define PME_REG_PPIDMR22 0x858 +#define PME_REG_PPIDMR23 0x85C +#define PME_REG_PPIDMR24 0x860 +#define PME_REG_PPIDMR25 0x864 +#define PME_REG_PPIDMR26 0x868 +#define PME_REG_PPIDMR27 0x86C +#define PME_REG_PPIDMR28 0x870 +#define PME_REG_PPIDMR29 0x874 +#define PME_REG_PPIDMR30 0x878 +#define PME_REG_PPIDMR31 0x87C +#define PME_REG_SRCIDR 0xA00 +#define PME_REG_LIODNR 0xA0C +#define PME_REG_PM_IP_REV1 0xBF8 +#define PME_REG_PM_IP_REV2 0xBFC + +#endif /* REGS_H */ --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_db.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_db.c @@ -0,0 +1,572 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_private.h" +#include + +/* Forward declaration */ +static struct miscdevice fsl_pme2_db_dev; + +/* Global spinlock for handling exclusive inc/dec */ +static DEFINE_SPINLOCK(exclusive_lock); + +/* Private structure that is allocated for each open that is done on the + * pme_db device. This is used to maintain the state of a database session */ +struct db_session { + /* The ctx that is needed to communicate with the pme high level */ + struct pme_ctx ctx; + /* Used to track the EXCLUSIVE_INC and EXCLUSIVE_DEC ioctls */ + unsigned int exclusive_counter; +}; + +struct cmd_token { + /* pme high level token */ + struct pme_ctx_token hl_token; + /* data */ + struct qm_fd rx_fd; + /* Completion interface */ + struct completion cb_done; + u8 ern; +}; + +#ifdef CONFIG_COMPAT +static void compat_to_db(struct pme_db *dst, struct compat_pme_db *src) +{ + dst->flags = src->flags; + dst->status = src->status; + dst->input.data = compat_ptr(src->input.data); + dst->input.size = src->input.size; + dst->output.data = compat_ptr(src->output.data); + dst->output.size = src->output.size; +} + +static void db_to_compat(struct compat_pme_db *dst, struct pme_db *src) +{ + dst->flags = src->flags; + dst->status = src->status; + dst->output.data = ptr_to_compat(src->output.data); + dst->output.size = src->output.size; + dst->input.data = ptr_to_compat(src->input.data); + dst->input.size = src->input.size; +} +#endif + +/* PME Compound Frame Index */ +#define INPUT_FRM 1 +#define OUTPUT_FRM 0 + +/* Callback for database operations */ +static void db_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + token->rx_fd = *fd; + complete(&token->cb_done); +} + +static void db_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + token->ern = 1; + token->rx_fd = mr->ern.fd; + complete(&token->cb_done); +} + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; + u8 ern; +}; + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd) & PME_STATUS_UNRELIABLE; + complete(&ctrl->cb_done); +} + +static void ctrl_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->ern = 1; + complete(&ctrl->cb_done); +} + +static int exclusive_inc(struct file *fp, struct db_session *db) +{ + int ret; + + BUG_ON(!db); + BUG_ON(!(db->ctx.flags & PME_CTX_FLAG_EXCLUSIVE)); + spin_lock(&exclusive_lock); + ret = pme_ctx_exclusive_inc(&db->ctx, + (PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT)); + if (!ret) + db->exclusive_counter++; + spin_unlock(&exclusive_lock); + return ret; +} + +static int exclusive_dec(struct file *fp, struct db_session *db) +{ + int ret = 0; + + BUG_ON(!db); + BUG_ON(!(db->ctx.flags & PME_CTX_FLAG_EXCLUSIVE)); + spin_lock(&exclusive_lock); + if (!db->exclusive_counter) { + PMEPRERR("exclusivity counter already zero\n"); + ret = -EINVAL; + } else { + pme_ctx_exclusive_dec(&db->ctx); + db->exclusive_counter--; + } + spin_unlock(&exclusive_lock); + return ret; +} + +static int execute_cmd(struct file *fp, struct db_session *db, + struct pme_db *db_cmd) +{ + int ret = 0; + struct cmd_token token; + struct qm_sg_entry tx_comp[2]; + struct qm_fd tx_fd; + void *tx_data = NULL; + void *rx_data = NULL; + u32 src_sz, dst_sz; + dma_addr_t dma_addr; + + memset(&token, 0, sizeof(struct cmd_token)); + memset(tx_comp, 0, sizeof(tx_comp)); + memset(&tx_fd, 0, sizeof(struct qm_fd)); + init_completion(&token.cb_done); + + PMEPRINFO("Received User Space Contiguous mem\n"); + PMEPRINFO("length = %d\n", db_cmd->input.size); + tx_data = kmalloc(db_cmd->input.size, GFP_KERNEL); + if (!tx_data) { + PMEPRERR("Err alloc %zd byte\n", db_cmd->input.size); + return -ENOMEM; + } + + if (copy_from_user(tx_data, + (void __user *)db_cmd->input.data, + db_cmd->input.size)) { + PMEPRERR("Error copying contigous user data\n"); + ret = -EFAULT; + goto free_tx_data; + } + + /* Setup input frame */ + tx_comp[INPUT_FRM].final = 1; + tx_comp[INPUT_FRM].length = db_cmd->input.size; + dma_addr = pme_map(tx_data); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto free_tx_data; + } + set_sg_addr(&tx_comp[INPUT_FRM], dma_addr); + /* setup output frame, if output is expected */ + if (db_cmd->output.size) { + PMEPRINFO("expect output %d\n", db_cmd->output.size); + rx_data = kmalloc(db_cmd->output.size, GFP_KERNEL); + if (!rx_data) { + PMEPRERR("Err alloc %zd byte", db_cmd->output.size); + ret = -ENOMEM; + goto unmap_input_frame; + } + /* Setup output frame */ + tx_comp[OUTPUT_FRM].length = db_cmd->output.size; + dma_addr = pme_map(rx_data); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto comp_frame_free_rx; + } + set_sg_addr(&tx_comp[OUTPUT_FRM], dma_addr); + tx_fd.format = qm_fd_compound; + /* Build compound frame */ + dma_addr = pme_map(tx_comp); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto comp_frame_unmap_output; + } + set_fd_addr(&tx_fd, dma_addr); + } else { + tx_fd.format = qm_fd_sg_big; + tx_fd.length29 = db_cmd->input.size; + /* Build sg frame */ + dma_addr = pme_map(&tx_comp[INPUT_FRM]); + if (pme_map_error(dma_addr)) { + PMEPRERR("Error pme_map_error\n"); + ret = -EIO; + goto unmap_input_frame; + } + set_fd_addr(&tx_fd, dma_addr); + } + ret = pme_ctx_pmtcc(&db->ctx, PME_CTX_OP_WAIT, &tx_fd, + (struct pme_ctx_token *)&token); + if (unlikely(ret)) { + PMEPRINFO("pme_ctx_pmtcc error %d\n", ret); + goto unmap_frame; + } + PMEPRINFO("Wait for completion\n"); + /* Wait for the command to complete */ + wait_for_completion(&token.cb_done); + + if (token.ern) { + ret = -EIO; + goto unmap_frame; + } + + PMEPRINFO("pme2_db: process_completed_token\n"); + PMEPRINFO("pme2_db: received %d frame type\n", token.rx_fd.format); + if (token.rx_fd.format == qm_fd_compound) { + /* Need to copy output */ + src_sz = tx_comp[OUTPUT_FRM].length; + dst_sz = db_cmd->output.size; + PMEPRINFO("pme gen %u data, have space for %u\n", + src_sz, dst_sz); + db_cmd->output.size = min(dst_sz, src_sz); + /* Doesn't make sense we generated more than available space + * should have got truncation. + */ + BUG_ON(dst_sz < src_sz); + if (copy_to_user((void __user *)db_cmd->output.data, rx_data, + db_cmd->output.size)) { + PMEPRERR("Error copying to user data\n"); + ret = -EFAULT; + goto comp_frame_unmap_cf; + } + } else if (token.rx_fd.format == qm_fd_sg_big) + db_cmd->output.size = 0; + else + panic("unexpected frame type received %d\n", + token.rx_fd.format); + + db_cmd->flags = pme_fd_res_flags(&token.rx_fd); + db_cmd->status = pme_fd_res_status(&token.rx_fd); + +unmap_frame: + if (token.rx_fd.format == qm_fd_sg_big) + goto single_frame_unmap_frame; + +comp_frame_unmap_cf: +comp_frame_unmap_output: +comp_frame_free_rx: + kfree(rx_data); + goto unmap_input_frame; +single_frame_unmap_frame: +unmap_input_frame: +free_tx_data: + kfree(tx_data); + + return ret; +} + +static int execute_nop(struct file *fp, struct db_session *db) +{ + int ret = 0; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb + }; + init_completion(&ctx_ctrl.cb_done); + + ret = pme_ctx_ctrl_nop(&db->ctx, PME_CTX_OP_WAIT|PME_CTX_OP_WAIT_INT, + &ctx_ctrl.ctx_ctr); + if (!ret) + wait_for_completion(&ctx_ctrl.cb_done); + + if (ctx_ctrl.ern) + ret = -EIO; + return ret; +} + +static atomic_t sre_reset_lock = ATOMIC_INIT(1); +static int ioctl_sre_reset(unsigned long arg) +{ + struct pme_db_sre_reset reset_vals; + int i; + u32 srrr_val; + int ret = 0; + + if (copy_from_user(&reset_vals, (struct pme_db_sre_reset __user *)arg, + sizeof(struct pme_db_sre_reset))) + return -EFAULT; + PMEPRINFO("sre_reset:\n"); + PMEPRINFO(" rule_index = 0x%x:\n", reset_vals.rule_index); + PMEPRINFO(" rule_increment = 0x%x:\n", reset_vals.rule_increment); + PMEPRINFO(" rule_repetitions = 0x%x:\n", reset_vals.rule_repetitions); + PMEPRINFO(" rule_reset_interval = 0x%x:\n", + reset_vals.rule_reset_interval); + PMEPRINFO(" rule_reset_priority = 0x%x:\n", + reset_vals.rule_reset_priority); + + /* Validate ranges */ + if ((reset_vals.rule_index >= PME_PMFA_SRE_INDEX_MAX) || + (reset_vals.rule_increment > PME_PMFA_SRE_INC_MAX) || + (reset_vals.rule_repetitions >= PME_PMFA_SRE_REP_MAX) || + (reset_vals.rule_reset_interval >= + PME_PMFA_SRE_INTERVAL_MAX)) + return -ERANGE; + /* Check and make sure only one caller is present */ + if (!atomic_dec_and_test(&sre_reset_lock)) { + /* Someone else is already in this call */ + atomic_inc(&sre_reset_lock); + return -EBUSY; + }; + /* All validated. Run the command */ + for (i = 0; i < PME_SRE_RULE_VECTOR_SIZE; i++) + pme_attr_set(pme_attr_srrv0 + i, reset_vals.rule_vector[i]); + pme_attr_set(pme_attr_srrfi, reset_vals.rule_index); + pme_attr_set(pme_attr_srri, reset_vals.rule_increment); + pme_attr_set(pme_attr_srrwc, + (0xFFF & reset_vals.rule_reset_interval) << 1 | + (reset_vals.rule_reset_priority ? 1 : 0)); + /* Need to set SRRR last */ + pme_attr_set(pme_attr_srrr, reset_vals.rule_repetitions); + do { + mdelay(PME_PMFA_SRE_POLL_MS); + ret = pme_attr_get(pme_attr_srrr, &srrr_val); + if (ret) { + PMEPRCRIT("pme2: Error reading srrr\n"); + /* bail */ + break; + } + /* Check for error */ + else if (srrr_val & 0x10000000) { + PMEPRERR("pme2: Error in SRRR\n"); + ret = -EIO; + } + PMEPRINFO("pme2: srrr count %d\n", srrr_val); + } while (srrr_val); + atomic_inc(&sre_reset_lock); + return ret; +} + +/** + * fsl_pme2_db_open - open the driver + * + * Open the driver and prepare for requests. + * + * Every time an application opens the driver, we create a db_session object + * for that file handle. + */ +static int fsl_pme2_db_open(struct inode *node, struct file *fp) +{ + int ret; + struct db_session *db = NULL; + + db = kzalloc(sizeof(struct db_session), GFP_KERNEL); + if (!db) + return -ENOMEM; + fp->private_data = db; + db->ctx.cb = db_cb; + db->ctx.ern_cb = db_ern_cb; + + ret = pme_ctx_init(&db->ctx, + PME_CTX_FLAG_EXCLUSIVE | + PME_CTX_FLAG_PMTCC | + PME_CTX_FLAG_DIRECT| + PME_CTX_FLAG_LOCAL, + 0, 4, CONFIG_FSL_PME2_DB_QOSOUT_PRIORITY, 0, NULL); + if (ret) { + PMEPRERR("pme_ctx_init %d\n", ret); + goto free_data; + } + + /* enable the context */ + ret = pme_ctx_enable(&db->ctx); + if (ret) { + PMEPRERR("error enabling ctx %d\n", ret); + pme_ctx_finish(&db->ctx); + goto free_data; + } + PMEPRINFO("pme2_db: Finish pme_db open %d\n", smp_processor_id()); + return 0; +free_data: + kfree(fp->private_data); + fp->private_data = NULL; + return ret; +} + +static int fsl_pme2_db_close(struct inode *node, struct file *fp) +{ + int ret = 0; + struct db_session *db = fp->private_data; + + PMEPRINFO("Start pme_db close\n"); + while (db->exclusive_counter) { + pme_ctx_exclusive_dec(&db->ctx); + db->exclusive_counter--; + } + + /* Disable context. */ + ret = pme_ctx_disable(&db->ctx, PME_CTX_OP_WAIT, NULL); + if (ret) + PMEPRCRIT("Error disabling ctx %d\n", ret); + pme_ctx_finish(&db->ctx); + kfree(db); + PMEPRINFO("Finish pme_db close\n"); + return 0; +} + +/* Main switch loop for ioctl operations */ +static long fsl_pme2_db_ioctl(struct file *fp, unsigned int cmd, + unsigned long arg) +{ + struct db_session *db = fp->private_data; + int ret = 0; + + switch (cmd) { + + case PMEIO_PMTCC: { + int ret; + struct pme_db db_cmd; + + /* Copy the command to kernel space */ + if (copy_from_user(&db_cmd, (void __user *)arg, + sizeof(db_cmd))) + return -EFAULT; + ret = execute_cmd(fp, db, &db_cmd); + if (!ret) + ret = copy_to_user((struct pme_db __user *)arg, + &db_cmd, sizeof(db_cmd)); + return ret; + } + break; + + case PMEIO_EXL_INC: + return exclusive_inc(fp, db); + case PMEIO_EXL_DEC: + return exclusive_dec(fp, db); + case PMEIO_EXL_GET: + BUG_ON(!db); + BUG_ON(!(db->ctx.flags & PME_CTX_FLAG_EXCLUSIVE)); + if (copy_to_user((void __user *)arg, + &db->exclusive_counter, + sizeof(db->exclusive_counter))) + ret = -EFAULT; + return ret; + case PMEIO_NOP: + return execute_nop(fp, db); + case PMEIO_SRE_RESET: + return ioctl_sre_reset(arg); + +#ifdef CONFIG_COMPAT + case PMEIO_PMTCC32: { + int ret; + struct pme_db db_cmd; + struct compat_pme_db db_cmd32; + struct compat_pme_db __user *user_db_cmd = compat_ptr(arg); + + /* Copy the command to kernel space */ + if (copy_from_user(&db_cmd32, user_db_cmd, sizeof(db_cmd32))) + return -EFAULT; + /* Convert to 64-bit struct */ + compat_to_db(&db_cmd, &db_cmd32); + ret = execute_cmd(fp, db, &db_cmd); + if (!ret) { + /* Convert to compat struct */ + db_to_compat(&db_cmd32, &db_cmd); + ret = copy_to_user(user_db_cmd, &db_cmd32, + sizeof(*user_db_cmd)); + } + return ret; + } + break; +#endif + } + pr_info("Unknown pme_db ioctl cmd %u\n", cmd); + return -EINVAL; +} + +static const struct file_operations fsl_pme2_db_fops = { + .owner = THIS_MODULE, + .open = fsl_pme2_db_open, + .release = fsl_pme2_db_close, + .unlocked_ioctl = fsl_pme2_db_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fsl_pme2_db_ioctl, +#endif +}; + +static struct miscdevice fsl_pme2_db_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = PME_DEV_DB_NODE, + .fops = &fsl_pme2_db_fops +}; + +static int __init fsl_pme2_db_init(void) +{ + int err = 0; + + pr_info("Freescale pme2 db driver\n"); + if (!pme2_have_control()) { + PMEPRERR("not on ctrl-plane\n"); + return -ENODEV; + } + err = misc_register(&fsl_pme2_db_dev); + if (err) { + PMEPRERR("cannot register device\n"); + return err; + } + PMEPRINFO("device %s registered\n", fsl_pme2_db_dev.name); + return 0; +} + +static void __exit fsl_pme2_db_exit(void) +{ + int err = misc_deregister(&fsl_pme2_db_dev); + if (err) { + PMEPRERR("Failed to deregister device %s, " + "code %d\n", fsl_pme2_db_dev.name, err); + return; + } + PMEPRINFO("device %s deregistered\n", fsl_pme2_db_dev.name); +} + +module_init(fsl_pme2_db_init); +module_exit(fsl_pme2_db_exit); + +MODULE_AUTHOR("Freescale Semiconductor - OTC"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 db driver"); --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_low.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_low.c @@ -0,0 +1,276 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_private.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 (p4080) device usage"); + +#define PME_RESIDUE_SIZE 128 +#define PME_RESIDUE_ALIGN 64 +#define PME_FLOW_SIZE sizeof(struct pme_flow) +#define PME_FLOW_ALIGN 32 +static struct kmem_cache *slab_residue; +static struct kmem_cache *slab_flow; +static struct kmem_cache *slab_fq; + +/* Hack to support "pme_map()". The point of this is that dma_map_single() now + * requires a non-NULL device, so the idea is that address mapping must be + * device-sensitive. Now the PAMU IO-MMU already takes care of this, as can be + * seen by the device-tree structure generated by the hypervisor (each portal + * node has sub-nodes for each h/w end-point it provides access to, and each + * sub-node has its own LIODN configuration). So we just need to map cpu + * pointers to (guest-)physical address and the PAMU takes care of the rest, so + * this doesn't need to be portal-sensitive nor device-sensitive. */ +static struct platform_device *pdev; + +static int pme2_low_init(void) +{ + int ret = -ENOMEM; + + slab_residue = kmem_cache_create("pme2_residue", PME_RESIDUE_SIZE, + PME_RESIDUE_ALIGN, SLAB_HWCACHE_ALIGN, NULL); + if (!slab_residue) + goto end; + slab_flow = kmem_cache_create("pme2_flow", PME_FLOW_SIZE, + PME_FLOW_ALIGN, 0, NULL); + if (!slab_flow) + goto end; + slab_fq = kmem_cache_create("pme2_fqslab", sizeof(struct qman_fq), + __alignof__(struct qman_fq), SLAB_HWCACHE_ALIGN, NULL); + if (!slab_fq) + goto end; + ret = -ENODEV; + pdev = platform_device_alloc("pme", -1); + if (!pdev) + goto end; + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(40))) + goto end; + if (platform_device_add(pdev)) + goto end; + return 0; +end: + if (pdev) { + platform_device_put(pdev); + pdev = NULL; + } + if (slab_flow) { + kmem_cache_destroy(slab_flow); + slab_flow = NULL; + } + if (slab_residue) { + kmem_cache_destroy(slab_residue); + slab_residue = NULL; + } + if (slab_fq) { + kmem_cache_destroy(slab_fq); + slab_fq = NULL; + } + return ret; +} + +static void pme2_low_exit(void) +{ + platform_device_del(pdev); + platform_device_put(pdev); + pdev = NULL; + kmem_cache_destroy(slab_fq); + kmem_cache_destroy(slab_flow); + kmem_cache_destroy(slab_residue); + slab_fq = slab_flow = slab_residue = NULL; +} + +module_init(pme2_low_init); +module_exit(pme2_low_exit); + +struct qman_fq *slabfq_alloc(void) +{ + return kmem_cache_alloc(slab_fq, GFP_KERNEL); +} + +void slabfq_free(struct qman_fq *fq) +{ + kmem_cache_free(slab_fq, fq); +} + +/***********************/ +/* low-level functions */ +/***********************/ + +struct pme_hw_residue *pme_hw_residue_new(void) +{ + return kmem_cache_alloc(slab_residue, GFP_KERNEL); +} +EXPORT_SYMBOL(pme_hw_residue_new); + +void pme_hw_residue_free(struct pme_hw_residue *p) +{ + kmem_cache_free(slab_residue, p); +} +EXPORT_SYMBOL(pme_hw_residue_free); + +struct pme_hw_flow *pme_hw_flow_new(void) +{ + struct pme_flow *flow = kmem_cache_zalloc(slab_flow, GFP_KERNEL); + return (struct pme_hw_flow *)flow; +} +EXPORT_SYMBOL(pme_hw_flow_new); + +void pme_hw_flow_free(struct pme_hw_flow *p) +{ + kmem_cache_free(slab_flow, p); +} +EXPORT_SYMBOL(pme_hw_flow_free); + +static const struct pme_flow default_sw_flow = { + .sos = 1, + .srvm = 0, + .esee = 1, + .ren = 0, + .rlen = 0, + .seqnum_hi = 0, + .seqnum_lo = 0, + .sessionid = 0x7ffffff, + .rptr_hi = 0, + .rptr_lo = 0, + .clim = 0xffff, + .mlim = 0xffff +}; + +void pme_sw_flow_init(struct pme_flow *flow) +{ + memcpy(flow, &default_sw_flow, sizeof(*flow)); +} +EXPORT_SYMBOL(pme_sw_flow_init); + +void pme_initfq(struct qm_mcc_initfq *initfq, struct pme_hw_flow *flow, u8 qos, + u8 rbpid, u32 rfqid) +{ + struct pme_context_a *pme_a = + (struct pme_context_a *)&initfq->fqd.context_a; + struct pme_context_b *pme_b = + (struct pme_context_b *)&initfq->fqd.context_b; + + initfq->we_mask = QM_INITFQ_WE_DESTWQ | QM_INITFQ_WE_CONTEXTA | + QM_INITFQ_WE_CONTEXTB; + initfq->fqd.dest.channel = qm_channel_pme; + initfq->fqd.dest.wq = qos; + if (flow) { + dma_addr_t fcp = flow_map((struct pme_flow *)flow); + pme_a->mode = pme_mode_flow; + pme_context_a_set64(pme_a, fcp); + } else { + pme_a->mode = pme_mode_direct; + pme_context_a_set64(pme_a, 0); + } + pme_b->rbpid = rbpid; + pme_b->rfqid = rfqid; +} +EXPORT_SYMBOL(pme_initfq); + +void pme_fd_cmd_nop(struct qm_fd *fd) +{ + struct pme_cmd_nop *nop = (struct pme_cmd_nop *)&fd->cmd; + nop->cmd = pme_cmd_nop; +} +EXPORT_SYMBOL(pme_fd_cmd_nop); + +void pme_fd_cmd_fcw(struct qm_fd *fd, u8 flags, struct pme_flow *flow, + struct pme_hw_residue *residue) +{ + dma_addr_t f; + struct pme_cmd_flow_write *fcw = (struct pme_cmd_flow_write *)&fd->cmd; + + BUG_ON(!flow); + BUG_ON((unsigned long)flow & 31); + fcw->cmd = pme_cmd_flow_write; + fcw->flags = flags; + if (flags & PME_CMD_FCW_RES) { + if (residue) { + dma_addr_t rptr = residue_map(residue); + BUG_ON(!residue); + BUG_ON((unsigned long)residue & 63); + pme_flow_rptr_set64(flow, rptr); + } else + pme_flow_rptr_set64(flow, 0); + } + f = flow_map(flow); + qm_fd_addr_set64(fd, f); + fd->format = qm_fd_contig; + fd->offset = 0; + fd->length20 = sizeof(*flow); +} +EXPORT_SYMBOL(pme_fd_cmd_fcw); + +void pme_fd_cmd_fcr(struct qm_fd *fd, struct pme_flow *flow) +{ + dma_addr_t f; + struct pme_cmd_flow_read *fcr = (struct pme_cmd_flow_read *)&fd->cmd; + + BUG_ON(!flow); + BUG_ON((unsigned long)flow & 31); + fcr->cmd = pme_cmd_flow_read; + f = flow_map(flow); + qm_fd_addr_set64(fd, f); + fd->format = qm_fd_contig; + fd->offset = 0; + fd->length20 = sizeof(*flow); +} +EXPORT_SYMBOL(pme_fd_cmd_fcr); + +void pme_fd_cmd_pmtcc(struct qm_fd *fd) +{ + struct pme_cmd_pmtcc *pmtcc = (struct pme_cmd_pmtcc *)&fd->cmd; + pmtcc->cmd = pme_cmd_pmtcc; +} +EXPORT_SYMBOL(pme_fd_cmd_pmtcc); + +void pme_fd_cmd_scan(struct qm_fd *fd, u32 args) +{ + struct pme_cmd_scan *scan = (struct pme_cmd_scan *)&fd->cmd; + fd->cmd = args; + scan->cmd = pme_cmd_scan; +} +EXPORT_SYMBOL(pme_fd_cmd_scan); + +dma_addr_t pme_map(void *ptr) +{ + return dma_map_single(&pdev->dev, ptr, 1, DMA_BIDIRECTIONAL); +} +EXPORT_SYMBOL(pme_map); + +int pme_map_error(dma_addr_t dma_addr) +{ + return dma_mapping_error(&pdev->dev, dma_addr); +} +EXPORT_SYMBOL(pme_map_error); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_private.h +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_private.h @@ -0,0 +1,180 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_sys.h" +#include + +#undef PME2_DEBUG + +#ifdef PME2_DEBUG +#define PMEPRINFO(fmt, args...) pr_info("PME2: %s: " fmt, __func__, ## args) +#else +#define PMEPRINFO(fmt, args...) +#endif + +#define PMEPRERR(fmt, args...) pr_err("PME2: %s: " fmt, __func__, ## args) +#define PMEPRCRIT(fmt, args...) pr_crit("PME2: %s: " fmt, __func__, ## args) + +#ifdef CONFIG_FSL_PME2_CTRL +/* Hooks */ +int pme2_create_sysfs_dev_files(struct platform_device *ofdev); +void pme2_remove_sysfs_dev_files(struct platform_device *ofdev); +void accumulator_update_interval(u32 interval); +#endif + +static inline void set_fd_addr(struct qm_fd *fd, dma_addr_t addr) +{ + qm_fd_addr_set64(fd, addr); +} +static inline dma_addr_t get_fd_addr(const struct qm_fd *fd) +{ + return (dma_addr_t)qm_fd_addr_get64(fd); +} +static inline void set_sg_addr(struct qm_sg_entry *sg, dma_addr_t addr) +{ + qm_sg_entry_set64(sg, addr); +} +static inline dma_addr_t get_sg_addr(const struct qm_sg_entry *sg) +{ + return (dma_addr_t)qm_sg_entry_get64(sg); +} + +/******************/ +/* Datapath types */ +/******************/ + +enum pme_mode { + pme_mode_direct = 0x00, + pme_mode_flow = 0x80 +}; + +struct pme_context_a { + enum pme_mode mode:8; + u8 __reserved; + /* Flow Context pointer (48-bit), ignored if mode==direct */ + u16 flow_hi; + u32 flow_lo; +} __packed; +static inline u64 pme_context_a_get64(const struct pme_context_a *p) +{ + return ((u64)p->flow_hi << 32) | (u64)p->flow_lo; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +#define pme_context_a_set64(p, v) \ + do { \ + struct pme_context_a *__p931 = (p); \ + __p931->flow_hi = upper_32_bits(v); \ + __p931->flow_lo = lower_32_bits(v); \ + } while (0) + +struct pme_context_b { + u32 rbpid:8; + u32 rfqid:24; +} __packed; + + +/* This is the 32-bit frame "cmd/status" field, sent to PME */ +union pme_cmd { + struct pme_cmd_nop { + enum pme_cmd_type cmd:3; + } nop; + struct pme_cmd_flow_read { + enum pme_cmd_type cmd:3; + } fcr; + struct pme_cmd_flow_write { + enum pme_cmd_type cmd:3; + u8 __reserved:5; + u8 flags; /* See PME_CMD_FCW_*** */ + } __packed fcw; + struct pme_cmd_pmtcc { + enum pme_cmd_type cmd:3; + } pmtcc; + struct pme_cmd_scan { + union { + struct { + enum pme_cmd_type cmd:3; + u8 flags:5; /* See PME_CMD_SCAN_*** */ + } __packed; + }; + u8 set; + u16 subset; + } __packed scan; +}; + +/* The exported macro forms a "scan_args" u32 from 3 inputs, these private + * inlines do the inverse, if you need to crack one apart. */ +static inline u8 scan_args_get_flags(u32 args) +{ + return args >> 24; +} +static inline u8 scan_args_get_set(u32 args) +{ + return (args >> 16) & 0xff; +} +static inline u16 scan_args_get_subset(u32 args) +{ + return args & 0xffff; +} + +/* Hook from pme2_high to pme2_low */ +struct qman_fq *slabfq_alloc(void); +void slabfq_free(struct qman_fq *fq); + +/* Hook from pme2_high to pme2_ctrl */ +int pme2_have_control(void); +int pme2_exclusive_set(struct qman_fq *fq); +int pme2_exclusive_unset(void); + +#define DECLARE_GLOBAL(name, t, mt, def, desc) \ + static t name = def; \ + module_param(name, mt, 0644); \ + MODULE_PARM_DESC(name, desc ", default: " __stringify(def)); + +/* Constants used by the SRE ioctl. */ +#define PME_PMFA_SRE_POLL_MS 100 +#define PME_PMFA_SRE_INDEX_MAX (1 << 27) +#define PME_PMFA_SRE_INC_MAX (1 << 12) +#define PME_PMFA_SRE_REP_MAX (1 << 28) +#define PME_PMFA_SRE_INTERVAL_MAX (1 << 12) + +/* Encapsulations for mapping */ +#define flow_map(flow) \ +({ \ + struct pme_flow *__f913 = (flow); \ + pme_map(__f913); \ +}) + +#define residue_map(residue) \ +({ \ + struct pme_hw_residue *__f913 = (residue); \ + pme_map(__f913); \ +}) + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_test.h +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_test.h @@ -0,0 +1,74 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_sys.h" + +static inline void __hexdump(unsigned long start, unsigned long end, + unsigned long p, size_t sz, const unsigned char *c) +{ + while (start < end) { + unsigned int pos = 0; + char buf[64]; + int nl = 0; + pos += sprintf(buf + pos, "%08lx: ", start); + do { + if ((start < p) || (start >= (p + sz))) + pos += sprintf(buf + pos, ".."); + else + pos += sprintf(buf + pos, "%02x", *(c++)); + if (!(++start & 15)) { + buf[pos++] = '\n'; + nl = 1; + } else { + nl = 0; + if(!(start & 1)) + buf[pos++] = ' '; + if(!(start & 3)) + buf[pos++] = ' '; + } + } while (start & 15); + if (!nl) + buf[pos++] = '\n'; + buf[pos] = '\0'; + pr_info("%s", buf); + } +} +static inline void hexdump(const void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)15; + unsigned long end = (p + sz + 15) & ~(unsigned long)15; + const unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} + +int pme2_sample_db(void); +int pme2_clear_sample_db(void); --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_scan.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_scan.c @@ -0,0 +1,1111 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_private.h" +#include +#include +#include +#include + +#define WAIT_AND_INTERRUPTABLE (PME_CTX_OP_WAIT|PME_CTX_OP_WAIT_INT) +#define INPUT_FRM 1 +#define OUTPUT_FRM 0 +/* Private structure that is allocated for each open that is done on the + * pme_scan device. */ +struct scan_session { + /* The ctx that is needed to communicate with the pme high level */ + struct pme_ctx ctx; + /* Locks completed_commands */ + spinlock_t set_subset_lock; + __u8 set; + __u16 subset; + /* For asynchronous processing */ + wait_queue_head_t waiting_for_completion; + struct list_head completed_commands; + /* Locks completed_commands */ + spinlock_t completed_commands_lock; + u32 completed_count; +}; + +/* Command Token for scan operations. One of these is created for every + * operation on a context. When the context operation is complete cleanup + * is done */ +struct cmd_token { + /* pme high level token */ + struct pme_ctx_token hl_token; + /* The kernels copy of the user op structure */ + struct pme_scan_cmd kernel_op; + /* Set to non zero if this is a synchronous request */ + u8 synchronous; + /* data */ + struct qm_fd tx_fd; + struct qm_sg_entry tx_comp[2]; + struct qm_fd rx_fd; + void *tx_data; + size_t tx_size; + void *rx_data; + size_t rx_size; + /* For blocking requests, we need a wait point and condition */ + wait_queue_head_t *queue; + /* List management for completed async requests */ + struct list_head completed_list; + u8 done; + u8 ern; +}; + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; + u8 ern; +}; + +#ifdef CONFIG_COMPAT +static void compat_to_scan_cmd(struct pme_scan_cmd *dst, + struct compat_pme_scan_cmd *src) +{ + dst->flags = src->flags; + dst->opaque = compat_ptr(src->opaque); + dst->input.data = compat_ptr(src->input.data); + dst->input.size = src->input.size; + dst->output.data = compat_ptr(src->output.data); + dst->output.size = src->output.size; +} + +static void scan_result_to_compat(struct compat_pme_scan_result *dst, + struct pme_scan_result *src) +{ + dst->flags = src->flags; + dst->opaque = ptr_to_compat(src->opaque); + dst->status = src->status; + dst->output.data = ptr_to_compat(src->output.data); + dst->output.size = src->output.size; +} + +static void compat_to_scan_result(struct pme_scan_result *dst, + struct compat_pme_scan_result *src) +{ + dst->flags = src->flags; + dst->opaque = compat_ptr(src->opaque); + dst->status = src->status; + dst->output.data = compat_ptr(src->output.data); + dst->output.size = src->output.size; +} +#endif + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd) & PME_STATUS_UNRELIABLE; + complete(&ctrl->cb_done); +} + +static void ctrl_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + ctrl->ern = 1; + complete(&ctrl->cb_done); +} + +static inline int scan_data_empty(struct scan_session *session) +{ + return list_empty(&session->completed_commands); +} + +/* Cleanup for the execute_cmd method */ +static inline void cleanup_token(struct cmd_token *token_p) +{ + kfree(token_p->tx_data); + kfree(token_p->rx_data); + return; +} + +/* Callback for scan operations */ +static void scan_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + struct scan_session *session = (struct scan_session *)ctx; + + token->rx_fd = *fd; + /* If this is a asynchronous command, queue the token */ + if (!token->synchronous) { + spin_lock(&session->completed_commands_lock); + list_add_tail(&token->completed_list, + &session->completed_commands); + session->completed_count++; + spin_unlock(&session->completed_commands_lock); + } + /* Wake up the thread that's waiting for us */ + token->done = 1; + wake_up(token->queue); + return; +} + +static void scan_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_token *ctx_token) +{ + struct cmd_token *token = (struct cmd_token *)ctx_token; + struct scan_session *session = (struct scan_session *)ctx; + + token->ern = 1; + token->rx_fd = mr->ern.fd; + /* If this is a asynchronous command, queue the token */ + if (!token->synchronous) { + spin_lock(&session->completed_commands_lock); + list_add_tail(&token->completed_list, + &session->completed_commands); + session->completed_count++; + spin_unlock(&session->completed_commands_lock); + } + /* Wake up the thread that's waiting for us */ + token->done = 1; + wake_up(token->queue); + return; +} + +static int process_completed_token(struct file *fp, struct cmd_token *token_p, + struct pme_scan_result *scan_result) +{ + int ret = 0; + u32 src_sz, dst_sz; + + memset(scan_result, 0, sizeof(struct pme_scan_result)); + if (token_p->ern) { + ret = -EIO; + goto done; + } + scan_result->output.data = token_p->kernel_op.output.data; + + if (token_p->rx_fd.format == qm_fd_compound) { + /* Need to copy output */ + src_sz = token_p->tx_comp[OUTPUT_FRM].length; + dst_sz = token_p->kernel_op.output.size; + scan_result->output.size = min(dst_sz, src_sz); + /* Doesn't make sense we generated more than available space + * should have got truncation. + */ + BUG_ON(dst_sz < src_sz); + if (copy_to_user(scan_result->output.data, token_p->rx_data, + scan_result->output.size)) { + pr_err("Error copying to user data\n"); + cleanup_token(token_p); + return -EFAULT; + } + } else if (token_p->rx_fd.format == qm_fd_sg_big) + scan_result->output.size = 0; + else + pr_err("pme2_scan: unexpected frame type received\n"); + + scan_result->flags |= pme_fd_res_flags(&token_p->rx_fd); + scan_result->status |= pme_fd_res_status(&token_p->rx_fd); +done: + scan_result->opaque = token_p->kernel_op.opaque; + cleanup_token(token_p); + return ret; +} + +static int getscan_cmd(struct file *fp, struct scan_session *session, + struct pme_scan_params __user *user_scan_params) +{ + int ret = 0; + struct pme_flow params; + struct pme_scan_params local_scan_params; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + init_completion(&ctx_ctrl.cb_done); + + memset(&local_scan_params, 0, sizeof(local_scan_params)); + + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + pr_err("pme2_scan: ctx is disabled\n"); + ret = -EINVAL; + goto done; + } + ret = pme_ctx_ctrl_read_flow(&session->ctx, WAIT_AND_INTERRUPTABLE, + ¶ms, &ctx_ctrl.ctx_ctr); + if (ret) { + PMEPRINFO("read flow error %d\n", ret); + goto done; + } + wait_for_completion(&ctx_ctrl.cb_done); + + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("read flow error %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + goto done; + } + local_scan_params.residue.enable = params.ren; + local_scan_params.residue.length = params.rlen; + local_scan_params.sre.sessionid = params.sessionid; + local_scan_params.sre.verbose = params.srvm; + local_scan_params.sre.esee = params.esee; + local_scan_params.dxe.clim = params.clim; + local_scan_params.dxe.mlim = params.mlim; + spin_lock(&session->set_subset_lock); + local_scan_params.pattern.set = session->set; + local_scan_params.pattern.subset = session->subset; + spin_unlock(&session->set_subset_lock); + + if (copy_to_user(user_scan_params, &local_scan_params, + sizeof(local_scan_params))) { + pr_err("Error copying to user data\n"); + ret = -EFAULT; + } +done: + return ret; +} + +static int setscan_cmd(struct file *fp, struct scan_session *session, + struct pme_scan_params __user *user_params) +{ + int ret = 0; + u32 flag = WAIT_AND_INTERRUPTABLE; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + struct pme_flow params; + struct pme_scan_params local_params; + + pme_sw_flow_init(¶ms); + init_completion(&ctx_ctrl.cb_done); + if (copy_from_user(&local_params, user_params, sizeof(local_params))) + return -EFAULT; + + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + ret = -EINVAL; + goto done; + } + /* Only send a flw_ctx_w if PME_SCAN_PARAMS_{RESIDUE, SRE or DXE} + * is being done */ + if (local_params.flags == PME_SCAN_PARAMS_PATTERN) + goto set_subset; + if (local_params.flags & PME_SCAN_PARAMS_RESIDUE) + flag |= PME_CMD_FCW_RES; + if (local_params.flags & PME_SCAN_PARAMS_SRE) + flag |= PME_CMD_FCW_SRE; + if (local_params.flags & PME_SCAN_PARAMS_DXE) + flag |= PME_CMD_FCW_DXE; + params.ren = local_params.residue.enable; + params.sessionid = local_params.sre.sessionid; + params.srvm = local_params.sre.verbose; + params.esee = local_params.sre.esee; + params.clim = local_params.dxe.clim; + params.mlim = local_params.dxe.mlim; + + ret = pme_ctx_ctrl_update_flow(&session->ctx, flag, ¶ms, + &ctx_ctrl.ctx_ctr); + if (ret) { + PMEPRINFO("update flow error %d\n", ret); + goto done; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("update flow err %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + goto done; + } + +set_subset: + if (local_params.flags & PME_SCAN_PARAMS_PATTERN) { + spin_lock(&session->set_subset_lock); + session->set = local_params.pattern.set; + session->subset = local_params.pattern.subset; + spin_unlock(&session->set_subset_lock); + goto done; + } +done: + return ret; +} + +static int resetseq_cmd(struct file *fp, struct scan_session *session) +{ + int ret = 0; + struct pme_flow params; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + init_completion(&ctx_ctrl.cb_done); + pme_sw_flow_init(¶ms); + + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + pr_err("pme2_scan: ctx is disabled\n"); + ret = -EINVAL; + goto done; + } + pme_flow_seqnum_set64(¶ms, 0); + params.sos = 1; + + ret = pme_ctx_ctrl_update_flow(&session->ctx, PME_CMD_FCW_SEQ, ¶ms, + &ctx_ctrl.ctx_ctr); + if (ret) { + pr_err("pme2_scan: update flow error %d\n", ret); + return ret; + } + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("update flow err %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + } +done: + return ret; +} + +static int resetresidue_cmd(struct file *fp, struct scan_session *session) +{ + int ret = 0; + struct pme_flow params; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + + init_completion(&ctx_ctrl.cb_done); + pme_sw_flow_init(¶ms); + /* must be enabled */ + if (pme_ctx_is_disabled(&session->ctx)) { + pr_err("pme2_scan: ctx is disabled\n"); + ret = -EINVAL; + goto done; + } + params.rlen = 0; + ret = pme_ctx_ctrl_update_flow(&session->ctx, + WAIT_AND_INTERRUPTABLE | PME_CTX_OP_RESETRESLEN, + ¶ms, &ctx_ctrl.ctx_ctr); + if (ret) + pr_info("pme2_scan: update flow error %d\n", ret); + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) { + PMEPRINFO("update flow err %d\n", ctx_ctrl.cmd_status); + ret = -EFAULT; + } +done: + return ret; +} + +static int process_scan_cmd( + struct file *fp, + struct scan_session *session, + struct pme_scan_cmd *user_cmd, + struct pme_scan_result *user_ret, + u8 synchronous) +{ + int ret = 0; + struct cmd_token local_token; + struct cmd_token *token_p = NULL; + DECLARE_WAIT_QUEUE_HEAD(local_waitqueue); + u8 scan_flags = 0; + + BUG_ON(synchronous && !user_ret); + + /* If synchronous, use a local token (from the stack) + * If asynchronous, allocate a token to use */ + if (synchronous) + token_p = &local_token; + else { + token_p = kmalloc(sizeof(*token_p), GFP_KERNEL); + if (!token_p) + return -ENOMEM; + } + memset(token_p, 0, sizeof(*token_p)); + /* Copy the command to kernel space */ + memcpy(&token_p->kernel_op, user_cmd, sizeof(struct pme_scan_cmd)); + /* Copy the input */ + token_p->synchronous = synchronous; + token_p->tx_size = token_p->kernel_op.input.size; + token_p->tx_data = kmalloc(token_p->kernel_op.input.size, GFP_KERNEL); + if (!token_p->tx_data) { + pr_err("pme2_scan: Err alloc %zd byte", token_p->tx_size); + cleanup_token(token_p); + return -ENOMEM; + } + if (copy_from_user(token_p->tx_data, + token_p->kernel_op.input.data, + token_p->kernel_op.input.size)) { + pr_err("Error copying contigous user data\n"); + cleanup_token(token_p); + return -EFAULT; + } + /* Setup input frame */ + token_p->tx_comp[INPUT_FRM].final = 1; + token_p->tx_comp[INPUT_FRM].length = token_p->tx_size; + qm_sg_entry_set64(&token_p->tx_comp[INPUT_FRM], + pme_map(token_p->tx_data)); + /* setup output frame, if output is expected */ + if (token_p->kernel_op.output.size) { + token_p->rx_size = token_p->kernel_op.output.size; + PMEPRINFO("pme2_scan: expect output %d\n", token_p->rx_size); + token_p->rx_data = kmalloc(token_p->rx_size, GFP_KERNEL); + if (!token_p->rx_data) { + pr_err("pme2_scan: Err alloc %zd byte", + token_p->rx_size); + cleanup_token(token_p); + return -ENOMEM; + } + /* Setup output frame */ + token_p->tx_comp[OUTPUT_FRM].length = token_p->rx_size; + qm_sg_entry_set64(&token_p->tx_comp[OUTPUT_FRM], + pme_map(token_p->rx_data)); + token_p->tx_fd.format = qm_fd_compound; + /* Build compound frame */ + qm_fd_addr_set64(&token_p->tx_fd, + pme_map(token_p->tx_comp)); + } else { + token_p->tx_fd.format = qm_fd_sg_big; + /* Build sg frame */ + qm_fd_addr_set64(&token_p->tx_fd, + pme_map(&token_p->tx_comp[INPUT_FRM])); + token_p->tx_fd.length29 = token_p->tx_size; + } + + /* use the local wait queue if synchronous, the shared + * queue if asynchronous */ + if (synchronous) + token_p->queue = &local_waitqueue; + else + token_p->queue = &session->waiting_for_completion; + token_p->done = 0; + + if (token_p->kernel_op.flags & PME_SCAN_CMD_STARTRESET) + scan_flags |= PME_CMD_SCAN_SR; + if (token_p->kernel_op.flags & PME_SCAN_CMD_END) + scan_flags |= PME_CMD_SCAN_E; + ret = pme_ctx_scan(&session->ctx, WAIT_AND_INTERRUPTABLE, + &token_p->tx_fd, + PME_SCAN_ARGS(scan_flags, session->set, session->subset), + &token_p->hl_token); + if (unlikely(ret)) { + cleanup_token(token_p); + return ret; + } + + if (!synchronous) + /* Don't wait. The command is away */ + return 0; + + PMEPRINFO("Wait for completion\n"); + /* Wait for the command to complete */ + /* TODO: Should this be wait_event_interruptible ? + * If so, will need logic to indicate */ + wait_event(*token_p->queue, token_p->done == 1); + return process_completed_token(fp, token_p, user_ret); +} + +/** + * fsl_pme2_scan_open - open the driver + * + * Open the driver and prepare for requests. + * + * Every time an application opens the driver, we create a scan_session object + * for that file handle. + */ +static int fsl_pme2_scan_open(struct inode *node, struct file *fp) +{ + int ret; + struct scan_session *session; + struct pme_flow flow; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + + pme_sw_flow_init(&flow); + init_completion(&ctx_ctrl.cb_done); + PMEPRINFO("pme2_scan: open %d\n", smp_processor_id()); + fp->private_data = kzalloc(sizeof(*session), GFP_KERNEL); + if (!fp->private_data) + return -ENOMEM; + session = (struct scan_session *)fp->private_data; + /* Set up the structures used for asynchronous requests */ + init_waitqueue_head(&session->waiting_for_completion); + INIT_LIST_HEAD(&session->completed_commands); + spin_lock_init(&session->completed_commands_lock); + spin_lock_init(&session->set_subset_lock); + PMEPRINFO("kmalloc session %p\n", fp->private_data); + session = fp->private_data; + session->ctx.cb = scan_cb; + session->ctx.ern_cb = scan_ern_cb; + + /* qosin, qosout should be driver attributes */ + ret = pme_ctx_init(&session->ctx, PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("pme2_scan: pme_ctx_init %d\n", ret); + goto exit; + } + /* enable the context */ + ret = pme_ctx_enable(&session->ctx); + if (ret) { + PMEPRINFO("error enabling ctx %d\n", ret); + pme_ctx_finish(&session->ctx); + goto exit; + } + /* Update flow to set sane defaults in the flow context */ + ret = pme_ctx_ctrl_update_flow(&session->ctx, + PME_CTX_OP_WAIT | PME_CMD_FCW_ALL, &flow, &ctx_ctrl.ctx_ctr); + if (!ret) { + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern || ctx_ctrl.cmd_status || ctx_ctrl.res_flag) + ret = -EFAULT; + } + if (ret) { + int my_ret; + PMEPRINFO("error updating flow ctx %d\n", ret); + my_ret = pme_ctx_disable(&session->ctx, PME_CTX_OP_WAIT, + &ctx_ctrl.ctx_ctr); + if (my_ret > 0) + wait_for_completion(&ctx_ctrl.cb_done); + else if (my_ret < 0) + PMEPRINFO("error disabling ctx %d\n", ret); + pme_ctx_finish(&session->ctx); + goto exit; + } + /* Set up the structures used for asynchronous requests */ + PMEPRINFO("pme2_scan: Finish pme_scan open %d\n", smp_processor_id()); + return 0; +exit: + kfree(fp->private_data); + fp->private_data = NULL; + return ret; +} + +static int fsl_pme2_scan_close(struct inode *node, struct file *fp) +{ + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .ctx_ctr.ern_cb = ctrl_ern_cb, + .cmd_status = 0, + .res_flag = 0, + .ern = 0 + }; + int ret = 0; + struct scan_session *session = fp->private_data; + + init_completion(&ctx_ctrl.cb_done); + /* Before disabling check to see if it's already disabled. This can + * happen if a pme serious error has occurred for instance.*/ + if (!pme_ctx_is_disabled(&session->ctx)) { + ret = pme_ctx_disable(&session->ctx, PME_CTX_OP_WAIT, + &ctx_ctrl.ctx_ctr); + if (ret > 0) { + wait_for_completion(&ctx_ctrl.cb_done); + if (ctx_ctrl.ern) + PMEPRCRIT("Unexpected ERN\n"); + } else if (ret < 0) { + pr_err("pme2_scan: Error disabling ctx %d\n", ret); + return ret; + } + } + pme_ctx_finish(&session->ctx); + kfree(session); + PMEPRINFO("pme2_scan: Finish pme_session close\n"); + return 0; +} + +static unsigned int fsl_pme2_scan_poll(struct file *fp, + struct poll_table_struct *wait) +{ + struct scan_session *session; + unsigned int mask = POLLOUT | POLLWRNORM; + + if (!fp->private_data) + return -EINVAL; + + session = (struct scan_session *)fp->private_data; + + poll_wait(fp, &session->waiting_for_completion, wait); + + if (!scan_data_empty(session)) + mask |= (POLLIN | POLLRDNORM); + return mask; +} + + +/* Main switch loop for ioctl operations */ +static long fsl_pme2_scan_ioctl(struct file *fp, unsigned int cmd, + unsigned long arg) +{ + struct scan_session *session = fp->private_data; + int ret = 0; + + switch (cmd) { + + case PMEIO_GETSCAN: + return getscan_cmd(fp, session, (struct pme_scan_params *)arg); + break; + + case PMEIO_SETSCAN: + return setscan_cmd(fp, session, (struct pme_scan_params *)arg); + break; + + case PMEIO_RESETSEQ: + return resetseq_cmd(fp, session); + break; + + case PMEIO_RESETRES: + return resetresidue_cmd(fp, session); + break; + + case PMEIO_SCAN: + { + int ret; + struct pme_scan scan; + + if (copy_from_user(&scan, (void __user *)arg, sizeof(scan))) + return -EFAULT; + ret = process_scan_cmd(fp, session, &scan.cmd, &scan.result, 1); + if (!ret) { + struct pme_scan_result __user *user_result = + &((struct pme_scan __user *)arg)->result; + ret = copy_to_user(user_result, &scan.result, + sizeof(*user_result)); + } + return ret; + } + break; + + case PMEIO_SCAN_W1: + { + struct pme_scan_cmd scan_cmd; + + if (copy_from_user(&scan_cmd, (void __user *)arg, + sizeof(scan_cmd))) + return -EFAULT; + return process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + } + break; + + case PMEIO_SCAN_R1: + { + struct pme_scan_result result; + struct cmd_token *completed_cmd = NULL; + struct pme_scan_result __user *ur = + (struct pme_scan_result __user *)arg; + int ret; + + if (copy_from_user(&result, (void __user *)arg, + sizeof(result))) + return -EFAULT; + + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + ret = process_completed_token(fp, completed_cmd, + &result); + if (!ret) + ret = copy_to_user(ur, &result, sizeof(result)); + return ret; + } else + return -EIO; + } + break; + + case PMEIO_SCAN_Wn: + { + struct pme_scan_cmds scan_cmds; + int i, ret = 0; + + /* Copy the command to kernel space */ + if (copy_from_user(&scan_cmds, (void __user *)arg, + sizeof(scan_cmds))) + return -EFAULT; + PMEPRINFO("Received Wn for %d cmds\n", scan_cmds.num); + for (i = 0; i < scan_cmds.num; i++) { + struct pme_scan_cmd scan_cmd; + + if (copy_from_user(&scan_cmd, &scan_cmds.cmds[i], + sizeof(scan_cmd))) { + pr_err("pme2_scan: Err with %d\n", i); + scan_cmds.num = i; + if (copy_to_user((void __user *)arg, &scan_cmds, + sizeof(scan_cmds))) { + return -EFAULT; + } + return -EFAULT; + } + ret = process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + if (ret) { + pr_err("pme2_scan: Err with %d cmd %d\n", + i, ret); + scan_cmds.num = i; + if (copy_to_user((void *)arg, &scan_cmds, + sizeof(scan_cmds))) { + pr_err("Error copying to user data\n"); + return -EFAULT; + } + return -EINTR; + } + } + return ret; + } + break; + + case PMEIO_SCAN_Rn: + { + struct pme_scan_results results; + struct pme_scan_result result; + struct pme_scan_result __user *ur; + int i = 0, ret = 0; + struct cmd_token *completed_cmd = NULL; + + /* Copy the command to kernel space */ + if (copy_from_user(&results, (void __user *)arg, + sizeof(results))) + return -EFAULT; + ur = ((struct pme_scan_results __user *)arg)->results + PMEPRINFO("pme2_scan: Received Rn for %d res\n", results.num); + if (!results.num) + return 0; + do { + completed_cmd = NULL; + ret = 0; + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + /* Move to a different list */ + PMEPRINFO("pme2_scan: Pop response\n"); + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + if (copy_from_user(&result, (void __user *)ur+i, + sizeof(result))) + return -EFAULT; + ret = process_completed_token(fp, completed_cmd, + &result); + if (!ret) + ret = copy_to_user(ur, &result, + sizeof(struct pme_scan_result)); + if (!ret) { + i++; + ur++; + } + } + } while (!ret && completed_cmd && (i != results.num)); + + if (i != results.num) { + PMEPRINFO("pme2_scan: Only filled %d responses\n", i); + results.num = i; + PMEPRINFO("pme2_scan: results.num = %d\n", results.num); + if (copy_to_user((void __user *)arg, &results, + sizeof(struct pme_scan_results))) { + pr_err("Error copying to user data\n"); + return -EFAULT; + } + } + return ret; + } + break; + + case PMEIO_RELEASE_BUFS: + return -EINVAL; + break; + +#ifdef CONFIG_COMPAT + case PMEIO_SCAN32: + { + int ret; + struct compat_pme_scan scan32; + struct compat_pme_scan __user *user_scan = compat_ptr(arg); + struct pme_scan scan; + + if (copy_from_user(&scan32, user_scan, sizeof(scan32))) + return -EFAULT; + /* Convert to 64-bit structs */ + compat_to_scan_cmd(&scan.cmd, &scan32.cmd); + compat_to_scan_result(&scan.result, &scan32.result); + + ret = process_scan_cmd(fp, session, &scan.cmd, &scan.result, 1); + if (!ret) { + struct compat_pme_scan_result __user *user_result = + &user_scan->result; + /* Convert to 32-bit struct */ + scan_result_to_compat(&scan32.result, &scan.result); + ret = copy_to_user(user_result, &scan32.result, + sizeof(*user_result)); + } + return ret; + } + break; + + case PMEIO_SCAN_W132: + { + struct compat_pme_scan_cmd scan_cmd32; + struct pme_scan_cmd scan_cmd; + + if (copy_from_user(&scan_cmd32, compat_ptr(arg), + sizeof(scan_cmd32))) + return -EFAULT; + /* Convert to 64-bit struct */ + compat_to_scan_cmd(&scan_cmd, &scan_cmd32); + return process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + } + break; + + case PMEIO_SCAN_R132: + { + struct compat_pme_scan_result result32; + struct pme_scan_result result; + struct cmd_token *completed_cmd = NULL; + struct compat_pme_scan_result __user *ur = compat_ptr(arg); + int ret; + + if (copy_from_user(&result32, (void __user *)arg, + sizeof(result32))) + return -EFAULT; + /* copy to 64-bit structure */ + compat_to_scan_result(&result, &result32); + + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + ret = process_completed_token(fp, completed_cmd, + &result); + scan_result_to_compat(&result32, &result); + ret = copy_to_user(ur, &result32, sizeof(result32)); + } else + return -EIO; + } + break; + + case PMEIO_SCAN_Wn32: + { + struct compat_pme_scan_cmds scan_cmds32; + int i, ret = 0; + + /* Copy the command to kernel space */ + if (copy_from_user(&scan_cmds32, compat_ptr(arg), + sizeof(scan_cmds32))) + return -EFAULT; + PMEPRINFO("Received Wn for %d cmds\n", scan_cmds32.num); + for (i = 0; i < scan_cmds32.num; i++) { + struct pme_scan_cmd scan_cmd; + struct compat_pme_scan_cmd __user *u_scan_cmd32; + struct compat_pme_scan_cmd scan_cmd32; + + u_scan_cmd32 = compat_ptr(scan_cmds32.cmds); + u_scan_cmd32 += i; + + if (copy_from_user(&scan_cmd32, u_scan_cmd32, + sizeof(scan_cmd32))) { + pr_err("pme2_scan: Err with %d\n", i); + scan_cmds32.num = i; + if (copy_to_user(compat_ptr(arg), &scan_cmds32, + sizeof(scan_cmds32))) + return -EFAULT; + return -EFAULT; + } + compat_to_scan_cmd(&scan_cmd, &scan_cmd32); + ret = process_scan_cmd(fp, session, &scan_cmd, NULL, 0); + if (ret) { + pr_err("pme2_scan: Err with %d cmd %d\n", + i, ret); + scan_cmds32.num = i; + if (copy_to_user(compat_ptr(arg), &scan_cmds32, + sizeof(scan_cmds32))) + return -EFAULT; + return -EINTR; + } + } + return ret; + } + break; + + case PMEIO_SCAN_Rn32: + { + struct compat_pme_scan_results results32; + int i = 0, ret = 0; + struct cmd_token *completed_cmd = NULL; + struct compat_pme_scan_result __user *ur; + + /* Copy the command to kernel space */ + if (copy_from_user(&results32, compat_ptr(arg), + sizeof(results32))) + return -EFAULT; + ur = compat_ptr(results32.results); + PMEPRINFO("pme2_scan: Rx Rn for %d res\n", results32.num); + if (!results32.num) + return 0; + do { + completed_cmd = NULL; + ret = 0; + /* Check to see if any results */ + spin_lock(&session->completed_commands_lock); + if (!list_empty(&session->completed_commands)) { + /* Move to a different list */ + PMEPRINFO("pme2_scan: Pop response\n"); + completed_cmd = list_first_entry( + &session->completed_commands, + struct cmd_token, + completed_list); + list_del(&completed_cmd->completed_list); + session->completed_count--; + } + spin_unlock(&session->completed_commands_lock); + if (completed_cmd) { + struct compat_pme_scan_result l_result32; + struct pme_scan_result result; + + if (copy_from_user(&l_result32, ur+i, + sizeof(l_result32))) + return -EFAULT; + compat_to_scan_result(&result, &l_result32); + ret = process_completed_token(fp, completed_cmd, + &result); + scan_result_to_compat(&l_result32, &result); + ret = copy_to_user(ur+i, &l_result32, + sizeof(l_result32)); + if (!ret) + i++; + } + } while (!ret && completed_cmd && (i != results32.num)); + + if (i != results32.num) { + PMEPRINFO("pme2_scan: Only filled %d responses\n", i); + results32.num = i; + PMEPRINFO("pme2_scan: results32.num = %d\n", + results32.num); + if (copy_to_user(compat_ptr(arg), &results32, + sizeof(struct pme_scan_results))) { + pr_err("Error copying to user data\n"); + return -EFAULT; + } + } + return ret; + } + break; +#endif /* CONFIG_COMPAT */ + + default: + pr_err("UNKNOWN IOCTL cmd 0x%x\n", cmd); + return -EINVAL; + break; + } + + return ret; +} + +static const struct file_operations fsl_pme2_scan_fops = { + .owner = THIS_MODULE, + .open = fsl_pme2_scan_open, + .release = fsl_pme2_scan_close, + .poll = fsl_pme2_scan_poll, + .unlocked_ioctl = fsl_pme2_scan_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fsl_pme2_scan_ioctl, +#endif +}; + +static struct miscdevice fsl_pme2_scan_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = PME_DEV_SCAN_NODE, + .fops = &fsl_pme2_scan_fops +}; + +static int __init fsl_pme2_scan_init(void) +{ + int err = 0; + + pr_info("Freescale pme2 scan driver\n"); + err = misc_register(&fsl_pme2_scan_dev); + if (err) { + pr_err("fsl-pme2-scan: cannot register device\n"); + return err; + } + pr_info("fsl-pme2-scan: device %s registered\n", + fsl_pme2_scan_dev.name); + return 0; +} + +static void __exit fsl_pme2_scan_exit(void) +{ + int err = misc_deregister(&fsl_pme2_scan_dev); + if (err) + pr_err("fsl-pme2-scan: Failed to deregister device %s, " + "code %d\n", fsl_pme2_scan_dev.name, err); + pr_info("fsl-pme2-scan: device %s deregistered\n", + fsl_pme2_scan_dev.name); +} + +module_init(fsl_pme2_scan_init); +module_exit(fsl_pme2_scan_exit); + +MODULE_AUTHOR("Jeffrey Ladouceur "); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Freescale PME2 scan driver"); --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_sample_db.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_sample_db.c @@ -0,0 +1,426 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pme2_test.h" + +static u8 pme_db[] = { + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x90, 0x41, 0x40, 0x20, 0x00, 0x11, +/* Rev 2.0 */ +/* 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0x20, 0x41, 0x40, 0x20, 0x00, 0x11, */ + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x90, 0x41, 0xff, 0x81, 0x00, 0x00, +/* Rev 2.0 */ +/* 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, + 0x20, 0x41, 0xff, 0x81, 0x00, 0x00, */ + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, + 0x01, 0xff, 0x80, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, + 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, + 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, + 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x7b, + 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, + 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, + 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, + 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, + 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, + 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, + 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, + 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, + 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, + 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, + 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, + 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, + 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, + 0xfc, 0xfd, 0xfe, 0xff +}; + +static u8 db_read[] = { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x90, 0x41 +/* Rev 2.0 */ +/* 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0x20, 0x41 */ +}; + +static u8 db_read_expected_result[] = { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, +/* Rev 2.1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x90, 0x41, 0x40, 0x20, 0x00, 0x11 +/* Rev 2.0 */ +/* 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, + 0x20, 0x41, 0x40, 0x20, 0x00, 0x11*/ +}; + +struct pmtcc_ctx { + struct pme_ctx base_ctx; + struct qm_fd result_fd; + struct completion done; + u8 ern; +}; + +static void pmtcc_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *ctx_token) +{ + struct pmtcc_ctx *my_ctx = (struct pmtcc_ctx *)ctx; + memcpy(&my_ctx->result_fd, fd, sizeof(*fd)); + complete(&my_ctx->done); +} + +static void pmtcc_ern_cb(struct pme_ctx *ctx, const struct qm_mr_entry *mr, + struct pme_ctx_token *ctx_token) +{ + struct pmtcc_ctx *my_ctx = (struct pmtcc_ctx *)ctx; + my_ctx->result_fd = mr->ern.fd; + my_ctx->ern = 1; + complete(&my_ctx->done); +} + +#define FIRST_PMTCC 56 +int pme2_clear_sample_db(void) +{ + struct pmtcc_ctx ctx = { + .base_ctx.cb = pmtcc_cb, + .base_ctx.ern_cb = pmtcc_ern_cb, + .ern = 0 + }; + struct qm_fd fd; + int ret = 0; + enum pme_status status; + struct pme_ctx_token token; + void *mem; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + pr_info("cleanr_sample_db: can't set cpumask\n"); + goto _clear_0; + } + init_completion(&ctx.done); + ret = pme_ctx_init(&ctx.base_ctx, + PME_CTX_FLAG_EXCLUSIVE | + PME_CTX_FLAG_PMTCC | + PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("clear_sample_db: can't init ctx\n"); + goto _clear_1; + } + + /* enable the context */ + ret = pme_ctx_enable(&ctx.base_ctx); + if (ret) { + pr_err("clear_sample_db: can't enable ctx\n"); + goto _clear_2; + } + + /* Write the database */ + memset(&fd, 0, sizeof(struct qm_fd)); + mem = kmalloc(FIRST_PMTCC, GFP_KERNEL); + if (!mem) + goto _clear_3; + memcpy(mem, pme_db, FIRST_PMTCC); + + fd.length20 = FIRST_PMTCC; + qm_fd_addr_set64(&fd, pme_map(mem)); + + ret = pme_ctx_pmtcc(&ctx.base_ctx, PME_CTX_OP_WAIT, &fd, &token); + if (ret == -ENODEV) { + pr_err("clear_sample_db: not the control plane, bailing\n"); + goto _clear_4; + } + if (ret) { + pr_err("clear_sample_db: error with pmtcc\n"); + goto _clear_4; + } + wait_for_completion(&ctx.done); + if (ctx.ern) { + pr_err("clear_sample_db: Rx ERN from pmtcc\n"); + goto _clear_4; + } + status = pme_fd_res_status(&ctx.result_fd); + if (status) { + pr_info("clear_sample_db: PMTCC write status failed %d\n", + status); + goto _clear_4; + } +_clear_4: + kfree(mem); +_clear_3: + /* Disable */ + ret = pme_ctx_disable(&ctx.base_ctx, + PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT, NULL); +_clear_2: + pme_ctx_finish(&ctx.base_ctx); +_clear_1: + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) + pr_info("clear_sample_db: can't restore cpumask"); +_clear_0: + if (!ret) + pr_info("clear_sample_db: Done\n"); + else + pr_info("clear_sample_db: Error 0x%x\n", ret); + return ret; + +} + +int pme2_sample_db(void) +{ + struct pmtcc_ctx ctx = { + .base_ctx.cb = pmtcc_cb, + .base_ctx.ern_cb = pmtcc_ern_cb, + .ern = 0 + }; + struct qm_fd fd; + struct qm_sg_entry *sg_table = NULL; + int ret = 0; + enum pme_status status; + struct pme_ctx_token token; + void *mem = NULL, *mem_result = NULL; + u32 pme_rev; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + pr_info("sample_db: can't set cpumask\n"); + goto _finish_0; + } + ret = pme_attr_get(pme_attr_rev1, &pme_rev); + if (ret) { + pr_err("sample_db: can't read pme revision %d\n", ret); + goto _finish_1; + } + /* If Rev 2.0...update database */ + if ((pme_rev & 0x0000FFFF) == 0x00000200) { + pr_info("sample_db: db for pme ver 2.0\n"); + pme_db[133] = 0x01; + pme_db[134] = 0x20; + pme_db[161] = 0x01; + pme_db[162] = 0x20; + db_read[21] = 0x01; + db_read[22] = 0x20; + db_read_expected_result[21] = 0x01; + db_read_expected_result[22] = 0x20; + } else + pr_info("sample_db: db for pme ver 2.1 or greater\n"); + init_completion(&ctx.done); + ret = pme_ctx_init(&ctx.base_ctx, + PME_CTX_FLAG_EXCLUSIVE | + PME_CTX_FLAG_PMTCC | + PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + if (ret) { + pr_err("sample_db: can't init ctx\n"); + goto _finish_1; + } + + /* enable the context */ + ret = pme_ctx_enable(&ctx.base_ctx); + if (ret) { + pr_err("sample_db: can't enable ctx\n"); + goto _finish_2; + } + + /* Write the database */ + memset(&fd, 0, sizeof(struct qm_fd)); + mem = kmalloc(sizeof(pme_db), GFP_KERNEL); + if (!mem) + goto _finish_3; + memcpy(mem, pme_db, sizeof(pme_db)); + + fd.length20 = sizeof(pme_db); + qm_fd_addr_set64(&fd, pme_map(mem)); + + ret = pme_ctx_pmtcc(&ctx.base_ctx, PME_CTX_OP_WAIT, &fd, &token); + if (ret == -ENODEV) { + pr_err("sample_db: not the control plane, bailing\n"); + goto _finish_4; + } + if (ret) { + pr_err("sample_db: error with pmtcc\n"); + goto _finish_4; + } + wait_for_completion(&ctx.done); + if (ctx.ern) { + pr_err("sample_db: Rx ERN from pmtcc\n"); + goto _finish_4; + } + status = pme_fd_res_status(&ctx.result_fd); + if (status) { + pr_info("sample_db: PMTCC write status failed %d\n", status); + goto _finish_4; + } + kfree(mem); + mem = NULL; + /* Read back the database */ + init_completion(&ctx.done); + memset(&fd, 0, sizeof(struct qm_fd)); + sg_table = kzalloc(2 * sizeof(*sg_table), GFP_KERNEL | GFP_DMA); + mem_result = kmalloc(28, GFP_KERNEL); + mem = kmalloc(sizeof(db_read), GFP_KERNEL); + if (!sg_table || !mem || !mem_result) { + pr_err("sample_db: out of memory\n"); + ret = -ENOMEM; + goto _finish_4; + } + memcpy(mem, db_read, sizeof(db_read)); + qm_sg_entry_set64(&sg_table[0], pme_map(mem_result)); + sg_table[0].length = 28; + qm_sg_entry_set64(&sg_table[1], pme_map(mem)); + sg_table[1].length = sizeof(db_read); + sg_table[1].final = 1; + fd.format = qm_fd_compound; + qm_fd_addr_set64(&fd, pme_map(sg_table)); + ret = pme_ctx_pmtcc(&ctx.base_ctx, PME_CTX_OP_WAIT, &fd, &token); + if (ret) { + pr_err("sample_db: error with pmtcc\n"); + goto _finish_4; + } + wait_for_completion(&ctx.done); + if (ctx.ern) { + ret = -EINVAL; + pr_err("sample_db: Rx ERN from pmtcc\n"); + goto _finish_4; + } + status = pme_fd_res_status(&ctx.result_fd); + if (status) { + ret = -EINVAL; + pr_err("sample_db: PMTCC read status failed %d\n", status); + goto _finish_4; + } + if (pme_fd_res_flags(&ctx.result_fd) & PME_STATUS_UNRELIABLE) { + pr_err("sample_db: flags result set %x\n", + pme_fd_res_flags(&ctx.result_fd)); + ret = -EINVAL; + goto _finish_4; + } + if (memcmp(db_read_expected_result, mem_result, 28) != 0) { + pr_err("sample_db: DB read result not expected\n"); + pr_err("Expected\n"); + hexdump(db_read_expected_result, + sizeof(db_read_expected_result)); + pr_info("Received\n"); + hexdump(mem_result, 28); + ret = -EINVAL; + } +_finish_4: + kfree(mem_result); + kfree(sg_table); + kfree(mem); +_finish_3: + /* Disable */ + ret = pme_ctx_disable(&ctx.base_ctx, + PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT, NULL); +_finish_2: + pme_ctx_finish(&ctx.base_ctx); +_finish_1: + if (ret) + set_cpus_allowed_ptr(current, &backup_mask); + else { + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) + pr_info("sample_db: can't restore cpumask"); + } + +_finish_0: + if (!ret) + pr_info("pme: sample DB initialised\n"); + else + pr_info("pme: Error during sample DB 0x%x\n", ret); + return ret; +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/Kconfig +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/Kconfig @@ -0,0 +1,215 @@ +config FSL_PME2 + bool "Freescale Datapath Pattern Matcher support" + depends on HAS_FSL_PME && FSL_QMAN_PORTAL + default y + +menu "Freescale Datapath PME options" + depends on FSL_PME2 + +config FSL_PME2_CTRL + bool "Freescale PME2 (p4080, etc) device control" + default y + ---help--- + This compiles device support for the Freescale PME2 pattern matching + part contained in datapath-enabled SoCs (ie. accessed via Qman and + Bman portal functionality). At least one guest operating system must + have this driver support, together with the appropriate device-tree + entry, for PME2 functionality to be available. It is responsible for + allocating system memory to the device and configuring it for + operation. For this reason, it must be built into the kernel and will + initialise during early kernel boot. + +config FSL_PME2_PDSRSIZE + int "Pattern Description and Stateful Rule default table size" + depends on FSL_PME2_CTRL + range 74240 1048573 + default 131072 + help + Select the default size of the Pattern Description and Stateful Rule + table as the number of 128 byte entries. This only takes effect if + the device tree node doesn't have the 'fsl,pme-pdsr' property. + range 74240-1048573 (9.5MB-134MB) + default 131072 (16MB) + +if FSL_PME2_CTRL +comment "Statefule Rule Engine" +endif + +config FSL_PME2_SRESIZE + int "SRE Session Context Entries table default table size" + depends on FSL_PME2_CTRL + range 0 134217727 + default 327680 + help + Select the default size of the SRE Context Table as the number of 32 + byte entries. This only takes effect if the device tree node doesn't + have the 'fsl,pme-sre' property. + range 0-134217727 (0-4GB) + default 327680 (10MB) + +config FSL_PME2_SRE_AIM + bool "Alternate Inconclusive Mode" + depends on FSL_PME2_CTRL + default n + help + Select the inconclusive match mode treatment. When true the + “alternate” inconclusive mode is used. When false the “default” + inconclusive mode is used. + +config FSL_PME2_SRE_ESR + bool "End of SUI Simple Report" + depends on FSL_PME2_CTRL + default n + help + Select if an End of SUI will produce a Simple End of SUI report. + +config FSL_PME2_SRE_CTX_SIZE_PER_SESSION + int "Default SRE Context Size per Session (16 => 64KB, 17 => 128KB)" + depends on FSL_PME2_CTRL + range 5 17 + default 17 + help + Select SRE context size per session as a power of 2. + range 5-17 + Examples: + 5 => 32 B + 6 => 64 B + 7 => 128 B + 8 => 256 B + 9 => 512 B + 10 => 1 KB + 11 => 2 KB + 12 => 4 KB + 13 => 8 KB + 14 => 16 KB + 15 => 32 KB + 16 => 64 KB + 17 => 128 KB + +config FSL_PME2_SRE_CNR + int "Configured Number of Stateful Rules as a multiple of 256 (128 => 32768 )" + depends on FSL_PME2_CTRL + range 0 128 + default 128 + help + Select number of stateful rules as a multiple of 256. + range 0-128 + Examples: + 0 => 0 + 1 => 256 + 2 => 512 + ... + 127 => 32512 + 128 => 32768 + +config FSL_PME2_SRE_MAX_INSTRUCTION_LIMIT + int "Maximum number of SRE instructions to be executed per reaction." + depends on FSL_PME2_CTRL + range 0 65535 + default 65535 + help + Select the maximum number of SRE instructions to be executed per + reaction. + range 0 65535 + +config FSL_PME2_SRE_MAX_BLOCK_NUMBER + int "Maximum number of Reaction Head blocks to be traversed per pattern match event" + depends on FSL_PME2_CTRL + range 0 32767 + default 32767 + help + Select the maximum number of reaction head blocks to be traversed per + pattern match event (e.g. a matched pattern or an End of SUI event). + range 0-32767 + +config FSL_PME2_PORTAL + tristate "Freescale PME2 (p4080, etc) device usage" + default y + ---help--- + This compiles I/O support for the Freescale PME2 pattern matching + part contained in datapath-enabled SoCs (ie. accessed via Qman and + Bman portal functionality). + +if FSL_PME2_PORTAL + +config FSL_PME2_TEST_HIGH + tristate "PME2 high-level self-test" + default n + ---help--- + This uses the high-level Qman driver (and the cpu-affine portals it + manages) to perform high-level PME2 API testing with it. + +config FSL_PME2_TEST_SCAN + tristate "PME2 scan self-test" + default n + ---help--- + This uses the high-level Qman driver (and the cpu-affine portals it + manages) to perform scan PME2 API testing with it. + +config FSL_PME2_TEST_SCAN_WITH_BPID + bool "PME2 scan self-test with buffer pool" + depends on FSL_PME2_TEST_SCAN && FSL_BMAN_PORTAL + default y + ---help--- + This uses a buffer pool id for scan test + +config FSL_PME2_TEST_SCAN_WITH_BPID_SIZE + int "Buffer Pool size." + depends on FSL_PME2_TEST_SCAN_WITH_BPID + range 0 11 + default 3 + ---help--- + This uses the specified buffer pool size. + +config FSL_PME2_DB + tristate "PME2 Database support" + depends on FSL_PME2_CTRL + default y + ---help--- + This compiles the database driver for PME2. + +config FSL_PME2_DB_QOSOUT_PRIORITY + int "PME DB output frame queue priority." + depends on FSL_PME2_DB + range 0 7 + default 2 + ---help--- + The PME DB has a scheduled output frame queue. The qos priority level is configurable. + range 0-7 + 0 => High Priority 0 + 1 => High Priority 1 + 2 => Medium Priority + 3 => Medium Priority + 4 => Medium Priority + 5 => Low Priority + 6 => Low Priority + 7 => Low Priority + +config FSL_PME2_SCAN + tristate "PME2 Scan support" + default y + ---help--- + This compiles the scan driver for PME2. + +config FSL_PME2_SCAN_DEBUG + bool "Debug Statements" + default n + depends on FSL_PME2_SCAN + ---help--- + The PME2_SCAN driver can optionally trace with more verbosity + of verbosity. + +endif + +config FSL_PME2_STAT_ACCUMULATOR_UPDATE_INTERVAL + int "Configure the pme2 statistics update interval in milliseconds" + depends on FSL_PME2_CTRL + range 0 10000 + default 3400 + help + The pme accumulator reads the current device statistics and add it + to a running counter. The frequency of these updates may be + controlled. If 0 is specified, no automatic updates is done. + range 0-10000 + +endmenu --- linux-ppc-3.8.0.orig/drivers/staging/fsl_pme2/pme2_test_high.c +++ linux-ppc-3.8.0/drivers/staging/fsl_pme2/pme2_test_high.c @@ -0,0 +1,238 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pme2_test.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("FSL PME2 (p4080) high-level self-test"); + +/* Default Flow Context State */ +static u8 fl_ctx_exp[]={ + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 +}; + +void scan_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_token *token) +{ + hexdump(fd, sizeof(*fd)); +} + +struct ctrl_op { + struct pme_ctx_ctrl_token ctx_ctr; + struct completion cb_done; + enum pme_status cmd_status; + u8 res_flag; +}; + +static void ctrl_cb(struct pme_ctx *ctx, const struct qm_fd *fd, + struct pme_ctx_ctrl_token *token) +{ + struct ctrl_op *ctrl = (struct ctrl_op *)token; + pr_info("pme2_test_high: ctrl_cb() invoked, fd;!\n"); + ctrl->cmd_status = pme_fd_res_status(fd); + ctrl->res_flag = pme_fd_res_flags(fd); + hexdump(fd, sizeof(*fd)); + complete(&ctrl->cb_done); +} + + +#define POST_CTRL(val) \ +do { \ + if (ret) \ + val = -1;\ + else if (pme_ctx_is_dead(&ctx))\ + val = -1;\ + else if (ctx_ctrl.cmd_status)\ + val = -1;\ + else if (ctx_ctrl.res_flag)\ + val = -1;\ +} while (0) + +void pme2_test_high(void) +{ + int post_ctrl = 0; + struct pme_flow flow; + struct qm_fqd_stashing stashing; + struct pme_ctx ctx = { + .cb = scan_cb + }; + int ret; + struct ctrl_op ctx_ctrl = { + .ctx_ctr.cb = ctrl_cb, + .cmd_status = 0, + .res_flag = 0 + }; + struct cpumask backup_mask = current->cpus_allowed; + struct cpumask new_mask = *qman_affine_cpus(); + + pr_info("PME2: high-level test starting\n"); + + cpumask_and(&new_mask, &new_mask, bman_affine_cpus()); + ret = set_cpus_allowed_ptr(current, &new_mask); + if (ret) { + post_ctrl = -1; + pr_info("PME2: test high: can't set cpumask\n"); + goto done; + } + + pme_sw_flow_init(&flow); + init_completion(&ctx_ctrl.cb_done); + ret = pme_ctx_init(&ctx, PME_CTX_FLAG_LOCAL, 0, 4, 4, 0, NULL); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto restore_mask; + + /* enable the context */ + pme_ctx_enable(&ctx); + pr_info("PME2: pme_ctx_enable done\n"); + ret = pme_ctx_ctrl_update_flow(&ctx, PME_CTX_OP_WAIT | PME_CMD_FCW_ALL, + &flow, &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_update_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&ctx, PME_CTX_OP_WAIT, &flow, + &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_read_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + if (memcmp(&flow, fl_ctx_exp, sizeof(flow))) { + pr_info("Default Flow Context Read FAIL\n"); + pr_info("Expected:\n"); + hexdump(fl_ctx_exp, sizeof(fl_ctx_exp)); + pr_info("Received:\n"); + hexdump(&flow, sizeof(flow)); + post_ctrl = -1; + goto disable_ctx; + } else + pr_info("Default Flow Context Read OK\n"); + /* start a NOP */ + ret = pme_ctx_ctrl_nop(&ctx, 0, &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_nop done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* start an update to add residue to the context */ + flow.ren = 1; + ret = pme_ctx_ctrl_update_flow(&ctx, PME_CTX_OP_WAIT | PME_CMD_FCW_RES, + &flow, &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_update_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* start a blocking disable */ + ret = pme_ctx_disable(&ctx, PME_CTX_OP_WAIT, &ctx_ctrl.ctx_ctr); + if (ret < 1) { + post_ctrl = -1; + goto finish_ctx; + } + wait_for_completion(&ctx_ctrl.cb_done); + /* do some reconfiguration */ + ret = pme_ctx_reconfigure_tx(&ctx, 63, 7); + if (ret) { + post_ctrl = -1; + goto finish_ctx; + } + stashing.exclusive = 0; + stashing.annotation_cl = 0; + stashing.data_cl = 2; + stashing.context_cl = 2; + ret = pme_ctx_reconfigure_rx(&ctx, 7, 0, &stashing); + if (ret) { + post_ctrl = -1; + goto finish_ctx; + } + /* reenable */ + ret = pme_ctx_enable(&ctx); + if (ret) { + post_ctrl = -1; + goto finish_ctx; + } + /* read back flow settings */ + ret = pme_ctx_ctrl_read_flow(&ctx, + PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT | PME_CMD_FCW_RES, &flow, + &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_read_flow done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + if (post_ctrl) + goto disable_ctx; + /* blocking NOP */ + ret = pme_ctx_ctrl_nop(&ctx, PME_CTX_OP_WAIT | PME_CTX_OP_WAIT_INT, + &ctx_ctrl.ctx_ctr); + pr_info("PME2: pme_ctx_ctrl_nop done\n"); + wait_for_completion(&ctx_ctrl.cb_done); + POST_CTRL(post_ctrl); + /* Disable, and done */ +disable_ctx: + ret = pme_ctx_disable(&ctx, PME_CTX_OP_WAIT, &ctx_ctrl.ctx_ctr); + BUG_ON(ret < 1); + wait_for_completion(&ctx_ctrl.cb_done); +finish_ctx: + pme_ctx_finish(&ctx); +restore_mask: + ret = set_cpus_allowed_ptr(current, &backup_mask); + if (ret) { + pr_err("PME2 test high: can't restore cpumask"); + post_ctrl = -1; + } +done: + if (post_ctrl) + pr_info("PME2: high-level test failed\n"); + else + pr_info("PME2: high-level test passed\n"); +} + +static int pme2_test_high_init(void) +{ + int big_loop = 2; + while (big_loop--) + pme2_test_high(); + return 0; +} + +static void pme2_test_high_exit(void) +{ +} + +module_init(pme2_test_high_init); +module_exit(pme2_test_high_exit); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/Makefile +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/Makefile @@ -0,0 +1,23 @@ +# Bman +obj-$(CONFIG_FSL_BMAN_CONFIG) += bman_config.o bman_driver.o +obj-$(CONFIG_FSL_BMAN_PORTAL) += bman_high.o +obj-$(CONFIG_FSL_BMAN_TEST) += bman_tester.o +obj-$(CONFIG_FSL_BMAN_DEBUGFS) += bman_debugfs_interface.o +bman_tester-y = bman_test.o +bman_tester-$(CONFIG_FSL_BMAN_TEST_HIGH) += bman_test_high.o +bman_tester-$(CONFIG_FSL_BMAN_TEST_THRESH) += bman_test_thresh.o +bman_debugfs_interface-y = bman_debugfs.o + +# Qman +obj-$(CONFIG_FSL_QMAN) += qman_utility.o qman_fqalloc.o +obj-$(CONFIG_FSL_QMAN_CONFIG) += qman_config.o qman_driver.o +obj-$(CONFIG_FSL_QMAN_PORTAL) += qman_high.o +obj-$(CONFIG_FSL_QMAN_TEST) += qman_tester.o +qman_tester-y = qman_test.o qman_test_hotpotato.o \ + qman_test_high.o +qman_tester-$(CONFIG_FSL_QMAN_TEST_ERRATA) += qman_test_errata.o +obj-$(CONFIG_FSL_QMAN_DEBUGFS) += qman_debugfs_interface.o +qman_debugfs_interface-y = qman_debugfs.o + +# USDPAA +obj-$(CONFIG_FSL_DPA_UIO) += dpa_uio.o --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_test.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_test.h @@ -0,0 +1,92 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +void bman_test_high(void); +void bman_test_thresh(void); + +static inline void __hexdump(unsigned long start, unsigned long end, + unsigned long p, size_t sz, unsigned char *c) +{ + while (start < end) { + unsigned int pos = 0; + char buf[64]; + int nl = 0; + pos += sprintf(buf + pos, "%08lx: ", start); + do { + if ((start < p) || (start >= (p + sz))) + pos += sprintf(buf + pos, ".."); + else + pos += sprintf(buf + pos, "%02x", *(c++)); + if (!(++start & 15)) { + buf[pos++] = '\n'; + nl = 1; + } else { + nl = 0; + if(!(start & 1)) + buf[pos++] = ' '; + if(!(start & 3)) + buf[pos++] = ' '; + } + } while (start & 15); + if (!nl) + buf[pos++] = '\n'; + buf[pos] = '\0'; + pr_info("%s", buf); + } +} +static inline void hexdump(void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)15; + unsigned long end = (p + sz + 15) & ~(unsigned long)15; + unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} +static inline void hexdump_by_cl(void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)63; + unsigned long end = (p + sz + 63) & ~(unsigned long)63; + unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/dpa_sys.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/dpa_sys.h @@ -0,0 +1,324 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef DPA_SYS_H +#define DPA_SYS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* When copying aligned words or shorts, try to avoid memcpy() */ +#define CONFIG_TRY_BETTER_MEMCPY + +/* This takes a "phandle" and dereferences to the cpu device-tree node, + * returning the cpu index. Returns negative error codes. */ +static inline int check_cpu_phandle(phandle ph) +{ + const u32 *cpu_val; + struct device_node *tmp_node = of_find_node_by_phandle(ph); + int cpu, ret; + + if (!tmp_node) { + pr_err("Bad 'cpu-handle'\n"); + return -EINVAL; + } + cpu_val = of_get_property(tmp_node, "reg", &ret); + if (!cpu_val || (ret != sizeof(*cpu_val))) { + pr_err("Can't get %s property 'reg'\n", tmp_node->full_name); + return -ENODEV; + } + for_each_present_cpu(cpu) { + if (*cpu_val == get_hard_smp_processor_id(cpu)) + goto done; + } + pr_err("Invalid cpu index %d in %s\n", *cpu_val, tmp_node->full_name); + return -ENODEV; +done: + of_node_put(tmp_node); + return cpu; +} + +/* Handle portals destined for USDPAA (user-space). + * + * The UIO layer is mostly Qman/Bman-agnostic, however the rest of the driver is + * separated along interface and implementation lines. So each Qman/Bman driver + * instantiates a dpa_uio_class and links dpa_uio_portal objects into it. If + * the dpa_uio driver module is built, it queries these two classes and creates + * the UIO devices accordingly. + */ +struct dpa_uio_class { + struct list_head list; + const char *dev_prefix; +}; +struct dpa_uio_portal { + enum { + dpa_uio_portal_bman, + dpa_uio_portal_qman, + } type; + union { + const struct bm_portal_config *bm_cfg; + const struct qm_portal_config *qm_cfg; + }; + struct list_head node; +}; +const struct dpa_uio_class *dpa_uio_bman(void); +const struct dpa_uio_class *dpa_uio_qman(void); + +/* These stubs are re-mapped to hypervisor+failover features in kernel trees + * that contain that support. */ +static inline int fsl_dpa_should_recover(void) +{ + return 0; +} +static inline int pamu_enable_liodn(struct device_node *n, int i) +{ + return 0; +} +/***********************/ +/* Misc inline assists */ +/***********************/ + +/* TODO: NB, we currently assume that hwsync() and lwsync() imply compiler + * barriers and that dcb*() won't fall victim to compiler or execution + * reordering with respect to other code/instructions that manipulate the same + * cacheline. */ +#define hwsync() \ + do { \ + __asm__ __volatile__ ("sync" : : : "memory"); \ + } while(0) +#define lwsync() \ + do { \ + __asm__ __volatile__ (stringify_in_c(LWSYNC) : : : "memory"); \ + } while(0) +#define dcbf(p) \ + do { \ + __asm__ __volatile__ ("dcbf 0,%0" : : "r" (p) : "memory"); \ + } while(0) +#define dcbt_ro(p) \ + do { \ + __asm__ __volatile__ ("dcbt 0,%0" : : "r" (p)); \ + } while(0) +#define dcbt_rw(p) \ + do { \ + __asm__ __volatile__ ("dcbtst 0,%0" : : "r" (p)); \ + } while(0) +#define dcbi(p) dcbf(p) +#ifdef CONFIG_PPC_E500MC +#define dcbzl(p) \ + do { \ + __asm__ __volatile__ ("dcbzl 0,%0" : : "r" (p)); \ + } while (0) +#define dcbz_64(p) \ + do { \ + dcbzl(p); \ + } while (0) +#define dcbf_64(p) \ + do { \ + dcbf(p); \ + } while (0) +/* Commonly used combo */ +#define dcbit_ro(p) \ + do { \ + dcbi(p); \ + dcbt_ro(p); \ + } while (0) +#else +#define dcbz(p) \ + do { \ + __asm__ __volatile__ ("dcbz 0,%0" : : "r" (p)); \ + } while (0) +#define dcbz_64(p) \ + do { \ + dcbz((u32)p + 32); \ + dcbz(p); \ + } while (0) +#define dcbf_64(p) \ + do { \ + dcbf((u32)p + 32); \ + dcbf(p); \ + } while (0) +/* Commonly used combo */ +#define dcbit_ro(p) \ + do { \ + dcbi(p); \ + dcbi((u32)p + 32); \ + dcbt_ro(p); \ + dcbt_ro((u32)p + 32); \ + } while (0) +#endif /* CONFIG_PPC_E500MC */ + +static inline u64 mfatb(void) +{ + u32 hi, lo, chk; + do { + hi = mfspr(SPRN_ATBU); + lo = mfspr(SPRN_ATBL); + chk = mfspr(SPRN_ATBU); + } while (unlikely(hi != chk)); + return ((u64)hi << 32) | (u64)lo; +} + +#ifdef CONFIG_FSL_DPA_CHECKING +#define DPA_ASSERT(x) \ + do { \ + if (!(x)) { \ + pr_crit("ASSERT: (%s:%d) %s\n", __FILE__, __LINE__, \ + __stringify_1(x)); \ + dump_stack(); \ + panic("assertion failure"); \ + } \ + } while(0) +#else +#define DPA_ASSERT(x) +#endif + +/* memcpy() stuff - when you know alignments in advance */ +#ifdef CONFIG_TRY_BETTER_MEMCPY +static inline void copy_words(void *dest, const void *src, size_t sz) +{ + u32 *__dest = dest; + const u32 *__src = src; + size_t __sz = sz >> 2; + BUG_ON((unsigned long)dest & 0x3); + BUG_ON((unsigned long)src & 0x3); + BUG_ON(sz & 0x3); + while (__sz--) + *(__dest++) = *(__src++); +} +static inline void copy_shorts(void *dest, const void *src, size_t sz) +{ + u16 *__dest = dest; + const u16 *__src = src; + size_t __sz = sz >> 1; + BUG_ON((unsigned long)dest & 0x1); + BUG_ON((unsigned long)src & 0x1); + BUG_ON(sz & 0x1); + while (__sz--) + *(__dest++) = *(__src++); +} +static inline void copy_bytes(void *dest, const void *src, size_t sz) +{ + u8 *__dest = dest; + const u8 *__src = src; + while (sz--) + *(__dest++) = *(__src++); +} +#else +#define copy_words memcpy +#define copy_shorts memcpy +#define copy_bytes memcpy +#endif + +/************/ +/* RB-trees */ +/************/ + +/* We encapsulate RB-trees so that its easier to use non-linux forms in + * non-linux systems. This also encapsulates the extra plumbing that linux code + * usually provides when using RB-trees. This encapsulation assumes that the + * data type held by the tree is u32. */ + +struct dpa_rbtree { + struct rb_root root; +}; +#define DPA_RBTREE { .root = RB_ROOT } + +static inline void dpa_rbtree_init(struct dpa_rbtree *tree) +{ + tree->root = RB_ROOT; +} + +#define IMPLEMENT_DPA_RBTREE(name, type, node_field, val_field) \ +static inline int name##_push(struct dpa_rbtree *tree, type *obj) \ +{ \ + struct rb_node *parent = NULL, **p = &tree->root.rb_node; \ + while (*p) { \ + u32 item; \ + parent = *p; \ + item = rb_entry(parent, type, node_field)->val_field; \ + if (obj->val_field < item) \ + p = &parent->rb_left; \ + else if (obj->val_field > item) \ + p = &parent->rb_right; \ + else \ + return -EBUSY; \ + } \ + rb_link_node(&obj->node_field, parent, p); \ + rb_insert_color(&obj->node_field, &tree->root); \ + return 0; \ +} \ +static inline void name##_del(struct dpa_rbtree *tree, type *obj) \ +{ \ + rb_erase(&obj->node_field, &tree->root); \ +} \ +static inline type *name##_find(struct dpa_rbtree *tree, u32 val) \ +{ \ + type *ret; \ + struct rb_node *p = tree->root.rb_node; \ + while (p) { \ + ret = rb_entry(p, type, node_field); \ + if (val < ret->val_field) \ + p = p->rb_left; \ + else if (val > ret->val_field) \ + p = p->rb_right; \ + else \ + return ret; \ + } \ + return NULL; \ +} + +#endif /* DPA_SYS_H */ + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_test_high.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_test_high.c @@ -0,0 +1,222 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_test.h" + +/*************/ +/* constants */ +/*************/ + +#define CGR_ID 27 +#define POOL_ID 2 +#define FQ_FLAGS QMAN_FQ_FLAG_DYNAMIC_FQID +#define NUM_ENQUEUES 10 +#define NUM_PARTIAL 4 +#define PORTAL_SDQCR (QM_SDQCR_SOURCE_CHANNELS | \ + QM_SDQCR_TYPE_PRIO_QOS | \ + QM_SDQCR_TOKEN_SET(0x98) | \ + QM_SDQCR_CHANNELS_DEDICATED | \ + QM_SDQCR_CHANNELS_POOL(POOL_ID)) +#define PORTAL_OPAQUE (void *)0xf00dbeef +#define VDQCR_FLAGS (QMAN_VOLATILE_FLAG_WAIT | QMAN_VOLATILE_FLAG_FINISH) + +/*************************************/ +/* Predeclarations (eg. for fq_base) */ +/*************************************/ + +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *, + struct qman_fq *, + const struct qm_dqrr_entry *); +static void cb_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_dc_ern(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); +static void cb_fqs(struct qman_portal *, struct qman_fq *, + const struct qm_mr_entry *); + +/***************/ +/* global vars */ +/***************/ + +static struct qm_fd fd, fd_dq; +static struct qman_fq fq_base = { + .cb.dqrr = cb_dqrr, + .cb.ern = cb_ern, + .cb.dc_ern = cb_dc_ern, + .cb.fqs = cb_fqs +}; +static DECLARE_WAIT_QUEUE_HEAD(waitqueue); +static int retire_complete, sdqcr_complete; + +/**********************/ +/* internal functions */ +/**********************/ + +/* Helpers for initialising and "incrementing" a frame descriptor */ +static void fd_init(struct qm_fd *__fd) +{ + qm_fd_addr_set64(__fd, 0xabdeadbeefLLU); + __fd->format = qm_fd_contig_big; + __fd->length29 = 0x0000ffff; + __fd->cmd = 0xfeedf00d; +} + +static void fd_inc(struct qm_fd *__fd) +{ + u64 t = qm_fd_addr_get64(__fd); + int z = t >> 40; + t <<= 1; + if (z) + t |= 1; + qm_fd_addr_set64(__fd, t); + __fd->length29--; + __fd->cmd++; +} + +/* The only part of the 'fd' we can't memcmp() is the ppid */ +static int fd_cmp(const struct qm_fd *a, const struct qm_fd *b) +{ + int r = (qm_fd_addr_get64(a) == qm_fd_addr_get64(b)) ? 0 : -1; + if (!r) + r = a->format - b->format; + if (!r) + r = a->opaque - b->opaque; + if (!r) + r = a->cmd - b->cmd; + return r; +} + +/********/ +/* test */ +/********/ + +static void do_enqueues(struct qman_fq *fq) +{ + unsigned int loop; + for (loop = 0; loop < NUM_ENQUEUES; loop++) { + if (qman_enqueue(fq, &fd, QMAN_ENQUEUE_FLAG_WAIT | + (((loop + 1) == NUM_ENQUEUES) ? + QMAN_ENQUEUE_FLAG_WAIT_SYNC : 0))) + panic("qman_enqueue() failed\n"); + fd_inc(&fd); + } +} + +void qman_test_high(void) +{ + int flags, res; + struct qman_fq *fq = &fq_base; + + pr_info("qman_test_high starting\n"); + fd_init(&fd); + fd_init(&fd_dq); + + /* Initialise (parked) FQ */ + if (qman_create_fq(0, FQ_FLAGS, fq)) + panic("qman_create_fq() failed\n"); + if (qman_init_fq(fq, QMAN_INITFQ_FLAG_LOCAL, NULL)) + panic("qman_init_fq() failed\n"); + + /* Do enqueues + VDQCR, twice. (Parked FQ) */ + do_enqueues(fq); + pr_info("VDQCR (till-empty);\n"); + if (qman_volatile_dequeue(fq, VDQCR_FLAGS, + QM_VDQCR_NUMFRAMES_TILLEMPTY)) + panic("qman_volatile_dequeue() failed\n"); + do_enqueues(fq); + pr_info("VDQCR (%d of %d);\n", NUM_PARTIAL, NUM_ENQUEUES); + if (qman_volatile_dequeue(fq, VDQCR_FLAGS, + QM_VDQCR_NUMFRAMES_SET(NUM_PARTIAL))) + panic("qman_volatile_dequeue() failed\n"); + pr_info("VDQCR (%d of %d);\n", NUM_ENQUEUES - NUM_PARTIAL, + NUM_ENQUEUES); + if (qman_volatile_dequeue(fq, VDQCR_FLAGS, + QM_VDQCR_NUMFRAMES_SET(NUM_ENQUEUES - NUM_PARTIAL))) + panic("qman_volatile_dequeue() failed\n"); + + do_enqueues(fq); + pr_info("scheduled dequeue (till-empty)\n"); + if (qman_schedule_fq(fq)) + panic("qman_schedule_fq() failed\n"); + wait_event(waitqueue, sdqcr_complete); + + /* Retire and OOS the FQ */ + res = qman_retire_fq(fq, &flags); + if (res < 0) + panic("qman_retire_fq() failed\n"); + wait_event(waitqueue, retire_complete); + if (flags & QMAN_FQ_STATE_BLOCKOOS) + panic("leaking frames\n"); + if (qman_oos_fq(fq)) + panic("qman_oos_fq() failed\n"); + qman_destroy_fq(fq, 0); + pr_info("qman_test_high finished\n"); +} + +static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *p, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + if (fd_cmp(&fd_dq, &dq->fd)) { + pr_err("BADNESS: dequeued frame doesn't match;\n"); + BUG(); + } + fd_inc(&fd_dq); + if (!(dq->stat & QM_DQRR_STAT_UNSCHEDULED) && !fd_cmp(&fd_dq, &fd)) { + sdqcr_complete = 1; + wake_up(&waitqueue); + } + return qman_cb_dqrr_consume; +} + +static void cb_ern(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + panic("cb_ern() unimplemented"); +} + +static void cb_dc_ern(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + panic("cb_dc_ern() unimplemented"); +} + +static void cb_fqs(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + u8 verb = (msg->verb & QM_MR_VERB_TYPE_MASK); + if ((verb != QM_MR_VERB_FQRN) && (verb != QM_MR_VERB_FQRNI)) + panic("unexpected FQS message"); + pr_info("Retirement message received\n"); + retire_complete = 1; + wake_up(&waitqueue); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_test_hotpotato.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_test_hotpotato.c @@ -0,0 +1,497 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qman_test.h" + +/* Algorithm: + * + * Each cpu will have HP_PER_CPU "handlers" set up, each of which incorporates + * an rx/tx pair of FQ objects (both of which are stashed on dequeue). The + * organisation of FQIDs is such that the HP_PER_CPU*NUM_CPUS handlers will + * shuttle a "hot potato" frame around them such that every forwarding action + * moves it from one cpu to another. (The use of more than one handler per cpu + * is to allow enough handlers/FQs to truly test the significance of caching - + * ie. when cache-expiries are occuring.) + * + * The "hot potato" frame content will be HP_NUM_WORDS*4 bytes in size, and the + * first and last words of the frame data will undergo a transformation step on + * each forwarding action. To achieve this, each handler will be assigned a + * 32-bit "mixer", that is produced using a 32-bit LFSR. When a frame is + * received by a handler, the mixer of the expected sender is XOR'd into all + * words of the entire frame, which is then validated against the original + * values. Then, before forwarding, the entire frame is XOR'd with the mixer of + * the current handler. Apart from validating that the frame is taking the + * expected path, this also provides some quasi-realistic overheads to each + * forwarding action - dereferencing *all* the frame data, computation, and + * conditional branching. There is a "special" handler designated to act as the + * instigator of the test by creating an enqueuing the "hot potato" frame, and + * to determine when the test has completed by counting HP_LOOPS iterations. + * + * Init phases: + * + * 1. prepare each cpu's 'hp_cpu' struct using on_each_cpu(,,1) and link them + * into 'hp_cpu_list'. Specifically, set processor_id, allocate HP_PER_CPU + * handlers and link-list them (but do no other handler setup). + * + * 2. scan over 'hp_cpu_list' HP_PER_CPU times, the first time sets each + * hp_cpu's 'iterator' to point to its first handler. With each loop, + * allocate rx/tx FQIDs and mixer values to the hp_cpu's iterator handler + * and advance the iterator for the next loop. This includes a final fixup, + * which connects the last handler to the first (and which is why phase 2 + * and 3 are separate). + * + * 3. scan over 'hp_cpu_list' HP_PER_CPU times, the first time sets each + * hp_cpu's 'iterator' to point to its first handler. With each loop, + * initialise FQ objects and advance the iterator for the next loop. + * Moreover, do this initialisation on the cpu it applies to so that Rx FQ + * initialisation targets the correct cpu. + */ + +/* helper to run something on all cpus (can't use on_each_cpu(), as that invokes + * the fn from irq context, which is too restrictive). */ +struct bstrap { + void (*fn)(void); + atomic_t started; +}; +static int bstrap_fn(void *__bstrap) +{ + struct bstrap *bstrap = __bstrap; + atomic_inc(&bstrap->started); + bstrap->fn(); + while (!kthread_should_stop()) + msleep(1); + return 0; +} +static int on_all_cpus(void (*fn)(void)) +{ + int cpu; + for_each_cpu(cpu, cpu_online_mask) { + struct bstrap bstrap = { + .fn = fn, + .started = ATOMIC_INIT(0) + }; + struct task_struct *k = kthread_create(bstrap_fn, &bstrap, + "hotpotato%d", cpu); + int ret; + if (IS_ERR(k)) + return -ENOMEM; + kthread_bind(k, cpu); + wake_up_process(k); + /* If we call kthread_stop() before the "wake up" has had an + * effect, then the thread may exit with -EINTR without ever + * running the function. So poll until it's started before + * requesting it to stop. */ + while (!atomic_read(&bstrap.started)) + msleep(10); + ret = kthread_stop(k); + if (ret) + return ret; + } + return 0; +} + +struct hp_handler { + + /* The following data is stashed when 'rx' is dequeued; */ + /* -------------- */ + /* The Rx FQ, dequeues of which will stash the entire hp_handler */ + struct qman_fq rx; + /* The Tx FQ we should forward to */ + struct qman_fq tx; + /* The value we XOR post-dequeue, prior to validating */ + u32 rx_mixer; + /* The value we XOR pre-enqueue, after validating */ + u32 tx_mixer; + /* what the hotpotato address should be on dequeue */ + dma_addr_t addr; + u32 *frame_ptr; + + /* The following data isn't (necessarily) stashed on dequeue; */ + /* -------------- */ + u32 fqid_rx, fqid_tx; + /* list node for linking us into 'hp_cpu' */ + struct list_head node; + /* Just to check ... */ + unsigned int processor_id; +} ____cacheline_aligned; + +struct hp_cpu { + /* identify the cpu we run on; */ + unsigned int processor_id; + /* root node for the per-cpu list of handlers */ + struct list_head handlers; + /* list node for linking us into 'hp_cpu_list' */ + struct list_head node; + /* when repeatedly scanning 'hp_list', each time linking the n'th + * handlers together, this is used as per-cpu iterator state */ + struct hp_handler *iterator; +}; + +/* Each cpu has one of these */ +static DEFINE_PER_CPU(struct hp_cpu, hp_cpus); + +/* links together the hp_cpu structs, in first-come first-serve order. */ +static LIST_HEAD(hp_cpu_list); +static spinlock_t hp_lock = __SPIN_LOCK_UNLOCKED(hp_lock); + +static unsigned int hp_cpu_list_length; + +/* the "special" handler, that starts and terminates the test. */ +static struct hp_handler *special_handler; +static int loop_counter; + +/* handlers are allocated out of this, so they're properly aligned. */ +static struct kmem_cache *hp_handler_slab; + +/* this is the frame data */ +static void *__frame_ptr; +static u32 *frame_ptr; +static dma_addr_t frame_dma; + +/* the main function waits on this */ +static DECLARE_WAIT_QUEUE_HEAD(queue); + +#define HP_PER_CPU 2 +#define HP_LOOPS 8 +/* 80 bytes, like a small ethernet frame, and bleeds into a second cacheline */ +#define HP_NUM_WORDS 80 +/* First word of the LFSR-based frame data */ +#define HP_FIRST_WORD 0xabbaf00d + +static inline u32 do_lfsr(u32 prev) +{ + return (prev >> 1) ^ (-(prev & 1u) & 0xd0000001u); +} + +static void allocate_frame_data(void) +{ + u32 lfsr = HP_FIRST_WORD; + int loop; + struct platform_device *pdev = platform_device_alloc("foobar", -1); + if (!pdev) + panic("platform_device_alloc() failed"); + if (platform_device_add(pdev)) + panic("platform_device_add() failed"); + __frame_ptr = kmalloc(4 * HP_NUM_WORDS, GFP_KERNEL); + if (!__frame_ptr) + panic("kmalloc() failed"); + frame_ptr = (void *)(((unsigned long)__frame_ptr + 63) & + ~(unsigned long)63); + for (loop = 0; loop < HP_NUM_WORDS; loop++) { + frame_ptr[loop] = lfsr; + lfsr = do_lfsr(lfsr); + } + frame_dma = dma_map_single(&pdev->dev, frame_ptr, 4 * HP_NUM_WORDS, + DMA_BIDIRECTIONAL); + platform_device_del(pdev); + platform_device_put(pdev); +} + +static void deallocate_frame_data(void) +{ + kfree(__frame_ptr); +} + +static inline void process_frame_data(struct hp_handler *handler, + const struct qm_fd *fd) +{ + u32 *p = handler->frame_ptr; + u32 lfsr = HP_FIRST_WORD; + int loop; + if (qm_fd_addr_get64(fd) != handler->addr) + panic("bad frame address"); + for (loop = 0; loop < HP_NUM_WORDS; loop++, p++) { + *p ^= handler->rx_mixer; + if (*p != lfsr) + panic("corrupt frame data"); + *p ^= handler->tx_mixer; + lfsr = do_lfsr(lfsr); + } +} + +static enum qman_cb_dqrr_result normal_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr) +{ + struct hp_handler *handler = (struct hp_handler *)fq; + + process_frame_data(handler, &dqrr->fd); + if (qman_enqueue(&handler->tx, &dqrr->fd, 0)) + panic("qman_enqueue() failed"); + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result special_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr) +{ + struct hp_handler *handler = (struct hp_handler *)fq; + + process_frame_data(handler, &dqrr->fd); + if (++loop_counter < HP_LOOPS) { + if (qman_enqueue(&handler->tx, &dqrr->fd, 0)) + panic("qman_enqueue() failed"); + } else { + pr_info("Received final (%dth) frame\n", loop_counter); + wake_up(&queue); + } + return qman_cb_dqrr_consume; +} + +static void create_per_cpu_handlers(void) +{ + struct hp_handler *handler; + int loop; + struct hp_cpu *hp_cpu = &__get_cpu_var(hp_cpus); + + hp_cpu->processor_id = smp_processor_id(); + spin_lock(&hp_lock); + list_add_tail(&hp_cpu->node, &hp_cpu_list); + hp_cpu_list_length++; + spin_unlock(&hp_lock); + INIT_LIST_HEAD(&hp_cpu->handlers); + for (loop = 0; loop < HP_PER_CPU; loop++) { + handler = kmem_cache_alloc(hp_handler_slab, GFP_KERNEL); + if (!handler) + panic("kmem_cache_alloc() failed"); + handler->processor_id = hp_cpu->processor_id; + handler->addr = frame_dma; + handler->frame_ptr = frame_ptr; + list_add_tail(&handler->node, &hp_cpu->handlers); + } +} + +static void destroy_per_cpu_handlers(void) +{ + struct list_head *loop, *tmp; + struct hp_cpu *hp_cpu = &__get_cpu_var(hp_cpus); + + spin_lock(&hp_lock); + list_del(&hp_cpu->node); + spin_unlock(&hp_lock); + list_for_each_safe(loop, tmp, &hp_cpu->handlers) { + u32 flags; + struct hp_handler *handler = list_entry(loop, struct hp_handler, + node); + if (qman_retire_fq(&handler->rx, &flags)) + panic("qman_retire_fq(rx) failed"); + BUG_ON(flags & QMAN_FQ_STATE_BLOCKOOS); + if (qman_oos_fq(&handler->rx)) + panic("qman_oos_fq(rx) failed"); + qman_destroy_fq(&handler->rx, 0); + qman_destroy_fq(&handler->tx, 0); + qm_fq_free(handler->fqid_rx); + list_del(&handler->node); + kmem_cache_free(hp_handler_slab, handler); + } +} + +static inline u8 num_cachelines(u32 offset) +{ + u8 res = (offset + (L1_CACHE_BYTES - 1)) + / (L1_CACHE_BYTES); + if (res > 3) + return 3; + return res; +} +#define STASH_DATA_CL \ + num_cachelines(HP_NUM_WORDS * 4) +#define STASH_CTX_CL \ + num_cachelines(offsetof(struct hp_handler,fqid_rx)) + +static void init_handler(void *__handler) +{ + struct qm_mcc_initfq opts; + struct hp_handler *handler = __handler; + BUG_ON(handler->processor_id != smp_processor_id()); + /* Set up rx */ + memset(&handler->rx, 0, sizeof(handler->rx)); + if (handler == special_handler) + handler->rx.cb.dqrr = special_dqrr; + else + handler->rx.cb.dqrr = normal_dqrr; + if (qman_create_fq(handler->fqid_rx, 0, &handler->rx)) + panic("qman_create_fq(rx) failed"); + memset(&opts, 0, sizeof(opts)); + opts.we_mask = QM_INITFQ_WE_FQCTRL | QM_INITFQ_WE_CONTEXTA; + opts.fqd.fq_ctrl = QM_FQCTRL_CTXASTASHING; + opts.fqd.context_a.stashing.data_cl = STASH_DATA_CL; + opts.fqd.context_a.stashing.context_cl = STASH_CTX_CL; + if (qman_init_fq(&handler->rx, QMAN_INITFQ_FLAG_SCHED | + QMAN_INITFQ_FLAG_LOCAL, &opts)) + panic("qman_init_fq(rx) failed"); + /* Set up tx */ + memset(&handler->tx, 0, sizeof(handler->tx)); + if (qman_create_fq(handler->fqid_tx, QMAN_FQ_FLAG_NO_MODIFY, + &handler->tx)) + panic("qman_create_fq(tx) failed"); +} + +static void init_phase2(void) +{ + int loop; + u32 fqid = 0; + u32 lfsr = 0xdeadbeef; + struct hp_cpu *hp_cpu; + struct hp_handler *handler; + + for (loop = 0; loop < HP_PER_CPU; loop++) { + list_for_each_entry(hp_cpu, &hp_cpu_list, node) { + if (!loop) + hp_cpu->iterator = list_first_entry( + &hp_cpu->handlers, + struct hp_handler, node); + else + hp_cpu->iterator = list_entry( + hp_cpu->iterator->node.next, + struct hp_handler, node); + /* Rx FQID is the previous handler's Tx FQID */ + hp_cpu->iterator->fqid_rx = fqid; + /* Allocate new FQID for Tx */ + fqid = qm_fq_new(); + if (!fqid) + panic("qm_fq_new() failed"); + hp_cpu->iterator->fqid_tx = fqid; + /* Rx mixer is the previous handler's Tx mixer */ + hp_cpu->iterator->rx_mixer = lfsr; + /* Get new mixer for Tx */ + lfsr = do_lfsr(lfsr); + hp_cpu->iterator->tx_mixer = lfsr; + } + } + /* Fix up the first handler (fqid_rx==0, rx_mixer=0xdeadbeef) */ + hp_cpu = list_first_entry(&hp_cpu_list, struct hp_cpu, node); + handler = list_first_entry(&hp_cpu->handlers, struct hp_handler, node); + BUG_ON((handler->fqid_rx != 0) || (handler->rx_mixer != 0xdeadbeef)); + handler->fqid_rx = fqid; + handler->rx_mixer = lfsr; + /* and tag it as our "special" handler */ + special_handler = handler; +} + +static void init_phase3(void) +{ + int loop; + struct hp_cpu *hp_cpu; + + for (loop = 0; loop < HP_PER_CPU; loop++) { + list_for_each_entry(hp_cpu, &hp_cpu_list, node) { + if (!loop) + hp_cpu->iterator = list_first_entry( + &hp_cpu->handlers, + struct hp_handler, node); + else + hp_cpu->iterator = list_entry( + hp_cpu->iterator->node.next, + struct hp_handler, node); + preempt_disable(); + if (hp_cpu->processor_id == smp_processor_id()) + init_handler(hp_cpu->iterator); + else + smp_call_function_single(hp_cpu->processor_id, + init_handler, hp_cpu->iterator, 1); + preempt_enable(); + } + } +} + +static void send_first_frame(void *ignore) +{ + u32 *p = special_handler->frame_ptr; + u32 lfsr = HP_FIRST_WORD; + int loop; + struct qm_fd fd; + + BUG_ON(special_handler->processor_id != smp_processor_id()); + memset(&fd, 0, sizeof(fd)); + qm_fd_addr_set64(&fd, special_handler->addr); + fd.format = qm_fd_contig_big; + fd.length29 = HP_NUM_WORDS * 4; + for (loop = 0; loop < HP_NUM_WORDS; loop++, p++) { + if (*p != lfsr) + panic("corrupt frame data"); + *p ^= special_handler->tx_mixer; + lfsr = do_lfsr(lfsr); + } + pr_info("Sending first frame\n"); + if (qman_enqueue(&special_handler->tx, &fd, 0)) + panic("qman_enqueue() failed"); +} + +void qman_test_hotpotato(void) +{ + if (cpumask_weight(cpu_online_mask) < 2) { + pr_info("qman_test_hotpotato, skip - only 1 CPU\n"); + return; + } + + pr_info("qman_test_hotpotato starting\n"); + + hp_cpu_list_length = 0; + loop_counter = 0; + hp_handler_slab = kmem_cache_create("hp_handler_slab", + sizeof(struct hp_handler), L1_CACHE_BYTES, + SLAB_HWCACHE_ALIGN, NULL); + if (!hp_handler_slab) + panic("kmem_cache_create() failed"); + + allocate_frame_data(); + + /* Init phase 1 */ + pr_info("Creating %d handlers per cpu...\n", HP_PER_CPU); + if (on_all_cpus(create_per_cpu_handlers)) + panic("on_each_cpu() failed"); + pr_info("Number of cpus: %d, total of %d handlers\n", + hp_cpu_list_length, hp_cpu_list_length * HP_PER_CPU); + + init_phase2(); + + init_phase3(); + + preempt_disable(); + if (special_handler->processor_id == smp_processor_id()) + send_first_frame(NULL); + else + smp_call_function_single(special_handler->processor_id, + send_first_frame, NULL, 1); + preempt_enable(); + + wait_event(queue, loop_counter == HP_LOOPS); + deallocate_frame_data(); + if (on_all_cpus(destroy_per_cpu_handlers)) + panic("on_each_cpu() failed"); + kmem_cache_destroy(hp_handler_slab); + pr_info("qman_test_hotpotato finished\n"); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_low.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_low.h @@ -0,0 +1,494 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_private.h" + +/***************************/ +/* Portal register assists */ +/***************************/ + +/* Cache-inhibited register offsets */ +#define REG_RCR_PI_CINH 0x0000 +#define REG_RCR_CI_CINH 0x0004 +#define REG_RCR_ITR 0x0008 +#define REG_CFG 0x0100 +#define REG_SCN(n) (0x0200 + ((n) << 2)) +#define REG_ISR 0x0e00 + +/* Cache-enabled register offsets */ +#define CL_CR 0x0000 +#define CL_RR0 0x0100 +#define CL_RR1 0x0140 +#define CL_RCR 0x1000 +#define CL_RCR_PI_CENA 0x3000 +#define CL_RCR_CI_CENA 0x3100 + +/* BTW, the drivers (and h/w programming model) already obtain the required + * synchronisation for portal accesses via lwsync(), hwsync(), and + * data-dependencies. Use of barrier()s or other order-preserving primitives + * simply degrade performance. Hence the use of the __raw_*() interfaces, which + * simply ensure that the compiler treats the portal registers as volatile (ie. + * non-coherent). */ + +/* Cache-inhibited register access. */ +#define __bm_in(bm, o) __raw_readl((bm)->addr_ci + (o)) +#define __bm_out(bm, o, val) __raw_writel((val), (bm)->addr_ci + (o)) +#define bm_in(reg) __bm_in(&portal->addr, REG_##reg) +#define bm_out(reg, val) __bm_out(&portal->addr, REG_##reg, val) + +/* Cache-enabled (index) register access */ +#define __bm_cl_touch_ro(bm, o) dcbt_ro((bm)->addr_ce + (o)) +#define __bm_cl_touch_rw(bm, o) dcbt_rw((bm)->addr_ce + (o)) +#define __bm_cl_in(bm, o) __raw_readl((bm)->addr_ce + (o)) +#define __bm_cl_out(bm, o, val) \ + do { \ + u32 *__tmpclout = (bm)->addr_ce + (o); \ + __raw_writel((val), __tmpclout); \ + dcbf(__tmpclout); \ + } while (0) +#define __bm_cl_invalidate(bm, o) dcbi((bm)->addr_ce + (o)) +#define bm_cl_touch_ro(reg) __bm_cl_touch_ro(&portal->addr, CL_##reg##_CENA) +#define bm_cl_touch_rw(reg) __bm_cl_touch_rw(&portal->addr, CL_##reg##_CENA) +#define bm_cl_in(reg) __bm_cl_in(&portal->addr, CL_##reg##_CENA) +#define bm_cl_out(reg, val) __bm_cl_out(&portal->addr, CL_##reg##_CENA, val) +#define bm_cl_invalidate(reg) __bm_cl_invalidate(&portal->addr, CL_##reg##_CENA) + +/* Cyclic helper for rings. FIXME: once we are able to do fine-grain perf + * analysis, look at using the "extra" bit in the ring index registers to avoid + * cyclic issues. */ +static inline u8 cyc_diff(u8 ringsize, u8 first, u8 last) +{ + /* 'first' is included, 'last' is excluded */ + if (first <= last) + return last - first; + return ringsize + last - first; +} + +/* Portal modes. + * Enum types; + * pmode == production mode + * cmode == consumption mode, + * Enum values use 3 letter codes. First letter matches the portal mode, + * remaining two letters indicate; + * ci == cache-inhibited portal register + * ce == cache-enabled portal register + * vb == in-band valid-bit (cache-enabled) + */ +enum bm_rcr_pmode { /* matches BCSP_CFG::RPM */ + bm_rcr_pci = 0, /* PI index, cache-inhibited */ + bm_rcr_pce = 1, /* PI index, cache-enabled */ + bm_rcr_pvb = 2 /* valid-bit */ +}; +enum bm_rcr_cmode { /* s/w-only */ + bm_rcr_cci, /* CI index, cache-inhibited */ + bm_rcr_cce /* CI index, cache-enabled */ +}; + + +/* ------------------------- */ +/* --- Portal structures --- */ + +#define BM_RCR_SIZE 8 + +struct bm_rcr { + struct bm_rcr_entry *ring, *cursor; + u8 ci, available, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + u32 busy; + enum bm_rcr_pmode pmode; + enum bm_rcr_cmode cmode; +#endif +}; + +struct bm_mc { + struct bm_mc_command *cr; + struct bm_mc_result *rr; + u8 rridx, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + enum { + /* Can only be _mc_start()ed */ + mc_idle, + /* Can only be _mc_commit()ed or _mc_abort()ed */ + mc_user, + /* Can only be _mc_retry()ed */ + mc_hw + } state; +#endif +}; + +struct bm_addr { + void __iomem *addr_ce; /* cache-enabled */ + void __iomem *addr_ci; /* cache-inhibited */ +}; + +struct bm_portal { + struct bm_addr addr; + struct bm_rcr rcr; + struct bm_mc mc; + struct bm_portal_config config; +} ____cacheline_aligned; + + +/* --------------- */ +/* --- RCR API --- */ + +/* Bit-wise logic to wrap a ring pointer by clearing the "carry bit" */ +#define RCR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(BM_RCR_SIZE << 6))) + +/* Bit-wise logic to convert a ring pointer to a ring index */ +static inline u8 RCR_PTR2IDX(struct bm_rcr_entry *e) +{ + return ((uintptr_t)e >> 6) & (BM_RCR_SIZE - 1); +} + +/* Increment the 'cursor' ring pointer, taking 'vbit' into account */ +static inline void RCR_INC(struct bm_rcr *rcr) +{ + /* NB: this is odd-looking, but experiments show that it generates + * fast code with essentially no branching overheads. We increment to + * the next RCR pointer and handle overflow and 'vbit'. */ + struct bm_rcr_entry *partial = rcr->cursor + 1; + rcr->cursor = RCR_CARRYCLEAR(partial); + if (partial != rcr->cursor) + rcr->vbit ^= BM_RCR_VERB_VBIT; +} + +static inline int bm_rcr_init(struct bm_portal *portal, enum bm_rcr_pmode pmode, + __maybe_unused enum bm_rcr_cmode cmode) +{ + /* This use of 'register', as well as all other occurances, is because + * it has been observed to generate much faster code with gcc than is + * otherwise the case. */ + register struct bm_rcr *rcr = &portal->rcr; + u32 cfg; + u8 pi; + + rcr->ring = portal->addr.addr_ce + CL_RCR; + rcr->ci = bm_in(RCR_CI_CINH) & (BM_RCR_SIZE - 1); + pi = bm_in(RCR_PI_CINH) & (BM_RCR_SIZE - 1); + rcr->cursor = rcr->ring + pi; + rcr->vbit = (bm_in(RCR_PI_CINH) & BM_RCR_SIZE) ? BM_RCR_VERB_VBIT : 0; + rcr->available = BM_RCR_SIZE - 1 - cyc_diff(BM_RCR_SIZE, rcr->ci, pi); + rcr->ithresh = bm_in(RCR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; + rcr->pmode = pmode; + rcr->cmode = cmode; +#endif + cfg = (bm_in(CFG) & 0xffffffe0) | (pmode & 0x3); /* BCSP_CFG::RPM */ + bm_out(CFG, cfg); + return 0; +} + +static inline void bm_rcr_finish(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + u8 pi = bm_in(RCR_PI_CINH) & (BM_RCR_SIZE - 1); + u8 ci = bm_in(RCR_CI_CINH) & (BM_RCR_SIZE - 1); + DPA_ASSERT(!rcr->busy); + if (pi != RCR_PTR2IDX(rcr->cursor)) + pr_crit("losing uncommited RCR entries\n"); + if (ci != rcr->ci) + pr_crit("missing existing RCR completions\n"); + if (rcr->ci != RCR_PTR2IDX(rcr->cursor)) + pr_crit("RCR destroyed unquiesced\n"); +} + +static inline struct bm_rcr_entry *bm_rcr_start(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(!rcr->busy); + if (!rcr->available) + return NULL; +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 1; +#endif + dcbz_64(rcr->cursor); + return rcr->cursor; +} + +static inline void bm_rcr_abort(struct bm_portal *portal) +{ + __maybe_unused register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline struct bm_rcr_entry *bm_rcr_pend_and_next( + struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode != bm_rcr_pvb); + if (rcr->available == 1) + return NULL; + rcr->cursor->__dont_write_directly__verb = myverb | rcr->vbit; + dcbf_64(rcr->cursor); + RCR_INC(rcr); + rcr->available--; + dcbz_64(rcr->cursor); + return rcr->cursor; +} + +static inline void bm_rcr_pci_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode == bm_rcr_pci); + rcr->cursor->__dont_write_directly__verb = myverb | rcr->vbit; + RCR_INC(rcr); + rcr->available--; + hwsync(); + bm_out(RCR_PI_CINH, RCR_PTR2IDX(rcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline void bm_rcr_pce_prefetch(struct bm_portal *portal) +{ + __maybe_unused register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->pmode == bm_rcr_pce); + bm_cl_invalidate(RCR_PI); + bm_cl_touch_rw(RCR_PI); +} + +static inline void bm_rcr_pce_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode == bm_rcr_pce); + rcr->cursor->__dont_write_directly__verb = myverb | rcr->vbit; + RCR_INC(rcr); + rcr->available--; + lwsync(); + bm_cl_out(RCR_PI, RCR_PTR2IDX(rcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline void bm_rcr_pvb_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_rcr *rcr = &portal->rcr; + struct bm_rcr_entry *rcursor; + DPA_ASSERT(rcr->busy); + DPA_ASSERT(rcr->pmode == bm_rcr_pvb); + lwsync(); + rcursor = rcr->cursor; + rcursor->__dont_write_directly__verb = myverb | rcr->vbit; + dcbf_64(rcursor); + RCR_INC(rcr); + rcr->available--; +#ifdef CONFIG_FSL_DPA_CHECKING + rcr->busy = 0; +#endif +} + +static inline u8 bm_rcr_cci_update(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + u8 diff, old_ci = rcr->ci; + DPA_ASSERT(rcr->cmode == bm_rcr_cci); + rcr->ci = bm_in(RCR_CI_CINH) & (BM_RCR_SIZE - 1); + diff = cyc_diff(BM_RCR_SIZE, old_ci, rcr->ci); + rcr->available += diff; + return diff; +} + +static inline void bm_rcr_cce_prefetch(struct bm_portal *portal) +{ + __maybe_unused register struct bm_rcr *rcr = &portal->rcr; + DPA_ASSERT(rcr->cmode == bm_rcr_cce); + bm_cl_touch_ro(RCR_CI); +} + +static inline u8 bm_rcr_cce_update(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + u8 diff, old_ci = rcr->ci; + DPA_ASSERT(rcr->cmode == bm_rcr_cce); + rcr->ci = bm_cl_in(RCR_CI) & (BM_RCR_SIZE - 1); + bm_cl_invalidate(RCR_CI); + diff = cyc_diff(BM_RCR_SIZE, old_ci, rcr->ci); + rcr->available += diff; + return diff; +} + +static inline u8 bm_rcr_get_ithresh(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + return rcr->ithresh; +} + +static inline void bm_rcr_set_ithresh(struct bm_portal *portal, u8 ithresh) +{ + register struct bm_rcr *rcr = &portal->rcr; + rcr->ithresh = ithresh; + bm_out(RCR_ITR, ithresh); +} + +static inline u8 bm_rcr_get_avail(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + return rcr->available; +} + +static inline u8 bm_rcr_get_fill(struct bm_portal *portal) +{ + register struct bm_rcr *rcr = &portal->rcr; + return BM_RCR_SIZE - 1 - rcr->available; +} + + +/* ------------------------------ */ +/* --- Management command API --- */ + +static inline int bm_mc_init(struct bm_portal *portal) +{ + register struct bm_mc *mc = &portal->mc; + mc->cr = portal->addr.addr_ce + CL_CR; + mc->rr = portal->addr.addr_ce + CL_RR0; + mc->rridx = (__raw_readb(&mc->cr->__dont_write_directly__verb) & + BM_MCC_VERB_VBIT) ? 0 : 1; + mc->vbit = mc->rridx ? BM_MCC_VERB_VBIT : 0; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return 0; +} + +static inline void bm_mc_finish(struct bm_portal *portal) +{ + __maybe_unused register struct bm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + if (mc->state != mc_idle) + pr_crit("Losing incomplete MC command\n"); +#endif +} + +static inline struct bm_mc_command *bm_mc_start(struct bm_portal *portal) +{ + register struct bm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_user; +#endif + dcbz_64(mc->cr); + return mc->cr; +} + +static inline void bm_mc_abort(struct bm_portal *portal) +{ + __maybe_unused register struct bm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_user); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif +} + +static inline void bm_mc_commit(struct bm_portal *portal, u8 myverb) +{ + register struct bm_mc *mc = &portal->mc; + struct bm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_user); + lwsync(); + mc->cr->__dont_write_directly__verb = myverb | mc->vbit; + dcbf(mc->cr); + dcbit_ro(rr); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_hw; +#endif +} + +static inline struct bm_mc_result *bm_mc_result(struct bm_portal *portal) +{ + register struct bm_mc *mc = &portal->mc; + struct bm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_hw); + /* The inactive response register's verb byte always returns zero until + * its command is submitted and completed. This includes the valid-bit, + * in case you were wondering... */ + if (!__raw_readb(&rr->verb)) { + dcbit_ro(rr); + return NULL; + } + mc->rridx ^= 1; + mc->vbit ^= BM_MCC_VERB_VBIT; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return rr; +} + + +/* ------------------------------------- */ +/* --- Portal interrupt register API --- */ + +static inline int bm_isr_init(__always_unused struct bm_portal *portal) +{ + return 0; +} + +static inline void bm_isr_finish(__always_unused struct bm_portal *portal) +{ +} + +#define SCN_REG(bpid) REG_SCN((bpid) / 32) +#define SCN_BIT(bpid) (0x80000000 >> (bpid & 31)) +static inline void bm_isr_bscn_mask(struct bm_portal *portal, u8 bpid, + int enable) +{ + u32 val; + DPA_ASSERT(bpid < bman_pool_max); + /* REG_SCN for bpid=0..31, REG_SCN+4 for bpid=32..63 */ + val = __bm_in(&portal->addr, SCN_REG(bpid)); + if (enable) + val |= SCN_BIT(bpid); + else + val &= ~SCN_BIT(bpid); + __bm_out(&portal->addr, SCN_REG(bpid), val); +} + +static inline u32 __bm_isr_read(struct bm_portal *portal, enum bm_isr_reg n) +{ + return __bm_in(&portal->addr, REG_ISR + (n << 2)); +} + +static inline void __bm_isr_write(struct bm_portal *portal, enum bm_isr_reg n, + u32 val) +{ + __bm_out(&portal->addr, REG_ISR + (n << 2), val); +} --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_driver.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_driver.c @@ -0,0 +1,586 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_private.h" + +/* + * Global variables of the max portal/pool number this bman version supported + */ +u16 bman_ip_rev; +EXPORT_SYMBOL(bman_ip_rev); +u16 bman_pool_max; +EXPORT_SYMBOL(bman_pool_max); + +/*****************/ +/* Portal driver */ +/*****************/ + +/* Compatibility behaviour (when no bpool-range is present) is that; + * (a) on a control plane, all pools that aren't explicitly mentioned in the dtb + * are available for allocation, + * (b) on a non-control plane, there is never any allocation possible at all. + * + * New behaviour is that if any "fsl,bpool-range" nodes are declared, they + * declare what is available for allocation, and this is independent of which + * pools are/aren't mentioned in the dtb. Eg. to stipulate that no allocation is + * possible, a fsl,bpool-range should be specified with zero items in it. + * + * This "pools" struct contains the allocator, and "explicit allocator" + * indicates whether the range is seeded explicitly (via at least one range) or + * implicitly (by being the set of pools that aren't declared). + */ +static struct bman_depletion pools; +static u8 num_pools; +static DEFINE_SPINLOCK(pools_lock); +static int explicit_allocator; + +static struct dpa_uio_class bman_uio = { + .list = LIST_HEAD_INIT(bman_uio.list), + .dev_prefix = "bman-uio-" +}; +const struct dpa_uio_class *dpa_uio_bman(void) +{ + return &bman_uio; +} +EXPORT_SYMBOL(dpa_uio_bman); + +static int __bm_pool_add(u32 bpid, u32 *cfg, int triplets) +{ + u64 total = 0; + BUG_ON(bpid >= bman_pool_max); +#ifdef CONFIG_FSL_BMAN_PORTAL + while (triplets--) { + struct bman_pool_params params = { + .bpid = bpid, + .flags = BMAN_POOL_FLAG_ONLY_RELEASE + }; + u64 c = ((u64)cfg[0] << 32) | cfg[1]; + u64 d = ((u64)cfg[2] << 32) | cfg[3]; + u64 b = ((u64)cfg[4] << 32) | cfg[5]; + struct bman_pool *pobj = bman_new_pool(¶ms); + if (!pobj) + return -ENOMEM; + while (c) { + struct bm_buffer bufs[8]; + int ret, num_bufs = 0; + do { + BUG_ON(b > 0xffffffffffffull); + bufs[num_bufs].bpid = bpid; + bm_buffer_set64(&bufs[num_bufs++], b); + b += d; + } while (--c && (num_bufs < 8)); + ret = bman_release(pobj, bufs, num_bufs, + BMAN_RELEASE_FLAG_WAIT); + if (ret) + panic("Seeding reserved buffer pool failed\n"); + total += num_bufs; + } + bman_free_pool(pobj); + cfg += 6; + } +#endif + /* Remove this pool from the allocator (by treating its declaration as + * an implicit "reservation") iff the allocator is *not* being set up + * explicitly defined via "bpool-range" nodes. */ + if (!explicit_allocator && !bman_depletion_get(&pools, bpid)) { + bman_depletion_set(&pools, bpid); + num_pools++; + } + if (total) + pr_info("Bman: reserved bpid %d, seeded %lld items\n", bpid, + total); + else + pr_info("Bman: reserved bpid %d\n", bpid); + return 0; +} + +int bm_pool_new(u32 *bpid) +{ + int ret = 0, b = bman_pool_max; + spin_lock(&pools_lock); + if (num_pools >= bman_pool_max) + ret = -ENOMEM; + else { + while (b-- && bman_depletion_get(&pools, b)) + ; + BUG_ON(b < 0); + bman_depletion_set(&pools, b); + *bpid = b; + num_pools++; + } + spin_unlock(&pools_lock); + return ret; +} +EXPORT_SYMBOL(bm_pool_new); + +void bm_pool_free(u32 bpid) +{ + spin_lock(&pools_lock); + BUG_ON(bpid >= bman_pool_max); + BUG_ON(!bman_depletion_get(&pools, bpid)); + bman_depletion_unset(&pools, bpid); + num_pools--; + spin_unlock(&pools_lock); +} +EXPORT_SYMBOL(bm_pool_free); + +#ifdef CONFIG_FSL_BMAN_PORTAL +/* To understand the use of this structure and the flow of operation for all + * this portal-setup code, please see qman_driver.c. The Bman case is much the + * same, but simpler (no Qman-specific fiddly bits). */ +struct affine_portal_data { + struct completion done; + const struct bm_portal_config *pconfig; + struct bman_portal *redirect; + int recovery_mode; + struct bman_portal *portal; +}; + +static __init int thread_init_affine_portal(void *__data) +{ + struct affine_portal_data *data = __data; + const struct bm_portal_config *pconfig = data->pconfig; + if (data->redirect) + data->portal = bman_create_affine_slave(data->redirect); + else { + data->portal = bman_create_affine_portal(pconfig, + data->recovery_mode); +#ifdef CONFIG_FSL_DPA_PIRQ_SLOW + if (data->portal) + bman_irqsource_add(BM_PIRQ_RCRI | BM_PIRQ_BSCN); +#endif + } + complete(&data->done); + return 0; +} + +static __init struct bman_portal *init_affine_portal( + struct bm_portal_config *pconfig, + int cpu, struct bman_portal *redirect, + int recovery_mode) +{ + struct affine_portal_data data = { + .done = COMPLETION_INITIALIZER_ONSTACK(data.done), + .pconfig = pconfig, + .redirect = redirect, + .recovery_mode = recovery_mode, + .portal = NULL + }; + struct task_struct *k = kthread_create(thread_init_affine_portal, &data, + "bman_affine%d", cpu); + int ret; + if (IS_ERR(k)) { + pr_err("Failed to init %sBman affine portal for cpu %d\n", + redirect ? "(slave) " : "", cpu); + return NULL; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&data.done); + ret = kthread_stop(k); + if (ret) { + pr_err("Bman portal initialisation failed, cpu %d, code %d\n", + cpu, ret); + return NULL; + } + if (data.portal) + pr_info("Bman portal %sinitialised, cpu %d\n", + redirect ? "(slave) " : + pconfig->public_cfg.is_shared ? "(shared) " : "", cpu); + return data.portal; +} +#endif + +static struct bm_portal_config * __init fsl_bman_portal_init( + struct device_node *node) +{ + struct bm_portal_config *pcfg; + const u32 *index; + const phandle *ph = NULL; + int irq, ret; + + pcfg = kmalloc(sizeof(*pcfg), GFP_KERNEL); + if (!pcfg) { + pr_err("can't allocate portal config"); + return NULL; + } + + if (of_device_is_compatible(node, "fsl,bman-portal-1.0")) { + bman_ip_rev = BMAN_REV10; + bman_pool_max = 64; + } else if (of_device_is_compatible(node, "fsl,bman-portal-2.0")) { + bman_ip_rev = BMAN_REV20; + bman_pool_max = 8; + } + + ret = of_address_to_resource(node, BM_ADDR_CE, + &pcfg->addr_phys[BM_ADDR_CE]); + if (ret) { + pr_err("Can't get %s property 'reg::CE'\n", node->full_name); + goto err; + } + ret = of_address_to_resource(node, BM_ADDR_CI, + &pcfg->addr_phys[BM_ADDR_CI]); + if (ret) { + pr_err("Can't get %s property 'reg::CI'\n", node->full_name); + goto err; + } + index = of_get_property(node, "cell-index", &ret); + if (!index || (ret != 4)) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "cell-index"); + goto err; + } + ph = of_get_property(node, "cpu-handle", &ret); + if (ph) { + if (ret != sizeof(phandle)) { + pr_err("Malformed %s property '%s'\n", node->full_name, + "cpu-handle"); + goto err; + } + ret = check_cpu_phandle(*ph); + if (ret < 0) + goto err; + pcfg->public_cfg.cpu = ret; + } else + pcfg->public_cfg.cpu = -1; + + irq = irq_of_parse_and_map(node, 0); + if (irq == NO_IRQ) { + pr_err("Can't get %s property 'interrupts'\n", node->full_name); + goto err; + } + pcfg->public_cfg.irq = irq; + pcfg->public_cfg.index = *index; + bman_depletion_fill(&pcfg->public_cfg.mask); + + if (of_get_property(node, "fsl,usdpaa-portal", &ret)) { + struct dpa_uio_portal *u = kmalloc(sizeof(*u), GFP_KERNEL); + if (!u) + goto err; + u->type = dpa_uio_portal_bman; + u->bm_cfg = pcfg; + list_add_tail(&u->node, &bman_uio.list); + /* Return NULL, otherwise the kernel may share it on CPUs that + * don't have their own portals, which would be ... *bad*. */ + return NULL; + } + + /* Map the portals now we know they aren't for UIO (the UIO code doesn't + * need the CE mapping, and so will do its own CI-only mapping). */ + pcfg->addr_virt[BM_ADDR_CE] = ioremap_prot( + pcfg->addr_phys[BM_ADDR_CE].start, + resource_size(&pcfg->addr_phys[BM_ADDR_CE]), + 0); + pcfg->addr_virt[BM_ADDR_CI] = ioremap_prot( + pcfg->addr_phys[BM_ADDR_CI].start, + resource_size(&pcfg->addr_phys[BM_ADDR_CI]), + _PAGE_GUARDED | _PAGE_NO_CACHE); + return pcfg; +err: + kfree(pcfg); + return NULL; +} + +static void __init fsl_bman_portal_destroy(struct bm_portal_config *pcfg) +{ + iounmap(pcfg->addr_virt[BM_ADDR_CE]); + iounmap(pcfg->addr_virt[BM_ADDR_CI]); + kfree(pcfg); +} + +static int __init fsl_bpool_init(struct device_node *node) +{ + int ret; + u32 *cfg = NULL, *thresh; + struct device_node *tmp_node; + u32 *bpid = (u32 *)of_get_property(node, "fsl,bpid", &ret); + if (!bpid || (ret!= 4)) { + pr_err("Can't get %s property 'fsl,bpid'\n", node->full_name); + return -ENODEV; + } + thresh = (u32 *)of_get_property(node, "fsl,bpool-thresholds", &ret); + if (thresh) { + if (ret != 16) { + pr_err("Invalid %s property '%s'\n", + node->full_name, "fsl,bpool-thresholds"); + return -ENODEV; + } +#ifndef CONFIG_FSL_BMAN_CONFIG + pr_err("Ignoring %s property '%s', no CCSR support\n", + node->full_name, "fsl,bpool-thresholds"); +#endif + } + /* If rebooted, we should not re-seed any pools via bpool-cfg. */ + /* TODO: parsing hypervisor fields to determine qualitative things like + * "was I rebooted" should probably be wrapped in fsl_hypervisor.h. */ + tmp_node = of_find_node_by_name(NULL, "hypervisor"); + if (!tmp_node || !of_find_property(tmp_node, "fsl,hv-stopped-by", + &ret)) + cfg = (u32 *)of_get_property(node, "fsl,bpool-cfg", &ret); + if (cfg && (!ret || (ret % 24))) { + pr_err("Invalid %s property '%s'\n", node->full_name, + "fsl,bpool-cfg"); + return -ENODEV; + } + if (cfg) + ret = __bm_pool_add(*bpid, cfg, ret / 24); + else + ret = __bm_pool_add(*bpid, NULL, 0); + if (ret) { + pr_err("Can't reserve bpid %d from node %s\n", *bpid, + node->full_name); + return ret; + } +#ifdef CONFIG_FSL_BMAN_CONFIG + if (thresh) { + ret = bm_pool_set(*bpid, thresh); + if (ret) + pr_err("No CCSR node for %s property '%s'\n", + node->full_name, "fsl,bpool-thresholds"); + } +#endif + return ret; +} + +static int __init fsl_bpool_range_init(struct device_node *node, + int recovery_mode) +{ + int ret, warned = 0; + u32 bpid; + u32 *range = (u32 *)of_get_property(node, "fsl,bpool-range", &ret); + if (!range) { + pr_err("No 'fsl,bpool-range' property in node %s\n", + node->full_name); + return -EINVAL; + } + if (ret != 8) { + pr_err("'fsl,bpool-range' is not a 2-cell range in node %s\n", + node->full_name); + return -EINVAL; + } + for (bpid = range[0]; bpid < (range[0] + range[1]); bpid++) { + if (bpid >= bman_pool_max) { + pr_err("BPIDs out of range in node %s\n", + node->full_name); + return -EINVAL; + } + if (!bman_depletion_get(&pools, bpid)) { + if (!warned) { + warned = 1; + pr_err("BPID overlap in node %s, ignoring\n", + node->full_name); + } + } else { + bman_depletion_unset(&pools, bpid); + num_pools--; + } + } +#ifdef CONFIG_FSL_BMAN_PORTAL + /* If in recovery mode *and* we are using a private BPID allocation + * range, then automatically clean up all BPIDs in that range so we can + * automatically exit recovery mode too. */ + if (recovery_mode) { + for (bpid = range[0]; bpid < (range[0] + range[1]); bpid++) { + ret = bman_recovery_cleanup_bpid(bpid); + if (ret) { + pr_err("Failed to recovery BPID %d\n", bpid); + return ret; + } + } + } +#else + BUG_ON(recovery_mode); +#endif + pr_info("Bman: BPID allocator includes range %d:%d%s\n", + range[0], range[1], recovery_mode ? " (recovered)" : ""); + return 0; +} + +#ifdef CONFIG_FSL_BMAN_PORTAL +static __init int __leave_recovery(void *__data) +{ + struct completion *done = __data; + bman_recovery_exit_local(); + complete(done); + return 0; +} + +int bman_recovery_exit(void) +{ + struct completion done = COMPLETION_INITIALIZER_ONSTACK(done); + unsigned int cpu; + + for_each_cpu(cpu, bman_affine_cpus()) { + struct task_struct *k = kthread_create(__leave_recovery, &done, + "bman_recovery"); + int ret; + if (IS_ERR(k)) { + pr_err("Thread failure (recovery) on cpu %d\n", cpu); + return -ENOMEM; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&done); + ret = kthread_stop(k); + if (ret) { + pr_err("Failed to exit recovery on cpu %d\n", cpu); + return ret; + } + pr_info("Bman portal exited recovery, cpu %d\n", cpu); + } + return 0; +} +EXPORT_SYMBOL(bman_recovery_exit); +#endif + +static __init int bman_init(void) +{ +#ifdef CONFIG_FSL_BMAN_PORTAL + struct cpumask primary_cpus = *cpu_none_mask; + struct cpumask slave_cpus = *cpu_online_mask; + struct bman_portal *sharing_portal = NULL; + int sharing_cpu = -1; +#endif + struct device_node *dn; + struct bm_portal_config *pcfg; + int ret, recovery_mode = 0; + LIST_HEAD(cfg_list); + + for_each_compatible_node(dn, NULL, "fsl,bman") { + if (!bman_init_error_int(dn)) + pr_info("Bman err interrupt handler present\n"); + else + pr_err("Bman err interrupt handler missing\n"); + } + if (!bman_have_ccsr()) { + /* If there's no CCSR, our bpid allocator is empty unless + * fsl,bpool-range nodes are used. */ + bman_depletion_fill(&pools); + num_pools = bman_pool_max; + } +#ifdef CONFIG_FSL_BMAN_PORTAL + if (fsl_dpa_should_recover()) + recovery_mode = 1; + for_each_compatible_node(dn, NULL, "fsl,bman-portal") { + pcfg = fsl_bman_portal_init(dn); + if (pcfg) { + if (pcfg->public_cfg.cpu >= 0) { + cpumask_set_cpu(pcfg->public_cfg.cpu, + &primary_cpus); + list_add(&pcfg->list, &cfg_list); + } else + fsl_bman_portal_destroy(pcfg); + } + } + /* only consider "online" CPUs */ + cpumask_and(&primary_cpus, &primary_cpus, cpu_online_mask); + if (cpumask_empty(&primary_cpus)) + /* No portals, we're done */ + return 0; + if (!cpumask_subset(cpu_online_mask, &primary_cpus)) { + /* Need to do some sharing. In lieu of anything more scientific + * (or configurable), we pick the last-most CPU that has a + * portal and share that one. */ + int next = cpumask_first(&primary_cpus); + while (next < nr_cpu_ids) { + sharing_cpu = next; + next = cpumask_next(next, &primary_cpus); + } + } + /* Parsing is done and sharing decisions are made, now initialise the + * portals and determine which "slave" CPUs are left over. */ + list_for_each_entry(pcfg, &cfg_list, list) { + struct bman_portal *p; + int is_shared = (!sharing_portal && (sharing_cpu >= 0) && + (pcfg->public_cfg.cpu == sharing_cpu)); + pcfg->public_cfg.is_shared = is_shared; + /* If it's not mapped to a CPU, or another portal is already + * initialised to the same CPU, skip this portal. */ + if (pcfg->public_cfg.cpu < 0 || !cpumask_test_cpu( + pcfg->public_cfg.cpu, &slave_cpus)) + continue; + p = init_affine_portal(pcfg, pcfg->public_cfg.cpu, NULL, + recovery_mode); + if (p) { + if (is_shared) + sharing_portal = p; + cpumask_clear_cpu(pcfg->public_cfg.cpu, &slave_cpus); + } + } + + if (sharing_portal) { + int loop; + for_each_cpu(loop, &slave_cpus) { + struct bman_portal *p = init_affine_portal(NULL, loop, + sharing_portal, recovery_mode); + if (!p) + pr_err("Failed slave Bman portal for cpu %d\n", + loop); + } + } +#else + for_each_compatible_node(dn, NULL, "fsl,bman-portal") { + pcfg = fsl_bman_portal_init(dn); + if (pcfg) + /* No kernel portal support, so if USDPAA didn't consume + * the portal, we've no other use for it. */ + fsl_bman_portal_destroy(pcfg); + } +#endif + for_each_compatible_node(dn, NULL, "fsl,bpool-range") { + if (!explicit_allocator) { + explicit_allocator = 1; + bman_depletion_fill(&pools); + num_pools = 64; + } + ret = fsl_bpool_range_init(dn, recovery_mode); + if (ret) + return ret; + } +#ifdef CONFIG_FSL_BMAN_PORTAL + /* If using private BPID allocation, exit recovery mode automatically + * (ie. after automatic recovery) */ + if (recovery_mode && explicit_allocator) { + ret = bman_recovery_exit(); + if (ret) + return ret; + } +#endif + for_each_compatible_node(dn, NULL, "fsl,bpool") { + ret = fsl_bpool_init(dn); + if (ret) + return ret; + } + pr_info("Bman portals initialised\n"); + return 0; +} +subsys_initcall(bman_init); --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_private.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_private.h @@ -0,0 +1,292 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "dpa_sys.h" +#include + +#if !defined(CONFIG_FSL_QMAN_FQ_LOOKUP) && defined(CONFIG_PPC64) +#error "_PPC64 requires _FSL_QMAN_FQ_LOOKUP" +#endif + + /* ----------------- */ + /* Congestion Groups */ + /* ----------------- */ +/* This wrapper represents a bit-array for the state of the 256 Qman congestion + * groups. Is also used as a *mask* for congestion groups, eg. so we ignore + * those that don't concern us. We harness the structure and accessor details + * already used in the management command to query congestion groups. */ +struct qman_cgrs { + struct __qm_mcr_querycongestion q; +}; +static inline void qman_cgrs_init(struct qman_cgrs *c) +{ + memset(c, 0, sizeof(*c)); +} +static inline void qman_cgrs_fill(struct qman_cgrs *c) +{ + memset(c, 0xff, sizeof(*c)); +} +static inline int qman_cgrs_get(struct qman_cgrs *c, int num) +{ + return QM_MCR_QUERYCONGESTION(&c->q, num); +} +static inline void qman_cgrs_set(struct qman_cgrs *c, int num) +{ + c->q.__state[__CGR_WORD(num)] |= (0x80000000 >> __CGR_SHIFT(num)); +} +static inline void qman_cgrs_unset(struct qman_cgrs *c, int num) +{ + c->q.__state[__CGR_WORD(num)] &= ~(0x80000000 >> __CGR_SHIFT(num)); +} +static inline int qman_cgrs_next(struct qman_cgrs *c, int num) +{ + while ((++num < __CGR_NUM) && !qman_cgrs_get(c, num)) + ; + return num; +} +static inline void qman_cgrs_cp(struct qman_cgrs *dest, + const struct qman_cgrs *src) +{ + memcpy(dest, src, sizeof(*dest)); +} +static inline void qman_cgrs_and(struct qman_cgrs *dest, + const struct qman_cgrs *a, const struct qman_cgrs *b) +{ + int ret; + u32 *_d = dest->q.__state; + const u32 *_a = a->q.__state; + const u32 *_b = b->q.__state; + for (ret = 0; ret < 8; ret++) + *(_d++) = *(_a++) & *(_b++); +} +static inline void qman_cgrs_xor(struct qman_cgrs *dest, + const struct qman_cgrs *a, const struct qman_cgrs *b) +{ + int ret; + u32 *_d = dest->q.__state; + const u32 *_a = a->q.__state; + const u32 *_b = b->q.__state; + for (ret = 0; ret < 8; ret++) + *(_d++) = *(_a++) ^ *(_b++); +} + +#define qman_cgrs_for_each_1(cgr, cgrs) \ + for ((cgr) = -1; (cgr) = qman_cgrs_next((cgrs), (cgr)),\ + (cgr) < __CGR_NUM;) + +/* used by CCSR and portal interrupt code */ +enum qm_isr_reg { + qm_isr_status = 0, + qm_isr_enable = 1, + qm_isr_disable = 2, + qm_isr_inhibit = 3 +}; + +#define QM_ADDR_CE 0 +#define QM_ADDR_CI 1 +struct qm_portal_config { + /* Corenet portal addresses; + * [0]==cache-enabled, [1]==cache-inhibited. */ + __iomem void *addr_virt[2]; + struct resource addr_phys[2]; + struct device_node *node; + /* Allow these to be joined in lists */ + struct list_head list; + /* User-visible portal configuration settings */ + struct qman_portal_config public_cfg; +}; + +/* Hooks for driver initialisation */ +__init int fqalloc_init(int use_bman); + +/* Revision info (for errata and feature handling) */ +#define QMAN_REV10 0x0100 +#define QMAN_REV11 0x0101 +#define QMAN_REV12 0x0102 +#define QMAN_REV20 0x0200 +extern u16 qman_ip_rev; /* 0 if uninitialised, otherwise QMAN_REVx */ + +#ifdef CONFIG_FSL_QMAN_CONFIG +/* Hooks from qman_driver.c to qman_config.c */ +int qman_init_error_int(struct device_node *node); +void qman_liodn_fixup(enum qm_channel channel); +#endif + +/* Hooks from qman_driver.c in to qman_high.c */ +struct qman_portal *qman_create_affine_portal( + const struct qm_portal_config *config, + const struct qman_cgrs *cgrs, + const struct qman_fq_cb *null_cb, + int recovery_mode); +struct qman_portal *qman_create_affine_slave(struct qman_portal *redirect); +const struct qm_portal_config *qman_destroy_affine_portal(void); +void qman_recovery_exit_local(void); + +/* This CGR feature is supported by h/w and required by unit-tests and the + * debugfs hooks, so is implemented in the driver. However it allows an explicit + * corruption of h/w fields by s/w that are usually incorruptible (because the + * counters are usually maintained entirely within h/w). As such, we declare + * this API internally. */ +int qman_testwrite_cgr(struct qman_cgr *cgr, u64 i_bcnt, + struct qm_mcr_cgrtestwrite *result); + +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +/* If the fq object pointer is greater than the size of context_b field, + * than a lookup table is required. */ +int qman_setup_fq_lookup_table(size_t num_entries); +#endif + +/*************************************************/ +/* QMan s/w corenet portal, low-level i/face */ +/*************************************************/ + +/* Note: most functions are only used by the high-level interface, so are + * inlined from qman_low.h. The stuff below is for use by other parts of the + * driver. */ + +/* For qm_dqrr_sdqcr_set(); Choose one SOURCE. Choose one COUNT. Choose one + * dequeue TYPE. Choose TOKEN (8-bit). + * If SOURCE == CHANNELS, + * Choose CHANNELS_DEDICATED and/or CHANNELS_POOL(n). + * You can choose DEDICATED_PRECEDENCE if the portal channel should have + * priority. + * If SOURCE == SPECIFICWQ, + * Either select the work-queue ID with SPECIFICWQ_WQ(), or select the + * channel (SPECIFICWQ_DEDICATED or SPECIFICWQ_POOL()) and specify the + * work-queue priority (0-7) with SPECIFICWQ_WQ() - either way, you get the + * same value. + */ +#define QM_SDQCR_SOURCE_CHANNELS 0x0 +#define QM_SDQCR_SOURCE_SPECIFICWQ 0x40000000 +#define QM_SDQCR_COUNT_EXACT1 0x0 +#define QM_SDQCR_COUNT_UPTO3 0x20000000 +#define QM_SDQCR_DEDICATED_PRECEDENCE 0x10000000 +#define QM_SDQCR_TYPE_MASK 0x03000000 +#define QM_SDQCR_TYPE_NULL 0x0 +#define QM_SDQCR_TYPE_PRIO_QOS 0x01000000 +#define QM_SDQCR_TYPE_ACTIVE_QOS 0x02000000 +#define QM_SDQCR_TYPE_ACTIVE 0x03000000 +#define QM_SDQCR_TOKEN_MASK 0x00ff0000 +#define QM_SDQCR_TOKEN_SET(v) (((v) & 0xff) << 16) +#define QM_SDQCR_TOKEN_GET(v) (((v) >> 16) & 0xff) +#define QM_SDQCR_CHANNELS_DEDICATED 0x00008000 +#if 0 /* These are defined in the external fsl_qman.h API */ +#define QM_SDQCR_CHANNELS_POOL_MASK 0x00007fff +#define QM_SDQCR_CHANNELS_POOL(n) (0x00008000 >> (n)) +#endif +#define QM_SDQCR_SPECIFICWQ_MASK 0x000000f7 +#define QM_SDQCR_SPECIFICWQ_DEDICATED 0x00000000 +#define QM_SDQCR_SPECIFICWQ_POOL(n) ((n) << 4) +#define QM_SDQCR_SPECIFICWQ_WQ(n) (n) + +/* For qm_dqrr_vdqcr_set(); Choose one PRECEDENCE. EXACT is optional. Use + * NUMFRAMES(n) (6-bit) or NUMFRAMES_TILLEMPTY to fill in the frame-count. Use + * FQID(n) to fill in the frame queue ID. */ +#if 0 /* These are defined in the external fsl_qman.h API */ +#define QM_VDQCR_PRECEDENCE_VDQCR 0x0 +#define QM_VDQCR_PRECEDENCE_SDQCR 0x80000000 +#define QM_VDQCR_EXACT 0x40000000 +#define QM_VDQCR_NUMFRAMES_MASK 0x3f000000 +#define QM_VDQCR_NUMFRAMES_SET(n) (((n) & 0x3f) << 24) +#define QM_VDQCR_NUMFRAMES_GET(n) (((n) >> 24) & 0x3f) +#define QM_VDQCR_NUMFRAMES_TILLEMPTY QM_VDQCR_NUMFRAMES_SET(0) +#endif +#define QM_VDQCR_FQID_MASK 0x00ffffff +#define QM_VDQCR_FQID(n) ((n) & QM_VDQCR_FQID_MASK) + +/* For qm_dqrr_pdqcr_set(); Choose one MODE. Choose one COUNT. + * If MODE==SCHEDULED + * Choose SCHEDULED_CHANNELS or SCHEDULED_SPECIFICWQ. Choose one dequeue TYPE. + * If CHANNELS, + * Choose CHANNELS_DEDICATED and/or CHANNELS_POOL() channels. + * You can choose DEDICATED_PRECEDENCE if the portal channel should have + * priority. + * If SPECIFICWQ, + * Either select the work-queue ID with SPECIFICWQ_WQ(), or select the + * channel (SPECIFICWQ_DEDICATED or SPECIFICWQ_POOL()) and specify the + * work-queue priority (0-7) with SPECIFICWQ_WQ() - either way, you get the + * same value. + * If MODE==UNSCHEDULED + * Choose FQID(). + */ +#define QM_PDQCR_MODE_SCHEDULED 0x0 +#define QM_PDQCR_MODE_UNSCHEDULED 0x80000000 +#define QM_PDQCR_SCHEDULED_CHANNELS 0x0 +#define QM_PDQCR_SCHEDULED_SPECIFICWQ 0x40000000 +#define QM_PDQCR_COUNT_EXACT1 0x0 +#define QM_PDQCR_COUNT_UPTO3 0x20000000 +#define QM_PDQCR_DEDICATED_PRECEDENCE 0x10000000 +#define QM_PDQCR_TYPE_MASK 0x03000000 +#define QM_PDQCR_TYPE_NULL 0x0 +#define QM_PDQCR_TYPE_PRIO_QOS 0x01000000 +#define QM_PDQCR_TYPE_ACTIVE_QOS 0x02000000 +#define QM_PDQCR_TYPE_ACTIVE 0x03000000 +#define QM_PDQCR_CHANNELS_DEDICATED 0x00008000 +#define QM_PDQCR_CHANNELS_POOL(n) (0x00008000 >> (n)) +#define QM_PDQCR_SPECIFICWQ_MASK 0x000000f7 +#define QM_PDQCR_SPECIFICWQ_DEDICATED 0x00000000 +#define QM_PDQCR_SPECIFICWQ_POOL(n) ((n) << 4) +#define QM_PDQCR_SPECIFICWQ_WQ(n) (n) +#define QM_PDQCR_FQID(n) ((n) & 0xffffff) + +/* Used by all portal interrupt registers except 'inhibit'. NB, some of these + * definitions are exported for use by the qman_irqsource_***() APIs, so are + * commented-out here. */ +#define QM_PIRQ_DQAVAIL 0x0000ffff /* Channels with frame availability */ +#if 0 +#define QM_PIRQ_CSCI 0x00100000 /* Congestion State Change */ +#define QM_PIRQ_EQCI 0x00080000 /* Enqueue Command Committed */ +#define QM_PIRQ_EQRI 0x00040000 /* EQCR Ring (below threshold) */ +#define QM_PIRQ_DQRI 0x00020000 /* DQRR Ring (non-empty) */ +#define QM_PIRQ_MRI 0x00010000 /* MR Ring (non-empty) */ +/* This mask contains all the interrupt sources that need handling except DQRI, + * ie. that if present should trigger slow-path processing. */ +#define QM_PIRQ_SLOW (QM_PIRQ_CSCI | QM_PIRQ_EQCI | QM_PIRQ_EQRI | \ + QM_PIRQ_MRI) +#endif +/* The DQAVAIL interrupt fields break down into these bits; */ +#define QM_DQAVAIL_PORTAL 0x8000 /* Portal channel */ +#define QM_DQAVAIL_POOL(n) (0x8000 >> (n)) /* Pool channel, n==[1..15] */ +#define QM_DQAVAIL_MASK 0xffff +/* This mask contains all the "irqsource" bits visible to API users */ +#define QM_PIRQ_VISIBLE (QM_PIRQ_SLOW | QM_PIRQ_DQRI) + +/* These are qm__(). So for example, qm_disable_write() means "write + * the disable register" rather than "disable the ability to write". */ +#define qm_isr_status_read(qm) __qm_isr_read(qm, qm_isr_status) +#define qm_isr_status_clear(qm, m) __qm_isr_write(qm, qm_isr_status, m) +#define qm_isr_enable_read(qm) __qm_isr_read(qm, qm_isr_enable) +#define qm_isr_enable_write(qm, v) __qm_isr_write(qm, qm_isr_enable, v) +#define qm_isr_disable_read(qm) __qm_isr_read(qm, qm_isr_disable) +#define qm_isr_disable_write(qm, v) __qm_isr_write(qm, qm_isr_disable, v) +/* TODO: unfortunate name-clash here, reword? */ +#define qm_isr_inhibit(qm) __qm_isr_write(qm, qm_isr_inhibit, 1) +#define qm_isr_uninhibit(qm) __qm_isr_write(qm, qm_isr_inhibit, 0) --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_fqalloc.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_fqalloc.c @@ -0,0 +1,264 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_private.h" + +#include + +/****************/ +/* FQ allocator */ +/****************/ + +/* Global flag: use BPID==0 (fq_pool), or use the range-allocator? */ +static int use_bman; + +#ifdef CONFIG_FSL_BMAN_PORTAL +static struct bman_pool *fq_pool; +static const struct bman_pool_params fq_pool_params; +#endif + +__init int fqalloc_init(int __use_bman) +{ + use_bman = __use_bman; +#ifdef CONFIG_FSL_BMAN_PORTAL + if (use_bman) { + fq_pool = bman_new_pool(&fq_pool_params); + if (!fq_pool) + return -ENOMEM; + } +#else + BUG_ON(use_bman); +#endif + return 0; +} + +u32 qm_fq_new(void) +{ +#ifdef CONFIG_FSL_BMAN_PORTAL + struct bm_buffer buf; + int ret; +#endif + + if (!use_bman) { + u32 result; + if (qman_alloc_fqid(&result) < 0) + return 0; + return result; + } +#ifdef CONFIG_FSL_BMAN_PORTAL + BUG_ON(!fq_pool); + ret = bman_acquire(fq_pool, &buf, 1, 0); + if (ret != 1) + return 0; + return (u32)bm_buffer_get64(&buf); +#else + BUG(); +#endif +} +EXPORT_SYMBOL(qm_fq_new); + +int qm_fq_free_flags(u32 fqid, __maybe_unused u32 flags) +{ +#ifdef CONFIG_FSL_BMAN_PORTAL + struct bm_buffer buf; + u32 bflags = 0; + int ret; + bm_buffer_set64(&buf, fqid); +#endif + + if (!use_bman) { + qman_release_fqid(fqid); + return 0; + } +#ifdef CONFIG_FSL_BMAN_PORTAL +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QM_FQ_FREE_WAIT) { + bflags |= BMAN_RELEASE_FLAG_WAIT; + if (flags & BMAN_RELEASE_FLAG_WAIT_INT) + bflags |= BMAN_RELEASE_FLAG_WAIT_INT; + if (flags & BMAN_RELEASE_FLAG_WAIT_SYNC) + bflags |= BMAN_RELEASE_FLAG_WAIT_SYNC; + } +#endif + ret = bman_release(fq_pool, &buf, 1, bflags); + return ret; +#else + BUG(); +#endif +} +EXPORT_SYMBOL(qm_fq_free_flags); + +/* Global state for the allocator */ +static DEFINE_SPINLOCK(alloc_lock); +static LIST_HEAD(alloc_list); + +/* The allocator is a (possibly-empty) list of these; */ +struct alloc_node { + struct list_head list; + u32 base; + u32 num; +}; + +/* #define FQRANGE_DEBUG */ + +#ifdef FQRANGE_DEBUG +#define DPRINT pr_info +static void DUMP(void) +{ + int off = 0; + char buf[256]; + struct alloc_node *p; + list_for_each_entry(p, &alloc_list, list) { + if (off < 255) + off += snprintf(buf + off, 255-off, "{%d,%d}", + p->base, p->base + p->num - 1); + } + pr_info("%s\n", buf); +} +#else +#define DPRINT(x...) do { ; } while(0) +#define DUMP() do { ; } while(0) +#endif + +int qman_alloc_fqid_range(u32 *result, u32 count, u32 align, int partial) +{ + struct alloc_node *i = NULL, *next_best = NULL; + u32 base, next_best_base = 0, num = 0, next_best_num = 0; + struct alloc_node *margin_left, *margin_right; + + *result = (u32)-1; + DPRINT("alloc_range(%d,%d,%d)\n", count, align, partial); + DUMP(); + /* If 'align' is 0, it should behave as though it was 1 */ + if (!align) + align = 1; + margin_left = kmalloc(sizeof(*margin_left), GFP_KERNEL); + if (!margin_left) + goto err; + margin_right = kmalloc(sizeof(*margin_right), GFP_KERNEL); + if (!margin_right) { + kfree(margin_left); + goto err; + } + spin_lock_irq(&alloc_lock); + list_for_each_entry(i, &alloc_list, list) { + base = (i->base + align - 1) / align; + base *= align; + if ((base - i->base) >= i->num) + /* alignment is impossible, regardless of count */ + continue; + num = i->num - (base - i->base); + if (num >= count) { + /* this one will do nicely */ + num = count; + goto done; + } + if (num > next_best_num) { + next_best = i; + next_best_base = base; + next_best_num = num; + } + } + if (partial && next_best) { + i = next_best; + base = next_best_base; + num = next_best_num; + } else + i = NULL; +done: + if (i) { + if (base != i->base) { + margin_left->base = i->base; + margin_left->num = base - i->base; + list_add_tail(&margin_left->list, &i->list); + } else + kfree(margin_left); + if ((base + num) < (i->base + i->num)) { + margin_right->base = base + num; + margin_right->num = (i->base + i->num) - + (base + num); + list_add(&margin_right->list, &i->list); + } else + kfree(margin_right); + list_del(&i->list); + kfree(i); + *result = base; + } + spin_unlock_irq(&alloc_lock); +err: + DPRINT("returning %d\n", i ? num : -ENOMEM); + DUMP(); + return i ? (int)num : -ENOMEM; +} +EXPORT_SYMBOL(qman_alloc_fqid_range); + +void qman_release_fqid_range(u32 fqid, u32 count) +{ + struct alloc_node *i, *node = kmalloc(sizeof(*node), GFP_KERNEL); + DPRINT("release_range(%d,%d)\n", fqid, count); + DUMP(); + spin_lock_irq(&alloc_lock); + node->base = fqid; + node->num = count; + list_for_each_entry(i, &alloc_list, list) { + if (i->base >= node->base) { + list_add_tail(&node->list, &i->list); + goto done; + } + } + list_add_tail(&node->list, &alloc_list); +done: + /* Merge to the left */ + i = list_entry(node->list.prev, struct alloc_node, list); + if (node->list.prev != &alloc_list) { + BUG_ON((i->base + i->num) > node->base); + if ((i->base + i->num) == node->base) { + node->base = i->base; + node->num += i->num; + list_del(&i->list); + kfree(i); + } + } + /* Merge to the right */ + i = list_entry(node->list.next, struct alloc_node, list); + if (node->list.next != &alloc_list) { + BUG_ON((node->base + node->num) > i->base); + if ((node->base + node->num) == i->base) { + node->num += i->num; + list_del(&i->list); + kfree(i); + } + } + spin_unlock_irq(&alloc_lock); + DUMP(); +} +EXPORT_SYMBOL(qman_release_fqid_range); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_high.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_high.c @@ -0,0 +1,1044 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_low.h" + +/* Compilation constants */ +#define RCR_THRESH 2 /* reread h/w CI when running out of space */ +#define IRQNAME "BMan portal %d" +#define MAX_IRQNAME 16 /* big enough for "BMan portal %d" */ + +struct bman_portal { + struct bm_portal p; + /* 2-element array. pools[0] is mask, pools[1] is snapshot. */ + struct bman_depletion *pools; + int thresh_set; + unsigned long irq_sources; + u32 slowpoll; /* only used when interrupts are off */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + struct bman_pool *rcri_owned; /* only 1 release WAIT_SYNC at a time */ +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spinlock_t sharing_lock; /* only used if is_shared */ + int is_shared; + struct bman_portal *sharing_redirect; +#endif + /* When the cpu-affine portal is activated, this is non-NULL */ + const struct bm_portal_config *config; + /* 64-entry hash-table of pool objects that are tracking depletion + * entry/exit (ie. BMAN_POOL_FLAG_DEPLETION). This isn't fast-path, so + * we're not fussy about cache-misses and so forth - whereas the above + * members should all fit in one cacheline. + * BTW, with 64 entries in the hash table and 64 buffer pools to track, + * you'll never guess the hash-function ... */ + struct bman_pool *cb[64]; + char irqname[MAX_IRQNAME]; +}; + +/* For an explanation of the locking, redirection, or affine-portal logic, + * please consult the Qman driver for details. This is the same, only simpler + * (no fiddly Qman-specific bits.) */ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +#define PORTAL_IRQ_LOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_lock_irqsave(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_save(irqflags); \ + } while (0) +#define PORTAL_IRQ_UNLOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_unlock_irqrestore(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_restore(irqflags); \ + } while (0) +#else +#define PORTAL_IRQ_LOCK(p, irqflags) local_irq_save(irqflags) +#define PORTAL_IRQ_UNLOCK(p, irqflags) local_irq_restore(irqflags) +#endif + +static cpumask_t affine_mask; +static DEFINE_SPINLOCK(affine_mask_lock); +static DEFINE_PER_CPU(struct bman_portal, bman_affine_portal); +static inline struct bman_portal *get_raw_affine_portal(void) +{ + return &get_cpu_var(bman_affine_portal); +} +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +static inline struct bman_portal *get_affine_portal(void) +{ + struct bman_portal *p = get_raw_affine_portal(); + if (p->sharing_redirect) + return p->sharing_redirect; + return p; +} +#else +#define get_affine_portal() get_raw_affine_portal() +#endif +static inline void put_affine_portal(void) +{ + put_cpu_var(bman_affine_portal); +} + +/* GOTCHA: this object type refers to a pool, it isn't *the* pool. There may be + * more than one such object per Bman buffer pool, eg. if different users of the + * pool are operating via different portals. */ +struct bman_pool { + struct bman_pool_params params; + /* Used for hash-table admin when using depletion notifications. */ + struct bman_portal *portal; + struct bman_pool *next; + /* stockpile state - NULL unless BMAN_POOL_FLAG_STOCKPILE is set */ + struct bm_buffer *sp; + unsigned int sp_fill; +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_t in_use; +#endif +}; + +/* (De)Registration of depletion notification callbacks */ +static void depletion_link(struct bman_portal *portal, struct bman_pool *pool) +{ + __maybe_unused unsigned long irqflags; + pool->portal = portal; + PORTAL_IRQ_LOCK(portal, irqflags); + pool->next = portal->cb[pool->params.bpid]; + portal->cb[pool->params.bpid] = pool; + if (!pool->next) + /* First object for that bpid on this portal, enable the BSCN + * mask bit. */ + bm_isr_bscn_mask(&portal->p, pool->params.bpid, 1); + PORTAL_IRQ_UNLOCK(portal, irqflags); +} +static void depletion_unlink(struct bman_pool *pool) +{ + struct bman_pool *it, *last = NULL; + struct bman_pool **base = &pool->portal->cb[pool->params.bpid]; + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(pool->portal, irqflags); + it = *base; /* <-- gotcha, don't do this prior to the irq_save */ + while (it != pool) { + last = it; + it = it->next; + } + if (!last) + *base = pool->next; + else + last->next = pool->next; + if (!last && !pool->next) { + /* Last object for that bpid on this portal, disable the BSCN + * mask bit. */ + bm_isr_bscn_mask(&pool->portal->p, pool->params.bpid, 0); + /* And "forget" that we last saw this pool as depleted */ + bman_depletion_unset(&pool->portal->pools[1], + pool->params.bpid); + } + PORTAL_IRQ_UNLOCK(pool->portal, irqflags); +} + +/* In the case that the application's core loop calls qman_poll() and + * bman_poll(), we ought to balance how often we incur the overheads of the + * slow-path poll. We'll use two decrementer sources. The idle decrementer + * constant is used when the last slow-poll detected no work to do, and the busy + * decrementer constant when the last slow-poll had work to do. */ +#define SLOW_POLL_IDLE 1000 +#define SLOW_POLL_BUSY 10 +static u32 __poll_portal_slow(struct bman_portal *p, u32 is); + +#ifdef CONFIG_FSL_DPA_HAVE_IRQ +/* Portal interrupt handler */ +static irqreturn_t portal_isr(__always_unused int irq, void *ptr) +{ + struct bman_portal *p = ptr; + u32 clear = p->irq_sources; + u32 is = bm_isr_status_read(&p->p) & p->irq_sources; + clear |= __poll_portal_slow(p, is); + bm_isr_status_clear(&p->p, clear); + return IRQ_HANDLED; +} +#endif + +struct bman_portal *bman_create_affine_portal( + const struct bm_portal_config *config, + int recovery_mode __maybe_unused) +{ + struct bman_portal *portal = get_raw_affine_portal(); + struct bm_portal *__p = &portal->p; + const struct bman_depletion *pools = &config->public_cfg.mask; + int ret; + + /* prep the low-level portal struct with the mapped addresses from the + * config, everything that follows depends on it and "config" is more + * for (de)reference... */ + __p->addr.addr_ce = config->addr_virt[BM_ADDR_CE]; + __p->addr.addr_ci = config->addr_virt[BM_ADDR_CI]; + if (bm_rcr_init(__p, bm_rcr_pvb, bm_rcr_cce)) { + pr_err("Bman RCR initialisation failed\n"); + goto fail_rcr; + } + if (bm_mc_init(__p)) { + pr_err("Bman MC initialisation failed\n"); + goto fail_mc; + } + if (bm_isr_init(__p)) { + pr_err("Bman ISR initialisation failed\n"); + goto fail_isr; + } + if (!pools) + portal->pools = NULL; + else { + u8 bpid = 0; + portal->pools = kmalloc(2 * sizeof(*pools), GFP_KERNEL); + if (!portal->pools) + goto fail_pools; + portal->pools[0] = *pools; + bman_depletion_init(portal->pools + 1); + while (bpid < bman_pool_max) { + /* Default to all BPIDs disabled, we enable as required + * at run-time. */ + bm_isr_bscn_mask(__p, bpid, 0); + bpid++; + } + } + portal->slowpoll = 0; +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + portal->rcri_owned = NULL; +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spin_lock_init(&portal->sharing_lock); + portal->is_shared = config->public_cfg.is_shared; + portal->sharing_redirect = NULL; +#endif + memset(&portal->cb, 0, sizeof(portal->cb)); + /* Write-to-clear any stale interrupt status bits */ + bm_isr_disable_write(__p, 0xffffffff); + portal->irq_sources = 0; + bm_isr_enable_write(__p, portal->irq_sources); + bm_isr_status_clear(__p, 0xffffffff); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + snprintf(portal->irqname, MAX_IRQNAME, IRQNAME, config->public_cfg.cpu); + if (request_irq(config->public_cfg.irq, portal_isr, + IRQF_NOBALANCING | IRQF_DISABLED, portal->irqname, + portal)) { + pr_err("request_irq() failed\n"); + goto fail_irq; + } + if (config->public_cfg.cpu != -1) { + disable_irq(config->public_cfg.irq); + irq_set_affinity(config->public_cfg.irq, + cpumask_of(config->public_cfg.cpu)); + } + enable_irq(config->public_cfg.irq); + /* Enable the bits that make sense */ + if (!recovery_mode) + bm_isr_uninhibit(__p); +#endif + /* Need RCR to be empty before continuing */ + bm_isr_disable_write(__p, ~BM_PIRQ_RCRI); + ret = bm_rcr_get_fill(__p); + if (ret) { + pr_err("Bman RCR unclean, need recovery\n"); + goto fail_rcr_empty; + } + /* Success */ + portal->config = config; + spin_lock(&affine_mask_lock); + cpumask_set_cpu(config->public_cfg.cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + bm_isr_disable_write(__p, 0); + put_affine_portal(); + return portal; +fail_rcr_empty: +#ifdef CONFIG_FSL_DPA_HAVE_IRQ +fail_affinity: + free_irq(config->public_cfg.irq, portal); +fail_irq: +#endif + if (portal->pools) + kfree(portal->pools); +fail_pools: + bm_isr_finish(__p); +fail_isr: + bm_mc_finish(__p); +fail_mc: + bm_rcr_finish(__p); +fail_rcr: + put_affine_portal(); + return NULL; +} + +struct bman_portal *bman_create_affine_slave(struct bman_portal *redirect) +{ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + struct bman_portal *p = get_raw_affine_portal(); + BUG_ON(p->config); + BUG_ON(p->is_shared); + BUG_ON(!redirect->config->public_cfg.is_shared); + p->irq_sources = 0; + p->sharing_redirect = redirect; + put_affine_portal(); + return p; +#else + BUG(); + return NULL; +#endif +} + +const struct bm_portal_config *bman_destroy_affine_portal(void) +{ + struct bman_portal *bm = get_raw_affine_portal(); + const struct bm_portal_config *pcfg; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (bm->sharing_redirect) { + bm->sharing_redirect = NULL; + put_affine_portal(); + return NULL; + } + bm->is_shared = 0; +#endif + pcfg = bm->config; + bm_rcr_cce_update(&bm->p); + bm_rcr_cce_update(&bm->p); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + free_irq(pcfg->public_cfg.irq, bm); +#endif + kfree(bm->pools); + bm_isr_finish(&bm->p); + bm_mc_finish(&bm->p); + bm_rcr_finish(&bm->p); + bm->config = NULL; + spin_lock(&affine_mask_lock); + cpumask_clear_cpu(pcfg->public_cfg.cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + put_affine_portal(); + return pcfg; +} + +/* When release logic waits on available RCR space, we need a global waitqueue + * in the case of "affine" use (as the waits wake on different cpus which means + * different portals - so we can't wait on any per-portal waitqueue). */ +static DECLARE_WAIT_QUEUE_HEAD(affine_queue); + +static u32 __poll_portal_slow(struct bman_portal *p, u32 is) +{ + struct bman_depletion tmp; + u32 ret = is; + + /* There is a gotcha to be aware of. If we do the query before clearing + * the status register, we may miss state changes that occur between the + * two. If we write to clear the status register before the query, the + * cache-enabled query command may overtake the status register write + * unless we use a heavyweight sync (which we don't want). Instead, we + * write-to-clear the status register then *read it back* before doing + * the query, hence the odd while loop with the 'is' accumulation. */ + if (is & BM_PIRQ_BSCN) { + struct bm_mc_result *mcr; + __maybe_unused unsigned long irqflags; + unsigned int i, j; + u32 __is; + bm_isr_status_clear(&p->p, BM_PIRQ_BSCN); + while ((__is = bm_isr_status_read(&p->p)) & BM_PIRQ_BSCN) { + is |= __is; + bm_isr_status_clear(&p->p, BM_PIRQ_BSCN); + } + is &= ~BM_PIRQ_BSCN; + PORTAL_IRQ_LOCK(p, irqflags); + bm_mc_start(&p->p); + bm_mc_commit(&p->p, BM_MCC_VERB_CMD_QUERY); + while (!(mcr = bm_mc_result(&p->p))) + cpu_relax(); + tmp = mcr->query.ds.state; + PORTAL_IRQ_UNLOCK(p, irqflags); + for (i = 0; i < 2; i++) { + int idx = i * 32; + /* tmp is a mask of currently-depleted pools. + * pools[0] is mask of those we care about. + * pools[1] is our previous view (we only want to + * be told about changes). */ + tmp.__state[i] &= p->pools[0].__state[i]; + if (tmp.__state[i] == p->pools[1].__state[i]) + /* fast-path, nothing to see, move along */ + continue; + for (j = 0; j <= 31; j++, idx++) { + struct bman_pool *pool = p->cb[idx]; + int b4 = bman_depletion_get(&p->pools[1], idx); + int af = bman_depletion_get(&tmp, idx); + if (b4 == af) + continue; + while (pool) { + pool->params.cb(p, pool, + pool->params.cb_ctx, af); + pool = pool->next; + } + } + } + p->pools[1] = tmp; + } + + if (is & BM_PIRQ_RCRI) { + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + bm_rcr_cce_update(&p->p); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + /* If waiting for sync, we only cancel the interrupt threshold + * when the ring utilisation hits zero. */ + if (p->rcri_owned) { + if (!bm_rcr_get_fill(&p->p)) { + p->rcri_owned = NULL; + bm_rcr_set_ithresh(&p->p, 0); + } + } else +#endif + bm_rcr_set_ithresh(&p->p, 0); + PORTAL_IRQ_UNLOCK(p, irqflags); + wake_up(&affine_queue); + bm_isr_status_clear(&p->p, BM_PIRQ_RCRI); + is &= ~BM_PIRQ_RCRI; + } + + /* There should be no status register bits left undefined */ + DPA_ASSERT(!is); + return ret; +} + +const struct bman_portal_config *bman_get_portal_config(void) +{ + struct bman_portal *p = get_affine_portal(); + const struct bman_portal_config *ret = &p->config->public_cfg; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(bman_get_portal_config); + +u32 bman_irqsource_get(void) +{ + struct bman_portal *p = get_raw_affine_portal(); + u32 ret = p->irq_sources & BM_PIRQ_VISIBLE; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(bman_irqsource_get); + +int bman_irqsource_add(__maybe_unused u32 bits) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct bman_portal *p = get_raw_affine_portal(); + int ret = 0; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) + ret = -EINVAL; + else +#endif + { + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + set_bits(bits & BM_PIRQ_VISIBLE, &p->irq_sources); + bm_isr_enable_write(&p->p, p->irq_sources); + PORTAL_IRQ_UNLOCK(p, irqflags); + } + put_affine_portal(); + return ret; +#else + pr_err("No Bman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(bman_irqsource_add); + +int bman_irqsource_remove(u32 bits) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct bman_portal *p = get_raw_affine_portal(); + __maybe_unused unsigned long irqflags; + u32 ier; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) { + put_affine_portal(); + return -EINVAL; + } +#endif + /* Our interrupt handler only processes+clears status register bits that + * are in p->irq_sources. As we're trimming that mask, if one of them + * were to assert in the status register just before we remove it from + * the enable register, there would be an interrupt-storm when we + * release the IRQ lock. So we wait for the enable register update to + * take effect in h/w (by reading it back) and then clear all other bits + * in the status register. Ie. we clear them from ISR once it's certain + * IER won't allow them to reassert. */ + PORTAL_IRQ_LOCK(p, irqflags); + bits &= BM_PIRQ_VISIBLE; + clear_bits(bits, &p->irq_sources); + bm_isr_enable_write(&p->p, p->irq_sources); + ier = bm_isr_enable_read(&p->p); + /* Using "~ier" (rather than "bits" or "~p->irq_sources") creates a + * data-dependency, ie. to protect against re-ordering. */ + bm_isr_status_clear(&p->p, ~ier); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +#else + pr_err("No Bman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(bman_irqsource_remove); + +const cpumask_t *bman_affine_cpus(void) +{ + return &affine_mask; +} +EXPORT_SYMBOL(bman_affine_cpus); + +u32 bman_poll_slow(void) +{ + struct bman_portal *p = get_raw_affine_portal(); + u32 ret; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + ret = (u32)-1; + else +#endif + { + u32 is = bm_isr_status_read(&p->p) & ~p->irq_sources; + ret = __poll_portal_slow(p, is); + bm_isr_status_clear(&p->p, ret); + } + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(bman_poll_slow); + +/* Legacy wrapper */ +void bman_poll(void) +{ + struct bman_portal *p = get_raw_affine_portal(); +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + goto done; +#endif + if (!(p->slowpoll--)) { + u32 is = bm_isr_status_read(&p->p) & ~p->irq_sources; + u32 active = __poll_portal_slow(p, is); + if (active) + p->slowpoll = SLOW_POLL_BUSY; + else + p->slowpoll = SLOW_POLL_IDLE; + } +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +done: +#endif + put_affine_portal(); +} +EXPORT_SYMBOL(bman_poll); + +int bman_recovery_cleanup_bpid(u32 bpid) +{ + struct bman_pool pool = { + .params = { + .bpid = bpid + } + }; + struct bm_buffer bufs[8]; + int ret = 0; + unsigned int num_bufs = 0; + do { + /* Acquire is all-or-nothing, so we drain in 8s, then in + * 1s for the remainder. */ + if (ret != 1) + ret = bman_acquire(&pool, bufs, 8, 0); + if (ret < 8) + ret = bman_acquire(&pool, bufs, 1, 0); + if (ret > 0) + num_bufs += ret; + } while (ret > 0); + if (num_bufs) + pr_info("Bman: BPID %d recovered (%d bufs)\n", bpid, num_bufs); + return 0; +} +EXPORT_SYMBOL(bman_recovery_cleanup_bpid); + +/* called from bman_driver.c::bman_recovery_exit() only (if exporting, use + * get_raw_affine_portal() and check for the "SLAVE" bit). */ +void bman_recovery_exit_local(void) +{ + struct bman_portal *p = get_affine_portal(); + bm_isr_status_clear(&p->p, 0xffffffff); + bm_isr_uninhibit(&p->p); + put_affine_portal(); +} + +static const u32 zero_thresholds[4] = {0, 0, 0, 0}; + +struct bman_pool *bman_new_pool(const struct bman_pool_params *params) +{ + struct bman_pool *pool = NULL; + u32 bpid; + + if (params->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) { + int ret = bm_pool_new(&bpid); + if (ret) + return NULL; + } else { + if (params->bpid >= bman_pool_max) + return NULL; + bpid = params->bpid; + } +#ifdef CONFIG_FSL_BMAN_CONFIG + if (params->flags & BMAN_POOL_FLAG_THRESH) { + int ret = bm_pool_set(bpid, params->thresholds); + if (ret) + goto err; + } +#else + if (params->flags & BMAN_POOL_FLAG_THRESH) + goto err; +#endif + pool = kmalloc(sizeof(*pool), GFP_KERNEL); + if (!pool) + goto err; + pool->sp = NULL; + pool->sp_fill = 0; + pool->params = *params; +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_set(&pool->in_use, 1); +#endif + if (params->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) + pool->params.bpid = bpid; + if (params->flags & BMAN_POOL_FLAG_STOCKPILE) { + pool->sp = kmalloc(sizeof(struct bm_buffer) * BMAN_STOCKPILE_SZ, + GFP_KERNEL); + if (!pool->sp) + goto err; + } + if (pool->params.flags & BMAN_POOL_FLAG_DEPLETION) { + struct bman_portal *p = get_affine_portal(); + if (!p->pools || !bman_depletion_get(&p->pools[0], bpid)) { + pr_err("Depletion events disabled for bpid %d\n", bpid); + goto err; + } + depletion_link(p, pool); + put_affine_portal(); + } + return pool; +err: +#ifdef CONFIG_FSL_BMAN_CONFIG + if (params->flags & BMAN_POOL_FLAG_THRESH) + bm_pool_set(bpid, zero_thresholds); +#endif + if (params->flags & BMAN_POOL_FLAG_DYNAMIC_BPID) + bm_pool_free(bpid); + if (pool) { + if (pool->sp) + kfree(pool->sp); + kfree(pool); + } + return NULL; +} +EXPORT_SYMBOL(bman_new_pool); + +void bman_free_pool(struct bman_pool *pool) +{ +#ifdef CONFIG_FSL_BMAN_CONFIG + if (pool->params.flags & BMAN_POOL_FLAG_THRESH) + bm_pool_set(pool->params.bpid, zero_thresholds); +#endif + if (pool->params.flags & BMAN_POOL_FLAG_DEPLETION) + depletion_unlink(pool); + if (pool->params.flags & BMAN_POOL_FLAG_STOCKPILE) { + if (pool->sp_fill) + pr_err("Stockpile not flushed, has %u in bpid %u.\n", + pool->sp_fill, pool->params.bpid); + kfree(pool->sp); + pool->sp = NULL; + pool->params.flags ^= BMAN_POOL_FLAG_STOCKPILE; + } + if (pool->params.flags & BMAN_POOL_FLAG_DYNAMIC_BPID) { + /* When releasing a BPID to the dynamic allocator, that pool + * must be *empty*. This code makes it so by dropping everything + * into the bit-bucket. This ignores whether or not it was a + * mistake (or a leak) on the caller's part not to drain the + * pool beforehand. */ + struct bm_buffer bufs[8]; + int ret = 0; + do { + /* Acquire is all-or-nothing, so we drain in 8s, then in + * 1s for the remainder. */ + if (ret != 1) + ret = bman_acquire(pool, bufs, 8, 0); + if (ret < 8) + ret = bman_acquire(pool, bufs, 1, 0); + } while (ret > 0); + bm_pool_free(pool->params.bpid); + } + kfree(pool); +} +EXPORT_SYMBOL(bman_free_pool); + +const struct bman_pool_params *bman_get_params(const struct bman_pool *pool) +{ + return &pool->params; +} +EXPORT_SYMBOL(bman_get_params); + +static noinline void update_rcr_ci(struct bman_portal *p, u8 avail) +{ + if (avail) + bm_rcr_cce_prefetch(&p->p); + else + bm_rcr_cce_update(&p->p); +} + +int bman_rcr_is_empty(void) +{ + __maybe_unused unsigned long irqflags; + struct bman_portal *p = get_affine_portal(); + u8 avail; + + PORTAL_IRQ_LOCK(p, irqflags); + update_rcr_ci(p, 0); + avail = bm_rcr_get_fill(&p->p); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return (avail == 0); +} +EXPORT_SYMBOL(bman_rcr_is_empty); + +static inline struct bm_rcr_entry *try_rel_start(struct bman_portal **p, +#ifdef CONFIG_FSL_DPA_CAN_WAIT + __maybe_unused struct bman_pool *pool, +#endif + __maybe_unused unsigned long *irqflags, + __maybe_unused u32 flags) +{ + struct bm_rcr_entry *r; + u8 avail; + + *p = get_affine_portal(); + PORTAL_IRQ_LOCK(*p, (*irqflags)); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) { + if ((*p)->rcri_owned) { + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + return NULL; + } + (*p)->rcri_owned = pool; + } +#endif + avail = bm_rcr_get_avail(&(*p)->p); + if (avail < 2) + update_rcr_ci(*p, avail); + r = bm_rcr_start(&(*p)->p); + if (unlikely(!r)) { +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) + (*p)->rcri_owned = NULL; +#endif + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + } + return r; +} + +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static noinline struct bm_rcr_entry *__wait_rel_start(struct bman_portal **p, + struct bman_pool *pool, + __maybe_unused unsigned long *irqflags, + u32 flags) +{ + struct bm_rcr_entry *rcr = try_rel_start(p, pool, irqflags, flags); + if (!rcr) + bm_rcr_set_ithresh(&(*p)->p, 1); + return rcr; +} + +static noinline struct bm_rcr_entry *wait_rel_start(struct bman_portal **p, + struct bman_pool *pool, + __maybe_unused unsigned long *irqflags, + u32 flags) +{ + struct bm_rcr_entry *rcr; +#ifndef CONFIG_FSL_DPA_CAN_WAIT_SYNC + pool = NULL; +#endif + if (flags & BMAN_RELEASE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (rcr = __wait_rel_start(p, pool, irqflags, flags))); + else + wait_event(affine_queue, + (rcr = __wait_rel_start(p, pool, irqflags, flags))); + return rcr; +} +#endif + +/* to facilitate better copying of bufs into the ring without either (a) copying + * noise into the first byte (prematurely triggering the command), nor (b) being + * very inefficient by copying small fields using read-modify-write */ +struct overlay_bm_buffer { + u32 first; + u32 second; +}; + +static inline int __bman_release(struct bman_pool *pool, + const struct bm_buffer *bufs, u8 num, u32 flags) +{ + struct bman_portal *p; + struct bm_rcr_entry *r; + struct overlay_bm_buffer *o_dest; + struct overlay_bm_buffer *o_src = (struct overlay_bm_buffer *)&bufs[0]; + __maybe_unused unsigned long irqflags; + u32 i = num - 1; + +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & BMAN_RELEASE_FLAG_WAIT) + r = wait_rel_start(&p, pool, &irqflags, flags); + else + r = try_rel_start(&p, pool, &irqflags, flags); +#else + r = try_rel_start(&p, &irqflags, flags); +#endif + if (!r) + return -EBUSY; + /* We can copy all but the first entry, as this can trigger badness + * with the valid-bit. Use the overlay to mask the verb byte. */ + o_dest = (struct overlay_bm_buffer *)&r->bufs[0]; + o_dest->first = (o_src->first & 0x0000ffff) | + (((u32)pool->params.bpid << 16) & 0x00ff0000); + o_dest->second = o_src->second; + if (i) + copy_words(&r->bufs[1], &bufs[1], i * sizeof(bufs[0])); + bm_rcr_pvb_commit(&p->p, BM_RCR_VERB_CMD_BPID_SINGLE | + (num & BM_RCR_VERB_BUFCOUNT_MASK)); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + /* if we wish to sync we need to set the threshold after h/w sees the + * new ring entry. As we're mixing cache-enabled and cache-inhibited + * accesses, this requires a heavy-weight sync. */ + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) { + hwsync(); + bm_rcr_set_ithresh(&p->p, 1); + } +#endif + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & BMAN_RELEASE_FLAG_WAIT) && + (flags & BMAN_RELEASE_FLAG_WAIT_SYNC))) { + if (flags & BMAN_RELEASE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (p->rcri_owned != pool)); + else + wait_event(affine_queue, (p->rcri_owned != pool)); + } +#endif + return 0; +} + +int bman_release(struct bman_pool *pool, const struct bm_buffer *bufs, u8 num, + u32 flags) +{ + int ret = 0; +#ifdef CONFIG_FSL_DPA_CHECKING + if (!num || (num > 8)) + return -EINVAL; + if (pool->params.flags & BMAN_POOL_FLAG_NO_RELEASE) + return -EINVAL; + if (!atomic_dec_and_test(&pool->in_use)) { + pr_crit("Parallel attempts to enter bman_released() detected."); + panic("only one instance of bman_released/acquired allowed"); + } +#endif + /* Without stockpile, this API is a pass-through to the h/w operation */ + if (!(pool->params.flags & BMAN_POOL_FLAG_STOCKPILE)) { + ret = __bman_release(pool, bufs, num, flags); + goto release_done; + } + /* This needs some explanation. Adding the given buffers may take the + * stockpile over the threshold, but in fact the stockpile may already + * *be* over the threshold if a previous release-to-hw attempt had + * failed. So we have 3 cases to cover; + * 1. we add to the stockpile and don't hit the threshold, + * 2. we add to the stockpile, hit the threshold and release-to-hw, + * 3. we have to release-to-hw before adding to the stockpile + * (not enough room in the stockpile for case 2). + * Our constraints on thresholds guarantee that in case 3, there must be + * at least 8 bufs already in the stockpile, so all release-to-hw ops + * are for 8 bufs. Despite all this, the API must indicate whether the + * given buffers were taken off the caller's hands, irrespective of + * whether a release-to-hw was attempted. */ + while (num) { + /* Add buffers to stockpile if they fit */ + if ((pool->sp_fill + num) < BMAN_STOCKPILE_SZ) { + copy_words(pool->sp + pool->sp_fill, bufs, + sizeof(struct bm_buffer) * num); + pool->sp_fill += num; + num = 0; /* --> will return success no matter what */ + } + /* Do hw op if hitting the high-water threshold */ + if ((pool->sp_fill + num) >= BMAN_STOCKPILE_HIGH) { + ret = __bman_release(pool, + pool->sp + (pool->sp_fill - 8), 8, flags); + if (ret) { + ret = (num ? ret : 0); + goto release_done; + } + pool->sp_fill -= 8; + } + } +release_done: +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_inc(&pool->in_use); +#endif + return ret; +} +EXPORT_SYMBOL(bman_release); + +static inline int __bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, + u8 num) +{ + struct bman_portal *p = get_affine_portal(); + struct bm_mc_command *mcc; + struct bm_mc_result *mcr; + __maybe_unused unsigned long irqflags; + int ret; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = bm_mc_start(&p->p); + mcc->acquire.bpid = pool->params.bpid; + bm_mc_commit(&p->p, BM_MCC_VERB_CMD_ACQUIRE | + (num & BM_MCC_VERB_ACQUIRE_BUFCOUNT)); + while (!(mcr = bm_mc_result(&p->p))) + cpu_relax(); + ret = mcr->verb & BM_MCR_VERB_ACQUIRE_BUFCOUNT; + if (bufs) + copy_words(&bufs[0], &mcr->acquire.bufs[0], + num * sizeof(bufs[0])); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (ret != num) + ret = -ENOMEM; + return ret; +} + +int bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, u8 num, + u32 flags) +{ + int ret = 0; +#ifdef CONFIG_FSL_DPA_CHECKING + if (!num || (num > 8)) + return -EINVAL; + if (pool->params.flags & BMAN_POOL_FLAG_ONLY_RELEASE) + return -EINVAL; + if (!atomic_dec_and_test(&pool->in_use)) { + pr_crit("Parallel attempts to enter bman_acquire() detected."); + panic("only one instance of bman_released/acquired allowed"); + } +#endif + /* Without stockpile, this API is a pass-through to the h/w operation */ + if (!(pool->params.flags & BMAN_POOL_FLAG_STOCKPILE)) { + ret = __bman_acquire(pool, bufs, num); + goto acquire_done; + } + /* Only need a h/w op if we'll hit the low-water thresh */ + if (!(flags & BMAN_ACQUIRE_FLAG_STOCKPILE) && + (pool->sp_fill <= (BMAN_STOCKPILE_LOW + num))) { + /* refill stockpile with max amount, but if max amount + * isn't available, try amount the user wants */ + int bufcount = 8; + ret = __bman_acquire(pool, pool->sp + pool->sp_fill, bufcount); + if (ret < 0 && bufcount != num) { + bufcount = num; + /* Maybe buffer pool has less than 8 */ + ret = __bman_acquire(pool, pool->sp + pool->sp_fill, + bufcount); + } + if (ret < 0) + goto hw_starved; + DPA_ASSERT(ret == bufcount); + pool->sp_fill += bufcount; + } else { +hw_starved: + if (pool->sp_fill < num) { + ret = -ENOMEM; + goto acquire_done; + } + } + copy_words(bufs, pool->sp + (pool->sp_fill - num), + sizeof(struct bm_buffer) * num); + pool->sp_fill -= num; + ret = num; +acquire_done: +#ifdef CONFIG_FSL_DPA_CHECKING + atomic_inc(&pool->in_use); +#endif + return ret; +} +EXPORT_SYMBOL(bman_acquire); + +int bman_flush_stockpile(struct bman_pool *pool, u32 flags) +{ + u8 num; + int ret; + + while (pool->sp_fill) { + num = ((pool->sp_fill > 8) ? 8 : pool->sp_fill); + ret = __bman_release(pool, pool->sp + (pool->sp_fill - num), + num, flags); + if (ret) + return ret; + pool->sp_fill -= num; + } + return 0; +} +EXPORT_SYMBOL(bman_flush_stockpile); + +int bman_query_pools(struct bm_pool_state *state) +{ + struct bman_portal *p = get_affine_portal(); + struct bm_mc_result *mcr; + __maybe_unused unsigned long irqflags; + + PORTAL_IRQ_LOCK(p, irqflags); + bm_mc_start(&p->p); + bm_mc_commit(&p->p, BM_MCC_VERB_CMD_QUERY); + while (!(mcr = bm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & BM_MCR_VERB_CMD_MASK) == BM_MCR_VERB_CMD_QUERY); + *state = mcr->query; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +} +EXPORT_SYMBOL(bman_query_pools); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_test.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_test.c @@ -0,0 +1,61 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_test.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Qman testing"); + +static int test_init(void) +{ + int loop = 1; + while(loop--) { +#ifdef CONFIG_FSL_QMAN_TEST_STASH_POTATO + qman_test_hotpotato(); +#endif +#ifdef CONFIG_FSL_QMAN_TEST_HIGH + qman_test_high(); +#endif +#ifdef CONFIG_FSL_QMAN_TEST_ERRATA + qman_test_errata(); +#endif + } + return 0; +} + +static void test_exit(void) +{ +} + +module_init(test_init); +module_exit(test_exit); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_high.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_high.c @@ -0,0 +1,2361 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_low.h" + +/* Compilation constants */ +#define DQRR_MAXFILL 15 +#define EQCR_ITHRESH 4 /* if EQCR congests, interrupt threshold */ +#define IRQNAME "QMan portal %d" +#define MAX_IRQNAME 16 /* big enough for "QMan portal %d" */ + +/* Lock/unlock frame queues, subject to the "LOCKED" flag. This is about + * inter-processor locking only. Note, FQLOCK() is always called either under a + * local_irq_save() or from interrupt context - hence there's no need for irq + * protection (and indeed, attempting to nest irq-protection doesn't work, as + * the "irq en/disable" machinery isn't recursive...). */ +#define FQLOCK(fq) \ + do { \ + struct qman_fq *__fq478 = (fq); \ + if (fq_isset(__fq478, QMAN_FQ_FLAG_LOCKED)) \ + spin_lock(&__fq478->fqlock); \ + } while(0) +#define FQUNLOCK(fq) \ + do { \ + struct qman_fq *__fq478 = (fq); \ + if (fq_isset(__fq478, QMAN_FQ_FLAG_LOCKED)) \ + spin_unlock(&__fq478->fqlock); \ + } while(0) + +static inline void fq_set(struct qman_fq *fq, u32 mask) +{ + set_bits(mask, &fq->flags); +} +static inline void fq_clear(struct qman_fq *fq, u32 mask) +{ + clear_bits(mask, &fq->flags); +} +static inline int fq_isset(struct qman_fq *fq, u32 mask) +{ + return fq->flags & mask; +} +static inline int fq_isclear(struct qman_fq *fq, u32 mask) +{ + return !(fq->flags & mask); +} + +#define PORTAL_BITS_CI_PREFETCH 0x00020000 /* EQCR::CI prefetched */ +#define PORTAL_BITS_RECOVERY 0x00040000 /* recovery mode */ + +struct qman_portal { + struct qm_portal p; + unsigned long bits; /* PORTAL_BITS_*** - dynamic, strictly internal */ + unsigned long irq_sources; + u32 slowpoll; /* only used when interrupts are off */ + struct qman_fq *vdqcr_owned; /* only 1 volatile dequeue at a time */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + struct qman_fq *eqci_owned; /* only 1 enqueue WAIT_SYNC at a time */ +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spinlock_t sharing_lock; /* only used if is_shared */ + int is_shared; + struct qman_portal *sharing_redirect; +#endif + u32 sdqcr; + int dqrr_disable_ref; +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + /* If we receive a DQRR or MR ring entry for a "null" FQ, ie. for which + * FQD::contextB is NULL rather than pointing to a FQ object, we use + * these handlers. (This is not considered a fast-path mechanism.) */ + struct qman_fq_cb null_cb; +#endif + /* When the cpu-affine portal is activated, this is non-NULL */ + const struct qm_portal_config *config; + /* This is needed for providing a non-NULL device to dma_map_***() */ + struct platform_device *pdev; + struct dpa_rbtree retire_table; + char irqname[MAX_IRQNAME]; + /* 2-element array. cgrs[0] is mask, cgrs[1] is snapshot. */ + struct qman_cgrs *cgrs; + /* 256-element array, each is a linked-list of CSCN handlers. */ + struct list_head cgr_cbs[256]; + /* list lock */ + spinlock_t cgr_lock; +}; + +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +#define PORTAL_IRQ_LOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_lock_irqsave(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_save(irqflags); \ + } while (0) +#define PORTAL_IRQ_UNLOCK(p, irqflags) \ + do { \ + if ((p)->is_shared) \ + spin_unlock_irqrestore(&(p)->sharing_lock, irqflags); \ + else \ + local_irq_restore(irqflags); \ + } while (0) +#else +#define PORTAL_IRQ_LOCK(p, irqflags) local_irq_save(irqflags) +#define PORTAL_IRQ_UNLOCK(p, irqflags) local_irq_restore(irqflags) +#endif + +static cpumask_t affine_mask; +static DEFINE_SPINLOCK(affine_mask_lock); +static DEFINE_PER_CPU(struct qman_portal, qman_affine_portal); +/* "raw" gets the cpu-local struct whether it's a redirect or not. */ +static inline struct qman_portal *get_raw_affine_portal(void) +{ + return &get_cpu_var(qman_affine_portal); +} +/* For ops that can redirect, this obtains the portal to use */ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +static inline struct qman_portal *get_affine_portal(void) +{ + struct qman_portal *p = get_raw_affine_portal(); + if (p->sharing_redirect) + return p->sharing_redirect; + return p; +} +#else +#define get_affine_portal() get_raw_affine_portal() +#endif +/* For every "get", there must be a "put" */ +static inline void put_affine_portal(void) +{ + put_cpu_var(qman_affine_portal); +} + +/* This gives a FQID->FQ lookup to cover the fact that we can't directly demux + * retirement notifications (the fact they are sometimes h/w-consumed means that + * contextB isn't always a s/w demux - and as we can't know which case it is + * when looking at the notification, we have to use the slow lookup for all of + * them). NB, it's possible to have multiple FQ objects refer to the same FQID + * (though at most one of them should be the consumer), so this table isn't for + * all FQs - FQs are added when retirement commands are issued, and removed when + * they complete, which also massively reduces the size of this table. */ +IMPLEMENT_DPA_RBTREE(fqtree, struct qman_fq, node, fqid); + +/* This is what everything can wait on, even if it migrates to a different cpu + * to the one whose affine portal it is waiting on. */ +static DECLARE_WAIT_QUEUE_HEAD(affine_queue); + +static inline int table_push_fq(struct qman_portal *p, struct qman_fq *fq) +{ + int ret = fqtree_push(&p->retire_table, fq); + if (ret) + pr_err("ERROR: double FQ-retirement %d\n", fq->fqid); + return ret; +} + +static inline void table_del_fq(struct qman_portal *p, struct qman_fq *fq) +{ + fqtree_del(&p->retire_table, fq); +} + +static inline struct qman_fq *table_find_fq(struct qman_portal *p, u32 fqid) +{ + return fqtree_find(&p->retire_table, fqid); +} + +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +static void **qman_fq_lookup_table; +static size_t qman_fq_lookup_table_size; + +int qman_setup_fq_lookup_table(size_t num_entries) +{ + num_entries++; + /* Allocate 1 more entry since the first entry is not used */ + qman_fq_lookup_table = vmalloc((num_entries * sizeof(void *))); + if (!qman_fq_lookup_table) { + pr_err("QMan: Could not allocate fq lookup table\n"); + return -ENOMEM; + } + memset(qman_fq_lookup_table, 0, num_entries * sizeof(void *)); + qman_fq_lookup_table_size = num_entries; + pr_info("QMan: Allocated lookup table at %p, entry count %lu\n", + qman_fq_lookup_table, + (unsigned long)qman_fq_lookup_table_size); + return 0; +} + +/* global structure that maintains fq object mapping */ +static DEFINE_SPINLOCK(fq_hash_table_lock); + +static int find_empty_fq_table_entry(u32 *entry, struct qman_fq *fq) +{ + u32 i; + + spin_lock(&fq_hash_table_lock); + /* Can't use index zero because this has special meaning + * in context_b field. */ + for (i = 1; i < qman_fq_lookup_table_size; i++) { + if (qman_fq_lookup_table[i] == NULL) { + *entry = i; + qman_fq_lookup_table[i] = fq; + spin_unlock(&fq_hash_table_lock); + return 0; + } + } + spin_unlock(&fq_hash_table_lock); + return -ENOMEM; +} + +static void clear_fq_table_entry(u32 entry) +{ + spin_lock(&fq_hash_table_lock); + BUG_ON(entry >= qman_fq_lookup_table_size); + qman_fq_lookup_table[entry] = NULL; + spin_unlock(&fq_hash_table_lock); +} + +static inline struct qman_fq *get_fq_table_entry(u32 entry) +{ + BUG_ON(entry >= qman_fq_lookup_table_size); + return qman_fq_lookup_table[entry]; +} +#endif + +/* In the case that slow- and fast-path handling are both done by qman_poll() + * (ie. because there is no interrupt handling), we ought to balance how often + * we do the fast-path poll versus the slow-path poll. We'll use two decrementer + * sources, so we call the fast poll 'n' times before calling the slow poll + * once. The idle decrementer constant is used when the last slow-poll detected + * no work to do, and the busy decrementer constant when the last slow-poll had + * work to do. */ +#define SLOW_POLL_IDLE 1000 +#define SLOW_POLL_BUSY 10 +static u32 __poll_portal_slow(struct qman_portal *p, u32 is); +static inline unsigned int __poll_portal_fast(struct qman_portal *p, + unsigned int poll_limit); + +#ifdef CONFIG_FSL_DPA_HAVE_IRQ +/* Portal interrupt handler */ +static irqreturn_t portal_isr(__always_unused int irq, void *ptr) +{ + struct qman_portal *p = ptr; + u32 clear = QM_DQAVAIL_MASK | p->irq_sources; + u32 is = qm_isr_status_read(&p->p) & p->irq_sources; + /* DQRR-handling if it's interrupt-driven */ + if (is & QM_PIRQ_DQRI) + __poll_portal_fast(p, CONFIG_FSL_QMAN_POLL_LIMIT); + /* Handling of anything else that's interrupt-driven */ + clear |= __poll_portal_slow(p, is); + qm_isr_status_clear(&p->p, clear); + return IRQ_HANDLED; +} +#endif + +/* This inner version is used privately by qman_create_affine_portal(), as well + * as by the exported qman_stop_dequeues(). */ +static inline void qman_stop_dequeues_ex(struct qman_portal *p) +{ + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + if (!(p->dqrr_disable_ref++)) + qm_dqrr_set_maxfill(&p->p, 0); + PORTAL_IRQ_UNLOCK(p, irqflags); +} + +static int drain_mr_fqrni(struct qm_portal *p) +{ + const struct qm_mr_entry *msg; +loop: + msg = qm_mr_current(p); + if (!msg) { + /* if MR was full and h/w had other FQRNI entries to produce, we + * need to allow it time to produce those entries once the + * existing entries are consumed. A worst-case situation + * (fully-loaded system) means h/w sequencers may have to do 3-4 + * other things before servicing the portal's MR pump, each of + * which (if slow) may take ~50 qman cycles (which is ~200 + * processor cycles). So rounding up and then multiplying this + * worst-case estimate by a factor of 10, just to be + * ultra-paranoid, goes as high as 10,000 cycles. NB, we consume + * one entry at a time, so h/w has an opportunity to produce new + * entries well before the ring has been fully consumed, so + * we're being *really* paranoid here. */ + u64 now, then = mfatb(); + do { + now = mfatb(); + } while ((then + 10000) > now); + msg = qm_mr_current(p); + if (!msg) + return 0; + } + if ((msg->verb & QM_MR_VERB_TYPE_MASK) != QM_MR_VERB_FQRNI) + /* We aren't draining anything but FQRNIs */ + return -1; + qm_mr_next(p); + qm_mr_cci_consume(p, 1); + goto loop; +} + +/* this is called from qman_create_affine_portal() if not initialising in + * recovery mode, otherwise from qman_recovery_exit_local() after recovery is + * done. */ +static void post_recovery(struct qman_portal *p __always_unused, + const struct qm_portal_config *config) +{ + struct device_node *tmp_node, *node = config->node; + /* Enable DMA on portal LIODNs (stashing) and those of its sub-nodes + * (Fman TX and SEC/PME accelerators, where available). */ + if (pamu_enable_liodn(node, -1)) + /* If there's a PAMU problem, best to continue anyway and let + * the corresponding traffic hit whatever problems it will hit, + * than to fail portal initialisation and trigger a crash in + * dependent code that has no relationship to the PAMU issue. */ + pr_err("Failed to enable portal LIODN %s\n", + node->full_name); + for_each_child_of_node(node, tmp_node) + if (pamu_enable_liodn(tmp_node, -1)) + pr_err("Failed to enable portal LIODN %s\n", + tmp_node->full_name); +} + +struct qman_portal *qman_create_affine_portal( + const struct qm_portal_config *config, + const struct qman_cgrs *cgrs, + const struct qman_fq_cb *null_cb, + int recovery_mode) +{ + struct qman_portal *portal = get_raw_affine_portal(); + struct qm_portal *__p = &portal->p; + char buf[16]; + int ret; + u32 isdr; + + /* A criteria for calling this function (from qman_driver.c) is that + * we're already affine to the cpu and won't schedule onto another cpu. + * This means we can put_affine_portal() and yet continue to use + * "portal", which in turn means aspects of this routine can sleep. */ + put_affine_portal(); +#ifndef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + if (null_cb) { + pr_err("Driver does not support 'NULL FQ' callbacks\n"); + return NULL; + } +#endif + /* prep the low-level portal struct with the mapped addresses from the + * config, everything that follows depends on it and "config" is more + * for (de)reference... */ + __p->addr.addr_ce = config->addr_virt[QM_ADDR_CE]; + __p->addr.addr_ci = config->addr_virt[QM_ADDR_CI]; + if (qm_eqcr_init(__p, qm_eqcr_pvb, qm_eqcr_cce)) { + pr_err("Qman EQCR initialisation failed\n"); + goto fail_eqcr; + } +#ifdef CONFIG_FSL_QMAN_PORTAL_DISABLEAUTO_DCA +#define QM_DQRR_CMODE qm_dqrr_cci +#else +#define QM_DQRR_CMODE qm_dqrr_cdc +#endif + /* for recovery mode, don't enable stashing yet */ + if (qm_dqrr_init(__p, config, qm_dqrr_dpush, qm_dqrr_pvb, + recovery_mode ? qm_dqrr_cci : QM_DQRR_CMODE, + DQRR_MAXFILL, recovery_mode)) { + pr_err("Qman DQRR initialisation failed\n"); + goto fail_dqrr; + } + if (qm_mr_init(__p, qm_mr_pvb, qm_mr_cci)) { + pr_err("Qman MR initialisation failed\n"); + goto fail_mr; + } + /* for recovery mode, quiesce SDQCR/VDQCR and drain DQRR+MR until h/w + * wraps up anything it was doing (5ms is ample idle time). */ + if (recovery_mode) { + const struct qm_dqrr_entry *dq; + const struct qm_mr_entry *msg; + int idle = 0; + /* quiesce SDQCR/VDQCR, then drain till h/w wraps up anything it + * was doing (5ms is more than enough to ensure it's done). */ + qm_dqrr_sdqcr_set(__p, 0); + qm_dqrr_vdqcr_set(__p, 0); +drain_loop: + qm_dqrr_pvb_update(__p, 0); + dq = qm_dqrr_current(__p); + qm_mr_pvb_update(__p); + msg = qm_mr_current(__p); + if (dq) { + pr_warning("DQRR recovery: dumping dqrr %02x:%02x for " + "FQID %d\n", dq->verb & QM_DQRR_VERB_MASK, + dq->stat, dq->fqid); + qm_dqrr_next(__p); + qm_dqrr_cci_consume(__p, 1); + } + if (msg) { + pr_warning("MR recovery: dumping msg 0x%02x for " + "FQID %d\n", msg->verb & QM_MR_VERB_TYPE_MASK, + msg->fq.fqid); + qm_mr_next(__p); + qm_mr_cci_consume(__p, 1); + } + if (!dq && !msg) { + if (++idle < 5) { + msleep(1); + goto drain_loop; + } + } else { + idle = 0; + goto drain_loop; + } + } + if (qm_mc_init(__p)) { + pr_err("Qman MC initialisation failed\n"); + goto fail_mc; + } + if (qm_isr_init(__p)) { + pr_err("Qman ISR initialisation failed\n"); + goto fail_isr; + } + /* static interrupt-gating controls */ + qm_dqrr_set_ithresh(__p, CONFIG_FSL_QMAN_PIRQ_DQRR_ITHRESH); + qm_mr_set_ithresh(__p, CONFIG_FSL_QMAN_PIRQ_MR_ITHRESH); + qm_isr_set_iperiod(__p, CONFIG_FSL_QMAN_PIRQ_IPERIOD); + portal->cgrs = kmalloc(2 * sizeof(*cgrs), GFP_KERNEL); + if (!portal->cgrs) + goto fail_cgrs; + /* initial snapshot is no-depletion */ + qman_cgrs_init(&portal->cgrs[1]); + if (cgrs) + portal->cgrs[0] = *cgrs; + else + /* if the given mask is NULL, assume all CGRs can be seen */ + qman_cgrs_fill(&portal->cgrs[0]); + for (ret = 0; ret < __CGR_NUM; ret++) + INIT_LIST_HEAD(&portal->cgr_cbs[ret]); + spin_lock_init(&portal->cgr_lock); + portal->bits = recovery_mode ? PORTAL_BITS_RECOVERY : 0; + portal->slowpoll = 0; +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + portal->eqci_owned = NULL; +#endif +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + spin_lock_init(&portal->sharing_lock); + portal->is_shared = config->public_cfg.is_shared; + portal->sharing_redirect = NULL; +#endif + portal->sdqcr = QM_SDQCR_SOURCE_CHANNELS | QM_SDQCR_COUNT_UPTO3 | + QM_SDQCR_DEDICATED_PRECEDENCE | QM_SDQCR_TYPE_PRIO_QOS | + QM_SDQCR_TOKEN_SET(0xab) | QM_SDQCR_CHANNELS_DEDICATED; + portal->dqrr_disable_ref = 0; +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + if (null_cb) + portal->null_cb = *null_cb; + else + memset(&portal->null_cb, 0, sizeof(*null_cb)); +#endif + sprintf(buf, "qportal-%d", config->public_cfg.channel); + portal->pdev = platform_device_alloc(buf, -1); + if (!portal->pdev) + goto fail_devalloc; + if (dma_set_mask(&portal->pdev->dev, DMA_BIT_MASK(40))) + goto fail_devadd; + ret = platform_device_add(portal->pdev); + if (ret) + goto fail_devadd; + dpa_rbtree_init(&portal->retire_table); + isdr = 0xffffffff; + qm_isr_disable_write(__p, isdr); + portal->irq_sources = 0; + qm_isr_enable_write(__p, portal->irq_sources); + qm_isr_status_clear(__p, 0xffffffff); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + snprintf(portal->irqname, MAX_IRQNAME, IRQNAME, config->public_cfg.cpu); + if (request_irq(config->public_cfg.irq, portal_isr, + IRQF_NOBALANCING | IRQF_DISABLED, portal->irqname, + portal)) { + pr_err("request_irq() failed\n"); + goto fail_irq; + } + if (config->public_cfg.cpu != -1) { + disable_irq(config->public_cfg.irq); + irq_set_affinity(config->public_cfg.irq, + cpumask_of(config->public_cfg.cpu)); + } + enable_irq(config->public_cfg.irq); + + if (recovery_mode) { + qm_isr_inhibit(__p); + } else { + post_recovery(portal, config); + qm_isr_uninhibit(__p); + } +#endif + /* Need EQCR to be empty before continuing */ + isdr ^= QM_PIRQ_EQCI; + qm_isr_disable_write(__p, isdr); + ret = qm_eqcr_get_fill(__p); + if (ret) { + pr_err("Qman EQCR unclean, need recovery\n"); + goto fail_eqcr_empty; + } + isdr ^= (QM_PIRQ_DQRI | QM_PIRQ_MRI); + qm_isr_disable_write(__p, isdr); + if (qm_dqrr_current(__p) != NULL) { + pr_err("Qman DQRR unclean, need recovery\n"); + goto fail_dqrr_mr_empty; + } + if (qm_mr_current(__p) != NULL) { + /* special handling, drain just in case it's a few FQRNIs */ + if (drain_mr_fqrni(__p)) { + pr_err("Qman MR unclean, need recovery\n"); + goto fail_dqrr_mr_empty; + } + } + /* Success */ + portal->config = config; + spin_lock(&affine_mask_lock); + cpumask_set_cpu(config->public_cfg.cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + qm_isr_disable_write(__p, 0); + /* Write a sane SDQCR */ + qm_dqrr_sdqcr_set(__p, recovery_mode ? 0 : portal->sdqcr); + return portal; +fail_dqrr_mr_empty: +fail_eqcr_empty: +#ifdef CONFIG_FSL_DPA_HAVE_IRQ +fail_affinity: + free_irq(config->public_cfg.irq, portal); +fail_irq: +#endif + platform_device_del(portal->pdev); +fail_devadd: + platform_device_put(portal->pdev); +fail_devalloc: + if (portal->cgrs) + kfree(portal->cgrs); +fail_cgrs: + qm_isr_finish(__p); +fail_isr: + qm_mc_finish(__p); +fail_mc: + qm_mr_finish(__p); +fail_mr: + qm_dqrr_finish(__p); +fail_dqrr: + qm_eqcr_finish(__p); +fail_eqcr: + put_affine_portal(); + return NULL; +} + +/* These checks are BUG_ON()s because the driver is already supposed to avoid + * these cases. */ +struct qman_portal *qman_create_affine_slave(struct qman_portal *redirect) +{ +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + struct qman_portal *p = get_raw_affine_portal(); + /* Check that we don't already have our own portal */ + BUG_ON(p->config); + /* Check that we aren't already slaving to another portal */ + BUG_ON(p->is_shared); + /* Check that 'redirect' is prepared to have us */ + BUG_ON(!redirect->config->public_cfg.is_shared); + /* These are the only elements to initialise when redirecting */ + p->irq_sources = 0; + p->sharing_redirect = redirect; + put_affine_portal(); + return p; +#else + BUG(); + return NULL; +#endif +} + +const struct qm_portal_config *qman_destroy_affine_portal(void) +{ + /* We don't want to redirect if we're a slave, use "raw" */ + struct qman_portal *qm = get_raw_affine_portal(); + const struct qm_portal_config *pcfg; + int cpu; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (qm->sharing_redirect) { + qm->sharing_redirect = NULL; + put_affine_portal(); + return NULL; + } + qm->is_shared = 0; +#endif + pcfg = qm->config; + cpu = pcfg->public_cfg.cpu; + /* NB we do this to "quiesce" EQCR. If we add enqueue-completions or + * something related to QM_PIRQ_EQCI, this may need fixing. + * Also, due to the prefetching model used for CI updates in the enqueue + * path, this update will only invalidate the CI cacheline *after* + * working on it, so we need to call this twice to ensure a full update + * irrespective of where the enqueue processing was at when the teardown + * began. */ + qm_eqcr_cce_update(&qm->p); + qm_eqcr_cce_update(&qm->p); +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + free_irq(pcfg->public_cfg.irq, qm); +#endif + kfree(qm->cgrs); + qm_isr_finish(&qm->p); + qm_mc_finish(&qm->p); + qm_mr_finish(&qm->p); + qm_dqrr_finish(&qm->p); + qm_eqcr_finish(&qm->p); + qm->config = NULL; + spin_lock(&affine_mask_lock); + cpumask_clear_cpu(cpu, &affine_mask); + spin_unlock(&affine_mask_lock); + put_affine_portal(); + return pcfg; +} + +const struct qman_portal_config *qman_get_portal_config(void) +{ + struct qman_portal *p = get_affine_portal(); + const struct qman_portal_config *ret = &p->config->public_cfg; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_get_portal_config); + +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX +void qman_get_null_cb(struct qman_fq_cb *null_cb) +{ + struct qman_portal *p = get_affine_portal(); + *null_cb = p->null_cb; + put_affine_portal(); +} +EXPORT_SYMBOL(qman_get_null_cb); + +void qman_set_null_cb(const struct qman_fq_cb *null_cb) +{ + struct qman_portal *p = get_affine_portal(); + p->null_cb = *null_cb; + put_affine_portal(); +} +EXPORT_SYMBOL(qman_set_null_cb); +#endif + +/* Inline helper to reduce nesting in __poll_portal_slow() */ +static inline void fq_state_change(struct qman_portal *p, struct qman_fq *fq, + const struct qm_mr_entry *msg, u8 verb) +{ + FQLOCK(fq); + switch(verb) { + case QM_MR_VERB_FQRL: + DPA_ASSERT(fq_isset(fq, QMAN_FQ_STATE_ORL)); + fq_clear(fq, QMAN_FQ_STATE_ORL); + table_del_fq(p, fq); + break; + case QM_MR_VERB_FQRN: + DPA_ASSERT((fq->state == qman_fq_state_parked) || + (fq->state == qman_fq_state_sched)); + DPA_ASSERT(fq_isset(fq, QMAN_FQ_STATE_CHANGING)); + fq_clear(fq, QMAN_FQ_STATE_CHANGING); + if (msg->fq.fqs & QM_MR_FQS_NOTEMPTY) + fq_set(fq, QMAN_FQ_STATE_NE); + if (msg->fq.fqs & QM_MR_FQS_ORLPRESENT) + fq_set(fq, QMAN_FQ_STATE_ORL); + else + table_del_fq(p, fq); + fq->state = qman_fq_state_retired; + break; + case QM_MR_VERB_FQPN: + DPA_ASSERT(fq->state == qman_fq_state_sched); + DPA_ASSERT(fq_isclear(fq, QMAN_FQ_STATE_CHANGING)); + fq->state = qman_fq_state_parked; + } + FQUNLOCK(fq); +} + +static u32 __poll_portal_slow(struct qman_portal *p, u32 is) +{ + const struct qm_mr_entry *msg; + + BUG_ON(p->bits & PORTAL_BITS_RECOVERY); + + if (is & QM_PIRQ_CSCI) { + struct qman_cgrs rr, c; + struct qm_mc_result *mcr; + struct qman_cgr *cgr; + int i; + unsigned long irqflags __maybe_unused; + + spin_lock_irqsave(&p->cgr_lock, irqflags); + qm_mc_start(&p->p); + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCONGESTION); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + /* mask out the ones I'm not interested in */ + qman_cgrs_and(&rr, (const struct qman_cgrs *) + &mcr->querycongestion.state, &p->cgrs[0]); + /* check previous snapshot for delta, enter/exit congestion */ + qman_cgrs_xor(&c, &rr, &p->cgrs[1]); + /* update snapshot */ + qman_cgrs_cp(&p->cgrs[1], &rr); + /* Invoke callback */ + qman_cgrs_for_each_1(i, &c) + list_for_each_entry(cgr, &p->cgr_cbs[i], node) { + if (cgr->cb) + cgr->cb(p, cgr, qman_cgrs_get(&rr, i)); + } + spin_unlock_irqrestore(&p->cgr_lock, irqflags); + } + +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (is & QM_PIRQ_EQCI) { + unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + p->eqci_owned = NULL; + PORTAL_IRQ_UNLOCK(p, irqflags); + wake_up(&affine_queue); + } +#endif + + if (is & QM_PIRQ_EQRI) { + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + qm_eqcr_cce_update(&p->p); + qm_eqcr_set_ithresh(&p->p, 0); + PORTAL_IRQ_UNLOCK(p, irqflags); + wake_up(&affine_queue); + } + + if (is & QM_PIRQ_MRI) { + u8 num = 0; +mr_loop: + qm_mr_pvb_update(&p->p); + msg = qm_mr_current(&p->p); + if (msg) { + u8 verb = msg->verb & QM_MR_VERB_TYPE_MASK; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + struct qman_fq *fq; +#else + struct qman_fq *fq = (void *)(uintptr_t)msg->ern.tag; +#endif + if (verb == QM_MR_VERB_FQRNI) { + ; /* nada, we drop FQRNIs on the floor */ + } else if ((verb == QM_MR_VERB_FQRN) || + (verb == QM_MR_VERB_FQRL)) { + /* It's retirement related - need a lookup */ + fq = table_find_fq(p, msg->fq.fqid); + if (!fq) + panic("unexpected FQ retirement"); + fq_state_change(p, fq, msg, verb); + if (fq->cb.fqs) + fq->cb.fqs(p, fq, msg); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + } else if (likely(msg->ern.tag)) { + fq = get_fq_table_entry(msg->ern.tag); +#else + } else if (likely(fq)) { +#endif + /* As per the header note, this is the way to + * determine if it's a s/w ERN or not. */ + if (likely(!(verb & QM_MR_VERB_DC_ERN))) + fq->cb.ern(p, fq, msg); + else + fq->cb.dc_ern(p, fq, msg); + } +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + else { + /* use portal default handlers for 'null's */ + if (likely(!(verb & QM_MR_VERB_DC_ERN))) + p->null_cb.ern(p, NULL, msg); + else if (verb == QM_MR_VERB_DC_ERN) + p->null_cb.dc_ern(p, NULL, msg); + else if (p->null_cb.fqs) + p->null_cb.fqs(p, NULL, msg); + } +#endif + num++; + qm_mr_next(&p->p); + goto mr_loop; + } + qm_mr_cci_consume(&p->p, num); + } + + return is & (QM_PIRQ_CSCI | QM_PIRQ_EQCI | QM_PIRQ_EQRI | QM_PIRQ_MRI); +} + +/* remove some slowish-path stuff from the "fast path" and make sure it isn't + * inlined. */ +static noinline void clear_vdqcr(struct qman_portal *p, struct qman_fq *fq) +{ + p->vdqcr_owned = NULL; + FQLOCK(fq); + fq_clear(fq, QMAN_FQ_STATE_VDQCR); + FQUNLOCK(fq); + wake_up(&affine_queue); +} + +/* Look: no locks, no irq_save()s, no preempt_disable()s! :-) The only states + * that would conflict with other things if they ran at the same time on the + * same cpu are; + * + * (i) setting/clearing vdqcr_owned, and + * (ii) clearing the NE (Not Empty) flag. + * + * Both are safe. Because; + * + * (i) this clearing can only occur after qman_volatile_dequeue() has set the + * vdqcr_owned field (which it does before setting VDQCR), and + * qman_volatile_dequeue() blocks interrupts and preemption while this is + * done so that we can't interfere. + * (ii) the NE flag is only cleared after qman_retire_fq() has set it, and as + * with (i) that API prevents us from interfering until it's safe. + * + * The good thing is that qman_volatile_dequeue() and qman_retire_fq() run far + * less frequently (ie. per-FQ) than __poll_portal_fast() does, so the nett + * advantage comes from this function not having to "lock" anything at all. + * + * Note also that the callbacks are invoked at points which are safe against the + * above potential conflicts, but that this function itself is not re-entrant + * (this is because the function tracks one end of each FIFO in the portal and + * we do *not* want to lock that). So the consequence is that it is safe for + * user callbacks to call into any Qman API *except* qman_poll() (as that's the + * sole API that could be invoking the callback through this function). + */ +static inline unsigned int __poll_portal_fast(struct qman_portal *p, + unsigned int poll_limit) +{ + const struct qm_dqrr_entry *dq; + struct qman_fq *fq; + enum qman_cb_dqrr_result res; +#ifdef CONFIG_FSL_QMAN_DQRR_PREFETCHING + int coherent = (p->config->public_cfg.has_stashing); +#endif + unsigned int limit = 0; + + BUG_ON(p->bits & PORTAL_BITS_RECOVERY); +loop: +#ifdef CONFIG_FSL_QMAN_DQRR_PREFETCHING + qm_dqrr_pvb_update(&p->p, coherent); +#else + qm_dqrr_pvb_update(&p->p, 1); +#endif + dq = qm_dqrr_current(&p->p); + if (!dq) + goto done; + if (dq->stat & QM_DQRR_STAT_UNSCHEDULED) { + /* VDQCR: don't trust contextB as the FQ may have been + * configured for h/w consumption and we're draining it + * post-retirement. */ + fq = p->vdqcr_owned; + /* We only set QMAN_FQ_STATE_NE when retiring, so we only need + * to check for clearing it when doing volatile dequeues. It's + * one less thing to check in the critical path (SDQCR). */ + if (dq->stat & QM_DQRR_STAT_FQ_EMPTY) + fq_clear(fq, QMAN_FQ_STATE_NE); + /* this is duplicated from the SDQCR code, but we have stuff to + * do before *and* after this callback, and we don't want + * multiple if()s in the critical path (SDQCR). */ + res = fq->cb.dqrr(p, fq, dq); + if (res == qman_cb_dqrr_stop) + goto done; + /* Check for VDQCR completion */ + if (dq->stat & QM_DQRR_STAT_DQCR_EXPIRED) + clear_vdqcr(p, fq); + } else { + /* SDQCR: contextB points to the FQ */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + fq = get_fq_table_entry(dq->contextB); +#else + fq = (void *)(uintptr_t)dq->contextB; +#endif +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + if (unlikely(!fq)) { + /* use portal default handlers */ + res = p->null_cb.dqrr(p, NULL, dq); + DPA_ASSERT(res == qman_cb_dqrr_consume); + res = qman_cb_dqrr_consume; + } else +#endif + { + /* Now let the callback do its stuff */ + res = fq->cb.dqrr(p, fq, dq); + /* The callback can request that we exit without + * consuming this entry nor advancing; */ + if (res == qman_cb_dqrr_stop) + goto done; + } + } + /* Interpret 'dq' from a driver perspective. */ + /* Parking isn't possible unless HELDACTIVE was set. NB, + * FORCEELIGIBLE implies HELDACTIVE, so we only need to + * check for HELDACTIVE to cover both. */ + DPA_ASSERT((dq->stat & QM_DQRR_STAT_FQ_HELDACTIVE) || + (res != qman_cb_dqrr_park)); +#ifdef CONFIG_FSL_QMAN_PORTAL_DISABLEAUTO_DCA + if (res == qman_cb_dqrr_park) + /* The only thing to do for non-DCA is the park-request */ + qm_dqrr_park_current(&p->p); + /* Move forward */ + qm_dqrr_next(&p->p); + qm_dqrr_cci_consume(&p->p, 1); +#else + /* Defer just means "skip it, I'll consume it myself later on" */ + if (res != qman_cb_dqrr_defer) + qm_dqrr_cdc_consume_1ptr(&p->p, dq, (res == qman_cb_dqrr_park)); + /* Move forward */ + qm_dqrr_next(&p->p); +#endif + /* Entry processed and consumed, increment our counter. The callback can + * request that we exit after consuming the entry, and we also exit if + * we reach our processing limit, so loop back only if neither of these + * conditions is met. */ + if ((++limit < poll_limit) && (res != qman_cb_dqrr_consume_stop)) + goto loop; +done: + return limit; +} + +u32 qman_irqsource_get(void) +{ + /* "irqsource" and "poll" APIs mustn't redirect when sharing, they + * should shut the user out if they are not the primary CPU hosting the + * portal. That's why we use the "raw" interface. */ + struct qman_portal *p = get_raw_affine_portal(); + u32 ret = p->irq_sources & QM_PIRQ_VISIBLE; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_irqsource_get); + +int qman_irqsource_add(u32 bits __maybe_unused) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct qman_portal *p = get_raw_affine_portal(); + int ret = 0; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) + ret = -EINVAL; + else +#endif + { + __maybe_unused unsigned long irqflags; + PORTAL_IRQ_LOCK(p, irqflags); + set_bits(bits & QM_PIRQ_VISIBLE, &p->irq_sources); + qm_isr_enable_write(&p->p, p->irq_sources); + PORTAL_IRQ_UNLOCK(p, irqflags); + } + put_affine_portal(); + return ret; +#else + pr_err("No Qman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(qman_irqsource_add); + +int qman_irqsource_remove(u32 bits) +{ +#ifdef CONFIG_FSL_DPA_HAVE_IRQ + struct qman_portal *p = get_raw_affine_portal(); + __maybe_unused unsigned long irqflags; + u32 ier; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (p->sharing_redirect) { + put_affine_portal(); + return -EINVAL; + } +#endif + /* Our interrupt handler only processes+clears status register bits that + * are in p->irq_sources. As we're trimming that mask, if one of them + * were to assert in the status register just before we remove it from + * the enable register, there would be an interrupt-storm when we + * release the IRQ lock. So we wait for the enable register update to + * take effect in h/w (by reading it back) and then clear all other bits + * in the status register. Ie. we clear them from ISR once it's certain + * IER won't allow them to reassert. */ + PORTAL_IRQ_LOCK(p, irqflags); + bits &= QM_PIRQ_VISIBLE; + clear_bits(bits, &p->irq_sources); + qm_isr_enable_write(&p->p, p->irq_sources); + ier = qm_isr_enable_read(&p->p); + /* Using "~ier" (rather than "bits" or "~p->irq_sources") creates a + * data-dependency, ie. to protect against re-ordering. */ + qm_isr_status_clear(&p->p, ~ier); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +#else + pr_err("No Qman portal IRQ support, mustn't specify IRQ flags!"); + return -EINVAL; +#endif +} +EXPORT_SYMBOL(qman_irqsource_remove); + +const cpumask_t *qman_affine_cpus(void) +{ + return &affine_mask; +} +EXPORT_SYMBOL(qman_affine_cpus); + +int qman_poll_dqrr(unsigned int limit) +{ + /* We need to fail when called for a "slave", so use "raw" */ + struct qman_portal *p = get_raw_affine_portal(); + int ret; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + ret = -EINVAL; + else +#endif + { + BUG_ON(p->irq_sources & QM_PIRQ_DQRI); + ret = __poll_portal_fast(p, limit); + } + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_poll_dqrr); + +u32 qman_poll_slow(void) +{ + /* We need to fail when called for a "slave", so use "raw" */ + struct qman_portal *p = get_raw_affine_portal(); + u32 ret; +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + ret = (u32)-1; + else +#endif + { + u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources; + ret = __poll_portal_slow(p, is); + qm_isr_status_clear(&p->p, ret); + } + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_poll_slow); + +/* Legacy wrapper */ +void qman_poll(void) +{ + struct qman_portal *p = get_raw_affine_portal(); +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE + if (unlikely(p->sharing_redirect)) + goto done; +#endif + if ((~p->irq_sources) & QM_PIRQ_SLOW) { + if (!(p->slowpoll--)) { + u32 is = qm_isr_status_read(&p->p) & ~p->irq_sources; + u32 active = __poll_portal_slow(p, is); + if (active) { + qm_isr_status_clear(&p->p, active); + p->slowpoll = SLOW_POLL_BUSY; + } else + p->slowpoll = SLOW_POLL_IDLE; + } + } + if ((~p->irq_sources) & QM_PIRQ_DQRI) + __poll_portal_fast(p, CONFIG_FSL_QMAN_POLL_LIMIT); +#ifdef CONFIG_FSL_DPA_PORTAL_SHARE +done: +#endif + put_affine_portal(); +} +EXPORT_SYMBOL(qman_poll); + +/* Recovery processing. */ +static int recovery_poll_mr(struct qman_portal *p, u32 fqid) +{ + const struct qm_mr_entry *msg; + enum { + wait_for_fqrn, + wait_for_fqrl, + done + } state = wait_for_fqrn; + u8 v, fqs = 0; + +loop: + qm_mr_pvb_update(&p->p); + msg = qm_mr_current(&p->p); + if (!msg) { + cpu_relax(); + goto loop; + } + v = msg->verb & QM_MR_VERB_TYPE_MASK; + /* all MR messages have "fqid" in the same place */ + if (msg->fq.fqid != fqid) { +ignore_msg: + pr_warning("recovery_poll_mr(), ignoring msg 0x%02x for " + "FQID %d\n", v, msg->fq.fqid); + goto next_msg; + } + if (state == wait_for_fqrn) { + if ((v != QM_MR_VERB_FQRN) && (v != QM_MR_VERB_FQRNI)) + goto ignore_msg; + fqs = msg->fq.fqs; + if (!(fqs & QM_MR_FQS_ORLPRESENT)) + state = done; + else + state = wait_for_fqrl; + } else { + if (v != QM_MR_VERB_FQRL) + goto ignore_msg; + state = done; + } +next_msg: + qm_mr_next(&p->p); + qm_mr_cci_consume(&p->p, 1); + if (state != done) + goto loop; + return (fqs & QM_MR_FQS_NOTEMPTY) ? 1 : 0; +} +static unsigned int recovery_poll_dqrr(struct qman_portal *p, u32 fqid) +{ + const struct qm_dqrr_entry *dq; + u8 empty = 0, num_fds = 0; + +loop: + qm_dqrr_pvb_update(&p->p, 0); + dq = qm_dqrr_current(&p->p); + if (!dq) { + cpu_relax(); + goto loop; + } + if (!(dq->stat & QM_DQRR_STAT_UNSCHEDULED)) { +ignore_dqrr: + pr_warning("recovery_poll_dqrr(), ignoring dqrr %02x:%02x " + "for FQID %d\n", + dq->verb & QM_DQRR_VERB_MASK, dq->stat, dq->fqid); + goto next_dqrr; + } + if (dq->fqid != fqid) + goto ignore_dqrr; + if (dq->stat & QM_DQRR_STAT_FD_VALID) + num_fds++; + if (dq->stat & QM_DQRR_STAT_FQ_EMPTY) + empty = 1; +next_dqrr: + qm_dqrr_next(&p->p); + qm_dqrr_cci_consume(&p->p, 1); + if (!empty) + goto loop; + return num_fds; +} +int qman_recovery_cleanup_fq(u32 fqid) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + int ret = 0; + unsigned int num_fds = 0; + const char *s; + u8 state; + + /* Lock this whole flow down via the portal's "vdqcr" */ + PORTAL_IRQ_LOCK(p, irqflags); + BUG_ON(!(p->bits & PORTAL_BITS_RECOVERY)); + if (p->vdqcr_owned) + ret = -EBUSY; + else + p->vdqcr_owned = (void *)1; + PORTAL_IRQ_UNLOCK(p, irqflags); + if (ret) + goto out; + + /* Query the FQ's state */ + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ_NP); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ_NP); + if (mcr->result != QM_MCR_RESULT_OK) { + ret = -EIO; + goto out; + } + state = mcr->queryfq_np.state & QM_MCR_NP_STATE_MASK; + + /* OOS: nothing to do */ + if (state == QM_MCR_NP_STATE_OOS) + goto out; + /* Otherwise: must be retired */ + if (state != QM_MCR_NP_STATE_RETIRED) { + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_RETIRE); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == + QM_MCR_VERB_ALTER_RETIRE); + if ((mcr->result != QM_MCR_RESULT_OK) && + (mcr->result != QM_MCR_RESULT_PENDING)) { + ret = -EIO; + goto out; + } + ret = recovery_poll_mr(p, fqid); + if (!ret) + /* FQ empty */ + goto oos; + } + /* Drain till empty */ + qm_dqrr_vdqcr_set(&p->p, fqid & 0x00ffffff); + num_fds = recovery_poll_dqrr(p, fqid); + +oos: + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_OOS); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_OOS); + if (mcr->result != QM_MCR_RESULT_OK) + ret = -EIO; + /* done */ + s = (state == QM_MCR_NP_STATE_RETIRED) ? "retired" : + (state == QM_MCR_NP_STATE_PARKED) ? "parked" : "scheduled"; + pr_info("Qman: %s FQID %d recovered (%d frames)\n", s, fqid, num_fds); +out: + PORTAL_IRQ_LOCK(p, irqflags); + p->vdqcr_owned = NULL; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_recovery_cleanup_fq); + +/* called from qman_driver.c::qman_recovery_exit() only (if exporting, use + * get_raw_affine_portal() and check for the "SLAVE" bit). */ +void qman_recovery_exit_local(void) +{ + struct qman_portal *p = get_affine_portal(); + BUG_ON(!(p->bits & PORTAL_BITS_RECOVERY)); + /* Reinitialise DQRR using expected settings */ + qm_dqrr_finish(&p->p); + post_recovery(p, p->config); + clear_bits(PORTAL_BITS_RECOVERY, &p->bits); + if (qm_dqrr_init(&p->p, p->config, qm_dqrr_dpush, qm_dqrr_pvb, + QM_DQRR_CMODE, DQRR_MAXFILL, 0)) + panic("Qman DQRR initialisation failed, recovery broken"); + qm_dqrr_sdqcr_set(&p->p, p->sdqcr); + qm_isr_status_clear(&p->p, 0xffffffff); + qm_isr_uninhibit(&p->p); + put_affine_portal(); +} + +void qman_stop_dequeues(void) +{ + struct qman_portal *p = get_affine_portal(); + qman_stop_dequeues_ex(p); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_stop_dequeues); + +void qman_start_dequeues(void) +{ + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + DPA_ASSERT(p->dqrr_disable_ref > 0); + if (!(--p->dqrr_disable_ref)) + qm_dqrr_set_maxfill(&p->p, DQRR_MAXFILL); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_start_dequeues); + +void qman_static_dequeue_add(u32 pools) +{ + unsigned long irqflags __maybe_unused; + struct qman_portal *p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + pools &= p->config->public_cfg.pools; + p->sdqcr |= pools; + qm_dqrr_sdqcr_set(&p->p, p->sdqcr); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_static_dequeue_add); + +void qman_static_dequeue_del(u32 pools) +{ + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + PORTAL_IRQ_LOCK(p, irqflags); + pools &= p->config->public_cfg.pools; + p->sdqcr &= ~pools; + qm_dqrr_sdqcr_set(&p->p, p->sdqcr); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_static_dequeue_del); + +u32 qman_static_dequeue_get(void) +{ + struct qman_portal *p = get_affine_portal(); + u32 ret = p->sdqcr; + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_static_dequeue_get); + +void qman_dca(struct qm_dqrr_entry *dq, int park_request) +{ + struct qman_portal *p = get_affine_portal(); + qm_dqrr_cdc_consume_1ptr(&p->p, dq, park_request); + put_affine_portal(); +} +EXPORT_SYMBOL(qman_dca); + +/*******************/ +/* Frame queue API */ +/*******************/ + +static const char *mcr_result_str(u8 result) +{ + switch (result) { + case QM_MCR_RESULT_NULL: + return "QM_MCR_RESULT_NULL"; + case QM_MCR_RESULT_OK: + return "QM_MCR_RESULT_OK"; + case QM_MCR_RESULT_ERR_FQID: + return "QM_MCR_RESULT_ERR_FQID"; + case QM_MCR_RESULT_ERR_FQSTATE: + return "QM_MCR_RESULT_ERR_FQSTATE"; + case QM_MCR_RESULT_ERR_NOTEMPTY: + return "QM_MCR_RESULT_ERR_NOTEMPTY"; + case QM_MCR_RESULT_PENDING: + return "QM_MCR_RESULT_PENDING"; + case QM_MCR_RESULT_ERR_BADCOMMAND: + return "QM_MCR_RESULT_ERR_BADCOMMAND"; + } + return ""; +} + +int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq) +{ + struct qm_fqd fqd; + struct qm_mcr_queryfq_np np; + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + + if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID) { + fqid = qm_fq_new(); + if (!fqid) + return -ENOMEM; + } + spin_lock_init(&fq->fqlock); + fq->fqid = fqid; + fq->flags = flags; + fq->state = qman_fq_state_oos; + fq->cgr_groupid = 0; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + if (unlikely(find_empty_fq_table_entry(&fq->key, fq))) + return -ENOMEM; +#endif + if (!(flags & QMAN_FQ_FLAG_AS_IS) || (flags & QMAN_FQ_FLAG_NO_MODIFY)) + return 0; + /* Everything else is AS_IS support */ + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_QUERYFQ); + if (mcr->result != QM_MCR_RESULT_OK) { + pr_err("QUERYFQ failed: %s\n", mcr_result_str(mcr->result)); + goto err; + } + fqd = mcr->queryfq.fqd; + mcc = qm_mc_start(&p->p); + mcc->queryfq_np.fqid = fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ_NP); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_QUERYFQ_NP); + if (mcr->result != QM_MCR_RESULT_OK) { + pr_err("QUERYFQ_NP failed: %s\n", mcr_result_str(mcr->result)); + goto err; + } + np = mcr->queryfq_np; + /* Phew, have queryfq and queryfq_np results, stitch together + * the FQ object from those. */ + fq->cgr_groupid = fqd.cgid; + switch (np.state & QM_MCR_NP_STATE_MASK) { + case QM_MCR_NP_STATE_OOS: + break; + case QM_MCR_NP_STATE_RETIRED: + fq->state = qman_fq_state_retired; + if (np.frm_cnt) + fq_set(fq, QMAN_FQ_STATE_NE); + break; + case QM_MCR_NP_STATE_TEN_SCHED: + case QM_MCR_NP_STATE_TRU_SCHED: + case QM_MCR_NP_STATE_ACTIVE: + fq->state = qman_fq_state_sched; + if (np.state & QM_MCR_NP_STATE_R) + fq_set(fq, QMAN_FQ_STATE_CHANGING); + break; + case QM_MCR_NP_STATE_PARKED: + fq->state = qman_fq_state_parked; + break; + default: + DPA_ASSERT(NULL == "invalid FQ state"); + } + if (fqd.fq_ctrl & QM_FQCTRL_CGE) + fq->state |= QMAN_FQ_STATE_CGR_EN; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +err: + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (flags & QMAN_FQ_FLAG_DYNAMIC_FQID) + qm_fq_free(fqid); + return -EIO; +} +EXPORT_SYMBOL(qman_create_fq); + +void qman_destroy_fq(struct qman_fq *fq, u32 flags __maybe_unused) +{ + /* We don't need to lock the FQ as it is a pre-condition that the FQ be + * quiesced. Instead, run some checks. */ + switch (fq->state) { + case qman_fq_state_parked: + DPA_ASSERT(flags & QMAN_FQ_DESTROY_PARKED); + case qman_fq_state_oos: + if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID)) + qm_fq_free(fq->fqid); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + clear_fq_table_entry(fq->key); +#endif + return; + default: + break; + } + DPA_ASSERT(NULL == "qman_free_fq() on unquiesced FQ!"); +} +EXPORT_SYMBOL(qman_destroy_fq); + +u32 qman_fq_fqid(struct qman_fq *fq) +{ + return fq->fqid; +} +EXPORT_SYMBOL(qman_fq_fqid); + +void qman_fq_state(struct qman_fq *fq, enum qman_fq_state *state, u32 *flags) +{ + if (state) + *state = fq->state; + if (flags) + *flags = fq->flags; +} +EXPORT_SYMBOL(qman_fq_state); + +int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + u8 res, myverb = (flags & QMAN_INITFQ_FLAG_SCHED) ? + QM_MCC_VERB_INITFQ_SCHED : QM_MCC_VERB_INITFQ_PARKED; + + DPA_ASSERT((fq->state == qman_fq_state_oos) || + (fq->state == qman_fq_state_parked)); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + if (opts && (opts->we_mask & QM_INITFQ_WE_OAC)) { + /* OAC not supported on rev1.0 */ + if (unlikely(qman_ip_rev == QMAN_REV10)) + return -EINVAL; + /* And can't be set at the same time as TDTHRESH */ + if (opts->we_mask & QM_INITFQ_WE_TDTHRESH) + return -EINVAL; + } + /* Issue an INITFQ_[PARKED|SCHED] management command */ + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_CHANGING)) || + ((fq->state != qman_fq_state_oos) && + (fq->state != qman_fq_state_parked)))) { + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return -EBUSY; + } + mcc = qm_mc_start(&p->p); + if (opts) + mcc->initfq = *opts; + mcc->initfq.fqid = fq->fqid; + mcc->initfq.count = 0; + /* If INITFQ_FLAG_NULL is passed, contextB is set to zero. Otherwise, + * if the FQ does *not* have the TO_DCPORTAL flag, contextB is set as a + * demux pointer. Otherwise, TO_DCPORTAL is set, so the caller-provided + * value is allowed to stand, don't overwrite it. */ + if ((flags & QMAN_INITFQ_FLAG_NULL) || + fq_isclear(fq, QMAN_FQ_FLAG_TO_DCPORTAL)) { + dma_addr_t phys_fq; + mcc->initfq.we_mask |= QM_INITFQ_WE_CONTEXTB; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + mcc->initfq.fqd.context_b = (flags & QMAN_INITFQ_FLAG_NULL) ? + 0 : fq->key; +#else + mcc->initfq.fqd.context_b = (flags & QMAN_INITFQ_FLAG_NULL) ? + 0 : (u32)(uintptr_t)fq; +#endif + /* and the physical address - NB, if the user wasn't trying to + * set CONTEXTA, clear the stashing settings. */ + if (!(mcc->initfq.we_mask & QM_INITFQ_WE_CONTEXTA)) { + mcc->initfq.we_mask |= QM_INITFQ_WE_CONTEXTA; + memset(&mcc->initfq.fqd.context_a, 0, + sizeof(&mcc->initfq.fqd.context_a)); + } else { + phys_fq = dma_map_single(&p->pdev->dev, fq, sizeof(*fq), + DMA_TO_DEVICE); + qm_fqd_stashing_set64(&mcc->initfq.fqd, phys_fq); + } + } + if (flags & QMAN_INITFQ_FLAG_LOCAL) { + mcc->initfq.fqd.dest.channel = p->config->public_cfg.channel; + if (!(mcc->initfq.we_mask & QM_INITFQ_WE_DESTWQ)) { + mcc->initfq.we_mask |= QM_INITFQ_WE_DESTWQ; + mcc->initfq.fqd.dest.wq = 4; + } + } + qm_mc_commit(&p->p, myverb); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == myverb); + res = mcr->result; + if (res != QM_MCR_RESULT_OK) { + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return -EIO; + } + if (opts) { + if (opts->we_mask & QM_INITFQ_WE_FQCTRL) { + if (opts->fqd.fq_ctrl & QM_FQCTRL_CGE) + fq_set(fq, QMAN_FQ_STATE_CGR_EN); + else + fq_clear(fq, QMAN_FQ_STATE_CGR_EN); + } + if (opts->we_mask & QM_INITFQ_WE_CGID) + fq->cgr_groupid = opts->fqd.cgid; + } + fq->state = (flags & QMAN_INITFQ_FLAG_SCHED) ? + qman_fq_state_sched : qman_fq_state_parked; + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return 0; +} +EXPORT_SYMBOL(qman_init_fq); + +int qman_schedule_fq(struct qman_fq *fq) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + int ret = 0; + u8 res; + + DPA_ASSERT(fq->state == qman_fq_state_parked); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + /* Issue a ALTERFQ_SCHED management command */ + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_CHANGING)) || + (fq->state != qman_fq_state_parked))) { + ret = -EBUSY; + goto out; + } + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_SCHED); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_SCHED); + res = mcr->result; + if (res != QM_MCR_RESULT_OK) { + ret = -EIO; + goto out; + } + fq->state = qman_fq_state_sched; +out: + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_schedule_fq); + +int qman_retire_fq(struct qman_fq *fq, u32 *flags) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + int rval; + u8 res; + + DPA_ASSERT((fq->state == qman_fq_state_parked) || + (fq->state == qman_fq_state_sched)); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_CHANGING)) || + (fq->state == qman_fq_state_retired) || + (fq->state == qman_fq_state_oos))) { + rval = -EBUSY; + goto out; + } + rval = table_push_fq(p, fq); + if (rval) + goto out; + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_RETIRE); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_RETIRE); + res = mcr->result; + /* "Elegant" would be to treat OK/PENDING the same way; set CHANGING, + * and defer the flags until FQRNI or FQRN (respectively) show up. But + * "Friendly" is to process OK immediately, and not set CHANGING. We do + * friendly, otherwise the caller doesn't necessarily have a fully + * "retired" FQ on return even if the retirement was immediate. However + * this does mean some code duplication between here and + * fq_state_change(). */ + if (likely(res == QM_MCR_RESULT_OK)) { + rval = 0; + /* Process 'fq' right away, we'll ignore FQRNI */ + if (mcr->alterfq.fqs & QM_MCR_FQS_NOTEMPTY) + fq_set(fq, QMAN_FQ_STATE_NE); + if (mcr->alterfq.fqs & QM_MCR_FQS_ORLPRESENT) + fq_set(fq, QMAN_FQ_STATE_ORL); + else + table_del_fq(p, fq); + if (flags) + *flags = fq->flags; + fq->state = qman_fq_state_retired; + if (fq->cb.fqs) { + /* Another issue with supporting "immediate" retirement + * is that we're forced to drop FQRNIs, because by the + * time they're seen it may already be "too late" (the + * fq may have been OOS'd and free()'d already). But if + * the upper layer wants a callback whether it's + * immediate or not, we have to fake a "MR" entry to + * look like an FQRNI... */ + struct qm_mr_entry msg; + msg.verb = QM_MR_VERB_FQRNI; + msg.fq.fqs = mcr->alterfq.fqs; + msg.fq.fqid = fq->fqid; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + msg.fq.contextB = fq->key; +#else + msg.fq.contextB = (u32)(uintptr_t)fq; +#endif + fq->cb.fqs(p, fq, &msg); + } + } else if (res == QM_MCR_RESULT_PENDING) { + rval = 1; + fq_set(fq, QMAN_FQ_STATE_CHANGING); + } else { + rval = -EIO; + table_del_fq(p, fq); + } +out: + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return rval; +} +EXPORT_SYMBOL(qman_retire_fq); + +int qman_oos_fq(struct qman_fq *fq) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p; + unsigned long irqflags __maybe_unused; + int ret = 0; + u8 res; + + DPA_ASSERT(fq->state == qman_fq_state_retired); +#ifdef CONFIG_FSL_DPA_CHECKING + if (unlikely(fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))) + return -EINVAL; +#endif + p = get_affine_portal(); + PORTAL_IRQ_LOCK(p, irqflags); + FQLOCK(fq); + if (unlikely((fq_isset(fq, QMAN_FQ_STATE_BLOCKOOS)) || + (fq->state != qman_fq_state_retired))) { + ret = -EBUSY; + goto out; + } + mcc = qm_mc_start(&p->p); + mcc->alterfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_ALTER_OOS); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_ALTER_OOS); + res = mcr->result; + if (res != QM_MCR_RESULT_OK) { + ret = -EIO; + goto out; + } + fq->state = qman_fq_state_oos; +out: + FQUNLOCK(fq); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_oos_fq); + +int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *fqd = mcr->queryfq.fqd; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) + return -EIO; + return 0; +} +EXPORT_SYMBOL(qman_query_fq); + +int qman_query_fq_np(struct qman_fq *fq, struct qm_mcr_queryfq_np *np) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->queryfq.fqid = fq->fqid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYFQ_NP); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCR_VERB_QUERYFQ_NP); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *np = mcr->queryfq_np; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) + return -EIO; + return 0; +} +EXPORT_SYMBOL(qman_query_fq_np); + +int qman_query_wq(u8 query_dedicated, struct qm_mcr_querywq *wq) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res, myverb; + + PORTAL_IRQ_LOCK(p, irqflags); + myverb = (query_dedicated) ? QM_MCR_VERB_QUERYWQ_DEDICATED : + QM_MCR_VERB_QUERYWQ; + mcc = qm_mc_start(&p->p); + mcc->querywq.channel.id = wq->channel.id; + qm_mc_commit(&p->p, myverb); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == myverb); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *wq = mcr->querywq; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("QUERYWQ failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_query_wq); + +int qman_testwrite_cgr(struct qman_cgr *cgr, u64 i_bcnt, + struct qm_mcr_cgrtestwrite *result) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->cgrtestwrite.cgid = cgr->cgrid; + mcc->cgrtestwrite.i_bcnt_hi = (u8)(i_bcnt >> 32); + mcc->cgrtestwrite.i_bcnt_lo = (u32)i_bcnt; + qm_mc_commit(&p->p, QM_MCC_VERB_CGRTESTWRITE); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_CGRTESTWRITE); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *result = mcr->cgrtestwrite; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("CGR TEST WRITE failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_testwrite_cgr); + +int qman_query_cgr(struct qman_cgr *cgr, struct qm_mcr_querycgr *cgrd) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + mcc->querycgr.cgid = cgr->cgrid; + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCGR); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == QM_MCC_VERB_QUERYCGR); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *cgrd = mcr->querycgr; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("QUERY_CGR failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_query_cgr); + +int qman_query_congestion(struct qm_mcr_querycongestion *congestion) +{ + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + + PORTAL_IRQ_LOCK(p, irqflags); + qm_mc_start(&p->p); + qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCONGESTION); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == + QM_MCC_VERB_QUERYCONGESTION); + res = mcr->result; + if (res == QM_MCR_RESULT_OK) + *congestion = mcr->querycongestion; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + if (res != QM_MCR_RESULT_OK) { + pr_err("QUERY_CONGESTION failed: %s\n", mcr_result_str(res)); + return -EIO; + } + return 0; +} +EXPORT_SYMBOL(qman_query_congestion); + +/* internal function used as a wait_event() expression */ +static int set_vdqcr(struct qman_portal **p, struct qman_fq *fq, u32 vdqcr) +{ + unsigned long irqflags __maybe_unused; + int ret = -EBUSY; + *p = get_affine_portal(); + PORTAL_IRQ_LOCK(*p, irqflags); + if (!(*p)->vdqcr_owned) { + FQLOCK(fq); + if (fq_isset(fq, QMAN_FQ_STATE_VDQCR)) + goto escape; + fq_set(fq, QMAN_FQ_STATE_VDQCR); + FQUNLOCK(fq); + (*p)->vdqcr_owned = fq; + ret = 0; + } +escape: + PORTAL_IRQ_UNLOCK(*p, irqflags); + if (!ret) + qm_dqrr_vdqcr_set(&(*p)->p, vdqcr); + put_affine_portal(); + return ret; +} + +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static int wait_vdqcr_start(struct qman_portal **p, struct qman_fq *fq, + u32 vdqcr, u32 flags) +{ + int ret = 0; + if (flags & QMAN_VOLATILE_FLAG_WAIT_INT) + ret = wait_event_interruptible(affine_queue, + !(ret = set_vdqcr(p, fq, vdqcr))); + else + wait_event(affine_queue, !(ret = set_vdqcr(p, fq, vdqcr))); + return ret; +} +#endif + +int qman_volatile_dequeue(struct qman_fq *fq, u32 flags __maybe_unused, + u32 vdqcr) +{ + struct qman_portal *p; + int ret; + + DPA_ASSERT(!fq || (fq->state == qman_fq_state_parked) || + (fq->state == qman_fq_state_retired)); + DPA_ASSERT(!fq || !(vdqcr & QM_VDQCR_FQID_MASK)); + DPA_ASSERT(!fq || !fq_isset(fq, QMAN_FQ_STATE_VDQCR)); + if (fq) + vdqcr = (vdqcr & ~QM_VDQCR_FQID_MASK) | fq->fqid; +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_VOLATILE_FLAG_WAIT) + ret = wait_vdqcr_start(&p, fq, vdqcr, flags); + else +#endif + ret = set_vdqcr(&p, fq, vdqcr); + if (ret) + return ret; + /* VDQCR is set */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_VOLATILE_FLAG_FINISH) { + if (flags & QMAN_VOLATILE_FLAG_WAIT_INT) + /* NB: don't propagate any error - the caller wouldn't + * know whether the VDQCR was issued or not. A signal + * could arrive after returning anyway, so the caller + * can check signal_pending() if that's an issue. */ + wait_event_interruptible(affine_queue, + !fq_isset(fq, QMAN_FQ_STATE_VDQCR)); + else + wait_event(affine_queue, + !fq_isset(fq, QMAN_FQ_STATE_VDQCR)); + } +#endif + return 0; +} +EXPORT_SYMBOL(qman_volatile_dequeue); + +static noinline void update_eqcr_ci(struct qman_portal *p, u8 avail) +{ + if (avail) + qm_eqcr_cce_prefetch(&p->p); + else + qm_eqcr_cce_update(&p->p); +} + +int qman_eqcr_is_empty(void) +{ + unsigned long irqflags __maybe_unused; + struct qman_portal *p = get_affine_portal(); + u8 avail; + + PORTAL_IRQ_LOCK(p, irqflags); + update_eqcr_ci(p, 0); + avail = qm_eqcr_get_fill(&p->p); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return (avail == 0); +} +EXPORT_SYMBOL(qman_eqcr_is_empty); + +static inline struct qm_eqcr_entry *try_eq_start(struct qman_portal **p, + unsigned long *irqflags __maybe_unused, + struct qman_fq *fq, + const struct qm_fd *fd, + u32 flags) +{ + struct qm_eqcr_entry *eq; + u8 avail; + + *p = get_affine_portal(); + PORTAL_IRQ_LOCK(*p, (*irqflags)); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) { + if ((*p)->eqci_owned) { + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + return NULL; + } + (*p)->eqci_owned = fq; + } +#endif + avail = qm_eqcr_get_avail(&(*p)->p); + if (avail < 2) + update_eqcr_ci(*p, avail); + eq = qm_eqcr_start(&(*p)->p); + if (unlikely(!eq)) { +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) + (*p)->eqci_owned = NULL; +#endif + PORTAL_IRQ_UNLOCK(*p, (*irqflags)); + put_affine_portal(); + return NULL; + } + if (flags & QMAN_ENQUEUE_FLAG_DCA) + eq->dca = QM_EQCR_DCA_ENABLE | + ((flags & QMAN_ENQUEUE_FLAG_DCA_PARK) ? + QM_EQCR_DCA_PARK : 0) | + ((flags >> 8) & QM_EQCR_DCA_IDXMASK); + eq->fqid = fq->fqid; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + eq->tag = fq->key; +#else + eq->tag = (u32)(uintptr_t)fq; +#endif + /* From p4080 rev1 -> rev2, the FD struct's address went from 48-bit to + * 40-bit but rev1 chips will still interpret it as 48-bit, meaning we + * have to scrub the upper 8-bits, just in case the user left noise in + * there. Doing this selectively via a run-time check of the h/w + * revision (as we do for most errata, for example) is too slow in this + * critical path code. The most inexpensive way to handle this is just + * to reinterpret the FD as 4 32-bit words and to mask the first word + * appropriately, irrespecitive of the h/w revision. The struct fields + * corresponding to this word are; + * u8 dd:2; + * u8 liodn_offset:6; + * u8 bpid; + * u8 eliodn_offset:4; + * u8 __reserved:4; + * u8 addr_hi; + * So we mask this word with 0xc0ff00ff, which implicitly scrubs out + * liodn_offset, eliodn_offset, and __reserved - the latter two fields + * are interpreted as the 8 msbits of the 48-bit address in the case of + * rev1. + */ + { + const u32 *src = (const u32 *)fd; + u32 *dest = (u32 *)&eq->fd; + dest[0] = src[0] & 0xc0ff00ff; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = src[3]; + } + return eq; +} + +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static noinline struct qm_eqcr_entry *__wait_eq_start(struct qman_portal **p, + unsigned long *irqflags __maybe_unused, + struct qman_fq *fq, + const struct qm_fd *fd, + u32 flags) +{ + struct qm_eqcr_entry *eq = try_eq_start(p, irqflags, fq, fd, flags); + if (!eq) + qm_eqcr_set_ithresh(&(*p)->p, EQCR_ITHRESH); + return eq; +} +static noinline struct qm_eqcr_entry *wait_eq_start(struct qman_portal **p, + unsigned long *irqflags __maybe_unused, + struct qman_fq *fq, + const struct qm_fd *fd, + u32 flags) +{ + struct qm_eqcr_entry *eq; + if (flags & QMAN_ENQUEUE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (eq = __wait_eq_start(p, irqflags, fq, fd, flags))); + else + wait_event(affine_queue, + (eq = __wait_eq_start(p, irqflags, fq, fd, flags))); + return eq; +} +#endif + +int qman_enqueue(struct qman_fq *fq, const struct qm_fd *fd, u32 flags) +{ + struct qman_portal *p; + struct qm_eqcr_entry *eq; + unsigned long irqflags __maybe_unused; + +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_ENQUEUE_FLAG_WAIT) + eq = wait_eq_start(&p, &irqflags, fq, fd, flags); + else +#endif + eq = try_eq_start(&p, &irqflags, fq, fd, flags); + if (!eq) + return -EBUSY; + /* Note: QM_EQCR_VERB_INTERRUPT == QMAN_ENQUEUE_FLAG_WAIT_SYNC */ + qm_eqcr_pvb_commit(&p->p, QM_EQCR_VERB_CMD_ENQUEUE | + (flags & (QM_EQCR_VERB_COLOUR_MASK | QM_EQCR_VERB_INTERRUPT))); + /* Factor the below out, it's used from qman_enqueue_orp() too */ + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) { + if (flags & QMAN_ENQUEUE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (p->eqci_owned != fq)); + else + wait_event(affine_queue, (p->eqci_owned != fq)); + } +#endif + return 0; +} +EXPORT_SYMBOL(qman_enqueue); + +int qman_enqueue_orp(struct qman_fq *fq, const struct qm_fd *fd, u32 flags, + struct qman_fq *orp, u16 orp_seqnum) +{ + struct qman_portal *p; + struct qm_eqcr_entry *eq; + unsigned long irqflags __maybe_unused; + +#ifdef CONFIG_FSL_DPA_CAN_WAIT + if (flags & QMAN_ENQUEUE_FLAG_WAIT) + eq = wait_eq_start(&p, &irqflags, fq, fd, flags); + else +#endif + eq = try_eq_start(&p, &irqflags, fq, fd, flags); + if (!eq) + return -EBUSY; + /* Process ORP-specifics here */ + if (flags & QMAN_ENQUEUE_FLAG_NLIS) + orp_seqnum |= QM_EQCR_SEQNUM_NLIS; + else { + orp_seqnum &= ~QM_EQCR_SEQNUM_NLIS; + if (flags & QMAN_ENQUEUE_FLAG_NESN) + orp_seqnum |= QM_EQCR_SEQNUM_NESN; + else + /* No need to check 4 QMAN_ENQUEUE_FLAG_HOLE */ + orp_seqnum &= ~QM_EQCR_SEQNUM_NESN; + } + eq->seqnum = orp_seqnum; + eq->orp = orp->fqid; + /* Note: QM_EQCR_VERB_INTERRUPT == QMAN_ENQUEUE_FLAG_WAIT_SYNC */ + qm_eqcr_pvb_commit(&p->p, QM_EQCR_VERB_ORP | + ((flags & (QMAN_ENQUEUE_FLAG_HOLE | QMAN_ENQUEUE_FLAG_NESN)) ? + 0 : QM_EQCR_VERB_CMD_ENQUEUE) | + (flags & (QM_EQCR_VERB_COLOUR_MASK | QM_EQCR_VERB_INTERRUPT))); + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC + if (unlikely((flags & QMAN_ENQUEUE_FLAG_WAIT) && + (flags & QMAN_ENQUEUE_FLAG_WAIT_SYNC))) { + if (flags & QMAN_ENQUEUE_FLAG_WAIT_INT) + wait_event_interruptible(affine_queue, + (p->eqci_owned != fq)); + else + wait_event(affine_queue, (p->eqci_owned != fq)); + } +#endif + return 0; +} +EXPORT_SYMBOL(qman_enqueue_orp); + +int qman_modify_cgr(struct qman_cgr *cgr, u32 flags, + struct qm_mcc_initcgr *opts) +{ + struct qm_mc_command *mcc; + struct qm_mc_result *mcr; + struct qman_portal *p = get_affine_portal(); + unsigned long irqflags __maybe_unused; + u8 res; + u8 verb = QM_MCC_VERB_MODIFYCGR; + + /* frame mode not supported on rev1.0 */ + if (unlikely(qman_ip_rev == QMAN_REV10)) { + if (opts && (opts->we_mask & QM_CGR_WE_MODE) && + opts->cgr.mode == QMAN_CGR_MODE_FRAME) { + put_affine_portal(); + return -EIO; + } + } + PORTAL_IRQ_LOCK(p, irqflags); + mcc = qm_mc_start(&p->p); + if (opts) + mcc->initcgr = *opts; + mcc->initcgr.cgid = cgr->cgrid; + if (flags & QMAN_CGR_FLAG_USE_INIT) + verb = QM_MCC_VERB_INITCGR; + qm_mc_commit(&p->p, verb); + while (!(mcr = qm_mc_result(&p->p))) + cpu_relax(); + DPA_ASSERT((mcr->verb & QM_MCR_VERB_MASK) == verb); + res = mcr->result; + PORTAL_IRQ_UNLOCK(p, irqflags); + put_affine_portal(); + return (res == QM_MCR_RESULT_OK) ? 0 : -EIO; +} +EXPORT_SYMBOL(qman_modify_cgr); + +#define TARG_MASK(n) (0x80000000 >> (n->config->public_cfg.channel - \ + qm_channel_swportal0)) + +int qman_create_cgr(struct qman_cgr *cgr, u32 flags, + struct qm_mcc_initcgr *opts) +{ + unsigned long irqflags __maybe_unused; + struct qm_mcr_querycgr cgr_state; + struct qm_mcc_initcgr local_opts; + int ret; + struct qman_portal *p; + + /* We have to check that the provided CGRID is within the limits of the + * data-structures, for obvious reasons. However we'll let h/w take + * care of determining whether it's within the limits of what exists on + * the SoC. */ + if (cgr->cgrid >= __CGR_NUM) + return -EINVAL; + + p = get_affine_portal(); + + memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr)); + cgr->chan = p->config->public_cfg.channel; + spin_lock_irqsave(&p->cgr_lock, irqflags); + + /* if no opts specified and I'm not the first for this portal, just add + * to the list */ + if ((opts == NULL) && !list_empty(&p->cgr_cbs[cgr->cgrid])) + goto add_list; + + ret = qman_query_cgr(cgr, &cgr_state); + if (ret) + goto release_lock; + if (opts) + local_opts = *opts; + /* Overwrite TARG */ + local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ | TARG_MASK(p); + local_opts.we_mask |= QM_CGR_WE_CSCN_TARG; + + /* send init if flags indicate so */ + if (opts && (flags & QMAN_CGR_FLAG_USE_INIT)) + ret = qman_modify_cgr(cgr, QMAN_CGR_FLAG_USE_INIT, &local_opts); + else + ret = qman_modify_cgr(cgr, 0, &local_opts); + if (ret) + goto release_lock; +add_list: + list_add(&cgr->node, &p->cgr_cbs[cgr->cgrid]); + + /* Determine if newly added object requires its callback to be called */ + ret = qman_query_cgr(cgr, &cgr_state); + if (ret) { + /* we can't go back, so proceed and return success, but screen + * and wail to the log file */ + pr_crit("CGR HW state partially modified\n"); + ret = 0; + goto release_lock; + } + if (cgr->cb && cgr_state.cgr.cscn_en && qman_cgrs_get(&p->cgrs[1], + cgr->cgrid)) + cgr->cb(p, cgr, 1); +release_lock: + spin_unlock_irqrestore(&p->cgr_lock, irqflags); + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_create_cgr); + +int qman_delete_cgr(struct qman_cgr *cgr) +{ + unsigned long irqflags __maybe_unused; + struct qm_mcr_querycgr cgr_state; + struct qm_mcc_initcgr local_opts; + int ret = 0; + struct qman_portal *p = get_affine_portal(); + + if (cgr->chan != p->config->public_cfg.channel) { + pr_crit("Attempting to delete cgr from different portal " + "than it was create: create 0x%x, delete 0x%x\n", + cgr->chan, p->config->public_cfg.channel); + ret = -EINVAL; + goto put_portal; + } + memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr)); + spin_lock_irqsave(&p->cgr_lock, irqflags); + list_del(&cgr->node); + /* If last in list, CSCN_TARG must be set accordingly */ + if (!list_empty(&p->cgr_cbs[cgr->cgrid])) + goto release_lock; + ret = qman_query_cgr(cgr, &cgr_state); + if (ret) { + /* add back to the list */ + list_add(&cgr->node, &p->cgr_cbs[cgr->cgrid]); + goto release_lock; + } + /* Overwrite TARG */ + local_opts.we_mask = QM_CGR_WE_CSCN_TARG; + local_opts.cgr.cscn_targ = cgr_state.cgr.cscn_targ & ~(TARG_MASK(p)); + ret = qman_modify_cgr(cgr, 0, &local_opts); + if (ret) + /* add back to the list */ + list_add(&cgr->node, &p->cgr_cbs[cgr->cgrid]); +release_lock: + spin_unlock_irqrestore(&p->cgr_lock, irqflags); +put_portal: + put_affine_portal(); + return ret; +} +EXPORT_SYMBOL(qman_delete_cgr); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_test_errata.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_test_errata.c @@ -0,0 +1,248 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_test.h" + +/* Waiting on a model fix from virtutech */ +#if 0 +/*********************/ +/* generic utilities */ +/*********************/ + +static int do_enqueues(struct qman_fq *fq, const struct qm_fd *fds, int num) +{ + int ret = 0; + u32 flags = QMAN_ENQUEUE_FLAG_WAIT; + while (num-- && !ret) { + if (!num) + flags |= QMAN_ENQUEUE_FLAG_WAIT_SYNC; + pr_info("about to enqueue\n"); + ret = qman_enqueue(fq, fds++, flags); + } + return ret; +} + +/***************************/ +/* "tdthresh" test (QMAN6) */ +/***************************/ + +/* First thresh == 201 * (2^21) == 421527552 (0x19200000) */ +#define THRESH_MANT 201 +#define THRESH_EXP 21 + +/* first three equal thresh, fourth takes us over */ +static const struct qm_fd td_eq[] = { + QM_FD_FMT_20(0, 0x34, 0x87654321, QM_FD_SG, 0, 79321), + QM_FD_FMT_29(0, 0x34, 0x87654321, QM_FD_COMPOUND, 29923679), + QM_FD_FMT_29(0, 0x0d, 0xacadabba, QM_FD_CONTIG_BIG, 391524552), + QM_FD_FMT_20(0, 0x0b, 0x0fa10ada, QM_FD_CONTIG, 0, 1), + QM_FD_FMT_20(0, 0x0b, 0x0fa10ada, QM_FD_CONTIG, 0, 1), +}; + +struct tdthresh_fq { + struct qman_fq fq; + int got_ern; + int num_dqrr; +}; + +static enum qman_cb_dqrr_result cb_dqrr_tdthresh(struct qman_portal *p, + struct qman_fq *__fq, + const struct qm_dqrr_entry *dqrr) +{ + struct tdthresh_fq *t = (void *)__fq; + t->num_dqrr++; + return qman_cb_dqrr_consume; +} + +static void cb_ern_tdthresh(struct qman_portal *p, struct qman_fq *__fq, + const struct qm_mr_entry *mr) +{ + struct tdthresh_fq *t = (void *)__fq; + t->got_ern = 1; +} + +static void test_tdthresh(void) +{ + struct tdthresh_fq tdfq = { + .fq = { + .cb = { + .dqrr = cb_dqrr_tdthresh, + .ern = cb_ern_tdthresh + } + }, + .got_ern = 0, + .num_dqrr = 0 + }; + struct qman_fq *fq = &tdfq.fq; + struct qm_mcc_initfq opts = { + .we_mask = QM_INITFQ_WE_FQCTRL | QM_INITFQ_WE_TDTHRESH, + .fqd = { + .fq_ctrl = QM_FQCTRL_TDE, + .td = { + .exp = THRESH_EXP, + .mant = THRESH_MANT, + } + } + }; + struct qm_fqd fqd; + u32 flags; + int ret = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, fq); + BUG_ON(ret); + /* leave it parked, and set it for local dequeue (loopback) */ + ret = qman_init_fq(fq, QMAN_INITFQ_FLAG_LOCAL, &opts); + BUG_ON(ret); + /* query it back and confirm everything is ok */ + ret = qman_query_fq(fq, &fqd); + BUG_ON(ret); + if (fqd.fq_ctrl != opts.fqd.fq_ctrl) { + pr_err("queried fq_ctrl=%x, should be=%x\n", fqd.fq_ctrl, + opts.fqd.fq_ctrl); + panic("fail"); + } + if (memcmp(&fqd.td, &opts.fqd.td, sizeof(fqd.td))) { + pr_err("queried td_thresh=%x:%x, should be=%x:%x\n", + fqd.td.exp, fqd.td.mant, + opts.fqd.td.exp, opts.fqd.td.mant); + panic("fail"); + } + ret = do_enqueues(fq, td_eq, 3); + BUG_ON(ret); + pr_info(" tdthresh: eq[0..2] complete\n"); + /* enqueues are flushed, so if Qman is going to throw an ERN, the irq + * assertion will already be on its way. */ + msleep(500); + BUG_ON(tdfq.got_ern); + pr_info(" tdthresh: eq <= thresh OK\n"); + ret = do_enqueues(fq, td_eq + 3, 1); + BUG_ON(ret); + pr_info(" tdthresh: eq[3] complete\n"); + /* enqueues are flushed, so if Qman is going to throw an ERN, the irq + * assertion will already be on its way. */ + msleep(500); + BUG_ON(tdfq.got_ern); + pr_info(" tdthresh: eq <= thresh OK\n"); + ret = do_enqueues(fq, td_eq + 4, 1); + BUG_ON(ret); + pr_info(" tdthresh: eq[4] complete\n"); + /* enqueues are flushed, so if Qman is going to throw an ERN, the irq + * assertion will already be on its way. */ + msleep(500); + BUG_ON(!tdfq.got_ern); + pr_info(" tdthresh: eq > thresh OK\n"); + ret = qman_volatile_dequeue(fq, + QMAN_VOLATILE_FLAG_WAIT | QMAN_VOLATILE_FLAG_FINISH, + QM_VDQCR_NUMFRAMES_TILLEMPTY); + BUG_ON(ret); + BUG_ON(tdfq.num_dqrr != 4); + ret = qman_retire_fq(fq, &flags); + BUG_ON(ret); + BUG_ON(flags); + ret = qman_oos_fq(fq); + BUG_ON(ret); +} + +/****************************/ +/* "ern code6" test (QMAN9) */ +/****************************/ + +/* Dummy FD to enqueue out-of-sequence and generate an ERN */ +static const struct qm_fd c6_eq = + QM_FD_FMT_29(0, 0xba, 0xdeadbeef, QM_FD_CONTIG_BIG, 1234); + +struct code6_fq { + struct qman_fq fq; + struct qm_mr_entry mr; + struct completion got_ern; +}; + +static void cb_ern_code6(struct qman_portal *p, struct qman_fq *__fq, + const struct qm_mr_entry *mr) +{ + struct code6_fq *c = (void *)__fq; + memcpy(&c->mr, mr, sizeof(*mr)); + complete(&c->got_ern); +} + +static void test_ern_code6(void) +{ + struct code6_fq c6fq = { + .fq = { + .cb = { + .ern = cb_ern_code6 + } + }, + .got_ern = COMPLETION_INITIALIZER(c6fq.got_ern) + }; + struct qman_fq *fq = &c6fq.fq; + struct qm_mcc_initfq opts = { + .we_mask = QM_INITFQ_WE_FQCTRL, + .fqd = { + .fq_ctrl = QM_FQCTRL_ORP + } + }; + u32 flags; + int ret = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, fq); + BUG_ON(ret); + /* leave it parked, and set it for local dequeue (loopback) */ + ret = qman_init_fq(fq, QMAN_INITFQ_FLAG_LOCAL, &opts); + BUG_ON(ret); + /* enqueue with ORP using a "too early" sequence number */ + ret = qman_enqueue_orp(fq, &c6_eq, + QMAN_ENQUEUE_FLAG_WAIT | QMAN_ENQUEUE_FLAG_WAIT_SYNC, fq, 5); + BUG_ON(ret); + pr_info(" code6: eq complete\n"); + ret = qman_retire_fq(fq, &flags); + BUG_ON(ret); + pr_info(" code6: retire complete, flags=%08x\n", flags); + BUG_ON(flags != QMAN_FQ_STATE_ORL); + wait_for_completion(&c6fq.got_ern); + pr_info(" code6: ERN, VERB=0x%02x, RC==0x%02x\n", + c6fq.mr.verb, c6fq.mr.ern.rc); + BUG_ON(c6fq.mr.verb & 0x20); + BUG_ON((c6fq.mr.ern.rc & QM_MR_RC_MASK) != QM_MR_RC_ORPWINDOW_RETIRED); + ret = qman_oos_fq(fq); + BUG_ON(ret); +} + +void qman_test_errata(void) +{ + pr_info("Testing Qman errata handling ...\n"); + test_tdthresh(); + test_ern_code6(); + pr_info(" ... SUCCESS!\n"); +} +#else +void qman_test_errata(void) +{ + pr_info("Qman errata-handling test disabled, waiting on model fix\n"); +} +#endif + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_low.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_low.h @@ -0,0 +1,1186 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_private.h" + +/***************************/ +/* Portal register assists */ +/***************************/ + +/* Cache-inhibited register offsets */ +#define REG_EQCR_PI_CINH 0x0000 +#define REG_EQCR_CI_CINH 0x0004 +#define REG_EQCR_ITR 0x0008 +#define REG_DQRR_PI_CINH 0x0040 +#define REG_DQRR_CI_CINH 0x0044 +#define REG_DQRR_ITR 0x0048 +#define REG_DQRR_DCAP 0x0050 +#define REG_DQRR_SDQCR 0x0054 +#define REG_DQRR_VDQCR 0x0058 +#define REG_DQRR_PDQCR 0x005c +#define REG_MR_PI_CINH 0x0080 +#define REG_MR_CI_CINH 0x0084 +#define REG_MR_ITR 0x0088 +#define REG_CFG 0x0100 +#define REG_ISR 0x0e00 +#define REG_ITPR 0x0e14 + +/* Cache-enabled register offsets */ +#define CL_EQCR 0x0000 +#define CL_DQRR 0x1000 +#define CL_MR 0x2000 +#define CL_EQCR_PI_CENA 0x3000 +#define CL_EQCR_CI_CENA 0x3100 +#define CL_DQRR_PI_CENA 0x3200 +#define CL_DQRR_CI_CENA 0x3300 +#define CL_MR_PI_CENA 0x3400 +#define CL_MR_CI_CENA 0x3500 +#define CL_CR 0x3800 +#define CL_RR0 0x3900 +#define CL_RR1 0x3940 + +/* BTW, the drivers (and h/w programming model) already obtain the required + * synchronisation for portal accesses via lwsync(), hwsync(), and + * data-dependencies. Use of barrier()s or other order-preserving primitives + * simply degrade performance. Hence the use of the __raw_*() interfaces, which + * simply ensure that the compiler treats the portal registers as volatile (ie. + * non-coherent). */ + +/* Cache-inhibited register access. */ +#define __qm_in(qm, o) __raw_readl((qm)->addr_ci + (o)) +#define __qm_out(qm, o, val) __raw_writel((val), (qm)->addr_ci + (o)) +#define qm_in(reg) __qm_in(&portal->addr, REG_##reg) +#define qm_out(reg, val) __qm_out(&portal->addr, REG_##reg, val) + +/* Cache-enabled (index) register access */ +#define __qm_cl_touch_ro(qm, o) dcbt_ro((qm)->addr_ce + (o)) +#define __qm_cl_touch_rw(qm, o) dcbt_rw((qm)->addr_ce + (o)) +#define __qm_cl_in(qm, o) __raw_readl((qm)->addr_ce + (o)) +#define __qm_cl_out(qm, o, val) \ + do { \ + u32 *__tmpclout = (qm)->addr_ce + (o); \ + __raw_writel((val), __tmpclout); \ + dcbf(__tmpclout); \ + } while (0) +#define __qm_cl_invalidate(qm, o) dcbi((qm)->addr_ce + (o)) +#define qm_cl_touch_ro(reg) __qm_cl_touch_ro(&portal->addr, CL_##reg##_CENA) +#define qm_cl_touch_rw(reg) __qm_cl_touch_rw(&portal->addr, CL_##reg##_CENA) +#define qm_cl_in(reg) __qm_cl_in(&portal->addr, CL_##reg##_CENA) +#define qm_cl_out(reg, val) __qm_cl_out(&portal->addr, CL_##reg##_CENA, val) +#define qm_cl_invalidate(reg) __qm_cl_invalidate(&portal->addr, CL_##reg##_CENA) + +/* Cache-enabled ring access */ +#define qm_cl(base, idx) ((void *)base + ((idx) << 6)) + +/* Cyclic helper for rings. FIXME: once we are able to do fine-grain perf + * analysis, look at using the "extra" bit in the ring index registers to avoid + * cyclic issues. */ +static inline u8 cyc_diff(u8 ringsize, u8 first, u8 last) +{ + /* 'first' is included, 'last' is excluded */ + if (first <= last) + return last - first; + return ringsize + last - first; +} + +/* Portal modes. + * Enum types; + * pmode == production mode + * cmode == consumption mode, + * dmode == h/w dequeue mode. + * Enum values use 3 letter codes. First letter matches the portal mode, + * remaining two letters indicate; + * ci == cache-inhibited portal register + * ce == cache-enabled portal register + * vb == in-band valid-bit (cache-enabled) + * dc == DCA (Discrete Consumption Acknowledgement), DQRR-only + * As for "enum qm_dqrr_dmode", it should be self-explanatory. + */ +enum qm_eqcr_pmode { /* matches QCSP_CFG::EPM */ + qm_eqcr_pci = 0, /* PI index, cache-inhibited */ + qm_eqcr_pce = 1, /* PI index, cache-enabled */ + qm_eqcr_pvb = 2 /* valid-bit */ +}; +enum qm_eqcr_cmode { /* s/w-only */ + qm_eqcr_cci, /* CI index, cache-inhibited */ + qm_eqcr_cce /* CI index, cache-enabled */ +}; +enum qm_dqrr_dmode { /* matches QCSP_CFG::DP */ + qm_dqrr_dpush = 0, /* SDQCR + VDQCR */ + qm_dqrr_dpull = 1 /* PDQCR */ +}; +enum qm_dqrr_pmode { /* s/w-only */ + qm_dqrr_pci, /* reads DQRR_PI_CINH */ + qm_dqrr_pce, /* reads DQRR_PI_CENA */ + qm_dqrr_pvb /* reads valid-bit */ +}; +enum qm_dqrr_cmode { /* matches QCSP_CFG::DCM */ + qm_dqrr_cci = 0, /* CI index, cache-inhibited */ + qm_dqrr_cce = 1, /* CI index, cache-enabled */ + qm_dqrr_cdc = 2 /* Discrete Consumption Acknowledgement */ +}; +enum qm_mr_pmode { /* s/w-only */ + qm_mr_pci, /* reads MR_PI_CINH */ + qm_mr_pce, /* reads MR_PI_CENA */ + qm_mr_pvb /* reads valid-bit */ +}; +enum qm_mr_cmode { /* matches QCSP_CFG::MM */ + qm_mr_cci = 0, /* CI index, cache-inhibited */ + qm_mr_cce = 1 /* CI index, cache-enabled */ +}; + + +/* ------------------------- */ +/* --- Portal structures --- */ + +#define QM_EQCR_SIZE 8 +#define QM_DQRR_SIZE 16 +#define QM_MR_SIZE 8 + +struct qm_eqcr { + struct qm_eqcr_entry *ring, *cursor; + u8 ci, available, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + u32 busy; + enum qm_eqcr_pmode pmode; + enum qm_eqcr_cmode cmode; +#endif +}; + +struct qm_dqrr { + const struct qm_dqrr_entry *ring, *cursor; + u8 pi, ci, fill, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING +#define QM_DQRR_FLAG_RE 0x01 /* Stash ring entries */ +#define QM_DQRR_FLAG_SE 0x02 /* Stash data */ + u8 flags; + enum qm_dqrr_dmode dmode; + enum qm_dqrr_pmode pmode; + enum qm_dqrr_cmode cmode; +#endif +}; + +struct qm_mr { + const struct qm_mr_entry *ring, *cursor; + u8 pi, ci, fill, ithresh, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + enum qm_mr_pmode pmode; + enum qm_mr_cmode cmode; +#endif +}; + +struct qm_mc { + struct qm_mc_command *cr; + struct qm_mc_result *rr; + u8 rridx, vbit; +#ifdef CONFIG_FSL_DPA_CHECKING + enum { + /* Can be _mc_start()ed */ + mc_idle, + /* Can be _mc_commit()ed or _mc_abort()ed */ + mc_user, + /* Can only be _mc_retry()ed */ + mc_hw + } state; +#endif +}; + +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 +/* For workarounds that require storage. The struct alignment is required for + * cases where operations on "shadow" structs need the same alignment as is + * present on the corresponding h/w data structs (specifically, there is a + * zero-bit present above the range required to address the ring, so that + * iteration can be achieved by incrementing a ring pointer and clearing the + * carry-bit). The "portal" struct needs the same alignment because this type + * goes at its head, so it has a more radical alignment requirement if this + * structure is used. (NB: "64" instead of "L1_CACHE_BYTES", because this + * alignment relates to the h/w interface, not the CPU cache granularity!)*/ +#define QM_PORTAL_ALIGNMENT __attribute__((aligned(32 * 64))) +struct qm_portal_bugs { + /* shadow MR ring, for QMAN9 workaround, 8-CL-aligned */ + struct qm_mr_entry mr[QM_MR_SIZE]; + /* shadow MC result, for QMAN6 and QMAN7 workarounds, CL-aligned */ + struct qm_mc_result result; + /* boolean switch for QMAN7 workaround */ + int initfq_and_sched; +} QM_PORTAL_ALIGNMENT; +#else +#define QM_PORTAL_ALIGNMENT ____cacheline_aligned +#endif + +struct qm_addr { + void __iomem *addr_ce; /* cache-enabled */ + void __iomem *addr_ci; /* cache-inhibited */ +}; + +struct qm_portal { +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + struct qm_portal_bugs bugs; +#endif + /* In the non-CONFIG_FSL_DPA_CHECKING case, the following stuff up to + * and including 'mc' fits within a cacheline (yay!). The 'config' part + * is setup-only, so isn't a cause for a concern. In other words, don't + * rearrange this structure on a whim, there be dragons ... */ + struct qm_addr addr; + struct qm_eqcr eqcr; + struct qm_dqrr dqrr; + struct qm_mr mr; + struct qm_mc mc; +} QM_PORTAL_ALIGNMENT; + + +/* ---------------- */ +/* --- EQCR API --- */ + +/* Bit-wise logic to wrap a ring pointer by clearing the "carry bit" */ +#define EQCR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(QM_EQCR_SIZE << 6))) + +/* Bit-wise logic to convert a ring pointer to a ring index */ +static inline u8 EQCR_PTR2IDX(struct qm_eqcr_entry *e) +{ + return ((uintptr_t)e >> 6) & (QM_EQCR_SIZE - 1); +} + +/* Increment the 'cursor' ring pointer, taking 'vbit' into account */ +static inline void EQCR_INC(struct qm_eqcr *eqcr) +{ + /* NB: this is odd-looking, but experiments show that it generates fast + * code with essentially no branching overheads. We increment to the + * next EQCR pointer and handle overflow and 'vbit'. */ + struct qm_eqcr_entry *partial = eqcr->cursor + 1; + eqcr->cursor = EQCR_CARRYCLEAR(partial); + if (partial != eqcr->cursor) + eqcr->vbit ^= QM_EQCR_VERB_VBIT; +} + +static inline int qm_eqcr_init(struct qm_portal *portal, + enum qm_eqcr_pmode pmode, + __maybe_unused enum qm_eqcr_cmode cmode) +{ + /* This use of 'register', as well as all other occurances, is because + * it has been observed to generate much faster code with gcc than is + * otherwise the case. */ + register struct qm_eqcr *eqcr = &portal->eqcr; + u32 cfg; + u8 pi; + + eqcr->ring = portal->addr.addr_ce + CL_EQCR; + eqcr->ci = qm_in(EQCR_CI_CINH) & (QM_EQCR_SIZE - 1); + qm_cl_invalidate(EQCR_CI); + pi = qm_in(EQCR_PI_CINH) & (QM_EQCR_SIZE - 1); + eqcr->cursor = eqcr->ring + pi; + eqcr->vbit = (qm_in(EQCR_PI_CINH) & QM_EQCR_SIZE) ? + QM_EQCR_VERB_VBIT : 0; + eqcr->available = QM_EQCR_SIZE - 1 - + cyc_diff(QM_EQCR_SIZE, eqcr->ci, pi); + eqcr->ithresh = qm_in(EQCR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; + eqcr->pmode = pmode; + eqcr->cmode = cmode; +#endif + cfg = (qm_in(CFG) & 0x00ffffff) | + ((pmode & 0x3) << 24); /* QCSP_CFG::EPM */ + qm_out(CFG, cfg); + return 0; +} + +static inline void qm_eqcr_finish(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + u8 pi = qm_in(EQCR_PI_CINH) & (QM_EQCR_SIZE - 1); + u8 ci = qm_in(EQCR_CI_CINH) & (QM_EQCR_SIZE - 1); + + DPA_ASSERT(!eqcr->busy); + if (pi != EQCR_PTR2IDX(eqcr->cursor)) + pr_crit("losing uncommited EQCR entries\n"); + if (ci != eqcr->ci) + pr_crit("missing existing EQCR completions\n"); + if (eqcr->ci != EQCR_PTR2IDX(eqcr->cursor)) + pr_crit("EQCR destroyed unquiesced\n"); +} + +static inline struct qm_eqcr_entry *qm_eqcr_start(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(!eqcr->busy); + if (!eqcr->available) + return NULL; +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 1; +#endif + dcbz_64(eqcr->cursor); + return eqcr->cursor; +} + +static inline void qm_eqcr_abort(struct qm_portal *portal) +{ + __maybe_unused register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->busy); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline struct qm_eqcr_entry *qm_eqcr_pend_and_next( + struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->busy); + DPA_ASSERT(eqcr->pmode != qm_eqcr_pvb); + if (eqcr->available == 1) + return NULL; + eqcr->cursor->__dont_write_directly__verb = myverb | eqcr->vbit; + dcbf(eqcr->cursor); + EQCR_INC(eqcr); + eqcr->available--; + dcbz_64(eqcr->cursor); + return eqcr->cursor; +} + +#define EQCR_COMMIT_CHECKS(eqcr) \ +do { \ + DPA_ASSERT(eqcr->busy); \ + DPA_ASSERT(eqcr->cursor->orp == (eqcr->cursor->orp & 0x00ffffff)); \ + DPA_ASSERT(eqcr->cursor->fqid == (eqcr->cursor->fqid & 0x00ffffff)); \ +} while(0) + +static inline void qm_eqcr_pci_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + EQCR_COMMIT_CHECKS(eqcr); + DPA_ASSERT(eqcr->pmode == qm_eqcr_pci); + eqcr->cursor->__dont_write_directly__verb = myverb | eqcr->vbit; + EQCR_INC(eqcr); + eqcr->available--; + dcbf(eqcr->cursor); + hwsync(); + qm_out(EQCR_PI_CINH, EQCR_PTR2IDX(eqcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline void qm_eqcr_pce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->pmode == qm_eqcr_pce); + qm_cl_invalidate(EQCR_PI); + qm_cl_touch_rw(EQCR_PI); +} + +static inline void qm_eqcr_pce_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + EQCR_COMMIT_CHECKS(eqcr); + DPA_ASSERT(eqcr->pmode == qm_eqcr_pce); + eqcr->cursor->__dont_write_directly__verb = myverb | eqcr->vbit; + EQCR_INC(eqcr); + eqcr->available--; + dcbf(eqcr->cursor); + lwsync(); + qm_cl_out(EQCR_PI, EQCR_PTR2IDX(eqcr->cursor)); +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline void qm_eqcr_pvb_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + struct qm_eqcr_entry *eqcursor; + EQCR_COMMIT_CHECKS(eqcr); + DPA_ASSERT(eqcr->pmode == qm_eqcr_pvb); + lwsync(); + eqcursor = eqcr->cursor; + eqcursor->__dont_write_directly__verb = myverb | eqcr->vbit; + dcbf(eqcursor); + EQCR_INC(eqcr); + eqcr->available--; +#ifdef CONFIG_FSL_DPA_CHECKING + eqcr->busy = 0; +#endif +} + +static inline u8 qm_eqcr_cci_update(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + u8 diff, old_ci = eqcr->ci; + DPA_ASSERT(eqcr->cmode == qm_eqcr_cci); + eqcr->ci = qm_in(EQCR_CI_CINH) & (QM_EQCR_SIZE - 1); + diff = cyc_diff(QM_EQCR_SIZE, old_ci, eqcr->ci); + eqcr->available += diff; + return diff; +} + +static inline void qm_eqcr_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_eqcr *eqcr = &portal->eqcr; + DPA_ASSERT(eqcr->cmode == qm_eqcr_cce); + qm_cl_touch_ro(EQCR_CI); +} + +static inline u8 qm_eqcr_cce_update(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + u8 diff, old_ci = eqcr->ci; + DPA_ASSERT(eqcr->cmode == qm_eqcr_cce); + eqcr->ci = qm_cl_in(EQCR_CI) & (QM_EQCR_SIZE - 1); + qm_cl_invalidate(EQCR_CI); + diff = cyc_diff(QM_EQCR_SIZE, old_ci, eqcr->ci); + eqcr->available += diff; + return diff; +} + +static inline u8 qm_eqcr_get_ithresh(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + return eqcr->ithresh; +} + +static inline void qm_eqcr_set_ithresh(struct qm_portal *portal, u8 ithresh) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + eqcr->ithresh = ithresh; + qm_out(EQCR_ITR, ithresh); +} + +static inline u8 qm_eqcr_get_avail(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + return eqcr->available; +} + +static inline u8 qm_eqcr_get_fill(struct qm_portal *portal) +{ + register struct qm_eqcr *eqcr = &portal->eqcr; + return QM_EQCR_SIZE - 1 - eqcr->available; +} + + +/* ---------------- */ +/* --- DQRR API --- */ + +/* FIXME: many possible improvements; + * - look at changing the API to use pointer rather than index parameters now + * that 'cursor' is a pointer, + * - consider moving other parameters to pointer if it could help (ci) + */ + +#define DQRR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(QM_DQRR_SIZE << 6))) + +static inline u8 DQRR_PTR2IDX(const struct qm_dqrr_entry *e) +{ + return ((uintptr_t)e >> 6) & (QM_DQRR_SIZE - 1); +} + +static inline const struct qm_dqrr_entry *DQRR_INC( + const struct qm_dqrr_entry *e) +{ + return DQRR_CARRYCLEAR(e + 1); +} + +static inline void qm_dqrr_set_maxfill(struct qm_portal *portal, u8 mf) +{ + qm_out(CFG, (qm_in(CFG) & 0xff0fffff) | + ((mf & (QM_DQRR_SIZE - 1)) << 20)); +} + +static inline int qm_dqrr_init(struct qm_portal *portal, + const struct qm_portal_config *config, + enum qm_dqrr_dmode dmode, + __maybe_unused enum qm_dqrr_pmode pmode, + enum qm_dqrr_cmode cmode, u8 max_fill, + int disable_stash) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + u32 cfg; + + if ((config->public_cfg.has_stashing) && (config->public_cfg.cpu == -1)) + return -EINVAL; + /* Make sure the DQRR will be idle when we enable */ + qm_out(DQRR_SDQCR, 0); + qm_out(DQRR_VDQCR, 0); + qm_out(DQRR_PDQCR, 0); + dqrr->ring = portal->addr.addr_ce + CL_DQRR; + dqrr->pi = qm_in(DQRR_PI_CINH) & (QM_DQRR_SIZE - 1); + dqrr->ci = qm_in(DQRR_CI_CINH) & (QM_DQRR_SIZE - 1); + dqrr->cursor = dqrr->ring + dqrr->ci; + dqrr->fill = cyc_diff(QM_DQRR_SIZE, dqrr->ci, dqrr->pi); + dqrr->vbit = (qm_in(DQRR_PI_CINH) & QM_DQRR_SIZE) ? + QM_DQRR_VERB_VBIT : 0; + dqrr->ithresh = qm_in(DQRR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + dqrr->dmode = dmode; + dqrr->pmode = pmode; + dqrr->cmode = cmode; + dqrr->flags = 0; + if (!disable_stash) + dqrr->flags |= QM_DQRR_FLAG_RE | QM_DQRR_FLAG_SE; +#endif + cfg = (qm_in(CFG) & 0xff000f00) | + ((max_fill & (QM_DQRR_SIZE - 1)) << 20) | /* DQRR_MF */ + ((dmode & 1) << 18) | /* DP */ + ((cmode & 3) << 16) | /* DCM */ + (disable_stash ? 0 : /* RE+SE */ + config->public_cfg.has_stashing ? 0xa0 : 0) | + (0 ? 0x40 : 0) | /* Ignore RP */ + (0 ? 0x10 : 0); /* Ignore SP */ + qm_out(CFG, cfg); + qm_dqrr_set_maxfill(portal, max_fill); + return 0; +} + +static inline void qm_dqrr_finish(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; +#ifdef CONFIG_FSL_DPA_CHECKING + if ((dqrr->cmode != qm_dqrr_cdc) && + (dqrr->ci != DQRR_PTR2IDX(dqrr->cursor))) + pr_crit("Ignoring completed DQRR entries\n"); +#endif +} + +static inline const struct qm_dqrr_entry *qm_dqrr_current( + struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + if (!dqrr->fill) + return NULL; + return dqrr->cursor; +} + +static inline u8 qm_dqrr_cursor(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + return DQRR_PTR2IDX(dqrr->cursor); +} + +static inline u8 qm_dqrr_next(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->fill); + dqrr->cursor = DQRR_INC(dqrr->cursor); + return --dqrr->fill; +} + +static inline u8 qm_dqrr_pci_update(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + u8 diff, old_pi = dqrr->pi; + DPA_ASSERT(dqrr->pmode == qm_dqrr_pci); + dqrr->pi = qm_in(DQRR_PI_CINH) & (QM_DQRR_SIZE - 1); + diff = cyc_diff(QM_DQRR_SIZE, old_pi, dqrr->pi); + dqrr->fill += diff; + return diff; +} + +static inline void qm_dqrr_pce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->pmode == qm_dqrr_pce); + qm_cl_invalidate(DQRR_PI); + qm_cl_touch_ro(DQRR_PI); +} + +static inline u8 qm_dqrr_pce_update(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + u8 diff, old_pi = dqrr->pi; + DPA_ASSERT(dqrr->pmode == qm_dqrr_pce); + dqrr->pi = qm_cl_in(DQRR_PI) & (QM_DQRR_SIZE - 1); + diff = cyc_diff(QM_DQRR_SIZE, old_pi, dqrr->pi); + dqrr->fill += diff; + return diff; +} + +static inline void qm_dqrr_pvb_update(struct qm_portal *portal, int coherent) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + const struct qm_dqrr_entry *res = qm_cl(dqrr->ring, dqrr->pi); + DPA_ASSERT(dqrr->pmode == qm_dqrr_pvb); + /* when accessing 'verb', use __raw_readb() to ensure that compiler + * inlining doesn't try to optimise out "excess reads". */ + if ((__raw_readb(&res->verb) & QM_DQRR_VERB_VBIT) == dqrr->vbit) { + dqrr->pi = (dqrr->pi + 1) & (QM_DQRR_SIZE - 1); + if (!dqrr->pi) + dqrr->vbit ^= QM_DQRR_VERB_VBIT; + dqrr->fill++; + if (!coherent) { + DPA_ASSERT(!(dqrr->flags & QM_DQRR_FLAG_RE)); + dcbit_ro(DQRR_INC(res)); + } + } else if (!coherent) { + DPA_ASSERT(!(dqrr->flags & QM_DQRR_FLAG_RE)); + dcbit_ro(res); + } +} + +static inline void qm_dqrr_cci_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cci); + dqrr->ci = (dqrr->ci + num) & (QM_DQRR_SIZE - 1); + qm_out(DQRR_CI_CINH, dqrr->ci); +} + +static inline void qm_dqrr_cci_consume_to_current(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cci); + dqrr->ci = DQRR_PTR2IDX(dqrr->cursor); + qm_out(DQRR_CI_CINH, dqrr->ci); +} + +static inline void qm_dqrr_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cce); + qm_cl_invalidate(DQRR_CI); + qm_cl_touch_rw(DQRR_CI); +} + +static inline void qm_dqrr_cce_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cce); + dqrr->ci = (dqrr->ci + num) & (QM_DQRR_SIZE - 1); + qm_cl_out(DQRR_CI, dqrr->ci); +} + +static inline void qm_dqrr_cce_consume_to_current(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cce); + dqrr->ci = DQRR_PTR2IDX(dqrr->cursor); + qm_cl_out(DQRR_CI, dqrr->ci); +} + +static inline void qm_dqrr_cdc_consume_1(struct qm_portal *portal, u8 idx, + int park) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + DPA_ASSERT(idx < QM_DQRR_SIZE); + qm_out(DQRR_DCAP, (0 << 8) | /* S */ + ((park ? 1 : 0) << 6) | /* PK */ + idx); /* DCAP_CI */ +} + +static inline void qm_dqrr_cdc_consume_1ptr(struct qm_portal *portal, + const struct qm_dqrr_entry *dq, + int park) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + u8 idx = DQRR_PTR2IDX(dq); + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + DPA_ASSERT((dqrr->ring + idx) == dq); + DPA_ASSERT(idx < QM_DQRR_SIZE); + qm_out(DQRR_DCAP, (0 << 8) | /* DQRR_DCAP::S */ + ((park ? 1 : 0) << 6) | /* DQRR_DCAP::PK */ + idx); /* DQRR_DCAP::DCAP_CI */ +} + +static inline void qm_dqrr_cdc_consume_n(struct qm_portal *portal, u16 bitmask) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + qm_out(DQRR_DCAP, (1 << 8) | /* DQRR_DCAP::S */ + ((u32)bitmask << 16)); /* DQRR_DCAP::DCAP_CI */ +} + +static inline u8 qm_dqrr_cdc_cci(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + return qm_in(DQRR_CI_CINH) & (QM_DQRR_SIZE - 1); +} + +static inline void qm_dqrr_cdc_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + qm_cl_invalidate(DQRR_CI); + qm_cl_touch_ro(DQRR_CI); +} + +static inline u8 qm_dqrr_cdc_cce(struct qm_portal *portal) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode == qm_dqrr_cdc); + return qm_cl_in(DQRR_CI) & (QM_DQRR_SIZE - 1); +} + +static inline u8 qm_dqrr_get_ci(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode != qm_dqrr_cdc); + return dqrr->ci; +} + +static inline void qm_dqrr_park(struct qm_portal *portal, u8 idx) +{ + __maybe_unused register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode != qm_dqrr_cdc); + qm_out(DQRR_DCAP, (0 << 8) | /* S */ + (1 << 6) | /* PK */ + (idx & (QM_DQRR_SIZE - 1))); /* DCAP_CI */ +} + +static inline void qm_dqrr_park_current(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + DPA_ASSERT(dqrr->cmode != qm_dqrr_cdc); + qm_out(DQRR_DCAP, (0 << 8) | /* S */ + (1 << 6) | /* PK */ + DQRR_PTR2IDX(dqrr->cursor)); /* DCAP_CI */ +} + +static inline void qm_dqrr_sdqcr_set(struct qm_portal *portal, u32 sdqcr) +{ + qm_out(DQRR_SDQCR, sdqcr); +} + +static inline u32 qm_dqrr_sdqcr_get(struct qm_portal *portal) +{ + return qm_in(DQRR_SDQCR); +} + +static inline void qm_dqrr_vdqcr_set(struct qm_portal *portal, u32 vdqcr) +{ + qm_out(DQRR_VDQCR, vdqcr); +} + +static inline u32 qm_dqrr_vdqcr_get(struct qm_portal *portal) +{ + return qm_in(DQRR_VDQCR); +} + +static inline void qm_dqrr_pdqcr_set(struct qm_portal *portal, u32 pdqcr) +{ + qm_out(DQRR_PDQCR, pdqcr); +} + +static inline u32 qm_dqrr_pdqcr_get(struct qm_portal *portal) +{ + return qm_in(DQRR_PDQCR); +} + +static inline u8 qm_dqrr_get_ithresh(struct qm_portal *portal) +{ + register struct qm_dqrr *dqrr = &portal->dqrr; + return dqrr->ithresh; +} + +static inline void qm_dqrr_set_ithresh(struct qm_portal *portal, u8 ithresh) +{ + qm_out(DQRR_ITR, ithresh); +} + +static inline u8 qm_dqrr_get_maxfill(struct qm_portal *portal) +{ + return (qm_in(CFG) & 0x00f00000) >> 20; +} + + +/* -------------- */ +/* --- MR API --- */ + +#define MR_CARRYCLEAR(p) \ + (void *)((unsigned long)(p) & (~(unsigned long)(QM_MR_SIZE << 6))) + +static inline u8 MR_PTR2IDX(const struct qm_mr_entry *e) +{ + return ((uintptr_t)e >> 6) & (QM_MR_SIZE - 1); +} + +static inline const struct qm_mr_entry *MR_INC(const struct qm_mr_entry *e) +{ + return MR_CARRYCLEAR(e + 1); +} + +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 +static inline void __mr_copy_and_fixup(struct qm_portal *p, u8 idx) +{ + if (qman_ip_rev == QMAN_REV10) { + struct qm_mr_entry *shadow = qm_cl(p->bugs.mr, idx); + struct qm_mr_entry *res = qm_cl(p->mr.ring, idx); + copy_words(shadow, res, sizeof(*res)); + /* Bypass the QM_MR_RC_*** definitions, and check the byte value + * directly to handle the erratum. */ + if (shadow->ern.rc == 0x06) + shadow->ern.rc = 0x60; + } +} +#else +#define __mr_copy_and_fixup(p, idx) do { ; } while (0) +#endif + +static inline int qm_mr_init(struct qm_portal *portal, enum qm_mr_pmode pmode, + enum qm_mr_cmode cmode) +{ + register struct qm_mr *mr = &portal->mr; + u32 cfg; + int loop; + +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if ((qman_ip_rev == QMAN_REV10) && (pmode != qm_mr_pvb)) { + pr_err("Qman is rev1, so QMAN9 workaround requires 'pvb'\n"); + return -EINVAL; + } +#endif + mr->ring = portal->addr.addr_ce + CL_MR; + mr->pi = qm_in(MR_PI_CINH) & (QM_MR_SIZE - 1); + mr->ci = qm_in(MR_CI_CINH) & (QM_MR_SIZE - 1); +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if (qman_ip_rev == QMAN_REV10) + /* Situate the cursor in the shadow ring */ + mr->cursor = portal->bugs.mr + mr->ci; + else +#endif + mr->cursor = mr->ring + mr->ci; + mr->fill = cyc_diff(QM_MR_SIZE, mr->ci, mr->pi); + mr->vbit = (qm_in(MR_PI_CINH) & QM_MR_SIZE) ? QM_MR_VERB_VBIT : 0; + mr->ithresh = qm_in(MR_ITR); +#ifdef CONFIG_FSL_DPA_CHECKING + mr->pmode = pmode; + mr->cmode = cmode; +#endif + /* Only new entries get the copy-and-fixup treatment from + * qm_mr_pvb_update(), so perform it here for any stale entries. */ + for (loop = 0; loop < mr->fill; loop++) + __mr_copy_and_fixup(portal, (mr->ci + loop) & (QM_MR_SIZE - 1)); + cfg = (qm_in(CFG) & 0xfffff0ff) | + ((cmode & 1) << 8); /* QCSP_CFG:MM */ + qm_out(CFG, cfg); + return 0; +} + +static inline void qm_mr_finish(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + if (mr->ci != MR_PTR2IDX(mr->cursor)) + pr_crit("Ignoring completed MR entries\n"); +} + +static inline const struct qm_mr_entry *qm_mr_current(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + if (!mr->fill) + return NULL; + return mr->cursor; +} + +static inline u8 qm_mr_cursor(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + return MR_PTR2IDX(mr->cursor); +} + +static inline u8 qm_mr_next(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->fill); + mr->cursor = MR_INC(mr->cursor); + return --mr->fill; +} + +static inline u8 qm_mr_pci_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + u8 diff, old_pi = mr->pi; + DPA_ASSERT(mr->pmode == qm_mr_pci); + mr->pi = qm_in(MR_PI_CINH); + diff = cyc_diff(QM_MR_SIZE, old_pi, mr->pi); + mr->fill += diff; + return diff; +} + +static inline void qm_mr_pce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->pmode == qm_mr_pce); + qm_cl_invalidate(MR_PI); + qm_cl_touch_ro(MR_PI); +} + +static inline u8 qm_mr_pce_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + u8 diff, old_pi = mr->pi; + DPA_ASSERT(mr->pmode == qm_mr_pce); + mr->pi = qm_cl_in(MR_PI) & (QM_MR_SIZE - 1); + diff = cyc_diff(QM_MR_SIZE, old_pi, mr->pi); + mr->fill += diff; + return diff; +} + +static inline void qm_mr_pvb_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + const struct qm_mr_entry *res = qm_cl(mr->ring, mr->pi); + DPA_ASSERT(mr->pmode == qm_mr_pvb); + /* when accessing 'verb', use __raw_readb() to ensure that compiler + * inlining doesn't try to optimise out "excess reads". */ + if ((__raw_readb(&res->verb) & QM_MR_VERB_VBIT) == mr->vbit) { + __mr_copy_and_fixup(portal, mr->pi); + mr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1); + if (!mr->pi) + mr->vbit ^= QM_MR_VERB_VBIT; + mr->fill++; + res = MR_INC(res); + } + dcbit_ro(res); +} + +static inline void qm_mr_cci_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cci); + mr->ci = (mr->ci + num) & (QM_MR_SIZE - 1); + qm_out(MR_CI_CINH, mr->ci); +} + +static inline void qm_mr_cci_consume_to_current(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cci); + mr->ci = MR_PTR2IDX(mr->cursor); + qm_out(MR_CI_CINH, mr->ci); +} + +static inline void qm_mr_cce_prefetch(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cce); + qm_cl_invalidate(MR_CI); + qm_cl_touch_rw(MR_CI); +} + +static inline void qm_mr_cce_consume(struct qm_portal *portal, u8 num) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cce); + mr->ci = (mr->ci + num) & (QM_MR_SIZE - 1); + qm_cl_out(MR_CI, mr->ci); +} + +static inline void qm_mr_cce_consume_to_current(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + DPA_ASSERT(mr->cmode == qm_mr_cce); + mr->ci = MR_PTR2IDX(mr->cursor); + qm_cl_out(MR_CI, mr->ci); +} + +static inline u8 qm_mr_get_ci(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + return mr->ci; +} + +static inline u8 qm_mr_get_ithresh(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + return mr->ithresh; +} + +static inline void qm_mr_set_ithresh(struct qm_portal *portal, u8 ithresh) +{ + qm_out(MR_ITR, ithresh); +} + + +/* ------------------------------ */ +/* --- Management command API --- */ + +static inline int qm_mc_init(struct qm_portal *portal) +{ + register struct qm_mc *mc = &portal->mc; + mc->cr = portal->addr.addr_ce + CL_CR; + mc->rr = portal->addr.addr_ce + CL_RR0; + mc->rridx = (__raw_readb(&mc->cr->__dont_write_directly__verb) & + QM_MCC_VERB_VBIT) ? 0 : 1; + mc->vbit = mc->rridx ? QM_MCC_VERB_VBIT : 0; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return 0; +} + +static inline void qm_mc_finish(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + if (mc->state != mc_idle) + pr_crit("Losing incomplete MC command\n"); +#endif +} + +static inline struct qm_mc_command *qm_mc_start(struct qm_portal *portal) +{ + register struct qm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_idle); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_user; +#endif + dcbz_64(mc->cr); + return mc->cr; +} + +static inline void qm_mc_abort(struct qm_portal *portal) +{ + __maybe_unused register struct qm_mc *mc = &portal->mc; + DPA_ASSERT(mc->state == mc_user); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif +} + +static inline void qm_mc_commit(struct qm_portal *portal, u8 myverb) +{ + register struct qm_mc *mc = &portal->mc; + struct qm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_user); + lwsync(); +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if ((qman_ip_rev == QMAN_REV10) && ((myverb & QM_MCC_VERB_MASK) == + QM_MCC_VERB_INITFQ_SCHED)) { + u32 fqid = mc->cr->initfq.fqid; + /* Do two commands to avoid the hw bug. Note, we poll locally + * rather than using qm_mc_result() because from a DPA_CHECKING + * perspective, we don't want to appear to have "finished" until + * both commands are done. */ + mc->cr->__dont_write_directly__verb = mc->vbit | + QM_MCC_VERB_INITFQ_PARKED; + dcbf(mc->cr); + portal->bugs.initfq_and_sched = 1; + do { + dcbit_ro(rr); + } while (!__raw_readb(&rr->verb)); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + if (rr->result != QM_MCR_RESULT_OK) { +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_hw; +#endif + return; + } + mc->rridx ^= 1; + mc->vbit ^= QM_MCC_VERB_VBIT; + rr = mc->rr + mc->rridx; + dcbz_64(mc->cr); + mc->cr->alterfq.fqid = fqid; + lwsync(); + myverb = QM_MCC_VERB_ALTER_SCHED; + } else + portal->bugs.initfq_and_sched = 0; +#endif + mc->cr->__dont_write_directly__verb = myverb | mc->vbit; + dcbf(mc->cr); + dcbit_ro(rr); +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_hw; +#endif +} + +static inline struct qm_mc_result *qm_mc_result(struct qm_portal *portal) +{ + register struct qm_mc *mc = &portal->mc; + struct qm_mc_result *rr = mc->rr + mc->rridx; + DPA_ASSERT(mc->state == mc_hw); + /* The inactive response register's verb byte always returns zero until + * its command is submitted and completed. This includes the valid-bit, + * in case you were wondering... */ + if (!__raw_readb(&rr->verb)) { + dcbit_ro(rr); + return NULL; + } +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if (qman_ip_rev == QMAN_REV10) { + if ((__raw_readb(&rr->verb) & QM_MCR_VERB_MASK) == + QM_MCR_VERB_QUERYFQ) { + void *misplaced = (void *)rr + 50; + copy_words(&portal->bugs.result, rr, sizeof(*rr)); + rr = &portal->bugs.result; + copy_shorts(&rr->queryfq.fqd.td, misplaced, + sizeof(rr->queryfq.fqd.td)); + } else if (portal->bugs.initfq_and_sched) { + /* We split the user-requested command, make the final + * result match the requested type. */ + copy_words(&portal->bugs.result, rr, sizeof(*rr)); + rr = &portal->bugs.result; + rr->verb = (rr->verb & QM_MCR_VERB_RRID) | + QM_MCR_VERB_INITFQ_SCHED; + } + } +#endif + mc->rridx ^= 1; + mc->vbit ^= QM_MCC_VERB_VBIT; +#ifdef CONFIG_FSL_DPA_CHECKING + mc->state = mc_idle; +#endif + return rr; +} + + +/* ------------------------------------- */ +/* --- Portal interrupt register API --- */ + +static inline int qm_isr_init(__always_unused struct qm_portal *portal) +{ + return 0; +} + +static inline void qm_isr_finish(__always_unused struct qm_portal *portal) +{ +} + +static inline void qm_isr_set_iperiod(struct qm_portal *portal, u16 iperiod) +{ + qm_out(ITPR, iperiod); +} + +static inline u32 __qm_isr_read(struct qm_portal *portal, enum qm_isr_reg n) +{ + return __qm_in(&portal->addr, REG_ISR + (n << 2)); +} + +static inline void __qm_isr_write(struct qm_portal *portal, enum qm_isr_reg n, + u32 val) +{ + __qm_out(&portal->addr, REG_ISR + (n << 2), val); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_config.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_config.c @@ -0,0 +1,688 @@ +/* Copyright (c) 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef CONFIG_SMP +#include /* get_hard_smp_processor_id() */ +#endif + +#include "bman_private.h" + +/* Last updated for v00.79 of the BG */ + +struct bman; + +/* Register offsets */ +#define REG_POOL_SWDET(n) (0x0000 + ((n) * 0x04)) +#define REG_POOL_HWDET(n) (0x0100 + ((n) * 0x04)) +#define REG_POOL_SWDXT(n) (0x0200 + ((n) * 0x04)) +#define REG_POOL_HWDXT(n) (0x0300 + ((n) * 0x04)) +#define REG_POOL_CONTENT(n) (0x0600 + ((n) * 0x04)) +#define REG_FBPR_FPC 0x0800 +#define REG_ECSR 0x0a00 +#define REG_ECIR 0x0a04 +#define REG_EADR 0x0a08 +#define REG_EDATA(n) (0x0a10 + ((n) * 0x04)) +#define REG_SBEC(n) (0x0a80 + ((n) * 0x04)) +#define REG_IP_REV_1 0x0bf8 +#define REG_IP_REV_2 0x0bfc +#define REG_FBPR_BARE 0x0c00 +#define REG_FBPR_BAR 0x0c04 +#define REG_FBPR_AR 0x0c10 +#define REG_SRCIDR 0x0d04 +#define REG_LIODNR 0x0d08 +#define REG_ERR_ISR 0x0e00 /* + "enum bm_isr_reg" */ + +/* Used by all error interrupt registers except 'inhibit' */ +#define BM_EIRQ_IVCI 0x00000010 /* Invalid Command Verb */ +#define BM_EIRQ_FLWI 0x00000008 /* FBPR Low Watermark */ +#define BM_EIRQ_MBEI 0x00000004 /* Multi-bit ECC Error */ +#define BM_EIRQ_SBEI 0x00000002 /* Single-bit ECC Error */ +#define BM_EIRQ_BSCN 0x00000001 /* pool State Change Notification */ + +/* BMAN_ECIR valid error bit */ +#define PORTAL_ECSR_ERR (BM_EIRQ_IVCI) + +union bman_ecir { + u32 ecir_raw; + struct { + u32 __reserved1:4; + u32 portal_num:4; + u32 __reserved2:12; + u32 numb:4; + u32 __reserved3:2; + u32 pid:6; + } __packed info; +}; + +union bman_eadr { + u32 eadr_raw; + struct { + u32 __reserved1:5; + u32 memid:3; + u32 __reserved2:14; + u32 eadr:10; + } __packed info; +}; + +struct bman_hwerr_txt { + u32 mask; + const char *txt; +}; + +#define BMAN_HWE_TXT(a, b) { .mask = BM_EIRQ_##a, .txt = b } + +static const struct bman_hwerr_txt bman_hwerr_txts[] = { + BMAN_HWE_TXT(IVCI, "Invalid Command Verb"), + BMAN_HWE_TXT(FLWI, "FBPR Low Watermark"), + BMAN_HWE_TXT(MBEI, "Multi-bit ECC Error"), + BMAN_HWE_TXT(SBEI, "Single-bit ECC Error"), + BMAN_HWE_TXT(BSCN, "Pool State Change Notification"), +}; +#define BMAN_HWE_COUNT (sizeof(bman_hwerr_txts)/sizeof(struct bman_hwerr_txt)) + +struct bman_error_info_mdata { + u16 addr_mask; + u16 bits; + const char *txt; +}; + +#define BMAN_ERR_MDATA(a, b, c) { .addr_mask = a, .bits = b, .txt = c} +static const struct bman_error_info_mdata error_mdata[] = { + BMAN_ERR_MDATA(0x03FF, 192, "Stockpile memory"), + BMAN_ERR_MDATA(0x00FF, 256, "SW portal ring memory port 1"), + BMAN_ERR_MDATA(0x00FF, 256, "SW portal ring memory port 2"), +}; +#define BMAN_ERR_MDATA_COUNT \ + (sizeof(error_mdata)/sizeof(struct bman_error_info_mdata)) + +/* Add this in Kconfig */ +#define BMAN_ERRS_TO_UNENABLE (BM_EIRQ_FLWI) + +/** + * bm_err_isr__ - Manipulate global interrupt registers + * @v: for accessors that write values, this is the 32-bit value + * + * Manipulates BMAN_ERR_ISR, BMAN_ERR_IER, BMAN_ERR_ISDR, BMAN_ERR_IIR. All + * manipulations except bm_err_isr_[un]inhibit() use 32-bit masks composed of + * the BM_EIRQ_*** definitions. Note that "bm_err_isr_enable_write" means + * "write the enable register" rather than "enable the write register"! + */ +#define bm_err_isr_status_read(bm) __bm_err_isr_read(bm, bm_isr_status) +#define bm_err_isr_status_clear(bm, m) __bm_err_isr_write(bm, bm_isr_status,m) +#define bm_err_isr_enable_read(bm) __bm_err_isr_read(bm, bm_isr_enable) +#define bm_err_isr_enable_write(bm, v) __bm_err_isr_write(bm, bm_isr_enable,v) +#define bm_err_isr_disable_read(bm) __bm_err_isr_read(bm, bm_isr_disable) +#define bm_err_isr_disable_write(bm, v) __bm_err_isr_write(bm, bm_isr_disable,v) +#define bm_err_isr_inhibit(bm) __bm_err_isr_write(bm, bm_isr_inhibit,1) +#define bm_err_isr_uninhibit(bm) __bm_err_isr_write(bm, bm_isr_inhibit,0) + +/* + * TODO: unimplemented registers + * + * BMAN_POOLk_SDCNT, BMAN_POOLk_HDCNT, BMAN_FULT, + * BMAN_VLDPL, BMAN_EECC, BMAN_SBET, BMAN_EINJ + */ + +/* Encapsulate "struct bman *" as a cast of the register space address. */ + +static struct bman *bm_create(void *regs) +{ + return (struct bman *)regs; +} + +static inline u32 __bm_in(struct bman *bm, u32 offset) +{ + return in_be32((void *)bm + offset); +} +static inline void __bm_out(struct bman *bm, u32 offset, u32 val) +{ + out_be32((void *)bm + offset, val); +} +#define bm_in(reg) __bm_in(bm, REG_##reg) +#define bm_out(reg, val) __bm_out(bm, REG_##reg, val) + +static u32 __bm_err_isr_read(struct bman *bm, enum bm_isr_reg n) +{ + return __bm_in(bm, REG_ERR_ISR + (n << 2)); +} + +static void __bm_err_isr_write(struct bman *bm, enum bm_isr_reg n, u32 val) +{ + __bm_out(bm, REG_ERR_ISR + (n << 2), val); +} + +#if 0 +static void bm_get_details(struct bman *bm, u8 *int_options, u8 *errata, + u8 *conf_options) +{ + u32 v = bm_in(IP_REV_1); + *int_options = (v >> 16) & 0xff; + *errata = (v >> 8) & 0xff; + *conf_options = v & 0xff; +} + +static u8 bm_get_corenet_sourceid(struct bman *bm) +{ + return bm_in(SRCIDR); +} + +static void bm_set_liodn(struct bman *bm, u16 liodn) +{ + bm_out(LIODNR, liodn & 0xfff); +} + +#endif + +static void bm_get_version(struct bman *bm, u16 *id, u8 *major, u8 *minor) +{ + u32 v = bm_in(IP_REV_1); + *id = (v >> 16); + *major = (v >> 8) & 0xff; + *minor = v & 0xff; +} + +static u32 __generate_thresh(u32 val, int roundup) +{ + u32 e = 0; /* co-efficient, exponent */ + int oddbit = 0; + while(val > 0xff) { + oddbit = val & 1; + val >>= 1; + e++; + if(roundup && oddbit) + val++; + } + DPA_ASSERT(e < 0x10); + return (val | (e << 8)); +} + +static void bm_set_pool(struct bman *bm, u8 pool, u32 swdet, u32 swdxt, + u32 hwdet, u32 hwdxt) +{ + DPA_ASSERT(pool < bman_pool_max); + bm_out(POOL_SWDET(pool), __generate_thresh(swdet, 0)); + bm_out(POOL_SWDXT(pool), __generate_thresh(swdxt, 1)); + bm_out(POOL_HWDET(pool), __generate_thresh(hwdet, 0)); + bm_out(POOL_HWDXT(pool), __generate_thresh(hwdxt, 1)); +} + +static void bm_set_memory(struct bman *bm, u64 ba, int prio, u32 size) +{ + u32 exp = ilog2(size); + /* choke if size isn't within range */ + DPA_ASSERT((size >= 4096) && (size <= 1073741824) && + is_power_of_2(size)); + /* choke if '[e]ba' has lower-alignment than 'size' */ + DPA_ASSERT(!(ba & (size - 1))); + bm_out(FBPR_BARE, upper_32_bits(ba)); + bm_out(FBPR_BAR, lower_32_bits(ba)); + bm_out(FBPR_AR, (prio ? 0x40000000 : 0) | (exp - 1)); +} + +/*****************/ +/* Config driver */ +/*****************/ + +/* We support only one of these. */ +static struct bman *bm; +static struct device_node *bm_node; + +/* TODO: Kconfig these? */ +#define DEFAULT_FBPR_SZ (PAGE_SIZE << 12) + +/* Parse the property to extract the memory location and size and + * memblock_reserve() it. If it isn't supplied, memblock_alloc() the default size. */ +static __init int parse_mem_property(struct device_node *node, const char *name, + dma_addr_t *addr, size_t *sz, int zero) +{ + const u32 *pint; + int ret; + + pint = of_get_property(node, name, &ret); + if (!pint || (ret != 16)) { + pr_info("No %s property '%s', using memblock_alloc(%016zx)\n", + node->full_name, name, *sz); + *addr = memblock_alloc(*sz, *sz); + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + return 0; + } + pr_info("Using %s property '%s'\n", node->full_name, name); + /* If using a "zero-pma", don't try to zero it, even if you asked */ + if (zero && of_find_property(node, "zero-pma", &ret)) { + pr_info(" it's a 'zero-pma', not zeroing from s/w\n"); + zero = 0; + } + *addr = ((u64)pint[0] << 32) | (u64)pint[1]; + *sz = ((u64)pint[2] << 32) | (u64)pint[3]; + /* Keep things simple, it's either all in the DRAM range or it's all + * outside. */ + if (*addr < memblock_end_of_DRAM()) { + BUG_ON((u64)*addr + (u64)*sz > memblock_end_of_DRAM()); + if (memblock_reserve(*addr, *sz) < 0) { + pr_err("Failed to reserve %s\n", name); + return -ENOMEM; + } + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + } else if (zero) { + /* map as cacheable, non-guarded */ + void *tmpp = ioremap_prot(*addr, *sz, 0); + memset(tmpp, 0, *sz); + iounmap(tmpp); + } + return 0; +} + +static int __init fsl_bman_init(struct device_node *node) +{ + struct resource res; + u32 __iomem *regs; + const char *s; + dma_addr_t fbpr_a = 0; /* gcc doesn't know this is unnecessary */ + size_t fbpr_sz = DEFAULT_FBPR_SZ; + int ret, standby = 0; + u16 id; + u8 major, minor; + + ret = of_address_to_resource(node, 0, &res); + if (ret) { + pr_err("Can't get %s property 'reg'\n", + node->full_name); + return ret; + } + s = of_get_property(node, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) + standby = 1; + if (!standby) { + ret = parse_mem_property(node, "fsl,bman-fbpr", + &fbpr_a, &fbpr_sz, 0); + BUG_ON(ret); + } + /* Global configuration */ + regs = ioremap(res.start, res.end - res.start + 1); + bm = bm_create(regs); + BUG_ON(!bm); + bm_node = node; + bm_get_version(bm, &id, &major, &minor); + pr_info("Bman ver:%04x,%02x,%02x\n", id, major, minor); + if ((major == 1) && (minor == 0)) { + bman_ip_rev = BMAN_REV10; + bman_pool_max = 64; + } else if ((major == 2) && (minor == 0)) { + bman_ip_rev = BMAN_REV20; + bman_pool_max = 8; + } else { + pr_warning("unknown Bman version, default to rev1.0\n"); + } + + if (standby) { + pr_info(" -> in standby mode\n"); + return 0; + } + /* FBPR memory */ + bm_set_memory(bm, fbpr_a, 0, fbpr_sz); + return 0; +} + +int bman_have_ccsr(void) +{ + return (bm ? 1 : 0); +} + +int bm_pool_set(u32 bpid, const u32 *thresholds) +{ + if (!bm) + return -ENODEV; + bm_set_pool(bm, bpid, thresholds[0], thresholds[1], + thresholds[2], thresholds[3]); + return 0; +} +EXPORT_SYMBOL(bm_pool_set); + +__init void bman_init_early(void) +{ + struct device_node *dn; + for_each_compatible_node(dn, NULL, "fsl,bman") { + if (bm) + pr_err("%s: only one 'fsl,bman' allowed\n", + dn->full_name); + else { + int ret = fsl_bman_init(dn); + BUG_ON(ret); + } + } +} + +static void log_edata_bits(u32 bit_count) +{ + u32 i, j, mask = 0xffffffff; + + pr_warning("Bman ErrInt, EDATA:\n"); + i = bit_count/32; + if (bit_count%32) { + i++; + mask = ~(mask << bit_count%32); + } + j = 16-i; + pr_warning(" 0x%08x\n", bm_in(EDATA(j)) & mask); + j++; + for (; j < 16; j++) + pr_warning(" 0x%08x\n", bm_in(EDATA(j))); +} + +static void log_additional_error_info(u32 isr_val, u32 ecsr_val) +{ + union bman_ecir ecir_val; + union bman_eadr eadr_val; + + ecir_val.ecir_raw = bm_in(ECIR); + /* Is portal info valid */ + if (ecsr_val & PORTAL_ECSR_ERR) { + pr_warning("Bman ErrInt: SWP id %d, numb %d, pid %d\n", + ecir_val.info.portal_num, ecir_val.info.numb, + ecir_val.info.pid); + } + if (ecsr_val & (BM_EIRQ_SBEI|BM_EIRQ_MBEI)) { + eadr_val.eadr_raw = bm_in(EADR); + pr_warning("Bman ErrInt: EADR Memory: %s, 0x%x\n", + error_mdata[eadr_val.info.memid].txt, + error_mdata[eadr_val.info.memid].addr_mask + & eadr_val.info.eadr); + log_edata_bits(error_mdata[eadr_val.info.memid].bits); + } +} + +/* Bman interrupt handler */ +static irqreturn_t bman_isr(int irq, void *ptr) +{ + u32 isr_val, ier_val, ecsr_val, isr_mask, i; + + ier_val = bm_err_isr_enable_read(bm); + isr_val = bm_err_isr_status_read(bm); + ecsr_val = bm_in(ECSR); + isr_mask = isr_val & ier_val; + + if (!isr_mask) + return IRQ_NONE; + for (i = 0; i < BMAN_HWE_COUNT; i++) { + if (bman_hwerr_txts[i].mask & isr_mask) { + pr_warning("Bman ErrInt: %s\n", bman_hwerr_txts[i].txt); + if (bman_hwerr_txts[i].mask & ecsr_val) { + log_additional_error_info(isr_mask, ecsr_val); + /* Re-arm error capture registers */ + bm_out(ECSR, ecsr_val); + } + if (bman_hwerr_txts[i].mask & BMAN_ERRS_TO_UNENABLE) { + pr_devel("Bman un-enabling error 0x%x\n", + bman_hwerr_txts[i].mask); + ier_val &= ~bman_hwerr_txts[i].mask; + bm_err_isr_enable_write(bm, ier_val); + } + } + } + bm_err_isr_status_clear(bm, isr_val); + return IRQ_HANDLED; +} + +static int __bind_irq(void) +{ + int ret, err_irq; + + err_irq = of_irq_to_resource(bm_node, 0, NULL); + if (err_irq == NO_IRQ) { + pr_info("Can't get %s property '%s'\n", bm_node->full_name, + "interrupts"); + return -ENODEV; + } + ret = request_irq(err_irq, bman_isr, IRQF_SHARED, "bman-err", bm_node); + if (ret) { + pr_err("request_irq() failed %d for '%s'\n", ret, + bm_node->full_name); + return -ENODEV; + } + /* Disable Buffer Pool State Change */ + bm_err_isr_disable_write(bm, BM_EIRQ_BSCN); + /* Write-to-clear any stale bits, (eg. starvation being asserted prior + * to resource allocation during driver init). */ + bm_err_isr_status_clear(bm, 0xffffffff); + /* Enable Error Interrupts */ + bm_err_isr_enable_write(bm, 0xffffffff); + return 0; +} + +/* Initialise Error Interrupt Handler */ +int bman_init_error_int(struct device_node *node) +{ + if (!bman_have_ccsr()) + return 0; + if (node != bm_node) + return -EINVAL; + return __bind_irq(); +} + +#ifdef CONFIG_SYSFS + +#define DRV_NAME "fsl-bman" + +static ssize_t show_fbpr_fpc(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", bm_in(FBPR_FPC)); +}; + +static ssize_t show_pool_count(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + u32 data; + int i; + + if (!sscanf(dev_attr->attr.name, "%d", &i)) + return -EINVAL; + data = bm_in(POOL_CONTENT(i)); + return snprintf(buf, PAGE_SIZE, "%d\n", data); +}; + +static ssize_t show_err_isr(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "0x%08x\n", bm_in(ERR_ISR)); +}; + +static ssize_t show_sbec(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + int i; + + if (!sscanf(dev_attr->attr.name, "sbec_%d", &i)) + return -EINVAL; + return snprintf(buf, PAGE_SIZE, "%u\n", bm_in(SBEC(i))); +}; + +static DEVICE_ATTR(err_isr, S_IRUSR, show_err_isr, NULL); +static DEVICE_ATTR(fbpr_fpc, S_IRUSR, show_fbpr_fpc, NULL); + +/* Didn't use DEVICE_ATTR as 64 of this would be required. + * Initialize them when needed. */ +static char *name_attrs_pool_count; /* "xx" + null-terminator */ +static struct device_attribute *dev_attr_buffer_pool_count; + +static DEVICE_ATTR(sbec_0, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_1, S_IRUSR, show_sbec, NULL); + +static struct attribute *bman_dev_attributes[] = { + &dev_attr_fbpr_fpc.attr, + &dev_attr_err_isr.attr, + NULL +}; + +static struct attribute *bman_dev_ecr_attributes[] = { + &dev_attr_sbec_0.attr, + &dev_attr_sbec_1.attr, + NULL +}; + +static struct attribute **bman_dev_pool_count_attributes; + + +/* root level */ +static const struct attribute_group bman_dev_attr_grp = { + .name = NULL, + .attrs = bman_dev_attributes +}; +static const struct attribute_group bman_dev_ecr_grp = { + .name = "error_capture", + .attrs = bman_dev_ecr_attributes +}; +static struct attribute_group bman_dev_pool_countent_grp = { + .name = "pool_count", +}; + +static int of_fsl_bman_remove(struct platform_device *ofdev) +{ + sysfs_remove_group(&ofdev->dev.kobj, &bman_dev_attr_grp); + return 0; +}; + +static int of_fsl_bman_probe(struct platform_device *ofdev) +{ + int ret, i; + + ret = sysfs_create_group(&ofdev->dev.kobj, &bman_dev_attr_grp); + if (ret) + goto done; + ret = sysfs_create_group(&ofdev->dev.kobj, &bman_dev_ecr_grp); + if (ret) + goto del_group_0; + + name_attrs_pool_count = kmalloc(sizeof(char) * bman_pool_max * 3, + GFP_KERNEL); + if (!name_attrs_pool_count) { + pr_err("Can't alloc name_attrs_pool_count\n"); + goto del_group_1; + } + + dev_attr_buffer_pool_count = kmalloc(sizeof(struct device_attribute) * + bman_pool_max, GFP_KERNEL); + if (!dev_attr_buffer_pool_count) { + pr_err("Can't alloc dev_attr-buffer_pool_count\n"); + goto del_group_2; + } + + bman_dev_pool_count_attributes = kmalloc(sizeof(struct attribute *) * + (bman_pool_max + 1), GFP_KERNEL); + if (!bman_dev_pool_count_attributes) { + pr_err("can't alloc bman_dev_pool_count_attributes\n"); + goto del_group_3; + } + + for (i = 0; i < (bman_pool_max + 1); i++) { + bman_dev_pool_count_attributes[i] = + kmalloc(sizeof(struct attribute), GFP_KERNEL); + if (!bman_dev_pool_count_attributes[i]) { + pr_err("cannot alloc for each" + " bman_dev_pool_count_attributes\n"); + goto del_group_3; + } + } + + for (i = 0; i < bman_pool_max; i++) { + ret = scnprintf((name_attrs_pool_count + i * 3), 3, "%d", i); + if (!ret) + goto del_group_4; + dev_attr_buffer_pool_count[i].attr.name = + (name_attrs_pool_count + i * 3); + dev_attr_buffer_pool_count[i].attr.mode = S_IRUSR; + dev_attr_buffer_pool_count[i].show = show_pool_count; + bman_dev_pool_count_attributes[i] = + &dev_attr_buffer_pool_count[i].attr; + } + bman_dev_pool_count_attributes[bman_pool_max] = NULL; + + bman_dev_pool_countent_grp.attrs = bman_dev_pool_count_attributes; + + ret = sysfs_create_group(&ofdev->dev.kobj, &bman_dev_pool_countent_grp); + if (ret) + goto del_group_4; + + goto done; + +del_group_4: + for (i = 0; i < (bman_pool_max + 1); i++) + kfree(bman_dev_pool_count_attributes[i]); + kfree(bman_dev_pool_count_attributes); +del_group_3: + kfree(dev_attr_buffer_pool_count); +del_group_2: + kfree(name_attrs_pool_count); +del_group_1: + sysfs_remove_group(&ofdev->dev.kobj, &bman_dev_ecr_grp); +del_group_0: + sysfs_remove_group(&ofdev->dev.kobj, &bman_dev_attr_grp); +done: + if (ret) + dev_err(&ofdev->dev, + "Cannot create dev attributes ret=%d\n", ret); + return ret; +}; + +static struct of_device_id of_fsl_bman_ids[] = { + { + .compatible = "fsl,bman", + }, + {} +}; +MODULE_DEVICE_TABLE(of, of_fsl_bman_ids); + +static struct platform_driver of_fsl_bman_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME, + .of_match_table = of_fsl_bman_ids, + }, + .probe = of_fsl_bman_probe, + .remove = of_fsl_bman_remove, +}; + +static int bman_ctrl_init(void) +{ + return platform_driver_register(&of_fsl_bman_driver); +} + +static void bman_ctrl_exit(void) +{ + platform_driver_unregister(&of_fsl_bman_driver); +} + +module_init(bman_ctrl_init); +module_exit(bman_ctrl_exit); + +#endif /* CONFIG_SYSFS */ --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_test.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_test.h @@ -0,0 +1,85 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +void qman_test_hotpotato(void); +void qman_test_high(void); +void qman_test_errata(void); +void qman_test_fqrange(void); + +static inline void __hexdump(unsigned long start, unsigned long end, + unsigned long p, size_t sz, const unsigned char *c) +{ + while (start < end) { + unsigned int pos = 0; + char buf[64]; + int nl = 0; + pos += sprintf(buf + pos, "%08lx: ", start); + do { + if ((start < p) || (start >= (p + sz))) + pos += sprintf(buf + pos, ".."); + else + pos += sprintf(buf + pos, "%02x", *(c++)); + if (!(++start & 15)) { + buf[pos++] = '\n'; + nl = 1; + } else { + nl = 0; + if(!(start & 1)) + buf[pos++] = ' '; + if(!(start & 3)) + buf[pos++] = ' '; + } + } while (start & 15); + if (!nl) + buf[pos++] = '\n'; + buf[pos] = '\0'; + pr_info("%s", buf); + } +} +static inline void hexdump(const void *ptr, size_t sz) +{ + unsigned long p = (unsigned long)ptr; + unsigned long start = p & ~(unsigned long)15; + unsigned long end = (p + sz + 15) & ~(unsigned long)15; + const unsigned char *c = ptr; + __hexdump(start, end, p, sz, c); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_utility.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_utility.c @@ -0,0 +1,131 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_private.h" + +/* ----------------- */ +/* --- FQID Pool --- */ + +struct qman_fqid_pool { + /* Base and size of the FQID range */ + u32 fqid_base; + u32 total; + /* Number of FQIDs currently "allocated" */ + u32 used; + /* Allocation optimisation. When 'usedfqid_base = fqid_start; + pool->total = num; + pool->used = 0; + pool->next = 0; + pool->bits = kmalloc(QNUM_BYTES(num), GFP_KERNEL); + if (!pool->bits) { + kfree(pool); + return NULL; + } + memset(pool->bits, 0, QNUM_BYTES(num)); + /* If num is not an even multiple of QLONG_BITS (or even 8, for + * byte-oriented searching) then we fill the trailing bits with 1, to + * make them look allocated (permanently). */ + for (i = num + 1; i < QNUM_BITS(num); i++) + set_bit(i, pool->bits); + return pool; +} +EXPORT_SYMBOL(qman_fqid_pool_create); + +int qman_fqid_pool_destroy(struct qman_fqid_pool *pool) +{ + int ret = pool->used; + kfree(pool->bits); + kfree(pool); + return ret; +} +EXPORT_SYMBOL(qman_fqid_pool_destroy); + +int qman_fqid_pool_alloc(struct qman_fqid_pool *pool, u32 *fqid) +{ + int ret; + if (pool->used == pool->total) + return -ENOMEM; + *fqid = pool->fqid_base + pool->next; + ret = test_and_set_bit(pool->next, pool->bits); + BUG_ON(ret); + if (++pool->used == pool->total) + return 0; + pool->next = find_next_zero_bit(pool->bits, pool->total, pool->next); + if (pool->next >= pool->total) + pool->next = find_first_zero_bit(pool->bits, pool->total); + BUG_ON(pool->next >= pool->total); + return 0; +} +EXPORT_SYMBOL(qman_fqid_pool_alloc); + +void qman_fqid_pool_free(struct qman_fqid_pool *pool, u32 fqid) +{ + int ret; + + fqid -= pool->fqid_base; + ret = test_and_clear_bit(fqid, pool->bits); + BUG_ON(!ret); + if (pool->used-- == pool->total) + pool->next = fqid; +} +EXPORT_SYMBOL(qman_fqid_pool_free); + +u32 qman_fqid_pool_used(struct qman_fqid_pool *pool) +{ + return pool->used; +} +EXPORT_SYMBOL(qman_fqid_pool_used); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_debugfs.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_debugfs.c @@ -0,0 +1,121 @@ +/* Copyright 2010-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include +#include + +static struct dentry *dfs_root; /* debugfs root directory */ + +/******************************************************************************* + * Query Buffer Pool State + ******************************************************************************/ +static int query_bp_state_show(struct seq_file *file, void *offset) +{ + int ret; + struct bm_pool_state state; + int i, j; + u32 mask; + + memset(&state, 0, sizeof(struct bm_pool_state)); + ret = bman_query_pools(&state); + if (ret) { + seq_printf(file, "Error %d\n", ret); + return 0; + } + seq_printf(file, "bp_id free_buffers_avail bp_depleted\n"); + for (i = 0; i < 2; i++) { + mask = 0x80000000; + for (j = 0; j < 32; j++) { + seq_printf(file, + " %-2u %-3s %-3s\n", + (i*32)+j, + (state.as.state.__state[i] & mask) ? "no" : "yes", + (state.ds.state.__state[i] & mask) ? "yes" : "no"); + mask >>= 1; + } + } + return 0; +} + +static int query_bp_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, query_bp_state_show, NULL); +} + +static const struct file_operations query_bp_state_fops = { + .owner = THIS_MODULE, + .open = query_bp_state_open, + .read = seq_read, + .release = single_release, +}; + +static int __init bman_debugfs_module_init(void) +{ + int ret = 0; + struct dentry *d; + + dfs_root = debugfs_create_dir("bman", NULL); + + if (dfs_root == NULL) { + ret = -ENOMEM; + pr_err("Cannot create bman debugfs dir\n"); + goto _return; + } + d = debugfs_create_file("query_bp_state", + S_IRUGO, + dfs_root, + NULL, + &query_bp_state_fops); + if (d == NULL) { + ret = -ENOMEM; + pr_err("Cannot create query_bp_state\n"); + goto _return; + } + return 0; + +_return: + if (dfs_root) + debugfs_remove_recursive(dfs_root); + return ret; +} + +static void __exit bman_debugfs_module_exit(void) +{ + debugfs_remove_recursive(dfs_root); +} + + +module_init(bman_debugfs_module_init); +module_exit(bman_debugfs_module_exit); +MODULE_LICENSE("Dual BSD/GPL"); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_config.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_config.c @@ -0,0 +1,1010 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef CONFIG_SMP +#include /* get_hard_smp_processor_id() */ +#endif + +#include "qman_private.h" + +/* Last updated for v00.800 of the BG */ + +/* Register offsets */ +#define REG_QCSP_PID_CFG(n) (0x0000 + ((n) * 0x10)) +#define REG_QCSP_IO_CFG(n) (0x0004 + ((n) * 0x10)) +#define REG_QCSP_DD_CFG(n) (0x000c + ((n) * 0x10)) +#define REG_DD_CFG 0x0200 +#define REG_DCP_CFG(n) (0x0300 + ((n) * 0x10)) +#define REG_DCP_DD_CFG(n) (0x0304 + ((n) * 0x10)) +#define REG_DCP_DLM_AVG(n) (0x030c + ((n) * 0x10)) +#define REG_PFDR_FPC 0x0400 +#define REG_PFDR_FP_HEAD 0x0404 +#define REG_PFDR_FP_TAIL 0x0408 +#define REG_PFDR_FP_LWIT 0x0410 +#define REG_PFDR_CFG 0x0414 +#define REG_SFDR_CFG 0x0500 +#define REG_SFDR_IN_USE 0x0504 +#define REG_WQ_CS_CFG(n) (0x0600 + ((n) * 0x04)) +#define REG_WQ_DEF_ENC_WQID 0x0630 +#define REG_WQ_SC_DD_CFG(n) (0x640 + ((n) * 0x04)) +#define REG_WQ_PC_DD_CFG(n) (0x680 + ((n) * 0x04)) +#define REG_WQ_DC0_DD_CFG(n) (0x6c0 + ((n) * 0x04)) +#define REG_WQ_DC1_DD_CFG(n) (0x700 + ((n) * 0x04)) +#define REG_WQ_DCn_DD_CFG(n) (0x6c0 + ((n) * 0x40)) /* n=2,3 */ +#define REG_CM_CFG 0x0800 +#define REG_ECSR 0x0a00 +#define REG_ECIR 0x0a04 +#define REG_EADR 0x0a08 +#define REG_EDATA(n) (0x0a10 + ((n) * 0x04)) +#define REG_SBEC(n) (0x0a80 + ((n) * 0x04)) +#define REG_MCR 0x0b00 +#define REG_MCP(n) (0x0b04 + ((n) * 0x04)) +#define REG_HID_CFG 0x0bf0 +#define REG_IDLE_STAT 0x0bf4 +#define REG_IP_REV_1 0x0bf8 +#define REG_IP_REV_2 0x0bfc +#define REG_FQD_BARE 0x0c00 +#define REG_PFDR_BARE 0x0c20 +#define REG_offset_BAR 0x0004 /* relative to REG_[FQD|PFDR]_BARE */ +#define REG_offset_AR 0x0010 /* relative to REG_[FQD|PFDR]_BARE */ +#define REG_QCSP_BARE 0x0c80 +#define REG_QCSP_BAR 0x0c84 +#define REG_CI_SCHED_CFG 0x0d00 +#define REG_SRCIDR 0x0d04 +#define REG_LIODNR 0x0d08 +#define REG_CI_RLM_AVG 0x0d14 +#define REG_ERR_ISR 0x0e00 /* + "enum qm_isr_reg" */ + +/* Assists for QMAN_MCR */ +#define MCR_INIT_PFDR 0x01000000 +#define MCR_get_rslt(v) (u8)((v) >> 24) +#define MCR_rslt_idle(r) (!rslt || (rslt >= 0xf0)) +#define MCR_rslt_ok(r) (rslt == 0xf0) +#define MCR_rslt_eaccess(r) (rslt == 0xf8) +#define MCR_rslt_inval(r) (rslt == 0xff) + +struct qman; + +/* Follows WQ_CS_CFG0-5 */ +enum qm_wq_class { + qm_wq_portal = 0, + qm_wq_pool = 1, + qm_wq_fman0 = 2, + qm_wq_fman1 = 3, + qm_wq_caam = 4, + qm_wq_pme = 5, + qm_wq_first = qm_wq_portal, + qm_wq_last = qm_wq_pme +}; + +/* Follows FQD_[BARE|BAR|AR] and PFDR_[BARE|BAR|AR] */ +enum qm_memory { + qm_memory_fqd, + qm_memory_pfdr +}; + +/* Used by all error interrupt registers except 'inhibit' */ +#define QM_EIRQ_CIDE 0x20000000 /* Corenet Initiator Data Error */ +#define QM_EIRQ_CTDE 0x10000000 /* Corenet Target Data Error */ +#define QM_EIRQ_CITT 0x08000000 /* Corenet Invalid Target Transaction */ +#define QM_EIRQ_PLWI 0x04000000 /* PFDR Low Watermark */ +#define QM_EIRQ_MBEI 0x02000000 /* Multi-bit ECC Error */ +#define QM_EIRQ_SBEI 0x01000000 /* Single-bit ECC Error */ +#define QM_EIRQ_PEBI 0x00800000 /* PFDR Enqueues Blocked Interrupt */ +#define QM_EIRQ_ICVI 0x00010000 /* Invalid Command Verb */ +#define QM_EIRQ_IDDI 0x00000800 /* Invalid Dequeue (Direct-connect) */ +#define QM_EIRQ_IDFI 0x00000400 /* Invalid Dequeue FQ */ +#define QM_EIRQ_IDSI 0x00000200 /* Invalid Dequeue Source */ +#define QM_EIRQ_IDQI 0x00000100 /* Invalid Dequeue Queue */ +#define QM_EIRQ_IEOI 0x00000008 /* Invalid Enqueue Overflow */ +#define QM_EIRQ_IESI 0x00000004 /* Invalid Enqueue State */ +#define QM_EIRQ_IECI 0x00000002 /* Invalid Enqueue Channel */ +#define QM_EIRQ_IEQI 0x00000001 /* Invalid Enqueue Queue */ + +/* QMAN_ECIR valid error bit */ +#define PORTAL_ECSR_ERR (QM_EIRQ_IEQI | QM_EIRQ_IESI | QM_EIRQ_IEOI | \ + QM_EIRQ_IDQI | QM_EIRQ_IDSI | QM_EIRQ_IDFI | \ + QM_EIRQ_IDDI | QM_EIRQ_ICVI) +#define FQID_ECSR_ERR (QM_EIRQ_IEQI | QM_EIRQ_IECI | QM_EIRQ_IESI | \ + QM_EIRQ_IEOI | QM_EIRQ_IDQI | QM_EIRQ_IDFI) + +union qman_ecir { + u32 ecir_raw; + struct { + u32 __reserved:2; + u32 portal_type:1; + u32 portal_num:5; + u32 fqid:24; + } __packed info; +}; + +union qman_eadr { + u32 eadr_raw; + struct { + u32 __reserved1:4; + u32 memid:4; + u32 __reserved2:12; + u32 eadr:12; + } __packed info; +}; + +struct qman_hwerr_txt { + u32 mask; + const char *txt; +}; + +#define QMAN_HWE_TXT(a, b) { .mask = QM_EIRQ_##a, .txt = b } + +static const struct qman_hwerr_txt qman_hwerr_txts[] = { + QMAN_HWE_TXT(CIDE, "Corenet Initiator Data Error"), + QMAN_HWE_TXT(CTDE, "Corenet Target Data Error"), + QMAN_HWE_TXT(CITT, "Corenet Invalid Target Transaction"), + QMAN_HWE_TXT(PLWI, "PFDR Low Watermark"), + QMAN_HWE_TXT(MBEI, "Multi-bit ECC Error"), + QMAN_HWE_TXT(SBEI, "Single-bit ECC Error"), + QMAN_HWE_TXT(PEBI, "PFDR Enqueues Blocked Interrupt"), + QMAN_HWE_TXT(ICVI, "Invalid Command Verb"), + QMAN_HWE_TXT(IDDI, "Invalid Dequeue (Direct-connect)"), + QMAN_HWE_TXT(IDFI, "Invalid Dequeue FQ"), + QMAN_HWE_TXT(IDSI, "Invalid Dequeue Source"), + QMAN_HWE_TXT(IDQI, "Invalid Dequeue Queue"), + QMAN_HWE_TXT(IEOI, "Invalid Enqueue Overflow"), + QMAN_HWE_TXT(IESI, "Invalid Enqueue State"), + QMAN_HWE_TXT(IECI, "Invalid Enqueue Channel"), + QMAN_HWE_TXT(IEQI, "Invalid Enqueue Queue") +}; +#define QMAN_HWE_COUNT (sizeof(qman_hwerr_txts)/sizeof(struct qman_hwerr_txt)) + +struct qman_error_info_mdata { + u16 addr_mask; + u16 bits; + const char *txt; +}; + +#define QMAN_ERR_MDATA(a, b, c) { .addr_mask = a, .bits = b, .txt = c} +static const struct qman_error_info_mdata error_mdata[] = { + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 0"), + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 1"), + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 2"), + QMAN_ERR_MDATA(0x01FF, 24, "FQD cache tag memory 3"), + QMAN_ERR_MDATA(0x0FFF, 512, "FQD cache memory"), + QMAN_ERR_MDATA(0x07FF, 128, "SFDR memory"), + QMAN_ERR_MDATA(0x01FF, 72, "WQ context memory"), + QMAN_ERR_MDATA(0x00FF, 240, "CGR memory"), + QMAN_ERR_MDATA(0x00FF, 302, "Internal Order Restoration List memory"), + QMAN_ERR_MDATA(0x01FF, 256, "SW portal ring memory"), +}; +#define QMAN_ERR_MDATA_COUNT \ + (sizeof(error_mdata)/sizeof(struct qman_error_info_mdata)) + +/* Add this in Kconfig */ +#define QMAN_ERRS_TO_UNENABLE (QM_EIRQ_PLWI | QM_EIRQ_PEBI) + +/** + * qm_err_isr__ - Manipulate global interrupt registers + * @v: for accessors that write values, this is the 32-bit value + * + * Manipulates QMAN_ERR_ISR, QMAN_ERR_IER, QMAN_ERR_ISDR, QMAN_ERR_IIR. All + * manipulations except qm_err_isr_[un]inhibit() use 32-bit masks composed of + * the QM_EIRQ_*** definitions. Note that "qm_err_isr_enable_write" means + * "write the enable register" rather than "enable the write register"! + */ +#define qm_err_isr_status_read(qm) __qm_err_isr_read(qm, qm_isr_status) +#define qm_err_isr_status_clear(qm, m) __qm_err_isr_write(qm, qm_isr_status,m) +#define qm_err_isr_enable_read(qm) __qm_err_isr_read(qm, qm_isr_enable) +#define qm_err_isr_enable_write(qm, v) __qm_err_isr_write(qm, qm_isr_enable,v) +#define qm_err_isr_disable_read(qm) __qm_err_isr_read(qm, qm_isr_disable) +#define qm_err_isr_disable_write(qm, v) __qm_err_isr_write(qm, qm_isr_disable,v) +#define qm_err_isr_inhibit(qm) __qm_err_isr_write(qm, qm_isr_inhibit,1) +#define qm_err_isr_uninhibit(qm) __qm_err_isr_write(qm, qm_isr_inhibit,0) + +/* + * TODO: unimplemented registers + * + * Keeping a list here of Qman registers I have not yet covered; + * QCSP_DD_IHRSR, QCSP_DD_IHRFR, QCSP_DD_HASR, + * DCP_DD_IHRSR, DCP_DD_IHRFR, DCP_DD_HASR, CM_CFG, + * QMAN_EECC, QMAN_SBET, QMAN_EINJ, QMAN_SBEC0-12 + */ + +/* Encapsulate "struct qman *" as a cast of the register space address. */ + +static struct qman *qm_create(void *regs) +{ + return (struct qman *)regs; +} + +static inline u32 __qm_in(struct qman *qm, u32 offset) +{ + return in_be32((void *)qm + offset); +} +static inline void __qm_out(struct qman *qm, u32 offset, u32 val) +{ + out_be32((void *)qm + offset, val); +} +#define qm_in(reg) __qm_in(qm, REG_##reg) +#define qm_out(reg, val) __qm_out(qm, REG_##reg, val) + +static u32 __qm_err_isr_read(struct qman *qm, enum qm_isr_reg n) +{ + return __qm_in(qm, REG_ERR_ISR + (n << 2)); +} + +static void __qm_err_isr_write(struct qman *qm, enum qm_isr_reg n, u32 val) +{ + __qm_out(qm, REG_ERR_ISR + (n << 2), val); +} + +#if 0 + +static void qm_set_portal(struct qman *qm, u8 swportalID, + u16 ec_tp_cfg, u16 ecd_tp_cfg) +{ + qm_out(QCSP_DD_CFG(swportalID), + ((ec_tp_cfg & 0x1ff) << 16) | (ecd_tp_cfg & 0x1ff)); +} + +static void qm_set_ddebug(struct qman *qm, u8 mdd, u8 m_cfg) +{ + qm_out(DD_CFG, ((mdd & 0x3) << 4) | (m_cfg & 0xf)); +} + +static void qm_set_dc_ddebug(struct qman *qm, enum qm_dc_portal portal, u16 ecd_tp_cfg) +{ + qm_out(DCP_DD_CFG(portal), ecd_tp_cfg & 0x1ff); +} + +static u32 qm_get_pfdr_free_pool_count(struct qman *qm) +{ + return qm_in(PFDR_FPC); +} + +static void qm_get_pfdr_free_pool(struct qman *qm, u32 *head, u32 *tail) +{ + *head = qm_in(PFDR_FP_HEAD); + *tail = qm_in(PFDR_FP_TAIL); +} + +static void qm_set_default_wq(struct qman *qm, u16 wqid) +{ + qm_out(WQ_DEF_ENC_WQID, wqid); +} + +static void qm_set_channel_ddebug(struct qman *qm, enum qm_channel channel, + u16 tp_cfg) +{ + u32 offset; + int upperhalf = 0; + if ((channel >= qm_channel_swportal0) && + (channel <= qm_channel_swportal9)) { + offset = (channel - qm_channel_swportal0); + upperhalf = offset & 0x1; + offset = REG_WQ_SC_DD_CFG(offset / 2); + } else if ((channel >= qm_channel_pool1) && + (channel <= qm_channel_pool15)) { + offset = (channel + 1 - qm_channel_pool1); + upperhalf = offset & 0x1; + offset = REG_WQ_PC_DD_CFG(offset / 2); + } else if ((channel >= qm_channel_fman0_sp0) && + (channel <= qm_channel_fman0_sp11)) { + offset = (channel - qm_channel_fman0_sp0); + upperhalf = offset & 0x1; + offset = REG_WQ_DC0_DD_CFG(offset / 2); + } + else if ((channel >= qm_channel_fman1_sp0) && + (channel <= qm_channel_fman1_sp11)) { + offset = (channel - qm_channel_fman1_sp0); + upperhalf = offset & 0x1; + offset = REG_WQ_DC1_DD_CFG(offset / 2); + } + else if (channel == qm_channel_caam) + offset = REG_WQ_DCn_DD_CFG(2); + else if (channel == qm_channel_pme) + offset = REG_WQ_DCn_DD_CFG(3); + else { + pr_crit("Illegal qm_channel type %d\n", channel); + return; + } + __qm_out(qm, offset, upperhalf ? ((u32)tp_cfg << 16) : tp_cfg); +} + +static void qm_get_details(struct qman *qm, u8 *int_options, u8 *errata, + u8 *conf_options) +{ + u32 v = qm_in(IP_REV_1); + *int_options = (v >> 16) & 0xff; + *errata = (v >> 8) & 0xff; + *conf_options = v & 0xff; +} + +static void qm_set_corenet_bar(struct qman *qm, u16 eba, u32 ba) +{ + /* choke if 'ba' isn't properly aligned */ + DPA_ASSERT(!(ba & 0x001fffff)); + qm_out(QCSP_BARE, eba); + qm_out(QCSP_BAR, ba); +} + +static u8 qm_get_corenet_sourceid(struct qman *qm) +{ + return qm_in(SRCIDR); +} + +static u16 qm_get_liodn(struct qman *qm) +{ + return qm_in(LIODNR); +} + +static void qm_set_congestion_config(struct qman *qm, u16 pres) +{ + qm_out(CM_CFG, pres); +} + +#endif + +static void qm_set_dc(struct qman *qm, enum qm_dc_portal portal, + int ed, u8 sernd) +{ + DPA_ASSERT(!ed || (portal == qm_dc_portal_fman0) || + (portal == qm_dc_portal_fman1)); + qm_out(DCP_CFG(portal), (ed ? 0x100 : 0) | (sernd & 0x1f)); +} + +static void qm_set_wq_scheduling(struct qman *qm, enum qm_wq_class wq_class, + u8 cs_elev, u8 csw2, u8 csw3, u8 csw4, u8 csw5, + u8 csw6, u8 csw7) +{ +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 +#define csw(x) \ +do { \ + if (++x == 8) \ + x = 7; \ +} while (0) + if (qman_ip_rev == QMAN_REV10) { + csw(csw2); + csw(csw3); + csw(csw4); + csw(csw5); + csw(csw6); + csw(csw7); + } +#endif + qm_out(WQ_CS_CFG(wq_class), ((cs_elev & 0xff) << 24) | + ((csw2 & 0x7) << 20) | ((csw3 & 0x7) << 16) | + ((csw4 & 0x7) << 12) | ((csw5 & 0x7) << 8) | + ((csw6 & 0x7) << 4) | (csw7 & 0x7)); +} + +static void qm_set_hid(struct qman *qm) +{ +#ifdef CONFIG_FSL_QMAN_BUG_AND_FEATURE_REV1 + if (qman_ip_rev == QMAN_REV10) + qm_out(HID_CFG, 3); + else +#endif + qm_out(HID_CFG, 0); +} + +static void qm_set_corenet_initiator(struct qman *qm) +{ + qm_out(CI_SCHED_CFG, + 0x80000000 | /* write srcciv enable */ + (CONFIG_FSL_QMAN_CI_SCHED_CFG_SRCCIV << 24) | + (CONFIG_FSL_QMAN_CI_SCHED_CFG_SRQ_W << 8) | + (CONFIG_FSL_QMAN_CI_SCHED_CFG_RW_W << 4) | + CONFIG_FSL_QMAN_CI_SCHED_CFG_BMAN_W); +} + +static void qm_get_version(struct qman *qm, u16 *id, u8 *major, u8 *minor) +{ + u32 v = qm_in(IP_REV_1); + *id = (v >> 16); + *major = (v >> 8) & 0xff; + *minor = v & 0xff; +} + +static void qm_set_memory(struct qman *qm, enum qm_memory memory, u64 ba, + int enable, int prio, int stash, u32 size) +{ + u32 offset = (memory == qm_memory_fqd) ? REG_FQD_BARE : REG_PFDR_BARE; + u32 exp = ilog2(size); + /* choke if size isn't within range */ + DPA_ASSERT((size >= 4096) && (size <= 1073741824) && + is_power_of_2(size)); + /* choke if 'ba' has lower-alignment than 'size' */ + DPA_ASSERT(!(ba & (size - 1))); + __qm_out(qm, offset, upper_32_bits(ba)); + __qm_out(qm, offset + REG_offset_BAR, lower_32_bits(ba)); + __qm_out(qm, offset + REG_offset_AR, + (enable ? 0x80000000 : 0) | + (prio ? 0x40000000 : 0) | + (stash ? 0x20000000 : 0) | + (exp - 1)); +} + +static void qm_set_pfdr_threshold(struct qman *qm, u32 th, u8 k) +{ + qm_out(PFDR_FP_LWIT, th & 0xffffff); + qm_out(PFDR_CFG, k); +} + +static void qm_set_sfdr_threshold(struct qman *qm, u16 th) +{ + qm_out(SFDR_CFG, th & 0x3ff); +} + +static int qm_init_pfdr(struct qman *qm, u32 pfdr_start, u32 num) +{ + u8 rslt = MCR_get_rslt(qm_in(MCR)); + + DPA_ASSERT(pfdr_start && !(pfdr_start & 7) && !(num & 7) && num); + /* Make sure the command interface is 'idle' */ + if(!MCR_rslt_idle(rslt)) + panic("QMAN_MCR isn't idle"); + + /* Write the MCR command params then the verb */ + qm_out(MCP(0), pfdr_start ); + /* TODO: remove this - it's a workaround for a model bug that is + * corrected in more recent versions. We use the workaround until + * everyone has upgraded. */ + qm_out(MCP(1), (pfdr_start + num - 16)); + lwsync(); + qm_out(MCR, MCR_INIT_PFDR); + + /* Poll for the result */ + do { + rslt = MCR_get_rslt(qm_in(MCR)); + } while(!MCR_rslt_idle(rslt)); + if (MCR_rslt_ok(rslt)) + return 0; + if (MCR_rslt_eaccess(rslt)) + return -EACCES; + if (MCR_rslt_inval(rslt)) + return -EINVAL; + pr_crit("Unexpected result from MCR_INIT_PFDR: %02x\n", rslt); + return -ENOSYS; +} + +/*****************/ +/* Config driver */ +/*****************/ + +/* TODO: Kconfig these? */ +#define DEFAULT_FQD_SZ (PAGE_SIZE << CONFIG_FSL_QMAN_FQD_SZ) +#define DEFAULT_PFDR_SZ (PAGE_SIZE << 12) + +/* We support only one of these */ +static struct qman *qm; +static struct device_node *qm_node; + +/* Parse the property to extract the memory location and size and + * memblock_reserve() it. If it isn't supplied, memblock_alloc() the default size. */ +static __init int parse_mem_property(struct device_node *node, const char *name, + dma_addr_t *addr, size_t *sz, int zero) +{ + const u32 *pint; + int ret; + + pint = of_get_property(node, name, &ret); + if (!pint || (ret != 16)) { + pr_info("No %s property '%s', using memblock_alloc(%016zx)\n", + node->full_name, name, *sz); + *addr = memblock_alloc(*sz, *sz); + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + return 0; + } + pr_info("Using %s property '%s'\n", node->full_name, name); + /* If using a "zero-pma", don't try to zero it, even if you asked */ + if (zero && of_find_property(node, "zero-pma", &ret)) { + pr_info(" it's a 'zero-pma', not zeroing from s/w\n"); + zero = 0; + } + *addr = ((u64)pint[0] << 32) | (u64)pint[1]; + *sz = ((u64)pint[2] << 32) | (u64)pint[3]; + /* Keep things simple, it's either all in the DRAM range or it's all + * outside. */ + if (*addr < memblock_end_of_DRAM()) { + BUG_ON((u64)*addr + (u64)*sz > memblock_end_of_DRAM()); + if (memblock_reserve(*addr, *sz) < 0) { + pr_err("Failed to reserve %s\n", name); + return -ENOMEM; + } + if (zero) + memset(phys_to_virt(*addr), 0, *sz); + } else if (zero) { + /* map as cacheable, non-guarded */ + void *tmpp = ioremap_prot(*addr, *sz, 0); + memset(tmpp, 0, *sz); + iounmap(tmpp); + } + return 0; +} + +/* TODO: + * - there is obviously no handling of errors, + * - the calls to qm_set_memory() hard-code the priority and CPC-stashing for + * both memory resources to zero. + */ +static int __init fsl_qman_init(struct device_node *node) +{ + struct resource res; + u32 __iomem *regs; + const char *s; + dma_addr_t fqd_a = 0, pfdr_a = 0; + size_t fqd_sz = DEFAULT_FQD_SZ, pfdr_sz = DEFAULT_PFDR_SZ; + int ret, standby = 0; + u16 id; + u8 major, minor; + + ret = of_address_to_resource(node, 0, &res); + if (ret) { + pr_err("Can't get %s property '%s'\n", node->full_name, "reg"); + return ret; + } + s = of_get_property(node, "fsl,hv-claimable", &ret); + if (s && !strcmp(s, "standby")) + standby = 1; + if (!standby) { + ret = parse_mem_property(node, "fsl,qman-fqd", + &fqd_a, &fqd_sz, 1); + BUG_ON(ret); + ret = parse_mem_property(node, "fsl,qman-pfdr", + &pfdr_a, &pfdr_sz, 0); + BUG_ON(ret); + } + /* Global configuration */ + regs = ioremap(res.start, res.end - res.start + 1); + qm = qm_create(regs); + qm_node = node; + qm_get_version(qm, &id, &major, &minor); + pr_info("Qman ver:%04x,%02x,%02x\n", id, major, minor); + if (!qman_ip_rev) { + if ((major == 1) && (minor == 0)) + qman_ip_rev = QMAN_REV10; + else if ((major == 1) && (minor == 1)) + qman_ip_rev = QMAN_REV11; + else if ((major == 1) && (minor == 2)) + qman_ip_rev = QMAN_REV12; + else if ((major == 2) && (minor == 0)) + qman_ip_rev = QMAN_REV20; + else { + pr_warning("unknown Qman version, default to rev1.1\n"); + qman_ip_rev = QMAN_REV11; + } + } + + if (standby) { + pr_info(" -> in standby mode\n"); + return 0; + } + /* FQD memory */ + qm_set_memory(qm, qm_memory_fqd, fqd_a, 1, 0, 0, fqd_sz); + /* PFDR memory */ + qm_set_memory(qm, qm_memory_pfdr, pfdr_a, 1, 0, 0, pfdr_sz); + qm_init_pfdr(qm, 8, pfdr_sz / 64 - 8); + /* thresholds */ + qm_set_pfdr_threshold(qm, 512, 64); + qm_set_sfdr_threshold(qm, 128); + /* clear stale PEBI bit from interrupt status register */ + qm_err_isr_status_clear(qm, QM_EIRQ_PEBI); + /* corenet initiator settings */ + qm_set_corenet_initiator(qm); + /* HID settings */ + qm_set_hid(qm); + /* Set scheduling weights to defaults */ + for (ret = qm_wq_first; ret <= qm_wq_last; ret++) + qm_set_wq_scheduling(qm, ret, 0, 0, 0, 0, 0, 0, 0); + /* We are not prepared to accept ERNs for hardware enqueues */ + qm_set_dc(qm, qm_dc_portal_fman0, 1, 0); + qm_set_dc(qm, qm_dc_portal_fman1, 1, 0); + return 0; +} + +int qman_have_ccsr(void) +{ + return qm ? 1 : 0; +} + +__init void qman_init_early(void) +{ + struct device_node *dn; + for_each_compatible_node(dn, NULL, "fsl,qman") { + if (qm) + pr_err("%s: only one 'fsl,qman' allowed\n", + dn->full_name); + else { + int ret = fsl_qman_init(dn); + BUG_ON(ret); + } + } +} + +static void log_edata_bits(u32 bit_count) +{ + u32 i, j, mask = 0xffffffff; + + pr_warning("Qman ErrInt, EDATA:\n"); + i = bit_count/32; + if (bit_count%32) { + i++; + mask = ~(mask << bit_count%32); + } + j = 16-i; + pr_warning(" 0x%08x\n", qm_in(EDATA(j)) & mask); + j++; + for (; j < 16; j++) + pr_warning(" 0x%08x\n", qm_in(EDATA(j))); +} + +static void log_additional_error_info(u32 isr_val, u32 ecsr_val) +{ + union qman_ecir ecir_val; + union qman_eadr eadr_val; + + ecir_val.ecir_raw = qm_in(ECIR); + /* Is portal info valid */ + if (ecsr_val & PORTAL_ECSR_ERR) { + pr_warning("Qman ErrInt: %s id %d\n", + (ecir_val.info.portal_type) ? + "DCP" : "SWP", ecir_val.info.portal_num); + } + if (ecsr_val & FQID_ECSR_ERR) { + pr_warning("Qman ErrInt: ecir.fqid 0x%x\n", + ecir_val.info.fqid); + } + if (ecsr_val & (QM_EIRQ_SBEI|QM_EIRQ_MBEI)) { + eadr_val.eadr_raw = qm_in(EADR); + pr_warning("Qman ErrInt: EADR Memory: %s, 0x%x\n", + error_mdata[eadr_val.info.memid].txt, + error_mdata[eadr_val.info.memid].addr_mask + & eadr_val.info.eadr); + log_edata_bits(error_mdata[eadr_val.info.memid].bits); + } +} + +/* Qman interrupt handler */ +static irqreturn_t qman_isr(int irq, void *ptr) +{ + u32 isr_val, ier_val, ecsr_val, isr_mask, i; + + ier_val = qm_err_isr_enable_read(qm); + isr_val = qm_err_isr_status_read(qm); + ecsr_val = qm_in(ECSR); + isr_mask = isr_val & ier_val; + + if (!isr_mask) + return IRQ_NONE; + for (i = 0; i < QMAN_HWE_COUNT; i++) { + if (qman_hwerr_txts[i].mask & isr_mask) { + pr_warning("Qman ErrInt: %s\n", qman_hwerr_txts[i].txt); + if (qman_hwerr_txts[i].mask & ecsr_val) { + log_additional_error_info(isr_mask, ecsr_val); + /* Re-arm error capture registers */ + qm_out(ECSR, ecsr_val); + } + if (qman_hwerr_txts[i].mask & QMAN_ERRS_TO_UNENABLE) { + pr_devel("Qman un-enabling error 0x%x\n", + qman_hwerr_txts[i].mask); + ier_val &= ~qman_hwerr_txts[i].mask; + qm_err_isr_enable_write(qm, ier_val); + } + } + } + qm_err_isr_status_clear(qm, isr_val); + return IRQ_HANDLED; +} + +static int __bind_irq(void) +{ + int ret, err_irq; + + err_irq = of_irq_to_resource(qm_node, 0, NULL); + if (err_irq == NO_IRQ) { + pr_info("Can't get %s property '%s'\n", qm_node->full_name, + "interrupts"); + return -ENODEV; + } + ret = request_irq(err_irq, qman_isr, IRQF_SHARED, "qman-err", qm_node); + if (ret) { + pr_err("request_irq() failed %d for '%s'\n", ret, + qm_node->full_name); + return -ENODEV; + } + /* Write-to-clear any stale bits, (eg. starvation being asserted prior + * to resource allocation during driver init). */ + qm_err_isr_status_clear(qm, 0xffffffff); + /* Enable Error Interrupts */ + qm_err_isr_enable_write(qm, 0xffffffff); + return 0; +} + +/* Initialise Error Interrupt Handler */ +int qman_init_error_int(struct device_node *node) +{ + if (!qman_have_ccsr()) + return 0; + if (node != qm_node) + return -EINVAL; + return __bind_irq(); +} + +#define PID_CFG_LIODN_MASK 0x0fff0000 +void qman_liodn_fixup(enum qm_channel channel) +{ + static int done; + static u32 liodn_offset; + u32 before, after; + int idx = channel - qm_channel_swportal0; + + if (!qman_have_ccsr()) + return; + before = qm_in(QCSP_PID_CFG(idx)); + if (!done) { + liodn_offset = before & PID_CFG_LIODN_MASK; + done = 1; + return; + } + after = (before & (~PID_CFG_LIODN_MASK)) | liodn_offset; + qm_out(QCSP_PID_CFG(idx), after); +} + +#ifdef CONFIG_SYSFS + +#define DRV_NAME "fsl-qman" + +static ssize_t show_pfdr_fpc(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(PFDR_FPC)); +}; + +static ssize_t show_dlm_avg(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + u32 data; + int i; + + if (!sscanf(dev_attr->attr.name, "dcp%d_dlm_avg", &i)) + return -EINVAL; + data = qm_in(DCP_DLM_AVG(i)); + return snprintf(buf, PAGE_SIZE, "%d.%08d\n", data>>8, + (data & 0x000000ff)*390625); +}; + +static ssize_t set_dlm_avg(struct device *dev, + struct device_attribute *dev_attr, const char *buf, size_t count) +{ + unsigned long val; + int i; + + if (!sscanf(dev_attr->attr.name, "dcp%d_dlm_avg", &i)) + return -EINVAL; + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n", buf); + return -EINVAL; + } + qm_out(DCP_DLM_AVG(i), val); + return count; +}; + +static ssize_t show_pfdr_cfg(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(PFDR_CFG)); +}; + +static ssize_t set_pfdr_cfg(struct device *dev, + struct device_attribute *dev_attr, const char *buf, size_t count) +{ + unsigned long val; + + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n", buf); + return -EINVAL; + } + qm_out(PFDR_CFG, val); + return count; +}; + +static ssize_t show_sfdr_in_use(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(SFDR_IN_USE)); +}; + +static ssize_t show_idle_stat(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(IDLE_STAT)); +}; + +static ssize_t show_ci_rlm_avg(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + u32 data = qm_in(CI_RLM_AVG); + return snprintf(buf, PAGE_SIZE, "%d.%08d\n", data>>8, + (data & 0x000000ff)*390625); +}; + +static ssize_t set_ci_rlm_avg(struct device *dev, + struct device_attribute *dev_attr, const char *buf, size_t count) +{ + unsigned long val; + + if (strict_strtoul(buf, 0, &val)) { + dev_dbg(dev, "invalid input %s\n", buf); + return -EINVAL; + } + qm_out(CI_RLM_AVG, val); + return count; +}; + +static ssize_t show_err_isr(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "0x%08x\n", qm_in(ERR_ISR)); +}; + + +static ssize_t show_sbec(struct device *dev, + struct device_attribute *dev_attr, char *buf) +{ + int i; + + if (!sscanf(dev_attr->attr.name, "sbec_%d", &i)) + return -EINVAL; + return snprintf(buf, PAGE_SIZE, "%u\n", qm_in(SBEC(i))); +}; + +static DEVICE_ATTR(pfdr_fpc, S_IRUSR, show_pfdr_fpc, NULL); +static DEVICE_ATTR(pfdr_cfg, S_IRUSR, show_pfdr_cfg, set_pfdr_cfg); +static DEVICE_ATTR(idle_stat, S_IRUSR, show_idle_stat, NULL); +static DEVICE_ATTR(ci_rlm_avg, (S_IRUSR|S_IWUGO), + show_ci_rlm_avg, set_ci_rlm_avg); +static DEVICE_ATTR(err_isr, S_IRUSR, show_err_isr, NULL); +static DEVICE_ATTR(sfdr_in_use, S_IRUSR, show_sfdr_in_use, NULL); + +static DEVICE_ATTR(dcp0_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); +static DEVICE_ATTR(dcp1_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); +static DEVICE_ATTR(dcp2_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); +static DEVICE_ATTR(dcp3_dlm_avg, (S_IRUSR|S_IWUGO), show_dlm_avg, set_dlm_avg); + +static DEVICE_ATTR(sbec_0, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_1, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_2, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_3, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_4, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_5, S_IRUSR, show_sbec, NULL); +static DEVICE_ATTR(sbec_6, S_IRUSR, show_sbec, NULL); + + +static struct attribute *qman_dev_attributes[] = { + &dev_attr_pfdr_fpc.attr, + &dev_attr_pfdr_cfg.attr, + &dev_attr_idle_stat.attr, + &dev_attr_ci_rlm_avg.attr, + &dev_attr_err_isr.attr, + &dev_attr_dcp0_dlm_avg.attr, + &dev_attr_dcp1_dlm_avg.attr, + &dev_attr_dcp2_dlm_avg.attr, + &dev_attr_dcp3_dlm_avg.attr, + /* sfdr_in_use will be added if necessary */ + NULL +}; + +static struct attribute *qman_dev_ecr_attributes[] = { + &dev_attr_sbec_0.attr, + &dev_attr_sbec_1.attr, + &dev_attr_sbec_2.attr, + &dev_attr_sbec_3.attr, + &dev_attr_sbec_4.attr, + &dev_attr_sbec_5.attr, + &dev_attr_sbec_6.attr, + NULL +}; + +/* root level */ +static const struct attribute_group qman_dev_attr_grp = { + .name = NULL, + .attrs = qman_dev_attributes +}; +static const struct attribute_group qman_dev_ecr_grp = { + .name = "error_capture", + .attrs = qman_dev_ecr_attributes +}; + +static int of_fsl_qman_remove(struct platform_device *ofdev) +{ + sysfs_remove_group(&ofdev->dev.kobj, &qman_dev_attr_grp); + return 0; +}; + +static int of_fsl_qman_probe(struct platform_device *ofdev) +{ + int ret; + + ret = sysfs_create_group(&ofdev->dev.kobj, &qman_dev_attr_grp); + if (ret) + goto done; + if (qman_ip_rev != QMAN_REV10) { + ret = sysfs_add_file_to_group(&ofdev->dev.kobj, + &dev_attr_sfdr_in_use.attr, qman_dev_attr_grp.name); + if (ret) + goto del_group_0; + } + ret = sysfs_create_group(&ofdev->dev.kobj, &qman_dev_ecr_grp); + if (ret) + goto del_group_0; + + goto done; + +del_group_0: + sysfs_remove_group(&ofdev->dev.kobj, &qman_dev_attr_grp); +done: + if (ret) + dev_err(&ofdev->dev, + "Cannot create dev attributes ret=%d\n", ret); + return ret; +}; + +static struct of_device_id of_fsl_qman_ids[] = { + { + .compatible = "fsl,qman", + }, + {} +}; +MODULE_DEVICE_TABLE(of, of_fsl_qman_ids); + +static struct platform_driver of_fsl_qman_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME, + .of_match_table = of_fsl_qman_ids, + }, + .probe = of_fsl_qman_probe, + .remove = of_fsl_qman_remove, +}; + +static int qman_ctrl_init(void) +{ + return platform_driver_register(&of_fsl_qman_driver); +} + +static void qman_ctrl_exit(void) +{ + platform_driver_unregister(&of_fsl_qman_driver); +} + +module_init(qman_ctrl_init); +module_exit(qman_ctrl_exit); + +#endif /* CONFIG_SYSFS */ --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_test.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_test.c @@ -0,0 +1,57 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_test.h" + +MODULE_AUTHOR("Geoff Thorpe"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Bman testing"); + +static int test_init(void) +{ +#ifdef CONFIG_FSL_BMAN_TEST_HIGH + int loop = 1; + while (loop--) + bman_test_high(); +#endif +#ifdef CONFIG_FSL_BMAN_TEST_THRESH + bman_test_thresh(); +#endif + return 0; +} + +static void test_exit(void) +{ +} + +module_init(test_init); +module_exit(test_exit); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_private.h +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_private.h @@ -0,0 +1,149 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "dpa_sys.h" +#include + +/* Revision info (for errata and feature handling) */ +#define BMAN_REV10 0x0100 +#define BMAN_REV20 0x0200 +extern u16 bman_ip_rev; /* 0 if uninitialised, otherwise QMAN_REVx */ + +/* + * Global variables of the max portal/pool number this bman version supported + */ +extern u16 bman_pool_max; + +/* used by CCSR and portal interrupt code */ +enum bm_isr_reg { + bm_isr_status = 0, + bm_isr_enable = 1, + bm_isr_disable = 2, + bm_isr_inhibit = 3 +}; + +#define BM_ADDR_CE 0 +#define BM_ADDR_CI 1 +struct bm_portal_config { + /* Corenet portal addresses; + * [0]==cache-enabled, [1]==cache-inhibited. */ + __iomem void *addr_virt[2]; + struct resource addr_phys[2]; + /* Allow these to be joined in lists */ + struct list_head list; + /* User-visible portal configuration settings */ + struct bman_portal_config public_cfg; +}; + +#ifdef CONFIG_FSL_BMAN_CONFIG +/* Hooks from bman_driver.c to bman_config.c */ +int bman_init_error_int(struct device_node *node); +#endif + +/* Hooks from bman_driver.c in to bman_high.c */ +struct bman_portal *bman_create_affine_portal( + const struct bm_portal_config *config, + int recovery_mode); +struct bman_portal *bman_create_affine_slave(struct bman_portal *redirect); +const struct bm_portal_config *bman_destroy_affine_portal(void); +void bman_recovery_exit_local(void); + +/* Pool logic in the portal driver, during initialisation, needs to know if + * there's access to CCSR or not (if not, it'll cripple the pool allocator). */ +#ifdef CONFIG_FSL_BMAN_CONFIG +int bman_have_ccsr(void); +#else +#define bman_have_ccsr() 0 +#endif + +/* Stockpile build constants. The _LOW value: when bman_acquire() is called and + * the stockpile fill-level is <= _LOW, an acquire is attempted from h/w but it + * might fail (if the buffer pool is depleted). So this value provides some + * "stagger" in that the bman_acquire() function will only fail if lots of bufs + * are requested at once or if h/w has been tested a couple of times without + * luck. The _HIGH value: when bman_release() is called and the stockpile + * fill-level is >= _HIGH, a release is attempted to h/w but it might fail (if + * the release ring is full). So this value provides some "stagger" so that + * ring-access is retried a couple of times prior to the API returning a + * failure. The following *must* be true; + * BMAN_STOCKPILE_HIGH-BMAN_STOCKPILE_LOW > 8 + * (to avoid thrashing) + * BMAN_STOCKPILE_SZ >= 16 + * (as the release logic expects to either send 8 buffers to hw prior to + * adding the given buffers to the stockpile or add the buffers to the + * stockpile before sending 8 to hw, as the API must be an all-or-nothing + * success/fail.) + */ +#define BMAN_STOCKPILE_SZ 16u /* number of bufs in per-pool cache */ +#define BMAN_STOCKPILE_LOW 2u /* when fill is <= this, acquire from hw */ +#define BMAN_STOCKPILE_HIGH 14u /* when fill is >= this, release to hw */ + +/*************************************************/ +/* BMan s/w corenet portal, low-level i/face */ +/*************************************************/ + +/* Used by all portal interrupt registers except 'inhibit'. NB, some of these + * definitions are exported for use by the bman_irqsource_***() APIs, so are + * commented-out here. */ +#if 0 +#define BM_PIRQ_RCRI 0x00000002 /* RCR Ring (below threshold) */ +#define BM_PIRQ_BSCN 0x00000001 /* Buffer depletion State Change */ +#endif +/* This mask contains all the "irqsource" bits visible to API users */ +#define BM_PIRQ_VISIBLE (BM_PIRQ_RCRI | BM_PIRQ_BSCN) + +/* These are bm__(). So for example, bm_disable_write() means "write + * the disable register" rather than "disable the ability to write". */ +#define bm_isr_status_read(bm) __bm_isr_read(bm, bm_isr_status) +#define bm_isr_status_clear(bm, m) __bm_isr_write(bm, bm_isr_status, m) +#define bm_isr_enable_read(bm) __bm_isr_read(bm, bm_isr_enable) +#define bm_isr_enable_write(bm, v) __bm_isr_write(bm, bm_isr_enable, v) +#define bm_isr_disable_read(bm) __bm_isr_read(bm, bm_isr_disable) +#define bm_isr_disable_write(bm, v) __bm_isr_write(bm, bm_isr_disable, v) +#define bm_isr_inhibit(bm) __bm_isr_write(bm, bm_isr_inhibit, 1) +#define bm_isr_uninhibit(bm) __bm_isr_write(bm, bm_isr_inhibit, 0) + +/* Allocate/release an unreserved buffer pool id */ +int bm_pool_new(u32 *bpid); +void bm_pool_free(u32 bpid); + +#ifdef CONFIG_FSL_BMAN_CONFIG +/* Set depletion thresholds associated with a buffer pool. Requires that the + * operating system have access to Bman CCSR (ie. compiled in support and + * run-time access courtesy of the device-tree). */ +int bm_pool_set(u32 bpid, const u32 *thresholds); +#define BM_POOL_THRESH_SW_ENTER 0 +#define BM_POOL_THRESH_SW_EXIT 1 +#define BM_POOL_THRESH_HW_ENTER 2 +#define BM_POOL_THRESH_HW_EXIT 3 + +#endif /* CONFIG_FSL_BMAN_CONFIG */ + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_test_thresh.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_test_thresh.c @@ -0,0 +1,197 @@ +/* Copyright 2010-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_test.h" + +/* Test constants */ +#define TEST_NUMBUFS 129728 +#define TEST_EXIT 129536 +#define TEST_ENTRY 129024 + +struct affine_test_data { + struct task_struct *t; + int cpu; + int expect_affinity; + int drain; + int num_enter; + int num_exit; + struct list_head node; + struct completion wakethread; + struct completion wakeparent; +}; + +static void cb_depletion(struct bman_portal *portal, + struct bman_pool *pool, + void *opaque, + int depleted) +{ + struct affine_test_data *data = opaque; + int c = smp_processor_id(); + pr_info("cb_depletion: bpid=%d, depleted=%d, cpu=%d, original=%d\n", + bman_get_params(pool)->bpid, depleted, c, data->cpu); + /* We should be executing on the CPU of the thread that owns the pool if + * and that CPU has an affine portal (ie. it isn't slaved). */ + BUG_ON((c != data->cpu) && data->expect_affinity); + BUG_ON((c == data->cpu) && !data->expect_affinity); + if (depleted) + data->num_enter++; + else + data->num_exit++; +} + +/* Params used to set up a pool, this also dynamically allocates a BPID */ +struct bman_pool_params params_nocb = { + .flags = BMAN_POOL_FLAG_DYNAMIC_BPID | BMAN_POOL_FLAG_THRESH, + .thresholds = { TEST_ENTRY, TEST_EXIT, 0, 0 } +}; + +/* Params used to set up each cpu's pool with callbacks enabled */ +struct bman_pool_params params_cb = { + .bpid = 0, /* will be replaced to match pool_nocb */ + .flags = BMAN_POOL_FLAG_DEPLETION, + .cb = cb_depletion +}; + +static struct bman_pool *pool_nocb; +static LIST_HEAD(threads); + +static int affine_test(void *__data) +{ + struct bman_pool *pool; + struct affine_test_data *data = __data; + struct bman_pool_params my_params = params_cb; + + pr_info("thread %d: starting\n", data->cpu); + /* create the pool */ + my_params.cb_ctx = data; + pool = bman_new_pool(&my_params); + BUG_ON(!pool); + complete(&data->wakeparent); + wait_for_completion(&data->wakethread); + init_completion(&data->wakethread); + + /* if we're the drainer, we get signalled for that */ + if (data->drain) { + struct bm_buffer buf; + int ret; + pr_info("thread %d: draining...\n", data->cpu); + do { + ret = bman_acquire(pool, &buf, 1, 0); + } while (ret > 0); + pr_info("thread %d: draining done.\n", data->cpu); + complete(&data->wakeparent); + wait_for_completion(&data->wakethread); + init_completion(&data->wakethread); + } + + /* cleanup */ + bman_free_pool(pool); + while (!kthread_should_stop()) + cpu_relax(); + pr_info("thread %d: exiting\n", data->cpu); + return 0; +} + +static struct affine_test_data *start_affine_test(int cpu, int drain) +{ + struct affine_test_data *data = kmalloc(sizeof(*data), GFP_KERNEL); + + if (!data) + return NULL; + data->cpu = cpu; + data->expect_affinity = cpumask_test_cpu(cpu, bman_affine_cpus()); + data->drain = drain; + data->num_enter = 0; + data->num_exit = 0; + init_completion(&data->wakethread); + init_completion(&data->wakeparent); + list_add_tail(&data->node, &threads); + data->t = kthread_create(affine_test, data, "threshtest%d", cpu); + BUG_ON(IS_ERR(data->t)); + kthread_bind(data->t, cpu); + wake_up_process(data->t); + return data; +} + +void bman_test_thresh(void) +{ + int loop = TEST_NUMBUFS; + int ret, num_cpus = 0; + struct affine_test_data *data, *drainer = NULL; + + pr_info("bman_test_thresh: start\n"); + + /* allocate a BPID and seed it */ + pool_nocb = bman_new_pool(¶ms_nocb); + BUG_ON(!pool_nocb); + while (loop--) { + struct bm_buffer buf; + bm_buffer_set64(&buf, 0x0badbeef + loop); + ret = bman_release(pool_nocb, &buf, 1, + BMAN_RELEASE_FLAG_WAIT); + BUG_ON(ret); + } + while (!bman_rcr_is_empty()) + cpu_relax(); + pr_info("bman_test_thresh: buffers are in\n"); + + /* create threads and wait for them to create pools */ + params_cb.bpid = bman_get_params(pool_nocb)->bpid; + for_each_cpu(loop, cpu_online_mask) { + data = start_affine_test(loop, drainer ? 0 : 1); + BUG_ON(!data); + if (!drainer) + drainer = data; + num_cpus++; + wait_for_completion(&data->wakeparent); + } + + /* signal the drainer to start draining */ + complete(&drainer->wakethread); + wait_for_completion(&drainer->wakeparent); + init_completion(&drainer->wakeparent); + + /* tear down */ + list_for_each_entry_safe(data, drainer, &threads, node) { + complete(&data->wakethread); + ret = kthread_stop(data->t); + BUG_ON(ret); + list_del(&data->node); + /* check that we get the expected callbacks (and no others) */ + BUG_ON(data->num_enter != 1); + BUG_ON(data->num_exit != 0); + kfree(data); + } + bman_free_pool(pool_nocb); + + pr_info("bman_test_thresh: done\n"); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_driver.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_driver.c @@ -0,0 +1,541 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "qman_private.h" + +/* Global variable containing revision id (even on non-control plane systems + * where CCSR isn't available) */ +u16 qman_ip_rev; +EXPORT_SYMBOL(qman_ip_rev); + +/* size of the fqd region in bytes */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +static u32 fqd_size = (PAGE_SIZE << CONFIG_FSL_QMAN_FQD_SZ); +#endif + +/*****************/ +/* Portal driver */ +/*****************/ + +static struct dpa_uio_class qman_uio = { + .list = LIST_HEAD_INIT(qman_uio.list), + .dev_prefix = "qman-uio-" +}; +const struct dpa_uio_class *dpa_uio_qman(void) +{ + return &qman_uio; +} +EXPORT_SYMBOL(dpa_uio_qman); + +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX +/* Handlers for NULL portal callbacks (ie. where the contextB field, normally + * pointing to the corresponding FQ object, is NULL). */ +static enum qman_cb_dqrr_result null_cb_dqrr(struct qman_portal *qm, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr) +{ + pr_warning("Ignoring unowned DQRR frame on portal %p.\n", qm); + return qman_cb_dqrr_consume; +} +static void null_cb_mr(struct qman_portal *qm, struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + pr_warning("Ignoring unowned MR msg on portal %p, verb 0x%02x.\n", + qm, msg->verb); +} +static const struct qman_fq_cb null_cb = { + .dqrr = null_cb_dqrr, + .ern = null_cb_mr, + .dc_ern = null_cb_mr, + .fqs = null_cb_mr +}; +#endif + +#ifdef CONFIG_FSL_QMAN_PORTAL +/* This structure carries parameters from the device-tree handling code that + * wants to set up a portal for use on 1 or more CPUs, and each temporary thread + * created to run on those CPUs. The 'portal' member is the return value. */ +struct affine_portal_data { + struct completion done; + const struct qm_portal_config *pconfig; + struct qman_portal *redirect; + int recovery_mode; + struct qman_portal *portal; +}; + +/* This function is called in a temporary thread for each CPU, to initialise the + * "affine" portal that the CPU should use. The thread is created and run from + * the init_affine_portal() bootstrapper. If the CPU has not been assigned its + * own portal, "redirect" will be non-NULL indicating it should share another + * CPU's portal (it becomes a "slave"). */ +static __init int thread_init_affine_portal(void *__data) +{ + struct affine_portal_data *data = __data; + const struct qm_portal_config *pconfig = data->pconfig; + if (data->redirect) + data->portal = qman_create_affine_slave(data->redirect); + else { + /* TODO: cgrs ?? */ + data->portal = qman_create_affine_portal(pconfig, NULL, +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX + &null_cb, +#endif + data->recovery_mode); + if (data->portal) { + u32 irq_sources = 0; + /* default: enable all (available) pool channels */ + qman_static_dequeue_add(~0); + /* Determine what should be interrupt-vs-poll driven */ +#ifdef CONFIG_FSL_DPA_PIRQ_SLOW + irq_sources |= QM_PIRQ_EQCI | QM_PIRQ_EQRI | + QM_PIRQ_MRI | QM_PIRQ_CSCI; +#endif +#ifdef CONFIG_FSL_DPA_PIRQ_FAST + irq_sources |= QM_PIRQ_DQRI; +#endif + qman_irqsource_add(irq_sources); + } + } + complete(&data->done); + return 0; +} + +/* This function is just a bootstrap for running thread_init_affine_portal() on + * a given CPU. The parameters are passed in via the (void*) thread-arg (and + * results are received back) using the affine_portal_data struct. */ +static __init struct qman_portal *init_affine_portal( + const struct qm_portal_config *pconfig, + int cpu, struct qman_portal *redirect, + int recovery_mode) +{ + struct affine_portal_data data = { + .done = COMPLETION_INITIALIZER_ONSTACK(data.done), + .pconfig = pconfig, + .redirect = redirect, + .recovery_mode = recovery_mode, + .portal = NULL + }; + struct task_struct *k = kthread_create(thread_init_affine_portal, &data, + "qman_affine%d", cpu); + int ret; + if (IS_ERR(k)) { + pr_err("Failed to init %sQman affine portal for cpu %d\n", + redirect ? "(slave) " : "", cpu); + return NULL; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&data.done); + ret = kthread_stop(k); + if (ret) { + pr_err("Qman portal initialisation failed, cpu %d, code %d\n", + cpu, ret); + return NULL; + } + if (data.portal) + pr_info("Qman portal %sinitialised, cpu %d\n", + redirect ? "(slave) " : + pconfig->public_cfg.is_shared ? "(shared) " : "", cpu); + return data.portal; +} +#endif + +/* Parses the device-tree node, extracts the configuration, and if appropriate + * initialises the portal for use on one or more CPUs. */ +static __init struct qm_portal_config *fsl_qman_portal_init( + struct device_node *node) +{ + struct qm_portal_config *pcfg; + const u32 *index, *channel; + const phandle *ph; + struct device_node *tmp_node; + int irq, ret, numpools; + u16 ip_rev = 0; + + pcfg = kmalloc(sizeof(*pcfg), GFP_KERNEL); + if (!pcfg) { + pr_err("can't allocate portal config"); + return NULL; + } + + if (of_device_is_compatible(node, "fsl,qman-portal-1.0")) + ip_rev = QMAN_REV10; + else if (of_device_is_compatible(node, "fsl,qman-portal-1.1")) + ip_rev = QMAN_REV11; + else if (of_device_is_compatible(node, "fsl,qman-portal-1.2")) + ip_rev = QMAN_REV12; + else if (of_device_is_compatible(node, "fsl,qman-portal-2.0")) + ip_rev = QMAN_REV20; + + if (!qman_ip_rev) { + if (ip_rev) + qman_ip_rev = ip_rev; + else { + pr_warning("unknown Qman version, default to rev1.1\n"); + qman_ip_rev = QMAN_REV11; + } + } else if (ip_rev && (qman_ip_rev != ip_rev)) + pr_warning("Revision=0x%04x, but portal '%s' has 0x%04x\n", + qman_ip_rev, node->full_name, ip_rev); + + ret = of_address_to_resource(node, QM_ADDR_CE, + &pcfg->addr_phys[QM_ADDR_CE]); + if (ret) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "reg::CE"); + goto err; + } + ret = of_address_to_resource(node, QM_ADDR_CI, + &pcfg->addr_phys[QM_ADDR_CI]); + if (ret) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "reg::CI"); + goto err; + } + index = of_get_property(node, "cell-index", &ret); + if (!index || (ret != 4)) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "cell-index"); + goto err; + } + channel = of_get_property(node, "fsl,qman-channel-id", &ret); + if (!channel || (ret != 4)) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "fsl,qman-channel-id"); + goto err; + } + if (*channel != (*index + qm_channel_swportal0)) + pr_err("Warning: node %s has mismatched %s and %s\n", + node->full_name, "cell-index", "fsl,qman-channel-id"); + pcfg->public_cfg.channel = *channel; + /* Parse cpu associations for this portal. This involves dereferencing + * to the cpu device-tree nodes, but it also ensures we only try to work + * with CPUs that exist. (Eg. under a hypervisor.) */ + ph = of_get_property(node, "cpu-handle", &ret); + if (ph) { + if (ret != sizeof(phandle)) { + pr_err("Malformed %s property '%s'\n", node->full_name, + "cpu-handle"); + return NULL; + } + ret = check_cpu_phandle(*ph); + if (ret < 0) + return NULL; + pcfg->public_cfg.cpu = ret; + } else + pcfg->public_cfg.cpu = -1; + + ph = of_get_property(node, "fsl,qman-pool-channels", &ret); + if (ph && (ret % sizeof(phandle))) { + pr_err("Malformed %s property '%s'\n", node->full_name, + "fsl,qman-pool-channels"); + goto err; + } + numpools = ph ? (ret / sizeof(phandle)) : 0; + irq = irq_of_parse_and_map(node, 0); + if (irq == NO_IRQ) { + pr_err("Can't get %s property '%s'\n", node->full_name, + "interrupts"); + goto err; + } + pcfg->public_cfg.irq = irq; + pcfg->public_cfg.index = *index; + if (of_get_property(node, "fsl,hv-dma-handle", &ret)) + pcfg->public_cfg.has_stashing = 1; + else if (qman_ip_rev == QMAN_REV20) + pcfg->public_cfg.has_stashing = 1; + else +#ifdef CONFIG_FSL_PAMU + pcfg->public_cfg.has_stashing = 1; +#else + pcfg->public_cfg.has_stashing = 0; +#endif + pcfg->public_cfg.pools = 0; + pcfg->node = node; +#ifdef CONFIG_FSL_QMAN_CONFIG + /* We need the same LIODN offset for all portals */ + qman_liodn_fixup(pcfg->public_cfg.channel); +#endif + + if (of_get_property(node, "fsl,usdpaa-portal", &ret)) { + struct dpa_uio_portal *u = kmalloc(sizeof(*u), GFP_KERNEL); + if (!u) + goto err; + u->type = dpa_uio_portal_qman; + u->qm_cfg = pcfg; + list_add_tail(&u->node, &qman_uio.list); + /* Return NULL, otherwise the kernel may share it on CPUs that + * don't have their own portals, which would be ... *bad*. */ + return NULL; + } + + /* Map the portals now we know they aren't for UIO (the UIO code doesn't + * need the CE mapping, and so will do its own CI-only mapping). */ + pcfg->addr_virt[QM_ADDR_CE] = ioremap_prot( + pcfg->addr_phys[QM_ADDR_CE].start, + resource_size(&pcfg->addr_phys[QM_ADDR_CE]), + 0); + pcfg->addr_virt[QM_ADDR_CI] = ioremap_prot( + pcfg->addr_phys[QM_ADDR_CI].start, + resource_size(&pcfg->addr_phys[QM_ADDR_CI]), + _PAGE_GUARDED | _PAGE_NO_CACHE); + + while (numpools--) { + for_each_compatible_node(tmp_node, NULL, + "fsl,qman-pool-channel") { + phandle *lph = (phandle *)of_get_property(tmp_node, + "linux,phandle", &ret); + if (*lph == *ph) { + u32 *index = (u32 *)of_get_property(tmp_node, + "cell-index", &ret); + pcfg->public_cfg.pools |= + QM_SDQCR_CHANNELS_POOL(*index); + } + } + ph++; + } + if (pcfg->public_cfg.pools == 0) + panic("Unrecoverable error linking pool channels"); + + return pcfg; +err: + kfree(pcfg); + return NULL; +} + +static void __init fsl_qman_portal_destroy(struct qm_portal_config *pcfg) +{ + iounmap(pcfg->addr_virt[QM_ADDR_CE]); + iounmap(pcfg->addr_virt[QM_ADDR_CI]); + kfree(pcfg); +} + +static __init int fsl_fqid_range_init(struct device_node *node, + int recovery_mode) +{ + int ret; + u32 *range = (u32 *)of_get_property(node, "fsl,fqid-range", &ret); + if (!range) { + pr_err("No 'fsl,fqid-range' property in node %s\n", + node->full_name); + return -EINVAL; + } + if (ret != 8) { + pr_err("'fsl,fqid-range' is not a 2-cell range in node %s\n", + node->full_name); + return -EINVAL; + } + qman_release_fqid_range(range[0], range[1]); +#ifdef CONFIG_FSL_QMAN_PORTAL + /* If in recovery mode *and* we are using a private FQ allocation range, + * then automatically clean up all FQs in that range so we can + * automatically exit recovery mode too. */ + if (recovery_mode) { + u32 fqid; + for (fqid = range[0]; fqid < (range[0] + range[1]); fqid++) { + ret = qman_recovery_cleanup_fq(fqid); + if (ret) { + pr_err("Failed to recovery FQID %d\n", fqid); + return ret; + } + } + } +#else + BUG_ON(recovery_mode); +#endif + pr_info("Qman: FQID allocator includes range %d:%d%s\n", + range[0], range[1], recovery_mode ? " (recovered)" : ""); + return 0; +} + +#ifdef CONFIG_FSL_QMAN_PORTAL +static __init int __leave_recovery(void *__data) +{ + struct completion *done = __data; + qman_recovery_exit_local(); + complete(done); + return 0; +} + +int qman_recovery_exit(void) +{ + struct completion done = COMPLETION_INITIALIZER_ONSTACK(done); + unsigned int cpu; + + for_each_cpu(cpu, qman_affine_cpus()) { + struct task_struct *k = kthread_create(__leave_recovery, &done, + "qman_recovery"); + int ret; + if (IS_ERR(k)) { + pr_err("Thread failure (recovery) on cpu %d\n", cpu); + return -ENOMEM; + } + kthread_bind(k, cpu); + wake_up_process(k); + wait_for_completion(&done); + ret = kthread_stop(k); + if (ret) { + pr_err("Failed to exit recovery on cpu %d\n", cpu); + return ret; + } + pr_info("Qman portal exited recovery, cpu %d\n", cpu); + } + return 0; +} +EXPORT_SYMBOL(qman_recovery_exit); +#endif + +/***************/ +/* Driver load */ +/***************/ + +static __init int qman_init(void) +{ +#ifdef CONFIG_FSL_QMAN_PORTAL + struct qman_cgr cgr; + struct cpumask primary_cpus = *cpu_none_mask; + struct cpumask slave_cpus = *cpu_online_mask; + struct qman_portal *sharing_portal = NULL; + int sharing_cpu = -1; +#endif + struct device_node *dn; + struct qm_portal_config *pcfg; + int ret, use_bpid0 = 1, recovery_mode = 0; + LIST_HEAD(cfg_list); + + for_each_compatible_node(dn, NULL, "fsl,qman") { + if (!qman_init_error_int(dn)) + pr_info("Qman err interrupt handler present\n"); + else + pr_err("Qman err interrupt handler missing\n"); + } +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + ret = qman_setup_fq_lookup_table(fqd_size/64); + if (ret) + return ret; +#endif +#ifdef CONFIG_FSL_QMAN_PORTAL + if (fsl_dpa_should_recover()) + recovery_mode = 1; + for_each_compatible_node(dn, NULL, "fsl,qman-portal") { + pcfg = fsl_qman_portal_init(dn); + if (pcfg) { + if (pcfg->public_cfg.cpu >= 0) { + cpumask_set_cpu(pcfg->public_cfg.cpu, + &primary_cpus); + list_add(&pcfg->list, &cfg_list); + } else + fsl_qman_portal_destroy(pcfg); + } + } + /* only consider "online" CPUs */ + cpumask_and(&primary_cpus, &primary_cpus, cpu_online_mask); + if (cpumask_empty(&primary_cpus)) + /* No portals, we're done */ + return 0; + if (!cpumask_subset(cpu_online_mask, &primary_cpus)) { + /* Need to do some sharing. In lieu of anything more scientific + * (or configurable), we pick the last-most CPU that has a + * portal and share that one. */ + int next = cpumask_first(&primary_cpus); + while (next < nr_cpu_ids) { + sharing_cpu = next; + next = cpumask_next(next, &primary_cpus); + } + } + /* Parsing is done and sharing decisions are made, now initialise the + * portals and determine which "slave" CPUs are left over. */ + list_for_each_entry(pcfg, &cfg_list, list) { + struct qman_portal *p; + int is_shared = (!sharing_portal && (sharing_cpu >= 0) && + (pcfg->public_cfg.cpu == sharing_cpu)); + pcfg->public_cfg.is_shared = is_shared; + /* If it's not mapped to a CPU, or another portal is already + * initialised to the same CPU, skip this portal. */ + if (pcfg->public_cfg.cpu < 0 || !cpumask_test_cpu( + pcfg->public_cfg.cpu, &slave_cpus)) + continue; + p = init_affine_portal(pcfg, pcfg->public_cfg.cpu, NULL, + recovery_mode); + if (p) { + if (is_shared) + sharing_portal = p; + cpumask_clear_cpu(pcfg->public_cfg.cpu, &slave_cpus); + } + } + if (sharing_portal) { + int loop; + for_each_cpu(loop, &slave_cpus) { + struct qman_portal *p = init_affine_portal(NULL, loop, + sharing_portal, recovery_mode); + if (!p) + pr_err("Failed slave Qman portal for cpu %d\n", + loop); + } + } +#else + for_each_compatible_node(dn, NULL, "fsl,qman-portal") { + pcfg = fsl_qman_portal_init(dn); + if (pcfg) + /* No kernel portal support, so if USDPAA didn't consume + * the portal, we've no other use for it. */ + fsl_qman_portal_destroy(pcfg); + } +#endif + for_each_compatible_node(dn, NULL, "fsl,fqid-range") { + use_bpid0 = 0; + ret = fsl_fqid_range_init(dn, recovery_mode); + if (ret) + return ret; + } +#ifdef CONFIG_FSL_QMAN_PORTAL + /* If using private FQ allocation, exit recovery mode automatically (ie. + * after automatic recovery) */ + if (recovery_mode && !use_bpid0) { + ret = qman_recovery_exit(); + if (ret) + return ret; + } + for (cgr.cgrid = 0; cgr.cgrid < __CGR_NUM; cgr.cgrid++) { + /* This is to ensure h/w-internal CGR memory is zeroed out. Note + * that we do this for all conceivable CGRIDs, not all of which + * are necessarily available on the underlying hardware version. + * We ignore any errors for this reason. */ + qman_modify_cgr(&cgr, QMAN_CGR_FLAG_USE_INIT, NULL); + } +#endif + ret = fqalloc_init(use_bpid0); + if (ret) + return ret; + pr_info("Qman portals initialised\n"); + return 0; +} +subsys_initcall(qman_init); --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/dpa_uio.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/dpa_uio.c @@ -0,0 +1,231 @@ +/* Copyright 2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_private.h" +#include "qman_private.h" + +static const char dpa_uio_version[] = "USDPAA UIO portal driver v0.2"; + +static LIST_HEAD(uio_portal_list); + +struct dpa_uio_info { + atomic_t ref; /* exclusive, only one open() at a time */ + struct uio_info uio; + void *addr_ci; + char name[16]; /* big enough for "qman-uio-xx" */ + struct platform_device *pdev; + struct list_head node; +}; + +static int dpa_uio_open(struct uio_info *info, struct inode *inode) +{ + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + if (!atomic_dec_and_test(&i->ref)) { + atomic_inc(&i->ref); + return -EBUSY; + } + return 0; +} + +static int dpa_uio_release(struct uio_info *info, struct inode *inode) +{ + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + atomic_inc(&i->ref); + return 0; +} + +static int dpa_uio_mmap(struct uio_info *info, struct vm_area_struct *vma) +{ + struct uio_mem *mem; + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + + if (vma->vm_pgoff == 0) { + /* CENA */ + mem = &i->uio.mem[0]; + vma->vm_page_prot &= + ~(_PAGE_GUARDED | _PAGE_NO_CACHE | _PAGE_COHERENT); + } else if (vma->vm_pgoff == 1) { + /* CINH */ + mem = &i->uio.mem[1]; + vma->vm_page_prot |= _PAGE_GUARDED | _PAGE_NO_CACHE; + } else { + pr_err("%s: unknown mmap offset %d, rejecting\n", + i->name, (int)vma->vm_pgoff); + return -EINVAL; + } + if ((vma->vm_end - vma->vm_start) != mem->size) { + pr_err("%s: invalid mmap() size %d, expect %d\n", + i->name, (int)(vma->vm_end - vma->vm_start), + (int)mem->size); + return -EINVAL; + } + /* FIXME: UIO appears not to support sizeof(phys_addr_t) > sizeof(void*) + * as mem->addr is 32-bit. Also, it would have been more natural (and in + * keeping with UIO's design intent) to have used the UIO_MEM_PHYS type + * for our two memory regions, and to rely on UIO's own mmap() handler + * (by not declaring our own). Unfortunately UIO does not allow any + * specification of pgprots and assumes cache-inhibited mappings for + * anything physical (see drivers/uio/uio.c, eg. uio_mmap_physical()). + * So UIO could use a couple of improvements as it is not saving us much + * on the kernel nor the user side. The first would be to use PFN + * instead of a raw base address in the uio_mem structs (same reason as + * everywhere else, this covers 4096 times as much address space, and + * why waste lower bits given it has to be page-aligned anyway?). The + * second is to add a pgprot field to uio_mem to be used with _PHYS + * mappings. (Or use a new _PHYS_PGPROT type, for backwards + * compatibility?) */ + /* Normally, we'd ">>PAGE_SHIFT" the mem->addr value here, but due to + * the 36-bit issue, it is already stored as a PFN. */ + return io_remap_pfn_range(vma, vma->vm_start, mem->addr, mem->size, + vma->vm_page_prot); +} + +static irqreturn_t dpa_uio_irq_handler(int irq, struct uio_info *info) +{ + struct dpa_uio_info *i = container_of(info, struct dpa_uio_info, uio); + /* This is the only code outside the regular portal driver that + * manipulates any portal register, so rather than breaking that + * encapsulation I am simply hard-coding the offset to the inhibit + * register here. */ + out_be32(i->addr_ci + 0xe0c, ~(u32)0); + return IRQ_HANDLED; +} + +static void __init dpa_uio_portal_init(struct dpa_uio_portal *p, + const struct dpa_uio_class *c) +{ + struct dpa_uio_info *info; + const struct resource *res; + u32 index; + int irq, ret; + + /* allocate 'info' */ + info = kzalloc(sizeof(*info), GFP_KERNEL); + if (!info) + return; + atomic_set(&info->ref, 1); + if (p->type == dpa_uio_portal_bman) { + res = &p->bm_cfg->addr_phys[0]; + index = p->bm_cfg->public_cfg.index; + irq = p->bm_cfg->public_cfg.irq; + } else { + res = &p->qm_cfg->addr_phys[0]; + index = p->qm_cfg->public_cfg.index; + irq = p->qm_cfg->public_cfg.irq; + } + /* We need to map the cache-inhibited region in the kernel for + * interrupt-handling purposes. */ + info->addr_ci = ioremap_prot(res[BM_ADDR_CI].start, + resource_size(&res[BM_ADDR_CI]), + _PAGE_GUARDED | _PAGE_NO_CACHE); + /* Name the UIO device according to the cell-index. It's supposed to be + * unique for each device class (Qman/Bman), and is also a convenient + * way for user-space to find the UIO device that corresponds to a given + * portal device-tree node. */ + sprintf(info->name, "%s%x", c->dev_prefix, index); + info->pdev = platform_device_alloc(info->name, -1); + if (!info->pdev) { + iounmap(info->addr_ci); + kfree(info); + pr_err("dpa_uio_portal: platform_device_alloc() failed\n"); + return; + } + ret = platform_device_add(info->pdev); + if (ret) { + platform_device_put(info->pdev); + iounmap(info->addr_ci); + kfree(info); + pr_err("dpa_uio_portal: platform_device_add() failed\n"); + return; + } + info->uio.name = info->name; + info->uio.version = dpa_uio_version; + /* Work around the 36-bit UIO issue by bit-shifting the addresses */ + info->uio.mem[BM_ADDR_CE].name = "cena"; + info->uio.mem[BM_ADDR_CE].addr = res[BM_ADDR_CE].start >> PAGE_SHIFT; + info->uio.mem[BM_ADDR_CE].size = resource_size(&res[BM_ADDR_CE]); + info->uio.mem[BM_ADDR_CI].name = "cinh"; + info->uio.mem[BM_ADDR_CI].addr = res[BM_ADDR_CI].start >> PAGE_SHIFT; + info->uio.mem[BM_ADDR_CI].size = resource_size(&res[BM_ADDR_CI]); + info->uio.irq = irq; + info->uio.handler = dpa_uio_irq_handler; + info->uio.mmap = dpa_uio_mmap; + info->uio.open = dpa_uio_open; + info->uio.release = dpa_uio_release; + ret = uio_register_device(&info->pdev->dev, &info->uio); + if (ret) { + platform_device_del(info->pdev); + platform_device_put(info->pdev); + iounmap(info->addr_ci); + kfree(info); + pr_err("dpa_uio_portal: UIO registration failed\n"); + return; + } + list_add_tail(&info->node, &uio_portal_list); + pr_info("USDPAA portal initialised, %s\n", info->name); +} + +static int __init dpa_uio_init(void) +{ + const struct dpa_uio_class *classes[3], **c = classes; + classes[0] = dpa_uio_bman(); + classes[1] = dpa_uio_qman(); + classes[2] = NULL; + while (*c) { + struct dpa_uio_portal *p; + list_for_each_entry(p, &(*c)->list, node) + dpa_uio_portal_init(p, *c); + c++; + } + pr_info("USDPAA portal layer loaded\n"); + return 0; +} + +static void __exit dpa_uio_exit(void) +{ + struct dpa_uio_info *info, *tmp; + list_for_each_entry_safe(info, tmp, &uio_portal_list, node) { + list_del(&info->node); + uio_unregister_device(&info->uio); + platform_device_del(info->pdev); + platform_device_put(info->pdev); + iounmap(info->addr_ci); + pr_info("USDPAA portal removed, %s\n", info->name); + kfree(info); + } + pr_info("USDPAA portal layer unloaded\n"); +} + + +module_init(dpa_uio_init) +module_exit(dpa_uio_exit) +MODULE_LICENSE("GPL"); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/qman_debugfs.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/qman_debugfs.c @@ -0,0 +1,1311 @@ +/* Copyright 2010-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "qman_private.h" + +#define MAX_FQID (0x00ffffff) +#define QM_FQD_BLOCK_SIZE 64 +#define QM_FQD_AR (0xC10) + +static u32 fqid_max; +static u64 qman_ccsr_start; +static u64 qman_ccsr_size; + +static const char *state_txt[] = { + "Out of Service", + "Retired", + "Tentatively Scheduled", + "Truly Scheduled", + "Parked", + "Active, Active Held or Held Suspended", + "Unknown State 6", + "Unknown State 7", + NULL, +}; + +static const u8 fqd_states[] = { + QM_MCR_NP_STATE_OOS, QM_MCR_NP_STATE_RETIRED, QM_MCR_NP_STATE_TEN_SCHED, + QM_MCR_NP_STATE_TRU_SCHED, QM_MCR_NP_STATE_PARKED, + QM_MCR_NP_STATE_ACTIVE}; +static const u32 fqd_states_count = sizeof(fqd_states)/sizeof(u8); + +struct mask_to_text { + u16 mask; + const char *txt; +}; + +struct mask_filter_s { + u16 mask; + u8 filter; +}; + +static const struct mask_filter_s mask_filter[] = { + {QM_FQCTRL_PREFERINCACHE, 0}, + {QM_FQCTRL_PREFERINCACHE, 1}, + {QM_FQCTRL_HOLDACTIVE, 0}, + {QM_FQCTRL_HOLDACTIVE, 1}, + {QM_FQCTRL_AVOIDBLOCK, 0}, + {QM_FQCTRL_AVOIDBLOCK, 1}, + {QM_FQCTRL_FORCESFDR, 0}, + {QM_FQCTRL_FORCESFDR, 1}, + {QM_FQCTRL_CPCSTASH, 0}, + {QM_FQCTRL_CPCSTASH, 1}, + {QM_FQCTRL_CTXASTASHING, 0}, + {QM_FQCTRL_CTXASTASHING, 1}, + {QM_FQCTRL_ORP, 0}, + {QM_FQCTRL_ORP, 1}, + {QM_FQCTRL_TDE, 0}, + {QM_FQCTRL_TDE, 1}, + {QM_FQCTRL_CGE, 0}, + {QM_FQCTRL_CGE, 1} +}; +static const u32 mask_filter_count = + sizeof(mask_filter)/sizeof(struct mask_filter_s); + +static const struct mask_to_text fq_ctrl_text_list[] = { + { + .mask = QM_FQCTRL_PREFERINCACHE, + .txt = "Prefer in cache", + }, + { + .mask = QM_FQCTRL_HOLDACTIVE, + .txt = "Hold active in portal", + }, + { + .mask = QM_FQCTRL_AVOIDBLOCK, + .txt = "Avoid Blocking", + }, + { + .mask = QM_FQCTRL_FORCESFDR, + .txt = "High-priority SFDRs", + }, + { + .mask = QM_FQCTRL_CPCSTASH, + .txt = "CPC Stash Enable", + }, + { + .mask = QM_FQCTRL_CTXASTASHING, + .txt = "Context-A stashing", + }, + { + .mask = QM_FQCTRL_ORP, + .txt = "ORP Enable", + }, + { + .mask = QM_FQCTRL_TDE, + .txt = "Tail-Drop Enable", + }, + { + .mask = QM_FQCTRL_CGE, + .txt = "Congestion Group Enable", + }, + { + .mask = 0, + .txt = NULL, + } +}; + +static const char *get_fqd_ctrl_text(u16 mask) +{ + int i = 0; + + while (fq_ctrl_text_list[i].txt != NULL) { + if (fq_ctrl_text_list[i].mask == mask) + return fq_ctrl_text_list[i].txt; + i++; + } + return NULL; +} + +static const struct mask_to_text stashing_text_list[] = { + { + .mask = QM_STASHING_EXCL_CTX, + .txt = "FQ Ctx Stash" + }, + { + .mask = QM_STASHING_EXCL_DATA, + .txt = "Frame Data Stash", + }, + { + .mask = QM_STASHING_EXCL_ANNOTATION, + .txt = "Frame Annotation Stash", + }, + { + .mask = 0, + .txt = NULL, + }, +}; + +static int user_input_convert(const char __user *user_buf, size_t count, + unsigned long *val) +{ + char buf[12]; + + if (count > sizeof(buf) - 1) + return -EINVAL; + if (copy_from_user(buf, user_buf, count)) + return -EFAULT; + buf[count] = '\0'; + if (strict_strtoul(buf, 0, val)) + return -EINVAL; + return 0; +} + +struct line_buffer_fq { + u32 buf[8]; + u32 buf_cnt; + int line_cnt; +}; + +static void add_to_line_buffer(struct line_buffer_fq *line_buf, u32 fqid, + struct seq_file *file) +{ + line_buf->buf[line_buf->buf_cnt] = fqid; + line_buf->buf_cnt++; + if (line_buf->buf_cnt == 8) { + /* Buffer is full, flush it */ + if (line_buf->line_cnt != 0) + seq_printf(file, ",\n"); + seq_printf(file, "0x%06x,0x%06x,0x%06x,0x%06x,0x%06x," + "0x%06x,0x%06x,0x%06x", + line_buf->buf[0], line_buf->buf[1], line_buf->buf[2], + line_buf->buf[3], line_buf->buf[4], line_buf->buf[5], + line_buf->buf[6], line_buf->buf[7]); + line_buf->buf_cnt = 0; + line_buf->line_cnt++; + } +} + +static void flush_line_buffer(struct line_buffer_fq *line_buf, + struct seq_file *file) +{ + if (line_buf->buf_cnt) { + int y = 0; + if (line_buf->line_cnt != 0) + seq_printf(file, ",\n"); + while (y != line_buf->buf_cnt) { + if (y+1 == line_buf->buf_cnt) + seq_printf(file, "0x%06x", line_buf->buf[y]); + else + seq_printf(file, "0x%06x,", line_buf->buf[y]); + y++; + } + line_buf->line_cnt++; + } + if (line_buf->line_cnt) + seq_printf(file, "\n"); +} + +static struct dentry *dfs_root; /* debugfs root directory */ + +/******************************************************************************* + * Query Frame Queue Non Programmable Fields + ******************************************************************************/ +struct query_fq_np_fields_data_s { + u32 fqid; +}; +static struct query_fq_np_fields_data_s query_fq_np_fields_data = { + .fqid = 1, +}; + +static int query_fq_np_fields_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_queryfq_np np; + struct qman_fq fq; + + fq.fqid = query_fq_np_fields_data.fqid; + ret = qman_query_fq_np(&fq, &np); + if (ret) + return ret; + /* Print state */ + seq_printf(file, "Query FQ Non Programmable Fields Result fqid 0x%x\n", + fq.fqid); + seq_printf(file, " force eligible pending: %s\n", + (np.state & QM_MCR_NP_STATE_FE) ? "yes" : "no"); + seq_printf(file, " retirement pending: %s\n", + (np.state & QM_MCR_NP_STATE_R) ? "yes" : "no"); + seq_printf(file, " state: %s\n", + state_txt[np.state & QM_MCR_NP_STATE_MASK]); + seq_printf(file, " fq_link: 0x%x\n", np.fqd_link); + seq_printf(file, " odp_seq: %u\n", np.odp_seq); + seq_printf(file, " orp_nesn: %u\n", np.orp_nesn); + seq_printf(file, " orp_ea_hseq: %u\n", np.orp_ea_hseq); + seq_printf(file, " orp_ea_tseq: %u\n", np.orp_ea_tseq); + seq_printf(file, " orp_ea_hptr: 0x%x\n", np.orp_ea_hptr); + seq_printf(file, " orp_ea_tptr: 0x%x\n", np.orp_ea_tptr); + seq_printf(file, " pfdr_hptr: 0x%x\n", np.pfdr_hptr); + seq_printf(file, " pfdr_tptr: 0x%x\n", np.pfdr_tptr); + seq_printf(file, " is: ics_surp contains a %s\n", + (np.is) ? "deficit" : "surplus"); + seq_printf(file, " ics_surp: %u\n", np.ics_surp); + seq_printf(file, " byte_cnt: %u\n", np.byte_cnt); + seq_printf(file, " frm_cnt: %u\n", np.frm_cnt); + seq_printf(file, " ra1_sfdr: 0x%x\n", np.ra1_sfdr); + seq_printf(file, " ra2_sfdr: 0x%x\n", np.ra2_sfdr); + seq_printf(file, " od1_sfdr: 0x%x\n", np.od1_sfdr); + seq_printf(file, " od2_sfdr: 0x%x\n", np.od2_sfdr); + seq_printf(file, " od3_sfdr: 0x%x\n", np.od3_sfdr); + return 0; +} + +static int query_fq_np_fields_open(struct inode *inode, + struct file *file) +{ + return single_open(file, query_fq_np_fields_show, NULL); +} + +static ssize_t query_fq_np_fields_write(struct file *f, + const char __user *buf, size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > MAX_FQID) + return -EINVAL; + query_fq_np_fields_data.fqid = (u32)val; + return count; +} + +static const struct file_operations query_fq_np_fields_fops = { + .owner = THIS_MODULE, + .open = query_fq_np_fields_open, + .read = seq_read, + .write = query_fq_np_fields_write, + .release = single_release, +}; + +/******************************************************************************* + * Frame Queue Programmable Fields + ******************************************************************************/ +struct query_fq_fields_data_s { + u32 fqid; +}; + +static struct query_fq_fields_data_s query_fq_fields_data = { + .fqid = 1, +}; + +static int query_fq_fields_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_fqd fqd; + struct qman_fq fq; + int i = 0; + + memset(&fqd, 0, sizeof(struct qm_fqd)); + fq.fqid = query_fq_fields_data.fqid; + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + seq_printf(file, "Query FQ Programmable Fields Result fqid 0x%x\n", + fq.fqid); + seq_printf(file, " orprws: %u\n", fqd.orprws); + seq_printf(file, " oa: %u\n", fqd.oa); + seq_printf(file, " olws: %u\n", fqd.olws); + + seq_printf(file, " cgid: %u\n", fqd.cgid); + + if ((fqd.fq_ctrl & QM_FQCTRL_MASK) == 0) + seq_printf(file, " fq_ctrl: None\n"); + else { + i = 0; + seq_printf(file, " fq_ctrl:\n"); + while (fq_ctrl_text_list[i].txt != NULL) { + if ((fqd.fq_ctrl & QM_FQCTRL_MASK) & + fq_ctrl_text_list[i].mask) + seq_printf(file, " %s\n", + fq_ctrl_text_list[i].txt); + i++; + } + } + seq_printf(file, " dest_channel: %u\n", fqd.dest.channel); + seq_printf(file, " dest_wq: %u\n", fqd.dest.wq); + seq_printf(file, " ics_cred: %u\n", fqd.ics_cred); + seq_printf(file, " td_mant: %u\n", fqd.td.mant); + seq_printf(file, " td_exp: %u\n", fqd.td.exp); + + seq_printf(file, " ctx_b: 0x%x\n", fqd.context_b); + + seq_printf(file, " ctx_a: 0x%llx\n", qm_fqd_stashing_get64(&fqd)); + /* Any stashing configured */ + if ((fqd.context_a.stashing.exclusive & 0x7) == 0) + seq_printf(file, " ctx_a_stash_exclusive: None\n"); + else { + seq_printf(file, " ctx_a_stash_exclusive:\n"); + i = 0; + while (stashing_text_list[i].txt != NULL) { + if ((fqd.fq_ctrl & 0x7) & stashing_text_list[i].mask) + seq_printf(file, " %s\n", + stashing_text_list[i].txt); + i++; + } + } + seq_printf(file, " ctx_a_stash_annotation_cl: %u\n", + fqd.context_a.stashing.annotation_cl); + seq_printf(file, " ctx_a_stash_data_cl: %u\n", + fqd.context_a.stashing.data_cl); + seq_printf(file, " ctx_a_stash_context_cl: %u\n", + fqd.context_a.stashing.context_cl); + return 0; +} + +static int query_fq_fields_open(struct inode *inode, + struct file *file) +{ + return single_open(file, query_fq_fields_show, NULL); +} + +static ssize_t query_fq_fields_write(struct file *f, + const char __user *buf, size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > MAX_FQID) + return -EINVAL; + query_fq_fields_data.fqid = (u32)val; + return count; +} + +static const struct file_operations query_fq_fields_fops = { + .owner = THIS_MODULE, + .open = query_fq_fields_open, + .read = seq_read, + .write = query_fq_fields_write, + .release = single_release, +}; + +/******************************************************************************* + * Query WQ lengths + ******************************************************************************/ +struct query_wq_lengths_data_s { + union { + u16 channel_wq; /* ignores wq (3 lsbits) */ + struct { + u16 id:13; /* enum qm_channel */ + u16 __reserved:3; + } __packed channel; + }; +}; +static struct query_wq_lengths_data_s query_wq_lengths_data; +static int query_wq_lengths_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_querywq wq; + int i; + + memset(&wq, 0, sizeof(struct qm_mcr_querywq)); + wq.channel.id = query_wq_lengths_data.channel.id; + ret = qman_query_wq(0, &wq); + if (ret) + return ret; + seq_printf(file, "Query Result For Channel: 0x%x\n", wq.channel.id); + for (i = 0; i < 8; i++) + /* mask out upper 4 bits since they are not part of length */ + seq_printf(file, " wq%d_len : %u\n", i, wq.wq_len[i] & 0x0fff); + return 0; +} + +static int query_wq_lengths_open(struct inode *inode, + struct file *file) +{ + return single_open(file, query_wq_lengths_show, NULL); +} + +static ssize_t query_wq_lengths_write(struct file *f, + const char __user *buf, size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xfff8) + return -EINVAL; + query_wq_lengths_data.channel.id = (u16)val; + return count; +} + +static const struct file_operations query_wq_lengths_fops = { + .owner = THIS_MODULE, + .open = query_wq_lengths_open, + .read = seq_read, + .write = query_wq_lengths_write, + .release = single_release, +}; + +/******************************************************************************* + * Query CGR + ******************************************************************************/ +struct query_cgr_s { + u8 cgid; +}; +static struct query_cgr_s query_cgr_data; + +static int query_cgr_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_querycgr cgrd; + struct qman_cgr cgr; + + memset(&cgr, 0, sizeof(struct qm_mcr_querycgr)); + cgr.cgrid = query_cgr_data.cgid; + ret = qman_query_cgr(&cgr, &cgrd); + if (ret) + return ret; + seq_printf(file, "Query CGR id 0x%x\n", cgr.cgrid); + seq_printf(file, " wr_parm_g MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + cgrd.cgr.wr_parm_g.MA, cgrd.cgr.wr_parm_g.Mn, + cgrd.cgr.wr_parm_g.SA, cgrd.cgr.wr_parm_g.Sn, + cgrd.cgr.wr_parm_g.Pn); + + seq_printf(file, " wr_parm_y MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + cgrd.cgr.wr_parm_y.MA, cgrd.cgr.wr_parm_y.Mn, + cgrd.cgr.wr_parm_y.SA, cgrd.cgr.wr_parm_y.Sn, + cgrd.cgr.wr_parm_y.Pn); + + seq_printf(file, " wr_parm_r MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + cgrd.cgr.wr_parm_r.MA, cgrd.cgr.wr_parm_r.Mn, + cgrd.cgr.wr_parm_r.SA, cgrd.cgr.wr_parm_r.Sn, + cgrd.cgr.wr_parm_r.Pn); + + seq_printf(file, " wr_en_g: %u, wr_en_y: %u, we_en_r: %u\n", + cgrd.cgr.wr_en_g, cgrd.cgr.wr_en_y, cgrd.cgr.wr_en_r); + + seq_printf(file, " cscn_en: %u\n", cgrd.cgr.cscn_en); + seq_printf(file, " cscn_targ: %u\n", cgrd.cgr.cscn_targ); + seq_printf(file, " cstd_en: %u\n", cgrd.cgr.cstd_en); + seq_printf(file, " cs: %u\n", cgrd.cgr.cs); + + seq_printf(file, " cs_thresh_TA: %u, cs_thresh_Tn: %u\n", + cgrd.cgr.cs_thres.TA, cgrd.cgr.cs_thres.Tn); + + if (qman_ip_rev != QMAN_REV10) { + seq_printf(file, " mode: %s\n", + (cgrd.cgr.mode & QMAN_CGR_MODE_FRAME) ? + "frame count" : "byte count"); + } + seq_printf(file, " i_bcnt: %llu\n", qm_mcr_querycgr_i_get64(&cgrd)); + seq_printf(file, " a_bcnt: %llu\n", qm_mcr_querycgr_a_get64(&cgrd)); + + return 0; +} + +static int query_cgr_open(struct inode *inode, struct file *file) +{ + return single_open(file, query_cgr_show, NULL); +} + +static ssize_t query_cgr_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xff) + return -EINVAL; + query_cgr_data.cgid = (u8)val; + return count; +} + +static const struct file_operations query_cgr_fops = { + .owner = THIS_MODULE, + .open = query_cgr_open, + .read = seq_read, + .write = query_cgr_write, + .release = single_release, +}; + +/******************************************************************************* + * Test Write CGR + ******************************************************************************/ +struct test_write_cgr_s { + u64 i_bcnt; + u8 cgid; +}; +static struct test_write_cgr_s test_write_cgr_data; + +static int testwrite_cgr_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_cgrtestwrite result; + struct qman_cgr cgr; + u64 i_bcnt; + + memset(&cgr, 0, sizeof(struct qman_cgr)); + memset(&result, 0, sizeof(struct qm_mcr_cgrtestwrite)); + cgr.cgrid = test_write_cgr_data.cgid; + i_bcnt = test_write_cgr_data.i_bcnt; + ret = qman_testwrite_cgr(&cgr, i_bcnt, &result); + if (ret) + return ret; + seq_printf(file, "CGR Test Write CGR id 0x%x\n", cgr.cgrid); + seq_printf(file, " wr_parm_g MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + result.cgr.wr_parm_g.MA, result.cgr.wr_parm_g.Mn, + result.cgr.wr_parm_g.SA, result.cgr.wr_parm_g.Sn, + result.cgr.wr_parm_g.Pn); + seq_printf(file, " wr_parm_y MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + result.cgr.wr_parm_y.MA, result.cgr.wr_parm_y.Mn, + result.cgr.wr_parm_y.SA, result.cgr.wr_parm_y.Sn, + result.cgr.wr_parm_y.Pn); + seq_printf(file, " wr_parm_r MA: %u, Mn: %u, SA: %u, Sn: %u, Pn: %u\n", + result.cgr.wr_parm_r.MA, result.cgr.wr_parm_r.Mn, + result.cgr.wr_parm_r.SA, result.cgr.wr_parm_r.Sn, + result.cgr.wr_parm_r.Pn); + seq_printf(file, " wr_en_g: %u, wr_en_y: %u, we_en_r: %u\n", + result.cgr.wr_en_g, result.cgr.wr_en_y, result.cgr.wr_en_r); + seq_printf(file, " cscn_en: %u\n", result.cgr.cscn_en); + seq_printf(file, " cscn_targ: %u\n", result.cgr.cscn_targ); + seq_printf(file, " cstd_en: %u\n", result.cgr.cstd_en); + seq_printf(file, " cs: %u\n", result.cgr.cs); + seq_printf(file, " cs_thresh_TA: %u, cs_thresh_Tn: %u\n", + result.cgr.cs_thres.TA, result.cgr.cs_thres.Tn); + + /* Add Mode for Si 2 */ + if (qman_ip_rev != QMAN_REV10) { + seq_printf(file, " mode: %s\n", + (result.cgr.mode & QMAN_CGR_MODE_FRAME) ? + "frame count" : "byte count"); + } + + seq_printf(file, " i_bcnt: %llu\n", + qm_mcr_cgrtestwrite_i_get64(&result)); + seq_printf(file, " a_bcnt: %llu\n", + qm_mcr_cgrtestwrite_a_get64(&result)); + seq_printf(file, " wr_prob_g: %u\n", result.wr_prob_g); + seq_printf(file, " wr_prob_y: %u\n", result.wr_prob_y); + seq_printf(file, " wr_prob_r: %u\n", result.wr_prob_r); + return 0; +} + +static int testwrite_cgr_open(struct inode *inode, struct file *file) +{ + return single_open(file, testwrite_cgr_show, NULL); +} + +static const struct file_operations testwrite_cgr_fops = { + .owner = THIS_MODULE, + .open = testwrite_cgr_open, + .read = seq_read, + .release = single_release, +}; + + +static int testwrite_cgr_ibcnt_show(struct seq_file *file, void *offset) +{ + seq_printf(file, "i_bcnt: %llu\n", test_write_cgr_data.i_bcnt); + return 0; +} +static int testwrite_cgr_ibcnt_open(struct inode *inode, struct file *file) +{ + return single_open(file, testwrite_cgr_ibcnt_show, NULL); +} + +static ssize_t testwrite_cgr_ibcnt_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + test_write_cgr_data.i_bcnt = val; + return count; +} + +static const struct file_operations teswrite_cgr_ibcnt_fops = { + .owner = THIS_MODULE, + .open = testwrite_cgr_ibcnt_open, + .read = seq_read, + .write = testwrite_cgr_ibcnt_write, + .release = single_release, +}; + +static int testwrite_cgr_cgrid_show(struct seq_file *file, void *offset) +{ + seq_printf(file, "cgrid: %u\n", (u32)test_write_cgr_data.cgid); + return 0; +} +static int testwrite_cgr_cgrid_open(struct inode *inode, struct file *file) +{ + return single_open(file, testwrite_cgr_cgrid_show, NULL); +} + +static ssize_t testwrite_cgr_cgrid_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xff) + return -EINVAL; + test_write_cgr_data.cgid = (u8)val; + return count; +} + +static const struct file_operations teswrite_cgr_cgrid_fops = { + .owner = THIS_MODULE, + .open = testwrite_cgr_cgrid_open, + .read = seq_read, + .write = testwrite_cgr_cgrid_write, + .release = single_release, +}; + +/******************************************************************************* + * Query Congestion State + ******************************************************************************/ +static int query_congestion_show(struct seq_file *file, void *offset) +{ + int ret; + struct qm_mcr_querycongestion cs; + int i, j, in_cong = 0; + u32 mask; + + memset(&cs, 0, sizeof(struct qm_mcr_querycongestion)); + ret = qman_query_congestion(&cs); + if (ret) + return ret; + seq_printf(file, "Query Congestion Result\n"); + for (i = 0; i < 8; i++) { + mask = 0x80000000; + for (j = 0; j < 32; j++) { + if (cs.state.__state[i] & mask) { + in_cong = 1; + seq_printf(file, " cg %u: %s\n", (i*32)+j, + "in congestion"); + } + mask >>= 1; + } + } + if (!in_cong) + seq_printf(file, " All congestion groups not congested.\n"); + return 0; +} + +static int query_congestion_open(struct inode *inode, struct file *file) +{ + return single_open(file, query_congestion_show, NULL); +} + +static const struct file_operations query_congestion_fops = { + .owner = THIS_MODULE, + .open = query_congestion_open, + .read = seq_read, + .release = single_release, +}; + +/******************************************************************************* + * QMan register + ******************************************************************************/ +struct qman_register_s { + u32 val; +}; +static struct qman_register_s qman_register_data; + +static void init_ccsrmempeek(void) +{ + struct device_node *dn; + const u32 *regaddr_p; + + dn = of_find_compatible_node(NULL, NULL, "fsl,qman"); + if (!dn) { + pr_info("No fsl,qman node\n"); + return; + } + regaddr_p = of_get_address(dn, 0, &qman_ccsr_size, NULL); + if (!regaddr_p) { + of_node_put(dn); + return; + } + qman_ccsr_start = of_translate_address(dn, regaddr_p); + of_node_put(dn); +} +/* This function provides access to QMan ccsr memory map */ +static int qman_ccsrmempeek(u32 *val, u32 offset) +{ + void __iomem *addr; + u64 phys_addr; + + if (!qman_ccsr_start) + return -EINVAL; + + if (offset > (qman_ccsr_size - sizeof(u32))) + return -EINVAL; + + phys_addr = qman_ccsr_start + offset; + addr = ioremap(phys_addr, sizeof(u32)); + if (!addr) { + pr_err("ccsrmempeek, ioremap failed\n"); + return -EINVAL; + } + *val = in_be32(addr); + iounmap(addr); + return 0; +} + +static int qman_ccsrmempeek_show(struct seq_file *file, void *offset) +{ + u32 b; + + qman_ccsrmempeek(&b, qman_register_data.val); + seq_printf(file, "QMan register offset = 0x%x\n", + qman_register_data.val); + seq_printf(file, "value = 0x%08x\n", b); + + return 0; +} + +static int qman_ccsrmempeek_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_ccsrmempeek_show, NULL); +} + +static ssize_t qman_ccsrmempeek_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + /* multiple of 4 */ + if (val > (qman_ccsr_size - sizeof(u32))) { + pr_info("Input 0x%lx > 0x%llx\n", + val, (qman_ccsr_size - sizeof(u32))); + return -EINVAL; + } + if (val & 0x3) { + pr_info("Input 0x%lx not multiple of 4\n", val); + return -EINVAL; + } + qman_register_data.val = val; + return count; +} + +static const struct file_operations qman_ccsrmempeek_fops = { + .owner = THIS_MODULE, + .open = qman_ccsrmempeek_open, + .read = seq_read, + .write = qman_ccsrmempeek_write, +}; + +/******************************************************************************* + * QMan state + ******************************************************************************/ +static int qman_fqd_state_show(struct seq_file *file, void *offset) +{ + struct qm_mcr_queryfq_np np; + struct qman_fq fq; + struct line_buffer_fq line_buf; + int ret, i; + u8 *state = file->private; + u32 qm_fq_state_cnt[fqd_states_count]; + + memset(qm_fq_state_cnt, 0, sizeof(qm_fq_state_cnt)); + memset(&line_buf, 0, sizeof(line_buf)); + + seq_printf(file, "List of fq ids in state: %s\n", state_txt[*state]); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + ret = qman_query_fq_np(&fq, &np); + if (ret) + return ret; + if (*state == (np.state & QM_MCR_NP_STATE_MASK)) + add_to_line_buffer(&line_buf, fq.fqid, file); + /* Keep a summary count of all states */ + if ((np.state & QM_MCR_NP_STATE_MASK) < fqd_states_count) + qm_fq_state_cnt[(np.state & QM_MCR_NP_STATE_MASK)]++; + } + flush_line_buffer(&line_buf, file); + + for (i = 0; i < fqd_states_count; i++) { + seq_printf(file, "%s count = %u\n", state_txt[i], + qm_fq_state_cnt[i]); + } + return 0; +} + +static int qman_fqd_state_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_state_show, inode->i_private); +} + +static const struct file_operations qman_fqd_state_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_state_open, + .read = seq_read, +}; + +static int qman_fqd_ctrl_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + u32 fq_en_cnt = 0, fq_di_cnt = 0; + int ret, i; + struct mask_filter_s *data = file->private; + const char *ctrl_txt = get_fqd_ctrl_text(data->mask); + struct line_buffer_fq line_buf; + + memset(&line_buf, 0, sizeof(line_buf)); + seq_printf(file, "List of fq ids with: %s :%s\n", + ctrl_txt, (data->filter) ? "enabled" : "disabled"); + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + memset(&fqd, 0, sizeof(struct qm_fqd)); + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + if (data->filter) { + if (fqd.fq_ctrl & data->mask) + add_to_line_buffer(&line_buf, fq.fqid, file); + } else { + if (!(fqd.fq_ctrl & data->mask)) + add_to_line_buffer(&line_buf, fq.fqid, file); + } + if (fqd.fq_ctrl & data->mask) + fq_en_cnt++; + else + fq_di_cnt++; + } + flush_line_buffer(&line_buf, file); + + seq_printf(file, "Total FQD with: %s : enabled = %u\n", + ctrl_txt, fq_en_cnt); + seq_printf(file, "Total FQD with: %s : disabled = %u\n", + ctrl_txt, fq_di_cnt); + return 0; +} + +/******************************************************************************* + * QMan ctrl CGE, TDE, ORP, CTX, CPC, SFDR, BLOCK, HOLD, CACHE + ******************************************************************************/ +static int qman_fqd_ctrl_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_ctrl_show, inode->i_private); +} + +static const struct file_operations qman_fqd_ctrl_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_ctrl_open, + .read = seq_read, +}; + +/******************************************************************************* + * QMan ctrl summary + ******************************************************************************/ +/******************************************************************************* + * QMan summary state + ******************************************************************************/ +static int qman_fqd_non_prog_summary_show(struct seq_file *file, void *offset) +{ + struct qm_mcr_queryfq_np np; + struct qman_fq fq; + int ret, i; + u32 qm_fq_state_cnt[fqd_states_count]; + + memset(qm_fq_state_cnt, 0, sizeof(qm_fq_state_cnt)); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + ret = qman_query_fq_np(&fq, &np); + if (ret) + return ret; + /* Keep a summary count of all states */ + if ((np.state & QM_MCR_NP_STATE_MASK) < fqd_states_count) + qm_fq_state_cnt[(np.state & QM_MCR_NP_STATE_MASK)]++; + } + + for (i = 0; i < fqd_states_count; i++) { + seq_printf(file, "%s count = %u\n", state_txt[i], + qm_fq_state_cnt[i]); + } + return 0; +} + +static int qman_fqd_prog_summary_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + int ret, i , j; + u32 qm_prog_cnt[mask_filter_count/2]; + + memset(qm_prog_cnt, 0, sizeof(qm_prog_cnt)); + + for (i = 1; i < fqid_max; i++) { + memset(&fqd, 0, sizeof(struct qm_fqd)); + fq.fqid = i; + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + /* Keep a summary count of all states */ + for (j = 0; j < mask_filter_count; j += 2) + if ((fqd.fq_ctrl & QM_FQCTRL_MASK) & + mask_filter[j].mask) + qm_prog_cnt[j/2]++; + } + for (i = 0; i < mask_filter_count/2; i++) { + seq_printf(file, "%s count = %u\n", + get_fqd_ctrl_text(mask_filter[i*2].mask), + qm_prog_cnt[i]); + } + return 0; +} + +static int qman_fqd_summary_show(struct seq_file *file, void *offset) +{ + int ret; + + /* Display summary of non programmable fields */ + ret = qman_fqd_non_prog_summary_show(file, offset); + if (ret) + return ret; + seq_printf(file, "-----------------------------------------\n"); + /* Display programmable fields */ + ret = qman_fqd_prog_summary_show(file, offset); + if (ret) + return ret; + return 0; +} + +static int qman_fqd_summary_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_summary_show, NULL); +} + +static const struct file_operations qman_fqd_summary_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_summary_open, + .read = seq_read, +}; + +/******************************************************************************* + * QMan destination work queue + ******************************************************************************/ +struct qman_dest_wq_s { + u16 wq_id; +}; +static struct qman_dest_wq_s qman_dest_wq_data = { + .wq_id = 0, +}; + +static int qman_fqd_dest_wq_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + int ret, i; + u16 *wq, wq_id = qman_dest_wq_data.wq_id; + struct line_buffer_fq line_buf; + + memset(&line_buf, 0, sizeof(line_buf)); + /* use vmalloc : need to allocate large memory region and don't + * require the memory to be physically contiguous. */ + wq = vmalloc(sizeof(u16) * (0xFFFF+1)); + if (!wq) + return -ENOMEM; + memset(wq, 0, sizeof(u16) * (0xFFFF+1)); + + seq_printf(file, "List of fq ids with destination work queue id" + " = 0x%x\n", wq_id); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + memset(&fqd, 0, sizeof(struct qm_fqd)); + ret = qman_query_fq(&fq, &fqd); + if (ret) { + vfree(wq); + return ret; + } + if (wq_id == fqd.dest_wq) + add_to_line_buffer(&line_buf, fq.fqid, file); + wq[fqd.dest_wq]++; + } + flush_line_buffer(&line_buf, file); + + seq_printf(file, "Summary of all FQD destination work queue values\n"); + for (i = 0; i < 0xFFFF; i++) { + if (wq[i]) + seq_printf(file, "Channel: 0x%x WQ: 0x%x WQ_ID: 0x%x, " + "count = %u\n", i >> 3, i & 0x3, i, wq[i]); + } + vfree(wq); + return 0; +} + +static ssize_t qman_fqd_dest_wq_write(struct file *f, const char __user *buf, + size_t count, loff_t *off) +{ + int ret; + unsigned long val; + + ret = user_input_convert(buf, count, &val); + if (ret) + return ret; + if (val > 0xFFFF) + return -EINVAL; + qman_dest_wq_data.wq_id = val; + return count; +} + +static int qman_fqd_dest_wq_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_dest_wq_show, NULL); +} + +static const struct file_operations qman_fqd_dest_wq_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_dest_wq_open, + .read = seq_read, + .write = qman_fqd_dest_wq_write, +}; + +/******************************************************************************* + * QMan Intra-Class Scheduling Credit + ******************************************************************************/ +static int qman_fqd_cred_show(struct seq_file *file, void *offset) +{ + struct qm_fqd fqd; + struct qman_fq fq; + int ret, i; + u32 fq_cnt = 0; + struct line_buffer_fq line_buf; + + memset(&line_buf, 0, sizeof(line_buf)); + seq_printf(file, "List of fq ids with Intra-Class Scheduling Credit > 0" + "\n"); + + for (i = 1; i < fqid_max; i++) { + fq.fqid = i; + memset(&fqd, 0, sizeof(struct qm_fqd)); + ret = qman_query_fq(&fq, &fqd); + if (ret) + return ret; + if (fqd.ics_cred > 0) { + add_to_line_buffer(&line_buf, fq.fqid, file); + fq_cnt++; + } + } + flush_line_buffer(&line_buf, file); + + seq_printf(file, "Total FQD with ics_cred > 0 = %d\n", fq_cnt); + return 0; +} + +static int qman_fqd_cred_open(struct inode *inode, struct file *file) +{ + return single_open(file, qman_fqd_cred_show, NULL); +} + +static const struct file_operations qman_fqd_cred_fops = { + .owner = THIS_MODULE, + .open = qman_fqd_cred_open, + .read = seq_read, +}; + +/* helper macros used in qman_debugfs_module_init */ +#define QMAN_DBGFS_ENTRY(name, mode, parent, data, fops) \ + do { \ + d = debugfs_create_file(name, \ + mode, parent, \ + data, \ + fops); \ + if (d == NULL) { \ + ret = -ENOMEM; \ + goto _return; \ + } \ + } while (0) + +/* dfs_root as parent */ +#define QMAN_DBGFS_ENTRY_ROOT(name, mode, data, fops) \ + QMAN_DBGFS_ENTRY(name, mode, dfs_root, data, fops) + +/* fqd_root as parent */ +#define QMAN_DBGFS_ENTRY_FQDROOT(name, mode, data, fops) \ + QMAN_DBGFS_ENTRY(name, mode, fqd_root, data, fops) + +/* fqd state */ +#define QMAN_DBGFS_ENTRY_FQDSTATE(name, index) \ + QMAN_DBGFS_ENTRY_FQDROOT(name, S_IRUGO, \ + (void *)&mask_filter[index], &qman_fqd_ctrl_fops) + +static int __init qman_debugfs_module_init(void) +{ + int ret = 0; + struct dentry *d, *fqd_root; + u32 reg; + + fqid_max = 0; + init_ccsrmempeek(); + if (qman_ccsr_start) { + if (!qman_ccsrmempeek(®, QM_FQD_AR)) { + /* extract the size of the FQD window */ + reg = reg & 0x3f; + /* calculate valid frame queue descriptor range */ + fqid_max = (1 << (reg + 1)) / QM_FQD_BLOCK_SIZE; + } + } + dfs_root = debugfs_create_dir("qman", NULL); + fqd_root = debugfs_create_dir("fqd", dfs_root); + if (dfs_root == NULL || fqd_root == NULL) { + ret = -ENOMEM; + pr_err("Cannot create qman/fqd debugfs dir\n"); + goto _return; + } + if (fqid_max) { + QMAN_DBGFS_ENTRY_ROOT("ccsrmempeek", S_IRUGO | S_IWUGO, + NULL, &qman_ccsrmempeek_fops); + } + QMAN_DBGFS_ENTRY_ROOT("query_fq_np_fields", S_IRUGO | S_IWUGO, + &query_fq_np_fields_data, &query_fq_np_fields_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_fq_fields", S_IRUGO | S_IWUGO, + &query_fq_fields_data, &query_fq_fields_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_wq_lengths", S_IRUGO | S_IWUGO, + &query_wq_lengths_data, &query_wq_lengths_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_cgr", S_IRUGO | S_IWUGO, + &query_cgr_data, &query_cgr_fops); + + QMAN_DBGFS_ENTRY_ROOT("query_congestion", S_IRUGO, + NULL, &query_congestion_fops); + + QMAN_DBGFS_ENTRY_ROOT("testwrite_cgr", S_IRUGO, + NULL, &testwrite_cgr_fops); + + QMAN_DBGFS_ENTRY_ROOT("testwrite_cgr_cgrid", S_IRUGO | S_IWUGO, + NULL, &teswrite_cgr_cgrid_fops); + + QMAN_DBGFS_ENTRY_ROOT("testwrite_cgr_ibcnt", S_IRUGO | S_IWUGO, + NULL, &teswrite_cgr_ibcnt_fops); + + /* Create files with fqd_root as parent */ + + QMAN_DBGFS_ENTRY_FQDROOT("stateoos", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_OOS], &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_retired", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_RETIRED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_tentatively_sched", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_TEN_SCHED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_truly_sched", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_TRU_SCHED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_parked", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_PARKED], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("state_active", S_IRUGO, + (void *)&fqd_states[QM_MCR_NP_STATE_ACTIVE], + &qman_fqd_state_fops); + + QMAN_DBGFS_ENTRY_FQDSTATE("cge_enable", 17); + + QMAN_DBGFS_ENTRY_FQDSTATE("cge_disable", 16); + + QMAN_DBGFS_ENTRY_FQDSTATE("tde_enable", 15); + + QMAN_DBGFS_ENTRY_FQDSTATE("tde_disable", 14); + + QMAN_DBGFS_ENTRY_FQDSTATE("orp_enable", 13); + + QMAN_DBGFS_ENTRY_FQDSTATE("orp_disable", 12); + + QMAN_DBGFS_ENTRY_FQDSTATE("ctx_a_stashing_enable", 11); + + QMAN_DBGFS_ENTRY_FQDSTATE("ctx_a_stashing_disable", 10); + + QMAN_DBGFS_ENTRY_FQDSTATE("cpc_enable", 9); + + QMAN_DBGFS_ENTRY_FQDSTATE("cpc_disable", 8); + + QMAN_DBGFS_ENTRY_FQDSTATE("sfdr_enable", 7); + + QMAN_DBGFS_ENTRY_FQDSTATE("sfdr_disable", 6); + + QMAN_DBGFS_ENTRY_FQDSTATE("avoid_blocking_enable", 5); + + QMAN_DBGFS_ENTRY_FQDSTATE("avoid_blocking_disable", 4); + + QMAN_DBGFS_ENTRY_FQDSTATE("hold_active_enable", 3); + + QMAN_DBGFS_ENTRY_FQDSTATE("hold_active_disable", 2); + + QMAN_DBGFS_ENTRY_FQDSTATE("prefer_in_cache_enable", 1); + + QMAN_DBGFS_ENTRY_FQDSTATE("prefer_in_cache_disable", 0); + + QMAN_DBGFS_ENTRY_FQDROOT("summary", S_IRUGO, + NULL, &qman_fqd_summary_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("wq", S_IRUGO | S_IWUGO, + NULL, &qman_fqd_dest_wq_fops); + + QMAN_DBGFS_ENTRY_FQDROOT("cred", S_IRUGO, + NULL, &qman_fqd_cred_fops); + + return 0; + +_return: + if (dfs_root) + debugfs_remove_recursive(dfs_root); + return ret; +} + +static void __exit qman_debugfs_module_exit(void) +{ + debugfs_remove_recursive(dfs_root); +} + +module_init(qman_debugfs_module_init); +module_exit(qman_debugfs_module_exit); +MODULE_LICENSE("Dual BSD/GPL"); + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/bman_test_high.c +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/bman_test_high.c @@ -0,0 +1,181 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "bman_test.h" +#include "bman_private.h" + +/*************/ +/* constants */ +/*************/ + +#define PORTAL_OPAQUE (void *)0xf00dbeef +#define POOL_OPAQUE (void *)0xdeadabba +#define NUM_BUFS 93 +#define LOOPS 3 +#define BMAN_TOKEN_MASK 0x00FFFFFFFFFFLLU + +/***************/ +/* global vars */ +/***************/ + +static struct bman_pool *pool; +static int depleted; +static struct bm_buffer bufs_in[NUM_BUFS] ____cacheline_aligned; +static struct bm_buffer bufs_out[NUM_BUFS] ____cacheline_aligned; +static int bufs_received; + +/* Predeclare the callback so we can instantiate pool parameters */ +static void depletion_cb(struct bman_portal *, struct bman_pool *, void *, int); + +/**********************/ +/* internal functions */ +/**********************/ + +static void bufs_init(void) +{ + int i; + for (i = 0; i < NUM_BUFS; i++) + bm_buffer_set64(&bufs_in[i], 0xfedc01234567LLU * i); + bufs_received = 0; +} + +static inline int bufs_cmp(const struct bm_buffer *a, const struct bm_buffer *b) +{ + if (bman_ip_rev == BMAN_REV20) { + /* On SoCs with Bman revison 2.0, Bman only respects the 40 + * LS-bits of buffer addresses, masking off the upper 8-bits on + * release commands. The API provides for 48-bit addresses + * because some SoCs support all 48-bits. When generating + * garbage addresses for testing, we either need to zero the + * upper 8-bits when releasing to Bman (otherwise we'll be + * disappointed when the buffers we acquire back from Bman + * don't match), or we need to mask the upper 8-bits off when + * comparing. We do the latter. + */ + if ((bm_buffer_get64(a) & BMAN_TOKEN_MASK) + < (bm_buffer_get64(b) & BMAN_TOKEN_MASK)) + return -1; + if ((bm_buffer_get64(a) & BMAN_TOKEN_MASK) + > (bm_buffer_get64(b) & BMAN_TOKEN_MASK)) + return 1; + } else { + if (bm_buffer_get64(a) < bm_buffer_get64(b)) + return -1; + if (bm_buffer_get64(a) > bm_buffer_get64(b)) + return 1; + } + + return 0; +} + +static void bufs_confirm(void) +{ + int i, j; + for (i = 0; i < NUM_BUFS; i++) { + int matches = 0; + for (j = 0; j < NUM_BUFS; j++) + if (!bufs_cmp(&bufs_in[i], &bufs_out[j])) + matches++; + BUG_ON(matches != 1); + } +} + +/********/ +/* test */ +/********/ + +static void depletion_cb(struct bman_portal *__portal, struct bman_pool *__pool, + void *pool_ctx, int __depleted) +{ + BUG_ON(__pool != pool); + BUG_ON(pool_ctx != POOL_OPAQUE); + depleted = __depleted; +} + +void bman_test_high(void) +{ + struct bman_pool_params pparams = { + .flags = BMAN_POOL_FLAG_DEPLETION | BMAN_POOL_FLAG_DYNAMIC_BPID, + .cb = depletion_cb, + .cb_ctx = POOL_OPAQUE, + }; + int i, loops = LOOPS; + + bufs_init(); + + pr_info("BMAN: --- starting high-level test ---\n"); + + pool = bman_new_pool(&pparams); + BUG_ON(!pool); + + /*******************/ + /* Release buffers */ + /*******************/ +do_loop: + i = 0; + while (i < NUM_BUFS) { + u32 flags = BMAN_RELEASE_FLAG_WAIT; + int num = 8; + if ((i + num) > NUM_BUFS) + num = NUM_BUFS - i; + if ((i + num) == NUM_BUFS) + flags |= BMAN_RELEASE_FLAG_WAIT_SYNC; + if (bman_release(pool, bufs_in + i, num, flags)) + panic("bman_release() failed\n"); + i += num; + } + + /*******************/ + /* Acquire buffers */ + /*******************/ + while (i > 0) { + int tmp, num = 8; + if (num > i) + num = i; + tmp = bman_acquire(pool, bufs_out + i - num, num, 0); + BUG_ON(tmp != num); + i -= num; + } + i = bman_acquire(pool, NULL, 1, 0); + BUG_ON(i > 0); + + bufs_confirm(); + + if (--loops) + goto do_loop; + + /************/ + /* Clean up */ + /************/ + bman_free_pool(pool); + pr_info("BMAN: --- finished high-level test ---\n"); +} + --- linux-ppc-3.8.0.orig/drivers/staging/fsl_qbman/Kconfig +++ linux-ppc-3.8.0/drivers/staging/fsl_qbman/Kconfig @@ -0,0 +1,278 @@ +config FSL_DPA + bool "Freescale Datapath Queue and Buffer management" + depends on HAS_FSL_QBMAN + default y + select FSL_QMAN_FQ_LOOKUP if PPC64 + +menu "Freescale Datapath QMan/BMan options" + depends on FSL_DPA + +config FSL_DPA_CHECKING + bool "additional driver checking" + default n + ---help--- + Compiles in additional checks to sanity-check the drivers and any + use of it by other code. Not recommended for performance. + +config FSL_DPA_HAVE_IRQ + bool + default y + +config FSL_DPA_CAN_WAIT + bool + default y + +config FSL_DPA_CAN_WAIT_SYNC + bool + default y + +config FSL_DPA_PIRQ_FAST + bool "fast-path processing via IRQ" + depends on FSL_DPA_HAVE_IRQ + default y + ---help--- + By default, configure fast-path handling to be triggered by IRQ. + Drivers can modify this at run-time, but for linux it makes sense + for all handling to be triggered by IRQ, unless a special + run-to-completion application is being built. + +config FSL_DPA_PIRQ_SLOW + bool "slow-path processing via IRQ" + depends on FSL_DPA_HAVE_IRQ + default y + ---help--- + By default, configure slow-path handling to be triggered by IRQ. + Drivers can modify this at run-time, but for linux it makes sense + for all handling to be triggered by IRQ, unless a special + run-to-completion application is being built. + +config FSL_DPA_PORTAL_SHARE + bool "allow portals to be affine to multiple CPUs" + default y + ---help--- + If the kernel, via its device-tree, will be required to use a + single Qman or Bman portal for multiple CPUs, then select this + option. Note however that compiling with this option will result + in a very slight (but non-zero) overhead even when the feature + is not being used. + +config FSL_DPA_UIO + tristate "Export USDPAA portals via UIO" + depends on UIO + default y + ---help--- + Portals are exported as UIO devices for use by USDPAA (User + Space DataPath Acceleration Architecture) applications. + +config FSL_BMAN + bool "Freescale Buffer Manager support" + default y + +if FSL_BMAN + +config FSL_BMAN_PORTAL + bool "Bman portal support" + default y + ---help--- + Compiles support to detect and support Bman software corenet portals + (as provided by the device-tree). + +config FSL_BMAN_CONFIG + bool "Bman device management" + default y + ---help--- + If this linux image is running natively, you need this option. If this + linux image is running as a guest OS under the hypervisor, only one + guest OS ("the control plane") needs this option. + +config FSL_BMAN_TEST + tristate "Bman self-tests" + depends on FSL_BMAN_PORTAL + default n + ---help--- + This option compiles self-test code for Bman. + +config FSL_BMAN_TEST_HIGH + bool "Bman high-level self-test" + depends on FSL_BMAN_TEST + default y + ---help--- + This requires the presence of cpu-affine portals, and performs + high-level API testing with them (whichever portal(s) are affine to + the cpu(s) the test executes on). + +config FSL_BMAN_TEST_THRESH + bool "Bman threshold test" + depends on FSL_BMAN_TEST + default y + ---help--- + Multi-threaded (SMP) test of Bman pool depletion. A pool is seeded + before multiple threads (one per cpu) create pool objects to track + depletion state changes. The pool is then drained to empty by a + "drainer" thread, and the other threads that they observe exactly + the depletion state changes that are expected. + +config FSL_BMAN_DEBUGFS + tristate "Bman debugfs interface" + depends on FSL_BMAN_PORTAL && DEBUG_FS + default y + ---help--- + This option compiles bman debugfs code for Bman. + +endif # FSL_BMAN + +config FSL_QMAN + bool "Freescale Queue Manager support" + default y + +if FSL_QMAN + +config FSL_QMAN_PORTAL + bool "Qman portal support" + default y + ---help--- + Compiles support to detect and support Qman software corenet portals + (as provided by the device-tree). + +config FSL_QMAN_BUG_AND_FEATURE_REV1 + bool "workarounds for errata and missing features in p4080 rev1" + depends on FSL_QMAN_PORTAL + default y + ---help--- + If this option is selected, the driver will be compiled with + workarounds for errata as well as feature limitations (relative to + more recent parts) of p4080 rev1. On unaffected revisions, this + support incurs only a negligable overhead, typically only a couple of + instructions per non-fast-path operation (the fast-path operations are + unaffected). + + If in doubt, say Y. + +config FSL_QMAN_POLL_LIMIT + int + default 32 + +config FSL_QMAN_PORTAL_DISABLEAUTO_DCA + bool "disable discrete-consumption support on cpu-affine portals" + default n + ---help--- + By default, auto-initialised cpu-affine portals support + discrete-consumption acknowledgements, but this may be unimplemented + in the simulation model. + +config FSL_QMAN_NULL_FQ_DEMUX + bool "support NULL demux handlers" + default y + ---help--- + Normally, incoming frame dequeues and messages from Qman to a software + portal provide a direct demux to the owner of the corresponding FQ. + However, exotic "zero-conf" possibilities can be supported if other + cpus (or operating systems) can schedule "NULL" FQs to a receiver's + portal. If this option is selected, the driver will support this + feature, but it adds a small overhead to the hottest-path in the + driver, so it should be disabled unless needed. + +config FSL_QMAN_DQRR_PREFETCHING + bool "support prefetching or DQRR (if stashing disabled)" + default y + ---help--- + Normally, portals are configured to stash DQRR entries, but if this is + not the case, then s/w needs to invalidate and prefetch ring entries. + Selecting this option supports both cases and chooses the best one at + run-time, but introduces a small overhead in some hot paths of the + driver, so disable it if you know stashing will be configured. + +config FSL_QMAN_CONFIG + bool "Qman device management" + default y + ---help--- + If this linux image is running natively, you need this option. If this + linux image is running as a guest OS under the hypervisor, only one + guest OS ("the control plane") needs this option. + +config FSL_QMAN_TEST + tristate "Qman self-tests" + depends on FSL_QMAN_PORTAL + default n + ---help--- + This option compiles self-test code for Qman. + +config FSL_QMAN_TEST_STASH_POTATO + bool "Qman 'hot potato' data-stashing self-test" + depends on FSL_QMAN_TEST + default y + ---help--- + This performs a "hot potato" style test enqueuing/dequeuing a frame + across a series of FQs scheduled to different portals (and cpus), with + DQRR, data and context stashing always on. + +config FSL_QMAN_TEST_HIGH + bool "Qman high-level self-test" + depends on FSL_QMAN_TEST + default y + ---help--- + This requires the presence of cpu-affine portals, and performs + high-level API testing with them (whichever portal(s) are affine to + the cpu(s) the test executes on). + +config FSL_QMAN_TEST_ERRATA + bool "Qman errata-handling self-test" + depends on FSL_QMAN_TEST + default y + ---help--- + This requires the presence of cpu-affine portals, and performs + testing that handling for known hardware-errata is correct. + +config FSL_QMAN_DEBUGFS + tristate "Qman debugfs interface" + depends on FSL_QMAN_PORTAL + default y + ---help--- + This option compiles qman debugfs code for Qman. + +# H/w settings that can be hard-coded for now. +config FSL_QMAN_FQD_SZ + int "Size of Frame Queue Descriptor region" + default 9 + ---help--- + This is the size of the FQD region defined as: PAGE_SIZE * (2^value) + ex: 9 => PAGE_SIZE * (2^9) + +# Corenet initiator settings. Stash request queues are 4-deep to match cores' +# ability to snart. Stash priority is 3, other priorities are 2. +config FSL_QMAN_CI_SCHED_CFG_SRCCIV + int + depends on FSL_QMAN_CONFIG + default 4 +config FSL_QMAN_CI_SCHED_CFG_SRQ_W + int + depends on FSL_QMAN_CONFIG + default 3 +config FSL_QMAN_CI_SCHED_CFG_RW_W + int + depends on FSL_QMAN_CONFIG + default 2 +config FSL_QMAN_CI_SCHED_CFG_BMAN_W + int + depends on FSL_QMAN_CONFIG + default 2 + +# portal interrupt settings +config FSL_QMAN_PIRQ_DQRR_ITHRESH + int + default 12 +config FSL_QMAN_PIRQ_MR_ITHRESH + int + default 4 +config FSL_QMAN_PIRQ_IPERIOD + int + default 100 + +# 64 bit kernel support +config FSL_QMAN_FQ_LOOKUP + bool + default n + +endif # FSL_QMAN + +endmenu --- linux-ppc-3.8.0.orig/drivers/staging/zsmalloc/zsmalloc-main.c +++ linux-ppc-3.8.0/drivers/staging/zsmalloc/zsmalloc-main.c @@ -222,11 +222,9 @@ /* * By default, zsmalloc uses a copy-based object mapping method to access * allocations that span two pages. However, if a particular architecture - * 1) Implements local_flush_tlb_kernel_range() and 2) Performs VM mapping - * faster than copying, then it should be added here so that - * USE_PGTABLE_MAPPING is defined. This causes zsmalloc to use page table - * mapping rather than copying - * for object mapping. + * performs VM mapping faster than copying, then it should be added here + * so that USE_PGTABLE_MAPPING is defined. This causes zsmalloc to use + * page table mapping rather than copying for object mapping. */ #if defined(CONFIG_ARM) #define USE_PGTABLE_MAPPING @@ -659,11 +657,8 @@ struct page *pages[2], int off, int size) { unsigned long addr = (unsigned long)area->vm_addr; - unsigned long end = addr + (PAGE_SIZE * 2); - flush_cache_vunmap(addr, end); - unmap_kernel_range_noflush(addr, PAGE_SIZE * 2); - local_flush_tlb_kernel_range(addr, end); + unmap_kernel_range(addr, PAGE_SIZE * 2); } #else /* USE_PGTABLE_MAPPING */ --- linux-ppc-3.8.0.orig/drivers/staging/zsmalloc/Kconfig +++ linux-ppc-3.8.0/drivers/staging/zsmalloc/Kconfig @@ -1,5 +1,5 @@ config ZSMALLOC - tristate "Memory allocator for compressed pages" + bool "Memory allocator for compressed pages" default n help zsmalloc is a slab-based memory allocator designed to store --- linux-ppc-3.8.0.orig/drivers/staging/android/logger.c +++ linux-ppc-3.8.0/drivers/staging/android/logger.c @@ -371,7 +371,7 @@ unsigned long nr_segs, loff_t ppos) { struct logger_log *log = file_get_log(iocb->ki_filp); - size_t orig = log->w_off; + size_t orig; struct logger_entry header; struct timespec now; ssize_t ret = 0; @@ -390,6 +390,8 @@ mutex_lock(&log->mutex); + orig = log->w_off; + /* * Fix up any readers, pulling them forward to the first readable * entry after (what will be) the new write offset. We do this now --- linux-ppc-3.8.0.orig/drivers/staging/line6/pcm.c +++ linux-ppc-3.8.0/drivers/staging/line6/pcm.c @@ -384,8 +384,11 @@ */ static void pcm_disconnect_substream(struct snd_pcm_substream *substream) { - if (substream->runtime && snd_pcm_running(substream)) + if (substream->runtime && snd_pcm_running(substream)) { + snd_pcm_stream_lock_irq(substream); snd_pcm_stop(substream, SNDRV_PCM_STATE_DISCONNECTED); + snd_pcm_stream_unlock_irq(substream); + } } /* --- linux-ppc-3.8.0.orig/drivers/staging/iio/light/tsl2x7x_core.c +++ linux-ppc-3.8.0/drivers/staging/iio/light/tsl2x7x_core.c @@ -1923,6 +1923,7 @@ dev_info(&chip->client->dev, "%s: i2c device found does not match expected id\n", __func__); + ret = -EINVAL; goto fail1; } @@ -1961,7 +1962,7 @@ if (ret) { dev_err(&clientp->dev, "%s: irq request failed", __func__); - goto fail2; + goto fail1; } } @@ -1974,17 +1975,17 @@ if (ret) { dev_err(&clientp->dev, "%s: iio registration failed\n", __func__); - goto fail1; + goto fail2; } dev_info(&clientp->dev, "%s Light sensor found.\n", id->name); return 0; -fail1: +fail2: if (clientp->irq) free_irq(clientp->irq, indio_dev); -fail2: +fail1: iio_device_free(indio_dev); return ret; --- linux-ppc-3.8.0.orig/drivers/platform/olpc/olpc-ec.c +++ linux-ppc-3.8.0/drivers/platform/olpc/olpc-ec.c @@ -330,7 +330,7 @@ return platform_driver_register(&olpc_ec_plat_driver); } -module_init(olpc_ec_init_module); +arch_initcall(olpc_ec_init_module); MODULE_AUTHOR("Andres Salomon "); MODULE_LICENSE("GPL"); --- linux-ppc-3.8.0.orig/drivers/platform/x86/msi-wmi.c +++ linux-ppc-3.8.0/drivers/platform/x86/msi-wmi.c @@ -176,7 +176,7 @@ pr_debug("Suppressed key event 0x%X - " "Last press was %lld us ago\n", key->code, ktime_to_us(diff)); - return; + goto msi_wmi_notify_exit; } last_pressed[key->code - SCANCODE_BASE] = cur; @@ -195,6 +195,8 @@ pr_info("Unknown key pressed - %x\n", eventcode); } else pr_info("Unknown event received\n"); + +msi_wmi_notify_exit: kfree(response.pointer); } --- linux-ppc-3.8.0.orig/drivers/platform/x86/hp-wmi.c +++ linux-ppc-3.8.0/drivers/platform/x86/hp-wmi.c @@ -70,6 +70,14 @@ HPWMI_WIRELESS = 5, HPWMI_CPU_BATTERY_THROTTLE = 6, HPWMI_LOCK_SWITCH = 7, + HPWMI_LID_SWITCH = 8, + HPWMI_SCREEN_ROTATION = 9, + HPWMI_COOLSENSE_SYSTEM_MOBILE = 0x0A, + HPWMI_COOLSENSE_SYSTEM_HOT = 0x0B, + HPWMI_PROXIMITY_SENSOR = 0x0C, + HPWMI_BACKLIT_KB_BRIGHTNESS = 0x0D, + HPWMI_PEAKSHIFT_PERIOD = 0x0F, + HPWMI_BATTERY_CHARGE_PERIOD = 0x10, }; static int hp_wmi_bios_setup(struct platform_device *device); @@ -549,6 +557,22 @@ break; case HPWMI_LOCK_SWITCH: break; + case HPWMI_LID_SWITCH: + break; + case HPWMI_SCREEN_ROTATION: + break; + case HPWMI_COOLSENSE_SYSTEM_MOBILE: + break; + case HPWMI_COOLSENSE_SYSTEM_HOT: + break; + case HPWMI_PROXIMITY_SENSOR: + break; + case HPWMI_BACKLIT_KB_BRIGHTNESS: + break; + case HPWMI_PEAKSHIFT_PERIOD: + break; + case HPWMI_BATTERY_CHARGE_PERIOD: + break; default: pr_info("Unknown event_id - %d - 0x%x\n", event_id, event_data); break; --- linux-ppc-3.8.0.orig/drivers/platform/x86/acer-wmi.c +++ linux-ppc-3.8.0/drivers/platform/x86/acer-wmi.c @@ -1204,6 +1204,9 @@ devices = *((u32 *) obj->buffer.pointer); } else if (obj->type == ACPI_TYPE_INTEGER) { devices = (u32) obj->integer.value; + } else { + kfree(out.pointer); + return AE_ERROR; } } else { kfree(out.pointer); --- linux-ppc-3.8.0.orig/drivers/platform/x86/intel_ips.c +++ linux-ppc-3.8.0/drivers/platform/x86/intel_ips.c @@ -1501,6 +1501,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook"), }, }, + { + .callback = ips_blacklist_callback, + .ident = "G60JX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "G60JX"), + }, + }, { } /* terminating entry */ }; --- linux-ppc-3.8.0.orig/drivers/platform/x86/hp_accel.c +++ linux-ppc-3.8.0/drivers/platform/x86/hp_accel.c @@ -362,7 +362,8 @@ static int lis3lv02d_resume(struct device *dev) { - return lis3lv02d_poweron(&lis3_dev); + lis3lv02d_poweron(&lis3_dev); + return 0; } static SIMPLE_DEV_PM_OPS(hp_accel_pm, lis3lv02d_suspend, lis3lv02d_resume); --- linux-ppc-3.8.0.orig/drivers/platform/x86/sony-laptop.c +++ linux-ppc-3.8.0/drivers/platform/x86/sony-laptop.c @@ -1534,7 +1534,7 @@ int argument = sony_rfkill_address[(long) data] + 0x100; if (!blocked) - argument |= 0x030000; + argument |= 0x070000; return sony_call_snc_handle(sony_rfkill_handle, argument, &result); } @@ -2813,6 +2813,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; @@ -2823,6 +2827,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; @@ -4257,6 +4262,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: @@ -4331,6 +4342,16 @@ .drv.pm = &sony_pic_pm, }; +static struct sony_pic_quirk_entry sony_pic_vaio_vgn = { + .set_wwan_power = 1, +}; + +static int dmi_matched(const struct dmi_system_id *dmi) +{ + spic_dev.quirks = dmi->driver_data; + return 0; +} + static struct dmi_system_id __initdata sonypi_dmi_table[] = { { .ident = "Sony Vaio", @@ -4345,6 +4366,8 @@ DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), DMI_MATCH(DMI_PRODUCT_NAME, "VGN-"), }, + .callback = dmi_matched, + .driver_data = &sony_pic_vaio_vgn, }, { } }; --- linux-ppc-3.8.0.orig/drivers/platform/x86/dell-wmi.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/leds/leds-ot200.c +++ linux-ppc-3.8.0/drivers/leds/leds-ot200.c @@ -47,37 +47,37 @@ { .name = "led_1", .port = 0x49, - .mask = BIT(7), + .mask = BIT(6), }, { .name = "led_2", .port = 0x49, - .mask = BIT(6), + .mask = BIT(5), }, { .name = "led_3", .port = 0x49, - .mask = BIT(5), + .mask = BIT(4), }, { .name = "led_4", .port = 0x49, - .mask = BIT(4), + .mask = BIT(3), }, { .name = "led_5", .port = 0x49, - .mask = BIT(3), + .mask = BIT(2), }, { .name = "led_6", .port = 0x49, - .mask = BIT(2), + .mask = BIT(1), }, { .name = "led_7", .port = 0x49, - .mask = BIT(1), + .mask = BIT(0), } }; --- linux-ppc-3.8.0.orig/drivers/vfio/pci/vfio_pci.c +++ linux-ppc-3.8.0/drivers/vfio/pci/vfio_pci.c @@ -331,6 +331,7 @@ if (!(hdr.flags & VFIO_IRQ_SET_DATA_NONE)) { size_t size; + int max = vfio_pci_get_irq_count(vdev, hdr.index); if (hdr.flags & VFIO_IRQ_SET_DATA_BOOL) size = sizeof(uint8_t); @@ -340,7 +341,7 @@ return -EINVAL; if (hdr.argsz - minsz < hdr.count * size || - hdr.count > vfio_pci_get_irq_count(vdev, hdr.index)) + hdr.start >= max || hdr.start + hdr.count > max) return -EINVAL; data = memdup_user((void __user *)(arg + minsz), --- linux-ppc-3.8.0.orig/drivers/scsi/sd.h +++ linux-ppc-3.8.0/drivers/scsi/sd.h @@ -73,6 +73,7 @@ u8 protection_type;/* Data Integrity Field */ u8 provisioning_mode; unsigned ATO : 1; /* state of disk ATO bit */ + unsigned cache_override : 1; /* temp override of WCE,RCD */ unsigned WCE : 1; /* state of disk WCE bit */ unsigned RCD : 1; /* state of disk RCD bit, unused */ unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ @@ -83,6 +84,7 @@ unsigned lbpws : 1; unsigned lbpws10 : 1; unsigned lbpvpd : 1; + unsigned ws10 : 1; unsigned ws16 : 1; }; #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) --- linux-ppc-3.8.0.orig/drivers/scsi/scsi_lib.c +++ linux-ppc-3.8.0/drivers/scsi/scsi_lib.c @@ -2617,3 +2617,17 @@ kunmap_atomic(virt); } EXPORT_SYMBOL(scsi_kunmap_atomic_sg); + +void sdev_disable_disk_events(struct scsi_device *sdev) +{ + atomic_inc(&sdev->disk_events_disable_depth); +} +EXPORT_SYMBOL(sdev_disable_disk_events); + +void sdev_enable_disk_events(struct scsi_device *sdev) +{ + if (WARN_ON_ONCE(atomic_read(&sdev->disk_events_disable_depth) <= 0)) + return; + atomic_dec(&sdev->disk_events_disable_depth); +} +EXPORT_SYMBOL(sdev_enable_disk_events); --- linux-ppc-3.8.0.orig/drivers/scsi/dc395x.c +++ linux-ppc-3.8.0/drivers/scsi/dc395x.c @@ -3747,13 +3747,13 @@ dcb->max_command = 1; dcb->target_id = target; dcb->target_lun = lun; + dcb->dev_mode = eeprom->target[target].cfg0; #ifndef DC395x_NO_DISCONNECT dcb->identify_msg = IDENTIFY(dcb->dev_mode & NTC_DO_DISCONNECT, lun); #else dcb->identify_msg = IDENTIFY(0, lun); #endif - dcb->dev_mode = eeprom->target[target].cfg0; dcb->inquiry7 = 0; dcb->sync_mode = 0; dcb->min_nego_period = clock_period[period_index]; --- linux-ppc-3.8.0.orig/drivers/scsi/sr.c +++ linux-ppc-3.8.0/drivers/scsi/sr.c @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -79,6 +80,11 @@ static int sr_probe(struct device *); static int sr_remove(struct device *); static int sr_done(struct scsi_cmnd *); +static int sr_runtime_suspend(struct device *dev); + +static struct dev_pm_ops sr_pm_ops = { + .runtime_suspend = sr_runtime_suspend, +}; static struct scsi_driver sr_template = { .owner = THIS_MODULE, @@ -86,6 +92,7 @@ .name = "sr", .probe = sr_probe, .remove = sr_remove, + .pm = &sr_pm_ops, }, .done = sr_done, }; @@ -131,6 +138,16 @@ return container_of(disk->private_data, struct scsi_cd, driver); } +static int sr_runtime_suspend(struct device *dev) +{ + struct scsi_cd *cd = dev_get_drvdata(dev); + + if (cd->media_present) + return -EBUSY; + else + return 0; +} + /* * The get and put routines for the struct scsi_cd. Note this entity * has a scsi_device pointer and owns a reference to this. @@ -146,7 +163,8 @@ kref_get(&cd->kref); if (scsi_device_get(cd->device)) goto out_put; - goto out; + if (!scsi_autopm_get_device(cd->device)) + goto out; out_put: kref_put(&cd->kref, sr_kref_release); @@ -162,6 +180,7 @@ mutex_lock(&sr_ref_mutex); kref_put(&cd->kref, sr_kref_release); + scsi_autopm_put_device(sdev); scsi_device_put(sdev); mutex_unlock(&sr_ref_mutex); } @@ -540,6 +559,8 @@ void __user *argp = (void __user *)arg; int ret; + scsi_autopm_get_device(cd->device); + mutex_lock(&sr_mutex); /* @@ -571,6 +592,7 @@ out: mutex_unlock(&sr_mutex); + scsi_autopm_put_device(cd->device); return ret; } @@ -578,7 +600,17 @@ unsigned int clearing) { struct scsi_cd *cd = scsi_cd(disk); - return cdrom_check_events(&cd->cdi, clearing); + unsigned int ret; + + if (atomic_read(&cd->device->disk_events_disable_depth) == 0) { + scsi_autopm_get_device(cd->device); + ret = cdrom_check_events(&cd->cdi, clearing); + scsi_autopm_put_device(cd->device); + } else { + ret = 0; + } + + return ret; } static int sr_block_revalidate_disk(struct gendisk *disk) @@ -586,12 +618,16 @@ struct scsi_cd *cd = scsi_cd(disk); struct scsi_sense_hdr sshdr; + scsi_autopm_get_device(cd->device); + /* if the unit is not ready, nothing more to do */ if (scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr)) - return 0; + goto out; sr_cd_check(&cd->cdi); get_sectorsize(cd); +out: + scsi_autopm_put_device(cd->device); return 0; } @@ -718,6 +754,8 @@ sdev_printk(KERN_DEBUG, sdev, "Attached scsi CD-ROM %s\n", cd->cdi.name); + scsi_autopm_put_device(cd->device); + return 0; fail_put: @@ -965,6 +1003,8 @@ { struct scsi_cd *cd = dev_get_drvdata(dev); + scsi_autopm_get_device(cd->device); + blk_queue_prep_rq(cd->device->request_queue, scsi_prep_fn); del_gendisk(cd->disk); --- linux-ppc-3.8.0.orig/drivers/scsi/storvsc_drv.c +++ linux-ppc-3.8.0/drivers/scsi/storvsc_drv.c @@ -467,6 +467,7 @@ if (!bounce_sgl) return NULL; + sg_init_table(bounce_sgl, num_pages); for (i = 0; i < num_pages; i++) { page_buf = alloc_page(GFP_ATOMIC); if (!page_buf) @@ -1155,6 +1156,8 @@ blk_queue_bounce_limit(sdevice->request_queue, BLK_BOUNCE_ANY); + sdevice->no_write_same = 1; + return 0; } @@ -1237,6 +1240,8 @@ u8 scsi_op = scmnd->cmnd[0]; switch (scsi_op) { + /* the host does not handle WRITE_SAME, log accident usage */ + case WRITE_SAME: /* * smartd sends this command and the host does not handle * this. So, don't send it. --- linux-ppc-3.8.0.orig/drivers/scsi/scsi.c +++ linux-ppc-3.8.0/drivers/scsi/scsi.c @@ -1031,6 +1031,9 @@ { int i, result; + if (sdev->skip_vpd_pages) + goto fail; + /* Ask for all the pages supported by this device */ result = scsi_vpd_inquiry(sdev, buf, 0, buf_len); if (result) @@ -1070,8 +1073,8 @@ * @opcode: opcode for command to look up * * Uses the REPORT SUPPORTED OPERATION CODES to look up the given - * opcode. Returns 0 if RSOC fails or if the command opcode is - * unsupported. Returns 1 if the device claims to support the command. + * opcode. Returns -EINVAL if RSOC fails, 0 if the command opcode is + * unsupported and 1 if the device claims to support the command. */ int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer, unsigned int len, unsigned char opcode) @@ -1081,7 +1084,7 @@ int result; if (sdev->no_report_opcodes || sdev->scsi_level < SCSI_SPC_3) - return 0; + return -EINVAL; memset(cmd, 0, 16); cmd[0] = MAINTENANCE_IN; @@ -1097,7 +1100,7 @@ if (result && scsi_sense_valid(&sshdr) && sshdr.sense_key == ILLEGAL_REQUEST && (sshdr.asc == 0x20 || sshdr.asc == 0x24) && sshdr.ascq == 0x00) - return 0; + return -EINVAL; if ((buffer[1] & 3) == 3) /* Command supported */ return 1; --- linux-ppc-3.8.0.orig/drivers/scsi/sd.c +++ linux-ppc-3.8.0/drivers/scsi/sd.c @@ -142,6 +142,7 @@ char *buffer_data; struct scsi_mode_data data; struct scsi_sense_hdr sshdr; + static const char temp[] = "temporary "; int len; if (sdp->type != TYPE_DISK) @@ -150,6 +151,13 @@ * it's not worth the risk */ return -EINVAL; + if (strncmp(buf, temp, sizeof(temp) - 1) == 0) { + buf += sizeof(temp) - 1; + sdkp->cache_override = 1; + } else { + sdkp->cache_override = 0; + } + for (i = 0; i < ARRAY_SIZE(sd_cache_types); i++) { len = strlen(sd_cache_types[i]); if (strncmp(sd_cache_types[i], buf, len) == 0 && @@ -162,6 +170,13 @@ return -EINVAL; rcd = ct & 0x01 ? 1 : 0; wce = ct & 0x02 ? 1 : 0; + + if (sdkp->cache_override) { + sdkp->WCE = wce; + sdkp->RCD = rcd; + return count; + } + if (scsi_mode_sense(sdp, 0x08, 8, buffer, sizeof(buffer), SD_TIMEOUT, SD_MAX_RETRIES, &data, NULL)) return -EINVAL; @@ -427,8 +442,10 @@ if (max == 0) sdp->no_write_same = 1; - else if (max <= SD_MAX_WS16_BLOCKS) + else if (max <= SD_MAX_WS16_BLOCKS) { + sdp->no_write_same = 0; sdkp->max_ws_blocks = max; + } sd_config_write_same(sdkp); @@ -725,7 +742,6 @@ { struct request_queue *q = sdkp->disk->queue; unsigned int logical_block_size = sdkp->device->sector_size; - unsigned int blocks = 0; if (sdkp->device->no_write_same) { sdkp->max_ws_blocks = 0; @@ -737,18 +753,20 @@ * blocks per I/O unless the device explicitly advertises a * bigger limit. */ - if (sdkp->max_ws_blocks == 0) - sdkp->max_ws_blocks = SD_MAX_WS10_BLOCKS; - - if (sdkp->ws16 || sdkp->max_ws_blocks > SD_MAX_WS10_BLOCKS) - blocks = min_not_zero(sdkp->max_ws_blocks, - (u32)SD_MAX_WS16_BLOCKS); - else - blocks = min_not_zero(sdkp->max_ws_blocks, - (u32)SD_MAX_WS10_BLOCKS); + if (sdkp->max_ws_blocks > SD_MAX_WS10_BLOCKS) + sdkp->max_ws_blocks = min_not_zero(sdkp->max_ws_blocks, + (u32)SD_MAX_WS16_BLOCKS); + else if (sdkp->ws16 || sdkp->ws10 || sdkp->device->no_report_opcodes) + sdkp->max_ws_blocks = min_not_zero(sdkp->max_ws_blocks, + (u32)SD_MAX_WS10_BLOCKS); + else { + sdkp->device->no_write_same = 1; + sdkp->max_ws_blocks = 0; + } out: - blk_queue_max_write_same_sectors(q, blocks * (logical_block_size >> 9)); + blk_queue_max_write_same_sectors(q, sdkp->max_ws_blocks * + (logical_block_size >> 9)); } /** @@ -810,10 +828,17 @@ static void sd_unprep_fn(struct request_queue *q, struct request *rq) { + struct scsi_cmnd *SCpnt = rq->special; + if (rq->cmd_flags & REQ_DISCARD) { free_page((unsigned long)rq->buffer); rq->buffer = NULL; } + if (SCpnt->cmnd != rq->cmd) { + mempool_free(SCpnt->cmnd, sd_cdb_pool); + SCpnt->cmnd = NULL; + SCpnt->cmd_len = 0; + } } /** @@ -1704,21 +1729,6 @@ if (rq_data_dir(SCpnt->request) == READ && scsi_prot_sg_count(SCpnt)) sd_dif_complete(SCpnt, good_bytes); - if (scsi_host_dif_capable(sdkp->device->host, sdkp->protection_type) - == SD_DIF_TYPE2_PROTECTION && SCpnt->cmnd != SCpnt->request->cmd) { - - /* We have to print a failed command here as the - * extended CDB gets freed before scsi_io_completion() - * is called. - */ - if (result) - scsi_print_command(SCpnt); - - mempool_free(SCpnt->cmnd, sd_cdb_pool); - SCpnt->cmnd = NULL; - SCpnt->cmd_len = 0; - } - return good_bytes; } @@ -2319,6 +2329,10 @@ int old_rcd = sdkp->RCD; int old_dpofua = sdkp->DPOFUA; + + if (sdkp->cache_override) + return; + first_len = 4; if (sdp->skip_ms_page_8) { if (sdp->type == TYPE_RBC) @@ -2628,9 +2642,24 @@ static void sd_read_write_same(struct scsi_disk *sdkp, unsigned char *buffer) { - if (scsi_report_opcode(sdkp->device, buffer, SD_BUF_SIZE, - WRITE_SAME_16)) + struct scsi_device *sdev = sdkp->device; + + if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, INQUIRY) < 0) { + sdev->no_report_opcodes = 1; + + /* Disable WRITE SAME if REPORT SUPPORTED OPERATION + * CODES is unsupported and the device has an ATA + * Information VPD page (SAT). + */ + if (!scsi_get_vpd_page(sdev, 0x89, buffer, SD_BUF_SIZE)) + sdev->no_write_same = 1; + } + + if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME_16) == 1) sdkp->ws16 = 1; + + if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME) == 1) + sdkp->ws10 = 1; } static int sd_try_extended_inquiry(struct scsi_device *sdp) @@ -2812,6 +2841,7 @@ sdkp->capacity = 0; sdkp->media_present = 1; sdkp->write_prot = 0; + sdkp->cache_override = 0; sdkp->WCE = 0; sdkp->RCD = 0; sdkp->ATO = 0; --- linux-ppc-3.8.0.orig/drivers/scsi/aacraid/src.c +++ linux-ppc-3.8.0/drivers/scsi/aacraid/src.c @@ -93,6 +93,9 @@ int send_it = 0; extern int aac_sync_mode; + src_writel(dev, MUnit.ODR_C, bellbits); + src_readl(dev, MUnit.ODR_C); + if (!aac_sync_mode) { src_writel(dev, MUnit.ODR_C, bellbits); src_readl(dev, MUnit.ODR_C); --- linux-ppc-3.8.0.orig/drivers/scsi/isci/task.c +++ linux-ppc-3.8.0/drivers/scsi/isci/task.c @@ -491,6 +491,7 @@ struct isci_tmf tmf; int ret = TMF_RESP_FUNC_FAILED; unsigned long flags; + int target_done_already = 0; /* Get the isci_request reference from the task. Note that * this check does not depend on the pending request list @@ -505,9 +506,11 @@ /* If task is already done, the request isn't valid */ if (!(task->task_state_flags & SAS_TASK_STATE_DONE) && (task->task_state_flags & SAS_TASK_AT_INITIATOR) && - old_request) + old_request) { idev = isci_get_device(task->dev->lldd_dev); - + target_done_already = test_bit(IREQ_COMPLETE_IN_TARGET, + &old_request->flags); + } spin_unlock(&task->task_state_lock); spin_unlock_irqrestore(&ihost->scic_lock, flags); @@ -561,7 +564,7 @@ if (task->task_proto == SAS_PROTOCOL_SMP || sas_protocol_ata(task->task_proto) || - test_bit(IREQ_COMPLETE_IN_TARGET, &old_request->flags) || + target_done_already || test_bit(IDEV_GONE, &idev->flags)) { spin_unlock_irqrestore(&ihost->scic_lock, flags); --- linux-ppc-3.8.0.orig/drivers/scsi/mpt3sas/mpt3sas_scsih.c +++ linux-ppc-3.8.0/drivers/scsi/mpt3sas/mpt3sas_scsih.c @@ -1274,6 +1274,7 @@ struct MPT3SAS_DEVICE *sas_device_priv_data; struct scsi_target *starget; struct _raid_device *raid_device; + struct _sas_device *sas_device; unsigned long flags; sas_device_priv_data = kzalloc(sizeof(struct scsi_device), GFP_KERNEL); @@ -1302,6 +1303,19 @@ spin_unlock_irqrestore(&ioc->raid_device_lock, flags); } + if (!(sas_target_priv_data->flags & MPT_TARGET_FLAGS_VOLUME)) { + spin_lock_irqsave(&ioc->sas_device_lock, flags); + sas_device = mpt3sas_scsih_sas_device_find_by_sas_address(ioc, + sas_target_priv_data->sas_address); + if (sas_device && (sas_device->starget == NULL)) { + sdev_printk(KERN_INFO, sdev, + "%s : sas_device->starget set to starget @ %d\n", + __func__, __LINE__); + sas_device->starget = starget; + } + spin_unlock_irqrestore(&ioc->sas_device_lock, flags); + } + return 0; } @@ -6395,7 +6409,7 @@ handle))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) break; handle = le16_to_cpu(sas_device_pg0.DevHandle); device_info = le32_to_cpu(sas_device_pg0.DeviceInfo); @@ -6497,7 +6511,7 @@ &volume_pg1, MPI2_RAID_VOLUME_PGAD_FORM_GET_NEXT_HANDLE, handle))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) break; handle = le16_to_cpu(volume_pg1.DevHandle); @@ -6521,7 +6535,7 @@ phys_disk_num))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) break; phys_disk_num = pd_pg0.PhysDiskNum; handle = le16_to_cpu(pd_pg0.DevHandle); @@ -6600,7 +6614,7 @@ ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) break; handle = le16_to_cpu(expander_pg0.DevHandle); @@ -6745,8 +6759,6 @@ MPI2_SAS_EXPAND_PGAD_FORM_GET_NEXT_HNDL, handle))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) - break; if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { pr_info(MPT3SAS_FMT "\tbreak from expander scan: " \ "ioc_status(0x%04x), loginfo(0x%08x)\n", @@ -6790,8 +6802,6 @@ phys_disk_num))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) - break; if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { pr_info(MPT3SAS_FMT "\tbreak from phys disk scan: "\ "ioc_status(0x%04x), loginfo(0x%08x)\n", @@ -6857,8 +6867,6 @@ &volume_pg1, MPI2_RAID_VOLUME_PGAD_FORM_GET_NEXT_HANDLE, handle))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) - break; if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { pr_info(MPT3SAS_FMT "\tbreak from volume scan: " \ "ioc_status(0x%04x), loginfo(0x%08x)\n", @@ -6917,8 +6925,6 @@ handle))) { ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; - if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) - break; if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { pr_info(MPT3SAS_FMT "\tbreak from end device scan:"\ " ioc_status(0x%04x), loginfo(0x%08x)\n", --- linux-ppc-3.8.0.orig/drivers/scsi/qla2xxx/qla_iocb.c +++ linux-ppc-3.8.0/drivers/scsi/qla2xxx/qla_iocb.c @@ -418,6 +418,8 @@ __constant_cpu_to_le16(CF_SIMPLE_TAG); break; } + } else { + cmd_pkt->control_flags = __constant_cpu_to_le16(CF_SIMPLE_TAG); } /* Load SCSI command packet. */ @@ -1316,11 +1318,11 @@ fcp_cmnd->task_attribute = TSK_ORDERED; break; default: - fcp_cmnd->task_attribute = 0; + fcp_cmnd->task_attribute = TSK_SIMPLE; break; } } else { - fcp_cmnd->task_attribute = 0; + fcp_cmnd->task_attribute = TSK_SIMPLE; } cmd_pkt->fcp_rsp_dseg_len = 0; /* Let response come in status iocb */ @@ -1536,7 +1538,12 @@ case ORDERED_QUEUE_TAG: cmd_pkt->task = TSK_ORDERED; break; + default: + cmd_pkt->task = TSK_SIMPLE; + break; } + } else { + cmd_pkt->task = TSK_SIMPLE; } /* Load SCSI command packet. */ --- linux-ppc-3.8.0.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ linux-ppc-3.8.0/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -688,8 +688,12 @@ * For FCP_READ with CHECK_CONDITION status, clear cmd->bufflen * for qla_tgt_xmit_response LLD code */ + if (se_cmd->se_cmd_flags & SCF_OVERFLOW_BIT) { + se_cmd->se_cmd_flags &= ~SCF_OVERFLOW_BIT; + se_cmd->residual_count = 0; + } se_cmd->se_cmd_flags |= SCF_UNDERFLOW_BIT; - se_cmd->residual_count = se_cmd->data_length; + se_cmd->residual_count += se_cmd->data_length; cmd->bufflen = 0; } --- linux-ppc-3.8.0.orig/drivers/scsi/megaraid/megaraid_sas_base.c +++ linux-ppc-3.8.0/drivers/scsi/megaraid/megaraid_sas_base.c @@ -3508,11 +3508,21 @@ break; } - /* - * We expect the FW state to be READY - */ - if (megasas_transition_to_ready(instance, 0)) - goto fail_ready_state; + if (megasas_transition_to_ready(instance, 0)) { + atomic_set(&instance->fw_reset_no_pci_access, 1); + instance->instancet->adp_reset + (instance, instance->reg_set); + atomic_set(&instance->fw_reset_no_pci_access, 0); + dev_info(&instance->pdev->dev, + "megasas: FW restarted successfully from %s!\n", + __func__); + + /*waitting for about 30 second before retry*/ + ssleep(30); + + if (megasas_transition_to_ready(instance, 0)) + goto fail_ready_state; + } /* Check if MSI-X is supported while in ready state */ msix_enable = (instance->instancet->read_fw_status_reg(reg_set) & @@ -4852,10 +4862,12 @@ sense, sense_handle); } - for (i = 0; i < ioc->sge_count && kbuff_arr[i]; i++) { - dma_free_coherent(&instance->pdev->dev, - kern_sge32[i].length, - kbuff_arr[i], kern_sge32[i].phys_addr); + for (i = 0; i < ioc->sge_count; i++) { + if (kbuff_arr[i]) + dma_free_coherent(&instance->pdev->dev, + kern_sge32[i].length, + kbuff_arr[i], + kern_sge32[i].phys_addr); } megasas_return_cmd(instance, cmd); --- linux-ppc-3.8.0.orig/drivers/scsi/osd/osd_uld.c +++ linux-ppc-3.8.0/drivers/scsi/osd/osd_uld.c @@ -493,7 +493,7 @@ oud->class_dev.class = &osd_uld_class; oud->class_dev.parent = dev; oud->class_dev.release = __remove; - error = dev_set_name(&oud->class_dev, disk->disk_name); + error = dev_set_name(&oud->class_dev, "%s", disk->disk_name); if (error) { OSD_ERR("dev_set_name failed => %d\n", error); goto err_put_cdev; --- linux-ppc-3.8.0.orig/drivers/scsi/mpt2sas/mpt2sas_base.c +++ linux-ppc-3.8.0/drivers/scsi/mpt2sas/mpt2sas_base.c @@ -80,10 +80,6 @@ module_param(msix_disable, int, 0); MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)"); -static int missing_delay[2] = {-1, -1}; -module_param_array(missing_delay, int, NULL, 0); -MODULE_PARM_DESC(missing_delay, " device missing delay , io missing delay"); - static int mpt2sas_fwfault_debug; MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " "and halt firmware - (default=0)"); @@ -2175,7 +2171,7 @@ } /** - * _base_update_missing_delay - change the missing delay timers + * mpt2sas_base_update_missing_delay - change the missing delay timers * @ioc: per adapter object * @device_missing_delay: amount of time till device is reported missing * @io_missing_delay: interval IO is returned when there is a missing device @@ -2186,8 +2182,8 @@ * delay, as well as the io missing delay. This should be called at driver * load time. */ -static void -_base_update_missing_delay(struct MPT2SAS_ADAPTER *ioc, +void +mpt2sas_base_update_missing_delay(struct MPT2SAS_ADAPTER *ioc, u16 device_missing_delay, u8 io_missing_delay) { u16 dmd, dmd_new, dmd_orignal; @@ -4383,10 +4379,6 @@ if (r) goto out_free_resources; - if (missing_delay[0] != -1 && missing_delay[1] != -1) - _base_update_missing_delay(ioc, missing_delay[0], - missing_delay[1]); - return 0; out_free_resources: --- linux-ppc-3.8.0.orig/drivers/scsi/mpt2sas/mpt2sas_base.h +++ linux-ppc-3.8.0/drivers/scsi/mpt2sas/mpt2sas_base.h @@ -1048,6 +1048,9 @@ void mpt2sas_halt_firmware(struct MPT2SAS_ADAPTER *ioc); +void mpt2sas_base_update_missing_delay(struct MPT2SAS_ADAPTER *ioc, + u16 device_missing_delay, u8 io_missing_delay); + int mpt2sas_port_enable(struct MPT2SAS_ADAPTER *ioc); /* scsih shared API */ --- linux-ppc-3.8.0.orig/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ linux-ppc-3.8.0/drivers/scsi/mpt2sas/mpt2sas_scsih.c @@ -101,6 +101,10 @@ module_param(max_sectors, ushort, 0); MODULE_PARM_DESC(max_sectors, "max sectors, range 64 to 32767 default=32767"); +static int missing_delay[2] = {-1, -1}; +module_param_array(missing_delay, int, NULL, 0); +MODULE_PARM_DESC(missing_delay, " device missing delay , io missing delay"); + /* scsi-mid layer global parmeter is max_report_luns, which is 511 */ #define MPT2SAS_MAX_LUN (16895) static int max_lun = MPT2SAS_MAX_LUN; @@ -3994,11 +3998,7 @@ else mpi_control |= MPI2_SCSIIO_CONTROL_SIMPLEQ; } else -/* MPI Revision I (UNIT = 0xA) - removed MPI2_SCSIIO_CONTROL_UNTAGGED */ -/* mpi_control |= MPI2_SCSIIO_CONTROL_UNTAGGED; - */ - mpi_control |= (0x500); - + mpi_control |= MPI2_SCSIIO_CONTROL_SIMPLEQ; } else mpi_control |= MPI2_SCSIIO_CONTROL_SIMPLEQ; /* Make sure Device is not raid volume. @@ -7093,12 +7093,15 @@ struct _sas_device *sas_device; struct _sas_node *expander_device; static struct _raid_device *raid_device; + u8 retry_count; unsigned long flags; printk(MPT2SAS_INFO_FMT "scan devices: start\n", ioc->name); _scsih_sas_host_refresh(ioc); + printk(MPT2SAS_INFO_FMT "\tscan devices: expanders start\n", + ioc->name); /* expanders */ handle = 0xFFFF; while (!(mpt2sas_config_get_expander_pg0(ioc, &mpi_reply, &expander_pg0, @@ -7107,6 +7110,13 @@ MPI2_IOCSTATUS_MASK; if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) break; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { + printk(MPT2SAS_INFO_FMT "\tbreak from expander scan: " + "ioc_status(0x%04x), loginfo(0x%08x)\n", + ioc->name, ioc_status, + le32_to_cpu(mpi_reply.IOCLogInfo)); + break; + } handle = le16_to_cpu(expander_pg0.DevHandle); spin_lock_irqsave(&ioc->sas_node_lock, flags); expander_device = mpt2sas_scsih_expander_find_by_sas_address( @@ -7115,13 +7125,26 @@ if (expander_device) _scsih_refresh_expander_links(ioc, expander_device, handle); - else + else { + printk(MPT2SAS_INFO_FMT "\tBEFORE adding expander: " + "handle (0x%04x), sas_addr(0x%016llx)\n", + ioc->name, handle, (unsigned long long) + le64_to_cpu(expander_pg0.SASAddress)); _scsih_expander_add(ioc, handle); + printk(MPT2SAS_INFO_FMT "\tAFTER adding expander: " + "handle (0x%04x), sas_addr(0x%016llx)\n", + ioc->name, handle, (unsigned long long) + le64_to_cpu(expander_pg0.SASAddress)); + } } + printk(MPT2SAS_INFO_FMT "\tscan devices: expanders complete\n", + ioc->name); + if (!ioc->ir_firmware) goto skip_to_sas; + printk(MPT2SAS_INFO_FMT "\tscan devices phys disk start\n", ioc->name); /* phys disk */ phys_disk_num = 0xFF; while (!(mpt2sas_config_get_phys_disk_pg0(ioc, &mpi_reply, @@ -7131,6 +7154,13 @@ MPI2_IOCSTATUS_MASK; if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) break; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { + printk(MPT2SAS_INFO_FMT "\tbreak from phys disk scan:" + "ioc_status(0x%04x), loginfo(0x%08x)\n", + ioc->name, ioc_status, + le32_to_cpu(mpi_reply.IOCLogInfo)); + break; + } phys_disk_num = pd_pg0.PhysDiskNum; handle = le16_to_cpu(pd_pg0.DevHandle); spin_lock_irqsave(&ioc->sas_device_lock, flags); @@ -7142,17 +7172,46 @@ &sas_device_pg0, MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle) != 0) continue; + ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & + MPI2_IOCSTATUS_MASK; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { + printk(MPT2SAS_INFO_FMT "\tbreak from phys disk scan " + "ioc_status(0x%04x), loginfo(0x%08x)\n", + ioc->name, ioc_status, + le32_to_cpu(mpi_reply.IOCLogInfo)); + break; + } parent_handle = le16_to_cpu(sas_device_pg0.ParentDevHandle); if (!_scsih_get_sas_address(ioc, parent_handle, &sas_address)) { + printk(MPT2SAS_INFO_FMT "\tBEFORE adding phys disk: " + " handle (0x%04x), sas_addr(0x%016llx)\n", + ioc->name, handle, (unsigned long long) + le64_to_cpu(sas_device_pg0.SASAddress)); mpt2sas_transport_update_links(ioc, sas_address, handle, sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5); set_bit(handle, ioc->pd_handles); - _scsih_add_device(ioc, handle, 0, 1); + retry_count = 0; + /* This will retry adding the end device. + * _scsih_add_device() will decide on retries and + * return "1" when it should be retried + */ + while (_scsih_add_device(ioc, handle, retry_count++, + 1)) { + ssleep(1); + } + printk(MPT2SAS_INFO_FMT "\tAFTER adding phys disk: " + " handle (0x%04x), sas_addr(0x%016llx)\n", + ioc->name, handle, (unsigned long long) + le64_to_cpu(sas_device_pg0.SASAddress)); } } + printk(MPT2SAS_INFO_FMT "\tscan devices: phys disk complete\n", + ioc->name); + + printk(MPT2SAS_INFO_FMT "\tscan devices: volumes start\n", ioc->name); /* volumes */ handle = 0xFFFF; while (!(mpt2sas_config_get_raid_volume_pg1(ioc, &mpi_reply, @@ -7161,6 +7220,13 @@ MPI2_IOCSTATUS_MASK; if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) break; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { + printk(MPT2SAS_INFO_FMT "\tbreak from volume scan: " + "ioc_status(0x%04x), loginfo(0x%08x)\n", + ioc->name, ioc_status, + le32_to_cpu(mpi_reply.IOCLogInfo)); + break; + } handle = le16_to_cpu(volume_pg1.DevHandle); spin_lock_irqsave(&ioc->raid_device_lock, flags); raid_device = _scsih_raid_device_find_by_wwid(ioc, @@ -7172,18 +7238,38 @@ &volume_pg0, MPI2_RAID_VOLUME_PGAD_FORM_HANDLE, handle, sizeof(Mpi2RaidVolPage0_t))) continue; + ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & + MPI2_IOCSTATUS_MASK; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { + printk(MPT2SAS_INFO_FMT "\tbreak from volume scan: " + "ioc_status(0x%04x), loginfo(0x%08x)\n", + ioc->name, ioc_status, + le32_to_cpu(mpi_reply.IOCLogInfo)); + break; + } if (volume_pg0.VolumeState == MPI2_RAID_VOL_STATE_OPTIMAL || volume_pg0.VolumeState == MPI2_RAID_VOL_STATE_ONLINE || volume_pg0.VolumeState == MPI2_RAID_VOL_STATE_DEGRADED) { memset(&element, 0, sizeof(Mpi2EventIrConfigElement_t)); element.ReasonCode = MPI2_EVENT_IR_CHANGE_RC_ADDED; element.VolDevHandle = volume_pg1.DevHandle; + printk(MPT2SAS_INFO_FMT "\tBEFORE adding volume: " + " handle (0x%04x)\n", ioc->name, + volume_pg1.DevHandle); _scsih_sas_volume_add(ioc, &element); + printk(MPT2SAS_INFO_FMT "\tAFTER adding volume: " + " handle (0x%04x)\n", ioc->name, + volume_pg1.DevHandle); } } + printk(MPT2SAS_INFO_FMT "\tscan devices: volumes complete\n", + ioc->name); + skip_to_sas: + printk(MPT2SAS_INFO_FMT "\tscan devices: end devices start\n", + ioc->name); /* sas devices */ handle = 0xFFFF; while (!(mpt2sas_config_get_sas_device_pg0(ioc, &mpi_reply, @@ -7193,6 +7279,13 @@ MPI2_IOCSTATUS_MASK; if (ioc_status == MPI2_IOCSTATUS_CONFIG_INVALID_PAGE) break; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { + printk(MPT2SAS_INFO_FMT "\tbreak from end device scan:" + " ioc_status(0x%04x), loginfo(0x%08x)\n", + ioc->name, ioc_status, + le32_to_cpu(mpi_reply.IOCLogInfo)); + break; + } handle = le16_to_cpu(sas_device_pg0.DevHandle); if (!(_scsih_is_end_device( le32_to_cpu(sas_device_pg0.DeviceInfo)))) @@ -7205,12 +7298,31 @@ continue; parent_handle = le16_to_cpu(sas_device_pg0.ParentDevHandle); if (!_scsih_get_sas_address(ioc, parent_handle, &sas_address)) { + printk(MPT2SAS_INFO_FMT "\tBEFORE adding end device: " + "handle (0x%04x), sas_addr(0x%016llx)\n", + ioc->name, handle, (unsigned long long) + le64_to_cpu(sas_device_pg0.SASAddress)); mpt2sas_transport_update_links(ioc, sas_address, handle, sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5); - _scsih_add_device(ioc, handle, 0, 0); + retry_count = 0; + /* This will retry adding the end device. + * _scsih_add_device() will decide on retries and + * return "1" when it should be retried + */ + while (_scsih_add_device(ioc, handle, retry_count++, + 0)) { + ssleep(1); + } + printk(MPT2SAS_INFO_FMT "\tAFTER adding end device: " + "handle (0x%04x), sas_addr(0x%016llx)\n", + ioc->name, handle, (unsigned long long) + le64_to_cpu(sas_device_pg0.SASAddress)); } } + printk(MPT2SAS_INFO_FMT "\tscan devices: end devices complete\n", + ioc->name); + printk(MPT2SAS_INFO_FMT "scan devices: complete\n", ioc->name); } @@ -7303,7 +7415,9 @@ case MPT2SAS_PORT_ENABLE_COMPLETE: ioc->start_scan = 0; - + if (missing_delay[0] != -1 && missing_delay[1] != -1) + mpt2sas_base_update_missing_delay(ioc, missing_delay[0], + missing_delay[1]); dewtprintk(ioc, printk(MPT2SAS_INFO_FMT "port enable: complete " "from worker thread\n", ioc->name)); @@ -8070,8 +8184,8 @@ if (max_sectors != 0xFFFF) { if (max_sectors < 64) { shost->max_sectors = 64; - printk(MPT2SAS_WARN_FMT "Invalid value %d passed "\ - "for max_sectors, range is 64 to 32767. Assigning "\ + printk(MPT2SAS_WARN_FMT "Invalid value %d passed " + "for max_sectors, range is 64 to 32767. Assigning " "value of 64.\n", ioc->name, max_sectors); } else if (max_sectors > 32767) { shost->max_sectors = 32767; --- linux-ppc-3.8.0.orig/drivers/scsi/libsas/sas_expander.c +++ linux-ppc-3.8.0/drivers/scsi/libsas/sas_expander.c @@ -235,6 +235,17 @@ linkrate = phy->linkrate; memcpy(sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE); + /* Handle vacant phy - rest of dr data is not valid so skip it */ + if (phy->phy_state == PHY_VACANT) { + memset(phy->attached_sas_addr, 0, SAS_ADDR_SIZE); + phy->attached_dev_type = NO_DEVICE; + if (!test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state)) { + phy->phy_id = phy_id; + goto skip; + } else + goto out; + } + phy->attached_dev_type = to_dev_type(dr); if (test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state)) goto out; @@ -272,6 +283,7 @@ phy->phy->maximum_linkrate = dr->pmax_linkrate; phy->phy->negotiated_linkrate = phy->linkrate; + skip: if (new_phy) if (sas_phy_add(phy->phy)) { sas_phy_free(phy->phy); --- linux-ppc-3.8.0.orig/drivers/target/target_core_transport.c +++ linux-ppc-3.8.0/drivers/target/target_core_transport.c @@ -1136,8 +1136,10 @@ return ret; ret = target_check_reservation(cmd); - if (ret) + if (ret) { + cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT; return ret; + } ret = dev->transport->parse_cdb(cmd); if (ret) @@ -2207,21 +2209,19 @@ { struct se_cmd *se_cmd = container_of(kref, struct se_cmd, cmd_kref); struct se_session *se_sess = se_cmd->se_sess; - unsigned long flags; - spin_lock_irqsave(&se_sess->sess_cmd_lock, flags); if (list_empty(&se_cmd->se_cmd_list)) { - spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + spin_unlock(&se_sess->sess_cmd_lock); se_cmd->se_tfo->release_cmd(se_cmd); return; } if (se_sess->sess_tearing_down && se_cmd->cmd_wait_set) { - spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + spin_unlock(&se_sess->sess_cmd_lock); complete(&se_cmd->cmd_wait_comp); return; } list_del(&se_cmd->se_cmd_list); - spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); + spin_unlock(&se_sess->sess_cmd_lock); se_cmd->se_tfo->release_cmd(se_cmd); } @@ -2232,7 +2232,8 @@ */ int target_put_sess_cmd(struct se_session *se_sess, struct se_cmd *se_cmd) { - return kref_put(&se_cmd->cmd_kref, target_release_cmd_kref); + return kref_put_spinlock_irqsave(&se_cmd->cmd_kref, target_release_cmd_kref, + &se_sess->sess_cmd_lock); } EXPORT_SYMBOL(target_put_sess_cmd); --- linux-ppc-3.8.0.orig/drivers/target/target_core_device.c +++ linux-ppc-3.8.0/drivers/target/target_core_device.c @@ -1182,24 +1182,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"); @@ -1210,7 +1204,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-ppc-3.8.0.orig/drivers/target/target_core_pscsi.c +++ linux-ppc-3.8.0/drivers/target/target_core_pscsi.c @@ -940,7 +940,6 @@ bio = NULL; } - page++; len -= bytes; data_len -= bytes; off = 0; --- linux-ppc-3.8.0.orig/drivers/target/target_core_fabric_configfs.c +++ linux-ppc-3.8.0/drivers/target/target_core_fabric_configfs.c @@ -354,9 +354,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-ppc-3.8.0.orig/drivers/target/target_core_tpg.c +++ linux-ppc-3.8.0/drivers/target/target_core_tpg.c @@ -111,16 +111,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-ppc-3.8.0.orig/drivers/target/target_core_internal.h +++ linux-ppc-3.8.0/drivers/target/target_core_internal.h @@ -45,7 +45,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-ppc-3.8.0.orig/drivers/target/target_core_file.h +++ linux-ppc-3.8.0/drivers/target/target_core_file.h @@ -7,7 +7,7 @@ #define FD_DEVICE_QUEUE_DEPTH 32 #define FD_MAX_DEVICE_QUEUE_DEPTH 128 #define FD_BLOCKSIZE 512 -#define FD_MAX_SECTORS 1024 +#define FD_MAX_SECTORS 2048 #define RRF_EMULATE_CDB 0x01 #define RRF_GOT_LBA 0x02 --- linux-ppc-3.8.0.orig/drivers/target/target_core_alua.c +++ linux-ppc-3.8.0/drivers/target/target_core_alua.c @@ -408,6 +408,7 @@ case REPORT_LUNS: case RECEIVE_DIAGNOSTIC: case SEND_DIAGNOSTIC: + return 0; case MAINTENANCE_IN: switch (cdb[1] & 0x1f) { case MI_REPORT_TARGET_PGS: @@ -450,6 +451,7 @@ switch (cdb[0]) { case INQUIRY: case REPORT_LUNS: + return 0; case MAINTENANCE_IN: switch (cdb[1] & 0x1f) { case MI_REPORT_TARGET_PGS: @@ -490,6 +492,7 @@ switch (cdb[0]) { case INQUIRY: case REPORT_LUNS: + return 0; case MAINTENANCE_IN: switch (cdb[1] & 0x1f) { case MI_REPORT_TARGET_PGS: --- linux-ppc-3.8.0.orig/drivers/target/target_core_file.c +++ linux-ppc-3.8.0/drivers/target/target_core_file.c @@ -151,10 +151,6 @@ struct request_queue *q = bdev_get_queue(inode->i_bdev); unsigned long long dev_size; - dev->dev_attrib.hw_block_size = - bdev_logical_block_size(inode->i_bdev); - dev->dev_attrib.hw_max_sectors = queue_max_hw_sectors(q); - /* * Determine the number of bytes from i_size_read() minus * one (1) logical sector from underlying struct block_device @@ -173,13 +169,12 @@ " block_device\n"); goto fail; } - - dev->dev_attrib.hw_block_size = FD_BLOCKSIZE; - dev->dev_attrib.hw_max_sectors = FD_MAX_SECTORS; } fd_dev->fd_block_size = dev->dev_attrib.hw_block_size; + dev->dev_attrib.hw_block_size = FD_BLOCKSIZE; + dev->dev_attrib.hw_max_sectors = FD_MAX_SECTORS; dev->dev_attrib.hw_queue_depth = FD_MAX_DEVICE_QUEUE_DEPTH; if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) { --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target_erl0.c +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target_erl0.c @@ -842,11 +842,11 @@ return 0; sess->time2retain_timer_flags |= ISCSI_TF_STOP; - spin_unlock_bh(&se_tpg->session_lock); + spin_unlock(&se_tpg->session_lock); del_timer_sync(&sess->time2retain_timer); - spin_lock_bh(&se_tpg->session_lock); + spin_lock(&se_tpg->session_lock); sess->time2retain_timer_flags &= ~ISCSI_TF_RUNNING; pr_debug("Stopped Time2Retain Timer for SID: %u\n", sess->sid); --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target_auth.c +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target_auth.c @@ -166,6 +166,7 @@ { char *endptr; unsigned long id; + unsigned char id_as_uchar; unsigned char digest[MD5_SIGNATURE_SIZE]; unsigned char type, response[MD5_SIGNATURE_SIZE * 2 + 2]; unsigned char identifier[10], *challenge = NULL; @@ -355,7 +356,9 @@ goto out; } - sg_init_one(&sg, &id, 1); + /* To handle both endiannesses */ + id_as_uchar = id; + sg_init_one(&sg, &id_as_uchar, 1); ret = crypto_hash_update(&desc, &sg, 1); if (ret < 0) { pr_err("crypto_hash_update() failed for id\n"); --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target_parameters.c +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target_parameters.c @@ -712,9 +712,9 @@ } INIT_LIST_HEAD(&extra_response->er_list); - strncpy(extra_response->key, key, strlen(key) + 1); - strncpy(extra_response->value, NOTUNDERSTOOD, - strlen(NOTUNDERSTOOD) + 1); + strlcpy(extra_response->key, key, sizeof(extra_response->key)); + strlcpy(extra_response->value, NOTUNDERSTOOD, + sizeof(extra_response->value)); list_add_tail(&extra_response->er_list, ¶m_list->extra_response_list); @@ -1583,8 +1583,6 @@ if (phase & PHASE_SECURITY) { if (iscsi_check_for_auth_key(key) > 0) { - char *tmpptr = key + strlen(key); - *tmpptr = '='; kfree(tmpbuf); return 1; } --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target_parameters.h +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target_parameters.h @@ -1,8 +1,10 @@ #ifndef ISCSI_PARAMETERS_H #define ISCSI_PARAMETERS_H +#include + struct iscsi_extra_response { - char key[64]; + char key[KEY_MAXLEN]; char value[32]; struct list_head er_list; } ____cacheline_aligned; --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target_configfs.c +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target_configfs.c @@ -393,7 +393,7 @@ if (!capable(CAP_SYS_ADMIN)) \ return -EPERM; \ \ - snprintf(auth->name, PAGE_SIZE, "%s", page); \ + snprintf(auth->name, sizeof(auth->name), "%s", page); \ if (!strncmp("NULL", auth->name, 4)) \ auth->naf_flags &= ~flags; \ else \ --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target.c +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target.c @@ -3570,6 +3570,10 @@ spin_lock_bh(&cmd->istate_lock); cmd->i_state = ISTATE_SENT_STATUS; spin_unlock_bh(&cmd->istate_lock); + + if (atomic_read(&conn->check_immediate_queue)) + return 1; + continue; } else if (ret == 2) { /* Still must send status, @@ -3659,7 +3663,7 @@ } if (atomic_read(&conn->check_immediate_queue)) - break; + return 1; } return 0; @@ -3703,12 +3707,15 @@ signal_pending(current)) goto transport_err; +get_immediate: ret = handle_immediate_queue(conn); if (ret < 0) goto transport_err; ret = handle_response_queue(conn); - if (ret == -EAGAIN) + if (ret == 1) + goto get_immediate; + else if (ret == -EAGAIN) goto restart; else if (ret < 0) goto transport_err; --- linux-ppc-3.8.0.orig/drivers/target/iscsi/iscsi_target_erl1.c +++ linux-ppc-3.8.0/drivers/target/iscsi/iscsi_target_erl1.c @@ -819,7 +819,7 @@ /* * CmdSN is greater than the tail of the list. */ - if (ooo_tail->cmdsn < ooo_cmdsn->cmdsn) + if (iscsi_sna_lt(ooo_tail->cmdsn, ooo_cmdsn->cmdsn)) list_add_tail(&ooo_cmdsn->ooo_list, &sess->sess_ooo_cmdsn_list); else { @@ -829,11 +829,12 @@ */ list_for_each_entry(ooo_tmp, &sess->sess_ooo_cmdsn_list, ooo_list) { - if (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn) + if (iscsi_sna_lt(ooo_tmp->cmdsn, ooo_cmdsn->cmdsn)) continue; + /* Insert before this entry */ list_add(&ooo_cmdsn->ooo_list, - &ooo_tmp->ooo_list); + ooo_tmp->ooo_list.prev); break; } } --- linux-ppc-3.8.0.orig/drivers/input/mouse/alps.h +++ linux-ppc-3.8.0/drivers/input/mouse/alps.h @@ -12,35 +12,147 @@ #ifndef _ALPS_H #define _ALPS_H -#define ALPS_PROTO_V1 0 -#define ALPS_PROTO_V2 1 -#define ALPS_PROTO_V3 2 -#define ALPS_PROTO_V4 3 +#define ALPS_PROTO_V1 1 +#define ALPS_PROTO_V2 2 +#define ALPS_PROTO_V3 3 +#define ALPS_PROTO_V4 4 +#define ALPS_PROTO_V5 5 +/** + * struct alps_model_info - touchpad ID table + * @signature: E7 response string to match. + * @command_mode_resp: For V3/V4 touchpads, the final byte of the EC response + * (aka command mode response) identifies the firmware minor version. This + * can be used to distinguish different hardware models which are not + * uniquely identifiable through their E7 responses. + * @proto_version: Indicates V1/V2/V3/... + * @byte0: Helps figure out whether a position report packet matches the + * known format for this model. The first byte of the report, ANDed with + * mask0, should match byte0. + * @mask0: The mask used to check the first byte of the report. + * @flags: Additional device capabilities (passthrough port, trackstick, etc.). + * + * Many (but not all) ALPS touchpads can be identified by looking at the + * values returned in the "E7 report" and/or the "EC report." This table + * lists a number of such touchpads. + */ struct alps_model_info { - unsigned char signature[3]; - unsigned char command_mode_resp; /* v3/v4 only */ + unsigned char signature[3]; + unsigned char command_mode_resp; unsigned char proto_version; - unsigned char byte0, mask0; - unsigned char flags; + unsigned char byte0, mask0; + unsigned char flags; }; +/** + * struct alps_nibble_commands - encodings for register accesses + * @command: PS/2 command used for the nibble + * @data: Data supplied as an argument to the PS/2 command, if applicable + * + * The ALPS protocol uses magic sequences to transmit binary data to the + * touchpad, as it is generally not OK to send arbitrary bytes out the + * PS/2 port. Each of the sequences in this table sends one nibble of the + * register address or (write) data. Different versions of the ALPS protocol + * use slightly different encodings. + */ struct alps_nibble_commands { int command; unsigned char data; }; +/** + * struct alps_fields - decoded version of the report packet + * @x_map: Bitmap of active X positions for MT. + * @y_map: Bitmap of active Y positions for MT. + * @fingers: Number of fingers for MT. + * @x: X position for ST. + * @y: Y position for ST. + * @z: Z position for ST. + * @first_mp: Packet is the first of a multi-packet report. + * @is_mp: Packet is part of a multi-packet report. + * @left: Left touchpad button is active. + * @right: Right touchpad button is active. + * @middle: Middle touchpad button is active. + * @ts_left: Left trackstick button is active. + * @ts_right: Right trackstick button is active. + * @ts_middle: Middle trackstick button is active. + */ +struct alps_fields { + unsigned int x_map; + unsigned int y_map; + unsigned int fingers; + unsigned int x; + unsigned int y; + unsigned int z; + unsigned int first_mp:1; + unsigned int is_mp:1; + + unsigned int left:1; + unsigned int right:1; + unsigned int middle:1; + + unsigned int ts_left:1; + unsigned int ts_right:1; + unsigned int ts_middle:1; +}; + +/** + * struct alps_data - private data structure for the ALPS driver + * @dev2: "Relative" device used to report trackstick or mouse activity. + * @phys: Physical path for the relative device. + * @nibble_commands: Command mapping used for touchpad register accesses. + * @addr_command: Command used to tell the touchpad that a register address + * follows. + * @proto_version: Indicates V1/V2/V3/... + * @byte0: Helps figure out whether a position report packet matches the + * known format for this model. The first byte of the report, ANDed with + * mask0, should match byte0. + * @mask0: The mask used to check the first byte of the report. + * @flags: Additional device capabilities (passthrough port, trackstick, etc.). + * @x_max: Largest possible X position value. + * @y_max: Largest possible Y position value. + * @x_bits: Number of X bits in the MT bitmap. + * @y_bits: Number of Y bits in the MT bitmap. + * @hw_init: Protocol-specific hardware init function. + * @process_packet: Protocol-specific function to process a report packet. + * @decode_fields: Protocol-specific function to read packet bitfields. + * @set_abs_params: Protocol-specific function to configure the input_dev. + * @prev_fin: Finger bit from previous packet. + * @multi_packet: Multi-packet data in progress. + * @multi_data: Saved multi-packet data. + * @x1: First X coordinate from last MT report. + * @x2: Second X coordinate from last MT report. + * @y1: First Y coordinate from last MT report. + * @y2: Second Y coordinate from last MT report. + * @fingers: Number of fingers from last MT report. + * @quirks: Bitmap of ALPS_QUIRK_*. + * @timer: Timer for flushing out the final report packet in the stream. + */ struct alps_data { - struct input_dev *dev2; /* Relative device */ - char phys[32]; /* Phys */ - const struct alps_model_info *i;/* Info */ + struct input_dev *dev2; + char phys[32]; + + /* these are autodetected when the device is identified */ const struct alps_nibble_commands *nibble_commands; - int addr_command; /* Command to set register address */ - int prev_fin; /* Finger bit from previous packet */ - int multi_packet; /* Multi-packet data in progress */ - unsigned char multi_data[6]; /* Saved multi-packet data */ - int x1, x2, y1, y2; /* Coordinates from last MT report */ - int fingers; /* Number of fingers from MT report */ + int addr_command; + unsigned char proto_version; + unsigned char byte0, mask0; + unsigned char flags; + int x_max; + int y_max; + int x_bits; + int y_bits; + + int (*hw_init)(struct psmouse *psmouse); + void (*process_packet)(struct psmouse *psmouse); + void (*decode_fields)(struct alps_fields *f, unsigned char *p); + void (*set_abs_params)(struct alps_data *priv, struct input_dev *dev1); + + int prev_fin; + int multi_packet; + unsigned char multi_data[6]; + int x1, x2, y1, y2; + int fingers; u8 quirks; struct timer_list timer; }; --- linux-ppc-3.8.0.orig/drivers/input/mouse/Makefile +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/input/mouse/bcm5974.c +++ linux-ppc-3.8.0/drivers/input/mouse/bcm5974.c @@ -88,6 +88,10 @@ #define USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI 0x0259 #define USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO 0x025a #define USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS 0x025b +/* MacbookAir6,2 (unibody, June 2013) */ +#define USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI 0x0291 +#define USB_DEVICE_ID_APPLE_WELLSPRING8_ISO 0x0292 +#define USB_DEVICE_ID_APPLE_WELLSPRING8_JIS 0x0293 #define BCM5974_DEVICE(prod) { \ .match_flags = (USB_DEVICE_ID_MATCH_DEVICE | \ @@ -145,6 +149,10 @@ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI), BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO), BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS), + /* MacbookAir6,2 */ + BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI), + BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING8_ISO), + BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING8_JIS), /* Terminating entry */ {} }; @@ -172,15 +180,18 @@ /* trackpad header types */ enum tp_type { TYPE1, /* plain trackpad */ - TYPE2 /* button integrated in trackpad */ + TYPE2, /* button integrated in trackpad */ + TYPE3 /* additional header fields since June 2013 */ }; /* trackpad finger data offsets, le16-aligned */ #define FINGER_TYPE1 (13 * sizeof(__le16)) #define FINGER_TYPE2 (15 * sizeof(__le16)) +#define FINGER_TYPE3 (19 * sizeof(__le16)) /* trackpad button data offsets */ #define BUTTON_TYPE2 15 +#define BUTTON_TYPE3 23 /* list of device capability bits */ #define HAS_INTEGRATED_BUTTON 1 @@ -400,6 +411,19 @@ { SN_COORD, -150, 6730 }, { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION } }, + { + USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI, + USB_DEVICE_ID_APPLE_WELLSPRING8_ISO, + USB_DEVICE_ID_APPLE_WELLSPRING8_JIS, + HAS_INTEGRATED_BUTTON, + 0, sizeof(struct bt_data), + 0x83, TYPE3, FINGER_TYPE3, FINGER_TYPE3 + SIZEOF_ALL_FINGERS, + { SN_PRESSURE, 0, 300 }, + { SN_WIDTH, 0, 2048 }, + { SN_COORD, -4620, 5140 }, + { SN_COORD, -150, 6600 }, + { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION } + }, {} }; @@ -557,6 +581,9 @@ input_report_key(input, BTN_LEFT, ibt); } + if (c->tp_type == TYPE3) + input_report_key(input, BTN_LEFT, dev->tp_data[BUTTON_TYPE3]); + input_sync(input); return 0; @@ -572,9 +599,14 @@ static int bcm5974_wellspring_mode(struct bcm5974 *dev, bool on) { - char *data = kmalloc(8, GFP_KERNEL); int retval = 0, size; + char *data; + + /* Type 3 does not require a mode switch */ + if (dev->cfg.tp_type == TYPE3) + return 0; + data = kmalloc(8, GFP_KERNEL); if (!data) { dev_err(&dev->intf->dev, "out of memory\n"); retval = -ENOMEM; --- linux-ppc-3.8.0.orig/drivers/input/mouse/synaptics.c +++ linux-ppc-3.8.0/drivers/input/mouse/synaptics.c @@ -1293,7 +1293,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, @@ -1355,6 +1357,7 @@ { struct synaptics_data *priv = psmouse->private; struct synaptics_data old_priv = *priv; + unsigned char param[2]; int retry = 0; int error; @@ -1370,6 +1373,7 @@ */ ssleep(1); } + ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETID); error = synaptics_detect(psmouse, 0); } while (error && ++retry < 3); --- linux-ppc-3.8.0.orig/drivers/input/mouse/psmouse.h +++ linux-ppc-3.8.0/drivers/input/mouse/psmouse.h @@ -95,6 +95,7 @@ PSMOUSE_ELANTECH, PSMOUSE_FSP, PSMOUSE_SYNAPTICS_RELATIVE, + PSMOUSE_CYPRESS, PSMOUSE_AUTO /* This one should always be last */ }; --- linux-ppc-3.8.0.orig/drivers/input/mouse/alps.c +++ linux-ppc-3.8.0/drivers/input/mouse/alps.c @@ -27,14 +27,11 @@ /* * Definitions for ALPS version 3 and 4 command mode protocol */ -#define ALPS_V3_X_MAX 2000 -#define ALPS_V3_Y_MAX 1400 - -#define ALPS_BITMAP_X_BITS 15 -#define ALPS_BITMAP_Y_BITS 11 - #define ALPS_CMD_NIBBLE_10 0x01f2 +#define ALPS_REG_BASE_RUSHMORE 0xc2c0 +#define ALPS_REG_BASE_PINNACLE 0x0000 + static const struct alps_nibble_commands alps_v3_nibble_commands[] = { { PSMOUSE_CMD_SETPOLL, 0x00 }, /* 0 */ { PSMOUSE_CMD_RESET_DIS, 0x00 }, /* 1 */ @@ -109,11 +106,14 @@ { { 0x73, 0x02, 0x50 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_FOUR_BUTTONS }, /* Dell Vostro 1400 */ { { 0x52, 0x01, 0x14 }, 0x00, ALPS_PROTO_V2, 0xff, 0xff, ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED }, /* Toshiba Tecra A11-11L */ - { { 0x73, 0x02, 0x64 }, 0x9b, ALPS_PROTO_V3, 0x8f, 0x8f, ALPS_DUALPOINT }, - { { 0x73, 0x02, 0x64 }, 0x9d, ALPS_PROTO_V3, 0x8f, 0x8f, ALPS_DUALPOINT }, { { 0x73, 0x02, 0x64 }, 0x8a, ALPS_PROTO_V4, 0x8f, 0x8f, 0 }, }; +static void alps_set_abs_params_st(struct alps_data *priv, + struct input_dev *dev1); +static void alps_set_abs_params_mt(struct alps_data *priv, + struct input_dev *dev1); + /* * XXX - this entry is suspicious. First byte has zero lower nibble, * which is what a normal mouse would report. Also, the value 0x0e @@ -122,10 +122,10 @@ /* Packet formats are described in Documentation/input/alps.txt */ -static bool alps_is_valid_first_byte(const struct alps_model_info *model, +static bool alps_is_valid_first_byte(struct alps_data *priv, unsigned char data) { - return (data & model->mask0) == model->byte0; + return (data & priv->mask0) == priv->byte0; } static void alps_report_buttons(struct psmouse *psmouse, @@ -158,14 +158,13 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse) { struct alps_data *priv = psmouse->private; - const struct alps_model_info *model = priv->i; unsigned char *packet = psmouse->packet; struct input_dev *dev = psmouse->dev; struct input_dev *dev2 = priv->dev2; int x, y, z, ges, fin, left, right, middle; int back = 0, forward = 0; - if (model->proto_version == ALPS_PROTO_V1) { + if (priv->proto_version == ALPS_PROTO_V1) { left = packet[2] & 0x10; right = packet[2] & 0x08; middle = 0; @@ -181,12 +180,12 @@ z = packet[5]; } - if (model->flags & ALPS_FW_BK_1) { + if (priv->flags & ALPS_FW_BK_1) { back = packet[0] & 0x10; forward = packet[2] & 4; } - if (model->flags & ALPS_FW_BK_2) { + if (priv->flags & ALPS_FW_BK_2) { back = packet[3] & 4; forward = packet[2] & 4; if ((middle = forward && back)) @@ -196,7 +195,7 @@ ges = packet[2] & 1; fin = packet[2] & 2; - if ((model->flags & ALPS_DUALPOINT) && z == 127) { + if ((priv->flags & ALPS_DUALPOINT) && z == 127) { input_report_rel(dev2, REL_X, (x > 383 ? (x - 768) : x)); input_report_rel(dev2, REL_Y, -(y > 255 ? (y - 512) : y)); @@ -239,15 +238,15 @@ input_report_abs(dev, ABS_PRESSURE, z); input_report_key(dev, BTN_TOOL_FINGER, z > 0); - if (model->flags & ALPS_WHEEL) + if (priv->flags & ALPS_WHEEL) input_report_rel(dev, REL_WHEEL, ((packet[2] << 1) & 0x08) - ((packet[0] >> 4) & 0x07)); - if (model->flags & (ALPS_FW_BK_1 | ALPS_FW_BK_2)) { + if (priv->flags & (ALPS_FW_BK_1 | ALPS_FW_BK_2)) { input_report_key(dev, BTN_FORWARD, forward); input_report_key(dev, BTN_BACK, back); } - if (model->flags & ALPS_FOUR_BUTTONS) { + if (priv->flags & ALPS_FOUR_BUTTONS) { input_report_key(dev, BTN_0, packet[2] & 4); input_report_key(dev, BTN_1, packet[0] & 0x10); input_report_key(dev, BTN_2, packet[3] & 4); @@ -267,7 +266,8 @@ * These points are returned in x1, y1, x2, and y2 when the return value * is greater than 0. */ -static int alps_process_bitmap(unsigned int x_map, unsigned int y_map, +static int alps_process_bitmap(struct alps_data *priv, + unsigned int x_map, unsigned int y_map, int *x1, int *y1, int *x2, int *y2) { struct alps_bitmap_point { @@ -309,7 +309,7 @@ * y bitmap is reversed for what we need (lower positions are in * higher bits), so we process from the top end. */ - y_map = y_map << (sizeof(y_map) * BITS_PER_BYTE - ALPS_BITMAP_Y_BITS); + y_map = y_map << (sizeof(y_map) * BITS_PER_BYTE - priv->y_bits); prev_bit = 0; point = &y_low; for (i = 0; y_map != 0; i++, y_map <<= 1) { @@ -355,16 +355,18 @@ } } - *x1 = (ALPS_V3_X_MAX * (2 * x_low.start_bit + x_low.num_bits - 1)) / - (2 * (ALPS_BITMAP_X_BITS - 1)); - *y1 = (ALPS_V3_Y_MAX * (2 * y_low.start_bit + y_low.num_bits - 1)) / - (2 * (ALPS_BITMAP_Y_BITS - 1)); + *x1 = (priv->x_max * (2 * x_low.start_bit + x_low.num_bits - 1)) / + (2 * (priv->x_bits - 1)); + *y1 = (priv->y_max * (2 * y_low.start_bit + y_low.num_bits - 1)) / + (2 * (priv->y_bits - 1)); if (fingers > 1) { - *x2 = (ALPS_V3_X_MAX * (2 * x_high.start_bit + x_high.num_bits - 1)) / - (2 * (ALPS_BITMAP_X_BITS - 1)); - *y2 = (ALPS_V3_Y_MAX * (2 * y_high.start_bit + y_high.num_bits - 1)) / - (2 * (ALPS_BITMAP_Y_BITS - 1)); + *x2 = (priv->x_max * + (2 * x_high.start_bit + x_high.num_bits - 1)) / + (2 * (priv->x_bits - 1)); + *y2 = (priv->y_max * + (2 * y_high.start_bit + y_high.num_bits - 1)) / + (2 * (priv->y_bits - 1)); } return fingers; @@ -448,17 +450,80 @@ return; } +static void alps_decode_buttons_v3(struct alps_fields *f, unsigned char *p) +{ + f->left = !!(p[3] & 0x01); + f->right = !!(p[3] & 0x02); + f->middle = !!(p[3] & 0x04); + + f->ts_left = !!(p[3] & 0x10); + f->ts_right = !!(p[3] & 0x20); + f->ts_middle = !!(p[3] & 0x40); +} + +static void alps_decode_pinnacle(struct alps_fields *f, unsigned char *p) +{ + f->first_mp = !!(p[4] & 0x40); + f->is_mp = !!(p[0] & 0x40); + + f->fingers = (p[5] & 0x3) + 1; + f->x_map = ((p[4] & 0x7e) << 8) | + ((p[1] & 0x7f) << 2) | + ((p[0] & 0x30) >> 4); + f->y_map = ((p[3] & 0x70) << 4) | + ((p[2] & 0x7f) << 1) | + (p[4] & 0x01); + + f->x = ((p[1] & 0x7f) << 4) | ((p[4] & 0x30) >> 2) | + ((p[0] & 0x30) >> 4); + f->y = ((p[2] & 0x7f) << 4) | (p[4] & 0x0f); + f->z = p[5] & 0x7f; + + alps_decode_buttons_v3(f, p); +} + +static void alps_decode_rushmore(struct alps_fields *f, unsigned char *p) +{ + alps_decode_pinnacle(f, p); + + f->x_map |= (p[5] & 0x10) << 11; + f->y_map |= (p[5] & 0x20) << 6; +} + +static void alps_decode_dolphin(struct alps_fields *f, unsigned char *p) +{ + f->first_mp = !!(p[0] & 0x02); + f->is_mp = !!(p[0] & 0x20); + + f->fingers = ((p[0] & 0x6) >> 1 | + (p[0] & 0x10) >> 2); + f->x_map = ((p[2] & 0x60) >> 5) | + ((p[4] & 0x7f) << 2) | + ((p[5] & 0x7f) << 9) | + ((p[3] & 0x07) << 16) | + ((p[3] & 0x70) << 15) | + ((p[0] & 0x01) << 22); + f->y_map = (p[1] & 0x7f) | + ((p[2] & 0x1f) << 7); + + f->x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7)); + f->y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3)); + f->z = (p[0] & 4) ? 0 : p[5] & 0x7f; + + alps_decode_buttons_v3(f, p); +} + static void alps_process_touchpad_packet_v3(struct psmouse *psmouse) { struct alps_data *priv = psmouse->private; unsigned char *packet = psmouse->packet; struct input_dev *dev = psmouse->dev; struct input_dev *dev2 = priv->dev2; - int x, y, z; - int left, right, middle; int x1 = 0, y1 = 0, x2 = 0, y2 = 0; int fingers = 0, bmap_fingers; - unsigned int x_bitmap, y_bitmap; + struct alps_fields f; + + priv->decode_fields(&f, packet); /* * There's no single feature of touchpad position and bitmap packets @@ -473,16 +538,10 @@ * packet. Check for this, and when it happens process the * position packet as usual. */ - if (packet[0] & 0x40) { - fingers = (packet[5] & 0x3) + 1; - x_bitmap = ((packet[4] & 0x7e) << 8) | - ((packet[1] & 0x7f) << 2) | - ((packet[0] & 0x30) >> 4); - y_bitmap = ((packet[3] & 0x70) << 4) | - ((packet[2] & 0x7f) << 1) | - (packet[4] & 0x01); - - bmap_fingers = alps_process_bitmap(x_bitmap, y_bitmap, + if (f.is_mp) { + fingers = f.fingers; + bmap_fingers = alps_process_bitmap(priv, + f.x_map, f.y_map, &x1, &y1, &x2, &y2); /* @@ -493,7 +552,7 @@ fingers = bmap_fingers; /* Now process position packet */ - packet = priv->multi_data; + priv->decode_fields(&f, priv->multi_data); } else { priv->multi_packet = 0; } @@ -507,10 +566,10 @@ * out misidentified bitmap packets, we reject anything with this * bit set. */ - if (packet[0] & 0x40) + if (f.is_mp) return; - if (!priv->multi_packet && (packet[4] & 0x40)) { + if (!priv->multi_packet && f.first_mp) { priv->multi_packet = 1; memcpy(priv->multi_data, packet, sizeof(priv->multi_data)); return; @@ -518,22 +577,13 @@ priv->multi_packet = 0; - left = packet[3] & 0x01; - right = packet[3] & 0x02; - middle = packet[3] & 0x04; - - x = ((packet[1] & 0x7f) << 4) | ((packet[4] & 0x30) >> 2) | - ((packet[0] & 0x30) >> 4); - y = ((packet[2] & 0x7f) << 4) | (packet[4] & 0x0f); - z = packet[5] & 0x7f; - /* * Sometimes the hardware sends a single packet with z = 0 * in the middle of a stream. Real releases generate packets * with x, y, and z all zero, so these seem to be flukes. * Ignore them. */ - if (x && y && !z) + if (f.x && f.y && !f.z) return; /* @@ -541,12 +591,12 @@ * to rely on ST data. */ if (!fingers) { - x1 = x; - y1 = y; - fingers = z > 0 ? 1 : 0; + x1 = f.x; + y1 = f.y; + fingers = f.z > 0 ? 1 : 0; } - if (z >= 64) + if (f.z >= 64) input_report_key(dev, BTN_TOUCH, 1); else input_report_key(dev, BTN_TOUCH, 0); @@ -555,26 +605,22 @@ input_mt_report_finger_count(dev, fingers); - input_report_key(dev, BTN_LEFT, left); - input_report_key(dev, BTN_RIGHT, right); - input_report_key(dev, BTN_MIDDLE, middle); - - if (z > 0) { - input_report_abs(dev, ABS_X, x); - input_report_abs(dev, ABS_Y, y); + input_report_key(dev, BTN_LEFT, f.left); + input_report_key(dev, BTN_RIGHT, f.right); + input_report_key(dev, BTN_MIDDLE, f.middle); + + if (f.z > 0) { + input_report_abs(dev, ABS_X, f.x); + input_report_abs(dev, ABS_Y, f.y); } - input_report_abs(dev, ABS_PRESSURE, z); + input_report_abs(dev, ABS_PRESSURE, f.z); input_sync(dev); if (!(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) { - left = packet[3] & 0x10; - right = packet[3] & 0x20; - middle = packet[3] & 0x40; - - input_report_key(dev2, BTN_LEFT, left); - input_report_key(dev2, BTN_RIGHT, right); - input_report_key(dev2, BTN_MIDDLE, middle); + input_report_key(dev2, BTN_LEFT, f.ts_left); + input_report_key(dev2, BTN_RIGHT, f.ts_right); + input_report_key(dev2, BTN_MIDDLE, f.ts_middle); input_sync(dev2); } } @@ -639,7 +685,7 @@ ((priv->multi_data[3] & 0x1f) << 5) | (priv->multi_data[1] & 0x1f); - fingers = alps_process_bitmap(x_bitmap, y_bitmap, + fingers = alps_process_bitmap(priv, x_bitmap, y_bitmap, &x1, &y1, &x2, &y2); /* Store MT data.*/ @@ -696,25 +742,6 @@ input_sync(dev); } -static void alps_process_packet(struct psmouse *psmouse) -{ - struct alps_data *priv = psmouse->private; - const struct alps_model_info *model = priv->i; - - switch (model->proto_version) { - case ALPS_PROTO_V1: - case ALPS_PROTO_V2: - alps_process_packet_v1_v2(psmouse); - break; - case ALPS_PROTO_V3: - alps_process_packet_v3(psmouse); - break; - case ALPS_PROTO_V4: - alps_process_packet_v4(psmouse); - break; - } -} - static void alps_report_bare_ps2_packet(struct psmouse *psmouse, unsigned char packet[], bool report_buttons) @@ -765,14 +792,14 @@ if (((psmouse->packet[3] | psmouse->packet[4] | psmouse->packet[5]) & 0x80) || - (!alps_is_valid_first_byte(priv->i, psmouse->packet[6]))) { + (!alps_is_valid_first_byte(priv, psmouse->packet[6]))) { psmouse_dbg(psmouse, "refusing packet %4ph (suspected interleaved ps/2)\n", psmouse->packet + 3); return PSMOUSE_BAD_DATA; } - alps_process_packet(psmouse); + priv->process_packet(psmouse); /* Continue with the next packet */ psmouse->packet[0] = psmouse->packet[6]; @@ -816,6 +843,7 @@ static void alps_flush_packet(unsigned long data) { struct psmouse *psmouse = (struct psmouse *)data; + struct alps_data *priv = psmouse->private; serio_pause_rx(psmouse->ps2dev.serio); @@ -833,7 +861,7 @@ "refusing packet %3ph (suspected interleaved ps/2)\n", psmouse->packet + 3); } else { - alps_process_packet(psmouse); + priv->process_packet(psmouse); } psmouse->pktcnt = 0; } @@ -844,7 +872,6 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse) { struct alps_data *priv = psmouse->private; - const struct alps_model_info *model = priv->i; if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */ if (psmouse->pktcnt == 3) { @@ -857,20 +884,21 @@ /* Check for PS/2 packet stuffed in the middle of ALPS packet. */ - if ((model->flags & ALPS_PS2_INTERLEAVED) && + if ((priv->flags & ALPS_PS2_INTERLEAVED) && psmouse->pktcnt >= 4 && (psmouse->packet[3] & 0x0f) == 0x0f) { return alps_handle_interleaved_ps2(psmouse); } - if (!alps_is_valid_first_byte(model, psmouse->packet[0])) { + if (!alps_is_valid_first_byte(priv, psmouse->packet[0])) { psmouse_dbg(psmouse, "refusing packet[0] = %x (mask0 = %x, byte0 = %x)\n", - psmouse->packet[0], model->mask0, model->byte0); + psmouse->packet[0], priv->mask0, priv->byte0); return PSMOUSE_BAD_DATA; } /* Bytes 2 - pktsize should have 0 in the highest bit */ - if (psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize && + if (priv->proto_version != ALPS_PROTO_V5 && + psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize && (psmouse->packet[psmouse->pktcnt - 1] & 0x80)) { psmouse_dbg(psmouse, "refusing packet[%i] = %x\n", psmouse->pktcnt - 1, @@ -879,7 +907,7 @@ } if (psmouse->pktcnt == psmouse->pktsize) { - alps_process_packet(psmouse); + priv->process_packet(psmouse); return PSMOUSE_FULL_PACKET; } @@ -967,29 +995,44 @@ return __alps_command_mode_write_reg(psmouse, value); } -static int alps_enter_command_mode(struct psmouse *psmouse, - unsigned char *resp) +static int alps_rpt_cmd(struct psmouse *psmouse, int init_command, + int repeated_command, unsigned char *param) { - unsigned char param[4]; struct ps2dev *ps2dev = &psmouse->ps2dev; - if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) || - ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) { + param[0] = 0; + if (init_command && ps2_command(ps2dev, param, init_command)) + return -EIO; + + if (ps2_command(ps2dev, NULL, repeated_command) || + ps2_command(ps2dev, NULL, repeated_command) || + ps2_command(ps2dev, NULL, repeated_command)) + return -EIO; + + param[0] = param[1] = param[2] = 0xff; + if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) + return -EIO; + + psmouse_dbg(psmouse, "%2.2X report: %2.2x %2.2x %2.2x\n", + repeated_command, param[0], param[1], param[2]); + return 0; +} + +static int alps_enter_command_mode(struct psmouse *psmouse) +{ + unsigned char param[4]; + + if (alps_rpt_cmd(psmouse, 0, PSMOUSE_CMD_RESET_WRAP, param)) { psmouse_err(psmouse, "failed to enter command mode\n"); return -1; } - if (param[0] != 0x88 && param[1] != 0x07) { + if ((param[0] != 0x88 || (param[1] != 0x07 && param[1] != 0x08)) && + param[0] != 0x73) { psmouse_dbg(psmouse, - "unknown response while entering command mode: %2.2x %2.2x %2.2x\n", - param[0], param[1], param[2]); + "unknown response while entering command mode\n"); return -1; } - - if (resp) - *resp = param[2]; return 0; } @@ -1001,99 +1044,6 @@ return 0; } -static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int *version) -{ - struct ps2dev *ps2dev = &psmouse->ps2dev; - static const unsigned char rates[] = { 0, 10, 20, 40, 60, 80, 100, 200 }; - unsigned char param[4]; - const struct alps_model_info *model = NULL; - int i; - - /* - * First try "E6 report". - * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed. - * The bits 0-2 of the first byte will be 1s if some buttons are - * pressed. - */ - param[0] = 0; - if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11)) - return NULL; - - param[0] = param[1] = param[2] = 0xff; - if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) - return NULL; - - psmouse_dbg(psmouse, "E6 report: %2.2x %2.2x %2.2x", - param[0], param[1], param[2]); - - if ((param[0] & 0xf8) != 0 || param[1] != 0 || - (param[2] != 10 && param[2] != 100)) - return NULL; - - /* - * Now try "E7 report". Allowed responses are in - * alps_model_data[].signature - */ - param[0] = 0; - if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21)) - return NULL; - - param[0] = param[1] = param[2] = 0xff; - if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) - return NULL; - - psmouse_dbg(psmouse, "E7 report: %2.2x %2.2x %2.2x", - param[0], param[1], param[2]); - - if (version) { - for (i = 0; i < ARRAY_SIZE(rates) && param[2] != rates[i]; i++) - /* empty */; - *version = (param[0] << 8) | (param[1] << 4) | i; - } - - for (i = 0; i < ARRAY_SIZE(alps_model_data); i++) { - if (!memcmp(param, alps_model_data[i].signature, - sizeof(alps_model_data[i].signature))) { - model = alps_model_data + i; - break; - } - } - - if (model && model->proto_version > ALPS_PROTO_V2) { - /* - * Need to check command mode response to identify - * model - */ - model = NULL; - if (alps_enter_command_mode(psmouse, param)) { - psmouse_warn(psmouse, - "touchpad failed to enter command mode\n"); - } else { - for (i = 0; i < ARRAY_SIZE(alps_model_data); i++) { - if (alps_model_data[i].proto_version > ALPS_PROTO_V2 && - alps_model_data[i].command_mode_resp == param[0]) { - model = alps_model_data + i; - break; - } - } - alps_exit_command_mode(psmouse); - - if (!model) - psmouse_dbg(psmouse, - "Unknown command mode response %2.2x\n", - param[0]); - } - } - - return model; -} - /* * For DualPoint devices select the device that should respond to * subsequent commands. It looks like glidepad is behind stickpointer, @@ -1137,18 +1087,10 @@ static int alps_get_status(struct psmouse *psmouse, char *param) { - struct ps2dev *ps2dev = &psmouse->ps2dev; - /* Get status: 0xF5 0xF5 0xF5 0xE9 */ - if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_DISABLE) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_DISABLE) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_DISABLE) || - ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) + if (alps_rpt_cmd(psmouse, 0, PSMOUSE_CMD_DISABLE, param)) return -1; - psmouse_dbg(psmouse, "Status: %2.2x %2.2x %2.2x", - param[0], param[1], param[2]); - return 0; } @@ -1190,16 +1132,16 @@ unsigned char buf[sizeof(psmouse->packet)]; bool poll_failed; - if (priv->i->flags & ALPS_PASS) + if (priv->flags & ALPS_PASS) alps_passthrough_mode_v2(psmouse, true); poll_failed = ps2_command(&psmouse->ps2dev, buf, PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)) < 0; - if (priv->i->flags & ALPS_PASS) + if (priv->flags & ALPS_PASS) alps_passthrough_mode_v2(psmouse, false); - if (poll_failed || (buf[0] & priv->i->mask0) != priv->i->byte0) + if (poll_failed || (buf[0] & priv->mask0) != priv->byte0) return -1; if ((psmouse->badbyte & 0xc8) == 0x08) { @@ -1217,9 +1159,8 @@ static int alps_hw_init_v1_v2(struct psmouse *psmouse) { struct alps_data *priv = psmouse->private; - const struct alps_model_info *model = priv->i; - if ((model->flags & ALPS_PASS) && + if ((priv->flags & ALPS_PASS) && alps_passthrough_mode_v2(psmouse, true)) { return -1; } @@ -1234,7 +1175,7 @@ return -1; } - if ((model->flags & ALPS_PASS) && + if ((priv->flags & ALPS_PASS) && alps_passthrough_mode_v2(psmouse, false)) { return -1; } @@ -1249,26 +1190,31 @@ } /* - * Enable or disable passthrough mode to the trackstick. Must be in - * command mode when calling this function. + * Enable or disable passthrough mode to the trackstick. */ -static int alps_passthrough_mode_v3(struct psmouse *psmouse, bool enable) +static int alps_passthrough_mode_v3(struct psmouse *psmouse, + int reg_base, bool enable) { - int reg_val; + int reg_val, ret = -1; - reg_val = alps_command_mode_read_reg(psmouse, 0x0008); - if (reg_val == -1) + if (alps_enter_command_mode(psmouse)) return -1; + reg_val = alps_command_mode_read_reg(psmouse, reg_base + 0x0008); + if (reg_val == -1) + goto error; + if (enable) reg_val |= 0x01; else reg_val &= ~0x01; - if (__alps_command_mode_write_reg(psmouse, reg_val)) - return -1; + ret = __alps_command_mode_write_reg(psmouse, reg_val); - return 0; +error: + if (alps_exit_command_mode(psmouse)) + ret = -1; + return ret; } /* Must be in command mode when calling this function */ @@ -1287,73 +1233,102 @@ return 0; } -static int alps_hw_init_v3(struct psmouse *psmouse) +static int alps_probe_trackstick_v3(struct psmouse *psmouse, int reg_base) { - struct alps_data *priv = psmouse->private; - struct ps2dev *ps2dev = &psmouse->ps2dev; - int reg_val; - unsigned char param[4]; + int ret = -EIO, reg_val; - priv->nibble_commands = alps_v3_nibble_commands; - priv->addr_command = PSMOUSE_CMD_RESET_WRAP; - - if (alps_enter_command_mode(psmouse, NULL)) + if (alps_enter_command_mode(psmouse)) goto error; - /* Check for trackstick */ - reg_val = alps_command_mode_read_reg(psmouse, 0x0008); + reg_val = alps_command_mode_read_reg(psmouse, reg_base + 0x08); if (reg_val == -1) goto error; - if (reg_val & 0x80) { - if (alps_passthrough_mode_v3(psmouse, true)) - goto error; - if (alps_exit_command_mode(psmouse)) - goto error; + + /* bit 7: trackstick is present */ + ret = reg_val & 0x80 ? 0 : -ENODEV; + +error: + alps_exit_command_mode(psmouse); + return ret; +} + +static int alps_setup_trackstick_v3(struct psmouse *psmouse, int reg_base) +{ + struct ps2dev *ps2dev = &psmouse->ps2dev; + int ret = 0; + unsigned char param[4]; + + if (alps_passthrough_mode_v3(psmouse, reg_base, true)) + return -EIO; + + /* + * E7 report for the trackstick + * + * There have been reports of failures to seem to trace back + * to the above trackstick check failing. When these occur + * this E7 report fails, so when that happens we continue + * with the assumption that there isn't a trackstick after + * all. + */ + if (alps_rpt_cmd(psmouse, 0, PSMOUSE_CMD_SETSCALE21, param)) { + psmouse_warn(psmouse, "trackstick E7 report failed\n"); + ret = -ENODEV; + } else { + psmouse_dbg(psmouse, + "trackstick E7 report: %2.2x %2.2x %2.2x\n", + param[0], param[1], param[2]); /* - * E7 report for the trackstick - * - * There have been reports of failures to seem to trace back - * to the above trackstick check failing. When these occur - * this E7 report fails, so when that happens we continue - * with the assumption that there isn't a trackstick after - * all. + * Not sure what this does, but it is absolutely + * essential. Without it, the touchpad does not + * work at all and the trackstick just emits normal + * PS/2 packets. */ - param[0] = 0x64; - if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) || - ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) { - psmouse_warn(psmouse, "trackstick E7 report failed\n"); - } else { - psmouse_dbg(psmouse, - "trackstick E7 report: %2.2x %2.2x %2.2x\n", - param[0], param[1], param[2]); - - /* - * Not sure what this does, but it is absolutely - * essential. Without it, the touchpad does not - * work at all and the trackstick just emits normal - * PS/2 packets. - */ - if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || - ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || - alps_command_mode_send_nibble(psmouse, 0x9) || - alps_command_mode_send_nibble(psmouse, 0x4)) { - psmouse_err(psmouse, - "Error sending magic E6 sequence\n"); - goto error_passthrough; - } + if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || + ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || + ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) || + alps_command_mode_send_nibble(psmouse, 0x9) || + alps_command_mode_send_nibble(psmouse, 0x4)) { + psmouse_err(psmouse, + "Error sending magic E6 sequence\n"); + ret = -EIO; + goto error; } - if (alps_enter_command_mode(psmouse, NULL)) - goto error_passthrough; - if (alps_passthrough_mode_v3(psmouse, false)) - goto error; + /* + * This ensures the trackstick packets are in the format + * supported by this driver. If bit 1 isn't set the packet + * format is different. + */ + if (alps_enter_command_mode(psmouse) || + alps_command_mode_write_reg(psmouse, + reg_base + 0x08, 0x82) || + alps_exit_command_mode(psmouse)) + ret = -EIO; } - if (alps_absolute_mode_v3(psmouse)) { +error: + if (alps_passthrough_mode_v3(psmouse, reg_base, false)) + ret = -EIO; + + return ret; +} + +static int alps_hw_init_v3(struct psmouse *psmouse) +{ + struct ps2dev *ps2dev = &psmouse->ps2dev; + int reg_val; + unsigned char param[4]; + + reg_val = alps_probe_trackstick_v3(psmouse, ALPS_REG_BASE_PINNACLE); + if (reg_val == -EIO) + goto error; + if (reg_val == 0 && + alps_setup_trackstick_v3(psmouse, ALPS_REG_BASE_PINNACLE) == -EIO) + goto error; + + if (alps_enter_command_mode(psmouse) || + alps_absolute_mode_v3(psmouse)) { psmouse_err(psmouse, "Failed to enter absolute mode\n"); goto error; } @@ -1390,14 +1365,6 @@ if (alps_command_mode_write_reg(psmouse, 0x0162, 0x04)) goto error; - /* - * This ensures the trackstick packets are in the format - * supported by this driver. If bit 1 isn't set the packet - * format is different. - */ - if (alps_command_mode_write_reg(psmouse, 0x0008, 0x82)) - goto error; - alps_exit_command_mode(psmouse); /* Set rate and enable data reporting */ @@ -1410,10 +1377,6 @@ return 0; -error_passthrough: - /* Something failed while in passthrough mode, so try to get out */ - if (!alps_enter_command_mode(psmouse, NULL)) - alps_passthrough_mode_v3(psmouse, false); error: /* * Leaving the touchpad in command mode will essentially render @@ -1424,6 +1387,50 @@ return -1; } +static int alps_hw_init_rushmore_v3(struct psmouse *psmouse) +{ + struct alps_data *priv = psmouse->private; + struct ps2dev *ps2dev = &psmouse->ps2dev; + int reg_val, ret = -1; + + if (priv->flags & ALPS_DUALPOINT) { + reg_val = alps_setup_trackstick_v3(psmouse, + ALPS_REG_BASE_RUSHMORE); + if (reg_val == -EIO) + goto error; + if (reg_val == -ENODEV) + priv->flags &= ~ALPS_DUALPOINT; + } + + if (alps_enter_command_mode(psmouse) || + alps_command_mode_read_reg(psmouse, 0xc2d9) == -1 || + alps_command_mode_write_reg(psmouse, 0xc2cb, 0x00)) + goto error; + + reg_val = alps_command_mode_read_reg(psmouse, 0xc2c6); + if (reg_val == -1) + goto error; + if (__alps_command_mode_write_reg(psmouse, reg_val & 0xfd)) + goto error; + + if (alps_command_mode_write_reg(psmouse, 0xc2c9, 0x64)) + goto error; + + /* enter absolute mode */ + reg_val = alps_command_mode_read_reg(psmouse, 0xc2c4); + if (reg_val == -1) + goto error; + if (__alps_command_mode_write_reg(psmouse, reg_val | 0x02)) + goto error; + + alps_exit_command_mode(psmouse); + return ps2_command(ps2dev, NULL, PSMOUSE_CMD_ENABLE); + +error: + alps_exit_command_mode(psmouse); + return ret; +} + /* Must be in command mode when calling this function */ static int alps_absolute_mode_v4(struct psmouse *psmouse) { @@ -1442,14 +1449,10 @@ static int alps_hw_init_v4(struct psmouse *psmouse) { - struct alps_data *priv = psmouse->private; struct ps2dev *ps2dev = &psmouse->ps2dev; unsigned char param[4]; - priv->nibble_commands = alps_v4_nibble_commands; - priv->addr_command = PSMOUSE_CMD_DISABLE; - - if (alps_enter_command_mode(psmouse, NULL)) + if (alps_enter_command_mode(psmouse)) goto error; if (alps_absolute_mode_v4(psmouse)) { @@ -1517,39 +1520,178 @@ return -1; } -static int alps_hw_init(struct psmouse *psmouse) +static int alps_hw_init_dolphin_v1(struct psmouse *psmouse) { - struct alps_data *priv = psmouse->private; - const struct alps_model_info *model = priv->i; - int ret = -1; + struct ps2dev *ps2dev = &psmouse->ps2dev; + unsigned char param[2]; - switch (model->proto_version) { + /* This is dolphin "v1" as empirically defined by florin9doi */ + param[0] = 0x64; + param[1] = 0x28; + + if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSTREAM) || + ps2_command(ps2dev, ¶m[0], PSMOUSE_CMD_SETRATE) || + ps2_command(ps2dev, ¶m[1], PSMOUSE_CMD_SETRATE)) + return -1; + + return 0; +} + +static void alps_set_defaults(struct alps_data *priv) +{ + priv->byte0 = 0x8f; + priv->mask0 = 0x8f; + priv->flags = ALPS_DUALPOINT; + + priv->x_max = 2000; + priv->y_max = 1400; + priv->x_bits = 15; + priv->y_bits = 11; + + switch (priv->proto_version) { case ALPS_PROTO_V1: case ALPS_PROTO_V2: - ret = alps_hw_init_v1_v2(psmouse); + priv->hw_init = alps_hw_init_v1_v2; + priv->process_packet = alps_process_packet_v1_v2; + priv->set_abs_params = alps_set_abs_params_st; break; case ALPS_PROTO_V3: - ret = alps_hw_init_v3(psmouse); + priv->hw_init = alps_hw_init_v3; + priv->process_packet = alps_process_packet_v3; + priv->set_abs_params = alps_set_abs_params_mt; + priv->decode_fields = alps_decode_pinnacle; + priv->nibble_commands = alps_v3_nibble_commands; + priv->addr_command = PSMOUSE_CMD_RESET_WRAP; break; case ALPS_PROTO_V4: - ret = alps_hw_init_v4(psmouse); + priv->hw_init = alps_hw_init_v4; + priv->process_packet = alps_process_packet_v4; + priv->set_abs_params = alps_set_abs_params_mt; + priv->nibble_commands = alps_v4_nibble_commands; + priv->addr_command = PSMOUSE_CMD_DISABLE; + break; + case ALPS_PROTO_V5: + priv->hw_init = alps_hw_init_dolphin_v1; + priv->process_packet = alps_process_packet_v3; + priv->decode_fields = alps_decode_dolphin; + priv->set_abs_params = alps_set_abs_params_mt; + priv->nibble_commands = alps_v3_nibble_commands; + priv->addr_command = PSMOUSE_CMD_RESET_WRAP; + priv->byte0 = 0xc8; + priv->mask0 = 0xc8; + priv->flags = 0; + priv->x_max = 1360; + priv->y_max = 660; + priv->x_bits = 23; + priv->y_bits = 12; break; } +} - return ret; +static int alps_match_table(struct psmouse *psmouse, struct alps_data *priv, + unsigned char *e7, unsigned char *ec) +{ + const struct alps_model_info *model; + int i; + + for (i = 0; i < ARRAY_SIZE(alps_model_data); i++) { + model = &alps_model_data[i]; + + if (!memcmp(e7, model->signature, sizeof(model->signature)) && + (!model->command_mode_resp || + model->command_mode_resp == ec[2])) { + + priv->proto_version = model->proto_version; + alps_set_defaults(priv); + + priv->flags = model->flags; + priv->byte0 = model->byte0; + priv->mask0 = model->mask0; + + return 0; + } + } + + return -EINVAL; +} + +static int alps_identify(struct psmouse *psmouse, struct alps_data *priv) +{ + unsigned char e6[4], e7[4], ec[4]; + + /* + * First try "E6 report". + * ALPS should return 0,0,10 or 0,0,100 if no buttons are pressed. + * The bits 0-2 of the first byte will be 1s if some buttons are + * pressed. + */ + if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES, + PSMOUSE_CMD_SETSCALE11, e6)) + return -EIO; + + if ((e6[0] & 0xf8) != 0 || e6[1] != 0 || (e6[2] != 10 && e6[2] != 100)) + return -EINVAL; + + /* + * Now get the "E7" and "EC" reports. These will uniquely identify + * most ALPS touchpads. + */ + if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES, + PSMOUSE_CMD_SETSCALE21, e7) || + alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES, + PSMOUSE_CMD_RESET_WRAP, ec) || + alps_exit_command_mode(psmouse)) + return -EIO; + + if (alps_match_table(psmouse, priv, e7, ec) == 0) { + return 0; + } else if (e7[0] == 0x73 && e7[1] == 0x03 && e7[2] == 0x50 && + ec[0] == 0x73 && ec[1] == 0x01) { + priv->proto_version = ALPS_PROTO_V5; + alps_set_defaults(priv); + + return 0; + } else if (ec[0] == 0x88 && ec[1] == 0x08) { + priv->proto_version = ALPS_PROTO_V3; + alps_set_defaults(priv); + + priv->hw_init = alps_hw_init_rushmore_v3; + priv->decode_fields = alps_decode_rushmore; + priv->x_bits = 16; + priv->y_bits = 12; + + /* hack to make addr_command, nibble_command available */ + psmouse->private = priv; + + if (alps_probe_trackstick_v3(psmouse, ALPS_REG_BASE_RUSHMORE)) + priv->flags &= ~ALPS_DUALPOINT; + + return 0; + } else if (ec[0] == 0x88 && ec[1] == 0x07 && + ec[2] >= 0x90 && ec[2] <= 0x9d) { + priv->proto_version = ALPS_PROTO_V3; + alps_set_defaults(priv); + + return 0; + } + + psmouse_info(psmouse, + "Unknown ALPS touchpad: E7=%2.2x %2.2x %2.2x, EC=%2.2x %2.2x %2.2x\n", + e7[0], e7[1], e7[2], ec[0], ec[1], ec[2]); + + return -EINVAL; } static int alps_reconnect(struct psmouse *psmouse) { - const struct alps_model_info *model; + struct alps_data *priv = psmouse->private; psmouse_reset(psmouse); - model = alps_get_model(psmouse, NULL); - if (!model) + if (alps_identify(psmouse, priv) < 0) return -1; - return alps_hw_init(psmouse); + return priv->hw_init(psmouse); } static void alps_disconnect(struct psmouse *psmouse) @@ -1562,12 +1704,33 @@ kfree(priv); } +static void alps_set_abs_params_st(struct alps_data *priv, + struct input_dev *dev1) +{ + input_set_abs_params(dev1, ABS_X, 0, 1023, 0, 0); + input_set_abs_params(dev1, ABS_Y, 0, 767, 0, 0); +} + +static void alps_set_abs_params_mt(struct alps_data *priv, + struct input_dev *dev1) +{ + set_bit(INPUT_PROP_SEMI_MT, dev1->propbit); + input_mt_init_slots(dev1, 2, 0); + input_set_abs_params(dev1, ABS_MT_POSITION_X, 0, priv->x_max, 0, 0); + input_set_abs_params(dev1, ABS_MT_POSITION_Y, 0, priv->y_max, 0, 0); + + set_bit(BTN_TOOL_DOUBLETAP, dev1->keybit); + set_bit(BTN_TOOL_TRIPLETAP, dev1->keybit); + set_bit(BTN_TOOL_QUADTAP, dev1->keybit); + + input_set_abs_params(dev1, ABS_X, 0, priv->x_max, 0, 0); + input_set_abs_params(dev1, ABS_Y, 0, priv->y_max, 0, 0); +} + int alps_init(struct psmouse *psmouse) { struct alps_data *priv; - const struct alps_model_info *model; struct input_dev *dev1 = psmouse->dev, *dev2; - int version; priv = kzalloc(sizeof(struct alps_data), GFP_KERNEL); dev2 = input_allocate_device(); @@ -1581,13 +1744,10 @@ psmouse_reset(psmouse); - model = alps_get_model(psmouse, &version); - if (!model) + if (alps_identify(psmouse, priv) < 0) goto init_fail; - priv->i = model; - - if (alps_hw_init(psmouse)) + if (priv->hw_init(psmouse)) goto init_fail; /* @@ -1609,41 +1769,20 @@ dev1->evbit[BIT_WORD(EV_ABS)] |= BIT_MASK(EV_ABS); - switch (model->proto_version) { - case ALPS_PROTO_V1: - case ALPS_PROTO_V2: - input_set_abs_params(dev1, ABS_X, 0, 1023, 0, 0); - input_set_abs_params(dev1, ABS_Y, 0, 767, 0, 0); - break; - case ALPS_PROTO_V3: - case ALPS_PROTO_V4: - set_bit(INPUT_PROP_SEMI_MT, dev1->propbit); - input_mt_init_slots(dev1, 2, 0); - input_set_abs_params(dev1, ABS_MT_POSITION_X, 0, ALPS_V3_X_MAX, 0, 0); - input_set_abs_params(dev1, ABS_MT_POSITION_Y, 0, ALPS_V3_Y_MAX, 0, 0); - - set_bit(BTN_TOOL_DOUBLETAP, dev1->keybit); - set_bit(BTN_TOOL_TRIPLETAP, dev1->keybit); - set_bit(BTN_TOOL_QUADTAP, dev1->keybit); - - input_set_abs_params(dev1, ABS_X, 0, ALPS_V3_X_MAX, 0, 0); - input_set_abs_params(dev1, ABS_Y, 0, ALPS_V3_Y_MAX, 0, 0); - break; - } - + priv->set_abs_params(priv, dev1); input_set_abs_params(dev1, ABS_PRESSURE, 0, 127, 0, 0); - if (model->flags & ALPS_WHEEL) { + if (priv->flags & ALPS_WHEEL) { dev1->evbit[BIT_WORD(EV_REL)] |= BIT_MASK(EV_REL); dev1->relbit[BIT_WORD(REL_WHEEL)] |= BIT_MASK(REL_WHEEL); } - if (model->flags & (ALPS_FW_BK_1 | ALPS_FW_BK_2)) { + if (priv->flags & (ALPS_FW_BK_1 | ALPS_FW_BK_2)) { dev1->keybit[BIT_WORD(BTN_FORWARD)] |= BIT_MASK(BTN_FORWARD); dev1->keybit[BIT_WORD(BTN_BACK)] |= BIT_MASK(BTN_BACK); } - if (model->flags & ALPS_FOUR_BUTTONS) { + if (priv->flags & ALPS_FOUR_BUTTONS) { dev1->keybit[BIT_WORD(BTN_0)] |= BIT_MASK(BTN_0); dev1->keybit[BIT_WORD(BTN_1)] |= BIT_MASK(BTN_1); dev1->keybit[BIT_WORD(BTN_2)] |= BIT_MASK(BTN_2); @@ -1654,7 +1793,8 @@ snprintf(priv->phys, sizeof(priv->phys), "%s/input1", psmouse->ps2dev.serio->phys); dev2->phys = priv->phys; - dev2->name = (model->flags & ALPS_DUALPOINT) ? "DualPoint Stick" : "PS/2 Mouse"; + dev2->name = (priv->flags & ALPS_DUALPOINT) ? + "DualPoint Stick" : "PS/2 Mouse"; dev2->id.bustype = BUS_I8042; dev2->id.vendor = 0x0002; dev2->id.product = PSMOUSE_ALPS; @@ -1673,7 +1813,7 @@ psmouse->poll = alps_poll; psmouse->disconnect = alps_disconnect; psmouse->reconnect = alps_reconnect; - psmouse->pktsize = model->proto_version == ALPS_PROTO_V4 ? 8 : 6; + psmouse->pktsize = priv->proto_version == ALPS_PROTO_V4 ? 8 : 6; /* We are having trouble resyncing ALPS touchpads so disable it for now */ psmouse->resync_time = 0; @@ -1690,18 +1830,16 @@ int alps_detect(struct psmouse *psmouse, bool set_properties) { - int version; - const struct alps_model_info *model; + struct alps_data dummy; - model = alps_get_model(psmouse, &version); - if (!model) + if (alps_identify(psmouse, &dummy) < 0) return -1; if (set_properties) { psmouse->vendor = "ALPS"; - psmouse->name = model->flags & ALPS_DUALPOINT ? + psmouse->name = dummy.flags & ALPS_DUALPOINT ? "DualPoint TouchPad" : "GlidePoint"; - psmouse->model = version; + psmouse->model = dummy.proto_version << 8; } return 0; } --- linux-ppc-3.8.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-ppc-3.8.0/drivers/input/mouse/cypress_ps2.c @@ -0,0 +1,750 @@ +/* + * Cypress Trackpad PS/2 mouse driver + * + * Copyright (c) 2012 Cypress Semiconductor Corporation. + * + * Author: + * Dudley Du + * + * 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 + +#include "cypress_ps2.h" + +#undef CYTP_DEBUG_VERBOSE /* define this and DEBUG for more verbose dump */ + +static void cypress_set_packet_size(struct psmouse *psmouse, unsigned int n) +{ + struct cytp_data *cytp = psmouse->private; + cytp->pkt_size = n; +} + +static const unsigned char cytp_rate[] = {10, 20, 40, 60, 100, 200}; +static const unsigned char cytp_resolution[] = {0x00, 0x01, 0x02, 0x03}; + +static int cypress_ps2_sendbyte(struct psmouse *psmouse, int value) +{ + struct ps2dev *ps2dev = &psmouse->ps2dev; + + if (ps2_sendbyte(ps2dev, value & 0xff, CYTP_CMD_TIMEOUT) < 0) { + psmouse_dbg(psmouse, + "sending 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; + } + +#ifdef CYTP_DEBUG_VERBOSE + psmouse_dbg(psmouse, "sending command 0x%02x succeeded, resp 0xfa\n", + value & 0xff); +#endif + + 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 byte (0xE8 or 0xF3). + * If sending the command fails, send recovery command + * to make the device return to the ready state. + */ + 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 rc; + struct ps2dev *ps2dev = &psmouse->ps2dev; + enum psmouse_state old_state; + int pktsize; + + ps2_begin_command(&psmouse->ps2dev); + + old_state = psmouse->state; + psmouse->state = PSMOUSE_CMD_MODE; + psmouse->pktcnt = 0; + + pktsize = (cmd == CYTP_CMD_READ_TP_METRICS) ? 8 : 3; + memset(param, 0, pktsize); + + rc = cypress_ps2_sendbyte(psmouse, 0xe9); + if (rc < 0) + goto out; + + wait_event_timeout(ps2dev->wait, + (psmouse->pktcnt >= pktsize), + msecs_to_jiffies(CYTP_CMD_TIMEOUT)); + + memcpy(param, psmouse->packet, pktsize); + + psmouse_dbg(psmouse, "Command 0x%02x response data (0x): %*ph\n", + cmd, pktsize, param); + +out: + psmouse->state = old_state; + psmouse->pktcnt = 0; + + ps2_end_command(&psmouse->ps2dev); + + return rc; +} + +static bool cypress_verify_cmd_state(struct psmouse *psmouse, + unsigned char cmd, unsigned char *param) +{ + bool rate_match = false; + bool resolution_match = false; + int i; + + /* callers will do further checking. */ + if (cmd == CYTP_CMD_READ_CYPRESS_ID || + cmd == CYTP_CMD_STANDARD_MODE || + cmd == CYTP_CMD_READ_TP_METRICS) + return true; + + 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 = true; + + for (i = 0; i < sizeof(cytp_rate); i++) + if (cytp_rate[i] == param[2]) + rate_match = true; + + if (resolution_match && rate_match) + return true; + } + + psmouse_dbg(psmouse, "verify cmd state failed.\n"); + return false; +} + +static int cypress_send_ext_cmd(struct psmouse *psmouse, unsigned char cmd, + unsigned char *param) +{ + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + psmouse_dbg(psmouse, "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) + continue; + + if (cypress_verify_cmd_state(psmouse, cmd, param)) + return 0; + + } while (--tries > 0); + + return -EIO; +} + +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 -ENODEV; + + /* Check for Cypress Trackpad signature bytes: 0x33 0xCC */ + if (param[0] != 0x33 || param[1] != 0xCC) + 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 -ENODEV; + + /* Check for Cypress Trackpad signature bytes: 0x33 0xCC */ + if (param[0] != 0x33 || param[1] != 0xCC) + return -ENODEV; + + cytp->fw_version = param[2] & FW_VERSION_MASX; + cytp->tp_metrics_supported = (param[2] & TP_METRICS_MASK) ? 1 : 0; + + /* + * Trackpad fw_version 11 (in Dell XPS12) yields a bogus response to + * CYTP_CMD_READ_TP_METRICS so do not try to use it. LP: #1103594. + */ + if (cytp->fw_version >= 11) + cytp->tp_metrics_supported = 0; + + psmouse_dbg(psmouse, "cytp->fw_version = %d\n", cytp->fw_version); + psmouse_dbg(psmouse, "cytp->tp_metrics_supported = %d\n", + cytp->tp_metrics_supported); + + return 0; +} + +static int cypress_read_tp_metrics(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[8]; + + /* set default values for tp metrics. */ + 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; + + if (!cytp->tp_metrics_supported) + return 0; + + memset(param, 0, sizeof(param)); + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_TP_METRICS, 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 (!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 -EINVAL; + + cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; + cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; + +#ifdef CYTP_DEBUG_VERBOSE + psmouse_dbg(psmouse, "Dump trackpad hardware configuration as below:\n"); + psmouse_dbg(psmouse, "cytp->tp_width = %d\n", cytp->tp_width); + psmouse_dbg(psmouse, "cytp->tp_high = %d\n", cytp->tp_high); + psmouse_dbg(psmouse, "cytp->tp_max_abs_x = %d\n", cytp->tp_max_abs_x); + psmouse_dbg(psmouse, "cytp->tp_max_abs_y = %d\n", cytp->tp_max_abs_y); + psmouse_dbg(psmouse, "cytp->tp_min_pressure = %d\n", cytp->tp_min_pressure); + psmouse_dbg(psmouse, "cytp->tp_max_pressure = %d\n", cytp->tp_max_pressure); + psmouse_dbg(psmouse, "cytp->tp_res_x = %d\n", cytp->tp_res_x); + psmouse_dbg(psmouse, "cytp->tp_res_y = %d\n", cytp->tp_res_y); + + psmouse_dbg(psmouse, "tp_type_APA = %d\n", + (param[6] & TP_METRICS_BIT_APA) ? 1 : 0); + psmouse_dbg(psmouse, "tp_type_MTG = %d\n", + (param[6] & TP_METRICS_BIT_MTG) ? 1 : 0); + psmouse_dbg(psmouse, "tp_palm = %d\n", + (param[6] & TP_METRICS_BIT_PALM) ? 1 : 0); + psmouse_dbg(psmouse, "tp_stubborn = %d\n", + (param[6] & TP_METRICS_BIT_STUBBORN) ? 1 : 0); + psmouse_dbg(psmouse, "tp_1f_jitter = %d\n", + (param[6] & TP_METRICS_BIT_1F_JITTER) >> 2); + psmouse_dbg(psmouse, "tp_2f_jitter = %d\n", + (param[6] & TP_METRICS_BIT_2F_JITTER) >> 4); + psmouse_dbg(psmouse, "tp_1f_spike = %d\n", + param[7] & TP_METRICS_BIT_1F_SPIKE); + psmouse_dbg(psmouse, "tp_2f_spike = %d\n", + (param[7] & TP_METRICS_BIT_2F_SPIKE) >> 2); + psmouse_dbg(psmouse, "tp_abs_packet_format_set = %d\n", + (param[7] & TP_METRICS_BIT_ABS_PKT_FORMAT_SET) >> 4); +#endif + + return 0; +} + +static int cypress_query_hardware(struct psmouse *psmouse) +{ + int ret; + + ret = cypress_read_fw_version(psmouse); + if (ret) + return ret; + + ret = cypress_read_tp_metrics(psmouse); + if (ret) + return ret; + + 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->mode = (cytp->mode & ~CYTP_BIT_ABS_REL_MASK) + | CYTP_BIT_ABS_PRESSURE; + cypress_set_packet_size(psmouse, 5); + + return 0; +} + +/* + * Reset trackpad device. + * This is also the default mode when trackpad powered on. + */ +static void cypress_reset(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + + cytp->mode = 0; + + psmouse_reset(psmouse); +} + +static int cypress_set_input_params(struct input_dev *input, + struct cytp_data *cytp) +{ + int ret; + + if (!cytp->tp_res_x || !cytp->tp_res_y) + return -EINVAL; + + __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, + INPUT_MT_DROP_UNUSED|INPUT_MT_TRACK); + if (ret < 0) + return ret; + +#if ( CYPRESS_SIMULATED_MT != 1 ) + __set_bit(INPUT_PROP_SEMI_MT, input->propbit); +#endif + + input_abs_set_res(input, ABS_X, cytp->tp_res_x); + input_abs_set_res(input, ABS_Y, cytp->tp_res_y); + + 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(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); + + __clear_bit(EV_REL, input->evbit); + __clear_bit(REL_X, input->relbit); + __clear_bit(REL_Y, input->relbit); + + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + __set_bit(EV_KEY, input->evbit); + __set_bit(BTN_LEFT, input->keybit); + __set_bit(BTN_RIGHT, input->keybit); + __set_bit(BTN_MIDDLE, input->keybit); + + 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) + return 1; + + if (header_byte & ABS_HSCROLL_BIT) { + /* HSCROLL gets added on to 0 finger count. */ + switch (finger_count) { + case 0: return 4; + case 2: return 5; + default: + /* Invalid contact (e.g. palm). Ignore it. */ + return -1; + } + } + + return finger_count; +} + + +static int cypress_parse_packet(struct psmouse *psmouse, + struct cytp_data *cytp, struct cytp_report_data *report_data) +{ + unsigned char *packet = psmouse->packet; + unsigned char header_byte = packet[0]; + int contact_cnt; + + memset(report_data, 0, sizeof(struct cytp_report_data)); + + contact_cnt = cypress_get_finger_count(header_byte); + + if (contact_cnt < 0) /* e.g. palm detect */ + return -EINVAL; + + report_data->contact_cnt = contact_cnt; + + report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0; + + 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]; + + } 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; +#if ( CYPRESS_SIMULATED_MT == 1 ) + /* simulate contact positions for >2 fingers */ + if ( report_data->contact_cnt >= 3 ) { + int i; + for ( i=1; icontact_cnt; i++ ) { + report_data->contacts[i].x = + report_data->contacts[0].x + + 100*(i)*((i%2)?-1:1); + report_data->contacts[i].y = + report_data->contacts[0].y; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[i].z = + report_data->contacts[0].z; + } + } +#endif + } + + report_data->left = (header_byte & BTN_LEFT_BIT) ? 1 : 0; + report_data->right = (header_byte & BTN_RIGHT_BIT) ? 1 : 0; + + /* + * 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; + +#ifdef CYTP_DEBUG_VERBOSE + { + int i; + int n = report_data->contact_cnt; + psmouse_dbg(psmouse, "Dump parsed report data as below:\n"); + psmouse_dbg(psmouse, "contact_cnt = %d\n", + report_data->contact_cnt); + if (n > CYTP_MAX_MT_SLOTS) + n = CYTP_MAX_MT_SLOTS; + for (i = 0; i < n; i++) + psmouse_dbg(psmouse, "contacts[%d] = {%d, %d, %d}\n", i, + report_data->contacts[i].x, + report_data->contacts[i].y, + report_data->contacts[i].z); + psmouse_dbg(psmouse, "left = %d\n", report_data->left); + psmouse_dbg(psmouse, "right = %d\n", report_data->right); + psmouse_dbg(psmouse, "middle = %d\n", report_data->middle); + } +#endif + + 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; + struct cytp_contact *contact; + struct input_mt_pos pos[CYTP_MAX_MT_SLOTS]; + int slots[CYTP_MAX_MT_SLOTS]; + int n; + + if (cypress_parse_packet(psmouse, cytp, &report_data)) + return; + + n = report_data.contact_cnt; + + if (n > CYTP_MAX_MT_SLOTS) + n = CYTP_MAX_MT_SLOTS; + + for (i = 0; i < n; i++) { + contact = &report_data.contacts[i]; + pos[i].x = contact->x; + pos[i].y = contact->y; + } + + input_mt_assign_slots(input, slots, pos, n); + + for (i = 0; i < n; i++) { + contact = &report_data.contacts[i]; + input_mt_slot(input, slots[i]); + 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); + } + + input_mt_sync_frame(input); + + input_mt_report_finger_count(input, report_data.contact_cnt); + + 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; + } + + /* + * Perform validation (and adjust packet size) based only on the + * first byte; allow all further bytes through. + */ + if (index != 0) + return PSMOUSE_GOOD_DATA; + + /* + * If absolute/relative mode bit has not been set yet, just pass + * the byte through. + */ + if ((cytp->mode & CYTP_BIT_ABS_REL_MASK) == 0) + return PSMOUSE_GOOD_DATA; + + if ((packet[0] & 0x08) == 0x08) + return PSMOUSE_BAD_DATA; + + contact_cnt = cypress_get_finger_count(packet[0]); + + if (contact_cnt < 0) + return PSMOUSE_BAD_DATA; + + if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE) + cypress_set_packet_size(psmouse, contact_cnt == 2 ? 7 : 4); + else + cypress_set_packet_size(psmouse, contact_cnt == 2 ? 8 : 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->mode |= CYTP_BIT_HIGH_RATE; + } else { + psmouse->rate = 40; + cytp->mode &= ~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) { + psmouse_err(psmouse, "Reconnect: unable to detect trackpad.\n"); + return -1; + } + + if (cypress_set_absolute_mode(psmouse)) { + psmouse_err(psmouse, "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); + + psmouse->pktsize = 8; + + if (cypress_query_hardware(psmouse)) { + psmouse_err(psmouse, "Unable to query Trackpad hardware.\n"); + goto err_exit; + } + + if (cypress_set_absolute_mode(psmouse)) { + psmouse_err(psmouse, "init: Unable to initialize Cypress absolute mode.\n"); + goto err_exit; + } + + if (cypress_set_input_params(psmouse->dev, cytp) < 0) { + psmouse_err(psmouse, "init: Unable to set input params.\n"); + goto err_exit; + } + + 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->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-ppc-3.8.0.orig/drivers/input/mouse/synaptics.h +++ linux-ppc-3.8.0/drivers/input/mouse/synaptics.h @@ -81,6 +81,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-ppc-3.8.0.orig/drivers/input/mouse/psmouse-base.c +++ linux-ppc-3.8.0/drivers/input/mouse/psmouse-base.c @@ -34,6 +34,7 @@ #include "touchkit_ps2.h" #include "elantech.h" #include "sentelic.h" +#include "cypress_ps2.h" #define DRIVER_DESC "PS/2 mouse driver" @@ -759,6 +760,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 +919,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-ppc-3.8.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-ppc-3.8.0/drivers/input/mouse/cypress_ps2.h @@ -0,0 +1,202 @@ +#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_TP_METRICS 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 TP_METRICS_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 TP_METRICS_BIT_PALM 0x80 +#define TP_METRICS_BIT_STUBBORN 0x40 +#define TP_METRICS_BIT_2F_JITTER 0x30 +#define TP_METRICS_BIT_1F_JITTER 0x0c +#define TP_METRICS_BIT_APA 0x02 +#define TP_METRICS_BIT_MTG 0x01 +#define TP_METRICS_BIT_ABS_PKT_FORMAT_SET 0xf0 +#define TP_METRICS_BIT_2F_SPIKE 0x0c +#define TP_METRICS_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 + +/* + * CYPRESS_SIMULATED_MT + * set to 1 for simulated multitouch (up to 5 contact points) + * set to 0 for SEMI_MT (only 2 corner points, and count of fingers) + */ +#define CYPRESS_SIMULATED_MT 1 + +#if ( CYPRESS_SIMULATED_MT == 1 ) +# define CYTP_MAX_MT_SLOTS 5 +#else +# define CYTP_MAX_MT_SLOTS 2 +#endif + +struct cytp_contact { + int x; + int y; + int z; /* also named as touch pressure. */ +}; + +/* The structure of Cypress Trackpad event data. */ +struct cytp_report_data { + int contact_cnt; + struct cytp_contact contacts[CYTP_MAX_MT_SLOTS]; + unsigned int left:1; + unsigned int right:1; + unsigned int middle:1; + unsigned int tap:1; /* multi-finger tap detected. */ +}; + +/* The structure of Cypress Trackpad device private data. */ +struct cytp_data { + int fw_version; + + int pkt_size; + int mode; + + 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 absolute units that can be reported. */ + int tp_max_abs_y; /* Max Y absolute units that can be reported. */ + + int tp_res_x; /* X resolution in units/mm. */ + int tp_res_y; /* Y resolution in units/mm. */ + + int tp_metrics_supported; +}; + + +#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-ppc-3.8.0.orig/drivers/input/mouse/elantech.c +++ linux-ppc-3.8.0/drivers/input/mouse/elantech.c @@ -694,18 +694,18 @@ static int elantech_packet_check_v4(struct psmouse *psmouse) { unsigned char *packet = psmouse->packet; + unsigned char packet_type = packet[3] & 0x03; - if ((packet[0] & 0x0c) == 0x04 && - (packet[3] & 0x1f) == 0x11) + switch (packet_type) { + case 0: + return PACKET_V4_STATUS; + + case 1: return PACKET_V4_HEAD; - if ((packet[0] & 0x0c) == 0x04 && - (packet[3] & 0x1f) == 0x12) + case 2: return PACKET_V4_MOTION; - - if ((packet[0] & 0x0c) == 0x04 && - (packet[3] & 0x1f) == 0x10) - return PACKET_V4_STATUS; + } return PACKET_UNKNOWN; } @@ -1282,6 +1282,7 @@ etd->hw_version = 3; break; case 6: + case 7: etd->hw_version = 4; break; default: --- linux-ppc-3.8.0.orig/drivers/input/mouse/Kconfig +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/input/touchscreen/egalax_ts.c +++ linux-ppc-3.8.0/drivers/input/touchscreen/egalax_ts.c @@ -216,7 +216,7 @@ input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, EGALAX_MAX_X, 0, 0); input_set_abs_params(input_dev, - ABS_MT_POSITION_X, 0, EGALAX_MAX_Y, 0, 0); + ABS_MT_POSITION_Y, 0, EGALAX_MAX_Y, 0, 0); input_mt_init_slots(input_dev, MAX_SUPPORT_POINTS, 0); input_set_drvdata(input_dev, ts); --- linux-ppc-3.8.0.orig/drivers/input/touchscreen/cyttsp_core.c +++ linux-ppc-3.8.0/drivers/input/touchscreen/cyttsp_core.c @@ -133,7 +133,7 @@ memcpy(bl_cmd, bl_command, sizeof(bl_command)); if (ts->pdata->bl_keys) memcpy(&bl_cmd[sizeof(bl_command) - CY_NUM_BL_KEYS], - ts->pdata->bl_keys, sizeof(bl_command)); + ts->pdata->bl_keys, CY_NUM_BL_KEYS); error = ttsp_write_block_data(ts, CY_REG_BASE, sizeof(bl_cmd), bl_cmd); --- linux-ppc-3.8.0.orig/drivers/macintosh/windfarm_rm31.c +++ linux-ppc-3.8.0/drivers/macintosh/windfarm_rm31.c @@ -439,15 +439,15 @@ /* Slots fan */ static const struct wf_pid_param slots_param = { - .interval = 5, - .history_len = 2, - .gd = 30 << 20, - .gp = 5 << 20, - .gr = 0, - .itarget = 40 << 16, - .additive = 1, - .min = 300, - .max = 4000, + .interval = 1, + .history_len = 20, + .gd = 0, + .gp = 0, + .gr = 0x00100000, + .itarget = 3200000, + .additive = 0, + .min = 20, + .max = 100, }; static void slots_fan_tick(void) --- linux-ppc-3.8.0.orig/drivers/clocksource/dw_apb_timer_of.c +++ linux-ppc-3.8.0/drivers/clocksource/dw_apb_timer_of.c @@ -44,7 +44,7 @@ u32 irq, rate; irq = irq_of_parse_and_map(event_timer, 0); - if (irq == NO_IRQ) + if (irq == 0) panic("No IRQ for clock event timer"); timer_get_base_and_rate(event_timer, &iobase, &rate); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/drm_fops.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_fops.c @@ -123,11 +123,13 @@ int retcode = 0; int need_setup = 0; struct address_space *old_mapping; + struct address_space *old_imapping; 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; @@ -137,6 +139,7 @@ if (!dev->open_count++) need_setup = 1; mutex_lock(&dev->struct_mutex); + old_imapping = inode->i_mapping; old_mapping = dev->dev_mapping; if (old_mapping == NULL) dev->dev_mapping = &inode->i_data; @@ -159,8 +162,8 @@ err_undo: mutex_lock(&dev->struct_mutex); - filp->f_mapping = old_mapping; - inode->i_mapping = old_mapping; + filp->f_mapping = old_imapping; + inode->i_mapping = old_imapping; iput(container_of(dev->dev_mapping, struct inode, i_data)); dev->dev_mapping = old_mapping; mutex_unlock(&dev->struct_mutex); @@ -192,7 +195,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-ppc-3.8.0.orig/drivers/gpu/drm/drm_edid.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_edid.c @@ -87,9 +87,6 @@ int product_id; u32 quirks; } edid_quirk_list[] = { - /* ASUS VW222S */ - { "ACI", 0x22a2, EDID_QUIRK_FORCE_REDUCED_BLANKING }, - /* Acer AL1706 */ { "ACR", 44358, EDID_QUIRK_PREFER_LARGE_60 }, /* Acer F51 */ @@ -357,10 +354,14 @@ break; } } - if (i == 4) + + if (i == 4 && print_bad_edid) { dev_warn(connector->dev->dev, "%s: Ignoring invalid EDID block %d.\n", drm_get_connector_name(connector), j); + + connector->bad_edid_counter++; + } } if (valid_extensions != block[0x7e]) { @@ -893,7 +894,7 @@ unsigned vblank = (pt->vactive_vblank_hi & 0xf) << 8 | pt->vblank_lo; unsigned hsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc0) << 2 | pt->hsync_offset_lo; unsigned hsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x30) << 4 | pt->hsync_pulse_width_lo; - unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) >> 2 | pt->vsync_offset_pulse_width_lo >> 4; + unsigned vsync_offset = (pt->hsync_vsync_offset_pulse_width_hi & 0xc) << 2 | pt->vsync_offset_pulse_width_lo >> 4; unsigned vsync_pulse_width = (pt->hsync_vsync_offset_pulse_width_hi & 0x3) << 4 | (pt->vsync_offset_pulse_width_lo & 0xf); /* ignore tiny modes */ @@ -974,6 +975,7 @@ } mode->type = DRM_MODE_TYPE_DRIVER; + mode->vrefresh = drm_mode_vrefresh(mode); drm_mode_set_name(mode); return mode; @@ -2020,7 +2022,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-ppc-3.8.0.orig/drivers/gpu/drm/drm_gem.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_gem.c @@ -205,11 +205,11 @@ drm_gem_remove_prime_handles(struct drm_gem_object *obj, struct drm_file *filp) { if (obj->import_attach) { - drm_prime_remove_imported_buf_handle(&filp->prime, + drm_prime_remove_buf_handle(&filp->prime, obj->import_attach->dmabuf); } if (obj->export_dma_buf) { - drm_prime_remove_imported_buf_handle(&filp->prime, + drm_prime_remove_buf_handle(&filp->prime, obj->export_dma_buf); } } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/drm_prime.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_prime.c @@ -53,7 +53,8 @@ * Self-importing: if userspace is using PRIME as a replacement for flink * then it will get a fd->handle request for a GEM object that it created. * Drivers should detect this situation and return back the gem object - * from the dma-buf private. + * from the dma-buf private. Prime will do this automatically for drivers that + * use the drm_gem_prime_{import,export} helpers. */ struct drm_prime_member { @@ -61,6 +62,138 @@ struct dma_buf *dma_buf; uint32_t handle; }; +static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t handle); + +static struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach, + enum dma_data_direction dir) +{ + struct drm_gem_object *obj = attach->dmabuf->priv; + struct sg_table *sgt; + + mutex_lock(&obj->dev->struct_mutex); + + sgt = obj->dev->driver->gem_prime_get_sg_table(obj); + + if (!IS_ERR_OR_NULL(sgt)) + dma_map_sg(attach->dev, sgt->sgl, sgt->nents, dir); + + mutex_unlock(&obj->dev->struct_mutex); + return sgt; +} + +static void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach, + struct sg_table *sgt, enum dma_data_direction dir) +{ + dma_unmap_sg(attach->dev, sgt->sgl, sgt->nents, dir); + sg_free_table(sgt); + kfree(sgt); +} + +static void drm_gem_dmabuf_release(struct dma_buf *dma_buf) +{ + struct drm_gem_object *obj = dma_buf->priv; + + if (obj->export_dma_buf == dma_buf) { + /* drop the reference on the export fd holds */ + obj->export_dma_buf = NULL; + drm_gem_object_unreference_unlocked(obj); + } +} + +static void *drm_gem_dmabuf_vmap(struct dma_buf *dma_buf) +{ + struct drm_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->dev; + + return dev->driver->gem_prime_vmap(obj); +} + +static void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr) +{ + struct drm_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->dev; + + dev->driver->gem_prime_vunmap(obj, vaddr); +} + +static void *drm_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf, + unsigned long page_num) +{ + return NULL; +} + +static void drm_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf, + unsigned long page_num, void *addr) +{ + +} +static void *drm_gem_dmabuf_kmap(struct dma_buf *dma_buf, + unsigned long page_num) +{ + return NULL; +} + +static void drm_gem_dmabuf_kunmap(struct dma_buf *dma_buf, + unsigned long page_num, void *addr) +{ + +} + +static int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, + struct vm_area_struct *vma) +{ + return -EINVAL; +} + +static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = { + .map_dma_buf = drm_gem_map_dma_buf, + .unmap_dma_buf = drm_gem_unmap_dma_buf, + .release = drm_gem_dmabuf_release, + .kmap = drm_gem_dmabuf_kmap, + .kmap_atomic = drm_gem_dmabuf_kmap_atomic, + .kunmap = drm_gem_dmabuf_kunmap, + .kunmap_atomic = drm_gem_dmabuf_kunmap_atomic, + .mmap = drm_gem_dmabuf_mmap, + .vmap = drm_gem_dmabuf_vmap, + .vunmap = drm_gem_dmabuf_vunmap, +}; + +/** + * DOC: PRIME Helpers + * + * Drivers can implement @gem_prime_export and @gem_prime_import in terms of + * simpler APIs by using the helper functions @drm_gem_prime_export and + * @drm_gem_prime_import. These functions implement dma-buf support in terms of + * five lower-level driver callbacks: + * + * Export callbacks: + * + * - @gem_prime_pin (optional): prepare a GEM object for exporting + * + * - @gem_prime_get_sg_table: provide a scatter/gather table of pinned pages + * + * - @gem_prime_vmap: vmap a buffer exported by your driver + * + * - @gem_prime_vunmap: vunmap a buffer exported by your driver + * + * Import callback: + * + * - @gem_prime_import_sg_table (import): produce a GEM object from another + * driver's scatter/gather table + */ + +struct dma_buf *drm_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *obj, int flags) +{ + if (dev->driver->gem_prime_pin) { + int ret = dev->driver->gem_prime_pin(obj); + if (ret) + return ERR_PTR(ret); + } + return dma_buf_export(obj, &drm_gem_prime_dmabuf_ops, obj->size, + 0600); +} +EXPORT_SYMBOL(drm_gem_prime_export); int drm_gem_prime_handle_to_fd(struct drm_device *dev, struct drm_file *file_priv, uint32_t handle, uint32_t flags, @@ -68,7 +201,8 @@ { struct drm_gem_object *obj; void *buf; - int ret; + int ret = 0; + struct dma_buf *dmabuf; obj = drm_gem_object_lookup(dev, file_priv, handle); if (!obj) @@ -77,46 +211,99 @@ mutex_lock(&file_priv->prime.lock); /* re-export the original imported object */ if (obj->import_attach) { - get_dma_buf(obj->import_attach->dmabuf); - *prime_fd = dma_buf_fd(obj->import_attach->dmabuf, flags); - drm_gem_object_unreference_unlocked(obj); - mutex_unlock(&file_priv->prime.lock); - return 0; + dmabuf = obj->import_attach->dmabuf; + goto out_have_obj; } if (obj->export_dma_buf) { - get_dma_buf(obj->export_dma_buf); - *prime_fd = dma_buf_fd(obj->export_dma_buf, flags); - drm_gem_object_unreference_unlocked(obj); - } else { - buf = dev->driver->gem_prime_export(dev, obj, flags); - if (IS_ERR(buf)) { - /* normally the created dma-buf takes ownership of the ref, - * but if that fails then drop the ref - */ - drm_gem_object_unreference_unlocked(obj); - mutex_unlock(&file_priv->prime.lock); - return PTR_ERR(buf); - } - obj->export_dma_buf = buf; - *prime_fd = dma_buf_fd(buf, flags); + dmabuf = obj->export_dma_buf; + goto out_have_obj; + } + + buf = dev->driver->gem_prime_export(dev, obj, flags); + if (IS_ERR(buf)) { + /* normally the created dma-buf takes ownership of the ref, + * but if that fails then drop the ref + */ + ret = PTR_ERR(buf); + goto out; } + obj->export_dma_buf = buf; + /* if we've exported this buffer the cheat and add it to the import list * so we get the correct handle back */ - ret = drm_prime_add_imported_buf_handle(&file_priv->prime, - obj->export_dma_buf, handle); - if (ret) { - drm_gem_object_unreference_unlocked(obj); - mutex_unlock(&file_priv->prime.lock); - return ret; - } + ret = drm_prime_add_buf_handle(&file_priv->prime, + obj->export_dma_buf, handle); + if (ret) + goto out; + *prime_fd = dma_buf_fd(buf, flags); mutex_unlock(&file_priv->prime.lock); return 0; + +out_have_obj: + get_dma_buf(dmabuf); + *prime_fd = dma_buf_fd(dmabuf, flags); +out: + drm_gem_object_unreference_unlocked(obj); + mutex_unlock(&file_priv->prime.lock); + return ret; } EXPORT_SYMBOL(drm_gem_prime_handle_to_fd); +struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf) +{ + struct dma_buf_attachment *attach; + struct sg_table *sgt; + struct drm_gem_object *obj; + int ret; + + if (!dev->driver->gem_prime_import_sg_table) + return ERR_PTR(-EINVAL); + + if (dma_buf->ops == &drm_gem_prime_dmabuf_ops) { + obj = dma_buf->priv; + 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(dma_buf); + return obj; + } + } + + attach = dma_buf_attach(dma_buf, dev->dev); + if (IS_ERR(attach)) + return ERR_PTR(PTR_ERR(attach)); + + sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); + if (IS_ERR_OR_NULL(sgt)) { + ret = PTR_ERR(sgt); + goto fail_detach; + } + + obj = dev->driver->gem_prime_import_sg_table(dev, dma_buf->size, sgt); + if (IS_ERR(obj)) { + ret = PTR_ERR(obj); + goto fail_unmap; + } + + obj->import_attach = attach; + + return obj; + +fail_unmap: + dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL); +fail_detach: + dma_buf_detach(dma_buf, attach); + return ERR_PTR(ret); +} +EXPORT_SYMBOL(drm_gem_prime_import); + int drm_gem_prime_fd_to_handle(struct drm_device *dev, struct drm_file *file_priv, int prime_fd, uint32_t *handle) { @@ -130,7 +317,7 @@ mutex_lock(&file_priv->prime.lock); - ret = drm_prime_lookup_imported_buf_handle(&file_priv->prime, + ret = drm_prime_lookup_buf_handle(&file_priv->prime, dma_buf, handle); if (!ret) { ret = 0; @@ -149,7 +336,7 @@ if (ret) goto out_put; - ret = drm_prime_add_imported_buf_handle(&file_priv->prime, + ret = drm_prime_add_buf_handle(&file_priv->prime, dma_buf, *handle); if (ret) goto fail; @@ -307,7 +494,7 @@ } EXPORT_SYMBOL(drm_prime_destroy_file_private); -int drm_prime_add_imported_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t handle) +static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t handle) { struct drm_prime_member *member; @@ -315,14 +502,14 @@ if (!member) return -ENOMEM; + get_dma_buf(dma_buf); member->dma_buf = dma_buf; member->handle = handle; list_add(&member->entry, &prime_fpriv->head); return 0; } -EXPORT_SYMBOL(drm_prime_add_imported_buf_handle); -int drm_prime_lookup_imported_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t *handle) +int drm_prime_lookup_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t *handle) { struct drm_prime_member *member; @@ -334,19 +521,20 @@ } return -ENOENT; } -EXPORT_SYMBOL(drm_prime_lookup_imported_buf_handle); +EXPORT_SYMBOL(drm_prime_lookup_buf_handle); -void drm_prime_remove_imported_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf) +void drm_prime_remove_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf) { struct drm_prime_member *member, *safe; mutex_lock(&prime_fpriv->lock); list_for_each_entry_safe(member, safe, &prime_fpriv->head, entry) { if (member->dma_buf == dma_buf) { + dma_buf_put(dma_buf); list_del(&member->entry); kfree(member); } } mutex_unlock(&prime_fpriv->lock); } -EXPORT_SYMBOL(drm_prime_remove_imported_buf_handle); +EXPORT_SYMBOL(drm_prime_remove_buf_handle); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/drm_mm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_mm.c @@ -725,33 +725,35 @@ EXPORT_SYMBOL(drm_mm_debug_table); #if defined(CONFIG_DEBUG_FS) -int drm_mm_dump_table(struct seq_file *m, struct drm_mm *mm) +static unsigned long drm_mm_dump_hole(struct seq_file *m, struct drm_mm_node *entry) { - struct drm_mm_node *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(&mm->head_node); - hole_end = drm_mm_hole_node_end(&mm->head_node); - hole_size = hole_end - hole_start; - if (hole_size) + if (entry->hole_follows) { + hole_start = drm_mm_hole_node_start(entry); + hole_end = drm_mm_hole_node_end(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; + return hole_size; + } + + return 0; +} + +int drm_mm_dump_table(struct seq_file *m, struct drm_mm *mm) +{ + struct drm_mm_node *entry; + unsigned long total_used = 0, total_free = 0, total = 0; + + total_free += drm_mm_dump_hole(m, &mm->head_node); drm_mm_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(entry); - hole_end = drm_mm_hole_node_end(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_free += drm_mm_dump_hole(m, entry); } total = total_free + total_used; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/drm_stub.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_stub.c @@ -364,7 +364,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-ppc-3.8.0.orig/drivers/gpu/drm/drm_platform.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_platform.c @@ -89,6 +89,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-ppc-3.8.0.orig/drivers/gpu/drm/drm_pci.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/gpu/drm/drm_usb.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/gpu/drm/drm_irq.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_irq.c @@ -704,7 +704,10 @@ /* Subtract time delta from raw timestamp to get final * vblank_time timestamp for end of vblank. */ - etime = ktime_sub_ns(etime, delta_ns); + if (delta_ns < 0) + etime = ktime_add_ns(etime, -delta_ns); + else + etime = ktime_sub_ns(etime, delta_ns); *vblank_time = ktime_to_timeval(etime); DRM_DEBUG("crtc %d : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n", @@ -1049,7 +1052,7 @@ */ void drm_vblank_pre_modeset(struct drm_device *dev, int crtc) { - /* vblank is not initialized (IRQ not installed ?) */ + /* vblank is not initialized (IRQ not installed ?), or has been freed */ if (!dev->num_crtcs) return; /* @@ -1071,6 +1074,10 @@ { unsigned long irqflags; + /* vblank is not initialized (IRQ not installed ?), or has been freed */ + if (!dev->num_crtcs) + return; + if (dev->vblank_inmodeset[crtc]) { spin_lock_irqsave(&dev->vbl_lock, irqflags); dev->vblank_disable_allowed = 1; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/drm_crtc.c +++ linux-ppc-3.8.0/drivers/gpu/drm/drm_crtc.c @@ -2089,7 +2089,7 @@ switch (bpp) { case 8: - fmt = DRM_FORMAT_RGB332; + fmt = DRM_FORMAT_C8; break; case 16: if (depth == 15) @@ -3702,6 +3702,7 @@ int *bpp) { switch (format) { + case DRM_FORMAT_C8: case DRM_FORMAT_RGB332: case DRM_FORMAT_BGR233: *depth = 8; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/cirrus/cirrus_fbdev.c +++ linux-ppc-3.8.0/drivers/gpu/drm/cirrus/cirrus_fbdev.c @@ -26,16 +26,51 @@ int bpp = (afbdev->gfb.base.bits_per_pixel + 7)/8; int ret; bool unmap = false; + bool store_for_later = false; + int x2, y2; + unsigned long flags; obj = afbdev->gfb.obj; bo = gem_to_cirrus_bo(obj); + /* + * try and reserve the BO, if we fail with busy + * then the BO is being moved and we should + * store up the damage until later. + */ ret = cirrus_bo_reserve(bo, true); if (ret) { - DRM_ERROR("failed to reserve fb bo\n"); + if (ret != -EBUSY) + return; + store_for_later = true; + } + + x2 = x + width - 1; + y2 = y + height - 1; + spin_lock_irqsave(&afbdev->dirty_lock, flags); + + if (afbdev->y1 < y) + y = afbdev->y1; + if (afbdev->y2 > y2) + y2 = afbdev->y2; + if (afbdev->x1 < x) + x = afbdev->x1; + if (afbdev->x2 > x2) + x2 = afbdev->x2; + + if (store_for_later) { + afbdev->x1 = x; + afbdev->x2 = x2; + afbdev->y1 = y; + afbdev->y2 = y2; + spin_unlock_irqrestore(&afbdev->dirty_lock, flags); return; } + afbdev->x1 = afbdev->y1 = INT_MAX; + afbdev->x2 = afbdev->y2 = 0; + spin_unlock_irqrestore(&afbdev->dirty_lock, flags); + if (!bo->kmap.virtual) { ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); if (ret) { @@ -282,6 +317,7 @@ cdev->mode_info.gfbdev = gfbdev; gfbdev->helper.funcs = &cirrus_fb_helper_funcs; + spin_lock_init(&gfbdev->dirty_lock); ret = drm_fb_helper_init(cdev->dev, &gfbdev->helper, cdev->num_crtc, CIRRUSFB_CONN_LIMIT); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/cirrus/cirrus_ttm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/cirrus/cirrus_ttm.c @@ -321,7 +321,7 @@ ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0); if (ret) { - if (ret != -ERESTARTSYS) + if (ret != -ERESTARTSYS && ret != -EBUSY) DRM_ERROR("reserve failed %p\n", bo); return ret; } @@ -353,6 +353,7 @@ cirrusbo->gem.driver_private = NULL; cirrusbo->bo.bdev = &cirrus->ttm.bdev; + cirrusbo->bo.bdev->dev_mapping = dev->dev_mapping; cirrus_ttm_placement(cirrusbo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/cirrus/cirrus_drv.h +++ linux-ppc-3.8.0/drivers/gpu/drm/cirrus/cirrus_drv.h @@ -154,6 +154,8 @@ struct list_head fbdev_list; void *sysram; int size; + int x1, y1, x2, y2; /* dirty rect */ + spinlock_t dirty_lock; }; struct cirrus_bo { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/rv515.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/rv515.c @@ -303,8 +303,10 @@ tmp = RREG32(AVIVO_D1CRTC_CONTROL + crtc_offsets[i]); if (!(tmp & AVIVO_CRTC_DISP_READ_REQUEST_DISABLE)) { radeon_wait_for_vblank(rdev, i); + WREG32(AVIVO_D1CRTC_UPDATE_LOCK + crtc_offsets[i], 1); tmp |= AVIVO_CRTC_DISP_READ_REQUEST_DISABLE; WREG32(AVIVO_D1CRTC_CONTROL + crtc_offsets[i], tmp); + WREG32(AVIVO_D1CRTC_UPDATE_LOCK + crtc_offsets[i], 0); } /* wait for the next frame */ frame_count = radeon_get_vblank_counter(rdev, i); @@ -313,6 +315,15 @@ break; udelay(1); } + + /* XXX this is a hack to avoid strange behavior with EFI on certain systems */ + WREG32(AVIVO_D1CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + tmp = RREG32(AVIVO_D1CRTC_CONTROL + crtc_offsets[i]); + tmp &= ~AVIVO_CRTC_EN; + WREG32(AVIVO_D1CRTC_CONTROL + crtc_offsets[i], tmp); + WREG32(AVIVO_D1CRTC_UPDATE_LOCK + crtc_offsets[i], 0); + save->crtc_enabled[i] = false; + /* ***** */ } else { save->crtc_enabled[i] = false; } @@ -338,6 +349,22 @@ } /* wait for the MC to settle */ udelay(100); + + /* lock double buffered regs */ + for (i = 0; i < rdev->num_crtc; i++) { + if (save->crtc_enabled[i]) { + tmp = RREG32(AVIVO_D1GRPH_UPDATE + crtc_offsets[i]); + if (!(tmp & AVIVO_D1GRPH_UPDATE_LOCK)) { + tmp |= AVIVO_D1GRPH_UPDATE_LOCK; + WREG32(AVIVO_D1GRPH_UPDATE + crtc_offsets[i], tmp); + } + tmp = RREG32(AVIVO_D1MODE_MASTER_UPDATE_LOCK + crtc_offsets[i]); + if (!(tmp & 1)) { + tmp |= 1; + WREG32(AVIVO_D1MODE_MASTER_UPDATE_LOCK + crtc_offsets[i], tmp); + } + } + } } void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save) @@ -348,7 +375,7 @@ /* update crtc base addresses */ for (i = 0; i < rdev->num_crtc; i++) { if (rdev->family >= CHIP_RV770) { - if (i == 1) { + if (i == 0) { WREG32(R700_D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(rdev->mc.vram_start)); WREG32(R700_D1GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, @@ -367,6 +394,33 @@ } WREG32(R_000310_VGA_MEMORY_BASE_ADDRESS, (u32)rdev->mc.vram_start); + /* unlock regs and wait for update */ + for (i = 0; i < rdev->num_crtc; i++) { + if (save->crtc_enabled[i]) { + tmp = RREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + crtc_offsets[i]); + if ((tmp & 0x3) != 0) { + tmp &= ~0x3; + WREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + crtc_offsets[i], tmp); + } + tmp = RREG32(AVIVO_D1GRPH_UPDATE + crtc_offsets[i]); + if (tmp & AVIVO_D1GRPH_UPDATE_LOCK) { + tmp &= ~AVIVO_D1GRPH_UPDATE_LOCK; + WREG32(AVIVO_D1GRPH_UPDATE + crtc_offsets[i], tmp); + } + tmp = RREG32(AVIVO_D1MODE_MASTER_UPDATE_LOCK + crtc_offsets[i]); + if (tmp & 1) { + tmp &= ~1; + WREG32(AVIVO_D1MODE_MASTER_UPDATE_LOCK + crtc_offsets[i], tmp); + } + for (j = 0; j < rdev->usec_timeout; j++) { + tmp = RREG32(AVIVO_D1GRPH_UPDATE + crtc_offsets[i]); + if ((tmp & AVIVO_D1GRPH_SURFACE_UPDATE_PENDING) == 0) + break; + udelay(1); + } + } + } + if (rdev->family >= CHIP_R600) { /* unblackout the MC */ if (rdev->family >= CHIP_RV770) @@ -478,6 +532,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + rs600_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -608,9 +668,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/rv770.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/rv770.c @@ -1016,6 +1016,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r = r600_irq_init(rdev); if (r) { DRM_ERROR("radeon: IH init failed (%d).\n", r); @@ -1155,10 +1161,6 @@ if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; - rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/si.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/si.c @@ -1374,7 +1374,7 @@ u32 data = INSTANCE_BROADCAST_WRITES; if ((se_num == 0xffffffff) && (sh_num == 0xffffffff)) - data = SH_BROADCAST_WRITES | SE_BROADCAST_WRITES; + data |= SH_BROADCAST_WRITES | SE_BROADCAST_WRITES; else if (se_num == 0xffffffff) data |= SE_BROADCAST_WRITES | SH_INDEX(sh_num); else if (sh_num == 0xffffffff) @@ -1556,7 +1556,7 @@ default: rdev->config.si.max_shader_engines = 1; rdev->config.si.max_tile_pipes = 4; - rdev->config.si.max_cu_per_sh = 2; + rdev->config.si.max_cu_per_sh = 5; rdev->config.si.max_sh_per_se = 2; rdev->config.si.max_backends_per_se = 4; rdev->config.si.max_texture_channel_caches = 4; @@ -1659,6 +1659,7 @@ WREG32(GB_ADDR_CONFIG, gb_addr_config); WREG32(DMIF_ADDR_CONFIG, gb_addr_config); + WREG32(DMIF_ADDR_CALC, gb_addr_config); WREG32(HDP_ADDR_CONFIG, gb_addr_config); WREG32(DMA_TILING_CONFIG + DMA0_REGISTER_OFFSET, gb_addr_config); WREG32(DMA_TILING_CONFIG + DMA1_REGISTER_OFFSET, gb_addr_config); @@ -2410,8 +2411,8 @@ rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0); rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0); /* size in MB on si */ - rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; - rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; + rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL; + rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL; rdev->mc.visible_vram_size = rdev->mc.aper_size; si_vram_gtt_location(rdev, &rdev->mc); radeon_update_bandwidth_info(rdev); @@ -4136,6 +4137,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r = si_irq_init(rdev); if (r) { DRM_ERROR("radeon: IH init failed (%d).\n", r); @@ -4232,6 +4239,7 @@ int si_suspend(struct radeon_device *rdev) { + radeon_vm_manager_fini(rdev); si_cp_enable(rdev, false); cayman_dma_stop(rdev); si_irq_suspend(rdev); @@ -4295,10 +4303,6 @@ if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; - ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; ring->ring_obj = NULL; r600_ring_init(rdev, ring, 1024 * 1024); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon.h +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon.h @@ -341,7 +341,6 @@ struct drm_gem_object gem_base; struct ttm_bo_kmap_obj dma_buf_vmap; - int vmapping_count; }; #define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, gem_base) @@ -387,6 +386,7 @@ uint64_t gpu_addr; void *cpu_ptr; uint32_t domain; + uint32_t align; }; struct radeon_sa_bo; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/evergreen.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/evergreen.c @@ -105,6 +105,27 @@ } } +static bool dce4_is_in_vblank(struct radeon_device *rdev, int crtc) +{ + if (RREG32(EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK) + return true; + else + return false; +} + +static bool dce4_is_counter_moving(struct radeon_device *rdev, int crtc) +{ + u32 pos1, pos2; + + pos1 = RREG32(EVERGREEN_CRTC_STATUS_POSITION + crtc_offsets[crtc]); + pos2 = RREG32(EVERGREEN_CRTC_STATUS_POSITION + crtc_offsets[crtc]); + + if (pos1 != pos2) + return true; + else + return false; +} + /** * dce4_wait_for_vblank - vblank wait asic callback. * @@ -115,21 +136,28 @@ */ void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc) { - int i; + unsigned i = 0; 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 + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK)) + if (!(RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[crtc]) & EVERGREEN_CRTC_MASTER_EN)) + return; + + /* depending on when we hit vblank, we may be close to active; if so, + * wait for another frame. + */ + while (dce4_is_in_vblank(rdev, crtc)) { + if (i++ % 100 == 0) { + if (!dce4_is_counter_moving(rdev, crtc)) break; - udelay(1); } - for (i = 0; i < rdev->usec_timeout; i++) { - if (RREG32(EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK) + } + + while (!dce4_is_in_vblank(rdev, crtc)) { + if (i++ % 100 == 0) { + if (!dce4_is_counter_moving(rdev, crtc)) break; - udelay(1); } } } @@ -403,6 +431,19 @@ rdev->pm.current_vddc = voltage->voltage; DRM_DEBUG("Setting: vddc: %d\n", voltage->voltage); } + + /* starting with BTC, there is one state that is used for both + * MH and SH. Difference is that we always use the high clock index for + * mclk and vddci. + */ + if ((rdev->pm.pm_method == PM_METHOD_PROFILE) && + (rdev->family >= CHIP_BARTS) && + rdev->pm.active_crtc_count && + ((rdev->pm.profile_index == PM_PROFILE_MID_MH_IDX) || + (rdev->pm.profile_index == PM_PROFILE_LOW_MH_IDX))) + voltage = &rdev->pm.power_state[req_ps_idx]. + clock_info[rdev->pm.profiles[PM_PROFILE_HIGH_MH_IDX].dpms_on_cm_idx].voltage; + /* 0xff01 is a flag rather then an actual voltage */ if (voltage->vddci == 0xff01) return; @@ -595,6 +636,16 @@ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { struct radeon_connector *radeon_connector = to_radeon_connector(connector); + + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP || + connector->connector_type == DRM_MODE_CONNECTOR_LVDS) { + /* don't try to enable hpd on eDP or LVDS avoid breaking the + * aux dp channel on imac and help (but not completely fix) + * https://bugzilla.redhat.com/show_bug.cgi?id=726143 + * also avoid interrupt storms during dpms. + */ + continue; + } switch (radeon_connector->hpd.hpd) { case RADEON_HPD_1: WREG32(DC_HPD1_CONTROL, tmp); @@ -1312,17 +1363,16 @@ 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); + tmp |= EVERGREEN_CRTC_BLANK_DATA_EN; WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); } } else { tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); 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); + tmp |= EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE; WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); } @@ -1334,6 +1384,15 @@ break; udelay(1); } + + /* XXX this is a hack to avoid strange behavior with EFI on certain systems */ + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); + tmp &= ~EVERGREEN_CRTC_MASTER_EN; + WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); + save->crtc_enabled[i] = false; + /* ***** */ } else { save->crtc_enabled[i] = false; } @@ -1351,6 +1410,22 @@ } /* wait for the MC to settle */ udelay(100); + + /* lock double buffered regs */ + for (i = 0; i < rdev->num_crtc; i++) { + if (save->crtc_enabled[i]) { + tmp = RREG32(EVERGREEN_GRPH_UPDATE + crtc_offsets[i]); + if (!(tmp & EVERGREEN_GRPH_UPDATE_LOCK)) { + tmp |= EVERGREEN_GRPH_UPDATE_LOCK; + WREG32(EVERGREEN_GRPH_UPDATE + crtc_offsets[i], tmp); + } + tmp = RREG32(EVERGREEN_MASTER_UPDATE_LOCK + crtc_offsets[i]); + if (!(tmp & 1)) { + tmp |= 1; + WREG32(EVERGREEN_MASTER_UPDATE_LOCK + crtc_offsets[i], tmp); + } + } + } } void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save) @@ -1372,6 +1447,33 @@ 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 regs and wait for update */ + for (i = 0; i < rdev->num_crtc; i++) { + if (save->crtc_enabled[i]) { + tmp = RREG32(EVERGREEN_MASTER_UPDATE_MODE + crtc_offsets[i]); + if ((tmp & 0x3) != 0) { + tmp &= ~0x3; + WREG32(EVERGREEN_MASTER_UPDATE_MODE + crtc_offsets[i], tmp); + } + tmp = RREG32(EVERGREEN_GRPH_UPDATE + crtc_offsets[i]); + if (tmp & EVERGREEN_GRPH_UPDATE_LOCK) { + tmp &= ~EVERGREEN_GRPH_UPDATE_LOCK; + WREG32(EVERGREEN_GRPH_UPDATE + crtc_offsets[i], tmp); + } + tmp = RREG32(EVERGREEN_MASTER_UPDATE_LOCK + crtc_offsets[i]); + if (tmp & 1) { + tmp &= ~1; + WREG32(EVERGREEN_MASTER_UPDATE_LOCK + crtc_offsets[i], tmp); + } + for (j = 0; j < rdev->usec_timeout; j++) { + tmp = RREG32(EVERGREEN_GRPH_UPDATE + crtc_offsets[i]); + if ((tmp & EVERGREEN_GRPH_SURFACE_UPDATE_PENDING) == 0) + break; + udelay(1); + } + } + } + /* unblackout the MC */ tmp = RREG32(MC_SHARED_BLACKOUT_CNTL); tmp &= ~BLACKOUT_MODE_MASK; @@ -2298,8 +2400,8 @@ rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE); } else { /* size in MB on evergreen/cayman/tn */ - rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; - rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024; + rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL; + rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024ULL * 1024ULL; } rdev->mc.visible_vram_size = rdev->mc.aper_size; r700_vram_gtt_location(rdev, &rdev->mc); @@ -3471,6 +3573,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r = r600_irq_init(rdev); if (r) { DRM_ERROR("radeon: IH init failed (%d).\n", r); @@ -3619,10 +3727,6 @@ if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; - rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_ring.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_ring.c @@ -161,7 +161,8 @@ radeon_semaphore_free(rdev, &ib->semaphore, NULL); } /* if we can't remember our last VM flush then flush now! */ - if (ib->vm && !ib->vm->last_flush) { + /* XXX figure out why we have to flush for every IB */ + if (ib->vm /*&& !ib->vm->last_flush*/) { radeon_ring_vm_flush(rdev, ib->ring, ib->vm); } if (const_ib) { @@ -204,6 +205,7 @@ } r = radeon_sa_bo_manager_init(rdev, &rdev->ring_tmp_bo, RADEON_IB_POOL_SIZE*64*1024, + RADEON_GPU_PAGE_SIZE, RADEON_GEM_DOMAIN_GTT); if (r) { return r; @@ -382,6 +384,13 @@ return -ENOMEM; /* Align requested size with padding so unlock_commit can * pad safely */ + radeon_ring_free_size(rdev, ring); + if (ring->ring_free_dw == (ring->ring_size / 4)) { + /* This is an empty ring update lockup info to avoid + * false positive. + */ + radeon_ring_lockup_update(ring); + } ndw = (ndw + ring->align_mask) & ~ring->align_mask; while (ndw > (ring->ring_free_dw - 1)) { radeon_ring_free_size(rdev, ring); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_ttm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_ttm.c @@ -726,7 +726,7 @@ return r; } DRM_INFO("radeon: %uM of VRAM memory ready\n", - (unsigned)rdev->mc.real_vram_size / (1024 * 1024)); + (unsigned) (rdev->mc.real_vram_size / (1024 * 1024))); r = ttm_bo_init_mm(&rdev->mman.bdev, TTM_PL_TT, rdev->mc.gtt_size >> PAGE_SHIFT); if (r) { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/rs600.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/rs600.c @@ -52,23 +52,59 @@ AVIVO_D2CRTC_H_TOTAL - AVIVO_D1CRTC_H_TOTAL }; +static bool avivo_is_in_vblank(struct radeon_device *rdev, int crtc) +{ + if (RREG32(AVIVO_D1CRTC_STATUS + crtc_offsets[crtc]) & AVIVO_D1CRTC_V_BLANK) + return true; + else + return false; +} + +static bool avivo_is_counter_moving(struct radeon_device *rdev, int crtc) +{ + u32 pos1, pos2; + + pos1 = RREG32(AVIVO_D1CRTC_STATUS_POSITION + crtc_offsets[crtc]); + pos2 = RREG32(AVIVO_D1CRTC_STATUS_POSITION + crtc_offsets[crtc]); + + if (pos1 != pos2) + return true; + else + return false; +} + +/** + * avivo_wait_for_vblank - vblank wait asic callback. + * + * @rdev: radeon_device pointer + * @crtc: crtc to wait for vblank on + * + * Wait for vblank on the requested crtc (r5xx-r7xx). + */ void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc) { - int i; + unsigned i = 0; if (crtc >= rdev->num_crtc) return; - if (RREG32(AVIVO_D1CRTC_CONTROL + crtc_offsets[crtc]) & AVIVO_CRTC_EN) { - for (i = 0; i < rdev->usec_timeout; i++) { - if (!(RREG32(AVIVO_D1CRTC_STATUS + crtc_offsets[crtc]) & AVIVO_D1CRTC_V_BLANK)) + if (!(RREG32(AVIVO_D1CRTC_CONTROL + crtc_offsets[crtc]) & AVIVO_CRTC_EN)) + return; + + /* depending on when we hit vblank, we may be close to active; if so, + * wait for another frame. + */ + while (avivo_is_in_vblank(rdev, crtc)) { + if (i++ % 100 == 0) { + if (!avivo_is_counter_moving(rdev, crtc)) break; - udelay(1); } - for (i = 0; i < rdev->usec_timeout; i++) { - if (RREG32(AVIVO_D1CRTC_STATUS + crtc_offsets[crtc]) & AVIVO_D1CRTC_V_BLANK) + } + + while (!avivo_is_in_vblank(rdev, crtc)) { + if (i++ % 100 == 0) { + if (!avivo_is_counter_moving(rdev, crtc)) break; - udelay(1); } } } @@ -887,6 +923,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + rs600_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -1011,9 +1053,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/nid.h +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/nid.h @@ -45,6 +45,10 @@ #define ARUBA_GB_ADDR_CONFIG_GOLDEN 0x12010001 #define DMIF_ADDR_CONFIG 0xBD4 + +/* DCE6 only */ +#define DMIF_ADDR_CALC 0xC00 + #define SRBM_GFX_CNTL 0x0E44 #define RINGID(x) (((x) & 0x3) << 0) #define VMID(x) (((x) & 0x7) << 0) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/atom.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/atom.c @@ -1222,12 +1222,17 @@ int r; mutex_lock(&ctx->mutex); + /* reset data block */ + ctx->data_block = 0; /* reset reg block */ ctx->reg_block = 0; /* reset fb window */ ctx->fb_base = 0; /* reset io mode */ ctx->io_mode = ATOM_IO_MM; + /* reset divmul */ + ctx->divmul[0] = 0; + ctx->divmul[1] = 0; r = atom_execute_table_locked(ctx, index, params); mutex_unlock(&ctx->mutex); return r; @@ -1389,10 +1394,10 @@ firmware_usage = (struct _ATOM_VRAM_USAGE_BY_FIRMWARE *)(ctx->bios + data_offset); DRM_DEBUG("atom firmware requested %08x %dkb\n", - firmware_usage->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware, - firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb); + le32_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware), + le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb)); - usage_bytes = firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb * 1024; + usage_bytes = le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb) * 1024; } ctx->scratch_size_bytes = 0; if (usage_bytes == 0) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_atpx_handler.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_atpx_handler.c @@ -43,6 +43,12 @@ u32 function_bits; /* supported functions bit vector */ } __packed; +struct atpx_px_params { + u16 size; /* structure size in bytes (includes size field) */ + u32 valid_flags; /* which flags are valid */ + u32 flags; /* flags */ +} __packed; + struct atpx_power_control { u16 size; u8 dgpu_state; @@ -123,9 +129,61 @@ } /** + * radeon_atpx_validate_functions - validate ATPX functions + * + * @atpx: radeon atpx struct + * + * Validate that required functions are enabled (all asics). + * returns 0 on success, error on failure. + */ +static int radeon_atpx_validate(struct radeon_atpx *atpx) +{ + /* make sure required functions are enabled */ + /* dGPU power control is required */ + atpx->functions.power_cntl = true; + + if (atpx->functions.px_params) { + union acpi_object *info; + struct atpx_px_params output; + size_t size; + u32 valid_bits; + + info = radeon_atpx_call(atpx->handle, ATPX_FUNCTION_GET_PX_PARAMETERS, NULL); + if (!info) + return -EIO; + + memset(&output, 0, sizeof(output)); + + size = *(u16 *) info->buffer.pointer; + if (size < 10) { + printk("ATPX buffer is too small: %zu\n", size); + kfree(info); + return -EINVAL; + } + size = min(sizeof(output), size); + + memcpy(&output, info->buffer.pointer, size); + + valid_bits = output.flags & output.valid_flags; + /* if separate mux flag is set, mux controls are required */ + if (valid_bits & ATPX_SEPARATE_MUX_FOR_I2C) { + atpx->functions.i2c_mux_cntl = true; + atpx->functions.disp_mux_cntl = true; + } + /* if any outputs are muxed, mux controls are required */ + if (valid_bits & (ATPX_CRT1_RGB_SIGNAL_MUXED | + ATPX_TV_SIGNAL_MUXED | + ATPX_DFP_SIGNAL_MUXED)) + atpx->functions.disp_mux_cntl = true; + + kfree(info); + } + return 0; +} + +/** * radeon_atpx_verify_interface - verify ATPX * - * @handle: acpi handle * @atpx: radeon atpx struct * * Execute the ATPX_FUNCTION_VERIFY_INTERFACE ATPX function @@ -406,8 +464,19 @@ */ static int radeon_atpx_init(void) { + int r; + /* set up the ATPX handle */ - return radeon_atpx_verify_interface(&radeon_atpx_priv.atpx); + r = radeon_atpx_verify_interface(&radeon_atpx_priv.atpx); + if (r) + return r; + + /* validate the atpx setup */ + r = radeon_atpx_validate(&radeon_atpx_priv.atpx); + if (r) + return r; + + return 0; } /** --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/atombios_encoders.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/atombios_encoders.c @@ -186,6 +186,13 @@ u8 backlight_level; char bl_name[16]; + /* Mac laptops with multiple GPUs use the gmux driver for backlight + * so don't register a backlight device + */ + if ((rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) && + (rdev->pdev->device == 0x6741)) + return; + if (!radeon_encoder->enc_priv) return; @@ -667,6 +674,8 @@ int atombios_get_encoder_mode(struct drm_encoder *encoder) { + struct drm_device *dev = encoder->dev; + struct radeon_device *rdev = dev->dev_private; struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct drm_connector *connector; struct radeon_connector *radeon_connector; @@ -693,7 +702,8 @@ case DRM_MODE_CONNECTOR_DVII: case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */ if (drm_detect_hdmi_monitor(radeon_connector->edid) && - radeon_audio) + radeon_audio && + !ASIC_IS_DCE6(rdev)) /* remove once we support DCE6 */ return ATOM_ENCODER_MODE_HDMI; else if (radeon_connector->use_digital) return ATOM_ENCODER_MODE_DVI; @@ -704,7 +714,8 @@ case DRM_MODE_CONNECTOR_HDMIA: default: if (drm_detect_hdmi_monitor(radeon_connector->edid) && - radeon_audio) + radeon_audio && + !ASIC_IS_DCE6(rdev)) /* remove once we support DCE6 */ return ATOM_ENCODER_MODE_HDMI; else return ATOM_ENCODER_MODE_DVI; @@ -718,7 +729,8 @@ (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) return ATOM_ENCODER_MODE_DP; else if (drm_detect_hdmi_monitor(radeon_connector->edid) && - radeon_audio) + radeon_audio && + !ASIC_IS_DCE6(rdev)) /* remove once we support DCE6 */ return ATOM_ENCODER_MODE_HDMI; else return ATOM_ENCODER_MODE_DVI; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_benchmark.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_benchmark.c @@ -135,13 +135,15 @@ sdomain, ddomain, "dma"); } - time = radeon_benchmark_do_move(rdev, size, saddr, daddr, - RADEON_BENCHMARK_COPY_BLIT, n); - if (time < 0) - goto out_cleanup; - if (time > 0) - radeon_benchmark_log_results(n, size, time, - sdomain, ddomain, "blit"); + if (rdev->asic->copy.blit) { + time = radeon_benchmark_do_move(rdev, size, saddr, daddr, + RADEON_BENCHMARK_COPY_BLIT, n); + if (time < 0) + goto out_cleanup; + if (time > 0) + radeon_benchmark_log_results(n, size, time, + sdomain, ddomain, "blit"); + } out_cleanup: if (sobj) { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r300_cmdbuf.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r300_cmdbuf.c @@ -73,7 +73,7 @@ OUT_RING(CP_PACKET0(R300_RE_CLIPRECT_TL_0, nr * 2 - 1)); for (i = 0; i < nr; ++i) { - if (DRM_COPY_FROM_USER_UNCHECKED + if (DRM_COPY_FROM_USER (&box, &cmdbuf->boxes[n + i], sizeof(box))) { DRM_ERROR("copy cliprect faulted\n"); return -EFAULT; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/rs690.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/rs690.c @@ -628,6 +628,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + rs600_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -753,9 +759,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_gart.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_gart.c @@ -467,6 +467,7 @@ size *= 2; r = radeon_sa_bo_manager_init(rdev, &rdev->vm_manager.sa_manager, RADEON_GPU_PAGE_ALIGN(size), + RADEON_GPU_PAGE_SIZE, RADEON_GEM_DOMAIN_VRAM); if (r) { dev_err(rdev->dev, "failed to allocate vm bo (%dKB)\n", @@ -1209,11 +1210,13 @@ int radeon_vm_bo_rmv(struct radeon_device *rdev, struct radeon_bo_va *bo_va) { - int r; + int r = 0; mutex_lock(&rdev->vm_manager.lock); mutex_lock(&bo_va->vm->mutex); - r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL); + if (bo_va->soffset) { + r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL); + } mutex_unlock(&rdev->vm_manager.lock); list_del(&bo_va->vm_list); mutex_unlock(&bo_va->vm->mutex); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/evergreen_hdmi.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/evergreen_hdmi.c @@ -156,6 +156,9 @@ struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; uint32_t offset; + if (!dig || !dig->afmt) + return; + /* Silent, r600_hdmi_enable will raise WARN for us */ if (!dig->afmt->enabled) return; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/atombios_crtc.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/atombios_crtc.c @@ -252,8 +252,6 @@ radeon_crtc->enabled = true; /* adjust pm to dpms changes BEFORE enabling crtcs */ radeon_pm_compute_clocks(rdev); - if (ASIC_IS_DCE6(rdev) && !radeon_crtc->in_mode_set) - 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); @@ -271,8 +269,6 @@ atombios_enable_crtc_memreq(crtc, ATOM_DISABLE); atombios_enable_crtc(crtc, ATOM_DISABLE); radeon_crtc->enabled = false; - if (ASIC_IS_DCE6(rdev) && !radeon_crtc->in_mode_set) - atombios_powergate_crtc(crtc, ATOM_ENABLE); /* adjust pm to dpms changes AFTER disabling crtcs */ radeon_pm_compute_clocks(rdev); break; @@ -561,6 +557,9 @@ /* use frac fb div on APUs */ if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) radeon_crtc->pll_flags |= RADEON_PLL_USE_FRAC_FB_DIV; + /* use frac fb div on RS780/RS880 */ + if ((rdev->family == CHIP_RS780) || (rdev->family == CHIP_RS880)) + radeon_crtc->pll_flags |= RADEON_PLL_USE_FRAC_FB_DIV; if (ASIC_IS_DCE32(rdev) && mode->clock > 165000) radeon_crtc->pll_flags |= RADEON_PLL_USE_FRAC_FB_DIV; } else { @@ -1844,6 +1843,8 @@ 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] && --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r100.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r100.c @@ -69,6 +69,38 @@ * and others in some cases. */ +static bool r100_is_in_vblank(struct radeon_device *rdev, int crtc) +{ + if (crtc == 0) { + if (RREG32(RADEON_CRTC_STATUS) & RADEON_CRTC_VBLANK_CUR) + return true; + else + return false; + } else { + if (RREG32(RADEON_CRTC2_STATUS) & RADEON_CRTC2_VBLANK_CUR) + return true; + else + return false; + } +} + +static bool r100_is_counter_moving(struct radeon_device *rdev, int crtc) +{ + u32 vline1, vline2; + + if (crtc == 0) { + vline1 = (RREG32(RADEON_CRTC_VLINE_CRNT_VLINE) >> 16) & RADEON_CRTC_V_TOTAL; + vline2 = (RREG32(RADEON_CRTC_VLINE_CRNT_VLINE) >> 16) & RADEON_CRTC_V_TOTAL; + } else { + vline1 = (RREG32(RADEON_CRTC2_VLINE_CRNT_VLINE) >> 16) & RADEON_CRTC_V_TOTAL; + vline2 = (RREG32(RADEON_CRTC2_VLINE_CRNT_VLINE) >> 16) & RADEON_CRTC_V_TOTAL; + } + if (vline1 != vline2) + return true; + else + return false; +} + /** * r100_wait_for_vblank - vblank wait asic callback. * @@ -79,36 +111,33 @@ */ void r100_wait_for_vblank(struct radeon_device *rdev, int crtc) { - int i; + unsigned i = 0; if (crtc >= rdev->num_crtc) return; if (crtc == 0) { - if (RREG32(RADEON_CRTC_GEN_CNTL) & RADEON_CRTC_EN) { - for (i = 0; i < rdev->usec_timeout; i++) { - if (!(RREG32(RADEON_CRTC_STATUS) & RADEON_CRTC_VBLANK_CUR)) - break; - udelay(1); - } - for (i = 0; i < rdev->usec_timeout; i++) { - if (RREG32(RADEON_CRTC_STATUS) & RADEON_CRTC_VBLANK_CUR) - break; - udelay(1); - } - } + if (!(RREG32(RADEON_CRTC_GEN_CNTL) & RADEON_CRTC_EN)) + return; } else { - if (RREG32(RADEON_CRTC2_GEN_CNTL) & RADEON_CRTC2_EN) { - for (i = 0; i < rdev->usec_timeout; i++) { - if (!(RREG32(RADEON_CRTC2_STATUS) & RADEON_CRTC2_VBLANK_CUR)) - break; - udelay(1); - } - for (i = 0; i < rdev->usec_timeout; i++) { - if (RREG32(RADEON_CRTC2_STATUS) & RADEON_CRTC2_VBLANK_CUR) - break; - udelay(1); - } + if (!(RREG32(RADEON_CRTC2_GEN_CNTL) & RADEON_CRTC2_EN)) + return; + } + + /* depending on when we hit vblank, we may be close to active; if so, + * wait for another frame. + */ + while (r100_is_in_vblank(rdev, crtc)) { + if (i++ % 100 == 0) { + if (!r100_is_counter_moving(rdev, crtc)) + break; + } + } + + while (!r100_is_in_vblank(rdev, crtc)) { + if (i++ % 100 == 0) { + if (!r100_is_counter_moving(rdev, crtc)) + break; } } } @@ -3950,6 +3979,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r100_irq_set(rdev); rdev->config.r100.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -4105,9 +4140,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_combios.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_combios.c @@ -147,7 +147,7 @@ enum radeon_combios_table_offset table) { struct radeon_device *rdev = dev->dev_private; - int rev; + int rev, size; uint16_t offset = 0, check_offset; if (!rdev->bios) @@ -156,174 +156,106 @@ switch (table) { /* absolute offset tables */ case COMBIOS_ASIC_INIT_1_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0xc); - if (check_offset) - offset = check_offset; + check_offset = 0xc; break; case COMBIOS_BIOS_SUPPORT_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x14); - if (check_offset) - offset = check_offset; + check_offset = 0x14; break; case COMBIOS_DAC_PROGRAMMING_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x2a); - if (check_offset) - offset = check_offset; + check_offset = 0x2a; break; case COMBIOS_MAX_COLOR_DEPTH_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x2c); - if (check_offset) - offset = check_offset; + check_offset = 0x2c; break; case COMBIOS_CRTC_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x2e); - if (check_offset) - offset = check_offset; + check_offset = 0x2e; break; case COMBIOS_PLL_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x30); - if (check_offset) - offset = check_offset; + check_offset = 0x30; break; case COMBIOS_TV_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x32); - if (check_offset) - offset = check_offset; + check_offset = 0x32; break; case COMBIOS_DFP_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x34); - if (check_offset) - offset = check_offset; + check_offset = 0x34; break; case COMBIOS_HW_CONFIG_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x36); - if (check_offset) - offset = check_offset; + check_offset = 0x36; break; case COMBIOS_MULTIMEDIA_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x38); - if (check_offset) - offset = check_offset; + check_offset = 0x38; break; case COMBIOS_TV_STD_PATCH_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x3e); - if (check_offset) - offset = check_offset; + check_offset = 0x3e; break; case COMBIOS_LCD_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x40); - if (check_offset) - offset = check_offset; + check_offset = 0x40; break; case COMBIOS_MOBILE_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x42); - if (check_offset) - offset = check_offset; + check_offset = 0x42; break; case COMBIOS_PLL_INIT_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x46); - if (check_offset) - offset = check_offset; + check_offset = 0x46; break; case COMBIOS_MEM_CONFIG_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x48); - if (check_offset) - offset = check_offset; + check_offset = 0x48; break; case COMBIOS_SAVE_MASK_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x4a); - if (check_offset) - offset = check_offset; + check_offset = 0x4a; break; case COMBIOS_HARDCODED_EDID_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x4c); - if (check_offset) - offset = check_offset; + check_offset = 0x4c; break; case COMBIOS_ASIC_INIT_2_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x4e); - if (check_offset) - offset = check_offset; + check_offset = 0x4e; break; case COMBIOS_CONNECTOR_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x50); - if (check_offset) - offset = check_offset; + check_offset = 0x50; break; case COMBIOS_DYN_CLK_1_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x52); - if (check_offset) - offset = check_offset; + check_offset = 0x52; break; case COMBIOS_RESERVED_MEM_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x54); - if (check_offset) - offset = check_offset; + check_offset = 0x54; break; case COMBIOS_EXT_TMDS_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x58); - if (check_offset) - offset = check_offset; + check_offset = 0x58; break; case COMBIOS_MEM_CLK_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x5a); - if (check_offset) - offset = check_offset; + check_offset = 0x5a; break; case COMBIOS_EXT_DAC_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x5c); - if (check_offset) - offset = check_offset; + check_offset = 0x5c; break; case COMBIOS_MISC_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x5e); - if (check_offset) - offset = check_offset; + check_offset = 0x5e; break; case COMBIOS_CRT_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x60); - if (check_offset) - offset = check_offset; + check_offset = 0x60; break; case COMBIOS_INTEGRATED_SYSTEM_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x62); - if (check_offset) - offset = check_offset; + check_offset = 0x62; break; case COMBIOS_COMPONENT_VIDEO_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x64); - if (check_offset) - offset = check_offset; + check_offset = 0x64; break; case COMBIOS_FAN_SPEED_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x66); - if (check_offset) - offset = check_offset; + check_offset = 0x66; break; case COMBIOS_OVERDRIVE_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x68); - if (check_offset) - offset = check_offset; + check_offset = 0x68; break; case COMBIOS_OEM_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x6a); - if (check_offset) - offset = check_offset; + check_offset = 0x6a; break; case COMBIOS_DYN_CLK_2_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x6c); - if (check_offset) - offset = check_offset; + check_offset = 0x6c; break; case COMBIOS_POWER_CONNECTOR_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x6e); - if (check_offset) - offset = check_offset; + check_offset = 0x6e; break; case COMBIOS_I2C_INFO_TABLE: - check_offset = RBIOS16(rdev->bios_header_start + 0x70); - if (check_offset) - offset = check_offset; + check_offset = 0x70; break; /* relative offset tables */ case COMBIOS_ASIC_INIT_3_TABLE: /* offset from misc info */ @@ -439,11 +371,16 @@ } break; default: + check_offset = 0; break; } - return offset; + size = RBIOS8(rdev->bios_header_start + 0x6); + /* check absolute offset tables */ + if (table < COMBIOS_ASIC_INIT_3_TABLE && check_offset && check_offset < size) + offset = RBIOS16(rdev->bios_header_start + check_offset); + return offset; } bool radeon_combios_check_hardcoded_edid(struct radeon_device *rdev) @@ -965,11 +902,26 @@ dac = RBIOS8(dac_info + 0x3) & 0xf; p_dac->ps2_pdac_adj = (bg << 8) | (dac); } - /* if the values are all zeros, use the table */ - if (p_dac->ps2_pdac_adj) + /* if the values are zeros, use the table */ + if ((dac == 0) || (bg == 0)) + found = 0; + else found = 1; } + /* quirks */ + /* Radeon 7000 (RV100) */ + if (((dev->pdev->device == 0x5159) && + (dev->pdev->subsystem_vendor == 0x174B) && + (dev->pdev->subsystem_device == 0x7c28)) || + /* Radeon 9100 (R200) */ + ((dev->pdev->device == 0x514D) && + (dev->pdev->subsystem_vendor == 0x174B) && + (dev->pdev->subsystem_device == 0x7149))) { + /* vbios value is bad, use the default */ + found = 0; + } + if (!found) /* fallback to defaults */ radeon_legacy_get_primary_dac_info_from_table(rdev, p_dac); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r300.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r300.c @@ -1382,6 +1382,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r100_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -1516,9 +1522,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -241,9 +241,6 @@ { int r = 0; - INIT_WORK(&rdev->hotplug_work, radeon_hotplug_work_func); - INIT_WORK(&rdev->audio_work, r600_audio_update_hdmi); - spin_lock_init(&rdev->irq.lock); r = drm_vblank_init(rdev->ddev, rdev->num_crtc); if (r) { @@ -265,6 +262,10 @@ rdev->irq.installed = false; return r; } + + INIT_WORK(&rdev->hotplug_work, radeon_hotplug_work_func); + INIT_WORK(&rdev->audio_work, r600_audio_update_hdmi); + DRM_INFO("radeon: irq initialized.\n"); return 0; } @@ -284,8 +285,8 @@ rdev->irq.installed = false; if (rdev->msi_enabled) pci_disable_msi(rdev->pdev); + flush_work(&rdev->hotplug_work); } - flush_work(&rdev->hotplug_work); } /** @@ -400,6 +401,9 @@ { unsigned long irqflags; + if (!rdev->ddev->irq_enabled) + return; + spin_lock_irqsave(&rdev->irq.lock, irqflags); rdev->irq.afmt[block] = true; radeon_irq_set(rdev); @@ -419,6 +423,9 @@ { unsigned long irqflags; + if (!rdev->ddev->irq_enabled) + return; + spin_lock_irqsave(&rdev->irq.lock, irqflags); rdev->irq.afmt[block] = false; radeon_irq_set(rdev); @@ -438,6 +445,9 @@ unsigned long irqflags; int i; + if (!rdev->ddev->irq_enabled) + return; + spin_lock_irqsave(&rdev->irq.lock, irqflags); for (i = 0; i < RADEON_MAX_HPD_PINS; ++i) rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i)); @@ -458,6 +468,9 @@ unsigned long irqflags; int i; + if (!rdev->ddev->irq_enabled) + return; + spin_lock_irqsave(&rdev->irq.lock, irqflags); for (i = 0; i < RADEON_MAX_HPD_PINS; ++i) rdev->irq.hpd[i] &= !(hpd_mask & (1 << i)); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r420.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r420.c @@ -265,6 +265,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r100_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -411,10 +417,6 @@ if (r) { return r; } - r = radeon_irq_kms_init(rdev); - if (r) { - return r; - } /* Memory manager */ r = radeon_bo_init(rdev); if (r) { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r600.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r600.c @@ -2791,6 +2791,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r = r600_irq_init(rdev); if (r) { DRM_ERROR("radeon: IH init failed (%d).\n", r); @@ -2945,10 +2951,6 @@ if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; - rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL; r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_pm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_pm.c @@ -169,7 +169,7 @@ /* starting with BTC, there is one state that is used for both * MH and SH. Difference is that we always use the high clock index for - * mclk. + * mclk and vddci. */ if ((rdev->pm.pm_method == PM_METHOD_PROFILE) && (rdev->family >= CHIP_BARTS) && @@ -843,7 +843,11 @@ struct radeon_device *rdev = dev->dev_private; seq_printf(m, "default engine clock: %u0 kHz\n", rdev->pm.default_sclk); - seq_printf(m, "current engine clock: %u0 kHz\n", radeon_get_engine_clock(rdev)); + /* radeon_get_engine_clock is not reliable on APUs so just print the current clock */ + if ((rdev->family >= CHIP_PALM) && (rdev->flags & RADEON_IS_IGP)) + seq_printf(m, "current engine clock: %u0 kHz\n", rdev->pm.current_sclk); + else + seq_printf(m, "current engine clock: %u0 kHz\n", radeon_get_engine_clock(rdev)); seq_printf(m, "default memory clock: %u0 kHz\n", rdev->pm.default_mclk); if (rdev->asic->pm.get_memory_clock) seq_printf(m, "current memory clock: %u0 kHz\n", radeon_get_memory_clock(rdev)); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/rs400.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/rs400.c @@ -417,6 +417,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r100_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -535,9 +541,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r520.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r520.c @@ -194,6 +194,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + rs600_irq_set(rdev); rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); /* 1M ring buffer */ @@ -297,9 +303,6 @@ r = radeon_fence_driver_init(rdev); if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; /* Memory manager */ r = radeon_bo_init(rdev); if (r) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_prime.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_prime.c @@ -28,199 +28,71 @@ #include "radeon.h" #include -#include - -static struct sg_table *radeon_gem_map_dma_buf(struct dma_buf_attachment *attachment, - enum dma_data_direction dir) +struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj) { - struct radeon_bo *bo = attachment->dmabuf->priv; - struct drm_device *dev = bo->rdev->ddev; + struct radeon_bo *bo = gem_to_radeon_bo(obj); int npages = bo->tbo.num_pages; - struct sg_table *sg; - int nents; - - mutex_lock(&dev->struct_mutex); - sg = drm_prime_pages_to_sg(bo->tbo.ttm->pages, npages); - nents = dma_map_sg(attachment->dev, sg->sgl, sg->nents, dir); - mutex_unlock(&dev->struct_mutex); - return sg; -} - -static void radeon_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 radeon_gem_dmabuf_release(struct dma_buf *dma_buf) -{ - struct radeon_bo *bo = dma_buf->priv; - - if (bo->gem_base.export_dma_buf == dma_buf) { - DRM_ERROR("unreference dmabuf %p\n", &bo->gem_base); - bo->gem_base.export_dma_buf = NULL; - drm_gem_object_unreference_unlocked(&bo->gem_base); - } -} - -static void *radeon_gem_kmap_atomic(struct dma_buf *dma_buf, unsigned long page_num) -{ - return NULL; -} - -static void radeon_gem_kunmap_atomic(struct dma_buf *dma_buf, unsigned long page_num, void *addr) -{ - -} -static void *radeon_gem_kmap(struct dma_buf *dma_buf, unsigned long page_num) -{ - return NULL; -} - -static void radeon_gem_kunmap(struct dma_buf *dma_buf, unsigned long page_num, void *addr) -{ + return drm_prime_pages_to_sg(bo->tbo.ttm->pages, npages); } -static int radeon_gem_prime_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) +void *radeon_gem_prime_vmap(struct drm_gem_object *obj) { - return -EINVAL; -} - -static void *radeon_gem_prime_vmap(struct dma_buf *dma_buf) -{ - struct radeon_bo *bo = dma_buf->priv; - struct drm_device *dev = bo->rdev->ddev; + struct radeon_bo *bo = gem_to_radeon_bo(obj); int ret; - mutex_lock(&dev->struct_mutex); - if (bo->vmapping_count) { - bo->vmapping_count++; - goto out_unlock; - } - ret = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.num_pages, &bo->dma_buf_vmap); - if (ret) { - mutex_unlock(&dev->struct_mutex); + if (ret) return ERR_PTR(ret); - } - bo->vmapping_count = 1; -out_unlock: - mutex_unlock(&dev->struct_mutex); + return bo->dma_buf_vmap.virtual; } -static void radeon_gem_prime_vunmap(struct dma_buf *dma_buf, void *vaddr) +void radeon_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr) { - struct radeon_bo *bo = dma_buf->priv; - struct drm_device *dev = bo->rdev->ddev; + struct radeon_bo *bo = gem_to_radeon_bo(obj); - mutex_lock(&dev->struct_mutex); - bo->vmapping_count--; - if (bo->vmapping_count == 0) { - ttm_bo_kunmap(&bo->dma_buf_vmap); - } - mutex_unlock(&dev->struct_mutex); + ttm_bo_kunmap(&bo->dma_buf_vmap); } -const static struct dma_buf_ops radeon_dmabuf_ops = { - .map_dma_buf = radeon_gem_map_dma_buf, - .unmap_dma_buf = radeon_gem_unmap_dma_buf, - .release = radeon_gem_dmabuf_release, - .kmap = radeon_gem_kmap, - .kmap_atomic = radeon_gem_kmap_atomic, - .kunmap = radeon_gem_kunmap, - .kunmap_atomic = radeon_gem_kunmap_atomic, - .mmap = radeon_gem_prime_mmap, - .vmap = radeon_gem_prime_vmap, - .vunmap = radeon_gem_prime_vunmap, -}; - -static int radeon_prime_create(struct drm_device *dev, - size_t size, - struct sg_table *sg, - struct radeon_bo **pbo) + +struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev, + size_t size, + struct sg_table *sg) { struct radeon_device *rdev = dev->dev_private; struct radeon_bo *bo; int ret; ret = radeon_bo_create(rdev, size, PAGE_SIZE, false, - RADEON_GEM_DOMAIN_GTT, sg, pbo); + RADEON_GEM_DOMAIN_GTT, sg, &bo); if (ret) - return ret; - bo = *pbo; + return ERR_PTR(ret); bo->gem_base.driver_private = bo; mutex_lock(&rdev->gem.mutex); list_add_tail(&bo->list, &rdev->gem.objects); mutex_unlock(&rdev->gem.mutex); - return 0; + return &bo->gem_base; } -struct dma_buf *radeon_gem_prime_export(struct drm_device *dev, - struct drm_gem_object *obj, - int flags) +int radeon_gem_prime_pin(struct drm_gem_object *obj) { struct radeon_bo *bo = gem_to_radeon_bo(obj); int ret = 0; ret = radeon_bo_reserve(bo, false); if (unlikely(ret != 0)) - return ERR_PTR(ret); + return ret; /* pin buffer into GTT */ ret = radeon_bo_pin(bo, RADEON_GEM_DOMAIN_GTT, NULL); if (ret) { radeon_bo_unreserve(bo); - return ERR_PTR(ret); + return ret; } radeon_bo_unreserve(bo); - return dma_buf_export(bo, &radeon_dmabuf_ops, obj->size, flags); -} -struct drm_gem_object *radeon_gem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf) -{ - struct dma_buf_attachment *attach; - struct sg_table *sg; - struct radeon_bo *bo; - int ret; - - if (dma_buf->ops == &radeon_dmabuf_ops) { - 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; - } - } - - /* need to attach */ - attach = dma_buf_attach(dma_buf, dev->dev); - if (IS_ERR(attach)) - return ERR_CAST(attach); - - sg = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); - if (IS_ERR(sg)) { - ret = PTR_ERR(sg); - goto fail_detach; - } - - ret = radeon_prime_create(dev, dma_buf->size, sg, &bo); - if (ret) - goto fail_unmap; - - bo->gem_base.import_attach = attach; - - return &bo->gem_base; - -fail_unmap: - dma_buf_unmap_attachment(attach, sg, DMA_BIDIRECTIONAL); -fail_detach: - dma_buf_detach(dma_buf, attach); - return ERR_PTR(ret); + return 0; } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r600_hdmi.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r600_hdmi.c @@ -322,6 +322,9 @@ struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; uint32_t offset; + if (!dig || !dig->afmt) + return; + /* Silent, r600_hdmi_enable will raise WARN for us */ if (!dig->afmt->enabled) return; @@ -480,6 +483,9 @@ uint32_t offset; u32 hdmi; + if (!dig || !dig->afmt) + return; + if (ASIC_IS_DCE6(rdev)) return; @@ -489,7 +495,7 @@ offset = dig->afmt->offset; /* Older chipsets require setting HDMI and routing manually */ - if (rdev->family >= CHIP_R600 && !ASIC_IS_DCE3(rdev)) { + if (ASIC_IS_DCE2(rdev) && !ASIC_IS_DCE3(rdev)) { hdmi = HDMI0_ERROR_ACK | HDMI0_ENABLE; switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: @@ -544,7 +550,6 @@ /* Called for ATOM_ENCODER_MODE_HDMI only */ if (!dig || !dig->afmt) { - WARN_ON(1); return; } if (!dig->afmt->enabled) @@ -558,7 +563,7 @@ radeon_irq_kms_disable_afmt(rdev, dig->afmt->id); /* Older chipsets not handled by AtomBIOS */ - if (rdev->family >= CHIP_R600 && !ASIC_IS_DCE3(rdev)) { + if (ASIC_IS_DCE2(rdev) && !ASIC_IS_DCE3(rdev)) { switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: WREG32_P(AVIVO_TMDSA_CNTL, 0, --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_kms.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_kms.c @@ -50,9 +50,13 @@ if (rdev == NULL) return 0; + if (rdev->rmmio == NULL) + goto done_free; radeon_acpi_fini(rdev); radeon_modeset_fini(rdev); radeon_device_fini(rdev); + +done_free: kfree(rdev); dev->dev_private = NULL; return 0; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/r500_reg.h +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/r500_reg.h @@ -357,7 +357,9 @@ #define AVIVO_D1CRTC_FRAME_COUNT 0x60a4 #define AVIVO_D1CRTC_STEREO_CONTROL 0x60c4 +#define AVIVO_D1MODE_MASTER_UPDATE_LOCK 0x60e0 #define AVIVO_D1MODE_MASTER_UPDATE_MODE 0x60e4 +#define AVIVO_D1CRTC_UPDATE_LOCK 0x60e8 /* master controls */ #define AVIVO_DC_CRTC_MASTER_EN 0x60f8 --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_sa.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_sa.c @@ -49,7 +49,7 @@ int radeon_sa_bo_manager_init(struct radeon_device *rdev, struct radeon_sa_manager *sa_manager, - unsigned size, u32 domain) + unsigned size, u32 align, u32 domain) { int i, r; @@ -57,14 +57,15 @@ sa_manager->bo = NULL; sa_manager->size = size; sa_manager->domain = domain; + sa_manager->align = align; sa_manager->hole = &sa_manager->olist; INIT_LIST_HEAD(&sa_manager->olist); for (i = 0; i < RADEON_NUM_RINGS; ++i) { INIT_LIST_HEAD(&sa_manager->flist[i]); } - r = radeon_bo_create(rdev, size, RADEON_GPU_PAGE_SIZE, true, - RADEON_GEM_DOMAIN_CPU, NULL, &sa_manager->bo); + r = radeon_bo_create(rdev, size, align, true, + domain, NULL, &sa_manager->bo); if (r) { dev_err(rdev->dev, "(%d) failed to allocate bo for manager\n", r); return r; @@ -317,7 +318,7 @@ unsigned tries[RADEON_NUM_RINGS]; int i, r; - BUG_ON(align > RADEON_GPU_PAGE_SIZE); + BUG_ON(align > sa_manager->align); BUG_ON(size > sa_manager->size); *sa_bo = kmalloc(sizeof(struct radeon_sa_bo), GFP_KERNEL); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_device.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_device.c @@ -434,18 +434,17 @@ return false; /* first check CRTCs */ - if (ASIC_IS_DCE41(rdev)) { + if (ASIC_IS_DCE4(rdev)) { reg = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET) | RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET); - if (reg & EVERGREEN_CRTC_MASTER_EN) - return true; - } else if (ASIC_IS_DCE4(rdev)) { - reg = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET) | - RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET) | - RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET) | - RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET) | - RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET) | - RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET); + if (rdev->num_crtc >= 4) { + reg |= RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET) | + RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET); + } + if (rdev->num_crtc >= 6) { + reg |= RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET) | + RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET); + } if (reg & EVERGREEN_CRTC_MASTER_EN) return true; } else if (ASIC_IS_AVIVO(rdev)) { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_object.h +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_object.h @@ -158,7 +158,7 @@ extern int radeon_sa_bo_manager_init(struct radeon_device *rdev, struct radeon_sa_manager *sa_manager, - unsigned size, u32 domain); + unsigned size, u32 align, u32 domain); extern void radeon_sa_bo_manager_fini(struct radeon_device *rdev, struct radeon_sa_manager *sa_manager); extern int radeon_sa_bo_manager_start(struct radeon_device *rdev, --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/ni.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/ni.c @@ -466,21 +466,32 @@ (rdev->pdev->device == 0x9907) || (rdev->pdev->device == 0x9908) || (rdev->pdev->device == 0x9909) || + (rdev->pdev->device == 0x990B) || + (rdev->pdev->device == 0x990C) || + (rdev->pdev->device == 0x990F) || (rdev->pdev->device == 0x9910) || - (rdev->pdev->device == 0x9917)) { + (rdev->pdev->device == 0x9917) || + (rdev->pdev->device == 0x9999) || + (rdev->pdev->device == 0x999C)) { rdev->config.cayman.max_simds_per_se = 6; rdev->config.cayman.max_backends_per_se = 2; } else if ((rdev->pdev->device == 0x9903) || (rdev->pdev->device == 0x9904) || (rdev->pdev->device == 0x990A) || + (rdev->pdev->device == 0x990D) || + (rdev->pdev->device == 0x990E) || (rdev->pdev->device == 0x9913) || - (rdev->pdev->device == 0x9918)) { + (rdev->pdev->device == 0x9918) || + (rdev->pdev->device == 0x999D)) { rdev->config.cayman.max_simds_per_se = 4; rdev->config.cayman.max_backends_per_se = 2; } else if ((rdev->pdev->device == 0x9919) || (rdev->pdev->device == 0x9990) || (rdev->pdev->device == 0x9991) || (rdev->pdev->device == 0x9994) || + (rdev->pdev->device == 0x9995) || + (rdev->pdev->device == 0x9996) || + (rdev->pdev->device == 0x999A) || (rdev->pdev->device == 0x99A0)) { rdev->config.cayman.max_simds_per_se = 3; rdev->config.cayman.max_backends_per_se = 1; @@ -610,15 +621,28 @@ WREG32(GB_ADDR_CONFIG, gb_addr_config); WREG32(DMIF_ADDR_CONFIG, gb_addr_config); + if (ASIC_IS_DCE6(rdev)) + WREG32(DMIF_ADDR_CALC, gb_addr_config); WREG32(HDP_ADDR_CONFIG, gb_addr_config); WREG32(DMA_TILING_CONFIG + DMA0_REGISTER_OFFSET, gb_addr_config); WREG32(DMA_TILING_CONFIG + DMA1_REGISTER_OFFSET, gb_addr_config); - tmp = gb_addr_config & NUM_PIPES_MASK; - tmp = r6xx_remap_render_backend(rdev, tmp, - rdev->config.cayman.max_backends_per_se * - rdev->config.cayman.max_shader_engines, - CAYMAN_MAX_BACKENDS, disabled_rb_mask); + if ((rdev->config.cayman.max_backends_per_se == 1) && + (rdev->flags & RADEON_IS_IGP)) { + if ((disabled_rb_mask & 3) == 1) { + /* RB0 disabled, RB1 enabled */ + tmp = 0x11111111; + } else { + /* RB1 disabled, RB0 enabled */ + tmp = 0x00000000; + } + } else { + tmp = gb_addr_config & NUM_PIPES_MASK; + tmp = r6xx_remap_render_backend(rdev, tmp, + rdev->config.cayman.max_backends_per_se * + rdev->config.cayman.max_shader_engines, + CAYMAN_MAX_BACKENDS, disabled_rb_mask); + } WREG32(GB_BACKEND_MAP, tmp); cgts_tcc_disable = 0xffff0000; @@ -1578,6 +1602,12 @@ } /* Enable IRQ */ + if (!rdev->irq.installed) { + r = radeon_irq_kms_init(rdev); + if (r) + return r; + } + r = r600_irq_init(rdev); if (r) { DRM_ERROR("radeon: IH init failed (%d).\n", r); @@ -1662,6 +1692,7 @@ int cayman_suspend(struct radeon_device *rdev) { r600_audio_fini(rdev); + radeon_vm_manager_fini(rdev); cayman_cp_enable(rdev, false); cayman_dma_stop(rdev); evergreen_irq_suspend(rdev); @@ -1723,10 +1754,6 @@ if (r) return r; - r = radeon_irq_kms_init(rdev); - if (r) - return r; - ring->ring_obj = NULL; r600_ring_init(rdev, ring, 1024 * 1024); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/evergreen_reg.h +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/evergreen_reg.h @@ -225,6 +225,8 @@ #define EVERGREEN_CRTC_STATUS_POSITION 0x6e90 #define EVERGREEN_MASTER_UPDATE_MODE 0x6ef8 #define EVERGREEN_CRTC_UPDATE_LOCK 0x6ed4 +#define EVERGREEN_MASTER_UPDATE_LOCK 0x6ef4 +#define EVERGREEN_MASTER_UPDATE_MODE 0x6ef8 #define EVERGREEN_DC_GPIO_HPD_MASK 0x64b0 #define EVERGREEN_DC_GPIO_HPD_A 0x64b4 --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/atombios_dp.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/atombios_dp.c @@ -44,6 +44,41 @@ }; /***** radeon AUX functions *****/ + +/* Atom needs data in little endian format + * so swap as appropriate when copying data to + * or from atom. Note that atom operates on + * dw units. + */ +static void radeon_copy_swap(u8 *dst, u8 *src, u8 num_bytes, bool to_le) +{ +#ifdef __BIG_ENDIAN + u8 src_tmp[20], dst_tmp[20]; /* used for byteswapping */ + u32 *dst32, *src32; + int i; + + memcpy(src_tmp, src, num_bytes); + src32 = (u32 *)src_tmp; + dst32 = (u32 *)dst_tmp; + if (to_le) { + for (i = 0; i < ((num_bytes + 3) / 4); i++) + dst32[i] = cpu_to_le32(src32[i]); + memcpy(dst, dst_tmp, num_bytes); + } else { + u8 dws = num_bytes & ~3; + for (i = 0; i < ((num_bytes + 3) / 4); i++) + dst32[i] = le32_to_cpu(src32[i]); + memcpy(dst, dst_tmp, dws); + if (num_bytes % 4) { + for (i = 0; i < (num_bytes % 4); i++) + dst[dws+i] = dst_tmp[dws+i]; + } + } +#else + memcpy(dst, src, num_bytes); +#endif +} + union aux_channel_transaction { PROCESS_AUX_CHANNEL_TRANSACTION_PS_ALLOCATION v1; PROCESS_AUX_CHANNEL_TRANSACTION_PARAMETERS_V2 v2; @@ -65,10 +100,10 @@ base = (unsigned char *)(rdev->mode_info.atom_context->scratch + 1); - memcpy(base, send, send_bytes); + radeon_copy_swap(base, send, send_bytes, true); - args.v1.lpAuxRequest = 0 + 4; - args.v1.lpDataOut = 16 + 4; + args.v1.lpAuxRequest = cpu_to_le16((u16)(0 + 4)); + args.v1.lpDataOut = cpu_to_le16((u16)(16 + 4)); args.v1.ucDataOutLen = 0; args.v1.ucChannelID = chan->rec.i2c_id; args.v1.ucDelay = delay / 10; @@ -102,7 +137,7 @@ recv_bytes = recv_size; if (recv && recv_size) - memcpy(recv, base + 16, recv_bytes); + radeon_copy_swap(recv, base + 16, recv_bytes, false); return recv_bytes; } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/sid.h +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/sid.h @@ -60,6 +60,8 @@ #define DMIF_ADDR_CONFIG 0xBD4 +#define DMIF_ADDR_CALC 0xC00 + #define SRBM_STATUS 0xE50 #define SRBM_SOFT_RESET 0x0E60 --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_atombios.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_atombios.c @@ -2028,6 +2028,8 @@ num_modes = power_info->info.ucNumOfPowerModeEntries; if (num_modes > ATOM_MAX_NUMBEROF_POWER_BLOCK) num_modes = ATOM_MAX_NUMBEROF_POWER_BLOCK; + if (num_modes == 0) + return state_index; rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state) * num_modes, GFP_KERNEL); if (!rdev->pm.power_state) return state_index; @@ -2432,6 +2434,8 @@ power_info = (union power_info *)(mode_info->atom_context->bios + data_offset); radeon_atombios_add_pplib_thermal_controller(rdev, &power_info->pplib.sThermalController); + if (power_info->pplib.ucNumStates == 0) + return state_index; rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state) * power_info->pplib.ucNumStates, GFP_KERNEL); if (!rdev->pm.power_state) @@ -2514,6 +2518,7 @@ int index = GetIndexIntoMasterTable(DATA, PowerPlayInfo); u16 data_offset; u8 frev, crev; + u8 *power_state_offset; if (!atom_parse_data_header(mode_info->atom_context, index, NULL, &frev, &crev, &data_offset)) @@ -2530,15 +2535,17 @@ non_clock_info_array = (struct _NonClockInfoArray *) (mode_info->atom_context->bios + data_offset + le16_to_cpu(power_info->pplib.usNonClockInfoArrayOffset)); + if (state_array->ucNumEntries == 0) + return state_index; rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state) * state_array->ucNumEntries, GFP_KERNEL); if (!rdev->pm.power_state) return state_index; + power_state_offset = (u8 *)state_array->states; for (i = 0; i < state_array->ucNumEntries; i++) { mode_index = 0; - power_state = (union pplib_power_state *)&state_array->states[i]; - /* XXX this might be an inagua bug... */ - non_clock_array_index = i; /* power_state->v2.nonClockInfoIndex */ + power_state = (union pplib_power_state *)power_state_offset; + non_clock_array_index = power_state->v2.nonClockInfoIndex; non_clock_info = (struct _ATOM_PPLIB_NONCLOCK_INFO *) &non_clock_info_array->nonClockInfo[non_clock_array_index]; rdev->pm.power_state[i].clock_info = kzalloc(sizeof(struct radeon_pm_clock_info) * @@ -2550,9 +2557,6 @@ if (power_state->v2.ucNumDPMLevels) { for (j = 0; j < power_state->v2.ucNumDPMLevels; j++) { clock_array_index = power_state->v2.clockInfoIndex[j]; - /* XXX this might be an inagua bug... */ - if (clock_array_index >= clock_info_array->ucNumEntries) - continue; clock_info = (union pplib_clock_info *) &clock_info_array->clockInfo[clock_array_index * clock_info_array->ucEntrySize]; valid = radeon_atombios_parse_pplib_clock_info(rdev, @@ -2574,6 +2578,7 @@ non_clock_info); state_index++; } + power_state_offset += 2 + power_state->v2.ucNumDPMLevels; } /* if multiple clock modes, mark the lowest as no display */ for (i = 0; i < state_index; i++) { @@ -2620,7 +2625,9 @@ default: break; } - } else { + } + + if (state_index == 0) { rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL); if (rdev->pm.power_state) { rdev->pm.power_state[0].clock_info = --- linux-ppc-3.8.0.orig/drivers/gpu/drm/radeon/radeon_drv.c +++ linux-ppc-3.8.0/drivers/gpu/drm/radeon/radeon_drv.c @@ -123,6 +123,15 @@ int flags); struct drm_gem_object *radeon_gem_prime_import(struct drm_device *dev, struct dma_buf *dma_buf); +struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj); +struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev, + size_t size, + struct sg_table *sg); +int radeon_gem_prime_pin(struct drm_gem_object *obj); +void *radeon_gem_prime_vmap(struct drm_gem_object *obj); +void radeon_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); +extern long radeon_kms_compat_ioctl(struct file *filp, unsigned int cmd, + unsigned long arg); #if defined(CONFIG_DEBUG_FS) int radeon_debugfs_init(struct drm_minor *minor); @@ -397,8 +406,13 @@ .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_export = radeon_gem_prime_export, - .gem_prime_import = radeon_gem_prime_import, + .gem_prime_export = drm_gem_prime_export, + .gem_prime_import = drm_gem_prime_import, + .gem_prime_pin = radeon_gem_prime_pin, + .gem_prime_get_sg_table = radeon_gem_prime_get_sg_table, + .gem_prime_import_sg_table = radeon_gem_prime_import_sg_table, + .gem_prime_vmap = radeon_gem_prime_vmap, + .gem_prime_vunmap = radeon_gem_prime_vunmap, .name = DRIVER_NAME, .desc = DRIVER_DESC, --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_sprite.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_sprite.c @@ -122,8 +122,8 @@ linear_offset = y * fb->pitches[0] + x * pixel_size; sprsurf_offset = - intel_gen4_compute_offset_xtiled(&x, &y, - pixel_size, fb->pitches[0]); + intel_gen4_compute_page_offset(&x, &y, obj->tiling_mode, + pixel_size, fb->pitches[0]); linear_offset -= sprsurf_offset; /* HSW consolidates SPRTILEOFF and SPRLINOFF into a single SPROFFSET @@ -287,8 +287,8 @@ linear_offset = y * fb->pitches[0] + x * pixel_size; dvssurf_offset = - intel_gen4_compute_offset_xtiled(&x, &y, - pixel_size, fb->pitches[0]); + intel_gen4_compute_page_offset(&x, &y, obj->tiling_mode, + pixel_size, fb->pitches[0]); linear_offset -= dvssurf_offset; if (obj->tiling_mode != I915_TILING_NONE) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_dp.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_dp.c @@ -379,7 +379,7 @@ * clock divider. */ if (is_cpu_edp(intel_dp)) { - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) aux_clock_divider = intel_ddi_get_cdclk_freq(dev_priv) >> 1; else if (IS_VALLEYVIEW(dev)) aux_clock_divider = 100; @@ -788,6 +788,7 @@ struct intel_dp_m_n m_n; int pipe = intel_crtc->pipe; enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + int target_clock; /* * Find the lane count in the intel_encoder private @@ -803,13 +804,22 @@ } } + target_clock = mode->clock; + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + if (intel_encoder->type == INTEL_OUTPUT_EDP) { + target_clock = intel_edp_target_clock(intel_encoder, + mode); + 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); + target_clock, adjusted_mode->clock, &m_n); if (IS_HASWELL(dev)) { I915_WRITE(PIPE_DATA_M1(cpu_transcoder), @@ -1791,7 +1801,7 @@ int voltage_tries, loop_tries; uint32_t DP = intel_dp->DP; - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) intel_ddi_prepare_link_retrain(encoder); /* Write the link configuration data */ @@ -1850,7 +1860,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 && voltage_tries == 5) { + if (i == intel_dp->lane_count) { ++loop_tries; if (loop_tries == 5) { DRM_DEBUG_KMS("too many full retries, give up\n"); @@ -1981,7 +1991,7 @@ * intel_ddi_prepare_link_retrain will take care of redoing the link * train. */ - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) return; if (WARN_ON((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0)) @@ -2457,17 +2467,14 @@ 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); + if (is_edp(intel_dp)) intel_panel_fini(&intel_connector->panel); - } drm_sysfs_connector_remove(connector); drm_connector_cleanup(connector); @@ -2755,7 +2762,7 @@ intel_connector_attach_encoder(intel_connector, intel_encoder); drm_sysfs_connector_add(connector); - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; else intel_connector->get_hw_state = intel_connector_get_hw_state; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_dvo.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_dvo.c @@ -449,6 +449,7 @@ const struct intel_dvo_device *dvo = &intel_dvo_devices[i]; struct i2c_adapter *i2c; int gpio; + bool dvoinit; /* Allow the I2C driver info to specify the GPIO to be used in * special cases, but otherwise default to what's defined @@ -468,7 +469,17 @@ i2c = intel_gmbus_get_adapter(dev_priv, gpio); intel_dvo->dev = *dvo; - if (!dvo->dev_ops->init(&intel_dvo->dev, i2c)) + + /* GMBUS NAK handling seems to be unstable, hence let the + * transmitter detection run in bit banging mode for now. + */ + intel_gmbus_force_bit(i2c, true); + + dvoinit = dvo->dev_ops->init(&intel_dvo->dev, i2c); + + intel_gmbus_force_bit(i2c, false); + + if (!dvoinit) continue; intel_encoder->type = INTEL_OUTPUT_DVO; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_gem_context.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_gem_context.c @@ -113,7 +113,7 @@ case 7: reg = I915_READ(GEN7_CXT_SIZE); if (IS_HASWELL(dev)) - ret = HSW_CXT_TOTAL_SIZE(reg) * 64; + ret = HSW_CXT_TOTAL_SIZE; else ret = GEN7_CXT_TOTAL_SIZE(reg) * 64; break; @@ -157,6 +157,13 @@ return ERR_PTR(-ENOMEM); } + if (INTEL_INFO(dev)->gen >= 7) { + ret = i915_gem_object_set_cache_level(ctx->obj, + I915_CACHE_LLC_MLC); + if (ret) + goto err_out; + } + /* 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. --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_fb.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_fb.c @@ -233,7 +233,7 @@ ifbdev->helper.funcs = &intel_fb_helper_funcs; ret = drm_fb_helper_init(dev, &ifbdev->helper, - dev_priv->num_pipe, + INTEL_INFO(dev)->num_pipes, INTELFB_CONN_LIMIT); if (ret) { kfree(ifbdev); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_bios.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_bios.c @@ -351,12 +351,14 @@ 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->fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted; + 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 fdi_rx_polarity_inverted %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); + dev_priv->display_clock_mode, + dev_priv->fdi_rx_polarity_inverted); } } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_gem_stolen.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_gem_stolen.c @@ -42,56 +42,50 @@ * 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) +static unsigned long i915_stolen_to_physical(struct drm_device *dev) { 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. + * is unreliable, so on those 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. + * + * On gen2, the layout is slightly different with the Graphics Segment + * immediately following Top of Memory (or Top of Usable DRAM). Note + * it appears that TOUD is only reported by 865g, so we just use the + * top of memory as determined by the e820 probe. + * + * XXX gen2 requires an unavailable symbol and 945gm fails with + * its value of TOLUD. */ - if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) { - /* top 32bits are reserved = 0 */ + base = 0; + if (INTEL_INFO(dev)->gen >= 6) { + /* Read Base Data of Stolen Memory Register (BDSM) directly. + * Note that there is also a MCHBAR miror at 0x1080c0 or + * we could use device 2:0x5c instead. + */ + pci_read_config_dword(pdev, 0xB0, &base); + base &= ~4095; /* lower bits used for locking register */ + } else if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) { + /* Read Graphics Base of Stolen Memory directly */ 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 { +#if 0 + } else if (IS_GEN3(dev)) { u8 val; + /* Stolen is immediately below Top of Low Usable DRAM */ pci_read_config_byte(pdev, 0x9c, &val); base = val >> 3 << 27; - } - base -= dev_priv->mm.gtt->stolen_size; + base -= dev_priv->mm.gtt->stolen_size; + } else { + /* Stolen is immediately above Top of Memory */ + base = max_low_pfn_mapped << PAGE_SHIFT; #endif + } - return base + offset; + return base; } static void i915_warn_stolen(struct drm_device *dev) @@ -116,7 +110,7 @@ if (!compressed_fb) goto err; - cfb_base = i915_stolen_to_phys(dev, compressed_fb->start); + cfb_base = dev_priv->mm.stolen_base + compressed_fb->start; if (!cfb_base) goto err_fb; @@ -129,7 +123,7 @@ if (!compressed_llb) goto err_fb; - ll_base = i915_stolen_to_phys(dev, compressed_llb->start); + ll_base = dev_priv->mm.stolen_base + compressed_llb->start; if (!ll_base) goto err_llb; } @@ -148,7 +142,7 @@ } DRM_DEBUG_KMS("FBC base 0x%08lx, ll base 0x%08lx, size %dM\n", - cfb_base, ll_base, size >> 20); + (long)cfb_base, (long)ll_base, size >> 20); return; err_llb: @@ -180,6 +174,13 @@ struct drm_i915_private *dev_priv = dev->dev_private; unsigned long prealloc_size = dev_priv->mm.gtt->stolen_size; + dev_priv->mm.stolen_base = i915_stolen_to_physical(dev); + if (dev_priv->mm.stolen_base == 0) + return 0; + + DRM_DEBUG_KMS("found %d bytes of stolen memory at %08lx\n", + dev_priv->mm.gtt->stolen_size, dev_priv->mm.stolen_base); + /* Basic memrange allocator for stolen space */ drm_mm_init(&dev_priv->mm.stolen, 0, prealloc_size); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_irq.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_irq.c @@ -250,10 +250,9 @@ 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) { + if (pipe < 0 || pipe >= INTEL_INFO(dev)->num_pipes) { DRM_ERROR("Invalid crtc %d\n", pipe); return -EINVAL; } @@ -1472,7 +1471,7 @@ queue_work(dev_priv->wq, &dev_priv->error_work); } -static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) +static void __always_unused 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]; @@ -2495,6 +2494,8 @@ I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); enable_mask = ~dev_priv->irq_mask; + enable_mask &= ~(I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT); enable_mask |= I915_USER_INTERRUPT; if (IS_G4X(dev)) @@ -2571,6 +2572,13 @@ unsigned long irqflags; int irq_received; int ret = IRQ_NONE, pipe; + u32 flip[2] = { + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT, + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT + }; + u32 flip_mask = + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; atomic_inc(&dev_priv->irq_received); @@ -2579,7 +2587,7 @@ for (;;) { bool blc_event = false; - irq_received = iir != 0; + irq_received = (iir & ~flip_mask) != 0; /* Can't rely on pipestat interrupt bit in iir as it might * have been cleared after the pipestat interrupt was received. @@ -2626,7 +2634,7 @@ I915_READ(PORT_HOTPLUG_STAT); } - I915_WRITE(IIR, iir); + I915_WRITE(IIR, iir & ~flip_mask); new_iir = I915_READ(IIR); /* Flush posted writes */ if (iir & I915_USER_INTERRUPT) @@ -2634,17 +2642,17 @@ 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 (iir & flip[pipe]) { + intel_prepare_page_flip(dev, pipe); + + if ((I915_READ(ISR) & flip[pipe]) == 0) { + intel_finish_page_flip(dev, pipe); + flip_mask &= ~flip[pipe]; + } + } } if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_hdmi.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_hdmi.c @@ -48,9 +48,9 @@ struct drm_i915_private *dev_priv = dev->dev_private; uint32_t enabled_bits; - enabled_bits = IS_HASWELL(dev) ? DDI_BUF_CTL_ENABLE : SDVO_ENABLE; + enabled_bits = HAS_DDI(dev) ? DDI_BUF_CTL_ENABLE : SDVO_ENABLE; - WARN(I915_READ(intel_hdmi->sdvox_reg) & enabled_bits, + WARN(I915_READ(intel_hdmi->hdmi_reg) & enabled_bits, "HDMI port enabled, expecting disabled\n"); } @@ -391,7 +391,7 @@ return; } - switch (intel_hdmi->sdvox_reg) { + switch (intel_hdmi->hdmi_reg) { case SDVOB: port = VIDEO_DIP_PORT_B; break; @@ -447,7 +447,7 @@ return; } - switch (intel_hdmi->sdvox_reg) { + switch (intel_hdmi->hdmi_reg) { case HDMIB: port = VIDEO_DIP_PORT_B; break; @@ -587,40 +587,40 @@ 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; + u32 hdmi_val; - sdvox = SDVO_ENCODING_HDMI; + hdmi_val = SDVO_ENCODING_HDMI; if (!HAS_PCH_SPLIT(dev)) - sdvox |= intel_hdmi->color_range; + hdmi_val |= intel_hdmi->color_range; if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) - sdvox |= SDVO_VSYNC_ACTIVE_HIGH; + hdmi_val |= SDVO_VSYNC_ACTIVE_HIGH; if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) - sdvox |= SDVO_HSYNC_ACTIVE_HIGH; + hdmi_val |= SDVO_HSYNC_ACTIVE_HIGH; if (intel_crtc->bpp > 24) - sdvox |= COLOR_FORMAT_12bpc; + hdmi_val |= COLOR_FORMAT_12bpc; else - sdvox |= COLOR_FORMAT_8bpc; + hdmi_val |= COLOR_FORMAT_8bpc; /* Required on CPT */ if (intel_hdmi->has_hdmi_sink && HAS_PCH_CPT(dev)) - sdvox |= HDMI_MODE_SELECT; + hdmi_val |= 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; + hdmi_val |= SDVO_AUDIO_ENABLE; + hdmi_val |= SDVO_NULL_PACKETS_DURING_VSYNC; intel_write_eld(encoder, adjusted_mode); } if (HAS_PCH_CPT(dev)) - sdvox |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); + hdmi_val |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); else if (intel_crtc->pipe == PIPE_B) - sdvox |= SDVO_PIPE_B_SELECT; + hdmi_val |= SDVO_PIPE_B_SELECT; - I915_WRITE(intel_hdmi->sdvox_reg, sdvox); - POSTING_READ(intel_hdmi->sdvox_reg); + I915_WRITE(intel_hdmi->hdmi_reg, hdmi_val); + POSTING_READ(intel_hdmi->hdmi_reg); intel_hdmi->set_infoframes(encoder, adjusted_mode); } @@ -633,7 +633,7 @@ struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); u32 tmp; - tmp = I915_READ(intel_hdmi->sdvox_reg); + tmp = I915_READ(intel_hdmi->hdmi_reg); if (!(tmp & SDVO_ENABLE)) return false; @@ -657,7 +657,7 @@ if (intel_hdmi->has_audio) enable_bits |= SDVO_AUDIO_ENABLE; - temp = I915_READ(intel_hdmi->sdvox_reg); + temp = I915_READ(intel_hdmi->hdmi_reg); /* HW workaround for IBX, we need to move the port to transcoder A * before disabling it. */ @@ -674,21 +674,21 @@ * 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); + I915_WRITE(intel_hdmi->hdmi_reg, temp & ~SDVO_ENABLE); + POSTING_READ(intel_hdmi->hdmi_reg); } temp |= enable_bits; - I915_WRITE(intel_hdmi->sdvox_reg, temp); - POSTING_READ(intel_hdmi->sdvox_reg); + I915_WRITE(intel_hdmi->hdmi_reg, temp); + POSTING_READ(intel_hdmi->hdmi_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); + I915_WRITE(intel_hdmi->hdmi_reg, temp); + POSTING_READ(intel_hdmi->hdmi_reg); } } @@ -700,7 +700,7 @@ u32 temp; u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE; - temp = I915_READ(intel_hdmi->sdvox_reg); + temp = I915_READ(intel_hdmi->hdmi_reg); /* HW workaround for IBX, we need to move the port to transcoder A * before disabling it. */ @@ -710,12 +710,12 @@ if (temp & SDVO_PIPE_B_SELECT) { temp &= ~SDVO_PIPE_B_SELECT; - I915_WRITE(intel_hdmi->sdvox_reg, temp); - POSTING_READ(intel_hdmi->sdvox_reg); + I915_WRITE(intel_hdmi->hdmi_reg, temp); + POSTING_READ(intel_hdmi->hdmi_reg); /* Again we need to write this twice. */ - I915_WRITE(intel_hdmi->sdvox_reg, temp); - POSTING_READ(intel_hdmi->sdvox_reg); + I915_WRITE(intel_hdmi->hdmi_reg, temp); + POSTING_READ(intel_hdmi->hdmi_reg); /* Transcoder selection bits only update * effectively on vblank. */ @@ -730,21 +730,21 @@ * 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); + I915_WRITE(intel_hdmi->hdmi_reg, temp & ~SDVO_ENABLE); + POSTING_READ(intel_hdmi->hdmi_reg); } temp &= ~enable_bits; - I915_WRITE(intel_hdmi->sdvox_reg, temp); - POSTING_READ(intel_hdmi->sdvox_reg); + I915_WRITE(intel_hdmi->hdmi_reg, temp); + POSTING_READ(intel_hdmi->hdmi_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); + I915_WRITE(intel_hdmi->hdmi_reg, temp); + POSTING_READ(intel_hdmi->hdmi_reg); } } @@ -769,27 +769,6 @@ 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) { @@ -801,9 +780,6 @@ 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, @@ -1013,7 +989,7 @@ intel_hdmi->set_infoframes = cpt_set_infoframes; } - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; else intel_connector->get_hw_state = intel_connector_get_hw_state; @@ -1033,7 +1009,7 @@ } } -void intel_hdmi_init(struct drm_device *dev, int sdvox_reg, enum port port) +void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port) { struct intel_digital_port *intel_dig_port; struct intel_encoder *intel_encoder; @@ -1066,7 +1042,7 @@ intel_encoder->cloneable = false; intel_dig_port->port = port; - intel_dig_port->hdmi.sdvox_reg = sdvox_reg; + intel_dig_port->hdmi.hdmi_reg = hdmi_reg; intel_dig_port->dp.output_reg = 0; intel_hdmi_init_connector(intel_dig_port, intel_connector); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_crt.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_crt.c @@ -45,6 +45,9 @@ struct intel_crt { struct intel_encoder base; + /* DPMS state is stored in the connector, which we need in the + * encoder's enable/disable callbacks */ + struct intel_connector *connector; bool force_hotplug_required; u32 adpa_reg; }; @@ -81,29 +84,6 @@ 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) @@ -135,6 +115,19 @@ I915_WRITE(crt->adpa_reg, temp); } +static void intel_disable_crt(struct intel_encoder *encoder) +{ + intel_crt_set_dpms(encoder, DRM_MODE_DPMS_OFF); +} + +static void intel_enable_crt(struct intel_encoder *encoder) +{ + struct intel_crt *crt = intel_encoder_to_crt(encoder); + + intel_crt_set_dpms(encoder, crt->connector->base.dpms); +} + + static void intel_crt_dpms(struct drm_connector *connector, int mode) { struct drm_device *dev = connector->dev; @@ -746,6 +739,7 @@ } connector = &intel_connector->base; + crt->connector = intel_connector; drm_connector_init(dev, &intel_connector->base, &intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); @@ -776,7 +770,7 @@ crt->base.disable = intel_disable_crt; crt->base.enable = intel_enable_crt; - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) crt->base.get_hw_state = intel_ddi_get_hw_state; else crt->base.get_hw_state = intel_crt_get_hw_state; @@ -800,10 +794,14 @@ 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. + * TODO: find a proper way to discover whether we need to set the the + * polarity and link reversal bits 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); + if (HAS_PCH_LPT(dev)) { + u32 fdi_config = FDI_RX_POLARITY_REVERSED_LPT | + FDI_RX_LINK_REVERSAL_OVERRIDE; + + dev_priv->fdi_rx_config = I915_READ(_FDI_RXA_CTL) & fdi_config; + } } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_drv.c @@ -138,74 +138,74 @@ .driver_data = (unsigned long) info } static const struct intel_device_info intel_i830_info = { - .gen = 2, .is_mobile = 1, .cursor_needs_physical = 1, + .gen = 2, .is_mobile = 1, .cursor_needs_physical = 1, .num_pipes = 2, .has_overlay = 1, .overlay_needs_physical = 1, }; static const struct intel_device_info intel_845g_info = { - .gen = 2, + .gen = 2, .num_pipes = 1, .has_overlay = 1, .overlay_needs_physical = 1, }; static const struct intel_device_info intel_i85x_info = { - .gen = 2, .is_i85x = 1, .is_mobile = 1, + .gen = 2, .is_i85x = 1, .is_mobile = 1, .num_pipes = 2, .cursor_needs_physical = 1, .has_overlay = 1, .overlay_needs_physical = 1, }; static const struct intel_device_info intel_i865g_info = { - .gen = 2, + .gen = 2, .num_pipes = 1, .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, + .gen = 3, .is_i915g = 1, .cursor_needs_physical = 1, .num_pipes = 2, .has_overlay = 1, .overlay_needs_physical = 1, }; static const struct intel_device_info intel_i915gm_info = { - .gen = 3, .is_mobile = 1, + .gen = 3, .is_mobile = 1, .num_pipes = 2, .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, + .gen = 3, .has_hotplug = 1, .cursor_needs_physical = 1, .num_pipes = 2, .has_overlay = 1, .overlay_needs_physical = 1, }; static const struct intel_device_info intel_i945gm_info = { - .gen = 3, .is_i945gm = 1, .is_mobile = 1, + .gen = 3, .is_i945gm = 1, .is_mobile = 1, .num_pipes = 2, .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, + .gen = 4, .is_broadwater = 1, .num_pipes = 2, .has_hotplug = 1, .has_overlay = 1, }; static const struct intel_device_info intel_i965gm_info = { - .gen = 4, .is_crestline = 1, + .gen = 4, .is_crestline = 1, .num_pipes = 2, .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, + .gen = 3, .is_g33 = 1, .num_pipes = 2, .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, + .gen = 4, .is_g4x = 1, .need_gfx_hws = 1, .num_pipes = 2, .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, + .gen = 4, .is_g4x = 1, .num_pipes = 2, .is_mobile = 1, .need_gfx_hws = 1, .has_fbc = 1, .has_pipe_cxsr = 1, .has_hotplug = 1, .supports_tv = 1, @@ -213,26 +213,26 @@ }; static const struct intel_device_info intel_pineview_info = { - .gen = 3, .is_g33 = 1, .is_pineview = 1, .is_mobile = 1, + .gen = 3, .is_g33 = 1, .is_pineview = 1, .is_mobile = 1, .num_pipes = 2, .need_gfx_hws = 1, .has_hotplug = 1, .has_overlay = 1, }; static const struct intel_device_info intel_ironlake_d_info = { - .gen = 5, + .gen = 5, .num_pipes = 2, .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, + .gen = 5, .is_mobile = 1, .num_pipes = 2, .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, + .gen = 6, .num_pipes = 2, .need_gfx_hws = 1, .has_hotplug = 1, .has_bsd_ring = 1, .has_blt_ring = 1, @@ -241,7 +241,7 @@ }; static const struct intel_device_info intel_sandybridge_m_info = { - .gen = 6, .is_mobile = 1, + .gen = 6, .is_mobile = 1, .num_pipes = 2, .need_gfx_hws = 1, .has_hotplug = 1, .has_fbc = 1, .has_bsd_ring = 1, @@ -251,7 +251,7 @@ }; static const struct intel_device_info intel_ivybridge_d_info = { - .is_ivybridge = 1, .gen = 7, + .is_ivybridge = 1, .gen = 7, .num_pipes = 3, .need_gfx_hws = 1, .has_hotplug = 1, .has_bsd_ring = 1, .has_blt_ring = 1, @@ -260,7 +260,7 @@ }; static const struct intel_device_info intel_ivybridge_m_info = { - .is_ivybridge = 1, .gen = 7, .is_mobile = 1, + .is_ivybridge = 1, .gen = 7, .is_mobile = 1, .num_pipes = 3, .need_gfx_hws = 1, .has_hotplug = 1, .has_fbc = 0, /* FBC is not enabled on Ivybridge mobile yet */ .has_bsd_ring = 1, @@ -270,7 +270,7 @@ }; static const struct intel_device_info intel_valleyview_m_info = { - .gen = 7, .is_mobile = 1, + .gen = 7, .is_mobile = 1, .num_pipes = 2, .need_gfx_hws = 1, .has_hotplug = 1, .has_fbc = 0, .has_bsd_ring = 1, @@ -279,7 +279,7 @@ }; static const struct intel_device_info intel_valleyview_d_info = { - .gen = 7, + .gen = 7, .num_pipes = 2, .need_gfx_hws = 1, .has_hotplug = 1, .has_fbc = 0, .has_bsd_ring = 1, @@ -288,7 +288,7 @@ }; static const struct intel_device_info intel_haswell_d_info = { - .is_haswell = 1, .gen = 7, + .is_haswell = 1, .gen = 7, .num_pipes = 3, .need_gfx_hws = 1, .has_hotplug = 1, .has_bsd_ring = 1, .has_blt_ring = 1, @@ -297,7 +297,7 @@ }; static const struct intel_device_info intel_haswell_m_info = { - .is_haswell = 1, .gen = 7, .is_mobile = 1, + .is_haswell = 1, .gen = 7, .is_mobile = 1, .num_pipes = 3, .need_gfx_hws = 1, .has_hotplug = 1, .has_bsd_ring = 1, .has_blt_ring = 1, @@ -352,41 +352,68 @@ 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(0x0422, &intel_haswell_d_info), /* GT2 desktop */ + INTEL_VGA_DEVICE(0x0422, &intel_haswell_d_info), /* GT3 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(0x042a, &intel_haswell_d_info), /* GT3 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(0x040B, &intel_haswell_d_info), /* GT1 reserved */ + INTEL_VGA_DEVICE(0x041B, &intel_haswell_d_info), /* GT2 reserved */ + INTEL_VGA_DEVICE(0x042B, &intel_haswell_d_info), /* GT3 reserved */ + INTEL_VGA_DEVICE(0x040E, &intel_haswell_d_info), /* GT1 reserved */ + INTEL_VGA_DEVICE(0x041E, &intel_haswell_d_info), /* GT2 reserved */ + INTEL_VGA_DEVICE(0x042E, &intel_haswell_d_info), /* GT3 reserved */ 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(0x0C22, &intel_haswell_d_info), /* SDV GT3 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(0x0C2A, &intel_haswell_d_info), /* SDV GT3 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(0x0C26, &intel_haswell_m_info), /* SDV GT3 mobile */ + INTEL_VGA_DEVICE(0x0C0B, &intel_haswell_d_info), /* SDV GT1 reserved */ + INTEL_VGA_DEVICE(0x0C1B, &intel_haswell_d_info), /* SDV GT2 reserved */ + INTEL_VGA_DEVICE(0x0C2B, &intel_haswell_d_info), /* SDV GT3 reserved */ + INTEL_VGA_DEVICE(0x0C0E, &intel_haswell_d_info), /* SDV GT1 reserved */ + INTEL_VGA_DEVICE(0x0C1E, &intel_haswell_d_info), /* SDV GT2 reserved */ + INTEL_VGA_DEVICE(0x0C2E, &intel_haswell_d_info), /* SDV GT3 reserved */ 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(0x0A22, &intel_haswell_d_info), /* ULT GT3 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(0x0A2A, &intel_haswell_d_info), /* ULT GT3 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 */ + INTEL_VGA_DEVICE(0x0A26, &intel_haswell_m_info), /* ULT GT3 mobile */ + INTEL_VGA_DEVICE(0x0A0B, &intel_haswell_d_info), /* ULT GT1 reserved */ + INTEL_VGA_DEVICE(0x0A1B, &intel_haswell_d_info), /* ULT GT2 reserved */ + INTEL_VGA_DEVICE(0x0A2B, &intel_haswell_d_info), /* ULT GT3 reserved */ + INTEL_VGA_DEVICE(0x0A0E, &intel_haswell_m_info), /* ULT GT1 reserved */ + INTEL_VGA_DEVICE(0x0A1E, &intel_haswell_m_info), /* ULT GT2 reserved */ + INTEL_VGA_DEVICE(0x0A2E, &intel_haswell_m_info), /* ULT GT3 reserved */ + INTEL_VGA_DEVICE(0x0D02, &intel_haswell_d_info), /* CRW GT1 desktop */ + INTEL_VGA_DEVICE(0x0D12, &intel_haswell_d_info), /* CRW GT2 desktop */ + INTEL_VGA_DEVICE(0x0D22, &intel_haswell_d_info), /* CRW GT3 desktop */ + INTEL_VGA_DEVICE(0x0D0A, &intel_haswell_d_info), /* CRW GT1 server */ + INTEL_VGA_DEVICE(0x0D1A, &intel_haswell_d_info), /* CRW GT2 server */ + INTEL_VGA_DEVICE(0x0D2A, &intel_haswell_d_info), /* CRW GT3 server */ + INTEL_VGA_DEVICE(0x0D06, &intel_haswell_m_info), /* CRW GT1 mobile */ + INTEL_VGA_DEVICE(0x0D16, &intel_haswell_m_info), /* CRW GT2 mobile */ + INTEL_VGA_DEVICE(0x0D26, &intel_haswell_m_info), /* CRW GT3 mobile */ + INTEL_VGA_DEVICE(0x0D0B, &intel_haswell_d_info), /* CRW GT1 reserved */ + INTEL_VGA_DEVICE(0x0D1B, &intel_haswell_d_info), /* CRW GT2 reserved */ + INTEL_VGA_DEVICE(0x0D2B, &intel_haswell_d_info), /* CRW GT3 reserved */ + INTEL_VGA_DEVICE(0x0D0E, &intel_haswell_d_info), /* CRW GT1 reserved */ + INTEL_VGA_DEVICE(0x0D1E, &intel_haswell_d_info), /* CRW GT2 reserved */ + INTEL_VGA_DEVICE(0x0D2E, &intel_haswell_d_info), /* CRW GT3 reserved */ INTEL_VGA_DEVICE(0x0f30, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0f31, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0f32, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0f33, &intel_valleyview_m_info), INTEL_VGA_DEVICE(0x0157, &intel_valleyview_m_info), INTEL_VGA_DEVICE(0x0155, &intel_valleyview_d_info), {0, 0, 0} @@ -590,7 +617,7 @@ { int error = 0; - intel_gt_reset(dev); + intel_gt_sanitize(dev); if (drm_core_check_feature(dev, DRIVER_MODESET)) { mutex_lock(&dev->struct_mutex); @@ -616,7 +643,7 @@ pci_set_master(dev->pdev); - intel_gt_reset(dev); + intel_gt_sanitize(dev); /* * Platforms with opregion should have sane BIOS, older ones (gen3 and @@ -1220,23 +1247,23 @@ #define __i915_read(x, y) \ u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg) { \ + unsigned long irqflags; \ u##x val = 0; \ + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); \ 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); \ } \ + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); \ trace_i915_reg_rw(false, reg, val, sizeof(val)); \ return val; \ } @@ -1249,8 +1276,10 @@ #define __i915_write(x, y) \ void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val) { \ + unsigned long irqflags; \ u32 __fifo_ret = 0; \ trace_i915_reg_rw(true, reg, val, sizeof(val)); \ + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); \ if (NEEDS_FORCE_WAKE((dev_priv), (reg))) { \ __fifo_ret = __gen6_gt_wait_for_fifo(dev_priv); \ } \ @@ -1272,6 +1301,7 @@ DRM_ERROR("Unclaimed write to %x\n", reg); \ writel(ERR_INT_MMIO_UNCLAIMED, dev_priv->regs + GEN7_ERR_INT); \ } \ + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); \ } __i915_write(8, b) __i915_write(16, w) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_pm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_pm.c @@ -2572,7 +2572,7 @@ 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_RC6p_THRESHOLD, 150000); I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */ /* Check if we are enabling RC6 */ @@ -3560,6 +3560,7 @@ { struct drm_i915_private *dev_priv = dev->dev_private; int pipe; + uint32_t val; /* * On Ibex Peak and Cougar Point, we need to disable clock @@ -3572,8 +3573,12 @@ /* The below fixes the weird display corruption, a few pixels shifted * downward, on (only) LVDS of some HP laptops with IVY. */ - for_each_pipe(pipe) - I915_WRITE(TRANS_CHICKEN2(pipe), TRANS_CHICKEN2_TIMING_OVERRIDE); + for_each_pipe(pipe) { + val = TRANS_CHICKEN2_TIMING_OVERRIDE; + if (dev_priv->fdi_rx_polarity_inverted) + val |= TRANS_CHICKEN2_FDI_POLARITY_REVERSED; + I915_WRITE(TRANS_CHICKEN2(pipe), val); + } /* WADP0ClockGatingDisable */ for_each_pipe(pipe) { I915_WRITE(TRANS_CHICKEN1(pipe), @@ -4382,7 +4387,7 @@ gen6_gt_check_fifodbg(dev_priv); } -void intel_gt_reset(struct drm_device *dev) +void intel_gt_sanitize(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -4393,26 +4398,61 @@ if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) __gen6_gt_force_wake_mt_reset(dev_priv); } + + /* BIOS often leaves RC6 enabled, but disable it for hw init */ + if (INTEL_INFO(dev)->gen >= 6) + intel_disable_gt_powersave(dev); } 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)) { + } else if (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_IVYBRIDGE(dev)) { + u32 ecobus; + + /* IVB configs may use multi-threaded forcewake */ + + /* A small trick here - if the bios hasn't configured + * MT forcewake, and if the device is in RC6, then + * force_wake_mt_get will not wake the device and the + * ECOBUS read will return zero. Which will be + * (correctly) interpreted by the test below as MT + * forcewake being disabled. + */ + mutex_lock(&dev->struct_mutex); + __gen6_gt_force_wake_mt_get(dev_priv); + ecobus = I915_READ_NOTRACE(ECOBUS); + __gen6_gt_force_wake_mt_put(dev_priv); + mutex_unlock(&dev->struct_mutex); + + if (ecobus & FORCEWAKE_MT_ENABLE) { + 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 { + DRM_INFO("No MT forcewake available on Ivybridge, this can result in issues\n"); + DRM_INFO("when using vblank-synced partial screen updates.\n"); + dev_priv->gt.force_wake_get = __gen6_gt_force_wake_get; + dev_priv->gt.force_wake_put = __gen6_gt_force_wake_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; } +} + +void intel_pm_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work, intel_gen6_powersave_work); } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_bios.h +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_bios.h @@ -127,7 +127,9 @@ /* bits 3 */ u8 disable_smooth_vision:1; u8 single_dvi:1; - u8 rsvd9:6; /* finish byte */ + u8 rsvd9:1; + u8 fdi_rx_polarity_inverted:1; + u8 rsvd10:4; /* finish byte */ /* bits 4 */ u8 legacy_monitor_detect; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_lvds.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_lvds.c @@ -556,7 +556,6 @@ 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); @@ -744,10 +743,10 @@ }, { .callback = intel_no_lvds_dmi_callback, - .ident = "Hewlett-Packard HP t5740e Thin Client", + .ident = "Hewlett-Packard HP t5740", .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), - DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"), + DMI_MATCH(DMI_PRODUCT_NAME, " t5740"), }, }, { @@ -790,6 +789,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"), }, }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Fujitsu Esprimo Q900", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Q900"), + }, + }, { } /* terminating entry */ }; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_display.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_display.c @@ -154,8 +154,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, @@ -1125,8 +1125,8 @@ 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 */ + if (HAS_DDI(dev_priv->dev)) { + /* DDI does not have a specific FDI_TX register */ reg = TRANS_DDI_FUNC_CTL(cpu_transcoder); val = I915_READ(reg); cur_state = !!(val & TRANS_DDI_FUNC_ENABLE); @@ -1170,7 +1170,7 @@ return; /* On Haswell, DDI ports are responsible for the FDI PLL setup */ - if (IS_HASWELL(dev_priv->dev)) + if (HAS_DDI(dev_priv->dev)) return; reg = FDI_TX_CTL(pipe); @@ -2017,18 +2017,29 @@ /* 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; +unsigned long intel_gen4_compute_page_offset(int *x, int *y, + unsigned int tiling_mode, + unsigned int cpp, + unsigned int pitch) +{ + if (tiling_mode != I915_TILING_NONE) { + unsigned int tile_rows, tiles; - return tile_rows * pitch * 8 + tiles * 4096; + tile_rows = *y / 8; + *y %= 8; + + tiles = *x / (512/cpp); + *x %= 512/cpp; + + return tile_rows * pitch * 8 + tiles * 4096; + } else { + unsigned int offset; + + offset = *y * pitch + *x * cpp; + *y = 0; + *x = (offset & 4095) / cpp; + return offset & -4096; + } } static int i9xx_update_plane(struct drm_crtc *crtc, struct drm_framebuffer *fb, @@ -2105,9 +2116,9 @@ 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]); + intel_gen4_compute_page_offset(&x, &y, obj->tiling_mode, + fb->bits_per_pixel / 8, + fb->pitches[0]); linear_offset -= intel_crtc->dspaddr_offset; } else { intel_crtc->dspaddr_offset = linear_offset; @@ -2198,9 +2209,9 @@ 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]); + intel_gen4_compute_page_offset(&x, &y, obj->tiling_mode, + 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", @@ -2304,10 +2315,10 @@ return 0; } - if(intel_crtc->plane > dev_priv->num_pipe) { + if (intel_crtc->plane > INTEL_INFO(dev)->num_pipes) { DRM_ERROR("no plane for crtc: plane %d, num_pipes %d\n", intel_crtc->plane, - dev_priv->num_pipe); + INTEL_INFO(dev)->num_pipes); return -EINVAL; } @@ -3486,15 +3497,15 @@ int plane = intel_crtc->plane; u32 reg, temp; - if (!intel_crtc->active) return; + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + 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); @@ -3570,13 +3581,14 @@ if (!intel_crtc->active) return; + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + 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); @@ -3686,17 +3698,18 @@ struct intel_encoder *encoder; int pipe = intel_crtc->pipe; int plane = intel_crtc->plane; - + u32 pctl; if (!intel_crtc->active) return; + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + 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); @@ -3705,6 +3718,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; @@ -3776,10 +3796,12 @@ struct drm_device *dev = crtc->dev; struct drm_connector *connector; struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); /* crtc should still be enabled when we disable it. */ WARN_ON(!crtc->enabled); + intel_crtc->eld_vld = false; dev_priv->display.crtc_disable(crtc); intel_crtc_update_sarea(crtc, false); dev_priv->display.off(crtc); @@ -4023,26 +4045,33 @@ static void fdi_reduce_ratio(u32 *num, u32 *den) { - while (*num > 0xffffff || *den > 0xffffff) { + while (*num > DATA_LINK_M_N_MASK || + *den > DATA_LINK_M_N_MASK) { *num >>= 1; *den >>= 1; } } +static void compute_m_n(unsigned int m, unsigned int n, + uint32_t *ret_m, uint32_t *ret_n) +{ + *ret_n = min_t(unsigned int, roundup_pow_of_two(n), DATA_LINK_N_MAX); + *ret_m = div_u64((uint64_t) m * *ret_n, n); + fdi_reduce_ratio(ret_m, ret_n); +} + 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); + compute_m_n(bits_per_pixel * pixel_clock, + link_clock * nlanes * 8, + &m_n->gmch_m, &m_n->gmch_n); + + compute_m_n(pixel_clock, link_clock, + &m_n->link_m, &m_n->link_n); } static inline bool intel_panel_use_ssc(struct drm_i915_private *dev_priv) @@ -5334,7 +5363,7 @@ return false; } - if (dev_priv->num_pipe == 2) + if (INTEL_INFO(dev)->num_pipes == 2) return true; switch (intel_crtc->pipe) { @@ -6068,6 +6097,7 @@ struct drm_i915_private *dev_priv = connector->dev->dev_private; uint8_t *eld = connector->eld; struct drm_device *dev = crtc->dev; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); uint32_t eldv; uint32_t i; int len; @@ -6109,6 +6139,7 @@ DRM_DEBUG_DRIVER("ELD on pipe %c\n", pipe_name(pipe)); eldv = AUDIO_ELD_VALID_A << (pipe * 4); + intel_crtc->eld_vld = true; if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { DRM_DEBUG_DRIVER("ELD: DisplayPort detected\n"); @@ -6993,11 +7024,6 @@ 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) @@ -7007,12 +7033,11 @@ if (!crtc->fb) continue; - if (to_intel_framebuffer(crtc->fb)->obj == obj) - intel_increase_pllclock(crtc); + intel_decrease_pllclock(crtc); } } -void intel_mark_fb_idle(struct drm_i915_gem_object *obj) +void intel_mark_fb_busy(struct drm_i915_gem_object *obj) { struct drm_device *dev = obj->base.dev; struct drm_crtc *crtc; @@ -7025,7 +7050,7 @@ continue; if (to_intel_framebuffer(crtc->fb)->obj == obj) - intel_decrease_pllclock(crtc); + intel_increase_pllclock(crtc); } } @@ -7407,8 +7432,8 @@ { 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 drm_framebuffer *old_fb = crtc->fb; + struct drm_i915_gem_object *obj = to_intel_framebuffer(fb)->obj; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_unpin_work *work; unsigned long flags; @@ -7433,8 +7458,7 @@ work->event = event; work->crtc = crtc; - intel_fb = to_intel_framebuffer(crtc->fb); - work->old_fb_obj = intel_fb->obj; + work->old_fb_obj = to_intel_framebuffer(old_fb)->obj; INIT_WORK(&work->work, intel_unpin_work_fn); ret = drm_vblank_get(dev, intel_crtc->pipe); @@ -7454,9 +7478,6 @@ 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); @@ -7494,6 +7515,7 @@ cleanup_pending: atomic_dec(&intel_crtc->unpin_work_count); + crtc->fb = old_fb; 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); @@ -7722,22 +7744,25 @@ 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. */ + /* + * For simplicity do a full modeset on any pipe where the output routing + * changed. We could be more clever, but that would require us to be + * more careful with calling the relevant encoder->mode_set functions. + */ if (*prepare_pipes) *modeset_pipes = *prepare_pipes; /* ... and mask these out. */ *modeset_pipes &= ~(*disable_pipes); *prepare_pipes &= ~(*disable_pipes); + + /* + * HACK: We don't (yet) fully support global modesets. intel_set_config + * obies this rule, but the modeset restore mode of + * intel_modeset_setup_hw_state does not. + */ + *modeset_pipes &= 1 << intel_crtc->pipe; + *prepare_pipes &= 1 << intel_crtc->pipe; } static bool intel_crtc_in_use(struct drm_crtc *crtc) @@ -8303,7 +8328,7 @@ static void intel_cpu_pll_init(struct drm_device *dev) { - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) intel_ddi_pll_init(dev); } @@ -8439,11 +8464,10 @@ I915_WRITE(PFIT_CONTROL, 0); } - if (!(IS_HASWELL(dev) && - (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES))) + if (!IS_ULT(dev)) intel_crt_init(dev); - if (IS_HASWELL(dev)) { + if (HAS_DDI(dev)) { int found; /* Haswell uses DDI functions to detect digital outputs */ @@ -8703,7 +8727,7 @@ struct drm_i915_private *dev_priv = dev->dev_private; /* We always want a DPMS function */ - if (IS_HASWELL(dev)) { + if (HAS_DDI(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; @@ -8831,6 +8855,17 @@ DRM_INFO("applying inverted panel brightness quirk\n"); } +/* + * Some machines (Dell XPS13) suffer broken backlight controls if + * BLM_PCH_PWM_ENABLE is set. + */ +static void quirk_no_pcm_pwm_enable(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_NO_PCH_PWM_ENABLE; + DRM_INFO("applying no-PCH_PWM_ENABLE quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -8888,6 +8923,26 @@ /* Acer Aspire 5734Z must invert backlight brightness */ { 0x2a42, 0x1025, 0x0459, quirk_invert_brightness }, + + /* Acer Aspire 4736Z */ + { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, + + /* Acer/eMachines G725 */ + { 0x2a42, 0x1025, 0x0210, quirk_invert_brightness }, + + /* Acer/eMachines e725 */ + { 0x2a42, 0x1025, 0x0212, quirk_invert_brightness }, + + /* Acer/Packard Bell NCL20 */ + { 0x2a42, 0x1025, 0x034b, quirk_invert_brightness }, + + /* Acer Aspire 4736Z */ + { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, + + /* Dell XPS13 HD Sandy Bridge */ + { 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable }, + /* Dell XPS13 HD and XPS13 FHD Ivy Bridge */ + { 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable }, }; static void intel_init_quirks(struct drm_device *dev) @@ -8984,9 +9039,10 @@ 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" : ""); + INTEL_INFO(dev)->num_pipes, + INTEL_INFO(dev)->num_pipes > 1 ? "s" : ""); - for (i = 0; i < dev_priv->num_pipe; i++) { + for (i = 0; i < INTEL_INFO(dev)->num_pipes; i++) { intel_crtc_init(dev, i); ret = intel_plane_init(dev, i); if (ret) @@ -9040,10 +9096,11 @@ static bool intel_check_plane_mapping(struct intel_crtc *crtc) { - struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; + struct drm_device *dev = crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; u32 reg, val; - if (dev_priv->num_pipe == 1) + if (INTEL_INFO(dev)->num_pipes == 1) return true; reg = DSPCNTR(!crtc->plane); @@ -9209,7 +9266,7 @@ struct intel_encoder *encoder; struct intel_connector *connector; - if (IS_HASWELL(dev)) { + if (HAS_DDI(dev)) { tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)); if (tmp & TRANS_DDI_FUNC_ENABLE) { @@ -9250,7 +9307,7 @@ crtc->active ? "enabled" : "disabled"); } - if (IS_HASWELL(dev)) + if (HAS_DDI(dev)) intel_ddi_setup_hw_pll_state(dev); list_for_each_entry(encoder, &dev->mode_config.encoder_list, @@ -9366,6 +9423,9 @@ /* flush any delayed tasks or pending work */ flush_scheduled_work(); + /* destroy backlight, if any, before the connectors */ + intel_panel_destroy_backlight(dev); + drm_mode_config_cleanup(dev); } @@ -9406,6 +9466,9 @@ #include struct intel_display_error_state { + + int num_transcoders; + struct intel_cursor_error_state { u32 control; u32 position; @@ -9414,15 +9477,7 @@ } 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 { @@ -9434,6 +9489,19 @@ u32 surface; u32 tile_offset; } plane[I915_MAX_PIPES]; + + struct intel_transcoder_error_state { + enum transcoder cpu_transcoder; + + u32 conf; + + u32 htotal; + u32 hblank; + u32 hsync; + u32 vtotal; + u32 vblank; + u32 vsync; + } transcoder[4]; }; struct intel_display_error_state * @@ -9441,16 +9509,22 @@ { drm_i915_private_t *dev_priv = dev->dev_private; struct intel_display_error_state *error; - enum transcoder cpu_transcoder; + int transcoders[] = { + TRANSCODER_A, + TRANSCODER_B, + TRANSCODER_C, + TRANSCODER_EDP, + }; int i; + if (INTEL_INFO(dev)->num_pipes == 0) + return NULL; + 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)); @@ -9465,14 +9539,25 @@ 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)); + } + + error->num_transcoders = INTEL_INFO(dev)->num_pipes; + if (HAS_DDI(dev_priv->dev)) + error->num_transcoders++; /* Account for eDP. */ + + for (i = 0; i < error->num_transcoders; i++) { + enum transcoder cpu_transcoder = transcoders[i]; + + error->transcoder[i].cpu_transcoder = cpu_transcoder; + + error->transcoder[i].conf = I915_READ(PIPECONF(cpu_transcoder)); + error->transcoder[i].htotal = I915_READ(HTOTAL(cpu_transcoder)); + error->transcoder[i].hblank = I915_READ(HBLANK(cpu_transcoder)); + error->transcoder[i].hsync = I915_READ(HSYNC(cpu_transcoder)); + error->transcoder[i].vtotal = I915_READ(VTOTAL(cpu_transcoder)); + error->transcoder[i].vblank = I915_READ(VBLANK(cpu_transcoder)); + error->transcoder[i].vsync = I915_READ(VSYNC(cpu_transcoder)); } return error; @@ -9483,20 +9568,15 @@ 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); + if (!error) + return; + + seq_printf(m, "Num Pipes: %d\n", INTEL_INFO(dev)->num_pipes); 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); @@ -9514,5 +9594,17 @@ seq_printf(m, " POS: %08x\n", error->cursor[i].position); seq_printf(m, " BASE: %08x\n", error->cursor[i].base); } + + for (i = 0; i < error->num_transcoders; i++) { + seq_printf(m, " CPU transcoder: %c\n", + transcoder_name(error->transcoder[i].cpu_transcoder)); + seq_printf(m, " CONF: %08x\n", error->transcoder[i].conf); + seq_printf(m, " HTOTAL: %08x\n", error->transcoder[i].htotal); + seq_printf(m, " HBLANK: %08x\n", error->transcoder[i].hblank); + seq_printf(m, " HSYNC: %08x\n", error->transcoder[i].hsync); + seq_printf(m, " VTOTAL: %08x\n", error->transcoder[i].vtotal); + seq_printf(m, " VBLANK: %08x\n", error->transcoder[i].vblank); + seq_printf(m, " VSYNC: %08x\n", error->transcoder[i].vsync); + } } #endif --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -43,7 +43,7 @@ { 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))); + BUILD_BUG_ON_NOT_POWER_OF_2(PAGE_SIZE / sizeof(struct hlist_head)); while (count > size) count >>= 1; eb = kzalloc(count*sizeof(struct hlist_head) + @@ -706,15 +706,20 @@ int count) { int i; + int relocs_total = 0; + int relocs_max = INT_MAX / sizeof(struct drm_i915_gem_relocation_entry); 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)) + /* First check for malicious input causing overflow in + * the worst case where we need to allocate the entire + * relocation tree as a single array. + */ + if (exec[i].relocation_count > relocs_max - relocs_total) return -EINVAL; + relocs_total += exec[i].relocation_count; length = exec[i].relocation_count * sizeof(struct drm_i915_gem_relocation_entry); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_drv.h +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_drv.h @@ -85,7 +85,7 @@ #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_pipe(p) for ((p) = 0; (p) < INTEL_INFO(dev)->num_pipes; (p)++) #define for_each_encoder_on_crtc(dev, __crtc, intel_encoder) \ list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \ @@ -318,6 +318,7 @@ DEV_INFO_FLAG(has_llc) struct intel_device_info { + u8 num_pipes:3; u8 gen; u8 is_mobile:1; u8 is_i85x:1; @@ -393,6 +394,7 @@ #define QUIRK_PIPEA_FORCE (1<<0) #define QUIRK_LVDS_SSC_DISABLE (1<<1) #define QUIRK_INVERT_BRIGHTNESS (1<<2) +#define QUIRK_NO_PCH_PWM_ENABLE (1<<3) struct intel_fbdev; struct intel_fbc_work; @@ -673,7 +675,6 @@ u32 hotplug_supported_mask; struct work_struct hotplug_work; - int num_pipe; int num_pch_pll; /* For hangcheck timer */ @@ -711,6 +712,7 @@ unsigned int int_crt_support:1; unsigned int lvds_use_ssc:1; unsigned int display_clock_mode:1; + unsigned int fdi_rx_polarity_inverted: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 */ @@ -774,6 +776,7 @@ unsigned long gtt_start; unsigned long gtt_mappable_end; unsigned long gtt_end; + unsigned long stolen_base; /* limited to low memory (32-bit) */ struct io_mapping *gtt_mapping; phys_addr_t gtt_base_addr; @@ -919,7 +922,7 @@ bool hw_contexts_disabled; uint32_t hw_context_size; - bool fdi_rx_polarity_reversed; + u32 fdi_rx_config; struct i915_suspend_saved_registers regfile; @@ -1227,6 +1230,8 @@ #define HAS_PIPE_CONTROL(dev) (INTEL_INFO(dev)->gen >= 5) +#define HAS_DDI(dev) (IS_HASWELL(dev)) + #define INTEL_PCH_DEVICE_ID_MASK 0xff00 #define INTEL_PCH_IBX_DEVICE_ID_TYPE 0x3b00 #define INTEL_PCH_CPT_DEVICE_ID_TYPE 0x1c00 @@ -1323,8 +1328,9 @@ void i915_handle_error(struct drm_device *dev, bool wedged); extern void intel_irq_init(struct drm_device *dev); +extern void intel_pm_init(struct drm_device *dev); extern void intel_gt_init(struct drm_device *dev); -extern void intel_gt_reset(struct drm_device *dev); +extern void intel_gt_sanitize(struct drm_device *dev); void i915_error_state_free(struct kref *error_ref); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -486,9 +486,6 @@ 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)); @@ -496,7 +493,6 @@ drm_gem_object_unreference(&obj->base); kfree(pc); - ring->private = NULL; } static int init_render_ring(struct intel_ring_buffer *ring) @@ -567,7 +563,10 @@ if (HAS_BROKEN_CS_TLB(dev)) drm_gem_object_unreference(to_gem_object(ring->private)); - cleanup_pipe_control(ring); + if (INTEL_INFO(dev)->gen >= 5) + cleanup_pipe_control(ring); + + ring->private = NULL; } static void @@ -875,6 +874,18 @@ I915_WRITE(mmio, (u32)ring->status_page.gfx_addr); POSTING_READ(mmio); + + /* Flush the TLB for this page */ + if (INTEL_INFO(dev)->gen >= 6) { + u32 reg = RING_INSTPM(ring->mmio_base); + I915_WRITE(reg, + _MASKED_BIT_ENABLE(INSTPM_TLB_INVALIDATE | + INSTPM_SYNC_FLUSH)); + if (wait_for((I915_READ(reg) & INSTPM_SYNC_FLUSH) == 0, + 1000)) + DRM_ERROR("%s: wait for SyncFlush to complete for TLB invalidation timed out\n", + ring->name); + } } static int --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_reg.h +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_reg.h @@ -596,6 +596,8 @@ will not assert AGPBUSY# and will only be delivered when out of C3. */ #define INSTPM_FORCE_ORDERING (1<<7) /* GEN6+ */ +#define INSTPM_TLB_INVALIDATE (1<<9) +#define INSTPM_SYNC_FLUSH (1<<5) #define ACTHD 0x020c8 #define FW_BLC 0x020d8 #define FW_BLC2 0x020dc @@ -1523,14 +1525,13 @@ 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)) - +/* Haswell does have the CXT_SIZE register however it does not appear to be + * valid. Now, docs explain in dwords what is in the context object. The full + * size is 70720 bytes, however, the power context and execlist context will + * never be saved (power context is stored elsewhere, and execlists don't work + * on HSW) - so the final size is 66944 bytes, which rounds to 17 pages. + */ +#define HSW_CXT_TOTAL_SIZE (17 * PAGE_SIZE) /* * Overlay regs @@ -2603,14 +2604,14 @@ #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 TU_SIZE(x) (((x)-1) << 25) /* default size 64 */ +#define TU_SIZE_MASK (0x3f << 25) -#define PIPE_GMCH_DATA_M_MASK (0xffffff) +#define DATA_LINK_M_N_MASK (0xffffff) +#define DATA_LINK_N_MAX (0x800000) #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 @@ -2625,11 +2626,9 @@ #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) @@ -3295,8 +3294,6 @@ #define _PIPEA_DATA_M1 0x60030 -#define TU_SIZE(x) (((x)-1) << 25) /* default size 64 */ -#define TU_SIZE_MASK 0x7e000000 #define PIPE_DATA_M1_OFFSET 0 #define _PIPEA_DATA_N1 0x60034 #define PIPE_DATA_N1_OFFSET 0 @@ -3839,7 +3836,7 @@ #define _TRANSB_CHICKEN2 0xf1064 #define TRANS_CHICKEN2(pipe) _PIPE(pipe, _TRANSA_CHICKEN2, _TRANSB_CHICKEN2) #define TRANS_CHICKEN2_TIMING_OVERRIDE (1<<31) - +#define TRANS_CHICKEN2_FDI_POLARITY_REVERSED (1<<29) #define SOUTH_CHICKEN1 0xc2000 #define FDIA_PHASE_SYNC_SHIFT_OVR 19 @@ -3927,7 +3924,7 @@ #define FDI_10BPC (1<<16) #define FDI_6BPC (2<<16) #define FDI_12BPC (3<<16) -#define FDI_LINK_REVERSE_OVERWRITE (1<<15) +#define FDI_RX_LINK_REVERSAL_OVERRIDE (1<<15) #define FDI_DMI_LINK_REVERSE_MASK (1<<14) #define FDI_RX_PLL_ENABLE (1<<13) #define FDI_FS_ERR_CORRECT_ENABLE (1<<11) @@ -4211,7 +4208,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) @@ -4280,8 +4279,8 @@ #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_ENCODE_RC6_VID(mv) (((mv) - 245) / 5) +#define GEN6_DECODE_RC6_VID(vids) (((vids) * 5) + 245) #define GEN6_PCODE_DATA 0x138128 #define GEN6_PCODE_FREQ_IA_RATIO_SHIFT 8 @@ -4524,6 +4523,7 @@ #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_PORT_REVERSAL (1<<16) #define DDI_BUF_IS_IDLE (1<<7) #define DDI_A_4_LANES (1<<4) #define DDI_PORT_WIDTH_X1 (0<<1) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_drv.h +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_drv.h @@ -205,6 +205,7 @@ * some outputs connected to this crtc. */ bool active; + bool eld_vld; bool primary_disabled; /* is the crtc obscured by a plane? */ bool lowfreq_avail; struct intel_overlay *overlay; @@ -334,7 +335,7 @@ } __attribute__((packed)); struct intel_hdmi { - u32 sdvox_reg; + u32 hdmi_reg; int ddc_bus; uint32_t color_range; bool has_hdmi_sink; @@ -377,6 +378,7 @@ struct intel_digital_port { struct intel_encoder base; enum port port; + u32 saved_port_bits; struct intel_dp dp; struct intel_hdmi hdmi; }; @@ -426,7 +428,7 @@ extern void intel_crt_init(struct drm_device *dev); extern void intel_hdmi_init(struct drm_device *dev, - int sdvox_reg, enum port port); + int hdmi_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); @@ -439,9 +441,8 @@ 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 void intel_mark_idle(struct drm_device *dev); extern bool intel_lvds_init(struct drm_device *dev); extern void intel_dp_init(struct drm_device *dev, int output_reg, enum port port); @@ -627,9 +628,10 @@ 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 unsigned long intel_gen4_compute_page_offset(int *x, int *y, + unsigned int tiling_mode, + unsigned int bpp, + unsigned int pitch); extern int intel_sprite_set_colorkey(struct drm_device *dev, void *data, struct drm_file *file_priv); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_panel.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_panel.c @@ -295,6 +295,17 @@ { struct drm_i915_private *dev_priv = dev->dev_private; + /* + * Do not disable backlight on the vgaswitcheroo path. When switching + * away from i915, the other client may depend on i915 to handle the + * backlight. This will leave the backlight on unnecessarily when + * another client is not activated. + */ + if (dev->switch_power_state == DRM_SWITCH_POWER_CHANGING) { + DRM_DEBUG_DRIVER("Skipping backlight disable on vga switch\n"); + return; + } + dev_priv->backlight_enabled = false; intel_panel_actually_set_backlight(dev, 0); @@ -335,7 +346,7 @@ if (tmp & BLM_PWM_ENABLE) goto set_level; - if (dev_priv->num_pipe == 3) + if (INTEL_INFO(dev)->num_pipes == 3) tmp &= ~BLM_PIPE_SELECT_IVB; else tmp &= ~BLM_PIPE_SELECT; @@ -347,7 +358,8 @@ POSTING_READ(reg); I915_WRITE(reg, tmp | BLM_PWM_ENABLE); - if (HAS_PCH_SPLIT(dev)) { + if (HAS_PCH_SPLIT(dev) && + !(dev_priv->quirks & QUIRK_NO_PCH_PWM_ENABLE)) { tmp = I915_READ(BLC_PWM_PCH_CTL1); tmp |= BLM_PCH_PWM_ENABLE; tmp &= ~BLM_PCH_OVERRIDE_ENABLE; @@ -422,6 +434,9 @@ intel_panel_init_backlight(dev); + if (WARN_ON(dev_priv->backlight)) + return -ENODEV; + memset(&props, 0, sizeof(props)); props.type = BACKLIGHT_RAW; props.max_brightness = _intel_panel_get_max_backlight(dev); @@ -447,8 +462,10 @@ void intel_panel_destroy_backlight(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; - if (dev_priv->backlight) + if (dev_priv->backlight) { backlight_device_unregister(dev_priv->backlight); + dev_priv->backlight = NULL; + } } #else int intel_panel_setup_backlight(struct drm_connector *connector) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_dma.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_dma.c @@ -1465,6 +1465,13 @@ dev_priv->dev = dev; dev_priv->info = info; + 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); + spin_lock_init(&dev_priv->gt_lock); + mutex_init(&dev_priv->rps.hw_lock); + i915_dump_device_info(dev_priv); if (i915_get_bridge_dev(dev)) { @@ -1554,6 +1561,8 @@ intel_detect_pch(dev); intel_irq_init(dev); + intel_pm_init(dev); + intel_gt_sanitize(dev); intel_gt_init(dev); /* Try to make sure MCHBAR is enabled before poking at it */ @@ -1579,21 +1588,7 @@ 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); + ret = drm_vblank_init(dev, INTEL_INFO(dev)->num_pipes); if (ret) goto out_gem_unload; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_gem.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_gem.c @@ -1164,7 +1164,8 @@ /* Manually manage the write flush as we may have not yet * retired the buffer. */ - if (obj->last_write_seqno && + if (ret == 0 && + 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; @@ -1881,6 +1882,10 @@ u32 seqno = intel_ring_get_seqno(ring); BUG_ON(ring == NULL); + if (obj->ring != ring && obj->last_write_seqno) { + /* Keep the seqno relative to the current ring */ + obj->last_write_seqno = seqno; + } obj->ring = ring; /* Add a reference if we're newly entering the active list. */ @@ -1918,9 +1923,6 @@ 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); @@ -2521,52 +2523,56 @@ return 0; } -static void sandybridge_write_fence_reg(struct drm_device *dev, int reg, - struct drm_i915_gem_object *obj) +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; + int fence_reg; + int fence_pitch_shift; - 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; + if (INTEL_INFO(dev)->gen >= 6) { + fence_reg = FENCE_REG_SANDYBRIDGE_0; + fence_pitch_shift = SANDYBRIDGE_FENCE_PITCH_SHIFT; + } else { + fence_reg = FENCE_REG_965_0; + fence_pitch_shift = I965_FENCE_PITCH_SHIFT; + } - I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + reg * 8, val); - POSTING_READ(FENCE_REG_SANDYBRIDGE_0 + reg * 8); -} + fence_reg += 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; + /* To w/a incoherency with non-atomic 64-bit register updates, + * we split the 64-bit update into two 32-bit writes. In order + * for a partial fence not to be evaluated between writes, we + * precede the update with write to turn off the fence register, + * and only enable the fence as the last step. + * + * For extra levels of paranoia, we make sure each step lands + * before applying the next step. + */ + I915_WRITE(fence_reg, 0); + POSTING_READ(fence_reg); if (obj) { u32 size = obj->gtt_space->size; + uint64_t val; val = (uint64_t)((obj->gtt_offset + size - 4096) & 0xfffff000) << 32; val |= obj->gtt_offset & 0xfffff000; - val |= ((obj->stride / 128) - 1) << I965_FENCE_PITCH_SHIFT; + val |= (uint64_t)((obj->stride / 128) - 1) << 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); + I915_WRITE(fence_reg + 4, val >> 32); + POSTING_READ(fence_reg + 4); + + I915_WRITE(fence_reg + 0, val); + POSTING_READ(fence_reg); + } else { + I915_WRITE(fence_reg + 4, 0); + POSTING_READ(fence_reg + 4); + } } static void i915_write_fence_reg(struct drm_device *dev, int reg, @@ -2650,7 +2656,7 @@ { switch (INTEL_INFO(dev)->gen) { case 7: - case 6: sandybridge_write_fence_reg(dev, reg, obj); break; + case 6: case 5: case 4: i965_write_fence_reg(dev, reg, obj); break; case 3: i915_write_fence_reg(dev, reg, obj); break; @@ -3848,7 +3854,7 @@ u32 misccpctl; int i; - if (!IS_IVYBRIDGE(dev)) + if (!HAS_L3_GPU_CACHE(dev)) return; if (!dev_priv->l3_parity.remap_info) @@ -4413,7 +4419,7 @@ 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.inactive_list, gtt_list) + list_for_each_entry(obj, &dev_priv->mm.inactive_list, mm_list) if (obj->pin_count == 0 && obj->pages_pin_count == 0) cnt += obj->base.size >> PAGE_SHIFT; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_ddi.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_ddi.c @@ -114,7 +114,7 @@ { int port; - if (IS_HASWELL(dev)) { + if (HAS_DDI(dev)) { for (port = PORT_A; port < PORT_E; port++) intel_prepare_ddi_buffers(dev, port, false); @@ -178,10 +178,8 @@ 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; + rx_ctl_val = dev_priv->fdi_rx_config | FDI_RX_ENHANCE_FRAME_ENABLE | + FDI_RX_PLL_ENABLE | ((intel_crtc->fdi_lanes - 1) << 19); I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); POSTING_READ(_FDI_RXA_CTL); udelay(220); @@ -203,7 +201,10 @@ DP_TP_CTL_LINK_TRAIN_PAT1 | DP_TP_CTL_ENABLE); - /* Configure and enable DDI_BUF_CTL for DDI E with next voltage */ + /* Configure and enable DDI_BUF_CTL for DDI E with next voltage. + * DDI E does not support port reversal, the functionality is + * achieved on the PCH side in FDI_RX_CTL, so no need to set the + * port reversal bit */ I915_WRITE(DDI_BUF_CTL(PORT_E), DDI_BUF_CTL_ENABLE | ((intel_crtc->fdi_lanes - 1) << 1) | @@ -675,10 +676,14 @@ DRM_DEBUG_KMS("Preparing DDI mode for Haswell on port %c, pipe %c\n", port_name(port), pipe_name(pipe)); + intel_crtc->eld_vld = false; if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct intel_digital_port *intel_dig_port = + enc_to_dig_port(encoder); - intel_dp->DP = DDI_BUF_CTL_ENABLE | DDI_BUF_EMP_400MV_0DB_HSW; + intel_dp->DP = intel_dig_port->saved_port_bits | + DDI_BUF_CTL_ENABLE | DDI_BUF_EMP_400MV_0DB_HSW; switch (intel_dp->lane_count) { case 1: intel_dp->DP |= DDI_PORT_WIDTH_X1; @@ -1285,34 +1290,59 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder) { struct drm_encoder *encoder = &intel_encoder->base; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; 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; + uint32_t tmp; if (type == INTEL_OUTPUT_HDMI) { + struct intel_digital_port *intel_dig_port = + enc_to_dig_port(encoder); + /* 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); + I915_WRITE(DDI_BUF_CTL(port), + intel_dig_port->saved_port_bits | + 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); } + + if (intel_crtc->eld_vld) { + tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD); + tmp |= ((AUDIO_OUTPUT_ENABLE_A | AUDIO_ELD_VALID_A) << (pipe * 4)); + I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, tmp); + } } static void intel_disable_ddi(struct intel_encoder *intel_encoder) { struct drm_encoder *encoder = &intel_encoder->base; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; int type = intel_encoder->type; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t tmp; if (type == INTEL_OUTPUT_EDP) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); ironlake_edp_backlight_off(intel_dp); } + + tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD); + tmp &= ~((AUDIO_OUTPUT_ENABLE_A | AUDIO_ELD_VALID_A) << (pipe * 4)); + I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, tmp); } int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv) @@ -1457,6 +1487,7 @@ void intel_ddi_init(struct drm_device *dev, enum port port) { + struct drm_i915_private *dev_priv = dev->dev_private; struct intel_digital_port *intel_dig_port; struct intel_encoder *intel_encoder; struct drm_encoder *encoder; @@ -1473,16 +1504,6 @@ 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; @@ -1497,10 +1518,9 @@ 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->saved_port_bits = I915_READ(DDI_BUF_CTL(port)) & + (DDI_BUF_PORT_REVERSAL | + DDI_A_4_LANES); intel_dig_port->dp.output_reg = DDI_BUF_CTL(port); intel_encoder->type = INTEL_OUTPUT_UNKNOWN; @@ -1508,7 +1528,16 @@ 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); + + if (intel_encoder->type != INTEL_OUTPUT_EDP) { + hdmi_connector = kzalloc(sizeof(struct intel_connector), + GFP_KERNEL); + if (!hdmi_connector) { + return; + } + + intel_dig_port->hdmi.hdmi_reg = DDI_BUF_CTL(port); + intel_hdmi_init_connector(intel_dig_port, hdmi_connector); + } } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/i915/i915_debugfs.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/i915_debugfs.c @@ -103,7 +103,7 @@ 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", + seq_printf(m, "%pK: %s%s %8zdKiB %04x %04x %d %d %d%s%s%s", &obj->base, get_pin_flag(obj), get_tiling_flag(obj), @@ -691,7 +691,7 @@ seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec, error->time.tv_usec); - seq_printf(m, "Kernel: " UTS_RELEASE); + 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); @@ -888,7 +888,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; @@ -907,6 +907,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 *= GT_FREQUENCY_MULTIPLIER; gen6_gt_force_wake_put(dev_priv); mutex_unlock(&dev->struct_mutex); @@ -919,8 +924,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) * GT_FREQUENCY_MULTIPLIER); + 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-ppc-3.8.0.orig/drivers/gpu/drm/i915/intel_sdvo.c +++ linux-ppc-3.8.0/drivers/gpu/drm/i915/intel_sdvo.c @@ -1213,11 +1213,13 @@ 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); + u16 active_outputs; u32 tmp; tmp = I915_READ(intel_sdvo->sdvo_reg); + intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); - if (!(tmp & SDVO_ENABLE)) + if (!(tmp & SDVO_ENABLE) && (active_outputs == 0)) return false; if (HAS_PCH_CPT(dev)) @@ -1743,11 +1745,14 @@ * 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; + intel_ddc_get_modes(connector, &intel_sdvo->ddc); - /* Fetch modes from VBT */ + /* + * Fetch modes from VBT. For SDVO prefer the VBT mode since some + * SDVO->LVDS transcoders can't cope with the EDID mode. Since + * drm_mode_probed_add adds the mode at the head of the list we add it + * last. + */ if (dev_priv->sdvo_lvds_vbt_mode != NULL) { newmode = drm_mode_duplicate(connector->dev, dev_priv->sdvo_lvds_vbt_mode); @@ -1759,7 +1764,6 @@ } } -end: list_for_each_entry(newmode, &connector->probed_modes, head) { if (newmode->type & DRM_MODE_TYPE_PREFERRED) { intel_sdvo->sdvo_lvds_fixed_mode = @@ -2704,7 +2708,6 @@ struct intel_sdvo *intel_sdvo; u32 hotplug_mask; int i; - intel_sdvo = kzalloc(sizeof(struct intel_sdvo), GFP_KERNEL); if (!intel_sdvo) return false; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/udl/udl_fb.c +++ linux-ppc-3.8.0/drivers/gpu/drm/udl/udl_fb.c @@ -22,9 +22,9 @@ #include -#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); @@ -153,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; @@ -169,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; @@ -180,19 +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, dev_byte_offset, - width * bpp, + (x2 - x + 1) * bpp, &bytes_identical, &bytes_sent)) goto error; } @@ -434,6 +469,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-ppc-3.8.0.orig/drivers/gpu/drm/udl/udl_connector.c +++ linux-ppc-3.8.0/drivers/gpu/drm/udl/udl_connector.c @@ -61,6 +61,10 @@ int ret; edid = (struct edid *)udl_get_edid(udl); + if (!edid) { + drm_mode_connector_update_edid_property(connector, NULL); + return 0; + } /* * We only read the main block, but if the monitor reports extension --- linux-ppc-3.8.0.orig/drivers/gpu/drm/udl/udl_drv.h +++ linux-ppc-3.8.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) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/ast/ast_ttm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/ast/ast_ttm.c @@ -316,7 +316,7 @@ ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0); if (ret) { - if (ret != -ERESTARTSYS) + if (ret != -ERESTARTSYS && ret != -EBUSY) DRM_ERROR("reserve failed %p\n", bo); return ret; } @@ -348,6 +348,7 @@ astbo->gem.driver_private = NULL; astbo->bo.bdev = &ast->ttm.bdev; + astbo->bo.bdev->dev_mapping = dev->dev_mapping; ast_ttm_placement(astbo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/ast/ast_drv.h +++ linux-ppc-3.8.0/drivers/gpu/drm/ast/ast_drv.h @@ -239,6 +239,8 @@ void *sysram; int size; struct ttm_bo_kmap_obj mapping; + int x1, y1, x2, y2; /* dirty rect */ + spinlock_t dirty_lock; }; #define to_ast_crtc(x) container_of(x, struct ast_crtc, base) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/ast/ast_fb.c +++ linux-ppc-3.8.0/drivers/gpu/drm/ast/ast_fb.c @@ -52,16 +52,52 @@ int bpp = (afbdev->afb.base.bits_per_pixel + 7)/8; int ret; bool unmap = false; + bool store_for_later = false; + int x2, y2; + unsigned long flags; obj = afbdev->afb.obj; bo = gem_to_ast_bo(obj); + /* + * try and reserve the BO, if we fail with busy + * then the BO is being moved and we should + * store up the damage until later. + */ ret = ast_bo_reserve(bo, true); if (ret) { - DRM_ERROR("failed to reserve fb bo\n"); + if (ret != -EBUSY) + return; + + store_for_later = true; + } + + x2 = x + width - 1; + y2 = y + height - 1; + spin_lock_irqsave(&afbdev->dirty_lock, flags); + + if (afbdev->y1 < y) + y = afbdev->y1; + if (afbdev->y2 > y2) + y2 = afbdev->y2; + if (afbdev->x1 < x) + x = afbdev->x1; + if (afbdev->x2 > x2) + x2 = afbdev->x2; + + if (store_for_later) { + afbdev->x1 = x; + afbdev->x2 = x2; + afbdev->y1 = y; + afbdev->y2 = y2; + spin_unlock_irqrestore(&afbdev->dirty_lock, flags); return; } + afbdev->x1 = afbdev->y1 = INT_MAX; + afbdev->x2 = afbdev->y2 = 0; + spin_unlock_irqrestore(&afbdev->dirty_lock, flags); + if (!bo->kmap.virtual) { ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); if (ret) { @@ -71,10 +107,10 @@ } unmap = true; } - for (i = y; i < y + height; i++) { + for (i = y; i <= y2; i++) { /* assume equal stride for now */ src_offset = dst_offset = i * afbdev->afb.base.pitches[0] + (x * bpp); - memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, width * bpp); + memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, (x2 - x + 1) * bpp); } if (unmap) @@ -305,6 +341,7 @@ ast->fbdev = afbdev; afbdev->helper.funcs = &ast_fb_helper_funcs; + spin_lock_init(&afbdev->dirty_lock); ret = drm_fb_helper_init(dev, &afbdev->helper, 1, 1); if (ret) { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/gma500/framebuffer.c +++ linux-ppc-3.8.0/drivers/gpu/drm/gma500/framebuffer.c @@ -799,8 +799,8 @@ for (i = 0; i < dev_priv->num_pipe; i++) psb_intel_crtc_init(dev, i, mode_dev); - dev->mode_config.max_width = 2048; - dev->mode_config.max_height = 2048; + dev->mode_config.max_width = 4096; + dev->mode_config.max_height = 4096; psb_setup_outputs(dev); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/gma500/psb_intel_display.c +++ linux-ppc-3.8.0/drivers/gpu/drm/gma500/psb_intel_display.c @@ -1246,6 +1246,19 @@ kfree(psb_intel_crtc); } +static void psb_intel_crtc_disable(struct drm_crtc *crtc) +{ + struct gtt_range *gt; + struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; + + crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF); + + if (crtc->fb) { + gt = to_psb_fb(crtc->fb)->gtt; + psb_gtt_unpin(gt); + } +} + const struct drm_crtc_helper_funcs psb_intel_helper_funcs = { .dpms = psb_intel_crtc_dpms, .mode_fixup = psb_intel_crtc_mode_fixup, @@ -1253,6 +1266,7 @@ .mode_set_base = psb_intel_pipe_set_base, .prepare = psb_intel_crtc_prepare, .commit = psb_intel_crtc_commit, + .disable = psb_intel_crtc_disable, }; const struct drm_crtc_funcs psb_intel_crtc_funcs = { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/gma500/cdv_intel_display.c +++ linux-ppc-3.8.0/drivers/gpu/drm/gma500/cdv_intel_display.c @@ -1750,6 +1750,19 @@ kfree(psb_intel_crtc); } +static void cdv_intel_crtc_disable(struct drm_crtc *crtc) +{ + struct gtt_range *gt; + struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; + + crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF); + + if (crtc->fb) { + gt = to_psb_fb(crtc->fb)->gtt; + psb_gtt_unpin(gt); + } +} + const struct drm_crtc_helper_funcs cdv_intel_helper_funcs = { .dpms = cdv_intel_crtc_dpms, .mode_fixup = cdv_intel_crtc_mode_fixup, @@ -1757,6 +1770,7 @@ .mode_set_base = cdv_intel_pipe_set_base, .prepare = cdv_intel_crtc_prepare, .commit = cdv_intel_crtc_commit, + .disable = cdv_intel_crtc_disable, }; const struct drm_crtc_funcs cdv_intel_crtc_funcs = { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/gma500/psb_irq.c +++ linux-ppc-3.8.0/drivers/gpu/drm/gma500/psb_irq.c @@ -211,7 +211,7 @@ vdc_stat = PSB_RVDC32(PSB_INT_IDENTITY_R); - if (vdc_stat & _PSB_PIPE_EVENT_FLAG) + if (vdc_stat & (_PSB_PIPE_EVENT_FLAG|_PSB_IRQ_ASLE)) dsp_int = 1; /* FIXME: Handle Medfield --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nouveau_abi16.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nouveau_abi16.c @@ -386,7 +386,7 @@ struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_device *device = nv_device(drm->device); struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); - struct nouveau_abi16_chan *chan, *temp; + struct nouveau_abi16_chan *chan = NULL, *temp; struct nouveau_abi16_ntfy *ntfy; struct nouveau_object *object; struct nv_dma_class args = {}; @@ -399,10 +399,11 @@ if (unlikely(nv_device(abi16->device)->card_type >= NV_C0)) return nouveau_abi16_put(abi16, -EINVAL); - list_for_each_entry_safe(chan, temp, &abi16->channels, head) { - if (chan->chan->handle == (NVDRM_CHAN | info->channel)) + list_for_each_entry(temp, &abi16->channels, head) { + if (temp->chan->handle == (NVDRM_CHAN | info->channel)) { + chan = temp; break; - chan = NULL; + } } if (!chan) @@ -454,17 +455,18 @@ { struct drm_nouveau_gpuobj_free *fini = data; struct nouveau_abi16 *abi16 = nouveau_abi16_get(file_priv, dev); - struct nouveau_abi16_chan *chan, *temp; + struct nouveau_abi16_chan *chan = NULL, *temp; struct nouveau_abi16_ntfy *ntfy; int ret; if (unlikely(!abi16)) return -ENOMEM; - list_for_each_entry_safe(chan, temp, &abi16->channels, head) { - if (chan->chan->handle == (NVDRM_CHAN | fini->channel)) + list_for_each_entry(temp, &abi16->channels, head) { + if (temp->chan->handle == (NVDRM_CHAN | fini->channel)) { + chan = temp; break; - chan = NULL; + } } if (!chan) --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nv40_pm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nv40_pm.c @@ -131,7 +131,7 @@ if (clk < pll->vco1.max_freq) pll->vco2.max_freq = 0; - pclk->pll_calc(pclk, pll, clk, &coef); + ret = pclk->pll_calc(pclk, pll, clk, &coef); if (ret == 0) return -ERANGE; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nouveau_gem.h +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nouveau_gem.h @@ -35,9 +35,11 @@ extern int nouveau_gem_ioctl_info(struct drm_device *, void *, struct drm_file *); -extern struct dma_buf *nouveau_gem_prime_export(struct drm_device *dev, - struct drm_gem_object *obj, int flags); -extern struct drm_gem_object *nouveau_gem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf); +extern int nouveau_gem_prime_pin(struct drm_gem_object *); +extern struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *); +extern struct drm_gem_object *nouveau_gem_prime_import_sg_table( + struct drm_device *, size_t size, struct sg_table *); +extern void *nouveau_gem_prime_vmap(struct drm_gem_object *); +extern void nouveau_gem_prime_vunmap(struct drm_gem_object *, void *); #endif --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nouveau_prime.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nouveau_prime.c @@ -22,126 +22,42 @@ * Authors: Dave Airlie */ -#include - #include #include "nouveau_drm.h" #include "nouveau_gem.h" -static struct sg_table *nouveau_gem_map_dma_buf(struct dma_buf_attachment *attachment, - enum dma_data_direction dir) +struct sg_table *nouveau_gem_prime_get_sg_table(struct drm_gem_object *obj) { - struct nouveau_bo *nvbo = attachment->dmabuf->priv; - struct drm_device *dev = nvbo->gem->dev; + struct nouveau_bo *nvbo = nouveau_gem_object(obj); int npages = nvbo->bo.num_pages; - struct sg_table *sg; - int nents; - - mutex_lock(&dev->struct_mutex); - sg = drm_prime_pages_to_sg(nvbo->bo.ttm->pages, npages); - nents = dma_map_sg(attachment->dev, sg->sgl, sg->nents, dir); - mutex_unlock(&dev->struct_mutex); - return sg; -} - -static void nouveau_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 nouveau_gem_dmabuf_release(struct dma_buf *dma_buf) -{ - struct nouveau_bo *nvbo = dma_buf->priv; - - if (nvbo->gem->export_dma_buf == dma_buf) { - nvbo->gem->export_dma_buf = NULL; - drm_gem_object_unreference_unlocked(nvbo->gem); - } + return drm_prime_pages_to_sg(nvbo->bo.ttm->pages, npages); } -static void *nouveau_gem_kmap_atomic(struct dma_buf *dma_buf, unsigned long page_num) +void *nouveau_gem_prime_vmap(struct drm_gem_object *obj) { - return NULL; -} - -static void nouveau_gem_kunmap_atomic(struct dma_buf *dma_buf, unsigned long page_num, void *addr) -{ - -} -static void *nouveau_gem_kmap(struct dma_buf *dma_buf, unsigned long page_num) -{ - return NULL; -} - -static void nouveau_gem_kunmap(struct dma_buf *dma_buf, unsigned long page_num, void *addr) -{ - -} - -static int nouveau_gem_prime_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) -{ - return -EINVAL; -} - -static void *nouveau_gem_prime_vmap(struct dma_buf *dma_buf) -{ - struct nouveau_bo *nvbo = dma_buf->priv; - struct drm_device *dev = nvbo->gem->dev; + struct nouveau_bo *nvbo = nouveau_gem_object(obj); int ret; - mutex_lock(&dev->struct_mutex); - if (nvbo->vmapping_count) { - nvbo->vmapping_count++; - goto out_unlock; - } - ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.num_pages, &nvbo->dma_buf_vmap); - if (ret) { - mutex_unlock(&dev->struct_mutex); + if (ret) return ERR_PTR(ret); - } - nvbo->vmapping_count = 1; -out_unlock: - mutex_unlock(&dev->struct_mutex); + return nvbo->dma_buf_vmap.virtual; } -static void nouveau_gem_prime_vunmap(struct dma_buf *dma_buf, void *vaddr) +void nouveau_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr) { - struct nouveau_bo *nvbo = dma_buf->priv; - struct drm_device *dev = nvbo->gem->dev; + struct nouveau_bo *nvbo = nouveau_gem_object(obj); - mutex_lock(&dev->struct_mutex); - nvbo->vmapping_count--; - if (nvbo->vmapping_count == 0) { - ttm_bo_kunmap(&nvbo->dma_buf_vmap); - } - mutex_unlock(&dev->struct_mutex); + ttm_bo_kunmap(&nvbo->dma_buf_vmap); } -static const struct dma_buf_ops nouveau_dmabuf_ops = { - .map_dma_buf = nouveau_gem_map_dma_buf, - .unmap_dma_buf = nouveau_gem_unmap_dma_buf, - .release = nouveau_gem_dmabuf_release, - .kmap = nouveau_gem_kmap, - .kmap_atomic = nouveau_gem_kmap_atomic, - .kunmap = nouveau_gem_kunmap, - .kunmap_atomic = nouveau_gem_kunmap_atomic, - .mmap = nouveau_gem_prime_mmap, - .vmap = nouveau_gem_prime_vmap, - .vunmap = nouveau_gem_prime_vunmap, -}; - -static int -nouveau_prime_new(struct drm_device *dev, - size_t size, - struct sg_table *sg, - struct nouveau_bo **pnvbo) +struct drm_gem_object *nouveau_gem_prime_import_sg_table(struct drm_device *dev, + size_t size, + struct sg_table *sg) { struct nouveau_bo *nvbo; u32 flags = 0; @@ -150,24 +66,22 @@ flags = TTM_PL_FLAG_TT; ret = nouveau_bo_new(dev, size, 0, flags, 0, 0, - sg, pnvbo); + sg, &nvbo); if (ret) - return ret; - nvbo = *pnvbo; + return ERR_PTR(ret); nvbo->valid_domains = NOUVEAU_GEM_DOMAIN_GART; nvbo->gem = drm_gem_object_alloc(dev, nvbo->bo.mem.size); if (!nvbo->gem) { - nouveau_bo_ref(NULL, pnvbo); - return -ENOMEM; + nouveau_bo_ref(NULL, &nvbo); + return ERR_PTR(-ENOMEM); } nvbo->gem->driver_private = nvbo; - return 0; + return nvbo->gem; } -struct dma_buf *nouveau_gem_prime_export(struct drm_device *dev, - struct drm_gem_object *obj, int flags) +int nouveau_gem_prime_pin(struct drm_gem_object *obj) { struct nouveau_bo *nvbo = nouveau_gem_object(obj); int ret = 0; @@ -175,52 +89,7 @@ /* pin buffer into GTT */ ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_TT); if (ret) - return ERR_PTR(-EINVAL); - - return dma_buf_export(nvbo, &nouveau_dmabuf_ops, obj->size, flags); -} - -struct drm_gem_object *nouveau_gem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf) -{ - struct dma_buf_attachment *attach; - struct sg_table *sg; - struct nouveau_bo *nvbo; - int ret; - - if (dma_buf->ops == &nouveau_dmabuf_ops) { - nvbo = dma_buf->priv; - if (nvbo->gem) { - if (nvbo->gem->dev == dev) { - drm_gem_object_reference(nvbo->gem); - dma_buf_put(dma_buf); - return nvbo->gem; - } - } - } - /* need to attach */ - attach = dma_buf_attach(dma_buf, dev->dev); - if (IS_ERR(attach)) - return ERR_PTR(PTR_ERR(attach)); - - sg = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); - if (IS_ERR(sg)) { - ret = PTR_ERR(sg); - goto fail_detach; - } - - ret = nouveau_prime_new(dev, dma_buf->size, sg, &nvbo); - if (ret) - goto fail_unmap; - - nvbo->gem->import_attach = attach; - - return nvbo->gem; + return -EINVAL; -fail_unmap: - dma_buf_unmap_attachment(attach, sg, DMA_BIDIRECTIONAL); -fail_detach: - dma_buf_detach(dma_buf, attach); - return ERR_PTR(ret); + return 0; } - --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nouveau_bo.h +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nouveau_bo.h @@ -31,7 +31,6 @@ int pin_refcnt; struct ttm_bo_kmap_obj dma_buf_vmap; - int vmapping_count; }; static inline struct nouveau_bo * --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nv50_fence.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nv50_fence.c @@ -50,6 +50,8 @@ struct nv50_fence_chan *fctx; struct ttm_mem_reg *mem = &priv->bo->bo.mem; struct nouveau_object *object; + u32 start = mem->start * PAGE_SIZE; + u32 limit = start + mem->size - 1; int ret, i; fctx = chan->fence = kzalloc(sizeof(*fctx), GFP_KERNEL); @@ -59,26 +61,28 @@ nouveau_fence_context_new(&fctx->base); ret = nouveau_object_new(nv_object(chan->cli), chan->handle, - NvSema, 0x0002, + NvSema, 0x003d, &(struct nv_dma_class) { .flags = NV_DMA_TARGET_VRAM | NV_DMA_ACCESS_RDWR, - .start = mem->start * PAGE_SIZE, - .limit = mem->size - 1, + .start = start, + .limit = limit, }, sizeof(struct nv_dma_class), &object); /* dma objects for display sync channel semaphore blocks */ for (i = 0; !ret && i < dev->mode_config.num_crtc; i++) { struct nouveau_bo *bo = nv50_display_crtc_sema(dev, i); + u32 start = bo->bo.mem.start * PAGE_SIZE; + u32 limit = start + bo->bo.mem.size - 1; ret = nouveau_object_new(nv_object(chan->cli), chan->handle, NvEvoSema0 + i, 0x003d, &(struct nv_dma_class) { .flags = NV_DMA_TARGET_VRAM | NV_DMA_ACCESS_RDWR, - .start = bo->bo.offset, - .limit = bo->bo.offset + 0xfff, + .start = start, + .limit = limit, }, sizeof(struct nv_dma_class), &object); } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nouveau_gem.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -24,8 +24,6 @@ * */ -#include - #include #include "nouveau_drm.h" --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nv10_fence.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nv10_fence.c @@ -132,7 +132,7 @@ struct ttm_mem_reg *mem = &priv->bo->bo.mem; struct nouveau_object *object; u32 start = mem->start * PAGE_SIZE; - u32 limit = mem->start + mem->size - 1; + u32 limit = start + mem->size - 1; ret = nouveau_object_new(nv_object(chan->cli), chan->handle, NvSema, 0x0002, --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/nouveau_drm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -653,8 +653,13 @@ .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_export = nouveau_gem_prime_export, - .gem_prime_import = nouveau_gem_prime_import, + .gem_prime_export = drm_gem_prime_export, + .gem_prime_import = drm_gem_prime_import, + .gem_prime_pin = nouveau_gem_prime_pin, + .gem_prime_get_sg_table = nouveau_gem_prime_get_sg_table, + .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table, + .gem_prime_vmap = nouveau_gem_prime_vmap, + .gem_prime_vunmap = nouveau_gem_prime_vunmap, .gem_init_object = nouveau_gem_object_new, .gem_free_object = nouveau_gem_object_del, --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c @@ -107,6 +107,18 @@ return 0x0000; } +static inline u16 +dcb_outp_hasht(struct dcb_output *outp) +{ + return (outp->extdev << 8) | (outp->location << 4) | outp->type; +} + +static inline u16 +dcb_outp_hashm(struct dcb_output *outp) +{ + return (outp->heads << 8) | (outp->link << 6) | outp->or; +} + u16 dcb_outp_parse(struct nouveau_bios *bios, u8 idx, u8 *ver, u8 *len, struct dcb_output *outp) @@ -135,34 +147,28 @@ case DCB_OUTPUT_DP: outp->link = (conf & 0x00000030) >> 4; outp->sorconf.link = outp->link; /*XXX*/ + outp->extdev = 0x00; + if (outp->location != 0) + outp->extdev = (conf & 0x0000ff00) >> 8; break; default: break; } } + + outp->hasht = dcb_outp_hasht(outp); + outp->hashm = dcb_outp_hashm(outp); } return dcb; } -static inline u16 -dcb_outp_hasht(struct dcb_output *outp) -{ - return outp->type; -} - -static inline u16 -dcb_outp_hashm(struct dcb_output *outp) -{ - return (outp->heads << 8) | (outp->link << 6) | outp->or; -} - u16 dcb_outp_match(struct nouveau_bios *bios, u16 type, u16 mask, u8 *ver, u8 *len, struct dcb_output *outp) { u16 dcb, idx = 0; while ((dcb = dcb_outp_parse(bios, idx++, ver, len, outp))) { - if (dcb_outp_hasht(outp) == type) { + if ((dcb_outp_hasht(outp) & 0x00ff) == (type & 0x00ff)) { if ((dcb_outp_hashm(outp) & mask) == mask) break; } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/subdev/bios/init.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/subdev/bios/init.c @@ -1921,8 +1921,8 @@ trace("ZM_MASK_ADD\tR[0x%06x] &= 0x%08x += 0x%08x\n", addr, mask, add); init->offset += 13; - data = init_rd32(init, addr) & mask; - data |= ((data + add) & ~mask); + data = init_rd32(init, addr); + data = (data & mask) | ((data + add) & ~mask); init_wr32(init, addr, data); } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/subdev/device/nvc0.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/subdev/device/nvc0.c @@ -134,7 +134,6 @@ device->oclass[NVDEV_ENGINE_BSP ] = &nvc0_bsp_oclass; device->oclass[NVDEV_ENGINE_PPP ] = &nvc0_ppp_oclass; device->oclass[NVDEV_ENGINE_COPY0 ] = &nvc0_copy0_oclass; - device->oclass[NVDEV_ENGINE_COPY1 ] = &nvc0_copy1_oclass; device->oclass[NVDEV_ENGINE_DISP ] = &nva3_disp_oclass; break; case 0xce: @@ -218,7 +217,6 @@ device->oclass[NVDEV_ENGINE_BSP ] = &nvc0_bsp_oclass; device->oclass[NVDEV_ENGINE_PPP ] = &nvc0_ppp_oclass; device->oclass[NVDEV_ENGINE_COPY0 ] = &nvc0_copy0_oclass; - device->oclass[NVDEV_ENGINE_COPY1 ] = &nvc0_copy1_oclass; device->oclass[NVDEV_ENGINE_DISP ] = &nva3_disp_oclass; break; case 0xc8: --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/subdev/devinit/nv50.c @@ -78,12 +78,13 @@ if (ret) return ret; - /* if we ran the init tables, execute first script pointer for each - * display table output entry that has a matching dcb entry. + /* if we ran the init tables, we have to execute the first script + * pointer of each dcb entry's display encoder table in order + * to properly initialise each encoder. */ - while (priv->base.post && ver) { - u16 data = nvbios_outp_parse(bios, i++, &ver, &hdr, &cnt, &len, &info); - if (data && dcb_outp_match(bios, info.type, info.mask, &ver, &len, &outp)) { + while (priv->base.post && dcb_outp_parse(bios, i, &ver, &hdr, &outp)) { + if (nvbios_outp_match(bios, outp.hasht, outp.hashm, + &ver, &hdr, &cnt, &len, &info)) { struct nvbios_init init = { .subdev = nv_subdev(priv), .bios = bios, @@ -95,7 +96,8 @@ nvbios_exec(&init); } - }; + i++; + } return 0; } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/subdev/vm/base.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/subdev/vm/base.c @@ -362,7 +362,7 @@ vm->fpde = offset >> (vmm->pgt_bits + 12); vm->lpde = (offset + length - 1) >> (vmm->pgt_bits + 12); - vm->pgt = kcalloc(vm->lpde - vm->fpde + 1, sizeof(*vm->pgt), GFP_KERNEL); + vm->pgt = vzalloc((vm->lpde - vm->fpde + 1) * sizeof(*vm->pgt)); if (!vm->pgt) { kfree(vm); return -ENOMEM; @@ -371,7 +371,7 @@ ret = nouveau_mm_init(&vm->mm, mm_offset >> 12, mm_length >> 12, block >> 12); if (ret) { - kfree(vm->pgt); + vfree(vm->pgt); kfree(vm); return ret; } @@ -446,7 +446,7 @@ } nouveau_mm_fini(&vm->mm); - kfree(vm->pgt); + vfree(vm->pgt); kfree(vm); } --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/include/subdev/bios/dcb.h +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/include/subdev/bios/dcb.h @@ -16,6 +16,8 @@ struct dcb_output { int index; /* may not be raw dcb index if merging has happened */ + u16 hasht; + u16 hashm; enum dcb_output_type type; uint8_t i2c_index; uint8_t heads; @@ -25,6 +27,7 @@ uint8_t or; uint8_t link; bool duallink_possible; + uint8_t extdev; union { struct sor_conf { int link; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/nouveau/core/engine/disp/hdminva3.c +++ linux-ppc-3.8.0/drivers/gpu/drm/nouveau/core/engine/disp/hdminva3.c @@ -55,6 +55,10 @@ nv_wr32(priv, 0x61c510 + soff, 0x00000000); nv_mask(priv, 0x61c500 + soff, 0x00000001, 0x00000001); + nv_mask(priv, 0x61c5d0 + soff, 0x00070001, 0x00010001); /* SPARE, HW_CTS */ + nv_mask(priv, 0x61c568 + soff, 0x00010101, 0x00000000); /* ACR_CTRL, ?? */ + nv_mask(priv, 0x61c578 + soff, 0x80000000, 0x80000000); /* ACR_0441_ENABLE */ + /* ??? */ nv_mask(priv, 0x61733c, 0x00100000, 0x00100000); /* RESETF */ nv_mask(priv, 0x61733c, 0x10000000, 0x10000000); /* LOOKUP_EN */ --- linux-ppc-3.8.0.orig/drivers/gpu/drm/mgag200/mgag200_drv.h +++ linux-ppc-3.8.0/drivers/gpu/drm/mgag200/mgag200_drv.h @@ -116,6 +116,8 @@ void *sysram; int size; struct ttm_bo_kmap_obj mapping; + int x1, y1, x2, y2; /* dirty rect */ + spinlock_t dirty_lock; }; struct mga_crtc { --- linux-ppc-3.8.0.orig/drivers/gpu/drm/mgag200/mgag200_ttm.c +++ linux-ppc-3.8.0/drivers/gpu/drm/mgag200/mgag200_ttm.c @@ -315,8 +315,8 @@ ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0); if (ret) { - if (ret != -ERESTARTSYS) - DRM_ERROR("reserve failed %p\n", bo); + if (ret != -ERESTARTSYS && ret != -EBUSY) + DRM_ERROR("reserve failed %p %d\n", bo, ret); return ret; } return 0; @@ -347,6 +347,7 @@ mgabo->gem.driver_private = NULL; mgabo->bo.bdev = &mdev->ttm.bdev; + mgabo->bo.bdev->dev_mapping = dev->dev_mapping; mgag200_ttm_placement(mgabo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM); --- linux-ppc-3.8.0.orig/drivers/gpu/drm/mgag200/mgag200_mode.c +++ linux-ppc-3.8.0/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -189,12 +189,12 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_DIS; - WREG_DAC(MGA1064_PIX_CLK_CTL_CLK_DIS, tmp); + WREG8(DAC_DATA, tmp); WREG8(DAC_INDEX, MGA1064_REMHEADCTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_REMHEADCTL_CLKDIS; - WREG_DAC(MGA1064_REMHEADCTL, tmp); + WREG8(DAC_DATA, tmp); /* select PLL Set C */ tmp = RREG8(MGAREG_MEM_MISC_READ); @@ -204,7 +204,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_POW_DOWN | 0x80; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); udelay(500); @@ -212,7 +212,7 @@ WREG8(DAC_INDEX, MGA1064_VREF_CTL); tmp = RREG8(DAC_DATA); tmp &= ~0x04; - WREG_DAC(MGA1064_VREF_CTL, tmp); + WREG8(DAC_DATA, tmp); udelay(50); @@ -236,13 +236,13 @@ tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_SEL_MSK; tmp |= MGA1064_PIX_CLK_CTL_SEL_PLL; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); WREG8(DAC_INDEX, MGA1064_REMHEADCTL); tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_REMHEADCTL_CLKSL_MSK; tmp |= MGA1064_REMHEADCTL_CLKSL_PLL; - WREG_DAC(MGA1064_REMHEADCTL, tmp); + WREG8(DAC_DATA, tmp); /* reset dotclock rate bit */ WREG8(MGAREG_SEQ_INDEX, 1); @@ -253,7 +253,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_CLK_DIS; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); vcount = RREG8(MGAREG_VCOUNT); @@ -318,7 +318,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_DIS; - WREG_DAC(MGA1064_PIX_CLK_CTL_CLK_DIS, tmp); + WREG8(DAC_DATA, tmp); tmp = RREG8(MGAREG_MEM_MISC_READ); tmp |= 0x3 << 2; @@ -326,12 +326,12 @@ WREG8(DAC_INDEX, MGA1064_PIX_PLL_STAT); tmp = RREG8(DAC_DATA); - WREG_DAC(MGA1064_PIX_PLL_STAT, tmp & ~0x40); + WREG8(DAC_DATA, tmp & ~0x40); WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_POW_DOWN; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); WREG_DAC(MGA1064_EV_PIX_PLLC_M, m); WREG_DAC(MGA1064_EV_PIX_PLLC_N, n); @@ -342,7 +342,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_CLK_POW_DOWN; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); udelay(500); @@ -350,11 +350,11 @@ tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_SEL_MSK; tmp |= MGA1064_PIX_CLK_CTL_SEL_PLL; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); WREG8(DAC_INDEX, MGA1064_PIX_PLL_STAT); tmp = RREG8(DAC_DATA); - WREG_DAC(MGA1064_PIX_PLL_STAT, tmp | 0x40); + WREG8(DAC_DATA, tmp | 0x40); tmp = RREG8(MGAREG_MEM_MISC_READ); tmp |= (0x3 << 2); @@ -363,7 +363,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_CLK_DIS; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); return 0; } @@ -382,19 +382,19 @@ m = n = p = 0; vcomax = 800000; vcomin = 400000; - pllreffreq = 3333; + pllreffreq = 33333; delta = 0xffffffff; permitteddelta = clock * 5 / 1000; - for (testp = 16; testp > 0; testp--) { + for (testp = 16; testp > 0; testp >>= 1) { if (clock * testp > vcomax) continue; if (clock * testp < vcomin) continue; for (testm = 1; testm < 33; testm++) { - for (testn = 1; testn < 257; testn++) { + for (testn = 17; testn < 257; testn++) { computed = (pllreffreq * testn) / (testm * testp); if (computed > clock) @@ -404,11 +404,11 @@ if (tmpdelta < delta) { delta = tmpdelta; n = testn - 1; - m = (testm - 1) | ((n >> 1) & 0x80); + m = (testm - 1); p = testp - 1; } if ((clock * testp) >= 600000) - p |= 80; + p |= 0x80; } } } @@ -416,7 +416,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_DIS; - WREG_DAC(MGA1064_PIX_CLK_CTL_CLK_DIS, tmp); + WREG8(DAC_DATA, tmp); tmp = RREG8(MGAREG_MEM_MISC_READ); tmp |= 0x3 << 2; @@ -425,7 +425,7 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_POW_DOWN; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); udelay(500); @@ -439,13 +439,13 @@ tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_SEL_MSK; tmp |= MGA1064_PIX_CLK_CTL_SEL_PLL; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_CLK_DIS; tmp &= ~MGA1064_PIX_CLK_CTL_CLK_POW_DOWN; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); vcount = RREG8(MGAREG_VCOUNT); @@ -515,12 +515,12 @@ WREG8(DAC_INDEX, MGA1064_PIX_CLK_CTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_PIX_CLK_CTL_CLK_DIS; - WREG_DAC(MGA1064_PIX_CLK_CTL_CLK_DIS, tmp); + WREG8(DAC_DATA, tmp); WREG8(DAC_INDEX, MGA1064_REMHEADCTL); tmp = RREG8(DAC_DATA); tmp |= MGA1064_REMHEADCTL_CLKDIS; - WREG_DAC(MGA1064_REMHEADCTL, tmp); + WREG8(DAC_DATA, tmp); tmp = RREG8(MGAREG_MEM_MISC_READ); tmp |= (0x3<<2) | 0xc0; @@ -530,7 +530,7 @@ tmp = RREG8(DAC_DATA); tmp &= ~MGA1064_PIX_CLK_CTL_CLK_DIS; tmp |= MGA1064_PIX_CLK_CTL_CLK_POW_DOWN; - WREG_DAC(MGA1064_PIX_CLK_CTL, tmp); + WREG8(DAC_DATA, tmp); udelay(500); @@ -657,12 +657,26 @@ WREG_DAC(MGA1064_GEN_IO_DATA, tmp); } - +/* + This is how the framebuffer base address is stored in g200 cards: + * Assume @offset is the gpu_addr variable of the framebuffer object + * Then addr is the number of _pixels_ (not bytes) from the start of + VRAM to the first pixel we want to display. (divided by 2 for 32bit + framebuffers) + * addr is stored in the CRTCEXT0, CRTCC and CRTCD registers + addr<20> -> CRTCEXT0<6> + addr<19-16> -> CRTCEXT0<3-0> + addr<15-8> -> CRTCC<7-0> + addr<7-0> -> CRTCD<7-0> + CRTCEXT0 has to be programmed last to trigger an update and make the + new addr variable take effect. + */ void mga_set_start_address(struct drm_crtc *crtc, unsigned offset) { struct mga_device *mdev = crtc->dev->dev_private; u32 addr; int count; + u8 crtcext0; while (RREG8(0x1fda) & 0x08); while (!(RREG8(0x1fda) & 0x08)); @@ -670,10 +684,17 @@ count = RREG8(MGAREG_VCOUNT) + 2; while (RREG8(MGAREG_VCOUNT) < count); - addr = offset >> 2; + WREG8(MGAREG_CRTCEXT_INDEX, 0); + crtcext0 = RREG8(MGAREG_CRTCEXT_DATA); + crtcext0 &= 0xB0; + addr = offset / 8; + /* Can't store addresses any higher than that... + but we also don't have more than 16MB of memory, so it should be fine. */ + WARN_ON(addr > 0x1fffff); + crtcext0 |= (!!(addr & (1<<20)))<<6; WREG_CRT(0x0d, (u8)(addr & 0xff)); WREG_CRT(0x0c, (u8)(addr >> 8) & 0xff); - WREG_CRT(0xaf, (u8)(addr >> 16) & 0xf); + WREG_ECRT(0x0, ((u8)(addr >> 16) & 0xf) | crtcext0); } @@ -751,8 +772,6 @@ int i; unsigned char misc = 0; unsigned char ext_vga[6]; - unsigned char ext_vga_index24; - unsigned char dac_index90 = 0; u8 bppshift; static unsigned char dacvalue[] = { @@ -803,7 +822,6 @@ option2 = 0x0000b000; break; case G200_ER: - dac_index90 = 0; break; } @@ -852,10 +870,8 @@ WREG_DAC(i, dacvalue[i]); } - if (mdev->type == G200_ER) { - WREG_DAC(0x90, dac_index90); - } - + if (mdev->type == G200_ER) + WREG_DAC(0x90, 0); if (option) pci_write_config_dword(dev->pdev, PCI_MGA_OPTION, option); @@ -952,8 +968,6 @@ if (mdev->type == G200_WB) ext_vga[1] |= 0x88; - ext_vga_index24 = 0x05; - /* Set pixel clocks */ misc = 0x2d; WREG8(MGA_MISC_OUT, misc); @@ -965,7 +979,7 @@ } if (mdev->type == G200_ER) - WREG_ECRT(24, ext_vga_index24); + WREG_ECRT(0x24, 0x5); if (mdev->type == G200_EV) { WREG_ECRT(6, 0); @@ -1027,13 +1041,14 @@ else hi_pri_lvl = 5; - WREG8(0x1fde, 0x06); - WREG8(0x1fdf, hi_pri_lvl); + WREG8(MGAREG_CRTCEXT_INDEX, 0x06); + WREG8(MGAREG_CRTCEXT_DATA, hi_pri_lvl); } else { + WREG8(MGAREG_CRTCEXT_INDEX, 0x06); if (mdev->reg_1e24 >= 0x01) - WREG8(0x1fdf, 0x03); + WREG8(MGAREG_CRTCEXT_DATA, 0x03); else - WREG8(0x1fdf, 0x04); + WREG8(MGAREG_CRTCEXT_DATA, 0x04); } } return 0; --- linux-ppc-3.8.0.orig/drivers/gpu/drm/mgag200/mgag200_fb.c +++ linux-ppc-3.8.0/drivers/gpu/drm/mgag200/mgag200_fb.c @@ -28,16 +28,52 @@ int bpp = (mfbdev->mfb.base.bits_per_pixel + 7)/8; int ret; bool unmap = false; + bool store_for_later = false; + int x2, y2; + unsigned long flags; obj = mfbdev->mfb.obj; bo = gem_to_mga_bo(obj); + /* + * try and reserve the BO, if we fail with busy + * then the BO is being moved and we should + * store up the damage until later. + */ ret = mgag200_bo_reserve(bo, true); if (ret) { - DRM_ERROR("failed to reserve fb bo\n"); + if (ret != -EBUSY) + return; + + store_for_later = true; + } + + x2 = x + width - 1; + y2 = y + height - 1; + spin_lock_irqsave(&mfbdev->dirty_lock, flags); + + if (mfbdev->y1 < y) + y = mfbdev->y1; + if (mfbdev->y2 > y2) + y2 = mfbdev->y2; + if (mfbdev->x1 < x) + x = mfbdev->x1; + if (mfbdev->x2 > x2) + x2 = mfbdev->x2; + + if (store_for_later) { + mfbdev->x1 = x; + mfbdev->x2 = x2; + mfbdev->y1 = y; + mfbdev->y2 = y2; + spin_unlock_irqrestore(&mfbdev->dirty_lock, flags); return; } + mfbdev->x1 = mfbdev->y1 = INT_MAX; + mfbdev->x2 = mfbdev->y2 = 0; + spin_unlock_irqrestore(&mfbdev->dirty_lock, flags); + if (!bo->kmap.virtual) { ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); if (ret) { @@ -47,10 +83,10 @@ } unmap = true; } - for (i = y; i < y + height; i++) { + for (i = y; i <= y2; i++) { /* assume equal stride for now */ src_offset = dst_offset = i * mfbdev->mfb.base.pitches[0] + (x * bpp); - memcpy_toio(bo->kmap.virtual + src_offset, mfbdev->sysram + src_offset, width * bpp); + memcpy_toio(bo->kmap.virtual + src_offset, mfbdev->sysram + src_offset, (x2 - x + 1) * bpp); } if (unmap) @@ -269,6 +305,7 @@ mdev->mfbdev = mfbdev; mfbdev->helper.funcs = &mga_fb_helper_funcs; + spin_lock_init(&mfbdev->dirty_lock); ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper, mdev->num_crtc, MGAG200FB_CONN_LIMIT); --- linux-ppc-3.8.0.orig/drivers/gpu/vga/vga_switcheroo.c +++ linux-ppc-3.8.0/drivers/gpu/vga/vga_switcheroo.c @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -337,8 +338,10 @@ if (new_client->fb_info) { struct fb_event event; + console_lock(); event.info = new_client->fb_info; fb_notifier_call_chain(FB_EVENT_REMAP_ALL_CONSOLE, &event); + console_unlock(); } ret = vgasr_priv.handler->switchto(new_client->id); --- linux-ppc-3.8.0.orig/drivers/cdrom/cdrom.c +++ linux-ppc-3.8.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 */ @@ -2882,7 +2882,7 @@ if (lba < 0) return -EINVAL; - cgc->buffer = kmalloc(blocksize, GFP_KERNEL); + cgc->buffer = kzalloc(blocksize, GFP_KERNEL); if (cgc->buffer == NULL) return -ENOMEM; --- linux-ppc-3.8.0.orig/drivers/memstick/host/rtsx_pci_ms.c +++ linux-ppc-3.8.0/drivers/memstick/host/rtsx_pci_ms.c @@ -426,6 +426,9 @@ 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); } @@ -441,6 +444,10 @@ 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) --- linux-ppc-3.8.0.orig/drivers/firmware/dmi_scan.c +++ linux-ppc-3.8.0/drivers/firmware/dmi_scan.c @@ -442,7 +442,6 @@ 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])) { @@ -461,9 +460,9 @@ dmi_ver = 0x0206; break; } - offset = 16; + return memcmp(p + 16, "_DMI_", 5) || dmi_present(p + 16); } - return dmi_present(buf + offset); + return 1; } void __init dmi_scan_machine(void) --- linux-ppc-3.8.0.orig/drivers/firmware/efivars.c +++ linux-ppc-3.8.0/drivers/firmware/efivars.c @@ -79,6 +79,7 @@ #include #include #include +#include #include #include @@ -102,6 +103,11 @@ */ #define GUID_LEN 36 +static bool efivars_pstore_disable = + IS_ENABLED(CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE); + +module_param_named(pstore_disable, efivars_pstore_disable, bool, 0644); + /* * The maximum size of VariableName + Data = 1024 * Therefore, it's reasonable to save that much @@ -405,10 +411,11 @@ get_var_data(struct efivars *efivars, struct efi_variable *var) { efi_status_t status; + unsigned long flags; - spin_lock(&efivars->lock); + spin_lock_irqsave(&efivars->lock, flags); status = get_var_data_locked(efivars, var); - spin_unlock(&efivars->lock); + spin_unlock_irqrestore(&efivars->lock, flags); if (status != EFI_SUCCESS) { printk(KERN_WARNING "efivars: get_variable() failed 0x%lx!\n", @@ -417,6 +424,32 @@ return status; } +static efi_status_t +check_var_size_locked(struct efivars *efivars, u32 attributes, + unsigned long size) +{ + const struct efivar_operations *fops = efivars->ops; + + if (!efivars->ops->query_variable_store) + return EFI_UNSUPPORTED; + + return fops->query_variable_store(attributes, size); +} + + +static efi_status_t +check_var_size(struct efivars *efivars, u32 attributes, unsigned long size) +{ + efi_status_t status; + unsigned long flags; + + spin_lock_irqsave(&efivars->lock, flags); + status = check_var_size_locked(efivars, attributes, size); + spin_unlock_irqrestore(&efivars->lock, flags); + + return status; +} + static ssize_t efivar_guid_read(struct efivar_entry *entry, char *buf) { @@ -537,14 +570,19 @@ return -EINVAL; } - spin_lock(&efivars->lock); - status = efivars->ops->set_variable(new_var->VariableName, - &new_var->VendorGuid, - new_var->Attributes, - new_var->DataSize, - new_var->Data); + spin_lock_irq(&efivars->lock); - spin_unlock(&efivars->lock); + status = check_var_size_locked(efivars, new_var->Attributes, + new_var->DataSize + utf16_strsize(new_var->VariableName, 1024)); + + if (status == EFI_SUCCESS || status == EFI_UNSUPPORTED) + status = efivars->ops->set_variable(new_var->VariableName, + &new_var->VendorGuid, + new_var->Attributes, + new_var->DataSize, + new_var->Data); + + spin_unlock_irq(&efivars->lock); if (status != EFI_SUCCESS) { printk(KERN_WARNING "efivars: set_variable() failed: status=%lx\n", @@ -693,8 +731,7 @@ u32 attributes; struct inode *inode = file->f_mapping->host; unsigned long datasize = count - sizeof(attributes); - unsigned long newdatasize; - u64 storage_size, remaining_size, max_size; + unsigned long newdatasize, varsize; ssize_t bytes = 0; if (count < sizeof(attributes)) @@ -713,28 +750,18 @@ * amounts of memory. Pick a default size of 64K if * QueryVariableInfo() isn't supported by the firmware. */ - spin_lock(&efivars->lock); - - if (!efivars->ops->query_variable_info) - status = EFI_UNSUPPORTED; - else { - const struct efivar_operations *fops = efivars->ops; - status = fops->query_variable_info(attributes, &storage_size, - &remaining_size, &max_size); - } - spin_unlock(&efivars->lock); + varsize = datasize + utf16_strsize(var->var.VariableName, 1024); + status = check_var_size(efivars, attributes, varsize); if (status != EFI_SUCCESS) { if (status != EFI_UNSUPPORTED) return efi_status_to_err(status); - remaining_size = 65536; + if (datasize > 65536) + return -ENOSPC; } - if (datasize > remaining_size) - return -ENOSPC; - data = kmalloc(datasize, GFP_KERNEL); if (!data) return -ENOMEM; @@ -754,7 +781,20 @@ * set_variable call, and removal of the variable from the efivars * list (in the case of an authenticated delete). */ - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); + + /* + * Ensure that the available space hasn't shrunk below the safe level + */ + + status = check_var_size_locked(efivars, attributes, varsize); + + if (status != EFI_SUCCESS && status != EFI_UNSUPPORTED) { + spin_unlock_irq(&efivars->lock); + kfree(data); + + return efi_status_to_err(status); + } status = efivars->ops->set_variable(var->var.VariableName, &var->var.VendorGuid, @@ -762,7 +802,7 @@ data); if (status != EFI_SUCCESS) { - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); kfree(data); return efi_status_to_err(status); @@ -783,21 +823,21 @@ NULL); if (status == EFI_BUFFER_TOO_SMALL) { - spin_unlock(&efivars->lock); + spin_unlock_irq(&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); + spin_unlock_irq(&efivars->lock); efivar_unregister(var); drop_nlink(inode); d_delete(file->f_dentry); dput(file->f_dentry); } else { - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); pr_warn("efivarfs: inconsistent EFI variable implementation? " "status = %lx\n", status); } @@ -819,11 +859,11 @@ void *data; ssize_t size = 0; - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); status = efivars->ops->get_variable(var->var.VariableName, &var->var.VendorGuid, &attributes, &datasize, NULL); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); if (status != EFI_BUFFER_TOO_SMALL) return efi_status_to_err(status); @@ -833,12 +873,12 @@ if (!data) return -ENOMEM; - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); status = efivars->ops->get_variable(var->var.VariableName, &var->var.VendorGuid, &attributes, &datasize, (data + sizeof(attributes))); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); if (status != EFI_SUCCESS) { size = efi_status_to_err(status); @@ -900,6 +940,48 @@ return inode; } +/* + * Return true if 'str' is a valid efivarfs filename of the form, + * + * VariableName-12345678-1234-1234-1234-1234567891bc + */ +static bool efivarfs_valid_name(const char *str, int len) +{ + static const char dashes[GUID_LEN] = { + [8] = 1, [13] = 1, [18] = 1, [23] = 1 + }; + const char *s = str + len - GUID_LEN; + int i; + + /* + * We need a GUID, plus at least one letter for the variable name, + * plus the '-' separator + */ + if (len < GUID_LEN + 2) + return false; + + /* GUID must be preceded by a '-' */ + if (*(s - 1) != '-') + return false; + + /* + * Validate that 's' is of the correct format, e.g. + * + * 12345678-1234-1234-1234-123456789abc + */ + for (i = 0; i < GUID_LEN; i++) { + if (dashes[i]) { + if (*s++ != '-') + return false; + } else { + if (!isxdigit(*s++)) + return false; + } + } + + return true; +} + 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]); @@ -928,11 +1010,7 @@ struct efivar_entry *var; int namelen, i = 0, err = 0; - /* - * We need a GUID, plus at least one letter for the variable name, - * plus the '-' separator - */ - if (dentry->d_name.len < GUID_LEN + 2) + if (!efivarfs_valid_name(dentry->d_name.name, dentry->d_name.len)) return -EINVAL; inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); @@ -966,9 +1044,9 @@ goto out; kobject_uevent(&var->kobj, KOBJ_ADD); - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); list_add(&var->list, &efivars->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); d_instantiate(dentry, inode); dget(dentry); out: @@ -985,7 +1063,7 @@ struct efivars *efivars = var->efivars; efi_status_t status; - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); status = efivars->ops->set_variable(var->var.VariableName, &var->var.VendorGuid, @@ -993,17 +1071,102 @@ if (status == EFI_SUCCESS || status == EFI_NOT_FOUND) { list_del(&var->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); efivar_unregister(var); drop_nlink(dentry->d_inode); dput(dentry); return 0; } - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return -EINVAL; }; +/* + * Compare two efivarfs file names. + * + * An efivarfs filename is composed of two parts, + * + * 1. A case-sensitive variable name + * 2. A case-insensitive GUID + * + * So we need to perform a case-sensitive match on part 1 and a + * case-insensitive match on part 2. + */ +static int efivarfs_d_compare(const struct dentry *parent, const struct inode *pinode, + const struct dentry *dentry, const struct inode *inode, + unsigned int len, const char *str, + const struct qstr *name) +{ + int guid = len - GUID_LEN; + + if (name->len != len) + return 1; + + /* Case-sensitive compare for the variable name */ + if (memcmp(str, name->name, guid)) + return 1; + + /* Case-insensitive compare for the GUID */ + return strncasecmp(name->name + guid, str + guid, GUID_LEN); +} + +static int efivarfs_d_hash(const struct dentry *dentry, + const struct inode *inode, struct qstr *qstr) +{ + unsigned long hash = init_name_hash(); + const unsigned char *s = qstr->name; + unsigned int len = qstr->len; + + if (!efivarfs_valid_name(s, len)) + return -EINVAL; + + while (len-- > GUID_LEN) + hash = partial_name_hash(*s++, hash); + + /* GUID is case-insensitive. */ + while (len--) + hash = partial_name_hash(tolower(*s++), hash); + + qstr->hash = end_name_hash(hash); + return 0; +} + +/* + * Retaining negative dentries for an in-memory filesystem just wastes + * memory and lookup time: arrange for them to be deleted immediately. + */ +static int efivarfs_delete_dentry(const struct dentry *dentry) +{ + return 1; +} + +static struct dentry_operations efivarfs_d_ops = { + .d_compare = efivarfs_d_compare, + .d_hash = efivarfs_d_hash, + .d_delete = efivarfs_delete_dentry, +}; + +static struct dentry *efivarfs_alloc_dentry(struct dentry *parent, char *name) +{ + struct dentry *d; + struct qstr q; + int err; + + q.name = name; + q.len = strlen(name); + + err = efivarfs_d_hash(NULL, NULL, &q); + if (err) + return ERR_PTR(err); + + d = d_alloc(parent, &q); + if (d) + return d; + + return ERR_PTR(-ENOMEM); +} + static int efivarfs_fill_super(struct super_block *sb, void *data, int silent) { struct inode *inode = NULL; @@ -1011,6 +1174,7 @@ struct efivar_entry *entry, *n; struct efivars *efivars = &__efivars; char *name; + int err = -ENOMEM; efivarfs_sb = sb; @@ -1019,6 +1183,7 @@ sb->s_blocksize_bits = PAGE_CACHE_SHIFT; sb->s_magic = EFIVARFS_MAGIC; sb->s_op = &efivarfs_ops; + sb->s_d_op = &efivarfs_d_ops; sb->s_time_gran = 1; inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0); @@ -1059,20 +1224,22 @@ if (!inode) goto fail_name; - dentry = d_alloc_name(root, name); - if (!dentry) + dentry = efivarfs_alloc_dentry(root, name); + if (IS_ERR(dentry)) { + err = PTR_ERR(dentry); goto fail_inode; + } /* copied by the above to local storage in the dentry. */ kfree(name); - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); efivars->ops->get_variable(entry->var.VariableName, &entry->var.VendorGuid, &entry->var.Attributes, &size, NULL); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); mutex_lock(&inode->i_mutex); inode->i_private = entry; @@ -1088,7 +1255,7 @@ fail_name: kfree(name); fail: - return -ENOMEM; + return err; } static struct dentry *efivarfs_mount(struct file_system_type *fs_type, @@ -1109,21 +1276,31 @@ .kill_sb = efivarfs_kill_sb, }; +/* + * Handle negative dentry. + */ +static struct dentry *efivarfs_lookup(struct inode *dir, struct dentry *dentry, + unsigned int flags) +{ + if (dentry->d_name.len > NAME_MAX) + return ERR_PTR(-ENAMETOOLONG); + d_add(dentry, NULL); + return NULL; +} + static const struct inode_operations efivarfs_dir_inode_operations = { - .lookup = simple_lookup, + .lookup = efivarfs_lookup, .unlink = efivarfs_unlink, .create = efivarfs_create, }; -static struct pstore_info efi_pstore_info; - -#ifdef CONFIG_PSTORE +#ifdef CONFIG_EFI_VARS_PSTORE static int efi_pstore_open(struct pstore_info *psi) { struct efivars *efivars = psi->data; - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); efivars->walk_entry = list_first_entry(&efivars->list, struct efivar_entry, list); return 0; @@ -1133,7 +1310,7 @@ { struct efivars *efivars = psi->data; - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return 0; } @@ -1207,22 +1384,22 @@ efi_guid_t vendor = LINUX_EFI_CRASH_GUID; struct efivars *efivars = psi->data; int i, ret = 0; - u64 storage_space, remaining_space, max_variable_size; efi_status_t status = EFI_NOT_FOUND; + unsigned long flags; - spin_lock(&efivars->lock); + spin_lock_irqsave(&efivars->lock, flags); /* * Check if there is a space enough to log. * size: a size of logging data * DUMP_NAME_LEN * 2: a maximum size of variable name */ - status = efivars->ops->query_variable_info(PSTORE_EFI_ATTRIBUTES, - &storage_space, - &remaining_space, - &max_variable_size); - if (status || remaining_space < size + DUMP_NAME_LEN * 2) { - spin_unlock(&efivars->lock); + + status = check_var_size_locked(efivars, PSTORE_EFI_ATTRIBUTES, + size + DUMP_NAME_LEN * 2); + + if (status) { + spin_unlock_irqrestore(&efivars->lock, flags); *id = part; return -ENOSPC; } @@ -1236,7 +1413,7 @@ efivars->ops->set_variable(efi_name, &vendor, PSTORE_EFI_ATTRIBUTES, size, psi->buf); - spin_unlock(&efivars->lock); + spin_unlock_irqrestore(&efivars->lock, flags); if (size) ret = efivar_create_sysfs_entry(efivars, @@ -1263,7 +1440,7 @@ sprintf(name, "dump-type%u-%u-%d-%lu", type, (unsigned int)id, count, time.tv_sec); - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); for (i = 0; i < DUMP_NAME_LEN; i++) efi_name[i] = name[i]; @@ -1307,45 +1484,13 @@ if (found) list_del(&found->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); if (found) efivar_unregister(found); return 0; } -#else -static int efi_pstore_open(struct pstore_info *psi) -{ - return 0; -} - -static int efi_pstore_close(struct pstore_info *psi) -{ - return 0; -} - -static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type, int *count, - struct timespec *timespec, - char **buf, struct pstore_info *psi) -{ - return -1; -} - -static int efi_pstore_write(enum pstore_type_id type, - enum kmsg_dump_reason reason, u64 *id, - unsigned int part, int count, size_t size, - struct pstore_info *psi) -{ - return 0; -} - -static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count, - struct timespec time, struct pstore_info *psi) -{ - return 0; -} -#endif static struct pstore_info efi_pstore_info = { .owner = THIS_MODULE, @@ -1357,6 +1502,24 @@ .erase = efi_pstore_erase, }; +static void efivar_pstore_register(struct efivars *efivars) +{ + efivars->efi_pstore_info = efi_pstore_info; + efivars->efi_pstore_info.buf = kmalloc(4096, GFP_KERNEL); + if (efivars->efi_pstore_info.buf) { + efivars->efi_pstore_info.bufsize = 1024; + efivars->efi_pstore_info.data = efivars; + spin_lock_init(&efivars->efi_pstore_info.buf_lock); + pstore_register(&efivars->efi_pstore_info); + } +} +#else +static void efivar_pstore_register(struct efivars *efivars) +{ + return; +} +#endif + static ssize_t efivar_create(struct file *filp, struct kobject *kobj, struct bin_attribute *bin_attr, char *buf, loff_t pos, size_t count) @@ -1377,7 +1540,7 @@ return -EINVAL; } - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); /* * Does this variable already exist? @@ -1395,10 +1558,18 @@ } } if (found) { - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return -EINVAL; } + status = check_var_size_locked(efivars, new_var->Attributes, + new_var->DataSize + utf16_strsize(new_var->VariableName, 1024)); + + if (status && status != EFI_UNSUPPORTED) { + spin_unlock_irq(&efivars->lock); + return efi_status_to_err(status); + } + /* now *really* create the variable via EFI */ status = efivars->ops->set_variable(new_var->VariableName, &new_var->VendorGuid, @@ -1409,10 +1580,10 @@ if (status != EFI_SUCCESS) { printk(KERN_WARNING "efivars: set_variable() failed: status=%lx\n", status); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return -EIO; } - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); /* Create the entry in sysfs. Locking is not required here */ status = efivar_create_sysfs_entry(efivars, @@ -1440,7 +1611,7 @@ if (!capable(CAP_SYS_ADMIN)) return -EACCES; - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); /* * Does this variable already exist? @@ -1458,7 +1629,7 @@ } } if (!found) { - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return -EINVAL; } /* force the Attributes/DataSize to 0 to ensure deletion */ @@ -1474,18 +1645,65 @@ if (status != EFI_SUCCESS) { printk(KERN_WARNING "efivars: set_variable() failed: status=%lx\n", status); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return -EIO; } list_del(&search_efivar->list); /* We need to release this lock before unregistering. */ - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); efivar_unregister(search_efivar); /* It's dead Jim.... */ return count; } +static bool variable_is_present(efi_char16_t *variable_name, efi_guid_t *vendor) +{ + struct efivar_entry *entry, *n; + struct efivars *efivars = &__efivars; + unsigned long strsize1, strsize2; + bool found = false; + + strsize1 = utf16_strsize(variable_name, 1024); + list_for_each_entry_safe(entry, n, &efivars->list, list) { + strsize2 = utf16_strsize(entry->var.VariableName, 1024); + if (strsize1 == strsize2 && + !memcmp(variable_name, &(entry->var.VariableName), + strsize2) && + !efi_guidcmp(entry->var.VendorGuid, + *vendor)) { + found = true; + break; + } + } + return found; +} + +/* + * Returns the size of variable_name, in bytes, including the + * terminating NULL character, or variable_name_size if no NULL + * character is found among the first variable_name_size bytes. + */ +static unsigned long var_name_strnsize(efi_char16_t *variable_name, + unsigned long variable_name_size) +{ + unsigned long len; + efi_char16_t c; + + /* + * The variable name is, by definition, a NULL-terminated + * string, so make absolutely sure that variable_name_size is + * the value we expect it to be. If not, return the real size. + */ + for (len = 2; len <= variable_name_size; len += sizeof(c)) { + c = variable_name[(len / sizeof(c)) - 1]; + if (!c) + break; + } + + return min(len, variable_name_size); +} + /* * Let's not leave out systab information that snuck into * the efivars driver @@ -1594,9 +1812,9 @@ kfree(short_name); short_name = NULL; - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); list_add(&new_efivar->list, &efivars->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); return 0; } @@ -1665,9 +1883,9 @@ struct efivar_entry *entry, *n; list_for_each_entry_safe(entry, n, &efivars->list, list) { - spin_lock(&efivars->lock); + spin_lock_irq(&efivars->lock); list_del(&entry->list); - spin_unlock(&efivars->lock); + spin_unlock_irq(&efivars->lock); efivar_unregister(entry); } if (efivars->new_var) @@ -1681,6 +1899,28 @@ } EXPORT_SYMBOL_GPL(unregister_efivars); +/* + * Print a warning when duplicate EFI variables are encountered and + * disable the sysfs workqueue since the firmware is buggy. + */ +static void dup_variable_bug(efi_char16_t *s16, efi_guid_t *vendor_guid, + unsigned long len16) +{ + size_t i, len8 = len16 / sizeof(efi_char16_t); + char *s8; + + s8 = kzalloc(len8, GFP_KERNEL); + if (!s8) + return; + + for (i = 0; i < len8; i++) + s8[i] = s16[i]; + + printk(KERN_WARNING "efivars: duplicate variable: %s-%pUl\n", + s8, vendor_guid); + kfree(s8); +} + int register_efivars(struct efivars *efivars, const struct efivar_operations *ops, struct kobject *parent_kobj) @@ -1729,6 +1969,24 @@ &vendor_guid); switch (status) { case EFI_SUCCESS: + variable_name_size = var_name_strnsize(variable_name, + variable_name_size); + + /* + * Some firmware implementations return the + * same variable name on multiple calls to + * get_next_variable(). Terminate the loop + * immediately as there is no guarantee that + * we'll ever see a different variable name, + * and may end up looping here forever. + */ + if (variable_is_present(variable_name, &vendor_guid)) { + dup_variable_bug(variable_name, &vendor_guid, + variable_name_size); + status = EFI_NOT_FOUND; + break; + } + efivar_create_sysfs_entry(efivars, variable_name_size, variable_name, @@ -1748,15 +2006,8 @@ if (error) unregister_efivars(efivars); - efivars->efi_pstore_info = efi_pstore_info; - - efivars->efi_pstore_info.buf = kmalloc(4096, GFP_KERNEL); - if (efivars->efi_pstore_info.buf) { - efivars->efi_pstore_info.bufsize = 1024; - efivars->efi_pstore_info.data = efivars; - spin_lock_init(&efivars->efi_pstore_info.buf_lock); - pstore_register(&efivars->efi_pstore_info); - } + if (!efivars_pstore_disable) + efivar_pstore_register(efivars); register_filesystem(&efivarfs_type); @@ -1796,7 +2047,7 @@ ops.get_variable = efi.get_variable; ops.set_variable = efi.set_variable; ops.get_next_variable = efi.get_next_variable; - ops.query_variable_info = efi.query_variable_info; + ops.query_variable_store = efi_query_variable_store; error = register_efivars(&__efivars, &ops, efi_kobj); if (error) --- linux-ppc-3.8.0.orig/drivers/firmware/Kconfig +++ linux-ppc-3.8.0/drivers/firmware/Kconfig @@ -53,6 +53,24 @@ Subsequent efibootmgr releases may be found at: +config EFI_VARS_PSTORE + bool "Register efivars backend for pstore" + depends on EFI_VARS && PSTORE + default y + help + Say Y here to enable use efivars as a backend to pstore. This + will allow writing console messages, crash dumps, or anything + else supported by pstore to EFI variables. + +config EFI_VARS_PSTORE_DEFAULT_DISABLE + bool "Disable using efivars as a pstore backend by default" + depends on EFI_VARS_PSTORE + default n + help + Saying Y here will disable the use of efivars as a storage + backend for pstore by default. This setting can be overridden + using the efivars module's pstore_disable parameter. + config EFI_PCDP bool "Console device selection via EFI PCDP or HCDP table" depends on ACPI && EFI && IA64 --- linux-ppc-3.8.0.orig/drivers/pcmcia/vrc4171_card.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/pcmcia/at91_cf.c +++ linux-ppc-3.8.0/drivers/pcmcia/at91_cf.c @@ -100,9 +100,9 @@ int vcc = gpio_is_valid(cf->board->vcc_pin); *sp = SS_DETECT | SS_3VCARD; - if (!rdy || gpio_get_value(rdy)) + if (!rdy || gpio_get_value(cf->board->irq_pin)) *sp |= SS_READY; - if (!vcc || gpio_get_value(vcc)) + if (!vcc || gpio_get_value(cf->board->vcc_pin)) *sp |= SS_POWERON; } else *sp = 0; --- linux-ppc-3.8.0.orig/drivers/hwmon/adm1021.c +++ linux-ppc-3.8.0/drivers/hwmon/adm1021.c @@ -332,26 +332,68 @@ man_id = i2c_smbus_read_byte_data(client, ADM1021_REG_MAN_ID); dev_id = i2c_smbus_read_byte_data(client, ADM1021_REG_DEV_ID); + if (man_id < 0 || dev_id < 0) + return -ENODEV; + if (man_id == 0x4d && dev_id == 0x01) type_name = "max1617a"; else if (man_id == 0x41) { if ((dev_id & 0xF0) == 0x30) type_name = "adm1023"; - else + else if ((dev_id & 0xF0) == 0x00) type_name = "adm1021"; + else + return -ENODEV; } else if (man_id == 0x49) type_name = "thmc10"; else if (man_id == 0x23) type_name = "gl523sm"; else if (man_id == 0x54) type_name = "mc1066"; - /* LM84 Mfr ID in a different place, and it has more unused bits */ - else if (conv_rate == 0x00 - && (config & 0x7F) == 0x00 - && (status & 0xAB) == 0x00) - type_name = "lm84"; - else - type_name = "max1617"; + else { + int lte, rte, lhi, rhi, llo, rlo; + + /* extra checks for LM84 and MAX1617 to avoid misdetections */ + + llo = i2c_smbus_read_byte_data(client, ADM1021_REG_THYST_R(0)); + rlo = i2c_smbus_read_byte_data(client, ADM1021_REG_THYST_R(1)); + + /* fail if any of the additional register reads failed */ + if (llo < 0 || rlo < 0) + return -ENODEV; + + lte = i2c_smbus_read_byte_data(client, ADM1021_REG_TEMP(0)); + rte = i2c_smbus_read_byte_data(client, ADM1021_REG_TEMP(1)); + lhi = i2c_smbus_read_byte_data(client, ADM1021_REG_TOS_R(0)); + rhi = i2c_smbus_read_byte_data(client, ADM1021_REG_TOS_R(1)); + + /* + * Fail for negative temperatures and negative high limits. + * This check also catches read errors on the tested registers. + */ + if ((s8)lte < 0 || (s8)rte < 0 || (s8)lhi < 0 || (s8)rhi < 0) + return -ENODEV; + + /* fail if all registers hold the same value */ + if (lte == rte && lte == lhi && lte == rhi && lte == llo + && lte == rlo) + return -ENODEV; + + /* + * LM84 Mfr ID is in a different place, + * and it has more unused bits. + */ + if (conv_rate == 0x00 + && (config & 0x7F) == 0x00 + && (status & 0xAB) == 0x00) { + type_name = "lm84"; + } else { + /* fail if low limits are larger than high limits */ + if ((s8)llo > lhi || (s8)rlo > rhi) + return -ENODEV; + type_name = "max1617"; + } + } pr_debug("adm1021: Detected chip %s at adapter %d, address 0x%02x.\n", type_name, i2c_adapter_id(adapter), client->addr); --- linux-ppc-3.8.0.orig/drivers/hwmon/sht15.c +++ linux-ppc-3.8.0/drivers/hwmon/sht15.c @@ -926,7 +926,13 @@ if (voltage) data->supply_uV = voltage; - regulator_enable(data->reg); + ret = regulator_enable(data->reg); + if (ret != 0) { + dev_err(&pdev->dev, + "failed to enable regulator: %d\n", ret); + return ret; + } + /* * Setup a notifier block to update this if another device * causes the voltage to change --- linux-ppc-3.8.0.orig/drivers/hwmon/adt7470.c +++ linux-ppc-3.8.0/drivers/hwmon/adt7470.c @@ -215,7 +215,7 @@ u16 value) { return i2c_smbus_write_byte_data(client, reg, value & 0xFF) - && i2c_smbus_write_byte_data(client, reg + 1, value >> 8); + || i2c_smbus_write_byte_data(client, reg + 1, value >> 8); } static void adt7470_init_client(struct i2c_client *client) --- linux-ppc-3.8.0.orig/drivers/hwmon/abituguru.c +++ linux-ppc-3.8.0/drivers/hwmon/abituguru.c @@ -1411,14 +1411,18 @@ pr_info("found Abit uGuru\n"); /* Register sysfs hooks */ - for (i = 0; i < sysfs_attr_i; i++) - if (device_create_file(&pdev->dev, - &data->sysfs_attr[i].dev_attr)) + for (i = 0; i < sysfs_attr_i; i++) { + res = device_create_file(&pdev->dev, + &data->sysfs_attr[i].dev_attr); + if (res) goto abituguru_probe_error; - for (i = 0; i < ARRAY_SIZE(abituguru_sysfs_attr); i++) - if (device_create_file(&pdev->dev, - &abituguru_sysfs_attr[i].dev_attr)) + } + for (i = 0; i < ARRAY_SIZE(abituguru_sysfs_attr); i++) { + res = device_create_file(&pdev->dev, + &abituguru_sysfs_attr[i].dev_attr); + if (res) goto abituguru_probe_error; + } data->hwmon_dev = hwmon_device_register(&pdev->dev); if (!IS_ERR(data->hwmon_dev)) --- linux-ppc-3.8.0.orig/drivers/hwmon/lineage-pem.c +++ linux-ppc-3.8.0/drivers/hwmon/lineage-pem.c @@ -422,6 +422,7 @@ &sensor_dev_attr_in2_input.dev_attr.attr, &sensor_dev_attr_curr1_input.dev_attr.attr, &sensor_dev_attr_power1_input.dev_attr.attr, + NULL }; static const struct attribute_group pem_input_group = { @@ -432,6 +433,7 @@ &sensor_dev_attr_fan1_input.dev_attr.attr, &sensor_dev_attr_fan2_input.dev_attr.attr, &sensor_dev_attr_fan3_input.dev_attr.attr, + NULL }; static const struct attribute_group pem_fan_group = { --- linux-ppc-3.8.0.orig/drivers/hwmon/pmbus/ltc2978.c +++ linux-ppc-3.8.0/drivers/hwmon/pmbus/ltc2978.c @@ -59,10 +59,10 @@ struct ltc2978_data { enum chips id; int vin_min, vin_max; - int temp_min, temp_max; + int temp_min, temp_max[2]; int vout_min[8], vout_max[8]; int iout_max[2]; - int temp2_max[2]; + int temp2_max; struct pmbus_driver_info info; }; @@ -113,9 +113,10 @@ ret = pmbus_read_word_data(client, page, LTC2978_MFR_TEMPERATURE_PEAK); if (ret >= 0) { - if (lin11_to_val(ret) > lin11_to_val(data->temp_max)) - data->temp_max = ret; - ret = data->temp_max; + if (lin11_to_val(ret) + > lin11_to_val(data->temp_max[page])) + data->temp_max[page] = ret; + ret = data->temp_max[page]; } break; case PMBUS_VIRT_RESET_VOUT_HISTORY: @@ -204,10 +205,9 @@ ret = pmbus_read_word_data(client, page, LTC3880_MFR_TEMPERATURE2_PEAK); if (ret >= 0) { - if (lin11_to_val(ret) - > lin11_to_val(data->temp2_max[page])) - data->temp2_max[page] = ret; - ret = data->temp2_max[page]; + if (lin11_to_val(ret) > lin11_to_val(data->temp2_max)) + data->temp2_max = ret; + ret = data->temp2_max; } break; case PMBUS_VIRT_READ_VIN_MIN: @@ -248,11 +248,11 @@ switch (reg) { case PMBUS_VIRT_RESET_IOUT_HISTORY: - data->iout_max[page] = 0x7fff; + data->iout_max[page] = 0x7c00; ret = ltc2978_clear_peaks(client, page, data->id); break; case PMBUS_VIRT_RESET_TEMP2_HISTORY: - data->temp2_max[page] = 0x7fff; + data->temp2_max = 0x7c00; ret = ltc2978_clear_peaks(client, page, data->id); break; case PMBUS_VIRT_RESET_VOUT_HISTORY: @@ -262,12 +262,12 @@ break; case PMBUS_VIRT_RESET_VIN_HISTORY: data->vin_min = 0x7bff; - data->vin_max = 0; + data->vin_max = 0x7c00; ret = ltc2978_clear_peaks(client, page, data->id); break; case PMBUS_VIRT_RESET_TEMP_HISTORY: data->temp_min = 0x7bff; - data->temp_max = 0x7fff; + data->temp_max[page] = 0x7c00; ret = ltc2978_clear_peaks(client, page, data->id); break; default: @@ -321,12 +321,14 @@ info = &data->info; info->write_word_data = ltc2978_write_word_data; - data->vout_min[0] = 0xffff; data->vin_min = 0x7bff; + data->vin_max = 0x7c00; data->temp_min = 0x7bff; - data->temp_max = 0x7fff; + for (i = 0; i < ARRAY_SIZE(data->temp_max); i++) + data->temp_max[i] = 0x7c00; + data->temp2_max = 0x7c00; - switch (id->driver_data) { + switch (data->id) { case ltc2978: info->read_word_data = ltc2978_read_word_data; info->pages = 8; @@ -336,7 +338,6 @@ for (i = 1; i < 8; i++) { info->func[i] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; - data->vout_min[i] = 0xffff; } break; case ltc3880: @@ -352,11 +353,14 @@ | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_POUT | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP; - data->vout_min[1] = 0xffff; + data->iout_max[0] = 0x7c00; + data->iout_max[1] = 0x7c00; break; default: return -ENODEV; } + for (i = 0; i < info->pages; i++) + data->vout_min[i] = 0xffff; return pmbus_do_probe(client, id, info); } --- linux-ppc-3.8.0.orig/drivers/nfc/pn544/pn544.c +++ linux-ppc-3.8.0/drivers/nfc/pn544/pn544.c @@ -675,11 +675,17 @@ static int pn544_hci_tm_send(struct nfc_hci_dev *hdev, struct sk_buff *skb) { + int r; + /* Set default false for multiple information chaining */ *skb_push(skb, 1) = 0; - return nfc_hci_send_event(hdev, PN544_RF_READER_NFCIP1_TARGET_GATE, - PN544_HCI_EVT_SND_DATA, skb->data, skb->len); + r = nfc_hci_send_event(hdev, PN544_RF_READER_NFCIP1_TARGET_GATE, + PN544_HCI_EVT_SND_DATA, skb->data, skb->len); + + kfree_skb(skb); + + return r; } static int pn544_hci_check_presence(struct nfc_hci_dev *hdev, @@ -714,35 +720,40 @@ return 0; } -static void pn544_hci_event_received(struct nfc_hci_dev *hdev, u8 gate, - u8 event, struct sk_buff *skb) +/* + * Returns: + * <= 0: driver handled the event, skb consumed + * 1: driver does not handle the event, please do standard processing + */ +static int pn544_hci_event_received(struct nfc_hci_dev *hdev, u8 gate, u8 event, + struct sk_buff *skb) { struct sk_buff *rgb_skb = NULL; - int r = 0; + int r; pr_debug("hci event %d", event); switch (event) { case PN544_HCI_EVT_ACTIVATED: - if (gate == PN544_RF_READER_NFCIP1_INITIATOR_GATE) - nfc_hci_target_discovered(hdev, gate); - else if (gate == PN544_RF_READER_NFCIP1_TARGET_GATE) { + if (gate == PN544_RF_READER_NFCIP1_INITIATOR_GATE) { + r = nfc_hci_target_discovered(hdev, gate); + } else if (gate == PN544_RF_READER_NFCIP1_TARGET_GATE) { r = nfc_hci_get_param(hdev, gate, PN544_DEP_ATR_REQ, - &rgb_skb); - + &rgb_skb); if (r < 0) goto exit; - nfc_tm_activated(hdev->ndev, NFC_PROTO_NFC_DEP_MASK, - NFC_COMM_PASSIVE, rgb_skb->data, - rgb_skb->len); + r = nfc_tm_activated(hdev->ndev, NFC_PROTO_NFC_DEP_MASK, + NFC_COMM_PASSIVE, rgb_skb->data, + rgb_skb->len); kfree_skb(rgb_skb); + } else { + r = -EINVAL; } - break; case PN544_HCI_EVT_DEACTIVATED: - nfc_hci_send_event(hdev, gate, - NFC_HCI_EVT_END_OPERATION, NULL, 0); + r = nfc_hci_send_event(hdev, gate, NFC_HCI_EVT_END_OPERATION, + NULL, 0); break; case PN544_HCI_EVT_RCV_DATA: if (skb->len < 2) { @@ -757,15 +768,15 @@ } skb_pull(skb, 2); - nfc_tm_data_received(hdev->ndev, skb); - - return; + return nfc_tm_data_received(hdev->ndev, skb); default: - break; + return 1; } exit: kfree_skb(skb); + + return r; } static struct nfc_hci_ops pn544_hci_ops = { @@ -822,7 +833,7 @@ NFC_PROTO_ISO14443_B_MASK | NFC_PROTO_NFC_DEP_MASK; - info->hdev = nfc_hci_allocate_device(&pn544_hci_ops, &init_data, + info->hdev = nfc_hci_allocate_device(&pn544_hci_ops, &init_data, 0, protocols, llc_name, phy_headroom + PN544_CMDS_HEADROOM, phy_tailroom, phy_payload); --- linux-ppc-3.8.0.orig/drivers/hwspinlock/hwspinlock_core.c +++ linux-ppc-3.8.0/drivers/hwspinlock/hwspinlock_core.c @@ -416,6 +416,8 @@ ret = pm_runtime_get_sync(dev); if (ret < 0) { dev_err(dev, "%s: can't power on device\n", __func__); + pm_runtime_put_noidle(dev); + module_put(dev->driver->owner); return ret; } --- linux-ppc-3.8.0.orig/drivers/idle/intel_idle.c +++ linux-ppc-3.8.0/drivers/idle/intel_idle.c @@ -109,6 +109,16 @@ #define CPUIDLE_FLAG_TLB_FLUSHED 0x10000 /* + * MWAIT takes an 8-bit "hint" in EAX "suggesting" + * the C-state (top nibble) and sub-state (bottom nibble) + * 0x00 means "MWAIT(C1)", 0x10 means "MWAIT(C2)" etc. + * + * We store the hint at the top of our "flags" for each state. + */ +#define flg2MWAIT(flags) (((flags) >> 24) & 0xFF) +#define MWAIT2flg(eax) ((eax & 0xFF) << 24) + +/* * States are indexed by the cstate number, * which is also the index into the MWAIT hint array. * Thus C0 is a dummy. @@ -118,21 +128,21 @@ { /* MWAIT C1 */ .name = "C1-NHM", .desc = "MWAIT 0x00", - .flags = CPUIDLE_FLAG_TIME_VALID, + .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID, .exit_latency = 3, .target_residency = 6, .enter = &intel_idle }, { /* MWAIT C2 */ .name = "C3-NHM", .desc = "MWAIT 0x10", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 20, .target_residency = 80, .enter = &intel_idle }, { /* MWAIT C3 */ .name = "C6-NHM", .desc = "MWAIT 0x20", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 200, .target_residency = 800, .enter = &intel_idle }, @@ -143,28 +153,28 @@ { /* MWAIT C1 */ .name = "C1-SNB", .desc = "MWAIT 0x00", - .flags = CPUIDLE_FLAG_TIME_VALID, + .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID, .exit_latency = 1, .target_residency = 1, .enter = &intel_idle }, { /* MWAIT C2 */ .name = "C3-SNB", .desc = "MWAIT 0x10", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 80, .target_residency = 211, .enter = &intel_idle }, { /* MWAIT C3 */ .name = "C6-SNB", .desc = "MWAIT 0x20", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 104, .target_residency = 345, .enter = &intel_idle }, { /* MWAIT C4 */ .name = "C7-SNB", .desc = "MWAIT 0x30", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x30) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 109, .target_residency = 345, .enter = &intel_idle }, @@ -175,46 +185,78 @@ { /* MWAIT C1 */ .name = "C1-IVB", .desc = "MWAIT 0x00", - .flags = CPUIDLE_FLAG_TIME_VALID, + .flags = MWAIT2flg(0x00) | 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, + .flags = MWAIT2flg(0x10) | 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, + .flags = MWAIT2flg(0x20) | 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, + .flags = MWAIT2flg(0x30) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 87, .target_residency = 300, .enter = &intel_idle }, }; +static struct cpuidle_state hsw_cstates[MWAIT_MAX_NUM_CSTATES] = { + { /* MWAIT C0 */ }, + { /* MWAIT C1 */ + .name = "C1-HSW", + .desc = "MWAIT 0x00", + .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID, + .exit_latency = 2, + .target_residency = 2, + .enter = &intel_idle }, + { /* MWAIT C2 */ + .name = "C3-HSW", + .desc = "MWAIT 0x10", + .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 33, + .target_residency = 100, + .enter = &intel_idle }, + { /* MWAIT C3 */ + .name = "C6-HSW", + .desc = "MWAIT 0x20", + .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 133, + .target_residency = 400, + .enter = &intel_idle }, + { /* MWAIT C4 */ + .name = "C7s-HSW", + .desc = "MWAIT 0x32", + .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 166, + .target_residency = 500, + .enter = &intel_idle }, +}; + static struct cpuidle_state atom_cstates[MWAIT_MAX_NUM_CSTATES] = { { /* MWAIT C0 */ }, { /* MWAIT C1 */ .name = "C1-ATM", .desc = "MWAIT 0x00", - .flags = CPUIDLE_FLAG_TIME_VALID, + .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID, .exit_latency = 1, .target_residency = 4, .enter = &intel_idle }, { /* MWAIT C2 */ .name = "C2-ATM", .desc = "MWAIT 0x10", - .flags = CPUIDLE_FLAG_TIME_VALID, + .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TIME_VALID, .exit_latency = 20, .target_residency = 80, .enter = &intel_idle }, @@ -222,7 +264,7 @@ { /* MWAIT C4 */ .name = "C4-ATM", .desc = "MWAIT 0x30", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x30) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 100, .target_residency = 400, .enter = &intel_idle }, @@ -230,41 +272,12 @@ { /* MWAIT C6 */ .name = "C6-ATM", .desc = "MWAIT 0x52", - .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, .exit_latency = 140, .target_residency = 560, .enter = &intel_idle }, }; -static long get_driver_data(int cstate) -{ - int driver_data; - switch (cstate) { - - case 1: /* MWAIT C1 */ - driver_data = 0x00; - break; - case 2: /* MWAIT C2 */ - driver_data = 0x10; - break; - case 3: /* MWAIT C3 */ - driver_data = 0x20; - break; - case 4: /* MWAIT C4 */ - driver_data = 0x30; - break; - case 5: /* MWAIT C5 */ - driver_data = 0x40; - break; - case 6: /* MWAIT C6 */ - driver_data = 0x52; - break; - default: - driver_data = 0x00; - } - return driver_data; -} - /** * intel_idle * @dev: cpuidle_device @@ -278,8 +291,7 @@ { unsigned long ecx = 1; /* break on interrupt flag */ struct cpuidle_state *state = &drv->states[index]; - struct cpuidle_state_usage *state_usage = &dev->states_usage[index]; - unsigned long eax = (unsigned long)cpuidle_get_statedata(state_usage); + unsigned long eax = flg2MWAIT(state->flags); unsigned int cstate; int cpu = smp_processor_id(); @@ -385,6 +397,10 @@ .state_table = ivb_cstates, }; +static const struct idle_cpu idle_cpu_hsw = { + .state_table = hsw_cstates, +}; + #define ICPU(model, cpu) \ { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&cpu } @@ -402,6 +418,10 @@ ICPU(0x2d, idle_cpu_snb), ICPU(0x3a, idle_cpu_ivb), ICPU(0x3e, idle_cpu_ivb), + ICPU(0x3c, idle_cpu_hsw), + ICPU(0x3f, idle_cpu_hsw), + ICPU(0x45, idle_cpu_hsw), + ICPU(0x46, idle_cpu_hsw), {} }; MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); @@ -558,9 +578,6 @@ if (cpuidle_state_table[cstate].enter == NULL) continue; - dev->states_usage[dev->state_count].driver_data = - (void *)get_driver_data(cstate); - dev->state_count += 1; } --- linux-ppc-3.8.0.orig/drivers/block/rbd.c +++ linux-ppc-3.8.0/drivers/block/rbd.c @@ -329,8 +329,8 @@ }; /* - * Initialize an rbd client instance. - * We own *ceph_opts. + * Initialize an rbd client instance. Success or not, this function + * consumes ceph_opts. */ static struct rbd_client *rbd_client_create(struct ceph_options *ceph_opts) { @@ -469,7 +469,8 @@ /* * Get a ceph client with specific addr and configuration, if one does - * not exist create it. + * not exist create it. Either way, ceph_opts is consumed by this + * function. */ static struct rbd_client *rbd_get_client(struct ceph_options *ceph_opts) { @@ -866,7 +867,7 @@ /* Find first affected segment... */ resid = offset; - __bio_for_each_segment(bv, bio_src, idx, 0) { + bio_for_each_segment(bv, bio_src, idx) { if (resid < bv->bv_len) break; resid -= bv->bv_len; @@ -3629,7 +3630,6 @@ rc = PTR_ERR(rbdc); goto err_out_args; } - ceph_opts = NULL; /* rbd_dev client now owns this */ /* pick the pool */ osdc = &rbdc->client->osdc; @@ -3658,8 +3658,6 @@ err_out_client: rbd_put_client(rbdc); err_out_args: - if (ceph_opts) - ceph_destroy_options(ceph_opts); kfree(rbd_opts); rbd_spec_put(spec); err_out_module: --- linux-ppc-3.8.0.orig/drivers/block/nbd.c +++ linux-ppc-3.8.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: @@ -595,14 +595,24 @@ struct request sreq; dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n"); + if (!nbd->sock) + return -EINVAL; + mutex_unlock(&nbd->tx_lock); + fsync_bdev(bdev); + mutex_lock(&nbd->tx_lock); blk_rq_init(NULL, &sreq); sreq.cmd_type = REQ_TYPE_SPECIAL; nbd_cmd(&sreq) = NBD_CMD_DISC; + + /* Check again after getting mutex back. */ if (!nbd->sock) return -EINVAL; + + nbd->disconnect = 1; + nbd_send_req(nbd, &sreq); - return 0; + return 0; } case NBD_CLEAR_SOCK: { @@ -614,6 +624,7 @@ nbd_clear_que(nbd); BUG_ON(!list_empty(&nbd->queue_head)); BUG_ON(!list_empty(&nbd->waiting_queue)); + kill_bdev(bdev); if (file) fput(file); return 0; @@ -631,6 +642,7 @@ nbd->sock = SOCKET_I(inode); if (max_part > 0) bdev->bd_invalidated = 1; + nbd->disconnect = 0; /* we're connected now */ return 0; } else { fput(file); @@ -685,7 +697,8 @@ queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, nbd->disk->queue); - thread = kthread_create(nbd_thread, nbd, nbd->disk->disk_name); + thread = kthread_create(nbd_thread, nbd, "%s", + nbd->disk->disk_name); if (IS_ERR(thread)) { mutex_lock(&nbd->tx_lock); return PTR_ERR(thread); @@ -702,6 +715,7 @@ nbd->file = NULL; nbd_clear_que(nbd); dev_warn(disk_to_dev(nbd->disk), "queue cleared\n"); + kill_bdev(bdev); queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, nbd->disk->queue); if (file) fput(file); @@ -710,6 +724,8 @@ set_capacity(nbd->disk, 0); if (max_part > 0) ioctl_by_bdev(bdev, BLKRRPART, 0); + if (nbd->disconnect) /* user requested, ignore socket errors */ + return 0; return nbd->harderror; } --- linux-ppc-3.8.0.orig/drivers/block/cciss.c +++ linux-ppc-3.8.0/drivers/block/cciss.c @@ -162,8 +162,6 @@ static int cciss_open(struct block_device *bdev, fmode_t mode); static int cciss_unlocked_open(struct block_device *bdev, fmode_t mode); static int cciss_release(struct gendisk *disk, fmode_t mode); -static int do_ioctl(struct block_device *bdev, fmode_t mode, - unsigned int cmd, unsigned long arg); static int cciss_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg); static int cciss_getgeo(struct block_device *bdev, struct hd_geometry *geo); @@ -229,7 +227,7 @@ .owner = THIS_MODULE, .open = cciss_unlocked_open, .release = cciss_release, - .ioctl = do_ioctl, + .ioctl = cciss_ioctl, .getgeo = cciss_getgeo, #ifdef CONFIG_COMPAT .compat_ioctl = cciss_compat_ioctl, @@ -1138,16 +1136,6 @@ return 0; } -static int do_ioctl(struct block_device *bdev, fmode_t mode, - unsigned cmd, unsigned long arg) -{ - int ret; - mutex_lock(&cciss_mutex); - ret = cciss_ioctl(bdev, mode, cmd, arg); - mutex_unlock(&cciss_mutex); - return ret; -} - #ifdef CONFIG_COMPAT static int cciss_ioctl32_passthru(struct block_device *bdev, fmode_t mode, @@ -1174,7 +1162,7 @@ case CCISS_REGNEWD: case CCISS_RESCANDISK: case CCISS_GETLUNINFO: - return do_ioctl(bdev, mode, cmd, arg); + return cciss_ioctl(bdev, mode, cmd, arg); case CCISS_PASSTHRU32: return cciss_ioctl32_passthru(bdev, mode, cmd, arg); @@ -1214,7 +1202,7 @@ if (err) return -EFAULT; - err = do_ioctl(bdev, mode, CCISS_PASSTHRU, (unsigned long)p); + err = cciss_ioctl(bdev, mode, CCISS_PASSTHRU, (unsigned long)p); if (err) return err; err |= @@ -1256,7 +1244,7 @@ if (err) return -EFAULT; - err = do_ioctl(bdev, mode, CCISS_BIG_PASSTHRU, (unsigned long)p); + err = cciss_ioctl(bdev, mode, CCISS_BIG_PASSTHRU, (unsigned long)p); if (err) return err; err |= @@ -1306,11 +1294,14 @@ static int cciss_getintinfo(ctlr_info_t *h, void __user *argp) { cciss_coalint_struct intinfo; + unsigned long flags; if (!argp) return -EINVAL; + spin_lock_irqsave(&h->lock, flags); intinfo.delay = readl(&h->cfgtable->HostWrite.CoalIntDelay); intinfo.count = readl(&h->cfgtable->HostWrite.CoalIntCount); + spin_unlock_irqrestore(&h->lock, flags); if (copy_to_user (argp, &intinfo, sizeof(cciss_coalint_struct))) return -EFAULT; @@ -1351,12 +1342,15 @@ static int cciss_getnodename(ctlr_info_t *h, void __user *argp) { NodeName_type NodeName; + unsigned long flags; int i; if (!argp) return -EINVAL; + spin_lock_irqsave(&h->lock, flags); for (i = 0; i < 16; i++) NodeName[i] = readb(&h->cfgtable->ServerName[i]); + spin_unlock_irqrestore(&h->lock, flags); if (copy_to_user(argp, NodeName, sizeof(NodeName_type))) return -EFAULT; return 0; @@ -1393,10 +1387,13 @@ static int cciss_getheartbeat(ctlr_info_t *h, void __user *argp) { Heartbeat_type heartbeat; + unsigned long flags; if (!argp) return -EINVAL; + spin_lock_irqsave(&h->lock, flags); heartbeat = readl(&h->cfgtable->HeartBeat); + spin_unlock_irqrestore(&h->lock, flags); if (copy_to_user(argp, &heartbeat, sizeof(Heartbeat_type))) return -EFAULT; return 0; @@ -1405,10 +1402,13 @@ static int cciss_getbustypes(ctlr_info_t *h, void __user *argp) { BusTypes_type BusTypes; + unsigned long flags; if (!argp) return -EINVAL; + spin_lock_irqsave(&h->lock, flags); BusTypes = readl(&h->cfgtable->BusTypes); + spin_unlock_irqrestore(&h->lock, flags); if (copy_to_user(argp, &BusTypes, sizeof(BusTypes_type))) return -EFAULT; return 0; --- linux-ppc-3.8.0.orig/drivers/block/xen-blkfront.c +++ linux-ppc-3.8.0/drivers/block/xen-blkfront.c @@ -44,7 +44,7 @@ #include #include #include -#include +#include #include #include @@ -68,7 +68,7 @@ struct grant { grant_ref_t gref; unsigned long pfn; - struct llist_node node; + struct list_head node; }; struct blk_shadow { @@ -105,7 +105,7 @@ struct work_struct work; struct gnttab_free_callback callback; struct blk_shadow shadow[BLK_RING_SIZE]; - struct llist_head persistent_gnts; + struct list_head persistent_gnts; unsigned int persistent_gnts_c; unsigned long shadow_free; unsigned int feature_flush; @@ -371,10 +371,11 @@ lsect = fsect + (sg->length >> 9) - 1; if (info->persistent_gnts_c) { - BUG_ON(llist_empty(&info->persistent_gnts)); - gnt_list_entry = llist_entry( - llist_del_first(&info->persistent_gnts), - struct grant, node); + BUG_ON(list_empty(&info->persistent_gnts)); + gnt_list_entry = list_first_entry( + &info->persistent_gnts, + struct grant, node); + list_del(&gnt_list_entry->node); ref = gnt_list_entry->gref; buffer_mfn = pfn_to_mfn(gnt_list_entry->pfn); @@ -790,9 +791,8 @@ static void blkif_free(struct blkfront_info *info, int suspend) { - struct llist_node *all_gnts; struct grant *persistent_gnt; - struct llist_node *n; + struct grant *n; /* Prevent new requests being issued until we fix things up. */ spin_lock_irq(&info->io_lock); @@ -804,13 +804,15 @@ /* Remove all persistent grants */ if (info->persistent_gnts_c) { - all_gnts = llist_del_all(&info->persistent_gnts); - llist_for_each_entry_safe(persistent_gnt, n, all_gnts, node) { + list_for_each_entry_safe(persistent_gnt, n, + &info->persistent_gnts, node) { + list_del(&persistent_gnt->node); gnttab_end_foreign_access(persistent_gnt->gref, 0, 0UL); __free_page(pfn_to_page(persistent_gnt->pfn)); kfree(persistent_gnt); + info->persistent_gnts_c--; } - info->persistent_gnts_c = 0; + BUG_ON(info->persistent_gnts_c != 0); } /* No more gnttab callback work. */ @@ -868,7 +870,7 @@ } /* Add the persistent grant into the list of free grants */ for (i = 0; i < s->req.u.rw.nr_segments; i++) { - llist_add(&s->grants_used[i]->node, &info->persistent_gnts); + list_add(&s->grants_used[i]->node, &info->persistent_gnts); info->persistent_gnts_c++; } } @@ -1164,7 +1166,7 @@ spin_lock_init(&info->io_lock); info->xbdev = dev; info->vdevice = vdevice; - init_llist_head(&info->persistent_gnts); + INIT_LIST_HEAD(&info->persistent_gnts); info->persistent_gnts_c = 0; info->connected = BLKIF_STATE_DISCONNECTED; INIT_WORK(&info->work, blkif_restart_queue); --- linux-ppc-3.8.0.orig/drivers/block/loop.c +++ linux-ppc-3.8.0/drivers/block/loop.c @@ -917,6 +917,11 @@ lo->lo_flags |= LO_FLAGS_PARTSCAN; if (lo->lo_flags & LO_FLAGS_PARTSCAN) ioctl_by_bdev(bdev, BLKRRPART, 0); + + /* Grab the block_device to prevent its destruction after we + * put /dev/loopXX inode. Later in loop_clr_fd() we bdput(bdev). + */ + bdgrab(bdev); return 0; out_clr: @@ -1026,8 +1031,10 @@ memset(lo->lo_encrypt_key, 0, LO_KEY_SIZE); memset(lo->lo_crypt_name, 0, LO_NAME_SIZE); memset(lo->lo_file_name, 0, LO_NAME_SIZE); - if (bdev) + if (bdev) { + bdput(bdev); invalidate_bdev(bdev); + } set_capacity(lo->lo_disk, 0); loop_sysfs_exit(lo); if (bdev) { @@ -1285,11 +1292,9 @@ /* the width of sector_t may be narrow for bit-shift */ sz = sec; sz <<= 9; - mutex_lock(&bdev->bd_mutex); bd_set_size(bdev, sz); /* let user-space know about the new size */ kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); - mutex_unlock(&bdev->bd_mutex); out: return err; @@ -1858,11 +1863,15 @@ max_part = (1UL << part_shift) - 1; } - if ((1UL << part_shift) > DISK_MAX_PARTS) - return -EINVAL; + if ((1UL << part_shift) > DISK_MAX_PARTS) { + err = -EINVAL; + goto misc_out; + } - if (max_loop > 1UL << (MINORBITS - part_shift)) - return -EINVAL; + if (max_loop > 1UL << (MINORBITS - part_shift)) { + err = -EINVAL; + goto misc_out; + } /* * If max_loop is specified, create that many devices upfront. @@ -1880,8 +1889,10 @@ range = 1UL << MINORBITS; } - if (register_blkdev(LOOP_MAJOR, "loop")) - return -EIO; + if (register_blkdev(LOOP_MAJOR, "loop")) { + err = -EIO; + goto misc_out; + } blk_register_region(MKDEV(LOOP_MAJOR, 0), range, THIS_MODULE, loop_probe, NULL, NULL); @@ -1894,6 +1905,10 @@ printk(KERN_INFO "loop: module loaded\n"); return 0; + +misc_out: + misc_deregister(&loop_misc); + return err; } static int loop_exit_cb(int id, void *ptr, void *data) --- linux-ppc-3.8.0.orig/drivers/block/brd.c +++ linux-ppc-3.8.0/drivers/block/brd.c @@ -117,13 +117,13 @@ spin_lock(&brd->brd_lock); idx = sector >> PAGE_SECTORS_SHIFT; + page->index = idx; if (radix_tree_insert(&brd->brd_pages, idx, page)) { __free_page(page); page = radix_tree_lookup(&brd->brd_pages, idx); BUG_ON(!page); BUG_ON(page->index != idx); - } else - page->index = idx; + } spin_unlock(&brd->brd_lock); radix_tree_preload_end(); --- linux-ppc-3.8.0.orig/drivers/block/drbd/drbd_main.c +++ linux-ppc-3.8.0/drivers/block/drbd/drbd_main.c @@ -2798,6 +2798,7 @@ blkdev_put(ldev->backing_bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL); blkdev_put(ldev->md_bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL); + kfree(ldev->disk_conf); kfree(ldev); } --- linux-ppc-3.8.0.orig/drivers/block/drbd/drbd_receiver.c +++ linux-ppc-3.8.0/drivers/block/drbd/drbd_receiver.c @@ -2661,7 +2661,6 @@ if (hg == -1 && mdev->state.role == R_PRIMARY) { enum drbd_state_rv rv2; - drbd_set_role(mdev, R_SECONDARY, 0); /* drbd_change_state() does not sleep while in SS_IN_TRANSIENT_STATE, * we might be here in C_WF_REPORT_PARAMS which is transient. * we do not need to wait for the after state change work either. */ @@ -4659,8 +4658,8 @@ #if !defined(CONFIG_CRYPTO_HMAC) && !defined(CONFIG_CRYPTO_HMAC_MODULE) static int drbd_do_auth(struct drbd_tconn *tconn) { - dev_err(DEV, "This kernel was build without CONFIG_CRYPTO_HMAC.\n"); - dev_err(DEV, "You need to disable 'cram-hmac-alg' in drbd.conf.\n"); + conn_err(tconn, "This kernel was build without CONFIG_CRYPTO_HMAC.\n"); + conn_err(tconn, "You need to disable 'cram-hmac-alg' in drbd.conf.\n"); return -1; } #else --- linux-ppc-3.8.0.orig/drivers/block/xen-blkback/xenbus.c +++ linux-ppc-3.8.0/drivers/block/xen-blkback/xenbus.c @@ -367,6 +367,7 @@ be->blkif = NULL; } + kfree(be->mode); kfree(be); dev_set_drvdata(&dev->dev, NULL); return 0; @@ -502,6 +503,7 @@ = container_of(watch, struct backend_info, backend_watch); struct xenbus_device *dev = be->dev; int cdrom = 0; + unsigned long handle; char *device_type; DPRINTK(""); @@ -521,10 +523,10 @@ return; } - if ((be->major || be->minor) && - ((be->major != major) || (be->minor != minor))) { - pr_warn(DRV_PFX "changing physical device (from %x:%x to %x:%x) not supported.\n", - be->major, be->minor, major, minor); + if (be->major | be->minor) { + if (be->major != major || be->minor != minor) + pr_warn(DRV_PFX "changing physical device (from %x:%x to %x:%x) not supported.\n", + be->major, be->minor, major, minor); return; } @@ -542,36 +544,33 @@ kfree(device_type); } - if (be->major == 0 && be->minor == 0) { - /* Front end dir is a number, which is used as the handle. */ + /* Front end dir is a number, which is used as the handle. */ + err = strict_strtoul(strrchr(dev->otherend, '/') + 1, 0, &handle); + if (err) + return; - char *p = strrchr(dev->otherend, '/') + 1; - long handle; - err = strict_strtoul(p, 0, &handle); - if (err) - return; + be->major = major; + be->minor = minor; - be->major = major; - be->minor = minor; - - err = xen_vbd_create(be->blkif, handle, major, minor, - (NULL == strchr(be->mode, 'w')), cdrom); - if (err) { - be->major = 0; - be->minor = 0; - xenbus_dev_fatal(dev, err, "creating vbd structure"); - return; - } + err = xen_vbd_create(be->blkif, handle, major, minor, + !strchr(be->mode, 'w'), cdrom); + if (err) + xenbus_dev_fatal(dev, err, "creating vbd structure"); + else { err = xenvbd_sysfs_addif(dev); if (err) { xen_vbd_free(&be->blkif->vbd); - be->major = 0; - be->minor = 0; xenbus_dev_fatal(dev, err, "creating sysfs entries"); - return; } + } + if (err) { + kfree(be->mode); + be->mode = NULL; + be->major = 0; + be->minor = 0; + } else { /* We're potentially connected now */ xen_update_blkif_status(be->blkif); } --- linux-ppc-3.8.0.orig/drivers/block/xen-blkback/blkback.c +++ linux-ppc-3.8.0/drivers/block/xen-blkback/blkback.c @@ -46,6 +46,7 @@ #include #include #include +#include #include "common.h" /* @@ -239,6 +240,7 @@ ret = gnttab_unmap_refs(unmap, NULL, pages, segs_to_unmap); BUG_ON(ret); + free_xenballooned_pages(segs_to_unmap, pages); segs_to_unmap = 0; } @@ -527,8 +529,8 @@ GFP_KERNEL); if (!persistent_gnt) return -ENOMEM; - persistent_gnt->page = alloc_page(GFP_KERNEL); - if (!persistent_gnt->page) { + if (alloc_xenballooned_pages(1, &persistent_gnt->page, + false)) { kfree(persistent_gnt); return -ENOMEM; } @@ -654,7 +656,18 @@ int status = BLKIF_RSP_OKAY; struct block_device *bdev = blkif->vbd.bdev; unsigned long secure; + struct phys_req preq; + + preq.sector_number = req->u.discard.sector_number; + preq.nr_sects = req->u.discard.nr_sectors; + err = xen_vbd_translate(&preq, blkif, WRITE); + if (err) { + pr_warn(DRV_PFX "access denied: DISCARD [%llu->%llu] on dev=%04x\n", + preq.sector_number, + preq.sector_number + preq.nr_sects, blkif->vbd.pdevice); + goto fail_response; + } blkif->st_ds_req++; xen_blkif_get(blkif); @@ -665,7 +678,7 @@ err = blkdev_issue_discard(bdev, req->u.discard.sector_number, req->u.discard.nr_sectors, GFP_KERNEL, secure); - +fail_response: if (err == -EOPNOTSUPP) { pr_debug(DRV_PFX "discard op failed, not supported\n"); status = BLKIF_RSP_EOPNOTSUPP; @@ -677,6 +690,16 @@ return err; } +static int dispatch_other_io(struct xen_blkif *blkif, + struct blkif_request *req, + struct pending_req *pending_req) +{ + free_req(pending_req); + make_response(blkif, req->u.other.id, req->operation, + BLKIF_RSP_EOPNOTSUPP); + return -EIO; +} + static void xen_blk_drain_io(struct xen_blkif *blkif) { atomic_set(&blkif->drain, 1); @@ -798,17 +821,30 @@ /* Apply all sanity checks to /private copy/ of request. */ barrier(); - if (unlikely(req.operation == BLKIF_OP_DISCARD)) { + + switch (req.operation) { + case BLKIF_OP_READ: + case BLKIF_OP_WRITE: + case BLKIF_OP_WRITE_BARRIER: + case BLKIF_OP_FLUSH_DISKCACHE: + if (dispatch_rw_block_io(blkif, &req, pending_req)) + goto done; + break; + case BLKIF_OP_DISCARD: free_req(pending_req); if (dispatch_discard_io(blkif, &req)) - break; - } else if (dispatch_rw_block_io(blkif, &req, pending_req)) + goto done; + break; + default: + if (dispatch_other_io(blkif, &req, pending_req)) + goto done; break; + } /* Yield point for this unbounded loop. */ cond_resched(); } - +done: return more_to_do; } @@ -976,13 +1012,7 @@ bio->bi_end_io = end_block_io_op; } - /* - * We set it one so that the last submit_bio does not have to call - * atomic_inc. - */ atomic_set(&pending_req->pendcnt, nbio); - - /* Get a reference count for the disk queue and start sending I/O */ blk_start_plug(&plug); for (i = 0; i < nbio; i++) @@ -1010,6 +1040,7 @@ fail_put_bio: for (i = 0; i < nbio; i++) bio_put(biolist[i]); + atomic_set(&pending_req->pendcnt, 1); __end_block_io_op(pending_req, -EINVAL); msleep(1); /* back off a bit */ return -EIO; --- linux-ppc-3.8.0.orig/drivers/block/xen-blkback/common.h +++ linux-ppc-3.8.0/drivers/block/xen-blkback/common.h @@ -77,11 +77,18 @@ uint64_t nr_sectors; } __attribute__((__packed__)); +struct blkif_x86_32_request_other { + uint8_t _pad1; + blkif_vdev_t _pad2; + uint64_t id; /* private guest value, echoed in resp */ +} __attribute__((__packed__)); + struct blkif_x86_32_request { uint8_t operation; /* BLKIF_OP_??? */ union { struct blkif_x86_32_request_rw rw; struct blkif_x86_32_request_discard discard; + struct blkif_x86_32_request_other other; } u; } __attribute__((__packed__)); @@ -113,11 +120,19 @@ uint64_t nr_sectors; } __attribute__((__packed__)); +struct blkif_x86_64_request_other { + uint8_t _pad1; + blkif_vdev_t _pad2; + uint32_t _pad3; /* offsetof(blkif_..,u.discard.id)==8 */ + uint64_t id; /* private guest value, echoed in resp */ +} __attribute__((__packed__)); + struct blkif_x86_64_request { uint8_t operation; /* BLKIF_OP_??? */ union { struct blkif_x86_64_request_rw rw; struct blkif_x86_64_request_discard discard; + struct blkif_x86_64_request_other other; } u; } __attribute__((__packed__)); @@ -278,6 +293,11 @@ dst->u.discard.nr_sectors = src->u.discard.nr_sectors; break; default: + /* + * Don't know how to translate this op. Only get the + * ID so failure can be reported to the frontend. + */ + dst->u.other.id = src->u.other.id; break; } } @@ -309,6 +329,11 @@ dst->u.discard.nr_sectors = src->u.discard.nr_sectors; break; default: + /* + * Don't know how to translate this op. Only get the + * ID so failure can be reported to the frontend. + */ + dst->u.other.id = src->u.other.id; break; } } --- linux-ppc-3.8.0.orig/drivers/block/aoe/aoecmd.c +++ linux-ppc-3.8.0/drivers/block/aoe/aoecmd.c @@ -51,8 +51,9 @@ { struct sk_buff *skb; - skb = alloc_skb(len, GFP_ATOMIC); + skb = alloc_skb(len + MAX_HEADER, GFP_ATOMIC); if (skb) { + skb_reserve(skb, MAX_HEADER); skb_reset_mac_header(skb); skb_reset_network_header(skb); skb->protocol = __constant_htons(ETH_P_AOE); --- linux-ppc-3.8.0.orig/drivers/dca/dca-core.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/video/fbsysfs.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/video/ep93xx-fb.c +++ linux-ppc-3.8.0/drivers/video/ep93xx-fb.c @@ -23,6 +23,7 @@ #include #include #include +#include #include --- linux-ppc-3.8.0.orig/drivers/video/fsl-diu-fb.c +++ linux-ppc-3.8.0/drivers/video/fsl-diu-fb.c @@ -944,7 +944,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) | \ @@ -954,10 +954,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); @@ -1232,6 +1232,16 @@ return 0; } +static inline void fsl_diu_enable_interrupts(struct fsl_diu_data *data) +{ + u32 int_mask = INT_UNDRUN; /* enable underrun detection */ + + if (IS_ENABLED(CONFIG_NOT_COHERENT_CACHE)) + int_mask |= INT_VSYNC; /* enable vertical sync */ + + clrbits32(&data->diu_reg->int_mask, int_mask); +} + /* turn on fb if count == 1 */ static int fsl_diu_open(struct fb_info *info, int user) @@ -1251,19 +1261,7 @@ if (res < 0) mfbi->count--; else { - struct fsl_diu_data *data = mfbi->parent; - -#ifdef CONFIG_NOT_COHERENT_CACHE - /* - * Enable underrun detection and vertical sync - * interrupts. - */ - clrbits32(&data->diu_reg->int_mask, - INT_UNDRUN | INT_VSYNC); -#else - /* Enable underrun detection */ - clrbits32(&data->diu_reg->int_mask, INT_UNDRUN); -#endif + fsl_diu_enable_interrupts(mfbi->parent); fsl_diu_enable_panel(info); } } @@ -1283,9 +1281,18 @@ mfbi->count--; if (mfbi->count == 0) { struct fsl_diu_data *data = mfbi->parent; + bool disable = true; + int i; + + /* Disable interrupts only if all AOIs are closed */ + for (i = 0; i < NUM_AOIS; i++) { + struct mfb_info *mi = data->fsl_diu_info[i].par; - /* Disable interrupts */ - out_be32(&data->diu_reg->int_mask, 0xffffffff); + if (mi->count) + disable = false; + } + if (disable) + out_be32(&data->diu_reg->int_mask, 0xffffffff); fsl_diu_disable_panel(info); } @@ -1614,14 +1621,6 @@ out_be32(&data->diu_reg->desc[1], data->dummy_ad.paddr); out_be32(&data->diu_reg->desc[2], data->dummy_ad.paddr); - for (i = 0; i < NUM_AOIS; i++) { - ret = install_fb(&data->fsl_diu_info[i]); - if (ret) { - dev_err(&pdev->dev, "could not register fb %d\n", i); - goto error; - } - } - /* * Older versions of U-Boot leave interrupts enabled, so disable * all of them and clear the status register. @@ -1630,12 +1629,21 @@ in_be32(&data->diu_reg->int_status); ret = request_irq(data->irq, fsl_diu_isr, 0, "fsl-diu-fb", - &data->diu_reg); + data->diu_reg); if (ret) { dev_err(&pdev->dev, "could not claim irq\n"); goto error; } + for (i = 0; i < NUM_AOIS; i++) { + ret = install_fb(&data->fsl_diu_info[i]); + if (ret) { + dev_err(&pdev->dev, "could not register fb %d\n", i); + free_irq(data->irq, data->diu_reg); + goto error; + } + } + sysfs_attr_init(&data->dev_attr.attr); data->dev_attr.attr.name = "monitor"; data->dev_attr.attr.mode = S_IRUGO|S_IWUSR; @@ -1667,7 +1675,7 @@ data = dev_get_drvdata(&pdev->dev); disable_lcdc(&data->fsl_diu_info[0]); - free_irq(data->irq, &data->diu_reg); + free_irq(data->irq, data->diu_reg); for (i = 0; i < NUM_AOIS; i++) uninstall_fb(&data->fsl_diu_info[i]); --- linux-ppc-3.8.0.orig/drivers/video/fbmem.c +++ linux-ppc-3.8.0/drivers/video/fbmem.c @@ -1177,8 +1177,10 @@ event.data = &con2fb; if (!lock_fb_info(info)) return -ENODEV; + console_lock(); event.info = info; ret = fb_notifier_call_chain(FB_EVENT_SET_CONSOLE_MAP, &event); + console_unlock(); unlock_fb_info(info); break; case FBIOBLANK: @@ -1371,15 +1373,12 @@ { struct fb_info *info = file_fb_info(file); struct fb_ops *fb; - unsigned long off; + unsigned long mmio_pgoff; unsigned long start; u32 len; if (!info) return -ENODEV; - if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) - return -EINVAL; - off = vma->vm_pgoff << PAGE_SHIFT; fb = info->fbops; if (!fb) return -ENODEV; @@ -1391,32 +1390,24 @@ return res; } - /* frame buffer memory */ + /* + * Ugh. This can be either the frame buffer mapping, or + * if pgoff points past it, the mmio mapping. + */ start = info->fix.smem_start; - len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len); - if (off >= len) { - /* memory mapped io */ - off -= len; - if (info->var.accel_flags) { - mutex_unlock(&info->mm_lock); - return -EINVAL; - } + len = info->fix.smem_len; + mmio_pgoff = PAGE_ALIGN((start & ~PAGE_MASK) + len) >> PAGE_SHIFT; + if (vma->vm_pgoff >= mmio_pgoff) { + vma->vm_pgoff -= mmio_pgoff; start = info->fix.mmio_start; - len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.mmio_len); + len = info->fix.mmio_len; } mutex_unlock(&info->mm_lock); - start &= PAGE_MASK; - if ((vma->vm_end - vma->vm_start + off) > len) - return -EINVAL; - off += start; - vma->vm_pgoff = off >> PAGE_SHIFT; - /* VM_IO | VM_DONTEXPAND | VM_DONTDUMP are set by io_remap_pfn_range()*/ + vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); - fb_pgprotect(file, vma, off); - if (io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT, - vma->vm_end - vma->vm_start, vma->vm_page_prot)) - return -EAGAIN; - return 0; + fb_pgprotect(file, vma, start); + + return vm_iomap_memory(vma, start, len); } static int @@ -1650,7 +1641,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; } @@ -1666,8 +1659,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) @@ -1682,7 +1677,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); @@ -1853,11 +1850,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-ppc-3.8.0.orig/drivers/video/vesafb.c +++ linux-ppc-3.8.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,44 @@ .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 uint mtrr __read_mostly = 3; /* disable mtrr */ +static bool nomtrr __read_mostly; /* dummy */ 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 ypan __read_mostly; /* 0..nothing, 1..ypan, 2..ywrap */ +static bool pmi_setpal __read_mostly = true; /* pmi for palette changes ??? */ +static bool redraw __read_mostly; +static uint ypan __read_mostly; /* 0..nothing, 1..ypan, 2..ywrap */ +static bool 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, uint, 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, nomtrr, 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 +220,7 @@ .fb_imageblit = cfb_imageblit, }; +#ifndef MODULE static int __init vesafb_setup(char *options) { char *this_opt; @@ -211,9 +240,9 @@ else if (! strcmp(this_opt, "ywrap")) ypan=2; else if (! strcmp(this_opt, "vgapal")) - pmi_setpal=0; + pmi_setpal=false; else if (! strcmp(this_opt, "pmipal")) - pmi_setpal=1; + pmi_setpal=true; else if (! strncmp(this_opt, "mtrr:", 5)) mtrr = simple_strtoul(this_opt+5, NULL, 0); else if (! strcmp(this_opt, "nomtrr")) @@ -225,10 +254,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 +318,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); @@ -312,8 +344,10 @@ screen_info.vesapm_seg,screen_info.vesapm_off); } - if (screen_info.vesapm_seg < 0xc000) - ypan = pmi_setpal = 0; /* not available or some DOS TSR ... */ + if (screen_info.vesapm_seg < 0xc000) { + ypan = 0; + pmi_setpal = false; /* not available or some DOS TSR ... */ + } if (ypan || pmi_setpal) { unsigned short *pmi_base; @@ -334,7 +368,8 @@ * memory area and pass it in the ES register to the BIOS function. */ printk(KERN_INFO "vesafb: can't handle memory requests, pmi disabled\n"); - ypan = pmi_setpal = 0; + ypan = 0; + pmi_setpal = false; } } } @@ -423,17 +458,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 +528,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 +559,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 +590,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-ppc-3.8.0.orig/drivers/video/atmel_lcdfb.c +++ linux-ppc-3.8.0/drivers/video/atmel_lcdfb.c @@ -422,17 +422,22 @@ = var->bits_per_pixel; break; case 16: + /* Older SOCs use IBGR:555 rather than BGR:565. */ + if (sinfo->have_intensity_bit) + var->green.length = 5; + else + var->green.length = 6; + if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { - /* RGB:565 mode */ - var->red.offset = 11; + /* RGB:5X5 mode */ + var->red.offset = var->green.length + 5; var->blue.offset = 0; } else { - /* BGR:565 mode */ + /* BGR:5X5 mode */ var->red.offset = 0; - var->blue.offset = 11; + var->blue.offset = var->green.length + 5; } var->green.offset = 5; - var->green.length = 6; var->red.length = var->blue.length = 5; break; case 32: @@ -679,8 +684,7 @@ case FB_VISUAL_PSEUDOCOLOR: if (regno < 256) { - if (cpu_is_at91sam9261() || cpu_is_at91sam9263() - || cpu_is_at91sam9rl()) { + if (sinfo->have_intensity_bit) { /* old style I+BGR:555 */ val = ((red >> 11) & 0x001f); val |= ((green >> 6) & 0x03e0); @@ -870,6 +874,10 @@ } sinfo->info = info; sinfo->pdev = pdev; + if (cpu_is_at91sam9261() || cpu_is_at91sam9263() || + cpu_is_at91sam9rl()) { + sinfo->have_intensity_bit = true; + } strcpy(info->fix.id, sinfo->pdev->name); info->flags = ATMEL_LCDFB_FBINFO_DEFAULT; --- linux-ppc-3.8.0.orig/drivers/video/Kconfig +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/video/backlight/adp8860_bl.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/video/backlight/adp8870_bl.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/video/console/vgacon.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/video/console/fbcon.c +++ linux-ppc-3.8.0/drivers/video/console/fbcon.c @@ -529,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; @@ -815,6 +842,8 @@ * * Maps a virtual console @unit to a frame buffer device * @newidx. + * + * This should be called with the console lock held. */ static int set_con2fb_map(int unit, int newidx, int user) { @@ -832,7 +861,7 @@ if (!search_for_mapped_con() || !con_is_bound(&fb_con)) { info_idx = newidx; - return fbcon_takeover(0); + return do_fbcon_takeover(0); } if (oldidx != -1) @@ -840,7 +869,6 @@ found = search_fb_in_map(newidx); - console_lock(); con2fb_map[unit] = newidx; if (!err && !found) err = con2fb_acquire_newinfo(vc, info, unit, oldidx); @@ -867,7 +895,6 @@ if (!search_fb_in_map(info_idx)) info_idx = newidx; - console_unlock(); return err; } @@ -990,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, @@ -1000,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); @@ -1159,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; @@ -1173,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) @@ -1185,6 +1214,8 @@ if (!info) goto finished; + if (info->flags & FBINFO_MISC_FIRMWARE) + free_font = false; ops = info->fbcon_par; if (!ops) @@ -1196,6 +1227,10 @@ ops->flags &= ~FBCON_FLAGS_INIT; finished: + fbcon_free_font(p, free_font); + if (free_font) + vc->vc_font.data = NULL; + if (!con_is_bound(&fb_con)) fbcon_exit(); @@ -2977,7 +3012,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) @@ -2992,6 +3027,7 @@ } #endif /* CONFIG_VT_HW_CONSOLE_BINDING */ +/* called with console_lock held */ static int fbcon_fb_unbind(int idx) { int i, new_idx = -1, ret = 0; @@ -3018,6 +3054,7 @@ return ret; } +/* called with console_lock held */ static int fbcon_fb_unregistered(struct fb_info *info) { int i, idx; @@ -3050,11 +3087,12 @@ primary_device = -1; if (!num_registered_fb) - unregister_con_driver(&fb_con); + do_unregister_con_driver(&fb_con); return 0; } +/* called with console_lock held */ static void fbcon_remap_all(int idx) { int i; @@ -3099,6 +3137,7 @@ } #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */ +/* called with console_lock held */ static int fbcon_fb_registered(struct fb_info *info) { int ret = 0, i, idx; @@ -3115,7 +3154,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) @@ -3251,6 +3290,7 @@ ret = fbcon_fb_unregistered(info); break; case FB_EVENT_SET_CONSOLE_MAP: + /* called with console lock held */ con2fb = event->data; ret = set_con2fb_map(con2fb->console - 1, con2fb->framebuffer, 1); --- linux-ppc-3.8.0.orig/drivers/thermal/thermal_sys.c +++ linux-ppc-3.8.0/drivers/thermal/thermal_sys.c @@ -1807,6 +1807,7 @@ idr_destroy(&thermal_cdev_idr); mutex_destroy(&thermal_idr_lock); mutex_destroy(&thermal_list_lock); + return result; } result = genetlink_init(); return result; --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-designware-core.h +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-designware-core.h @@ -60,6 +60,7 @@ * @adapter: i2c subsystem adapter node * @tx_fifo_depth: depth of the hardware tx fifo * @rx_fifo_depth: depth of the hardware rx fifo + * @rx_outstanding: current master-rx elements in tx fifo */ struct dw_i2c_dev { struct device *dev; @@ -88,6 +89,7 @@ u32 master_cfg; unsigned int tx_fifo_depth; unsigned int rx_fifo_depth; + int rx_outstanding; }; #define ACCESS_SWAP 0x00000001 --- linux-ppc-3.8.0.orig/drivers/i2c/busses/Makefile +++ linux-ppc-3.8.0/drivers/i2c/busses/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_I2C_AMD8111) += i2c-amd8111.o obj-$(CONFIG_I2C_I801) += i2c-i801.o obj-$(CONFIG_I2C_ISCH) += i2c-isch.o +obj-$(CONFIG_I2C_ISMT) += i2c-ismt.o obj-$(CONFIG_I2C_NFORCE2) += i2c-nforce2.o obj-$(CONFIG_I2C_NFORCE2_S4985) += i2c-nforce2-s4985.o obj-$(CONFIG_I2C_PIIX4) += i2c-piix4.o --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-piix4.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-piix4.c @@ -22,7 +22,7 @@ Intel PIIX4, 440MX Serverworks OSB4, CSB5, CSB6, HT-1000, HT-1100 ATI IXP200, IXP300, IXP400, SB600, SB700/SP5100, SB800 - AMD Hudson-2 + AMD Hudson-2, CZ SMSC Victory66 Note: we assume there can only be one device, with one or more @@ -522,6 +522,7 @@ { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_HUDSON2_SMBUS) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, 0x790b) }, { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4) }, { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-designware-platdrv.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-designware-platdrv.c @@ -37,8 +37,10 @@ #include #include #include +#include #include #include +#include #include "i2c-designware-core.h" static struct i2c_algorithm i2c_dw_algo = { @@ -50,6 +52,42 @@ return clk_get_rate(dev->clk)/1000; } +#ifdef CONFIG_ACPI +static int dw_i2c_acpi_configure(struct platform_device *pdev) +{ + struct dw_i2c_dev *dev = platform_get_drvdata(pdev); + struct acpi_device *adev; + int busno, ret; + + if (!ACPI_HANDLE(&pdev->dev)) + return -ENODEV; + + ret = acpi_bus_get_device(ACPI_HANDLE(&pdev->dev), &adev); + if (ret) + return -ENODEV; + + dev->adapter.nr = -1; + if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0, &busno)) + dev->adapter.nr = busno; + + dev->tx_fifo_depth = 32; + dev->rx_fifo_depth = 32; + return 0; +} + +static const struct acpi_device_id dw_i2c_acpi_match[] = { + { "INT33C2", 0 }, + { "INT33C3", 0 }, + { } +}; +MODULE_DEVICE_TABLE(acpi, dw_i2c_acpi_match); +#else +static inline int dw_i2c_acpi_configure(struct platform_device *pdev) +{ + return -ENODEV; +} +#endif + static int dw_i2c_probe(struct platform_device *pdev) { struct dw_i2c_dev *dev; @@ -114,18 +152,22 @@ r = -EBUSY; goto err_unuse_clocks; } - { + + /* Try first if we can configure the device from ACPI */ + r = dw_i2c_acpi_configure(pdev); + if (r) { u32 param1 = i2c_dw_read_comp_param(dev); dev->tx_fifo_depth = ((param1 >> 16) & 0xff) + 1; dev->rx_fifo_depth = ((param1 >> 8) & 0xff) + 1; + dev->adapter.nr = pdev->id; } r = i2c_dw_init(dev); if (r) goto err_iounmap; i2c_dw_disable_int(dev); - r = request_irq(dev->irq, i2c_dw_isr, IRQF_DISABLED, pdev->name, dev); + r = request_irq(dev->irq, i2c_dw_isr, IRQF_SHARED, pdev->name, dev); if (r) { dev_err(&pdev->dev, "failure requesting irq %i\n", dev->irq); goto err_iounmap; @@ -140,14 +182,19 @@ adap->algo = &i2c_dw_algo; adap->dev.parent = &pdev->dev; adap->dev.of_node = pdev->dev.of_node; + ACPI_HANDLE_SET(&adap->dev, ACPI_HANDLE(&pdev->dev)); - adap->nr = pdev->id; r = i2c_add_numbered_adapter(adap); if (r) { dev_err(&pdev->dev, "failure adding adapter\n"); goto err_free_irq; } of_i2c_register_devices(adap); + acpi_i2c_register_devices(adap); + + pm_runtime_set_active(&pdev->dev); + pm_runtime_enable(&pdev->dev); + pm_runtime_put(&pdev->dev); return 0; @@ -175,6 +222,8 @@ struct resource *mem; platform_set_drvdata(pdev, NULL); + pm_runtime_get_sync(&pdev->dev); + i2c_del_adapter(&dev->adapter); put_device(&pdev->dev); @@ -186,6 +235,9 @@ free_irq(dev->irq, dev); kfree(dev); + pm_runtime_put(&pdev->dev); + pm_runtime_disable(&pdev->dev); + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(mem->start, resource_size(mem)); return 0; @@ -233,6 +285,7 @@ .name = "i2c_designware", .owner = THIS_MODULE, .of_match_table = of_match_ptr(dw_i2c_of_match), + .acpi_match_table = ACPI_PTR(dw_i2c_acpi_match), .pm = &dw_i2c_dev_pm_ops, }, }; --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-designware-core.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-designware-core.c @@ -361,7 +361,8 @@ /* Enable the adapter */ dw_writel(dev, 1, DW_IC_ENABLE); - /* Enable interrupts */ + /* Clear and enable interrupts */ + i2c_dw_clear_int(dev); dw_writel(dev, DW_IC_INTR_DEFAULT_MASK, DW_IC_INTR_MASK); } @@ -413,11 +414,29 @@ rx_limit = dev->rx_fifo_depth - dw_readl(dev, DW_IC_RXFLR); while (buf_len > 0 && tx_limit > 0 && rx_limit > 0) { + u32 cmd = 0; + + /* + * If IC_EMPTYFIFO_HOLD_MASTER_EN is set we must + * manually set the stop bit. However, it cannot be + * detected from the registers so we set it always + * when writing/reading the last byte. + */ + if (dev->msg_write_idx == dev->msgs_num - 1 && + buf_len == 1) + cmd |= BIT(9); + if (msgs[dev->msg_write_idx].flags & I2C_M_RD) { - dw_writel(dev, 0x100, DW_IC_DATA_CMD); + + /* avoid rx buffer overrun */ + if (rx_limit - dev->rx_outstanding <= 0) + break; + + dw_writel(dev, cmd | 0x100, DW_IC_DATA_CMD); rx_limit--; + dev->rx_outstanding++; } else - dw_writel(dev, *buf++, DW_IC_DATA_CMD); + dw_writel(dev, cmd | *buf++, DW_IC_DATA_CMD); tx_limit--; buf_len--; } @@ -527,6 +546,7 @@ dev->msg_err = 0; dev->status = STATUS_IDLE; dev->abort_source = 0; + dev->rx_outstanding = 0; ret = i2c_dw_wait_bus_not_busy(dev); if (ret < 0) --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-i801.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-i801.c @@ -53,6 +53,7 @@ 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 + Avoton (SOC) 0x1f3c 32 hard yes yes yes Features supported by this driver: Software PEC no @@ -162,6 +163,7 @@ #define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1 0x1d71 #define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2 0x1d72 #define PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS 0x1e22 +#define PCI_DEVICE_ID_INTEL_AVOTON_SMBUS 0x1f3c #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 @@ -798,6 +800,7 @@ { 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) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_AVOTON_SMBUS) }, { 0, } }; --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-tegra.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-tegra.c @@ -392,7 +392,11 @@ u32 val; int err = 0; - tegra_i2c_clock_enable(i2c_dev); + err = tegra_i2c_clock_enable(i2c_dev); + if (err < 0) { + dev_err(i2c_dev->dev, "Clock enable failed %d\n", err); + return err; + } tegra_periph_reset_assert(i2c_dev->div_clk); udelay(2); @@ -599,7 +603,12 @@ if (i2c_dev->is_suspended) return -EBUSY; - tegra_i2c_clock_enable(i2c_dev); + ret = tegra_i2c_clock_enable(i2c_dev); + if (ret < 0) { + dev_err(i2c_dev->dev, "Clock enable failed %d\n", ret); + return ret; + } + for (i = 0; i < num; i++) { enum msg_end_type end_type = MSG_END_STOP; if (i < (num - 1)) { --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-ismt.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-ismt.c @@ -0,0 +1,965 @@ +/* + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * Copyright(c) 2012 Intel Corporation. All rights reserved. + * + * GPL LICENSE SUMMARY + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have 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. + * The full GNU General Public License is included in this distribution + * in the file called LICENSE.GPL. + * + * BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Supports the SMBus Message Transport (SMT) in the Intel Atom Processor + * S12xx Product Family. + * + * Features supported by this driver: + * Hardware PEC yes + * Block buffer yes + * Block process call transaction no + * Slave mode no + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* PCI Address Constants */ +#define SMBBAR 0 + +/* PCI DIDs for the Intel SMBus Message Transport (SMT) Devices */ +#define PCI_DEVICE_ID_INTEL_S1200_SMT0 0x0c59 +#define PCI_DEVICE_ID_INTEL_S1200_SMT1 0x0c5a +#define PCI_DEVICE_ID_INTEL_AVOTON_SMT 0x1f15 + +#define ISMT_DESC_ENTRIES 32 /* number of descriptor entries */ +#define ISMT_MAX_RETRIES 3 /* number of SMBus retries to attempt */ + +/* Hardware Descriptor Constants - Control Field */ +#define ISMT_DESC_CWRL 0x01 /* Command/Write Length */ +#define ISMT_DESC_BLK 0X04 /* Perform Block Transaction */ +#define ISMT_DESC_FAIR 0x08 /* Set fairness flag upon successful arbit. */ +#define ISMT_DESC_PEC 0x10 /* Packet Error Code */ +#define ISMT_DESC_I2C 0x20 /* I2C Enable */ +#define ISMT_DESC_INT 0x40 /* Interrupt */ +#define ISMT_DESC_SOE 0x80 /* Stop On Error */ + +/* Hardware Descriptor Constants - Status Field */ +#define ISMT_DESC_SCS 0x01 /* Success */ +#define ISMT_DESC_DLTO 0x04 /* Data Low Time Out */ +#define ISMT_DESC_NAK 0x08 /* NAK Received */ +#define ISMT_DESC_CRC 0x10 /* CRC Error */ +#define ISMT_DESC_CLTO 0x20 /* Clock Low Time Out */ +#define ISMT_DESC_COL 0x40 /* Collisions */ +#define ISMT_DESC_LPR 0x80 /* Large Packet Received */ + +/* Macros */ +#define ISMT_DESC_ADDR_RW(addr, rw) (((addr) << 1) | (rw)) + +/* iSMT General Register address offsets (SMBBAR + ) */ +#define ISMT_GR_GCTRL 0x000 /* General Control */ +#define ISMT_GR_SMTICL 0x008 /* SMT Interrupt Cause Location */ +#define ISMT_GR_ERRINTMSK 0x010 /* Error Interrupt Mask */ +#define ISMT_GR_ERRAERMSK 0x014 /* Error AER Mask */ +#define ISMT_GR_ERRSTS 0x018 /* Error Status */ +#define ISMT_GR_ERRINFO 0x01c /* Error Information */ + +/* iSMT Master Registers */ +#define ISMT_MSTR_MDBA 0x100 /* Master Descriptor Base Address */ +#define ISMT_MSTR_MCTRL 0x108 /* Master Control */ +#define ISMT_MSTR_MSTS 0x10c /* Master Status */ +#define ISMT_MSTR_MDS 0x110 /* Master Descriptor Size */ +#define ISMT_MSTR_RPOLICY 0x114 /* Retry Policy */ + +/* iSMT Miscellaneous Registers */ +#define ISMT_SPGT 0x300 /* SMBus PHY Global Timing */ + +/* General Control Register (GCTRL) bit definitions */ +#define ISMT_GCTRL_TRST 0x04 /* Target Reset */ +#define ISMT_GCTRL_KILL 0x08 /* Kill */ +#define ISMT_GCTRL_SRST 0x40 /* Soft Reset */ + +/* Master Control Register (MCTRL) bit definitions */ +#define ISMT_MCTRL_SS 0x01 /* Start/Stop */ +#define ISMT_MCTRL_MEIE 0x10 /* Master Error Interrupt Enable */ +#define ISMT_MCTRL_FMHP 0x00ff0000 /* Firmware Master Head Ptr (FMHP) */ + +/* Master Status Register (MSTS) bit definitions */ +#define ISMT_MSTS_HMTP 0xff0000 /* HW Master Tail Pointer (HMTP) */ +#define ISMT_MSTS_MIS 0x20 /* Master Interrupt Status (MIS) */ +#define ISMT_MSTS_MEIS 0x10 /* Master Error Int Status (MEIS) */ +#define ISMT_MSTS_IP 0x01 /* In Progress */ + +/* Master Descriptor Size (MDS) bit definitions */ +#define ISMT_MDS_MASK 0xff /* Master Descriptor Size mask (MDS) */ + +/* SMBus PHY Global Timing Register (SPGT) bit definitions */ +#define ISMT_SPGT_SPD_MASK 0xc0000000 /* SMBus Speed mask */ +#define ISMT_SPGT_SPD_80K 0x00 /* 80 kHz */ +#define ISMT_SPGT_SPD_100K (0x1 << 30) /* 100 kHz */ +#define ISMT_SPGT_SPD_400K (0x2 << 30) /* 400 kHz */ +#define ISMT_SPGT_SPD_1M (0x3 << 30) /* 1 MHz */ + + +/* MSI Control Register (MSICTL) bit definitions */ +#define ISMT_MSICTL_MSIE 0x01 /* MSI Enable */ + +/* iSMT Hardware Descriptor */ +struct ismt_desc { + u8 tgtaddr_rw; /* target address & r/w bit */ + u8 wr_len_cmd; /* write length in bytes or a command */ + u8 rd_len; /* read length */ + u8 control; /* control bits */ + u8 status; /* status bits */ + u8 retry; /* collision retry and retry count */ + u8 rxbytes; /* received bytes */ + u8 txbytes; /* transmitted bytes */ + u32 dptr_low; /* lower 32 bit of the data pointer */ + u32 dptr_high; /* upper 32 bit of the data pointer */ +} __packed; + +struct ismt_priv { + struct i2c_adapter adapter; + void *smba; /* PCI BAR */ + struct pci_dev *pci_dev; + struct ismt_desc *hw; /* descriptor virt base addr */ + dma_addr_t io_rng_dma; /* descriptor HW base addr */ + u8 head; /* ring buffer head pointer */ + struct completion cmp; /* interrupt completion */ + u8 dma_buffer[I2C_SMBUS_BLOCK_MAX + 1]; /* temp R/W data buffer */ + bool using_msi; /* type of interrupt flag */ +}; + +/** + * ismt_ids - PCI device IDs supported by this driver + */ +static const DEFINE_PCI_DEVICE_TABLE(ismt_ids) = { + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_S1200_SMT0) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_S1200_SMT1) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_AVOTON_SMT) }, + { 0, } +}; + +MODULE_DEVICE_TABLE(pci, ismt_ids); + +/* Bus speed control bits for slow debuggers - refer to the docs for usage */ +static unsigned int bus_speed; +module_param(bus_speed, uint, S_IRUGO); +MODULE_PARM_DESC(bus_speed, "Bus Speed in kHz (0 = BIOS default)"); + +/** + * __ismt_desc_dump() - dump the contents of a specific descriptor + */ +static void __ismt_desc_dump(struct device *dev, const struct ismt_desc *desc) +{ + + dev_dbg(dev, "Descriptor struct: %p\n", desc); + dev_dbg(dev, "\ttgtaddr_rw=0x%02X\n", desc->tgtaddr_rw); + dev_dbg(dev, "\twr_len_cmd=0x%02X\n", desc->wr_len_cmd); + dev_dbg(dev, "\trd_len= 0x%02X\n", desc->rd_len); + dev_dbg(dev, "\tcontrol= 0x%02X\n", desc->control); + dev_dbg(dev, "\tstatus= 0x%02X\n", desc->status); + dev_dbg(dev, "\tretry= 0x%02X\n", desc->retry); + dev_dbg(dev, "\trxbytes= 0x%02X\n", desc->rxbytes); + dev_dbg(dev, "\ttxbytes= 0x%02X\n", desc->txbytes); + dev_dbg(dev, "\tdptr_low= 0x%08X\n", desc->dptr_low); + dev_dbg(dev, "\tdptr_high= 0x%08X\n", desc->dptr_high); +} +/** + * ismt_desc_dump() - dump the contents of a descriptor for debug purposes + * @priv: iSMT private data + */ +static void ismt_desc_dump(struct ismt_priv *priv) +{ + struct device *dev = &priv->pci_dev->dev; + struct ismt_desc *desc = &priv->hw[priv->head]; + + dev_dbg(dev, "Dump of the descriptor struct: 0x%X\n", priv->head); + __ismt_desc_dump(dev, desc); +} + +/** + * ismt_gen_reg_dump() - dump the iSMT General Registers + * @priv: iSMT private data + */ +static void ismt_gen_reg_dump(struct ismt_priv *priv) +{ + struct device *dev = &priv->pci_dev->dev; + + dev_dbg(dev, "Dump of the iSMT General Registers\n"); + dev_dbg(dev, " GCTRL.... : (0x%p)=0x%X\n", + priv->smba + ISMT_GR_GCTRL, + readl(priv->smba + ISMT_GR_GCTRL)); + dev_dbg(dev, " SMTICL... : (0x%p)=0x%016llX\n", + priv->smba + ISMT_GR_SMTICL, + (long long unsigned int)readq(priv->smba + ISMT_GR_SMTICL)); + dev_dbg(dev, " ERRINTMSK : (0x%p)=0x%X\n", + priv->smba + ISMT_GR_ERRINTMSK, + readl(priv->smba + ISMT_GR_ERRINTMSK)); + dev_dbg(dev, " ERRAERMSK : (0x%p)=0x%X\n", + priv->smba + ISMT_GR_ERRAERMSK, + readl(priv->smba + ISMT_GR_ERRAERMSK)); + dev_dbg(dev, " ERRSTS... : (0x%p)=0x%X\n", + priv->smba + ISMT_GR_ERRSTS, + readl(priv->smba + ISMT_GR_ERRSTS)); + dev_dbg(dev, " ERRINFO.. : (0x%p)=0x%X\n", + priv->smba + ISMT_GR_ERRINFO, + readl(priv->smba + ISMT_GR_ERRINFO)); +} + +/** + * ismt_mstr_reg_dump() - dump the iSMT Master Registers + * @priv: iSMT private data + */ +static void ismt_mstr_reg_dump(struct ismt_priv *priv) +{ + struct device *dev = &priv->pci_dev->dev; + + dev_dbg(dev, "Dump of the iSMT Master Registers\n"); + dev_dbg(dev, " MDBA..... : (0x%p)=0x%016llX\n", + priv->smba + ISMT_MSTR_MDBA, + (long long unsigned int)readq(priv->smba + ISMT_MSTR_MDBA)); + dev_dbg(dev, " MCTRL.... : (0x%p)=0x%X\n", + priv->smba + ISMT_MSTR_MCTRL, + readl(priv->smba + ISMT_MSTR_MCTRL)); + dev_dbg(dev, " MSTS..... : (0x%p)=0x%X\n", + priv->smba + ISMT_MSTR_MSTS, + readl(priv->smba + ISMT_MSTR_MSTS)); + dev_dbg(dev, " MDS...... : (0x%p)=0x%X\n", + priv->smba + ISMT_MSTR_MDS, + readl(priv->smba + ISMT_MSTR_MDS)); + dev_dbg(dev, " RPOLICY.. : (0x%p)=0x%X\n", + priv->smba + ISMT_MSTR_RPOLICY, + readl(priv->smba + ISMT_MSTR_RPOLICY)); + dev_dbg(dev, " SPGT..... : (0x%p)=0x%X\n", + priv->smba + ISMT_SPGT, + readl(priv->smba + ISMT_SPGT)); +} + +/** + * ismt_submit_desc() - add a descriptor to the ring + * @priv: iSMT private data + */ +static void ismt_submit_desc(struct ismt_priv *priv) +{ + uint fmhp; + uint val; + + ismt_desc_dump(priv); + ismt_gen_reg_dump(priv); + ismt_mstr_reg_dump(priv); + + /* Set the FMHP (Firmware Master Head Pointer)*/ + fmhp = ((priv->head + 1) % ISMT_DESC_ENTRIES) << 16; + val = readl(priv->smba + ISMT_MSTR_MCTRL); + writel((val & ~ISMT_MCTRL_FMHP) | fmhp, + priv->smba + ISMT_MSTR_MCTRL); + + /* Set the start bit */ + val = readl(priv->smba + ISMT_MSTR_MCTRL); + writel(val | ISMT_MCTRL_SS, + priv->smba + ISMT_MSTR_MCTRL); +} + +/** + * ismt_process_desc() - handle the completion of the descriptor + * @desc: the iSMT hardware descriptor + * @data: data buffer from the upper layer + * @priv: ismt_priv struct holding our dma buffer + * @size: SMBus transaction type + * @read_write: flag to indicate if this is a read or write + */ +static int ismt_process_desc(const struct ismt_desc *desc, + union i2c_smbus_data *data, + struct ismt_priv *priv, int size, + char read_write) +{ + u8 *dma_buffer = priv->dma_buffer; + + dev_dbg(&priv->pci_dev->dev, "Processing completed descriptor\n"); + __ismt_desc_dump(&priv->pci_dev->dev, desc); + + if (desc->status & ISMT_DESC_SCS) { + if (read_write == I2C_SMBUS_WRITE && + size != I2C_SMBUS_PROC_CALL) + return 0; + + switch (size) { + case I2C_SMBUS_BYTE: + case I2C_SMBUS_BYTE_DATA: + data->byte = dma_buffer[0]; + break; + case I2C_SMBUS_WORD_DATA: + case I2C_SMBUS_PROC_CALL: + data->word = dma_buffer[0] | (dma_buffer[1] << 8); + break; + case I2C_SMBUS_BLOCK_DATA: + memcpy(&data->block[1], dma_buffer, desc->rxbytes); + data->block[0] = desc->rxbytes; + break; + } + return 0; + } + + if (likely(desc->status & ISMT_DESC_NAK)) + return -ENXIO; + + if (desc->status & ISMT_DESC_CRC) + return -EBADMSG; + + if (desc->status & ISMT_DESC_COL) + return -EAGAIN; + + if (desc->status & ISMT_DESC_LPR) + return -EPROTO; + + if (desc->status & (ISMT_DESC_DLTO | ISMT_DESC_CLTO)) + return -ETIMEDOUT; + + return -EIO; +} + +/** + * ismt_access() - process an SMBus command + * @adap: the i2c host adapter + * @addr: address of the i2c/SMBus target + * @flags: command options + * @read_write: read from or write to device + * @command: the i2c/SMBus command to issue + * @size: SMBus transaction type + * @data: read/write data buffer + */ +static int ismt_access(struct i2c_adapter *adap, u16 addr, + unsigned short flags, char read_write, u8 command, + int size, union i2c_smbus_data *data) +{ + int ret; + dma_addr_t dma_addr = 0; /* address of the data buffer */ + u8 dma_size = 0; + enum dma_data_direction dma_direction = 0; + struct ismt_desc *desc; + struct ismt_priv *priv = i2c_get_adapdata(adap); + struct device *dev = &priv->pci_dev->dev; + + desc = &priv->hw[priv->head]; + + /* Initialize the descriptor */ + memset(desc, 0, sizeof(struct ismt_desc)); + desc->tgtaddr_rw = ISMT_DESC_ADDR_RW(addr, read_write); + + /* Initialize common control bits */ + if (likely(priv->using_msi)) + desc->control = ISMT_DESC_INT | ISMT_DESC_FAIR; + else + desc->control = ISMT_DESC_FAIR; + + if ((flags & I2C_CLIENT_PEC) && (size != I2C_SMBUS_QUICK) + && (size != I2C_SMBUS_I2C_BLOCK_DATA)) + desc->control |= ISMT_DESC_PEC; + + switch (size) { + case I2C_SMBUS_QUICK: + dev_dbg(dev, "I2C_SMBUS_QUICK\n"); + break; + + case I2C_SMBUS_BYTE: + if (read_write == I2C_SMBUS_WRITE) { + /* + * Send Byte + * The command field contains the write data + */ + dev_dbg(dev, "I2C_SMBUS_BYTE: WRITE\n"); + desc->control |= ISMT_DESC_CWRL; + desc->wr_len_cmd = command; + } else { + /* Receive Byte */ + dev_dbg(dev, "I2C_SMBUS_BYTE: READ\n"); + dma_size = 1; + dma_direction = DMA_FROM_DEVICE; + desc->rd_len = 1; + } + break; + + case I2C_SMBUS_BYTE_DATA: + if (read_write == I2C_SMBUS_WRITE) { + /* + * Write Byte + * Command plus 1 data byte + */ + dev_dbg(dev, "I2C_SMBUS_BYTE_DATA: WRITE\n"); + desc->wr_len_cmd = 2; + dma_size = 2; + dma_direction = DMA_TO_DEVICE; + priv->dma_buffer[0] = command; + priv->dma_buffer[1] = data->byte; + } else { + /* Read Byte */ + dev_dbg(dev, "I2C_SMBUS_BYTE_DATA: READ\n"); + desc->control |= ISMT_DESC_CWRL; + desc->wr_len_cmd = command; + desc->rd_len = 1; + dma_size = 1; + dma_direction = DMA_FROM_DEVICE; + } + break; + + case I2C_SMBUS_WORD_DATA: + if (read_write == I2C_SMBUS_WRITE) { + /* Write Word */ + dev_dbg(dev, "I2C_SMBUS_WORD_DATA: WRITE\n"); + desc->wr_len_cmd = 3; + dma_size = 3; + dma_direction = DMA_TO_DEVICE; + priv->dma_buffer[0] = command; + priv->dma_buffer[1] = data->word & 0xff; + priv->dma_buffer[2] = data->word >> 8; + } else { + /* Read Word */ + dev_dbg(dev, "I2C_SMBUS_WORD_DATA: READ\n"); + desc->wr_len_cmd = command; + desc->control |= ISMT_DESC_CWRL; + desc->rd_len = 2; + dma_size = 2; + dma_direction = DMA_FROM_DEVICE; + } + break; + + case I2C_SMBUS_PROC_CALL: + dev_dbg(dev, "I2C_SMBUS_PROC_CALL\n"); + desc->wr_len_cmd = 3; + desc->rd_len = 2; + dma_size = 3; + dma_direction = DMA_BIDIRECTIONAL; + priv->dma_buffer[0] = command; + priv->dma_buffer[1] = data->word & 0xff; + priv->dma_buffer[2] = data->word >> 8; + break; + + case I2C_SMBUS_BLOCK_DATA: + if (read_write == I2C_SMBUS_WRITE) { + /* Block Write */ + dev_dbg(dev, "I2C_SMBUS_BLOCK_DATA: WRITE\n"); + dma_size = data->block[0] + 1; + dma_direction = DMA_TO_DEVICE; + desc->wr_len_cmd = dma_size; + desc->control |= ISMT_DESC_BLK; + priv->dma_buffer[0] = command; + memcpy(&priv->dma_buffer[1], &data->block[1], dma_size); + } else { + /* Block Read */ + dev_dbg(dev, "I2C_SMBUS_BLOCK_DATA: READ\n"); + dma_size = I2C_SMBUS_BLOCK_MAX; + dma_direction = DMA_FROM_DEVICE; + desc->rd_len = dma_size; + desc->wr_len_cmd = command; + desc->control |= (ISMT_DESC_BLK | ISMT_DESC_CWRL); + } + break; + + default: + dev_err(dev, "Unsupported transaction %d\n", + size); + return -EOPNOTSUPP; + } + + /* map the data buffer */ + if (dma_size != 0) { + dev_dbg(dev, " dev=%p\n", dev); + dev_dbg(dev, " data=%p\n", data); + dev_dbg(dev, " dma_buffer=%p\n", priv->dma_buffer); + dev_dbg(dev, " dma_size=%d\n", dma_size); + dev_dbg(dev, " dma_direction=%d\n", dma_direction); + + dma_addr = dma_map_single(dev, + priv->dma_buffer, + dma_size, + dma_direction); + + if (dma_mapping_error(dev, dma_addr)) { + dev_err(dev, "Error in mapping dma buffer %p\n", + priv->dma_buffer); + return -EIO; + } + + dev_dbg(dev, " dma_addr = 0x%016llX\n", + (unsigned long long)dma_addr); + + desc->dptr_low = lower_32_bits(dma_addr); + desc->dptr_high = upper_32_bits(dma_addr); + } + + INIT_COMPLETION(priv->cmp); + + /* Add the descriptor */ + ismt_submit_desc(priv); + + /* Now we wait for interrupt completion, 1s */ + ret = wait_for_completion_timeout(&priv->cmp, HZ*1); + + /* unmap the data buffer */ + if (dma_size != 0) + dma_unmap_single(&adap->dev, dma_addr, dma_size, dma_direction); + + if (unlikely(!ret)) { + dev_err(dev, "completion wait timed out\n"); + ret = -ETIMEDOUT; + goto out; + } + + /* do any post processing of the descriptor here */ + ret = ismt_process_desc(desc, data, priv, size, read_write); + +out: + /* Update the ring pointer */ + priv->head++; + priv->head %= ISMT_DESC_ENTRIES; + + return ret; +} + +/** + * ismt_func() - report which i2c commands are supported by this adapter + * @adap: the i2c host adapter + */ +static u32 ismt_func(struct i2c_adapter *adap) +{ + return I2C_FUNC_SMBUS_QUICK | + I2C_FUNC_SMBUS_BYTE | + I2C_FUNC_SMBUS_BYTE_DATA | + I2C_FUNC_SMBUS_WORD_DATA | + I2C_FUNC_SMBUS_PROC_CALL | + I2C_FUNC_SMBUS_BLOCK_DATA | + I2C_FUNC_SMBUS_PEC; +} + +/** + * smbus_algorithm - the adapter algorithm and supported functionality + * @smbus_xfer: the adapter algorithm + * @functionality: functionality supported by the adapter + */ +static const struct i2c_algorithm smbus_algorithm = { + .smbus_xfer = ismt_access, + .functionality = ismt_func, +}; + +/** + * ismt_handle_isr() - interrupt handler bottom half + * @priv: iSMT private data + */ +static irqreturn_t ismt_handle_isr(struct ismt_priv *priv) +{ + complete(&priv->cmp); + + return IRQ_HANDLED; +} + + +/** + * ismt_do_interrupt() - IRQ interrupt handler + * @vec: interrupt vector + * @data: iSMT private data + */ +static irqreturn_t ismt_do_interrupt(int vec, void *data) +{ + u32 val; + struct ismt_priv *priv = data; + + /* + * check to see it's our interrupt, return IRQ_NONE if not ours + * since we are sharing interrupt + */ + val = readl(priv->smba + ISMT_MSTR_MSTS); + + if (!(val & (ISMT_MSTS_MIS | ISMT_MSTS_MEIS))) + return IRQ_NONE; + else + writel(val | ISMT_MSTS_MIS | ISMT_MSTS_MEIS, + priv->smba + ISMT_MSTR_MSTS); + + return ismt_handle_isr(priv); +} + +/** + * ismt_do_msi_interrupt() - MSI interrupt handler + * @vec: interrupt vector + * @data: iSMT private data + */ +static irqreturn_t ismt_do_msi_interrupt(int vec, void *data) +{ + return ismt_handle_isr(data); +} + +/** + * ismt_hw_init() - initialize the iSMT hardware + * @priv: iSMT private data + */ +static void ismt_hw_init(struct ismt_priv *priv) +{ + u32 val; + struct device *dev = &priv->pci_dev->dev; + + /* initialize the Master Descriptor Base Address (MDBA) */ + writeq(priv->io_rng_dma, priv->smba + ISMT_MSTR_MDBA); + + /* initialize the Master Control Register (MCTRL) */ + writel(ISMT_MCTRL_MEIE, priv->smba + ISMT_MSTR_MCTRL); + + /* initialize the Master Status Register (MSTS) */ + writel(0, priv->smba + ISMT_MSTR_MSTS); + + /* initialize the Master Descriptor Size (MDS) */ + val = readl(priv->smba + ISMT_MSTR_MDS); + writel((val & ~ISMT_MDS_MASK) | (ISMT_DESC_ENTRIES - 1), + priv->smba + ISMT_MSTR_MDS); + + /* + * Set the SMBus speed (could use this for slow HW debuggers) + */ + + val = readl(priv->smba + ISMT_SPGT); + + switch (bus_speed) { + case 0: + break; + + case 80: + dev_dbg(dev, "Setting SMBus clock to 80 kHz\n"); + writel(((val & ~ISMT_SPGT_SPD_MASK) | ISMT_SPGT_SPD_80K), + priv->smba + ISMT_SPGT); + break; + + case 100: + dev_dbg(dev, "Setting SMBus clock to 100 kHz\n"); + writel(((val & ~ISMT_SPGT_SPD_MASK) | ISMT_SPGT_SPD_100K), + priv->smba + ISMT_SPGT); + break; + + case 400: + dev_dbg(dev, "Setting SMBus clock to 400 kHz\n"); + writel(((val & ~ISMT_SPGT_SPD_MASK) | ISMT_SPGT_SPD_400K), + priv->smba + ISMT_SPGT); + break; + + case 1000: + dev_dbg(dev, "Setting SMBus clock to 1000 kHz\n"); + writel(((val & ~ISMT_SPGT_SPD_MASK) | ISMT_SPGT_SPD_1M), + priv->smba + ISMT_SPGT); + break; + + default: + dev_warn(dev, "Invalid SMBus clock speed, only 0, 80, 100, 400, and 1000 are valid\n"); + break; + } + + val = readl(priv->smba + ISMT_SPGT); + + switch (val & ISMT_SPGT_SPD_MASK) { + case ISMT_SPGT_SPD_80K: + bus_speed = 80; + break; + case ISMT_SPGT_SPD_100K: + bus_speed = 100; + break; + case ISMT_SPGT_SPD_400K: + bus_speed = 400; + break; + case ISMT_SPGT_SPD_1M: + bus_speed = 1000; + break; + } + dev_dbg(dev, "SMBus clock is running at %d kHz\n", bus_speed); +} + +/** + * ismt_dev_init() - initialize the iSMT data structures + * @priv: iSMT private data + */ +static int ismt_dev_init(struct ismt_priv *priv) +{ + /* allocate memory for the descriptor */ + priv->hw = dmam_alloc_coherent(&priv->pci_dev->dev, + (ISMT_DESC_ENTRIES + * sizeof(struct ismt_desc)), + &priv->io_rng_dma, + GFP_KERNEL); + if (!priv->hw) + return -ENOMEM; + + memset(priv->hw, 0, (ISMT_DESC_ENTRIES * sizeof(struct ismt_desc))); + + priv->head = 0; + init_completion(&priv->cmp); + + return 0; +} + +/** + * ismt_int_init() - initialize interrupts + * @priv: iSMT private data + */ +static int ismt_int_init(struct ismt_priv *priv) +{ + int err; + + /* Try using MSI interrupts */ + err = pci_enable_msi(priv->pci_dev); + if (err) { + dev_warn(&priv->pci_dev->dev, + "Unable to use MSI interrupts, falling back to legacy\n"); + goto intx; + } + + err = devm_request_irq(&priv->pci_dev->dev, + priv->pci_dev->irq, + ismt_do_msi_interrupt, + 0, + "ismt-msi", + priv); + if (err) { + pci_disable_msi(priv->pci_dev); + goto intx; + } + + priv->using_msi = true; + goto done; + + /* Try using legacy interrupts */ +intx: + err = devm_request_irq(&priv->pci_dev->dev, + priv->pci_dev->irq, + ismt_do_interrupt, + IRQF_SHARED, + "ismt-intx", + priv); + if (err) { + dev_err(&priv->pci_dev->dev, "no usable interrupts\n"); + return -ENODEV; + } + + priv->using_msi = false; + +done: + return 0; +} + +static struct pci_driver ismt_driver; + +/** + * ismt_probe() - probe for iSMT devices + * @pdev: PCI-Express device + * @id: PCI-Express device ID + */ +static int +ismt_probe(struct pci_dev *pdev, const struct pci_device_id *id) +{ + int err; + struct ismt_priv *priv; + unsigned long start, len; + + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + pci_set_drvdata(pdev, priv); + i2c_set_adapdata(&priv->adapter, priv); + priv->adapter.owner = THIS_MODULE; + + priv->adapter.class = I2C_CLASS_HWMON; + + priv->adapter.algo = &smbus_algorithm; + + /* set up the sysfs linkage to our parent device */ + priv->adapter.dev.parent = &pdev->dev; + + /* number of retries on lost arbitration */ + priv->adapter.retries = ISMT_MAX_RETRIES; + + priv->pci_dev = pdev; + + err = pcim_enable_device(pdev); + if (err) { + dev_err(&pdev->dev, "Failed to enable SMBus PCI device (%d)\n", + err); + return err; + } + + /* enable bus mastering */ + pci_set_master(pdev); + + /* Determine the address of the SMBus area */ + start = pci_resource_start(pdev, SMBBAR); + len = pci_resource_len(pdev, SMBBAR); + if (!start || !len) { + dev_err(&pdev->dev, + "SMBus base address uninitialized, upgrade BIOS\n"); + return -ENODEV; + } + + snprintf(priv->adapter.name, sizeof(priv->adapter.name), + "SMBus iSMT adapter at %lx", start); + + dev_dbg(&priv->pci_dev->dev, " start=0x%lX\n", start); + dev_dbg(&priv->pci_dev->dev, " len=0x%lX\n", len); + + err = acpi_check_resource_conflict(&pdev->resource[SMBBAR]); + if (err) { + dev_err(&pdev->dev, "ACPI resource conflict!\n"); + return err; + } + + err = pci_request_region(pdev, SMBBAR, ismt_driver.name); + if (err) { + dev_err(&pdev->dev, + "Failed to request SMBus region 0x%lx-0x%lx\n", + start, start + len); + return err; + } + + priv->smba = pcim_iomap(pdev, SMBBAR, len); + if (!priv->smba) { + dev_err(&pdev->dev, "Unable to ioremap SMBus BAR\n"); + err = -ENODEV; + goto fail; + } + + if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(64)) != 0) || + (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)) != 0)) { + if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) || + (pci_set_consistent_dma_mask(pdev, + DMA_BIT_MASK(32)) != 0)) { + dev_err(&pdev->dev, "pci_set_dma_mask fail %p\n", + pdev); + goto fail; + } + } + + err = ismt_dev_init(priv); + if (err) + goto fail; + + ismt_hw_init(priv); + + err = ismt_int_init(priv); + if (err) + goto fail; + + err = i2c_add_adapter(&priv->adapter); + if (err) { + dev_err(&pdev->dev, "Failed to add SMBus iSMT adapter\n"); + err = -ENODEV; + goto fail; + } + return 0; + +fail: + pci_release_region(pdev, SMBBAR); + return err; +} + +/** + * ismt_remove() - release driver resources + * @pdev: PCI-Express device + */ +static void ismt_remove(struct pci_dev *pdev) +{ + struct ismt_priv *priv = pci_get_drvdata(pdev); + + i2c_del_adapter(&priv->adapter); + pci_release_region(pdev, SMBBAR); +} + +/** + * ismt_suspend() - place the device in suspend + * @pdev: PCI-Express device + * @mesg: PM message + */ +#ifdef CONFIG_PM +static int ismt_suspend(struct pci_dev *pdev, pm_message_t mesg) +{ + pci_save_state(pdev); + pci_set_power_state(pdev, pci_choose_state(pdev, mesg)); + return 0; +} + +/** + * ismt_resume() - PCI resume code + * @pdev: PCI-Express device + */ +static int ismt_resume(struct pci_dev *pdev) +{ + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + return pci_enable_device(pdev); +} + +#else + +#define ismt_suspend NULL +#define ismt_resume NULL + +#endif + +static struct pci_driver ismt_driver = { + .name = "ismt_smbus", + .id_table = ismt_ids, + .probe = ismt_probe, + .remove = ismt_remove, + .suspend = ismt_suspend, + .resume = ismt_resume, +}; + +module_pci_driver(ismt_driver); + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("Bill E. Brown "); +MODULE_DESCRIPTION("Intel SMBus Message Transport (iSMT) driver"); --- linux-ppc-3.8.0.orig/drivers/i2c/busses/Kconfig +++ linux-ppc-3.8.0/drivers/i2c/busses/Kconfig @@ -106,6 +106,7 @@ Panther Point (PCH) Lynx Point (PCH) Lynx Point-LP (PCH) + Avoton (SOC) This driver can also be built as a module. If so, the module will be called i2c-i801. @@ -121,6 +122,16 @@ This driver can also be built as a module. If so, the module will be called i2c-isch. +config I2C_ISMT + tristate "Intel iSMT SMBus Controller" + depends on PCI && X86 + help + If you say yes to this option, support will be included for the Intel + iSMT SMBus host controller interface. + + This driver can also be built as a module. If so, the module will be + called i2c-ismt. + config I2C_PIIX4 tristate "Intel PIIX4 and compatible (ATI/AMD/Serverworks/Broadcom/SMSC)" depends on PCI @@ -138,6 +149,7 @@ ATI SB700/SP5100 ATI SB800 AMD Hudson-2 + AMD CZ Serverworks OSB4 Serverworks CSB5 Serverworks CSB6 --- linux-ppc-3.8.0.orig/drivers/i2c/busses/i2c-xiic.c +++ linux-ppc-3.8.0/drivers/i2c/busses/i2c-xiic.c @@ -312,10 +312,8 @@ /* last message in transfer -> STOP */ data |= XIIC_TX_DYN_STOP_MASK; dev_dbg(i2c->adap.dev.parent, "%s TX STOP\n", __func__); - - xiic_setreg16(i2c, XIIC_DTR_REG_OFFSET, data); - } else - xiic_setreg8(i2c, XIIC_DTR_REG_OFFSET, data); + } + xiic_setreg16(i2c, XIIC_DTR_REG_OFFSET, data); } } --- linux-ppc-3.8.0.orig/drivers/mfd/rts5229.c +++ linux-ppc-3.8.0/drivers/mfd/rts5229.c @@ -34,6 +34,28 @@ return val & 0x0F; } +static void rts5229_fetch_vendor_settings(struct rtsx_pcr *pcr) +{ + u32 reg; + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg); + + if (!rtsx_vendor_setting_valid(reg)) + return; + + pcr->aspm_en = rtsx_reg_to_aspm(reg); + pcr->sd30_drive_sel_1v8 = + map_sd_drive(rtsx_reg_to_sd30_drive_sel_1v8(reg)); + pcr->card_drive_sel &= 0x3F; + pcr->card_drive_sel |= rtsx_reg_to_card_drive_sel(reg); + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG2, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG2, reg); + pcr->sd30_drive_sel_3v3 = + map_sd_drive(rtsx_reg_to_sd30_drive_sel_3v3(reg)); +} + static int rts5229_extra_init_hw(struct rtsx_pcr *pcr) { rtsx_pci_init_cmd(pcr); @@ -45,6 +67,9 @@ 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 driving */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, + 0xFF, pcr->sd30_drive_sel_3v3); return rtsx_pci_send_cmd(pcr, 100); } @@ -110,7 +135,7 @@ 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); + LDO3318_PWR_MASK, 0x00); return rtsx_pci_send_cmd(pcr, 100); } @@ -119,10 +144,18 @@ int err; if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_3v3); + 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, pcr->sd30_drive_sel_1v8); + if (err < 0) + return err; err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); if (err < 0) return err; @@ -134,6 +167,7 @@ } static const struct pcr_ops rts5229_pcr_ops = { + .fetch_vendor_settings = rts5229_fetch_vendor_settings, .extra_init_hw = rts5229_extra_init_hw, .optimize_phy = rts5229_optimize_phy, .turn_on_led = rts5229_turn_on_led, @@ -213,6 +247,12 @@ pcr->num_slots = 2; pcr->ops = &rts5229_pcr_ops; + pcr->flags = 0; + pcr->card_drive_sel = RTSX_CARD_DRIVE_DEFAULT; + pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; + pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; + pcr->aspm_en = ASPM_L1_EN; + pcr->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; --- linux-ppc-3.8.0.orig/drivers/mfd/lpc_ich.c +++ linux-ppc-3.8.0/drivers/mfd/lpc_ich.c @@ -50,6 +50,7 @@ * document number TBD : Panther Point * document number TBD : Lynx Point * document number TBD : Lynx Point-LP + * document number TBD : Avoton SoC */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -194,6 +195,7 @@ LPC_PPT, /* Panther Point */ LPC_LPT, /* Lynx Point */ LPC_LPT_LP, /* Lynx Point-LP */ + LPC_AVN, /* Avoton SoC */ }; struct lpc_ich_info lpc_chipset_info[] = { @@ -474,6 +476,10 @@ .name = "Lynx Point_LP", .iTCO_version = 2, }, + [LPC_AVN] = { + .name = "Avoton SoC", + .iTCO_version = 1, + }, }; /* @@ -655,6 +661,10 @@ { PCI_VDEVICE(INTEL, 0x9c45), LPC_LPT_LP}, { PCI_VDEVICE(INTEL, 0x9c46), LPC_LPT_LP}, { PCI_VDEVICE(INTEL, 0x9c47), LPC_LPT_LP}, + { PCI_VDEVICE(INTEL, 0x1f38), LPC_AVN}, + { PCI_VDEVICE(INTEL, 0x1f39), LPC_AVN}, + { PCI_VDEVICE(INTEL, 0x1f3a), LPC_AVN}, + { PCI_VDEVICE(INTEL, 0x1f3b), LPC_AVN}, { 0, }, /* End of list */ }; MODULE_DEVICE_TABLE(pci, lpc_ich_ids); --- linux-ppc-3.8.0.orig/drivers/mfd/Makefile +++ linux-ppc-3.8.0/drivers/mfd/Makefile @@ -9,7 +9,7 @@ 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 +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 --- linux-ppc-3.8.0.orig/drivers/mfd/rtsx_pcr.c +++ linux-ppc-3.8.0/drivers/mfd/rtsx_pcr.c @@ -55,6 +55,8 @@ { 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 }, + { PCI_DEVICE(0x10EC, 0x5287), PCI_CLASS_OTHERS << 16, 0xFF0000 }, { 0, } }; @@ -70,6 +72,9 @@ pcr->state = PDEV_STAT_RUN; if (pcr->ops->enable_auto_blink) pcr->ops->enable_auto_blink(pcr); + + if (pcr->aspm_en) + rtsx_pci_write_config_byte(pcr, LCTLR, 0); } mod_delayed_work(system_wq, &pcr->idle_work, msecs_to_jiffies(200)); @@ -713,6 +718,25 @@ } 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->flags & 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) @@ -758,7 +782,7 @@ struct delayed_work *dwork; struct rtsx_pcr *pcr; unsigned long flags; - unsigned int card_detect = 0; + unsigned int card_detect = 0, card_inserted, card_removed; u32 irq_status; dwork = to_delayed_work(work); @@ -766,25 +790,35 @@ 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); - if (pcr->card_inserted || pcr->card_removed) { + 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", - pcr->card_inserted, pcr->card_removed); + card_inserted, card_removed); if (pcr->ops->cd_deglitch) - pcr->card_inserted = pcr->ops->cd_deglitch(pcr); + card_inserted = pcr->ops->cd_deglitch(pcr); - card_detect = pcr->card_inserted | pcr->card_removed; - pcr->card_inserted = 0; - pcr->card_removed = 0; + card_detect = card_inserted | card_removed; + + pcr->card_exist |= card_inserted; + pcr->card_exist &= ~card_removed; } - spin_unlock_irqrestore(&pcr->lock, flags); + mutex_unlock(&pcr->pcr_mutex); if ((card_detect & SD_EXIST) && pcr->slots[RTSX_SD_CARD].card_event) pcr->slots[RTSX_SD_CARD].card_event( @@ -836,10 +870,6 @@ } } - if (pcr->card_inserted || pcr->card_removed) - schedule_delayed_work(&pcr->carddet_work, - msecs_to_jiffies(200)); - if (int_reg & (NEED_COMPLETE_INT | DELINK_INT)) { if (int_reg & (TRANS_FAIL_INT | DELINK_INT)) { pcr->trans_result = TRANS_RESULT_FAIL; @@ -852,6 +882,10 @@ } } + if (pcr->card_inserted || pcr->card_removed) + schedule_delayed_work(&pcr->carddet_work, + msecs_to_jiffies(200)); + spin_unlock(&pcr->lock); return IRQ_HANDLED; } @@ -892,6 +926,9 @@ if (pcr->ops->turn_off_led) pcr->ops->turn_off_led(pcr); + if (pcr->aspm_en) + rtsx_pci_write_config_byte(pcr, LCTLR, pcr->aspm_en); + mutex_unlock(&pcr->pcr_mutex); } @@ -930,8 +967,8 @@ /* 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); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DRIVE_SEL, + 0xFF, pcr->card_drive_sel); /* Enable SSC Clock */ rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, 0xFF, SSC_8X_EN | SSC_SEL_4M); @@ -963,6 +1000,8 @@ if (err < 0) return err; + rtsx_pci_write_config_byte(pcr, LCTLR, 0); + /* Enable clk_request_n to enable clock power management */ rtsx_pci_write_config_byte(pcr, 0x81, 1); /* Enter L1 when host tx idle */ @@ -974,6 +1013,14 @@ 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; } @@ -997,6 +1044,14 @@ case 0x5289: rtl8411_init_params(pcr); break; + + case 0x5227: + rts5227_init_params(pcr); + break; + + case 0x5287: + rtl8411b_init_params(pcr); + break; } dev_dbg(&(pcr->pci->dev), "PID: 0x%04x, IC version: 0x%02x\n", @@ -1007,6 +1062,18 @@ if (!pcr->slots) return -ENOMEM; + if (pcr->ops->fetch_vendor_settings) + pcr->ops->fetch_vendor_settings(pcr); + + dev_dbg(&(pcr->pci->dev), "pcr->aspm_en = 0x%x\n", pcr->aspm_en); + dev_dbg(&(pcr->pci->dev), "pcr->sd30_drive_sel_1v8 = 0x%x\n", + pcr->sd30_drive_sel_1v8); + dev_dbg(&(pcr->pci->dev), "pcr->sd30_drive_sel_3v3 = 0x%x\n", + pcr->sd30_drive_sel_3v3); + dev_dbg(&(pcr->pci->dev), "pcr->card_drive_sel = 0x%x\n", + pcr->card_drive_sel); + dev_dbg(&(pcr->pci->dev), "pcr->flags = 0x%x\n", pcr->flags); + pcr->state = PDEV_STAT_IDLE; err = rtsx_pci_init_hw(pcr); if (err < 0) { @@ -1099,7 +1166,7 @@ ret = rtsx_pci_acquire_irq(pcr); if (ret < 0) - goto free_dma; + goto disable_msi; pci_set_master(pcidev); synchronize_irq(pcr->irq); @@ -1123,7 +1190,9 @@ disable_irq: free_irq(pcr->irq, (void *)pcr); -free_dma: +disable_msi: + if (pcr->msi_en) + pci_disable_msi(pcr->pci); dma_free_coherent(&(pcr->pci->dev), RTSX_RESV_BUF_LEN, pcr->rtsx_resv_buf, pcr->rtsx_resv_buf_addr); unmap: --- linux-ppc-3.8.0.orig/drivers/mfd/rts5227.c +++ linux-ppc-3.8.0/drivers/mfd/rts5227.c @@ -0,0 +1,285 @@ +/* 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 void rts5227_fill_driving(struct rtsx_pcr *pcr, u8 voltage) +{ + u8 driving_3v3[4][3] = { + {0x13, 0x13, 0x13}, + {0x96, 0x96, 0x96}, + {0x7F, 0x7F, 0x7F}, + {0x96, 0x96, 0x96}, + }; + u8 driving_1v8[4][3] = { + {0x99, 0x99, 0x99}, + {0xAA, 0xAA, 0xAA}, + {0xFE, 0xFE, 0xFE}, + {0xB3, 0xB3, 0xB3}, + }; + u8 (*driving)[3], drive_sel; + + if (voltage == OUTPUT_3V3) { + driving = driving_3v3; + drive_sel = pcr->sd30_drive_sel_3v3; + } else { + driving = driving_1v8; + drive_sel = pcr->sd30_drive_sel_1v8; + } + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_CLK_DRIVE_SEL, + 0xFF, driving[drive_sel][0]); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_CMD_DRIVE_SEL, + 0xFF, driving[drive_sel][1]); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DAT_DRIVE_SEL, + 0xFF, driving[drive_sel][2]); +} + +static void rts5227_fetch_vendor_settings(struct rtsx_pcr *pcr) +{ + u32 reg; + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg); + + if (!rtsx_vendor_setting_valid(reg)) + return; + + pcr->aspm_en = rtsx_reg_to_aspm(reg); + pcr->sd30_drive_sel_1v8 = rtsx_reg_to_sd30_drive_sel_1v8(reg); + pcr->card_drive_sel &= 0x3F; + pcr->card_drive_sel |= rtsx_reg_to_card_drive_sel(reg); + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG2, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG2, reg); + pcr->sd30_drive_sel_3v3 = rtsx_reg_to_sd30_drive_sel_3v3(reg); + if (rtsx_reg_check_reverse_socket(reg)) + pcr->flags |= PCR_REVERSE_SOCKET; +} + +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); + 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 driving */ + rts5227_fill_driving(pcr, OUTPUT_3V3); + /* Configure force_clock_req */ + if (pcr->flags & PCR_REVERSE_SOCKET) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + AUTOLOAD_CFG_BASE + 3, 0xB8, 0xB8); + else + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + AUTOLOAD_CFG_BASE + 3, 0xB8, 0x88); + + 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; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + } 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; + } else { + return -EINVAL; + } + + /* set pad drive */ + rtsx_pci_init_cmd(pcr); + rts5227_fill_driving(pcr, voltage); + return rtsx_pci_send_cmd(pcr, 100); +} + +static const struct pcr_ops rts5227_pcr_ops = { + .fetch_vendor_settings = rts5227_fetch_vendor_settings, + .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->flags = 0; + pcr->card_drive_sel = RTSX_CARD_DRIVE_DEFAULT; + pcr->sd30_drive_sel_1v8 = CFG_DRIVER_TYPE_B; + pcr->sd30_drive_sel_3v3 = CFG_DRIVER_TYPE_B; + pcr->aspm_en = ASPM_L1_EN; + + 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-ppc-3.8.0.orig/drivers/mfd/adp5520.c +++ linux-ppc-3.8.0/drivers/mfd/adp5520.c @@ -36,6 +36,7 @@ struct blocking_notifier_head notifier_list; int irq; unsigned long id; + uint8_t mode; }; static int __adp5520_read(struct i2c_client *client, @@ -326,7 +327,10 @@ struct i2c_client *client = to_i2c_client(dev); struct adp5520_chip *chip = dev_get_drvdata(&client->dev); - adp5520_clr_bits(chip->dev, ADP5520_MODE_STATUS, ADP5520_nSTNBY); + adp5520_read(chip->dev, ADP5520_MODE_STATUS, &chip->mode); + /* All other bits are W1C */ + chip->mode &= ADP5520_BL_EN | ADP5520_DIM_EN | ADP5520_nSTNBY; + adp5520_write(chip->dev, ADP5520_MODE_STATUS, 0); return 0; } @@ -335,7 +339,7 @@ struct i2c_client *client = to_i2c_client(dev); struct adp5520_chip *chip = dev_get_drvdata(&client->dev); - adp5520_set_bits(chip->dev, ADP5520_MODE_STATUS, ADP5520_nSTNBY); + adp5520_write(chip->dev, ADP5520_MODE_STATUS, chip->mode); return 0; } #endif --- linux-ppc-3.8.0.orig/drivers/mfd/omap-usb-host.c +++ linux-ppc-3.8.0/drivers/mfd/omap-usb-host.c @@ -299,9 +299,6 @@ if (is_ehci_tll_mode(pdata->port_mode[1])) clk_enable(omap->usbhost_p2_fck); - clk_enable(omap->utmi_p1_fck); - clk_enable(omap->utmi_p2_fck); - spin_unlock_irqrestore(&omap->lock, flags); return 0; @@ -327,9 +324,6 @@ if (is_ehci_tll_mode(pdata->port_mode[1])) clk_disable(omap->usbhost_p2_fck); - clk_disable(omap->utmi_p2_fck); - clk_disable(omap->utmi_p1_fck); - if (omap->ehci_logic_fck && !IS_ERR(omap->ehci_logic_fck)) clk_disable(omap->ehci_logic_fck); --- linux-ppc-3.8.0.orig/drivers/mfd/rtsx_pcr.h +++ linux-ppc-3.8.0/drivers/mfd/rtsx_pcr.h @@ -28,5 +28,36 @@ 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); +void rtl8411b_init_params(struct rtsx_pcr *pcr); + +static inline u8 map_sd_drive(int idx) +{ + u8 sd_drive[4] = { + 0x01, /* Type D */ + 0x02, /* Type C */ + 0x05, /* Type A */ + 0x03 /* Type B */ + }; + + return sd_drive[idx]; +} + +#define rtsx_vendor_setting_valid(reg) (!((reg) & 0x1000000)) +#define rts5209_vendor_setting1_valid(reg) (!((reg) & 0x80)) +#define rts5209_vendor_setting2_valid(reg) ((reg) & 0x80) + +#define rtsx_reg_to_aspm(reg) (((reg) >> 28) & 0x03) +#define rtsx_reg_to_sd30_drive_sel_1v8(reg) (((reg) >> 26) & 0x03) +#define rtsx_reg_to_sd30_drive_sel_3v3(reg) (((reg) >> 5) & 0x03) +#define rtsx_reg_to_card_drive_sel(reg) ((((reg) >> 25) & 0x01) << 6) +#define rtsx_reg_check_reverse_socket(reg) ((reg) & 0x4000) +#define rts5209_reg_to_aspm(reg) (((reg) >> 5) & 0x03) +#define rts5209_reg_check_ms_pmos(reg) (!((reg) & 0x08)) +#define rts5209_reg_to_sd30_drive_sel_1v8(reg) (((reg) >> 3) & 0x07) +#define rts5209_reg_to_sd30_drive_sel_3v3(reg) ((reg) & 0x07) +#define rts5209_reg_to_card_drive_sel(reg) ((reg) >> 8) +#define rtl8411_reg_to_sd30_drive_sel_3v3(reg) (((reg) >> 5) & 0x07) +#define rtl8411b_reg_to_sd30_drive_sel_3v3(reg) ((reg) & 0x03) #endif --- linux-ppc-3.8.0.orig/drivers/mfd/rts5209.c +++ linux-ppc-3.8.0/drivers/mfd/rts5209.c @@ -34,18 +34,28 @@ return val & 0x0F; } -static void rts5209_init_vendor_cfg(struct rtsx_pcr *pcr) +static void rts5209_fetch_vendor_settings(struct rtsx_pcr *pcr) { - u32 val; + u32 reg; - rtsx_pci_read_config_dword(pcr, 0x724, &val); - dev_dbg(&(pcr->pci->dev), "Cfg 0x724: 0x%x\n", val); + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg); - if (!(val & 0x80)) { - if (val & 0x08) - pcr->ms_pmos = false; - else - pcr->ms_pmos = true; + if (rts5209_vendor_setting1_valid(reg)) { + if (rts5209_reg_check_ms_pmos(reg)) + pcr->flags |= PCR_MS_PMOS; + pcr->aspm_en = rts5209_reg_to_aspm(reg); + } + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG2, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG2, reg); + + if (rts5209_vendor_setting2_valid(reg)) { + pcr->sd30_drive_sel_1v8 = + rts5209_reg_to_sd30_drive_sel_1v8(reg); + pcr->sd30_drive_sel_3v3 = + rts5209_reg_to_sd30_drive_sel_3v3(reg); + pcr->card_drive_sel = rts5209_reg_to_card_drive_sel(reg); } } @@ -57,6 +67,9 @@ 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); + /* Configure driving */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, + 0xFF, pcr->sd30_drive_sel_3v3); return rtsx_pci_send_cmd(pcr, 100); } @@ -95,7 +108,7 @@ partial_pwr_on = SD_PARTIAL_POWER_ON; pwr_on = SD_POWER_ON; - if (pcr->ms_pmos && (card == RTSX_MS_CARD)) { + if ((pcr->flags & PCR_MS_PMOS) && (card == RTSX_MS_CARD)) { pwr_mask = MS_POWER_MASK; partial_pwr_on = MS_PARTIAL_POWER_ON; pwr_on = MS_POWER_ON; @@ -131,7 +144,7 @@ pwr_mask = SD_POWER_MASK; pwr_off = SD_POWER_OFF; - if (pcr->ms_pmos && (card == RTSX_MS_CARD)) { + if ((pcr->flags & PCR_MS_PMOS) && (card == RTSX_MS_CARD)) { pwr_mask = MS_POWER_MASK; pwr_off = MS_POWER_OFF; } @@ -140,7 +153,7 @@ 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); + LDO3318_PWR_MASK, 0x06); return rtsx_pci_send_cmd(pcr, 100); } @@ -149,10 +162,18 @@ int err; if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_3v3); + 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, pcr->sd30_drive_sel_1v8); + if (err < 0) + return err; err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); if (err < 0) return err; @@ -164,6 +185,7 @@ } static const struct pcr_ops rts5209_pcr_ops = { + .fetch_vendor_settings = rts5209_fetch_vendor_settings, .extra_init_hw = rts5209_extra_init_hw, .optimize_phy = rts5209_optimize_phy, .turn_on_led = rts5209_turn_on_led, @@ -234,7 +256,11 @@ pcr->num_slots = 2; pcr->ops = &rts5209_pcr_ops; - rts5209_init_vendor_cfg(pcr); + pcr->flags = 0; + pcr->card_drive_sel = RTS5209_CARD_DRIVE_DEFAULT; + pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; + pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; + pcr->aspm_en = ASPM_L1_EN; pcr->ic_version = rts5209_get_ic_version(pcr); pcr->sd_pull_ctl_enable_tbl = rts5209_sd_pull_ctl_enable_tbl; --- linux-ppc-3.8.0.orig/drivers/mfd/rtl8411.c +++ linux-ppc-3.8.0/drivers/mfd/rtl8411.c @@ -35,10 +35,82 @@ return val & 0x0F; } +static int rtl8411b_is_qfn48(struct rtsx_pcr *pcr) +{ + u8 val = 0; + + rtsx_pci_read_register(pcr, RTL8411B_PACKAGE_MODE, &val); + + if (val & 0x2) + return 1; + else + return 0; +} + +static void rtl8411_fetch_vendor_settings(struct rtsx_pcr *pcr) +{ + u32 reg1; + u8 reg3; + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®1); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg1); + + if (!rtsx_vendor_setting_valid(reg1)) + return; + + pcr->aspm_en = rtsx_reg_to_aspm(reg1); + pcr->sd30_drive_sel_1v8 = + map_sd_drive(rtsx_reg_to_sd30_drive_sel_1v8(reg1)); + pcr->card_drive_sel &= 0x3F; + pcr->card_drive_sel |= rtsx_reg_to_card_drive_sel(reg1); + + rtsx_pci_read_config_byte(pcr, PCR_SETTING_REG3, ®3); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG3, reg3); + pcr->sd30_drive_sel_3v3 = rtl8411_reg_to_sd30_drive_sel_3v3(reg3); +} + +static void rtl8411b_fetch_vendor_settings(struct rtsx_pcr *pcr) +{ + u32 reg; + + rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, ®); + dev_dbg(&(pcr->pci->dev), "Cfg 0x%x: 0x%x\n", PCR_SETTING_REG1, reg); + + if (!rtsx_vendor_setting_valid(reg)) + return; + + pcr->aspm_en = rtsx_reg_to_aspm(reg); + pcr->sd30_drive_sel_1v8 = + map_sd_drive(rtsx_reg_to_sd30_drive_sel_1v8(reg)); + pcr->sd30_drive_sel_3v3 = + map_sd_drive(rtl8411b_reg_to_sd30_drive_sel_3v3(reg)); +} + static int rtl8411_extra_init_hw(struct rtsx_pcr *pcr) { - return rtsx_pci_write_register(pcr, CD_PAD_CTL, + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, + 0xFF, pcr->sd30_drive_sel_3v3); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CD_PAD_CTL, + CD_DISABLE_MASK | CD_AUTO_DISABLE, CD_ENABLE); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rtl8411b_extra_init_hw(struct rtsx_pcr *pcr) +{ + rtsx_pci_init_cmd(pcr); + + if (rtl8411b_is_qfn48(pcr)) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + CARD_PULL_CTL3, 0xFF, 0xF5); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, + 0xFF, pcr->sd30_drive_sel_3v3); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CD_PAD_CTL, CD_DISABLE_MASK | CD_AUTO_DISABLE, CD_ENABLE); + + return rtsx_pci_send_cmd(pcr, 100); } static int rtl8411_turn_on_led(struct rtsx_pcr *pcr) @@ -115,14 +187,24 @@ 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) + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_3v3); + if (err < 0) + return err; val = (BPP_ASIC_3V3 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_3V3; - else if (voltage == OUTPUT_1V8) + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, pcr->sd30_drive_sel_1v8); + if (err < 0) + return err; val = (BPP_ASIC_1V8 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_1V8; - else + } else { return -EINVAL; + } return rtsx_pci_write_register(pcr, LDO_CTL, mask, val); } @@ -191,6 +273,7 @@ } static const struct pcr_ops rtl8411_pcr_ops = { + .fetch_vendor_settings = rtl8411_fetch_vendor_settings, .extra_init_hw = rtl8411_extra_init_hw, .optimize_phy = NULL, .turn_on_led = rtl8411_turn_on_led, @@ -204,6 +287,21 @@ .conv_clk_and_div_n = rtl8411_conv_clk_and_div_n, }; +static const struct pcr_ops rtl8411b_pcr_ops = { + .fetch_vendor_settings = rtl8411b_fetch_vendor_settings, + .extra_init_hw = rtl8411b_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 @@ -266,15 +364,124 @@ 0, }; +static const u32 rtl8411b_qfn64_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, 0x09 | 0xD0), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn48_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x69 | 0x90), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x08 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn64_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, 0x05 | 0xD0), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn48_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x65 | 0x90), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn64_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, 0x05 | 0xD0), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x05 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn48_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x65 | 0x90), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn64_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, 0x05 | 0xD0), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05 | 0x50), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 0, +}; + +static const u32 rtl8411b_qfn48_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x65 | 0x90), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04 | 0x11), + 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->flags = 0; + pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT; + pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; + pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; + pcr->aspm_en = ASPM_L1_EN; + pcr->ic_version = rtl8411_get_ic_version(pcr); pcr->sd_pull_ctl_enable_tbl = rtl8411_sd_pull_ctl_enable_tbl; pcr->sd_pull_ctl_disable_tbl = rtl8411_sd_pull_ctl_disable_tbl; pcr->ms_pull_ctl_enable_tbl = rtl8411_ms_pull_ctl_enable_tbl; pcr->ms_pull_ctl_disable_tbl = rtl8411_ms_pull_ctl_disable_tbl; } + +void rtl8411b_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; + pcr->num_slots = 2; + pcr->ops = &rtl8411b_pcr_ops; + + pcr->flags = 0; + pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT; + pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B; + pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D; + pcr->aspm_en = ASPM_L1_EN; + + pcr->ic_version = rtl8411_get_ic_version(pcr); + + if (rtl8411b_is_qfn48(pcr)) { + pcr->sd_pull_ctl_enable_tbl = + rtl8411b_qfn48_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = + rtl8411b_qfn48_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = + rtl8411b_qfn48_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = + rtl8411b_qfn48_ms_pull_ctl_disable_tbl; + } else { + pcr->sd_pull_ctl_enable_tbl = + rtl8411b_qfn64_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = + rtl8411b_qfn64_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = + rtl8411b_qfn64_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = + rtl8411b_qfn64_ms_pull_ctl_disable_tbl; + } +} --- linux-ppc-3.8.0.orig/drivers/bluetooth/btusb.c +++ linux-ppc-3.8.0/drivers/bluetooth/btusb.c @@ -23,6 +23,8 @@ #include #include +#include +#include #include #include @@ -47,6 +49,7 @@ #define BTUSB_BROKEN_ISOC 0x20 #define BTUSB_WRONG_SCO_MTU 0x40 #define BTUSB_ATH3012 0x80 +#define BTUSB_BCM_PATCHRAM 0x800 static struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ @@ -99,13 +102,20 @@ { USB_DEVICE(0x0b05, 0x17b5) }, { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x0489, 0xe042) }, - { USB_DEVICE(0x413c, 0x8197) }, + { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x413c, 0x8143), .driver_info = BTUSB_BCM_PATCHRAM }, + + /* Broadcom BCM43142A0 */ + { USB_DEVICE(0x04ca, 0x2007), .driver_info = BTUSB_BCM_PATCHRAM }, + { USB_DEVICE(0x105b, 0xe065), .driver_info = BTUSB_BCM_PATCHRAM }, /* Foxconn - Hon Hai */ - { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, /*Broadcom devices with vendor specific id */ - { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01), .driver_info = BTUSB_BCM_PATCHRAM }, { } /* Terminating entry */ }; @@ -131,9 +141,13 @@ { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, /* Atheros 3012 with sflash firmware */ + { USB_DEVICE(0x0cf3, 0x0036), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, @@ -144,6 +158,11 @@ { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, @@ -212,6 +231,7 @@ #define BTUSB_ISOC_RUNNING 2 #define BTUSB_SUSPENDING 3 #define BTUSB_DID_ISO_RESUME 4 +#define BTUSB_FIRMWARE_DONE 7 struct btusb_data { struct hci_dev *hdev; @@ -922,6 +942,71 @@ usb_autopm_put_interface(data->intf); } +#define PATCHRAM_NAME_LEN 20 +#define PATCHRAM_BUF_SIZE (256 + 4) + +static void btusb_load_firmware(struct hci_dev *hdev) +{ + struct btusb_data *data = hci_get_drvdata(hdev); + struct usb_device *udev = data->udev; + size_t pos = 0; + int err = 0; + char filename[PATCHRAM_NAME_LEN]; + const struct firmware *fw; + u8 *buf = NULL; + u8 val = 0; + + 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; + } + + buf = kmalloc(PATCHRAM_BUF_SIZE, GFP_KERNEL); + if (!buf) + goto out; + + err= hci_send_cmd(hdev, 0x0c03, 1, &val); + if (err) + goto out; + msleep(300); + + err = hci_send_cmd(hdev, 0xfc2e, 1, &val); + if (err) + goto out; + msleep(1000); + + while (pos < fw->size) { + size_t len; + len = fw->data[pos + 2] + 3; + if (pos + len > fw->size) { + err = -EINVAL; + goto out; + } + memcpy(buf, fw->data + pos, len); + err = hci_send_cmd(hdev, le16_to_cpu(*(u16*)buf), + *(buf + sizeof(u16)), buf + sizeof(u16) + 1); + if (err) + goto out; + pos += len; + } + + err = hci_send_cmd(hdev, 0x0c03, 1, &val); +out: + if (err) + BT_INFO("fail to load firmware"); + else + BT_INFO("firmware loaded"); + if (buf) + kfree(buf); + release_firmware(fw); +} + static int btusb_probe(struct usb_interface *intf, const struct usb_device_id *id) { @@ -1024,6 +1109,9 @@ hdev->send = btusb_send_frame; hdev->notify = btusb_notify; + if (id->driver_info & BTUSB_BCM_PATCHRAM) + hdev->load_firmware = btusb_load_firmware; + /* Interface numbers are hardcoded in the specification */ data->isoc = usb_ifnum_to_if(data->udev, 1); --- linux-ppc-3.8.0.orig/drivers/bluetooth/ath3k.c +++ linux-ppc-3.8.0/drivers/bluetooth/ath3k.c @@ -73,9 +73,13 @@ { USB_DEVICE(0x03F0, 0x311D) }, /* Atheros AR3012 with sflash firmware*/ + { USB_DEVICE(0x0CF3, 0x0036) }, { USB_DEVICE(0x0CF3, 0x3004) }, + { USB_DEVICE(0x0CF3, 0x3008) }, { USB_DEVICE(0x0CF3, 0x311D) }, + { USB_DEVICE(0x0CF3, 0x817a) }, { USB_DEVICE(0x13d3, 0x3375) }, + { USB_DEVICE(0x04CA, 0x3004) }, { USB_DEVICE(0x04CA, 0x3005) }, { USB_DEVICE(0x04CA, 0x3006) }, { USB_DEVICE(0x04CA, 0x3008) }, @@ -86,6 +90,11 @@ { USB_DEVICE(0x13d3, 0x3393) }, { USB_DEVICE(0x0489, 0xe04e) }, { USB_DEVICE(0x0489, 0xe056) }, + { USB_DEVICE(0x0489, 0xe04d) }, + { USB_DEVICE(0x04c5, 0x1330) }, + { USB_DEVICE(0x13d3, 0x3402) }, + { USB_DEVICE(0x0cf3, 0x3121) }, + { USB_DEVICE(0x0cf3, 0xe003) }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xE02C) }, @@ -105,9 +114,13 @@ static struct usb_device_id ath3k_blist_tbl[] = { /* Atheros AR3012 with sflash firmware*/ + { USB_DEVICE(0x0CF3, 0x0036), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0CF3, 0x817a), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, @@ -118,6 +131,11 @@ { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, --- linux-ppc-3.8.0.orig/drivers/xen/fallback.c +++ linux-ppc-3.8.0/drivers/xen/fallback.c @@ -44,7 +44,7 @@ } EXPORT_SYMBOL_GPL(xen_event_channel_op_compat); -int HYPERVISOR_physdev_op_compat(int cmd, void *arg) +int xen_physdev_op_compat(int cmd, void *arg) { struct physdev_op op; int rc; @@ -78,3 +78,4 @@ return rc; } +EXPORT_SYMBOL_GPL(xen_physdev_op_compat); --- linux-ppc-3.8.0.orig/drivers/xen/evtchn.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/xen/events.c +++ linux-ppc-3.8.0/drivers/xen/events.c @@ -333,7 +333,7 @@ for_each_possible_cpu(i) memset(per_cpu(cpu_evtchn_mask, i), - (i == 0) ? ~0 : 0, sizeof(*per_cpu(cpu_evtchn_mask, i))); + (i == 0) ? ~0 : 0, NR_EVENT_CHANNELS/8); } static inline void clear_evtchn(int port) @@ -388,11 +388,23 @@ if (unlikely((cpu != cpu_from_evtchn(port)))) do_hypercall = 1; - else + else { + /* + * Need to clear the mask before checking pending to + * avoid a race with an event becoming pending. + * + * EVTCHNOP_unmask will only trigger an upcall if the + * mask bit was set, so if a hypercall is needed + * remask the event. + */ + sync_clear_bit(port, &s->evtchn_mask[0]); evtchn_pending = sync_test_bit(port, &s->evtchn_pending[0]); - if (unlikely(evtchn_pending && xen_hvm_domain())) - do_hypercall = 1; + if (unlikely(evtchn_pending && xen_hvm_domain())) { + sync_set_bit(port, &s->evtchn_mask[0]); + do_hypercall = 1; + } + } /* Slow path (hypercall) if this is a non-local port or if this is * an hvm domain and an event is pending (hvm domains don't have @@ -403,8 +415,6 @@ } else { struct vcpu_info *vcpu_info = __this_cpu_read(xen_vcpu); - sync_clear_bit(port, &s->evtchn_mask[0]); - /* * The following is basically the equivalent of * 'hw_resend_irq'. Just like a real IO-APIC we 'lose @@ -1288,7 +1298,7 @@ { int start_word_idx, start_bit_idx; int word_idx, bit_idx; - int i; + int i, irq; int cpu = get_cpu(); struct shared_info *s = HYPERVISOR_shared_info; struct vcpu_info *vcpu_info = __this_cpu_read(xen_vcpu); @@ -1296,6 +1306,8 @@ do { unsigned long pending_words; + unsigned long pending_bits; + struct irq_desc *desc; vcpu_info->evtchn_upcall_pending = 0; @@ -1306,6 +1318,17 @@ /* Clear master flag /before/ clearing selector flag. */ wmb(); #endif + if ((irq = per_cpu(virq_to_irq, cpu)[VIRQ_TIMER]) != -1) { + int evtchn = evtchn_from_irq(irq); + word_idx = evtchn / BITS_PER_LONG; + pending_bits = evtchn % BITS_PER_LONG; + if (active_evtchns(cpu, s, word_idx) & (1ULL << pending_bits)) { + desc = irq_to_desc(irq); + if (desc) + generic_handle_irq_desc(irq, desc); + } + } + pending_words = xchg(&vcpu_info->evtchn_pending_sel, 0); start_word_idx = __this_cpu_read(current_word_idx); @@ -1314,7 +1337,6 @@ word_idx = start_word_idx; for (i = 0; pending_words != 0; i++) { - unsigned long pending_bits; unsigned long words; words = MASK_LSBS(pending_words, word_idx); @@ -1343,8 +1365,7 @@ do { unsigned long bits; - int port, irq; - struct irq_desc *desc; + int port; bits = MASK_LSBS(pending_bits, bit_idx); @@ -1443,8 +1464,10 @@ /* Rebind an evtchn so that it gets delivered to a specific cpu */ static int rebind_irq_to_cpu(unsigned irq, unsigned tcpu) { + struct shared_info *s = HYPERVISOR_shared_info; struct evtchn_bind_vcpu bind_vcpu; int evtchn = evtchn_from_irq(irq); + int masked; if (!VALID_EVTCHN(evtchn)) return -1; @@ -1461,6 +1484,12 @@ bind_vcpu.vcpu = tcpu; /* + * Mask the event while changing the VCPU binding to prevent + * it being delivered on an unexpected VCPU. + */ + masked = sync_test_and_set_bit(evtchn, s->evtchn_mask); + + /* * If this fails, it usually just indicates that we're dealing with a * virq or IPI channel, which don't actually need to be rebound. Ignore * it, but don't do the xenlinux-level rebind in that case. @@ -1468,6 +1497,9 @@ if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0) bind_evtchn_to_cpu(evtchn, tcpu); + if (!masked) + unmask_evtchn(evtchn); + return 0; } --- linux-ppc-3.8.0.orig/drivers/xen/xen-pciback/pci_stub.c +++ linux-ppc-3.8.0/drivers/xen/xen-pciback/pci_stub.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "pciback.h" #include "conf_space.h" #include "conf_space_quirks.h" @@ -85,37 +86,52 @@ static void pcistub_device_release(struct kref *kref) { struct pcistub_device *psdev; + struct pci_dev *dev; struct xen_pcibk_dev_data *dev_data; psdev = container_of(kref, struct pcistub_device, kref); - dev_data = pci_get_drvdata(psdev->dev); + dev = psdev->dev; + dev_data = pci_get_drvdata(dev); - dev_dbg(&psdev->dev->dev, "pcistub_device_release\n"); + dev_dbg(&dev->dev, "pcistub_device_release\n"); - xen_unregister_device_domain_owner(psdev->dev); + xen_unregister_device_domain_owner(dev); /* Call the reset function which does not take lock as this * is called from "unbind" which takes a device_lock mutex. */ - __pci_reset_function_locked(psdev->dev); - if (pci_load_and_free_saved_state(psdev->dev, - &dev_data->pci_saved_state)) { - dev_dbg(&psdev->dev->dev, "Could not reload PCI state\n"); - } else - pci_restore_state(psdev->dev); + __pci_reset_function_locked(dev); + if (pci_load_and_free_saved_state(dev, &dev_data->pci_saved_state)) + dev_dbg(&dev->dev, "Could not reload PCI state\n"); + else + pci_restore_state(dev); + + if (pci_find_capability(dev, PCI_CAP_ID_MSIX)) { + struct physdev_pci_device ppdev = { + .seg = pci_domain_nr(dev->bus), + .bus = dev->bus->number, + .devfn = dev->devfn + }; + int err = HYPERVISOR_physdev_op(PHYSDEVOP_release_msix, + &ppdev); + + if (err) + dev_warn(&dev->dev, "MSI-X release failed (%d)\n", + err); + } /* Disable the device */ - xen_pcibk_reset_device(psdev->dev); + xen_pcibk_reset_device(dev); kfree(dev_data); - pci_set_drvdata(psdev->dev, NULL); + pci_set_drvdata(dev, NULL); /* Clean-up the device */ - xen_pcibk_config_free_dyn_fields(psdev->dev); - xen_pcibk_config_free_dev(psdev->dev); + xen_pcibk_config_free_dyn_fields(dev); + xen_pcibk_config_free_dev(dev); - psdev->dev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED; - pci_dev_put(psdev->dev); + dev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED; + pci_dev_put(dev); kfree(psdev); } @@ -355,6 +371,19 @@ if (err) goto config_release; + if (pci_find_capability(dev, PCI_CAP_ID_MSIX)) { + struct physdev_pci_device ppdev = { + .seg = pci_domain_nr(dev->bus), + .bus = dev->bus->number, + .devfn = dev->devfn + }; + + err = HYPERVISOR_physdev_op(PHYSDEVOP_prepare_msix, &ppdev); + if (err) + dev_err(&dev->dev, "MSI-X preparation failed (%d)\n", + err); + } + /* We need the device active to save the state. */ dev_dbg(&dev->dev, "save state of device\n"); pci_save_state(dev); --- linux-ppc-3.8.0.orig/drivers/xen/xen-pciback/pciback_ops.c +++ linux-ppc-3.8.0/drivers/xen/xen-pciback/pciback_ops.c @@ -113,7 +113,8 @@ if (dev->msi_enabled) pci_disable_msi(dev); #endif - pci_disable_device(dev); + if (pci_is_enabled(dev)) + pci_disable_device(dev); pci_write_config_word(dev, PCI_COMMAND, 0); --- linux-ppc-3.8.0.orig/drivers/xen/xenbus/xenbus_client.c +++ linux-ppc-3.8.0/drivers/xen/xenbus/xenbus_client.c @@ -30,6 +30,7 @@ * IN THE SOFTWARE. */ +#include #include #include #include --- linux-ppc-3.8.0.orig/drivers/remoteproc/ste_modem_rproc.c +++ linux-ppc-3.8.0/drivers/remoteproc/ste_modem_rproc.c @@ -240,6 +240,8 @@ /* Unregister as remoteproc device */ rproc_del(sproc->rproc); + dma_free_coherent(sproc->rproc->dev.parent, SPROC_FW_SIZE, + sproc->fw_addr, sproc->fw_dma_addr); rproc_put(sproc->rproc); mdev->drv_data = NULL; @@ -297,10 +299,13 @@ /* Register as a remoteproc device */ err = rproc_add(rproc); if (err) - goto free_rproc; + goto free_mem; return 0; +free_mem: + dma_free_coherent(rproc->dev.parent, SPROC_FW_SIZE, + sproc->fw_addr, sproc->fw_dma_addr); free_rproc: /* Reset device data upon error */ mdev->drv_data = NULL; --- linux-ppc-3.8.0.orig/drivers/remoteproc/remoteproc_core.c +++ linux-ppc-3.8.0/drivers/remoteproc/remoteproc_core.c @@ -370,10 +370,12 @@ /* it is now safe to add the virtio device */ ret = rproc_add_virtio_dev(rvdev, rsc->id); if (ret) - goto free_rvdev; + goto remove_rvdev; return 0; +remove_rvdev: + list_del(&rvdev->node); free_rvdev: kfree(rvdev); return ret; --- linux-ppc-3.8.0.orig/drivers/remoteproc/Kconfig +++ linux-ppc-3.8.0/drivers/remoteproc/Kconfig @@ -5,7 +5,7 @@ tristate depends on EXPERIMENTAL depends on HAS_DMA - select FW_CONFIG + select FW_LOADER select VIRTIO config OMAP_REMOTEPROC --- linux-ppc-3.8.0.orig/drivers/ata/Makefile +++ linux-ppc-3.8.0/drivers/ata/Makefile @@ -107,3 +107,4 @@ libata-$(CONFIG_ATA_SFF) += libata-sff.o libata-$(CONFIG_SATA_PMP) += libata-pmp.o libata-$(CONFIG_ATA_ACPI) += libata-acpi.o +libata-$(CONFIG_SATA_ZPODD) += libata-zpodd.o --- linux-ppc-3.8.0.orig/drivers/ata/libahci.c +++ linux-ppc-3.8.0/drivers/ata/libahci.c @@ -1560,8 +1560,7 @@ u32 fbs = readl(port_mmio + PORT_FBS); int pmp = fbs >> PORT_FBS_DWE_OFFSET; - if ((fbs & PORT_FBS_SDE) && (pmp < ap->nr_pmp_links) && - ata_link_online(&ap->pmp_link[pmp])) { + if ((fbs & PORT_FBS_SDE) && (pmp < ap->nr_pmp_links)) { link = &ap->pmp_link[pmp]; fbs_need_dec = true; } --- linux-ppc-3.8.0.orig/drivers/ata/sata_highbank.c +++ linux-ppc-3.8.0/drivers/ata/sata_highbank.c @@ -196,10 +196,26 @@ return 0; } +/* + * The Calxeda SATA phy intermittently fails to bring up a link with Gen3 + * Retrying the phy hard reset can work around the issue, but the drive + * may fail again. In less than 150 out of 15000 test runs, it took more + * than 10 tries for the link to be established (but never more than 35). + * Triple the maximum observed retry count to provide plenty of margin for + * rare events and to guarantee that the link is established. + * + * Also, the default 2 second time-out on a failed drive is too long in + * this situation. The uboot implementation of the same driver function + * uses a much shorter time-out period and never experiences a time out + * issue. Reducing the time-out to 500ms improves the responsiveness. + * The other timing constants were kept the same as the stock AHCI driver. + * This change was also tested 15000 times on 24 drives and none of them + * experienced a time out. + */ 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); + static const unsigned long timing[] = { 5, 100, 500}; struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; @@ -207,7 +223,7 @@ bool online; u32 sstatus; int rc; - int retry = 10; + int retry = 100; ahci_stop_engine(ap); @@ -251,7 +267,7 @@ }; static struct scsi_host_template ahci_highbank_platform_sht = { - AHCI_SHT("highbank-ahci"), + AHCI_SHT("sata_highbank"), }; static const struct of_device_id ahci_of_match[] = { --- linux-ppc-3.8.0.orig/drivers/ata/libata-eh.c +++ linux-ppc-3.8.0/drivers/ata/libata-eh.c @@ -1591,7 +1591,7 @@ * RETURNS: * 0 on success, AC_ERR_* mask on failure. */ -static unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key) +unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key) { u8 cdb[ATAPI_CDB_LEN] = { TEST_UNIT_READY, 0, 0, 0, 0, 0 }; struct ata_taskfile tf; @@ -1624,7 +1624,7 @@ * RETURNS: * 0 on success, AC_ERR_* mask on failure */ -static unsigned int atapi_eh_request_sense(struct ata_device *dev, +unsigned int atapi_eh_request_sense(struct ata_device *dev, u8 *sense_buf, u8 dfl_sense_key) { u8 cdb[ATAPI_CDB_LEN] = @@ -3857,6 +3857,8 @@ rc = atapi_eh_clear_ua(dev); if (rc) goto rest_fail; + if (zpodd_dev_enabled(dev)) + zpodd_post_poweron(dev); } } @@ -4022,11 +4024,12 @@ { unsigned long flags; int rc = 0; + struct ata_device *dev; /* are we suspending? */ spin_lock_irqsave(ap->lock, flags); if (!(ap->pflags & ATA_PFLAG_PM_PENDING) || - ap->pm_mesg.event == PM_EVENT_ON) { + ap->pm_mesg.event & PM_EVENT_RESUME) { spin_unlock_irqrestore(ap->lock, flags); return; } @@ -4034,6 +4037,18 @@ WARN_ON(ap->pflags & ATA_PFLAG_SUSPENDED); + /* + * If we have a ZPODD attached, check its zero + * power ready status before the port is frozen. + * Only needed for runtime suspend. + */ + if (PMSG_IS_AUTO(ap->pm_mesg)) { + ata_for_each_dev(dev, &ap->link, ENABLED) { + if (zpodd_dev_enabled(dev)) + zpodd_on_suspend(dev); + } + } + /* tell ACPI we're suspending */ rc = ata_acpi_on_suspend(ap); if (rc) @@ -4045,7 +4060,7 @@ if (ap->ops->port_suspend) rc = ap->ops->port_suspend(ap, ap->pm_mesg); - ata_acpi_set_state(ap, PMSG_SUSPEND); + ata_acpi_set_state(ap, ap->pm_mesg); out: /* report result */ spin_lock_irqsave(ap->lock, flags); @@ -4085,7 +4100,7 @@ /* are we resuming? */ spin_lock_irqsave(ap->lock, flags); if (!(ap->pflags & ATA_PFLAG_PM_PENDING) || - ap->pm_mesg.event != PM_EVENT_ON) { + !(ap->pm_mesg.event & PM_EVENT_RESUME)) { spin_unlock_irqrestore(ap->lock, flags); return; } @@ -4104,7 +4119,7 @@ ata_for_each_dev(dev, link, ALL) ata_ering_clear(&dev->ering); - ata_acpi_set_state(ap, PMSG_ON); + ata_acpi_set_state(ap, ap->pm_mesg); if (ap->ops->port_resume) rc = ap->ops->port_resume(ap); --- linux-ppc-3.8.0.orig/drivers/ata/libata-zpodd.c +++ linux-ppc-3.8.0/drivers/ata/libata-zpodd.c @@ -0,0 +1,299 @@ +#include +#include +#include +#include +#include + +#include "libata.h" + +static int zpodd_poweroff_delay = 30; /* 30 seconds for power off delay */ +module_param(zpodd_poweroff_delay, int, 0644); +MODULE_PARM_DESC(zpodd_poweroff_delay, "Poweroff delay for ZPODD in seconds"); + +enum odd_mech_type { + ODD_MECH_TYPE_SLOT, + ODD_MECH_TYPE_DRAWER, + ODD_MECH_TYPE_UNSUPPORTED, +}; + +struct zpodd { + enum odd_mech_type mech_type; /* init during probe, RO afterwards */ + struct ata_device *dev; + + /* The following fields are synchronized by PM core. */ + bool from_notify; /* resumed as a result of + * acpi wake notification */ + bool zp_ready; /* ZP ready state */ + unsigned long last_ready; /* last ZP ready timestamp */ + bool zp_sampled; /* ZP ready state sampled */ + bool powered_off; /* ODD is powered off + * during suspend */ +}; + +static int eject_tray(struct ata_device *dev) +{ + struct ata_taskfile tf = {}; + const char cdb[] = { GPCMD_START_STOP_UNIT, + 0, 0, 0, + 0x02, /* LoEj */ + 0, 0, 0, 0, 0, 0, 0, + }; + + tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; + tf.command = ATA_CMD_PACKET; + tf.protocol = ATAPI_PROT_NODATA; + + return ata_exec_internal(dev, &tf, cdb, DMA_NONE, NULL, 0, 0); +} + +/* Per the spec, only slot type and drawer type ODD can be supported */ +static enum odd_mech_type zpodd_get_mech_type(struct ata_device *dev) +{ + char buf[16]; + unsigned int ret; + struct rm_feature_desc *desc = (void *)(buf + 8); + struct ata_taskfile tf = {}; + + char cdb[] = { GPCMD_GET_CONFIGURATION, + 2, /* only 1 feature descriptor requested */ + 0, 3, /* 3, removable medium feature */ + 0, 0, 0,/* reserved */ + 0, sizeof(buf), + 0, 0, 0, + }; + + tf.flags = ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; + tf.command = ATA_CMD_PACKET; + tf.protocol = ATAPI_PROT_PIO; + tf.lbam = sizeof(buf); + + ret = ata_exec_internal(dev, &tf, cdb, DMA_FROM_DEVICE, + buf, sizeof(buf), 0); + if (ret) + return ODD_MECH_TYPE_UNSUPPORTED; + + if (be16_to_cpu(desc->feature_code) != 3) + return ODD_MECH_TYPE_UNSUPPORTED; + + if (desc->mech_type == 0 && desc->load == 0 && desc->eject == 1) + return ODD_MECH_TYPE_SLOT; + else if (desc->mech_type == 1 && desc->load == 0 && desc->eject == 1) + return ODD_MECH_TYPE_DRAWER; + else + return ODD_MECH_TYPE_UNSUPPORTED; +} + +static bool odd_can_poweroff(struct ata_device *ata_dev) +{ + acpi_handle handle; + acpi_status status; + struct acpi_device *acpi_dev; + + handle = ata_dev_acpi_handle(ata_dev); + if (!handle) + return false; + + status = acpi_bus_get_device(handle, &acpi_dev); + if (ACPI_FAILURE(status)) + return false; + + return acpi_device_can_poweroff(acpi_dev); +} + +/* Test if ODD is zero power ready by sense code */ +static bool zpready(struct ata_device *dev) +{ + u8 sense_key, *sense_buf; + unsigned int ret, asc, ascq, add_len; + struct zpodd *zpodd = dev->zpodd; + + ret = atapi_eh_tur(dev, &sense_key); + + if (!ret || sense_key != NOT_READY) + return false; + + sense_buf = dev->link->ap->sector_buf; + ret = atapi_eh_request_sense(dev, sense_buf, sense_key); + if (ret) + return false; + + /* sense valid */ + if ((sense_buf[0] & 0x7f) != 0x70) + return false; + + add_len = sense_buf[7]; + /* has asc and ascq */ + if (add_len < 6) + return false; + + asc = sense_buf[12]; + ascq = sense_buf[13]; + + if (zpodd->mech_type == ODD_MECH_TYPE_SLOT) + /* no media inside */ + return asc == 0x3a; + else + /* no media inside and door closed */ + return asc == 0x3a && ascq == 0x01; +} + +/* + * Update the zpodd->zp_ready field. This field will only be set + * if the ODD has stayed in ZP ready state for zpodd_poweroff_delay + * time, and will be used to decide if power off is allowed. If it + * is set, it will be cleared during resume from powered off state. + */ +void zpodd_on_suspend(struct ata_device *dev) +{ + struct zpodd *zpodd = dev->zpodd; + unsigned long expires; + + if (!zpready(dev)) { + zpodd->zp_sampled = false; + zpodd->zp_ready = false; + return; + } + + if (!zpodd->zp_sampled) { + zpodd->zp_sampled = true; + zpodd->last_ready = jiffies; + return; + } + + expires = zpodd->last_ready + + msecs_to_jiffies(zpodd_poweroff_delay * 1000); + if (time_before(jiffies, expires)) + return; + + zpodd->zp_ready = true; +} + +bool zpodd_zpready(struct ata_device *dev) +{ + struct zpodd *zpodd = dev->zpodd; + return zpodd->zp_ready; +} + +/* + * Enable runtime wake capability through ACPI and set the powered_off flag, + * this flag will be used during resume to decide what operations are needed + * to take. + * + * Also, media poll needs to be silenced, so that it doesn't bring the ODD + * back to full power state every few seconds. + */ +void zpodd_enable_run_wake(struct ata_device *dev) +{ + struct zpodd *zpodd = dev->zpodd; + + sdev_disable_disk_events(dev->sdev); + + zpodd->powered_off = true; + device_set_run_wake(&dev->sdev->sdev_gendev, true); + acpi_pm_device_run_wake(&dev->sdev->sdev_gendev, true); +} + +/* Disable runtime wake capability if it is enabled */ +void zpodd_disable_run_wake(struct ata_device *dev) +{ + struct zpodd *zpodd = dev->zpodd; + + if (zpodd->powered_off) { + acpi_pm_device_run_wake(&dev->sdev->sdev_gendev, false); + device_set_run_wake(&dev->sdev->sdev_gendev, false); + } +} + +/* + * Post power on processing after the ODD has been recovered. If the + * ODD wasn't powered off during suspend, it doesn't do anything. + * + * For drawer type ODD, if it is powered on due to user pressed the + * eject button, the tray needs to be ejected. This can only be done + * after the ODD has been recovered, i.e. link is initialized and + * device is able to process NON_DATA PIO command, as eject needs to + * send command for the ODD to process. + * + * The from_notify flag set in wake notification handler function + * zpodd_wake_dev represents if power on is due to user's action. + * + * For both types of ODD, several fields need to be reset. + */ +void zpodd_post_poweron(struct ata_device *dev) +{ + struct zpodd *zpodd = dev->zpodd; + + if (!zpodd->powered_off) + return; + + zpodd->powered_off = false; + + if (zpodd->from_notify) { + zpodd->from_notify = false; + if (zpodd->mech_type == ODD_MECH_TYPE_DRAWER) + eject_tray(dev); + } + + zpodd->zp_sampled = false; + zpodd->zp_ready = false; + + sdev_enable_disk_events(dev->sdev); +} + +static void zpodd_wake_dev(acpi_handle handle, u32 event, void *context) +{ + struct ata_device *ata_dev = context; + struct zpodd *zpodd = ata_dev->zpodd; + struct device *dev = &ata_dev->sdev->sdev_gendev; + + if (event == ACPI_NOTIFY_DEVICE_WAKE && pm_runtime_suspended(dev)) { + zpodd->from_notify = true; + pm_runtime_resume(dev); + } +} + +static void ata_acpi_add_pm_notifier(struct ata_device *dev) +{ + acpi_handle handle = ata_dev_acpi_handle(dev); + acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY, + zpodd_wake_dev, dev); +} + +static void ata_acpi_remove_pm_notifier(struct ata_device *dev) +{ + acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->sdev->sdev_gendev); + acpi_remove_notify_handler(handle, ACPI_SYSTEM_NOTIFY, zpodd_wake_dev); +} + +void zpodd_init(struct ata_device *dev) +{ + enum odd_mech_type mech_type; + struct zpodd *zpodd; + + if (dev->zpodd) + return; + + if (!odd_can_poweroff(dev)) + return; + + mech_type = zpodd_get_mech_type(dev); + if (mech_type == ODD_MECH_TYPE_UNSUPPORTED) + return; + + zpodd = kzalloc(sizeof(struct zpodd), GFP_KERNEL); + if (!zpodd) + return; + + zpodd->mech_type = mech_type; + + ata_acpi_add_pm_notifier(dev); + zpodd->dev = dev; + dev->zpodd = zpodd; +} + +void zpodd_exit(struct ata_device *dev) +{ + ata_acpi_remove_pm_notifier(dev); + kfree(dev->zpodd); + dev->zpodd = NULL; +} --- linux-ppc-3.8.0.orig/drivers/ata/libata-scsi.c +++ linux-ppc-3.8.0/drivers/ata/libata-scsi.c @@ -532,8 +532,8 @@ struct scsi_sense_hdr sshdr; scsi_normalize_sense(sensebuf, SCSI_SENSE_BUFFERSIZE, &sshdr); - if (sshdr.sense_key == 0 && - sshdr.asc == 0 && sshdr.ascq == 0) + if (sshdr.sense_key == RECOVERED_ERROR && + sshdr.asc == 0 && sshdr.ascq == 0x1d) cmd_result &= ~SAM_STAT_CHECK_CONDITION; } @@ -618,8 +618,8 @@ struct scsi_sense_hdr sshdr; scsi_normalize_sense(sensebuf, SCSI_SENSE_BUFFERSIZE, &sshdr); - if (sshdr.sense_key == 0 && - sshdr.asc == 0 && sshdr.ascq == 0) + if (sshdr.sense_key == RECOVERED_ERROR && + sshdr.asc == 0 && sshdr.ascq == 0x1d) cmd_result &= ~SAM_STAT_CHECK_CONDITION; } @@ -933,7 +933,11 @@ * block specified for the ATA pass through commands. Regardless * of whether the command errored or not, return a sense * block. Copy all controller registers into the sense - * block. Clear sense key, ASC & ASCQ if there is no error. + * block. If there was no error, we get the request from an ATA + * passthrough command, so we use the following sense data: + * sk = RECOVERED ERROR + * asc,ascq = ATA PASS-THROUGH INFORMATION AVAILABLE + * * * LOCKING: * None. @@ -959,6 +963,10 @@ ata_to_sense_error(qc->ap->print_id, tf->command, tf->feature, &sb[1], &sb[2], &sb[3], verbose); sb[1] &= 0x0f; + } else { + sb[1] = RECOVERED_ERROR; + sb[2] = 0; + sb[3] = 0x1D; } /* @@ -1733,10 +1741,12 @@ /* For ATA pass thru (SAT) commands, generate a sense block if * user mandated it or if there's an error. Note that if we - * generate because the user forced us to, a check condition - * is generated and the ATA register values are returned + * generate because the user forced us to [CK_COND =1], a check + * condition is generated and the ATA register values are returned * whether the command completed successfully or not. If there - * was no error, SK, ASC and ASCQ will all be zero. + * was no error, we use the following sense data: + * sk = RECOVERED ERROR + * asc,ascq = ATA PASS-THROUGH INFORMATION AVAILABLE */ if (((cdb[0] == ATA_16) || (cdb[0] == ATA_12)) && ((cdb[2] & 0x20) || need_sense)) { @@ -3755,6 +3765,8 @@ mutex_lock(&ap->scsi_host->scan_mutex); spin_lock_irqsave(ap->lock, flags); + if (zpodd_dev_enabled(dev)) + zpodd_exit(dev); ata_acpi_unbind(dev); /* clearing dev->sdev is protected by host lock */ --- linux-ppc-3.8.0.orig/drivers/ata/ata_piix.c +++ linux-ppc-3.8.0/drivers/ata/ata_piix.c @@ -150,6 +150,8 @@ tolapai_sata, piix_pata_vmw, /* PIIX4 for VMware, spurious DMA_ERR */ ich8_sata_snb, + ich8_2port_sata_snb, + ich8_2port_sata_byt, }; struct piix_map_db { @@ -304,7 +306,7 @@ /* SATA Controller IDE (Lynx Point) */ { 0x8086, 0x8c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, /* SATA Controller IDE (Lynx Point) */ - { 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + { 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_snb }, /* SATA Controller IDE (Lynx Point) */ { 0x8086, 0x8c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, /* SATA Controller IDE (Lynx Point-LP) */ @@ -317,6 +319,28 @@ { 0x8086, 0x9c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, /* SATA Controller IDE (DH89xxCC) */ { 0x8086, 0x2326, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (Avoton) */ + { 0x8086, 0x1f20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (Avoton) */ + { 0x8086, 0x1f21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (Avoton) */ + { 0x8086, 0x1f30, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (Avoton) */ + { 0x8086, 0x1f31, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (Wellsburg) */ + { 0x8086, 0x8d00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (Wellsburg) */ + { 0x8086, 0x8d08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_snb }, + /* SATA Controller IDE (Wellsburg) */ + { 0x8086, 0x8d60, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, + /* SATA Controller IDE (Wellsburg) */ + { 0x8086, 0x8d68, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + /* SATA Controller IDE (BayTrail) */ + { 0x8086, 0x0F20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_byt }, + { 0x8086, 0x0F21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_byt }, + /* SATA Controller IDE (Coleto Creek) */ + { 0x8086, 0x23a6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, + { } /* terminate list */ }; @@ -422,6 +446,8 @@ [ich8m_apple_sata] = &ich8m_apple_map_db, [tolapai_sata] = &tolapai_map_db, [ich8_sata_snb] = &ich8_map_db, + [ich8_2port_sata_snb] = &ich8_2port_map_db, + [ich8_2port_sata_byt] = &ich8_2port_map_db, }; static struct pci_bits piix_enable_bits[] = { @@ -1225,6 +1251,26 @@ .udma_mask = ATA_UDMA6, .port_ops = &piix_sata_ops, }, + + [ich8_2port_sata_snb] = + { + .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR + | PIIX_FLAG_PIO16, + .pio_mask = ATA_PIO4, + .mwdma_mask = ATA_MWDMA2, + .udma_mask = ATA_UDMA6, + .port_ops = &piix_sata_ops, + }, + + [ich8_2port_sata_byt] = + { + .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR | PIIX_FLAG_PIO16, + .pio_mask = ATA_PIO4, + .mwdma_mask = ATA_MWDMA2, + .udma_mask = ATA_UDMA6, + .port_ops = &piix_sata_ops, + }, + }; #define AHCI_PCI_BAR 5 --- linux-ppc-3.8.0.orig/drivers/ata/ahci.c +++ linux-ppc-3.8.0/drivers/ata/ahci.c @@ -265,6 +265,31 @@ { PCI_VDEVICE(INTEL, 0x9c07), board_ahci }, /* Lynx Point-LP RAID */ { PCI_VDEVICE(INTEL, 0x9c0e), board_ahci }, /* Lynx Point-LP RAID */ { PCI_VDEVICE(INTEL, 0x9c0f), board_ahci }, /* Lynx Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x1f22), board_ahci }, /* Avoton AHCI */ + { PCI_VDEVICE(INTEL, 0x1f23), board_ahci }, /* Avoton AHCI */ + { PCI_VDEVICE(INTEL, 0x1f24), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f25), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f26), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f27), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f2e), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f2f), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f32), board_ahci }, /* Avoton AHCI */ + { PCI_VDEVICE(INTEL, 0x1f33), board_ahci }, /* Avoton AHCI */ + { PCI_VDEVICE(INTEL, 0x1f34), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f35), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f36), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f37), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f3e), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x1f3f), board_ahci }, /* Avoton RAID */ + { PCI_VDEVICE(INTEL, 0x8d02), board_ahci }, /* Wellsburg AHCI */ + { PCI_VDEVICE(INTEL, 0x8d04), board_ahci }, /* Wellsburg RAID */ + { PCI_VDEVICE(INTEL, 0x8d06), board_ahci }, /* Wellsburg RAID */ + { PCI_VDEVICE(INTEL, 0x8d0e), board_ahci }, /* Wellsburg RAID */ + { PCI_VDEVICE(INTEL, 0x8d62), board_ahci }, /* Wellsburg AHCI */ + { PCI_VDEVICE(INTEL, 0x8d64), board_ahci }, /* Wellsburg RAID */ + { PCI_VDEVICE(INTEL, 0x8d66), board_ahci }, /* Wellsburg RAID */ + { PCI_VDEVICE(INTEL, 0x8d6e), board_ahci }, /* Wellsburg RAID */ + { PCI_VDEVICE(INTEL, 0x23a3), board_ahci }, /* Coleto Creek AHCI */ /* JMicron 360/1/3/5/6, match class to avoid IDE function */ { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, @@ -284,6 +309,7 @@ /* AMD */ { PCI_VDEVICE(AMD, 0x7800), board_ahci }, /* AMD Hudson-2 */ + { PCI_VDEVICE(AMD, 0x7900), board_ahci }, /* AMD CZ */ /* AMD is using RAID class only for ahci controllers */ { PCI_VENDOR_ID_AMD, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID << 8, 0xffffff, board_ahci }, --- linux-ppc-3.8.0.orig/drivers/ata/ahci_platform.c +++ linux-ppc-3.8.0/drivers/ata/ahci_platform.c @@ -23,6 +23,9 @@ #include #include #include +#include +#include +#include #include "ahci.h" static void ahci_host_stop(struct ata_host *host); @@ -30,6 +33,7 @@ enum ahci_type { AHCI, /* standard platform ahci */ IMX53_AHCI, /* ahci on i.mx53 */ + IMX6Q_AHCI, /* ahci on i.mx6q */ STRICT_AHCI, /* delayed DMA engine start */ }; @@ -41,6 +45,10 @@ .name = "imx53-ahci", .driver_data = IMX53_AHCI, }, { + }, { + .name = "imx6q-ahci", + .driver_data = IMX53_AHCI, + }, { .name = "strict-ahci", .driver_data = STRICT_AHCI, }, { @@ -86,12 +94,23 @@ AHCI_SHT("ahci_platform"), }; +static const struct of_device_id ahci_of_match[] = { + { .compatible = "fsl,imx6q-ahci", .data = &ahci_devtype[IMX6Q_AHCI],}, + { .compatible = "snps,spear-ahci", }, + {}, +}; +MODULE_DEVICE_TABLE(of, ahci_of_match); + static int ahci_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct ahci_platform_data *pdata = dev_get_platdata(dev); + const struct of_device_id *of_id = + of_match_device(ahci_of_match, &pdev->dev); + const struct platform_device_id *id_entry = of_id->data; const struct platform_device_id *id = platform_get_device_id(pdev); - struct ata_port_info pi = ahci_port_info[id ? id->driver_data : 0]; + struct ata_port_info pi = ahci_port_info[id ? id->driver_data : \ + id_entry->driver_data]; const struct ata_port_info *ppi[] = { &pi, NULL }; struct ahci_host_priv *hpriv; struct ata_host *host; @@ -325,12 +344,6 @@ static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_suspend, ahci_resume); -static const struct of_device_id ahci_of_match[] = { - { .compatible = "snps,spear-ahci", }, - {}, -}; -MODULE_DEVICE_TABLE(of, ahci_of_match); - static struct platform_driver ahci_driver = { .probe = ahci_probe, .remove = ata_platform_remove_one, --- linux-ppc-3.8.0.orig/drivers/ata/libata-core.c +++ linux-ppc-3.8.0/drivers/ata/libata-core.c @@ -1602,6 +1602,12 @@ qc->tf = *tf; if (cdb) memcpy(qc->cdb, cdb, ATAPI_CDB_LEN); + + /* some SATA bridges need us to indicate data xfer direction */ + if (tf->protocol == ATAPI_PROT_DMA && (dev->flags & ATA_DFLAG_DMADIR) && + dma_dir == DMA_FROM_DEVICE) + qc->tf.feature |= ATAPI_DMADIR; + qc->flags |= ATA_QCFLAG_RESULT_TF; qc->dma_dir = dma_dir; if (dma_dir != DMA_NONE) { @@ -2329,7 +2335,7 @@ * from SATA Settings page of Identify Device Data Log. */ if (ata_id_has_devslp(dev->id)) { - u8 sata_setting[ATA_SECT_SIZE]; + u8 *sata_setting = ap->sector_buf; int i, j; dev->flags |= ATA_DFLAG_DEVSLP; @@ -2400,8 +2406,10 @@ dma_dir_string = ", DMADIR"; } - if (ata_id_has_da(dev->id)) + if (ata_id_has_da(dev->id)) { dev->flags |= ATA_DFLAG_DA; + zpodd_init(dev); + } /* print device info to dmesg */ if (ata_msg_drv(ap) && print_info) @@ -2437,6 +2445,9 @@ dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128, dev->max_sectors); + if (dev->horkage & ATA_HORKAGE_MAX_SEC_LBA48) + dev->max_sectors = ATA_MAX_SECTORS_LBA48; + if (ap->ops->dev_config) ap->ops->dev_config(dev); @@ -4098,6 +4109,7 @@ /* Weird ATAPI devices */ { "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 }, { "QUANTUM DAT DAT72-000", NULL, ATA_HORKAGE_ATAPI_MOD16_DMA }, + { "Slimtype DVD A DS8A8SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 }, /* Devices we expect to fail diagnostics */ @@ -5331,9 +5343,6 @@ static int __ata_port_suspend_common(struct ata_port *ap, pm_message_t mesg, int *async) { - unsigned int ehi_flags = ATA_EHI_QUIET; - int rc; - /* * On some hardware, device fails to respond after spun down * for suspend. As the device won't be used before being @@ -5342,11 +5351,9 @@ * * http://thread.gmane.org/gmane.linux.ide/46764 */ - if (mesg.event == PM_EVENT_SUSPEND) - ehi_flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_NO_RECOVERY; - - rc = ata_port_request_pm(ap, mesg, 0, ehi_flags, async); - return rc; + unsigned int ehi_flags = ATA_EHI_QUIET | ATA_EHI_NO_AUTOPSY | + ATA_EHI_NO_RECOVERY; + return ata_port_request_pm(ap, mesg, 0, ehi_flags, async); } static int ata_port_suspend_common(struct device *dev, pm_message_t mesg) @@ -5367,40 +5374,38 @@ static int ata_port_do_freeze(struct device *dev) { if (pm_runtime_suspended(dev)) - pm_runtime_resume(dev); + return 0; return ata_port_suspend_common(dev, PMSG_FREEZE); } static int ata_port_poweroff(struct device *dev) { - if (pm_runtime_suspended(dev)) - return 0; - return ata_port_suspend_common(dev, PMSG_HIBERNATE); } -static int __ata_port_resume_common(struct ata_port *ap, int *async) +static int __ata_port_resume_common(struct ata_port *ap, pm_message_t mesg, + int *async) { int rc; - rc = ata_port_request_pm(ap, PMSG_ON, ATA_EH_RESET, + rc = ata_port_request_pm(ap, mesg, ATA_EH_RESET, ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET, async); return rc; } -static int ata_port_resume_common(struct device *dev) +static int ata_port_resume_common(struct device *dev, pm_message_t mesg) { struct ata_port *ap = to_ata_port(dev); - return __ata_port_resume_common(ap, NULL); + return __ata_port_resume_common(ap, mesg, NULL); } static int ata_port_resume(struct device *dev) { int rc; - rc = ata_port_resume_common(dev); + rc = ata_port_resume_common(dev, PMSG_RESUME); if (!rc) { pm_runtime_disable(dev); pm_runtime_set_active(dev); @@ -5410,11 +5415,40 @@ return rc; } +/* + * For ODDs, the upper layer will poll for media change every few seconds, + * which will make it enter and leave suspend state every few seconds. And + * as each suspend will cause a hard/soft reset, the gain of runtime suspend + * is very little and the ODD may malfunction after constantly being reset. + * So the idle callback here will not proceed to suspend if a non-ZPODD capable + * ODD is attached to the port. + */ static int ata_port_runtime_idle(struct device *dev) { + struct ata_port *ap = to_ata_port(dev); + struct ata_link *link; + struct ata_device *adev; + + ata_for_each_link(link, ap, HOST_FIRST) { + ata_for_each_dev(adev, link, ENABLED) + if (adev->class == ATA_DEV_ATAPI && + !zpodd_dev_enabled(adev)) + return -EBUSY; + } + return pm_runtime_suspend(dev); } +static int ata_port_runtime_suspend(struct device *dev) +{ + return ata_port_suspend_common(dev, PMSG_AUTO_SUSPEND); +} + +static int ata_port_runtime_resume(struct device *dev) +{ + return ata_port_resume_common(dev, PMSG_AUTO_RESUME); +} + static const struct dev_pm_ops ata_port_pm_ops = { .suspend = ata_port_suspend, .resume = ata_port_resume, @@ -5423,8 +5457,8 @@ .poweroff = ata_port_poweroff, .restore = ata_port_resume, - .runtime_suspend = ata_port_suspend, - .runtime_resume = ata_port_resume_common, + .runtime_suspend = ata_port_runtime_suspend, + .runtime_resume = ata_port_runtime_resume, .runtime_idle = ata_port_runtime_idle, }; @@ -5441,7 +5475,7 @@ int ata_sas_port_async_resume(struct ata_port *ap, int *async) { - return __ata_port_resume_common(ap, async); + return __ata_port_resume_common(ap, PMSG_RESUME, async); } EXPORT_SYMBOL_GPL(ata_sas_port_async_resume); @@ -6114,6 +6148,8 @@ if (rc) goto err_tadd; + ata_acpi_hotplug_init(host); + /* set cable, sata_spd_limit and report */ for (i = 0; i < host->n_ports; i++) { struct ata_port *ap = host->ports[i]; --- linux-ppc-3.8.0.orig/drivers/ata/libata.h +++ linux-ppc-3.8.0/drivers/ata/libata.h @@ -122,6 +122,7 @@ extern void ata_acpi_unregister(void); extern void ata_acpi_bind(struct ata_device *dev); extern void ata_acpi_unbind(struct ata_device *dev); +extern void ata_acpi_hotplug_init(struct ata_host *host); #else static inline void ata_acpi_dissociate(struct ata_host *host) { } static inline int ata_acpi_on_suspend(struct ata_port *ap) { return 0; } @@ -134,6 +135,7 @@ static inline void ata_acpi_unregister(void) { } static inline void ata_acpi_bind(struct ata_device *dev) { } static inline void ata_acpi_unbind(struct ata_device *dev) { } +static inline void ata_acpi_hotplug_init(struct ata_host *host) {} #endif /* libata-scsi.c */ @@ -182,6 +184,9 @@ extern int ata_ering_map(struct ata_ering *ering, int (*map_fn)(struct ata_ering_entry *, void *), void *arg); +extern unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key); +extern unsigned int atapi_eh_request_sense(struct ata_device *dev, + u8 *sense_buf, u8 dfl_sense_key); /* libata-pmp.c */ #ifdef CONFIG_SATA_PMP @@ -230,4 +235,28 @@ { } #endif /* CONFIG_ATA_SFF */ +/* libata-zpodd.c */ +#ifdef CONFIG_SATA_ZPODD +void zpodd_init(struct ata_device *dev); +void zpodd_exit(struct ata_device *dev); +static inline bool zpodd_dev_enabled(struct ata_device *dev) +{ + return dev->zpodd != NULL; +} +void zpodd_on_suspend(struct ata_device *dev); +bool zpodd_zpready(struct ata_device *dev); +void zpodd_enable_run_wake(struct ata_device *dev); +void zpodd_disable_run_wake(struct ata_device *dev); +void zpodd_post_poweron(struct ata_device *dev); +#else /* CONFIG_SATA_ZPODD */ +static inline void zpodd_init(struct ata_device *dev) {} +static inline void zpodd_exit(struct ata_device *dev) {} +static inline bool zpodd_dev_enabled(struct ata_device *dev) { return false; } +static inline void zpodd_on_suspend(struct ata_device *dev) {} +static inline bool zpodd_zpready(struct ata_device *dev) { return false; } +static inline void zpodd_enable_run_wake(struct ata_device *dev) {} +static inline void zpodd_disable_run_wake(struct ata_device *dev) {} +static inline void zpodd_post_poweron(struct ata_device *dev) {} +#endif /* CONFIG_SATA_ZPODD */ + #endif /* __LIBATA_H__ */ --- linux-ppc-3.8.0.orig/drivers/ata/sata_fsl.c +++ linux-ppc-3.8.0/drivers/ata/sata_fsl.c @@ -292,6 +292,7 @@ { struct sata_fsl_host_priv *host_priv = host->private_data; void __iomem *hcr_base = host_priv->hcr_base; + unsigned long flags; if (count > ICC_MAX_INT_COUNT_THRESHOLD) count = ICC_MAX_INT_COUNT_THRESHOLD; @@ -304,12 +305,12 @@ (count > ICC_MIN_INT_COUNT_THRESHOLD)) ticks = ICC_SAFE_INT_TICKS; - spin_lock(&host->lock); + spin_lock_irqsave(&host->lock, flags); iowrite32((count << 24 | ticks), hcr_base + ICC); intr_coalescing_count = count; intr_coalescing_ticks = ticks; - spin_unlock(&host->lock); + spin_unlock_irqrestore(&host->lock, flags); DPRINTK("intrrupt coalescing, count = 0x%x, ticks = %x\n", intr_coalescing_count, intr_coalescing_ticks); --- linux-ppc-3.8.0.orig/drivers/ata/libata-acpi.c +++ linux-ppc-3.8.0/drivers/ata/libata-acpi.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include "libata.h" @@ -60,7 +61,8 @@ if (ap->flags & ATA_FLAG_ACPI_SATA) return NULL; - return acpi_get_child(DEVICE_ACPI_HANDLE(ap->host->dev), ap->port_no); + return ap->scsi_host ? + DEVICE_ACPI_HANDLE(&ap->scsi_host->shost_gendev) : NULL; } EXPORT_SYMBOL(ata_ap_acpi_handle); @@ -155,8 +157,10 @@ spin_unlock_irqrestore(ap->lock, flags); - if (wait) + if (wait) { ata_port_wait_eh(ap); + flush_work(&ap->hotplug_task.work); + } } static void ata_acpi_dev_notify_dock(acpi_handle handle, u32 event, void *data) @@ -213,6 +217,38 @@ .uevent = ata_acpi_ap_uevent, }; +void ata_acpi_hotplug_init(struct ata_host *host) +{ + int i; + + for (i = 0; i < host->n_ports; i++) { + struct ata_port *ap = host->ports[i]; + acpi_handle handle; + struct ata_device *dev; + + if (!ap) + continue; + + handle = ata_ap_acpi_handle(ap); + if (handle) { + /* we might be on a docking station */ + register_hotplug_dock_device(handle, + &ata_acpi_ap_dock_ops, ap); + } + + ata_for_each_dev(dev, &ap->link, ALL) { + handle = ata_dev_acpi_handle(dev); + if (!handle) + continue; + + /* we might be on a docking station */ + register_hotplug_dock_device(handle, + &ata_acpi_dev_dock_ops, + dev); + } + } +} + /** * ata_acpi_dissociate - dissociate ATA host from ACPI objects * @host: target ATA host @@ -239,28 +275,15 @@ } } -/** - * ata_acpi_gtm - execute _GTM - * @ap: target ATA port - * @gtm: out parameter for _GTM result - * - * Evaluate _GTM and store the result in @gtm. - * - * LOCKING: - * EH context. - * - * RETURNS: - * 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure. - */ -int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm) +static int __ata_acpi_gtm(struct ata_port *ap, acpi_handle handle, + struct ata_acpi_gtm *gtm) { struct acpi_buffer output = { .length = ACPI_ALLOCATE_BUFFER }; union acpi_object *out_obj; acpi_status status; int rc = 0; - status = acpi_evaluate_object(ata_ap_acpi_handle(ap), "_GTM", NULL, - &output); + status = acpi_evaluate_object(handle, "_GTM", NULL, &output); rc = -ENOENT; if (status == AE_NOT_FOUND) @@ -294,6 +317,27 @@ return rc; } +/** + * ata_acpi_gtm - execute _GTM + * @ap: target ATA port + * @gtm: out parameter for _GTM result + * + * Evaluate _GTM and store the result in @gtm. + * + * LOCKING: + * EH context. + * + * RETURNS: + * 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure. + */ +int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm) +{ + if (ata_ap_acpi_handle(ap)) + return __ata_acpi_gtm(ap, ata_ap_acpi_handle(ap), gtm); + else + return -EINVAL; +} + EXPORT_SYMBOL_GPL(ata_acpi_gtm); /** @@ -835,50 +879,95 @@ } } -/** - * ata_acpi_set_state - set the port power state - * @ap: target ATA port - * @state: state, on/off - * - * This function executes the _PS0/_PS3 ACPI method to set the power state. - * ACPI spec requires _PS0 when IDE power on and _PS3 when power off - */ -void ata_acpi_set_state(struct ata_port *ap, pm_message_t state) +static int ata_acpi_choose_suspend_state(struct ata_device *dev, bool runtime) { + int d_max_in = ACPI_STATE_D3_COLD; + if (!runtime) + goto out; + + /* + * For ATAPI, runtime D3 cold is only allowed + * for ZPODD in zero power ready state + */ + if (dev->class == ATA_DEV_ATAPI && + !(zpodd_dev_enabled(dev) && zpodd_zpready(dev))) + d_max_in = ACPI_STATE_D3_HOT; + +out: + return acpi_pm_device_sleep_state(&dev->sdev->sdev_gendev, + NULL, d_max_in); +} + +static void sata_acpi_set_state(struct ata_port *ap, pm_message_t state) +{ + bool runtime = PMSG_IS_AUTO(state); struct ata_device *dev; acpi_handle handle; int acpi_state; - /* channel first and then drives for power on and vica versa - for power off */ - handle = ata_ap_acpi_handle(ap); - if (handle && state.event == PM_EVENT_ON) - acpi_bus_set_power(handle, ACPI_STATE_D0); - ata_for_each_dev(dev, &ap->link, ENABLED) { handle = ata_dev_acpi_handle(dev); if (!handle) continue; - if (state.event != PM_EVENT_ON) { - acpi_state = acpi_pm_device_sleep_state( - &dev->sdev->sdev_gendev, NULL, ACPI_STATE_D3); - if (acpi_state > 0) - acpi_bus_set_power(handle, acpi_state); - /* TBD: need to check if it's runtime pm request */ - acpi_pm_device_run_wake( - &dev->sdev->sdev_gendev, true); + if (!(state.event & PM_EVENT_RESUME)) { + acpi_state = ata_acpi_choose_suspend_state(dev, runtime); + if (acpi_state == ACPI_STATE_D0) + continue; + if (runtime && zpodd_dev_enabled(dev) && + acpi_state == ACPI_STATE_D3_COLD) + zpodd_enable_run_wake(dev); + acpi_bus_set_power(handle, acpi_state); } else { - /* Ditto */ - acpi_pm_device_run_wake( - &dev->sdev->sdev_gendev, false); + if (runtime && zpodd_dev_enabled(dev)) + zpodd_disable_run_wake(dev); acpi_bus_set_power(handle, ACPI_STATE_D0); } } +} + +/* ACPI spec requires _PS0 when IDE power on and _PS3 when power off */ +static void pata_acpi_set_state(struct ata_port *ap, pm_message_t state) +{ + struct ata_device *dev; + acpi_handle port_handle; + + port_handle = ata_ap_acpi_handle(ap); + if (!port_handle) + return; + + /* channel first and then drives for power on and vica versa + for power off */ + if (state.event & PM_EVENT_RESUME) + acpi_bus_set_power(port_handle, ACPI_STATE_D0); + + ata_for_each_dev(dev, &ap->link, ENABLED) { + acpi_handle dev_handle = ata_dev_acpi_handle(dev); + if (!dev_handle) + continue; + + acpi_bus_set_power(dev_handle, state.event & PM_EVENT_RESUME ? + ACPI_STATE_D0 : ACPI_STATE_D3); + } - handle = ata_ap_acpi_handle(ap); - if (handle && state.event != PM_EVENT_ON) - acpi_bus_set_power(handle, ACPI_STATE_D3); + if (!(state.event & PM_EVENT_RESUME)) + acpi_bus_set_power(port_handle, ACPI_STATE_D3); +} + +/** + * ata_acpi_set_state - set the port power state + * @ap: target ATA port + * @state: state, on/off + * + * This function sets a proper ACPI D state for the device on + * system and runtime PM operations. + */ +void ata_acpi_set_state(struct ata_port *ap, pm_message_t state) +{ + if (ap->flags & ATA_FLAG_ACPI_SATA) + sata_acpi_set_state(ap, state); + else + pata_acpi_set_state(ap, state); } /** @@ -974,57 +1063,6 @@ ata_acpi_clear_gtf(dev); } -static void ata_acpi_wake_dev(acpi_handle handle, u32 event, void *context) -{ - struct ata_device *ata_dev = context; - - if (event == ACPI_NOTIFY_DEVICE_WAKE && ata_dev && - pm_runtime_suspended(&ata_dev->sdev->sdev_gendev)) - scsi_autopm_get_device(ata_dev->sdev); -} - -static void ata_acpi_add_pm_notifier(struct ata_device *dev) -{ - struct acpi_device *acpi_dev; - acpi_handle handle; - acpi_status status; - - handle = ata_dev_acpi_handle(dev); - if (!handle) - return; - - status = acpi_bus_get_device(handle, &acpi_dev); - if (ACPI_FAILURE(status)) - return; - - if (dev->sdev->can_power_off) { - acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY, - ata_acpi_wake_dev, dev); - device_set_run_wake(&dev->sdev->sdev_gendev, true); - } -} - -static void ata_acpi_remove_pm_notifier(struct ata_device *dev) -{ - struct acpi_device *acpi_dev; - acpi_handle handle; - acpi_status status; - - handle = ata_dev_acpi_handle(dev); - if (!handle) - return; - - status = acpi_bus_get_device(handle, &acpi_dev); - if (ACPI_FAILURE(status)) - return; - - if (dev->sdev->can_power_off) { - device_set_run_wake(&dev->sdev->sdev_gendev, false); - acpi_remove_notify_handler(handle, ACPI_SYSTEM_NOTIFY, - ata_acpi_wake_dev); - } -} - static void ata_acpi_register_power_resource(struct ata_device *dev) { struct scsi_device *sdev = dev->sdev; @@ -1057,13 +1095,13 @@ void ata_acpi_bind(struct ata_device *dev) { - ata_acpi_add_pm_notifier(dev); ata_acpi_register_power_resource(dev); + if (zpodd_dev_enabled(dev)) + dev_pm_qos_expose_flags(&dev->sdev->sdev_gendev, 0); } void ata_acpi_unbind(struct ata_device *dev) { - ata_acpi_remove_pm_notifier(dev); ata_acpi_unregister_power_resource(dev); } @@ -1095,7 +1133,7 @@ if (!*handle) return -ENODEV; - if (ata_acpi_gtm(ap, &ap->__acpi_init_gtm) == 0) + if (__ata_acpi_gtm(ap, *handle, &ap->__acpi_init_gtm) == 0) ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; return 0; @@ -1105,9 +1143,6 @@ acpi_handle *handle) { struct ata_device *ata_dev; - acpi_status status; - struct acpi_device *acpi_dev; - struct acpi_device_power_state *states; if (ap->flags & ATA_FLAG_ACPI_SATA) { if (!sata_pmp_attached(ap)) @@ -1124,21 +1159,6 @@ if (!*handle) return -ENODEV; - status = acpi_bus_get_device(*handle, &acpi_dev); - if (ACPI_FAILURE(status)) - return 0; - - /* - * If firmware has _PS3 or _PR3 for this device, - * and this ata ODD device support device attention, - * it means this device can be powered off - */ - states = acpi_dev->power.states; - if ((states[ACPI_STATE_D3_HOT].flags.valid || - states[ACPI_STATE_D3_COLD].flags.explicit_set) && - ata_dev->flags & ATA_DFLAG_DA) - sdev->can_power_off = 1; - return 0; } --- linux-ppc-3.8.0.orig/drivers/ata/Kconfig +++ linux-ppc-3.8.0/drivers/ata/Kconfig @@ -58,6 +58,19 @@ You can disable this at kernel boot time by using the option libata.noacpi=1 +config SATA_ZPODD + bool "SATA Zero Power ODD Support" + depends on ATA_ACPI + default n + help + This option adds support for SATA ZPODD. It requires both + ODD and the platform support, and if enabled, will automatically + power on/off the ODD when certain condition is satisfied. This + does not impact user's experience of the ODD, only power is saved + when ODD is not in use(i.e. no disc inside). + + If unsure, say N. + config SATA_PMP bool "SATA Port Multiplier support" default y --- linux-ppc-3.8.0.orig/drivers/ata/libata-pmp.c +++ linux-ppc-3.8.0/drivers/ata/libata-pmp.c @@ -289,24 +289,24 @@ /* Disable sending Early R_OK. * With "cached read" HDD testing and multiple ports busy on a SATA - * host controller, 3726 PMP will very rarely drop a deferred + * host controller, 3x26 PMP will very rarely drop a deferred * R_OK that was intended for the host. Symptom will be all * 5 drives under test will timeout, get reset, and recover. */ - if (vendor == 0x1095 && devid == 0x3726) { + if (vendor == 0x1095 && (devid == 0x3726 || devid == 0x3826)) { u32 reg; err_mask = sata_pmp_read(&ap->link, PMP_GSCR_SII_POL, ®); if (err_mask) { rc = -EIO; - reason = "failed to read Sil3726 Private Register"; + reason = "failed to read Sil3x26 Private Register"; goto fail; } reg &= ~0x1; err_mask = sata_pmp_write(&ap->link, PMP_GSCR_SII_POL, reg); if (err_mask) { rc = -EIO; - reason = "failed to write Sil3726 Private Register"; + reason = "failed to write Sil3x26 Private Register"; goto fail; } } @@ -383,15 +383,19 @@ u16 devid = sata_pmp_gscr_devid(gscr); struct ata_link *link; - if (vendor == 0x1095 && devid == 0x3726) { - /* sil3726 quirks */ + if (vendor == 0x1095 && (devid == 0x3726 || devid == 0x3826)) { + /* sil3x26 quirks */ ata_for_each_link(link, ap, EDGE) { /* link reports offline after LPM */ link->flags |= ATA_LFLAG_NO_LPM; - /* Class code report is unreliable. */ + /* + * Class code report is unreliable and SRST times + * out under certain configurations. + */ if (link->pmp < 5) - link->flags |= ATA_LFLAG_ASSUME_ATA; + link->flags |= ATA_LFLAG_NO_SRST | + ATA_LFLAG_ASSUME_ATA; /* port 5 is for SEMB device and it doesn't like SRST */ if (link->pmp == 5) @@ -399,20 +403,17 @@ ATA_LFLAG_ASSUME_SEMB; } } else if (vendor == 0x1095 && devid == 0x4723) { - /* sil4723 quirks */ - ata_for_each_link(link, ap, EDGE) { - /* link reports offline after LPM */ - link->flags |= ATA_LFLAG_NO_LPM; - - /* class code report is unreliable */ - if (link->pmp < 2) - link->flags |= ATA_LFLAG_ASSUME_ATA; - - /* the config device at port 2 locks up on SRST */ - if (link->pmp == 2) - link->flags |= ATA_LFLAG_NO_SRST | - ATA_LFLAG_ASSUME_ATA; - } + /* + * sil4723 quirks + * + * Link reports offline after LPM. Class code report is + * unreliable. SIMG PMPs never got SRST reliable and the + * config device at port 2 locks up on SRST. + */ + ata_for_each_link(link, ap, EDGE) + link->flags |= ATA_LFLAG_NO_LPM | + ATA_LFLAG_NO_SRST | + ATA_LFLAG_ASSUME_ATA; } else if (vendor == 0x1095 && devid == 0x4726) { /* sil4726 quirks */ ata_for_each_link(link, ap, EDGE) { --- linux-ppc-3.8.0.orig/drivers/hid/hid-logitech-dj.c +++ linux-ppc-3.8.0/drivers/hid/hid-logitech-dj.c @@ -459,19 +459,25 @@ struct dj_report *dj_report) { struct hid_device *hdev = djrcv_dev->hdev; - int sent_bytes; + struct hid_report *report; + struct hid_report_enum *output_report_enum; + u8 *data = (u8 *)(&dj_report->device_index); + int i; - if (!hdev->hid_output_raw_report) { - dev_err(&hdev->dev, "%s:" - "hid_output_raw_report is null\n", __func__); + output_report_enum = &hdev->report_enum[HID_OUTPUT_REPORT]; + report = output_report_enum->report_id_hash[REPORT_ID_DJ_SHORT]; + + if (!report) { + dev_err(&hdev->dev, "%s: unable to find dj report\n", __func__); return -ENODEV; } - sent_bytes = hdev->hid_output_raw_report(hdev, (u8 *) dj_report, - sizeof(struct dj_report), - HID_OUTPUT_REPORT); + for (i = 0; i < report->field[0]->report_count; i++) + report->field[0]->value[i] = data[i]; + + usbhid_submit_report(hdev, report, USB_DIR_OUT); - return (sent_bytes < 0) ? sent_bytes : 0; + return 0; } static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev) --- linux-ppc-3.8.0.orig/drivers/hid/hid-apple.c +++ linux-ppc-3.8.0/drivers/hid/hid-apple.c @@ -529,6 +529,12 @@ .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS), .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI), + .driver_data = APPLE_HAS_FN }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO), + .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS), + .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), --- linux-ppc-3.8.0.orig/drivers/hid/hid-ids.h +++ linux-ppc-3.8.0/drivers/hid/hid-ids.h @@ -135,6 +135,9 @@ #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI 0x0255 #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO 0x0256 +#define USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI 0x0291 +#define USB_DEVICE_ID_APPLE_WELLSPRING8_ISO 0x0292 +#define USB_DEVICE_ID_APPLE_WELLSPRING8_JIS 0x0293 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 @@ -554,6 +557,9 @@ #define USB_VENDOR_ID_MADCATZ 0x0738 #define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540 +#define USB_VENDOR_ID_MASTERKIT 0x16c0 +#define USB_DEVICE_ID_MASTERKIT_MA901RADIO 0x05df + #define USB_VENDOR_ID_MCC 0x09db #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a @@ -584,6 +590,9 @@ #define USB_VENDOR_ID_MONTEREY 0x0566 #define USB_DEVICE_ID_GENIUS_KB29E 0x3004 +#define USB_VENDOR_ID_MSI 0x1770 +#define USB_DEVICE_ID_MSI_GX680R_LED_PANEL 0xff00 + #define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400 #define USB_DEVICE_ID_N_S_HARMONY 0xc359 @@ -675,6 +684,9 @@ #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001 #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008 +#define USB_VENDOR_ID_REALTEK 0x0bda +#define USB_DEVICE_ID_REALTEK_READER 0x0152 + #define USB_VENDOR_ID_ROCCAT 0x1e7d #define USB_DEVICE_ID_ROCCAT_ARVO 0x30d4 #define USB_DEVICE_ID_ROCCAT_ISKU 0x319c @@ -709,6 +721,7 @@ #define USB_VENDOR_ID_SONY 0x054c #define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE 0x024b +#define USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE 0x0374 #define USB_DEVICE_ID_SONY_PS3_BDREMOTE 0x0306 #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 #define USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER 0x042f --- linux-ppc-3.8.0.orig/drivers/hid/hid-magicmouse.c +++ linux-ppc-3.8.0/drivers/hid/hid-magicmouse.c @@ -462,6 +462,21 @@ return 0; } +static void magicmouse_input_configured(struct hid_device *hdev, + struct hid_input *hi) + +{ + struct magicmouse_sc *msc = hid_get_drvdata(hdev); + + int ret = magicmouse_setup_input(msc->input, hdev); + if (ret) { + hid_err(hdev, "magicmouse setup input failed (%d)\n", ret); + /* clean msc->input to notify probe() of the failure */ + msc->input = NULL; + } +} + + static int magicmouse_probe(struct hid_device *hdev, const struct hid_device_id *id) { @@ -493,15 +508,10 @@ goto err_free; } - /* We do this after hid-input is done parsing reports so that - * hid-input uses the most natural button and axis IDs. - */ - if (msc->input) { - ret = magicmouse_setup_input(msc->input, hdev); - if (ret) { - hid_err(hdev, "magicmouse setup input failed (%d)\n", ret); - goto err_stop_hw; - } + if (!msc->input) { + hid_err(hdev, "magicmouse input not registered\n"); + ret = -ENOMEM; + goto err_stop_hw; } if (id->product == USB_DEVICE_ID_APPLE_MAGICMOUSE) @@ -568,6 +578,7 @@ .remove = magicmouse_remove, .raw_event = magicmouse_raw_event, .input_mapping = magicmouse_input_mapping, + .input_configured = magicmouse_input_configured, }; static int __init magicmouse_init(void) --- linux-ppc-3.8.0.orig/drivers/hid/hid-sony.c +++ linux-ppc-3.8.0/drivers/hid/hid-sony.c @@ -43,9 +43,19 @@ { struct sony_sc *sc = hid_get_drvdata(hdev); - if ((sc->quirks & VAIO_RDESC_CONSTANT) && - *rsize >= 56 && rdesc[54] == 0x81 && rdesc[55] == 0x07) { - hid_info(hdev, "Fixing up Sony Vaio VGX report descriptor\n"); + /* + * Some Sony RF receivers wrongly declare the mouse pointer as a + * a constant non-data variable. + */ + if ((sc->quirks & VAIO_RDESC_CONSTANT) && *rsize >= 56 && + /* usage page: generic desktop controls */ + /* rdesc[0] == 0x05 && rdesc[1] == 0x01 && */ + /* usage: mouse */ + rdesc[2] == 0x09 && rdesc[3] == 0x02 && + /* input (usage page for x,y axes): constant, variable, relative */ + rdesc[54] == 0x81 && rdesc[55] == 0x07) { + hid_info(hdev, "Fixing up Sony RF Receiver report descriptor\n"); + /* input: data, variable, relative */ rdesc[55] = 0x06; } @@ -217,6 +227,8 @@ .driver_data = SIXAXIS_CONTROLLER_BT }, { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE), .driver_data = VAIO_RDESC_CONSTANT }, + { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE), + .driver_data = VAIO_RDESC_CONSTANT }, { } }; MODULE_DEVICE_TABLE(hid, sony_devices); --- linux-ppc-3.8.0.orig/drivers/hid/hid-core.c +++ linux-ppc-3.8.0/drivers/hid/hid-core.c @@ -1562,6 +1562,9 @@ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) }, { 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) }, @@ -1697,6 +1700,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_NAVIGATION_CONTROLLER) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) }, { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) }, @@ -2070,6 +2074,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) }, { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) }, { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MASTERKIT, USB_DEVICE_ID_MASTERKIT_MA901RADIO) }, { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) }, { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) }, @@ -2170,6 +2175,9 @@ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) }, { 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) }, { } --- linux-ppc-3.8.0.orig/drivers/hid/hid-wiimote-ext.c +++ linux-ppc-3.8.0/drivers/hid/hid-wiimote-ext.c @@ -403,14 +403,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-ppc-3.8.0.orig/drivers/hid/Kconfig +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/hid/usbhid/hid-quirks.c +++ linux-ppc-3.8.0/drivers/hid/usbhid/hid-quirks.c @@ -73,6 +73,7 @@ { 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_MSI, USB_DEVICE_ID_MSI_GX680R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS }, { 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 }, @@ -80,6 +81,7 @@ { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001, HID_QUIRK_NOGET }, { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_REALTEK, USB_DEVICE_ID_REALTEK_READER, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD500USB, HID_QUIRK_NOGET }, { USB_VENDOR_ID_SIGMATEL, USB_DEVICE_ID_SIGMATEL_STMP3780, HID_QUIRK_NOGET }, { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, --- linux-ppc-3.8.0.orig/drivers/base/bus.c +++ linux-ppc-3.8.0/drivers/base/bus.c @@ -290,7 +290,7 @@ struct device *dev; int error = 0; - if (!bus) + if (!bus || !bus->p) return -EINVAL; klist_iter_init_node(&bus->p->klist_devices, &i, @@ -324,7 +324,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-ppc-3.8.0.orig/drivers/base/dd.c +++ linux-ppc-3.8.0/drivers/base/dd.c @@ -172,6 +172,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-ppc-3.8.0.orig/drivers/base/regmap/regmap.c +++ linux-ppc-3.8.0/drivers/base/regmap/regmap.c @@ -662,12 +662,12 @@ } } + regmap_debugfs_init(map, config->name); + ret = regcache_init(map, config); if (ret != 0) goto err_range; - regmap_debugfs_init(map, config->name); - /* Add a devres resource for dev_get_regmap() */ m = devres_alloc(dev_get_regmap_release, sizeof(*m), GFP_KERNEL); if (!m) { --- linux-ppc-3.8.0.orig/drivers/base/regmap/regcache-rbtree.c +++ linux-ppc-3.8.0/drivers/base/regmap/regcache-rbtree.c @@ -398,7 +398,7 @@ base = 0; if (max < rbnode->base_reg + rbnode->blklen) - end = rbnode->base_reg + rbnode->blklen - max; + end = max - rbnode->base_reg + 1; else end = rbnode->blklen; --- linux-ppc-3.8.0.orig/drivers/base/power/opp.c +++ linux-ppc-3.8.0/drivers/base/power/opp.c @@ -162,7 +162,7 @@ return v; } -EXPORT_SYMBOL(opp_get_voltage); +EXPORT_SYMBOL_GPL(opp_get_voltage); /** * opp_get_freq() - Gets the frequency corresponding to an available opp @@ -192,7 +192,7 @@ return f; } -EXPORT_SYMBOL(opp_get_freq); +EXPORT_SYMBOL_GPL(opp_get_freq); /** * opp_get_opp_count() - Get number of opps available in the opp list @@ -225,7 +225,7 @@ return count; } -EXPORT_SYMBOL(opp_get_opp_count); +EXPORT_SYMBOL_GPL(opp_get_opp_count); /** * opp_find_freq_exact() - search for an exact frequency @@ -276,7 +276,7 @@ return opp; } -EXPORT_SYMBOL(opp_find_freq_exact); +EXPORT_SYMBOL_GPL(opp_find_freq_exact); /** * opp_find_freq_ceil() - Search for an rounded ceil freq @@ -323,7 +323,7 @@ return opp; } -EXPORT_SYMBOL(opp_find_freq_ceil); +EXPORT_SYMBOL_GPL(opp_find_freq_ceil); /** * opp_find_freq_floor() - Search for a rounded floor freq @@ -374,7 +374,7 @@ return opp; } -EXPORT_SYMBOL(opp_find_freq_floor); +EXPORT_SYMBOL_GPL(opp_find_freq_floor); /** * opp_add() - Add an OPP table from a table definitions @@ -568,7 +568,7 @@ { return opp_set_availability(dev, freq, true); } -EXPORT_SYMBOL(opp_enable); +EXPORT_SYMBOL_GPL(opp_enable); /** * opp_disable() - Disable a specific OPP @@ -590,7 +590,7 @@ { return opp_set_availability(dev, freq, false); } -EXPORT_SYMBOL(opp_disable); +EXPORT_SYMBOL_GPL(opp_disable); #ifdef CONFIG_CPU_FREQ /** @@ -661,6 +661,7 @@ return 0; } +EXPORT_SYMBOL_GPL(opp_init_cpufreq_table); /** * opp_free_cpufreq_table() - free the cpufreq table @@ -678,6 +679,7 @@ kfree(*table); *table = NULL; } +EXPORT_SYMBOL_GPL(opp_free_cpufreq_table); #endif /* CONFIG_CPU_FREQ */ /** @@ -738,4 +740,5 @@ return 0; } +EXPORT_SYMBOL_GPL(of_init_opp_table); #endif --- linux-ppc-3.8.0.orig/drivers/mtd/mtdchar.c +++ linux-ppc-3.8.0/drivers/mtd/mtdchar.c @@ -1159,45 +1159,17 @@ struct mtd_file_info *mfi = file->private_data; struct mtd_info *mtd = mfi->mtd; struct map_info *map = mtd->priv; - resource_size_t start, off; - unsigned long len, vma_len; /* This is broken because it assumes the MTD device is map-based and that mtd->priv is a valid struct map_info. It should be replaced with something that uses the mtd_get_unmapped_area() operation properly. */ if (0 /*mtd->type == MTD_RAM || mtd->type == MTD_ROM*/) { - off = get_vm_offset(vma); - start = map->phys; - len = PAGE_ALIGN((start & ~PAGE_MASK) + map->size); - start &= PAGE_MASK; - vma_len = get_vm_size(vma); - - /* Overflow in off+len? */ - if (vma_len + off < off) - return -EINVAL; - /* Does it fit in the mapping? */ - if (vma_len + off > len) - return -EINVAL; - - off += start; - /* Did that overflow? */ - if (off < start) - return -EINVAL; - if (set_vm_offset(vma, off) < 0) - return -EINVAL; - vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP; - #ifdef pgprot_noncached - if (file->f_flags & O_DSYNC || off >= __pa(high_memory)) + if (file->f_flags & O_DSYNC || map->phys >= __pa(high_memory)) vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); #endif - if (io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT, - vma->vm_end - vma->vm_start, - vma->vm_page_prot)) - return -EAGAIN; - - return 0; + return vm_iomap_memory(vma, map->phys, map->size); } return -ENOSYS; #else --- linux-ppc-3.8.0.orig/drivers/mtd/nand/nand_ids.c +++ linux-ppc-3.8.0/drivers/mtd/nand/nand_ids.c @@ -22,49 +22,51 @@ * 512 512 Byte page size */ struct nand_flash_dev nand_flash_ids[] = { +#define SP_OPTIONS NAND_NEED_READRDY +#define SP_OPTIONS16 (SP_OPTIONS | NAND_BUSWIDTH_16) #ifdef CONFIG_MTD_NAND_MUSEUM_IDS - {"NAND 1MiB 5V 8-bit", 0x6e, 256, 1, 0x1000, 0}, - {"NAND 2MiB 5V 8-bit", 0x64, 256, 2, 0x1000, 0}, - {"NAND 4MiB 5V 8-bit", 0x6b, 512, 4, 0x2000, 0}, - {"NAND 1MiB 3,3V 8-bit", 0xe8, 256, 1, 0x1000, 0}, - {"NAND 1MiB 3,3V 8-bit", 0xec, 256, 1, 0x1000, 0}, - {"NAND 2MiB 3,3V 8-bit", 0xea, 256, 2, 0x1000, 0}, - {"NAND 4MiB 3,3V 8-bit", 0xd5, 512, 4, 0x2000, 0}, - {"NAND 4MiB 3,3V 8-bit", 0xe3, 512, 4, 0x2000, 0}, - {"NAND 4MiB 3,3V 8-bit", 0xe5, 512, 4, 0x2000, 0}, - {"NAND 8MiB 3,3V 8-bit", 0xd6, 512, 8, 0x2000, 0}, - - {"NAND 8MiB 1,8V 8-bit", 0x39, 512, 8, 0x2000, 0}, - {"NAND 8MiB 3,3V 8-bit", 0xe6, 512, 8, 0x2000, 0}, - {"NAND 8MiB 1,8V 16-bit", 0x49, 512, 8, 0x2000, NAND_BUSWIDTH_16}, - {"NAND 8MiB 3,3V 16-bit", 0x59, 512, 8, 0x2000, NAND_BUSWIDTH_16}, + {"NAND 1MiB 5V 8-bit", 0x6e, 256, 1, 0x1000, SP_OPTIONS}, + {"NAND 2MiB 5V 8-bit", 0x64, 256, 2, 0x1000, SP_OPTIONS}, + {"NAND 4MiB 5V 8-bit", 0x6b, 512, 4, 0x2000, SP_OPTIONS}, + {"NAND 1MiB 3,3V 8-bit", 0xe8, 256, 1, 0x1000, SP_OPTIONS}, + {"NAND 1MiB 3,3V 8-bit", 0xec, 256, 1, 0x1000, SP_OPTIONS}, + {"NAND 2MiB 3,3V 8-bit", 0xea, 256, 2, 0x1000, SP_OPTIONS}, + {"NAND 4MiB 3,3V 8-bit", 0xd5, 512, 4, 0x2000, SP_OPTIONS}, + {"NAND 4MiB 3,3V 8-bit", 0xe3, 512, 4, 0x2000, SP_OPTIONS}, + {"NAND 4MiB 3,3V 8-bit", 0xe5, 512, 4, 0x2000, SP_OPTIONS}, + {"NAND 8MiB 3,3V 8-bit", 0xd6, 512, 8, 0x2000, SP_OPTIONS}, + + {"NAND 8MiB 1,8V 8-bit", 0x39, 512, 8, 0x2000, SP_OPTIONS}, + {"NAND 8MiB 3,3V 8-bit", 0xe6, 512, 8, 0x2000, SP_OPTIONS}, + {"NAND 8MiB 1,8V 16-bit", 0x49, 512, 8, 0x2000, SP_OPTIONS16}, + {"NAND 8MiB 3,3V 16-bit", 0x59, 512, 8, 0x2000, SP_OPTIONS16}, #endif - {"NAND 16MiB 1,8V 8-bit", 0x33, 512, 16, 0x4000, 0}, - {"NAND 16MiB 3,3V 8-bit", 0x73, 512, 16, 0x4000, 0}, - {"NAND 16MiB 1,8V 16-bit", 0x43, 512, 16, 0x4000, NAND_BUSWIDTH_16}, - {"NAND 16MiB 3,3V 16-bit", 0x53, 512, 16, 0x4000, NAND_BUSWIDTH_16}, - - {"NAND 32MiB 1,8V 8-bit", 0x35, 512, 32, 0x4000, 0}, - {"NAND 32MiB 3,3V 8-bit", 0x75, 512, 32, 0x4000, 0}, - {"NAND 32MiB 1,8V 16-bit", 0x45, 512, 32, 0x4000, NAND_BUSWIDTH_16}, - {"NAND 32MiB 3,3V 16-bit", 0x55, 512, 32, 0x4000, NAND_BUSWIDTH_16}, - - {"NAND 64MiB 1,8V 8-bit", 0x36, 512, 64, 0x4000, 0}, - {"NAND 64MiB 3,3V 8-bit", 0x76, 512, 64, 0x4000, 0}, - {"NAND 64MiB 1,8V 16-bit", 0x46, 512, 64, 0x4000, NAND_BUSWIDTH_16}, - {"NAND 64MiB 3,3V 16-bit", 0x56, 512, 64, 0x4000, NAND_BUSWIDTH_16}, - - {"NAND 128MiB 1,8V 8-bit", 0x78, 512, 128, 0x4000, 0}, - {"NAND 128MiB 1,8V 8-bit", 0x39, 512, 128, 0x4000, 0}, - {"NAND 128MiB 3,3V 8-bit", 0x79, 512, 128, 0x4000, 0}, - {"NAND 128MiB 1,8V 16-bit", 0x72, 512, 128, 0x4000, NAND_BUSWIDTH_16}, - {"NAND 128MiB 1,8V 16-bit", 0x49, 512, 128, 0x4000, NAND_BUSWIDTH_16}, - {"NAND 128MiB 3,3V 16-bit", 0x74, 512, 128, 0x4000, NAND_BUSWIDTH_16}, - {"NAND 128MiB 3,3V 16-bit", 0x59, 512, 128, 0x4000, NAND_BUSWIDTH_16}, + {"NAND 16MiB 1,8V 8-bit", 0x33, 512, 16, 0x4000, SP_OPTIONS}, + {"NAND 16MiB 3,3V 8-bit", 0x73, 512, 16, 0x4000, SP_OPTIONS}, + {"NAND 16MiB 1,8V 16-bit", 0x43, 512, 16, 0x4000, SP_OPTIONS16}, + {"NAND 16MiB 3,3V 16-bit", 0x53, 512, 16, 0x4000, SP_OPTIONS16}, + + {"NAND 32MiB 1,8V 8-bit", 0x35, 512, 32, 0x4000, SP_OPTIONS}, + {"NAND 32MiB 3,3V 8-bit", 0x75, 512, 32, 0x4000, SP_OPTIONS}, + {"NAND 32MiB 1,8V 16-bit", 0x45, 512, 32, 0x4000, SP_OPTIONS16}, + {"NAND 32MiB 3,3V 16-bit", 0x55, 512, 32, 0x4000, SP_OPTIONS16}, + + {"NAND 64MiB 1,8V 8-bit", 0x36, 512, 64, 0x4000, SP_OPTIONS}, + {"NAND 64MiB 3,3V 8-bit", 0x76, 512, 64, 0x4000, SP_OPTIONS}, + {"NAND 64MiB 1,8V 16-bit", 0x46, 512, 64, 0x4000, SP_OPTIONS16}, + {"NAND 64MiB 3,3V 16-bit", 0x56, 512, 64, 0x4000, SP_OPTIONS16}, + + {"NAND 128MiB 1,8V 8-bit", 0x78, 512, 128, 0x4000, SP_OPTIONS}, + {"NAND 128MiB 1,8V 8-bit", 0x39, 512, 128, 0x4000, SP_OPTIONS}, + {"NAND 128MiB 3,3V 8-bit", 0x79, 512, 128, 0x4000, SP_OPTIONS}, + {"NAND 128MiB 1,8V 16-bit", 0x72, 512, 128, 0x4000, SP_OPTIONS16}, + {"NAND 128MiB 1,8V 16-bit", 0x49, 512, 128, 0x4000, SP_OPTIONS16}, + {"NAND 128MiB 3,3V 16-bit", 0x74, 512, 128, 0x4000, SP_OPTIONS16}, + {"NAND 128MiB 3,3V 16-bit", 0x59, 512, 128, 0x4000, SP_OPTIONS16}, - {"NAND 256MiB 3,3V 8-bit", 0x71, 512, 256, 0x4000, 0}, + {"NAND 256MiB 3,3V 8-bit", 0x71, 512, 256, 0x4000, SP_OPTIONS}, /* * These are the new chips with large page size. The pagesize and the --- linux-ppc-3.8.0.orig/drivers/mtd/nand/nand_base.c +++ linux-ppc-3.8.0/drivers/mtd/nand/nand_base.c @@ -1527,6 +1527,14 @@ oobreadlen -= toread; } } + + if (chip->options & NAND_NEED_READRDY) { + /* Apply delay or wait for ready/busy pin */ + if (!chip->dev_ready) + udelay(chip->chip_delay); + else + nand_wait_ready(mtd); + } } else { memcpy(buf, chip->buffers->databuf + col, bytes); buf += bytes; @@ -1791,6 +1799,14 @@ len = min(len, readlen); buf = nand_transfer_oob(chip, buf, ops, len); + if (chip->options & NAND_NEED_READRDY) { + /* Apply delay or wait for ready/busy pin */ + if (!chip->dev_ready) + udelay(chip->chip_delay); + else + nand_wait_ready(mtd); + } + readlen -= len; if (!readlen) break; --- linux-ppc-3.8.0.orig/drivers/mmc/host/rtsx_pci_sdmmc.c +++ linux-ppc-3.8.0/drivers/mmc/host/rtsx_pci_sdmmc.c @@ -678,12 +678,19 @@ 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); @@ -901,6 +908,9 @@ 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); @@ -1073,6 +1083,10 @@ 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); @@ -1083,11 +1097,6 @@ voltage = OUTPUT_1V8; if (voltage == OUTPUT_1V8) { - err = rtsx_pci_write_register(pcr, - SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); - if (err < 0) - goto out; - err = sd_wait_voltage_stable_1(host); if (err < 0) goto out; @@ -1122,6 +1131,10 @@ 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); --- linux-ppc-3.8.0.orig/drivers/mmc/host/atmel-mci.c +++ linux-ppc-3.8.0/drivers/mmc/host/atmel-mci.c @@ -178,6 +178,7 @@ void __iomem *regs; struct scatterlist *sg; + unsigned int sg_len; unsigned int pio_offset; unsigned int *buffer; unsigned int buf_size; @@ -892,6 +893,7 @@ data->error = -EINPROGRESS; host->sg = data->sg; + host->sg_len = data->sg_len; host->data = data; host->data_chan = NULL; @@ -1826,7 +1828,8 @@ if (offset == sg->length) { flush_dcache_page(sg_page(sg)); host->sg = sg = sg_next(sg); - if (!sg) + host->sg_len--; + if (!sg || !host->sg_len) goto done; offset = 0; @@ -1839,7 +1842,8 @@ flush_dcache_page(sg_page(sg)); host->sg = sg = sg_next(sg); - if (!sg) + host->sg_len--; + if (!sg || !host->sg_len) goto done; offset = 4 - remaining; @@ -1890,7 +1894,8 @@ nbytes += 4; if (offset == sg->length) { host->sg = sg = sg_next(sg); - if (!sg) + host->sg_len--; + if (!sg || !host->sg_len) goto done; offset = 0; @@ -1904,7 +1909,8 @@ nbytes += remaining; host->sg = sg = sg_next(sg); - if (!sg) { + host->sg_len--; + if (!sg || !host->sg_len) { atmci_writel(host, ATMCI_TDR, value); goto done; } @@ -2487,10 +2493,8 @@ atmci_readl(host, ATMCI_SR); clk_disable(host->mck); -#ifdef CONFIG_MMC_ATMELMCI_DMA if (host->dma.chan) dma_release_channel(host->dma.chan); -#endif free_irq(platform_get_irq(pdev, 0), host); iounmap(host->regs); --- linux-ppc-3.8.0.orig/drivers/mmc/host/sdhci-esdhc-imx.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/mmc/host/omap_hsmmc.c +++ linux-ppc-3.8.0/drivers/mmc/host/omap_hsmmc.c @@ -1819,7 +1819,7 @@ host->slot_id = 0; host->mapbase = res->start + pdata->reg_offset; host->base = ioremap(host->mapbase, SZ_4K); - host->power_mode = MMC_POWER_OFF; + host->power_mode = -1; host->next_data.cookie = 1; platform_set_drvdata(pdev, host); --- linux-ppc-3.8.0.orig/drivers/mmc/host/Kconfig +++ linux-ppc-3.8.0/drivers/mmc/host/Kconfig @@ -292,16 +292,6 @@ If unsure, say N. -config MMC_ATMELMCI_DMA - bool "Atmel MCI DMA support" - depends on MMC_ATMELMCI && (AVR32 || ARCH_AT91SAM9G45) && DMA_ENGINE - help - Say Y here to have the Atmel MCI driver use a DMA engine to - do data transfers and thus increase the throughput and - reduce the CPU utilization. - - If unsure, say N. - config MMC_MSM tristate "Qualcomm SDCC Controller Support" depends on MMC && ARCH_MSM --- linux-ppc-3.8.0.orig/drivers/mmc/core/mmc.c +++ linux-ppc-3.8.0/drivers/mmc/core/mmc.c @@ -368,13 +368,13 @@ ext_csd[EXT_CSD_SEC_FEATURE_SUPPORT]; card->ext_csd.raw_trim_mult = ext_csd[EXT_CSD_TRIM_MULT]; + card->ext_csd.raw_partition_support = ext_csd[EXT_CSD_PARTITION_SUPPORT]; if (card->ext_csd.rev >= 4) { /* * Enhanced area feature support -- check whether the eMMC * card has the Enhanced area enabled. If so, export enhanced * area offset and size to user by adding sysfs interface. */ - card->ext_csd.raw_partition_support = ext_csd[EXT_CSD_PARTITION_SUPPORT]; if ((ext_csd[EXT_CSD_PARTITION_SUPPORT] & 0x2) && (ext_csd[EXT_CSD_PARTITION_ATTRIBUTE] & 0x1)) { hc_erase_grp_sz = @@ -496,7 +496,7 @@ * RPMB regions are defined in multiples of 128K. */ card->ext_csd.raw_rpmb_size_mult = ext_csd[EXT_CSD_RPMB_MULT]; - if (ext_csd[EXT_CSD_RPMB_MULT]) { + if (ext_csd[EXT_CSD_RPMB_MULT] && mmc_host_cmd23(card->host)) { mmc_part_add(card, ext_csd[EXT_CSD_RPMB_MULT] << 17, EXT_CSD_PART_CONFIG_ACC_RPMB, "rpmb", 0, false, --- linux-ppc-3.8.0.orig/drivers/net/tun.c +++ linux-ppc-3.8.0/drivers/net/tun.c @@ -748,6 +748,8 @@ goto drop; skb_orphan(skb); + nf_reset(skb); + /* Enqueue packet */ skb_queue_tail(&tfile->socket.sk->sk_receive_queue, skb); @@ -1036,6 +1038,29 @@ return 0; } +static unsigned long iov_pages(const struct iovec *iv, int offset, + unsigned long nr_segs) +{ + unsigned long seg, base; + int pages = 0, len, size; + + while (nr_segs && (offset >= iv->iov_len)) { + offset -= iv->iov_len; + ++iv; + --nr_segs; + } + + for (seg = 0; seg < nr_segs; seg++) { + base = (unsigned long)iv[seg].iov_base + offset; + len = iv[seg].iov_len - offset; + size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT; + pages += size; + offset = 0; + } + + return pages; +} + /* Get packet from user space buffer */ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile, void *msg_control, const struct iovec *iv, @@ -1043,7 +1068,7 @@ { struct tun_pi pi = { 0, cpu_to_be16(ETH_P_IP) }; struct sk_buff *skb; - size_t len = total_len, align = NET_SKB_PAD; + size_t len = total_len, align = NET_SKB_PAD, linear; struct virtio_net_hdr gso = { 0 }; int offset = 0; int copylen; @@ -1083,34 +1108,23 @@ return -EINVAL; } - if (msg_control) - zerocopy = true; - - if (zerocopy) { - /* Userspace may produce vectors with count greater than - * MAX_SKB_FRAGS, so we need to linearize parts of the skb - * to let the rest of data to be fit in the frags. - */ - if (count > MAX_SKB_FRAGS) { - copylen = iov_length(iv, count - MAX_SKB_FRAGS); - if (copylen < offset) - copylen = 0; - else - copylen -= offset; - } else - copylen = 0; - /* There are 256 bytes to be copied in skb, so there is enough - * room for skb expand head in case it is used. + if (msg_control) { + /* There are 256 bytes to be copied in skb, so there is + * enough room for skb expand head in case it is used. * The rest of the buffer is mapped from userspace. */ - if (copylen < gso.hdr_len) - copylen = gso.hdr_len; - if (!copylen) - copylen = GOODCOPY_LEN; - } else + copylen = gso.hdr_len ? gso.hdr_len : GOODCOPY_LEN; + linear = copylen; + if (iov_pages(iv, offset + copylen, count) <= MAX_SKB_FRAGS) + zerocopy = true; + } + + if (!zerocopy) { copylen = len; + linear = gso.hdr_len; + } - skb = tun_alloc_skb(tfile, align, copylen, gso.hdr_len, noblock); + skb = tun_alloc_skb(tfile, align, copylen, linear, noblock); if (IS_ERR(skb)) { if (PTR_ERR(skb) != -EAGAIN) tun->dev->stats.rx_dropped++; @@ -1119,8 +1133,13 @@ if (zerocopy) err = zerocopy_sg_from_iovec(skb, iv, offset, count); - else + else { err = skb_copy_datagram_from_iovec(skb, 0, iv, offset, len); + if (!err && msg_control) { + struct ubuf_info *uarg = msg_control; + uarg->callback(uarg, false); + } + } if (err) { tun->dev->stats.rx_dropped++; @@ -1469,14 +1488,17 @@ if (!tun) return -EBADFD; - if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) - return -EINVAL; + if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) { + ret = -EINVAL; + goto out; + } ret = tun_do_read(tun, tfile, iocb, m->msg_iov, total_len, flags & MSG_DONTWAIT); if (ret > total_len) { m->msg_flags |= MSG_TRUNC; ret = flags & MSG_TRUNC ? ret : total_len; } +out: tun_put(tun); return ret; } @@ -1580,6 +1602,10 @@ else return -EINVAL; + if (!!(ifr->ifr_flags & IFF_MULTI_QUEUE) != + !!(tun->flags & TUN_TAP_MQ)) + return -EINVAL; + if (tun_not_capable(tun)) return -EPERM; err = security_tun_dev_open(tun->security); @@ -2145,6 +2171,8 @@ set_bit(SOCK_EXTERNALLY_ALLOCATED, &tfile->socket.flags); INIT_LIST_HEAD(&tfile->next); + sock_set_flag(&tfile->sk, SOCK_ZEROCOPY); + return 0; } --- linux-ppc-3.8.0.orig/drivers/net/Makefile +++ linux-ppc-3.8.0/drivers/net/Makefile @@ -55,6 +55,7 @@ obj-$(CONFIG_WLAN) += wireless/ obj-$(CONFIG_WIMAX) += wimax/ obj-$(CONFIG_IEEE802154) += ieee802154/ +obj-$(if $(CONFIG_DPA),y) += dpa/ obj-$(CONFIG_VMXNET3) += vmxnet3/ obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o --- linux-ppc-3.8.0.orig/drivers/net/vxlan.c +++ linux-ppc-3.8.0/drivers/net/vxlan.c @@ -284,7 +284,7 @@ } /* Look up Ethernet address in forwarding table */ -static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan, +static struct vxlan_fdb *__vxlan_find_mac(struct vxlan_dev *vxlan, const u8 *mac) { @@ -300,6 +300,18 @@ return NULL; } +static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan, + const u8 *mac) +{ + struct vxlan_fdb *f; + + f = __vxlan_find_mac(vxlan, mac); + if (f) + f->used = jiffies; + + return f; +} + /* Add new entry to forwarding table -- assumes lock held */ static int vxlan_fdb_create(struct vxlan_dev *vxlan, const u8 *mac, __be32 ip, @@ -308,7 +320,7 @@ struct vxlan_fdb *f; int notify = 0; - f = vxlan_find_mac(vxlan, mac); + f = __vxlan_find_mac(vxlan, mac); if (f) { if (flags & NLM_F_EXCL) { netdev_dbg(vxlan->dev, @@ -453,7 +465,6 @@ f = vxlan_find_mac(vxlan, src_mac); if (likely(f)) { - f->used = jiffies; if (likely(f->remote_ip == src_ip)) return; @@ -1491,6 +1502,15 @@ static __net_exit void vxlan_exit_net(struct net *net) { struct vxlan_net *vn = net_generic(net, vxlan_net_id); + struct vxlan_dev *vxlan; + struct hlist_node *pos; + unsigned h; + + rtnl_lock(); + for (h = 0; h < VNI_HASH_SIZE; ++h) + hlist_for_each_entry(vxlan, pos, &vn->vni_list[h], hlist) + dev_close(vxlan->dev); + rtnl_unlock(); if (vn->sock) { sk_release_kernel(vn->sock->sk); --- linux-ppc-3.8.0.orig/drivers/net/macvlan.c +++ linux-ppc-3.8.0/drivers/net/macvlan.c @@ -204,7 +204,8 @@ } if (port->passthru) - vlan = list_first_entry(&port->vlans, struct macvlan_dev, list); + vlan = list_first_or_null_rcu(&port->vlans, + struct macvlan_dev, list); else vlan = macvlan_hash_lookup(port, eth->h_dest); if (vlan == NULL) @@ -628,6 +629,7 @@ ether_setup(dev); dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING); + dev->priv_flags |= IFF_UNICAST_FLT; dev->netdev_ops = &macvlan_netdev_ops; dev->destructor = free_netdev; dev->header_ops = &macvlan_hard_header_ops, @@ -770,7 +772,7 @@ if (err < 0) goto destroy_port; - list_add_tail(&vlan->list, &port->vlans); + list_add_tail_rcu(&vlan->list, &port->vlans); netif_stacked_transfer_operstate(lowerdev, dev); return 0; @@ -796,7 +798,7 @@ { struct macvlan_dev *vlan = netdev_priv(dev); - list_del(&vlan->list); + list_del_rcu(&vlan->list); unregister_netdevice_queue(dev, head); } EXPORT_SYMBOL_GPL(macvlan_dellink); --- linux-ppc-3.8.0.orig/drivers/net/xen-netfront.c +++ linux-ppc-3.8.0/drivers/net/xen-netfront.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include #include @@ -548,6 +548,16 @@ unsigned int len = skb_headlen(skb); unsigned long flags; + /* If skb->len is too big for wire format, drop skb and alert + * user about misconfiguration. + */ + if (unlikely(skb->len > XEN_NETIF_MAX_TX_SIZE)) { + net_alert_ratelimited( + "xennet: skb->len = %u, too big for wire format\n", + skb->len); + goto drop; + } + slots = DIV_ROUND_UP(offset + len, PAGE_SIZE) + xennet_count_skb_frag_slots(skb); if (unlikely(slots > MAX_SKB_FRAGS + 1)) { @@ -1064,7 +1074,8 @@ static int xennet_change_mtu(struct net_device *dev, int mtu) { - int max = xennet_can_sg(dev) ? 65535 - ETH_HLEN : ETH_DATA_LEN; + int max = xennet_can_sg(dev) ? + XEN_NETIF_MAX_TX_SIZE - MAX_TCP_HEADER : ETH_DATA_LEN; if (mtu > max) return -EINVAL; @@ -1368,6 +1379,8 @@ SET_ETHTOOL_OPS(netdev, &xennet_ethtool_ops); SET_NETDEV_DEV(netdev, &dev->dev); + netif_set_gso_max_size(netdev, XEN_NETIF_MAX_TX_SIZE - MAX_TCP_HEADER); + np->netdev = netdev; netif_carrier_off(netdev); --- linux-ppc-3.8.0.orig/drivers/net/dummy.c +++ linux-ppc-3.8.0/drivers/net/dummy.c @@ -175,6 +175,8 @@ rtnl_lock(); err = __rtnl_link_register(&dummy_link_ops); + if (err < 0) + goto out; for (i = 0; i < numdummies && !err; i++) { err = dummy_init_one(); @@ -182,6 +184,8 @@ } if (err < 0) __rtnl_link_unregister(&dummy_link_ops); + +out: rtnl_unlock(); return err; --- linux-ppc-3.8.0.orig/drivers/net/macvtap.c +++ linux-ppc-3.8.0/drivers/net/macvtap.c @@ -535,8 +535,10 @@ return -EMSGSIZE; num_pages = get_user_pages_fast(base, size, 0, &page[i]); if (num_pages != size) { - for (i = 0; i < num_pages; i++) - put_page(page[i]); + int j; + + for (j = 0; j < num_pages; j++) + put_page(page[i + j]); return -EFAULT; } truesize = size * PAGE_SIZE; @@ -642,6 +644,28 @@ return 0; } +static unsigned long iov_pages(const struct iovec *iv, int offset, + unsigned long nr_segs) +{ + unsigned long seg, base; + int pages = 0, len, size; + + while (nr_segs && (offset >= iv->iov_len)) { + offset -= iv->iov_len; + ++iv; + --nr_segs; + } + + for (seg = 0; seg < nr_segs; seg++) { + base = (unsigned long)iv[seg].iov_base + offset; + len = iv[seg].iov_len - offset; + size = ((base & ~PAGE_MASK) + len + ~PAGE_MASK) >> PAGE_SHIFT; + pages += size; + offset = 0; + } + + return pages; +} /* Get packet from user space buffer */ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m, @@ -656,6 +680,7 @@ int vnet_hdr_len = 0; int copylen = 0; bool zerocopy = false; + size_t linear; if (q->flags & IFF_VNET_HDR) { vnet_hdr_len = q->vnet_hdr_sz; @@ -687,42 +712,35 @@ if (unlikely(count > UIO_MAXIOV)) goto err; - if (m && m->msg_control && sock_flag(&q->sk, SOCK_ZEROCOPY)) - zerocopy = true; + if (m && m->msg_control && sock_flag(&q->sk, SOCK_ZEROCOPY)) { + copylen = vnet_hdr.hdr_len ? vnet_hdr.hdr_len : GOODCOPY_LEN; + linear = copylen; + if (iov_pages(iv, vnet_hdr_len + copylen, count) + <= MAX_SKB_FRAGS) + zerocopy = true; + } - if (zerocopy) { - /* Userspace may produce vectors with count greater than - * MAX_SKB_FRAGS, so we need to linearize parts of the skb - * to let the rest of data to be fit in the frags. - */ - if (count > MAX_SKB_FRAGS) { - copylen = iov_length(iv, count - MAX_SKB_FRAGS); - if (copylen < vnet_hdr_len) - copylen = 0; - else - copylen -= vnet_hdr_len; - } - /* There are 256 bytes to be copied in skb, so there is enough - * room for skb expand head in case it is used. - * The rest buffer is mapped from userspace. - */ - if (copylen < vnet_hdr.hdr_len) - copylen = vnet_hdr.hdr_len; - if (!copylen) - copylen = GOODCOPY_LEN; - } else + if (!zerocopy) { copylen = len; + linear = vnet_hdr.hdr_len; + } skb = macvtap_alloc_skb(&q->sk, NET_IP_ALIGN, copylen, - vnet_hdr.hdr_len, noblock, &err); + linear, noblock, &err); if (!skb) goto err; if (zerocopy) err = zerocopy_sg_from_iovec(skb, iv, vnet_hdr_len, count); - else + else { err = skb_copy_datagram_from_iovec(skb, 0, iv, vnet_hdr_len, len); + if (!err && m && m->msg_control) { + struct ubuf_info *uarg = m->msg_control; + uarg->callback(uarg, false); + } + } + if (err) goto err_kfree; --- linux-ppc-3.8.0.orig/drivers/net/netconsole.c +++ linux-ppc-3.8.0/drivers/net/netconsole.c @@ -630,6 +630,7 @@ goto done; spin_lock_irqsave(&target_list_lock, flags); +restart: list_for_each_entry(nt, &target_list, list) { netconsole_target_get(nt); if (nt->np.dev == dev) { @@ -642,15 +643,17 @@ case NETDEV_UNREGISTER: /* * rtnl_lock already held + * we might sleep in __netpoll_cleanup() */ - if (nt->np.dev) { - __netpoll_cleanup(&nt->np); - dev_put(nt->np.dev); - nt->np.dev = NULL; - } + spin_unlock_irqrestore(&target_list_lock, flags); + __netpoll_cleanup(&nt->np); + spin_lock_irqsave(&target_list_lock, flags); + dev_put(nt->np.dev); + nt->np.dev = NULL; nt->enabled = 0; stopped = true; - break; + netconsole_target_put(nt); + goto restart; } } netconsole_target_put(nt); --- linux-ppc-3.8.0.orig/drivers/net/ifb.c +++ linux-ppc-3.8.0/drivers/net/ifb.c @@ -290,11 +290,17 @@ rtnl_lock(); err = __rtnl_link_register(&ifb_link_ops); + if (err < 0) + goto out; - for (i = 0; i < numifbs && !err; i++) + for (i = 0; i < numifbs && !err; i++) { err = ifb_init_one(i); + cond_resched(); + } if (err) __rtnl_link_unregister(&ifb_link_ops); + +out: rtnl_unlock(); return err; --- linux-ppc-3.8.0.orig/drivers/net/Kconfig +++ linux-ppc-3.8.0/drivers/net/Kconfig @@ -331,7 +331,6 @@ The corresponding Linux frontend driver is enabled by the CONFIG_XEN_NETDEV_FRONTEND configuration option. - The backend driver presents a standard network device endpoint for each paravirtual network device to the driver domain network stack. These can then be bridged or routed @@ -343,12 +342,63 @@ will be called xen-netback. config VMXNET3 - tristate "VMware VMXNET3 ethernet driver" - depends on PCI && INET + tristate "VMware VMXNET3 ethernet driver" + depends on PCI && INET + help + This driver supports VMware's vmxnet3 virtual ethernet NIC. + To compile this driver as a module, choose M here: the + module will be called vmxnet3. + +config DPA + bool "Freescale Data Path Frame Manager Ethernet" + depends on FSL_SOC && FSL_BMAN_PORTAL && FSL_QMAN_PORTAL && FSL_FMAN + select PHYLIB + +config DPA_OFFLINE_PORTS + bool "Offline Ports support" + depends on DPA + default y + help + The Offline Parsing / Host Command ports (short: OH ports, of Offline ports) provide + most of the functionality of the regular, online ports, except they receive their + frames from a core or an accelerator on the SoC, via QMan frame queues, + rather than directly from the network. + Offline ports are configured via PCD (Parse-Classify-Distribute) schemes, just like + any online FMan port. They deliver the processed frames to frame queues, according + to the applied PCD configurations. + + Choosing this feature will not impact the functionality and/or performance of the system, + so it is safe to have it. + +config DPA_MAX_FRM_SIZE + int "Maximum L2 frame size" + depends on DPA + range 64 9600 + default "1522" help - This driver supports VMware's vmxnet3 virtual ethernet NIC. - To compile this driver as a module, choose M here: the - module will be called vmxnet3. + Configure this in relation to the maximum possible MTU of your network configuration. In particular, + one would need to increase this value in order to use jumbo frames. DPA_MAX_FRM_SIZE must accomodate + the Ethernet FCS (4 bytes) and one ETH+VLAN header (18 bytes), to a total of 22 bytes in excess of + the desired L3 MTU. + + Note that having too large a DPA_MAX_FRM_SIZE (much larger than the actual MTU) may lead to buffer + exhaustion, especially in the case of badly fragmented datagrams on the Rx path. Conversely, + having a DPA_MAX_FRM_SIZE smaller than the actual MTU will lead to frames being dropped. + + This can be overridden by specifying "fsl_fman_phy_max_frm" in the kernel bootargs: + * in Hypervisor-based scenarios, by adding a "chosen" node with the "bootargs" property specifying + "fsl_fman_phy_max_frm="; + * in non-Hypervisor-based scenarios, via u-boot's env, by modifying the "bootargs" env variable. + +config FSL_DPA_1588 + tristate "IEEE 1588-compliant timestamping" + depends on DPA + default n + +config DPAA_ETH_UNIT_TESTS + bool "Run Unit Tests for DPAA Ethernet" + depends on DPA + default y source "drivers/net/hyperv/Kconfig" --- linux-ppc-3.8.0.orig/drivers/net/veth.c +++ linux-ppc-3.8.0/drivers/net/veth.c @@ -25,18 +25,15 @@ #define MIN_MTU 68 /* Min L3 MTU */ #define MAX_MTU 65535 /* Max L3 MTU (arbitrary) */ -struct veth_net_stats { - u64 rx_packets; - u64 rx_bytes; - u64 tx_packets; - u64 tx_bytes; - u64 rx_dropped; +struct pcpu_vstats { + u64 packets; + u64 bytes; struct u64_stats_sync syncp; }; struct veth_priv { - struct net_device *peer; - struct veth_net_stats __percpu *stats; + struct net_device __rcu *peer; + atomic64_t dropped; }; /* @@ -92,10 +89,10 @@ static void veth_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *stats, u64 *data) { - struct veth_priv *priv; + struct veth_priv *priv = netdev_priv(dev); + struct net_device *peer = rtnl_dereference(priv->peer); - priv = netdev_priv(dev); - data[0] = priv->peer->ifindex; + data[0] = peer ? peer->ifindex : 0; } static const struct ethtool_ops veth_ethtool_ops = { @@ -107,50 +104,37 @@ .get_ethtool_stats = veth_get_ethtool_stats, }; -/* - * xmit - */ - static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev) { - struct net_device *rcv = NULL; - struct veth_priv *priv, *rcv_priv; - struct veth_net_stats *stats, *rcv_stats; - int length; - - priv = netdev_priv(dev); - rcv = priv->peer; - rcv_priv = netdev_priv(rcv); - - stats = this_cpu_ptr(priv->stats); - rcv_stats = this_cpu_ptr(rcv_priv->stats); + struct veth_priv *priv = netdev_priv(dev); + struct net_device *rcv; + int length = skb->len; + rcu_read_lock(); + rcv = rcu_dereference(priv->peer); + if (unlikely(!rcv)) { + kfree_skb(skb); + goto drop; + } /* don't change ip_summed == CHECKSUM_PARTIAL, as that - will cause bad checksum on forwarded packets */ + * will cause bad checksum on forwarded packets + */ if (skb->ip_summed == CHECKSUM_NONE && rcv->features & NETIF_F_RXCSUM) skb->ip_summed = CHECKSUM_UNNECESSARY; - length = skb->len; - if (dev_forward_skb(rcv, skb) != NET_RX_SUCCESS) - goto rx_drop; - - u64_stats_update_begin(&stats->syncp); - stats->tx_bytes += length; - stats->tx_packets++; - u64_stats_update_end(&stats->syncp); - - u64_stats_update_begin(&rcv_stats->syncp); - rcv_stats->rx_bytes += length; - rcv_stats->rx_packets++; - u64_stats_update_end(&rcv_stats->syncp); + if (likely(dev_forward_skb(rcv, skb) == NET_RX_SUCCESS)) { + struct pcpu_vstats *stats = this_cpu_ptr(dev->vstats); - return NETDEV_TX_OK; - -rx_drop: - u64_stats_update_begin(&rcv_stats->syncp); - rcv_stats->rx_dropped++; - u64_stats_update_end(&rcv_stats->syncp); + u64_stats_update_begin(&stats->syncp); + stats->bytes += length; + stats->packets++; + u64_stats_update_end(&stats->syncp); + } else { +drop: + atomic64_inc(&priv->dropped); + } + rcu_read_unlock(); return NETDEV_TX_OK; } @@ -158,47 +142,63 @@ * general routines */ -static struct rtnl_link_stats64 *veth_get_stats64(struct net_device *dev, - struct rtnl_link_stats64 *tot) +static u64 veth_stats_one(struct pcpu_vstats *result, struct net_device *dev) { struct veth_priv *priv = netdev_priv(dev); int cpu; + result->packets = 0; + result->bytes = 0; for_each_possible_cpu(cpu) { - struct veth_net_stats *stats = per_cpu_ptr(priv->stats, cpu); - u64 rx_packets, rx_bytes, rx_dropped; - u64 tx_packets, tx_bytes; + struct pcpu_vstats *stats = per_cpu_ptr(dev->vstats, cpu); + u64 packets, bytes; unsigned int start; do { start = u64_stats_fetch_begin_bh(&stats->syncp); - rx_packets = stats->rx_packets; - tx_packets = stats->tx_packets; - rx_bytes = stats->rx_bytes; - tx_bytes = stats->tx_bytes; - rx_dropped = stats->rx_dropped; + packets = stats->packets; + bytes = stats->bytes; } while (u64_stats_fetch_retry_bh(&stats->syncp, start)); - tot->rx_packets += rx_packets; - tot->tx_packets += tx_packets; - tot->rx_bytes += rx_bytes; - tot->tx_bytes += tx_bytes; - tot->rx_dropped += rx_dropped; + result->packets += packets; + result->bytes += bytes; } + return atomic64_read(&priv->dropped); +} + +static struct rtnl_link_stats64 *veth_get_stats64(struct net_device *dev, + struct rtnl_link_stats64 *tot) +{ + struct veth_priv *priv = netdev_priv(dev); + struct net_device *peer; + struct pcpu_vstats one; + + tot->tx_dropped = veth_stats_one(&one, dev); + tot->tx_bytes = one.bytes; + tot->tx_packets = one.packets; + + rcu_read_lock(); + peer = rcu_dereference(priv->peer); + if (peer) { + tot->rx_dropped = veth_stats_one(&one, peer); + tot->rx_bytes = one.bytes; + tot->rx_packets = one.packets; + } + rcu_read_unlock(); return tot; } static int veth_open(struct net_device *dev) { - struct veth_priv *priv; + struct veth_priv *priv = netdev_priv(dev); + struct net_device *peer = rtnl_dereference(priv->peer); - priv = netdev_priv(dev); - if (priv->peer == NULL) + if (!peer) return -ENOTCONN; - if (priv->peer->flags & IFF_UP) { + if (peer->flags & IFF_UP) { netif_carrier_on(dev); - netif_carrier_on(priv->peer); + netif_carrier_on(peer); } return 0; } @@ -206,9 +206,11 @@ static int veth_close(struct net_device *dev) { struct veth_priv *priv = netdev_priv(dev); + struct net_device *peer = rtnl_dereference(priv->peer); netif_carrier_off(dev); - netif_carrier_off(priv->peer); + if (peer) + netif_carrier_off(peer); return 0; } @@ -228,24 +230,16 @@ static int veth_dev_init(struct net_device *dev) { - struct veth_net_stats __percpu *stats; - struct veth_priv *priv; - - stats = alloc_percpu(struct veth_net_stats); - if (stats == NULL) + dev->vstats = alloc_percpu(struct pcpu_vstats); + if (!dev->vstats) return -ENOMEM; - priv = netdev_priv(dev); - priv->stats = stats; return 0; } static void veth_dev_free(struct net_device *dev) { - struct veth_priv *priv; - - priv = netdev_priv(dev); - free_percpu(priv->stats); + free_percpu(dev->vstats); free_netdev(dev); } @@ -259,6 +253,10 @@ .ndo_set_mac_address = eth_mac_addr, }; +#define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ + NETIF_F_HW_CSUM | NETIF_F_RXCSUM | NETIF_F_HIGHDMA | \ + NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX) + static void veth_setup(struct net_device *dev) { ether_setup(dev); @@ -269,9 +267,10 @@ dev->netdev_ops = &veth_netdev_ops; dev->ethtool_ops = &veth_ethtool_ops; dev->features |= NETIF_F_LLTX; + dev->features |= VETH_FEATURES; dev->destructor = veth_dev_free; - dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_RXCSUM; + dev->hw_features = VETH_FEATURES; } /* @@ -396,10 +395,10 @@ */ priv = netdev_priv(dev); - priv->peer = peer; + rcu_assign_pointer(priv->peer, peer); priv = netdev_priv(peer); - priv->peer = dev; + rcu_assign_pointer(priv->peer, dev); return 0; err_register_dev: @@ -420,10 +419,20 @@ struct net_device *peer; priv = netdev_priv(dev); - peer = priv->peer; + peer = rtnl_dereference(priv->peer); + /* Note : dellink() is called from default_device_exit_batch(), + * before a rcu_synchronize() point. The devices are guaranteed + * not being freed before one RCU grace period. + */ + RCU_INIT_POINTER(priv->peer, NULL); unregister_netdevice_queue(dev, head); - unregister_netdevice_queue(peer, head); + + if (peer) { + priv = netdev_priv(peer); + RCU_INIT_POINTER(priv->peer, NULL); + unregister_netdevice_queue(peer, head); + } } static const struct nla_policy veth_policy[VETH_INFO_MAX + 1] = { --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/mcdi.c +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/mcdi.c @@ -667,7 +667,7 @@ int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address, u16 *fw_subtype_list, u32 *capabilities) { - uint8_t outbuf[MC_CMD_GET_BOARD_CFG_OUT_LENMIN]; + uint8_t outbuf[MC_CMD_GET_BOARD_CFG_OUT_LENMAX]; size_t outlen, offset, i; int port_num = efx_port_num(efx); int rc; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/efx.h +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/efx.h @@ -171,9 +171,9 @@ * TX scheduler is stopped when we're done and before * netif_device_present() becomes false. */ - netif_tx_lock(dev); + netif_tx_lock_bh(dev); netif_device_detach(dev); - netif_tx_unlock(dev); + netif_tx_unlock_bh(dev); } #endif /* EFX_EFX_H */ --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/rx.c +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/rx.c @@ -90,11 +90,7 @@ static inline unsigned int efx_rx_buf_offset(struct efx_nic *efx, struct efx_rx_buffer *buf) { - /* Offset is always within one page, so we don't need to consider - * the page order. - */ - return ((unsigned int) buf->dma_addr & (PAGE_SIZE - 1)) + - efx->type->rx_buffer_hash_size; + return buf->page_offset + efx->type->rx_buffer_hash_size; } static inline unsigned int efx_rx_buf_size(struct efx_nic *efx) { @@ -187,6 +183,7 @@ struct efx_nic *efx = rx_queue->efx; struct efx_rx_buffer *rx_buf; struct page *page; + unsigned int page_offset; struct efx_rx_page_state *state; dma_addr_t dma_addr; unsigned index, count; @@ -211,12 +208,14 @@ state->dma_addr = dma_addr; dma_addr += sizeof(struct efx_rx_page_state); + page_offset = sizeof(struct efx_rx_page_state); split: index = rx_queue->added_count & rx_queue->ptr_mask; rx_buf = efx_rx_buffer(rx_queue, index); rx_buf->dma_addr = dma_addr + EFX_PAGE_IP_ALIGN; rx_buf->u.page = page; + rx_buf->page_offset = page_offset + EFX_PAGE_IP_ALIGN; rx_buf->len = efx->rx_buffer_len - EFX_PAGE_IP_ALIGN; rx_buf->flags = EFX_RX_BUF_PAGE; ++rx_queue->added_count; @@ -227,6 +226,7 @@ /* Use the second half of the page */ get_page(page); dma_addr += (PAGE_SIZE >> 1); + page_offset += (PAGE_SIZE >> 1); ++count; goto split; } @@ -236,7 +236,8 @@ } static void efx_unmap_rx_buffer(struct efx_nic *efx, - struct efx_rx_buffer *rx_buf) + struct efx_rx_buffer *rx_buf, + unsigned int used_len) { if ((rx_buf->flags & EFX_RX_BUF_PAGE) && rx_buf->u.page) { struct efx_rx_page_state *state; @@ -247,6 +248,10 @@ state->dma_addr, efx_rx_buf_size(efx), DMA_FROM_DEVICE); + } else if (used_len) { + dma_sync_single_for_cpu(&efx->pci_dev->dev, + rx_buf->dma_addr, used_len, + DMA_FROM_DEVICE); } } else if (!(rx_buf->flags & EFX_RX_BUF_PAGE) && rx_buf->u.skb) { dma_unmap_single(&efx->pci_dev->dev, rx_buf->dma_addr, @@ -269,7 +274,7 @@ static void efx_fini_rx_buffer(struct efx_rx_queue *rx_queue, struct efx_rx_buffer *rx_buf) { - efx_unmap_rx_buffer(rx_queue->efx, rx_buf); + efx_unmap_rx_buffer(rx_queue->efx, rx_buf, 0); efx_free_rx_buffer(rx_queue->efx, rx_buf); } @@ -535,10 +540,10 @@ goto out; } - /* Release card resources - assumes all RX buffers consumed in-order - * per RX queue + /* Release and/or sync DMA mapping - assumes all RX buffers + * consumed in-order per RX queue */ - efx_unmap_rx_buffer(efx, rx_buf); + efx_unmap_rx_buffer(efx, rx_buf, len); /* Prefetch nice and early so data will (hopefully) be in cache by * the time we look at it. --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/net_driver.h +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/net_driver.h @@ -210,6 +210,7 @@ * Will be %NULL if the buffer slot is currently free. * @page: The associated page buffer. Valif iff @flags & %EFX_RX_BUF_PAGE. * Will be %NULL if the buffer slot is currently free. + * @page_offset: Offset within page. Valid iff @flags & %EFX_RX_BUF_PAGE. * @len: Buffer length, in bytes. * @flags: Flags for buffer and packet state. */ @@ -219,7 +220,8 @@ struct sk_buff *skb; struct page *page; } u; - unsigned int len; + u16 page_offset; + u16 len; u16 flags; }; #define EFX_RX_BUF_PAGE 0x0001 --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/ptp.c +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/ptp.c @@ -1439,7 +1439,7 @@ delta = timespec_sub(*e_ts, time_now); - efx_phc_adjtime(ptp, timespec_to_ns(&delta)); + rc = efx_phc_adjtime(ptp, timespec_to_ns(&delta)); if (rc != 0) return rc; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/efx.c +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/efx.c @@ -779,6 +779,7 @@ tx_queue->txd.entries); } + efx_device_detach_sync(efx); efx_stop_all(efx); efx_stop_interrupts(efx, true); @@ -832,6 +833,7 @@ efx_start_interrupts(efx, true); efx_start_all(efx); + netif_device_attach(efx->net_dev); return rc; rollback: @@ -1641,8 +1643,12 @@ /* Flush efx_mac_work(), refill_workqueue, monitor_work */ efx_flush_all(efx); - /* Stop the kernel transmit interface late, so the watchdog - * timer isn't ticking over the flush */ + /* Stop the kernel transmit interface. This is only valid if + * the device is stopped or detached; otherwise the watchdog + * may fire immediately. + */ + WARN_ON(netif_running(efx->net_dev) && + netif_device_present(efx->net_dev)); netif_tx_disable(efx->net_dev); efx_stop_datapath(efx); @@ -1963,16 +1969,18 @@ if (new_mtu > EFX_MAX_MTU) return -EINVAL; - efx_stop_all(efx); - netif_dbg(efx, drv, efx->net_dev, "changing MTU to %d\n", new_mtu); + efx_device_detach_sync(efx); + efx_stop_all(efx); + mutex_lock(&efx->mac_lock); net_dev->mtu = new_mtu; efx->type->reconfigure_mac(efx); mutex_unlock(&efx->mac_lock); efx_start_all(efx); + netif_device_attach(efx->net_dev); return 0; } --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sfc/nic.c +++ linux-ppc-3.8.0/drivers/net/ethernet/sfc/nic.c @@ -376,7 +376,8 @@ return false; tx_queue->empty_read_count = 0; - return ((empty_read_count ^ write_count) & ~EFX_EMPTY_COUNT_VALID) == 0; + return ((empty_read_count ^ write_count) & ~EFX_EMPTY_COUNT_VALID) == 0 + && tx_queue->write_count - write_count == 1; } /* For each entry inserted into the software descriptor ring, create a --- linux-ppc-3.8.0.orig/drivers/net/ethernet/ibm/ibmveth.c +++ linux-ppc-3.8.0/drivers/net/ethernet/ibm/ibmveth.c @@ -1326,7 +1326,7 @@ static int ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id) { - int rc, i; + int rc, i, mac_len; struct net_device *netdev; struct ibmveth_adapter *adapter; unsigned char *mac_addr_p; @@ -1336,11 +1336,19 @@ dev->unit_address); mac_addr_p = (unsigned char *)vio_get_attribute(dev, VETH_MAC_ADDR, - NULL); + &mac_len); if (!mac_addr_p) { dev_err(&dev->dev, "Can't find VETH_MAC_ADDR attribute\n"); return -EINVAL; } + /* Workaround for old/broken pHyp */ + if (mac_len == 8) + mac_addr_p += 2; + else if (mac_len != 6) { + dev_err(&dev->dev, "VETH_MAC_ADDR attribute wrong len %d\n", + mac_len); + return -EINVAL; + } mcastFilterSize_p = (unsigned int *)vio_get_attribute(dev, VETH_MCAST_FILTER_SIZE, NULL); @@ -1365,17 +1373,6 @@ netif_napi_add(netdev, &adapter->napi, ibmveth_poll, 16); - /* - * Some older boxes running PHYP non-natively have an OF that returns - * a 8-byte local-mac-address field (and the first 2 bytes have to be - * ignored) while newer boxes' OF return a 6-byte field. Note that - * IEEE 1275 specifies that local-mac-address must be a 6-byte field. - * The RPA doc specifies that the first byte must be 10b, so we'll - * just look for it to solve this 8 vs. 6 byte field issue - */ - if ((*mac_addr_p & 0x3) != 0x02) - mac_addr_p += 2; - adapter->mac_addr = 0; memcpy(&adapter->mac_addr, mac_addr_p, 6); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/davicom/dm9000.h +++ linux-ppc-3.8.0/drivers/net/ethernet/davicom/dm9000.h @@ -69,7 +69,9 @@ #define NCR_WAKEEN (1<<6) #define NCR_FCOL (1<<4) #define NCR_FDX (1<<3) -#define NCR_LBK (3<<1) + +#define NCR_RESERVED (3<<1) +#define NCR_MAC_LBK (1<<1) #define NCR_RST (1<<0) #define NSR_SPEED (1<<7) @@ -167,5 +169,12 @@ #define ISR_LNKCHNG (1<<5) #define ISR_UNDERRUN (1<<4) +/* Davicom MII registers. + */ + +#define MII_DM_DSPCR 0x1b /* DSP Control Register */ + +#define DSPCR_INIT_PARAM 0xE100 /* DSP init parameter */ + #endif /* _DM9000X_H_ */ --- linux-ppc-3.8.0.orig/drivers/net/ethernet/davicom/dm9000.c +++ linux-ppc-3.8.0/drivers/net/ethernet/davicom/dm9000.c @@ -257,6 +257,107 @@ tmp = readl(reg); } +/* + * Sleep, either by using msleep() or if we are suspending, then + * use mdelay() to sleep. + */ +static void dm9000_msleep(board_info_t *db, unsigned int ms) +{ + if (db->in_suspend) + mdelay(ms); + else + msleep(ms); +} + +/* Read a word from phyxcer */ +static int +dm9000_phy_read(struct net_device *dev, int phy_reg_unused, int reg) +{ + board_info_t *db = netdev_priv(dev); + unsigned long flags; + unsigned int reg_save; + int ret; + + mutex_lock(&db->addr_lock); + + spin_lock_irqsave(&db->lock, flags); + + /* Save previous register address */ + reg_save = readb(db->io_addr); + + /* Fill the phyxcer register into REG_0C */ + iow(db, DM9000_EPAR, DM9000_PHY | reg); + + /* Issue phyxcer read command */ + iow(db, DM9000_EPCR, EPCR_ERPRR | EPCR_EPOS); + + writeb(reg_save, db->io_addr); + spin_unlock_irqrestore(&db->lock, flags); + + dm9000_msleep(db, 1); /* Wait read complete */ + + spin_lock_irqsave(&db->lock, flags); + reg_save = readb(db->io_addr); + + iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer read command */ + + /* The read data keeps on REG_0D & REG_0E */ + ret = (ior(db, DM9000_EPDRH) << 8) | ior(db, DM9000_EPDRL); + + /* restore the previous address */ + writeb(reg_save, db->io_addr); + spin_unlock_irqrestore(&db->lock, flags); + + mutex_unlock(&db->addr_lock); + + dm9000_dbg(db, 5, "phy_read[%02x] -> %04x\n", reg, ret); + return ret; +} + +/* Write a word to phyxcer */ +static void +dm9000_phy_write(struct net_device *dev, + int phyaddr_unused, int reg, int value) +{ + board_info_t *db = netdev_priv(dev); + unsigned long flags; + unsigned long reg_save; + + dm9000_dbg(db, 5, "phy_write[%02x] = %04x\n", reg, value); + mutex_lock(&db->addr_lock); + + spin_lock_irqsave(&db->lock, flags); + + /* Save previous register address */ + reg_save = readb(db->io_addr); + + /* Fill the phyxcer register into REG_0C */ + iow(db, DM9000_EPAR, DM9000_PHY | reg); + + /* Fill the written data into REG_0D & REG_0E */ + iow(db, DM9000_EPDRL, value); + iow(db, DM9000_EPDRH, value >> 8); + + /* Issue phyxcer write command */ + iow(db, DM9000_EPCR, EPCR_EPOS | EPCR_ERPRW); + + writeb(reg_save, db->io_addr); + spin_unlock_irqrestore(&db->lock, flags); + + dm9000_msleep(db, 1); /* Wait write complete */ + + spin_lock_irqsave(&db->lock, flags); + reg_save = readb(db->io_addr); + + iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer write command */ + + /* restore the previous address */ + writeb(reg_save, db->io_addr); + + spin_unlock_irqrestore(&db->lock, flags); + mutex_unlock(&db->addr_lock); +} + /* dm9000_set_io * * select the specified set of io routines to use with the @@ -794,6 +895,9 @@ iow(db, DM9000_GPCR, GPCR_GEP_CNTL); /* Let GPIO0 output */ + dm9000_phy_write(dev, 0, MII_BMCR, BMCR_RESET); /* PHY RESET */ + dm9000_phy_write(dev, 0, MII_DM_DSPCR, DSPCR_INIT_PARAM); /* Init */ + ncr = (db->flags & DM9000_PLATF_EXT_PHY) ? NCR_EXT_PHY : 0; /* if wol is needed, then always set NCR_WAKEEN otherwise we end @@ -1200,109 +1304,6 @@ return 0; } -/* - * Sleep, either by using msleep() or if we are suspending, then - * use mdelay() to sleep. - */ -static void dm9000_msleep(board_info_t *db, unsigned int ms) -{ - if (db->in_suspend) - mdelay(ms); - else - msleep(ms); -} - -/* - * Read a word from phyxcer - */ -static int -dm9000_phy_read(struct net_device *dev, int phy_reg_unused, int reg) -{ - board_info_t *db = netdev_priv(dev); - unsigned long flags; - unsigned int reg_save; - int ret; - - mutex_lock(&db->addr_lock); - - spin_lock_irqsave(&db->lock,flags); - - /* Save previous register address */ - reg_save = readb(db->io_addr); - - /* Fill the phyxcer register into REG_0C */ - iow(db, DM9000_EPAR, DM9000_PHY | reg); - - iow(db, DM9000_EPCR, EPCR_ERPRR | EPCR_EPOS); /* Issue phyxcer read command */ - - writeb(reg_save, db->io_addr); - spin_unlock_irqrestore(&db->lock,flags); - - dm9000_msleep(db, 1); /* Wait read complete */ - - spin_lock_irqsave(&db->lock,flags); - reg_save = readb(db->io_addr); - - iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer read command */ - - /* The read data keeps on REG_0D & REG_0E */ - ret = (ior(db, DM9000_EPDRH) << 8) | ior(db, DM9000_EPDRL); - - /* restore the previous address */ - writeb(reg_save, db->io_addr); - spin_unlock_irqrestore(&db->lock,flags); - - mutex_unlock(&db->addr_lock); - - dm9000_dbg(db, 5, "phy_read[%02x] -> %04x\n", reg, ret); - return ret; -} - -/* - * Write a word to phyxcer - */ -static void -dm9000_phy_write(struct net_device *dev, - int phyaddr_unused, int reg, int value) -{ - board_info_t *db = netdev_priv(dev); - unsigned long flags; - unsigned long reg_save; - - dm9000_dbg(db, 5, "phy_write[%02x] = %04x\n", reg, value); - mutex_lock(&db->addr_lock); - - spin_lock_irqsave(&db->lock,flags); - - /* Save previous register address */ - reg_save = readb(db->io_addr); - - /* Fill the phyxcer register into REG_0C */ - iow(db, DM9000_EPAR, DM9000_PHY | reg); - - /* Fill the written data into REG_0D & REG_0E */ - iow(db, DM9000_EPDRL, value); - iow(db, DM9000_EPDRH, value >> 8); - - iow(db, DM9000_EPCR, EPCR_EPOS | EPCR_ERPRW); /* Issue phyxcer write command */ - - writeb(reg_save, db->io_addr); - spin_unlock_irqrestore(&db->lock, flags); - - dm9000_msleep(db, 1); /* Wait write complete */ - - spin_lock_irqsave(&db->lock,flags); - reg_save = readb(db->io_addr); - - iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer write command */ - - /* restore the previous address */ - writeb(reg_save, db->io_addr); - - spin_unlock_irqrestore(&db->lock, flags); - mutex_unlock(&db->addr_lock); -} - static void dm9000_shutdown(struct net_device *dev) { @@ -1501,7 +1502,12 @@ db->flags |= DM9000_PLATF_SIMPLE_PHY; #endif - dm9000_reset(db); + /* Fixing bug on dm9000_probe, takeover dm9000_reset(db), + * Need 'NCR_MAC_LBK' bit to indeed stable our DM9000 fifo + * while probe stage. + */ + + iow(db, DM9000_NCR, NCR_MAC_LBK | NCR_RST); /* try multiple times, DM9000 sometimes gets the read wrong */ for (i = 0; i < 8; i++) { --- linux-ppc-3.8.0.orig/drivers/net/ethernet/intel/e1000/e1000_main.c +++ linux-ppc-3.8.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); @@ -1103,8 +1107,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); /* --- linux-ppc-3.8.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-ppc-3.8.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[] = { @@ -3952,6 +3956,7 @@ netif_start_queue(netdev); adapter->idle_check = true; + hw->mac.get_link_status = true; pm_runtime_put(&pdev->dev); /* fire a link status change interrupt to start the watchdog */ @@ -4312,6 +4317,7 @@ (adapter->hw.phy.media_type == e1000_media_type_copper)) { int ret_val; + pm_runtime_get_sync(&adapter->pdev->dev); ret_val = e1e_rphy(hw, PHY_CONTROL, &phy->bmcr); ret_val |= e1e_rphy(hw, PHY_STATUS, &phy->bmsr); ret_val |= e1e_rphy(hw, PHY_AUTONEG_ADV, &phy->advertise); @@ -4322,6 +4328,7 @@ ret_val |= e1e_rphy(hw, PHY_EXT_STATUS, &phy->estatus); if (ret_val) e_warn("Error reading PHY register\n"); + pm_runtime_put_sync(&adapter->pdev->dev); } else { /* Do not read PHY registers if link is not up * Set values to typical power-on defaults @@ -5450,8 +5457,7 @@ return retval; } -static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake, - bool runtime) +static int __e1000_shutdown(struct pci_dev *pdev, bool runtime) { struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); @@ -5475,10 +5481,6 @@ } e1000e_reset_interrupt_capability(adapter); - retval = pci_save_state(pdev); - if (retval) - return retval; - status = er32(STATUS); if (status & E1000_STATUS_LU) wufc &= ~E1000_WUFC_LNKC; @@ -5534,13 +5536,6 @@ ew32(WUFC, 0); } - *enable_wake = !!wufc; - - /* make sure adapter isn't asleep if manageability is enabled */ - if ((adapter->flags & FLAG_MNG_PT_ENABLED) || - (hw->mac.ops.check_mng_mode(hw))) - *enable_wake = true; - if (adapter->hw.phy.type == e1000_phy_igp_3) e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); @@ -5549,27 +5544,7 @@ */ e1000e_release_hw_control(adapter); - pci_disable_device(pdev); - - return 0; -} - -static void e1000_power_off(struct pci_dev *pdev, bool sleep, bool wake) -{ - if (sleep && wake) { - pci_prepare_to_sleep(pdev); - return; - } - - pci_wake_from_d3(pdev, wake); - pci_set_power_state(pdev, PCI_D3hot); -} - -static void e1000_complete_shutdown(struct pci_dev *pdev, bool sleep, - bool wake) -{ - struct net_device *netdev = pci_get_drvdata(pdev); - struct e1000_adapter *adapter = netdev_priv(netdev); + pci_clear_master(pdev); /* The pci-e switch on some quad port adapters will report a * correctable error when the MAC transitions from D0 to D3. To @@ -5584,12 +5559,13 @@ pcie_capability_write_word(us_dev, PCI_EXP_DEVCTL, (devctl & ~PCI_EXP_DEVCTL_CERE)); - e1000_power_off(pdev, sleep, wake); + pci_save_state(pdev); + pci_prepare_to_sleep(pdev); pcie_capability_write_word(us_dev, PCI_EXP_DEVCTL, devctl); - } else { - e1000_power_off(pdev, sleep, wake); } + + return 0; } #ifdef CONFIG_PCIEASPM @@ -5640,9 +5616,7 @@ if (aspm_disable_flag) e1000e_disable_aspm(pdev, aspm_disable_flag); - pci_set_power_state(pdev, PCI_D0); - pci_restore_state(pdev); - pci_save_state(pdev); + pci_set_master(pdev); e1000e_set_interrupt_capability(adapter); if (netif_running(netdev)) { @@ -5708,14 +5682,8 @@ static int e1000_suspend(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); - int retval; - bool wake; - - retval = __e1000_shutdown(pdev, &wake, false); - if (!retval) - e1000_complete_shutdown(pdev, true, wake); - return retval; + return __e1000_shutdown(pdev, false); } static int e1000_resume(struct device *dev) @@ -5738,13 +5706,10 @@ struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev_priv(netdev); - if (e1000e_pm_ready(adapter)) { - bool wake; - - __e1000_shutdown(pdev, &wake, true); - } + if (!e1000e_pm_ready(adapter)) + return 0; - return 0; + return __e1000_shutdown(pdev, true); } static int e1000_idle(struct device *dev) @@ -5782,12 +5747,7 @@ static void e1000_shutdown(struct pci_dev *pdev) { - bool wake = false; - - __e1000_shutdown(pdev, &wake, false); - - if (system_state == SYSTEM_POWER_OFF) - e1000_complete_shutdown(pdev, false, wake); + __e1000_shutdown(pdev, false); } #ifdef CONFIG_NET_POLL_CONTROLLER @@ -5908,9 +5868,9 @@ "Cannot re-enable PCI device after reset.\n"); result = PCI_ERS_RESULT_DISCONNECT; } else { - pci_set_master(pdev); pdev->state_saved = true; pci_restore_state(pdev); + pci_set_master(pdev); pci_enable_wake(pdev, PCI_D3hot, 0); pci_enable_wake(pdev, PCI_D3cold, 0); @@ -6261,8 +6221,14 @@ break; if (i == 2) { dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n"); - err = -EIO; - goto err_eeprom; + + /* if we allow bad checksums, just break */ + if (eeprom_bad_csum_allow) { + break; + } else { + err = -EIO; + goto err_eeprom; + } } } @@ -6341,7 +6307,11 @@ /* initialize the wol settings based on the eeprom settings */ adapter->wol = adapter->eeprom_wol; - device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); + + /* make sure adapter isn't asleep if manageability is enabled */ + if (adapter->wol || (adapter->flags & FLAG_MNG_PT_ENABLED) || + (hw->mac.ops.check_mng_mode(hw))) + device_wakeup_enable(&pdev->dev); /* save off EEPROM version number */ e1000_read_nvm(&adapter->hw, 5, 1, &adapter->eeprom_vers); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/intel/e1000e/ethtool.c +++ linux-ppc-3.8.0/drivers/net/ethernet/intel/e1000e/ethtool.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "e1000.h" @@ -2053,7 +2054,19 @@ } } +static int e1000e_ethtool_begin(struct net_device *netdev) +{ + return pm_runtime_get_sync(netdev->dev.parent); +} + +static void e1000e_ethtool_complete(struct net_device *netdev) +{ + pm_runtime_put_sync(netdev->dev.parent); +} + static const struct ethtool_ops e1000_ethtool_ops = { + .begin = e1000e_ethtool_begin, + .complete = e1000e_ethtool_complete, .get_settings = e1000_get_settings, .set_settings = e1000_set_settings, .get_drvinfo = e1000_get_drvinfo, --- linux-ppc-3.8.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c +++ linux-ppc-3.8.0/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c @@ -108,9 +108,8 @@ /* Enable arbiter */ reg &= ~IXGBE_DPMCS_ARBDIS; - /* Enable DFP and Recycle mode */ - reg |= (IXGBE_DPMCS_TDPAC | IXGBE_DPMCS_TRM); reg |= IXGBE_DPMCS_TSOEF; + /* Configure Max TSO packet size 34KB including payload and headers */ reg |= (0x4 << IXGBE_DPMCS_MTSOS_SHIFT); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -2407,6 +2407,16 @@ * with the write to EICR. */ eicr = IXGBE_READ_REG(hw, IXGBE_EICS); + + /* The lower 16bits of the EICR register are for the queue interrupts + * which should be masked here in order to not accidently clear them if + * the bits are high when ixgbe_msix_other is called. There is a race + * condition otherwise which results in possible performance loss + * especially if the ixgbe_msix_other interrupt is triggering + * consistently (as it would when PPS is turned on for the X540 device) + */ + eicr &= 0xFFFF0000; + IXGBE_WRITE_REG(hw, IXGBE_EICR, eicr); if (eicr & IXGBE_EICR_LSC) @@ -7858,12 +7868,19 @@ ixgbe_dbg_init(); #endif /* CONFIG_DEBUG_FS */ + ret = pci_register_driver(&ixgbe_driver); + if (ret) { +#ifdef CONFIG_DEBUG_FS + ixgbe_dbg_exit(); +#endif /* CONFIG_DEBUG_FS */ + return ret; + } + #ifdef CONFIG_IXGBE_DCA dca_register_notify(&dca_notifier); #endif - ret = pci_register_driver(&ixgbe_driver); - return ret; + return 0; } module_init(ixgbe_init_module); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/3com/3c509.c +++ linux-ppc-3.8.0/drivers/net/ethernet/3com/3c509.c @@ -306,6 +306,7 @@ if (!dev) return -ENOMEM; + SET_NETDEV_DEV(dev, pdev); netdev_boot_setup_check(dev); if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509-isa")) { @@ -595,6 +596,7 @@ return -ENOMEM; } + SET_NETDEV_DEV(dev, device); netdev_boot_setup_check(dev); el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_EISA); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/3com/3c59x.c +++ linux-ppc-3.8.0/drivers/net/ethernet/3com/3c59x.c @@ -632,7 +632,6 @@ pm_state_valid:1, /* pci_dev->saved_config_space has sane contents */ open:1, medialock:1, - must_free_region:1, /* Flag: if zero, Cardbus owns the I/O region */ large_frames:1, /* accept large frames */ handling_irq:1; /* private in_irq indicator */ /* {get|set}_wol operations are already serialized by rtnl. @@ -951,7 +950,7 @@ unregister_netdev(dev); iowrite16(TotalReset|0x14, ioaddr + EL3_CMD); - release_region(dev->base_addr, VORTEX_TOTAL_SIZE); + release_region(edev->base_addr, VORTEX_TOTAL_SIZE); free_netdev(dev); return 0; @@ -1012,6 +1011,12 @@ if (rc < 0) goto out; + rc = pci_request_regions(pdev, DRV_NAME); + if (rc < 0) { + pci_disable_device(pdev); + goto out; + } + unit = vortex_cards_found; if (global_use_mmio < 0 && (unit >= MAX_UNITS || use_mmio[unit] < 0)) { @@ -1027,6 +1032,7 @@ if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */ ioaddr = pci_iomap(pdev, 0, 0); if (!ioaddr) { + pci_release_regions(pdev); pci_disable_device(pdev); rc = -ENOMEM; goto out; @@ -1036,6 +1042,7 @@ ent->driver_data, unit); if (rc < 0) { pci_iounmap(pdev, ioaddr); + pci_release_regions(pdev); pci_disable_device(pdev); goto out; } @@ -1178,11 +1185,6 @@ /* PCI-only startup logic */ if (pdev) { - /* EISA resources already marked, so only PCI needs to do this here */ - /* Ignore return value, because Cardbus drivers already allocate for us */ - if (request_region(dev->base_addr, vci->io_size, print_name) != NULL) - vp->must_free_region = 1; - /* enable bus-mastering if necessary */ if (vci->flags & PCI_USES_MASTER) pci_set_master(pdev); @@ -1220,7 +1222,7 @@ &vp->rx_ring_dma); retval = -ENOMEM; if (!vp->rx_ring) - goto free_region; + goto free_device; vp->tx_ring = (struct boom_tx_desc *)(vp->rx_ring + RX_RING_SIZE); vp->tx_ring_dma = vp->rx_ring_dma + sizeof(struct boom_rx_desc) * RX_RING_SIZE; @@ -1485,9 +1487,7 @@ + sizeof(struct boom_tx_desc) * TX_RING_SIZE, vp->rx_ring, vp->rx_ring_dma); -free_region: - if (vp->must_free_region) - release_region(dev->base_addr, vci->io_size); +free_device: free_netdev(dev); pr_err(PFX "vortex_probe1 fails. Returns %d\n", retval); out: @@ -3255,8 +3255,9 @@ + sizeof(struct boom_tx_desc) * TX_RING_SIZE, vp->rx_ring, vp->rx_ring_dma); - if (vp->must_free_region) - release_region(dev->base_addr, vp->io_size); + + pci_release_regions(pdev); + free_netdev(dev); } --- linux-ppc-3.8.0.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -1726,9 +1726,9 @@ skb->protocol = eth_type_trans(skb, netdev); if (tcp_ip_status & PCH_GBE_RXD_ACC_STAT_TCPIPOK) - skb->ip_summed = CHECKSUM_NONE; - else skb->ip_summed = CHECKSUM_UNNECESSARY; + else + skb->ip_summed = CHECKSUM_NONE; napi_gro_receive(&adapter->napi, skb); (*work_done)++; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ linux-ppc-3.8.0/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -1434,12 +1434,11 @@ } #ifdef CONFIG_RFS_ACCEL - priv->dev->rx_cpu_rmap = alloc_irq_cpu_rmap(priv->rx_ring_num); - if (!priv->dev->rx_cpu_rmap) - goto err; - - INIT_LIST_HEAD(&priv->filters); - spin_lock_init(&priv->filters_lock); + if (priv->mdev->dev->caps.comp_pool) { + priv->dev->rx_cpu_rmap = alloc_irq_cpu_rmap(priv->mdev->dev->caps.comp_pool); + if (!priv->dev->rx_cpu_rmap) + goto err; + } #endif return 0; @@ -1597,7 +1596,7 @@ err = -ENOMEM; goto out; } - priv->tx_cq = kzalloc(sizeof(struct mlx4_en_cq) * MAX_RX_RINGS, + priv->tx_cq = kzalloc(sizeof(struct mlx4_en_cq) * MAX_TX_RINGS, GFP_KERNEL); if (!priv->tx_cq) { err = -ENOMEM; @@ -1634,6 +1633,11 @@ if (err) goto out; +#ifdef CONFIG_RFS_ACCEL + INIT_LIST_HEAD(&priv->filters); + spin_lock_init(&priv->filters_lock); +#endif + /* Allocate page for receive rings */ err = mlx4_alloc_hwq_res(mdev->dev, &priv->res, MLX4_EN_PAGE_SIZE, MLX4_EN_PAGE_SIZE); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/mellanox/mlx4/main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/mellanox/mlx4/main.c @@ -371,7 +371,7 @@ dev->caps.sqp_demux = (mlx4_is_master(dev)) ? MLX4_MAX_NUM_SLAVES : 0; - if (!enable_64b_cqe_eqe) { + if (!enable_64b_cqe_eqe && !mlx4_is_slave(dev)) { if (dev_cap->flags & (MLX4_DEV_CAP_FLAG_64B_CQE | MLX4_DEV_CAP_FLAG_64B_EQE)) { mlx4_warn(dev, "64B EQEs/CQEs supported by the device but not enabled\n"); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -4200,6 +4200,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; @@ -4242,9 +4245,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 @@ -4852,3 +4855,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/ti/cpsw.c +++ linux-ppc-3.8.0/drivers/net/ethernet/ti/cpsw.c @@ -375,7 +375,7 @@ struct cpsw_priv *priv = netdev_priv(ndev); if (unlikely(netif_queue_stopped(ndev))) - netif_start_queue(ndev); + netif_wake_queue(ndev); cpts_tx_timestamp(&priv->cpts, skb); priv->stats.tx_packets++; priv->stats.tx_bytes += len; @@ -1111,7 +1111,7 @@ struct platform_device *mdio; parp = of_get_property(slave_node, "phy_id", &lenp); - if ((parp == NULL) && (lenp != (sizeof(void *) * 2))) { + if ((parp == NULL) || (lenp != (sizeof(void *) * 2))) { pr_err("Missing slave[%d] phy_id property\n", i); ret = -EINVAL; goto error_ret; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/ti/davinci_emac.c +++ linux-ppc-3.8.0/drivers/net/ethernet/ti/davinci_emac.c @@ -1055,7 +1055,7 @@ atomic_dec(&priv->cur_tx); if (unlikely(netif_queue_stopped(ndev))) - netif_start_queue(ndev); + netif_wake_queue(ndev); ndev->stats.tx_packets++; ndev->stats.tx_bytes += len; dev_kfree_skb_any(skb); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/tile/tilegx.c +++ linux-ppc-3.8.0/drivers/net/ethernet/tile/tilegx.c @@ -930,7 +930,7 @@ if (info->has_iqueue) { gxio_mpipe_request_notif_ring_interrupt( &context, cpu_x(cpu), cpu_y(cpu), - 1, ingress_irq, info->iqueue.ring); + KERNEL_PL, ingress_irq, info->iqueue.ring); } } --- linux-ppc-3.8.0.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/atheros/atl1e/atl1e_main.c @@ -1669,8 +1669,8 @@ return 0; } -static void atl1e_tx_map(struct atl1e_adapter *adapter, - struct sk_buff *skb, struct atl1e_tpd_desc *tpd) +static int atl1e_tx_map(struct atl1e_adapter *adapter, + struct sk_buff *skb, struct atl1e_tpd_desc *tpd) { struct atl1e_tpd_desc *use_tpd = NULL; struct atl1e_tx_buffer *tx_buffer = NULL; @@ -1681,6 +1681,8 @@ u16 nr_frags; u16 f; int segment; + int ring_start = adapter->tx_ring.next_to_use; + int ring_end; nr_frags = skb_shinfo(skb)->nr_frags; segment = (tpd->word3 >> TPD_SEGMENT_EN_SHIFT) & TPD_SEGMENT_EN_MASK; @@ -1693,6 +1695,9 @@ tx_buffer->length = map_len; tx_buffer->dma = pci_map_single(adapter->pdev, skb->data, hdr_len, PCI_DMA_TODEVICE); + if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) + return -ENOSPC; + ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE); mapped_len += map_len; use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma); @@ -1719,6 +1724,22 @@ tx_buffer->dma = pci_map_single(adapter->pdev, skb->data + mapped_len, map_len, PCI_DMA_TODEVICE); + + if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) { + /* We need to unwind the mappings we've done */ + ring_end = adapter->tx_ring.next_to_use; + adapter->tx_ring.next_to_use = ring_start; + while (adapter->tx_ring.next_to_use != ring_end) { + tpd = atl1e_get_tpd(adapter); + tx_buffer = atl1e_get_tx_buffer(adapter, tpd); + pci_unmap_single(adapter->pdev, tx_buffer->dma, + tx_buffer->length, PCI_DMA_TODEVICE); + } + /* Reset the tx rings next pointer */ + adapter->tx_ring.next_to_use = ring_start; + return -ENOSPC; + } + ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE); mapped_len += map_len; use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma); @@ -1754,6 +1775,23 @@ (i * MAX_TX_BUF_LEN), tx_buffer->length, DMA_TO_DEVICE); + + if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) { + /* We need to unwind the mappings we've done */ + ring_end = adapter->tx_ring.next_to_use; + adapter->tx_ring.next_to_use = ring_start; + while (adapter->tx_ring.next_to_use != ring_end) { + tpd = atl1e_get_tpd(adapter); + tx_buffer = atl1e_get_tx_buffer(adapter, tpd); + dma_unmap_page(&adapter->pdev->dev, tx_buffer->dma, + tx_buffer->length, DMA_TO_DEVICE); + } + + /* Reset the ring next to use pointer */ + adapter->tx_ring.next_to_use = ring_start; + return -ENOSPC; + } + ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_PAGE); use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma); use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) | @@ -1771,6 +1809,7 @@ /* The last buffer info contain the skb address, so it will be free after unmap */ tx_buffer->skb = skb; + return 0; } static void atl1e_tx_queue(struct atl1e_adapter *adapter, u16 count, @@ -1838,10 +1877,15 @@ return NETDEV_TX_OK; } - atl1e_tx_map(adapter, skb, tpd); + if (atl1e_tx_map(adapter, skb, tpd)) { + dev_kfree_skb_any(skb); + goto out; + } + atl1e_tx_queue(adapter, tpd_req, tpd); netdev->trans_start = jiffies; /* NETIF_F_LLTX driver :( */ +out: spin_unlock_irqrestore(&adapter->tx_lock, flags); return NETDEV_TX_OK; } @@ -1851,34 +1895,19 @@ struct net_device *netdev = adapter->netdev; free_irq(adapter->pdev->irq, netdev); - - if (adapter->have_msi) - pci_disable_msi(adapter->pdev); } static int atl1e_request_irq(struct atl1e_adapter *adapter) { struct pci_dev *pdev = adapter->pdev; struct net_device *netdev = adapter->netdev; - int flags = 0; int err = 0; - adapter->have_msi = true; - err = pci_enable_msi(pdev); - if (err) { - netdev_dbg(netdev, - "Unable to allocate MSI interrupt Error: %d\n", err); - adapter->have_msi = false; - } - - if (!adapter->have_msi) - flags |= IRQF_SHARED; - err = request_irq(pdev->irq, atl1e_intr, flags, netdev->name, netdev); + err = request_irq(pdev->irq, atl1e_intr, IRQF_SHARED, netdev->name, + netdev); if (err) { netdev_dbg(adapter->netdev, "Unable to allocate interrupt Error: %d\n", err); - if (adapter->have_msi) - pci_disable_msi(pdev); return err; } netdev_dbg(netdev, "atl1e_request_irq OK\n"); @@ -2347,6 +2376,7 @@ INIT_WORK(&adapter->reset_task, atl1e_reset_task); INIT_WORK(&adapter->link_chg_task, atl1e_link_chg_task); + netif_set_gso_max_size(netdev, MAX_TSO_SEG_SIZE); err = register_netdev(netdev); if (err) { netdev_err(netdev, "register netdevice failed\n"); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/atheros/atl1e/atl1e.h +++ linux-ppc-3.8.0/drivers/net/ethernet/atheros/atl1e/atl1e.h @@ -186,7 +186,7 @@ /* how about 0x2000 */ #define MAX_TX_BUF_LEN 0x2000 #define MAX_TX_BUF_SHIFT 13 -/*#define MAX_TX_BUF_LEN 0x3000 */ +#define MAX_TSO_SEG_SIZE 0x3c00 /* rrs word 1 bit 0:31 */ #define RRS_RX_CSUM_MASK 0xFFFF @@ -438,7 +438,6 @@ struct atl1e_hw hw; struct atl1e_hw_stats hw_stats; - bool have_msi; u32 wol; u16 link_speed; u16 link_duplex; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/atheros/atl1c/atl1c_main.c @@ -482,10 +482,15 @@ static void atl1c_set_rxbufsize(struct atl1c_adapter *adapter, struct net_device *dev) { + unsigned int head_size; int mtu = dev->mtu; adapter->rx_buffer_len = mtu > AT_RX_BUF_SIZE ? roundup(mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN, 8) : AT_RX_BUF_SIZE; + + head_size = SKB_DATA_ALIGN(adapter->rx_buffer_len + NET_SKB_PAD) + + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); + adapter->rx_frag_size = roundup_pow_of_two(head_size); } static netdev_features_t atl1c_fix_features(struct net_device *netdev, @@ -953,6 +958,10 @@ kfree(adapter->tpd_ring[0].buffer_info); adapter->tpd_ring[0].buffer_info = NULL; } + if (adapter->rx_page) { + put_page(adapter->rx_page); + adapter->rx_page = NULL; + } } /** @@ -1642,6 +1651,35 @@ skb_checksum_none_assert(skb); } +static struct sk_buff *atl1c_alloc_skb(struct atl1c_adapter *adapter) +{ + struct sk_buff *skb; + struct page *page; + + if (adapter->rx_frag_size > PAGE_SIZE) + return netdev_alloc_skb(adapter->netdev, + adapter->rx_buffer_len); + + page = adapter->rx_page; + if (!page) { + adapter->rx_page = page = alloc_page(GFP_ATOMIC); + if (unlikely(!page)) + return NULL; + adapter->rx_page_offset = 0; + } + + skb = build_skb(page_address(page) + adapter->rx_page_offset, + adapter->rx_frag_size); + if (likely(skb)) { + adapter->rx_page_offset += adapter->rx_frag_size; + if (adapter->rx_page_offset >= PAGE_SIZE) + adapter->rx_page = NULL; + else + get_page(page); + } + return skb; +} + static int atl1c_alloc_rx_buffer(struct atl1c_adapter *adapter) { struct atl1c_rfd_ring *rfd_ring = &adapter->rfd_ring; @@ -1663,7 +1701,7 @@ while (next_info->flags & ATL1C_BUFFER_FREE) { rfd_desc = ATL1C_RFD_DESC(rfd_ring, rfd_next_to_use); - skb = netdev_alloc_skb(adapter->netdev, adapter->rx_buffer_len); + skb = atl1c_alloc_skb(adapter); if (unlikely(!skb)) { if (netif_msg_rx_err(adapter)) dev_warn(&pdev->dev, "alloc rx buffer failed\n"); @@ -2075,7 +2113,7 @@ if (unlikely(pci_dma_mapping_error(adapter->pdev, buffer_info->dma))) goto err_dma; - + ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY); ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_SINGLE, ATL1C_PCIMAP_TODEVICE); mapped_len += map_len; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c.h +++ linux-ppc-3.8.0/drivers/net/ethernet/atheros/atl1c/atl1c.h @@ -520,6 +520,9 @@ struct net_device *netdev; struct pci_dev *pdev; struct napi_struct napi; + struct page *rx_page; + unsigned int rx_page_offset; + unsigned int rx_frag_size; struct atl1c_hw hw; struct atl1c_hw_stats hw_stats; struct mii_if_info mii; /* MII interface info */ --- linux-ppc-3.8.0.orig/drivers/net/ethernet/micrel/ks8851.c +++ linux-ppc-3.8.0/drivers/net/ethernet/micrel/ks8851.c @@ -547,7 +547,7 @@ for (; rxfc != 0; rxfc--) { rxh = ks8851_rdreg32(ks, KS_RXFHSR); rxstat = rxh & 0xffff; - rxlen = rxh >> 16; + rxlen = (rxh >> 16) & 0xfff; netif_dbg(ks, rx_status, ks->netdev, "rx: stat 0x%04x, len 0x%04x\n", rxstat, rxlen); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/calxeda/xgmac.c +++ linux-ppc-3.8.0/drivers/net/ethernet/calxeda/xgmac.c @@ -1141,6 +1141,9 @@ struct sk_buff *skb; int frame_len; + if (!dma_ring_cnt(priv->rx_head, priv->rx_tail, DMA_RX_RING_SZ)) + break; + entry = priv->rx_tail; p = priv->dma_rx + entry; if (desc_get_owner(p)) --- linux-ppc-3.8.0.orig/drivers/net/ethernet/marvell/sky2.c +++ linux-ppc-3.8.0/drivers/net/ethernet/marvell/sky2.c @@ -1067,7 +1067,7 @@ sky2_write32(hw, RB_ADDR(q, RB_RX_UTHP), tp); sky2_write32(hw, RB_ADDR(q, RB_RX_LTHP), space/2); - tp = space - 2048/8; + tp = space - 8192/8; sky2_write32(hw, RB_ADDR(q, RB_RX_UTPP), tp); sky2_write32(hw, RB_ADDR(q, RB_RX_LTPP), space/4); } else { --- linux-ppc-3.8.0.orig/drivers/net/ethernet/marvell/sky2.h +++ linux-ppc-3.8.0/drivers/net/ethernet/marvell/sky2.h @@ -2074,7 +2074,7 @@ GM_IS_RX_FF_OR = 1<<1, /* Receive FIFO Overrun */ GM_IS_RX_COMPL = 1<<0, /* Frame Reception Complete */ -#define GMAC_DEF_MSK GM_IS_TX_FF_UR +#define GMAC_DEF_MSK (GM_IS_TX_FF_UR | GM_IS_RX_FF_OR) }; /* GMAC_LINK_CTRL 16 bit GMAC Link Control Reg (YUKON only) */ --- linux-ppc-3.8.0.orig/drivers/net/ethernet/marvell/mvneta.c +++ linux-ppc-3.8.0/drivers/net/ethernet/marvell/mvneta.c @@ -375,7 +375,6 @@ static int txq_number = 8; static int rxq_def; -static int txq_def; #define MVNETA_DRIVER_NAME "mvneta" #define MVNETA_DRIVER_VERSION "1.0" @@ -1476,7 +1475,8 @@ static int mvneta_tx(struct sk_buff *skb, struct net_device *dev) { struct mvneta_port *pp = netdev_priv(dev); - struct mvneta_tx_queue *txq = &pp->txqs[txq_def]; + u16 txq_id = skb_get_queue_mapping(skb); + struct mvneta_tx_queue *txq = &pp->txqs[txq_id]; struct mvneta_tx_desc *tx_desc; struct netdev_queue *nq; int frags = 0; @@ -1486,7 +1486,7 @@ goto out; frags = skb_shinfo(skb)->nr_frags + 1; - nq = netdev_get_tx_queue(dev, txq_def); + nq = netdev_get_tx_queue(dev, txq_id); /* Get a descriptor for the first part of the packet */ tx_desc = mvneta_txq_next_desc_get(txq); @@ -2690,7 +2690,7 @@ return -EINVAL; } - dev = alloc_etherdev_mq(sizeof(struct mvneta_port), 8); + dev = alloc_etherdev_mqs(sizeof(struct mvneta_port), txq_number, rxq_number); if (!dev) return -ENOMEM; @@ -2844,4 +2844,3 @@ module_param(txq_number, int, S_IRUGO); module_param(rxq_def, int, S_IRUGO); -module_param(txq_def, int, S_IRUGO); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/marvell/Kconfig +++ linux-ppc-3.8.0/drivers/net/ethernet/marvell/Kconfig @@ -33,6 +33,7 @@ config MVMDIO tristate "Marvell MDIO interface support" + select PHYLIB ---help--- This driver supports the MDIO interface found in the network interface units of the Marvell EBU SoCs (Kirkwood, Orion5x, @@ -45,7 +46,6 @@ config MVNETA tristate "Marvell Armada 370/XP network interface support" depends on MACH_ARMADA_370_XP - select PHYLIB select MVMDIO ---help--- This driver supports the network interface units in the --- linux-ppc-3.8.0.orig/drivers/net/ethernet/realtek/r8169.c +++ linux-ppc-3.8.0/drivers/net/ethernet/realtek/r8169.c @@ -3819,6 +3819,30 @@ } } +static void rtl_speed_down(struct rtl8169_private *tp) +{ + u32 adv; + int lpa; + + rtl_writephy(tp, 0x1f, 0x0000); + lpa = rtl_readphy(tp, MII_LPA); + + if (lpa & (LPA_10HALF | LPA_10FULL)) + adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full; + else if (lpa & (LPA_100HALF | LPA_100FULL)) + adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full | + ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full; + else + adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full | + ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full | + (tp->mii.supports_gmii ? + ADVERTISED_1000baseT_Half | + ADVERTISED_1000baseT_Full : 0); + + rtl8169_set_speed(tp->dev, AUTONEG_ENABLE, SPEED_1000, DUPLEX_FULL, + adv); +} + static void rtl_wol_suspend_quirk(struct rtl8169_private *tp) { void __iomem *ioaddr = tp->mmio_addr; @@ -3849,9 +3873,7 @@ if (!(__rtl8169_get_wol(tp) & WAKE_ANY)) return false; - rtl_writephy(tp, 0x1f, 0x0000); - rtl_writephy(tp, MII_BMCR, 0x0000); - + rtl_speed_down(tp); rtl_wol_suspend_quirk(tp); return true; @@ -4766,8 +4788,10 @@ RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) & ~R8168_CPCMD_QUIRK_MASK); - rtl_tx_performance_tweak(pdev, - (0x5 << MAX_READ_REQUEST_SHIFT) | PCI_EXP_DEVCTL_NOSNOOP_EN); + if (tp->dev->mtu <= ETH_DATA_LEN) { + rtl_tx_performance_tweak(pdev, (0x5 << MAX_READ_REQUEST_SHIFT) | + PCI_EXP_DEVCTL_NOSNOOP_EN); + } } static void rtl_hw_start_8168bef(struct rtl8169_private *tp) @@ -4790,7 +4814,8 @@ RTL_W8(Config3, RTL_R8(Config3) & ~Beacon_en); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); rtl_disable_clock_request(pdev); @@ -4823,7 +4848,8 @@ RTL_W8(Config3, RTL_R8(Config3) & ~Beacon_en); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) & ~R8168_CPCMD_QUIRK_MASK); } @@ -4842,7 +4868,8 @@ RTL_W8(MaxTxPacketSize, TxPacketMax); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) & ~R8168_CPCMD_QUIRK_MASK); } @@ -4902,7 +4929,8 @@ RTL_W8(MaxTxPacketSize, TxPacketMax); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); RTL_W16(CPlusCmd, RTL_R16(CPlusCmd) & ~R8168_CPCMD_QUIRK_MASK); } @@ -4914,7 +4942,8 @@ rtl_csi_access_enable_1(tp); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); RTL_W8(MaxTxPacketSize, TxPacketMax); @@ -4973,7 +5002,8 @@ rtl_ephy_init(tp, e_info_8168e_1, ARRAY_SIZE(e_info_8168e_1)); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); RTL_W8(MaxTxPacketSize, TxPacketMax); @@ -4999,7 +5029,8 @@ rtl_ephy_init(tp, e_info_8168e_2, ARRAY_SIZE(e_info_8168e_2)); - rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); + if (tp->dev->mtu <= ETH_DATA_LEN) + rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT); rtl_eri_write(tp, 0xc0, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); rtl_eri_write(tp, 0xb8, ERIAR_MASK_0011, 0x0000, ERIAR_EXGMAC); @@ -5717,7 +5748,20 @@ return -EIO; } -static inline void rtl8169_tso_csum(struct rtl8169_private *tp, +static bool rtl_skb_pad(struct sk_buff *skb) +{ + if (skb_padto(skb, ETH_ZLEN)) + return false; + skb_put(skb, ETH_ZLEN - skb->len); + return true; +} + +static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb) +{ + return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34; +} + +static inline bool rtl8169_tso_csum(struct rtl8169_private *tp, struct sk_buff *skb, u32 *opts) { const struct rtl_tx_desc_info *info = tx_desc_info + tp->txd_version; @@ -5730,13 +5774,20 @@ } else if (skb->ip_summed == CHECKSUM_PARTIAL) { const struct iphdr *ip = ip_hdr(skb); + if (unlikely(rtl_test_hw_pad_bug(tp, skb))) + return skb_checksum_help(skb) == 0 && rtl_skb_pad(skb); + if (ip->protocol == IPPROTO_TCP) opts[offset] |= info->checksum.tcp; else if (ip->protocol == IPPROTO_UDP) opts[offset] |= info->checksum.udp; else WARN_ON_ONCE(1); + } else { + if (unlikely(rtl_test_hw_pad_bug(tp, skb))) + return rtl_skb_pad(skb); } + return true; } static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, @@ -5760,6 +5811,12 @@ if (unlikely(le32_to_cpu(txd->opts1) & DescOwn)) goto err_stop_0; + opts[1] = cpu_to_le32(rtl8169_tx_vlan_tag(skb)); + opts[0] = DescOwn; + + if (!rtl8169_tso_csum(tp, skb, opts)) + goto err_update_stats; + len = skb_headlen(skb); mapping = dma_map_single(d, skb->data, len, DMA_TO_DEVICE); if (unlikely(dma_mapping_error(d, mapping))) { @@ -5771,11 +5828,6 @@ tp->tx_skb[entry].len = len; txd->addr = cpu_to_le64(mapping); - opts[1] = cpu_to_le32(rtl8169_tx_vlan_tag(skb)); - opts[0] = DescOwn; - - rtl8169_tso_csum(tp, skb, opts); - frags = rtl8169_xmit_frags(tp, skb, opts); if (frags < 0) goto err_dma_1; @@ -5828,6 +5880,7 @@ rtl8169_unmap_tx_skb(d, tp->tx_skb + entry, txd); err_dma_0: dev_kfree_skb(skb); +err_update_stats: dev->stats.tx_dropped++; return NETDEV_TX_OK; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/realtek/8139cp.c +++ linux-ppc-3.8.0/drivers/net/ethernet/realtek/8139cp.c @@ -478,7 +478,7 @@ while (1) { u32 status, len; - dma_addr_t mapping; + dma_addr_t mapping, new_mapping; struct sk_buff *skb, *new_skb; struct cp_desc *desc; const unsigned buflen = cp->rx_buf_sz; @@ -520,6 +520,13 @@ goto rx_next; } + new_mapping = dma_map_single(&cp->pdev->dev, new_skb->data, buflen, + PCI_DMA_FROMDEVICE); + if (dma_mapping_error(&cp->pdev->dev, new_mapping)) { + dev->stats.rx_dropped++; + goto rx_next; + } + dma_unmap_single(&cp->pdev->dev, mapping, buflen, PCI_DMA_FROMDEVICE); @@ -531,12 +538,11 @@ skb_put(skb, len); - mapping = dma_map_single(&cp->pdev->dev, new_skb->data, buflen, - PCI_DMA_FROMDEVICE); cp->rx_skb[rx_tail] = new_skb; cp_rx_skb(cp, skb, desc); rx++; + mapping = new_mapping; rx_next: cp->rx_ring[rx_tail].opts2 = 0; @@ -716,6 +722,22 @@ TxVlanTag | swab16(vlan_tx_tag_get(skb)) : 0x00; } +static void unwind_tx_frag_mapping(struct cp_private *cp, struct sk_buff *skb, + int first, int entry_last) +{ + int frag, index; + struct cp_desc *txd; + skb_frag_t *this_frag; + for (frag = 0; frag+first < entry_last; frag++) { + index = first+frag; + cp->tx_skb[index] = NULL; + txd = &cp->tx_ring[index]; + this_frag = &skb_shinfo(skb)->frags[frag]; + dma_unmap_single(&cp->pdev->dev, le64_to_cpu(txd->addr), + skb_frag_size(this_frag), PCI_DMA_TODEVICE); + } +} + static netdev_tx_t cp_start_xmit (struct sk_buff *skb, struct net_device *dev) { @@ -749,6 +771,9 @@ len = skb->len; mapping = dma_map_single(&cp->pdev->dev, skb->data, len, PCI_DMA_TODEVICE); + if (dma_mapping_error(&cp->pdev->dev, mapping)) + goto out_dma_error; + txd->opts2 = opts2; txd->addr = cpu_to_le64(mapping); wmb(); @@ -786,6 +811,9 @@ first_len = skb_headlen(skb); first_mapping = dma_map_single(&cp->pdev->dev, skb->data, first_len, PCI_DMA_TODEVICE); + if (dma_mapping_error(&cp->pdev->dev, first_mapping)) + goto out_dma_error; + cp->tx_skb[entry] = skb; entry = NEXT_TX(entry); @@ -799,6 +827,11 @@ mapping = dma_map_single(&cp->pdev->dev, skb_frag_address(this_frag), len, PCI_DMA_TODEVICE); + if (dma_mapping_error(&cp->pdev->dev, mapping)) { + unwind_tx_frag_mapping(cp, skb, first_entry, entry); + goto out_dma_error; + } + eor = (entry == (CP_TX_RING_SIZE - 1)) ? RingEnd : 0; ctrl = eor | len | DescOwn; @@ -859,11 +892,16 @@ if (TX_BUFFS_AVAIL(cp) <= (MAX_SKB_FRAGS + 1)) netif_stop_queue(dev); +out_unlock: spin_unlock_irqrestore(&cp->lock, intr_flags); cpw8(TxPoll, NormalTxPoll); return NETDEV_TX_OK; +out_dma_error: + kfree_skb(skb); + cp->dev->stats.tx_dropped++; + goto out_unlock; } /* Set or clear the multicast filter for this adaptor. @@ -1054,6 +1092,10 @@ mapping = dma_map_single(&cp->pdev->dev, skb->data, cp->rx_buf_sz, PCI_DMA_FROMDEVICE); + if (dma_mapping_error(&cp->pdev->dev, mapping)) { + kfree_skb(skb); + goto err_out; + } cp->rx_skb[i] = skb; cp->rx_ring[i].opts2 = 0; @@ -1136,6 +1178,7 @@ cp->dev->stats.tx_dropped++; } } + netdev_reset_queue(cp->dev); memset(cp->rx_ring, 0, sizeof(struct cp_desc) * CP_RX_RING_SIZE); memset(cp->tx_ring, 0, sizeof(struct cp_desc) * CP_TX_RING_SIZE); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/freescale/fec_ptp.c +++ linux-ppc-3.8.0/drivers/net/ethernet/freescale/fec_ptp.c @@ -128,6 +128,7 @@ spin_unlock_irqrestore(&fep->tmreg_lock, flags); } +EXPORT_SYMBOL(fec_ptp_start_cyclecounter); /** * fec_ptp_adjfreq - adjust ptp cycle frequency @@ -318,6 +319,7 @@ return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? -EFAULT : 0; } +EXPORT_SYMBOL(fec_ptp_ioctl); /** * fec_time_keep - call timecounter_read every second to avoid timer overrun @@ -381,3 +383,4 @@ pr_info("registered PHC device on %s\n", ndev->name); } } +EXPORT_SYMBOL(fec_ptp_init); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/freescale/gianfar_ptp.c +++ linux-ppc-3.8.0/drivers/net/ethernet/freescale/gianfar_ptp.c @@ -127,7 +127,6 @@ #define DRIVER "gianfar_ptp" #define DEFAULT_CKSEL 1 -#define N_ALARM 1 /* first alarm is used internally to reset fipers */ #define N_EXT_TS 2 #define REG_SIZE sizeof(struct gianfar_ptp_registers) @@ -410,7 +409,7 @@ .owner = THIS_MODULE, .name = "gianfar clock", .max_adj = 512000, - .n_alarm = N_ALARM, + .n_alarm = 0, .n_ext_ts = N_EXT_TS, .n_per_out = 0, .pps = 1, @@ -522,6 +521,7 @@ return 0; no_clock: + iounmap(etsects->regs); no_ioremap: release_resource(etsects->rsrc); no_resource: --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_ethtool.c +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_ethtool.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or @@ -54,7 +54,7 @@ /* Received packets dropped when they don't pass the unicast or * multicast address filtering. */ - {DRVSTAT_INFO(rx_address_mismatch_drops)}, + {DRVSTAT_INFO(rx_address_filtered)}, /* Received packets dropped when IP packet length field is less than * the IP header length field. */ @@ -85,6 +85,7 @@ {DRVSTAT_INFO(tx_pauseframes)}, {DRVSTAT_INFO(tx_controlframes)}, {DRVSTAT_INFO(rx_priority_pause_frames)}, + {DRVSTAT_INFO(tx_priority_pauseframes)}, /* Received packets dropped when an internal fifo going into * main packet buffer tank (PMEM) overflows. */ @@ -680,7 +681,8 @@ if (be_is_wol_supported(adapter)) { wol->supported |= WAKE_MAGIC; - wol->wolopts |= WAKE_MAGIC; + if (adapter->wol) + wol->wolopts |= WAKE_MAGIC; } else wol->wolopts = 0; memset(&wol->sopass, 0, sizeof(wol->sopass)); @@ -757,6 +759,12 @@ int status; u8 link_status = 0; + if (adapter->function_caps & BE_FUNCTION_CAPS_SUPER_NIC) { + dev_err(&adapter->pdev->dev, "Self test not supported\n"); + test->flags |= ETH_TEST_FL_FAILED; + return; + } + memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM); if (test->flags & ETH_TEST_FL_OFFLINE) { @@ -939,6 +947,159 @@ return; } +static u64 be_get_rss_hash_opts(struct be_adapter *adapter, u64 flow_type) +{ + u64 data = 0; + + switch (flow_type) { + case TCP_V4_FLOW: + if (adapter->rss_flags & RSS_ENABLE_IPV4) + data |= RXH_IP_DST | RXH_IP_SRC; + if (adapter->rss_flags & RSS_ENABLE_TCP_IPV4) + data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; + break; + case UDP_V4_FLOW: + if (adapter->rss_flags & RSS_ENABLE_IPV4) + data |= RXH_IP_DST | RXH_IP_SRC; + if (adapter->rss_flags & RSS_ENABLE_UDP_IPV4) + data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; + break; + case TCP_V6_FLOW: + if (adapter->rss_flags & RSS_ENABLE_IPV6) + data |= RXH_IP_DST | RXH_IP_SRC; + if (adapter->rss_flags & RSS_ENABLE_TCP_IPV6) + data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; + break; + case UDP_V6_FLOW: + if (adapter->rss_flags & RSS_ENABLE_IPV6) + data |= RXH_IP_DST | RXH_IP_SRC; + if (adapter->rss_flags & RSS_ENABLE_UDP_IPV6) + data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; + break; + } + + return data; +} + +static int be_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd, + u32 *rule_locs) +{ + struct be_adapter *adapter = netdev_priv(netdev); + + if (!be_multi_rxq(adapter)) { + dev_info(&adapter->pdev->dev, + "ethtool::get_rxnfc: RX flow hashing is disabled\n"); + return -EINVAL; + } + + switch (cmd->cmd) { + case ETHTOOL_GRXFH: + cmd->data = be_get_rss_hash_opts(adapter, cmd->flow_type); + break; + case ETHTOOL_GRXRINGS: + cmd->data = adapter->num_rx_qs - 1; + break; + default: + return -EINVAL; + } + + return 0; +} + +static int be_set_rss_hash_opts(struct be_adapter *adapter, + struct ethtool_rxnfc *cmd) +{ + struct be_rx_obj *rxo; + int status = 0, i, j; + u8 rsstable[128]; + u32 rss_flags = adapter->rss_flags; + + if (cmd->data != L3_RSS_FLAGS && + cmd->data != (L3_RSS_FLAGS | L4_RSS_FLAGS)) + return -EINVAL; + + switch (cmd->flow_type) { + case TCP_V4_FLOW: + if (cmd->data == L3_RSS_FLAGS) + rss_flags &= ~RSS_ENABLE_TCP_IPV4; + else if (cmd->data == (L3_RSS_FLAGS | L4_RSS_FLAGS)) + rss_flags |= RSS_ENABLE_IPV4 | + RSS_ENABLE_TCP_IPV4; + break; + case TCP_V6_FLOW: + if (cmd->data == L3_RSS_FLAGS) + rss_flags &= ~RSS_ENABLE_TCP_IPV6; + else if (cmd->data == (L3_RSS_FLAGS | L4_RSS_FLAGS)) + rss_flags |= RSS_ENABLE_IPV6 | + RSS_ENABLE_TCP_IPV6; + break; + case UDP_V4_FLOW: + if ((cmd->data == (L3_RSS_FLAGS | L4_RSS_FLAGS)) && + BEx_chip(adapter)) + return -EINVAL; + + if (cmd->data == L3_RSS_FLAGS) + rss_flags &= ~RSS_ENABLE_UDP_IPV4; + else if (cmd->data == (L3_RSS_FLAGS | L4_RSS_FLAGS)) + rss_flags |= RSS_ENABLE_IPV4 | + RSS_ENABLE_UDP_IPV4; + break; + case UDP_V6_FLOW: + if ((cmd->data == (L3_RSS_FLAGS | L4_RSS_FLAGS)) && + BEx_chip(adapter)) + return -EINVAL; + + if (cmd->data == L3_RSS_FLAGS) + rss_flags &= ~RSS_ENABLE_UDP_IPV6; + else if (cmd->data == (L3_RSS_FLAGS | L4_RSS_FLAGS)) + rss_flags |= RSS_ENABLE_IPV6 | + RSS_ENABLE_UDP_IPV6; + break; + default: + return -EINVAL; + } + + if (rss_flags == adapter->rss_flags) + return status; + + if (be_multi_rxq(adapter)) { + for (j = 0; j < 128; j += adapter->num_rx_qs - 1) { + for_all_rss_queues(adapter, rxo, i) { + if ((j + i) >= 128) + break; + rsstable[j + i] = rxo->rss_id; + } + } + } + status = be_cmd_rss_config(adapter, rsstable, rss_flags, 128); + if (!status) + adapter->rss_flags = rss_flags; + + return status; +} + +static int be_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd) +{ + struct be_adapter *adapter = netdev_priv(netdev); + int status = 0; + + if (!be_multi_rxq(adapter)) { + dev_err(&adapter->pdev->dev, + "ethtool::set_rxnfc: RX flow hashing is disabled\n"); + return -EINVAL; + } + + switch (cmd->cmd) { + case ETHTOOL_SRXFH: + status = be_set_rss_hash_opts(adapter, cmd); + break; + default: + return -EINVAL; + } + + return status; +} + const struct ethtool_ops be_ethtool_ops = { .get_settings = be_get_settings, .get_drvinfo = be_get_drvinfo, @@ -962,4 +1123,6 @@ .get_regs = be_get_regs, .flash_device = be_do_flash, .self_test = be_self_test, + .get_rxnfc = be_get_rxnfc, + .set_rxnfc = be_set_rxnfc, }; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_roce.h +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_roce.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.h +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_cmds.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or @@ -188,6 +188,7 @@ #define OPCODE_COMMON_GET_BEACON_STATE 70 #define OPCODE_COMMON_READ_TRANSRECV_DATA 73 #define OPCODE_COMMON_GET_PORT_NAME 77 +#define OPCODE_COMMON_SET_INTERRUPT_ENABLE 89 #define OPCODE_COMMON_GET_PHY_DETAILS 102 #define OPCODE_COMMON_SET_DRIVER_FUNCTION_CAP 103 #define OPCODE_COMMON_GET_CNTL_ADDITIONAL_ATTRIBUTES 121 @@ -203,6 +204,7 @@ #define OPCODE_COMMON_GET_FN_PRIVILEGES 170 #define OPCODE_COMMON_READ_OBJECT 171 #define OPCODE_COMMON_WRITE_OBJECT 172 +#define OPCODE_COMMON_GET_IFACE_LIST 194 #define OPCODE_COMMON_ENABLE_DISABLE_VF 196 #define OPCODE_ETH_RSS_CONFIG 1 @@ -366,7 +368,7 @@ u8 rsvd5[32]; /* dword 3*/ } __packed; -struct amap_cq_context_lancer { +struct amap_cq_context_v2 { u8 rsvd0[12]; /* dword 0*/ u8 coalescwm[2]; /* dword 0*/ u8 nodelay; /* dword 0*/ @@ -472,46 +474,27 @@ #define BE_ETH_TX_RING_TYPE_STANDARD 2 #define BE_ULP1_NUM 1 -/* Pseudo amap definition in which each bit of the actual structure is defined - * as a byte: used to calculate offset/shift/mask of each field */ -struct amap_tx_context { - u8 if_id[16]; /* dword 0 */ - u8 tx_ring_size[4]; /* dword 0 */ - u8 rsvd1[26]; /* dword 0 */ - u8 pci_func_id[8]; /* dword 1 */ - u8 rsvd2[9]; /* dword 1 */ - u8 ctx_valid; /* dword 1 */ - u8 cq_id_send[16]; /* dword 2 */ - u8 rsvd3[16]; /* dword 2 */ - u8 rsvd4[32]; /* dword 3 */ - u8 rsvd5[32]; /* dword 4 */ - u8 rsvd6[32]; /* dword 5 */ - u8 rsvd7[32]; /* dword 6 */ - u8 rsvd8[32]; /* dword 7 */ - u8 rsvd9[32]; /* dword 8 */ - u8 rsvd10[32]; /* dword 9 */ - u8 rsvd11[32]; /* dword 10 */ - u8 rsvd12[32]; /* dword 11 */ - u8 rsvd13[32]; /* dword 12 */ - u8 rsvd14[32]; /* dword 13 */ - u8 rsvd15[32]; /* dword 14 */ - u8 rsvd16[32]; /* dword 15 */ -} __packed; - struct be_cmd_req_eth_tx_create { struct be_cmd_req_hdr hdr; u8 num_pages; u8 ulp_num; - u8 type; - u8 bound_port; - u8 context[sizeof(struct amap_tx_context) / 8]; + u16 type; + u16 if_id; + u8 queue_size; + u8 rsvd0; + u32 rsvd1; + u16 cq_id; + u16 rsvd2; + u32 rsvd3[13]; struct phys_addr pages[8]; } __packed; struct be_cmd_resp_eth_tx_create { struct be_cmd_resp_hdr hdr; u16 cid; - u16 rsvd0; + u16 rid; + u32 db_offset; + u32 rsvd0[4]; } __packed; /******************** Create RxQ ***************************/ @@ -607,8 +590,8 @@ u32 rx_in_range_errors; /* dword 10*/ u32 rx_out_range_errors; /* dword 11*/ u32 rx_frame_too_long; /* dword 12*/ - u32 rx_address_mismatch_drops; /* dword 13*/ - u32 rx_vlan_mismatch_drops; /* dword 14*/ + u32 rx_address_filtered; /* dword 13*/ + u32 rx_vlan_filtered; /* dword 14*/ u32 rx_dropped_too_small; /* dword 15*/ u32 rx_dropped_too_short; /* dword 16*/ u32 rx_dropped_header_too_small; /* dword 17*/ @@ -814,8 +797,8 @@ u32 rx_control_frames_unknown_opcode_hi; u32 rx_in_range_errors; u32 rx_out_of_range_errors; - u32 rx_address_mismatch_drops; - u32 rx_vlan_mismatch_drops; + u32 rx_address_filtered; + u32 rx_vlan_filtered; u32 rx_dropped_too_small; u32 rx_dropped_too_short; u32 rx_dropped_header_too_small; @@ -1065,7 +1048,6 @@ } __packed; /******************** Get FW Config *******************/ -#define BE_FUNCTION_CAPS_RSS 0x2 /* The HW can come up in either of the following multi-channel modes * based on the skew/IPL. */ @@ -1108,6 +1090,9 @@ #define RSS_ENABLE_UDP_IPV4 0x10 #define RSS_ENABLE_UDP_IPV6 0x20 +#define L3_RSS_FLAGS (RXH_IP_DST | RXH_IP_SRC) +#define L4_RSS_FLAGS (RXH_L4_B_0_1 | RXH_L4_B_2_3) + struct be_cmd_req_rss_config { struct be_cmd_req_hdr hdr; u32 if_id; @@ -1591,7 +1576,7 @@ u32 rx_in_range_errors; u32 rx_out_range_errors; u32 rx_frame_too_long; - u32 rx_address_mismatch_drops; + u32 rx_address_filtered; u32 rx_dropped_too_small; u32 rx_dropped_too_short; u32 rx_dropped_header_too_small; @@ -1705,9 +1690,11 @@ struct be_fat_conf_params set_params; }; -#define RESOURCE_DESC_SIZE 72 -#define NIC_RESOURCE_DESC_TYPE_ID 0x41 +#define RESOURCE_DESC_SIZE 88 +#define NIC_RESOURCE_DESC_TYPE_V0 0x41 +#define NIC_RESOURCE_DESC_TYPE_V1 0x51 #define MAX_RESOURCE_DESC 4 +#define MAX_RESOURCE_DESC_V1 32 /* QOS unit number */ #define QUN 4 @@ -1754,7 +1741,7 @@ }; struct be_cmd_resp_get_func_config { - struct be_cmd_req_hdr hdr; + struct be_cmd_resp_hdr hdr; u32 desc_count; u8 func_param[MAX_RESOURCE_DESC * RESOURCE_DESC_SIZE]; }; @@ -1773,6 +1760,12 @@ u8 func_param[MAX_RESOURCE_DESC * RESOURCE_DESC_SIZE]; }; +struct be_cmd_resp_get_profile_config_v1 { + struct be_cmd_req_hdr hdr; + u32 desc_count; + u8 func_param[MAX_RESOURCE_DESC_V1 * RESOURCE_DESC_SIZE]; +}; + struct be_cmd_req_set_profile_config { struct be_cmd_req_hdr hdr; u32 rsvd; @@ -1790,11 +1783,34 @@ u8 rsvd[3]; }; +struct be_cmd_req_intr_set { + struct be_cmd_req_hdr hdr; + u8 intr_enabled; + u8 rsvd[3]; +}; + static inline bool check_privilege(struct be_adapter *adapter, u32 flags) { return flags & adapter->cmd_privileges ? true : false; } +/************** Get IFACE LIST *******************/ +struct be_if_desc { + u32 if_id; + u32 cap_flags; + u32 en_flags; +}; + +struct be_cmd_req_get_iface_list { + struct be_cmd_req_hdr hdr; +}; + +struct be_cmd_resp_get_iface_list { + struct be_cmd_req_hdr hdr; + u32 if_cnt; + struct be_if_desc if_desc; +}; + extern int be_pci_fnum_get(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, @@ -1816,8 +1832,7 @@ struct be_queue_info *mccq, struct be_queue_info *cq); extern int be_cmd_txq_create(struct be_adapter *adapter, - struct be_queue_info *txq, - struct be_queue_info *cq); + struct be_tx_obj *txo); extern int be_cmd_rxq_create(struct be_adapter *adapter, struct be_queue_info *rxq, u16 cq_id, u16 frag_size, u32 if_id, u32 rss, u8 *rss_id); @@ -1844,11 +1859,11 @@ u32 tx_fc, u32 rx_fc); extern int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc); -extern int be_cmd_query_fw_cfg(struct be_adapter *adapter, - u32 *port_num, u32 *function_mode, u32 *function_caps); +extern int be_cmd_query_fw_cfg(struct be_adapter *adapter, u32 *port_num, + u32 *function_mode, u32 *function_caps, u16 *asic_rev); extern int be_cmd_reset_function(struct be_adapter *adapter); extern int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable, - u16 table_size); + u32 rss_hash_opts, u16 table_size); extern int be_process_mcc(struct be_adapter *adapter); extern int be_cmd_set_beacon_state(struct be_adapter *adapter, u8 port_num, u8 beacon, u8 status, u8 state); @@ -1913,8 +1928,11 @@ extern int be_cmd_query_port_name(struct be_adapter *adapter, u8 *port_name); extern int be_cmd_get_func_config(struct be_adapter *adapter); extern int be_cmd_get_profile_config(struct be_adapter *adapter, u32 *cap_flags, - u8 domain); + u16 *txq_count, u8 domain); extern int be_cmd_set_profile_config(struct be_adapter *adapter, u32 bps, u8 domain); +extern int be_cmd_get_if_id(struct be_adapter *adapter, + struct be_vf_cfg *vf_cfg, int vf_num); extern int be_cmd_enable_vf(struct be_adapter *adapter, u8 domain); +extern int be_cmd_intr_set(struct be_adapter *adapter, bool intr_enable); --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be.h +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or @@ -34,7 +34,7 @@ #include "be_hw.h" #include "be_roce.h" -#define DRV_VER "4.4.161.0u" +#define DRV_VER "4.6.62.0u" #define DRV_NAME "be2net" #define BE_NAME "Emulex BladeEngine2" #define BE3_NAME "Emulex BladeEngine3" @@ -214,6 +214,7 @@ }; struct be_tx_obj { + u32 db_offset; struct be_queue_info q; struct be_queue_info cq; /* Remember the skbs that were transmitted */ @@ -292,7 +293,7 @@ u32 rx_in_range_errors; u32 rx_out_range_errors; u32 rx_frame_too_long; - u32 rx_address_mismatch_drops; + u32 rx_address_filtered; u32 rx_dropped_too_small; u32 rx_dropped_too_short; u32 rx_dropped_header_too_small; @@ -326,6 +327,7 @@ #define BE_FLAGS_LINK_STATUS_INIT 1 #define BE_FLAGS_WORKER_SCHEDULED (1 << 3) +#define BE_FLAGS_NAPI_ENABLED (1 << 9) #define BE_UC_PMAC_COUNT 30 #define BE_VF_UC_PMAC_COUNT 2 @@ -349,6 +351,7 @@ struct pci_dev *pdev; struct net_device *netdev; + u8 __iomem *csr; /* CSR BAR used only for BE2/3 */ u8 __iomem *db; /* Door Bell */ struct mutex mbox_lock; /* For serializing mbox cmds to BE card */ @@ -433,6 +436,7 @@ u8 wol_cap; bool wol; u32 uc_macs; /* Count of secondary UC MAC programmed */ + u16 asic_rev; u32 msg_enable; int be_get_temp_freq; u16 max_mcast_mac; @@ -444,6 +448,7 @@ u16 max_event_queues; u32 if_cap_flags; u8 pf_number; + u64 rss_flags; }; #define be_physfn(adapter) (!adapter->virtfn) --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_main.c +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_main.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or @@ -153,13 +153,10 @@ return 0; } -static void be_intr_set(struct be_adapter *adapter, bool enable) +static void be_reg_intr_set(struct be_adapter *adapter, bool enable) { u32 reg, enabled; - if (adapter->eeh_error) - return; - pci_read_config_dword(adapter->pdev, PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET, ®); enabled = reg & MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK; @@ -175,6 +172,22 @@ PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET, reg); } +static void be_intr_set(struct be_adapter *adapter, bool enable) +{ + int status = 0; + + /* On lancer interrupts can't be controlled via this register */ + if (lancer_chip(adapter)) + return; + + if (adapter->eeh_error) + return; + + status = be_cmd_intr_set(adapter, enable); + if (status) + be_reg_intr_set(adapter, enable); +} + static void be_rxq_notify(struct be_adapter *adapter, u16 qid, u16 posted) { u32 val = 0; @@ -185,14 +198,15 @@ iowrite32(val, adapter->db + DB_RQ_OFFSET); } -static void be_txq_notify(struct be_adapter *adapter, u16 qid, u16 posted) +static void be_txq_notify(struct be_adapter *adapter, struct be_tx_obj *txo, + u16 posted) { u32 val = 0; - val |= qid & DB_TXULP_RING_ID_MASK; + val |= txo->q.id & DB_TXULP_RING_ID_MASK; val |= (posted & DB_TXULP_NUM_POSTED_MASK) << DB_TXULP_NUM_POSTED_SHIFT; wmb(); - iowrite32(val, adapter->db + DB_TXULP1_OFFSET); + iowrite32(val, adapter->db + txo->db_offset); } static void be_eq_notify(struct be_adapter *adapter, u16 qid, @@ -340,9 +354,9 @@ drvs->rx_input_fifo_overflow_drop = port_stats->rx_input_fifo_overflow; drvs->rx_dropped_header_too_small = port_stats->rx_dropped_header_too_small; - drvs->rx_address_mismatch_drops = - port_stats->rx_address_mismatch_drops + - port_stats->rx_vlan_mismatch_drops; + drvs->rx_address_filtered = + port_stats->rx_address_filtered + + port_stats->rx_vlan_filtered; drvs->rx_alignment_symbol_errors = port_stats->rx_alignment_symbol_errors; @@ -391,12 +405,13 @@ port_stats->rx_dropped_header_too_small; drvs->rx_input_fifo_overflow_drop = port_stats->rx_input_fifo_overflow_drop; - drvs->rx_address_mismatch_drops = port_stats->rx_address_mismatch_drops; + drvs->rx_address_filtered = port_stats->rx_address_filtered; drvs->rx_alignment_symbol_errors = port_stats->rx_alignment_symbol_errors; drvs->rxpp_fifo_overflow_drop = port_stats->rxpp_fifo_overflow_drop; drvs->tx_pauseframes = port_stats->tx_pauseframes; drvs->tx_controlframes = port_stats->tx_controlframes; + drvs->tx_priority_pauseframes = port_stats->tx_priority_pauseframes; drvs->jabber_events = port_stats->jabber_events; drvs->rx_drops_no_pbuf = rxf_stats->rx_drops_no_pbuf; drvs->rx_drops_no_erx_descr = rxf_stats->rx_drops_no_erx_descr; @@ -432,9 +447,9 @@ drvs->rx_dropped_header_too_small = pport_stats->rx_dropped_header_too_small; drvs->rx_input_fifo_overflow_drop = pport_stats->rx_fifo_overflow; - drvs->rx_address_mismatch_drops = - pport_stats->rx_address_mismatch_drops + - pport_stats->rx_vlan_mismatch_drops; + drvs->rx_address_filtered = + pport_stats->rx_address_filtered + + pport_stats->rx_vlan_filtered; drvs->rx_alignment_symbol_errors = pport_stats->rx_symbol_errors_lo; drvs->rxpp_fifo_overflow_drop = pport_stats->rx_fifo_overflow; drvs->tx_pauseframes = pport_stats->tx_pause_frames_lo; @@ -458,11 +473,26 @@ ACCESS_ONCE(*acc) = newacc; } +void populate_erx_stats(struct be_adapter *adapter, + struct be_rx_obj *rxo, + u32 erx_stat) +{ + if (!BEx_chip(adapter)) + rx_stats(rxo)->rx_drops_no_frags = erx_stat; + else + /* below erx HW counter can actually wrap around after + * 65535. Driver accumulates a 32-bit value + */ + accumulate_16bit_val(&rx_stats(rxo)->rx_drops_no_frags, + (u16)erx_stat); +} + void be_parse_stats(struct be_adapter *adapter) { struct be_erx_stats_v1 *erx = be_erx_stats_from_cmd(adapter); struct be_rx_obj *rxo; int i; + u32 erx_stat; if (lancer_chip(adapter)) { populate_lancer_stats(adapter); @@ -475,12 +505,8 @@ /* as erx_v1 is longer than v0, ok to use v1 for v0 access */ for_all_rx_queues(adapter, rxo, i) { - /* below erx HW counter can actually wrap around after - * 65535. Driver accumulates a 32-bit value - */ - accumulate_16bit_val(&rx_stats(rxo)->rx_drops_no_frags, - (u16)erx->rx_drops_no_fragments \ - [rxo->q.id]); + erx_stat = erx->rx_drops_no_fragments[rxo->q.id]; + populate_erx_stats(adapter, rxo, erx_stat); } } } @@ -759,8 +785,9 @@ 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; + skb = __vlan_put_tag(skb, vlan_tag); + if (skb) + skb->vlan_tci = 0; } return skb; @@ -821,7 +848,7 @@ stopped = true; } - be_txq_notify(adapter, txq->id, wrb_cnt); + be_txq_notify(adapter, txo, wrb_cnt); be_tx_stats_update(txo, wrb_cnt, copied, gso_segs, stopped); } else { @@ -1957,7 +1984,7 @@ if (status) return status; - status = be_cmd_txq_create(adapter, &txo->q, &txo->cq); + status = be_cmd_txq_create(adapter, txo); if (status) return status; } @@ -2277,7 +2304,7 @@ return num; } -static void be_msix_enable(struct be_adapter *adapter) +static int be_msix_enable(struct be_adapter *adapter) { #define BE_MIN_MSIX_VECTORS 1 int i, status, num_vec, num_roce_vec = 0; @@ -2302,13 +2329,17 @@ goto done; } else if (status >= BE_MIN_MSIX_VECTORS) { num_vec = status; - if (pci_enable_msix(adapter->pdev, adapter->msix_entries, - num_vec) == 0) + status = pci_enable_msix(adapter->pdev, adapter->msix_entries, + num_vec); + if (!status) goto done; } dev_warn(dev, "MSIx enable failed\n"); - return; + /* INTx is not supported in VFs, so fail probe if enable_msix fails */ + if (!be_physfn(adapter)) + return status; + return 0; done: if (be_roce_supported(adapter)) { if (num_vec > num_roce_vec) { @@ -2322,7 +2353,7 @@ } else adapter->num_msix_vec = num_vec; dev_info(dev, "enabled %d MSI-x vector(s)\n", adapter->num_msix_vec); - return; + return 0; } static inline int be_msix_vec_get(struct be_adapter *adapter, @@ -2435,11 +2466,11 @@ be_roce_dev_close(adapter); - if (!lancer_chip(adapter)) - be_intr_set(adapter, false); - - for_all_evt_queues(adapter, eqo, i) - napi_disable(&eqo->napi); + if (adapter->flags & BE_FLAGS_NAPI_ENABLED) { + for_all_evt_queues(adapter, eqo, i) + napi_disable(&eqo->napi); + adapter->flags &= ~BE_FLAGS_NAPI_ENABLED; + } be_async_mcc_disable(adapter); @@ -2499,9 +2530,19 @@ rsstable[j + i] = rxo->rss_id; } } - rc = be_cmd_rss_config(adapter, rsstable, 128); - if (rc) + adapter->rss_flags = RSS_ENABLE_TCP_IPV4 | RSS_ENABLE_IPV4 | + RSS_ENABLE_TCP_IPV6 | RSS_ENABLE_IPV6; + + if (!BEx_chip(adapter)) + adapter->rss_flags |= RSS_ENABLE_UDP_IPV4 | + RSS_ENABLE_UDP_IPV6; + + rc = be_cmd_rss_config(adapter, rsstable, adapter->rss_flags, + 128); + if (rc) { + adapter->rss_flags = 0; return rc; + } } /* First time posting */ @@ -2523,10 +2564,9 @@ if (status) goto err; - be_irq_register(adapter); - - if (!lancer_chip(adapter)) - be_intr_set(adapter, true); + status = be_irq_register(adapter); + if (status) + goto err; for_all_rx_queues(adapter, rxo, i) be_cq_notify(adapter, rxo->cq.id, true, 0); @@ -2540,6 +2580,7 @@ napi_enable(&eqo->napi); be_eq_notify(adapter, eqo->q.id, true, false, 0); } + adapter->flags |= BE_FLAGS_NAPI_ENABLED; status = be_cmd_link_status_query(adapter, NULL, &link_status, 0); if (!status) @@ -2597,7 +2638,7 @@ * These addresses are programmed in the ASIC by the PF and the VF driver * queries for the MAC address during its probe. */ -static inline int be_vf_eth_addr_config(struct be_adapter *adapter) +static int be_vf_eth_addr_config(struct be_adapter *adapter) { u32 vf; int status = 0; @@ -2626,13 +2667,34 @@ return status; } +static int be_vfs_mac_query(struct be_adapter *adapter) +{ + int status, vf; + u8 mac[ETH_ALEN]; + struct be_vf_cfg *vf_cfg; + bool active; + + for_all_vfs(adapter, vf_cfg, vf) { + be_cmd_get_mac_from_list(adapter, mac, &active, + &vf_cfg->pmac_id, 0); + + status = be_cmd_mac_addr_query(adapter, mac, false, + vf_cfg->if_handle, 0); + if (status) + return status; + memcpy(vf_cfg->mac_addr, mac, ETH_ALEN); + } + return 0; +} + static void be_vf_clear(struct be_adapter *adapter) { struct be_vf_cfg *vf_cfg; u32 vf; if (be_find_vfs(adapter, ASSIGNED)) { - dev_warn(&adapter->pdev->dev, "VFs are assigned to VMs\n"); + dev_warn(&adapter->pdev->dev, + "VFs are assigned to VMs: not disabling VFs\n"); goto done; } @@ -2681,21 +2743,30 @@ return 0; } -static void be_get_vf_if_cap_flags(struct be_adapter *adapter, - u32 *cap_flags, u8 domain) +static int be_vfs_if_create(struct be_adapter *adapter) { - bool profile_present = false; + struct be_vf_cfg *vf_cfg; + u32 cap_flags, en_flags, vf; int status; - if (lancer_chip(adapter)) { - status = be_cmd_get_profile_config(adapter, cap_flags, domain); - if (!status) - profile_present = true; - } + cap_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | + BE_IF_FLAGS_MULTICAST; + + for_all_vfs(adapter, vf_cfg, vf) { + if (!BE3_chip(adapter)) + be_cmd_get_profile_config(adapter, &cap_flags, + NULL, vf + 1); - if (!profile_present) - *cap_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | - BE_IF_FLAGS_MULTICAST; + /* If a FW profile exists, then cap_flags are updated */ + en_flags = cap_flags & (BE_IF_FLAGS_UNTAGGED | + BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_MULTICAST); + status = be_cmd_if_create(adapter, cap_flags, en_flags, + &vf_cfg->if_handle, vf + 1); + if (status) + goto err; + } +err: + return status; } static int be_vf_setup_init(struct be_adapter *adapter) @@ -2718,65 +2789,70 @@ static int be_vf_setup(struct be_adapter *adapter) { struct be_vf_cfg *vf_cfg; - struct device *dev = &adapter->pdev->dev; - u32 cap_flags, en_flags, vf; u16 def_vlan, lnk_speed; - int status, enabled_vfs; - - enabled_vfs = be_find_vfs(adapter, ENABLED); - if (enabled_vfs) { - dev_warn(dev, "%d VFs are already enabled\n", enabled_vfs); - dev_warn(dev, "Ignoring num_vfs=%d setting\n", num_vfs); - return 0; - } - - if (num_vfs > adapter->dev_num_vfs) { - dev_warn(dev, "Device supports %d VFs and not %d\n", - adapter->dev_num_vfs, num_vfs); - num_vfs = adapter->dev_num_vfs; - } + int status, old_vfs, vf; + struct device *dev = &adapter->pdev->dev; - status = pci_enable_sriov(adapter->pdev, num_vfs); - if (!status) { - adapter->num_vfs = num_vfs; + old_vfs = be_find_vfs(adapter, ENABLED); + if (old_vfs) { + dev_info(dev, "%d VFs are already enabled\n", old_vfs); + if (old_vfs != num_vfs) + dev_warn(dev, "Ignoring num_vfs=%d setting\n", num_vfs); + adapter->num_vfs = old_vfs; } else { - /* Platform doesn't support SRIOV though device supports it */ - dev_warn(dev, "SRIOV enable failed\n"); - return 0; + if (num_vfs > adapter->dev_num_vfs) + dev_info(dev, "Device supports %d VFs and not %d\n", + adapter->dev_num_vfs, num_vfs); + adapter->num_vfs = min_t(u16, num_vfs, adapter->dev_num_vfs); + + status = pci_enable_sriov(adapter->pdev, num_vfs); + if (status) { + dev_err(dev, "SRIOV enable failed\n"); + adapter->num_vfs = 0; + return 0; + } } status = be_vf_setup_init(adapter); if (status) goto err; - for_all_vfs(adapter, vf_cfg, vf) { - be_get_vf_if_cap_flags(adapter, &cap_flags, vf + 1); - - en_flags = cap_flags & (BE_IF_FLAGS_UNTAGGED | - BE_IF_FLAGS_BROADCAST | - BE_IF_FLAGS_MULTICAST); - - status = be_cmd_if_create(adapter, cap_flags, en_flags, - &vf_cfg->if_handle, vf + 1); + if (old_vfs) { + for_all_vfs(adapter, vf_cfg, vf) { + status = be_cmd_get_if_id(adapter, vf_cfg, vf); + if (status) + goto err; + } + } else { + status = be_vfs_if_create(adapter); if (status) goto err; } - if (!enabled_vfs) { + if (old_vfs) { + status = be_vfs_mac_query(adapter); + if (status) + goto err; + } else { status = be_vf_eth_addr_config(adapter); if (status) goto err; } for_all_vfs(adapter, vf_cfg, vf) { - lnk_speed = 1000; - status = be_cmd_set_qos(adapter, lnk_speed, vf + 1); - if (status) - goto err; - vf_cfg->tx_rate = lnk_speed * 10; + /* BE3 FW, by default, caps VF TX-rate to 100mbps. + * Allow full available bandwidth + */ + if (BE3_chip(adapter) && !old_vfs) + be_cmd_set_qos(adapter, 1000, vf+1); + + status = be_cmd_link_status_query(adapter, &lnk_speed, + NULL, vf + 1); + if (!status) + vf_cfg->tx_rate = lnk_speed; status = be_cmd_get_hsw_config(adapter, &def_vlan, - vf + 1, vf_cfg->if_handle); + vf + 1, vf_cfg->if_handle); if (status) goto err; vf_cfg->def_vid = def_vlan; @@ -2785,6 +2861,8 @@ } return 0; err: + dev_err(dev, "VF setup failed\n"); + be_vf_clear(adapter); return status; } @@ -2838,14 +2916,17 @@ static void be_get_resources(struct be_adapter *adapter) { - int status; + u16 dev_num_vfs; + int pos, status; bool profile_present = false; + u16 txq_count = 0; - if (lancer_chip(adapter)) { + if (!BEx_chip(adapter)) { status = be_cmd_get_func_config(adapter); - if (!status) profile_present = true; + } else if (BE3_chip(adapter) && be_physfn(adapter)) { + be_cmd_get_profile_config(adapter, NULL, &txq_count, 0); } if (profile_present) { @@ -2883,7 +2964,9 @@ adapter->max_vlans = BE_NUM_VLANS_SUPPORTED; adapter->max_mcast_mac = BE_MAX_MC; - adapter->max_tx_queues = MAX_TX_QS; + adapter->max_tx_queues = txq_count ? txq_count : MAX_TX_QS; + adapter->max_tx_queues = min_t(u16, adapter->max_tx_queues, + MAX_TX_QS); adapter->max_rss_queues = (adapter->be3_native) ? BE3_MAX_RSS_QS : BE2_MAX_RSS_QS; adapter->max_event_queues = BE3_MAX_RSS_QS; @@ -2899,17 +2982,26 @@ if (adapter->function_caps & BE_FUNCTION_CAPS_RSS) adapter->if_cap_flags |= BE_IF_FLAGS_RSS; } + + pos = pci_find_ext_capability(adapter->pdev, PCI_EXT_CAP_ID_SRIOV); + if (pos) { + pci_read_config_word(adapter->pdev, pos + PCI_SRIOV_TOTAL_VF, + &dev_num_vfs); + if (BE3_chip(adapter)) + dev_num_vfs = min_t(u16, dev_num_vfs, MAX_VFS); + adapter->dev_num_vfs = dev_num_vfs; + } } /* Routine to query per function resource limits */ static int be_get_config(struct be_adapter *adapter) { - int pos, status; - u16 dev_num_vfs; + int status; status = be_cmd_query_fw_cfg(adapter, &adapter->port_num, &adapter->function_mode, - &adapter->function_caps); + &adapter->function_caps, + &adapter->asic_rev); if (status) goto err; @@ -2923,14 +3015,6 @@ goto err; } - pos = pci_find_ext_capability(adapter->pdev, PCI_EXT_CAP_ID_SRIOV); - 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; - } err: return status; } @@ -2953,7 +3037,9 @@ if (status) goto err; - be_msix_enable(adapter); + status = be_msix_enable(adapter); + if (status) + goto err; status = be_evt_queues_create(adapter); if (status) @@ -3178,7 +3264,7 @@ return 0; } -/* For BE2 and BE3 */ +/* For BE2, BE3 and BE3-R */ static int be_flash_BEx(struct be_adapter *adapter, const struct firmware *fw, struct be_dma_mem *flash_cmd, @@ -3493,18 +3579,22 @@ #define UFI_TYPE2 2 #define UFI_TYPE3 3 +#define UFI_TYPE3R 10 #define UFI_TYPE4 4 static int be_get_ufi_type(struct be_adapter *adapter, - struct flash_file_hdr_g2 *fhdr) + struct flash_file_hdr_g3 *fhdr) { if (fhdr == NULL) goto be_get_ufi_exit; if (skyhawk_chip(adapter) && fhdr->build[0] == '4') return UFI_TYPE4; - else if (BE3_chip(adapter) && fhdr->build[0] == '3') - return UFI_TYPE3; - else if (BE2_chip(adapter) && fhdr->build[0] == '2') + else if (BE3_chip(adapter) && fhdr->build[0] == '3') { + if (fhdr->asic_type_rev == 0x10) + return UFI_TYPE3R; + else + return UFI_TYPE3; + } else if (BE2_chip(adapter) && fhdr->build[0] == '2') return UFI_TYPE2; be_get_ufi_exit: @@ -3515,7 +3605,6 @@ static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw) { - struct flash_file_hdr_g2 *fhdr; struct flash_file_hdr_g3 *fhdr3; struct image_hdr *img_hdr_ptr = NULL; struct be_dma_mem flash_cmd; @@ -3533,23 +3622,37 @@ } p = fw->data; - fhdr = (struct flash_file_hdr_g2 *)p; + fhdr3 = (struct flash_file_hdr_g3 *)p; - ufi_type = be_get_ufi_type(adapter, fhdr); + ufi_type = be_get_ufi_type(adapter, fhdr3); - fhdr3 = (struct flash_file_hdr_g3 *)fw->data; num_imgs = le32_to_cpu(fhdr3->num_imgs); for (i = 0; i < num_imgs; i++) { img_hdr_ptr = (struct image_hdr *)(fw->data + (sizeof(struct flash_file_hdr_g3) + i * sizeof(struct image_hdr))); if (le32_to_cpu(img_hdr_ptr->imageid) == 1) { - if (ufi_type == UFI_TYPE4) + switch (ufi_type) { + case UFI_TYPE4: status = be_flash_skyhawk(adapter, fw, &flash_cmd, num_imgs); - else if (ufi_type == UFI_TYPE3) + break; + case UFI_TYPE3R: status = be_flash_BEx(adapter, fw, &flash_cmd, num_imgs); + break; + case UFI_TYPE3: + /* Do not flash this ufi on BE3-R cards */ + if (adapter->asic_rev < 0x10) + status = be_flash_BEx(adapter, fw, + &flash_cmd, + num_imgs); + else { + status = -1; + dev_err(&adapter->pdev->dev, + "Can't load BE3 UFI on BE3R\n"); + } + } } } @@ -3652,6 +3755,8 @@ static void be_unmap_pci_bars(struct be_adapter *adapter) { + if (adapter->csr) + pci_iounmap(adapter->pdev, adapter->csr); if (adapter->db) pci_iounmap(adapter->pdev, adapter->db); } @@ -3685,6 +3790,12 @@ adapter->if_type = (sli_intf & SLI_INTF_IF_TYPE_MASK) >> SLI_INTF_IF_TYPE_SHIFT; + if (BEx_chip(adapter) && be_physfn(adapter)) { + adapter->csr = pci_iomap(adapter->pdev, 2, 0); + if (adapter->csr == NULL) + return -ENOMEM; + } + addr = pci_iomap(adapter->pdev, db_bar(adapter), 0); if (addr == NULL) goto pci_map_err; @@ -3809,6 +3920,7 @@ return; be_roce_dev_remove(adapter); + be_intr_set(adapter, false); cancel_delayed_work_sync(&adapter->func_recovery_work); @@ -4063,6 +4175,11 @@ status = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)); if (!status) { + status = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); + if (status < 0) { + dev_err(&pdev->dev, "dma_set_coherent_mask failed\n"); + goto free_netdev; + } netdev->features |= NETIF_F_HIGHDMA; } else { status = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); @@ -4087,22 +4204,22 @@ goto ctrl_clean; } - /* tell fw we're ready to fire cmds */ - status = be_cmd_fw_init(adapter); - if (status) - goto ctrl_clean; - if (be_reset_required(adapter)) { status = be_cmd_reset_function(adapter); if (status) goto ctrl_clean; + + /* Wait for interrupts to quiesce after an FLR */ + msleep(100); } - /* The INTR bit may be set in the card when probed by a kdump kernel - * after a crash. - */ - if (!lancer_chip(adapter)) - be_intr_set(adapter, false); + /* Allow interrupts for other ULPs running on NIC function */ + be_intr_set(adapter, true); + + /* tell fw we're ready to fire cmds */ + status = be_cmd_fw_init(adapter); + if (status) + goto ctrl_clean; status = be_stats_init(adapter); if (status) @@ -4293,6 +4410,8 @@ pci_restore_state(pdev); /* Check if card is ok and fw is ready */ + dev_info(&adapter->pdev->dev, + "Waiting for FW to be ready after EEH reset\n"); status = be_fw_wait_ready(adapter); if (status) return PCI_ERS_RESULT_DISCONNECT; @@ -4311,12 +4430,12 @@ pci_save_state(pdev); - /* tell fw we're ready to fire cmds */ - status = be_cmd_fw_init(adapter); + status = be_cmd_reset_function(adapter); if (status) goto err; - status = be_cmd_reset_function(adapter); + /* tell fw we're ready to fire cmds */ + status = be_cmd_fw_init(adapter); if (status) goto err; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.c +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or @@ -93,13 +93,16 @@ * little endian) */ static inline bool be_mcc_compl_is_new(struct be_mcc_compl *compl) { + u32 flags; + if (compl->flags != 0) { - compl->flags = le32_to_cpu(compl->flags); - BUG_ON((compl->flags & CQE_FLAGS_VALID_MASK) == 0); - return true; - } else { - return false; + flags = le32_to_cpu(compl->flags); + if (flags & CQE_FLAGS_VALID_MASK) { + compl->flags = flags; + return true; + } } + return false; } /* Need to reset the entire word that houses the valid bit */ @@ -470,19 +473,17 @@ return 0; } -static int be_POST_stage_get(struct be_adapter *adapter, u16 *stage) +static u16 be_POST_stage_get(struct be_adapter *adapter) { u32 sem; - u32 reg = skyhawk_chip(adapter) ? SLIPORT_SEMAPHORE_OFFSET_SH : - SLIPORT_SEMAPHORE_OFFSET_BE; - - pci_read_config_dword(adapter->pdev, reg, &sem); - *stage = sem & POST_STAGE_MASK; - if ((sem >> POST_ERR_SHIFT) & POST_ERR_MASK) - return -1; + if (BEx_chip(adapter)) + sem = ioread32(adapter->csr + SLIPORT_SEMAPHORE_OFFSET_BEx); else - return 0; + pci_read_config_dword(adapter->pdev, + SLIPORT_SEMAPHORE_OFFSET_SH, &sem); + + return sem & POST_STAGE_MASK; } int lancer_wait_ready(struct be_adapter *adapter) @@ -576,19 +577,17 @@ } do { - status = be_POST_stage_get(adapter, &stage); - if (status) { - dev_err(dev, "POST error; stage=0x%x\n", stage); - return -1; - } else if (stage != POST_STAGE_ARMFW_RDY) { - if (msleep_interruptible(2000)) { - dev_err(dev, "Waiting for POST aborted\n"); - return -EINTR; - } - timeout += 2; - } else { + stage = be_POST_stage_get(adapter); + if (stage == POST_STAGE_ARMFW_RDY) return 0; + + dev_info(dev, "Waiting for POST, %ds elapsed\n", + timeout); + if (msleep_interruptible(2000)) { + dev_err(dev, "Waiting for POST aborted\n"); + return -EINTR; } + timeout += 2; } while (timeout < 60); dev_err(dev, "POST timeout; stage=0x%x\n", stage); @@ -688,10 +687,8 @@ if (!mccq->created) return NULL; - if (atomic_read(&mccq->used) >= mccq->len) { - dev_err(&adapter->pdev->dev, "Out of MCCQ wrbs\n"); + if (atomic_read(&mccq->used) >= mccq->len) return NULL; - } wrb = queue_head_node(mccq); queue_head_inc(mccq); @@ -933,19 +930,8 @@ OPCODE_COMMON_CQ_CREATE, sizeof(*req), wrb, NULL); req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); - if (lancer_chip(adapter)) { - req->hdr.version = 2; - req->page_size = 1; /* 1 for 4K */ - AMAP_SET_BITS(struct amap_cq_context_lancer, nodelay, ctxt, - no_delay); - AMAP_SET_BITS(struct amap_cq_context_lancer, count, ctxt, - __ilog2_u32(cq->len/256)); - AMAP_SET_BITS(struct amap_cq_context_lancer, valid, ctxt, 1); - AMAP_SET_BITS(struct amap_cq_context_lancer, eventable, - ctxt, 1); - AMAP_SET_BITS(struct amap_cq_context_lancer, eqid, - ctxt, eq->id); - } else { + + if (BEx_chip(adapter)) { AMAP_SET_BITS(struct amap_cq_context_be, coalescwm, ctxt, coalesce_wm); AMAP_SET_BITS(struct amap_cq_context_be, nodelay, @@ -955,6 +941,18 @@ AMAP_SET_BITS(struct amap_cq_context_be, valid, ctxt, 1); AMAP_SET_BITS(struct amap_cq_context_be, eventable, ctxt, 1); AMAP_SET_BITS(struct amap_cq_context_be, eqid, ctxt, eq->id); + } else { + req->hdr.version = 2; + req->page_size = 1; /* 1 for 4K */ + AMAP_SET_BITS(struct amap_cq_context_v2, nodelay, ctxt, + no_delay); + AMAP_SET_BITS(struct amap_cq_context_v2, count, ctxt, + __ilog2_u32(cq->len/256)); + AMAP_SET_BITS(struct amap_cq_context_v2, valid, ctxt, 1); + AMAP_SET_BITS(struct amap_cq_context_v2, eventable, + ctxt, 1); + AMAP_SET_BITS(struct amap_cq_context_v2, eqid, + ctxt, eq->id); } be_dws_cpu_to_le(ctxt, sizeof(req->context)); @@ -1096,15 +1094,14 @@ return status; } -int be_cmd_txq_create(struct be_adapter *adapter, - struct be_queue_info *txq, - struct be_queue_info *cq) +int be_cmd_txq_create(struct be_adapter *adapter, struct be_tx_obj *txo) { struct be_mcc_wrb *wrb; struct be_cmd_req_eth_tx_create *req; + struct be_queue_info *txq = &txo->q; + struct be_queue_info *cq = &txo->cq; struct be_dma_mem *q_mem = &txq->dma_mem; - void *ctxt; - int status; + int status, ver = 0; spin_lock_bh(&adapter->mcc_lock); @@ -1115,34 +1112,37 @@ } req = embedded_payload(wrb); - ctxt = &req->context; be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH, OPCODE_ETH_TX_CREATE, sizeof(*req), wrb, NULL); if (lancer_chip(adapter)) { req->hdr.version = 1; - AMAP_SET_BITS(struct amap_tx_context, if_id, ctxt, - adapter->if_handle); + req->if_id = cpu_to_le16(adapter->if_handle); + } else if (BEx_chip(adapter)) { + if (adapter->function_caps & BE_FUNCTION_CAPS_SUPER_NIC) + req->hdr.version = 2; + } else { /* For SH */ + req->hdr.version = 2; } req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size); req->ulp_num = BE_ULP1_NUM; req->type = BE_ETH_TX_RING_TYPE_STANDARD; - - AMAP_SET_BITS(struct amap_tx_context, tx_ring_size, ctxt, - be_encoded_q_len(txq->len)); - AMAP_SET_BITS(struct amap_tx_context, ctx_valid, ctxt, 1); - AMAP_SET_BITS(struct amap_tx_context, cq_id_send, ctxt, cq->id); - - be_dws_cpu_to_le(ctxt, sizeof(req->context)); - + req->cq_id = cpu_to_le16(cq->id); + req->queue_size = be_encoded_q_len(txq->len); be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem); + ver = req->hdr.version; + status = be_mcc_notify_wait(adapter); if (!status) { struct be_cmd_resp_eth_tx_create *resp = embedded_payload(wrb); txq->id = le16_to_cpu(resp->cid); + if (ver == 2) + txo->db_offset = le32_to_cpu(resp->db_offset); + else + txo->db_offset = DB_TXULP1_OFFSET; txq->created = true; } @@ -1732,10 +1732,12 @@ req->if_id = cpu_to_le32(adapter->if_handle); if (flags & IFF_PROMISC) { req->if_flags_mask = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS | - BE_IF_FLAGS_VLAN_PROMISCUOUS); + BE_IF_FLAGS_VLAN_PROMISCUOUS | + BE_IF_FLAGS_MCAST_PROMISCUOUS); if (value == ON) req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS | - BE_IF_FLAGS_VLAN_PROMISCUOUS); + BE_IF_FLAGS_VLAN_PROMISCUOUS | + BE_IF_FLAGS_MCAST_PROMISCUOUS); } else if (flags & IFF_ALLMULTI) { req->if_flags_mask = req->if_flags = cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); @@ -1835,7 +1837,7 @@ /* Uses mbox */ int be_cmd_query_fw_cfg(struct be_adapter *adapter, u32 *port_num, - u32 *mode, u32 *caps) + u32 *mode, u32 *caps, u16 *asic_rev) { struct be_mcc_wrb *wrb; struct be_cmd_req_query_fw_cfg *req; @@ -1856,6 +1858,7 @@ *port_num = le32_to_cpu(resp->phys_port); *mode = le32_to_cpu(resp->function_mode); *caps = le32_to_cpu(resp->function_caps); + *asic_rev = le32_to_cpu(resp->asic_revision) & 0xFF; } mutex_unlock(&adapter->mbox_lock); @@ -1898,7 +1901,8 @@ return status; } -int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable, u16 table_size) +int be_cmd_rss_config(struct be_adapter *adapter, u8 *rsstable, + u32 rss_hash_opts, u16 table_size) { struct be_mcc_wrb *wrb; struct be_cmd_req_rss_config *req; @@ -1917,16 +1921,12 @@ OPCODE_ETH_RSS_CONFIG, sizeof(*req), wrb, NULL); 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); + req->enable_rss = cpu_to_le16(rss_hash_opts); + req->cpu_table_size_log2 = cpu_to_le16(fls(table_size) - 1); - if (lancer_chip(adapter) || skyhawk_chip(adapter)) { + 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)); be_dws_cpu_to_le(req->hash, sizeof(req->hash)); @@ -2055,7 +2055,7 @@ spin_unlock_bh(&adapter->mcc_lock); if (!wait_for_completion_timeout(&adapter->flash_compl, - msecs_to_jiffies(30000))) + msecs_to_jiffies(60000))) status = -1; else status = adapter->flash_status; @@ -2344,7 +2344,6 @@ { struct be_mcc_wrb *wrb; struct be_cmd_req_seeprom_read *req; - struct be_sge *sge; int status; spin_lock_bh(&adapter->mcc_lock); @@ -2355,7 +2354,6 @@ goto err; } req = nonemb_cmd->va; - sge = nonembedded_sgl(wrb); be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, OPCODE_COMMON_SEEPROM_READ, sizeof(*req), wrb, @@ -2462,6 +2460,9 @@ struct mgmt_controller_attrib *attribs; struct be_dma_mem attribs_cmd; + if (mutex_lock_interruptible(&adapter->mbox_lock)) + return -1; + memset(&attribs_cmd, 0, sizeof(struct be_dma_mem)); attribs_cmd.size = sizeof(struct be_cmd_resp_cntl_attribs); attribs_cmd.va = pci_alloc_consistent(adapter->pdev, attribs_cmd.size, @@ -2469,12 +2470,10 @@ if (!attribs_cmd.va) { dev_err(&adapter->pdev->dev, "Memory allocation failure\n"); - return -ENOMEM; + status = -ENOMEM; + goto err; } - if (mutex_lock_interruptible(&adapter->mbox_lock)) - return -1; - wrb = wrb_from_mbox(adapter); if (!wrb) { status = -EBUSY; @@ -2494,8 +2493,9 @@ err: mutex_unlock(&adapter->mbox_lock); - pci_free_consistent(adapter->pdev, attribs_cmd.size, attribs_cmd.va, - attribs_cmd.dma); + if (attribs_cmd.va) + pci_free_consistent(adapter->pdev, attribs_cmd.size, + attribs_cmd.va, attribs_cmd.dma); return status; } @@ -2795,6 +2795,9 @@ CMD_SUBSYSTEM_ETH)) return -EPERM; + if (mutex_lock_interruptible(&adapter->mbox_lock)) + return -1; + memset(&cmd, 0, sizeof(struct be_dma_mem)); cmd.size = sizeof(struct be_cmd_resp_acpi_wol_magic_config_v1); cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, @@ -2802,12 +2805,10 @@ if (!cmd.va) { dev_err(&adapter->pdev->dev, "Memory allocation failure\n"); - return -ENOMEM; + status = -ENOMEM; + goto err; } - if (mutex_lock_interruptible(&adapter->mbox_lock)) - return -1; - wrb = wrb_from_mbox(adapter); if (!wrb) { status = -EBUSY; @@ -2838,7 +2839,8 @@ } err: mutex_unlock(&adapter->mbox_lock); - pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); + if (cmd.va) + pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); return status; } @@ -2943,14 +2945,15 @@ int i; for (i = 0; i < desc_count; i++) { - desc->desc_len = RESOURCE_DESC_SIZE; + desc->desc_len = desc->desc_len ? : RESOURCE_DESC_SIZE; if (((void *)desc + desc->desc_len) > (void *)(buf + max_buf_size)) { desc = NULL; break; } - if (desc->desc_type == NIC_RESOURCE_DESC_TYPE_ID) + if (desc->desc_type == NIC_RESOURCE_DESC_TYPE_V0 || + desc->desc_type == NIC_RESOURCE_DESC_TYPE_V1) break; desc = (void *)desc + desc->desc_len; @@ -2970,16 +2973,18 @@ int status; struct be_dma_mem cmd; + if (mutex_lock_interruptible(&adapter->mbox_lock)) + return -1; + memset(&cmd, 0, sizeof(struct be_dma_mem)); cmd.size = sizeof(struct be_cmd_resp_get_func_config); cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); if (!cmd.va) { dev_err(&adapter->pdev->dev, "Memory alloc failure\n"); - return -ENOMEM; + status = -ENOMEM; + goto err; } - if (mutex_lock_interruptible(&adapter->mbox_lock)) - return -1; wrb = wrb_from_mbox(adapter); if (!wrb) { @@ -2993,6 +2998,9 @@ OPCODE_COMMON_GET_FUNC_CONFIG, cmd.size, wrb, &cmd); + if (skyhawk_chip(adapter)) + req->hdr.version = 1; + status = be_mbox_notify_wait(adapter); if (!status) { struct be_cmd_resp_get_func_config *resp = cmd.va; @@ -3019,28 +3027,46 @@ } err: mutex_unlock(&adapter->mbox_lock); - pci_free_consistent(adapter->pdev, cmd.size, - cmd.va, cmd.dma); + if (cmd.va) + pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); return status; } - /* Uses sync mcc */ -int be_cmd_get_profile_config(struct be_adapter *adapter, u32 *cap_flags, - u8 domain) +/* Uses mbox */ +int be_cmd_get_profile_config_mbox(struct be_adapter *adapter, + u8 domain, struct be_dma_mem *cmd) { struct be_mcc_wrb *wrb; struct be_cmd_req_get_profile_config *req; int status; - struct be_dma_mem cmd; - memset(&cmd, 0, sizeof(struct be_dma_mem)); - cmd.size = sizeof(struct be_cmd_resp_get_profile_config); - cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, - &cmd.dma); - if (!cmd.va) { - dev_err(&adapter->pdev->dev, "Memory alloc failure\n"); - return -ENOMEM; - } + if (mutex_lock_interruptible(&adapter->mbox_lock)) + return -1; + wrb = wrb_from_mbox(adapter); + + req = cmd->va; + be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, + OPCODE_COMMON_GET_PROFILE_CONFIG, + cmd->size, wrb, cmd); + + req->type = ACTIVE_PROFILE_TYPE; + req->hdr.domain = domain; + if (!lancer_chip(adapter)) + req->hdr.version = 1; + + status = be_mbox_notify_wait(adapter); + + mutex_unlock(&adapter->mbox_lock); + return status; +} + +/* Uses sync mcc */ +int be_cmd_get_profile_config_mccq(struct be_adapter *adapter, + u8 domain, struct be_dma_mem *cmd) +{ + struct be_mcc_wrb *wrb; + struct be_cmd_req_get_profile_config *req; + int status; spin_lock_bh(&adapter->mcc_lock); @@ -3050,16 +3076,47 @@ goto err; } - req = cmd.va; - + req = cmd->va; be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, OPCODE_COMMON_GET_PROFILE_CONFIG, - cmd.size, wrb, &cmd); + cmd->size, wrb, cmd); req->type = ACTIVE_PROFILE_TYPE; req->hdr.domain = domain; + if (!lancer_chip(adapter)) + req->hdr.version = 1; status = be_mcc_notify_wait(adapter); + +err: + spin_unlock_bh(&adapter->mcc_lock); + return status; +} + +/* Uses sync mcc, if MCCQ is already created otherwise mbox */ +int be_cmd_get_profile_config(struct be_adapter *adapter, u32 *cap_flags, + u16 *txq_count, u8 domain) +{ + struct be_queue_info *mccq = &adapter->mcc_obj.q; + struct be_dma_mem cmd; + int status; + + memset(&cmd, 0, sizeof(struct be_dma_mem)); + if (!lancer_chip(adapter)) + cmd.size = sizeof(struct be_cmd_resp_get_profile_config_v1); + else + cmd.size = sizeof(struct be_cmd_resp_get_profile_config); + cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, + &cmd.dma); + if (!cmd.va) { + dev_err(&adapter->pdev->dev, "Memory alloc failure\n"); + return -ENOMEM; + } + + if (!mccq->created) + status = be_cmd_get_profile_config_mbox(adapter, domain, &cmd); + else + status = be_cmd_get_profile_config_mccq(adapter, domain, &cmd); if (!status) { struct be_cmd_resp_get_profile_config *resp = cmd.va; u32 desc_count = le32_to_cpu(resp->desc_count); @@ -3072,12 +3129,15 @@ status = -EINVAL; goto err; } - *cap_flags = le32_to_cpu(desc->cap_flags); + if (cap_flags) + *cap_flags = le32_to_cpu(desc->cap_flags); + if (txq_count) + *txq_count = le32_to_cpu(desc->txq_count); } err: - spin_unlock_bh(&adapter->mcc_lock); - pci_free_consistent(adapter->pdev, cmd.size, - cmd.va, cmd.dma); + if (cmd.va) + pci_free_consistent(adapter->pdev, cmd.size, + cmd.va, cmd.dma); return status; } @@ -3106,7 +3166,7 @@ req->hdr.domain = domain; req->desc_count = cpu_to_le32(1); - req->nic_desc.desc_type = NIC_RESOURCE_DESC_TYPE_ID; + req->nic_desc.desc_type = NIC_RESOURCE_DESC_TYPE_V0; req->nic_desc.desc_len = RESOURCE_DESC_SIZE; req->nic_desc.flags = (1 << QUN) | (1 << IMM) | (1 << NOSV); req->nic_desc.pf_num = adapter->pf_number; @@ -3138,6 +3198,39 @@ return status; } +int be_cmd_get_if_id(struct be_adapter *adapter, struct be_vf_cfg *vf_cfg, + int vf_num) +{ + struct be_mcc_wrb *wrb; + struct be_cmd_req_get_iface_list *req; + struct be_cmd_resp_get_iface_list *resp; + int status; + + spin_lock_bh(&adapter->mcc_lock); + + wrb = wrb_from_mccq(adapter); + if (!wrb) { + status = -EBUSY; + goto err; + } + req = embedded_payload(wrb); + + be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, + OPCODE_COMMON_GET_IFACE_LIST, sizeof(*resp), + wrb, NULL); + req->hdr.domain = vf_num + 1; + + status = be_mcc_notify_wait(adapter); + if (!status) { + resp = (struct be_cmd_resp_get_iface_list *)req; + vf_cfg->if_handle = le32_to_cpu(resp->if_desc.if_id); + } + +err: + spin_unlock_bh(&adapter->mcc_lock); + return status; +} + /* Uses sync mcc */ int be_cmd_enable_vf(struct be_adapter *adapter, u8 domain) { @@ -3170,6 +3263,31 @@ return status; } +int be_cmd_intr_set(struct be_adapter *adapter, bool intr_enable) +{ + struct be_mcc_wrb *wrb; + struct be_cmd_req_intr_set *req; + int status; + + if (mutex_lock_interruptible(&adapter->mbox_lock)) + return -1; + + wrb = wrb_from_mbox(adapter); + + req = embedded_payload(wrb); + + be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, + OPCODE_COMMON_SET_INTERRUPT_ENABLE, sizeof(*req), + wrb, NULL); + + req->intr_enabled = intr_enable; + + status = be_mbox_notify_wait(adapter); + + mutex_unlock(&adapter->mbox_lock); + return status; +} + int be_roce_mcc_cmd(void *netdev_handle, void *wrb_payload, int wrb_payload_size, u16 *cmd_status, u16 *ext_status) { --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_roce.c +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_roce.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or --- linux-ppc-3.8.0.orig/drivers/net/ethernet/emulex/benet/be_hw.h +++ linux-ppc-3.8.0/drivers/net/ethernet/emulex/benet/be_hw.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 - 2011 Emulex + * Copyright (C) 2005 - 2013 Emulex * All rights reserved. * * This program is free software; you can redistribute it and/or @@ -32,8 +32,8 @@ #define MPU_EP_CONTROL 0 /********** MPU semphore: used for SH & BE *************/ -#define SLIPORT_SEMAPHORE_OFFSET_BE 0x7c -#define SLIPORT_SEMAPHORE_OFFSET_SH 0x94 +#define SLIPORT_SEMAPHORE_OFFSET_BEx 0xac /* CSR BAR offset */ +#define SLIPORT_SEMAPHORE_OFFSET_SH 0x94 /* PCI-CFG offset */ #define POST_STAGE_MASK 0x0000FFFF #define POST_ERR_MASK 0x1 #define POST_ERR_SHIFT 31 @@ -72,6 +72,10 @@ */ #define MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK (1 << 29) /* bit 29 */ +/********* PCI Function Capability *********/ +#define BE_FUNCTION_CAPS_RSS 0x2 +#define BE_FUNCTION_CAPS_SUPER_NIC 0x40 + /********* Power management (WOL) **********/ #define PCICFG_PM_CONTROL_OFFSET 0x44 #define PCICFG_PM_CONTROL_MASK 0x108 /* bits 3 & 8 */ @@ -495,7 +499,8 @@ u32 antidote; u32 num_imgs; u8 build[24]; - u8 rsvd[32]; + u8 asic_type_rev; + u8 rsvd[31]; }; struct flash_section_hdr { --- linux-ppc-3.8.0.orig/drivers/net/ethernet/broadcom/tg3.h +++ linux-ppc-3.8.0/drivers/net/ethernet/broadcom/tg3.h @@ -65,6 +65,9 @@ #define TG3PCI_DEVICE_TIGON3_57766 0x1686 #define TG3PCI_DEVICE_TIGON3_57786 0x16b3 #define TG3PCI_DEVICE_TIGON3_57782 0x16b7 +#define TG3PCI_DEVICE_TIGON3_5762 0x1687 +#define TG3PCI_DEVICE_TIGON3_5725 0x1643 +#define TG3PCI_DEVICE_TIGON3_5727 0x16f3 /* 0x04 --> 0x2c unused */ #define TG3PCI_SUBVENDOR_ID_BROADCOM PCI_VENDOR_ID_BROADCOM #define TG3PCI_SUBDEVICE_ID_BROADCOM_95700A6 0x1644 @@ -159,6 +162,7 @@ #define CHIPREV_ID_57765_A0 0x57785000 #define CHIPREV_ID_5719_A0 0x05719000 #define CHIPREV_ID_5720_A0 0x05720000 +#define CHIPREV_ID_5762_A0 0x05762000 #define GET_ASIC_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 12) #define ASIC_REV_5700 0x07 #define ASIC_REV_5701 0x00 @@ -182,6 +186,7 @@ #define ASIC_REV_5719 0x5719 #define ASIC_REV_5720 0x5720 #define ASIC_REV_57766 0x57766 +#define ASIC_REV_5762 0x5762 #define GET_CHIP_REV(CHIP_REV_ID) ((CHIP_REV_ID) >> 8) #define CHIPREV_5700_AX 0x70 #define CHIPREV_5700_BX 0x71 @@ -1159,6 +1164,8 @@ #define CPMU_MUTEX_GNT_DRIVER 0x00001000 #define TG3_CPMU_PHY_STRAP 0x00003664 #define TG3_CPMU_PHY_STRAP_IS_SERDES 0x00000020 +#define TG3_CPMU_PADRNG_CTL 0x00003668 +#define TG3_CPMU_PADRNG_CTL_RDIV2 0x00040000 /* 0x3664 --> 0x36b0 unused */ #define TG3_CPMU_EEE_MODE 0x000036b0 @@ -1178,6 +1185,7 @@ #define TG3_CPMU_EEE_LNKIDL_CTRL 0x000036bc #define TG3_CPMU_EEE_LNKIDL_PCIE_NL0 0x01000000 #define TG3_CPMU_EEE_LNKIDL_UART_IDL 0x00000004 +#define TG3_CPMU_EEE_LNKIDL_APE_TX_MT 0x00000002 /* 0x36c0 --> 0x36d0 unused */ #define TG3_CPMU_EEE_CTRL 0x000036d0 @@ -1400,7 +1408,10 @@ #define RDMAC_STATUS_FIFOURUN 0x00000080 #define RDMAC_STATUS_FIFOOREAD 0x00000100 #define RDMAC_STATUS_LNGREAD 0x00000200 -/* 0x4808 --> 0x4900 unused */ +/* 0x4808 --> 0x4890 unused */ + +#define TG3_RDMA_RSRVCTRL_REG2 0x00004890 +#define TG3_LSO_RD_DMA_CRPTEN_CTRL2 0x000048a0 #define TG3_RDMA_RSRVCTRL_REG 0x00004900 #define TG3_RDMA_RSRVCTRL_FIFO_OFLW_FIX 0x00000004 @@ -1415,7 +1426,8 @@ #define TG3_LSO_RD_DMA_CRPTEN_CTRL 0x00004910 #define TG3_LSO_RD_DMA_CRPTEN_CTRL_BLEN_BD_4K 0x00030000 #define TG3_LSO_RD_DMA_CRPTEN_CTRL_BLEN_LSO_4K 0x000c0000 -#define TG3_LSO_RD_DMA_TX_LENGTH_WA 0x02000000 +#define TG3_LSO_RD_DMA_TX_LENGTH_WA_5719 0x02000000 +#define TG3_LSO_RD_DMA_TX_LENGTH_WA_5720 0x00200000 /* 0x4914 --> 0x4be0 unused */ #define TG3_NUM_RDMA_CHANNELS 4 @@ -1850,6 +1862,7 @@ #define FLASH_VENDOR_SST_SMALL 0x00000001 #define FLASH_VENDOR_SST_LARGE 0x02000001 #define NVRAM_CFG1_5752VENDOR_MASK 0x03c00003 +#define NVRAM_CFG1_5762VENDOR_MASK 0x03e00003 #define FLASH_5752VENDOR_ATMEL_EEPROM_64KHZ 0x00000000 #define FLASH_5752VENDOR_ATMEL_EEPROM_376KHZ 0x02000000 #define FLASH_5752VENDOR_ATMEL_FLASH_BUFFERED 0x02000003 @@ -1910,6 +1923,8 @@ #define FLASH_5717VENDOR_ST_45USPT 0x03400001 #define FLASH_5720_EEPROM_HD 0x00000001 #define FLASH_5720_EEPROM_LD 0x00000003 +#define FLASH_5762_EEPROM_HD 0x02000001 +#define FLASH_5762_EEPROM_LD 0x02000003 #define FLASH_5720VENDOR_M_ATMEL_DB011D 0x01000000 #define FLASH_5720VENDOR_M_ATMEL_DB021D 0x01000002 #define FLASH_5720VENDOR_M_ATMEL_DB041D 0x01000001 @@ -2365,6 +2380,20 @@ #define APE_LOCK_REQ_DRIVER 0x00001000 #define TG3_APE_LOCK_GRANT 0x004c #define APE_LOCK_GRANT_DRIVER 0x00001000 +#define TG3_APE_OTP_CTRL 0x00e8 +#define APE_OTP_CTRL_PROG_EN 0x200000 +#define APE_OTP_CTRL_CMD_RD 0x000000 +#define APE_OTP_CTRL_START 0x000001 +#define TG3_APE_OTP_STATUS 0x00ec +#define APE_OTP_STATUS_CMD_DONE 0x000001 +#define TG3_APE_OTP_ADDR 0x00f0 +#define APE_OTP_ADDR_CPU_ENABLE 0x80000000 +#define TG3_APE_OTP_RD_DATA 0x00f8 + +#define OTP_ADDRESS_MAGIC0 0x00000050 +#define TG3_OTP_MAGIC0_VALID(val) \ + ((((val) & 0xf0000000) == 0xa0000000) ||\ + (((val) & 0x0f000000) == 0x0a000000)) /* APE shared memory. Accessible through BAR1 */ #define TG3_APE_SHMEM_BASE 0x4000 @@ -3019,7 +3048,7 @@ TG3_FLAG_APE_HAS_NCSI, TG3_FLAG_TX_TSTAMP_EN, TG3_FLAG_4K_FIFO_LIMIT, - TG3_FLAG_5719_RDMA_BUG, + TG3_FLAG_5719_5720_RDMA_BUG, TG3_FLAG_RESET_TASK_PENDING, TG3_FLAG_PTP_CAPABLE, TG3_FLAG_5705_PLUS, @@ -3206,6 +3235,7 @@ #define TG3_PHY_ID_BCM57765 0x5c0d8a40 #define TG3_PHY_ID_BCM5719C 0x5c0d8a20 #define TG3_PHY_ID_BCM5720C 0x5c0d8b60 +#define TG3_PHY_ID_BCM5762 0x85803780 #define TG3_PHY_ID_BCM5906 0xdc00ac40 #define TG3_PHY_ID_BCM8002 0x60010140 #define TG3_PHY_ID_INVALID 0xffffffff @@ -3230,6 +3260,7 @@ (X) == TG3_PHY_ID_BCM5906 || (X) == TG3_PHY_ID_BCM5761 || \ (X) == TG3_PHY_ID_BCM5718C || (X) == TG3_PHY_ID_BCM5718S || \ (X) == TG3_PHY_ID_BCM57765 || (X) == TG3_PHY_ID_BCM5719C || \ + (X) == TG3_PHY_ID_BCM5720C || (X) == TG3_PHY_ID_BCM5762 || \ (X) == TG3_PHY_ID_BCM8002) u32 phy_flags; --- linux-ppc-3.8.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-ppc-3.8.0/drivers/net/ethernet/broadcom/tg3.c @@ -330,6 +330,10 @@ {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_BROADCOM, TG3PCI_DEVICE_TIGON3_57766)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5762)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5725)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5727)}, {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)}, @@ -1778,6 +1782,9 @@ int i; u32 val; + if (tg3_flag(tp, NO_FWARE_REPORTED)) + return 0; + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { /* Wait up to 20ms for init done. */ for (i = 0; i < 200; i++) { @@ -1843,6 +1850,8 @@ tg3_ump_link_report(tp); } + + tp->link_up = netif_carrier_ok(tp->dev); } static u16 tg3_advert_flowctrl_1000X(u8 flow_ctrl) @@ -2496,12 +2505,6 @@ return err; } -static void tg3_carrier_on(struct tg3 *tp) -{ - netif_carrier_on(tp->dev); - tp->link_up = true; -} - static void tg3_carrier_off(struct tg3 *tp) { netif_carrier_off(tp->dev); @@ -2527,7 +2530,7 @@ return -EBUSY; if (netif_running(tp->dev) && tp->link_up) { - tg3_carrier_off(tp); + netif_carrier_off(tp->dev); tg3_link_report(tp); } @@ -2644,6 +2647,9 @@ tg3_writephy(tp, MII_TG3_FET_PTEST, 0x12); } + if (tp->pci_chip_rev_id == CHIPREV_ID_5762_A0) + tg3_phydsp_write(tp, 0xffb, 0x4000); + tg3_phy_toggle_automdix(tp, 1); tg3_phy_set_wirespeed(tp); return 0; @@ -2896,6 +2902,31 @@ return 0; } +static bool tg3_phy_power_bug(struct tg3 *tp) +{ + switch (GET_ASIC_REV(tp->pci_chip_rev_id)) { + case ASIC_REV_5700: + case ASIC_REV_5704: + return true; + case ASIC_REV_5780: + if (tp->phy_flags & TG3_PHYFLG_MII_SERDES) + return true; + return false; + case ASIC_REV_5717: + if (!tp->pci_fn) + return true; + return false; + case ASIC_REV_5719: + case ASIC_REV_5720: + if ((tp->phy_flags & TG3_PHYFLG_PHY_SERDES) && + !tp->pci_fn) + return true; + return false; + } + + return false; +} + static void tg3_power_down_phy(struct tg3 *tp, bool do_low_power) { u32 val; @@ -2952,12 +2983,7 @@ /* The PHY should not be powered down on some chips because * of bugs. */ - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 || - (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5780 && - (tp->phy_flags & TG3_PHYFLG_MII_SERDES)) || - (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 && - !tp->pci_fn)) + if (tg3_phy_power_bug(tp)) return; if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5784_AX || @@ -4049,6 +4075,7 @@ tg3_phydsp_write(tp, MII_TG3_DSP_TAP26, val); /* Fall through */ case ASIC_REV_5720: + case ASIC_REV_5762: if (!tg3_phydsp_read(tp, MII_TG3_DSP_CH34TP2, &val)) tg3_phydsp_write(tp, MII_TG3_DSP_CH34TP2, val | MII_TG3_DSP_CH34TP2_HIBW01); @@ -4097,6 +4124,14 @@ tp->link_config.active_speed = tp->link_config.speed; tp->link_config.active_duplex = tp->link_config.duplex; + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714) { + /* With autoneg disabled, 5715 only links up when the + * advertisement register has the configured speed + * enabled. + */ + tg3_writephy(tp, MII_ADVERTISE, ADVERTISE_ALL); + } + bmcr = 0; switch (tp->link_config.speed) { default: @@ -4225,9 +4260,9 @@ { if (curr_link_up != tp->link_up) { if (curr_link_up) { - tg3_carrier_on(tp); + netif_carrier_on(tp->dev); } else { - tg3_carrier_off(tp); + netif_carrier_off(tp->dev); if (tp->phy_flags & TG3_PHYFLG_MII_SERDES) tp->phy_flags &= ~TG3_PHYFLG_PARALLEL_DETECT; } @@ -5496,7 +5531,8 @@ val = (2 << TX_LENGTHS_IPG_CRS_SHIFT) | (6 << TX_LENGTHS_IPG_SHIFT); - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) val |= tr32(MAC_TX_LENGTHS) & (TX_LENGTHS_JMB_FRM_LEN_MSK | TX_LENGTHS_CNT_DWN_VAL_MSK); @@ -6990,6 +7026,20 @@ return (base > 0xffffdcc0) && (base + len + 8 < base); } +/* Test for TSO DMA buffers that cross into regions which are within MSS bytes + * of any 4GB boundaries: 4G, 8G, etc + */ +static inline int tg3_4g_tso_overflow_test(struct tg3 *tp, dma_addr_t mapping, + u32 len, u32 mss) +{ + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762 && mss) { + u32 base = (u32) mapping & 0xffffffff; + + return ((base + len + (mss & 0x3fff)) < base); + } + return 0; +} + /* Test for DMA addresses > 40-bit */ static inline int tg3_40bit_overflow_test(struct tg3 *tp, dma_addr_t mapping, int len) @@ -7026,6 +7076,9 @@ if (tg3_4g_overflow_test(map, len)) hwbug = true; + if (tg3_4g_tso_overflow_test(tp, map, len, mss)) + hwbug = true; + if (tg3_40bit_overflow_test(tp, map, len)) hwbug = true; @@ -8687,7 +8740,8 @@ limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE * 16; else if (tg3_flag(tp, 5717_PLUS)) limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE * 4; - else if (tg3_flag(tp, 57765_CLASS)) + else if (tg3_flag(tp, 57765_CLASS) || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE * 2; else limit = NIC_SRAM_SEND_RCB + TG3_BDINFO_SIZE; @@ -8704,6 +8758,7 @@ else if (!tg3_flag(tp, 5705_PLUS)) limit = NIC_SRAM_RCV_RET_RCB + TG3_BDINFO_SIZE * 16; else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762 || tg3_flag(tp, 57765_CLASS)) limit = NIC_SRAM_RCV_RET_RCB + TG3_BDINFO_SIZE * 4; else @@ -8976,6 +9031,14 @@ } } +static inline u32 tg3_lso_rd_dma_workaround_bit(struct tg3 *tp) +{ + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) + return TG3_LSO_RD_DMA_TX_LENGTH_WA_5719; + else + return TG3_LSO_RD_DMA_TX_LENGTH_WA_5720; +} + /* tp->lock is held. */ static int tg3_reset_hw(struct tg3 *tp, int reset_phy) { @@ -8994,9 +9057,12 @@ /* Enable MAC control of LPI */ if (tp->phy_flags & TG3_PHYFLG_EEE_CAP) { - tw32_f(TG3_CPMU_EEE_LNKIDL_CTRL, - TG3_CPMU_EEE_LNKIDL_PCIE_NL0 | - TG3_CPMU_EEE_LNKIDL_UART_IDL); + val = TG3_CPMU_EEE_LNKIDL_PCIE_NL0 | + TG3_CPMU_EEE_LNKIDL_UART_IDL; + if (tp->pci_chip_rev_id == CHIPREV_ID_57765_A0) + val |= TG3_CPMU_EEE_LNKIDL_APE_TX_MT; + + tw32_f(TG3_CPMU_EEE_LNKIDL_CTRL, val); tw32_f(TG3_CPMU_EEE_CTRL, TG3_CPMU_EEE_CTRL_EXIT_20_1_US); @@ -9099,7 +9165,14 @@ } if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_57765_AX) { - u32 grc_mode = tr32(GRC_MODE); + u32 grc_mode; + + /* Fix transmit hangs */ + val = tr32(TG3_CPMU_PADRNG_CTL); + val |= TG3_CPMU_PADRNG_CTL_RDIV2; + tw32(TG3_CPMU_PADRNG_CTL, val); + + grc_mode = tr32(GRC_MODE); /* Access the lower 1K of DL PCIE block registers. */ val = grc_mode & ~GRC_MODE_PCIE_PORT_MASK; @@ -9171,7 +9244,8 @@ if (tp->pci_chip_rev_id == CHIPREV_ID_57765_A0) val &= ~DMA_RWCTRL_CRDRDR_RDMA_MRRS_MSK; if (!tg3_flag(tp, 57765_CLASS) && - GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5717) + GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5717 && + GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5762) val |= DMA_RWCTRL_TAGGED_STAT_WA; tw32(TG3PCI_DMA_RW_CTRL, val | tp->dma_rwctrl); } else if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5784 && @@ -9323,7 +9397,8 @@ tw32(RCVDBDI_JUMBO_BD + TG3_BDINFO_MAXLEN_FLAGS, val | BDINFO_FLAGS_USE_EXT_RECV); if (!tg3_flag(tp, USE_JUMBO_BDFLAG) || - tg3_flag(tp, 57765_CLASS)) + tg3_flag(tp, 57765_CLASS) || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) tw32(RCVDBDI_JUMBO_BD + TG3_BDINFO_NIC_ADDR, NIC_SRAM_RX_JUMBO_BUFFER_DESC); } else { @@ -9365,7 +9440,8 @@ (6 << TX_LENGTHS_IPG_SHIFT) | (32 << TX_LENGTHS_SLOT_TIME_SHIFT); - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) val |= tr32(MAC_TX_LENGTHS) & (TX_LENGTHS_JMB_FRM_LEN_MSK | TX_LENGTHS_CNT_DWN_VAL_MSK); @@ -9409,6 +9485,14 @@ if (tg3_flag(tp, PCI_EXPRESS)) rdmac_mode |= RDMAC_MODE_FIFO_LONG_BURST; + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57766) { + tp->dma_limit = 0; + if (tp->dev->mtu <= ETH_DATA_LEN) { + rdmac_mode |= RDMAC_MODE_JMB_2K_MMRR; + tp->dma_limit = TG3_TX_BD_DMA_MAX_2K; + } + } + if (tg3_flag(tp, HW_TSO_1) || tg3_flag(tp, HW_TSO_2) || tg3_flag(tp, HW_TSO_3)) @@ -9419,7 +9503,8 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780) rdmac_mode |= RDMAC_MODE_IPV6_LSO_EN; - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) rdmac_mode |= tr32(RDMAC_MODE) & RDMAC_MODE_H2BNC_VLAN_DET; if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761 || @@ -9427,8 +9512,16 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5785 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || tg3_flag(tp, 57765_PLUS)) { - val = tr32(TG3_RDMA_RSRVCTRL_REG); - if (tp->pci_chip_rev_id == CHIPREV_ID_5719_A0) { + u32 tgtreg; + + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) + tgtreg = TG3_RDMA_RSRVCTRL_REG2; + else + tgtreg = TG3_RDMA_RSRVCTRL_REG; + + val = tr32(tgtreg); + if (tp->pci_chip_rev_id == CHIPREV_ID_5719_A0 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) { val &= ~(TG3_RDMA_RSRVCTRL_TXMRGN_MASK | TG3_RDMA_RSRVCTRL_FIFO_LWM_MASK | TG3_RDMA_RSRVCTRL_FIFO_HWM_MASK); @@ -9436,14 +9529,21 @@ TG3_RDMA_RSRVCTRL_FIFO_LWM_1_5K | TG3_RDMA_RSRVCTRL_FIFO_HWM_1_5K; } - tw32(TG3_RDMA_RSRVCTRL_REG, - val | TG3_RDMA_RSRVCTRL_FIFO_OFLW_FIX); + tw32(tgtreg, val | TG3_RDMA_RSRVCTRL_FIFO_OFLW_FIX); } if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { - val = tr32(TG3_LSO_RD_DMA_CRPTEN_CTRL); - tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val | + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) { + u32 tgtreg; + + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) + tgtreg = TG3_LSO_RD_DMA_CRPTEN_CTRL2; + else + tgtreg = TG3_LSO_RD_DMA_CRPTEN_CTRL; + + val = tr32(tgtreg); + tw32(tgtreg, val | TG3_LSO_RD_DMA_CRPTEN_CTRL_BLEN_BD_4K | TG3_LSO_RD_DMA_CRPTEN_CTRL_BLEN_LSO_4K); } @@ -9618,16 +9718,17 @@ tw32_f(RDMAC_MODE, rdmac_mode); udelay(40); - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) { + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { for (i = 0; i < TG3_NUM_RDMA_CHANNELS; i++) { if (tr32(TG3_RDMA_LENGTH + (i << 2)) > TG3_MAX_MTU(tp)) break; } if (i < TG3_NUM_RDMA_CHANNELS) { val = tr32(TG3_LSO_RD_DMA_CRPTEN_CTRL); - val |= TG3_LSO_RD_DMA_TX_LENGTH_WA; + val |= tg3_lso_rd_dma_workaround_bit(tp); tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val); - tg3_flag_set(tp, 5719_RDMA_BUG); + tg3_flag_set(tp, 5719_5720_RDMA_BUG); } } @@ -9676,7 +9777,8 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) tp->tx_mode |= TX_MODE_MBUF_LOCKUP_FIX; - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) { val = TX_MODE_JMB_FRM_LEN | TX_MODE_CNT_DN_MODE; tp->tx_mode &= ~val; tp->tx_mode |= tr32(MAC_TX_MODE) & val; @@ -9852,6 +9954,13 @@ */ static int tg3_init_hw(struct tg3 *tp, int reset_phy) { + /* Chip may have been just powered on. If so, the boot code may still + * be running initialization. Wait for it to finish to avoid races in + * accessing the hardware. + */ + tg3_enable_register_access(tp); + tg3_poll_fw(tp); + tg3_switch_clocks(tp); tw32(TG3PCI_MEM_WIN_BASE_ADDR, 0); @@ -9983,15 +10092,15 @@ TG3_STAT_ADD32(&sp->tx_ucast_packets, MAC_TX_STATS_UCAST); TG3_STAT_ADD32(&sp->tx_mcast_packets, MAC_TX_STATS_MCAST); TG3_STAT_ADD32(&sp->tx_bcast_packets, MAC_TX_STATS_BCAST); - if (unlikely(tg3_flag(tp, 5719_RDMA_BUG) && + if (unlikely(tg3_flag(tp, 5719_5720_RDMA_BUG) && (sp->tx_ucast_packets.low + sp->tx_mcast_packets.low + sp->tx_bcast_packets.low) > TG3_NUM_RDMA_CHANNELS)) { u32 val; val = tr32(TG3_LSO_RD_DMA_CRPTEN_CTRL); - val &= ~TG3_LSO_RD_DMA_TX_LENGTH_WA; + val &= ~tg3_lso_rd_dma_workaround_bit(tp); tw32(TG3_LSO_RD_DMA_CRPTEN_CTRL, val); - tg3_flag_clear(tp, 5719_RDMA_BUG); + tg3_flag_clear(tp, 5719_5720_RDMA_BUG); } TG3_STAT_ADD32(&sp->rx_octets, MAC_RX_STATS_OCTETS); @@ -12357,7 +12466,8 @@ if (tg3_flag(tp, 5717_PLUS)) mem_tbl = mem_tbl_5717; - else if (tg3_flag(tp, 57765_CLASS)) + else if (tg3_flag(tp, 57765_CLASS) || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) mem_tbl = mem_tbl_57765; else if (tg3_flag(tp, 5755_PLUS)) mem_tbl = mem_tbl_5755; @@ -13698,6 +13808,22 @@ nvcfg1 = tr32(NVRAM_CFG1); nvmpinstrp = nvcfg1 & NVRAM_CFG1_5752VENDOR_MASK; + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) { + if (!(nvcfg1 & NVRAM_CFG1_5762VENDOR_MASK)) { + tg3_flag_set(tp, NO_NVRAM); + return; + } + + switch (nvmpinstrp) { + case FLASH_5762_EEPROM_HD: + nvmpinstrp = FLASH_5720_EEPROM_HD; + break; + case FLASH_5762_EEPROM_LD: + nvmpinstrp = FLASH_5720_EEPROM_LD; + break; + } + } + switch (nvmpinstrp) { case FLASH_5720_EEPROM_HD: case FLASH_5720_EEPROM_LD: @@ -13743,7 +13869,8 @@ tp->nvram_size = TG3_NVRAM_SIZE_1MB; break; default: - tp->nvram_size = TG3_NVRAM_SIZE_128KB; + if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5762) + tp->nvram_size = TG3_NVRAM_SIZE_128KB; break; } break; @@ -13789,7 +13916,8 @@ tp->nvram_size = TG3_NVRAM_SIZE_1MB; break; default: - tp->nvram_size = TG3_NVRAM_SIZE_128KB; + if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5762) + tp->nvram_size = TG3_NVRAM_SIZE_128KB; break; } break; @@ -13801,6 +13929,17 @@ tg3_nvram_get_pagesize(tp, nvcfg1); if (tp->nvram_pagesize != 264 && tp->nvram_pagesize != 528) tg3_flag_set(tp, NO_NVRAM_ADDR_TRANS); + + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) { + u32 val; + + if (tg3_nvram_read(tp, 0, &val)) + return; + + if (val != TG3_EEPROM_MAGIC && + (val & TG3_EEPROM_MAGIC_FW_MSK) != TG3_EEPROM_MAGIC_FW) + tg3_flag_set(tp, NO_NVRAM); + } } /* Chips other than 5700/5701 use the NVRAM for fetching info. */ @@ -13850,7 +13989,8 @@ else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) tg3_get_5717_nvram_info(tp); - else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) tg3_get_5720_nvram_info(tp); else tg3_get_nvram_info(tp); @@ -14152,6 +14292,39 @@ device_set_wakeup_capable(&tp->pdev->dev, false); } +static int tg3_ape_otp_read(struct tg3 *tp, u32 offset, u32 *val) +{ + int i, err; + u32 val2, off = offset * 8; + + err = tg3_nvram_lock(tp); + if (err) + return err; + + tg3_ape_write32(tp, TG3_APE_OTP_ADDR, off | APE_OTP_ADDR_CPU_ENABLE); + tg3_ape_write32(tp, TG3_APE_OTP_CTRL, APE_OTP_CTRL_PROG_EN | + APE_OTP_CTRL_CMD_RD | APE_OTP_CTRL_START); + tg3_ape_read32(tp, TG3_APE_OTP_CTRL); + udelay(10); + + for (i = 0; i < 100; i++) { + val2 = tg3_ape_read32(tp, TG3_APE_OTP_STATUS); + if (val2 & APE_OTP_STATUS_CMD_DONE) { + *val = tg3_ape_read32(tp, TG3_APE_OTP_RD_DATA); + break; + } + udelay(10); + } + + tg3_ape_write32(tp, TG3_APE_OTP_CTRL, 0); + + tg3_nvram_unlock(tp); + if (val2 & APE_OTP_STATUS_CMD_DONE) + return 0; + + return -EBUSY; +} + static int tg3_issue_otp_command(struct tg3 *tp, u32 cmd) { int i; @@ -14311,6 +14484,7 @@ if (!(tp->phy_flags & TG3_PHYFLG_ANY_SERDES) && (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762 || (tp->pdev->device == TG3PCI_DEVICE_TIGON3_5718 && tp->pci_chip_rev_id != CHIPREV_ID_5717_A0) || (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 && @@ -14399,8 +14573,11 @@ if (j + len > block_end) goto partno; - memcpy(tp->fw_ver, &vpd_data[j], len); - strncat(tp->fw_ver, " bc ", vpdlen - len - 1); + if (len >= sizeof(tp->fw_ver)) + len = sizeof(tp->fw_ver) - 1; + memset(tp->fw_ver, 0, sizeof(tp->fw_ver)); + snprintf(tp->fw_ver, sizeof(tp->fw_ver), "%.*s bc ", len, + &vpd_data[j]); } partno: @@ -14691,6 +14868,8 @@ if (tg3_flag(tp, APE_HAS_NCSI)) fwtype = "NCSI"; + else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_5725) + fwtype = "SMASH"; else fwtype = "DASH"; @@ -14704,6 +14883,31 @@ (apedata & APE_FW_VERSION_BLDMSK)); } +static void tg3_read_otp_ver(struct tg3 *tp) +{ + u32 val, val2; + + if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5762) + return; + + if (!tg3_ape_otp_read(tp, OTP_ADDRESS_MAGIC0, &val) && + !tg3_ape_otp_read(tp, OTP_ADDRESS_MAGIC0 + 4, &val2) && + TG3_OTP_MAGIC0_VALID(val)) { + u64 val64 = (u64) val << 32 | val2; + u32 ver = 0; + int i, vlen; + + for (i = 0; i < 7; i++) { + if ((val64 & 0xff) == 0) + break; + ver = val64 & 0xff; + val64 >>= 8; + } + vlen = strlen(tp->fw_ver); + snprintf(&tp->fw_ver[vlen], TG3_VER_SIZE - vlen, " .%02d", ver); + } +} + static void tg3_read_fw_ver(struct tg3 *tp) { u32 val; @@ -14714,6 +14918,7 @@ if (tg3_flag(tp, NO_NVRAM)) { strcat(tp->fw_ver, "sb"); + tg3_read_otp_ver(tp); return; } @@ -14800,7 +15005,10 @@ tp->pdev->device == TG3PCI_DEVICE_TIGON3_5717_C || tp->pdev->device == TG3PCI_DEVICE_TIGON3_5718 || tp->pdev->device == TG3PCI_DEVICE_TIGON3_5719 || - tp->pdev->device == TG3PCI_DEVICE_TIGON3_5720) + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5720 || + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5762 || + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5725 || + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5727) reg = TG3PCI_GEN2_PRODID_ASICREV; else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57781 || tp->pdev->device == TG3PCI_DEVICE_TIGON3_57785 || @@ -14837,7 +15045,8 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57766) tg3_flag_set(tp, 57765_CLASS); - if (tg3_flag(tp, 57765_CLASS) || tg3_flag(tp, 5717_PLUS)) + if (tg3_flag(tp, 57765_CLASS) || tg3_flag(tp, 5717_PLUS) || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) tg3_flag_set(tp, 57765_PLUS); /* Intentionally exclude ASIC_REV_5906 */ @@ -15128,7 +15337,8 @@ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) tg3_flag_set(tp, LRG_PROD_RING_CAP); if (tg3_flag(tp, 57765_PLUS) && @@ -15406,6 +15616,10 @@ GRC_LCLCTRL_GPIO_OUTPUT0; } + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) + tp->grc_local_ctrl |= + tr32(GRC_LOCAL_CTRL) & GRC_LCLCTRL_GPIO_UART_SEL; + /* Switch out of Vaux if it is a NIC */ tg3_pwrsrc_switch_to_vmain(tp); @@ -15496,7 +15710,8 @@ /* Initialize data/descriptor byte/word swapping. */ val = tr32(GRC_MODE); - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) val &= (GRC_MODE_BYTE_SWAP_B2HRX_DATA | GRC_MODE_WORD_SWAP_B2HRX_DATA | GRC_MODE_B2HRX_ENABLE | @@ -16253,6 +16468,7 @@ case TG3_PHY_ID_BCM57765: return "57765"; case TG3_PHY_ID_BCM5719C: return "5719C"; case TG3_PHY_ID_BCM5720C: return "5720C"; + case TG3_PHY_ID_BCM5762: return "5762C"; case TG3_PHY_ID_BCM8002: return "8002/serdes"; case 0: return "serdes"; default: return "unknown"; @@ -16429,7 +16645,10 @@ tp->pdev->device == TG3PCI_DEVICE_TIGON3_5717_C || tp->pdev->device == TG3PCI_DEVICE_TIGON3_5718 || tp->pdev->device == TG3PCI_DEVICE_TIGON3_5719 || - tp->pdev->device == TG3PCI_DEVICE_TIGON3_5720) { + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5720 || + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5762 || + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5725 || + tp->pdev->device == TG3PCI_DEVICE_TIGON3_5727) { tg3_flag_set(tp, ENABLE_APE); tp->aperegs = pci_ioremap_bar(pdev, BAR_2); if (!tp->aperegs) { @@ -16624,7 +16843,8 @@ pci_set_drvdata(pdev, dev); if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720 || + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5762) tg3_flag_set(tp, PTP_CAPABLE); if (tg3_flag(tp, 5717_PLUS)) { --- linux-ppc-3.8.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ linux-ppc-3.8.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -2523,6 +2523,7 @@ bp->port.pmf = 0; load_error1: bnx2x_napi_disable(bp); + bnx2x_del_all_napi(bp); /* clear pf_load status, as it was already set */ bnx2x_clear_pf_load(bp); load_error0: --- linux-ppc-3.8.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h +++ linux-ppc-3.8.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h @@ -456,8 +456,9 @@ #define UPDATE_QSTAT(s, t) \ do { \ - qstats->t##_hi = qstats_old->t##_hi + le32_to_cpu(s.hi); \ qstats->t##_lo = qstats_old->t##_lo + le32_to_cpu(s.lo); \ + qstats->t##_hi = qstats_old->t##_hi + le32_to_cpu(s.hi) \ + + ((qstats->t##_lo < qstats_old->t##_lo) ? 1 : 0); \ } while (0) #define UPDATE_QSTAT_OLD(f) \ --- linux-ppc-3.8.0.orig/drivers/net/ethernet/sun/sunvnet.c +++ linux-ppc-3.8.0/drivers/net/ethernet/sun/sunvnet.c @@ -1242,6 +1242,8 @@ dev_set_drvdata(&vdev->dev, NULL); kfree(port); + + unregister_netdev(vp->dev); } return 0; } --- linux-ppc-3.8.0.orig/drivers/net/ethernet/renesas/sh_eth.h +++ linux-ppc-3.8.0/drivers/net/ethernet/renesas/sh_eth.h @@ -472,7 +472,7 @@ #define DEFAULT_TX_CHECK (EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | \ EESR_RTO) -#define DEFAULT_EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | \ +#define DEFAULT_EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | \ EESR_RDE | EESR_RFRMER | EESR_ADE | \ EESR_TFE | EESR_TDE | EESR_ECI) #define DEFAULT_TX_ERROR_CHECK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | \ --- linux-ppc-3.8.0.orig/drivers/net/ethernet/renesas/sh_eth.c +++ linux-ppc-3.8.0/drivers/net/ethernet/renesas/sh_eth.c @@ -172,8 +172,9 @@ .rmcr_value = 0x00000001, .tx_check = EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO, - .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE | - EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI, + .eesr_err_check = EESR_TWB | EESR_TABT | EESR_RABT | EESR_RFE | + EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | + EESR_ECI, .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, .apr = 1, @@ -286,9 +287,9 @@ .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, .tx_check = EESR_TC1 | EESR_FTC, - .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ - EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ - EESR_ECI, + .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | + EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | + EESR_TDE | EESR_ECI, .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ EESR_TFE, .fdr_value = 0x0000072f, @@ -368,9 +369,9 @@ .eesipr_value = DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff, .tx_check = EESR_TC1 | EESR_FTC, - .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | \ - EESR_RDE | EESR_RFRMER | EESR_TFE | EESR_TDE | \ - EESR_ECI, + .eesr_err_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_RABT | + EESR_RFE | EESR_RDE | EESR_RFRMER | EESR_TFE | + EESR_TDE | EESR_ECI, .tx_error_check = EESR_TWB1 | EESR_TWB | EESR_TABT | EESR_TDE | \ EESR_TFE, @@ -1102,16 +1103,23 @@ desc_status = edmac_to_cpu(mdp, rxdesc->status); pkt_len = rxdesc->frame_length; -#if defined(CONFIG_ARCH_R8A7740) - desc_status >>= 16; -#endif - if (--boguscnt < 0) break; if (!(desc_status & RDFEND)) ndev->stats.rx_length_errors++; +#if defined(CONFIG_ARCH_R8A7740) + /* + * In case of almost all GETHER/ETHERs, the Receive Frame State + * (RFS) bits in the Receive Descriptor 0 are from bit 9 to + * bit 0. However, in case of the R8A7740's GETHER, the RFS + * bits are from bit 25 to bit 16. So, the driver needs right + * shifting by 16. + */ + desc_status >>= 16; +#endif + if (desc_status & (RD_RFS1 | RD_RFS2 | RD_RFS3 | RD_RFS4 | RD_RFS5 | RD_RFS6 | RD_RFS10)) { ndev->stats.rx_errors++; --- linux-ppc-3.8.0.orig/drivers/net/arcnet/arcnet.c +++ linux-ppc-3.8.0/drivers/net/arcnet/arcnet.c @@ -1007,7 +1007,7 @@ soft = &pkt.soft.rfc1201; - lp->hw.copy_from_card(dev, bufnum, 0, &pkt, sizeof(ARC_HDR_SIZE)); + lp->hw.copy_from_card(dev, bufnum, 0, &pkt, ARC_HDR_SIZE); if (pkt.hard.offset[0]) { ofs = pkt.hard.offset[0]; length = 256 - ofs; --- linux-ppc-3.8.0.orig/drivers/net/wireless/mac80211_hwsim.c +++ linux-ppc-3.8.0/drivers/net/wireless/mac80211_hwsim.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -1586,6 +1587,7 @@ debugfs_remove(data->debugfs_ps); debugfs_remove(data->debugfs); ieee80211_unregister_hw(data->hw); + device_release_driver(data->dev); device_unregister(data->dev); ieee80211_free_hw(data->hw); } @@ -1594,7 +1596,9 @@ static struct device_driver mac80211_hwsim_driver = { - .name = "mac80211_hwsim" + .name = "mac80211_hwsim", + .bus = &platform_bus_type, + .owner = THIS_MODULE, }; static const struct net_device_ops hwsim_netdev_ops = { @@ -2090,6 +2094,8 @@ if (IS_ERR(hwsim_class)) return PTR_ERR(hwsim_class); + driver_register(&mac80211_hwsim_driver); + memset(addr, 0, ETH_ALEN); addr[0] = 0x02; @@ -2110,12 +2116,20 @@ "hwsim%d", i); if (IS_ERR(data->dev)) { printk(KERN_DEBUG - "mac80211_hwsim: device_create " - "failed (%ld)\n", PTR_ERR(data->dev)); + "mac80211_hwsim: device_create failed (%ld)\n", + PTR_ERR(data->dev)); err = -ENOMEM; goto failed_drvdata; } data->dev->driver = &mac80211_hwsim_driver; + err = device_bind_driver(data->dev); + if (err != 0) { + printk(KERN_DEBUG + "mac80211_hwsim: device_bind_driver failed (%d)\n", + err); + goto failed_hw; + } + skb_queue_head_init(&data->pending); SET_IEEE80211_DEV(hw, data->dev); @@ -2415,6 +2429,7 @@ ieee80211_free_hw(hw); failed: mac80211_hwsim_free(); + driver_unregister(&mac80211_hwsim_driver); return err; } module_init(init_mac80211_hwsim); @@ -2427,5 +2442,6 @@ mac80211_hwsim_free(); unregister_netdev(hwsim_mon); + driver_unregister(&mac80211_hwsim_driver); } module_exit(exit_mac80211_hwsim); --- linux-ppc-3.8.0.orig/drivers/net/wireless/zd1201.c +++ linux-ppc-3.8.0/drivers/net/wireless/zd1201.c @@ -98,10 +98,12 @@ goto exit; err = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 0x4, - USB_DIR_IN | 0x40, 0,0, &ret, sizeof(ret), ZD1201_FW_TIMEOUT); + USB_DIR_IN | 0x40, 0, 0, buf, sizeof(ret), ZD1201_FW_TIMEOUT); if (err < 0) goto exit; + memcpy(&ret, buf, sizeof(ret)); + if (ret & 0x80) { err = -EIO; goto exit; --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlegacy/common.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlegacy/common.c @@ -4659,6 +4659,7 @@ return 0; } +EXPORT_SYMBOL(il_force_reset); int il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlegacy/4965-mac.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlegacy/4965-mac.c @@ -4413,12 +4413,12 @@ * is killed. Hence update the killswitch state here. The * rfkill handler will care about restarting if needed. */ - if (!test_bit(S_ALIVE, &il->status)) { - if (hw_rf_kill) - set_bit(S_RFKILL, &il->status); - else - clear_bit(S_RFKILL, &il->status); + if (hw_rf_kill) { + set_bit(S_RFKILL, &il->status); + } else { + clear_bit(S_RFKILL, &il->status); wiphy_rfkill_set_hw_state(il->hw->wiphy, hw_rf_kill); + il_force_reset(il, true); } handled |= CSR_INT_BIT_RF_KILL; @@ -5287,6 +5287,9 @@ il->active_rate = RATES_MASK; + il_power_update_mode(il, true); + D_INFO("Updated power mode\n"); + if (il_is_associated(il)) { struct il_rxon_cmd *active_rxon = (struct il_rxon_cmd *)&il->active; @@ -5317,9 +5320,6 @@ D_INFO("ALIVE processing complete.\n"); wake_up(&il->wait_command_queue); - il_power_update_mode(il, true); - D_INFO("Updated power mode\n"); - return; restart: --- linux-ppc-3.8.0.orig/drivers/net/wireless/b43/dma.h +++ linux-ppc-3.8.0/drivers/net/wireless/b43/dma.h @@ -9,7 +9,7 @@ /* DMA-Interrupt reasons. */ #define B43_DMAIRQ_FATALMASK ((1 << 10) | (1 << 11) | (1 << 12) \ | (1 << 14) | (1 << 15)) -#define B43_DMAIRQ_NONFATALMASK (1 << 13) +#define B43_DMAIRQ_RDESC_UFLOW (1 << 13) #define B43_DMAIRQ_RX_DONE (1 << 16) /*** 32-bit DMA Engine. ***/ @@ -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) @@ -295,6 +295,8 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev, const struct b43_txstatus *status); +void b43_dma_handle_rx_overflow(struct b43_dmaring *ring); + void b43_dma_rx(struct b43_dmaring *ring); void b43_dma_direct_fifo_rx(struct b43_wldev *dev, --- linux-ppc-3.8.0.orig/drivers/net/wireless/b43/phy_n.c +++ linux-ppc-3.8.0/drivers/net/wireless/b43/phy_n.c @@ -1564,7 +1564,7 @@ u16 clip_off[2] = { 0xFFFF, 0xFFFF }; u8 vcm_final = 0; - s8 offset[4]; + s32 offset[4]; s32 results[8][4] = { }; s32 results_min[4] = { }; s32 poll_results[4] = { }; @@ -1615,7 +1615,7 @@ } for (i = 0; i < 4; i += 2) { s32 curr; - s32 mind = 40; + s32 mind = 0x100000; s32 minpoll = 249; u8 minvcm = 0; if (2 * core != i) @@ -1732,7 +1732,7 @@ u8 regs_save_radio[2]; u16 regs_save_phy[2]; - s8 offset[4]; + s32 offset[4]; u8 core; u8 rail; @@ -1799,7 +1799,7 @@ } for (i = 0; i < 4; i++) { - s32 mind = 40; + s32 mind = 0x100000; u8 minvcm = 0; s32 minpoll = 249; s32 curr; @@ -5165,7 +5165,8 @@ #endif #ifdef CONFIG_B43_SSB case B43_BUS_SSB: - /* FIXME */ + ssb_pmu_spuravoid_pllupdate(&dev->dev->sdev->bus->chipco, + avoid); break; #endif } --- linux-ppc-3.8.0.orig/drivers/net/wireless/b43/main.c +++ linux-ppc-3.8.0/drivers/net/wireless/b43/main.c @@ -1895,30 +1895,18 @@ } } - if (unlikely(merged_dma_reason & (B43_DMAIRQ_FATALMASK | - B43_DMAIRQ_NONFATALMASK))) { - if (merged_dma_reason & B43_DMAIRQ_FATALMASK) { - b43err(dev->wl, "Fatal DMA error: " - "0x%08X, 0x%08X, 0x%08X, " - "0x%08X, 0x%08X, 0x%08X\n", - dma_reason[0], dma_reason[1], - dma_reason[2], dma_reason[3], - dma_reason[4], dma_reason[5]); - b43err(dev->wl, "This device does not support DMA " + if (unlikely(merged_dma_reason & (B43_DMAIRQ_FATALMASK))) { + b43err(dev->wl, + "Fatal DMA error: 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X\n", + dma_reason[0], dma_reason[1], + dma_reason[2], dma_reason[3], + dma_reason[4], dma_reason[5]); + b43err(dev->wl, "This device does not support DMA " "on your system. It will now be switched to PIO.\n"); - /* Fall back to PIO transfers if we get fatal DMA errors! */ - dev->use_pio = true; - b43_controller_restart(dev, "DMA error"); - return; - } - if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) { - b43err(dev->wl, "DMA error: " - "0x%08X, 0x%08X, 0x%08X, " - "0x%08X, 0x%08X, 0x%08X\n", - dma_reason[0], dma_reason[1], - dma_reason[2], dma_reason[3], - dma_reason[4], dma_reason[5]); - } + /* Fall back to PIO transfers if we get fatal DMA errors! */ + dev->use_pio = true; + b43_controller_restart(dev, "DMA error"); + return; } if (unlikely(reason & B43_IRQ_UCODE_DEBUG)) @@ -1937,6 +1925,11 @@ handle_irq_noise(dev); /* Check the DMA reason registers for received data. */ + if (dma_reason[0] & B43_DMAIRQ_RDESC_UFLOW) { + if (B43_DEBUG) + b43warn(dev->wl, "RX descriptor underrun\n"); + b43_dma_handle_rx_overflow(dev->dma.rx_ring); + } if (dma_reason[0] & B43_DMAIRQ_RX_DONE) { if (b43_using_pio_transfers(dev)) b43_pio_rx(dev->pio.rx_queue); @@ -1994,7 +1987,7 @@ return IRQ_NONE; dev->dma_reason[0] = b43_read32(dev, B43_MMIO_DMA0_REASON) - & 0x0001DC00; + & 0x0001FC00; dev->dma_reason[1] = b43_read32(dev, B43_MMIO_DMA1_REASON) & 0x0000DC00; dev->dma_reason[2] = b43_read32(dev, B43_MMIO_DMA2_REASON) @@ -2458,7 +2451,7 @@ for (i = 0; i < B43_NR_FWTYPES; i++) { errmsg = ctx->errors[i]; if (strlen(errmsg)) - b43err(dev->wl, errmsg); + b43err(dev->wl, "%s", errmsg); } b43_print_fw_helptext(dev->wl, 1); goto out; @@ -3126,7 +3119,7 @@ b43_write32(dev, 0x018C, 0x02000000); } b43_write32(dev, B43_MMIO_GEN_IRQ_REASON, 0x00004000); - b43_write32(dev, B43_MMIO_DMA0_IRQ_MASK, 0x0001DC00); + b43_write32(dev, B43_MMIO_DMA0_IRQ_MASK, 0x0001FC00); b43_write32(dev, B43_MMIO_DMA1_IRQ_MASK, 0x0000DC00); b43_write32(dev, B43_MMIO_DMA2_IRQ_MASK, 0x0000DC00); b43_write32(dev, B43_MMIO_DMA3_IRQ_MASK, 0x0001DC00); @@ -4214,7 +4207,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) { @@ -5434,6 +5426,7 @@ /* 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) @@ -5510,6 +5503,7 @@ /* 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) --- linux-ppc-3.8.0.orig/drivers/net/wireless/b43/dma.c +++ linux-ppc-3.8.0/drivers/net/wireless/b43/dma.c @@ -1487,8 +1487,12 @@ const struct b43_dma_ops *ops; struct b43_dmaring *ring; struct b43_dmadesc_meta *meta; + static const struct b43_txstatus fake; /* filled with 0 */ + const struct b43_txstatus *txstat; int slot, firstused; bool frame_succeed; + int skip; + static u8 err_out1, err_out2; ring = parse_cookie(dev, status->cookie, &slot); if (unlikely(!ring)) @@ -1501,13 +1505,36 @@ firstused = ring->current_slot - ring->used_slots + 1; if (firstused < 0) firstused = ring->nr_slots + firstused; + + skip = 0; if (unlikely(slot != firstused)) { /* This possibly is a firmware bug and will result in - * malfunction, memory leaks and/or stall of DMA functionality. */ - b43dbg(dev->wl, "Out of order TX status report on DMA ring %d. " - "Expected %d, but got %d\n", - ring->index, firstused, slot); - return; + * malfunction, memory leaks and/or stall of DMA functionality. + */ + if (slot == next_slot(ring, next_slot(ring, firstused))) { + /* If a single header/data pair was missed, skip over + * the first two slots in an attempt to recover. + */ + slot = firstused; + skip = 2; + if (!err_out1) { + /* Report the error once. */ + b43dbg(dev->wl, + "Skip on DMA ring %d slot %d.\n", + ring->index, slot); + err_out1 = 1; + } + } else { + /* More than a single header/data pair were missed. + * Report this error once. + */ + if (!err_out2) + b43dbg(dev->wl, + "Out of order TX status report on DMA ring %d. Expected %d, but got %d\n", + ring->index, firstused, slot); + err_out2 = 1; + return; + } } ops = ring->ops; @@ -1522,11 +1549,13 @@ slot, firstused, ring->index); break; } + if (meta->skb) { struct b43_private_tx_info *priv_info = - b43_get_priv_tx_info(IEEE80211_SKB_CB(meta->skb)); + b43_get_priv_tx_info(IEEE80211_SKB_CB(meta->skb)); - unmap_descbuffer(ring, meta->dmaaddr, meta->skb->len, 1); + unmap_descbuffer(ring, meta->dmaaddr, + meta->skb->len, 1); kfree(priv_info->bouncebuffer); priv_info->bouncebuffer = NULL; } else { @@ -1538,8 +1567,9 @@ struct ieee80211_tx_info *info; if (unlikely(!meta->skb)) { - /* This is a scatter-gather fragment of a frame, so - * the skb pointer must not be NULL. */ + /* This is a scatter-gather fragment of a frame, + * so the skb pointer must not be NULL. + */ b43dbg(dev->wl, "TX status unexpected NULL skb " "at slot %d (first=%d) on ring %d\n", slot, firstused, ring->index); @@ -1550,9 +1580,18 @@ /* * Call back to inform the ieee80211 subsystem about - * the status of the transmission. + * the status of the transmission. When skipping over + * a missed TX status report, use a status structure + * filled with zeros to indicate that the frame was not + * sent (frame_count 0) and not acknowledged */ - frame_succeed = b43_fill_txstatus_report(dev, info, status); + if (unlikely(skip)) + txstat = &fake; + else + txstat = status; + + frame_succeed = b43_fill_txstatus_report(dev, info, + txstat); #ifdef CONFIG_B43_DEBUG if (frame_succeed) ring->nr_succeed_tx_packets++; @@ -1580,12 +1619,14 @@ /* Everything unmapped and free'd. So it's not used anymore. */ ring->used_slots--; - if (meta->is_last_fragment) { + if (meta->is_last_fragment && !skip) { /* This is the last scatter-gather * fragment of the frame. We are done. */ break; } slot = next_slot(ring, slot); + if (skip > 0) + --skip; } if (ring->stopped) { B43_WARN_ON(free_slots(ring) < TX_SLOTS_PER_FRAME); @@ -1692,6 +1733,25 @@ sync_descbuffer_for_device(ring, dmaaddr, ring->rx_buffersize); } +void b43_dma_handle_rx_overflow(struct b43_dmaring *ring) +{ + int current_slot, previous_slot; + + B43_WARN_ON(ring->tx); + + /* Device has filled all buffers, drop all packets and let TCP + * decrease speed. + * Decrement RX index by one will let the device to see all slots + * as free again + */ + /* + *TODO: How to increase rx_drop in mac80211? + */ + current_slot = ring->ops->get_current_rxslot(ring); + previous_slot = prev_slot(ring, current_slot); + ring->ops->set_current_rxslot(ring, previous_slot); +} + void b43_dma_rx(struct b43_dmaring *ring) { const struct b43_dma_ops *ops = ring->ops; --- linux-ppc-3.8.0.orig/drivers/net/wireless/b43/Kconfig +++ linux-ppc-3.8.0/drivers/net/wireless/b43/Kconfig @@ -28,7 +28,7 @@ config B43_BCMA bool "Support for BCMA bus" - depends on B43 && BCMA + depends on B43 && (BCMA = y || BCMA = B43) default y config B43_BCMA_EXTRA @@ -39,7 +39,7 @@ config B43_SSB bool - depends on B43 && SSB + depends on B43 && (SSB = y || SSB = B43) default y # Auto-select SSB PCI-HOST support, if possible --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/Makefile +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/Makefile @@ -8,7 +8,7 @@ antenna.o ath9k-$(CONFIG_ATH9K_BTCOEX_SUPPORT) += mci.o -ath9k-$(CONFIG_ATH9K_RATE_CONTROL) += rc.o +ath9k-$(CONFIG_ATH9K_LEGACY_RATE_CONTROL) += rc.o ath9k-$(CONFIG_ATH9K_PCI) += pci.o ath9k-$(CONFIG_ATH9K_AHB) += ahb.o ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_init.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/htc_drv_init.c @@ -796,7 +796,7 @@ * required version. */ if (priv->fw_version_major != MAJOR_VERSION_REQ || - priv->fw_version_minor != MINOR_VERSION_REQ) { + priv->fw_version_minor < MINOR_VERSION_REQ) { dev_err(priv->dev, "ath9k_htc: Please upgrade to FW version %d.%d\n", MAJOR_VERSION_REQ, MINOR_VERSION_REQ); return -EINVAL; @@ -846,6 +846,7 @@ if (error != 0) goto err_rx; + ath9k_hw_disable(priv->ah); #ifdef CONFIG_MAC80211_LEDS /* must be initialized before ieee80211_register_hw */ priv->led_cdev.default_trigger = ieee80211_create_tpt_led_trigger(priv->hw, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/hw.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/hw.c @@ -1480,7 +1480,9 @@ reset_type = ATH9K_RESET_POWER_ON; else reset_type = ATH9K_RESET_COLD; - } + } else if (ah->chip_fullsleep || REG_READ(ah, AR_Q_TXE) || + (REG_READ(ah, AR_CR) & AR_CR_RXE)) + reset_type = ATH9K_RESET_COLD; if (!ath9k_hw_set_reset_reg(ah, reset_type)) return false; --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/rc.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/rc.h @@ -231,7 +231,7 @@ } #endif -#ifdef CONFIG_ATH9K_RATE_CONTROL +#ifdef CONFIG_ATH9K_LEGACY_RATE_CONTROL int ath_rate_control_register(void); void ath_rate_control_unregister(void); #else --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/calib.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/calib.c @@ -389,7 +389,6 @@ if (!caldata) { chan->noisefloor = nf; - ah->noise = ath9k_hw_getchan_noise(ah, chan); return false; } --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9580_1p0_initvals.h @@ -519,7 +519,7 @@ {0x00008258, 0x00000000}, {0x0000825c, 0x40000000}, {0x00008260, 0x00080922}, - {0x00008264, 0x9bc00010}, + {0x00008264, 0x9d400010}, {0x00008268, 0xffffffff}, {0x0000826c, 0x0000ffff}, {0x00008270, 0x00000000}, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/htc.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/htc.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c @@ -3563,14 +3563,18 @@ { struct ath9k_hw_capabilities *pCap = &ah->caps; int chain; - u32 regval; + u32 regval, value; static const u32 switch_chain_reg[AR9300_MAX_CHAINS] = { AR_PHY_SWITCH_CHAIN_0, AR_PHY_SWITCH_CHAIN_1, AR_PHY_SWITCH_CHAIN_2, }; - u32 value = ar9003_hw_ant_ctrl_common_get(ah, is2ghz); + if (AR_SREV_9485(ah) && (ar9003_hw_get_rx_gain_idx(ah) == 0)) + ath9k_hw_cfg_output(ah, AR9300_EXT_LNA_CTL_GPIO_AR9485, + AR_GPIO_OUTPUT_MUX_AS_PCIE_ATTENTION_LED); + + value = ar9003_hw_ant_ctrl_common_get(ah, is2ghz); if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) { REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h @@ -68,13 +68,16 @@ #define AR9300_BASE_ADDR 0x3ff #define AR9300_BASE_ADDR_512 0x1ff -#define AR9300_OTP_BASE (AR_SREV_9340(ah) ? 0x30000 : 0x14000) -#define AR9300_OTP_STATUS (AR_SREV_9340(ah) ? 0x30018 : 0x15f18) +#define AR9300_OTP_BASE \ + ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30000 : 0x14000) +#define AR9300_OTP_STATUS \ + ((AR_SREV_9340(ah) || AR_SREV_9550(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 (AR_SREV_9340(ah) ? 0x3001c : 0x15f1c) +#define AR9300_OTP_READ_DATA \ + ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x3001c : 0x15f1c) enum targetPowerHTRates { HT_TARGET_RATE_0_8_16, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/hif_usb.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/hif_usb.c @@ -1289,7 +1289,9 @@ usb_set_intfdata(interface, NULL); - if (!unplugged && (hif_dev->flags & HIF_USB_START)) + /* If firmware was loaded we should drop it + * go back to first stage bootloader. */ + if (!unplugged && (hif_dev->flags & HIF_USB_READY)) ath9k_hif_usb_reboot(udev); kfree(hif_dev); --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/htc_drv_main.c @@ -1174,7 +1174,7 @@ mutex_lock(&priv->htc_pm_lock); priv->ps_idle = !!(conf->flags & IEEE80211_CONF_IDLE); - if (priv->ps_idle) + if (!priv->ps_idle) chip_reset = true; mutex_unlock(&priv->htc_pm_lock); --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/link.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/link.c @@ -28,21 +28,21 @@ int i; bool needreset = false; - for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) - if (ATH_TXQ_SETUP(sc, i)) { - txq = &sc->tx.txq[i]; - ath_txq_lock(sc, txq); - if (txq->axq_depth) { - if (txq->axq_tx_inprogress) { - needreset = true; - ath_txq_unlock(sc, txq); - break; - } else { - txq->axq_tx_inprogress = true; - } + for (i = 0; i < IEEE80211_NUM_ACS; i++) { + txq = sc->tx.txq_map[i]; + + ath_txq_lock(sc, txq); + if (txq->axq_depth) { + if (txq->axq_tx_inprogress) { + needreset = true; + ath_txq_unlock(sc, txq); + break; + } else { + txq->axq_tx_inprogress = true; } - ath_txq_unlock_complete(sc, txq); } + ath_txq_unlock_complete(sc, txq); + } if (needreset) { ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, @@ -170,7 +170,8 @@ { struct ath_softc *sc = (struct ath_softc *)data; - ieee80211_queue_work(sc->hw, &sc->hw_check_work); + if (!test_bit(SC_OP_INVALID, &sc->sc_flags)) + ieee80211_queue_work(sc->hw, &sc->hw_check_work); } /* --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9003_calib.c @@ -959,23 +959,70 @@ AR_PHY_65NM_RXRF_AGC_AGC_CAL_OVR, 0); } +static void ar9003_hw_do_manual_peak_cal(struct ath_hw *ah, + struct ath9k_channel *chan) +{ + int i; + + if (!AR_SREV_9462(ah) && !AR_SREV_9565(ah) && !AR_SREV_9485(ah)) + return; + + for (i = 0; i < AR9300_MAX_CHAINS; i++) { + if (!(ah->rxchainmask & (1 << i))) + continue; + ar9003_hw_manual_peak_cal(ah, i, IS_CHAN_2GHZ(chan)); + } +} + +static void ar9003_hw_cl_cal_post_proc(struct ath_hw *ah, bool is_reusable) +{ + u32 cl_idx[AR9300_MAX_CHAINS] = { AR_PHY_CL_TAB_0, + AR_PHY_CL_TAB_1, + AR_PHY_CL_TAB_2 }; + struct ath9k_hw_cal_data *caldata = ah->caldata; + bool txclcal_done = false; + int i, j; + + if (!caldata || !(ah->enabled_cals & TX_CL_CAL)) + return; + + txclcal_done = !!(REG_READ(ah, AR_PHY_AGC_CONTROL) & + AR_PHY_AGC_CONTROL_CLC_SUCCESS); + + if (caldata->done_txclcal_once) { + for (i = 0; i < AR9300_MAX_CHAINS; i++) { + if (!(ah->txchainmask & (1 << i))) + continue; + for (j = 0; j < MAX_CL_TAB_ENTRY; j++) + REG_WRITE(ah, CL_TAB_ENTRY(cl_idx[i]), + caldata->tx_clcal[i][j]); + } + } else if (is_reusable && txclcal_done) { + for (i = 0; i < AR9300_MAX_CHAINS; i++) { + if (!(ah->txchainmask & (1 << i))) + continue; + for (j = 0; j < MAX_CL_TAB_ENTRY; j++) + caldata->tx_clcal[i][j] = + REG_READ(ah, CL_TAB_ENTRY(cl_idx[i])); + } + caldata->done_txclcal_once = true; + } +} + static bool ar9003_hw_init_cal(struct ath_hw *ah, struct ath9k_channel *chan) { struct ath_common *common = ath9k_hw_common(ah); struct ath9k_hw_cal_data *caldata = ah->caldata; - bool txiqcal_done = false, txclcal_done = false; + bool txiqcal_done = false; bool is_reusable = true, status = true; bool run_rtt_cal = false, run_agc_cal; bool rtt = !!(ah->caps.hw_caps & ATH9K_HW_CAP_RTT); u32 agc_ctrl = 0, agc_supp_cals = AR_PHY_AGC_CONTROL_OFFSET_CAL | AR_PHY_AGC_CONTROL_FLTR_CAL | AR_PHY_AGC_CONTROL_PKDET_CAL; - int i, j; - u32 cl_idx[AR9300_MAX_CHAINS] = { AR_PHY_CL_TAB_0, - AR_PHY_CL_TAB_1, - AR_PHY_CL_TAB_2 }; + /* Use chip chainmask only for calibration */ ar9003_hw_set_chain_masks(ah, ah->caps.rx_chainmask, ah->caps.tx_chainmask); if (rtt) { @@ -1059,14 +1106,8 @@ status = ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL, 0, AH_WAIT_TIMEOUT); - if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) { - for (i = 0; i < AR9300_MAX_CHAINS; i++) { - if (!(ah->rxchainmask & (1 << i))) - continue; - ar9003_hw_manual_peak_cal(ah, i, - IS_CHAN_2GHZ(chan)); - } - } + + ar9003_hw_do_manual_peak_cal(ah, chan); } if (ath9k_hw_mci_is_enabled(ah) && IS_CHAN_2GHZ(chan) && run_agc_cal) @@ -1091,31 +1132,7 @@ else if (caldata && caldata->done_txiqcal_once) ar9003_hw_tx_iq_cal_reload(ah); -#define CL_TAB_ENTRY(reg_base) (reg_base + (4 * j)) - if (caldata && (ah->enabled_cals & TX_CL_CAL)) { - txclcal_done = !!(REG_READ(ah, AR_PHY_AGC_CONTROL) & - AR_PHY_AGC_CONTROL_CLC_SUCCESS); - if (caldata->done_txclcal_once) { - for (i = 0; i < AR9300_MAX_CHAINS; i++) { - if (!(ah->txchainmask & (1 << i))) - continue; - for (j = 0; j < MAX_CL_TAB_ENTRY; j++) - REG_WRITE(ah, CL_TAB_ENTRY(cl_idx[i]), - caldata->tx_clcal[i][j]); - } - } else if (is_reusable && txclcal_done) { - for (i = 0; i < AR9300_MAX_CHAINS; i++) { - if (!(ah->txchainmask & (1 << i))) - continue; - for (j = 0; j < MAX_CL_TAB_ENTRY; j++) - caldata->tx_clcal[i][j] = - REG_READ(ah, - CL_TAB_ENTRY(cl_idx[i])); - } - caldata->done_txclcal_once = true; - } - } -#undef CL_TAB_ENTRY + ar9003_hw_cl_cal_post_proc(ah, is_reusable); if (run_rtt_cal && caldata) { if (is_reusable) { @@ -1131,6 +1148,9 @@ ar9003_hw_rtt_disable(ah); } + /* Revert chainmask to runtime parameters */ + ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); + /* Initialize list pointers */ ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL; ah->supp_cals = IQ_MISMATCH_CAL; --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/common.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/common.h @@ -27,7 +27,7 @@ #define WME_MAX_BA WME_BA_BMP_SIZE #define ATH_TID_MAX_BUFS (2 * WME_MAX_BA) -#define ATH_RSSI_DUMMY_MARKER 0x127 +#define ATH_RSSI_DUMMY_MARKER 127 #define ATH_RSSI_LPF_LEN 10 #define RSSI_LPF_THRESHOLD -20 #define ATH_RSSI_EP_MULTIPLIER (1<<7) --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9485_initvals.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9485_initvals.h @@ -874,7 +874,7 @@ {0x0000a284, 0x00000000, 0x00000000, 0x000002a0, 0x000002a0}, {0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, {0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18}, + {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00058d18, 0x00058d18}, {0x0000a2d0, 0x00071981, 0x00071981, 0x00071982, 0x00071982}, {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a}, {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/main.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/main.c @@ -1236,6 +1236,7 @@ struct ath_common *common = ath9k_hw_common(sc->sc_ah); struct ath_node *an = (struct ath_node *) sta->drv_priv; struct ieee80211_key_conf ps_key = { }; + int key; ath_node_attach(sc, sta, vif); @@ -1243,7 +1244,9 @@ vif->type != NL80211_IFTYPE_AP_VLAN) return 0; - an->ps_key = ath_key_config(common, vif, sta, &ps_key); + key = ath_key_config(common, vif, sta, &ps_key); + if (key > 0) + an->ps_key = key; return 0; } @@ -1260,6 +1263,7 @@ return; ath_key_delete(common, &ps_key); + an->ps_key = 0; } static int ath9k_sta_remove(struct ieee80211_hw *hw, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/init.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/init.c @@ -774,8 +774,7 @@ hw->wiphy->iface_combinations = &if_comb; hw->wiphy->n_iface_combinations = 1; - if (AR_SREV_5416(sc->sc_ah)) - hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; + hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS; @@ -817,10 +816,6 @@ sc->ant_rx = hw->wiphy->available_antennas_rx; sc->ant_tx = hw->wiphy->available_antennas_tx; -#ifdef CONFIG_ATH9K_RATE_CONTROL - hw->rate_control_algorithm = "ath9k_rate_control"; -#endif - if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ) hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &sc->sbands[IEEE80211_BAND_2GHZ]; --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c @@ -1067,15 +1067,19 @@ last_rssi = priv->rx.last_rssi; - if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) - rxbuf->rxstatus.rs_rssi = ATH_EP_RND(last_rssi, - ATH_RSSI_EP_MULTIPLIER); + if (ieee80211_is_beacon(hdr->frame_control) && + !is_zero_ether_addr(common->curbssid) && + ether_addr_equal(hdr->addr3, common->curbssid)) { + s8 rssi = rxbuf->rxstatus.rs_rssi; - if (rxbuf->rxstatus.rs_rssi < 0) - rxbuf->rxstatus.rs_rssi = 0; + if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) + rssi = ATH_EP_RND(last_rssi, ATH_RSSI_EP_MULTIPLIER); - if (ieee80211_is_beacon(fc)) - priv->ah->stats.avgbrssi = rxbuf->rxstatus.rs_rssi; + if (rssi < 0) + rssi = 0; + + priv->ah->stats.avgbrssi = rssi; + } rx_status->mactime = be64_to_cpu(rxbuf->rxstatus.rs_tstamp); rx_status->band = hw->conf.channel->band; --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9003_phy.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9003_phy.h @@ -351,6 +351,8 @@ #define AR_PHY_CCA_NOM_VAL_9330_2GHZ -118 +#define AR9300_EXT_LNA_CTL_GPIO_AR9485 9 + /* * AGC Field Definitions */ --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h @@ -778,11 +778,11 @@ {0x0000a074, 0x00000000}, {0x0000a078, 0x00000000}, {0x0000a07c, 0x00000000}, - {0x0000a080, 0x1a1a1a1a}, - {0x0000a084, 0x1a1a1a1a}, - {0x0000a088, 0x1a1a1a1a}, - {0x0000a08c, 0x1a1a1a1a}, - {0x0000a090, 0x171a1a1a}, + {0x0000a080, 0x22222229}, + {0x0000a084, 0x1d1d1d1d}, + {0x0000a088, 0x1d1d1d1d}, + {0x0000a08c, 0x1d1d1d1d}, + {0x0000a090, 0x171d1d1d}, {0x0000a094, 0x11111717}, {0x0000a098, 0x00030311}, {0x0000a09c, 0x00000000}, --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/Kconfig +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/Kconfig @@ -91,13 +91,17 @@ This option enables collection of statistics for Rx/Tx status data and some other MAC related statistics -config ATH9K_RATE_CONTROL +config ATH9K_LEGACY_RATE_CONTROL bool "Atheros ath9k rate control" depends on ATH9K - default y + default n ---help--- Say Y, if you want to use the ath9k specific rate control - module instead of minstrel_ht. + module instead of minstrel_ht. Be warned that there are various + issues with the ath9k RC and minstrel is a more robust algorithm. + Note that even if this option is selected, "ath9k_rate_control" + has to be passed to mac80211 using the module parameter, + ieee80211_default_rc_algo. config ATH9K_HTC tristate "Atheros HTC based wireless cards support" --- linux-ppc-3.8.0.orig/drivers/net/wireless/ath/ath9k/hw.h +++ linux-ppc-3.8.0/drivers/net/wireless/ath/ath9k/hw.h @@ -397,6 +397,7 @@ #define MAX_RTT_TABLE_ENTRY 6 #define MAX_IQCAL_MEASUREMENT 8 #define MAX_CL_TAB_ENTRY 16 +#define CL_TAB_ENTRY(reg_base) (reg_base + (4 * j)) struct ath9k_hw_cal_data { u16 channel; --- linux-ppc-3.8.0.orig/drivers/net/wireless/libertas/if_sdio.c +++ linux-ppc-3.8.0/drivers/net/wireless/libertas/if_sdio.c @@ -825,6 +825,11 @@ sdio_release_host(func); + /* Set fw_ready before queuing any commands so that + * lbs_thread won't block from sending them to firmware. + */ + priv->fw_ready = 1; + /* * FUNC_INIT is required for SD8688 WLAN/BT multiple functions */ @@ -839,7 +844,6 @@ netdev_alert(priv->dev, "CMD_FUNC_INIT cmd failed\n"); } - priv->fw_ready = 1; wake_up(&card->pwron_waitq); if (!card->started) { --- linux-ppc-3.8.0.orig/drivers/net/wireless/rtlwifi/usb.c +++ linux-ppc-3.8.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; } @@ -842,6 +854,7 @@ if (unlikely(!_urb)) { RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "Can't allocate urb. Drop skb!\n"); + kfree_skb(skb); return; } urb_list = &rtlusb->tx_pending[ep_num]; @@ -941,7 +954,8 @@ }; int 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; @@ -976,7 +990,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-ppc-3.8.0.orig/drivers/net/wireless/rtlwifi/usb.h +++ linux-ppc-3.8.0/drivers/net/wireless/rtlwifi/usb.h @@ -157,7 +157,8 @@ int 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-ppc-3.8.0.orig/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c +++ linux-ppc-3.8.0/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c @@ -251,7 +251,7 @@ .bar_id = 2, .write_readback = true, .name = "rtl8723ae_pci", - .fw_name = "rtlwifi/rtl8723aefw.bin", + .fw_name = "rtlwifi/rtl8723fw.bin", .ops = &rtl8723ae_hal_ops, .mod_params = &rtl8723ae_mod_params, .maps[SYS_ISO_CTRL] = REG_SYS_ISO_CTRL, @@ -353,8 +353,8 @@ MODULE_AUTHOR("Larry Finger "); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Realtek 8723E 802.11n PCI wireless"); -MODULE_FIRMWARE("rtlwifi/rtl8723aefw.bin"); -MODULE_FIRMWARE("rtlwifi/rtl8723aefw_B.bin"); +MODULE_FIRMWARE("rtlwifi/rtl8723fw.bin"); +MODULE_FIRMWARE("rtlwifi/rtl8723fw_B.bin"); module_param_named(swenc, rtl8723ae_mod_params.sw_crypto, bool, 0444); module_param_named(debug, rtl8723ae_mod_params.debug, int, 0444); --- linux-ppc-3.8.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c +++ linux-ppc-3.8.0/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c @@ -1377,74 +1377,57 @@ void rtl92cu_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid) { - /* dummy routine needed for callback from rtl_op_configure_filter() */ -} - -/*========================================================================== */ - -static void _rtl92cu_set_check_bssid(struct ieee80211_hw *hw, - enum nl80211_iftype type) -{ struct rtl_priv *rtlpriv = rtl_priv(hw); - u32 reg_rcr = rtl_read_dword(rtlpriv, REG_RCR); struct rtl_hal *rtlhal = rtl_hal(rtlpriv); - struct rtl_phy *rtlphy = &(rtlpriv->phy); - u8 filterout_non_associated_bssid = false; + u32 reg_rcr = rtl_read_dword(rtlpriv, REG_RCR); - switch (type) { - case NL80211_IFTYPE_ADHOC: - case NL80211_IFTYPE_STATION: - filterout_non_associated_bssid = true; - break; - case NL80211_IFTYPE_UNSPECIFIED: - case NL80211_IFTYPE_AP: - default: - break; - } - if (filterout_non_associated_bssid) { + if (rtlpriv->psc.rfpwr_state != ERFON) + return; + + if (check_bssid) { + u8 tmp; if (IS_NORMAL_CHIP(rtlhal->version)) { - switch (rtlphy->current_io_type) { - case IO_CMD_RESUME_DM_BY_SCAN: - reg_rcr |= (RCR_CBSSID_DATA | RCR_CBSSID_BCN); - rtlpriv->cfg->ops->set_hw_reg(hw, - HW_VAR_RCR, (u8 *)(®_rcr)); - /* enable update TSF */ - _rtl92cu_set_bcn_ctrl_reg(hw, 0, BIT(4)); - break; - case IO_CMD_PAUSE_DM_BY_SCAN: - reg_rcr &= ~(RCR_CBSSID_DATA | RCR_CBSSID_BCN); - rtlpriv->cfg->ops->set_hw_reg(hw, - HW_VAR_RCR, (u8 *)(®_rcr)); - /* disable update TSF */ - _rtl92cu_set_bcn_ctrl_reg(hw, BIT(4), 0); - break; - } + reg_rcr |= (RCR_CBSSID_DATA | RCR_CBSSID_BCN); + tmp = BIT(4); } else { - reg_rcr |= (RCR_CBSSID); - rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, - (u8 *)(®_rcr)); - _rtl92cu_set_bcn_ctrl_reg(hw, 0, (BIT(4)|BIT(5))); + reg_rcr |= RCR_CBSSID; + tmp = BIT(4) | BIT(5); } - } else if (filterout_non_associated_bssid == false) { + rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, + (u8 *) (®_rcr)); + _rtl92cu_set_bcn_ctrl_reg(hw, 0, tmp); + } else { + u8 tmp; if (IS_NORMAL_CHIP(rtlhal->version)) { - reg_rcr &= (~(RCR_CBSSID_DATA | RCR_CBSSID_BCN)); - rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, - (u8 *)(®_rcr)); - _rtl92cu_set_bcn_ctrl_reg(hw, BIT(4), 0); + reg_rcr &= ~(RCR_CBSSID_DATA | RCR_CBSSID_BCN); + tmp = BIT(4); } else { - reg_rcr &= (~RCR_CBSSID); - rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_RCR, - (u8 *)(®_rcr)); - _rtl92cu_set_bcn_ctrl_reg(hw, (BIT(4)|BIT(5)), 0); + reg_rcr &= ~RCR_CBSSID; + tmp = BIT(4) | BIT(5); } + reg_rcr &= (~(RCR_CBSSID_DATA | RCR_CBSSID_BCN)); + rtlpriv->cfg->ops->set_hw_reg(hw, + HW_VAR_RCR, (u8 *) (®_rcr)); + _rtl92cu_set_bcn_ctrl_reg(hw, tmp, 0); } } +/*========================================================================== */ + int rtl92cu_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type) { + struct rtl_priv *rtlpriv = rtl_priv(hw); + if (_rtl92cu_set_media_status(hw, type)) return -EOPNOTSUPP; - _rtl92cu_set_check_bssid(hw, type); + + if (rtlpriv->mac80211.link_state == MAC80211_LINKED) { + if (type != NL80211_IFTYPE_AP) + rtl92cu_set_check_bssid(hw, true); + } else { + rtl92cu_set_check_bssid(hw, false); + } + return 0; } @@ -2058,8 +2041,6 @@ (shortgi_rate << 4) | (shortgi_rate); } rtl_write_dword(rtlpriv, REG_ARFR0 + ratr_index * 4, ratr_value); - RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, "%x\n", - rtl_read_dword(rtlpriv, REG_ARFR0)); } void rtl92cu_update_hal_rate_mask(struct ieee80211_hw *hw, u8 rssi_level) --- linux-ppc-3.8.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ linux-ppc-3.8.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)}, @@ -357,15 +358,22 @@ {RTL_USB_DEVICE(0x2001, 0x330a, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ {RTL_USB_DEVICE(0x2019, 0xab2b, rtl92cu_hal_cfg)}, /*Planex -Abocom*/ {RTL_USB_DEVICE(0x20f4, 0x624d, rtl92cu_hal_cfg)}, /*TRENDNet*/ + {RTL_USB_DEVICE(0x2357, 0x0100, rtl92cu_hal_cfg)}, /*TP-Link WN8200ND*/ {RTL_USB_DEVICE(0x7392, 0x7822, rtl92cu_hal_cfg)}, /*Edimax -Edimax*/ {} }; 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-ppc-3.8.0.orig/drivers/net/wireless/rt2x00/rt2x00pci.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/net/wireless/rt2x00/rt73usb.c +++ linux-ppc-3.8.0/drivers/net/wireless/rt2x00/rt73usb.c @@ -2167,7 +2167,8 @@ tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START); for (i = 14; i < spec->num_channels; i++) { info[i].max_power = MAX_TXPOWER; - info[i].default_power1 = TXPOWER_FROM_DEV(tx_power[i]); + info[i].default_power1 = + TXPOWER_FROM_DEV(tx_power[i - 14]); } } --- linux-ppc-3.8.0.orig/drivers/net/wireless/rt2x00/rt2800lib.c +++ linux-ppc-3.8.0/drivers/net/wireless/rt2x00/rt2800lib.c @@ -2635,19 +2635,26 @@ * TODO: we do not use +6 dBm option to do not increase power beyond * regulatory limit, however this could be utilized for devices with * CAPABILITY_POWER_LIMIT. - */ - rt2800_bbp_read(rt2x00dev, 1, &r1); - if (delta <= -12) { - power_ctrl = 2; - delta += 12; - } else if (delta <= -6) { - power_ctrl = 1; - delta += 6; - } else { - power_ctrl = 0; + * + * TODO: add different temperature compensation code for RT3290 & RT5390 + * to allow to use BBP_R1 for those chips. + */ + if (!rt2x00_rt(rt2x00dev, RT3290) && + !rt2x00_rt(rt2x00dev, RT5390)) { + rt2800_bbp_read(rt2x00dev, 1, &r1); + if (delta <= -12) { + power_ctrl = 2; + delta += 12; + } else if (delta <= -6) { + power_ctrl = 1; + delta += 6; + } else { + power_ctrl = 0; + } + rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl); + rt2800_bbp_write(rt2x00dev, 1, r1); } - rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl); - rt2800_bbp_write(rt2x00dev, 1, r1); + offset = TX_PWR_CFG_0; for (i = 0; i < EEPROM_TXPOWER_BYRATE_SIZE; i += 2) { @@ -4386,6 +4393,8 @@ if (!rt2x00_rt(rt2x00dev, RT5390) && !rt2x00_rt(rt2x00dev, RT5392)) { + u8 min_gain = rt2x00_rt(rt2x00dev, RT3070) ? 1 : 2; + rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); rt2x00_set_field8(&rfcsr, RFCSR17_TX_LO1_EN, 0); if (rt2x00_rt(rt2x00dev, RT3070) || @@ -4396,8 +4405,10 @@ &rt2x00dev->cap_flags)) rt2x00_set_field8(&rfcsr, RFCSR17_R, 1); } - rt2x00_set_field8(&rfcsr, RFCSR17_TXMIXER_GAIN, - drv_data->txmixer_gain_24g); + if (drv_data->txmixer_gain_24g >= min_gain) { + rt2x00_set_field8(&rfcsr, RFCSR17_TXMIXER_GAIN, + drv_data->txmixer_gain_24g); + } rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); } @@ -5221,8 +5232,8 @@ default_power2 = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A2); for (i = 14; i < spec->num_channels; i++) { - info[i].default_power1 = default_power1[i]; - info[i].default_power2 = default_power2[i]; + info[i].default_power1 = default_power1[i - 14]; + info[i].default_power2 = default_power2[i - 14]; } } --- linux-ppc-3.8.0.orig/drivers/net/wireless/rt2x00/rt2x00dev.c +++ linux-ppc-3.8.0/drivers/net/wireless/rt2x00/rt2x00dev.c @@ -1209,7 +1209,9 @@ rt2x00dev->hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_ADHOC) | BIT(NL80211_IFTYPE_AP) | +#ifdef CONFIG_MAC80211_MESH BIT(NL80211_IFTYPE_MESH_POINT) | +#endif BIT(NL80211_IFTYPE_WDS); rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; --- linux-ppc-3.8.0.orig/drivers/net/wireless/rt2x00/rt2x00queue.c +++ linux-ppc-3.8.0/drivers/net/wireless/rt2x00/rt2x00queue.c @@ -877,13 +877,8 @@ spin_unlock_irqrestore(&queue->index_lock, irqflags); } -void rt2x00queue_pause_queue(struct data_queue *queue) +void rt2x00queue_pause_queue_nocheck(struct data_queue *queue) { - if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || - !test_bit(QUEUE_STARTED, &queue->flags) || - test_and_set_bit(QUEUE_PAUSED, &queue->flags)) - return; - switch (queue->qid) { case QID_AC_VO: case QID_AC_VI: @@ -899,6 +894,15 @@ break; } } +void rt2x00queue_pause_queue(struct data_queue *queue) +{ + if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || + !test_bit(QUEUE_STARTED, &queue->flags) || + test_and_set_bit(QUEUE_PAUSED, &queue->flags)) + return; + + rt2x00queue_pause_queue_nocheck(queue); +} EXPORT_SYMBOL_GPL(rt2x00queue_pause_queue); void rt2x00queue_unpause_queue(struct data_queue *queue) @@ -960,7 +964,7 @@ return; } - rt2x00queue_pause_queue(queue); + rt2x00queue_pause_queue_nocheck(queue); queue->rt2x00dev->ops->lib->stop_queue(queue); --- linux-ppc-3.8.0.orig/drivers/net/wireless/rt2x00/rt61pci.c +++ linux-ppc-3.8.0/drivers/net/wireless/rt2x00/rt61pci.c @@ -2822,7 +2822,8 @@ tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START); for (i = 14; i < spec->num_channels; i++) { info[i].max_power = MAX_TXPOWER; - info[i].default_power1 = TXPOWER_FROM_DEV(tx_power[i]); + info[i].default_power1 = + TXPOWER_FROM_DEV(tx_power[i - 14]); } } --- linux-ppc-3.8.0.orig/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c +++ linux-ppc-3.8.0/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c @@ -1137,9 +1137,8 @@ gain0_15 = ((biq1 & 0xf) << 12) | ((tia & 0xf) << 8) | ((lna2 & 0x3) << 6) | - ((lna2 & 0x3) << 4) | - ((lna1 & 0x3) << 2) | - ((lna1 & 0x3) << 0); + ((lna2 & + 0x3) << 4) | ((lna1 & 0x3) << 2) | ((lna1 & 0x3) << 0); mod_phy_reg(pi, 0x4b6, (0xffff << 0), gain0_15 << 0); mod_phy_reg(pi, 0x4b7, (0xf << 0), gain16_19 << 0); @@ -1157,8 +1156,6 @@ } mod_phy_reg(pi, 0x44d, (0x1 << 0), (!trsw) << 0); - mod_phy_reg(pi, 0x4b1, (0x3 << 11), lna1 << 11); - mod_phy_reg(pi, 0x4e6, (0x3 << 3), lna1 << 3); } @@ -1331,43 +1328,6 @@ return (iq_est.i_pwr + iq_est.q_pwr) / nsamples; } -static bool wlc_lcnphy_rx_iq_cal_gain(struct brcms_phy *pi, u16 biq1_gain, - u16 tia_gain, u16 lna2_gain) -{ - u32 i_thresh_l, q_thresh_l; - u32 i_thresh_h, q_thresh_h; - struct lcnphy_iq_est iq_est_h, iq_est_l; - - wlc_lcnphy_set_rx_gain_by_distribution(pi, 0, 0, 0, biq1_gain, tia_gain, - lna2_gain, 0); - - wlc_lcnphy_rx_gain_override_enable(pi, true); - wlc_lcnphy_start_tx_tone(pi, 2000, (40 >> 1), 0); - udelay(500); - write_radio_reg(pi, RADIO_2064_REG112, 0); - if (!wlc_lcnphy_rx_iq_est(pi, 1024, 32, &iq_est_l)) - return false; - - wlc_lcnphy_start_tx_tone(pi, 2000, 40, 0); - udelay(500); - write_radio_reg(pi, RADIO_2064_REG112, 0); - if (!wlc_lcnphy_rx_iq_est(pi, 1024, 32, &iq_est_h)) - return false; - - i_thresh_l = (iq_est_l.i_pwr << 1); - i_thresh_h = (iq_est_l.i_pwr << 2) + iq_est_l.i_pwr; - - q_thresh_l = (iq_est_l.q_pwr << 1); - q_thresh_h = (iq_est_l.q_pwr << 2) + iq_est_l.q_pwr; - if ((iq_est_h.i_pwr > i_thresh_l) && - (iq_est_h.i_pwr < i_thresh_h) && - (iq_est_h.q_pwr > q_thresh_l) && - (iq_est_h.q_pwr < q_thresh_h)) - return true; - - return false; -} - static bool wlc_lcnphy_rx_iq_cal(struct brcms_phy *pi, const struct lcnphy_rx_iqcomp *iqcomp, @@ -1382,8 +1342,8 @@ RFOverrideVal0_old, rfoverride2_old, rfoverride2val_old, rfoverride3_old, rfoverride3val_old, rfoverride4_old, rfoverride4val_old, afectrlovr_old, afectrlovrval_old; - int tia_gain, lna2_gain, biq1_gain; - bool set_gain; + int tia_gain; + u32 received_power, rx_pwr_threshold; u16 old_sslpnCalibClkEnCtrl, old_sslpnRxFeClkEnCtrl; u16 values_to_save[11]; s16 *ptr; @@ -1408,134 +1368,126 @@ goto cal_done; } - WARN_ON(module != 1); - tx_pwr_ctrl = wlc_lcnphy_get_tx_pwr_ctrl(pi); - wlc_lcnphy_set_tx_pwr_ctrl(pi, LCNPHY_TX_PWR_CTRL_OFF); - - for (i = 0; i < 11; i++) - values_to_save[i] = - read_radio_reg(pi, rxiq_cal_rf_reg[i]); - Core1TxControl_old = read_phy_reg(pi, 0x631); - - or_phy_reg(pi, 0x631, 0x0015); - - RFOverride0_old = read_phy_reg(pi, 0x44c); - RFOverrideVal0_old = read_phy_reg(pi, 0x44d); - rfoverride2_old = read_phy_reg(pi, 0x4b0); - rfoverride2val_old = read_phy_reg(pi, 0x4b1); - rfoverride3_old = read_phy_reg(pi, 0x4f9); - rfoverride3val_old = read_phy_reg(pi, 0x4fa); - rfoverride4_old = read_phy_reg(pi, 0x938); - rfoverride4val_old = read_phy_reg(pi, 0x939); - afectrlovr_old = read_phy_reg(pi, 0x43b); - afectrlovrval_old = read_phy_reg(pi, 0x43c); - old_sslpnCalibClkEnCtrl = read_phy_reg(pi, 0x6da); - old_sslpnRxFeClkEnCtrl = read_phy_reg(pi, 0x6db); - - tx_gain_override_old = wlc_lcnphy_tx_gain_override_enabled(pi); - if (tx_gain_override_old) { - wlc_lcnphy_get_tx_gain(pi, &old_gains); - tx_gain_index_old = pi_lcn->lcnphy_current_index; - } + if (module == 1) { - wlc_lcnphy_set_tx_pwr_by_index(pi, tx_gain_idx); - - mod_phy_reg(pi, 0x4f9, (0x1 << 0), 1 << 0); - mod_phy_reg(pi, 0x4fa, (0x1 << 0), 0 << 0); - - mod_phy_reg(pi, 0x43b, (0x1 << 1), 1 << 1); - mod_phy_reg(pi, 0x43c, (0x1 << 1), 0 << 1); + tx_pwr_ctrl = wlc_lcnphy_get_tx_pwr_ctrl(pi); + wlc_lcnphy_set_tx_pwr_ctrl(pi, LCNPHY_TX_PWR_CTRL_OFF); - write_radio_reg(pi, RADIO_2064_REG116, 0x06); - write_radio_reg(pi, RADIO_2064_REG12C, 0x07); - write_radio_reg(pi, RADIO_2064_REG06A, 0xd3); - write_radio_reg(pi, RADIO_2064_REG098, 0x03); - write_radio_reg(pi, RADIO_2064_REG00B, 0x7); - mod_radio_reg(pi, RADIO_2064_REG113, 1 << 4, 1 << 4); - write_radio_reg(pi, RADIO_2064_REG01D, 0x01); - write_radio_reg(pi, RADIO_2064_REG114, 0x01); - write_radio_reg(pi, RADIO_2064_REG02E, 0x10); - write_radio_reg(pi, RADIO_2064_REG12A, 0x08); - - mod_phy_reg(pi, 0x938, (0x1 << 0), 1 << 0); - mod_phy_reg(pi, 0x939, (0x1 << 0), 0 << 0); - mod_phy_reg(pi, 0x938, (0x1 << 1), 1 << 1); - mod_phy_reg(pi, 0x939, (0x1 << 1), 1 << 1); - mod_phy_reg(pi, 0x938, (0x1 << 2), 1 << 2); - mod_phy_reg(pi, 0x939, (0x1 << 2), 1 << 2); - mod_phy_reg(pi, 0x938, (0x1 << 3), 1 << 3); - mod_phy_reg(pi, 0x939, (0x1 << 3), 1 << 3); - mod_phy_reg(pi, 0x938, (0x1 << 5), 1 << 5); - mod_phy_reg(pi, 0x939, (0x1 << 5), 0 << 5); + for (i = 0; i < 11; i++) + values_to_save[i] = + read_radio_reg(pi, rxiq_cal_rf_reg[i]); + Core1TxControl_old = read_phy_reg(pi, 0x631); + + or_phy_reg(pi, 0x631, 0x0015); + + RFOverride0_old = read_phy_reg(pi, 0x44c); + RFOverrideVal0_old = read_phy_reg(pi, 0x44d); + rfoverride2_old = read_phy_reg(pi, 0x4b0); + rfoverride2val_old = read_phy_reg(pi, 0x4b1); + rfoverride3_old = read_phy_reg(pi, 0x4f9); + rfoverride3val_old = read_phy_reg(pi, 0x4fa); + rfoverride4_old = read_phy_reg(pi, 0x938); + rfoverride4val_old = read_phy_reg(pi, 0x939); + afectrlovr_old = read_phy_reg(pi, 0x43b); + afectrlovrval_old = read_phy_reg(pi, 0x43c); + old_sslpnCalibClkEnCtrl = read_phy_reg(pi, 0x6da); + old_sslpnRxFeClkEnCtrl = read_phy_reg(pi, 0x6db); + + tx_gain_override_old = wlc_lcnphy_tx_gain_override_enabled(pi); + if (tx_gain_override_old) { + wlc_lcnphy_get_tx_gain(pi, &old_gains); + tx_gain_index_old = pi_lcn->lcnphy_current_index; + } - mod_phy_reg(pi, 0x43b, (0x1 << 0), 1 << 0); - mod_phy_reg(pi, 0x43c, (0x1 << 0), 0 << 0); + wlc_lcnphy_set_tx_pwr_by_index(pi, tx_gain_idx); - write_phy_reg(pi, 0x6da, 0xffff); - or_phy_reg(pi, 0x6db, 0x3); + mod_phy_reg(pi, 0x4f9, (0x1 << 0), 1 << 0); + mod_phy_reg(pi, 0x4fa, (0x1 << 0), 0 << 0); - wlc_lcnphy_set_trsw_override(pi, tx_switch, rx_switch); - set_gain = false; + mod_phy_reg(pi, 0x43b, (0x1 << 1), 1 << 1); + mod_phy_reg(pi, 0x43c, (0x1 << 1), 0 << 1); - lna2_gain = 3; - while ((lna2_gain >= 0) && !set_gain) { - tia_gain = 4; - - while ((tia_gain >= 0) && !set_gain) { - biq1_gain = 6; - - while ((biq1_gain >= 0) && !set_gain) { - set_gain = wlc_lcnphy_rx_iq_cal_gain(pi, - (u16) - biq1_gain, - (u16) - tia_gain, - (u16) - lna2_gain); - biq1_gain -= 1; - } + write_radio_reg(pi, RADIO_2064_REG116, 0x06); + write_radio_reg(pi, RADIO_2064_REG12C, 0x07); + write_radio_reg(pi, RADIO_2064_REG06A, 0xd3); + write_radio_reg(pi, RADIO_2064_REG098, 0x03); + write_radio_reg(pi, RADIO_2064_REG00B, 0x7); + mod_radio_reg(pi, RADIO_2064_REG113, 1 << 4, 1 << 4); + write_radio_reg(pi, RADIO_2064_REG01D, 0x01); + write_radio_reg(pi, RADIO_2064_REG114, 0x01); + write_radio_reg(pi, RADIO_2064_REG02E, 0x10); + write_radio_reg(pi, RADIO_2064_REG12A, 0x08); + + mod_phy_reg(pi, 0x938, (0x1 << 0), 1 << 0); + mod_phy_reg(pi, 0x939, (0x1 << 0), 0 << 0); + mod_phy_reg(pi, 0x938, (0x1 << 1), 1 << 1); + mod_phy_reg(pi, 0x939, (0x1 << 1), 1 << 1); + mod_phy_reg(pi, 0x938, (0x1 << 2), 1 << 2); + mod_phy_reg(pi, 0x939, (0x1 << 2), 1 << 2); + mod_phy_reg(pi, 0x938, (0x1 << 3), 1 << 3); + mod_phy_reg(pi, 0x939, (0x1 << 3), 1 << 3); + mod_phy_reg(pi, 0x938, (0x1 << 5), 1 << 5); + mod_phy_reg(pi, 0x939, (0x1 << 5), 0 << 5); + + mod_phy_reg(pi, 0x43b, (0x1 << 0), 1 << 0); + mod_phy_reg(pi, 0x43c, (0x1 << 0), 0 << 0); + + wlc_lcnphy_start_tx_tone(pi, 2000, 120, 0); + write_phy_reg(pi, 0x6da, 0xffff); + or_phy_reg(pi, 0x6db, 0x3); + wlc_lcnphy_set_trsw_override(pi, tx_switch, rx_switch); + wlc_lcnphy_rx_gain_override_enable(pi, true); + + tia_gain = 8; + rx_pwr_threshold = 950; + while (tia_gain > 0) { tia_gain -= 1; + wlc_lcnphy_set_rx_gain_by_distribution(pi, + 0, 0, 2, 2, + (u16) + tia_gain, 1, 0); + udelay(500); + + received_power = + wlc_lcnphy_measure_digital_power(pi, 2000); + if (received_power < rx_pwr_threshold) + break; } - lna2_gain -= 1; - } - - if (set_gain) - result = wlc_lcnphy_calc_rx_iq_comp(pi, 1024); - else - result = false; - - wlc_lcnphy_stop_tx_tone(pi); - - write_phy_reg(pi, 0x631, Core1TxControl_old); - - write_phy_reg(pi, 0x44c, RFOverrideVal0_old); - write_phy_reg(pi, 0x44d, RFOverrideVal0_old); - write_phy_reg(pi, 0x4b0, rfoverride2_old); - write_phy_reg(pi, 0x4b1, rfoverride2val_old); - write_phy_reg(pi, 0x4f9, rfoverride3_old); - write_phy_reg(pi, 0x4fa, rfoverride3val_old); - write_phy_reg(pi, 0x938, rfoverride4_old); - write_phy_reg(pi, 0x939, rfoverride4val_old); - write_phy_reg(pi, 0x43b, afectrlovr_old); - write_phy_reg(pi, 0x43c, afectrlovrval_old); - write_phy_reg(pi, 0x6da, old_sslpnCalibClkEnCtrl); - write_phy_reg(pi, 0x6db, old_sslpnRxFeClkEnCtrl); + result = wlc_lcnphy_calc_rx_iq_comp(pi, 0xffff); - wlc_lcnphy_clear_trsw_override(pi); + wlc_lcnphy_stop_tx_tone(pi); - mod_phy_reg(pi, 0x44c, (0x1 << 2), 0 << 2); + write_phy_reg(pi, 0x631, Core1TxControl_old); - for (i = 0; i < 11; i++) - write_radio_reg(pi, rxiq_cal_rf_reg[i], - values_to_save[i]); + write_phy_reg(pi, 0x44c, RFOverrideVal0_old); + write_phy_reg(pi, 0x44d, RFOverrideVal0_old); + write_phy_reg(pi, 0x4b0, rfoverride2_old); + write_phy_reg(pi, 0x4b1, rfoverride2val_old); + write_phy_reg(pi, 0x4f9, rfoverride3_old); + write_phy_reg(pi, 0x4fa, rfoverride3val_old); + write_phy_reg(pi, 0x938, rfoverride4_old); + write_phy_reg(pi, 0x939, rfoverride4val_old); + write_phy_reg(pi, 0x43b, afectrlovr_old); + write_phy_reg(pi, 0x43c, afectrlovrval_old); + write_phy_reg(pi, 0x6da, old_sslpnCalibClkEnCtrl); + write_phy_reg(pi, 0x6db, old_sslpnRxFeClkEnCtrl); + + wlc_lcnphy_clear_trsw_override(pi); + + mod_phy_reg(pi, 0x44c, (0x1 << 2), 0 << 2); + + for (i = 0; i < 11; i++) + write_radio_reg(pi, rxiq_cal_rf_reg[i], + values_to_save[i]); - if (tx_gain_override_old) - wlc_lcnphy_set_tx_pwr_by_index(pi, tx_gain_index_old); - else - wlc_lcnphy_disable_tx_gain_override(pi); + if (tx_gain_override_old) + wlc_lcnphy_set_tx_pwr_by_index(pi, tx_gain_index_old); + else + wlc_lcnphy_disable_tx_gain_override(pi); - wlc_lcnphy_set_tx_pwr_ctrl(pi, tx_pwr_ctrl); - wlc_lcnphy_rx_gain_override_enable(pi, false); + wlc_lcnphy_set_tx_pwr_ctrl(pi, tx_pwr_ctrl); + wlc_lcnphy_rx_gain_override_enable(pi, false); + } cal_done: kfree(ptr); @@ -1829,17 +1781,6 @@ write_radio_reg(pi, RADIO_2064_REG038, 3); write_radio_reg(pi, RADIO_2064_REG091, 7); } - - if (!(pi->sh->boardflags & BFL_FEM)) { - u8 reg038[14] = {0xd, 0xe, 0xd, 0xd, 0xd, 0xc, - 0xa, 0xb, 0xb, 0x3, 0x3, 0x2, 0x0, 0x0}; - - write_radio_reg(pi, RADIO_2064_REG02A, 0xf); - write_radio_reg(pi, RADIO_2064_REG091, 0x3); - write_radio_reg(pi, RADIO_2064_REG038, 0x3); - - write_radio_reg(pi, RADIO_2064_REG038, reg038[channel - 1]); - } } static int @@ -2034,16 +1975,6 @@ } else { mod_radio_reg(pi, RADIO_2064_REG03A, 1, 0x1); mod_radio_reg(pi, RADIO_2064_REG11A, 0x8, 0x8); - mod_radio_reg(pi, RADIO_2064_REG028, 0x1, 0x0); - mod_radio_reg(pi, RADIO_2064_REG11A, 0x4, 1<<2); - mod_radio_reg(pi, RADIO_2064_REG036, 0x10, 0x0); - mod_radio_reg(pi, RADIO_2064_REG11A, 0x10, 1<<4); - mod_radio_reg(pi, RADIO_2064_REG036, 0x3, 0x0); - mod_radio_reg(pi, RADIO_2064_REG035, 0xff, 0x77); - mod_radio_reg(pi, RADIO_2064_REG028, 0x1e, 0xe<<1); - mod_radio_reg(pi, RADIO_2064_REG112, 0x80, 1<<7); - mod_radio_reg(pi, RADIO_2064_REG005, 0x7, 1<<1); - mod_radio_reg(pi, RADIO_2064_REG029, 0xf0, 0<<4); } } else { mod_phy_reg(pi, 0x4d9, (0x1 << 2), (0x1) << 2); @@ -2130,14 +2061,12 @@ (auxpga_vmid_temp << 0) | (auxpga_gain_temp << 12)); mod_radio_reg(pi, RADIO_2064_REG082, (1 << 5), (1 << 5)); - mod_radio_reg(pi, RADIO_2064_REG07C, (1 << 0), (1 << 0)); } static void wlc_lcnphy_tssi_setup(struct brcms_phy *pi) { struct phytbl_info tab; u32 rfseq, ind; - u8 tssi_sel; tab.tbl_id = LCNPHY_TBL_ID_TXPWRCTL; tab.tbl_width = 32; @@ -2159,13 +2088,7 @@ mod_phy_reg(pi, 0x503, (0x1 << 4), (1) << 4); - if (pi->sh->boardflags & BFL_FEM) { - tssi_sel = 0x1; - wlc_lcnphy_set_tssi_mux(pi, LCNPHY_TSSI_EXT); - } else { - tssi_sel = 0xe; - wlc_lcnphy_set_tssi_mux(pi, LCNPHY_TSSI_POST_PA); - } + wlc_lcnphy_set_tssi_mux(pi, LCNPHY_TSSI_EXT); mod_phy_reg(pi, 0x4a4, (0x1 << 14), (0) << 14); mod_phy_reg(pi, 0x4a4, (0x1 << 15), (1) << 15); @@ -2201,10 +2124,9 @@ mod_phy_reg(pi, 0x49a, (0x1ff << 0), (0xff) << 0); if (LCNREV_IS(pi->pubpi.phy_rev, 2)) { - mod_radio_reg(pi, RADIO_2064_REG028, 0xf, tssi_sel); + mod_radio_reg(pi, RADIO_2064_REG028, 0xf, 0xe); mod_radio_reg(pi, RADIO_2064_REG086, 0x4, 0x4); } else { - mod_radio_reg(pi, RADIO_2064_REG028, 0x1e, tssi_sel << 1); mod_radio_reg(pi, RADIO_2064_REG03A, 0x1, 1); mod_radio_reg(pi, RADIO_2064_REG11A, 0x8, 1 << 3); } @@ -2251,10 +2173,6 @@ mod_phy_reg(pi, 0x4d7, (0xf << 8), (0) << 8); - mod_radio_reg(pi, RADIO_2064_REG035, 0xff, 0x0); - mod_radio_reg(pi, RADIO_2064_REG036, 0x3, 0x0); - mod_radio_reg(pi, RADIO_2064_REG11A, 0x8, 0x8); - wlc_lcnphy_pwrctrl_rssiparams(pi); } @@ -2873,8 +2791,6 @@ read_radio_reg(pi, RADIO_2064_REG007) & 1; u16 SAVE_jtag_auxpga = read_radio_reg(pi, RADIO_2064_REG0FF) & 0x10; u16 SAVE_iqadc_aux_en = read_radio_reg(pi, RADIO_2064_REG11F) & 4; - u8 SAVE_bbmult = wlc_lcnphy_get_bbmult(pi); - idleTssi = read_phy_reg(pi, 0x4ab); suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) & MCTL_EN_MAC)); @@ -2892,12 +2808,6 @@ mod_radio_reg(pi, RADIO_2064_REG0FF, 0x10, 1 << 4); mod_radio_reg(pi, RADIO_2064_REG11F, 0x4, 1 << 2); wlc_lcnphy_tssi_setup(pi); - - mod_phy_reg(pi, 0x4d7, (0x1 << 0), (1 << 0)); - mod_phy_reg(pi, 0x4d7, (0x1 << 6), (1 << 6)); - - wlc_lcnphy_set_bbmult(pi, 0x0); - wlc_phy_do_dummy_tx(pi, true, OFF); idleTssi = ((read_phy_reg(pi, 0x4ab) & (0x1ff << 0)) >> 0); @@ -2919,7 +2829,6 @@ mod_phy_reg(pi, 0x44c, (0x1 << 12), (0) << 12); - wlc_lcnphy_set_bbmult(pi, SAVE_bbmult); wlc_lcnphy_set_tx_gain_override(pi, tx_gain_override_old); wlc_lcnphy_set_tx_gain(pi, &old_gains); wlc_lcnphy_set_tx_pwr_ctrl(pi, SAVE_txpwrctrl); @@ -3133,11 +3042,6 @@ wlc_lcnphy_write_table(pi, &tab); tab.tbl_offset++; } - mod_phy_reg(pi, 0x4d0, (0x1 << 0), (0) << 0); - mod_phy_reg(pi, 0x4d3, (0xff << 0), (0) << 0); - mod_phy_reg(pi, 0x4d3, (0xff << 8), (0) << 8); - mod_phy_reg(pi, 0x4d0, (0x1 << 4), (0) << 4); - mod_phy_reg(pi, 0x4d0, (0x1 << 2), (0) << 2); mod_phy_reg(pi, 0x410, (0x1 << 7), (0) << 7); @@ -3939,6 +3843,7 @@ target_gains.pad_gain = 21; target_gains.dac_gain = 0; wlc_lcnphy_set_tx_gain(pi, &target_gains); + wlc_lcnphy_set_tx_pwr_by_index(pi, 16); if (LCNREV_IS(pi->pubpi.phy_rev, 1) || pi_lcn->lcnphy_hw_iqcal_en) { @@ -3949,7 +3854,6 @@ lcnphy_recal ? LCNPHY_CAL_RECAL : LCNPHY_CAL_FULL), false); } else { - wlc_lcnphy_set_tx_pwr_by_index(pi, 16); wlc_lcnphy_tx_iqlo_soft_cal_full(pi); } @@ -4374,22 +4278,17 @@ if (CHSPEC_IS5G(pi->radio_chanspec)) pa_gain = 0x70; else - pa_gain = 0x60; + pa_gain = 0x70; if (pi->sh->boardflags & BFL_FEM) pa_gain = 0x10; - tab.tbl_id = LCNPHY_TBL_ID_TXPWRCTL; tab.tbl_width = 32; tab.tbl_len = 1; tab.tbl_ptr = &val; for (j = 0; j < 128; j++) { - if (pi->sh->boardflags & BFL_FEM) - gm_gain = gain_table[j].gm; - else - gm_gain = 15; - + gm_gain = gain_table[j].gm; val = (((u32) pa_gain << 24) | (gain_table[j].pad << 16) | (gain_table[j].pga << 8) | gm_gain); @@ -4600,10 +4499,7 @@ write_phy_reg(pi, 0x4ea, 0x4688); - if (pi->sh->boardflags & BFL_FEM) - mod_phy_reg(pi, 0x4eb, (0x7 << 0), 2 << 0); - else - mod_phy_reg(pi, 0x4eb, (0x7 << 0), 3 << 0); + mod_phy_reg(pi, 0x4eb, (0x7 << 0), 2 << 0); mod_phy_reg(pi, 0x4eb, (0x7 << 6), 0 << 6); @@ -4614,13 +4510,6 @@ wlc_lcnphy_rcal(pi); wlc_lcnphy_rc_cal(pi); - - if (!(pi->sh->boardflags & BFL_FEM)) { - write_radio_reg(pi, RADIO_2064_REG032, 0x6f); - write_radio_reg(pi, RADIO_2064_REG033, 0x19); - write_radio_reg(pi, RADIO_2064_REG039, 0xe); - } - } static void wlc_lcnphy_radio_init(struct brcms_phy *pi) @@ -4650,20 +4539,22 @@ wlc_lcnphy_write_table(pi, &tab); } - if (!(pi->sh->boardflags & BFL_FEM)) { - tab.tbl_id = LCNPHY_TBL_ID_RFSEQ; - tab.tbl_width = 16; - tab.tbl_ptr = &val; - tab.tbl_len = 1; + tab.tbl_id = LCNPHY_TBL_ID_RFSEQ; + tab.tbl_width = 16; + tab.tbl_ptr = &val; + tab.tbl_len = 1; - val = 150; - tab.tbl_offset = 0; - wlc_lcnphy_write_table(pi, &tab); + val = 114; + tab.tbl_offset = 0; + wlc_lcnphy_write_table(pi, &tab); - val = 220; - tab.tbl_offset = 1; - wlc_lcnphy_write_table(pi, &tab); - } + val = 130; + tab.tbl_offset = 1; + wlc_lcnphy_write_table(pi, &tab); + + val = 6; + tab.tbl_offset = 8; + wlc_lcnphy_write_table(pi, &tab); if (CHSPEC_IS2G(pi->radio_chanspec)) { if (pi->sh->boardflags & BFL_FEM) @@ -5055,7 +4946,6 @@ wlc_lcnphy_load_tx_iir_filter(pi, true, 3); mod_phy_reg(pi, 0x4eb, (0x7 << 3), (1) << 3); - wlc_lcnphy_tssi_setup(pi); } void wlc_phy_detach_lcnphy(struct brcms_phy *pi) @@ -5094,7 +4984,8 @@ if (!wlc_phy_txpwr_srom_read_lcnphy(pi)) return false; - if (LCNREV_IS(pi->pubpi.phy_rev, 1)) { + if ((pi->sh->boardflags & BFL_FEM) && + (LCNREV_IS(pi->pubpi.phy_rev, 1))) { if (pi_lcn->lcnphy_tempsense_option == 3) { pi->hwpwrctrl = true; pi->hwpwrctrl_capable = true; --- linux-ppc-3.8.0.orig/drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c +++ linux-ppc-3.8.0/drivers/net/wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c @@ -1992,70 +1992,70 @@ }; static const u16 dot11lcn_sw_ctrl_tbl_4313_rev0[] = { - 0x0009, 0x000a, - 0x0005, - 0x0006, 0x0009, - 0x000a, - 0x0005, 0x0006, - 0x0009, - 0x000a, 0x0005, - 0x0006, - 0x0009, 0x000a, - 0x0005, - 0x0006, 0x0009, - 0x000a, - 0x0005, 0x0006, - 0x0009, - 0x000a, 0x0005, - 0x0006, - 0x0009, 0x000a, - 0x0005, - 0x0006, 0x0009, - 0x000a, - 0x0005, 0x0006, - 0x0009, - 0x000a, 0x0005, - 0x0006, - 0x0009, 0x000a, - 0x0005, - 0x0006, 0x0009, - 0x000a, - 0x0005, 0x0006, - 0x0009, - 0x000a, 0x0005, - 0x0006, + 0x000a, 0x0009, + 0x0006, + 0x0005, 0x000a, + 0x0009, + 0x0006, 0x0005, + 0x000a, + 0x0009, 0x0006, + 0x0005, + 0x000a, 0x0009, + 0x0006, + 0x0005, 0x000a, + 0x0009, + 0x0006, 0x0005, + 0x000a, + 0x0009, 0x0006, + 0x0005, + 0x000a, 0x0009, + 0x0006, + 0x0005, 0x000a, + 0x0009, + 0x0006, 0x0005, + 0x000a, + 0x0009, 0x0006, + 0x0005, + 0x000a, 0x0009, + 0x0006, + 0x0005, 0x000a, + 0x0009, + 0x0006, 0x0005, + 0x000a, + 0x0009, 0x0006, + 0x0005, }; static const u16 dot11lcn_sw_ctrl_tbl_rev0[] = { --- linux-ppc-3.8.0.orig/drivers/net/wireless/p54/p54usb.c +++ linux-ppc-3.8.0/drivers/net/wireless/p54/p54usb.c @@ -84,8 +84,8 @@ {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, 0x4503)}, /* T-Com Sinus 154 data II */ {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) */ --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/scan.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/scan.c @@ -1366,10 +1366,15 @@ list_del(&cmd_node->list); spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags); - adapter->cmd_queued = cmd_node; mwifiex_insert_cmd_to_pending_q(adapter, cmd_node, true); queue_work(adapter->workqueue, &adapter->main_work); + + /* Perform internal scan synchronously */ + if (!priv->scan_request) { + dev_dbg(adapter->dev, "wait internal scan\n"); + mwifiex_wait_queue_complete(adapter, cmd_node); + } } else { spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags); @@ -1765,7 +1770,12 @@ /* Need to indicate IOCTL complete */ if (adapter->curr_cmd->wait_q_enabled) { adapter->cmd_wait_q.status = 0; - mwifiex_complete_cmd(adapter, adapter->curr_cmd); + if (!priv->scan_request) { + dev_dbg(adapter->dev, + "complete internal scan\n"); + mwifiex_complete_cmd(adapter, + adapter->curr_cmd); + } } if (priv->report_scan_result) priv->report_scan_result = false; @@ -1923,9 +1933,6 @@ /* Normal scan */ ret = mwifiex_scan_networks(priv, NULL); - if (!ret) - ret = mwifiex_wait_queue_complete(priv->adapter); - up(&priv->async_sem); return ret; --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/sdio.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/sdio.c @@ -1455,8 +1455,8 @@ /* Allocate buffer and copy payload */ blk_size = MWIFIEX_SDIO_BLOCK_SIZE; buf_block_len = (pkt_len + blk_size - 1) / blk_size; - *(u16 *) &payload[0] = (u16) pkt_len; - *(u16 *) &payload[2] = type; + *(__le16 *)&payload[0] = cpu_to_le16((u16)pkt_len); + *(__le16 *)&payload[2] = cpu_to_le16(type); /* * This is SDIO specific header --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/join.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/join.c @@ -1092,10 +1092,9 @@ adhoc_join->bss_descriptor.bssid, adhoc_join->bss_descriptor.ssid); - for (i = 0; bss_desc->supported_rates[i] && - i < MWIFIEX_SUPPORTED_RATES; - i++) - ; + for (i = 0; i < MWIFIEX_SUPPORTED_RATES && + bss_desc->supported_rates[i]; i++) + ; rates_size = i; /* Copy Data Rates from the Rates recorded in scan response */ --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/cmdevt.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/cmdevt.c @@ -156,6 +156,20 @@ return -1; } + cmd_code = le16_to_cpu(host_cmd->command); + cmd_size = le16_to_cpu(host_cmd->size); + + if (adapter->hw_status == MWIFIEX_HW_STATUS_RESET && + cmd_code != HostCmd_CMD_FUNC_SHUTDOWN && + cmd_code != HostCmd_CMD_FUNC_INIT) { + dev_err(adapter->dev, + "DNLD_CMD: FW in reset state, ignore cmd %#x\n", + cmd_code); + mwifiex_complete_cmd(adapter, cmd_node); + mwifiex_insert_cmd_to_free_q(adapter, cmd_node); + return -1; + } + /* Set command sequence number */ adapter->seq_num++; host_cmd->seq_num = cpu_to_le16(HostCmd_SET_SEQ_NO_BSS_INFO @@ -167,9 +181,6 @@ adapter->curr_cmd = cmd_node; spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags); - cmd_code = le16_to_cpu(host_cmd->command); - cmd_size = le16_to_cpu(host_cmd->size); - /* Adjust skb length */ if (cmd_node->cmd_skb->len > cmd_size) /* @@ -488,8 +499,6 @@ ret = mwifiex_send_cmd_async(priv, cmd_no, cmd_action, cmd_oid, data_buf); - if (!ret) - ret = mwifiex_wait_queue_complete(adapter); return ret; } @@ -592,9 +601,10 @@ if (cmd_no == HostCmd_CMD_802_11_SCAN) { mwifiex_queue_scan_cmd(priv, cmd_node); } else { - adapter->cmd_queued = cmd_node; mwifiex_insert_cmd_to_pending_q(adapter, cmd_node, true); queue_work(adapter->workqueue, &adapter->main_work); + if (cmd_node->wait_q_enabled) + ret = mwifiex_wait_queue_complete(adapter, cmd_node); } return ret; @@ -1170,6 +1180,7 @@ adapter->if_ops.wakeup(adapter); adapter->hs_activated = false; adapter->is_hs_configured = false; + adapter->is_suspended = false; mwifiex_hs_activated_event(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY), false); --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/cfg80211.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/cfg80211.c @@ -1846,7 +1846,8 @@ } } - for (i = 0; i < request->n_channels; i++) { + for (i = 0; i < min_t(u32, request->n_channels, + MWIFIEX_USER_SCAN_CHAN_MAX); i++) { chan = request->channels[i]; priv->user_scan_cfg->chan_list[i].chan_number = chan->hw_value; priv->user_scan_cfg->chan_list[i].radio_type = chan->band; @@ -2154,9 +2155,6 @@ if (wdev->netdev->reg_state == NETREG_REGISTERED) unregister_netdevice(wdev->netdev); - if (wdev->netdev->reg_state == NETREG_UNREGISTERED) - free_netdev(wdev->netdev); - /* Clear the priv in adapter */ priv->netdev = NULL; --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/pcie.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/pcie.c @@ -291,7 +291,7 @@ i++; usleep_range(10, 20); /* 50ms max wait */ - if (i == 50000) + if (i == 5000) break; } @@ -1831,9 +1831,9 @@ if (pdev) { pci_iounmap(pdev, card->pci_mmap); pci_iounmap(pdev, card->pci_mmap1); - - pci_release_regions(pdev); pci_disable_device(pdev); + pci_release_region(pdev, 2); + pci_release_region(pdev, 0); pci_set_drvdata(pdev, NULL); } } --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/main.h +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/main.h @@ -714,7 +714,6 @@ u16 cmd_wait_q_required; struct mwifiex_wait_queue cmd_wait_q; u8 scan_wait_q_woken; - struct cmd_ctrl_node *cmd_queued; spinlock_t queue_lock; /* lock for tx queues */ struct completion fw_load; u8 country_code[IEEE80211_COUNTRY_STRING_LEN]; @@ -994,7 +993,8 @@ struct mwifiex_multicast_list *mcast_list); int mwifiex_copy_mcast_addr(struct mwifiex_multicast_list *mlist, struct net_device *dev); -int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter); +int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter, + struct cmd_ctrl_node *cmd_queued); int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, struct cfg80211_ssid *req_ssid); int mwifiex_cancel_hs(struct mwifiex_private *priv, int cmd_type); --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/main.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/main.c @@ -363,20 +363,6 @@ dev_err(adapter->dev, "cannot create default STA interface\n"); goto err_add_intf; } - - /* Create AP interface by default */ - if (!mwifiex_add_virtual_intf(adapter->wiphy, "uap%d", - NL80211_IFTYPE_AP, NULL, NULL)) { - dev_err(adapter->dev, "cannot create default AP interface\n"); - goto err_add_intf; - } - - /* Create P2P interface by default */ - if (!mwifiex_add_virtual_intf(adapter->wiphy, "p2p%d", - NL80211_IFTYPE_P2P_CLIENT, NULL, NULL)) { - dev_err(adapter->dev, "cannot create default P2P interface\n"); - goto err_add_intf; - } rtnl_unlock(); mwifiex_drv_get_driver_version(adapter, fmt, sizeof(fmt) - 1); @@ -646,6 +632,7 @@ struct net_device *dev) { dev->netdev_ops = &mwifiex_netdev_ops; + dev->destructor = free_netdev; /* Initialize private structure */ priv->current_key_index = 0; priv->media_connected = false; --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/init.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/init.c @@ -707,6 +707,14 @@ return ret; } + /* cancel current command */ + if (adapter->curr_cmd) { + dev_warn(adapter->dev, "curr_cmd is still in processing\n"); + del_timer(&adapter->cmd_timer); + mwifiex_insert_cmd_to_free_q(adapter, adapter->curr_cmd); + adapter->curr_cmd = NULL; + } + /* shut down mwifiex */ dev_dbg(adapter->dev, "info: shutdown mwifiex...\n"); --- linux-ppc-3.8.0.orig/drivers/net/wireless/mwifiex/sta_ioctl.c +++ linux-ppc-3.8.0/drivers/net/wireless/mwifiex/sta_ioctl.c @@ -54,16 +54,10 @@ * This function waits on a cmd wait queue. It also cancels the pending * request after waking up, in case of errors. */ -int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter) +int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter, + struct cmd_ctrl_node *cmd_queued) { int status; - struct cmd_ctrl_node *cmd_queued; - - if (!adapter->cmd_queued) - return 0; - - cmd_queued = adapter->cmd_queued; - adapter->cmd_queued = NULL; dev_dbg(adapter->dev, "cmd pending\n"); atomic_inc(&adapter->cmd_pending); @@ -105,7 +99,7 @@ } else { /* Multicast */ priv->curr_pkt_filter &= ~HostCmd_ACT_MAC_PROMISCUOUS_ENABLE; - if (mcast_list->mode == MWIFIEX_MULTICAST_MODE) { + if (mcast_list->mode == MWIFIEX_ALL_MULTI_MODE) { dev_dbg(priv->adapter->dev, "info: Enabling All Multicast!\n"); priv->curr_pkt_filter |= @@ -117,20 +111,11 @@ dev_dbg(priv->adapter->dev, "info: Set multicast list=%d\n", mcast_list->num_multicast_addr); - /* Set multicast addresses to firmware */ - if (old_pkt_filter == priv->curr_pkt_filter) { - /* Send request to firmware */ - ret = mwifiex_send_cmd_async(priv, - HostCmd_CMD_MAC_MULTICAST_ADR, - HostCmd_ACT_GEN_SET, 0, - mcast_list); - } else { - /* Send request to firmware */ - ret = mwifiex_send_cmd_async(priv, - HostCmd_CMD_MAC_MULTICAST_ADR, - HostCmd_ACT_GEN_SET, 0, - mcast_list); - } + /* Send multicast addresses to firmware */ + ret = mwifiex_send_cmd_async(priv, + HostCmd_CMD_MAC_MULTICAST_ADR, + HostCmd_ACT_GEN_SET, 0, + mcast_list); } } } --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/Makefile +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/Makefile @@ -7,6 +7,7 @@ iwlwifi-objs += iwl-eeprom-read.o iwl-eeprom-parse.o iwlwifi-objs += pcie/drv.o pcie/rx.o pcie/tx.o pcie/trans.o iwlwifi-objs += pcie/1000.o pcie/2000.o pcie/5000.o pcie/6000.o +iwlwifi-objs += pcie/7000.o iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TRACING) += iwl-devtrace.o iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TESTMODE) += iwl-test.o --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/iwl-fh.h +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/iwl-fh.h @@ -410,6 +410,7 @@ * uCode/driver must write "1" in order to clear this flag */ #define FH_TSSR_TX_ERROR_REG (FH_TSSR_LOWER_BOUND + 0x018) +#define FH_TSSR_TX_MSG_CONFIG_REG (FH_TSSR_LOWER_BOUND + 0x008) #define FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(_chnl) ((1 << (_chnl)) << 16) --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/iwl-devtrace.h +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/iwl-devtrace.h @@ -349,25 +349,23 @@ TRACE_EVENT(iwlwifi_dev_hcmd, TP_PROTO(const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, - const void *hdr, size_t hdr_len), - TP_ARGS(dev, cmd, total_size, hdr, hdr_len), + struct iwl_cmd_header *hdr), + TP_ARGS(dev, cmd, total_size, hdr), TP_STRUCT__entry( DEV_ENTRY __dynamic_array(u8, hcmd, total_size) __field(u32, flags) ), TP_fast_assign( - int i, offset = hdr_len; + int i, offset = sizeof(*hdr); DEV_ASSIGN; __entry->flags = cmd->flags; - memcpy(__get_dynamic_array(hcmd), hdr, hdr_len); + memcpy(__get_dynamic_array(hcmd), hdr, sizeof(*hdr)); for (i = 0; i < IWL_MAX_CMD_TFDS; i++) { if (!cmd->len[i]) continue; - if (!(cmd->dataflags[i] & IWL_HCMD_DFL_NOCOPY)) - continue; memcpy((u8 *)__get_dynamic_array(hcmd) + offset, cmd->data[i], cmd->len[i]); offset += cmd->len[i]; --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/iwl-config.h +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/iwl-config.h @@ -83,6 +83,7 @@ IWL_DEVICE_FAMILY_6030, IWL_DEVICE_FAMILY_6050, IWL_DEVICE_FAMILY_6150, + IWL_DEVICE_FAMILY_7000, }; /* --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/iwl-prph.h +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/iwl-prph.h @@ -97,6 +97,9 @@ #define APMG_PCIDEV_STT_VAL_L1_ACT_DIS (0x00000800) +/* Device system time */ +#define DEVICE_SYSTEM_TIME_REG 0xA0206C + /** * Tx Scheduler * --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/dvm/sta.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/dvm/sta.c @@ -707,6 +707,7 @@ void iwl_restore_stations(struct iwl_priv *priv, struct iwl_rxon_context *ctx) { struct iwl_addsta_cmd sta_cmd; + static const struct iwl_link_quality_cmd zero_lq = {}; struct iwl_link_quality_cmd lq; int i; bool found = false; @@ -745,7 +746,9 @@ else memcpy(&lq, priv->stations[i].lq, sizeof(struct iwl_link_quality_cmd)); - send_lq = true; + + if (memcmp(&lq, &zero_lq, sizeof(lq))) + send_lq = true; } spin_unlock_bh(&priv->sta_lock); ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC); --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/dvm/rxon.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/dvm/rxon.c @@ -1377,7 +1377,7 @@ struct iwl_chain_noise_data *data = &priv->chain_noise_data; int ret; - if (!(priv->calib_disabled & IWL_CHAIN_NOISE_CALIB_DISABLED)) + if (priv->calib_disabled & IWL_CHAIN_NOISE_CALIB_DISABLED) return; if ((data->state == IWL_CHAIN_NOISE_ALIVE) && --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/dvm/ucode.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/dvm/ucode.c @@ -450,6 +450,8 @@ return -EIO; } + priv->ucode_loaded = true; + /* * This step takes a long time (60-80ms!!) and * WoWLAN image should be loaded quickly, so @@ -474,8 +476,6 @@ return ret; } - priv->ucode_loaded = true; - return 0; } --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/dvm/mac80211.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/dvm/mac80211.c @@ -786,9 +786,23 @@ mutex_lock(&priv->mutex); if (vif->type == NL80211_IFTYPE_STATION) { if (old_state == IEEE80211_STA_NOTEXIST && - new_state == IEEE80211_STA_NONE) + new_state == IEEE80211_STA_NONE) { + /* + * Firmware bug - it'll crash if the beacon interval is less + * than 16. We can't avoid connecting at all, so refuse the + * station state change, this will cause mac80211 to abandon + * attempts to connect to this AP, and eventually wpa_s will + * blacklist the AP... + */ + if (vif->bss_conf.beacon_int < 16) { + IWL_ERR(priv, + "AP %pM beacon interval is %d, refusing due to firmware bug!\n", + sta->addr, vif->bss_conf.beacon_int); + ret = -EINVAL; + goto out_unlock; + } op = ADD; - else if (old_state == IEEE80211_STA_NONE && + } else if (old_state == IEEE80211_STA_NONE && new_state == IEEE80211_STA_NOTEXIST) op = REMOVE; else if (old_state == IEEE80211_STA_AUTH && @@ -856,6 +870,7 @@ if (iwl_is_rfkill(priv)) ret = 0; +out_unlock: mutex_unlock(&priv->mutex); IWL_DEBUG_MAC80211(priv, "leave\n"); @@ -946,7 +961,10 @@ if (test_bit(STATUS_EXIT_PENDING, &priv->status)) return; - if (test_and_clear_bit(STATUS_CHANNEL_SWITCH_PENDING, &priv->status)) + if (!test_and_clear_bit(STATUS_CHANNEL_SWITCH_PENDING, &priv->status)) + return; + + if (ctx->vif) ieee80211_chswitch_done(ctx->vif, is_success); } --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/dvm/lib.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/dvm/lib.c @@ -1262,6 +1262,15 @@ } /* + * This can happen upon FW ASSERT: we clear the STATUS_FW_ERROR flag + * in iwl_down but cancel the workers only later. + */ + if (!priv->ucode_loaded) { + IWL_ERR(priv, "Fw not loaded - dropping CMD: %x\n", cmd->id); + return -EIO; + } + + /* * Synchronous commands from this op-mode must hold * the mutex, this ensures we don't try to send two * (or more) synchronous commands at a time. --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/dvm/debugfs.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/dvm/debugfs.c @@ -2237,15 +2237,15 @@ size_t count, loff_t *ppos) { struct iwl_priv *priv = file->private_data; - char *buf; - int pos = 0; - ssize_t ret = -ENOMEM; + char *buf = NULL; + ssize_t ret; - ret = pos = iwl_dump_nic_event_log(priv, true, &buf, true); - if (buf) { - ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos); - kfree(buf); - } + ret = iwl_dump_nic_event_log(priv, true, &buf, true); + if (ret < 0) + goto err; + ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); +err: + kfree(buf); return ret; } --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/pcie/cfg.h +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/pcie/cfg.h @@ -109,5 +109,7 @@ extern const struct iwl_cfg iwl105_bgn_cfg; extern const struct iwl_cfg iwl105_bgn_d_cfg; extern const struct iwl_cfg iwl135_bgn_cfg; +extern const struct iwl_cfg iwl7260_2ac_cfg; +extern const struct iwl_cfg iwl3160_ac_cfg; #endif /* __iwl_pci_h__ */ --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/pcie/internal.h +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/pcie/internal.h @@ -182,6 +182,15 @@ #define TFD_TX_CMD_SLOTS 256 #define TFD_CMD_SLOTS 32 +/* + * The FH will write back to the first TB only, so we need + * to copy some data into the buffer regardless of whether + * it should be mapped or not. This indicates how much to + * copy, even for HCMDs it must be big enough to fit the + * DRAM scratch from the TX cmd, at least 16 bytes. + */ +#define IWL_HCMD_MIN_COPY_SIZE 16 + struct iwl_pcie_txq_entry { struct iwl_device_cmd *cmd; struct iwl_device_cmd *copy_cmd; --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/pcie/drv.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/pcie/drv.c @@ -131,6 +131,7 @@ {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */ {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */ {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */ {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */ {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */ @@ -243,6 +244,7 @@ {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)}, {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)}, {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)}, + {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)}, /* 105 Series */ {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)}, @@ -255,6 +257,12 @@ {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)}, {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)}, +/* 7000 Series */ + {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_ac_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_ac_cfg)}, + {0} }; MODULE_DEVICE_TABLE(pci, iwl_hw_card_ids); --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/pcie/trans.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -1262,16 +1262,16 @@ spin_lock_init(&trans_pcie->irq_lock); init_waitqueue_head(&trans_pcie->ucode_write_waitq); - /* W/A - seems to solve weird behavior. We need to remove this if we - * don't want to stay in L1 all the time. This wastes a lot of power */ - pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 | - PCIE_LINK_STATE_CLKPM); - if (pci_enable_device(pdev)) { err = -ENODEV; goto out_no_pci; } + /* W/A - seems to solve weird behavior. We need to remove this if we + * don't want to stay in L1 all the time. This wastes a lot of power */ + pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 | + PCIE_LINK_STATE_CLKPM); + pci_set_master(pdev); err = pci_set_dma_mask(pdev, DMA_BIT_MASK(36)); --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/pcie/tx.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/pcie/tx.c @@ -574,10 +574,16 @@ spin_lock_bh(&txq->lock); while (q->write_ptr != q->read_ptr) { + IWL_DEBUG_TX_REPLY(trans, "Q %d Free %d\n", + txq_id, q->read_ptr); iwl_pcie_txq_free_tfd(trans, txq, dma_dir); q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd); } + txq->active = false; spin_unlock_bh(&txq->lock); + + /* just in case - this queue may have been stopped */ + iwl_wake_queue(trans, txq); } /* @@ -907,6 +913,12 @@ spin_lock(&txq->lock); + if (!txq->active) { + IWL_DEBUG_TX_QUEUES(trans, "Q %d inactive - ignoring idx %d\n", + txq_id, ssn); + goto out; + } + if (txq->q.read_ptr == tfd_num) goto out; @@ -1083,6 +1095,7 @@ (fifo << SCD_QUEUE_STTS_REG_POS_TXF) | (1 << SCD_QUEUE_STTS_REG_POS_WSL) | SCD_QUEUE_STTS_REG_MSK); + trans_pcie->txq[txq_id].active = true; IWL_DEBUG_TX_QUEUES(trans, "Activate queue %d on FIFO %d WrPtr: %d\n", txq_id, fifo, ssn & 0xff); } @@ -1131,10 +1144,12 @@ void *dup_buf = NULL; dma_addr_t phys_addr; int idx; - u16 copy_size, cmd_size; + u16 copy_size, cmd_size, dma_size; bool had_nocopy = false; int i; u32 cmd_pos; + const u8 *cmddata[IWL_MAX_CMD_TFDS]; + u16 cmdlen[IWL_MAX_CMD_TFDS]; copy_size = sizeof(out_cmd->hdr); cmd_size = sizeof(out_cmd->hdr); @@ -1143,8 +1158,23 @@ BUILD_BUG_ON(IWL_MAX_CMD_TFDS > IWL_NUM_OF_TBS - 1); for (i = 0; i < IWL_MAX_CMD_TFDS; i++) { + cmddata[i] = cmd->data[i]; + cmdlen[i] = cmd->len[i]; + if (!cmd->len[i]) continue; + + /* need at least IWL_HCMD_MIN_COPY_SIZE copied */ + if (copy_size < IWL_HCMD_MIN_COPY_SIZE) { + int copy = IWL_HCMD_MIN_COPY_SIZE - copy_size; + + if (copy > cmdlen[i]) + copy = cmdlen[i]; + cmdlen[i] -= copy; + cmddata[i] += copy; + copy_size += copy; + } + if (cmd->dataflags[i] & IWL_HCMD_DFL_NOCOPY) { had_nocopy = true; if (WARN_ON(cmd->dataflags[i] & IWL_HCMD_DFL_DUP)) { @@ -1164,7 +1194,7 @@ goto free_dup_buf; } - dup_buf = kmemdup(cmd->data[i], cmd->len[i], + dup_buf = kmemdup(cmddata[i], cmdlen[i], GFP_ATOMIC); if (!dup_buf) return -ENOMEM; @@ -1174,7 +1204,7 @@ idx = -EINVAL; goto free_dup_buf; } - copy_size += cmd->len[i]; + copy_size += cmdlen[i]; } cmd_size += cmd->len[i]; } @@ -1221,14 +1251,31 @@ /* and copy the data that needs to be copied */ cmd_pos = offsetof(struct iwl_device_cmd, payload); + copy_size = sizeof(out_cmd->hdr); for (i = 0; i < IWL_MAX_CMD_TFDS; i++) { + int copy = 0; + if (!cmd->len[i]) continue; - if (cmd->dataflags[i] & (IWL_HCMD_DFL_NOCOPY | - IWL_HCMD_DFL_DUP)) - break; - memcpy((u8 *)out_cmd + cmd_pos, cmd->data[i], cmd->len[i]); - cmd_pos += cmd->len[i]; + + /* need at least IWL_HCMD_MIN_COPY_SIZE copied */ + if (copy_size < IWL_HCMD_MIN_COPY_SIZE) { + copy = IWL_HCMD_MIN_COPY_SIZE - copy_size; + + if (copy > cmd->len[i]) + copy = cmd->len[i]; + } + + /* copy everything if not nocopy/dup */ + if (!(cmd->dataflags[i] & (IWL_HCMD_DFL_NOCOPY | + IWL_HCMD_DFL_DUP))) + copy = cmd->len[i]; + + if (copy) { + memcpy((u8 *)out_cmd + cmd_pos, cmd->data[i], copy); + cmd_pos += copy; + copy_size += copy; + } } WARN_ON_ONCE(txq->entries[idx].copy_cmd); @@ -1254,7 +1301,14 @@ out_cmd->hdr.cmd, le16_to_cpu(out_cmd->hdr.sequence), cmd_size, q->write_ptr, idx, trans_pcie->cmd_queue); - phys_addr = dma_map_single(trans->dev, &out_cmd->hdr, copy_size, + /* + * If the entire command is smaller than IWL_HCMD_MIN_COPY_SIZE, we must + * still map at least that many bytes for the hardware to write back to. + * We have enough space, so that's not a problem. + */ + dma_size = max_t(u16, copy_size, IWL_HCMD_MIN_COPY_SIZE); + + phys_addr = dma_map_single(trans->dev, &out_cmd->hdr, dma_size, DMA_BIDIRECTIONAL); if (unlikely(dma_mapping_error(trans->dev, phys_addr))) { idx = -ENOMEM; @@ -1262,14 +1316,15 @@ } dma_unmap_addr_set(out_meta, mapping, phys_addr); - dma_unmap_len_set(out_meta, len, copy_size); + dma_unmap_len_set(out_meta, len, dma_size); iwl_pcie_txq_build_tfd(trans, txq, phys_addr, copy_size, 1); + /* map the remaining (adjusted) nocopy/dup fragments */ for (i = 0; i < IWL_MAX_CMD_TFDS; i++) { - const void *data = cmd->data[i]; + const void *data = cmddata[i]; - if (!cmd->len[i]) + if (!cmdlen[i]) continue; if (!(cmd->dataflags[i] & (IWL_HCMD_DFL_NOCOPY | IWL_HCMD_DFL_DUP))) @@ -1277,7 +1332,7 @@ if (cmd->dataflags[i] & IWL_HCMD_DFL_DUP) data = dup_buf; phys_addr = dma_map_single(trans->dev, (void *)data, - cmd->len[i], DMA_BIDIRECTIONAL); + cmdlen[i], DMA_BIDIRECTIONAL); if (dma_mapping_error(trans->dev, phys_addr)) { iwl_pcie_tfd_unmap(trans, out_meta, &txq->tfds[q->write_ptr], @@ -1286,7 +1341,7 @@ goto out; } - iwl_pcie_txq_build_tfd(trans, txq, phys_addr, cmd->len[i], 0); + iwl_pcie_txq_build_tfd(trans, txq, phys_addr, cmdlen[i], 0); } out_meta->flags = cmd->flags; @@ -1296,8 +1351,7 @@ txq->need_update = 1; - trace_iwlwifi_dev_hcmd(trans->dev, cmd, cmd_size, - &out_cmd->hdr, copy_size); + trace_iwlwifi_dev_hcmd(trans->dev, cmd, cmd_size, &out_cmd->hdr); /* start timer if queue currently empty */ if (q->read_ptr == q->write_ptr && trans_pcie->wd_timeout) --- linux-ppc-3.8.0.orig/drivers/net/wireless/iwlwifi/pcie/7000.c +++ linux-ppc-3.8.0/drivers/net/wireless/iwlwifi/pcie/7000.c @@ -0,0 +1,111 @@ +/****************************************************************************** + * + * Copyright(c) 2008 - 2013 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * + * The full GNU General Public License is included in this distribution in the + * file called LICENSE. + * + * Contact Information: + * Intel Linux Wireless + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + * + *****************************************************************************/ + +#include +#include +#include "iwl-config.h" +#include "iwl-agn-hw.h" +#include "cfg.h" + +/* Highest firmware API version supported */ +#define IWL7260_UCODE_API_MAX 6 +#define IWL3160_UCODE_API_MAX 6 + +/* Oldest version we won't warn about */ +#define IWL7260_UCODE_API_OK 6 +#define IWL3160_UCODE_API_OK 6 + +/* Lowest firmware API version supported */ +#define IWL7260_UCODE_API_MIN 6 +#define IWL3160_UCODE_API_MIN 6 + +/* NVM versions */ +#define IWL7260_NVM_VERSION 0x0a1d +#define IWL7260_TX_POWER_VERSION 0xffff /* meaningless */ +#define IWL3160_NVM_VERSION 0x709 +#define IWL3160_TX_POWER_VERSION 0xffff /* meaningless */ + +#define IWL7260_FW_PRE "iwlwifi-7260-" +#define IWL7260_MODULE_FIRMWARE(api) IWL7260_FW_PRE __stringify(api) ".ucode" + +#define IWL3160_FW_PRE "iwlwifi-3160-" +#define IWL3160_MODULE_FIRMWARE(api) IWL3160_FW_PRE __stringify(api) ".ucode" + +static const struct iwl_base_params iwl7000_base_params = { + .eeprom_size = OTP_LOW_IMAGE_SIZE, + .num_of_queues = IWLAGN_NUM_QUEUES, + .pll_cfg_val = 0, + .shadow_ram_support = true, + .led_compensation = 57, + .adv_thermal_throttle = true, + .support_ct_kill_exit = true, + .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, + .chain_noise_scale = 1000, + .wd_timeout = IWL_LONG_WD_TIMEOUT, + .max_event_log_size = 512, + .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ +}; + +static const struct iwl_ht_params iwl7000_ht_params = { + .ht_greenfield_support = true, + .use_rts_for_aggregation = true, /* use rts/cts protection */ + .ht40_bands = BIT(IEEE80211_BAND_2GHZ) | BIT(IEEE80211_BAND_5GHZ), +}; + +#define IWL_DEVICE_7000 \ + .ucode_api_max = IWL7260_UCODE_API_MAX, \ + .ucode_api_ok = IWL7260_UCODE_API_OK, \ + .ucode_api_min = IWL7260_UCODE_API_MIN, \ + .device_family = IWL_DEVICE_FAMILY_7000, \ + .max_inst_size = IWL60_RTC_INST_SIZE, \ + .max_data_size = IWL60_RTC_DATA_SIZE, \ + .base_params = &iwl7000_base_params, \ + /* TODO: .bt_params? */ \ + .need_temp_offset_calib = true, \ + .led_mode = IWL_LED_RF_STATE, \ + .adv_pm = true \ + + +const struct iwl_cfg iwl7260_2ac_cfg = { + .name = "Intel(R) Dual Band Wireless AC7260", + .fw_name_pre = IWL7260_FW_PRE, + IWL_DEVICE_7000, + .ht_params = &iwl7000_ht_params, + .nvm_ver = IWL7260_NVM_VERSION, + .nvm_calib_ver = IWL7260_TX_POWER_VERSION, +}; + +const struct iwl_cfg iwl3160_ac_cfg = { + .name = "Intel(R) Dual Band Wireless AC3160", + .fw_name_pre = IWL3160_FW_PRE, + IWL_DEVICE_7000, + .ht_params = &iwl7000_ht_params, + .nvm_ver = IWL3160_NVM_VERSION, + .nvm_calib_ver = IWL3160_TX_POWER_VERSION, +}; + +MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_OK)); +MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL3160_UCODE_API_OK)); --- linux-ppc-3.8.0.orig/drivers/net/wireless/hostap/hostap_ioctl.c +++ linux-ppc-3.8.0/drivers/net/wireless/hostap/hostap_ioctl.c @@ -523,9 +523,9 @@ data->length = prism2_ap_get_sta_qual(local, addr, qual, IW_MAX_AP, 1); - memcpy(extra, &addr, sizeof(struct sockaddr) * data->length); + memcpy(extra, addr, sizeof(struct sockaddr) * data->length); data->flags = 1; /* has quality information */ - memcpy(extra + sizeof(struct sockaddr) * data->length, &qual, + memcpy(extra + sizeof(struct sockaddr) * data->length, qual, sizeof(struct iw_quality) * data->length); kfree(addr); --- linux-ppc-3.8.0.orig/drivers/net/wireless/hostap/hostap_hw.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/net/ppp/ppp_generic.c +++ linux-ppc-3.8.0/drivers/net/ppp/ppp_generic.c @@ -1058,7 +1058,15 @@ return stats64; } +static struct lock_class_key ppp_tx_busylock; +static int ppp_dev_init(struct net_device *dev) +{ + dev->qdisc_tx_busylock = &ppp_tx_busylock; + return 0; +} + static const struct net_device_ops ppp_netdev_ops = { + .ndo_init = ppp_dev_init, .ndo_start_xmit = ppp_start_xmit, .ndo_do_ioctl = ppp_net_ioctl, .ndo_get_stats64 = ppp_get_stats64, --- linux-ppc-3.8.0.orig/drivers/net/bonding/bond_sysfs.c +++ linux-ppc-3.8.0/drivers/net/bonding/bond_sysfs.c @@ -183,6 +183,11 @@ sprintf(linkname, "slave_%s", slave->name); ret = sysfs_create_link(&(master->dev.kobj), &(slave->dev.kobj), linkname); + + /* free the master link created earlier in case of error */ + if (ret) + sysfs_remove_link(&(slave->dev.kobj), "master"); + return ret; } @@ -522,7 +527,7 @@ goto out; } if (new_value < 0) { - pr_err("%s: Invalid arp_interval value %d not in range 1-%d; rejected.\n", + pr_err("%s: Invalid arp_interval value %d not in range 0-%d; rejected.\n", bond->dev->name, new_value, INT_MAX); ret = -EINVAL; goto out; @@ -537,14 +542,15 @@ pr_info("%s: Setting ARP monitoring interval to %d.\n", bond->dev->name, new_value); bond->params.arp_interval = new_value; - if (bond->params.miimon) { - pr_info("%s: ARP monitoring cannot be used with MII monitoring. %s Disabling MII monitoring.\n", - bond->dev->name, bond->dev->name); - bond->params.miimon = 0; - } - if (!bond->params.arp_targets[0]) { - pr_info("%s: ARP monitoring has been set up, but no ARP targets have been specified.\n", - bond->dev->name); + if (new_value) { + if (bond->params.miimon) { + pr_info("%s: ARP monitoring cannot be used with MII monitoring. %s Disabling MII monitoring.\n", + bond->dev->name, bond->dev->name); + bond->params.miimon = 0; + } + if (!bond->params.arp_targets[0]) + pr_info("%s: ARP monitoring has been set up, but no ARP targets have been specified.\n", + bond->dev->name); } if (bond->dev->flags & IFF_UP) { /* If the interface is up, we may need to fire off @@ -552,10 +558,13 @@ * timer will get fired off when the open function * is called. */ - cancel_delayed_work_sync(&bond->mii_work); - queue_delayed_work(bond->wq, &bond->arp_work, 0); + if (!new_value) { + cancel_delayed_work_sync(&bond->arp_work); + } else { + cancel_delayed_work_sync(&bond->mii_work); + queue_delayed_work(bond->wq, &bond->arp_work, 0); + } } - out: rtnl_unlock(); return ret; @@ -697,7 +706,7 @@ } if (new_value < 0) { pr_err("%s: Invalid down delay value %d not in range %d-%d; rejected.\n", - bond->dev->name, new_value, 1, INT_MAX); + bond->dev->name, new_value, 0, INT_MAX); ret = -EINVAL; goto out; } else { @@ -752,8 +761,8 @@ goto out; } if (new_value < 0) { - pr_err("%s: Invalid down delay value %d not in range %d-%d; rejected.\n", - bond->dev->name, new_value, 1, INT_MAX); + pr_err("%s: Invalid up delay value %d not in range %d-%d; rejected.\n", + bond->dev->name, new_value, 0, INT_MAX); ret = -EINVAL; goto out; } else { @@ -963,37 +972,37 @@ } if (new_value < 0) { pr_err("%s: Invalid miimon value %d not in range %d-%d; rejected.\n", - bond->dev->name, new_value, 1, INT_MAX); + bond->dev->name, new_value, 0, INT_MAX); ret = -EINVAL; goto out; - } else { - pr_info("%s: Setting MII monitoring interval to %d.\n", - bond->dev->name, new_value); - bond->params.miimon = new_value; - if (bond->params.updelay) - pr_info("%s: Note: Updating updelay (to %d) since it is a multiple of the miimon value.\n", - bond->dev->name, - bond->params.updelay * bond->params.miimon); - if (bond->params.downdelay) - pr_info("%s: Note: Updating downdelay (to %d) since it is a multiple of the miimon value.\n", - bond->dev->name, - bond->params.downdelay * bond->params.miimon); - if (bond->params.arp_interval) { - pr_info("%s: MII monitoring cannot be used with ARP monitoring. Disabling ARP monitoring...\n", - bond->dev->name); - bond->params.arp_interval = 0; - if (bond->params.arp_validate) { - bond->params.arp_validate = - BOND_ARP_VALIDATE_NONE; - } - } - - if (bond->dev->flags & IFF_UP) { - /* If the interface is up, we may need to fire off - * the MII timer. If the interface is down, the - * timer will get fired off when the open function - * is called. - */ + } + pr_info("%s: Setting MII monitoring interval to %d.\n", + bond->dev->name, new_value); + bond->params.miimon = new_value; + if (bond->params.updelay) + pr_info("%s: Note: Updating updelay (to %d) since it is a multiple of the miimon value.\n", + bond->dev->name, + bond->params.updelay * bond->params.miimon); + if (bond->params.downdelay) + pr_info("%s: Note: Updating downdelay (to %d) since it is a multiple of the miimon value.\n", + bond->dev->name, + bond->params.downdelay * bond->params.miimon); + if (new_value && bond->params.arp_interval) { + pr_info("%s: MII monitoring cannot be used with ARP monitoring. Disabling ARP monitoring...\n", + bond->dev->name); + bond->params.arp_interval = 0; + if (bond->params.arp_validate) + bond->params.arp_validate = BOND_ARP_VALIDATE_NONE; + } + if (bond->dev->flags & IFF_UP) { + /* If the interface is up, we may need to fire off + * the MII timer. If the interface is down, the + * timer will get fired off when the open function + * is called. + */ + if (!new_value) { + cancel_delayed_work_sync(&bond->mii_work); + } else { cancel_delayed_work_sync(&bond->arp_work); queue_delayed_work(bond->wq, &bond->mii_work, 0); } --- linux-ppc-3.8.0.orig/drivers/net/bonding/bond_main.c +++ linux-ppc-3.8.0/drivers/net/bonding/bond_main.c @@ -1728,6 +1728,8 @@ bond_compute_features(bond); + bond_update_speed_duplex(new_slave); + read_lock(&bond->lock); new_slave->last_arp_rx = jiffies - @@ -1780,8 +1782,6 @@ new_slave->link == BOND_LINK_DOWN ? "DOWN" : (new_slave->link == BOND_LINK_UP ? "UP" : "BACK")); - bond_update_speed_duplex(new_slave); - if (USES_PRIMARY(bond->params.mode) && bond->params.primary[0]) { /* if there is a primary slave, remember it */ if (strcmp(bond->params.primary, new_slave->dev->name) == 0) { @@ -1888,6 +1888,7 @@ write_unlock_bh(&bond->lock); err_close: + slave_dev->priv_flags &= ~IFF_BONDING; dev_close(slave_dev); err_unset_master: @@ -1943,7 +1944,6 @@ } block_netpoll_tx(); - call_netdevice_notifiers(NETDEV_RELEASE, bond_dev); write_lock_bh(&bond->lock); slave = bond_get_slave_by_dev(bond, slave_dev); @@ -1956,12 +1956,11 @@ return -EINVAL; } + write_unlock_bh(&bond->lock); /* unregister rx_handler early so bond_handle_frame wouldn't be called * for this slave anymore. */ netdev_rx_handler_unregister(slave_dev); - write_unlock_bh(&bond->lock); - synchronize_net(); write_lock_bh(&bond->lock); if (!bond->params.fail_over_mac) { @@ -2047,8 +2046,10 @@ write_unlock_bh(&bond->lock); unblock_netpoll_tx(); - if (bond->slave_cnt == 0) + if (bond->slave_cnt == 0) { call_netdevice_notifiers(NETDEV_CHANGEADDR, bond->dev); + call_netdevice_notifiers(NETDEV_RELEASE, bond->dev); + } bond_compute_features(bond); if (!(bond_dev->features & NETIF_F_VLAN_CHALLENGED) && @@ -2462,8 +2463,6 @@ bond_set_backup_slave(slave); } - bond_update_speed_duplex(slave); - pr_info("%s: link status definitely up for interface %s, %u Mbps %s duplex.\n", bond->dev->name, slave->dev->name, slave->speed, slave->duplex ? "full" : "half"); @@ -3381,20 +3380,22 @@ */ static int bond_xmit_hash_policy_l23(struct sk_buff *skb, int count) { - struct ethhdr *data = (struct ethhdr *)skb->data; - struct iphdr *iph; - struct ipv6hdr *ipv6h; + const struct ethhdr *data; + const struct iphdr *iph; + const struct ipv6hdr *ipv6h; u32 v6hash; - __be32 *s, *d; + const __be32 *s, *d; if (skb->protocol == htons(ETH_P_IP) && - skb_network_header_len(skb) >= sizeof(*iph)) { + pskb_network_may_pull(skb, sizeof(*iph))) { iph = ip_hdr(skb); + data = (struct ethhdr *)skb->data; return ((ntohl(iph->saddr ^ iph->daddr) & 0xffff) ^ (data->h_dest[5] ^ data->h_source[5])) % count; } else if (skb->protocol == htons(ETH_P_IPV6) && - skb_network_header_len(skb) >= sizeof(*ipv6h)) { + pskb_network_may_pull(skb, sizeof(*ipv6h))) { ipv6h = ipv6_hdr(skb); + data = (struct ethhdr *)skb->data; s = &ipv6h->saddr.s6_addr32[0]; d = &ipv6h->daddr.s6_addr32[0]; v6hash = (s[1] ^ d[1]) ^ (s[2] ^ d[2]) ^ (s[3] ^ d[3]); @@ -3413,33 +3414,36 @@ static int bond_xmit_hash_policy_l34(struct sk_buff *skb, int count) { u32 layer4_xor = 0; - struct iphdr *iph; - struct ipv6hdr *ipv6h; - __be32 *s, *d; - __be16 *layer4hdr; + const struct iphdr *iph; + const struct ipv6hdr *ipv6h; + const __be32 *s, *d; + const __be16 *l4 = NULL; + __be16 _l4[2]; + int noff = skb_network_offset(skb); + int poff; if (skb->protocol == htons(ETH_P_IP) && - skb_network_header_len(skb) >= sizeof(*iph)) { + pskb_may_pull(skb, noff + sizeof(*iph))) { iph = ip_hdr(skb); - if (!ip_is_fragment(iph) && - (iph->protocol == IPPROTO_TCP || - iph->protocol == IPPROTO_UDP) && - (skb_headlen(skb) - skb_network_offset(skb) >= - iph->ihl * sizeof(u32) + sizeof(*layer4hdr) * 2)) { - layer4hdr = (__be16 *)((u32 *)iph + iph->ihl); - layer4_xor = ntohs(*layer4hdr ^ *(layer4hdr + 1)); + poff = proto_ports_offset(iph->protocol); + + if (!ip_is_fragment(iph) && poff >= 0) { + l4 = skb_header_pointer(skb, noff + (iph->ihl << 2) + poff, + sizeof(_l4), &_l4); + if (l4) + layer4_xor = ntohs(l4[0] ^ l4[1]); } return (layer4_xor ^ ((ntohl(iph->saddr ^ iph->daddr)) & 0xffff)) % count; } else if (skb->protocol == htons(ETH_P_IPV6) && - skb_network_header_len(skb) >= sizeof(*ipv6h)) { + pskb_may_pull(skb, noff + sizeof(*ipv6h))) { ipv6h = ipv6_hdr(skb); - if ((ipv6h->nexthdr == IPPROTO_TCP || - ipv6h->nexthdr == IPPROTO_UDP) && - (skb_headlen(skb) - skb_network_offset(skb) >= - sizeof(*ipv6h) + sizeof(*layer4hdr) * 2)) { - layer4hdr = (__be16 *)(ipv6h + 1); - layer4_xor = ntohs(*layer4hdr ^ *(layer4hdr + 1)); + poff = proto_ports_offset(ipv6h->nexthdr); + if (poff >= 0) { + l4 = skb_header_pointer(skb, noff + sizeof(*ipv6h) + poff, + sizeof(_l4), &_l4); + if (l4) + layer4_xor = ntohs(l4[0] ^ l4[1]); } s = &ipv6h->saddr.s6_addr32[0]; d = &ipv6h->daddr.s6_addr32[0]; @@ -4921,9 +4925,18 @@ static void __net_exit bond_net_exit(struct net *net) { struct bond_net *bn = net_generic(net, bond_net_id); + struct bonding *bond, *tmp_bond; + LIST_HEAD(list); bond_destroy_sysfs(bn); bond_destroy_proc_dir(bn); + + /* Kill off any bonds created after unregistering bond rtnl ops */ + rtnl_lock(); + list_for_each_entry_safe(bond, tmp_bond, &bn->dev_list, bond_list) + unregister_netdevice_queue(bond->dev, &list); + unregister_netdevice_many(&list); + rtnl_unlock(); } static struct pernet_operations bond_net_ops = { --- linux-ppc-3.8.0.orig/drivers/net/can/mcp251x.c +++ linux-ppc-3.8.0/drivers/net/can/mcp251x.c @@ -922,6 +922,7 @@ struct mcp251x_priv *priv = netdev_priv(net); struct spi_device *spi = priv->spi; struct mcp251x_platform_data *pdata = spi->dev.platform_data; + unsigned long flags; int ret; ret = open_candev(net); @@ -938,9 +939,14 @@ priv->tx_skb = NULL; priv->tx_len = 0; + flags = IRQF_ONESHOT; + if (pdata->irq_flags) + flags |= pdata->irq_flags; + else + flags |= IRQF_TRIGGER_FALLING; + ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist, - pdata->irq_flags ? pdata->irq_flags : IRQF_TRIGGER_FALLING, - DEVICE_NAME, priv); + flags, DEVICE_NAME, priv); if (ret) { dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq); if (pdata->transceiver_enable) --- linux-ppc-3.8.0.orig/drivers/net/can/sja1000/sja1000.c +++ linux-ppc-3.8.0/drivers/net/can/sja1000/sja1000.c @@ -91,7 +91,7 @@ */ spin_lock_irqsave(&priv->cmdreg_lock, flags); priv->write_reg(priv, REG_CMR, val); - priv->read_reg(priv, REG_SR); + priv->read_reg(priv, SJA1000_REG_SR); spin_unlock_irqrestore(&priv->cmdreg_lock, flags); } @@ -499,7 +499,7 @@ while ((isrc = priv->read_reg(priv, REG_IR)) && (n < SJA1000_MAX_IRQ)) { n++; - status = priv->read_reg(priv, REG_SR); + status = priv->read_reg(priv, SJA1000_REG_SR); /* check for absent controller due to hw unplug */ if (status == 0xFF && sja1000_is_absent(priv)) return IRQ_NONE; @@ -526,7 +526,7 @@ /* receive interrupt */ while (status & SR_RBS) { sja1000_rx(dev); - status = priv->read_reg(priv, REG_SR); + status = priv->read_reg(priv, SJA1000_REG_SR); /* check for absent controller */ if (status == 0xFF && sja1000_is_absent(priv)) return IRQ_NONE; --- linux-ppc-3.8.0.orig/drivers/net/can/sja1000/sja1000.h +++ linux-ppc-3.8.0/drivers/net/can/sja1000/sja1000.h @@ -56,7 +56,7 @@ /* SJA1000 registers - manual section 6.4 (Pelican Mode) */ #define REG_MOD 0x00 #define REG_CMR 0x01 -#define REG_SR 0x02 +#define SJA1000_REG_SR 0x02 #define REG_IR 0x03 #define REG_IER 0x04 #define REG_ALC 0x0B --- linux-ppc-3.8.0.orig/drivers/net/can/sja1000/plx_pci.c +++ linux-ppc-3.8.0/drivers/net/can/sja1000/plx_pci.c @@ -348,7 +348,7 @@ */ if ((priv->read_reg(priv, REG_CR) & REG_CR_BASICCAN_INITIAL_MASK) == REG_CR_BASICCAN_INITIAL && - (priv->read_reg(priv, REG_SR) == REG_SR_BASICCAN_INITIAL) && + (priv->read_reg(priv, SJA1000_REG_SR) == REG_SR_BASICCAN_INITIAL) && (priv->read_reg(priv, REG_IR) == REG_IR_BASICCAN_INITIAL)) flag = 1; @@ -360,7 +360,7 @@ * See states on p. 23 of the Datasheet. */ if (priv->read_reg(priv, REG_MOD) == REG_MOD_PELICAN_INITIAL && - priv->read_reg(priv, REG_SR) == REG_SR_PELICAN_INITIAL && + priv->read_reg(priv, SJA1000_REG_SR) == REG_SR_PELICAN_INITIAL && priv->read_reg(priv, REG_IR) == REG_IR_PELICAN_INITIAL) return flag; --- linux-ppc-3.8.0.orig/drivers/net/can/sja1000/sja1000_of_platform.c +++ linux-ppc-3.8.0/drivers/net/can/sja1000/sja1000_of_platform.c @@ -96,8 +96,8 @@ struct net_device *dev; struct sja1000_priv *priv; struct resource res; - const u32 *prop; - int err, irq, res_size, prop_size; + u32 prop; + int err, irq, res_size; void __iomem *base; err = of_address_to_resource(np, 0, &res); @@ -138,27 +138,27 @@ priv->read_reg = sja1000_ofp_read_reg; priv->write_reg = sja1000_ofp_write_reg; - prop = of_get_property(np, "nxp,external-clock-frequency", &prop_size); - if (prop && (prop_size == sizeof(u32))) - priv->can.clock.freq = *prop / 2; + err = of_property_read_u32(np, "nxp,external-clock-frequency", &prop); + if (!err) + priv->can.clock.freq = prop / 2; else priv->can.clock.freq = SJA1000_OFP_CAN_CLOCK; /* default */ - prop = of_get_property(np, "nxp,tx-output-mode", &prop_size); - if (prop && (prop_size == sizeof(u32))) - priv->ocr |= *prop & OCR_MODE_MASK; + err = of_property_read_u32(np, "nxp,tx-output-mode", &prop); + if (!err) + priv->ocr |= prop & OCR_MODE_MASK; else priv->ocr |= OCR_MODE_NORMAL; /* default */ - prop = of_get_property(np, "nxp,tx-output-config", &prop_size); - if (prop && (prop_size == sizeof(u32))) - priv->ocr |= (*prop << OCR_TX_SHIFT) & OCR_TX_MASK; + err = of_property_read_u32(np, "nxp,tx-output-config", &prop); + if (!err) + priv->ocr |= (prop << OCR_TX_SHIFT) & OCR_TX_MASK; else priv->ocr |= OCR_TX0_PULLDOWN; /* default */ - prop = of_get_property(np, "nxp,clock-out-frequency", &prop_size); - if (prop && (prop_size == sizeof(u32)) && *prop) { - u32 divider = priv->can.clock.freq * 2 / *prop; + err = of_property_read_u32(np, "nxp,clock-out-frequency", &prop); + if (!err && prop) { + u32 divider = priv->can.clock.freq * 2 / prop; if (divider > 1) priv->cdr |= divider / 2 - 1; @@ -168,8 +168,7 @@ priv->cdr |= CDR_CLK_OFF; /* default */ } - prop = of_get_property(np, "nxp,no-comparator-bypass", NULL); - if (!prop) + if (!of_property_read_bool(np, "nxp,no-comparator-bypass")) priv->cdr |= CDR_CBP; /* default */ priv->irq_flags = IRQF_SHARED; --- linux-ppc-3.8.0.orig/drivers/net/can/usb/kvaser_usb.c +++ linux-ppc-3.8.0/drivers/net/can/usb/kvaser_usb.c @@ -136,6 +136,9 @@ #define KVASER_CTRL_MODE_SELFRECEPTION 3 #define KVASER_CTRL_MODE_OFF 4 +/* log message */ +#define KVASER_EXTENDED_FRAME BIT(31) + struct kvaser_msg_simple { u8 tid; u8 channel; @@ -818,8 +821,13 @@ priv = dev->nets[channel]; stats = &priv->netdev->stats; - if (msg->u.rx_can.flag & (MSG_FLAG_ERROR_FRAME | MSG_FLAG_NERR | - MSG_FLAG_OVERRUN)) { + if ((msg->u.rx_can.flag & MSG_FLAG_ERROR_FRAME) && + (msg->id == CMD_LOG_MESSAGE)) { + kvaser_usb_rx_error(dev, msg); + return; + } else if (msg->u.rx_can.flag & (MSG_FLAG_ERROR_FRAME | + MSG_FLAG_NERR | + MSG_FLAG_OVERRUN)) { kvaser_usb_rx_can_err(priv, msg); return; } else if (msg->u.rx_can.flag & ~MSG_FLAG_REMOTE_FRAME) { @@ -835,22 +843,40 @@ return; } - cf->can_id = ((msg->u.rx_can.msg[0] & 0x1f) << 6) | - (msg->u.rx_can.msg[1] & 0x3f); - cf->can_dlc = get_can_dlc(msg->u.rx_can.msg[5]); - - if (msg->id == CMD_RX_EXT_MESSAGE) { - cf->can_id <<= 18; - cf->can_id |= ((msg->u.rx_can.msg[2] & 0x0f) << 14) | - ((msg->u.rx_can.msg[3] & 0xff) << 6) | - (msg->u.rx_can.msg[4] & 0x3f); - cf->can_id |= CAN_EFF_FLAG; - } - - if (msg->u.rx_can.flag & MSG_FLAG_REMOTE_FRAME) - cf->can_id |= CAN_RTR_FLAG; - else - memcpy(cf->data, &msg->u.rx_can.msg[6], cf->can_dlc); + if (msg->id == CMD_LOG_MESSAGE) { + cf->can_id = le32_to_cpu(msg->u.log_message.id); + if (cf->can_id & KVASER_EXTENDED_FRAME) + cf->can_id &= CAN_EFF_MASK | CAN_EFF_FLAG; + else + cf->can_id &= CAN_SFF_MASK; + + cf->can_dlc = get_can_dlc(msg->u.log_message.dlc); + + if (msg->u.log_message.flags & MSG_FLAG_REMOTE_FRAME) + cf->can_id |= CAN_RTR_FLAG; + else + memcpy(cf->data, &msg->u.log_message.data, + cf->can_dlc); + } else { + cf->can_id = ((msg->u.rx_can.msg[0] & 0x1f) << 6) | + (msg->u.rx_can.msg[1] & 0x3f); + + if (msg->id == CMD_RX_EXT_MESSAGE) { + cf->can_id <<= 18; + cf->can_id |= ((msg->u.rx_can.msg[2] & 0x0f) << 14) | + ((msg->u.rx_can.msg[3] & 0xff) << 6) | + (msg->u.rx_can.msg[4] & 0x3f); + cf->can_id |= CAN_EFF_FLAG; + } + + cf->can_dlc = get_can_dlc(msg->u.rx_can.msg[5]); + + if (msg->u.rx_can.flag & MSG_FLAG_REMOTE_FRAME) + cf->can_id |= CAN_RTR_FLAG; + else + memcpy(cf->data, &msg->u.rx_can.msg[6], + cf->can_dlc); + } netif_rx(skb); @@ -912,6 +938,7 @@ case CMD_RX_STD_MESSAGE: case CMD_RX_EXT_MESSAGE: + case CMD_LOG_MESSAGE: kvaser_usb_rx_can_msg(dev, msg); break; @@ -920,11 +947,6 @@ kvaser_usb_rx_error(dev, msg); break; - case CMD_LOG_MESSAGE: - if (msg->u.log_message.flags & MSG_FLAG_ERROR_FRAME) - kvaser_usb_rx_error(dev, msg); - break; - case CMD_TX_ACKNOWLEDGE: kvaser_usb_tx_acknowledge(dev, msg); break; --- linux-ppc-3.8.0.orig/drivers/net/can/usb/peak_usb/pcan_usb.c +++ linux-ppc-3.8.0/drivers/net/can/usb/peak_usb/pcan_usb.c @@ -649,7 +649,7 @@ if ((mc->ptr + rec_len) > mc->end) goto decode_failed; - memcpy(cf->data, mc->ptr, rec_len); + memcpy(cf->data, mc->ptr, cf->can_dlc); mc->ptr += rec_len; } --- linux-ppc-3.8.0.orig/drivers/net/dpa/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/Makefile @@ -0,0 +1,19 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +EXTRA_CFLAGS += -I$(NET_DPA) + +#Netcomm SW tree +obj-$(CONFIG_FSL_FMAN) += NetCommSw/ +obj-$(CONFIG_FSL_DPA_1588) += dpaa_1588.o +obj-$(CONFIG_DPA) += fsl-mac.o fsl-dpa.o +obj-$(CONFIG_DPA_OFFLINE_PORTS) += fsl-oh.o + +fsl-dpa-objs := dpa-ethtool.o dpaa_eth.o xgmac_mdio.o +fsl-mac-objs := mac.o mac-api.o +fsl-oh-objs := offline_port.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/offline_port.h +++ linux-ppc-3.8.0/drivers/net/dpa/offline_port.h @@ -0,0 +1,45 @@ +/* + * Copyright 2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __OFFLINE_PORT_H +#define __OFFLINE_PORT_H + +#include "fsl_fman.h" + +/* OH port configuration */ +struct dpa_oh_config_s { + uint32_t error_fqid; + uint32_t default_fqid; + struct fm_port *oh_port; +}; + +#endif /* __OFFLINE_PORT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/dpaa_1588.h +++ linux-ppc-3.8.0/drivers/net/dpa/dpaa_1588.h @@ -0,0 +1,141 @@ +/* + * drivers/net/dpa/dpaa_1588.h + * + * Copyright (C) 2011 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef __DPAA_1588_H__ +#define __DPAA_1588_H__ + +#include +#include +#include +#include + +#define DEFAULT_PTP_RX_BUF_SZ 2048 +#define DEFAULT_PTP_TX_BUF_SZ 512 + +/* 1588 private ioctl calls */ +#define PTP_ENBL_TXTS_IOCTL SIOCDEVPRIVATE +#define PTP_DSBL_TXTS_IOCTL (SIOCDEVPRIVATE + 1) +#define PTP_ENBL_RXTS_IOCTL (SIOCDEVPRIVATE + 2) +#define PTP_DSBL_RXTS_IOCTL (SIOCDEVPRIVATE + 3) +#define PTP_GET_TX_TIMESTAMP (SIOCDEVPRIVATE + 4) +#define PTP_GET_RX_TIMESTAMP (SIOCDEVPRIVATE + 5) +#define PTP_SET_TIME (SIOCDEVPRIVATE + 6) +#define PTP_GET_TIME (SIOCDEVPRIVATE + 7) +#define PTP_SET_FIPER_ALARM (SIOCDEVPRIVATE + 8) +#define PTP_SET_ADJ (SIOCDEVPRIVATE + 9) +#define PTP_GET_ADJ (SIOCDEVPRIVATE + 10) +#define PTP_CLEANUP_TS (SIOCDEVPRIVATE + 11) + +/* PTP V2 message type */ +enum { + PTP_MSGTYPE_SYNC = 0x0, + PTP_MSGTYPE_DELREQ = 0x1, + PTP_MSGTYPE_PDELREQ = 0x2, + PTP_MSGTYPE_PDELRESP = 0x3, + PTP_MSGTYPE_FLWUP = 0x8, + PTP_MSGTYPE_DELRESP = 0x9, + PTP_MSGTYPE_PDELRES_FLWUP = 0xA, + PTP_MSGTYPE_ANNOUNCE = 0xB, + PTP_MSGTYPE_SGNLNG = 0xC, + PTP_MSGTYPE_MNGMNT = 0xD, +}; + +/* Byte offset of data in the PTP V2 headers */ +#define PTP_OFFS_MSG_TYPE 0 +#define PTP_OFFS_VER_PTP 1 +#define PTP_OFFS_MSG_LEN 2 +#define PTP_OFFS_DOM_NMB 4 +#define PTP_OFFS_FLAGS 6 +#define PTP_OFFS_CORFIELD 8 +#define PTP_OFFS_SRCPRTID 20 +#define PTP_OFFS_SEQ_ID 30 +#define PTP_OFFS_CTRL 32 +#define PTP_OFFS_LOGMEAN 33 + +#define PTP_IP_OFFS 14 +#define PTP_UDP_OFFS 34 +#define PTP_HEADER_OFFS 42 +#define PTP_MSG_TYPE_OFFS (PTP_HEADER_OFFS + PTP_OFFS_MSG_TYPE) +#define PTP_SPORT_ID_OFFS (PTP_HEADER_OFFS + PTP_OFFS_SRCPRTID) +#define PTP_SEQ_ID_OFFS (PTP_HEADER_OFFS + PTP_OFFS_SEQ_ID) +#define PTP_CTRL_OFFS (PTP_HEADER_OFFS + PTP_OFFS_CTRL) + +/* 1588-2008 network protocol enumeration values */ +#define DPA_PTP_PROT_IPV4 1 +#define DPA_PTP_PROT_IPV6 2 +#define DPA_PTP_PROT_802_3 3 +#define DPA_PTP_PROT_DONTCARE 0xFFFF + +#define DPA_PTP_SOURCE_PORT_LENGTH 10 +#define DPA_PTP_HEADER_SZE 34 +#define DPA_ETYPE_LEN 2 +#define DPA_VLAN_TAG_LEN 4 + +#define DPA_PTP_TIMESTAMP_OFFSET 0x30 +#define DPA_PTP_NOMINAL_FREQ_PERIOD 0xa /* 10ns -> 100M */ +#define NANOSEC_PER_SECOND 1000000000 + +/* Struct needed to identify a timestamp */ +struct dpa_ptp_ident { + u8 version; + u8 msg_type; + u16 netw_prot; + u16 seq_id; + u8 snd_port_id[DPA_PTP_SOURCE_PORT_LENGTH]; +}; + +/* Timestamp format in 1588-2008 */ +struct dpa_ptp_time { + u64 sec; /* just 48 bit used */ + u32 nsec; +}; + +/* needed for timestamp data over ioctl */ +struct dpa_ptp_data { + struct dpa_ptp_ident ident; + struct dpa_ptp_time ts; +}; + +struct dpa_ptp_circ_buf { + struct circ_buf circ_buf; + u32 size; + spinlock_t ptp_lock; +}; + +/* PTP TSU control structure */ +struct dpa_ptp_tsu { + struct dpa_priv_s *dpa_priv; + bool valid; + struct dpa_ptp_circ_buf rx_timestamps; + struct dpa_ptp_circ_buf tx_timestamps; + + /* HW timestamping over ioctl enabled flag */ + int hwts_tx_en_ioctl; + int hwts_rx_en_ioctl; +}; + +extern int dpa_ptp_init(struct dpa_priv_s *priv); +extern void dpa_ptp_cleanup(struct dpa_priv_s *priv); +extern void dpa_ptp_store_txstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd); +extern void dpa_ptp_store_rxstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd); +extern int dpa_ioctl_1588(struct net_device *dev, struct ifreq *ifr, int cmd); +#endif --- linux-ppc-3.8.0.orig/drivers/net/dpa/mac.c +++ linux-ppc-3.8.0/drivers/net/dpa/mac.c @@ -0,0 +1,427 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include + +#include "dpaa_eth-common.h" + +#include "lnxwrp_fm_ext.h" + +#include "mac.h" + +#define DTSEC_SUPPORTED \ + (SUPPORTED_10baseT_Half \ + | SUPPORTED_10baseT_Full \ + | SUPPORTED_100baseT_Half \ + | SUPPORTED_100baseT_Full \ + | SUPPORTED_Autoneg \ + | SUPPORTED_MII) + +static const char phy_str[][11] = +{ + [PHY_INTERFACE_MODE_MII] = "mii", + [PHY_INTERFACE_MODE_GMII] = "gmii", + [PHY_INTERFACE_MODE_SGMII] = "sgmii", + [PHY_INTERFACE_MODE_TBI] = "tbi", + [PHY_INTERFACE_MODE_RMII] = "rmii", + [PHY_INTERFACE_MODE_RGMII] = "rgmii", + [PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id", + [PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid", + [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid", + [PHY_INTERFACE_MODE_RTBI] = "rtbi", + [PHY_INTERFACE_MODE_XGMII] = "xgmii" +}; + +static phy_interface_t __pure __attribute__((nonnull)) str2phy(const char *str) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(phy_str); i++) + if (strcmp(str, phy_str[i]) == 0) + return (phy_interface_t)i; + + return PHY_INTERFACE_MODE_MII; +} + +static const uint16_t phy2speed[] = +{ + [PHY_INTERFACE_MODE_MII] = SPEED_100, + [PHY_INTERFACE_MODE_GMII] = SPEED_1000, + [PHY_INTERFACE_MODE_SGMII] = SPEED_1000, + [PHY_INTERFACE_MODE_TBI] = SPEED_1000, + [PHY_INTERFACE_MODE_RMII] = SPEED_100, + [PHY_INTERFACE_MODE_RGMII] = SPEED_1000, + [PHY_INTERFACE_MODE_RGMII_ID] = SPEED_1000, + [PHY_INTERFACE_MODE_RGMII_RXID] = SPEED_1000, + [PHY_INTERFACE_MODE_RGMII_TXID] = SPEED_1000, + [PHY_INTERFACE_MODE_RTBI] = SPEED_1000, + [PHY_INTERFACE_MODE_XGMII] = SPEED_10000 +}; + +static struct mac_device * __cold +alloc_macdev(struct device *dev, size_t sizeof_priv, void (*setup)(struct mac_device *mac_dev)) +{ + struct mac_device *mac_dev; + + mac_dev = devm_kzalloc(dev, sizeof(*mac_dev) + sizeof_priv, GFP_KERNEL); + if (unlikely(mac_dev == NULL)) + mac_dev = ERR_PTR(-ENOMEM); + else { + mac_dev->dev = dev; + dev_set_drvdata(dev, mac_dev); + setup(mac_dev); + } + + return mac_dev; +} + +static int __cold free_macdev(struct mac_device *mac_dev) +{ + dev_set_drvdata(mac_dev->dev, NULL); + + return mac_dev->uninit(mac_dev); +} + +static const struct of_device_id mac_match[] = { + [DTSEC] = { + .compatible = "fsl,fman-1g-mac" + }, + [XGMAC] = { + .compatible = "fsl,fman-10g-mac" + }, + {} +}; +MODULE_DEVICE_TABLE(of, mac_match); + +static int __cold mac_probe(struct platform_device *_of_dev) +{ + int _errno, i, lenp; + struct device *dev; + struct device_node *mac_node, *dev_node; + struct mac_device *mac_dev; + struct platform_device *of_dev; + struct resource res; + const uint8_t *mac_addr; + const char *char_prop; + const phandle *phandle_prop; + const uint32_t *uint32_prop; + const struct of_device_id *match; + + dev = &_of_dev->dev; + mac_node = dev->of_node; + + match = of_match_device(mac_match, dev); + if (!match) + return -EINVAL; + + for (i = 0; i < ARRAY_SIZE(mac_match) - 1 && match != mac_match + i; i++); + BUG_ON(i >= ARRAY_SIZE(mac_match) - 1); + + mac_dev = alloc_macdev(dev, mac_sizeof_priv[i], mac_setup[i]); + if (IS_ERR(mac_dev)) { + _errno = PTR_ERR(mac_dev); + dpaa_eth_err(dev, "alloc_macdev() = %d\n", _errno); + goto _return; + } + + INIT_LIST_HEAD(&mac_dev->mc_addr_list); + + /* Get the FM node */ + dev_node = of_get_parent(mac_node); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_get_parent(%s) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + + of_dev = of_find_device_by_node(dev_node); + if (unlikely(of_dev == NULL)) { + dpaa_eth_err(dev, "of_find_device_by_node(%s) failed\n", + dev_node->full_name); + _errno = -EINVAL; + goto _return_of_node_put; + } + + mac_dev->fm_dev = fm_bind(&of_dev->dev); + if (unlikely(mac_dev->fm_dev == NULL)) { + dpaa_eth_err(dev, "fm_bind(%s) failed\n", dev_node->full_name); + _errno = -ENODEV; + goto _return_of_node_put; + } + + mac_dev->fm = (void *)fm_get_handle(mac_dev->fm_dev); + of_node_put(dev_node); + + /* Get the address of the memory mapped registers */ + _errno = of_address_to_resource(mac_node, 0, &res); + if (unlikely(_errno < 0)) { + dpaa_eth_err(dev, "of_address_to_resource(%s) = %d\n", + mac_node->full_name, _errno); + goto _return_dev_set_drvdata; + } + + mac_dev->res = __devm_request_region( + dev, + fm_get_mem_region(mac_dev->fm_dev), + res.start, res.end + 1 - res.start, "mac"); + if (unlikely(mac_dev->res == NULL)) { + dpaa_eth_err(dev, "__devm_request_mem_region(mac) failed\n"); + _errno = -EBUSY; + goto _return_dev_set_drvdata; + } + + mac_dev->vaddr = devm_ioremap(dev, mac_dev->res->start, + mac_dev->res->end + 1 - mac_dev->res->start); + if (unlikely(mac_dev->vaddr == NULL)) { + dpaa_eth_err(dev, "devm_ioremap() failed\n"); + _errno = -EIO; + goto _return_dev_set_drvdata; + } + + /* + * XXX: Warning, future versions of Linux will most likely not even + * call the driver code to allow us to override the TBIPA value, + * we'll need to address this when we move to newer kernel rev + */ +#define TBIPA_OFFSET 0x1c +#define TBIPA_DEFAULT_ADDR 5 + mac_dev->tbi_node = of_parse_phandle(mac_node, "tbi-handle", 0); + if (mac_dev->tbi_node) { + u32 tbiaddr = TBIPA_DEFAULT_ADDR; + + uint32_prop = of_get_property(mac_dev->tbi_node, "reg", NULL); + if (uint32_prop) + tbiaddr = *uint32_prop; + out_be32(mac_dev->vaddr + TBIPA_OFFSET, tbiaddr); + } + + if (!of_device_is_available(mac_node)) { + devm_iounmap(dev, mac_dev->vaddr); + __devm_release_region(dev, fm_get_mem_region(mac_dev->fm_dev), + res.start, res.end + 1 - res.start); + fm_unbind(mac_dev->fm_dev); + devm_kfree(dev, mac_dev); + dev_set_drvdata(dev, NULL); + return -ENODEV; + } + + /* Get the cell-index */ + uint32_prop = of_get_property(mac_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + dpaa_eth_err(dev, "of_get_property(%s, cell-index) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + BUG_ON(lenp != sizeof(uint32_t)); + mac_dev->cell_index = *uint32_prop; + + /* Get the MAC address */ + mac_addr = of_get_mac_address(mac_node); + if (unlikely(mac_addr == NULL)) { + dpaa_eth_err(dev, "of_get_mac_address(%s) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + memcpy(mac_dev->addr, mac_addr, sizeof(mac_dev->addr)); + + /* Get the port handles */ + phandle_prop = of_get_property(mac_node, "fsl,port-handles", &lenp); + if (unlikely(phandle_prop == NULL)) { + dpaa_eth_err(dev, "of_get_property(%s, port-handles) failed\n", + mac_node->full_name); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + BUG_ON(lenp != sizeof(phandle) * ARRAY_SIZE(mac_dev->port_dev)); + + for_each_port_device(i, mac_dev->port_dev) { + /* Find the port node */ + dev_node = of_find_node_by_phandle(phandle_prop[i]); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_find_node_by_phandle() failed\n"); + _errno = -EINVAL; + goto _return_of_node_put; + } + + of_dev = of_find_device_by_node(dev_node); + if (unlikely(of_dev == NULL)) { + dpaa_eth_err(dev, "of_find_device_by_node(%s) failed\n", + dev_node->full_name); + _errno = -EINVAL; + goto _return_of_node_put; + } + + mac_dev->port_dev[i] = fm_port_bind(&of_dev->dev); + if (unlikely(mac_dev->port_dev[i] == NULL)) { + dpaa_eth_err(dev, "dev_get_drvdata(%s) failed\n", + dev_node->full_name); + _errno = -EINVAL; + goto _return_of_node_put; + } + of_node_put(dev_node); + } + + /* Get the PHY connection type */ + char_prop = (const char *)of_get_property(mac_node, + "phy-connection-type", NULL); + if (unlikely(char_prop == NULL)) { + dpaa_eth_warning(dev, + "of_get_property(%s, phy-connection-type) " + "failed. Defaulting to MII\n", + mac_node->full_name); + mac_dev->phy_if = PHY_INTERFACE_MODE_MII; + } else + mac_dev->phy_if = str2phy(char_prop); + + mac_dev->link = false; + mac_dev->half_duplex = false; + mac_dev->speed = phy2speed[mac_dev->phy_if]; + mac_dev->max_speed = mac_dev->speed; + mac_dev->if_support = DTSEC_SUPPORTED; + /* We don't support half-duplex in SGMII mode */ + if (strstr(char_prop, "sgmii")) + mac_dev->if_support &= ~(SUPPORTED_10baseT_Half | + SUPPORTED_100baseT_Half); + + /* Gigabit support (no half-duplex) */ + if (mac_dev->max_speed == 1000) + mac_dev->if_support |= SUPPORTED_1000baseT_Full; + + /* The 10G interface only supports one mode */ + if (strstr(char_prop, "xgmii")) + mac_dev->if_support = SUPPORTED_10000baseT_Full; + + /* Get the rest of the PHY information */ + mac_dev->phy_node = of_parse_phandle(mac_node, "phy-handle", 0); + if (mac_dev->phy_node == NULL) { + int sz; + const u32 *phy_id = of_get_property(mac_node, "fixed-link", + &sz); + if (!phy_id || sz < sizeof(*phy_id)) { + cpu_dev_err(dev, "No PHY (or fixed link) found\n"); + _errno = -EINVAL; + goto _return_dev_set_drvdata; + } + + sprintf(mac_dev->fixed_bus_id, PHY_ID_FMT, "0", phy_id[0]); + } + + _errno = mac_dev->init(mac_dev); + if (unlikely(_errno < 0)) { + dpaa_eth_err(dev, "mac_dev->init() = %d\n", _errno); + goto _return_dev_set_drvdata; + } + + cpu_dev_info(dev, + "FMan MAC address: %02hx:%02hx:%02hx:%02hx:%02hx:%02hx\n", + mac_dev->addr[0], mac_dev->addr[1], mac_dev->addr[2], + mac_dev->addr[3], mac_dev->addr[4], mac_dev->addr[5]); + + goto _return; + +_return_of_node_put: + of_node_put(dev_node); +_return_dev_set_drvdata: + dev_set_drvdata(dev, NULL); +_return: + return _errno; +} + +static int __cold mac_remove(struct platform_device *of_dev) +{ + int i, _errno; + struct device *dev; + struct mac_device *mac_dev; + + dev = &of_dev->dev; + mac_dev = (struct mac_device *)dev_get_drvdata(dev); + + for_each_port_device(i, mac_dev->port_dev) + fm_port_unbind(mac_dev->port_dev[i]); + + fm_unbind(mac_dev->fm_dev); + + _errno = free_macdev(mac_dev); + + return _errno; +} + +static struct platform_driver mac_driver = { + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = mac_match, + .owner = THIS_MODULE, + }, + .probe = mac_probe, + .remove =mac_remove +}; + +static int __init __cold mac_load(void) +{ + int _errno; + + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + cpu_pr_info(KBUILD_MODNAME ": %s (" VERSION ")\n", mac_driver_description); + + _errno = platform_driver_register(&mac_driver); + if (unlikely(_errno < 0)) { + cpu_pr_err(KBUILD_MODNAME ": %s:%hu:%s(): of_register_platform_driver() = %d\n", + __file__, __LINE__, __func__, _errno); + goto _return; + } + + goto _return; + +_return: + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); + + return _errno; +} +module_init(mac_load); + +static void __exit __cold mac_unload(void) +{ + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + platform_driver_unregister(&mac_driver); + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); +} +module_exit(mac_unload); --- linux-ppc-3.8.0.orig/drivers/net/dpa/xgmac_mdio.c +++ linux-ppc-3.8.0/drivers/net/dpa/xgmac_mdio.c @@ -0,0 +1,280 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * QorIQ 10-G MDIO Controller + * + * Author: Andy Fleming + * + * Based on fsl_pq_mdio.c + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "xgmac_mdio.h" + +/* Write value to the PHY for this device to the register at regnum, */ +/* waiting until the write is done before it returns. All PHY */ +/* configuration has to be done through the TSEC1 MIIM regs */ +int xgmac_mdio_write(struct mii_bus *bus, int port_addr, int regnum, + u16 value) +{ + struct tgec_mdio_controller __iomem *regs = bus->priv; + u32 mdio_stat; + + /* Setup the MII Mgmt clock speed */ + mdio_stat = MDIO_STAT_CLKDIV(100); + out_be32(®s->mdio_stat, mdio_stat); + + /* Wait till the bus is free */ + while ((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY) + cpu_relax(); + + /* Set the port and dev addr */ + out_be32(®s->mdio_ctl, port_addr); + + /* Set the register address */ + out_be32(®s->mdio_addr, regnum & 0xffff); + + /* Wait till the bus is free */ + while ((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY) + cpu_relax(); + + /* Write the value to the register */ + out_be32(®s->mdio_data, MDIO_DATA(value)); + + /* Wait till the MDIO write is complete */ + while ((in_be32(®s->mdio_data)) & MDIO_DATA_BSY) + cpu_relax(); + + return 0; +} + + +/* Reads from register regnum in the PHY for device dev, */ +/* returning the value. Clears miimcom first. All PHY */ +/* configuration has to be done through the TSEC1 MIIM regs */ +int xgmac_mdio_read(struct mii_bus *bus, int port_addr, int regnum) +{ + struct tgec_mdio_controller __iomem *regs = bus->priv; + u32 mdio_stat; + + /* Setup the MII Mgmt clock speed */ + mdio_stat = MDIO_STAT_CLKDIV(100); + out_be32(®s->mdio_stat, mdio_stat); + + /* Wait till the bus is free */ + while ((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY) + cpu_relax(); + + /* Set the Port and Device Addrs */ + out_be32(®s->mdio_ctl, port_addr); + + /* Set the register address */ + out_be32(®s->mdio_addr, regnum & 0xffff); + + /* Wait till the bus is free */ + while ((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY) + cpu_relax(); + + /* Initiate the read */ + port_addr |= MDIO_CTL_READ; + out_be32(®s->mdio_ctl, port_addr); + + /* Wait till the MDIO write is complete */ + while ((in_be32(®s->mdio_data)) & MDIO_DATA_BSY) + cpu_relax(); + + /* Return all Fs if nothing was there */ + if (in_be32(®s->mdio_stat) & MDIO_STAT_RD_ER) + return 0xffff; + + return in_be32(®s->mdio_data) & 0xffff; +} + + +/* Reset the MIIM registers, and wait for the bus to free */ +static int xgmac_mdio_reset(struct mii_bus *bus) +{ + struct tgec_mdio_controller __iomem *regs = bus->priv; + int timeout = PHY_INIT_TIMEOUT; + u32 mdio_stat; + + mutex_lock(&bus->mdio_lock); + + /* Setup the MII Mgmt clock speed */ + mdio_stat = MDIO_STAT_CLKDIV(100); + out_be32(®s->mdio_stat, mdio_stat); + + /* Wait till the bus is free */ + while (((in_be32(®s->mdio_stat)) & MDIO_STAT_BSY) && timeout--) + cpu_relax(); + + mutex_unlock(&bus->mdio_lock); + + if (timeout < 0) { + printk(KERN_ERR "%s: The MII Bus is stuck!\n", + bus->name); + return -EBUSY; + } + + return 0; +} + + +static int xgmac_mdio_probe(struct platform_device *ofdev) +{ + struct tgec_mdio_controller __iomem *regs; + struct device_node *np = ofdev->dev.of_node; + struct mii_bus *new_bus; + u64 addr, size; + int err = 0; + + if (!of_device_is_available(np)) + return -ENODEV; + + new_bus = mdiobus_alloc(); + if (NULL == new_bus) + return -ENOMEM; + + new_bus->name = "Freescale XGMAC MDIO Bus", + new_bus->read = &xgmac_mdio_read, + new_bus->write = &xgmac_mdio_write, + new_bus->reset = &xgmac_mdio_reset, + + /* Set the PHY base address */ + addr = of_translate_address(np, of_get_address(np, 0, &size, NULL)); + regs = ioremap(addr, size); + + if (NULL == regs) { + err = -ENOMEM; + goto err_ioremap; + } + + new_bus->priv = (void __force *)regs; + + new_bus->irq = kcalloc(PHY_MAX_ADDR, sizeof(int), GFP_KERNEL); + + if (NULL == new_bus->irq) { + err = -ENOMEM; + goto err_irq_alloc; + } + + new_bus->parent = &ofdev->dev; + dev_set_drvdata(&ofdev->dev, new_bus); + + sprintf(new_bus->id, "%s", np->name); + + err = of_mdiobus_register(new_bus, np); + + if (err) { + printk(KERN_ERR "%s: Cannot register as MDIO bus\n", + new_bus->name); + goto err_registration; + } + + return 0; + +err_registration: + kfree(new_bus->irq); +err_irq_alloc: + iounmap(regs); +err_ioremap: + return err; +} + + +static int xgmac_mdio_remove(struct platform_device *ofdev) +{ + struct device *device = &ofdev->dev; + struct mii_bus *bus = dev_get_drvdata(device); + + mdiobus_unregister(bus); + + dev_set_drvdata(device, NULL); + + iounmap((void __iomem *)bus->priv); + bus->priv = NULL; + mdiobus_free(bus); + + return 0; +} + +static struct of_device_id xgmac_mdio_match[] = { + { + .compatible = "fsl,fman-xmdio", + }, + {}, +}; + +static struct platform_driver xgmac_mdio_driver = { + .driver = { + .name = "fsl-fman_xmdio", + .of_match_table = xgmac_mdio_match, + }, + .probe = xgmac_mdio_probe, + .remove = xgmac_mdio_remove, +}; + +int __init xgmac_mdio_init(void) +{ + return platform_driver_register(&xgmac_mdio_driver); +} + +void xgmac_mdio_exit(void) +{ + platform_driver_unregister(&xgmac_mdio_driver); +} +subsys_initcall_sync(xgmac_mdio_init); +module_exit(xgmac_mdio_exit); --- linux-ppc-3.8.0.orig/drivers/net/dpa/mac.h +++ linux-ppc-3.8.0/drivers/net/dpa/mac.h @@ -0,0 +1,113 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __MAC_H +#define __MAC_H + +#include /* struct device, BUS_ID_SIZE */ +#include /* ETH_ALEN */ +#include /* phy_interface_t, struct phy_device */ +#include + +#include "fsl_fman.h" /* struct port_device */ + +#ifndef CONFIG_DPA_MAX_FRM_SIZE +#define CONFIG_DPA_MAX_FRM_SIZE 0 +#endif + +enum {DTSEC, XGMAC}; + +struct mac_device { + struct device *dev; + void *priv; + uint8_t cell_index; + struct resource *res; + void *vaddr; + uint8_t addr[ETH_ALEN]; + bool promisc; + + struct fm *fm_dev; + struct fm_port *port_dev[2]; + + phy_interface_t phy_if; + u32 if_support; + bool link; + bool half_duplex; + uint16_t speed; + uint16_t max_speed; + struct device_node *phy_node; + char fixed_bus_id[MII_BUS_ID_SIZE + 3]; + struct device_node *tbi_node; + struct phy_device *phy_dev; + void *fm; + /* List of multicast addresses */ + struct list_head mc_addr_list; + + int (*init_phy)(struct net_device *net_dev); + int (*init)(struct mac_device *mac_dev); + int (*start)(struct mac_device *mac_dev); + int (*stop)(struct mac_device *mac_dev); + int (*change_promisc)(struct mac_device *mac_dev); + int (*change_addr)(struct mac_device *mac_dev, uint8_t *addr); + int (*set_multi)(struct net_device *net_dev); + int (*uninit)(struct mac_device *mac_dev); + int (*ptp_enable)(struct mac_device *mac_dev); + int (*ptp_disable)(struct mac_device *mac_dev); + int (*fm_rtc_enable)(struct net_device *net_dev); + int (*fm_rtc_disable)(struct net_device *net_dev); + int (*fm_rtc_get_cnt)(struct net_device *net_dev, uint64_t *ts); + int (*fm_rtc_set_cnt)(struct net_device *net_dev, uint64_t ts); + int (*fm_rtc_get_drift)(struct net_device *net_dev, uint32_t *drift); + int (*fm_rtc_set_drift)(struct net_device *net_dev, uint32_t drift); + int (*fm_rtc_set_alarm)(struct net_device *net_dev, uint32_t id, + uint64_t time); + int (*fm_rtc_set_fiper)(struct net_device *net_dev, uint32_t id, + uint64_t fiper); +}; + +struct mac_address { + uint8_t addr[ETH_ALEN]; + struct list_head list; +}; + +#define for_each_port_device(i, port_dev) \ + for (i = 0; i < ARRAY_SIZE(port_dev); i++) + +static inline void * __attribute((nonnull)) macdev_priv(const struct mac_device *mac_dev) +{ + return (void *)mac_dev + sizeof(*mac_dev); +} + +extern const char *mac_driver_description; +extern const size_t mac_sizeof_priv[]; +extern void (*const mac_setup[])(struct mac_device *mac_dev); + +#endif /* __MAC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/dpaa_eth.c +++ linux-ppc-3.8.0/drivers/net/dpa/dpaa_eth.c @@ -0,0 +1,3237 @@ +/* + * Copyright 2008-2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include /* arp_hdr_len() */ +#include /* VLAN_HLEN */ +#include /* struct icmphdr */ +#include /* struct iphdr */ +#include /* struct ipv6hdr */ +#include /* struct udphdr */ +#include /* struct tcphdr */ +#include /* net_ratelimit() */ +#include /* ETH_P_IP and ETH_P_IPV6 */ +#include +#include +#include +#include /* get_hard_smp_processor_id() */ +#include +#ifdef CONFIG_DEBUG_FS +#include +#endif +#include + +#include "fsl_fman.h" +#include "fm_ext.h" +#include "fm_port_ext.h" + +#include "mac.h" +#include "dpaa_eth.h" +#include "dpaa_1588.h" + +#define ARRAY2_SIZE(arr) (ARRAY_SIZE(arr) * ARRAY_SIZE((arr)[0])) + +#define DPA_NETIF_FEATURES (NETIF_F_HW_QDISC) +#define DEFAULT_COUNT 64 +#define DEFAULT_BUF_SIZE DPA_BP_SIZE(fsl_fman_phy_maxfrm); +#define DPA_MAX_TX_BACKLOG 512 +#define DPA_NAPI_WEIGHT 64 + +#define DPA_BP_REFILL (1 | (smp_processor_id() << 16)) +#define DPA_BP_FINE ((smp_processor_id() << 16)) +#define DPA_BP_REFILL_NEEDED 1 + +/* Bootarg used to override the Kconfig DPA_MAX_FRM_SIZE value */ +#define FSL_FMAN_PHY_MAXFRM_BOOTARG "fsl_fman_phy_max_frm" + +/* + * Values for the L3R field of the FM Parse Results + */ +/* L3 Type field: First IP Present IPv4 */ +#define FM_L3_PARSE_RESULT_IPV4 0x8000 +/* L3 Type field: First IP Present IPv6 */ +#define FM_L3_PARSE_RESULT_IPV6 0x4000 + +/* + * Values for the L4R field of the FM Parse Results + */ +/* L4 Type field: UDP */ +#define FM_L4_PARSE_RESULT_UDP 0x40 +/* L4 Type field: TCP */ +#define FM_L4_PARSE_RESULT_TCP 0x20 + +/* + * FD status field indicating whether the FM Parser has attempted to validate + * the L4 csum of the frame. + * Note that having this bit set doesn't necessarily imply that the checksum + * is valid. One would have to check the parse results to find that out. + */ +#define FM_FD_STAT_L4CV 0x00000004 + +#define DPA_DESCRIPTION "FSL DPAA Ethernet driver" + +MODULE_LICENSE("Dual BSD/GPL"); + +MODULE_AUTHOR("Andy Fleming "); + +MODULE_DESCRIPTION(DPA_DESCRIPTION); + +static uint8_t debug = -1; +module_param(debug, byte, S_IRUGO); +MODULE_PARM_DESC(debug, "Module/Driver verbosity level"); + +static uint16_t tx_timeout = 1000; +module_param(tx_timeout, ushort, S_IRUGO); +MODULE_PARM_DESC(tx_timeout, "The Tx timeout in ms"); + +#ifdef CONFIG_DEBUG_FS +static struct dentry *dpa_debugfs_root; +#endif + +/* + * Max frame size, across all interfaces. + * Configurable from Kconfig or bootargs, to avoid allocating + * oversized (socket) buffers when not using jumbo frames. + * Must be large enough to accomodate the network MTU, but small enough + * to avoid wasting skb memory. + * + * Could be overridden once, at boot-time, via the + * fsl_fman_phy_set_max_frm() callback. + */ +int fsl_fman_phy_maxfrm = CONFIG_DPA_MAX_FRM_SIZE; + +static const char rtx[][3] = { + [RX] = "RX", + [TX] = "TX" +}; + +struct dpa_fq { + struct qman_fq fq_base; + struct list_head list; + struct net_device *net_dev; + bool init; + uint32_t fqid; + uint32_t flags; + uint16_t channel; + uint8_t wq; +}; + +/* BM */ + +#ifdef DEBUG +#define GFP_DPA_BP (GFP_DMA | __GFP_ZERO | GFP_ATOMIC) +#else +#define GFP_DPA_BP (GFP_DMA | GFP_ATOMIC) +#endif + +#define DPA_BP_HEAD (DPA_PRIV_DATA_SIZE + DPA_PARSE_RESULTS_SIZE + \ + DPA_HASH_RESULTS_SIZE) +#define DPA_BP_SIZE(s) (DPA_BP_HEAD + (s)) + +#define DPAA_ETH_MAX_PAD (L1_CACHE_BYTES * 8) + +#define FM_FD_STAT_ERRORS \ + (FM_PORT_FRM_ERR_DMA | FM_PORT_FRM_ERR_PHYSICAL | \ + FM_PORT_FRM_ERR_SIZE | FM_PORT_FRM_ERR_CLS_DISCARD | \ + FM_PORT_FRM_ERR_EXTRACTION | FM_PORT_FRM_ERR_NO_SCHEME | \ + FM_PORT_FRM_ERR_ILL_PLCR | FM_PORT_FRM_ERR_PRS_TIMEOUT | \ + FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT | FM_PORT_FRM_ERR_PRS_HDR_ERR) + +static struct dpa_bp *dpa_bp_array[64]; + +static struct dpa_bp *default_pool; + +static struct dpa_bp *dpa_bpid2pool(int bpid) +{ + return dpa_bp_array[bpid]; +} + +static void dpa_bp_depletion(struct bman_portal *portal, + struct bman_pool *pool, void *cb_ctx, int depleted) +{ + if (net_ratelimit()) + pr_err("Invalid Pool depleted notification!\n"); +} + +static void bmb_free(struct dpa_bp *bp, struct bm_buffer *bmb) +{ + int i; + struct sk_buff **skbh; + struct sk_buff *skb; + + for (i = 0; i < 8; i++) { + dma_addr_t addr = bm_buf_addr(&bmb[i]); + if (!addr) + break; + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, DMA_FROM_DEVICE); + + dev_kfree_skb(skb); + } +} + +static void dpa_bp_add_8(struct dpa_bp *dpa_bp) +{ + struct bm_buffer bmb[8]; + struct sk_buff **skbh; + dma_addr_t addr; + int i; + struct sk_buff *skb; + int err; + int *count_ptr; + + count_ptr = per_cpu_ptr(dpa_bp->percpu_count, smp_processor_id()); + + for (i = 0; i < 8; i++) { + /* + * The buffers tend to be aligned all to the same cache + * index. A standard dequeue operation pulls in 15 packets. + * This means that when it stashes, it evicts half of the + * packets it's stashing. In order to prevent that, we pad + * by a variable number of cache lines, to reduce collisions. + * We always pad by at least 1 cache line, because we want + * a little extra room at the beginning for IPSec and to + * accommodate NET_IP_ALIGN. + */ + int pad = (i + 1) * L1_CACHE_BYTES; + + skb = dev_alloc_skb(dpa_bp->size + pad); + if (unlikely(!skb)) { + printk(KERN_ERR "dev_alloc_skb() failed for %d bytes\n", dpa_bp->size + pad); + bm_buffer_set64(&bmb[i], 0); + break; + } + + skbh = (struct sk_buff **)(skb->head + pad); + *skbh = skb; + + addr = dma_map_single(dpa_bp->dev, skb->head + pad, + dpa_bp->size, DMA_FROM_DEVICE); + + bm_buffer_set64(&bmb[i], addr); + } + + /* Avoid releasing a completely null buffer; bman_release() requires + * at least one buf. */ + if (likely(i)) { + err = bman_release(dpa_bp->pool, bmb, i, 0); + + if (unlikely(err < 0)) + bmb_free(dpa_bp, bmb); + else + *count_ptr += i; + } +} + +static void dpa_make_private_pool(struct dpa_bp *dpa_bp) +{ + int i; + + dpa_bp->percpu_count = __alloc_percpu(sizeof(*dpa_bp->percpu_count), + __alignof__(*dpa_bp->percpu_count)); + + /* Give each cpu an allotment of "count" buffers */ + for_each_online_cpu(i) { + int *thiscount; + int *countptr; + int j; + thiscount = per_cpu_ptr(dpa_bp->percpu_count, + smp_processor_id()); + countptr = per_cpu_ptr(dpa_bp->percpu_count, i); + + for (j = 0; j < dpa_bp->count; j += 8) + dpa_bp_add_8(dpa_bp); + + /* Adjust the counts */ + *countptr = j; + + if (countptr != thiscount) + *thiscount = *thiscount - j; + } +} + + +static void dpaa_eth_seed_pool(struct dpa_bp *bp) +{ + size_t count = bp->count; + size_t addr = bp->paddr; + + while (count) { + struct bm_buffer bufs[8]; + int num_bufs = 0; + + do { + BUG_ON(addr > 0xffffffffffffull); + bufs[num_bufs].bpid = bp->bpid; + bm_buffer_set64(&bufs[num_bufs++], addr); + addr += bp->size; + + } while (--count && (num_bufs < 8)); + + while (bman_release(bp->pool, bufs, num_bufs, 0)) + cpu_relax(); + } +} + +static int dpa_make_shared_pool(struct dpa_bp *bp) +{ + devm_request_mem_region(bp->dev, bp->paddr, bp->size * bp->count, + KBUILD_MODNAME); + bp->vaddr = devm_ioremap_prot(bp->dev, bp->paddr, + bp->size * bp->count, 0); + if (bp->vaddr == NULL) { + cpu_pr_err("Could not map memory for pool %d\n", bp->bpid); + return -EIO; + } + + if (bp->seed_pool) + dpaa_eth_seed_pool(bp); + + return 0; +} + +static int __must_check __attribute__((nonnull)) +dpa_bp_alloc(struct dpa_bp *dpa_bp) +{ + int err = 0; + struct bman_pool_params bp_params; + struct platform_device *pdev; + + BUG_ON(dpa_bp->size == 0); + BUG_ON(dpa_bp->count == 0); + + bp_params.flags = BMAN_POOL_FLAG_DEPLETION; + bp_params.cb = dpa_bp_depletion; + bp_params.cb_ctx = dpa_bp; + + /* We support two options. Either a global shared pool, or + * a specified pool. If the pool is specified, we only + * create one per bpid */ + if (dpa_bp->kernel_pool && default_pool) { + atomic_inc(&default_pool->refs); + return 0; + } + + if (dpa_bp_array[dpa_bp->bpid]) { + atomic_inc(&dpa_bp_array[dpa_bp->bpid]->refs); + return 0; + } + + if (dpa_bp->bpid == 0) + bp_params.flags |= BMAN_POOL_FLAG_DYNAMIC_BPID; + else + bp_params.bpid = dpa_bp->bpid; + + dpa_bp->pool = bman_new_pool(&bp_params); + if (unlikely(dpa_bp->pool == NULL)) { + cpu_pr_err("bman_new_pool() failed\n"); + return -ENODEV; + } + + dpa_bp->bpid = bman_get_params(dpa_bp->pool)->bpid; + + pdev = platform_device_register_simple("dpaa_eth_bpool", + dpa_bp->bpid, NULL, 0); + if (IS_ERR(pdev)) { + err = PTR_ERR(pdev); + goto pdev_register_failed; + } + + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(40))) + goto pdev_mask_failed; + + dpa_bp->dev = &pdev->dev; + + if (dpa_bp->kernel_pool) { + dpa_make_private_pool(dpa_bp); + if (!default_pool) + default_pool = dpa_bp; + } else { + err = dpa_make_shared_pool(dpa_bp); + if (err) + goto make_shared_pool_failed; + } + + dpa_bp_array[dpa_bp->bpid] = dpa_bp; + + atomic_set(&dpa_bp->refs, 1); + + return 0; + +make_shared_pool_failed: +pdev_mask_failed: + platform_device_unregister(pdev); +pdev_register_failed: + bman_free_pool(dpa_bp->pool); + + return err; +} + +static void __cold __attribute__((nonnull)) +_dpa_bp_free(struct dpa_bp *dpa_bp) +{ + struct dpa_bp *bp = dpa_bpid2pool(dpa_bp->bpid); + + if (!atomic_dec_and_test(&bp->refs)) + return; + + if (bp->kernel_pool) { + int num; + + do { + struct bm_buffer bmb[8]; + int i; + + num = bman_acquire(bp->pool, bmb, 8, 0); + + for (i = 0; i < num; i++) { + dma_addr_t addr = bm_buf_addr(&bmb[i]); + struct sk_buff **skbh = phys_to_virt(addr); + struct sk_buff *skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, + DMA_FROM_DEVICE); + + dev_kfree_skb_any(skb); + } + } while (num == 8); + } + + dpa_bp_array[bp->bpid] = 0; + bman_free_pool(bp->pool); +} + +static void __cold __attribute__((nonnull)) +dpa_bp_free(struct dpa_priv_s *priv, struct dpa_bp *dpa_bp) +{ + int i; + + for (i = 0; i < priv->bp_count; i++) + _dpa_bp_free(&priv->dpa_bp[i]); +} + +/* QM */ + +static int __must_check __attribute__((nonnull)) +_dpa_fq_alloc(struct list_head *list, struct dpa_fq *dpa_fq) +{ + int _errno; + const struct dpa_priv_s *priv; + struct device *dev; + struct qman_fq *fq; + struct qm_mcc_initfq initfq; + /* Set the QMan taildrop threshold high enough to accomodate + * one 64k frame, plus an extra (here, 16k) for + * other frames awaiting Tx. */ + const u32 qman_taildrop_threshold = 0x14000; + + priv = netdev_priv(dpa_fq->net_dev); + dev = dpa_fq->net_dev->dev.parent; + + if (dpa_fq->fqid == 0) + dpa_fq->flags |= QMAN_FQ_FLAG_DYNAMIC_FQID; + + dpa_fq->init = !(dpa_fq->flags & QMAN_FQ_FLAG_NO_MODIFY); + + _errno = qman_create_fq(dpa_fq->fqid, dpa_fq->flags, &dpa_fq->fq_base); + if (_errno) { + dpaa_eth_err(dev, "qman_create_fq() failed\n"); + return _errno; + } + fq = &dpa_fq->fq_base; + + if (dpa_fq->init) { + initfq.we_mask = QM_INITFQ_WE_DESTWQ; + initfq.fqd.dest.channel = dpa_fq->channel; + initfq.fqd.dest.wq = dpa_fq->wq; + initfq.we_mask |= QM_INITFQ_WE_TDTHRESH | QM_INITFQ_WE_FQCTRL; + qm_fqd_taildrop_set(&initfq.fqd.td, qman_taildrop_threshold, 1); + initfq.fqd.fq_ctrl = QM_FQCTRL_TDE | QM_FQCTRL_PREFERINCACHE; + if (dpa_fq->flags & QMAN_FQ_FLAG_NO_ENQUEUE) { + initfq.we_mask |= QM_INITFQ_WE_CONTEXTA; + initfq.fqd.fq_ctrl |= + QM_FQCTRL_CTXASTASHING | QM_FQCTRL_AVOIDBLOCK; + initfq.fqd.context_a.stashing.exclusive = + QM_STASHING_EXCL_DATA | QM_STASHING_EXCL_CTX | + QM_STASHING_EXCL_ANNOTATION; + initfq.fqd.context_a.stashing.data_cl = 2; + initfq.fqd.context_a.stashing.annotation_cl = 1; + initfq.fqd.context_a.stashing.context_cl = + DIV_ROUND_UP(sizeof(struct qman_fq), 64); + }; + + _errno = qman_init_fq(fq, QMAN_INITFQ_FLAG_SCHED, &initfq); + if (_errno < 0) { + dpaa_eth_err(dev, "qman_init_fq(%u) = %d\n", + qman_fq_fqid(fq), _errno); + qman_destroy_fq(fq, 0); + return _errno; + } + } + + dpa_fq->fqid = qman_fq_fqid(fq); + list_add_tail(&dpa_fq->list, list); + + return 0; +} + +static int __cold __attribute__((nonnull)) +_dpa_fq_free(struct device *dev, struct qman_fq *fq) +{ + int _errno, __errno; + struct dpa_fq *dpa_fq; + const struct dpa_priv_s *priv; + + _errno = 0; + + dpa_fq = container_of(fq, struct dpa_fq, fq_base); + priv = netdev_priv(dpa_fq->net_dev); + + if (dpa_fq->init) { + _errno = qman_retire_fq(fq, NULL); + if (unlikely(_errno < 0) && netif_msg_drv(priv)) + dpaa_eth_err(dev, "qman_retire_fq(%u) = %d\n", + qman_fq_fqid(fq), _errno); + + __errno = qman_oos_fq(fq); + if (unlikely(__errno < 0) && netif_msg_drv(priv)) { + dpaa_eth_err(dev, "qman_oos_fq(%u) = %d\n", + qman_fq_fqid(fq), __errno); + if (_errno >= 0) + _errno = __errno; + } + } + + qman_destroy_fq(fq, 0); + list_del(&dpa_fq->list); + + return _errno; +} + +static int __cold __attribute__((nonnull)) +dpa_fq_free(struct device *dev, struct list_head *list) +{ + int _errno, __errno; + struct dpa_fq *dpa_fq, *tmp; + + _errno = 0; + list_for_each_entry_safe(dpa_fq, tmp, list, list) { + __errno = _dpa_fq_free(dev, (struct qman_fq *)dpa_fq); + if (unlikely(__errno < 0) && _errno >= 0) + _errno = __errno; + } + + return _errno; +} + + +static inline ssize_t __const __must_check __attribute__((nonnull)) +dpa_fd_length(const struct qm_fd *fd) +{ + return fd->length20; +} + +static inline ssize_t __const __must_check __attribute__((nonnull)) +dpa_fd_offset(const struct qm_fd *fd) +{ + return fd->offset; +} + +static int __must_check __attribute__((nonnull)) +dpa_fd_release(const struct net_device *net_dev, const struct qm_fd *fd) +{ + int _errno, __errno, i, j; + const struct dpa_priv_s *priv; + const struct qm_sg_entry *sgt; + struct dpa_bp *_dpa_bp, *dpa_bp; + struct bm_buffer _bmb, bmb[8]; + + priv = netdev_priv(net_dev); + + _bmb.hi = fd->addr_hi; + _bmb.lo = fd->addr_lo; + + _dpa_bp = dpa_bpid2pool(fd->bpid); + BUG_ON(IS_ERR(_dpa_bp)); + + _errno = 0; + if (fd->format == qm_fd_sg) { + sgt = (phys_to_virt(bm_buf_addr(&_bmb)) + dpa_fd_offset(fd)); + + i = 0; + do { + dpa_bp = dpa_bpid2pool(sgt[i].bpid); + BUG_ON(IS_ERR(dpa_bp)); + + j = 0; + do { + BUG_ON(sgt[i].extension); + + bmb[j].hi = sgt[i].addr_hi; + bmb[j].lo = sgt[i].addr_lo; + j++; i++; + } while (j < ARRAY_SIZE(bmb) && + !sgt[i-1].final && + sgt[i-1].bpid == sgt[i].bpid); + + __errno = bman_release(dpa_bp->pool, bmb, j, 0); + if (unlikely(__errno < 0)) { + if (netif_msg_drv(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, + "bman_release(%hu) = %d\n", + dpa_bp->bpid, _errno); + if (_errno >= 0) + _errno = __errno; + } + } while (!sgt[i-1].final); + } + + __errno = bman_release(_dpa_bp->pool, &_bmb, 1, 0); + if (unlikely(__errno < 0)) { + if (netif_msg_drv(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "bman_release(%hu) = %d\n", + _dpa_bp->bpid, __errno); + if (_errno >= 0) + _errno = __errno; + } + + return _errno; +} + +/* net_device */ + +#define NN_ALLOCATED_SPACE(net_dev) \ + max((size_t)arp_hdr_len(net_dev), sizeof(struct iphdr)) +#define NN_RESERVED_SPACE(net_dev) \ + min((size_t)arp_hdr_len(net_dev), sizeof(struct iphdr)) + +#define TT_ALLOCATED_SPACE(net_dev) \ + max(sizeof(struct icmphdr), max(sizeof(struct udphdr), \ + sizeof(struct tcphdr))) +#define TT_RESERVED_SPACE(net_dev) \ + min(sizeof(struct icmphdr), min(sizeof(struct udphdr), \ + sizeof(struct tcphdr))) + +static struct net_device_stats * __cold +dpa_get_stats(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + unsigned long *netstats; + unsigned long *cpustats; + int i, j; + struct dpa_percpu_priv_s *percpu_priv; + int numstats = sizeof(net_dev->stats) / sizeof(unsigned long); + + netstats = (unsigned long *)&net_dev->stats; + + memset(netstats, 0, sizeof(net_dev->stats)); + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + + cpustats = (unsigned long *)&percpu_priv->stats; + + for (j = 0; j < numstats; j++) + netstats[j] += cpustats[j]; + } + + return &net_dev->stats; +} + +static int dpa_change_mtu(struct net_device *net_dev, int new_mtu) +{ + const struct dpa_priv_s *priv; + const int max_mtu = fsl_fman_phy_maxfrm - (VLAN_ETH_HLEN + ETH_FCS_LEN); + const int min_mtu = 64; + + priv = netdev_priv(net_dev); + + /* Make sure we don't exceed the Ethernet controller's MAXFRM */ + if (new_mtu < min_mtu || new_mtu > max_mtu) { + cpu_netdev_err(net_dev, "Invalid L3 mtu %d " + "(must be between %d and %d).\n", + new_mtu, min_mtu, max_mtu); + return -EINVAL; + } + net_dev->mtu = new_mtu; + + return 0; +} + +static int dpa_set_mac_address(struct net_device *net_dev, void *addr) +{ + const struct dpa_priv_s *priv; + int _errno; + + priv = netdev_priv(net_dev); + + _errno = eth_mac_addr(net_dev, addr); + if (_errno < 0) { + if (netif_msg_drv(priv)) + cpu_netdev_err(net_dev, + "eth_mac_addr() = %d\n", + _errno); + return _errno; + } + + if (!priv->mac_dev) + /* MAC-less interface, so nothing more to do here */ + return 0; + + _errno = priv->mac_dev->change_addr(priv->mac_dev, net_dev->dev_addr); + if (_errno < 0) { + if (netif_msg_drv(priv)) + cpu_netdev_err(net_dev, + "mac_dev->change_addr() = %d\n", + _errno); + return _errno; + } + + return 0; +} + +static void __cold dpa_change_rx_flags(struct net_device *net_dev, int flags) +{ + int _errno; + const struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (!priv->mac_dev) + return; + + if ((flags & IFF_PROMISC) != 0) { + _errno = priv->mac_dev->change_promisc(priv->mac_dev); + if (unlikely(_errno < 0) && netif_msg_drv(priv)) + cpu_netdev_err(net_dev, + "mac_dev->change_promisc() = %d\n", + _errno); + } +} + +static void dpa_set_multicast_list(struct net_device *net_dev) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (!priv->mac_dev) { + if (netif_msg_drv(priv)) + cpu_netdev_warn(net_dev, + "%s() called on MAC-less interface\n", + __func__); + return; + } + + _errno = priv->mac_dev->set_multi(net_dev); + if ((_errno < 0) && netif_msg_drv(priv)) + cpu_netdev_err(net_dev, "mac_dev->set_multi() = %d\n", _errno); +} + +static int dpa_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + + if (!netif_running(dev)) + return -EINVAL; + +#ifdef CONFIG_FSL_DPA_1588 + if ((cmd >= PTP_ENBL_TXTS_IOCTL) && (cmd <= PTP_CLEANUP_TS)) { + int ret = -ENODEV; + + if (priv->tsu && priv->tsu->valid) + ret = dpa_ioctl_1588(dev, rq, cmd); + + return ret; + } +#endif + + return phy_mii_ioctl(priv->mac_dev->phy_dev, rq, cmd); +} + +/* + * When we put the buffer into the pool, we purposefully added + * some padding to the address so that the buffers wouldn't all + * be page-aligned. But the skb has been reset to a default state, + * so it is pointing up to DPAA_ETH_MAX_PAD - L1_CACHE_BYTES bytes + * before the actual data. We subtract skb->head from the fd addr, + * and then mask off the translated part to get the actual distance. + */ +static int dpa_process_one(struct dpa_percpu_priv_s *percpu_priv, + struct sk_buff *skb, struct dpa_bp *bp, const struct qm_fd *fd) +{ + dma_addr_t addr = qm_fd_addr(fd); + u32 addrlo = lower_32_bits(addr); + u32 skblo = lower_32_bits((unsigned long)skb->head); + u32 pad = (addrlo - skblo) & (PAGE_SIZE - 1); + unsigned int data_start; + + (*percpu_priv->dpa_bp_count)--; + + /* + * The skb is currently pointed at head + NET_SKB_PAD. The packet + * starts at skb->head + pad + fd offset. + */ + data_start = pad + dpa_fd_offset(fd) - NET_SKB_PAD; + skb_put(skb, dpa_fd_length(fd) + data_start); + skb_pull(skb, data_start); + + return 0; +} + +static void _dpa_rx_error(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + int _errno; + + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.rx_errors++; + + _errno = dpa_fd_release(net_dev, fd); + if (unlikely(_errno < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during RX\n"); + } +} + +static void _dpa_tx_error(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + struct sk_buff *skb; + struct sk_buff **skbh; + dma_addr_t addr = qm_fd_addr(fd); + struct dpa_bp *bp = priv->dpa_bp; + + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.tx_errors++; + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, DMA_TO_DEVICE); + + dev_kfree_skb(skb); +} + +static void __hot _dpa_rx(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + int _errno; + struct dpa_bp *dpa_bp; + struct sk_buff *skb; + struct sk_buff **skbh; + dma_addr_t addr = qm_fd_addr(fd); + + skbh = (struct sk_buff **)phys_to_virt(addr); + + if (unlikely(fd->status & FM_FD_STAT_ERRORS) != 0) { + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.rx_errors++; + + goto _return_dpa_fd_release; + } + + if (unlikely(fd->format != qm_fd_contig)) { + percpu_priv->stats.rx_dropped++; + if (netif_msg_rx_status(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "Dropping a SG frame\n"); + goto _return_dpa_fd_release; + } + + dpa_bp = dpa_bpid2pool(fd->bpid); + + dma_unmap_single(dpa_bp->dev, qm_fd_addr(fd), dpa_bp->size, + DMA_FROM_DEVICE); + + skb = *skbh; + prefetch(skb); + + /* Fill the SKB */ + dpa_process_one(percpu_priv, skb, dpa_bp, fd); + + prefetch(skb_shinfo(skb)); + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + dpa_ptp_store_rxstamp(net_dev, skb, fd); +#endif + + skb->protocol = eth_type_trans(skb, net_dev); + + if (unlikely(skb->len > net_dev->mtu)) { + if ((skb->protocol != ETH_P_8021Q) || + (skb->len > net_dev->mtu + 4)) { + percpu_priv->stats.rx_dropped++; + goto drop_large_frame; + } + } + + /* Check if the FMan Parser has already validated the L4 csum. */ + if (fd->status & FM_FD_STAT_L4CV) { + /* If we're here, the csum must be valid (if it hadn't, + * the frame would have been received on the Error FQ, + * respectively on the _dpa_rx_error() path). */ + skb->ip_summed = CHECKSUM_UNNECESSARY; + } else + skb->ip_summed = CHECKSUM_NONE; + + if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) + percpu_priv->stats.rx_dropped++; + else { + percpu_priv->stats.rx_packets++; + percpu_priv->stats.rx_bytes += dpa_fd_length(fd); + } + + net_dev->last_rx = jiffies; + + return; + +drop_large_frame: + (*percpu_priv->dpa_bp_count)++; +_return_dpa_fd_release: + _errno = dpa_fd_release(net_dev, fd); + if (unlikely(_errno < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during RX\n"); + } +} + +static void dpaa_eth_napi_disable(struct dpa_priv_s *priv) +{ + struct dpa_percpu_priv_s *percpu_priv; + int i; + + if (priv->shared) + return; + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + napi_disable(&percpu_priv->napi); + } +} + +static void dpaa_eth_napi_enable(struct dpa_priv_s *priv) +{ + struct dpa_percpu_priv_s *percpu_priv; + int i; + + if (priv->shared) + return; + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + napi_enable(&percpu_priv->napi); + } +} + +static int dpaa_eth_poll(struct napi_struct *napi, int budget) +{ + struct dpa_percpu_priv_s *percpu_priv; + int cleaned = qman_poll_dqrr(budget); + int count; + + percpu_priv = container_of(napi, struct dpa_percpu_priv_s, napi); + + count = *percpu_priv->dpa_bp_count; + + if (count < DEFAULT_COUNT / 4) { + int i; + + for (i = count; i < DEFAULT_COUNT; i += 8) + dpa_bp_add_8(percpu_priv->dpa_bp); + } + + if (cleaned < budget) { + int tmp; + napi_complete(napi); + tmp = qman_irqsource_add(QM_PIRQ_DQRI); + BUG_ON(tmp); + } + + return cleaned; +} + +static void __hot _dpa_tx(struct net_device *net_dev, + const struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu_priv, + const struct qm_fd *fd) +{ + struct sk_buff **skbh; + struct sk_buff *skb; + dma_addr_t addr = qm_fd_addr(fd); + struct dpa_bp *bp = priv->dpa_bp; + + /* This might not perfectly reflect the reality, if the core dequeueing + * the Tx confirmation is different from the one that did the enqueue, + * but at least it'll show up in the total count. */ + percpu_priv->tx_confirm++; + + if (unlikely(fd->status & FM_FD_STAT_ERRORS) != 0) { + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.tx_errors++; + } + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + dpa_ptp_store_txstamp(net_dev, skb, fd); +#endif + + dma_unmap_single(bp->dev, addr, bp->size, DMA_TO_DEVICE); + + dev_kfree_skb(skb); +} + +static struct dpa_bp *dpa_size2pool(struct dpa_priv_s *priv, size_t size) +{ + int i; + + for (i = 0; i < priv->bp_count; i++) + if (DPA_BP_SIZE(size) <= priv->dpa_bp[i].size) + return dpa_bpid2pool(priv->dpa_bp[i].bpid); + return ERR_PTR(-ENODEV); +} + +static inline void * __must_check __attribute__((nonnull)) +dpa_phys2virt(const struct dpa_bp *dpa_bp, dma_addr_t addr) +{ + return dpa_bp->vaddr + (addr - dpa_bp->paddr); +} + +/** + * Turn on HW checksum computation for this outgoing frame. + * If the current protocol is not something we support in this regard + * (or if the stack has already computed the SW checksum), we do nothing. + * + * Returns 0 if all goes well (or HW csum doesn't apply), and a negative value + * otherwise. + * + * Note that this function may modify the fd->cmd field and the skb data buffer + * (the Parse Results area). + */ +static inline int dpa_enable_tx_csum(struct dpa_priv_s *priv, + struct sk_buff *skb, struct qm_fd *fd, char *parse_results) +{ + t_FmPrsResult *parse_result; + struct iphdr *iph; + struct ipv6hdr *ipv6h = NULL; + int l4_proto; + int ethertype = ntohs(skb->protocol); + int retval = 0; + + if (!priv->mac_dev || skb->ip_summed != CHECKSUM_PARTIAL) + return 0; + + /* Note: L3 csum seems to be already computed in sw, but we can't choose + * L4 alone from the FM configuration anyway. */ + + /* Fill in some fields of the Parse Results array, so the FMan + * can find them as if they came from the FMan Parser. */ + parse_result = (t_FmPrsResult *)parse_results; + + /* If we're dealing with VLAN, get the real Ethernet type */ + if (ethertype == ETH_P_8021Q) { + /* We can't always assume the MAC header is set correctly + * by the stack, so reset to beginning of skb->data */ + skb_reset_mac_header(skb); + ethertype = ntohs(vlan_eth_hdr(skb)->h_vlan_encapsulated_proto); + } + + /* Fill in the relevant L3 parse result fields + * and read the L4 protocol type */ + switch (ethertype) { + case ETH_P_IP: + parse_result->l3r = FM_L3_PARSE_RESULT_IPV4; + iph = ip_hdr(skb); + BUG_ON(iph == NULL); + l4_proto = ntohs(iph->protocol); + break; + case ETH_P_IPV6: + parse_result->l3r = FM_L3_PARSE_RESULT_IPV6; + ipv6h = ipv6_hdr(skb); + BUG_ON(ipv6h == NULL); + l4_proto = ntohs(ipv6h->nexthdr); + break; + default: + /* We shouldn't even be here */ + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_alert(priv->net_dev, "Can't compute HW csum " + "for L3 proto 0x%x\n", ntohs(skb->protocol)); + retval = -EIO; + goto return_error; + } + + /* Fill in the relevant L4 parse result fields */ + switch (l4_proto) { + case IPPROTO_UDP: + parse_result->l4r = FM_L4_PARSE_RESULT_UDP; + break; + case IPPROTO_TCP: + parse_result->l4r = FM_L4_PARSE_RESULT_TCP; + break; + default: + /* This can as well be a BUG() */ + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_alert(priv->net_dev, "Can't compute HW csum " + "for L4 proto 0x%x\n", l4_proto); + retval = -EIO; + goto return_error; + } + + /* At index 0 is IPOffset_1 as defined in the Parse Results */ + parse_result->ip_off[0] = skb_network_offset(skb); + parse_result->l4_off = skb_transport_offset(skb); + + /* Enable L3 (and L4, if TCP or UDP) HW checksum. */ + fd->cmd |= FM_FD_CMD_RPD | FM_FD_CMD_DTC; + +return_error: + return retval; +} + +static inline int __hot dpa_xmit(struct dpa_priv_s *priv, + struct dpa_percpu_priv_s *percpu, int queue, + struct qm_fd *fd) +{ + int err; + + prefetchw(&percpu->start_tx); + err = qman_enqueue(priv->egress_fqs[queue], fd, 0); + if (unlikely(err < 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(priv->net_dev, "qman_enqueue() = %d\n", + err); + percpu->stats.tx_errors++; + percpu->stats.tx_fifo_errors++; + return err; + } + + percpu->stats.tx_packets++; + percpu->stats.tx_bytes += dpa_fd_length(fd); + + return NETDEV_TX_OK; +} + +static int __hot dpa_shared_tx(struct sk_buff *skb, struct net_device *net_dev) +{ + struct dpa_bp *dpa_bp; + struct bm_buffer bmb; + struct dpa_percpu_priv_s *percpu_priv; + struct dpa_priv_s *priv; + struct device *dev; + struct qm_fd fd; + int queue_mapping; + int err; + void *dpa_bp_vaddr; + + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + dev = net_dev->dev.parent; + + memset(&fd, 0, sizeof(fd)); + fd.format = qm_fd_contig; + + queue_mapping = skb_get_queue_mapping(skb); + + dpa_bp = dpa_size2pool(priv, skb_headlen(skb)); + if (unlikely(IS_ERR(dpa_bp))) { + err = PTR_ERR(dpa_bp); + goto bpools_too_small_error; + } + + err = bman_acquire(dpa_bp->pool, &bmb, 1, 0); + if (unlikely(err <= 0)) { + percpu_priv->stats.tx_errors++; + if (err == 0) + err = -ENOMEM; + goto buf_acquire_failed; + } + fd.bpid = dpa_bp->bpid; + + fd.length20 = skb_headlen(skb); + fd.cmd = FM_FD_CMD_FCO; + fd.addr_hi = bmb.hi; + fd.addr_lo = bmb.lo; + fd.offset = DPA_BP_HEAD; + + dpa_bp_vaddr = dpa_phys2virt(dpa_bp, bm_buf_addr(&bmb)); + + /* Copy the packet payload */ + skb_copy_from_linear_data(skb, dpa_bp_vaddr + dpa_fd_offset(&fd), + dpa_fd_length(&fd)); + + /* Enable L3/L4 hardware checksum computation, if applicable */ + err = dpa_enable_tx_csum(priv, skb, &fd, + dpa_bp_vaddr + DPA_PRIV_DATA_SIZE); + if (unlikely(err < 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "Tx HW csum error: %d\n", err); + percpu_priv->stats.tx_errors++; + goto l3_l4_csum_failed; + } + + err = dpa_xmit(priv, percpu_priv, queue_mapping, &fd); + +l3_l4_csum_failed: +bpools_too_small_error: +buf_acquire_failed: + /* We're done with the skb */ + dev_kfree_skb(skb); + + return err; +} + +static int __hot dpa_tx(struct sk_buff *skb, struct net_device *net_dev) +{ + struct dpa_priv_s *priv; + struct device *dev; + struct qm_fd fd; + unsigned int headroom; + struct dpa_percpu_priv_s *percpu_priv; + struct sk_buff **skbh; + dma_addr_t addr; + struct dpa_bp *dpa_bp; + int queue_mapping; + int err; + unsigned int pad; + + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + dev = net_dev->dev.parent; + + memset(&fd, 0, sizeof(fd)); + fd.format = qm_fd_contig; + + headroom = skb_headroom(skb); + queue_mapping = skb_get_queue_mapping(skb); + + if (headroom < DPA_BP_HEAD) { + struct sk_buff *skb_new; + + skb_new = skb_realloc_headroom(skb, DPA_BP_HEAD); + if (!skb_new) { + percpu_priv->stats.tx_errors++; + kfree_skb(skb); + return NETDEV_TX_OK; + } + kfree_skb(skb); + skb = skb_new; + headroom = skb_headroom(skb); + } + + skb = skb_unshare(skb, GFP_ATOMIC); + + if (!skb) + return NETDEV_TX_OK; + + /* + * We are guaranteed that we have at least DPA_BP_HEAD of headroom. + * Buffers we allocated are padded to improve cache usage. In order + * to increase buffer re-use, we aim to keep any such buffers the + * same. This means the address passed to the FM should be DPA_BP_HEAD + * before the data, and we might as well do the same for buffers + * from elsewhere in the kernel. + */ + skbh = (struct sk_buff **)(skb->data - DPA_BP_HEAD); + pad = headroom - DPA_BP_HEAD; + + *skbh = skb; + + dpa_bp = priv->dpa_bp; + + /* Enable L3/L4 hardware checksum computation. + * + * We must do this before dma_map_single(DMA_TO_DEVICE), because we may + * need to write into the skb. */ + err = dpa_enable_tx_csum(priv, skb, &fd, + ((char *)skbh) + DPA_PRIV_DATA_SIZE); + + if (unlikely(err < 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "HW csum error: %d\n", err); + percpu_priv->stats.tx_errors++; + goto l3_l4_csum_failed; + } + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + fd.cmd |= FM_FD_CMD_UPD; +#endif + + fd.length20 = skb->len; + fd.offset = DPA_BP_HEAD; /* This is now guaranteed */ + + addr = dma_map_single(dpa_bp->dev, skbh, dpa_bp->size, DMA_TO_DEVICE); + if (unlikely(addr == 0)) { + if (netif_msg_tx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "dma_map_single() failed\n"); + goto dma_map_failed; + } + + fd.addr_hi = upper_32_bits(addr); + fd.addr_lo = lower_32_bits(addr); + + if (unlikely(dpa_xmit(priv, percpu_priv, queue_mapping, &fd) < 0)) + goto xmit_failed; + + net_dev->trans_start = jiffies; + + return NETDEV_TX_OK; + +xmit_failed: + dma_unmap_single(dev, addr, dpa_bp->size, DMA_TO_DEVICE); + +dma_map_failed: + if (fd.cmd & FM_FD_CMD_FCO) + (*percpu_priv->dpa_bp_count)--; + +l3_l4_csum_failed: + dev_kfree_skb(skb); + + return NETDEV_TX_OK; +} + +static enum qman_cb_dqrr_result +ingress_rx_error_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (dpaa_eth_napi_schedule(percpu_priv)) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + _dpa_rx_error(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result __hot +shared_rx_dqrr(struct qman_portal *portal, struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + int err; + const struct qm_fd *fd = &dq->fd; + struct dpa_bp *dpa_bp; + size_t size; + struct sk_buff *skb; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (unlikely(fd->status & FM_FD_STAT_ERRORS) != 0) { + if (netif_msg_hw(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, "FD status = 0x%08x\n", + fd->status & FM_FD_STAT_ERRORS); + + percpu_priv->stats.rx_errors++; + + goto out; + } + + + dpa_bp = dpa_bpid2pool(fd->bpid); + BUG_ON(IS_ERR(dpa_bp)); + + if (fd->format == qm_fd_sg) { + percpu_priv->stats.rx_dropped++; + if (netif_msg_rx_status(priv) && net_ratelimit()) + cpu_netdev_warn(net_dev, + "%s:%hu:%s(): Dropping a SG frame\n", + __file__, __LINE__, __func__); + goto out; + } + + size = dpa_fd_length(fd); + + skb = __netdev_alloc_skb(net_dev, DPA_BP_HEAD + size, GFP_ATOMIC); + if (unlikely(skb == NULL)) { + if (netif_msg_rx_err(priv) && net_ratelimit()) + cpu_netdev_err(net_dev, "Could not alloc skb\n"); + + percpu_priv->stats.rx_dropped++; + + goto out; + } + + skb_reserve(skb, DPA_BP_HEAD); + + /* Fill the SKB */ + memcpy(skb_put(skb, dpa_fd_length(fd)), + dpa_phys2virt(dpa_bp, qm_fd_addr(fd)) + + dpa_fd_offset(fd), dpa_fd_length(fd)); + + skb->protocol = eth_type_trans(skb, net_dev); + + if (unlikely(skb->len > net_dev->mtu)) { + if ((skb->protocol != ETH_P_8021Q) || + (skb->len > net_dev->mtu + 4)) { + percpu_priv->stats.rx_dropped++; + dev_kfree_skb_any(skb); + goto out; + } + } + + if (unlikely(netif_rx(skb) != NET_RX_SUCCESS)) + percpu_priv->stats.rx_dropped++; + else { + percpu_priv->stats.rx_packets++; + percpu_priv->stats.rx_bytes += dpa_fd_length(fd); + } + + net_dev->last_rx = jiffies; + +out: + err = dpa_fd_release(net_dev, fd); + if (unlikely(err < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during RX\n"); + } + + return qman_cb_dqrr_consume; +} + + +static enum qman_cb_dqrr_result __hot +ingress_rx_default_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (unlikely(dpaa_eth_napi_schedule(percpu_priv))) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + prefetchw(&percpu_priv->ingress_calls); + + _dpa_rx(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result +ingress_tx_error_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (dpaa_eth_napi_schedule(percpu_priv)) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + _dpa_tx_error(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result __hot +ingress_tx_default_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (dpaa_eth_napi_schedule(percpu_priv)) { + percpu_priv->in_interrupt++; + return qman_cb_dqrr_stop; + } + + _dpa_tx(net_dev, priv, percpu_priv, &dq->fd); + + return qman_cb_dqrr_consume; +} + +static void shared_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + struct net_device *net_dev; + const struct dpa_priv_s *priv; + int err; + struct dpa_percpu_priv_s *percpu_priv; + struct dpa_fq *dpa_fq = (struct dpa_fq *)fq; + + net_dev = dpa_fq->net_dev; + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + err = dpa_fd_release(net_dev, &msg->ern.fd); + if (unlikely(err < 0)) { + dump_stack(); + panic("Can't release buffer to the BM during a TX\n"); + } + + percpu_priv->stats.tx_dropped++; + percpu_priv->stats.tx_fifo_errors++; +} + +static void egress_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + struct net_device *net_dev; + const struct dpa_priv_s *priv; + struct sk_buff *skb; + struct sk_buff **skbh; + struct dpa_percpu_priv_s *percpu_priv; + dma_addr_t addr = qm_fd_addr(&msg->ern.fd); + struct dpa_bp *bp; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + bp = priv->dpa_bp; + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + percpu_priv->stats.tx_dropped++; + percpu_priv->stats.tx_fifo_errors++; + + /* + * If we intended this buffer to go into the pool + * when the FM was done, we need to put it in + * manually. + */ + if (msg->ern.fd.cmd & FM_FD_CMD_FCO) { + struct bm_buffer bmb; + + bm_buffer_set64(&bmb, addr); + while (bman_release(bp->pool, &bmb, 1, 0)) + cpu_relax(); + + return; + } + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + dma_unmap_single(bp->dev, addr, bp->size, DMA_TO_DEVICE); + + dev_kfree_skb_any(skb); +} + +static const struct qman_fq rx_shared_fq = { + .cb = {shared_rx_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq rx_private_defq = { + .cb = {ingress_rx_default_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq rx_private_errq = { + .cb = {ingress_rx_error_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq tx_private_defq = { + .cb = {ingress_tx_default_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq tx_private_errq = { + .cb = {ingress_tx_error_dqrr, NULL, NULL, NULL} +}; +static const struct qman_fq dummyq = { + .cb = {NULL, NULL, NULL, NULL} +}; +static const struct qman_fq private_egress_fq = { + .cb = {NULL, egress_ern, NULL, NULL} +}; +static const struct qman_fq shared_egress_fq = { + .cb = {NULL, shared_ern, NULL, NULL} +}; + +#ifdef CONFIG_DPAA_ETH_UNIT_TESTS +static bool tx_unit_test_passed = true; + +static void tx_unit_test_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct sk_buff **skbh; + struct sk_buff *skb; + const struct qm_fd *fd; + dma_addr_t addr; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + tx_unit_test_passed = false; + + fd = &msg->ern.fd; + + addr = qm_fd_addr(fd); + + skbh = (struct sk_buff **)phys_to_virt(addr); + skb = *skbh; + + if (!skb || !is_kernel_addr((unsigned long)skb)) + panic("Corrupt skb in ERN!\n"); + + kfree_skb(skb); +} + +static unsigned char *tx_unit_skb_head; +static unsigned char *tx_unit_skb_end; +static int tx_unit_tested; + +static enum qman_cb_dqrr_result tx_unit_test_dqrr( + struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + struct net_device *net_dev; + struct dpa_priv_s *priv; + struct sk_buff **skbh; + struct sk_buff *skb; + const struct qm_fd *fd; + dma_addr_t addr; + unsigned char *startaddr; + struct dpa_percpu_priv_s *percpu_priv; + + tx_unit_test_passed = false; + + tx_unit_tested++; + + net_dev = ((struct dpa_fq *)fq)->net_dev; + priv = netdev_priv(net_dev); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + fd = &dq->fd; + + addr = qm_fd_addr(fd); + + skbh = (struct sk_buff **)phys_to_virt(addr); + startaddr = (unsigned char *)skbh; + skb = *skbh; + + if (!skb || !is_kernel_addr((unsigned long)skb)) + panic("Invalid skb address in TX Unit Test FD\n"); + + /* Make sure we're dealing with the same skb */ + if (skb->head != tx_unit_skb_head + || skb_end_pointer(skb) != tx_unit_skb_end) + goto out; + + /* + * If we recycled, then there must be enough room between fd.addr + * and skb->end for a new RX buffer + */ + if (fd->cmd & FM_FD_CMD_FCO) { + size_t bufsize = skb_end_pointer(skb) - startaddr; + + if (bufsize < fsl_fman_phy_maxfrm) + goto out; + } else { + /* + * If we didn't recycle, but the buffer was big enough, + * increment the counter to put it back + */ + if (skb_end_pointer(skb) - skb->head >= fsl_fman_phy_maxfrm) + (*percpu_priv->dpa_bp_count)++; + + /* If we didn't recycle, the data pointer should be good */ + if (skb->data != startaddr + dpa_fd_offset(fd)) + goto out; + } + + tx_unit_test_passed = true; +out: + /* The skb is no longer needed, and belongs to us */ + kfree_skb(skb); + + return qman_cb_dqrr_consume; +} + +static const struct qman_fq tx_unit_test_fq = { + .cb = {tx_unit_test_dqrr, tx_unit_test_ern, NULL, NULL} +}; + +static struct dpa_fq unit_fq; + +static bool tx_unit_test_ran; /* Starts as false */ + +static int dpa_tx_unit_test(struct net_device *net_dev) +{ + /* Create a new FQ */ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct qman_fq *oldq; + int size, headroom; + struct dpa_percpu_priv_s *percpu_priv; + cpumask_t *oldcpus; + int test_count = 0; + int err = 0; + int tests_failed = 0; + const cpumask_t *cpus = qman_affine_cpus(); + + oldcpus = tsk_cpus_allowed(current); + set_cpus_allowed_ptr(current, cpus); + /* disable bottom halves */ + local_bh_disable(); + + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + qman_irqsource_remove(QM_PIRQ_DQRI); + unit_fq.net_dev = net_dev; + unit_fq.fq_base = tx_unit_test_fq; + + /* Save old queue */ + oldq = priv->egress_fqs[smp_processor_id()]; + + err = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, &unit_fq.fq_base); + + if (err < 0) { + pr_err("UNIT test FQ create failed: %d\n", err); + goto fq_create_fail; + } + + err = qman_init_fq(&unit_fq.fq_base, + QMAN_INITFQ_FLAG_SCHED | QMAN_INITFQ_FLAG_LOCAL, NULL); + if (err < 0) { + pr_err("UNIT test FQ init failed: %d\n", err); + goto fq_init_fail; + } + + pr_err("TX Unit Test using FQ %d\n", qman_fq_fqid(&unit_fq.fq_base)); + + /* Replace queue 0 with this queue */ + priv->egress_fqs[smp_processor_id()] = &unit_fq.fq_base; + + /* Try packet sizes from 64-bytes to just above the maximum */ + for (size = 64; size <= 9600 + 128; size += 64) { + for (headroom = DPA_BP_HEAD; headroom < 0x800; headroom += 16) { + int ret; + struct sk_buff *skb; + + test_count++; + + skb = dev_alloc_skb(size + headroom); + + if (!skb) { + pr_err("Failed to allocate skb\n"); + err = -ENOMEM; + goto end_test; + } + + if (skb_end_pointer(skb) - skb->head >= + fsl_fman_phy_maxfrm) + (*percpu_priv->dpa_bp_count)--; + + skb_put(skb, size + headroom); + skb_pull(skb, headroom); + + tx_unit_skb_head = skb->head; + tx_unit_skb_end = skb_end_pointer(skb); + + skb_set_queue_mapping(skb, smp_processor_id()); + + /* tx */ + ret = net_dev->netdev_ops->ndo_start_xmit(skb, net_dev); + + if (ret != NETDEV_TX_OK) { + pr_err("Failed to TX with err %d\n", ret); + err = -EIO; + goto end_test; + } + + /* Wait for it to arrive */ + ret = spin_event_timeout(qman_poll_dqrr(1) != 0, + 100000, 1); + + if (!ret) + pr_err("TX Packet never arrived\n"); + + /* Was it good? */ + if (tx_unit_test_passed == false) { + pr_err("Test failed:\n"); + pr_err("size: %d pad: %d head: %p end: %p\n", + size, headroom, tx_unit_skb_head, + tx_unit_skb_end); + tests_failed++; + } + } + } + +end_test: + err = qman_retire_fq(&unit_fq.fq_base, NULL); + if (unlikely(err < 0)) + pr_err("Could not retire TX Unit Test FQ (%d)\n", err); + + err = qman_oos_fq(&unit_fq.fq_base); + if (unlikely(err < 0)) + pr_err("Could not OOS TX Unit Test FQ (%d)\n", err); + +fq_init_fail: + qman_destroy_fq(&unit_fq.fq_base, 0); + +fq_create_fail: + priv->egress_fqs[smp_processor_id()] = oldq; + local_bh_enable(); + qman_irqsource_add(QM_PIRQ_DQRI); + tx_unit_test_ran = true; + set_cpus_allowed_ptr(current, oldcpus); + + pr_err("Tested %d/%d packets. %d failed\n", test_count, tx_unit_tested, + tests_failed); + + if (tests_failed) + err = -EINVAL; + + return err; +} +#endif + +static int __cold dpa_start(struct net_device *net_dev) +{ + int err, i; + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + + if (!mac_dev) + goto no_mac; + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) { + if (mac_dev->fm_rtc_enable) + mac_dev->fm_rtc_enable(net_dev); + } +#endif + + dpaa_eth_napi_enable(priv); + + err = mac_dev->init_phy(net_dev); + if (err < 0) { + if (netif_msg_ifup(priv)) + cpu_netdev_err(net_dev, "init_phy() = %d\n", err); + goto init_phy_failed; + } + + for_each_port_device(i, mac_dev->port_dev) + fm_port_enable(mac_dev->port_dev[i]); + + err = priv->mac_dev->start(mac_dev); + if (err < 0) { + if (netif_msg_ifup(priv)) + cpu_netdev_err(net_dev, "mac_dev->start() = %d\n", err); + goto mac_start_failed; + } + +no_mac: + netif_tx_start_all_queues(net_dev); + + return 0; + +mac_start_failed: + for_each_port_device(i, mac_dev->port_dev) + fm_port_disable(mac_dev->port_dev[i]); + +init_phy_failed: + dpaa_eth_napi_disable(priv); + + return err; +} + +static int __cold dpa_stop(struct net_device *net_dev) +{ + int _errno, i; + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + + netif_tx_stop_all_queues(net_dev); + + if (!mac_dev) + return 0; + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) { + if (mac_dev->fm_rtc_disable) + mac_dev->fm_rtc_disable(net_dev); + } +#endif + + _errno = mac_dev->stop(mac_dev); + if (unlikely(_errno < 0)) + if (netif_msg_ifdown(priv)) + cpu_netdev_err(net_dev, "mac_dev->stop() = %d\n", + _errno); + + for_each_port_device(i, mac_dev->port_dev) + fm_port_disable(mac_dev->port_dev[i]); + + if (mac_dev->phy_dev) + phy_disconnect(mac_dev->phy_dev); + mac_dev->phy_dev = NULL; + + dpaa_eth_napi_disable(priv); + + return _errno; +} + +static void __cold dpa_timeout(struct net_device *net_dev) +{ + const struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv; + + priv = netdev_priv(net_dev); + percpu_priv = per_cpu_ptr(priv->percpu_priv, smp_processor_id()); + + if (netif_msg_timer(priv)) + cpu_netdev_crit(net_dev, "Transmit timeout latency: %lu ms\n", + (jiffies - net_dev->trans_start) * 1000 / HZ); + + percpu_priv->stats.tx_errors++; +} + +static int dpa_bp_cmp(const void *dpa_bp0, const void *dpa_bp1) +{ + return ((struct dpa_bp *)dpa_bp0)->size - + ((struct dpa_bp *)dpa_bp1)->size; +} + +static struct dpa_bp * __cold __must_check __attribute__((nonnull)) +dpa_bp_probe(struct platform_device *_of_dev, size_t *count) +{ + int i, lenp, na, ns; + struct device *dev; + struct device_node *dev_node; + const phandle *phandle_prop; + const uint32_t *bpid; + const uint32_t *bpool_cfg; + struct dpa_bp *dpa_bp; + int has_kernel_pool = 0; + int has_shared_pool = 0; + + dev = &_of_dev->dev; + + /* The default is one, if there's no property */ + *count = 1; + + /* There are three types of buffer pool configuration: + * 1) No bp assignment + * 2) A static assignment to an empty configuration + * 3) A static assignment to one or more configured pools + * + * We don't support using multiple unconfigured pools. + */ + + /* Get the buffer pools to be used */ + phandle_prop = of_get_property(dev->of_node, + "fsl,bman-buffer-pools", &lenp); + + if (phandle_prop) + *count = lenp / sizeof(phandle); + else { + if (default_pool) + return default_pool; + + has_kernel_pool = 1; + } + + dpa_bp = devm_kzalloc(dev, *count * sizeof(*dpa_bp), GFP_KERNEL); + if (unlikely(dpa_bp == NULL)) { + dpaa_eth_err(dev, "devm_kzalloc() failed\n"); + return ERR_PTR(-ENOMEM); + } + + dev_node = of_find_node_by_path("/"); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_find_node_by_path(/) failed\n"); + return ERR_PTR(-EINVAL); + } + + na = of_n_addr_cells(dev_node); + ns = of_n_size_cells(dev_node); + + for (i = 0; i < *count && phandle_prop; i++) { + of_node_put(dev_node); + dev_node = of_find_node_by_phandle(phandle_prop[i]); + if (unlikely(dev_node == NULL)) { + dpaa_eth_err(dev, "of_find_node_by_phandle() failed\n"); + return ERR_PTR(-EFAULT); + } + + if (unlikely(!of_device_is_compatible(dev_node, "fsl,bpool"))) { + dpaa_eth_err(dev, + "!of_device_is_compatible(%s, fsl,bpool)\n", + dev_node->full_name); + dpa_bp = ERR_PTR(-EINVAL); + goto _return_of_node_put; + } + + bpid = of_get_property(dev_node, "fsl,bpid", &lenp); + if ((bpid == NULL) || (lenp != sizeof(*bpid))) { + dpaa_eth_err(dev, "fsl,bpid property not found.\n"); + dpa_bp = ERR_PTR(-EINVAL); + goto _return_of_node_put; + } + dpa_bp[i].bpid = *bpid; + + bpool_cfg = of_get_property(dev_node, "fsl,bpool-ethernet-cfg", + &lenp); + if (bpool_cfg && (lenp == (2 * ns + na) * sizeof(*bpool_cfg))) { + const uint32_t *seed_pool; + + dpa_bp[i].count = of_read_number(bpool_cfg, ns); + dpa_bp[i].size = of_read_number(bpool_cfg + ns, ns); + dpa_bp[i].paddr = + of_read_number(bpool_cfg + 2 * ns, na); + + seed_pool = of_get_property(dev_node, + "fsl,bpool-ethernet-seeds", &lenp); + dpa_bp[i].seed_pool = !!seed_pool; + + has_shared_pool = 1; + } else { + has_kernel_pool = 1; + } + + if (i > 0) + has_shared_pool = 1; + } + + if (has_kernel_pool && has_shared_pool) { + dpaa_eth_err(dev, "Invalid buffer pool configuration " + "for node %s\n", dev_node->full_name); + dpa_bp = ERR_PTR(-EINVAL); + goto _return_of_node_put; + } else if (has_kernel_pool) { + dpa_bp->count = DEFAULT_COUNT; + dpa_bp->size = DEFAULT_BUF_SIZE; + dpa_bp->kernel_pool = 1; + } + + sort(dpa_bp, *count, sizeof(*dpa_bp), dpa_bp_cmp, NULL); + + return dpa_bp; + +_return_of_node_put: + if (dev_node) + of_node_put(dev_node); + + return dpa_bp; +} + +static int dpa_bp_create(struct net_device *net_dev, struct dpa_bp *dpa_bp, + size_t count) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + int i; + + if (dpa_bp->kernel_pool) { + priv->shared = 0; + + if (netif_msg_probe(priv)) + cpu_dev_info(net_dev->dev.parent, + "Using private BM buffer pools\n"); + } else { + priv->shared = 1; + } + + priv->dpa_bp = dpa_bp; + priv->bp_count = count; + + for (i = 0; i < count; i++) { + int err; + err = dpa_bp_alloc(&dpa_bp[i]); + if (err < 0) { + dpa_bp_free(priv, dpa_bp); + priv->dpa_bp = NULL; + return err; + } + + /* For now, just point to the default pool. + * We can add support for more pools, later + */ + if (dpa_bp->kernel_pool) + priv->dpa_bp = default_pool; + } + + return 0; +} + +static struct mac_device * __cold __must_check +__attribute__((nonnull)) +dpa_mac_probe(struct platform_device *_of_dev) +{ + struct device *dpa_dev, *dev; + struct device_node *mac_node; + int lenp; + const phandle *phandle_prop; + struct platform_device *of_dev; + struct mac_device *mac_dev; +#ifdef CONFIG_FSL_DPA_1588 + struct net_device *net_dev = NULL; + struct dpa_priv_s *priv = NULL; + struct device_node *timer_node; +#endif + + phandle_prop = of_get_property(_of_dev->dev.of_node, "fsl,fman-mac", &lenp); + if (phandle_prop == NULL) + return NULL; + + BUG_ON(lenp != sizeof(phandle)); + + dpa_dev = &_of_dev->dev; + + mac_node = of_find_node_by_phandle(*phandle_prop); + if (unlikely(mac_node == NULL)) { + dpaa_eth_err(dpa_dev, "of_find_node_by_phandle() failed\n"); + return ERR_PTR(-EFAULT); + } + + of_dev = of_find_device_by_node(mac_node); + if (unlikely(of_dev == NULL)) { + dpaa_eth_err(dpa_dev, "of_find_device_by_node(%s) failed\n", + mac_node->full_name); + of_node_put(mac_node); + return ERR_PTR(-EINVAL); + } + of_node_put(mac_node); + + dev = &of_dev->dev; + + mac_dev = dev_get_drvdata(dev); + if (unlikely(mac_dev == NULL)) { + dpaa_eth_err(dpa_dev, "dev_get_drvdata(%s) failed\n", + dev_name(dev)); + return ERR_PTR(-EINVAL); + } + +#ifdef CONFIG_FSL_DPA_1588 + phandle_prop = of_get_property(mac_node, "ptimer-handle", &lenp); + if (phandle_prop && ((mac_dev->phy_if != PHY_INTERFACE_MODE_SGMII) || + ((mac_dev->phy_if == PHY_INTERFACE_MODE_SGMII) && + (mac_dev->speed == SPEED_1000)))) { + timer_node = of_find_node_by_phandle(*phandle_prop); + if (timer_node && (net_dev = dev_get_drvdata(dpa_dev))) { + priv = netdev_priv(net_dev); + if (!dpa_ptp_init(priv)) + dpaa_eth_info(dev, "%s: ptp-timer enabled\n", + mac_node->full_name); + } + } +#endif + + return mac_dev; +} + +static const char fsl_qman_frame_queues[][25] = { + [RX] = "fsl,qman-frame-queues-rx", + [TX] = "fsl,qman-frame-queues-tx" +}; + +#ifdef CONFIG_DEBUG_FS +static int __cold dpa_debugfs_show(struct seq_file *file, void *offset) +{ + int i; + struct dpa_priv_s *priv; + struct dpa_percpu_priv_s *percpu_priv, total; + struct dpa_bp *dpa_bp; + unsigned int count_total = 0; + + BUG_ON(offset == NULL); + + priv = netdev_priv((struct net_device *)file->private); + + dpa_bp = priv->dpa_bp; + + memset(&total, 0, sizeof(total)); + + seq_printf(file, "\tirqs\trx\ttx\trecycle\tconfirm\ttx err\trx err" \ + "\tbp count\n"); + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + + total.in_interrupt += percpu_priv->in_interrupt; + total.ingress_calls += percpu_priv->stats.rx_packets; + total.stats.tx_packets += percpu_priv->stats.tx_packets; + total.tx_returned += percpu_priv->tx_returned; + total.tx_confirm += percpu_priv->tx_confirm; + total.stats.tx_errors += percpu_priv->stats.tx_errors; + total.stats.rx_errors += percpu_priv->stats.rx_errors; + count_total += *percpu_priv->dpa_bp_count; + + seq_printf(file, "%hu/%hu\t%u\t%lu\t%lu\t%u\t%u\t%lu\t%lu" \ + "\t%d\n", + get_hard_smp_processor_id(i), i, + percpu_priv->in_interrupt, + percpu_priv->stats.rx_packets, + percpu_priv->stats.tx_packets, + percpu_priv->tx_returned, + percpu_priv->tx_confirm, + percpu_priv->stats.tx_errors, + percpu_priv->stats.rx_errors, + *percpu_priv->dpa_bp_count); + } + seq_printf(file, "Total\t%u\t%u\t%lu\t%u\t%u\t%lu\t%lu\t%d\n", + total.in_interrupt, + total.ingress_calls, + total.stats.tx_packets, + total.tx_returned, + total.tx_confirm, + total.stats.tx_errors, + total.stats.rx_errors, + count_total); + + return 0; +} + +static int __cold dpa_debugfs_open(struct inode *inode, struct file *file) +{ + int _errno; + const struct net_device *net_dev; + + _errno = single_open(file, dpa_debugfs_show, inode->i_private); + if (unlikely(_errno < 0)) { + net_dev = (struct net_device *)inode->i_private; + + if (netif_msg_drv((struct dpa_priv_s *)netdev_priv(net_dev))) + cpu_netdev_err(net_dev, "single_open() = %d\n", + _errno); + } + return _errno; +} + +static const struct file_operations dpa_debugfs_fops = { + .open = dpa_debugfs_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; +#endif + +static u16 dpa_select_queue(struct net_device *net_dev, struct sk_buff *skb) +{ + return smp_processor_id(); +} + +static const struct net_device_ops dpa_private_ops = { + .ndo_open = dpa_start, + .ndo_start_xmit = dpa_tx, + .ndo_stop = dpa_stop, + .ndo_change_rx_flags = dpa_change_rx_flags, + .ndo_tx_timeout = dpa_timeout, + .ndo_get_stats = dpa_get_stats, + .ndo_set_mac_address = dpa_set_mac_address, + .ndo_validate_addr = eth_validate_addr, + .ndo_select_queue = dpa_select_queue, + .ndo_change_mtu = dpa_change_mtu, + .ndo_set_rx_mode = dpa_set_multicast_list, + .ndo_do_ioctl = dpa_ioctl, +}; + +static const struct net_device_ops dpa_shared_ops = { + .ndo_open = dpa_start, + .ndo_start_xmit = dpa_shared_tx, + .ndo_stop = dpa_stop, + .ndo_change_rx_flags = dpa_change_rx_flags, + .ndo_tx_timeout = dpa_timeout, + .ndo_get_stats = dpa_get_stats, + .ndo_set_mac_address = dpa_set_mac_address, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_rx_mode = dpa_set_multicast_list, + .ndo_do_ioctl = dpa_ioctl, +}; + +static int dpa_get_channel(struct device *dev, + struct device_node *dpa_node) +{ + struct device_node *dev_node; + const uint32_t *channel_id; + int lenp; + + dev_node = of_parse_phandle(dpa_node, "fsl,qman-channel", 0); + if (dev_node == NULL) { + dpaa_eth_err(dev, "Could not find fsl,qman-channel property\n"); + return -EFAULT; + } + + channel_id = of_get_property(dev_node, "fsl,qman-channel-id", &lenp); + if ((channel_id == NULL) || (lenp < sizeof(*channel_id))) { + dpaa_eth_err(dev, "Could not get fsl,qman-channel-id in %s\n", + dev_node->full_name); + of_node_put(dev_node); + return -EINVAL; + } + of_node_put(dev_node); + return *channel_id; +} + +struct fqid_cell { + uint32_t start; + uint32_t count; +}; + +static const struct fqid_cell default_fqids[][3] = { + [RX] = { {0, 1}, {0, 1}, {0, DPAA_ETH_RX_QUEUES} }, + [TX] = { {0, 1}, {0, 1}, {0, DPAA_ETH_TX_QUEUES} } +}; + +static int +dpa_fq_probe(struct platform_device *_of_dev, struct list_head *list, + struct dpa_fq **defq, struct dpa_fq **errq, + struct dpa_fq **fqs, int ptype) +{ + struct device *dev = &_of_dev->dev; + struct device_node *np = dev->of_node; + const struct fqid_cell *fqids; + int i, j, lenp; + int num_fqids; + struct dpa_fq *dpa_fq; + int err = 0; + + fqids = of_get_property(np, fsl_qman_frame_queues[ptype], &lenp); + if (fqids == NULL) { + fqids = default_fqids[ptype]; + num_fqids = 3; + } else + num_fqids = lenp / sizeof(*fqids); + + for (i = 0; i < num_fqids; i++) { + dpa_fq = devm_kzalloc(dev, sizeof(*dpa_fq) * fqids[i].count, + GFP_KERNEL); + if (dpa_fq == NULL) { + dpaa_eth_err(dev, "devm_kzalloc() failed\n"); + return -ENOMEM; + } + + /* The first queue is the Error queue */ + if (i == 0 && errq) { + *errq = dpa_fq; + + if (fqids[i].count != 1) { + dpaa_eth_err(dev, "Too many error queues!\n"); + err = -EINVAL; + goto invalid_error_queues; + } + } + + /* The second queue is the the Default queue */ + if (i == 1 && defq) { + *defq = dpa_fq; + + if (fqids[i].count != 1) { + dpaa_eth_err(dev, "Too many default queues!\n"); + err = -EINVAL; + goto invalid_default_queues; + } + } + + /* + * All subsequent queues are gathered together. + * The first 8 will be used by the private linux interface + * if these are TX queues + */ + if (i == 2 || (!errq && i == 0 && fqs)) + *fqs = dpa_fq; + +#warning We lost the 8-queue enforcement + +#define DPA_NUM_WQS 8 + for (j = 0; j < fqids[i].count; j++) { + dpa_fq[j].fqid = fqids[i].start ? + fqids[i].start + j : 0; + dpa_fq[j].wq = dpa_fq[j].fqid ? + dpa_fq[j].fqid % DPA_NUM_WQS : DPA_NUM_WQS - 1; + list_add_tail(&dpa_fq[j].list, list); + } + } + +invalid_default_queues: +invalid_error_queues: + return err; +} + +static void dpa_setup_ingress(struct dpa_priv_s *priv, struct dpa_fq *fq, + const struct qman_fq *template) +{ + fq->fq_base = *template; + fq->net_dev = priv->net_dev; + + fq->flags = QMAN_FQ_FLAG_NO_ENQUEUE; + fq->channel = priv->channel; +} + +static void dpa_setup_egress(struct dpa_priv_s *priv, + struct list_head *head, struct dpa_fq *fq, + struct fm_port *port) +{ + struct list_head *ptr = &fq->list; + int i = 0; + + while (true) { + struct dpa_fq *iter = list_entry(ptr, struct dpa_fq, list); + if (priv->shared) + iter->fq_base = shared_egress_fq; + else + iter->fq_base = private_egress_fq; + + iter->net_dev = priv->net_dev; + priv->egress_fqs[i++] = &iter->fq_base; + + if (port) { + iter->flags = QMAN_FQ_FLAG_TO_DCPORTAL; + iter->channel = fm_get_tx_port_channel(port); + } else + iter->flags = QMAN_FQ_FLAG_NO_MODIFY; + + if (list_is_last(ptr, head)) + break; + + ptr = ptr->next; + } +} + +static void dpa_setup_ingress_queues(struct dpa_priv_s *priv, + struct list_head *head, struct dpa_fq *fq) +{ + struct list_head *ptr = &fq->list; + u32 fqid; + int portals[NR_CPUS]; + int num_portals; + int i; + struct device_node *qm_node; + struct device_node *cpu_node; + const uint32_t *uint32_prop; + const phandle *ph; + int lenp; + int cpu; + bool found; + const cpumask_t *affine_cpus = qman_affine_cpus(); + + /* + * Make a list of the available portals. + * We're only interested in those portals which have an affine core + * and moreover that core is included in the cpumask provided by QMan + */ + num_portals = 0; + for_each_compatible_node(qm_node, NULL, "fsl,qman-portal") { + /* Check if portal has an affine core */ + ph = of_get_property(qm_node, "cpu-handle", &lenp); + if (!ph || (lenp != sizeof(phandle))) + continue; + + /* Get the hardware id of the affine core */ + cpu_node = of_find_node_by_phandle(*ph); + if (!cpu_node) + continue; + uint32_prop = of_get_property(cpu_node, "reg", &lenp); + if (!uint32_prop || (lenp != sizeof(uint32_t))) { + dpaa_eth_err(fq->net_dev->dev.parent, + "failed to get property %s for node %s", + "reg", cpu_node->full_name); + continue; + } + + /* If it's not included in the cpumask we got from QMan, + * skip portal */ + found = false; + for_each_cpu(cpu, affine_cpus) { + if (*uint32_prop == get_hard_smp_processor_id(cpu) + && !of_get_property(qm_node, + "fsl,usdpaa-portal", NULL)) { + found = true; + break; + } + } + if (!found) + continue; + + /* This portal is good, store its sw channel */ + uint32_prop = of_get_property(qm_node, + "fsl,qman-channel-id", &lenp); + if (!uint32_prop || (lenp != sizeof(uint32_t))) { + dpaa_eth_err(fq->net_dev->dev.parent, + "Failed to get property %s for node %s", + "fsl,qman-channel-id", qm_node->full_name); + continue; + } + portals[num_portals++] = *uint32_prop; + } + if (num_portals == 0) { + dpaa_eth_err(fq->net_dev->dev.parent, + "No adequate Qman portals found"); + return; + } + + i = 0; + fqid = 0; + if (priv->mac_dev) + fqid = (priv->mac_dev->res->start & 0x1fffff) >> 6; + + while (true) { + struct dpa_fq *iter = list_entry(ptr, struct dpa_fq, list); + + if (priv->shared) + dpa_setup_ingress(priv, iter, &rx_shared_fq); + else + dpa_setup_ingress(priv, iter, &rx_private_defq); + + if (!iter->fqid) + iter->fqid = fqid++; + + /* Assign the queues to a channel in a round-robin fashion */ + iter->channel = portals[i]; + i = (i + 1) % num_portals; + + if (list_is_last(ptr, head)) + break; + + ptr = ptr->next; + } +} + +static void +dpaa_eth_init_tx_port(struct fm_port *port, struct dpa_fq *errq, + struct dpa_fq *defq, bool has_timer) +{ + struct fm_port_non_rx_params tx_port_param; + + dpaa_eth_init_port(tx, port, tx_port_param, errq->fqid, defq->fqid, + has_timer); +} + +static void +dpaa_eth_init_rx_port(struct fm_port *port, struct dpa_bp *bp, size_t count, + struct dpa_fq *errq, struct dpa_fq *defq, bool has_timer) +{ + struct fm_port_rx_params rx_port_param; + int i; + + count = min(ARRAY_SIZE(rx_port_param.pool_param), count); + rx_port_param.num_pools = count; + for (i = 0; i < count; i++) { + if (i >= rx_port_param.num_pools) + break; + + rx_port_param.pool_param[i].id = bp[i].bpid; + rx_port_param.pool_param[i].size = bp[i].size; + } + + dpaa_eth_init_port(rx, port, rx_port_param, errq->fqid, defq->fqid, + has_timer); +} + +static void dpa_rx_fq_init(struct dpa_priv_s *priv, struct list_head *head, + struct dpa_fq *defq, struct dpa_fq *errq, + struct dpa_fq *fqs) +{ + if (fqs) + dpa_setup_ingress_queues(priv, head, fqs); + + /* Only real devices need default/error queues set up */ + if (!priv->mac_dev) + return; + + if (defq->fqid == 0 && netif_msg_probe(priv)) + cpu_pr_info("Using dynamic RX QM frame queues\n"); + + if (priv->shared) { + dpa_setup_ingress(priv, defq, &rx_shared_fq); + dpa_setup_ingress(priv, errq, &rx_shared_fq); + } else { + dpa_setup_ingress(priv, defq, &rx_private_defq); + dpa_setup_ingress(priv, errq, &rx_private_errq); + } +} + +static void dpa_tx_fq_init(struct dpa_priv_s *priv, struct list_head *head, + struct dpa_fq *defq, struct dpa_fq *errq, + struct dpa_fq *fqs, struct fm_port *port) +{ + if (fqs) + dpa_setup_egress(priv, head, fqs, port); + + /* Only real devices need default/error queues set up */ + if (!priv->mac_dev) + return; + + if (defq->fqid == 0 && netif_msg_probe(priv)) + cpu_pr_info("Using dynamic TX QM frame queues\n"); + + /* The shared driver doesn't use tx confirmation */ + if (priv->shared) { + dpa_setup_ingress(priv, defq, &dummyq); + dpa_setup_ingress(priv, errq, &dummyq); + } else { + dpa_setup_ingress(priv, defq, &tx_private_defq); + dpa_setup_ingress(priv, errq, &tx_private_errq); + } +} + +static int dpa_netdev_init(struct device_node *dpa_node, + struct net_device *net_dev) +{ + int err; + const uint8_t *mac_addr; + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct device *dev = net_dev->dev.parent; + + net_dev->features |= DPA_NETIF_FEATURES; + net_dev->vlan_features |= DPA_NETIF_FEATURES; + + if (!priv->mac_dev) { + /* Get the MAC address */ + mac_addr = of_get_mac_address(dpa_node); + if (mac_addr == NULL) { + if (netif_msg_probe(priv)) + dpaa_eth_err(dev, "No MAC address found!\n"); + return -EINVAL; + } + } else { + net_dev->mem_start = priv->mac_dev->res->start; + net_dev->mem_end = priv->mac_dev->res->end; + + mac_addr = priv->mac_dev->addr; + net_dev->features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM); + net_dev->vlan_features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM); + } + + memcpy(net_dev->perm_addr, mac_addr, net_dev->addr_len); + memcpy(net_dev->dev_addr, mac_addr, net_dev->addr_len); + + SET_ETHTOOL_OPS(net_dev, &dpa_ethtool_ops); + net_dev->needed_headroom = DPA_BP_HEAD; + net_dev->watchdog_timeo = tx_timeout * HZ / 1000; + + err = register_netdev(net_dev); + if (err < 0) { + dpaa_eth_err(dev, "register_netdev() = %d\n", err); + return err; + } + +#ifdef CONFIG_DEBUG_FS + priv->debugfs_file = debugfs_create_file(net_dev->name, S_IRUGO, + dpa_debugfs_root, net_dev, + &dpa_debugfs_fops); + if (unlikely(priv->debugfs_file == NULL)) { + cpu_netdev_err(net_dev, "debugfs_create_file(%s/%s/%s) = %d\n", + powerpc_debugfs_root->d_iname, + dpa_debugfs_root->d_iname, + net_dev->name, err); + + unregister_netdev(net_dev); + return -ENOMEM; + } +#endif + + return 0; +} + +static int dpa_shared_netdev_init(struct device_node *dpa_node, + struct net_device *net_dev) +{ + net_dev->netdev_ops = &dpa_shared_ops; + + return dpa_netdev_init(dpa_node, net_dev); +} + +static int dpa_private_netdev_init(struct device_node *dpa_node, + struct net_device *net_dev) +{ + int i; + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct dpa_percpu_priv_s *percpu_priv; + + for_each_online_cpu(i) { + percpu_priv = per_cpu_ptr(priv->percpu_priv, i); + percpu_priv->net_dev = net_dev; + + percpu_priv->dpa_bp = priv->dpa_bp; + percpu_priv->dpa_bp_count = + per_cpu_ptr(priv->dpa_bp->percpu_count, i); + netif_napi_add(net_dev, &percpu_priv->napi, dpaa_eth_poll, + DPA_NAPI_WEIGHT); + } + + net_dev->netdev_ops = &dpa_private_ops; + + return dpa_netdev_init(dpa_node, net_dev); +} + +static int dpa_alloc_pcd_fqids(struct device *dev, uint32_t num, + uint8_t alignment, uint32_t *base_fqid) +{ + dpaa_eth_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static int dpa_free_pcd_fqids(struct device *dev, uint32_t base_fqid) +{ + + dpaa_eth_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static ssize_t dpaa_eth_show_addr(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpa_priv_s *priv = netdev_priv(to_net_dev(dev)); + struct mac_device *mac_dev = priv->mac_dev; + + if (mac_dev) + return sprintf(buf, "%llx", + (unsigned long long)mac_dev->res->start); + else + return sprintf(buf, "none"); +} + +static DEVICE_ATTR(device_addr, S_IRUGO, dpaa_eth_show_addr, NULL); + +static ssize_t dpaa_eth_show_fqids(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpa_priv_s *priv = netdev_priv(to_net_dev(dev)); + ssize_t bytes = 0; + int i = 0; + char *str; + struct dpa_fq *fq; + struct dpa_fq *tmp; + struct dpa_fq *prev = NULL; + u32 first_fqid = 0; + u32 last_fqid = 0; + char *prevstr = NULL; + + list_for_each_entry_safe(fq, tmp, &priv->dpa_fq_list, list) { + void *dqrr = fq->fq_base.cb.dqrr; + if (dqrr == ingress_rx_error_dqrr) + str = "error"; + else if (i == 1 && dqrr == ingress_rx_default_dqrr) + str = "default"; + else if (dqrr == ingress_rx_error_dqrr || + dqrr == ingress_rx_default_dqrr) + str = "RX"; + else if (dqrr == ingress_tx_default_dqrr) + str = "TX confirmation"; + else if (dqrr == ingress_tx_error_dqrr) + str = "TX error"; + else if (dqrr == NULL) + str = "TX"; + else + str = "unknown"; + + if (prev && (abs(fq->fqid - prev->fqid) != 1 || + str != prevstr)) { + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, + "%s: %d\n", prevstr, prev->fqid); + else + bytes += sprintf(buf + bytes, + "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + } + + if (prev && abs(fq->fqid - prev->fqid) == 1 && str == prevstr) + last_fqid = fq->fqid; + else + first_fqid = last_fqid = fq->fqid; + + prev = fq; + prevstr = str; + i++; + } + + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, "%s: %d\n", prevstr, prev->fqid); + else + bytes += sprintf(buf + bytes, "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + + return bytes; +} + +static DEVICE_ATTR(fqids, S_IRUGO, dpaa_eth_show_fqids, NULL); + + +static void dpaa_eth_sysfs_init(struct device *dev) +{ + if (device_create_file(dev, &dev_attr_device_addr)) + dev_err(dev, "Error creating dpaa_eth addr file\n"); + if (device_create_file(dev, &dev_attr_fqids)) + dev_err(dev, "Error creating dpaa_eth fqids file\n"); +} +static const struct of_device_id dpa_match[] ; +static int +dpaa_eth_probe(struct platform_device *_of_dev) +{ + int err, i; + struct device *dev; + struct device_node *dpa_node; + struct dpa_bp *dpa_bp; + struct dpa_fq *dpa_fq, *tmp; + struct list_head rxfqlist; + struct list_head txfqlist; + size_t count; + struct net_device *net_dev = NULL; + struct dpa_priv_s *priv = NULL; + struct dpa_fq *rxdefault = NULL; + struct dpa_fq *txdefault = NULL; + struct dpa_fq *rxerror = NULL; + struct dpa_fq *txerror = NULL; + struct dpa_fq *rxextra = NULL; + struct dpa_fq *txfqs = NULL; + struct fm_port *rxport = NULL; + struct fm_port *txport = NULL; + bool has_timer = FALSE; + struct mac_device *mac_dev; + int proxy_enet; + const struct of_device_id *match; + + dev = &_of_dev->dev; + + dpa_node = dev->of_node; + + match = of_match_device(dpa_match, dev); + if (!match) + return -EINVAL; + + if (!of_device_is_available(dpa_node)) + return -ENODEV; + + /* + * If it's not an fsl,dpa-ethernet node, we just serve as a proxy + * initializer driver, and don't do any linux device setup + */ + proxy_enet = strcmp(match->compatible, "fsl,dpa-ethernet"); + + /* + * Allocate this early, so we can store relevant information in + * the private area + */ + if (!proxy_enet) { + net_dev = alloc_etherdev_mq(sizeof(*priv), DPAA_ETH_TX_QUEUES); + if (!net_dev) { + dpaa_eth_err(dev, "alloc_etherdev_mq() failed\n"); + return -ENOMEM; + } + + /* Do this here, so we can be verbose early */ + SET_NETDEV_DEV(net_dev, dev); + dev_set_drvdata(dev, net_dev); + + priv = netdev_priv(net_dev); + priv->net_dev = net_dev; + + priv->msg_enable = netif_msg_init(debug, -1); + } + + /* Get the buffer pools assigned to this interface */ + dpa_bp = dpa_bp_probe(_of_dev, &count); + if (IS_ERR(dpa_bp)) { + err = PTR_ERR(dpa_bp); + goto bp_probe_failed; + } + + mac_dev = dpa_mac_probe(_of_dev); + if (IS_ERR(mac_dev)) { + err = PTR_ERR(mac_dev); + goto mac_probe_failed; + } else if (mac_dev) { + rxport = mac_dev->port_dev[RX]; + txport = mac_dev->port_dev[TX]; + } + + INIT_LIST_HEAD(&rxfqlist); + INIT_LIST_HEAD(&txfqlist); + + if (rxport) + err = dpa_fq_probe(_of_dev, &rxfqlist, &rxdefault, &rxerror, + &rxextra, RX); + else + err = dpa_fq_probe(_of_dev, &rxfqlist, NULL, NULL, + &rxextra, RX); + + if (err < 0) + goto rx_fq_probe_failed; + + if (txport) + err = dpa_fq_probe(_of_dev, &txfqlist, &txdefault, &txerror, + &txfqs, TX); + else + err = dpa_fq_probe(_of_dev, &txfqlist, NULL, NULL, &txfqs, TX); + + if (err < 0) + goto tx_fq_probe_failed; + + /* + * Now we have all of the configuration information. + * We support a number of configurations: + * 1) Private interface - An optimized linux ethernet driver with + * a real network connection. + * 2) Shared interface - A device intended for virtual connections + * or for a real interface that is shared between partitions + * 3) Proxy initializer - Just configures the MAC on behalf of + * another partition + */ + + /* bp init */ + if (net_dev) { + err = dpa_bp_create(net_dev, dpa_bp, count); + + if (err < 0) + goto bp_create_failed; + + priv->mac_dev = mac_dev; + + priv->channel = dpa_get_channel(dev, dpa_node); + + if (priv->channel < 0) { + err = priv->channel; + goto get_channel_failed; + } + + dpa_rx_fq_init(priv, &rxfqlist, rxdefault, rxerror, rxextra); + dpa_tx_fq_init(priv, &txfqlist, txdefault, txerror, txfqs, + txport); + + /* Add the FQs to the interface, and make them active */ + INIT_LIST_HEAD(&priv->dpa_fq_list); + + list_for_each_entry_safe(dpa_fq, tmp, &rxfqlist, list) { + err = _dpa_fq_alloc(&priv->dpa_fq_list, dpa_fq); + if (err < 0) + goto fq_alloc_failed; + } + + list_for_each_entry_safe(dpa_fq, tmp, &txfqlist, list) { + err = _dpa_fq_alloc(&priv->dpa_fq_list, dpa_fq); + if (err < 0) + goto fq_alloc_failed; + } + + if (priv->tsu && priv->tsu->valid) + has_timer = TRUE; + } + + /* All real interfaces need their ports initialized */ + if (mac_dev) { + struct fm_port_pcd_param rx_port_pcd_param; + + dpaa_eth_init_rx_port(rxport, dpa_bp, count, rxerror, + rxdefault, has_timer); + dpaa_eth_init_tx_port(txport, txerror, txdefault, has_timer); + + rx_port_pcd_param.cba = dpa_alloc_pcd_fqids; + rx_port_pcd_param.cbf = dpa_free_pcd_fqids; + rx_port_pcd_param.dev = dev; + fm_port_pcd_bind(rxport, &rx_port_pcd_param); + } + + /* + * Proxy interfaces need to be started, and the allocated + * memory freed + */ + if (!net_dev) { + devm_kfree(&_of_dev->dev, dpa_bp); + devm_kfree(&_of_dev->dev, rxdefault); + devm_kfree(&_of_dev->dev, rxerror); + devm_kfree(&_of_dev->dev, txdefault); + devm_kfree(&_of_dev->dev, txerror); + + if (mac_dev) + for_each_port_device(i, mac_dev->port_dev) + fm_port_enable(mac_dev->port_dev[i]); + + return 0; + } + + /* Now we need to initialize either a private or shared interface */ + priv->percpu_priv = __alloc_percpu(sizeof(*priv->percpu_priv), + __alignof__(*priv->percpu_priv)); + if (priv->percpu_priv == NULL) { + dpaa_eth_err(dev, "__alloc_percpu() failed\n"); + err = -ENOMEM; + goto alloc_percpu_failed; + } + + if (priv->shared) + err = dpa_shared_netdev_init(dpa_node, net_dev); + else + err = dpa_private_netdev_init(dpa_node, net_dev); + + if (err < 0) + goto netdev_init_failed; + + dpaa_eth_sysfs_init(&net_dev->dev); + +#ifdef CONFIG_DPAA_ETH_UNIT_TESTS + /* The unit test is designed to test private interfaces */ + if (!priv->shared && !tx_unit_test_ran) { + err = dpa_tx_unit_test(net_dev); + + BUG_ON(err); + } +#endif + + return 0; + +netdev_init_failed: + if (net_dev) + free_percpu(priv->percpu_priv); +alloc_percpu_failed: +fq_alloc_failed: + if (net_dev) + dpa_fq_free(dev, &priv->dpa_fq_list); +get_channel_failed: + if (net_dev) + dpa_bp_free(priv, priv->dpa_bp); +bp_create_failed: +tx_fq_probe_failed: +rx_fq_probe_failed: +mac_probe_failed: +bp_probe_failed: + dev_set_drvdata(dev, NULL); + if (net_dev) + free_netdev(net_dev); + + return err; +} + +static const struct of_device_id dpa_match[] = { + { + .compatible = "fsl,dpa-ethernet" + }, + { + .compatible = "fsl,dpa-ethernet-init" + }, + {} +}; +MODULE_DEVICE_TABLE(of, dpa_match); + +static int __cold dpa_remove(struct platform_device *of_dev) +{ + int err; + struct device *dev; + struct net_device *net_dev; + struct dpa_priv_s *priv; + + dev = &of_dev->dev; + net_dev = dev_get_drvdata(dev); + priv = netdev_priv(net_dev); + + dev_set_drvdata(dev, NULL); + unregister_netdev(net_dev); + + err = dpa_fq_free(dev, &priv->dpa_fq_list); + + free_percpu(priv->percpu_priv); + + dpa_bp_free(priv, priv->dpa_bp); + +#ifdef CONFIG_DEBUG_FS + debugfs_remove(priv->debugfs_file); +#endif + +#ifdef CONFIG_FSL_DPA_1588 + if (priv->tsu && priv->tsu->valid) + dpa_ptp_cleanup(priv); +#endif + + free_netdev(net_dev); + + return err; +} + +static struct platform_driver dpa_driver = { + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = dpa_match, + .owner = THIS_MODULE, + }, + .probe = dpaa_eth_probe, + .remove = dpa_remove +}; + +static int __init __cold dpa_load(void) +{ + int _errno; + + cpu_pr_info(KBUILD_MODNAME ": " DPA_DESCRIPTION " (" VERSION ")\n"); + +#ifdef CONFIG_DEBUG_FS + dpa_debugfs_root = debugfs_create_dir(KBUILD_MODNAME, + powerpc_debugfs_root); + if (unlikely(dpa_debugfs_root == NULL)) { + _errno = -ENOMEM; + cpu_pr_err(KBUILD_MODNAME ": %s:%hu:%s(): " + "debugfs_create_dir(%s/"KBUILD_MODNAME") = %d\n", + __file__, __LINE__, __func__, + powerpc_debugfs_root->d_iname, _errno); + goto _return; + } +#endif + + _errno = platform_driver_register(&dpa_driver); + if (unlikely(_errno < 0)) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): platform_driver_register() = %d\n", + __file__, __LINE__, __func__, _errno); + goto _return_debugfs_remove; + } + + goto _return; + +_return_debugfs_remove: +#ifdef CONFIG_DEBUG_FS + debugfs_remove(dpa_debugfs_root); +#endif +_return: + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); + + return _errno; +} +module_init(dpa_load); + +static void __exit __cold dpa_unload(void) +{ + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + platform_driver_unregister(&dpa_driver); + +#ifdef CONFIG_DEBUG_FS + debugfs_remove(dpa_debugfs_root); +#endif + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); +} +module_exit(dpa_unload); + +static int __init fsl_fman_phy_set_max_frm(char *str) +{ + int ret = 0; + + ret = get_option(&str, &fsl_fman_phy_maxfrm); + if (ret != 1) { + /* This will only work if CONFIG_EARLY_PRINTK is compiled in, + * and something like "earlyprintk=serial,uart0,115200" is + * specified in the bootargs */ + printk(KERN_WARNING "No suitable %s= prop in bootargs; " + "will use the default DPA_MAX_FRM_SIZE (%d) " + "from Kconfig.\n", + FSL_FMAN_PHY_MAXFRM_BOOTARG, CONFIG_DPA_MAX_FRM_SIZE); + + fsl_fman_phy_maxfrm = CONFIG_DPA_MAX_FRM_SIZE; + return 1; + } + + /* Don't allow invalid bootargs; fallback to the Kconfig value */ + if (fsl_fman_phy_maxfrm < 64 || fsl_fman_phy_maxfrm > 9600) { + printk(KERN_WARNING "Invalid %s=%d in bootargs, valid range is " + "64-9600. Falling back to the DPA_MAX_FRM_SIZE (%d) " + "from Kconfig.\n", + FSL_FMAN_PHY_MAXFRM_BOOTARG, fsl_fman_phy_maxfrm, + CONFIG_DPA_MAX_FRM_SIZE); + + fsl_fman_phy_maxfrm = CONFIG_DPA_MAX_FRM_SIZE; + return 1; + } + + printk(KERN_INFO "Using fsl_fman_phy_maxfrm=%d from bootargs\n", + fsl_fman_phy_maxfrm); + return 0; +} +early_param(FSL_FMAN_PHY_MAXFRM_BOOTARG, fsl_fman_phy_set_max_frm); --- linux-ppc-3.8.0.orig/drivers/net/dpa/dpaa_1588.c +++ linux-ppc-3.8.0/drivers/net/dpa/dpaa_1588.c @@ -0,0 +1,562 @@ +/* + * drivers/net/dpa/dpaa_1588.c + * + * Copyright (C) 2011 Freescale Semiconductor, Inc. + * Copyright (C) 2009 IXXAT Automation, GmbH + * + * DPAA Ethernet Driver -- IEEE 1588 interface functionality + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "dpaa_eth.h" +#include "dpaa_1588.h" + +static int dpa_ptp_init_circ(struct dpa_ptp_circ_buf *ptp_buf, u32 size) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + + circ_buf->buf = vmalloc(sizeof(struct dpa_ptp_data) * size); + if (!circ_buf->buf) + return 1; + + circ_buf->head = 0; + circ_buf->tail = 0; + ptp_buf->size = size; + spin_lock_init(&ptp_buf->ptp_lock); + + return 0; +} + +static void dpa_ptp_reset_circ(struct dpa_ptp_circ_buf *ptp_buf, u32 size) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + + circ_buf->head = 0; + circ_buf->tail = 0; + ptp_buf->size = size; +} + +static int dpa_ptp_insert(struct dpa_ptp_circ_buf *ptp_buf, + struct dpa_ptp_data *data) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + int size = ptp_buf->size; + struct dpa_ptp_data *tmp; + unsigned long flags; + int head, tail; + + spin_lock_irqsave(&ptp_buf->ptp_lock, flags); + + head = circ_buf->head; + tail = circ_buf->tail; + + if (CIRC_SPACE(head, tail, size) <= 0) { + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + return 1; + } + + tmp = (struct dpa_ptp_data *)(circ_buf->buf) + head; + memcpy(tmp, data, sizeof(struct dpa_ptp_data)); + + circ_buf->head = (head + 1) & (size - 1); + + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + + return 0; +} + +static int dpa_ptp_is_ident_match(struct dpa_ptp_ident *dst, + struct dpa_ptp_ident *src) +{ + int ret; + + if ((dst->version != src->version) || (dst->msg_type != src->msg_type)) + return 0; + + if ((dst->netw_prot == src->netw_prot) + || src->netw_prot == DPA_PTP_PROT_DONTCARE) { + if (dst->seq_id != src->seq_id) + return 0; + + ret = memcmp(dst->snd_port_id, src->snd_port_id, + DPA_PTP_SOURCE_PORT_LENGTH); + if (ret) + return 0; + else + return 1; + } + + return 0; +} + +static int dpa_ptp_find_and_remove(struct dpa_ptp_circ_buf *ptp_buf, + struct dpa_ptp_ident *ident, + struct dpa_ptp_time *ts) +{ + struct circ_buf *circ_buf = &ptp_buf->circ_buf; + int size = ptp_buf->size; + int head, tail, idx; + unsigned long flags; + struct dpa_ptp_data *tmp; + struct dpa_ptp_ident *tmp_ident; + + spin_lock_irqsave(&ptp_buf->ptp_lock, flags); + + head = circ_buf->head; + tail = idx = circ_buf->tail; + + if (CIRC_CNT_TO_END(head, tail, size) == 0) { + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + return 1; + } + + while (idx != head) { + tmp = (struct dpa_ptp_data *)(circ_buf->buf) + idx; + tmp_ident = &tmp->ident; + if (dpa_ptp_is_ident_match(tmp_ident, ident)) + break; + idx = (idx + 1) & (size - 1); + } + + if (idx == head) { + circ_buf->tail = head; + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + return 1; + } + + ts->sec = tmp->ts.sec; + ts->nsec = tmp->ts.nsec; + + circ_buf->tail = (idx + 1) & (size - 1); + + spin_unlock_irqrestore(&ptp_buf->ptp_lock, flags); + + return 0; +} + +static int dpa_ptp_get_time(dma_addr_t fd_addr, u32 *high, u32 *low) +{ + u8 *ts_addr = (u8 *)phys_to_virt(fd_addr); + u32 sec, nsec, mod; + u64 tmp; + + ts_addr += DPA_PTP_TIMESTAMP_OFFSET; + sec = *((u32 *)ts_addr); + nsec = *(((u32 *)ts_addr) + 1); + tmp = ((u64)sec << 32 | nsec) * DPA_PTP_NOMINAL_FREQ_PERIOD; + + mod = do_div(tmp, NANOSEC_PER_SECOND); + *high = (u32)tmp; + *low = mod; + + return 0; +} + +/* + * Parse the PTP packets + * + * The PTP header can be found in an IPv4 packet, IPv6 patcket or in + * an IEEE802.3 ethernet frame. This function returns the position of + * the PTP packet or NULL if no PTP found + */ +static u8 *dpa_ptp_parse_packet(struct sk_buff *skb, u16 *eth_type) +{ + u8 *pos = skb->data + ETH_ALEN + ETH_ALEN; + u8 *ptp_loc = NULL; + u8 msg_type; + struct iphdr *iph; + struct udphdr *udph; + struct ipv6hdr *ipv6h; + + *eth_type = *((u16 *)pos); + + /* Check if inner tag is here */ + if (*eth_type == ETH_P_8021Q) { + pos += DPA_VLAN_TAG_LEN; + *eth_type = *((u16 *)pos); + } + + pos += DPA_ETYPE_LEN; + + switch (*eth_type) { + /* Transport of PTP over Ethernet */ + case ETH_P_1588: + ptp_loc = pos; + msg_type = *((u8 *)(ptp_loc + PTP_OFFS_MSG_TYPE)) & 0xf; + if ((msg_type == PTP_MSGTYPE_SYNC) + || (msg_type == PTP_MSGTYPE_DELREQ) + || (msg_type == PTP_MSGTYPE_PDELREQ) + || (msg_type == PTP_MSGTYPE_PDELRESP)) + return ptp_loc; + break; + /* Transport of PTP over IPv4 */ + case ETH_P_IP: + iph = (struct iphdr *)pos; + if (ntohs(iph->protocol) != IPPROTO_UDP) + return NULL; + + pos += iph->ihl * 4; + udph = (struct udphdr *)pos; + if (ntohs(udph->dest) != 319) + return NULL; + ptp_loc = pos + sizeof(struct udphdr); + break; + /* Transport of PTP over IPv6 */ + case ETH_P_IPV6: + ipv6h = (struct ipv6hdr *)pos; + if (ntohs(ipv6h->nexthdr) != IPPROTO_UDP) + return NULL; + + pos += sizeof(struct ipv6hdr); + udph = (struct udphdr *)pos; + if (ntohs(udph->dest) != 319) + return NULL; + ptp_loc = pos + sizeof(struct udphdr); + break; + default: + break; + } + + return ptp_loc; +} + +static int dpa_ptp_store_stamp(struct net_device *dev, struct sk_buff *skb, + dma_addr_t fd_addr, struct dpa_ptp_data *ptp_data) +{ + u32 sec, nsec; + u8 *ptp_loc; + u16 eth_type; + + ptp_loc = dpa_ptp_parse_packet(skb, ð_type); + if (!ptp_loc) + return -EINVAL; + + switch (eth_type) { + case ETH_P_IP: + ptp_data->ident.netw_prot = DPA_PTP_PROT_IPV4; + break; + case ETH_P_IPV6: + ptp_data->ident.netw_prot = DPA_PTP_PROT_IPV6; + break; + case ETH_P_1588: + ptp_data->ident.netw_prot = DPA_PTP_PROT_802_3; + break; + default: + return -EINVAL; + } + + ptp_data->ident.version = *(ptp_loc + PTP_OFFS_VER_PTP) & 0xf; + ptp_data->ident.msg_type = *(ptp_loc + PTP_OFFS_MSG_TYPE) & 0xf; + ptp_data->ident.seq_id = *((u16 *)(ptp_loc + PTP_OFFS_SEQ_ID)); + memcpy(ptp_data->ident.snd_port_id, ptp_loc + PTP_OFFS_SRCPRTID, + DPA_PTP_SOURCE_PORT_LENGTH); + + dpa_ptp_get_time(fd_addr, &sec, &nsec); + ptp_data->ts.sec = (u64)sec; + ptp_data->ts.nsec = nsec; + + return 0; +} + +void dpa_ptp_store_txstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + struct dpa_ptp_tsu *tsu = priv->tsu; + struct dpa_ptp_data ptp_tx_data; + dma_addr_t fd_addr = qm_fd_addr(fd); + int ret; + + ret = dpa_ptp_store_stamp(dev, skb, fd_addr, &ptp_tx_data); + if (ret) + return; + dpa_ptp_insert(&tsu->tx_timestamps, &ptp_tx_data); +} + +void dpa_ptp_store_rxstamp(struct net_device *dev, struct sk_buff *skb, + const struct qm_fd *fd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + struct dpa_ptp_tsu *tsu = priv->tsu; + struct dpa_ptp_data ptp_rx_data; + dma_addr_t fd_addr = qm_fd_addr(fd); + int ret; + + ret = dpa_ptp_store_stamp(dev, skb, fd_addr, &ptp_rx_data); + if (ret) + return; + dpa_ptp_insert(&tsu->rx_timestamps, &ptp_rx_data); +} + +static uint8_t dpa_get_tx_timestamp(struct dpa_ptp_tsu *ptp_tsu, + struct dpa_ptp_ident *ident, + struct dpa_ptp_time *ts) +{ + struct dpa_ptp_tsu *tsu = ptp_tsu; + struct dpa_ptp_time tmp; + int flag; + + flag = dpa_ptp_find_and_remove(&tsu->tx_timestamps, ident, &tmp); + if (!flag) { + ts->sec = tmp.sec; + ts->nsec = tmp.nsec; + return 0; + } + + return -1; +} + +static uint8_t dpa_get_rx_timestamp(struct dpa_ptp_tsu *ptp_tsu, + struct dpa_ptp_ident *ident, + struct dpa_ptp_time *ts) +{ + struct dpa_ptp_tsu *tsu = ptp_tsu; + struct dpa_ptp_time tmp; + int flag; + + flag = dpa_ptp_find_and_remove(&tsu->rx_timestamps, ident, &tmp); + if (!flag) { + ts->sec = tmp.sec; + ts->nsec = tmp.nsec; + return 0; + } + + return -1; +} + +static void dpa_set_fiper_alarm(struct dpa_ptp_tsu *tsu, + struct dpa_ptp_time *cnt_time) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u64 tmp, fiper; + + if (mac_dev->fm_rtc_disable) + mac_dev->fm_rtc_disable(tsu->dpa_priv->net_dev); + + /* TMR_FIPER1 will pulse every second after ALARM1 expired */ + tmp = (u64)cnt_time->sec * NANOSEC_PER_SECOND + (u64)cnt_time->nsec; + fiper = NANOSEC_PER_SECOND - DPA_PTP_NOMINAL_FREQ_PERIOD; + if (mac_dev->fm_rtc_set_alarm) + mac_dev->fm_rtc_set_alarm(tsu->dpa_priv->net_dev, 0, tmp); + if (mac_dev->fm_rtc_set_fiper) + mac_dev->fm_rtc_set_fiper(tsu->dpa_priv->net_dev, 0, fiper); + + if (mac_dev->fm_rtc_enable) + mac_dev->fm_rtc_enable(tsu->dpa_priv->net_dev); +} + +static void dpa_get_curr_cnt(struct dpa_ptp_tsu *tsu, + struct dpa_ptp_time *curr_time) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u64 tmp; + u32 mod; + + if (mac_dev->fm_rtc_get_cnt) + mac_dev->fm_rtc_get_cnt(tsu->dpa_priv->net_dev, &tmp); + + mod = do_div(tmp, NANOSEC_PER_SECOND); + curr_time->sec = (u32)tmp; + curr_time->nsec = mod; +} + +static void dpa_set_1588cnt(struct dpa_ptp_tsu *tsu, + struct dpa_ptp_time *cnt_time) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u64 tmp; + + tmp = (u64)cnt_time->sec * NANOSEC_PER_SECOND + (u64)cnt_time->nsec; + + if (mac_dev->fm_rtc_set_cnt) + mac_dev->fm_rtc_set_cnt(tsu->dpa_priv->net_dev, tmp); + + /* Restart fiper two seconds later */ + cnt_time->sec += 2; + cnt_time->nsec = 0; + dpa_set_fiper_alarm(tsu, cnt_time); +} + +static void dpa_get_drift(struct dpa_ptp_tsu *tsu, u32 *addend) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + u32 drift; + + if (mac_dev->fm_rtc_get_drift) + mac_dev->fm_rtc_get_drift(tsu->dpa_priv->net_dev, &drift); + + *addend = drift; +} + +static void dpa_set_drift(struct dpa_ptp_tsu *tsu, u32 addend) +{ + struct mac_device *mac_dev = tsu->dpa_priv->mac_dev; + + if (mac_dev->fm_rtc_set_drift) + mac_dev->fm_rtc_set_drift(tsu->dpa_priv->net_dev, addend); +} + +static void dpa_flush_timestamp(struct dpa_ptp_tsu *tsu) +{ + dpa_ptp_reset_circ(&tsu->rx_timestamps, DEFAULT_PTP_RX_BUF_SZ); + dpa_ptp_reset_circ(&tsu->tx_timestamps, DEFAULT_PTP_TX_BUF_SZ); +} + +int dpa_ioctl_1588(struct net_device *dev, struct ifreq *ifr, int cmd) +{ + struct dpa_priv_s *priv = netdev_priv(dev); + struct dpa_ptp_tsu *tsu = priv->tsu; + struct mac_device *mac_dev = priv->mac_dev; + struct dpa_ptp_data ptp_data; + struct dpa_ptp_data *ptp_data_user; + struct dpa_ptp_time act_time; + u32 addend; + int retval = 0; + + if (!tsu || !tsu->valid) + return -ENODEV; + + switch (cmd) { + case PTP_ENBL_TXTS_IOCTL: + tsu->hwts_tx_en_ioctl = 1; + if (mac_dev->ptp_enable) + mac_dev->ptp_enable(mac_dev); + break; + case PTP_DSBL_TXTS_IOCTL: + tsu->hwts_tx_en_ioctl = 0; + if (mac_dev->ptp_disable) + mac_dev->ptp_disable(mac_dev); + break; + case PTP_ENBL_RXTS_IOCTL: + tsu->hwts_rx_en_ioctl = 1; + break; + case PTP_DSBL_RXTS_IOCTL: + tsu->hwts_rx_en_ioctl = 0; + break; + case PTP_GET_RX_TIMESTAMP: + ptp_data_user = (struct dpa_ptp_data *)ifr->ifr_data; + if (copy_from_user(&ptp_data.ident, + &ptp_data_user->ident, sizeof(ptp_data.ident))) + return -EINVAL; + + if (dpa_get_rx_timestamp(tsu, &ptp_data.ident, &ptp_data.ts)) + return -EAGAIN; + + if (copy_to_user((void __user *)&ptp_data_user->ts, + &ptp_data.ts, sizeof(ptp_data.ts))) + return -EFAULT; + break; + case PTP_GET_TX_TIMESTAMP: + ptp_data_user = (struct dpa_ptp_data *)ifr->ifr_data; + if (copy_from_user(&ptp_data.ident, + &ptp_data_user->ident, sizeof(ptp_data.ident))) + return -EINVAL; + + if (dpa_get_tx_timestamp(tsu, &ptp_data.ident, &ptp_data.ts)) + return -EAGAIN; + + if (copy_to_user((void __user *)&ptp_data_user->ts, + &ptp_data.ts, sizeof(ptp_data.ts))) + return -EFAULT; + break; + case PTP_GET_TIME: + dpa_get_curr_cnt(tsu, &act_time); + if (copy_to_user(ifr->ifr_data, &act_time, sizeof(act_time))) + return -EFAULT; + break; + case PTP_SET_TIME: + if (copy_from_user(&act_time, ifr->ifr_data, sizeof(act_time))) + return -EINVAL; + dpa_set_1588cnt(tsu, &act_time); + break; + case PTP_GET_ADJ: + dpa_get_drift(tsu, &addend); + if (copy_to_user(ifr->ifr_data, &addend, sizeof(addend))) + return -EFAULT; + break; + case PTP_SET_ADJ: + if (copy_from_user(&addend, ifr->ifr_data, sizeof(addend))) + return -EINVAL; + dpa_set_drift(tsu, addend); + break; + case PTP_SET_FIPER_ALARM: + if (copy_from_user(&act_time, ifr->ifr_data, sizeof(act_time))) + return -EINVAL; + dpa_set_fiper_alarm(tsu, &act_time); + break; + case PTP_CLEANUP_TS: + dpa_flush_timestamp(tsu); + break; + default: + return -EINVAL; + } + + return retval; +} + +int dpa_ptp_init(struct dpa_priv_s *priv) +{ + struct dpa_ptp_tsu *tsu; + + /* Allocate memory for PTP structure */ + tsu = kzalloc(sizeof(struct dpa_ptp_tsu), GFP_KERNEL); + if (!tsu) + return -ENOMEM; + + memset(tsu, 0, sizeof(*tsu)); + tsu->valid = TRUE; + tsu->dpa_priv = priv; + + dpa_ptp_init_circ(&tsu->rx_timestamps, DEFAULT_PTP_RX_BUF_SZ); + dpa_ptp_init_circ(&tsu->tx_timestamps, DEFAULT_PTP_TX_BUF_SZ); + + priv->tsu = tsu; + + return 0; +} +EXPORT_SYMBOL(dpa_ptp_init); + +void dpa_ptp_cleanup(struct dpa_priv_s *priv) +{ + struct dpa_ptp_tsu *tsu = priv->tsu; + + tsu->valid = FALSE; + vfree(tsu->rx_timestamps.circ_buf.buf); + vfree(tsu->tx_timestamps.circ_buf.buf); + + kfree(tsu); +} +EXPORT_SYMBOL(dpa_ptp_cleanup); + +static int __init __cold dpa_ptp_load(void) +{ + return 0; +} +module_init(dpa_ptp_load); + +static void __exit __cold dpa_ptp_unload(void) +{ +} +module_exit(dpa_ptp_unload); --- linux-ppc-3.8.0.orig/drivers/net/dpa/mac-api.c +++ linux-ppc-3.8.0/drivers/net/dpa/mac-api.c @@ -0,0 +1,674 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include + +#include "dpaa_eth-common.h" +#include "dpaa_eth.h" +#include "mac.h" + +#include "error_ext.h" /* GET_ERROR_TYPE, E_OK */ +#include "fm_mac_ext.h" +#include "fm_rtc_ext.h" + +#define MAC_DESCRIPTION "FSL FMan MAC API based driver" + +MODULE_LICENSE("Dual BSD/GPL"); + +MODULE_AUTHOR("Emil Medve "); + +MODULE_DESCRIPTION(MAC_DESCRIPTION); + +struct mac_priv_s { + t_Handle mac; +}; + +const char *mac_driver_description __initconst = MAC_DESCRIPTION; +const size_t mac_sizeof_priv[] = { + [DTSEC] = sizeof(struct mac_priv_s), + [XGMAC] = sizeof(struct mac_priv_s) +}; + +static const e_EnetMode _100[] = +{ + [PHY_INTERFACE_MODE_MII] = e_ENET_MODE_MII_100, + [PHY_INTERFACE_MODE_RMII] = e_ENET_MODE_RMII_100 +}; + +static const e_EnetMode _1000[] = +{ + [PHY_INTERFACE_MODE_GMII] = e_ENET_MODE_GMII_1000, + [PHY_INTERFACE_MODE_SGMII] = e_ENET_MODE_SGMII_1000, + [PHY_INTERFACE_MODE_TBI] = e_ENET_MODE_TBI_1000, + [PHY_INTERFACE_MODE_RGMII] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RGMII_ID] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RGMII_RXID] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RGMII_TXID] = e_ENET_MODE_RGMII_1000, + [PHY_INTERFACE_MODE_RTBI] = e_ENET_MODE_RTBI_1000 +}; + +static e_EnetMode __cold __attribute__((nonnull)) +macdev2enetinterface(const struct mac_device *mac_dev) +{ + switch (mac_dev->max_speed) { + case SPEED_100: + return _100[mac_dev->phy_if]; + case SPEED_1000: + return _1000[mac_dev->phy_if]; + case SPEED_10000: + return e_ENET_MODE_XGMII_10000; + default: + return e_ENET_MODE_MII_100; + } +} + +static void mac_exception(t_Handle _mac_dev, e_FmMacExceptions exception) +{ + struct mac_device *mac_dev; + + mac_dev = (struct mac_device *)_mac_dev; + + if (e_FM_MAC_EX_10G_RX_FIFO_OVFL == exception) { + /* don't flag RX FIFO after the first */ + FM_MAC_SetException( + ((struct mac_priv_s *)macdev_priv(_mac_dev))->mac, + e_FM_MAC_EX_10G_RX_FIFO_OVFL, false); + printk(KERN_ERR "10G MAC got RX FIFO Error = %x\n", exception); + } + + cpu_dev_dbg(mac_dev->dev, "%s:%s() -> %d\n", __file__, __func__, + exception); +} + +static int __cold init(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + struct mac_priv_s *priv; + t_FmMacParams param; + uint32_t version; + + priv = macdev_priv(mac_dev); + + param.baseAddr = (typeof(param.baseAddr))(uintptr_t)devm_ioremap( + mac_dev->dev, mac_dev->res->start, 0x2000); + param.enetMode = macdev2enetinterface(mac_dev); + memcpy(¶m.addr, mac_dev->addr, min(sizeof(param.addr), + sizeof(mac_dev->addr))); + param.macId = mac_dev->cell_index; + param.h_Fm = (t_Handle)mac_dev->fm; + param.mdioIrq = NO_IRQ; + param.f_Exception = mac_exception; + param.f_Event = mac_exception; + param.h_App = mac_dev; + + priv->mac = FM_MAC_Config(¶m); + if (unlikely(priv->mac == NULL)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_Config() failed\n"); + _errno = -EINVAL; + goto _return; + } + + err = FM_MAC_ConfigMaxFrameLength(priv->mac, fsl_fman_phy_maxfrm); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigMaxFrameLength() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + + if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) { + /* 10G always works with pad and CRC */ + err = FM_MAC_ConfigPadAndCrc(priv->mac, true); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigPadAndCrc() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + + err = FM_MAC_ConfigHalfDuplex(priv->mac, mac_dev->half_duplex); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigHalfDuplex() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } + else { + err = FM_MAC_ConfigResetOnInit(priv->mac, true); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ConfigResetOnInit() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } + + err = FM_MAC_Init(priv->mac); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_Init() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + +#ifndef CONFIG_FMAN_MIB_CNT_OVF_IRQ_EN + /* For 1G MAC, disable by default the MIB counters overflow interrupt */ + if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) { + err = FM_MAC_SetException(priv->mac, + e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL, FALSE); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_SetException() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } +#endif /* !CONFIG_FMAN_MIB_CNT_OVF_IRQ_EN */ + + /* For 10G MAC, disable Tx ECC exception */ + if (macdev2enetinterface(mac_dev) == e_ENET_MODE_XGMII_10000) { + err = FM_MAC_SetException(priv->mac, + e_FM_MAC_EX_10G_1TX_ECC_ER, FALSE); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_SetException() = 0x%08x\n", err); + goto _return_fm_mac_free; + } + } + + err = FM_MAC_GetVesrion(priv->mac, &version); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_GetVesrion() = 0x%08x\n", + err); + goto _return_fm_mac_free; + } + cpu_dev_info(mac_dev->dev, "FMan %s version: 0x%08x\n", + ((macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) ? + "dTSEC" : "XGEC"), version); + + goto _return; + + +_return_fm_mac_free: + err = FM_MAC_Free(priv->mac); + if (unlikely(-GET_ERROR_TYPE(err) < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Free() = 0x%08x\n", err); +_return: + return _errno; +} + +static int __cold start(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + struct phy_device *phy_dev = mac_dev->phy_dev; + + err = FM_MAC_Enable(((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + e_COMM_MODE_RX_AND_TX); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Enable() = 0x%08x\n", err); + + if (phy_dev) { + if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000) + phy_start(phy_dev); + else if (phy_dev->drv->read_status) + phy_dev->drv->read_status(phy_dev); + } + + return _errno; +} + +static int __cold stop(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + + if (mac_dev->phy_dev && + (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000)) + phy_stop(mac_dev->phy_dev); + + err = FM_MAC_Disable(((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + e_COMM_MODE_RX_AND_TX); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Disable() = 0x%08x\n", err); + + return _errno; +} + +static int __cold change_promisc(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + + err = FM_MAC_SetPromiscuous( + ((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + mac_dev->promisc = !mac_dev->promisc); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, + "FM_MAC_SetPromiscuous() = 0x%08x\n", err); + + return _errno; +} + +static int __cold set_multi(struct net_device *net_dev) +{ + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + struct mac_priv_s *mac_priv; + struct mac_address *old_addr, *tmp; + struct netdev_hw_addr *ha; + int _errno; + t_Error err; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + mac_priv = macdev_priv(mac_dev); + + /* Clear previous address list */ + list_for_each_entry_safe(old_addr, tmp, &mac_dev->mc_addr_list, list) { + err = FM_MAC_RemoveHashMacAddr(mac_priv->mac, + (t_EnetAddr *)old_addr->addr); + _errno = -GET_ERROR_TYPE(err); + if (_errno < 0) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_RemoveHashMacAddr() = 0x%08x\n", err); + return _errno; + } + list_del(&old_addr->list); + kfree(old_addr); + } + + /* Add all the addresses from the new list */ + netdev_for_each_mc_addr(ha, net_dev) { + err = FM_MAC_AddHashMacAddr(mac_priv->mac, + (t_EnetAddr *)ha->addr); + _errno = -GET_ERROR_TYPE(err); + if (_errno < 0) { + dpaa_eth_err(mac_dev->dev, + "FM_MAC_AddHashMacAddr() = 0x%08x\n", err); + return _errno; + } + tmp = kmalloc(sizeof(struct mac_address), GFP_ATOMIC); + if (!tmp) { + dpaa_eth_err(mac_dev->dev, "Out of memory\n"); + return -ENOMEM; + } + memcpy(tmp->addr, ha->addr, ETH_ALEN); + list_add(&tmp->list, &mac_dev->mc_addr_list); + } + return 0; +} + +static int __cold change_addr(struct mac_device *mac_dev, uint8_t *addr) +{ + int _errno; + t_Error err; + + err = FM_MAC_ModifyMacAddr( + ((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + (t_EnetAddr *)addr); + _errno = -GET_ERROR_TYPE(err); + if (_errno < 0) + dpaa_eth_err(mac_dev->dev, + "FM_MAC_ModifyMacAddr() = 0x%08x\n", err); + + return _errno; +} + +static void adjust_link(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + struct phy_device *phy_dev = mac_dev->phy_dev; + int _errno; + t_Error err; + + if (!phy_dev->link) + return; + + err = FM_MAC_AdjustLink( + ((struct mac_priv_s *)macdev_priv(mac_dev))->mac, + phy_dev->speed, phy_dev->duplex); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_AdjustLink() = 0x%08x\n", + err); + + return; +} + +/* Initializes driver's PHY state, and attaches to the PHY. + * Returns 0 on success. + */ +static int dtsec_init_phy(struct net_device *net_dev) +{ + struct dpa_priv_s *priv; + struct mac_device *mac_dev; + struct phy_device *phy_dev; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + + if (!mac_dev->phy_node) + phy_dev = phy_connect(net_dev, mac_dev->fixed_bus_id, + &adjust_link, 0, mac_dev->phy_if); + else + phy_dev = of_phy_connect(net_dev, mac_dev->phy_node, + &adjust_link, 0, mac_dev->phy_if); + if (unlikely(phy_dev == NULL) || IS_ERR(phy_dev)) { + cpu_netdev_err(net_dev, "Could not connect to PHY %s\n", + mac_dev->phy_node ? + mac_dev->phy_node->full_name : + mac_dev->fixed_bus_id); + return phy_dev == NULL ? -ENODEV : PTR_ERR(phy_dev); + } + + /* Remove any features not supported by the controller */ + phy_dev->supported &= priv->mac_dev->if_support; + phy_dev->advertising = phy_dev->supported; + + priv->mac_dev->phy_dev = phy_dev; + + return 0; +} + +static int xgmac_init_phy(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + struct phy_device *phy_dev; + + if (!mac_dev->phy_node) + phy_dev = phy_attach(net_dev, mac_dev->fixed_bus_id, 0, + mac_dev->phy_if); + else + phy_dev = of_phy_attach(net_dev, mac_dev->phy_node, 0, + mac_dev->phy_if); + if (unlikely(phy_dev == NULL) || IS_ERR(phy_dev)) { + cpu_netdev_err(net_dev, "Could not attach to PHY %s\n", + mac_dev->phy_node ? + mac_dev->phy_node->full_name : + mac_dev->fixed_bus_id); + return phy_dev == NULL ? -ENODEV : PTR_ERR(phy_dev); + } + + phy_dev->supported &= priv->mac_dev->if_support; + phy_dev->advertising = phy_dev->supported; + + mac_dev->phy_dev = phy_dev; + + return 0; +} + +static int __cold uninit(struct mac_device *mac_dev) +{ + int _errno, __errno; + t_Error err; + const struct mac_priv_s *priv; + + priv = macdev_priv(mac_dev); + + err = FM_MAC_Disable(priv->mac, e_COMM_MODE_RX_AND_TX); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Disable() = 0x%08x\n", err); + + err = FM_MAC_Free(priv->mac); + __errno = -GET_ERROR_TYPE(err); + if (unlikely(__errno < 0)) { + dpaa_eth_err(mac_dev->dev, "FM_MAC_Free() = 0x%08x\n", err); + if (_errno < 0) + _errno = __errno; + } + + return _errno; +} + +static int __cold ptp_enable(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + const struct mac_priv_s *priv; + + priv = macdev_priv(mac_dev); + + err = FM_MAC_Enable1588TimeStamp(priv->mac); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Enable1588TimeStamp()" + "= 0x%08x\n", err); + return _errno; +} + +static int __cold ptp_disable(struct mac_device *mac_dev) +{ + int _errno; + t_Error err; + const struct mac_priv_s *priv; + + priv = macdev_priv(mac_dev); + + err = FM_MAC_Disable1588TimeStamp(priv->mac); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_MAC_Disable1588TimeStamp()" + "= 0x%08x\n", err); + return _errno; +} + +static int __cold fm_rtc_enable(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_Enable(fm_get_rtc_handle(mac_dev->fm_dev), 0); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_Enable = 0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_disable(struct net_device *net_dev) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_Disable(fm_get_rtc_handle(mac_dev->fm_dev)); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_Disable = 0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_get_cnt(struct net_device *net_dev, uint64_t *ts) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_GetCurrentTime(fm_get_rtc_handle(mac_dev->fm_dev), ts); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_GetCurrentTime = 0x%08x\n", + err); + + return _errno; +} + +static int __cold fm_rtc_set_cnt(struct net_device *net_dev, uint64_t ts) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_SetCurrentTime(fm_get_rtc_handle(mac_dev->fm_dev), ts); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetCurrentTime = 0x%08x\n", + err); + + return _errno; +} + +static int __cold fm_rtc_get_drift(struct net_device *net_dev, uint32_t *drift) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_GetFreqCompensation(fm_get_rtc_handle(mac_dev->fm_dev), + drift); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_GetFreqCompensation =" + "0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_set_drift(struct net_device *net_dev, uint32_t drift) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + int _errno; + t_Error err; + + err = FM_RTC_SetFreqCompensation(fm_get_rtc_handle(mac_dev->fm_dev), + drift); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetFreqCompensation =" + "0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_set_alarm(struct net_device *net_dev, uint32_t id, + uint64_t time) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + t_FmRtcAlarmParams alarm; + int _errno; + t_Error err; + + alarm.alarmId = id; + alarm.alarmTime = time; + alarm.f_AlarmCallback = NULL; + err = FM_RTC_SetAlarm(fm_get_rtc_handle(mac_dev->fm_dev), + &alarm); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetAlarm =" + "0x%08x\n", err); + + return _errno; +} + +static int __cold fm_rtc_set_fiper(struct net_device *net_dev, uint32_t id, + uint64_t fiper) +{ + struct dpa_priv_s *priv = netdev_priv(net_dev); + struct mac_device *mac_dev = priv->mac_dev; + t_FmRtcPeriodicPulseParams pp; + int _errno; + t_Error err; + + pp.periodicPulseId = id; + pp.periodicPulsePeriod = fiper; + pp.f_PeriodicPulseCallback = NULL; + err = FM_RTC_SetPeriodicPulse(fm_get_rtc_handle(mac_dev->fm_dev), &pp); + _errno = -GET_ERROR_TYPE(err); + if (unlikely(_errno < 0)) + dpaa_eth_err(mac_dev->dev, "FM_RTC_SetPeriodicPulse =" + "0x%08x\n", err); + + return _errno; +} + +static void __cold setup_dtsec(struct mac_device *mac_dev) +{ + mac_dev->init_phy = dtsec_init_phy; + mac_dev->init = init; + mac_dev->start = start; + mac_dev->stop = stop; + mac_dev->change_promisc = change_promisc; + mac_dev->change_addr = change_addr; + mac_dev->set_multi = set_multi; + mac_dev->uninit = uninit; + mac_dev->ptp_enable = ptp_enable; + mac_dev->ptp_disable = ptp_disable; + mac_dev->fm_rtc_enable = fm_rtc_enable; + mac_dev->fm_rtc_disable = fm_rtc_disable; + mac_dev->fm_rtc_get_cnt = fm_rtc_get_cnt; + mac_dev->fm_rtc_set_cnt = fm_rtc_set_cnt; + mac_dev->fm_rtc_get_drift = fm_rtc_get_drift; + mac_dev->fm_rtc_set_drift = fm_rtc_set_drift; + mac_dev->fm_rtc_set_alarm = fm_rtc_set_alarm; + mac_dev->fm_rtc_set_fiper = fm_rtc_set_fiper; +} + +static void __cold setup_xgmac(struct mac_device *mac_dev) +{ + mac_dev->init_phy = xgmac_init_phy; + mac_dev->init = init; + mac_dev->start = start; + mac_dev->stop = stop; + mac_dev->change_promisc = change_promisc; + mac_dev->change_addr = change_addr; + mac_dev->set_multi = set_multi; + mac_dev->uninit = uninit; +} + +void (*const mac_setup[])(struct mac_device *mac_dev) = { + [DTSEC] = setup_dtsec, + [XGMAC] = setup_xgmac +}; --- linux-ppc-3.8.0.orig/drivers/net/dpa/xgmac_mdio.h +++ linux-ppc-3.8.0/drivers/net/dpa/xgmac_mdio.h @@ -0,0 +1,61 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Freescale FMAN XGMAC MDIO Driver -- MDIO Management Bus Implementation + * Driver for the MDIO bus controller on QorIQ 10G ports + * + * Author: Andy Fleming + */ + +#ifndef __XGMAC_MDIO_H +#define __XGMAC_MDIO_H + +struct tgec_mdio_controller { + u32 res0[0xc]; + u32 mdio_stat; /* MDIO configuration and status */ + u32 mdio_ctl; /* MDIO control */ + u32 mdio_data; /* MDIO data */ + u32 mdio_addr; /* MDIO address */ +} __attribute__ ((packed)); + +#define MDIO_STAT_CLKDIV(x) (((x>>1) & 0xff) << 8) +#define MDIO_STAT_BSY (1 << 0) +#define MDIO_STAT_RD_ER (1 << 1) +#define MDIO_CTL_DEV_ADDR(x) (x & 0x1f) +#define MDIO_CTL_PORT_ADDR(x) ((x & 0x1f) << 5) +#define MDIO_CTL_PRE_DIS (1 << 10) +#define MDIO_CTL_SCAN_EN (1 << 11) +#define MDIO_CTL_POST_INC (1 << 14) +#define MDIO_CTL_READ (1 << 15) + +#define MDIO_DATA(x) (x & 0xffff) +#define MDIO_DATA_BSY (1 << 31) + +#endif /* __XGMAC_MDIO_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/dpaa_eth-common.h +++ linux-ppc-3.8.0/drivers/net/dpa/dpaa_eth-common.h @@ -0,0 +1,150 @@ +/* + * Copyright 2008-2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __DPA_COMMON_H +#define __DPA_COMMON_H + +#include /* pr_*() */ +#include /* dev_*() */ +#include /* smp_processor_id() */ + +/* The basename of the source file is being compiled */ +#define __file__ KBUILD_BASENAME".c" + +#define __hot + +#define cpu_printk(level, format, arg...) \ + pr_##level("cpu%d: " format, smp_processor_id(), ##arg) + +#define cpu_pr_emerg(format, arg...) \ + cpu_printk(emerg, format, ##arg) +#define cpu_pr_alert(format, arg...) \ + cpu_printk(alert, format, ##arg) +#define cpu_pr_crit(format, arg...) \ + cpu_printk(crit, format, ##arg) +#define cpu_pr_err(format, arg...) \ + cpu_printk(err, format, ##arg) +#define cpu_pr_warning(format, arg...) \ + cpu_printk(warning, format, ##arg) +#define cpu_pr_notice(format, arg...) \ + cpu_printk(notice, format, ##arg) +#define cpu_pr_info(format, arg...) \ + cpu_printk(info, format, ##arg) +#define cpu_pr_debug(format, arg...) \ + cpu_printk(debug, format, ##arg) + +/* Keep this in sync with the dev_*() definitions from linux/device.h */ +#define cpu_dev_printk(level, dev, format, arg...) \ + cpu_pr_##level("%s: %s: " format, dev_driver_string(dev), \ + dev_name(dev), ##arg) + +#define cpu_dev_emerg(dev, format, arg...) \ + cpu_dev_printk(emerg, dev, format, ##arg) +#define cpu_dev_alert(dev, format, arg...) \ + cpu_dev_printk(alert, dev, format, ##arg) +#define cpu_dev_crit(dev, format, arg...) \ + cpu_dev_printk(crit, dev, format, ##arg) +#define cpu_dev_err(dev, format, arg...) \ + cpu_dev_printk(err, dev, format, ##arg) +#define cpu_dev_warn(dev, format, arg...) \ + cpu_dev_printk(warning, dev, format, ##arg) +#define cpu_dev_notice(dev, format, arg...) \ + cpu_dev_printk(notice, dev, format, ##arg) +#define cpu_dev_info(dev, format, arg...) \ + cpu_dev_printk(info, dev, format, ##arg) +#define cpu_dev_dbg(dev, format, arg...) \ + cpu_dev_printk(debug, dev, format, ##arg) + +#define dpaa_eth_printk(level, dev, format, arg...) \ + cpu_dev_printk(level, dev, "%s:%hu:%s() " format, \ + __file__, __LINE__, __func__, ##arg) + +#define dpaa_eth_emerg(dev, format, arg...) \ + dpaa_eth_printk(emerg, dev, format, ##arg) +#define dpaa_eth_alert(dev, format, arg...) \ + dpaa_eth_printk(alert, dev, format, ##arg) +#define dpaa_eth_crit(dev, format, arg...) \ + dpaa_eth_printk(crit, dev, format, ##arg) +#define dpaa_eth_err(dev, format, arg...) \ + dpaa_eth_printk(err, dev, format, ##arg) +#define dpaa_eth_warning(dev, format, arg...) \ + dpaa_eth_printk(warning, dev, format, ##arg) +#define dpaa_eth_notice(dev, format, arg...) \ + dpaa_eth_printk(notice, dev, format, ##arg) +#define dpaa_eth_info(dev, format, arg...) \ + dpaa_eth_printk(info, dev, format, ##arg) +#define dpaa_eth_debug(dev, format, arg...) \ + dpaa_eth_printk(debug, dev, format, ##arg) + +#define cpu_netdev_emerg(net_dev, format, arg...) \ + dpaa_eth_emerg((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_alert(net_dev, format, arg...) \ + dpaa_eth_alert((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_crit(net_dev, format, arg...) \ + dpaa_eth_crit((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_err(net_dev, format, arg...) \ + dpaa_eth_err((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_warn(net_dev, format, arg...) \ + dpaa_eth_warning((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_notice(net_dev, format, arg...) \ + dpaa_eth_notice((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_info(net_dev, format, arg...) \ + dpaa_eth_info((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) +#define cpu_netdev_dbg(net_dev, format, arg...) \ + dpaa_eth_debug((net_dev)->dev.parent, "%s: " format, \ + (net_dev)->name , ##arg) + +enum {RX, TX}; + +#define DPA_PRIV_DATA_SIZE 16 +#define DPA_PARSE_RESULTS_SIZE sizeof(t_FmPrsResult) +#define DPA_HASH_RESULTS_SIZE 16 + +#define dpaa_eth_init_port(type, port, param, errq_id, defq_id, has_timer) \ +{ \ + param.errq = errq_id; \ + param.defq = defq_id; \ + param.priv_data_size = DPA_PRIV_DATA_SIZE; \ + param.parse_results = true; \ + param.hash_results = true; \ + param.time_stamp = has_timer; \ + fm_set_##type##_port_params(port, ¶m); \ +} + +#endif /* __DPA_COMMON_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/dpa-ethtool.c +++ linux-ppc-3.8.0/drivers/net/dpa/dpa-ethtool.c @@ -0,0 +1,201 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include "dpaa_eth.h" + +static int __cold dpa_get_settings(struct net_device *net_dev, struct ethtool_cmd *et_cmd) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + _errno = phy_ethtool_gset(priv->mac_dev->phy_dev, et_cmd); + if (unlikely(_errno < 0)) + cpu_netdev_err(net_dev, "phy_ethtool_gset() = %d\n", _errno); + + return _errno; +} + +static int __cold dpa_set_settings(struct net_device *net_dev, struct ethtool_cmd *et_cmd) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + _errno = phy_ethtool_sset(priv->mac_dev->phy_dev, et_cmd); + if (unlikely(_errno < 0)) + cpu_netdev_err(net_dev, "phy_ethtool_sset() = %d\n", _errno); + + return _errno; +} + +static void __cold dpa_get_drvinfo(struct net_device *net_dev, struct ethtool_drvinfo *drvinfo) +{ + int _errno; + + strncpy(drvinfo->driver, KBUILD_MODNAME, + sizeof(drvinfo->driver) - 1)[sizeof(drvinfo->driver)-1] = 0; + strncpy(drvinfo->version, VERSION, + sizeof(drvinfo->driver) - 1)[sizeof(drvinfo->version)-1] = 0; + _errno = snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), "%X", 0); + + if (unlikely(_errno >= sizeof(drvinfo->fw_version))) { /* Truncated output */ + cpu_netdev_notice(net_dev, "snprintf() = %d\n", _errno); + } else if (unlikely(_errno < 0)) { + cpu_netdev_warn(net_dev, "snprintf() = %d\n", _errno); + memset(drvinfo->fw_version, 0, sizeof(drvinfo->fw_version)); + } + strncpy(drvinfo->bus_info, dev_name(net_dev->dev.parent->parent), + sizeof(drvinfo->bus_info) - 1)[sizeof(drvinfo->bus_info)-1] = 0; +} + +uint32_t __cold dpa_get_msglevel(struct net_device *net_dev) +{ + return ((struct dpa_priv_s *)netdev_priv(net_dev))->msg_enable; +} + +void __cold dpa_set_msglevel(struct net_device *net_dev, uint32_t msg_enable) +{ + ((struct dpa_priv_s *)netdev_priv(net_dev))->msg_enable = msg_enable; +} + +int __cold dpa_nway_reset(struct net_device *net_dev) +{ + int _errno; + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + _errno = 0; + if (priv->mac_dev->phy_dev->autoneg) { + _errno = phy_start_aneg(priv->mac_dev->phy_dev); + if (unlikely(_errno < 0)) + cpu_netdev_err(net_dev, "phy_start_aneg() = %d\n", + _errno); + } + + return _errno; +} + +void __cold dpa_get_ringparam(struct net_device *net_dev, struct ethtool_ringparam *et_ringparam) +{ + et_ringparam->rx_max_pending = 0; + et_ringparam->rx_mini_max_pending = 0; + et_ringparam->rx_jumbo_max_pending = 0; + et_ringparam->tx_max_pending = 0; + + et_ringparam->rx_pending = 0; + et_ringparam->rx_mini_pending = 0; + et_ringparam->rx_jumbo_pending = 0; + et_ringparam->tx_pending = 0; +} + +void __cold dpa_get_pauseparam(struct net_device *net_dev, struct ethtool_pauseparam *et_pauseparam) +{ + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return; + } + + et_pauseparam->autoneg = priv->mac_dev->phy_dev->autoneg; +} + +int __cold dpa_set_pauseparam(struct net_device *net_dev, struct ethtool_pauseparam *et_pauseparam) +{ + struct dpa_priv_s *priv; + + priv = netdev_priv(net_dev); + + if (priv->mac_dev == NULL) { + cpu_netdev_info(net_dev, "This is a MAC-less interface\n"); + return -ENODEV; + } + if (unlikely(priv->mac_dev->phy_dev == NULL)) { + cpu_netdev_err(net_dev, "phy device not initialized\n"); + return -ENODEV; + } + + priv->mac_dev->phy_dev->autoneg = et_pauseparam->autoneg; + + return 0; +} + +const struct ethtool_ops dpa_ethtool_ops = { + .get_settings = dpa_get_settings, + .set_settings = dpa_set_settings, + .get_drvinfo = dpa_get_drvinfo, + .get_msglevel = dpa_get_msglevel, + .set_msglevel = dpa_set_msglevel, + .nway_reset = dpa_nway_reset, + .get_link = ethtool_op_get_link, + .get_ringparam = dpa_get_ringparam, + .get_pauseparam = dpa_get_pauseparam, + .set_pauseparam = dpa_set_pauseparam, +}; --- linux-ppc-3.8.0.orig/drivers/net/dpa/offline_port.c +++ linux-ppc-3.8.0/drivers/net/dpa/offline_port.c @@ -0,0 +1,340 @@ +/* + * Copyright 2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Offline Parsing / Host Command port driver for FSL QorIQ FMan. + * Validates device-tree configuration and sets up the offline ports. + */ + +#include +#include +#include + +#include "offline_port.h" +#include "dpaa_eth-common.h" + +#define OH_MOD_DESCRIPTION "FSL FMan Offline Parsing port driver" + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("Bogdan Hamciuc "); +MODULE_DESCRIPTION(OH_MOD_DESCRIPTION); + + +static const struct of_device_id oh_port_match_table[] = { + { + .compatible = "fsl,dpa-oh" + }, + { + .compatible = "fsl,dpa-oh-shared" + }, + {} +}; +MODULE_DEVICE_TABLE(of, oh_port_match_table); + +static int oh_port_remove(struct platform_device *_of_dev); +static int oh_port_probe(struct platform_device *_of_dev); + +static struct platform_driver oh_port_driver = { + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = oh_port_match_table, + .owner = THIS_MODULE, + }, + .probe = oh_port_probe, + .remove = oh_port_remove +}; + +/* Allocation code for the OH port's PCD frame queues */ +static int __cold oh_alloc_pcd_fqids(struct device *dev, + uint32_t num, + uint8_t alignment, + uint32_t *base_fqid) +{ + cpu_dev_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static int __cold oh_free_pcd_fqids(struct device *dev, uint32_t base_fqid) +{ + dpaa_eth_crit(dev, "callback not implemented!\n"); + BUG(); + + return 0; +} + +static int +oh_port_probe(struct platform_device *_of_dev) +{ + struct device *dpa_oh_dev; + struct device_node *dpa_oh_node; + int lenp, _errno = 0, fq_idx; + const phandle *oh_port_handle; + struct platform_device *oh_of_dev; + struct device_node *oh_node; + struct device *oh_dev; + struct dpa_oh_config_s *oh_config; + uint32_t *oh_all_queues; + uint32_t queues_count; + uint32_t crt_fqid_base; + uint32_t crt_fq_count; + struct fm_port_non_rx_params oh_port_tx_params; + struct fm_port_pcd_param oh_port_pcd_params; + /* True if the current partition owns the OH port. */ + bool init_oh_port; + const struct of_device_id *match; + + dpa_oh_dev = &_of_dev->dev; + dpa_oh_node = dpa_oh_dev->of_node; + BUG_ON(dpa_oh_node == NULL); + + match = of_match_device(oh_port_match_table, dpa_oh_dev); + if (!match) + return -EINVAL; + + cpu_dev_dbg(dpa_oh_dev, "Probing OH port...\n"); + + /* + * Find the referenced OH node + */ + + oh_port_handle = of_get_property(dpa_oh_node, + "fsl,fman-oh-port", &lenp); + if (oh_port_handle == NULL) { + cpu_dev_err(dpa_oh_dev, "No OH port handle found in node %s\n", + dpa_oh_node->full_name); + return -EINVAL; + } + + BUG_ON(lenp % sizeof(*oh_port_handle)); + if (lenp != sizeof(*oh_port_handle)) { + cpu_dev_err(dpa_oh_dev, "Found %lu OH port bindings in node %s, " + "only 1 phandle is allowed.\n", + (unsigned long int)(lenp / sizeof(*oh_port_handle)), dpa_oh_node->full_name); + return -EINVAL; + } + + /* Read configuration for the OH port */ + oh_node = of_find_node_by_phandle(*oh_port_handle); + if (oh_node == NULL) { + cpu_dev_err(dpa_oh_dev, "Can't find OH node referenced from " + "node %s\n", dpa_oh_node->full_name); + return -EINVAL; + } + cpu_dev_info(dpa_oh_dev, "Found OH node handle compatible with %s.\n", + match->compatible); + + oh_of_dev = of_find_device_by_node(oh_node); + BUG_ON(oh_of_dev == NULL); + oh_dev = &oh_of_dev->dev; + of_node_put(oh_node); + + /* + * The OH port must be initialized exactly once. + * The following scenarios are of interest: + * - the node is Linux-private (will always initialize it); + * - the node is shared between two Linux partitions + * (only one of them will initialize it); + * - the node is shared between a Linux and a LWE partition + * (Linux will initialize it) - "fsl,dpa-oh-shared" + */ + + /* Check if the current partition owns the OH port + * and ought to initialize it. It may be the case that we leave this + * to another (also Linux) partition. */ + init_oh_port = strcmp(match->compatible, "fsl,dpa-oh-shared"); + + /* If we aren't the "owner" of the OH node, we're done here. */ + if (!init_oh_port) { + cpu_dev_dbg(dpa_oh_dev, "Not owning the shared OH port %s, " + "will not initialize it.\n", oh_node->full_name); + return 0; + } + + /* Allocate OH dev private data */ + oh_config = devm_kzalloc(dpa_oh_dev, sizeof(*oh_config), GFP_KERNEL); + if (oh_config == NULL) { + cpu_dev_err(dpa_oh_dev, "Can't allocate private data for " + "OH node %s referenced from node %s!\n", + oh_node->full_name, dpa_oh_node->full_name); + return -ENOMEM; + } + + /* + * Read FQ ids/nums for the DPA OH node + */ + oh_all_queues = (uint32_t *)of_get_property(dpa_oh_node, + "fsl,qman-frame-queues-oh", &lenp); + if (oh_all_queues == NULL) { + cpu_dev_err(dpa_oh_dev, "No frame queues have been " + "defined for OH node %s referenced from node %s\n", + oh_node->full_name, dpa_oh_node->full_name); + _errno = -EINVAL; + goto return_kfree; + } + + /* Check that the OH error and default FQs are there */ + BUG_ON(lenp % (2 * sizeof(*oh_all_queues))); + queues_count = lenp / (2 * sizeof(*oh_all_queues)); + if (queues_count != 2) { + dpaa_eth_err(dpa_oh_dev, "Error and Default queues must be " + "defined for OH node %s referenced from node %s\n", + oh_node->full_name, dpa_oh_node->full_name); + _errno = -EINVAL; + goto return_kfree; + } + + /* Read the FQIDs defined for this OH port */ + cpu_dev_dbg(dpa_oh_dev, "Reading %d queues...\n", queues_count); + fq_idx = 0; + + /* Error FQID - must be present */ + crt_fqid_base = oh_all_queues[fq_idx++]; + crt_fq_count = oh_all_queues[fq_idx++]; + if (crt_fq_count != 1) { + cpu_dev_err(dpa_oh_dev, "Only 1 Error FQ allowed in OH node %s " + "referenced from node %s (read: %d FQIDs).\n", + oh_node->full_name, dpa_oh_node->full_name, + crt_fq_count); + _errno = -EINVAL; + goto return_kfree; + } + oh_config->error_fqid = crt_fqid_base; + cpu_dev_dbg(dpa_oh_dev, "Read Error FQID 0x%x for OH port %s.\n", + oh_config->error_fqid, oh_node->full_name); + + /* Default FQID - must be present */ + crt_fqid_base = oh_all_queues[fq_idx++]; + crt_fq_count = oh_all_queues[fq_idx++]; + if (crt_fq_count != 1) { + cpu_dev_err(dpa_oh_dev, "Only 1 Default FQ allowed " + "in OH node %s referenced from %s (read: %d FQIDs).\n", + oh_node->full_name, dpa_oh_node->full_name, + crt_fq_count); + _errno = -EINVAL; + goto return_kfree; + } + oh_config->default_fqid = crt_fqid_base; + cpu_dev_dbg(dpa_oh_dev, "Read Default FQID 0x%x for OH port %s.\n", + oh_config->default_fqid, oh_node->full_name); + + /* Get a handle to the fm_port so we can set + * its configuration params */ + oh_config->oh_port = fm_port_bind(oh_dev); + if (oh_config->oh_port == NULL) { + cpu_dev_err(dpa_oh_dev, "NULL drvdata from fm port dev %s!\n", + oh_node->full_name); + _errno = -EINVAL; + goto return_kfree; + } + + /* Set Tx params */ + dpaa_eth_init_port(tx, oh_config->oh_port, oh_port_tx_params, + oh_config->error_fqid, oh_config->default_fqid, FALSE); + /* Set PCD params */ + oh_port_pcd_params.cba = oh_alloc_pcd_fqids; + oh_port_pcd_params.cbf = oh_free_pcd_fqids; + oh_port_pcd_params.dev = dpa_oh_dev; + fm_port_pcd_bind(oh_config->oh_port, &oh_port_pcd_params); + + dev_set_drvdata(dpa_oh_dev, oh_config); + + /* Enable the OH port */ + fm_port_enable(oh_config->oh_port); + cpu_dev_info(dpa_oh_dev, "OH port %s enabled.\n", oh_node->full_name); + + return 0; + +return_kfree: + devm_kfree(dpa_oh_dev, oh_config); + return _errno; +} + +static int __cold oh_port_remove(struct platform_device *_of_dev) +{ + int _errno = 0; + struct dpa_oh_config_s *oh_config; + + cpu_pr_info("Removing OH port...\n"); + + oh_config = dev_get_drvdata(&_of_dev->dev); + if (oh_config == NULL) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): No OH config in device private data!\n", + __file__, __LINE__, __func__); + _errno = -ENODEV; + goto return_error; + } + if (oh_config->oh_port == NULL) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): No fm port in device private data!\n", + __file__, __LINE__, __func__); + _errno = -EINVAL; + goto return_error; + } + + fm_port_disable(oh_config->oh_port); + devm_kfree(&_of_dev->dev, oh_config); + dev_set_drvdata(&_of_dev->dev, NULL); + +return_error: + return _errno; +} + +static int __init __cold oh_port_load(void) +{ + int _errno; + + cpu_pr_info(KBUILD_MODNAME ": " OH_MOD_DESCRIPTION " (" VERSION ")\n"); + + _errno = platform_driver_register(&oh_port_driver); + if (_errno < 0) { + cpu_pr_err(KBUILD_MODNAME + ": %s:%hu:%s(): platform_driver_register() = %d\n", + __file__, __LINE__, __func__, _errno); + } + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); + return _errno; +} +module_init(oh_port_load); + +static void __exit __cold oh_port_unload(void) +{ + cpu_pr_debug(KBUILD_MODNAME ": -> %s:%s()\n", __file__, __func__); + + platform_driver_unregister(&oh_port_driver); + + cpu_pr_debug(KBUILD_MODNAME ": %s:%s() ->\n", __file__, __func__); +} +module_exit(oh_port_unload); --- linux-ppc-3.8.0.orig/drivers/net/dpa/dpaa_eth.h +++ linux-ppc-3.8.0/drivers/net/dpa/dpaa_eth.h @@ -0,0 +1,127 @@ +/* + * Copyright 2008-2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __DPA_H +#define __DPA_H + +#include /* struct ethtool_ops */ +#include +#include /* struct list_head */ +#include /* struct work_struct */ +#include +#include +#ifdef CONFIG_DEBUG_FS +#include /* struct dentry */ +#endif + +#include /* struct qman_fq */ + +#include "dpaa_eth-common.h" + +#include "mac.h" /* struct mac_device */ + + +/* number of Tx queues to FMan */ +#define DPAA_ETH_TX_QUEUES 8 +#define DPAA_ETH_RX_QUEUES 128 + +struct pcd_range { + uint32_t base; + uint32_t count; +}; + +struct dpa_bp { + struct bman_pool *pool; + uint8_t bpid; + struct device *dev; + size_t count; + size_t size; + bool seed_pool; + dma_addr_t paddr; + void *vaddr; + int kernel_pool; + int *percpu_count; + int *needs_refill; + atomic_t refs; +}; + +struct dpa_percpu_priv_s { + struct net_device *net_dev; + int *dpa_bp_count; + struct dpa_bp *dpa_bp; + struct napi_struct napi; + u32 start_tx; + u32 in_interrupt; + u32 ingress_calls; + u32 tx_returned; + u32 tx_confirm; + struct net_device_stats stats; +}; + +struct dpa_priv_s { + struct dpa_bp *dpa_bp; + size_t bp_count; + int shared; + struct net_device *net_dev; + + uint16_t channel; /* "fsl,qman-channel-id" */ + struct list_head dpa_fq_list; + struct qman_fq *egress_fqs[DPAA_ETH_TX_QUEUES]; + + struct mac_device *mac_dev; + + struct dpa_percpu_priv_s *percpu_priv; +#ifdef CONFIG_DEBUG_FS + struct dentry *debugfs_file; +#endif + + uint32_t msg_enable; /* net_device message level */ + struct dpa_ptp_tsu *tsu; +}; + +extern const struct ethtool_ops dpa_ethtool_ops; +extern int fsl_fman_phy_maxfrm; + +static inline int dpaa_eth_napi_schedule(struct dpa_percpu_priv_s *percpu_priv) +{ + if (unlikely(in_irq())) { + /* Disable QMan IRQ and invoke NAPI */ + int ret = qman_irqsource_remove(QM_PIRQ_DQRI); + if (likely(!ret)) { + napi_schedule(&percpu_priv->napi); + return 1; + } + } + return 0; +} + +#endif /* __DPA_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Makefile @@ -0,0 +1,13 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +# +obj-y += etc/ +obj-${CONFIG_FMAN_P3040_P4080_P5020} += integrations/P3040_P4080_P5020/ +obj-${CONFIG_FMAN_P1023} += integrations/P1023/ +obj-y += Peripherals/FM/ +obj-y += src/ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/ncsw_config.mk +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/ncsw_config.mk @@ -0,0 +1,34 @@ +# +# Makefile config for the Freescale NetcommSW +# +NET_DPA = $(srctree)/drivers/net/ethernet/freescale +DRV_DPA = $(srctree)/drivers/net/dpa +NCSW = $(srctree)/drivers/net/dpa/NetCommSw + +ifdef CONFIG_FMAN_P3040_P4080_P5020 +EXTRA_CFLAGS +=-include $(NCSW)/p3040_4080_5020_dflags.h +endif +ifdef CONFIG_FMAN_P1023 +EXTRA_CFLAGS +=-include $(NCSW)/p1023_dflags.h +endif + +EXTRA_CFLAGS += -I$(DRV_DPA)/ +EXTRA_CFLAGS += -I$(NCSW)/inc +EXTRA_CFLAGS += -I$(NCSW)/inc/cores +EXTRA_CFLAGS += -I$(NCSW)/inc/etc +EXTRA_CFLAGS += -I$(NCSW)/inc/Peripherals + +ifdef CONFIG_FMAN_P3040_P4080_P5020 +EXTRA_CFLAGS += -I$(NCSW)/inc/integrations/P3040_P4080_P5020 +endif +ifdef CONFIG_FMAN_P1023 +EXTRA_CFLAGS += -I$(NCSW)/inc/integrations/P1023 +endif + +EXTRA_CFLAGS += -I$(NCSW)/src/inc +EXTRA_CFLAGS += -I$(NCSW)/src/inc/system +EXTRA_CFLAGS += -I$(NCSW)/src/inc/wrapper +EXTRA_CFLAGS += -I$(NCSW)/src/inc/xx +EXTRA_CFLAGS += -I$(srctree)/include/linux/fmd +EXTRA_CFLAGS += -I$(srctree)/include/linux/fmd/Peripherals +EXTRA_CFLAGS += -I$(srctree)/include/linux/fmd/integrations --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/p3040_4080_5020_dflags.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/p3040_4080_5020_dflags.h @@ -0,0 +1,62 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __dflags_h +#define __dflags_h + + +#define NCSW_LINUX + +#define P4080 +#define NCSW_PPC_CORE + +#define DEBUG_ERRORS 1 + +#if defined(DEBUG) +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_INFO + +#define DEBUG_XX_MALLOC +#define DEBUG_MEM_LEAKS + +#else +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_MAJOR +#endif /* (DEBUG) */ + +#define REPORT_EVENTS 0 +#define EVENT_GLOBAL_LEVEL REPORT_LEVEL_MINOR + +#ifdef CONFIG_P4080_SIM +#define SIMULATOR +#endif /* CONFIG_P4080_SIM */ + + +#endif /* __dflags_h */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/p1023_dflags.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/p1023_dflags.h @@ -0,0 +1,65 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __dflags_h +#define __dflags_h + + +#define NCSW_LINUX +#if 0 +#define DEBUG +#endif + +#define P1023 +#define NCSW_PPC_CORE + +#define DEBUG_ERRORS 1 + +#if defined(DEBUG) +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_INFO + +#define DEBUG_XX_MALLOC +#define DEBUG_MEM_LEAKS + +#else +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_WARNING +#endif /* (DEBUG) */ + +#define REPORT_EVENTS 1 +#define EVENT_GLOBAL_LEVEL REPORT_LEVEL_MINOR + +#ifdef CONFIG_P4080_SIM +#error "Do not define CONFIG_P4080_SIM..." +#endif + + +#endif /* __dflags_h */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Kconfig +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Kconfig @@ -0,0 +1,57 @@ +menu "Frame Manager support" + +menuconfig FSL_FMAN + bool "Freescale Frame Manager (datapath) support" + # depends on PPC_E500MC + default y + ---help--- + If unsure, say Y. + +if FSL_FMAN + +config FSL_FMAN_TEST + bool "FMan test module" + default n + ---help--- + This option compiles test code for FMan. + +menu "FMAN Processor support" +choice + depends on FSL_FMAN + prompt "Processor Type" + +config FMAN_P3040_P4080_P5020 + bool "P3040 P4080 5020" + +config FMAN_P1023 + bool "P1023" + +endchoice +endmenu + +config FMAN_RESOURCE_ALLOCATION_ALGORITHM + bool "Enable FMan dynamic resource allocation algorithm" + default n + ---help--- + Enables algorithm for dynamic resource allocation + +config FMAN_DISABLE_OH_TO_REUSE_RESOURCES + depends on FMAN_RESOURCE_ALLOCATION_ALGORITHM + bool "Disable offline parsing ports to reuse resources" + default n + ---help--- + Redistributes FMan OH's resources to all other ports, + thus enabling other configurations. + +config FMAN_MIB_CNT_OVF_IRQ_EN + bool "Enable the dTSEC MIB counters overflow interrupt" + default n + ---help--- + Enable the dTSEC MIB counters overflow interrupt to get + accurate MIB counters values. Enabled it compensates + for the counters overflow but reduces performance and + triggers error messages in HV setups. + +endif # FSL_FMAN + +endmenu --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.h @@ -0,0 +1,699 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm.h + + @Description FM internal structures and definitions. +*//***************************************************************************/ +#ifndef __FM_H +#define __FM_H + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_ext.h" +#include "fm_ipc.h" + + +#define __ERR_MODULE__ MODULE_FM + +#define FM_MAX_NUM_OF_HW_PORT_IDS 64 +#define FM_MAX_NUM_OF_GUESTS 100 + +/**************************************************************************//** + @Description Exceptions +*//***************************************************************************/ +#define FM_EX_DMA_BUS_ERROR 0x80000000 /**< DMA bus error. */ +#define FM_EX_DMA_READ_ECC 0x40000000 +#define FM_EX_DMA_SYSTEM_WRITE_ECC 0x20000000 +#define FM_EX_DMA_FM_WRITE_ECC 0x10000000 +#define FM_EX_FPM_STALL_ON_TASKS 0x08000000 /**< Stall of tasks on FPM */ +#define FM_EX_FPM_SINGLE_ECC 0x04000000 /**< Single ECC on FPM */ +#define FM_EX_FPM_DOUBLE_ECC 0x02000000 +#define FM_EX_QMI_SINGLE_ECC 0x01000000 /**< Single ECC on FPM */ +#define FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID 0x00800000 /**< Dequeu from default queue id */ +#define FM_EX_QMI_DOUBLE_ECC 0x00400000 +#define FM_EX_BMI_LIST_RAM_ECC 0x00200000 +#define FM_EX_BMI_PIPELINE_ECC 0x00100000 +#define FM_EX_BMI_STATISTICS_RAM_ECC 0x00080000 +#define FM_EX_IRAM_ECC 0x00040000 +#define FM_EX_NURAM_ECC 0x00020000 +#define FM_EX_BMI_DISPATCH_RAM_ECC 0x00010000 + +#define GET_EXCEPTION_FLAG(bitMask, exception) switch(exception){ \ + case e_FM_EX_DMA_BUS_ERROR: \ + bitMask = FM_EX_DMA_BUS_ERROR; break; \ + case e_FM_EX_DMA_READ_ECC: \ + bitMask = FM_EX_DMA_READ_ECC; break; \ + case e_FM_EX_DMA_SYSTEM_WRITE_ECC: \ + bitMask = FM_EX_DMA_SYSTEM_WRITE_ECC; break; \ + case e_FM_EX_DMA_FM_WRITE_ECC: \ + bitMask = FM_EX_DMA_FM_WRITE_ECC; break; \ + case e_FM_EX_FPM_STALL_ON_TASKS: \ + bitMask = FM_EX_FPM_STALL_ON_TASKS; break; \ + case e_FM_EX_FPM_SINGLE_ECC: \ + bitMask = FM_EX_FPM_SINGLE_ECC; break; \ + case e_FM_EX_FPM_DOUBLE_ECC: \ + bitMask = FM_EX_FPM_DOUBLE_ECC; break; \ + case e_FM_EX_QMI_SINGLE_ECC: \ + bitMask = FM_EX_QMI_SINGLE_ECC; break; \ + case e_FM_EX_QMI_DOUBLE_ECC: \ + bitMask = FM_EX_QMI_DOUBLE_ECC; break; \ + case e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID: \ + bitMask = FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID; break; \ + case e_FM_EX_BMI_LIST_RAM_ECC: \ + bitMask = FM_EX_BMI_LIST_RAM_ECC; break; \ + case e_FM_EX_BMI_PIPELINE_ECC: \ + bitMask = FM_EX_BMI_PIPELINE_ECC; break; \ + case e_FM_EX_BMI_STATISTICS_RAM_ECC: \ + bitMask = FM_EX_BMI_STATISTICS_RAM_ECC; break; \ + case e_FM_EX_BMI_DISPATCH_RAM_ECC: \ + bitMask = FM_EX_BMI_DISPATCH_RAM_ECC; break; \ + case e_FM_EX_IRAM_ECC: \ + bitMask = FM_EX_IRAM_ECC; break; \ + case e_FM_EX_MURAM_ECC: \ + bitMask = FM_EX_NURAM_ECC; break; \ + default: bitMask = 0;break;} + +/**************************************************************************//** + @Description defaults +*//***************************************************************************/ +#define DEFAULT_exceptions (FM_EX_DMA_BUS_ERROR |\ + FM_EX_DMA_READ_ECC |\ + FM_EX_DMA_SYSTEM_WRITE_ECC |\ + FM_EX_DMA_FM_WRITE_ECC |\ + FM_EX_FPM_STALL_ON_TASKS |\ + FM_EX_FPM_SINGLE_ECC |\ + FM_EX_FPM_DOUBLE_ECC |\ + FM_EX_QMI_SINGLE_ECC |\ + FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID|\ + FM_EX_QMI_DOUBLE_ECC |\ + FM_EX_BMI_LIST_RAM_ECC |\ + FM_EX_BMI_PIPELINE_ECC |\ + FM_EX_BMI_STATISTICS_RAM_ECC |\ + FM_EX_BMI_DISPATCH_RAM_ECC |\ + FM_EX_IRAM_ECC |\ + FM_EX_NURAM_ECC ) +#define DEFAULT_totalNumOfTasks (BMI_MAX_NUM_OF_TASKS*3/4) +#define DEFAULT_totalFifoSize (BMI_MAX_FIFO_SIZE*3/4) +#define DEFAULT_maxNumOfOpenDmas (BMI_MAX_NUM_OF_DMAS*3/4) +#define DEFAULT_eccEnable FALSE +#define DEFAULT_dispLimit 0 +#define DEFAULT_prsDispTh 16 +#define DEFAULT_plcrDispTh 16 +#define DEFAULT_kgDispTh 16 +#define DEFAULT_bmiDispTh 16 +#define DEFAULT_qmiEnqDispTh 16 +#define DEFAULT_qmiDeqDispTh 16 +#define DEFAULT_fmCtl1DispTh 16 +#define DEFAULT_fmCtl2DispTh 16 +#define DEFAULT_cacheOverride e_FM_DMA_NO_CACHE_OR +#ifdef FM_PEDANTIC_DMA +#define DEFAULT_aidOverride TRUE +#else +#define DEFAULT_aidOverride FALSE +#endif /* FM_PEDANTIC_DMA */ +#define DEFAULT_aidMode e_FM_DMA_AID_OUT_TNUM +#define DEFAULT_dmaStopOnBusError FALSE +#define DEFAULT_stopAtBusError FALSE +#define DEFAULT_axiDbgNumOfBeats 1 +#define DEFAULT_dmaCamNumOfEntries 32 +#define DEFAULT_dmaCommQLow ((DMA_THRESH_MAX_COMMQ+1)/2) +#define DEFAULT_dmaCommQHigh ((DMA_THRESH_MAX_COMMQ+1)*3/4) +#define DEFAULT_dmaReadIntBufLow ((DMA_THRESH_MAX_BUF+1)/2) +#define DEFAULT_dmaReadIntBufHigh ((DMA_THRESH_MAX_BUF+1)*3/4) +#define DEFAULT_dmaWriteIntBufLow ((DMA_THRESH_MAX_BUF+1)/2) +#define DEFAULT_dmaWriteIntBufHigh ((DMA_THRESH_MAX_BUF+1)*3/4) +#define DEFAULT_dmaSosEmergency 0 +#define DEFAULT_dmaDbgCntMode e_FM_DMA_DBG_NO_CNT +#define DEFAULT_catastrophicErr e_FM_CATASTROPHIC_ERR_STALL_PORT +#define DEFAULT_dmaErr e_FM_DMA_ERR_CATASTROPHIC +#define DEFAULT_resetOnInit FALSE +#define DEFAULT_haltOnExternalActivation FALSE /* do not change! if changed, must be disabled for rev1 ! */ +#define DEFAULT_haltOnUnrecoverableEccError FALSE /* do not change! if changed, must be disabled for rev1 ! */ +#define DEFAULT_externalEccRamsEnable FALSE +#define DEFAULT_VerifyUcode FALSE +#define DEFAULT_tnumAgingPeriod 0 +#define DEFAULT_dmaWatchdog 0 /* disabled */ +#define DEFAULT_mtu 9600 + +/**************************************************************************//** + @Description Modules registers offsets +*//***************************************************************************/ +#define FM_MM_MURAM 0x00000000 +#define FM_MM_BMI 0x00080000 +#define FM_MM_QMI 0x00080400 +#define FM_MM_PRS 0x000c7000 +#define FM_MM_KG 0x000C1000 +#define FM_MM_DMA 0x000C2000 +#define FM_MM_FPM 0x000C3000 +#define FM_MM_PLCR 0x000C0000 +#define FM_MM_IMEM 0x000C4000 + +/**************************************************************************//** + @Description Interrupt Enable/Mask +*//***************************************************************************/ + +/**************************************************************************//** + @Description Memory Mapped Registers +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct +{ + volatile uint32_t fpmtnc; /**< FPM TNUM Control */ + volatile uint32_t fpmpr; /**< FPM Port_ID FmCtl Association */ + volatile uint32_t brkc; /**< FPM Breakpoint Control */ + volatile uint32_t fpmflc; /**< FPM Flush Control */ + volatile uint32_t fpmdis1; /**< FPM Dispatch Thresholds1 */ + volatile uint32_t fpmdis2; /**< FPM Dispatch Thresholds2 */ + volatile uint32_t fmepi; /**< FM Error Pending Interrupts */ + volatile uint32_t fmrie; /**< FM Error Interrupt Enable */ + volatile uint32_t fmfpfcev[4]; /**< FPM FMan-Controller Event 1-4 */ + volatile uint8_t res1[16]; /**< reserved */ + volatile uint32_t fmfpfcee[4]; /**< PM FMan-Controller Event 1-4 */ + volatile uint8_t res2[16]; /**< reserved */ + volatile uint32_t fpmtsc1; /**< FPM TimeStamp Control1 */ + volatile uint32_t fpmtsc2; /**< FPM TimeStamp Control2 */ + volatile uint32_t fpmtsp; /**< FPM Time Stamp */ + volatile uint32_t fpmtsf; /**< FPM Time Stamp Fraction */ + volatile uint32_t fmrcr; /**< FM Rams Control */ + volatile uint32_t fpmextc; /**< FPM External Requests Control */ + volatile uint32_t fpmext1; /**< FPM External Requests Config1 */ + volatile uint32_t fpmext2; /**< FPM External Requests Config2 */ + volatile uint32_t fpmdrd[16]; /**< FPM Data_Ram Data 0-15 */ + volatile uint32_t fpmdra; /**< FPM Data Ram Access */ + volatile uint32_t fm_ip_rev_1; /**< FM IP Block Revision 1 */ + volatile uint32_t fm_ip_rev_2; /**< FM IP Block Revision 2 */ + volatile uint32_t fmrstc; /**< FM Reset Command */ + volatile uint32_t fmcld; /**< FM Classifier Debug */ + volatile uint32_t fmnpi; /**< FM Normal Pending Interrupts */ + volatile uint32_t fmfp_exte; /**< FPM External Requests Enable */ + volatile uint32_t fpmem; /**< FPM Event & Mask */ + volatile uint32_t fpmcev[4]; /**< FPM CPU Event 1-4 */ + volatile uint8_t res4[16]; /**< reserved */ + volatile uint32_t fmfp_ps[0x40]; /**< FPM Port Status */ + volatile uint8_t reserved1[0x260]; + volatile uint32_t fpmts[128]; /**< 0x400: FPM Task Status */ +} _PackedType t_FmFpmRegs; + +#define NUM_OF_DBG_TRAPS 3 + +typedef _Packed struct +{ + volatile uint32_t fmbm_init; /**< BMI Initialization */ + volatile uint32_t fmbm_cfg1; /**< BMI Configuration 1 */ + volatile uint32_t fmbm_cfg2; /**< BMI Configuration 2 */ + volatile uint32_t reserved[5]; + volatile uint32_t fmbm_ievr; /**< Interrupt Event Register */ + volatile uint32_t fmbm_ier; /**< Interrupt Enable Register */ + volatile uint32_t fmbm_ifr; /**< Interrupt Force Register */ + volatile uint32_t reserved1[5]; + volatile uint32_t fmbm_arb[8]; /**< BMI Arbitration */ + volatile uint32_t reserved2[12]; + volatile uint32_t fmbm_dtc[NUM_OF_DBG_TRAPS]; /**< BMI Debug Trap Counter */ + volatile uint32_t reserved3; + volatile uint32_t fmbm_dcv[NUM_OF_DBG_TRAPS][4]; /**< BMI Debug Compare Value */ + volatile uint32_t fmbm_dcm[NUM_OF_DBG_TRAPS][4]; /**< BMI Debug Compare Mask */ + volatile uint32_t fmbm_gde; /**< BMI Global Debug Enable */ + volatile uint32_t fmbm_pp[63]; /**< BMI Port Parameters */ + volatile uint32_t reserved4; + volatile uint32_t fmbm_pfs[63]; /**< BMI Port FIFO Size */ + volatile uint32_t reserved5; + volatile uint32_t fmbm_ppid[63]; /**< Port Partition ID */ +} _PackedType t_FmBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmqm_gc; /**< General Configuration Register */ + volatile uint32_t Reserved0; + volatile uint32_t fmqm_eie; /**< Error Interrupt Event Register */ + volatile uint32_t fmqm_eien; /**< Error Interrupt Enable Register */ + volatile uint32_t fmqm_eif; /**< Error Interrupt Force Register */ + volatile uint32_t fmqm_ie; /**< Interrupt Event Register */ + volatile uint32_t fmqm_ien; /**< Interrupt Enable Register */ + volatile uint32_t fmqm_if; /**< Interrupt Force Register */ + volatile uint32_t fmqm_gs; /**< Global Status Register */ + volatile uint32_t fmqm_ts; /**< Task Status Register */ + volatile uint32_t fmqm_etfc; /**< Enqueue Total Frame Counter */ + volatile uint32_t fmqm_dtfc; /**< Dequeue Total Frame Counter */ + volatile uint32_t fmqm_dc0; /**< Dequeue Counter 0 */ + volatile uint32_t fmqm_dc1; /**< Dequeue Counter 1 */ + volatile uint32_t fmqm_dc2; /**< Dequeue Counter 2 */ + volatile uint32_t fmqm_dc3; /**< Dequeue Counter 3 */ + volatile uint32_t fmqm_dfdc; /**< Dequeue FQID from Default Counter */ + volatile uint32_t fmqm_dfcc; /**< Dequeue FQID from Context Counter */ + volatile uint32_t fmqm_dffc; /**< Dequeue FQID from FD Counter */ + volatile uint32_t fmqm_dcc; /**< Dequeue Confirm Counter */ + volatile uint32_t Reserved1a[7]; + volatile uint32_t fmqm_tapc; /**< Tnum Aging Period Control */ + volatile uint32_t fmqm_dmcvc; /**< Dequeue MAC Command Valid Counter */ + volatile uint32_t fmqm_difdcc; /**< Dequeue Invalid FD Command Counter */ + volatile uint32_t fmqm_da1v; /**< Dequeue A1 Valid Counter */ + volatile uint32_t Reserved1b; + volatile uint32_t fmqm_dtc; /**< 0x0080 Debug Trap Counter */ + volatile uint32_t fmqm_efddd; /**< 0x0084 Enqueue Frame Descriptor Dynamic Debug */ + volatile uint32_t Reserved3[2]; + _Packed struct { + volatile uint32_t fmqm_dtcfg1; /**< 0x0090 Debug Trap Configuration 1 Register */ + volatile uint32_t fmqm_dtval1; /**< Debug Trap Value 1 Register */ + volatile uint32_t fmqm_dtm1; /**< Debug Trap Mask 1 Register */ + volatile uint32_t fmqm_dtc1; /**< Debug Trap Counter 1 Register */ + volatile uint32_t fmqm_dtcfg2; /**< Debug Trap Configuration 2 Register */ + volatile uint32_t fmqm_dtval2; /**< Debug Trap Value 2 Register */ + volatile uint32_t fmqm_dtm2; /**< Debug Trap Mask 2 Register */ + volatile uint32_t Reserved1; + } _PackedType dbgTraps[NUM_OF_DBG_TRAPS]; +} _PackedType t_FmQmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmdmsr; /**< FM DMA status register 0x04 */ + volatile uint32_t fmdmmr; /**< FM DMA mode register 0x08 */ + volatile uint32_t fmdmtr; /**< FM DMA bus threshold register 0x0c */ + volatile uint32_t fmdmhy; /**< FM DMA bus hysteresis register 0x10 */ + volatile uint32_t fmdmsetr; /**< FM DMA SOS emergency Threshold Register 0x14 */ + volatile uint32_t fmdmtah; /**< FM DMA transfer bus address high register 0x18 */ + volatile uint32_t fmdmtal; /**< FM DMA transfer bus address low register 0x1C */ + volatile uint32_t fmdmtcid; /**< FM DMA transfer bus communication ID register 0x20 */ + volatile uint32_t fmdmra; /**< FM DMA bus internal ram address register 0x24 */ + volatile uint32_t fmdmrd; /**< FM DMA bus internal ram data register 0x28 */ + volatile uint32_t fmdmwcr; /**< FM DMA CAM watchdog counter value 0x2C */ + volatile uint32_t fmdmebcr; /**< FM DMA CAM base in MURAM register 0x30 */ + volatile uint32_t fmdmccqdr; /**< FM DMA CAM and CMD Queue Debug register 0x34 */ + volatile uint32_t fmdmccqvr1; /**< FM DMA CAM and CMD Queue Value register #1 0x38 */ + volatile uint32_t fmdmccqvr2; /**< FM DMA CAM and CMD Queue Value register #2 0x3C */ + volatile uint32_t fmdmcqvr3; /**< FM DMA CMD Queue Value register #3 0x40 */ + volatile uint32_t fmdmcqvr4; /**< FM DMA CMD Queue Value register #4 0x44 */ + volatile uint32_t fmdmcqvr5; /**< FM DMA CMD Queue Value register #5 0x48 */ + volatile uint32_t fmdmsefrc; /**< FM DMA Semaphore Entry Full Reject Counter 0x50 */ + volatile uint32_t fmdmsqfrc; /**< FM DMA Semaphore Queue Full Reject Counter 0x54 */ + volatile uint32_t fmdmssrc; /**< FM DMA Semaphore SYNC Reject Counter 0x54 */ + volatile uint32_t fmdmdcr; /**< FM DMA Debug Counter */ + volatile uint32_t fmdmemsr; /**< FM DMA Emrgency Smoother Register */ + volatile uint32_t reserved; + volatile uint32_t fmdmplr[FM_SIZE_OF_LIODN_TABLE/2]; + /**< FM DMA PID-LIODN # register */ +} _PackedType t_FmDmaRegs; + +typedef _Packed struct +{ + volatile uint32_t iadd; /**< FM IRAM instruction address register */ + volatile uint32_t idata; /**< FM IRAM instruction data register */ + volatile uint32_t itcfg; /**< FM IRAM timing config register */ + volatile uint32_t iready; /**< FM IRAM ready register */ + volatile uint8_t res[0x80000-0x10]; +} _PackedType t_FMIramRegs; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description General defines +*//***************************************************************************/ + +#define FM_DEBUG_STATUS_REGISTER_OFFSET 0x000d1084UL +#define FM_UCODE_DEBUG_INSTRUCTION 0x6ffff805UL + + +/**************************************************************************//** + @Description DMA definitions +*//***************************************************************************/ + +/* masks */ +#define DMA_MODE_AID_OR 0x20000000 +#define DMA_MODE_SBER 0x10000000 +#define DMA_MODE_BER 0x00200000 +#define DMA_MODE_ECC 0x00000020 +#define DMA_MODE_PRIVILEGE_PROT 0x00001000 +#define DMA_MODE_SECURE_PROT 0x00000800 +#define DMA_MODE_EMERGENCY_READ 0x00080000 +#define DMA_MODE_EMERGENCY_WRITE 0x00040000 + +#define DMA_TRANSFER_PORTID_MASK 0xFF000000 +#define DMA_TRANSFER_TNUM_MASK 0x00FF0000 +#define DMA_TRANSFER_LIODN_MASK 0x00000FFF + +#define DMA_HIGH_LIODN_MASK 0x0FFF0000 +#define DMA_LOW_LIODN_MASK 0x00000FFF + +#define DMA_STATUS_CMD_QUEUE_NOT_EMPTY 0x10000000 +#define DMA_STATUS_BUS_ERR 0x08000000 +#define DMA_STATUS_READ_ECC 0x04000000 +#define DMA_STATUS_SYSTEM_WRITE_ECC 0x02000000 +#define DMA_STATUS_FM_WRITE_ECC 0x01000000 +#define DMA_STATUS_SYSTEM_DPEXT_ECC 0x00800000 +#define DMA_STATUS_FM_DPEXT_ECC 0x00400000 +#define DMA_STATUS_SYSTEM_DPDAT_ECC 0x00200000 +#define DMA_STATUS_FM_DPDAT_ECC 0x00100000 +#define DMA_STATUS_FM_SPDAT_ECC 0x00080000 + +#define FM_LIODN_BASE_MASK 0x00000FFF + +/* shifts */ +#define DMA_MODE_CACHE_OR_SHIFT 30 +#define DMA_MODE_BUS_PRI_SHIFT 16 +#define DMA_MODE_AXI_DBG_SHIFT 24 +#define DMA_MODE_CEN_SHIFT 13 +#define DMA_MODE_BUS_PROT_SHIFT 10 +#define DMA_MODE_DBG_SHIFT 7 +#define DMA_MODE_EMERGENCY_LEVEL_SHIFT 6 +#define DMA_MODE_AID_MODE_SHIFT 4 +#define DMA_MODE_MAX_AXI_DBG_NUM_OF_BEATS 16 +#define DMA_MODE_MAX_CAM_NUM_OF_ENTRIES 32 + +#define DMA_THRESH_COMMQ_SHIFT 24 +#define DMA_THRESH_READ_INT_BUF_SHIFT 16 + +#define DMA_LIODN_SHIFT 16 + +#define DMA_TRANSFER_PORTID_SHIFT 24 +#define DMA_TRANSFER_TNUM_SHIFT 16 + +/* sizes */ +#define DMA_MAX_WATCHDOG 0xffffffff + +/* others */ +#define DMA_CAM_SIZEOF_ENTRY 0x40 +#define DMA_CAM_ALIGN 0x1000 +#define DMA_CAM_UNITS 8 + + +/**************************************************************************//** + @Description FPM defines +*//***************************************************************************/ + +/* masks */ +#define FPM_EV_MASK_DOUBLE_ECC 0x80000000 +#define FPM_EV_MASK_STALL 0x40000000 +#define FPM_EV_MASK_SINGLE_ECC 0x20000000 +#define FPM_EV_MASK_RELEASE_FM 0x00010000 +#define FPM_EV_MASK_DOUBLE_ECC_EN 0x00008000 +#define FPM_EV_MASK_STALL_EN 0x00004000 +#define FPM_EV_MASK_SINGLE_ECC_EN 0x00002000 +#define FPM_EV_MASK_EXTERNAL_HALT 0x00000008 +#define FPM_EV_MASK_ECC_ERR_HALT 0x00000004 + +#define FPM_RAM_CTL_RAMS_ECC_EN 0x80000000 +#define FPM_RAM_CTL_IRAM_ECC_EN 0x40000000 +#define FPM_RAM_CTL_MURAM_ECC 0x00008000 +#define FPM_RAM_CTL_IRAM_ECC 0x00004000 +#define FPM_RAM_CTL_MURAM_TEST_ECC 0x20000000 +#define FPM_RAM_CTL_IRAM_TEST_ECC 0x10000000 +#define FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL 0x08000000 + +#define FPM_IRAM_ECC_ERR_EX_EN 0x00020000 +#define FPM_MURAM_ECC_ERR_EX_EN 0x00040000 + +#define FPM_REV1_MAJOR_MASK 0x0000FF00 +#define FPM_REV1_MINOR_MASK 0x000000FF + +#define FPM_REV2_INTEG_MASK 0x00FF0000 +#define FPM_REV2_ERR_MASK 0x0000FF00 +#define FPM_REV2_CFG_MASK 0x000000FF + +#define FPM_TS_FRACTION_MASK 0x0000FFFF +#define FPM_TS_CTL_EN 0x80000000 + +#define FPM_PORT_FM_CTL1 0x00000001 +#define FPM_PORT_FM_CTL2 0x00000002 +#define FPM_PRC_REALSE_STALLED 0x00800000 + +#define FPM_PS_STALLED 0x00800000 +#define FPM_PS_FM_CTL1_SEL 0x80000000 +#define FPM_PS_FM_CTL2_SEL 0x40000000 +#define FPM_PS_FM_CTL_SEL_MASK (FPM_PS_FM_CTL1_SEL | FPM_PS_FM_CTL2_SEL) + +#define FPM_RSTC_FM_RESET 0x80000000 +#define FPM_RSTC_10G0_RESET 0x04000000 +#define FPM_RSTC_1G0_RESET 0x40000000 +#define FPM_RSTC_1G1_RESET 0x20000000 +#define FPM_RSTC_1G2_RESET 0x10000000 +#define FPM_RSTC_1G3_RESET 0x08000000 +#define FPM_RSTC_1G4_RESET 0x02000000 + + +/* shifts */ +#define FPM_DISP_LIMIT_SHIFT 24 + +#define FPM_THR1_PRS_SHIFT 24 +#define FPM_THR1_KG_SHIFT 16 +#define FPM_THR1_PLCR_SHIFT 8 +#define FPM_THR1_BMI_SHIFT 0 + +#define FPM_THR2_QMI_ENQ_SHIFT 24 +#define FPM_THR2_QMI_DEQ_SHIFT 0 +#define FPM_THR2_FM_CTL1_SHIFT 16 +#define FPM_THR2_FM_CTL2_SHIFT 8 + +#define FPM_EV_MASK_CAT_ERR_SHIFT 1 +#define FPM_EV_MASK_DMA_ERR_SHIFT 0 + +#define FPM_REV1_MAJOR_SHIFT 8 +#define FPM_REV1_MINOR_SHIFT 0 + +#define FPM_REV2_INTEG_SHIFT 16 +#define FPM_REV2_ERR_SHIFT 8 +#define FPM_REV2_CFG_SHIFT 0 + +#define FPM_TS_INT_SHIFT 16 + +#define FPM_PORT_FM_CTL_PORTID_SHIFT 24 + +#define FPM_PS_FM_CTL_SEL_SHIFT 30 +#define FPM_PRC_ORA_FM_CTL_SEL_SHIFT 16 + +/* Interrupts defines */ +#define FPM_EVENT_FM_CTL_0 0x00008000 +#define FPM_EVENT_FM_CTL 0x0000FF00 +#define FPM_EVENT_FM_CTL_BRK 0x00000080 + +/* others */ +#define FPM_MAX_DISP_LIMIT 31 + +/**************************************************************************//** + @Description BMI defines +*//***************************************************************************/ +/* masks */ +#define BMI_INIT_START 0x80000000 +#define BMI_ERR_INTR_EN_PIPELINE_ECC 0x80000000 +#define BMI_ERR_INTR_EN_LIST_RAM_ECC 0x40000000 +#define BMI_ERR_INTR_EN_STATISTICS_RAM_ECC 0x20000000 +#define BMI_ERR_INTR_EN_DISPATCH_RAM_ECC 0x10000000 +#define BMI_NUM_OF_TASKS_MASK 0x3F000000 +#define BMI_NUM_OF_EXTRA_TASKS_MASK 0x000F0000 +#define BMI_NUM_OF_DMAS_MASK 0x00000F00 +#define BMI_NUM_OF_EXTRA_DMAS_MASK 0x0000000F +#define BMI_FIFO_SIZE_MASK 0x000003FF +#define BMI_EXTRA_FIFO_SIZE_MASK 0x03FF0000 +#define BMI_CFG2_DMAS_MASK 0x0000003F + +/* shifts */ +#define BMI_CFG2_TASKS_SHIFT 16 +#define BMI_CFG2_DMAS_SHIFT 0 +#define BMI_CFG1_FIFO_SIZE_SHIFT 16 +#define BMI_FIFO_SIZE_SHIFT 0 +#define BMI_EXTRA_FIFO_SIZE_SHIFT 16 +#define BMI_NUM_OF_TASKS_SHIFT 24 +#define BMI_EXTRA_NUM_OF_TASKS_SHIFT 16 +#define BMI_NUM_OF_DMAS_SHIFT 8 +#define BMI_EXTRA_NUM_OF_DMAS_SHIFT 0 + +/* others */ +#define BMI_FIFO_ALIGN 0x100 + + +/**************************************************************************//** + @Description QMI defines +*//***************************************************************************/ +/* masks */ +#define QMI_CFG_ENQ_EN 0x80000000 +#define QMI_CFG_DEQ_EN 0x40000000 +#define QMI_CFG_EN_COUNTERS 0x10000000 +#define QMI_CFG_SOFT_RESET 0x01000000 +#define QMI_CFG_DEQ_MASK 0x0000003F +#define QMI_CFG_ENQ_MASK 0x00003F00 + +#define QMI_ERR_INTR_EN_DOUBLE_ECC 0x80000000 +#define QMI_ERR_INTR_EN_DEQ_FROM_DEF 0x40000000 +#define QMI_INTR_EN_SINGLE_ECC 0x80000000 + +/* shifts */ +#define QMI_CFG_ENQ_SHIFT 8 +#define QMI_TAPC_TAP 22 + + +/**************************************************************************//** + @Description IRAM defines +*//***************************************************************************/ +/* masks */ +#define IRAM_IADD_AIE 0x80000000 +#define IRAM_READY 0x80000000 + +typedef struct { + void (*f_Isr) (t_Handle h_Arg, uint32_t event); + t_Handle h_SrcHandle; +} t_FmanCtrlIntrSrc; + + +typedef struct +{ + /* uint8_t numOfPartitions; */ + bool resetOnInit; +#ifdef FM_PARTITION_ARRAY + uint16_t liodnBasePerPort[FM_SIZE_OF_LIODN_TABLE]; +#endif + bool enCounters; + t_FmThresholds thresholds; + e_FmDmaCacheOverride dmaCacheOverride; + e_FmDmaAidMode dmaAidMode; + bool dmaAidOverride; + uint8_t dmaAxiDbgNumOfBeats; + uint8_t dmaCamNumOfEntries; + uint32_t dmaWatchdog; + t_FmDmaThresholds dmaCommQThresholds; + t_FmDmaThresholds dmaWriteBufThresholds; + t_FmDmaThresholds dmaReadBufThresholds; + uint32_t dmaSosEmergency; + e_FmDmaDbgCntMode dmaDbgCntMode; + bool dmaStopOnBusError; + bool dmaEnEmergency; + t_FmDmaEmergency dmaEmergency; + bool dmaEnEmergencySmoother; + uint32_t dmaEmergencySwitchCounter; + bool haltOnExternalActivation; + bool haltOnUnrecoverableEccError; + e_FmCatastrophicErr catastrophicErr; + e_FmDmaErr dmaErr; + bool enMuramTestMode; + bool enIramTestMode; + bool externalEccRamsEnable; + uint16_t tnumAgingPeriod; + t_FmPcdFirmwareParams firmware; + bool fwVerify; +} t_FmDriverParam; + +typedef void (t_FmanCtrlIsr)( t_Handle h_Fm, uint32_t event); + +typedef struct +{ +/***************************/ +/* Master/Guest parameters */ +/***************************/ + uint8_t fmId; + e_FmPortType portsTypes[FM_MAX_NUM_OF_HW_PORT_IDS]; + uint16_t fmClkFreq; +/**************************/ +/* Master Only parameters */ +/**************************/ + bool enabledTimeStamp; + uint8_t count1MicroBit; + uint8_t totalNumOfTasks; + uint32_t totalFifoSize; + uint8_t maxNumOfOpenDmas; + uint8_t accumulatedNumOfTasks; + uint32_t accumulatedFifoSize; + uint8_t accumulatedNumOfOpenDmas; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + uint8_t accumulatedNumOfDeqTnums; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +#ifdef FM_LOW_END_RESTRICTION + bool lowEndRestriction; +#endif /* FM_LOW_END_RESTRICTION */ + uint32_t exceptions; + int irq; + int errIrq; + bool ramsEccEnable; + bool explicitEnable; + bool internalCall; + uint8_t ramsEccOwners; + uint32_t extraFifoPoolSize; + uint8_t extraTasksPoolSize; + uint8_t extraOpenDmasPoolSize; +#if defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS) + uint16_t macMaxFrameLengths10G[FM_MAX_NUM_OF_10G_MACS]; +#endif /* defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS) */ + uint16_t macMaxFrameLengths1G[FM_MAX_NUM_OF_1G_MACS]; +} t_FmStateStruct; + +typedef struct +{ +/***************************/ +/* Master/Guest parameters */ +/***************************/ +/* locals for recovery */ + uintptr_t baseAddr; + +/* un-needed for recovery */ + t_Handle h_Pcd; + char fmModuleName[MODULE_NAME_SIZE]; + char fmIpcHandlerModuleName[FM_MAX_NUM_OF_GUESTS][MODULE_NAME_SIZE]; + t_Handle h_IpcSessions[FM_MAX_NUM_OF_GUESTS]; + t_FmIntrSrc intrMng[e_FM_EV_DUMMY_LAST]; /* FM exceptions user callback */ + uint8_t guestId; +/**************************/ +/* Master Only parameters */ +/**************************/ +/* locals for recovery */ + t_FmFpmRegs *p_FmFpmRegs; + t_FmBmiRegs *p_FmBmiRegs; + t_FmQmiRegs *p_FmQmiRegs; + t_FmDmaRegs *p_FmDmaRegs; + t_FmExceptionsCallback *f_Exception; + t_FmBusErrorCallback *f_BusError; + t_Handle h_App; /* Application handle */ + t_Handle h_Spinlock; + bool recoveryMode; + t_FmStateStruct *p_FmStateStruct; + +/* un-needed for recovery */ + t_FmDriverParam *p_FmDriverParam; + t_Handle h_FmMuram; + uint64_t fmMuramPhysBaseAddr; + bool independentMode; + bool hcPortInitialized; + uintptr_t camBaseAddr; /* save for freeing */ + uintptr_t resAddr; + uintptr_t fifoBaseAddr; /* save for freeing */ + t_FmanCtrlIntrSrc fmanCtrlIntr[FM_NUM_OF_FMAN_CTRL_EVENT_REGS]; /* FM exceptions user callback */ + bool usedEventRegs[FM_NUM_OF_FMAN_CTRL_EVENT_REGS]; +} t_Fm; + + +#endif /* __FM_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_ipc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_ipc.h @@ -0,0 +1,449 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_ipc.h + + @Description FM Inter-Partition prototypes, structures and definitions. +*//***************************************************************************/ +#ifndef __FM_IPC_H +#define __FM_IPC_H + +#include "error_ext.h" +#include "std_ext.h" + + +/**************************************************************************//** + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_IPC_grp FM Inter-Partition messaging Unit + + @Description FM Inter-Partition messaging unit API definitions and enums. + + @{ +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description enum for defining MAC types +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure of parameters for specifying a MAC. +*//***************************************************************************/ +typedef _Packed struct +{ + uint8_t id; + uint32_t enumType; +} _PackedType t_FmIpcMacParams; + +/**************************************************************************//** + @Description A structure of parameters for specifying a MAC. +*//***************************************************************************/ +typedef _Packed struct +{ + t_FmIpcMacParams macParams; + uint16_t maxFrameLength; +} _PackedType t_FmIpcMacMaxFrameParams; + +/**************************************************************************//** + @Description FM physical Address +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPhysAddr +{ + volatile uint8_t high; + volatile uint32_t low; +} _PackedType t_FmIpcPhysAddr; + +/**************************************************************************//** + @Description Structure for IPC communication during FM_PORT_Init. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortInInitParams { + uint8_t hardwarePortId; /**< IN. port Id */ + uint32_t enumPortType; /**< IN. Port type */ + uint8_t boolIndependentMode;/**< IN. TRUE if FM Port operates in independent mode */ + uint16_t liodnOffset; /**< IN. Port's requested resource */ + uint8_t numOfTasks; /**< IN. Port's requested resource */ + uint8_t numOfExtraTasks; /**< IN. Port's requested resource */ + uint8_t numOfOpenDmas; /**< IN. Port's requested resource */ + uint8_t numOfExtraOpenDmas; /**< IN. Port's requested resource */ + uint32_t sizeOfFifo; /**< IN. Port's requested resource */ + uint32_t extraSizeOfFifo; /**< IN. Port's requested resource */ + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ + uint16_t liodnBase; /**< IN. Irrelevant for P4080 rev 1. + LIODN base for this port, to be + used together with LIODN offset. */ +} _PackedType t_FmIpcPortInInitParams; + + +/**************************************************************************//** + @Description Structure for IPC communication between port and FM + regarding tasks and open DMA resources management. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortRsrcParams { + uint8_t hardwarePortId; /**< IN. port Id */ + uint32_t val; /**< IN. Port's requested resource */ + uint32_t extra; /**< IN. Port's requested resource */ + uint8_t boolInitialConfig; +} _PackedType t_FmIpcPortRsrcParams; + + +/**************************************************************************//** + @Description Structure for IPC communication between port and FM + regarding tasks and open DMA resources management. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortFifoParams { + t_FmIpcPortRsrcParams rsrcParams; + uint32_t enumPortType; + uint8_t boolIndependentMode; + uint8_t deqPipelineDepth; + uint8_t numOfPools; + uint16_t secondLargestBufSize; + uint16_t largestBufSize; + uint8_t boolInitialConfig; +} _PackedType t_FmIpcPortFifoParams; + +/**************************************************************************//** + @Description Structure for port-FM communication during FM_PORT_Free. +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortFreeParams { + uint8_t hardwarePortId; /**< IN. port Id */ + uint32_t enumPortType; /**< IN. Port type */ +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +} _PackedType t_FmIpcPortFreeParams; + +/**************************************************************************//** + @Description Structure for defining DMA status +*//***************************************************************************/ +typedef _Packed struct t_FmIpcDmaStatus { + uint8_t boolCmqNotEmpty; /**< Command queue is not empty */ + uint8_t boolBusError; /**< Bus error occurred */ + uint8_t boolReadBufEccError; /**< Double ECC error on buffer Read */ + uint8_t boolWriteBufEccSysError; /**< Double ECC error on buffer write from system side */ + uint8_t boolWriteBufEccFmError; /**< Double ECC error on buffer write from FM side */ +} _PackedType t_FmIpcDmaStatus; + +typedef _Packed struct t_FmIpcRegisterIntr +{ + uint8_t guestId; /* IN */ + uint32_t event; /* IN */ +} _PackedType t_FmIpcRegisterIntr; + +typedef _Packed struct t_FmIpcIsr +{ + uint8_t boolErr; /* IN */ + uint32_t pendingReg; /* IN */ +} _PackedType t_FmIpcIsr; + +/**************************************************************************//** + @Description structure for returning revision information +*//***************************************************************************/ +typedef _Packed struct t_FmIpcRevisionInfo { + uint8_t majorRev; /**< OUT: Major revision */ + uint8_t minorRev; /**< OUT: Minor revision */ +} _PackedType t_FmIpcRevisionInfo; + +/**************************************************************************//** + @Description Structure for defining Fm number of Fman controlers +*//***************************************************************************/ +typedef _Packed struct t_FmIpcPortNumOfFmanCtrls { + uint8_t hardwarePortId; /**< IN. port Id */ + uint8_t numOfFmanCtrls; /**< IN. Port type */ +} t_FmIpcPortNumOfFmanCtrls; + +/**************************************************************************//** + @Description structure for setting Fman contriller events +*//***************************************************************************/ +typedef _Packed struct t_FmIpcFmanEvents { + uint8_t eventRegId; /**< IN: Fman controller event register id */ + uint32_t enableEvents; /**< IN/OUT: required enabled events mask */ +} _PackedType t_FmIpcFmanEvents; + +#define FM_IPC_MAX_REPLY_BODY_SIZE 16 +#define FM_IPC_MAX_REPLY_SIZE (FM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t)) +#define FM_IPC_MAX_MSG_SIZE 30 +typedef _Packed struct t_FmIpcMsg +{ + uint32_t msgId; + uint8_t msgBody[FM_IPC_MAX_MSG_SIZE]; +} _PackedType t_FmIpcMsg; + +typedef _Packed struct t_FmIpcReply +{ + uint32_t error; + uint8_t replyBody[FM_IPC_MAX_REPLY_BODY_SIZE]; +} _PackedType t_FmIpcReply; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***************************************************************************/ +/************************ FRONT-END-TO-BACK-END*****************************/ +/***************************************************************************/ + +/**************************************************************************//** + @Function FM_GET_TIMESTAMP_SCALE + + @Description Used by FM front-end. + + @Param[out] uint32_t Pointer +*//***************************************************************************/ +#define FM_GET_TIMESTAMP_SCALE 1 + +/**************************************************************************//** + @Function FM_GET_COUNTER + + @Description Used by FM front-end. + + @Param[in/out] t_FmIpcGetCounter Pointer +*//***************************************************************************/ +#define FM_GET_COUNTER 2 + +/**************************************************************************//** + @Function FM_DUMP_REGS + + @Description Used by FM front-end for the PORT module in order to set and get + parameters in/from master FM module on FM PORT initialization time. + + @Param None +*//***************************************************************************/ +#define FM_DUMP_REGS 3 + +/**************************************************************************//** + @Function FM_GET_SET_PORT_PARAMS + + @Description Used by FM front-end for the PORT module in order to set and get + parameters in/from master FM module on FM PORT initialization time. + + @Param[in/out] t_FmIcPortInitParams Pointer +*//***************************************************************************/ +#define FM_GET_SET_PORT_PARAMS 4 + +/**************************************************************************//** + @Function FM_FREE_PORT + + @Description Used by FM front-end for the PORT module when a port is freed + to free all FM PORT resources. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_FREE_PORT 5 + +/**************************************************************************//** + @Function FM_RESET_MAC + + @Description Used by front-end for the MAC module to reset the MAC registers + + @Param[in] t_FmIpcMacParams Pointer . +*//***************************************************************************/ +#define FM_RESET_MAC 6 + +/**************************************************************************//** + @Function FM_RESUME_STALLED_PORT + + @Description Used by FM front-end for the PORT module in order to + release a stalled FM Port. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_RESUME_STALLED_PORT 7 + +/**************************************************************************//** + @Function FM_IS_PORT_STALLED + + @Description Used by FM front-end for the PORT module in order to check whether + an FM port is stalled. + + @Param[in/out] t_FmIcPortIsStalled Pointer +*//***************************************************************************/ +#define FM_IS_PORT_STALLED 8 + +/**************************************************************************//** + @Function FM_DUMP_PORT_REGS + + @Description Used by FM front-end for the PORT module in order to dump + all port registers. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_DUMP_PORT_REGS 9 + +/**************************************************************************//** + @Function FM_GET_REV + + @Description Used by FM front-end for the PORT module in order to dump + all port registers. + + @Param[in] uint8_t Pointer +*//***************************************************************************/ +#define FM_GET_REV 10 + +/**************************************************************************//** + @Function FM_REGISTER_INTR + + @Description Used by FM front-end to register an interrupt handler to + be called upon interrupt for guest. + + @Param[out] t_FmIpcRegisterIntr Pointer +*//***************************************************************************/ +#define FM_REGISTER_INTR 11 + +/**************************************************************************//** + @Function FM_GET_CLK_FREQ + + @Description Used by FM Front-end to read the FM clock frequency. + + @Param[out] uint32_t Pointer +*//***************************************************************************/ +#define FM_GET_CLK_FREQ 12 + +/**************************************************************************//** + @Function FM_DMA_STAT + + @Description Used by FM front-end to read the FM DMA status. + + @Param[out] t_FmIpcDmaStatus Pointer +*//***************************************************************************/ +#define FM_DMA_STAT 13 + +/**************************************************************************//** + @Function FM_ALLOC_FMAN_CTRL_EVENT_REG + + @Description Used by FM front-end to allocate event register. + + @Param[out] Event register id Pointer +*//***************************************************************************/ +#define FM_ALLOC_FMAN_CTRL_EVENT_REG 14 + +/**************************************************************************//** + @Function FM_FREE_FMAN_CTRL_EVENT_REG + + @Description Used by FM front-end to free locate event register. + + @Param[in] uint8_t Pointer - Event register id +*//***************************************************************************/ +#define FM_FREE_FMAN_CTRL_EVENT_REG 15 + +/**************************************************************************//** + @Function FM_SET_FMAN_CTRL_EVENTS_ENABLE + + @Description Used by FM front-end to enable events in the FPM + Fman controller event register. + + @Param[in] t_FmIpcFmanEvents Pointer +*//***************************************************************************/ +#define FM_SET_FMAN_CTRL_EVENTS_ENABLE 16 + +/**************************************************************************//** + @Function FM_SET_FMAN_CTRL_EVENTS_ENABLE + + @Description Used by FM front-end to enable events in the FPM + Fman controller event register. + + @Param[in/out] t_FmIpcFmanEvents Pointer +*//***************************************************************************/ +#define FM_GET_FMAN_CTRL_EVENTS_ENABLE 17 + +/**************************************************************************//** + @Function FM_SET_MAC_MAX_FRAME + + @Description Used by FM front-end to set MAC's MTU/RTU's in + back-end. + + @Param[in/out] t_FmIpcMacMaxFrameParams Pointer +*//***************************************************************************/ +#define FM_SET_MAC_MAX_FRAME 18 + +/**************************************************************************//** + @Function FM_GET_PHYS_MURAM_BASE + + @Description Used by FM front-end in order to get MURAM base address + + @Param[in/out] t_FmIpcPhysAddr Pointer +*//***************************************************************************/ +#define FM_GET_PHYS_MURAM_BASE 19 + +/**************************************************************************//** + @Function FM_MASTER_IS_ALIVE + + @Description Used by FM front-end in order to verify Master is up + + @Param[in/out] bool +*//***************************************************************************/ +#define FM_MASTER_IS_ALIVE 20 + +#define FM_ENABLE_RAM_ECC 21 +#define FM_DISABLE_RAM_ECC 22 +#define FM_SET_NUM_OF_FMAN_CTRL 23 +#define FM_SET_SIZE_OF_FIFO 24 +#define FM_SET_NUM_OF_TASKS 25 +#define FM_SET_NUM_OF_OPEN_DMAS 26 + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +#define FM_10G_TX_ECC_WA 100 +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +/***************************************************************************/ +/************************ BACK-END-TO-FRONT-END*****************************/ +/***************************************************************************/ + +/**************************************************************************//** + @Function FM_GUEST_ISR + + @Description Used by FM back-end to report an interrupt to the front-end. + + @Param[out] t_FmIpcIsr Pointer +*//***************************************************************************/ +#define FM_GUEST_ISR 1 + + + +/** @} */ /* end of FM_IPC_grp group */ +/** @} */ /* end of FM_grp group */ + + +#endif /* __FM_IPC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Makefile @@ -0,0 +1,21 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + + +obj-y += fsl-ncsw-PFM1.o + +fsl-ncsw-PFM1-objs := fm.o fm_muram.o + +obj-y += MAC/ +obj-y += Pcd/ +obj-y += Port/ +obj-y += HC/ +obj-y += Rtc/ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_muram.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm_muram.c @@ -0,0 +1,164 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File FM_muram.c + + @Description FM MURAM ... +*//***************************************************************************/ +#include "error_ext.h" +#include "std_ext.h" +#include "mm_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "fm_muram_ext.h" +#include "fm_common.h" + + +#define __ERR_MODULE__ MODULE_FM_MURAM + + +typedef struct +{ + t_Handle h_Mem; + uintptr_t baseAddr; + uint32_t size; +} t_FmMuram; + + +void FmMuramClear(t_Handle h_FmMuram) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + + SANITY_CHECK_RETURN(h_FmMuram, E_INVALID_HANDLE); + IOMemSet32(UINT_TO_PTR(p_FmMuram->baseAddr), 0, p_FmMuram->size); +} + + +t_Handle FM_MURAM_ConfigAndInit(uintptr_t baseAddress, uint32_t size) +{ + t_Handle h_Mem; + t_FmMuram *p_FmMuram; + + if (!baseAddress) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("baseAddress 0 is not supported")); + return NULL; + } + + if (baseAddress%4) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("baseAddress not 4 bytes aligned!")); + return NULL; + } + + /* Allocate FM MURAM structure */ + p_FmMuram = (t_FmMuram *) XX_Malloc(sizeof(t_FmMuram)); + if (!p_FmMuram) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM MURAM driver structure")); + return NULL; + } + memset(p_FmMuram, 0, sizeof(t_FmMuram)); + + + if ((MM_Init(&h_Mem, baseAddress, size) != E_OK) || (!h_Mem)) + { + XX_Free(p_FmMuram); + REPORT_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-MURAM partition!!!")); + return NULL; + } + + /* Initialize FM MURAM parameters which will be kept by the driver */ + p_FmMuram->baseAddr = baseAddress; + p_FmMuram->size = size; + p_FmMuram->h_Mem = h_Mem; + + return p_FmMuram; +} + +t_Error FM_MURAM_Free(t_Handle h_FmMuram) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + + if (p_FmMuram->h_Mem) + MM_Free(p_FmMuram->h_Mem); + + XX_Free(h_FmMuram); + + return E_OK; +} + +void * FM_MURAM_AllocMem(t_Handle h_FmMuram, uint32_t size, uint32_t align) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + uintptr_t addr; + + SANITY_CHECK_RETURN_VALUE(h_FmMuram, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmMuram->h_Mem, E_INVALID_HANDLE, NULL); + + addr = (uintptr_t)MM_Get(p_FmMuram->h_Mem, size, align ,"FM MURAM"); + + if (addr == ILLEGAL_BASE) + return NULL; + + return UINT_TO_PTR(addr); +} + +void * FM_MURAM_AllocMemForce(t_Handle h_FmMuram, uint64_t base, uint32_t size) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + uintptr_t addr; + + SANITY_CHECK_RETURN_VALUE(h_FmMuram, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmMuram->h_Mem, E_INVALID_HANDLE, NULL); + + addr = (uintptr_t)MM_GetForce(p_FmMuram->h_Mem, base, size, "FM MURAM"); + + if (addr == ILLEGAL_BASE) + return NULL; + + return UINT_TO_PTR(addr); +} + +t_Error FM_MURAM_FreeMem(t_Handle h_FmMuram, void *ptr) +{ + t_FmMuram *p_FmMuram = ( t_FmMuram *)h_FmMuram; + + SANITY_CHECK_RETURN_ERROR(h_FmMuram, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmMuram->h_Mem, E_INVALID_HANDLE); + + if (MM_Put(p_FmMuram->h_Mem, PTR_TO_UINT(ptr)) == 0) + RETURN_ERROR(MINOR, E_INVALID_HANDLE, ("memory pointer!!!")); + + return E_OK; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/fm.c @@ -0,0 +1,4605 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm.c + + @Description FM driver routines implementation. +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "xx_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "fm_muram_ext.h" + +#include "fm_common.h" +#include "fm_ipc.h" +#include "fm.h" + + +/****************************************/ +/* static functions */ +/****************************************/ + +static volatile bool blockingFlag = FALSE; +static void IpcMsgCompletionCB(t_Handle h_Fm, + uint8_t *p_Msg, + uint8_t *p_Reply, + uint32_t replyLength, + t_Error status) +{ + UNUSED(h_Fm);UNUSED(p_Msg);UNUSED(p_Reply);UNUSED(replyLength);UNUSED(status); + blockingFlag = FALSE; +} + +static bool IsFmanCtrlCodeLoaded(t_Fm *p_Fm) +{ + t_FMIramRegs *p_Iram; + + ASSERT_COND(p_Fm); + p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + + return (bool)!!(GET_UINT32(p_Iram->iready) & IRAM_READY); +} + +static t_Error CheckFmParameters(t_Fm *p_Fm) +{ + if (IsFmanCtrlCodeLoaded(p_Fm) && !p_Fm->p_FmDriverParam->resetOnInit) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Old FMan CTRL code is loaded; FM must be reset!")); + if(!p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats || (p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats > DMA_MODE_MAX_AXI_DBG_NUM_OF_BEATS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("axiDbgNumOfBeats has to be in the range 1 - %d", DMA_MODE_MAX_AXI_DBG_NUM_OF_BEATS)); + if(p_Fm->p_FmDriverParam->dmaCamNumOfEntries % DMA_CAM_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCamNumOfEntries has to be divisble by %d", DMA_CAM_UNITS)); + if(!p_Fm->p_FmDriverParam->dmaCamNumOfEntries || (p_Fm->p_FmDriverParam->dmaCamNumOfEntries > DMA_MODE_MAX_CAM_NUM_OF_ENTRIES)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCamNumOfEntries has to be in the range 1 - %d", DMA_MODE_MAX_CAM_NUM_OF_ENTRIES)); + if(p_Fm->p_FmDriverParam->dmaCommQThresholds.assertEmergency > DMA_THRESH_MAX_COMMQ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCommQThresholds.assertEmergency can not be larger than %d", DMA_THRESH_MAX_COMMQ)); + if(p_Fm->p_FmDriverParam->dmaCommQThresholds.clearEmergency > DMA_THRESH_MAX_COMMQ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCommQThresholds.clearEmergency can not be larger than %d", DMA_THRESH_MAX_COMMQ)); + if(p_Fm->p_FmDriverParam->dmaCommQThresholds.clearEmergency >= p_Fm->p_FmDriverParam->dmaCommQThresholds.assertEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaCommQThresholds.clearEmergency must be smaller than dmaCommQThresholds.assertEmergency")); + if(p_Fm->p_FmDriverParam->dmaReadBufThresholds.assertEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaReadBufThresholds.assertEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaReadBufThresholds.clearEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaReadBufThresholds.clearEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaReadBufThresholds.clearEmergency >= p_Fm->p_FmDriverParam->dmaReadBufThresholds.assertEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaReadBufThresholds.clearEmergency must be smaller than dmaReadBufThresholds.assertEmergency")); + if(p_Fm->p_FmDriverParam->dmaWriteBufThresholds.assertEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaWriteBufThresholds.assertEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaWriteBufThresholds.clearEmergency > DMA_THRESH_MAX_BUF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaWriteBufThresholds.clearEmergency can not be larger than %d", DMA_THRESH_MAX_BUF)); + if(p_Fm->p_FmDriverParam->dmaWriteBufThresholds.clearEmergency >= p_Fm->p_FmDriverParam->dmaWriteBufThresholds.assertEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dmaWriteBufThresholds.clearEmergency must be smaller than dmaWriteBufThresholds.assertEmergency")); + + if(!p_Fm->p_FmStateStruct->fmClkFreq) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fmClkFreq must be set.")); + if (USEC_TO_CLK(p_Fm->p_FmDriverParam->dmaWatchdog, p_Fm->p_FmStateStruct->fmClkFreq) > DMA_MAX_WATCHDOG) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("dmaWatchdog depends on FM clock. dmaWatchdog(in microseconds) * clk (in Mhz), may not exceed 0x08x", DMA_MAX_WATCHDOG)); + +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + uint8_t i; + + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + for (i=0; ip_FmDriverParam->liodnBasePerPort[i] & ~FM_LIODN_BASE_MASK) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("liodn number is out of range")); + } +#endif /* FM_PARTITION_ARRAY */ + + if(p_Fm->p_FmStateStruct->totalFifoSize % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("totalFifoSize number has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Fm->p_FmStateStruct->totalFifoSize || (p_Fm->p_FmStateStruct->totalFifoSize > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("totalFifoSize number has to be in the range 256 - %d", BMI_MAX_FIFO_SIZE)); + if(!p_Fm->p_FmStateStruct->totalNumOfTasks || (p_Fm->p_FmStateStruct->totalNumOfTasks > BMI_MAX_NUM_OF_TASKS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("totalNumOfTasks number has to be in the range 1 - %d", BMI_MAX_NUM_OF_TASKS)); + if(!p_Fm->p_FmStateStruct->maxNumOfOpenDmas || (p_Fm->p_FmStateStruct->maxNumOfOpenDmas > BMI_MAX_NUM_OF_DMAS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("maxNumOfOpenDmas number has to be in the range 1 - %d", BMI_MAX_NUM_OF_DMAS)); + + if(p_Fm->p_FmDriverParam->thresholds.dispLimit > FPM_MAX_DISP_LIMIT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("thresholds.dispLimit can't be greater than %d", FPM_MAX_DISP_LIMIT)); + + if(!p_Fm->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exceptions callback not provided")); + if(!p_Fm->f_BusError) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exceptions callback not provided")); + + return E_OK; +} + +static void SendIpcIsr(t_Fm *p_Fm, uint32_t macEvent, uint32_t pendingReg) +{ + t_Error err; + t_FmIpcIsr fmIpcIsr; + t_FmIpcMsg msg; + + ASSERT_COND(p_Fm->guestId == NCSW_MASTER_ID); + ASSERT_COND(p_Fm->h_IpcSessions[p_Fm->intrMng[macEvent].guestId]); + if (p_Fm->intrMng[macEvent].guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_GUEST_ISR; + fmIpcIsr.pendingReg = pendingReg; + fmIpcIsr.boolErr = FALSE; + memcpy(msg.msgBody, &fmIpcIsr, sizeof(fmIpcIsr)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[p_Fm->intrMng[macEvent].guestId], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(fmIpcIsr), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + else + p_Fm->intrMng[macEvent].f_Isr(p_Fm->intrMng[macEvent].h_SrcHandle); +} + +static void BmiErrEvent(t_Fm *p_Fm) +{ + uint32_t event, mask, force; + + event = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ievr); + mask = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr); + if(force & event) + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, force & ~event); + + + /* clear the acknowledged events */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ievr, event); + + if(event & BMI_ERR_INTR_EN_PIPELINE_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_PIPELINE_ECC); + if(event & BMI_ERR_INTR_EN_LIST_RAM_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_LIST_RAM_ECC); + if(event & BMI_ERR_INTR_EN_STATISTICS_RAM_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_STATISTICS_RAM_ECC); + if(event & BMI_ERR_INTR_EN_DISPATCH_RAM_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_BMI_DISPATCH_RAM_ECC); +} + +static void QmiErrEvent(t_Fm *p_Fm) +{ + uint32_t event, mask, force; + + event = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eie); + mask = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif); + if(force & event) + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif, force & ~event); + + /* clear the acknowledged events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eie, event); + + if(event & QMI_ERR_INTR_EN_DOUBLE_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_QMI_DOUBLE_ECC); + if(event & QMI_ERR_INTR_EN_DEQ_FROM_DEF) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID); +} + +static void DmaErrEvent(t_Fm *p_Fm) +{ + uint64_t addr=0; + uint32_t status, mask, tmpReg=0; + uint8_t tnum; + uint8_t hardwarePortId; + uint8_t relativePortId; + uint16_t liodn; + + status = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsr); + mask = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr); + + /* get bus error regs befor clearing BER */ + if ((status & DMA_STATUS_BUS_ERR) && (mask & DMA_MODE_BER)) + { + addr = (uint64_t)GET_UINT32(p_Fm->p_FmDmaRegs->fmdmtal); + addr |= ((uint64_t)(GET_UINT32(p_Fm->p_FmDmaRegs->fmdmtah)) << 32); + + /* get information about the owner of that bus error */ + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmtcid); + } + + /* clear set events */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsr, status); + + if ((status & DMA_STATUS_BUS_ERR) && (mask & DMA_MODE_BER)) + { + hardwarePortId = (uint8_t)(((tmpReg & DMA_TRANSFER_PORTID_MASK) >> DMA_TRANSFER_PORTID_SHIFT)); + HW_PORT_ID_TO_SW_PORT_ID(relativePortId, hardwarePortId); + tnum = (uint8_t)((tmpReg & DMA_TRANSFER_TNUM_MASK) >> DMA_TRANSFER_TNUM_SHIFT); + liodn = (uint16_t)(tmpReg & DMA_TRANSFER_LIODN_MASK); + ASSERT_COND(p_Fm->p_FmStateStruct->portsTypes[hardwarePortId] != e_FM_PORT_TYPE_DUMMY); + p_Fm->f_BusError(p_Fm->h_App, p_Fm->p_FmStateStruct->portsTypes[hardwarePortId], relativePortId, addr, tnum, liodn); + } + if(mask & DMA_MODE_ECC) + { + if (status & DMA_STATUS_READ_ECC) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_DMA_READ_ECC); + if (status & DMA_STATUS_SYSTEM_WRITE_ECC) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_DMA_SYSTEM_WRITE_ECC); + if (status & DMA_STATUS_FM_WRITE_ECC) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_DMA_FM_WRITE_ECC); + } +} + +static void FpmErrEvent(t_Fm *p_Fm) +{ + uint32_t event; + + event = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + + /* clear the all occurred events */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, event); + + if((event & FPM_EV_MASK_DOUBLE_ECC) && (event & FPM_EV_MASK_DOUBLE_ECC_EN)) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_FPM_DOUBLE_ECC); + if((event & FPM_EV_MASK_STALL) && (event & FPM_EV_MASK_STALL_EN)) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_FPM_STALL_ON_TASKS); + if((event & FPM_EV_MASK_SINGLE_ECC) && (event & FPM_EV_MASK_SINGLE_ECC_EN)) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_FPM_SINGLE_ECC); +} + +static void MuramErrIntr(t_Fm *p_Fm) +{ + uint32_t event, mask; + + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + mask = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + + /* clear MURAM event bit */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, event & ~FPM_RAM_CTL_IRAM_ECC); + + ASSERT_COND(event & FPM_RAM_CTL_MURAM_ECC); + ASSERT_COND(event & FPM_RAM_CTL_RAMS_ECC_EN); + + if ((mask & FPM_MURAM_ECC_ERR_EX_EN)) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_MURAM_ECC); +} + +static void IramErrIntr(t_Fm *p_Fm) +{ + uint32_t event, mask; + + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr) ; + mask = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + /* clear the acknowledged events (do not clear IRAM event) */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, event & ~FPM_RAM_CTL_MURAM_ECC); + + ASSERT_COND(event & FPM_RAM_CTL_IRAM_ECC); + ASSERT_COND(event & FPM_RAM_CTL_IRAM_ECC_EN); + + if ((mask & FPM_IRAM_ECC_ERR_EX_EN)) + p_Fm->f_Exception(p_Fm->h_App, e_FM_EX_IRAM_ECC); +} + +static void QmiEvent(t_Fm *p_Fm) +{ + uint32_t event, mask, force; + + event = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_ie); + mask = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_if); + if(force & event) + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_if, force & ~event); + + /* clear the acknowledged events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ie, event); + + if(event & QMI_INTR_EN_SINGLE_ECC) + p_Fm->f_Exception(p_Fm->h_App,e_FM_EX_QMI_SINGLE_ECC); +} + +static void UnimplementedIsr(t_Handle h_Arg) +{ + UNUSED(h_Arg); + + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unimplemented Isr!")); +} + +static void UnimplementedFmanCtrlIsr(t_Handle h_Arg, uint32_t event) +{ + UNUSED(h_Arg); UNUSED(event); + + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unimplemented FmCtl Isr!")); +} + +static void FmEnableTimeStamp(t_Fm *p_Fm) +{ + uint32_t tmpReg; + uint64_t fraction; + uint32_t integer; + uint8_t count1MicroBit = 8; + uint32_t tsFrequency = (uint32_t)(1<p_FmStateStruct->fmClkFreq; + /* we multiply by 2^16 to keep the fraction of the division */ + /* we do not divid back, since we write this value as fraction - see spec */ + fraction = ((tsFrequency << 16) - (integer << 16)*p_Fm->p_FmStateStruct->fmClkFreq)/p_Fm->p_FmStateStruct->fmClkFreq; + /* we check remainder of the division in order to round up if not integer */ + if(((tsFrequency << 16) - (integer << 16)*p_Fm->p_FmStateStruct->fmClkFreq) % p_Fm->p_FmStateStruct->fmClkFreq) + fraction++; + + tmpReg = (integer << FPM_TS_INT_SHIFT) | (uint16_t)fraction; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmtsc2, tmpReg); + + /* enable timestamp with original clock */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmtsc1, FPM_TS_CTL_EN); + + p_Fm->p_FmStateStruct->count1MicroBit = count1MicroBit; + p_Fm->p_FmStateStruct->enabledTimeStamp = TRUE; +} + +static void FreeInitResources(t_Fm *p_Fm) +{ + if (p_Fm->camBaseAddr) + FM_MURAM_FreeMem(p_Fm->h_FmMuram, UINT_TO_PTR(p_Fm->camBaseAddr)); + if (p_Fm->fifoBaseAddr) + FM_MURAM_FreeMem(p_Fm->h_FmMuram, UINT_TO_PTR(p_Fm->fifoBaseAddr)); + if (p_Fm->resAddr) + FM_MURAM_FreeMem(p_Fm->h_FmMuram, UINT_TO_PTR(p_Fm->resAddr)); +} + +static t_Error ClearIRam(t_Fm *p_Fm) +{ + t_FMIramRegs *p_Iram; + int i; + + ASSERT_COND(p_Fm); + p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + + /* Enable the auto-increment */ + WRITE_UINT32(p_Iram->iadd, IRAM_IADD_AIE); + while (GET_UINT32(p_Iram->iadd) != IRAM_IADD_AIE) ; + + for (i=0; i < (FM_IRAM_SIZE/4); i++) + WRITE_UINT32(p_Iram->idata, 0xffffffff); + + WRITE_UINT32(p_Iram->iadd, FM_IRAM_SIZE - 4); + CORE_MemoryBarrier(); + while (GET_UINT32(p_Iram->idata) != 0xffffffff) ; + + return E_OK; +} + +static t_Error LoadFmanCtrlCode(t_Fm *p_Fm) +{ + t_FMIramRegs *p_Iram; + int i; + uint32_t tmp; + uint8_t compTo16; + + ASSERT_COND(p_Fm); + p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + + /* Enable the auto-increment */ + WRITE_UINT32(p_Iram->iadd, IRAM_IADD_AIE); + while (GET_UINT32(p_Iram->iadd) != IRAM_IADD_AIE) ; + + for (i=0; i < (p_Fm->p_FmDriverParam->firmware.size / 4); i++) + WRITE_UINT32(p_Iram->idata, p_Fm->p_FmDriverParam->firmware.p_Code[i]); + + compTo16 = (uint8_t)(p_Fm->p_FmDriverParam->firmware.size % 16); + if(compTo16) + for (i=0; i < ((16-compTo16) / 4); i++) + WRITE_UINT32(p_Iram->idata, 0xffffffff); + + WRITE_UINT32(p_Iram->iadd,p_Fm->p_FmDriverParam->firmware.size-4); + while(GET_UINT32(p_Iram->iadd) != (p_Fm->p_FmDriverParam->firmware.size-4)) ; + + /* verify that writing has completed */ + while (GET_UINT32(p_Iram->idata) != p_Fm->p_FmDriverParam->firmware.p_Code[(p_Fm->p_FmDriverParam->firmware.size / 4)-1]) ; + + if (p_Fm->p_FmDriverParam->fwVerify) + { + WRITE_UINT32(p_Iram->iadd, IRAM_IADD_AIE); + while (GET_UINT32(p_Iram->iadd) != IRAM_IADD_AIE) ; + for (i=0; i < (p_Fm->p_FmDriverParam->firmware.size / 4); i++) + if ((tmp=GET_UINT32(p_Iram->idata)) != p_Fm->p_FmDriverParam->firmware.p_Code[i]) + RETURN_ERROR(MAJOR, E_WRITE_FAILED, + ("UCode write error : write 0x%x, read 0x%x", + p_Fm->p_FmDriverParam->firmware.p_Code[i],tmp)); + WRITE_UINT32(p_Iram->iadd, 0x0); + } + + /* Enable patch from IRAM */ + WRITE_UINT32(p_Iram->iready, IRAM_READY); + XX_UDelay(1000); + + DBG(INFO, ("FMan-Controller code (ver %d.%d) loaded to IRAM.", + ((uint8_t *)p_Fm->p_FmDriverParam->firmware.p_Code)[5], + ((uint8_t *)p_Fm->p_FmDriverParam->firmware.p_Code)[7])); + + return E_OK; +} + +static void GuestErrorIsr(t_Fm *p_Fm, uint32_t pending) +{ +#define FM_G_CALL_1G_MAC_ERR_ISR(_id) \ +do { \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].h_SrcHandle);\ +} while (0) +#define FM_G_CALL_10G_MAC_ERR_ISR(_id) \ +do { \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_10G_MAC0+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_10G_MAC0+_id)].h_SrcHandle);\ +} while (0) + + /* error interrupts */ + if (pending & ERR_INTR_EN_1G_MAC0) + FM_G_CALL_1G_MAC_ERR_ISR(0); + if (pending & ERR_INTR_EN_1G_MAC1) + FM_G_CALL_1G_MAC_ERR_ISR(1); + if (pending & ERR_INTR_EN_1G_MAC2) + FM_G_CALL_1G_MAC_ERR_ISR(2); + if (pending & ERR_INTR_EN_1G_MAC3) + FM_G_CALL_1G_MAC_ERR_ISR(3); + if (pending & ERR_INTR_EN_1G_MAC4) + FM_G_CALL_1G_MAC_ERR_ISR(4); + if (pending & ERR_INTR_EN_10G_MAC0) + FM_G_CALL_10G_MAC_ERR_ISR(0); +} + +static void GuestEventIsr(t_Fm *p_Fm, uint32_t pending) +{ +#define FM_G_CALL_1G_MAC_TMR_ISR(_id) \ +do { \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].h_SrcHandle);\ +} while (0) + + if (pending & INTR_EN_1G_MAC0_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(0); + if (pending & INTR_EN_1G_MAC1_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(1); + if (pending & INTR_EN_1G_MAC2_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(2); + if (pending & INTR_EN_1G_MAC3_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(3); + if (pending & INTR_EN_1G_MAC4_TMR) + FM_G_CALL_1G_MAC_TMR_ISR(4); + if(pending & INTR_EN_TMR) + p_Fm->intrMng[e_FM_EV_TMR].f_Isr(p_Fm->intrMng[e_FM_EV_TMR].h_SrcHandle); +} + + +/****************************************/ +/* Inter-Module functions */ +/****************************************/ +static t_Error FmGuestHandleIpcMsgCB(t_Handle h_Fm, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcMsg *p_IpcMsg = (t_FmIpcMsg*)p_Msg; + + UNUSED(p_Reply); + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((msgLength > sizeof(uint32_t)), E_INVALID_VALUE); + +#ifdef DISABLE_SANITY_CHECKS + UNUSED(msgLength); +#endif /* DISABLE_SANITY_CHECKS */ + + ASSERT_COND(p_Msg); + + *p_ReplyLength = 0; + + switch(p_IpcMsg->msgId) + { + case (FM_GUEST_ISR): + { + t_FmIpcIsr ipcIsr; + + memcpy((uint8_t*)&ipcIsr, p_IpcMsg->msgBody, sizeof(t_FmIpcIsr)); + if(ipcIsr.boolErr) + GuestErrorIsr(p_Fm, ipcIsr.pendingReg); + else + GuestEventIsr(p_Fm, ipcIsr.pendingReg); + break; + } + default: + *p_ReplyLength = 0; + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("command not found!!!")); + } + return E_OK; +} + +static t_Error FmHandleIpcMsgCB(t_Handle h_Fm, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcMsg *p_IpcMsg = (t_FmIpcMsg*)p_Msg; + t_FmIpcReply *p_IpcReply = (t_FmIpcReply*)p_Reply; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((msgLength >= sizeof(uint32_t)), E_INVALID_VALUE); + +#ifdef DISABLE_SANITY_CHECKS + UNUSED(msgLength); +#endif /* DISABLE_SANITY_CHECKS */ + + ASSERT_COND(p_IpcMsg); + + memset(p_IpcReply, 0, (sizeof(uint8_t) * FM_IPC_MAX_REPLY_SIZE)); + *p_ReplyLength = 0; + + switch(p_IpcMsg->msgId) + { + case (FM_GET_SET_PORT_PARAMS): + { + t_FmIpcPortInInitParams ipcInitParams; + t_FmInterModulePortInitParams initParams; + t_FmIpcPhysAddr ipcPhysAddr; + + memcpy((uint8_t*)&ipcInitParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortInInitParams)); + initParams.hardwarePortId = ipcInitParams.hardwarePortId; + initParams.portType = (e_FmPortType)ipcInitParams.enumPortType; + initParams.independentMode = (bool)(ipcInitParams.boolIndependentMode); + initParams.liodnOffset = ipcInitParams.liodnOffset; + initParams.numOfTasks = ipcInitParams.numOfTasks; + initParams.numOfExtraTasks = ipcInitParams.numOfExtraTasks; + initParams.numOfOpenDmas = ipcInitParams.numOfOpenDmas; + initParams.numOfExtraOpenDmas = ipcInitParams.numOfExtraOpenDmas; + initParams.sizeOfFifo = ipcInitParams.sizeOfFifo; + initParams.extraSizeOfFifo = ipcInitParams.extraSizeOfFifo; + initParams.deqPipelineDepth = ipcInitParams.deqPipelineDepth; + initParams.liodnBase = ipcInitParams.liodnBase; + + p_IpcReply->error = (uint32_t)FmGetSetPortParams(h_Fm, &initParams); + ipcPhysAddr.high = initParams.fmMuramPhysBaseAddr.high; + ipcPhysAddr.low = initParams.fmMuramPhysBaseAddr.low; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcPhysAddr, sizeof(t_FmIpcPhysAddr)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcPhysAddr); + break; + } + case (FM_SET_SIZE_OF_FIFO): + { + t_FmIpcPortFifoParams ipcPortFifoParams; + t_FmInterModulePortRxPoolsParams rxPoolsParams; + + memcpy((uint8_t*)&ipcPortFifoParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortFifoParams)); + rxPoolsParams.numOfPools = ipcPortFifoParams.numOfPools; + rxPoolsParams.secondLargestBufSize = ipcPortFifoParams.secondLargestBufSize; + rxPoolsParams.largestBufSize = ipcPortFifoParams.largestBufSize; + + p_IpcReply->error = (uint32_t)FmSetSizeOfFifo(h_Fm, ipcPortFifoParams.rsrcParams.hardwarePortId, + (e_FmPortType)ipcPortFifoParams.enumPortType, + (bool)ipcPortFifoParams.boolIndependentMode, + &ipcPortFifoParams.rsrcParams.val, + ipcPortFifoParams.rsrcParams.extra, + ipcPortFifoParams.deqPipelineDepth, + &rxPoolsParams, + (bool)ipcPortFifoParams.boolInitialConfig); + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcPortFifoParams.rsrcParams.val, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_SET_NUM_OF_TASKS): + { + t_FmIpcPortRsrcParams ipcPortRsrcParams; + + memcpy((uint8_t*)&ipcPortRsrcParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortRsrcParams)); + p_IpcReply->error = (uint32_t)FmSetNumOfTasks(h_Fm, ipcPortRsrcParams.hardwarePortId, + (uint8_t)ipcPortRsrcParams.val, + (uint8_t)ipcPortRsrcParams.extra, + (bool)ipcPortRsrcParams.boolInitialConfig); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_SET_NUM_OF_OPEN_DMAS): + { + t_FmIpcPortRsrcParams ipcPortRsrcParams; + + memcpy((uint8_t*)&ipcPortRsrcParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortRsrcParams)); + p_IpcReply->error = (uint32_t)FmSetNumOfOpenDmas(h_Fm, ipcPortRsrcParams.hardwarePortId, + (uint8_t)ipcPortRsrcParams.val, + (uint8_t)ipcPortRsrcParams.extra, + (bool)ipcPortRsrcParams.boolInitialConfig); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_RESUME_STALLED_PORT): + *p_ReplyLength = sizeof(uint32_t); + p_IpcReply->error = (uint32_t)FmResumeStalledPort(h_Fm, p_IpcMsg->msgBody[0]); + break; + case (FM_MASTER_IS_ALIVE): + { + uint8_t guestId = p_IpcMsg->msgBody[0]; + /* build the FM master partition IPC address */ + memset(p_Fm->fmIpcHandlerModuleName[guestId], 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_Fm->fmIpcHandlerModuleName[guestId], "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, guestId) != (guestId<10 ? 6:7)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + p_Fm->h_IpcSessions[guestId] = XX_IpcInitSession(p_Fm->fmIpcHandlerModuleName[guestId], p_Fm->fmModuleName); + if (p_Fm->h_IpcSessions[guestId] == NULL) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("FM Master IPC session for guest %d", guestId)); + *(uint8_t*)(p_IpcReply->replyBody) = 1; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + } + case (FM_IS_PORT_STALLED): + { + bool tmp; + + p_IpcReply->error = (uint32_t)FmIsPortStalled(h_Fm, p_IpcMsg->msgBody[0], &tmp); + *(uint8_t*)(p_IpcReply->replyBody) = (uint8_t)tmp; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + } + case (FM_RESET_MAC): + { + t_FmIpcMacParams ipcMacParams; + + memcpy((uint8_t*)&ipcMacParams, p_IpcMsg->msgBody, sizeof(t_FmIpcMacParams)); + p_IpcReply->error = (uint32_t)FmResetMac(p_Fm, + (e_FmMacType)(ipcMacParams.enumType), + ipcMacParams.id); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_SET_MAC_MAX_FRAME): + { + t_Error err; + t_FmIpcMacMaxFrameParams ipcMacMaxFrameParams; + + memcpy((uint8_t*)&ipcMacMaxFrameParams, p_IpcMsg->msgBody, sizeof(t_FmIpcMacMaxFrameParams)); + if ((err = FmSetMacMaxFrame(p_Fm, + (e_FmMacType)(ipcMacMaxFrameParams.macParams.enumType), + ipcMacMaxFrameParams.macParams.id, + ipcMacMaxFrameParams.maxFrameLength)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_GET_CLK_FREQ): + memcpy(p_IpcReply->replyBody, (uint8_t*)&p_Fm->p_FmStateStruct->fmClkFreq, sizeof(uint16_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint16_t); + break; + case (FM_FREE_PORT): + { + t_FmInterModulePortFreeParams portParams; + t_FmIpcPortFreeParams ipcPortParams; + + memcpy((uint8_t*)&ipcPortParams, p_IpcMsg->msgBody, sizeof(t_FmIpcPortFreeParams)); + portParams.hardwarePortId = ipcPortParams.hardwarePortId; + portParams.portType = (e_FmPortType)(ipcPortParams.enumPortType); +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + portParams.deqPipelineDepth = ipcPortParams.deqPipelineDepth; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + FmFreePortParams(h_Fm, &portParams); + break; + } + case (FM_REGISTER_INTR): + { + t_FmIpcRegisterIntr ipcRegIntr; + + memcpy((uint8_t*)&ipcRegIntr, p_IpcMsg->msgBody, sizeof(ipcRegIntr)); + p_Fm->intrMng[ipcRegIntr.event].guestId = ipcRegIntr.guestId; + break; + } +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + case (FM_DUMP_REGS): + { + t_Error err; + if ((err = FM_DumpRegs(h_Fm)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_DUMP_PORT_REGS): + { + t_Error err; + + if ((err = FmDumpPortRegs(h_Fm, p_IpcMsg->msgBody[0])) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } +#endif /* (defined(DEBUG_ERRORS) && ... */ + case (FM_GET_REV): + { + t_FmRevisionInfo revInfo; + t_FmIpcRevisionInfo ipcRevInfo; + + p_IpcReply->error = (uint32_t)FM_GetRevision(h_Fm, &revInfo); + ipcRevInfo.majorRev = revInfo.majorRev; + ipcRevInfo.minorRev = revInfo.minorRev; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcRevInfo, sizeof(t_FmIpcRevisionInfo)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcRevisionInfo); + break; + } + case (FM_DMA_STAT): + { + t_FmDmaStatus dmaStatus; + t_FmIpcDmaStatus ipcDmaStatus; + + FM_GetDmaStatus(h_Fm, &dmaStatus); + ipcDmaStatus.boolCmqNotEmpty = (uint8_t)dmaStatus.cmqNotEmpty; + ipcDmaStatus.boolBusError = (uint8_t)dmaStatus.busError; + ipcDmaStatus.boolReadBufEccError = (uint8_t)dmaStatus.readBufEccError; + ipcDmaStatus.boolWriteBufEccSysError = (uint8_t)dmaStatus.writeBufEccSysError; + ipcDmaStatus.boolWriteBufEccFmError = (uint8_t)dmaStatus.writeBufEccFmError; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcDmaStatus, sizeof(t_FmIpcDmaStatus)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcDmaStatus); + break; + } + case (FM_ALLOC_FMAN_CTRL_EVENT_REG): + p_IpcReply->error = (uint32_t)FmAllocFmanCtrlEventReg(h_Fm, (uint8_t*)p_IpcReply->replyBody); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + case (FM_FREE_FMAN_CTRL_EVENT_REG): + FmFreeFmanCtrlEventReg(h_Fm, p_IpcMsg->msgBody[0]); + break; + case (FM_GET_TIMESTAMP_SCALE): + { + uint32_t timeStamp = FmGetTimeStampScale(h_Fm); + + memcpy(p_IpcReply->replyBody, (uint8_t*)&timeStamp, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_GET_COUNTER): + { + e_FmCounters inCounter; + uint32_t outCounter; + + memcpy((uint8_t*)&inCounter, p_IpcMsg->msgBody, sizeof(uint32_t)); + outCounter = FM_GetCounter(h_Fm, inCounter); + memcpy(p_IpcReply->replyBody, (uint8_t*)&outCounter, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_SET_FMAN_CTRL_EVENTS_ENABLE): + { + t_FmIpcFmanEvents ipcFmanEvents; + + memcpy((uint8_t*)&ipcFmanEvents, p_IpcMsg->msgBody, sizeof(t_FmIpcFmanEvents)); + FmSetFmanCtrlIntr(h_Fm, + ipcFmanEvents.eventRegId, + ipcFmanEvents.enableEvents); + break; + } + case (FM_GET_FMAN_CTRL_EVENTS_ENABLE): + { + uint32_t tmp = FmGetFmanCtrlIntr(h_Fm, p_IpcMsg->msgBody[0]); + + memcpy(p_IpcReply->replyBody, (uint8_t*)&tmp, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_GET_PHYS_MURAM_BASE): + { + t_FmPhysAddr physAddr; + t_FmIpcPhysAddr ipcPhysAddr; + + FmGetPhysicalMuramBase(h_Fm, &physAddr); + ipcPhysAddr.high = physAddr.high; + ipcPhysAddr.low = physAddr.low; + memcpy(p_IpcReply->replyBody, (uint8_t*)&ipcPhysAddr, sizeof(t_FmIpcPhysAddr)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(t_FmIpcPhysAddr); + break; + } + case (FM_ENABLE_RAM_ECC): + { + t_Error err; + + if (((err = FM_EnableRamsEcc(h_Fm)) != E_OK) || + ((err = FM_SetException(h_Fm, e_FM_EX_IRAM_ECC, TRUE)) != E_OK) || + ((err = FM_SetException(h_Fm, e_FM_EX_MURAM_ECC, TRUE)) != E_OK)) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_DISABLE_RAM_ECC): + { + t_Error err; + + if (((err = FM_SetException(h_Fm, e_FM_EX_IRAM_ECC, FALSE)) != E_OK) || + ((err = FM_SetException(h_Fm, e_FM_EX_MURAM_ECC, FALSE)) != E_OK) || + ((err = FM_DisableRamsEcc(h_Fm)) != E_OK)) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } + case (FM_SET_NUM_OF_FMAN_CTRL): + { + t_Error err; + t_FmIpcPortNumOfFmanCtrls ipcPortNumOfFmanCtrls; + + memcpy((uint8_t*)&ipcPortNumOfFmanCtrls, p_IpcMsg->msgBody, sizeof(t_FmIpcPortNumOfFmanCtrls)); + if ((err = FmSetNumOfRiscsPerPort(h_Fm, + ipcPortNumOfFmanCtrls.hardwarePortId, + ipcPortNumOfFmanCtrls.numOfFmanCtrls)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + } +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + case (FM_10G_TX_ECC_WA): + p_IpcReply->error = (uint32_t)Fm10GTxEccWorkaround(h_Fm, p_IpcMsg->msgBody[0]); + *p_ReplyLength = sizeof(uint32_t); + break; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + default: + *p_ReplyLength = 0; + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("command not found!!!")); + } + return E_OK; +} + +static void ErrorIsrCB(t_Handle h_Fm) +{ +#define FM_M_CALL_1G_MAC_ERR_ISR(_id) \ + { \ + if (p_Fm->guestId != p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].guestId) \ + SendIpcIsr(p_Fm, (e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id), pending); \ + else \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_ERR_1G_MAC0+_id)].h_SrcHandle);\ + } + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t pending; + + SANITY_CHECK_RETURN(h_Fm, E_INVALID_HANDLE); + + /* error interrupts */ + pending = GET_UINT32(p_Fm->p_FmFpmRegs->fmepi); + if (!pending) + return; + + if(pending & ERR_INTR_EN_BMI) + BmiErrEvent(p_Fm); + if(pending & ERR_INTR_EN_QMI) + QmiErrEvent(p_Fm); + if(pending & ERR_INTR_EN_FPM) + FpmErrEvent(p_Fm); + if(pending & ERR_INTR_EN_DMA) + DmaErrEvent(p_Fm); + if(pending & ERR_INTR_EN_IRAM) + IramErrIntr(p_Fm); + if(pending & ERR_INTR_EN_MURAM) + MuramErrIntr(p_Fm); + if(pending & ERR_INTR_EN_PRS) + p_Fm->intrMng[e_FM_EV_ERR_PRS].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_PRS].h_SrcHandle); + if(pending & ERR_INTR_EN_PLCR) + p_Fm->intrMng[e_FM_EV_ERR_PLCR].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_PLCR].h_SrcHandle); + if(pending & ERR_INTR_EN_KG) + p_Fm->intrMng[e_FM_EV_ERR_KG].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_KG].h_SrcHandle); + + /* MAC events may belong to different partitions */ + if(pending & ERR_INTR_EN_1G_MAC0) + FM_M_CALL_1G_MAC_ERR_ISR(0); + if(pending & ERR_INTR_EN_1G_MAC1) + FM_M_CALL_1G_MAC_ERR_ISR(1); + if(pending & ERR_INTR_EN_1G_MAC2) + FM_M_CALL_1G_MAC_ERR_ISR(2); + if(pending & ERR_INTR_EN_1G_MAC3) + FM_M_CALL_1G_MAC_ERR_ISR(3); + if(pending & ERR_INTR_EN_1G_MAC4) + FM_M_CALL_1G_MAC_ERR_ISR(4); + if(pending & ERR_INTR_EN_10G_MAC0) + { + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_ERR_10G_MAC0].guestId) + SendIpcIsr(p_Fm, e_FM_EV_ERR_10G_MAC0, pending); + else + p_Fm->intrMng[e_FM_EV_ERR_10G_MAC0].f_Isr(p_Fm->intrMng[e_FM_EV_ERR_10G_MAC0].h_SrcHandle); + } +} + + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +t_Error Fm10GTxEccWorkaround(t_Handle h_Fm, uint8_t macId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + int timeout = 1000; + t_Error err = E_OK; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + uint8_t rxHardwarePortId, txHardwarePortId; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_10G_TX_ECC_WA; + msg.msgBody[0] = macId; + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(macId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + SANITY_CHECK_RETURN_ERROR((macId == 0), E_NOT_SUPPORTED); + SANITY_CHECK_RETURN_ERROR(IsFmanCtrlCodeLoaded(p_Fm), E_INVALID_STATE); + + SW_PORT_ID_TO_HW_PORT_ID(rxHardwarePortId, e_FM_PORT_TYPE_RX_10G, macId); + SW_PORT_ID_TO_HW_PORT_ID(txHardwarePortId, e_FM_PORT_TYPE_TX_10G, macId); + if ((p_Fm->p_FmStateStruct->portsTypes[rxHardwarePortId] != e_FM_PORT_TYPE_DUMMY) || + (p_Fm->p_FmStateStruct->portsTypes[txHardwarePortId] != e_FM_PORT_TYPE_DUMMY)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("MAC should be initialized prior to rx and tx ports!")); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmextc, 0x40000000); + CORE_MemoryBarrier(); + while ((GET_UINT32(p_Fm->p_FmFpmRegs->fpmextc) & 0x40000000) && + --timeout) ; + if (!timeout) + return ERROR_CODE(E_TIMEOUT); + return E_OK; +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +uintptr_t FmGetPcdPrsBaseAddr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + + if(p_Fm->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Guset")); + + return (p_Fm->baseAddr + FM_MM_PRS); +} + +uintptr_t FmGetPcdKgBaseAddr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + + if(p_Fm->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Guset")); + + return (p_Fm->baseAddr + FM_MM_KG); +} + +uintptr_t FmGetPcdPlcrBaseAddr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + + if(p_Fm->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Guset")); + + return (p_Fm->baseAddr + FM_MM_PLCR); +} + +t_Handle FmGetMuramHandle(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, NULL); + + return (p_Fm->h_FmMuram); +} + +void FmGetPhysicalMuramBase(t_Handle h_Fm, t_FmPhysAddr *p_FmPhysAddr) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + t_FmIpcPhysAddr ipcPhysAddr; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_PHYS_MURAM_BASE; + replyLength = sizeof(uint32_t) + sizeof(t_FmPhysAddr); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + if (replyLength != (sizeof(uint32_t) + sizeof(t_FmPhysAddr))) + { + REPORT_ERROR(MINOR, E_INVALID_VALUE,("IPC reply length mismatch")); + return; + } + memcpy((uint8_t*)&ipcPhysAddr, reply.replyBody, sizeof(t_FmIpcPhysAddr)); + p_FmPhysAddr->high = ipcPhysAddr.high; + p_FmPhysAddr->low = ipcPhysAddr.low; + return ; + } + + /* General FM driver initialization */ + p_FmPhysAddr->low = (uint32_t)p_Fm->fmMuramPhysBaseAddr; + p_FmPhysAddr->high = (uint8_t)((p_Fm->fmMuramPhysBaseAddr & 0x000000ff00000000LL) >> 32); +} + +t_Error FmAllocFmanCtrlEventReg(t_Handle h_Fm, uint8_t *p_EventId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t i; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_ALLOC_FMAN_CTRL_EVENT_REG; + replyLength = sizeof(uint32_t) + sizeof(uint8_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(uint8_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + *p_EventId = *(uint8_t*)(reply.replyBody); + + return (t_Error)(reply.error); + } + + for(i=0;iusedEventRegs[i]) + { + p_Fm->usedEventRegs[i] = TRUE; + *p_EventId = i; + break; + } + + if (i==FM_NUM_OF_FMAN_CTRL_EVENT_REGS) + RETURN_ERROR(MAJOR, E_BUSY, ("No resource - Fman controller event register.")); + + return E_OK; +} + +void FmFreeFmanCtrlEventReg(t_Handle h_Fm, uint8_t eventId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + + if(((t_Fm *)h_Fm)->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_FREE_FMAN_CTRL_EVENT_REG; + msg.msgBody[0] = eventId; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(eventId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + + ((t_Fm*)h_Fm)->usedEventRegs[eventId] = FALSE; +} + +void FmRegisterIntr(t_Handle h_Fm, + e_FmEventModules module, + uint8_t modId, + e_FmIntrType intrType, + void (*f_Isr) (t_Handle h_Arg), + t_Handle h_Arg) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t event= 0; + t_FmIpcRegisterIntr fmIpcRegisterIntr; + t_Error err; + t_FmIpcMsg msg; + + ASSERT_COND(h_Fm); + + GET_FM_MODULE_EVENT(module, modId,intrType, event); + + /* register in local FM structure */ + ASSERT_COND(event != e_FM_EV_DUMMY_LAST); + p_Fm->intrMng[event].f_Isr = f_Isr; + p_Fm->intrMng[event].h_SrcHandle = h_Arg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + if(p_Fm->h_IpcSessions[0]) + { + /* register in Master FM structure */ + fmIpcRegisterIntr.event = event; + fmIpcRegisterIntr.guestId = p_Fm->guestId; + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_REGISTER_INTR; + memcpy(msg.msgBody, &fmIpcRegisterIntr, sizeof(fmIpcRegisterIntr)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(fmIpcRegisterIntr), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + } + else + DBG(WARNING,("'Register interrupt' - unavailable - No IPC")); + } + +} + +void FmUnregisterIntr(t_Handle h_Fm, + e_FmEventModules module, + uint8_t modId, + e_FmIntrType intrType) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t event= 0; + + ASSERT_COND(h_Fm); + + GET_FM_MODULE_EVENT(module, modId,intrType, event); + + ASSERT_COND(event != e_FM_EV_DUMMY_LAST); + p_Fm->intrMng[event].f_Isr = UnimplementedIsr; + p_Fm->intrMng[event].h_SrcHandle = NULL; +} + +void FmSetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, uint32_t enableEvents) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcFmanEvents fmanCtrl; + t_Error err; + t_FmIpcMsg msg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + fmanCtrl.eventRegId = eventRegId; + fmanCtrl.enableEvents = enableEvents; + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_SET_FMAN_CTRL_EVENTS_ENABLE; + memcpy(msg.msgBody, &fmanCtrl, sizeof(fmanCtrl)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(fmanCtrl), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + + ASSERT_COND(eventRegId < FM_NUM_OF_FMAN_CTRL_EVENT_REGS); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[eventRegId], enableEvents); +} + +uint32_t FmGetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength, ctrlIntr; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_FMAN_CTRL_EVENTS_ENABLE; + msg.msgBody[0] = eventRegId; + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(eventRegId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return 0; + } + if (replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + { + REPORT_ERROR(MINOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return 0; + } + memcpy((uint8_t*)&ctrlIntr, reply.replyBody, sizeof(uint32_t)); + return ctrlIntr; + } + + return GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[eventRegId]); +} + +void FmRegisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Arg, uint32_t event), t_Handle h_Arg) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + ASSERT_COND(eventRegIdguestId != NCSW_MASTER_ID) + { + ASSERT_COND(0); + /* TODO */ + } + + p_Fm->fmanCtrlIntr[eventRegId].f_Isr = f_Isr; + p_Fm->fmanCtrlIntr[eventRegId].h_SrcHandle = h_Arg; +} + +void FmUnregisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + ASSERT_COND(eventRegIdguestId != NCSW_MASTER_ID) + { + ASSERT_COND(0); + /* TODO */ + } + + p_Fm->fmanCtrlIntr[eventRegId].f_Isr = UnimplementedFmanCtrlIsr; + p_Fm->fmanCtrlIntr[eventRegId].h_SrcHandle = NULL; +} + +void FmRegisterPcd(t_Handle h_Fm, t_Handle h_FmPcd) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + if(p_Fm->h_Pcd) + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("PCD already set")); + + p_Fm->h_Pcd = h_FmPcd; + +} + +void FmUnregisterPcd(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + if(!p_Fm->h_Pcd) + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("No PCD")); + + p_Fm->h_Pcd = NULL; + +} + +t_Handle FmGetPcdHandle(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + return p_Fm->h_Pcd; +} + +uint8_t FmGetId(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0xff); + + return p_Fm->p_FmStateStruct->fmId; +} + +t_Error FmSetNumOfRiscsPerPort(t_Handle h_Fm, uint8_t hardwarePortId, uint8_t numOfFmanCtrls) +{ + + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg = 0; + t_Error err; + t_FmIpcPortNumOfFmanCtrls params; + t_FmIpcMsg msg; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(((numOfFmanCtrls > 0) && (numOfFmanCtrls < 3)) , E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + params.hardwarePortId = hardwarePortId; + params.numOfFmanCtrls = numOfFmanCtrls; + msg.msgId = FM_SET_NUM_OF_FMAN_CTRL; + memcpy(msg.msgBody, ¶ms, sizeof(params)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(params), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + + return E_OK; + } + + XX_LockSpinlock(p_Fm->h_Spinlock); + + tmpReg = (uint32_t)(hardwarePortId << FPM_PORT_FM_CTL_PORTID_SHIFT); + + /*TODO - maybe to put CTL# according to another criteria*/ + + if(numOfFmanCtrls == 2) + tmpReg = FPM_PORT_FM_CTL2 | FPM_PORT_FM_CTL1; + + /* order restoration */ + if(hardwarePortId%2) + tmpReg |= (FPM_PORT_FM_CTL1 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) | FPM_PORT_FM_CTL1; + else + tmpReg |= (FPM_PORT_FM_CTL2 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) | FPM_PORT_FM_CTL2; + + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmpr, tmpReg); + XX_UnlockSpinlock(p_Fm->h_Spinlock); + + return E_OK; +} + +t_Error FmGetSetPortParams(t_Handle h_Fm,t_FmInterModulePortInitParams *p_PortParams) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + uint8_t hardwarePortId = p_PortParams->hardwarePortId; + t_FmIpcPortInInitParams portInParams; + t_FmIpcPhysAddr ipcPhysAddr; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + portInParams.hardwarePortId = p_PortParams->hardwarePortId; + portInParams.enumPortType = (uint32_t)p_PortParams->portType; + portInParams.boolIndependentMode = (uint8_t)p_PortParams->independentMode; + portInParams.liodnOffset = p_PortParams->liodnOffset; + portInParams.numOfTasks = p_PortParams->numOfTasks; + portInParams.numOfExtraTasks = p_PortParams->numOfExtraTasks; + portInParams.numOfOpenDmas = p_PortParams->numOfOpenDmas; + portInParams.numOfExtraOpenDmas = p_PortParams->numOfExtraOpenDmas; + portInParams.sizeOfFifo = p_PortParams->sizeOfFifo; + portInParams.extraSizeOfFifo = p_PortParams->extraSizeOfFifo; + portInParams.deqPipelineDepth = p_PortParams->deqPipelineDepth; + portInParams.liodnBase = p_PortParams->liodnBase; + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_SET_PORT_PARAMS; + memcpy(msg.msgBody, &portInParams, sizeof(portInParams)); + replyLength = (sizeof(uint32_t) + sizeof(p_PortParams->fmMuramPhysBaseAddr)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(portInParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(p_PortParams->fmMuramPhysBaseAddr))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&ipcPhysAddr, reply.replyBody, sizeof(t_FmIpcPhysAddr)); + p_PortParams->fmMuramPhysBaseAddr.high = ipcPhysAddr.high; + p_PortParams->fmMuramPhysBaseAddr.low = ipcPhysAddr.low; + + return (t_Error)(reply.error); + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + XX_LockSpinlock(p_Fm->h_Spinlock); + + if(p_PortParams->independentMode) + { + /* set port parameters */ + p_Fm->independentMode = p_PortParams->independentMode; + /* disable dispatch limit */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmflc, 0); + } + + if(p_PortParams->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + { + if(p_Fm->hcPortInitialized) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Only one host command port is allowed.")); + } + else + p_Fm->hcPortInitialized = TRUE; + } + p_Fm->p_FmStateStruct->portsTypes[hardwarePortId] = p_PortParams->portType; + + err = FmSetNumOfTasks(p_Fm, p_PortParams->hardwarePortId, p_PortParams->numOfTasks, p_PortParams->numOfExtraTasks, TRUE); + if(err) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + if((p_PortParams->portType != e_FM_PORT_TYPE_RX) && (p_PortParams->portType != e_FM_PORT_TYPE_RX_10G)) + /* for transmit & O/H ports */ + { + uint8_t enqTh; + uint8_t deqTh; + bool update = FALSE; + + /* update qmi ENQ/DEQ threshold */ + p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums += p_PortParams->deqPipelineDepth; + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc); + enqTh = (uint8_t)(tmpReg>>8); + /* if enqTh is too big, we reduce it to the max value that is still OK */ + if(enqTh >= (QMI_MAX_NUM_OF_TNUMS - p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums)) + { + enqTh = (uint8_t)(QMI_MAX_NUM_OF_TNUMS - p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums - 1); + tmpReg &= ~QMI_CFG_ENQ_MASK; + tmpReg |= ((uint32_t)enqTh << 8); + update = TRUE; + } + + deqTh = (uint8_t)tmpReg; + /* if deqTh is too small, we enlarge it to the min value that is still OK. + deqTh may not be larger than 63 (QMI_MAX_NUM_OF_TNUMS-1). */ + if((deqTh <= p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums) && (deqTh < QMI_MAX_NUM_OF_TNUMS-1)) + { + deqTh = (uint8_t)(p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums + 1); + tmpReg &= ~QMI_CFG_DEQ_MASK; + tmpReg |= (uint32_t)deqTh; + update = TRUE; + } + if(update) + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, tmpReg); + } +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +#ifdef FM_LOW_END_RESTRICTION + if((hardwarePortId==0x1) || (hardwarePortId==0x29)) + { + if(p_Fm->p_FmStateStruct->lowEndRestriction) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("OP #0 cannot work with Tx Port #1.")); + } + else + p_Fm->p_FmStateStruct->lowEndRestriction = TRUE; + } +#endif /* FM_LOW_END_RESTRICTION */ + + err = FmSetSizeOfFifo(p_Fm, + p_PortParams->hardwarePortId, + p_PortParams->portType, + p_PortParams->independentMode, + &p_PortParams->sizeOfFifo, + p_PortParams->extraSizeOfFifo, + p_PortParams->deqPipelineDepth, + NULL, + TRUE); + if(err) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = FmSetNumOfOpenDmas(p_Fm, p_PortParams->hardwarePortId, p_PortParams->numOfOpenDmas, p_PortParams->numOfExtraOpenDmas, TRUE); + if(err) + { + XX_UnlockSpinlock(p_Fm->h_Spinlock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], (uint32_t)p_PortParams->liodnOffset); + + tmpReg = (uint32_t)(hardwarePortId << FPM_PORT_FM_CTL_PORTID_SHIFT); + if(p_PortParams->independentMode) + { + if((p_PortParams->portType==e_FM_PORT_TYPE_RX) || (p_PortParams->portType==e_FM_PORT_TYPE_RX_10G)) + tmpReg |= (FPM_PORT_FM_CTL1 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) |FPM_PORT_FM_CTL1; + else + tmpReg |= (FPM_PORT_FM_CTL2 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT) |FPM_PORT_FM_CTL2; + } + else + { + tmpReg |= (FPM_PORT_FM_CTL2|FPM_PORT_FM_CTL1); + + /* order restoration */ + if(hardwarePortId%2) + tmpReg |= (FPM_PORT_FM_CTL1 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT); + else + tmpReg |= (FPM_PORT_FM_CTL2 << FPM_PRC_ORA_FM_CTL_SEL_SHIFT); + } + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmpr, tmpReg); + + { +#ifdef FM_PARTITION_ARRAY + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev >= 2) +#endif /* FM_PARTITION_ARRAY */ + { + /* set LIODN base for this port */ + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmplr[hardwarePortId/2]); + if(hardwarePortId%2) + { + tmpReg &= ~FM_LIODN_BASE_MASK; + tmpReg |= (uint32_t)p_PortParams->liodnBase; + } + else + { + tmpReg &= ~(FM_LIODN_BASE_MASK<< DMA_LIODN_SHIFT); + tmpReg |= (uint32_t)p_PortParams->liodnBase << DMA_LIODN_SHIFT; + } + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmplr[hardwarePortId/2], tmpReg); + } + } + + FmGetPhysicalMuramBase(p_Fm, &p_PortParams->fmMuramPhysBaseAddr); + XX_UnlockSpinlock(p_Fm->h_Spinlock); + + return E_OK; +} + +void FmFreePortParams(t_Handle h_Fm,t_FmInterModulePortFreeParams *p_PortParams) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + uint8_t hardwarePortId = p_PortParams->hardwarePortId; + uint8_t numOfTasks; + t_Error err; + t_FmIpcPortFreeParams portParams; + t_FmIpcMsg msg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + portParams.hardwarePortId = p_PortParams->hardwarePortId; + portParams.enumPortType = (uint32_t)p_PortParams->portType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + portParams.deqPipelineDepth = p_PortParams->deqPipelineDepth; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_FREE_PORT; + memcpy(msg.msgBody, &portParams, sizeof(portParams)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(portParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + XX_LockSpinlock(p_Fm->h_Spinlock); + + + if(p_PortParams->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + { + ASSERT_COND(p_Fm->hcPortInitialized); + p_Fm->hcPortInitialized = FALSE; + } + + p_Fm->p_FmStateStruct->portsTypes[hardwarePortId] = e_FM_PORT_TYPE_DUMMY; + + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]); + /* free numOfTasks */ + numOfTasks = (uint8_t)(((tmpReg & BMI_NUM_OF_TASKS_MASK) >> BMI_NUM_OF_TASKS_SHIFT) + 1); + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfTasks >= numOfTasks); + p_Fm->p_FmStateStruct->accumulatedNumOfTasks -= numOfTasks; + + /* free numOfOpenDmas */ + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas >= ((tmpReg & BMI_NUM_OF_DMAS_MASK) >> BMI_NUM_OF_DMAS_SHIFT) + 1); + p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas -= (((tmpReg & BMI_NUM_OF_DMAS_MASK) >> BMI_NUM_OF_DMAS_SHIFT) + 1); + + /* update total num of DMA's with committed number of open DMAS, and max uncommitted pool. */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2) & ~BMI_CFG2_DMAS_MASK; + tmpReg |= (uint32_t)(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas + p_Fm->p_FmStateStruct->extraOpenDmasPoolSize - 1) << BMI_CFG2_DMAS_SHIFT; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, tmpReg); + + /* free sizeOfFifo */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1]); + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedFifoSize >= + (((tmpReg & BMI_FIFO_SIZE_MASK) + 1) * BMI_FIFO_UNITS)); + p_Fm->p_FmStateStruct->accumulatedFifoSize -= + (((tmpReg & BMI_FIFO_SIZE_MASK) + 1) * BMI_FIFO_UNITS); + + /* clear registers */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], 0); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], 0); + /* WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], 0); */ + +#ifdef FM_PORT_DISABLED_ERRATA_FMANx9 + /* this errata means that when a port is taken down, other port may not use its + * resources for a while as it may still be using it (in case of reject). + */ + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + XX_UDelay(100000); + } +#endif /* FM_PORT_DISABLED_ERRATA_FMANx9 */ + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + if((p_PortParams->portType != e_FM_PORT_TYPE_RX) && (p_PortParams->portType != e_FM_PORT_TYPE_RX_10G)) + /* for transmit & O/H ports */ + { + uint8_t enqTh; + uint8_t deqTh; + + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc); + /* update qmi ENQ/DEQ threshold */ + p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums -= p_PortParams->deqPipelineDepth; + + /* p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums is now smaller, + so we can enlarge enqTh */ + enqTh = (uint8_t)(QMI_MAX_NUM_OF_TNUMS - p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums - 1); + tmpReg &= ~QMI_CFG_ENQ_MASK; + tmpReg |= ((uint32_t)enqTh << QMI_CFG_ENQ_SHIFT); + + /* p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums is now smaller, + so we can reduce deqTh */ + deqTh = (uint8_t)(p_Fm->p_FmStateStruct->accumulatedNumOfDeqTnums + 1); + tmpReg &= ~QMI_CFG_DEQ_MASK; + tmpReg |= (uint32_t)deqTh; + + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, tmpReg); + } +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +#ifdef FM_LOW_END_RESTRICTION + if((hardwarePortId==0x1) || (hardwarePortId==0x29)) + p_Fm->p_FmStateStruct->lowEndRestriction = FALSE; +#endif /* FM_LOW_END_RESTRICTION */ + XX_UnlockSpinlock(p_Fm->h_Spinlock); +} + +t_Error FmIsPortStalled(t_Handle h_Fm, uint8_t hardwarePortId, bool *p_IsStalled) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_IS_PORT_STALLED; + msg.msgBody[0] = hardwarePortId; + replyLength = sizeof(uint32_t) + sizeof(uint8_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(hardwarePortId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(uint8_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + *p_IsStalled = (bool)!!(*(uint8_t*)(reply.replyBody)); + + return (t_Error)(reply.error); + } + + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmfp_ps[hardwarePortId]); + *p_IsStalled = (bool)!!(tmpReg & FPM_PS_STALLED); + + return E_OK; +} + +t_Error FmResumeStalledPort(t_Handle h_Fm, uint8_t hardwarePortId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + bool isStalled; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_RESUME_STALLED_PORT; + msg.msgBody[0] = hardwarePortId; + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(hardwarePortId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + /* Get port status */ + err = FmIsPortStalled(h_Fm, hardwarePortId, &isStalled); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't get port status")); + if (!isStalled) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is not stalled")); + + tmpReg = (uint32_t)((hardwarePortId << FPM_PORT_FM_CTL_PORTID_SHIFT) | FPM_PRC_REALSE_STALLED); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmpr, tmpReg); + + return E_OK; +} + +t_Error FmResetMac(t_Handle h_Fm, e_FmMacType type, uint8_t macId) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask, timeout = 1000; + t_FmIpcMacParams macParams; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + if(p_Fm->h_IpcSessions[0]) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + macParams.id = macId; + macParams.enumType = (uint32_t)type; + msg.msgId = FM_RESET_MAC; + memcpy(msg.msgBody, &macParams, sizeof(macParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(macParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + else + if(!p_Fm->p_FmFpmRegs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("No IPC and no registers address")); + } + + /* Get the relevant bit mask */ + if (type == e_FM_MAC_10G) + { + switch(macId) + { + case(0): + bitMask = FPM_RSTC_10G0_RESET; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("Illegal MAC Id")); + } + } + else + { + switch(macId) + { + case(0): + bitMask = FPM_RSTC_1G0_RESET; + break; + case(1): + bitMask = FPM_RSTC_1G1_RESET; + break; + case(2): + bitMask = FPM_RSTC_1G2_RESET; + break; + case(3): + bitMask = FPM_RSTC_1G3_RESET; + break; + case(4): + bitMask = FPM_RSTC_1G4_RESET; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("Illegal MAC Id")); + } + } + + /* reset */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, bitMask); + while ((GET_UINT32(p_Fm->p_FmFpmRegs->fmrstc) & bitMask) && + --timeout) ; + if (!timeout) + return ERROR_CODE(E_TIMEOUT); + return E_OK; +} + +t_Error FmSetMacMaxFrame(t_Handle h_Fm, e_FmMacType type, uint8_t macId, uint16_t mtu) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmIpcMacMaxFrameParams macMaxFrameLengthParams; + t_Error err; + t_FmIpcMsg msg; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + macMaxFrameLengthParams.macParams.id = macId; + macMaxFrameLengthParams.macParams.enumType = (uint32_t)type; + macMaxFrameLengthParams.maxFrameLength = (uint16_t)mtu; + msg.msgId = FM_SET_MAC_MAX_FRAME; + memcpy(msg.msgBody, &macMaxFrameLengthParams, sizeof(macMaxFrameLengthParams)); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(macMaxFrameLengthParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + +#if (defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)) + if (type == e_FM_MAC_10G) + p_Fm->p_FmStateStruct->macMaxFrameLengths10G[macId] = mtu; + else +#else + UNUSED(type); +#endif /* (defined(FM_MAX_NUM_OF_10G_MACS) && ... */ + p_Fm->p_FmStateStruct->macMaxFrameLengths1G[macId] = mtu; + + return E_OK; +} + +uint16_t FmGetClockFreq(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + /* for MC environment: this depends on the + * fact that fmClkFreq was properly initialized at "init". */ + return p_Fm->p_FmStateStruct->fmClkFreq; +} + +uint32_t FmGetTimeStampScale(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength, timeStamp; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_TIMESTAMP_SCALE; + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy((uint8_t*)&timeStamp, reply.replyBody, sizeof(uint32_t)); + return timeStamp; + } + + if(!p_Fm->p_FmStateStruct->enabledTimeStamp) + FmEnableTimeStamp(p_Fm); + + return p_Fm->p_FmStateStruct->count1MicroBit; +} + +bool FmRamsEccIsExternalCtl(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + if(tmpReg & FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL) + return TRUE; + else + return FALSE; +} + +t_Error FmEnableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->ramsEccOwners++; + p_Fm->p_FmStateStruct->internalCall = TRUE; + + return FM_EnableRamsEcc(p_Fm); +} + +t_Error FmDisableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + ASSERT_COND(p_Fm->p_FmStateStruct->ramsEccOwners); + p_Fm->p_FmStateStruct->ramsEccOwners--; + + if(p_Fm->p_FmStateStruct->ramsEccOwners==0) + { + p_Fm->p_FmStateStruct->internalCall = TRUE; + return FM_DisableRamsEcc(p_Fm); + } + return E_OK; +} + +uint8_t FmGetGuestId(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + return p_Fm->guestId; +} + +bool FmIsMaster(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + return (p_Fm->guestId == NCSW_MASTER_ID); +} + +t_Error FmSetSizeOfFifo(t_Handle h_Fm, + uint8_t hardwarePortId, + e_FmPortType portType, + bool independentMode, + uint32_t *p_SizeOfFifo, + uint32_t extraSizeOfFifo, + uint8_t deqPipelineDepth, + t_FmInterModulePortRxPoolsParams *p_RxPoolsParams, + bool initialConfig) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint8_t relativePortId; + uint16_t macMaxFrameLength = 0, oldVal; + uint32_t minFifoSizeRequired = 0, sizeOfFifo, tmpReg = 0; + t_FmIpcPortFifoParams fifoParams; + t_Error err; + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + ASSERT_COND(initialConfig || p_RxPoolsParams); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + ASSERT_COND(p_RxPoolsParams); + + memset(&fifoParams, 0, sizeof(fifoParams)); + fifoParams.rsrcParams.hardwarePortId = hardwarePortId; + fifoParams.rsrcParams.val = *p_SizeOfFifo; + fifoParams.rsrcParams.extra = extraSizeOfFifo; + fifoParams.enumPortType = (uint32_t)portType; + fifoParams.boolIndependentMode = (uint8_t)independentMode; + fifoParams.deqPipelineDepth = deqPipelineDepth; + fifoParams.numOfPools = p_RxPoolsParams->numOfPools; + fifoParams.secondLargestBufSize = p_RxPoolsParams->secondLargestBufSize; + fifoParams.largestBufSize = p_RxPoolsParams->largestBufSize; + fifoParams.boolInitialConfig = (uint8_t)initialConfig; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_SET_SIZE_OF_FIFO; + memcpy(msg.msgBody, &fifoParams, sizeof(fifoParams)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(fifoParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)p_SizeOfFifo, reply.replyBody, sizeof(uint32_t)); + + return (t_Error)(reply.error); + } + sizeOfFifo = *p_SizeOfFifo; + /* if neseccary (cases where frame length is relevant), update sizeOfFifo field. */ + if((portType == e_FM_PORT_TYPE_TX) || ((portType == e_FM_PORT_TYPE_RX) && independentMode)) + { + HW_PORT_ID_TO_SW_PORT_ID(relativePortId, hardwarePortId); + ASSERT_COND(relativePortId < FM_MAX_NUM_OF_1G_MACS); + macMaxFrameLength = p_Fm->p_FmStateStruct->macMaxFrameLengths1G[relativePortId]; + } + +#if (defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)) + if((portType == e_FM_PORT_TYPE_TX_10G) || ((portType == e_FM_PORT_TYPE_RX_10G) && independentMode)) + { + HW_PORT_ID_TO_SW_PORT_ID(relativePortId, hardwarePortId); + ASSERT_COND(relativePortId < FM_MAX_NUM_OF_10G_MACS); + macMaxFrameLength = p_Fm->p_FmStateStruct->macMaxFrameLengths10G[relativePortId]; + } +#endif /* (defined(FM_MAX_NUM_OF_10G_MACS) && ... */ + + /*************************/ + /* TX PORTS */ + /*************************/ + if((portType == e_FM_PORT_TYPE_TX) || (portType == e_FM_PORT_TYPE_TX_10G)) + { + if(independentMode) + minFifoSizeRequired = (uint32_t)((macMaxFrameLength % BMI_FIFO_UNITS ? + (macMaxFrameLength/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS : + macMaxFrameLength) + + (3*BMI_FIFO_UNITS)); + else + minFifoSizeRequired = (uint32_t)((macMaxFrameLength % BMI_FIFO_UNITS ? + (macMaxFrameLength/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS : + macMaxFrameLength) + + (deqPipelineDepth+3)*BMI_FIFO_UNITS); + } + /*************************/ + /* RX IM PORTS */ + /*************************/ + else if(((portType == e_FM_PORT_TYPE_RX) || (portType == e_FM_PORT_TYPE_RX_10G)) && independentMode) + minFifoSizeRequired = (uint32_t)(((macMaxFrameLength % BMI_FIFO_UNITS) ? + ((macMaxFrameLength/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + macMaxFrameLength) + + (4*BMI_FIFO_UNITS)); + + /* for Rx (non-Im) ports or OP, buffer pools are relevant for fifo size. + If this routine is called as part of the "GetSet" routine, initialConfig is TRUE + and these checks where done in the port routine. + If it is called by an explicit user request ("SetSizeOfFifo"), than these parameters + should be checked/updated */ + if(!initialConfig && + ((portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || + (((portType == e_FM_PORT_TYPE_RX) || (portType == e_FM_PORT_TYPE_RX_10G)) && !independentMode))) + { + if((portType == e_FM_PORT_TYPE_RX) || (portType == e_FM_PORT_TYPE_RX_10G)) + { + /*************************/ + /* RX non-IM PORTS */ + /*************************/ +#ifdef FM_FIFO_ALLOCATION_OLD_ALG + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_Fm, &revInfo); + if(revInfo.majorRev != 4) + minFifoSizeRequired = (uint32_t)(((p_RxPoolsParams->largestBufSize % BMI_FIFO_UNITS) ? + ((p_RxPoolsParams->largestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + p_RxPoolsParams->largestBufSize) + + (7*BMI_FIFO_UNITS)); + else +#endif /* FM_FIFO_ALLOCATION_OLD_ALG */ + { + if(p_RxPoolsParams->numOfPools == 1) + minFifoSizeRequired = 8*BMI_FIFO_UNITS; + else + { + minFifoSizeRequired = (uint32_t)(((p_RxPoolsParams->secondLargestBufSize % BMI_FIFO_UNITS) ? + ((p_RxPoolsParams->secondLargestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + p_RxPoolsParams->secondLargestBufSize) + + (7*BMI_FIFO_UNITS)); + if((sizeOfFifo < minFifoSizeRequired)) + { + DBG(WARNING, ("User set FIFO size for Rx port is not optimized. (not modified by driver)")); + minFifoSizeRequired = 8*BMI_FIFO_UNITS; + } + } + } + } + else + { + /*************************/ + /* OP PORTS */ + /*************************/ + /* check if pool size is not too big */ + if(p_RxPoolsParams->largestBufSize > sizeOfFifo ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Largest pool size is bigger than ports committed fifo size")); + } + } + + + if (minFifoSizeRequired && (sizeOfFifo < minFifoSizeRequired)) + { + sizeOfFifo = minFifoSizeRequired; + DBG(WARNING, ("FIFO size enlarged to %d for port %#x", minFifoSizeRequired, hardwarePortId)); + } + + if(initialConfig) + oldVal = 0; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1]); + /* read into oldVal the current extra fifo size */ + oldVal = (uint16_t)((((tmpReg & BMI_EXTRA_FIFO_SIZE_MASK) + 1)*BMI_FIFO_UNITS) >> BMI_EXTRA_FIFO_SIZE_SHIFT); + } + + if(extraSizeOfFifo > oldVal) + p_Fm->p_FmStateStruct->extraFifoPoolSize = MAX(p_Fm->p_FmStateStruct->extraFifoPoolSize, extraSizeOfFifo); + + if(!initialConfig) + /* read into oldVal the current num of tasks */ + oldVal = (uint16_t)(((tmpReg & BMI_FIFO_SIZE_MASK) + 1)*BMI_FIFO_UNITS); + + /* check that there are enough uncommitted fifo size */ + if((p_Fm->p_FmStateStruct->accumulatedFifoSize - oldVal + sizeOfFifo) > + (p_Fm->p_FmStateStruct->totalFifoSize - p_Fm->p_FmStateStruct->extraFifoPoolSize)) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Requested fifo size and extra size exceed total FIFO size.")); + else + { + /* update acummulated */ + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedFifoSize >= oldVal); + p_Fm->p_FmStateStruct->accumulatedFifoSize -= oldVal; + p_Fm->p_FmStateStruct->accumulatedFifoSize += sizeOfFifo; + /* calculate reg */ + tmpReg = (uint32_t)((sizeOfFifo/BMI_FIFO_UNITS - 1) | + ((extraSizeOfFifo/BMI_FIFO_UNITS) << BMI_EXTRA_FIFO_SIZE_SHIFT)); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], tmpReg); + } + *p_SizeOfFifo = sizeOfFifo; + + return E_OK; +} + +t_Error FmSetNumOfTasks(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfTasks, + uint8_t numOfExtraTasks, + bool initialConfig) +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + uint8_t oldVal; + uint32_t tmpReg = 0; + t_FmIpcPortRsrcParams rsrcParams; + t_Error err; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + rsrcParams.hardwarePortId = hardwarePortId; + rsrcParams.val = numOfTasks; + rsrcParams.extra = numOfExtraTasks; + rsrcParams.boolInitialConfig = (uint8_t)initialConfig; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_SET_NUM_OF_TASKS; + memcpy(msg.msgBody, &rsrcParams, sizeof(rsrcParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(rsrcParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + + if(initialConfig) + oldVal = 0; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]); + /* read into oldVal the current extra tasks */ + oldVal = (uint8_t)((tmpReg & BMI_NUM_OF_EXTRA_TASKS_MASK) >> BMI_EXTRA_NUM_OF_TASKS_SHIFT); + } + + if(numOfExtraTasks > oldVal) + p_Fm->p_FmStateStruct->extraTasksPoolSize = (uint8_t)MAX(p_Fm->p_FmStateStruct->extraTasksPoolSize, numOfExtraTasks); + + if(!initialConfig) + /* read into oldVal the current num of tasks */ + oldVal = (uint8_t)(((tmpReg & BMI_NUM_OF_TASKS_MASK) >> BMI_NUM_OF_TASKS_SHIFT) + 1); + + /* check that there are enough uncommitted tasks */ + if((p_Fm->p_FmStateStruct->accumulatedNumOfTasks - oldVal + numOfTasks) > + (p_Fm->p_FmStateStruct->totalNumOfTasks - p_Fm->p_FmStateStruct->extraTasksPoolSize)) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, + ("Requested numOfTasks and extra tasks pool for fm%d exceed total numOfTasks.", + p_Fm->p_FmStateStruct->fmId)); + else + { + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfTasks >= oldVal); + /* update acummulated */ + p_Fm->p_FmStateStruct->accumulatedNumOfTasks -= oldVal; + p_Fm->p_FmStateStruct->accumulatedNumOfTasks += numOfTasks; + /* calculate reg */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]) & ~(BMI_NUM_OF_TASKS_MASK | BMI_NUM_OF_EXTRA_TASKS_MASK); + tmpReg |= (uint32_t)(((numOfTasks-1) << BMI_NUM_OF_TASKS_SHIFT) | + (numOfExtraTasks << BMI_EXTRA_NUM_OF_TASKS_SHIFT)); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1],tmpReg); + } + + return E_OK; +} + +t_Error FmSetNumOfOpenDmas(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfOpenDmas, + uint8_t numOfExtraOpenDmas, + bool initialConfig) + +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + uint8_t oldVal; + uint32_t tmpReg = 0; + t_FmIpcPortRsrcParams rsrcParams; + t_Error err; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + rsrcParams.hardwarePortId = hardwarePortId; + rsrcParams.val = numOfOpenDmas; + rsrcParams.extra = numOfExtraOpenDmas; + rsrcParams.boolInitialConfig = (uint8_t)initialConfig; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_SET_NUM_OF_OPEN_DMAS; + memcpy(msg.msgBody, &rsrcParams, sizeof(rsrcParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(rsrcParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return (t_Error)(reply.error); + } + + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + + if(initialConfig) + oldVal = 0; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]); + /* read into oldVal the current extra tasks */ + oldVal = (uint8_t)((tmpReg & BMI_NUM_OF_EXTRA_DMAS_MASK) >> BMI_EXTRA_NUM_OF_DMAS_SHIFT); + } + + if(numOfExtraOpenDmas > oldVal) + p_Fm->p_FmStateStruct->extraOpenDmasPoolSize = (uint8_t)MAX(p_Fm->p_FmStateStruct->extraOpenDmasPoolSize, numOfExtraOpenDmas); + + if(!initialConfig) + /* read into oldVal the current num of tasks */ + oldVal = (uint8_t)(((tmpReg & BMI_NUM_OF_DMAS_MASK) >> BMI_NUM_OF_DMAS_SHIFT) + 1); + + /* check that there are enough uncommitted open DMA's */ + ASSERT_COND(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas >= oldVal); + if((p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas - oldVal + numOfOpenDmas) > + p_Fm->p_FmStateStruct->maxNumOfOpenDmas) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, + ("Requested numOfOpenDmas for fm%d exceeds total numOfOpenDmas.", + p_Fm->p_FmStateStruct->fmId)); + else + { + /* update acummulated */ + p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas -= oldVal; + p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas += numOfOpenDmas; + /* calculate reg */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1]) & ~(BMI_NUM_OF_DMAS_MASK | BMI_NUM_OF_EXTRA_DMAS_MASK); + tmpReg |= (uint32_t)(((numOfOpenDmas-1) << BMI_NUM_OF_DMAS_SHIFT) | + (numOfExtraOpenDmas << BMI_EXTRA_NUM_OF_DMAS_SHIFT)); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], tmpReg); + + /* update total num of DMA's with committed number of open DMAS, and max uncommitted pool. */ + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2) & ~BMI_CFG2_DMAS_MASK; + tmpReg |= (uint32_t)(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas + p_Fm->p_FmStateStruct->extraOpenDmasPoolSize - 1) << BMI_CFG2_DMAS_SHIFT; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, tmpReg); + } + + return E_OK; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FmDumpPortRegs (t_Handle h_Fm,uint8_t hardwarePortId) +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + t_FmIpcMsg msg; + t_Error err; + + DECLARE_DUMP; + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_DUMP_PORT_REGS; + msg.msgBody[0] = hardwarePortId; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(hardwarePortId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], ("fmbm_pp for port %u", (hardwarePortId))); + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId-1], sizeof(uint32_t)); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], ("fmbm_pfs for port %u", (hardwarePortId ))); + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId-1], sizeof(uint32_t)); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], ("bm_ppid for port %u", (hardwarePortId))); + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_ppid[hardwarePortId-1], sizeof(uint32_t)); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) */ + + +/*****************************************************************************/ +/* API Init unit functions */ +/*****************************************************************************/ +t_Handle FM_Config(t_FmParams *p_FmParam) +{ + t_Fm *p_Fm; + uint8_t i; + uintptr_t baseAddr; + + SANITY_CHECK_RETURN_VALUE(p_FmParam, E_NULL_POINTER, NULL); + SANITY_CHECK_RETURN_VALUE(((p_FmParam->firmware.p_Code && p_FmParam->firmware.size) || + (!p_FmParam->firmware.p_Code && !p_FmParam->firmware.size)), + E_INVALID_VALUE, NULL); + + baseAddr = p_FmParam->baseAddr; + + /* Allocate FM structure */ + p_Fm = (t_Fm *) XX_Malloc(sizeof(t_Fm)); + if (!p_Fm) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM driver structure")); + return NULL; + } + memset(p_Fm, 0, sizeof(t_Fm)); + + p_Fm->p_FmStateStruct = (t_FmStateStruct *) XX_Malloc(sizeof(t_FmStateStruct)); + if (!p_Fm->p_FmStateStruct) + { + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Status structure")); + return NULL; + } + memset(p_Fm->p_FmStateStruct, 0, sizeof(t_FmStateStruct)); + + /* Initialize FM parameters which will be kept by the driver */ + p_Fm->p_FmStateStruct->fmId = p_FmParam->fmId; + p_Fm->guestId = p_FmParam->guestId; + + for(i=0; ip_FmStateStruct->portsTypes[i] = e_FM_PORT_TYPE_DUMMY; + + /* Allocate the FM driver's parameters structure */ + p_Fm->p_FmDriverParam = (t_FmDriverParam *)XX_Malloc(sizeof(t_FmDriverParam)); + if (!p_Fm->p_FmDriverParam) + { + XX_Free(p_Fm->p_FmStateStruct); + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM driver parameters")); + return NULL; + } + memset(p_Fm->p_FmDriverParam, 0, sizeof(t_FmDriverParam)); + + /* Initialize FM parameters which will be kept by the driver */ + p_Fm->p_FmStateStruct->fmId = p_FmParam->fmId; + p_Fm->h_FmMuram = p_FmParam->h_FmMuram; + p_Fm->h_App = p_FmParam->h_App; + p_Fm->p_FmStateStruct->fmClkFreq = p_FmParam->fmClkFreq; + p_Fm->f_Exception = p_FmParam->f_Exception; + p_Fm->f_BusError = p_FmParam->f_BusError; + p_Fm->p_FmFpmRegs = (t_FmFpmRegs *)UINT_TO_PTR(baseAddr + FM_MM_FPM); + p_Fm->p_FmBmiRegs = (t_FmBmiRegs *)UINT_TO_PTR(baseAddr + FM_MM_BMI); + p_Fm->p_FmQmiRegs = (t_FmQmiRegs *)UINT_TO_PTR(baseAddr + FM_MM_QMI); + p_Fm->p_FmDmaRegs = (t_FmDmaRegs *)UINT_TO_PTR(baseAddr + FM_MM_DMA); + p_Fm->baseAddr = baseAddr; + p_Fm->p_FmStateStruct->irq = p_FmParam->irq; + p_Fm->p_FmStateStruct->errIrq = p_FmParam->errIrq; + p_Fm->hcPortInitialized = FALSE; + p_Fm->independentMode = FALSE; + p_Fm->p_FmStateStruct->ramsEccEnable = FALSE; + p_Fm->p_FmStateStruct->totalNumOfTasks = DEFAULT_totalNumOfTasks; + p_Fm->p_FmStateStruct->totalFifoSize = DEFAULT_totalFifoSize; + p_Fm->p_FmStateStruct->maxNumOfOpenDmas = DEFAULT_maxNumOfOpenDmas; + p_Fm->p_FmStateStruct->extraFifoPoolSize = FM_MAX_NUM_OF_RX_PORTS*BMI_FIFO_UNITS; + p_Fm->p_FmStateStruct->exceptions = DEFAULT_exceptions; + for(i = 0;ip_FmStateStruct->macMaxFrameLengths1G[i] = DEFAULT_mtu; +#if defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS) + for(i = 0;ip_FmStateStruct->macMaxFrameLengths10G[i] = DEFAULT_mtu; +#endif /*defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)*/ + + p_Fm->h_Spinlock = XX_InitSpinlock(); + if (!p_Fm->h_Spinlock) + { + XX_Free(p_Fm->p_FmDriverParam); + XX_Free(p_Fm->p_FmStateStruct); + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("cant allocate spinlock!")); + return NULL; + } + +#ifdef FM_PARTITION_ARRAY + /* Initialize FM driver parameters parameters (for initialization phase only) */ + memcpy(p_Fm->p_FmDriverParam->liodnBasePerPort, p_FmParam->liodnBasePerPort, FM_SIZE_OF_LIODN_TABLE*sizeof(uint16_t)); +#endif /* FM_PARTITION_ARRAY */ + + /*p_Fm->p_FmDriverParam->numOfPartitions = p_FmParam->numOfPartitions; */ + p_Fm->p_FmDriverParam->enCounters = FALSE; + + p_Fm->p_FmDriverParam->resetOnInit = DEFAULT_resetOnInit; + + p_Fm->p_FmDriverParam->thresholds.dispLimit = DEFAULT_dispLimit; + p_Fm->p_FmDriverParam->thresholds.prsDispTh = DEFAULT_prsDispTh; + p_Fm->p_FmDriverParam->thresholds.plcrDispTh = DEFAULT_plcrDispTh; + p_Fm->p_FmDriverParam->thresholds.kgDispTh = DEFAULT_kgDispTh; + p_Fm->p_FmDriverParam->thresholds.bmiDispTh = DEFAULT_bmiDispTh; + p_Fm->p_FmDriverParam->thresholds.qmiEnqDispTh = DEFAULT_qmiEnqDispTh; + p_Fm->p_FmDriverParam->thresholds.qmiDeqDispTh = DEFAULT_qmiDeqDispTh; + p_Fm->p_FmDriverParam->thresholds.fmCtl1DispTh = DEFAULT_fmCtl1DispTh; + p_Fm->p_FmDriverParam->thresholds.fmCtl2DispTh = DEFAULT_fmCtl2DispTh; + + p_Fm->p_FmDriverParam->dmaStopOnBusError = DEFAULT_dmaStopOnBusError; + + p_Fm->p_FmDriverParam->dmaCacheOverride = DEFAULT_cacheOverride; + p_Fm->p_FmDriverParam->dmaAidMode = DEFAULT_aidMode; + p_Fm->p_FmDriverParam->dmaAidOverride = DEFAULT_aidOverride; + p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats = DEFAULT_axiDbgNumOfBeats; + p_Fm->p_FmDriverParam->dmaCamNumOfEntries = DEFAULT_dmaCamNumOfEntries; + p_Fm->p_FmDriverParam->dmaWatchdog = DEFAULT_dmaWatchdog; + + p_Fm->p_FmDriverParam->dmaCommQThresholds.clearEmergency = DEFAULT_dmaCommQLow; + p_Fm->p_FmDriverParam->dmaCommQThresholds.assertEmergency = DEFAULT_dmaCommQHigh; + p_Fm->p_FmDriverParam->dmaReadBufThresholds.clearEmergency = DEFAULT_dmaReadIntBufLow; + p_Fm->p_FmDriverParam->dmaReadBufThresholds.assertEmergency = DEFAULT_dmaReadIntBufHigh; + p_Fm->p_FmDriverParam->dmaWriteBufThresholds.clearEmergency = DEFAULT_dmaWriteIntBufLow; + p_Fm->p_FmDriverParam->dmaWriteBufThresholds.assertEmergency = DEFAULT_dmaWriteIntBufHigh; + p_Fm->p_FmDriverParam->dmaSosEmergency = DEFAULT_dmaSosEmergency; + + p_Fm->p_FmDriverParam->dmaDbgCntMode = DEFAULT_dmaDbgCntMode; + + p_Fm->p_FmDriverParam->dmaEnEmergency = FALSE; + p_Fm->p_FmDriverParam->dmaEnEmergencySmoother = FALSE; + p_Fm->p_FmDriverParam->catastrophicErr = DEFAULT_catastrophicErr; + p_Fm->p_FmDriverParam->dmaErr = DEFAULT_dmaErr; + p_Fm->p_FmDriverParam->haltOnExternalActivation = DEFAULT_haltOnExternalActivation; + p_Fm->p_FmDriverParam->haltOnUnrecoverableEccError = DEFAULT_haltOnUnrecoverableEccError; + p_Fm->p_FmDriverParam->enIramTestMode = FALSE; + p_Fm->p_FmDriverParam->enMuramTestMode = FALSE; + p_Fm->p_FmDriverParam->externalEccRamsEnable = DEFAULT_externalEccRamsEnable; + + p_Fm->p_FmDriverParam->fwVerify = DEFAULT_VerifyUcode; + p_Fm->p_FmDriverParam->firmware.size = p_FmParam->firmware.size; + if (p_Fm->p_FmDriverParam->firmware.size) + { + p_Fm->p_FmDriverParam->firmware.p_Code = (uint32_t *)XX_Malloc(p_Fm->p_FmDriverParam->firmware.size); + if (!p_Fm->p_FmDriverParam->firmware.p_Code) + { + XX_FreeSpinlock(p_Fm->h_Spinlock); + XX_Free(p_Fm->p_FmStateStruct); + XX_Free(p_Fm->p_FmDriverParam); + XX_Free(p_Fm); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM firmware code")); + return NULL; + } + memcpy(p_Fm->p_FmDriverParam->firmware.p_Code, p_FmParam->firmware.p_Code, p_Fm->p_FmDriverParam->firmware.size); + } + + return p_Fm; +} + +/**************************************************************************//** + @Function FM_Init + + @Description Initializes the FM module + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Init(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_FmDriverParam *p_FmDriverParam = NULL; + t_Error err = E_OK; + uint32_t tmpReg, cfgReg = 0; + int i; + uint16_t periodInFmClocks; + uint8_t remainder; + t_FmRevisionInfo revInfo; + + SANITY_CHECK_RETURN_ERROR(h_Fm, E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + uint8_t isMasterAlive; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + + /* build the FM guest partition IPC address */ + if(Sprint (p_Fm->fmModuleName, "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, p_Fm->guestId) != (p_Fm->guestId<10 ? 6:7)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + /* build the FM master partition IPC address */ + memset(p_Fm->fmIpcHandlerModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_Fm->fmIpcHandlerModuleName[0], "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, NCSW_MASTER_ID) != 6) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + for(i=0;iintrMng[i].f_Isr = UnimplementedIsr; + + p_Fm->h_IpcSessions[0] = XX_IpcInitSession(p_Fm->fmIpcHandlerModuleName[0], p_Fm->fmModuleName); + if (p_Fm->h_IpcSessions[0]) + { + err = XX_IpcRegisterMsgHandler(p_Fm->fmModuleName, FmGuestHandleIpcMsgCB, p_Fm, FM_IPC_MAX_REPLY_SIZE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_MASTER_IS_ALIVE; + msg.msgBody[0] = p_Fm->guestId; + replyLength = sizeof(uint32_t) + sizeof(uint8_t); + do + { + blockingFlag = TRUE; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(p_Fm->guestId), + (uint8_t*)&reply, + &replyLength, + IpcMsgCompletionCB, + h_Fm)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + while(blockingFlag) ; + if(replyLength != (sizeof(uint32_t) + sizeof(uint8_t))) + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + isMasterAlive = *(uint8_t*)(reply.replyBody); + } while (!isMasterAlive); + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_CLK_FREQ; + replyLength = sizeof(uint32_t) + sizeof(p_Fm->p_FmStateStruct->fmClkFreq); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + sizeof(p_Fm->p_FmStateStruct->fmClkFreq))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&p_Fm->p_FmStateStruct->fmClkFreq, reply.replyBody, sizeof(uint16_t)); + } + else + { + DBG(WARNING, ("FM Guest mode - without IPC")); + if(!p_Fm->p_FmStateStruct->fmClkFreq ) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("No fmClkFreq configured for guest without IPC")); + if(!p_Fm->baseAddr) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("No baseAddr configured for guest without IPC")); + } + + XX_Free(p_Fm->p_FmDriverParam); + p_Fm->p_FmDriverParam = NULL; + + if ((p_Fm->guestId == NCSW_MASTER_ID) || + (p_Fm->h_IpcSessions[0])) + { + FM_DisableRamsEcc(p_Fm); + FmMuramClear(p_Fm->h_FmMuram); + FM_EnableRamsEcc(p_Fm); + } + + return E_OK; + } + + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + FM_GetRevision(p_Fm, &revInfo); + +#ifdef FM_NO_DISPATCH_RAM_ECC + if (revInfo.majorRev != 4) + p_Fm->p_FmStateStruct->exceptions &= ~FM_EX_BMI_DISPATCH_RAM_ECC; +#endif /* FM_NO_DISPATCH_RAM_ECC */ + +#ifdef FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_Fm->p_FmStateStruct->exceptions &= ~FM_EX_BMI_LIST_RAM_ECC; +#endif /* FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 */ + +#ifdef FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_Fm->p_FmStateStruct->exceptions &= ~FM_EX_BMI_PIPELINE_ECC; +#endif /* FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 */ + +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + if (revInfo.majorRev == 4) + p_Fm->p_FmStateStruct->exceptions &= ~(FM_EX_QMI_SINGLE_ECC | FM_EX_QMI_DOUBLE_ECC); +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ + + CHECK_INIT_PARAMETERS(p_Fm, CheckFmParameters); + + p_FmDriverParam = p_Fm->p_FmDriverParam; + + FmMuramClear(p_Fm->h_FmMuram); + +#ifdef FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 + if (p_FmDriverParam->resetOnInit) + { + t_FMIramRegs *p_Iram = (t_FMIramRegs *)UINT_TO_PTR(p_Fm->baseAddr + FM_MM_IMEM); + uint32_t debug_reg; + + /* write to IRAM first location the debug instruction */ + WRITE_UINT32(p_Iram->iadd, 0); + while (GET_UINT32(p_Iram->iadd) != 0) ; + WRITE_UINT32(p_Iram->idata, FM_UCODE_DEBUG_INSTRUCTION); + + WRITE_UINT32(p_Iram->iadd, 0); + while (GET_UINT32(p_Iram->iadd) != 0) ; + while (GET_UINT32(p_Iram->idata) != FM_UCODE_DEBUG_INSTRUCTION) ; + + /* Enable patch from IRAM */ + WRITE_UINT32(p_Iram->iready, IRAM_READY); + XX_UDelay(100); + + /* reset FMAN */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, FPM_RSTC_FM_RESET); + XX_UDelay(100); + + /* verify breakpoint debug status register */ + debug_reg = GET_UINT32(*(uint32_t *)UINT_TO_PTR(p_Fm->baseAddr + FM_DEBUG_STATUS_REGISTER_OFFSET)); +#ifndef NCSW_LINUX + if(!debug_reg) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Invalid debug status register value = 0")); +#else + if(!debug_reg) + DBG(INFO,("Invalid debug status register value = 0")); +#endif + /*************************************/ + /* Load FMan-Controller code to Iram */ + /*************************************/ + if (ClearIRam(p_Fm) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + if (p_Fm->p_FmDriverParam->firmware.p_Code && + (LoadFmanCtrlCode(p_Fm) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + XX_UDelay(100); + + /* reset FMAN again to start the microcode */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, FPM_RSTC_FM_RESET); + XX_UDelay(1000); + } + else + { +#endif /* FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 */ + if(p_FmDriverParam->resetOnInit) + { + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrstc, FPM_RSTC_FM_RESET); + XX_UDelay(100); + } + + /*************************************/ + /* Load FMan-Controller code to Iram */ + /*************************************/ + if (ClearIRam(p_Fm) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + if (p_Fm->p_FmDriverParam->firmware.p_Code && + (LoadFmanCtrlCode(p_Fm) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); +#ifdef FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 + } +#endif /* FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 */ + +#ifdef FM_CAPWAP_SUPPORT + /* save first 256 byte in MURAM */ + p_Fm->resAddr = PTR_TO_UINT(FM_MURAM_AllocMem(p_Fm->h_FmMuram, 256, 0)); + if (!p_Fm->resAddr) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MURAM alloc for reserved Area failed")); + + WRITE_BLOCK(UINT_TO_PTR(p_Fm->resAddr), 0, 256); +#endif /* FM_CAPWAP_SUPPORT */ + + /* General FM driver initialization */ + p_Fm->fmMuramPhysBaseAddr = (uint64_t)(XX_VirtToPhys(UINT_TO_PTR(p_Fm->baseAddr + FM_MM_MURAM))); + for(i=0;iintrMng[i].f_Isr = UnimplementedIsr; + for(i=0;ifmanCtrlIntr[i].f_Isr = UnimplementedFmanCtrlIsr; + + /**********************/ + /* Init DMA Registers */ + /**********************/ + /* clear status reg events */ + tmpReg = (DMA_STATUS_BUS_ERR | DMA_STATUS_READ_ECC | DMA_STATUS_SYSTEM_WRITE_ECC | DMA_STATUS_FM_WRITE_ECC); + /*tmpReg |= (DMA_STATUS_SYSTEM_DPEXT_ECC | DMA_STATUS_FM_DPEXT_ECC | DMA_STATUS_SYSTEM_DPDAT_ECC | DMA_STATUS_FM_DPDAT_ECC | DMA_STATUS_FM_SPDAT_ECC);*/ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsr) | tmpReg); + + /* configure mode register */ + tmpReg = 0; + tmpReg |= p_FmDriverParam->dmaCacheOverride << DMA_MODE_CACHE_OR_SHIFT; + if(p_FmDriverParam->dmaAidOverride) + tmpReg |= DMA_MODE_AID_OR; + if (p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_BUS_ERROR) + tmpReg |= DMA_MODE_BER; + if ((p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_SYSTEM_WRITE_ECC) | (p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_READ_ECC) | (p_Fm->p_FmStateStruct->exceptions & FM_EX_DMA_FM_WRITE_ECC)) + tmpReg |= DMA_MODE_ECC; + if(p_FmDriverParam->dmaStopOnBusError) + tmpReg |= DMA_MODE_SBER; + tmpReg |= (uint32_t)(p_FmDriverParam->dmaAxiDbgNumOfBeats - 1) << DMA_MODE_AXI_DBG_SHIFT; + if (p_FmDriverParam->dmaEnEmergency) + { + tmpReg |= p_FmDriverParam->dmaEmergency.emergencyBusSelect; + tmpReg |= p_FmDriverParam->dmaEmergency.emergencyLevel << DMA_MODE_EMERGENCY_LEVEL_SHIFT; + if(p_FmDriverParam->dmaEnEmergencySmoother) + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmemsr, p_FmDriverParam->dmaEmergencySwitchCounter); + } + tmpReg |= ((p_FmDriverParam->dmaCamNumOfEntries/DMA_CAM_UNITS) - 1) << DMA_MODE_CEN_SHIFT; + + tmpReg |= DMA_MODE_SECURE_PROT; + tmpReg |= p_FmDriverParam->dmaDbgCntMode << DMA_MODE_DBG_SHIFT; + tmpReg |= p_FmDriverParam->dmaAidMode << DMA_MODE_AID_MODE_SHIFT; + +#ifdef FM_PEDANTIC_DMA + tmpReg |= DMA_MODE_EMERGENCY_READ; +#endif /* FM_PEDANTIC_DMA */ + + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, tmpReg); + + /* configure thresholds register */ + tmpReg = ((uint32_t)p_FmDriverParam->dmaCommQThresholds.assertEmergency << DMA_THRESH_COMMQ_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaReadBufThresholds.assertEmergency << DMA_THRESH_READ_INT_BUF_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaWriteBufThresholds.assertEmergency); + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmtr, tmpReg); + + /* configure hysteresis register */ + tmpReg = ((uint32_t)p_FmDriverParam->dmaCommQThresholds.clearEmergency << DMA_THRESH_COMMQ_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaReadBufThresholds.clearEmergency << DMA_THRESH_READ_INT_BUF_SHIFT) | + ((uint32_t)p_FmDriverParam->dmaWriteBufThresholds.clearEmergency); + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmhy, tmpReg); + + /* configure emergency threshold */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsetr, p_FmDriverParam->dmaSosEmergency); + + /* configure Watchdog */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmwcr, USEC_TO_CLK(p_FmDriverParam->dmaWatchdog, p_Fm->p_FmStateStruct->fmClkFreq)); + + /* Allocate MURAM for CAM */ + p_Fm->camBaseAddr = PTR_TO_UINT(FM_MURAM_AllocMem(p_Fm->h_FmMuram, + (uint32_t)(p_FmDriverParam->dmaCamNumOfEntries*DMA_CAM_SIZEOF_ENTRY), + DMA_CAM_ALIGN)); + if (!p_Fm->camBaseAddr ) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MURAM alloc for DMA CAM failed")); + + WRITE_BLOCK(UINT_TO_PTR(p_Fm->camBaseAddr), 0, (uint32_t)(p_FmDriverParam->dmaCamNumOfEntries*DMA_CAM_SIZEOF_ENTRY)); + + /* VirtToPhys */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmebcr, + (uint32_t)(XX_VirtToPhys(UINT_TO_PTR(p_Fm->camBaseAddr)) - p_Fm->fmMuramPhysBaseAddr)); + +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + /* liodn-partitions */ + for (i=0 ; iliodnBasePerPort[i] << DMA_LIODN_SHIFT) | + (uint32_t)p_FmDriverParam->liodnBasePerPort[i+1]); + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmplr[i/2], tmpReg); + } + } +#endif /* FM_PARTITION_ARRAY */ + + /**********************/ + /* Init FPM Registers */ + /**********************/ + tmpReg = (uint32_t)(p_FmDriverParam->thresholds.dispLimit << FPM_DISP_LIMIT_SHIFT); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmflc, tmpReg); + + tmpReg = (((uint32_t)p_FmDriverParam->thresholds.prsDispTh << FPM_THR1_PRS_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.kgDispTh << FPM_THR1_KG_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.plcrDispTh << FPM_THR1_PLCR_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.bmiDispTh << FPM_THR1_BMI_SHIFT)); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmdis1, tmpReg); + + tmpReg = (((uint32_t)p_FmDriverParam->thresholds.qmiEnqDispTh << FPM_THR2_QMI_ENQ_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.qmiDeqDispTh << FPM_THR2_QMI_DEQ_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.fmCtl1DispTh << FPM_THR2_FM_CTL1_SHIFT) | + ((uint32_t)p_FmDriverParam->thresholds.fmCtl2DispTh << FPM_THR2_FM_CTL2_SHIFT)); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmdis2, tmpReg); + + /* define exceptions and error behavior */ + tmpReg = 0; + /* Clear events */ + tmpReg |= (FPM_EV_MASK_STALL | FPM_EV_MASK_DOUBLE_ECC | FPM_EV_MASK_SINGLE_ECC); + /* enable interrupts */ + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_FPM_STALL_ON_TASKS) + tmpReg |= FPM_EV_MASK_STALL_EN; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_FPM_SINGLE_ECC) + tmpReg |= FPM_EV_MASK_SINGLE_ECC_EN; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_FPM_DOUBLE_ECC) + tmpReg |= FPM_EV_MASK_DOUBLE_ECC_EN; + tmpReg |= (p_Fm->p_FmDriverParam->catastrophicErr << FPM_EV_MASK_CAT_ERR_SHIFT); + tmpReg |= (p_Fm->p_FmDriverParam->dmaErr << FPM_EV_MASK_DMA_ERR_SHIFT); + if(!p_Fm->p_FmDriverParam->haltOnExternalActivation) + tmpReg |= FPM_EV_MASK_EXTERNAL_HALT; + if(!p_Fm->p_FmDriverParam->haltOnUnrecoverableEccError) + tmpReg |= FPM_EV_MASK_ECC_ERR_HALT; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + + /* clear all fmCtls event registers */ + for(i=0;ip_FmFpmRegs->fpmcev[i], 0xFFFFFFFF); + + /* RAM ECC - enable and clear events*/ + /* first we need to clear all parser memory, as it is uninitialized and + may cause ECC errors */ + tmpReg = 0; + /* event bits */ + tmpReg = (FPM_RAM_CTL_MURAM_ECC | FPM_RAM_CTL_IRAM_ECC); + /* Rams enable is not effected by the RCR bit, but by a COP configuration */ + if(p_Fm->p_FmDriverParam->externalEccRamsEnable) + tmpReg |= FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL; + + /* enable test mode */ + if(p_FmDriverParam->enMuramTestMode) + tmpReg |= FPM_RAM_CTL_MURAM_TEST_ECC; + if(p_FmDriverParam->enIramTestMode) + tmpReg |= FPM_RAM_CTL_IRAM_TEST_ECC; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg); + + tmpReg = 0; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_IRAM_ECC) + { + tmpReg |= FPM_IRAM_ECC_ERR_EX_EN; + FmEnableRamsEcc(p_Fm); + } + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_NURAM_ECC) + { + tmpReg |= FPM_MURAM_ECC_ERR_EX_EN; + FmEnableRamsEcc(p_Fm); + } + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrie, tmpReg); + + /**********************/ + /* Init BMI Registers */ + /**********************/ + + /* define common resources */ + /* allocate MURAM for FIFO according to total size */ + p_Fm->fifoBaseAddr = PTR_TO_UINT(FM_MURAM_AllocMem(p_Fm->h_FmMuram, + p_Fm->p_FmStateStruct->totalFifoSize, + BMI_FIFO_ALIGN)); + if (!p_Fm->fifoBaseAddr) + { + FreeInitResources(p_Fm); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MURAM alloc for FIFO failed")); + } + + tmpReg = (uint32_t)(XX_VirtToPhys(UINT_TO_PTR(p_Fm->fifoBaseAddr)) - p_Fm->fmMuramPhysBaseAddr); + tmpReg = tmpReg / BMI_FIFO_ALIGN; + + tmpReg |= ((p_Fm->p_FmStateStruct->totalFifoSize/BMI_FIFO_UNITS - 1) << BMI_CFG1_FIFO_SIZE_SHIFT); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg1, tmpReg); + + tmpReg = ((uint32_t)(p_Fm->p_FmStateStruct->totalNumOfTasks - 1) << BMI_CFG2_TASKS_SHIFT ); + /* num of DMA's will be dynamically updated when each port is set */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, tmpReg); + + /* define unmaskable exceptions, enable and clear events */ + tmpReg = 0; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ievr, (BMI_ERR_INTR_EN_LIST_RAM_ECC | + BMI_ERR_INTR_EN_PIPELINE_ECC | + BMI_ERR_INTR_EN_STATISTICS_RAM_ECC | + BMI_ERR_INTR_EN_DISPATCH_RAM_ECC)); + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_LIST_RAM_ECC) + tmpReg |= BMI_ERR_INTR_EN_LIST_RAM_ECC; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_PIPELINE_ECC) + tmpReg |= BMI_ERR_INTR_EN_PIPELINE_ECC; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_STATISTICS_RAM_ECC) + tmpReg |= BMI_ERR_INTR_EN_STATISTICS_RAM_ECC; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_DISPATCH_RAM_ECC) + tmpReg |= BMI_ERR_INTR_EN_DISPATCH_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + + /**********************/ + /* Init QMI Registers */ + /**********************/ + /* Clear error interrupt events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eie, (QMI_ERR_INTR_EN_DOUBLE_ECC | QMI_ERR_INTR_EN_DEQ_FROM_DEF)); + tmpReg = 0; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID) + tmpReg |= QMI_ERR_INTR_EN_DEQ_FROM_DEF; + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DOUBLE_ECC) + tmpReg |= QMI_ERR_INTR_EN_DOUBLE_ECC; + /* enable events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien, tmpReg); + + if(p_Fm->p_FmDriverParam->tnumAgingPeriod) + { + /* tnumAgingPeriod is in units of microseconds, p_FmClockFreq is in Mhz */ + periodInFmClocks = (uint16_t)(p_Fm->p_FmDriverParam->tnumAgingPeriod*p_Fm->p_FmStateStruct->fmClkFreq); + /* periodInFmClocks must be a 64 multiply */ + remainder = (uint8_t)(periodInFmClocks % 64); + if (remainder > 64) + tmpReg = (uint32_t)((periodInFmClocks/64) + 1); + else + { + tmpReg = (uint32_t)(periodInFmClocks/64); + if(!tmpReg) + tmpReg = 1; + } + tmpReg <<= QMI_TAPC_TAP; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_tapc, tmpReg); + + } + tmpReg = 0; + /* Clear interrupt events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ie, QMI_INTR_EN_SINGLE_ECC); + if(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_SINGLE_ECC) + tmpReg |= QMI_INTR_EN_SINGLE_ECC; + /* enable events */ + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien, tmpReg); + + /* clear & enable global counters - calculate reg and save for later, + because it's the same reg for QMI enable */ + if(p_Fm->p_FmDriverParam->enCounters) + cfgReg = QMI_CFG_EN_COUNTERS; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + cfgReg |= (uint32_t)(((QMI_DEF_TNUMS_THRESH) << 8) | (uint32_t)QMI_DEF_TNUMS_THRESH); +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + if (p_Fm->p_FmStateStruct->irq != NO_IRQ) + { + XX_SetIntr(p_Fm->p_FmStateStruct->irq, FM_EventIsr, p_Fm); + XX_EnableIntr(p_Fm->p_FmStateStruct->irq); + } + + if (p_Fm->p_FmStateStruct->errIrq != NO_IRQ) + { + XX_SetIntr(p_Fm->p_FmStateStruct->errIrq, ErrorIsrCB, p_Fm); + XX_EnableIntr(p_Fm->p_FmStateStruct->errIrq); + } + + /* build the FM master partition IPC address */ + if (Sprint (p_Fm->fmModuleName, "FM_%d_%d",p_Fm->p_FmStateStruct->fmId, NCSW_MASTER_ID) != 6) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + err = XX_IpcRegisterMsgHandler(p_Fm->fmModuleName, FmHandleIpcMsgCB, p_Fm, FM_IPC_MAX_REPLY_SIZE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /**********************/ + /* Enable all modules */ + /**********************/ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_init, BMI_INIT_START); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, cfgReg | QMI_CFG_ENQ_EN | QMI_CFG_DEQ_EN); + + if (p_Fm->p_FmDriverParam->firmware.p_Code) + { + XX_Free(p_Fm->p_FmDriverParam->firmware.p_Code); + p_Fm->p_FmDriverParam->firmware.p_Code = NULL; + } + + XX_Free(p_Fm->p_FmDriverParam); + p_Fm->p_FmDriverParam = NULL; + + return E_OK; +} + +/**************************************************************************//** + @Function FM_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Free(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + if (p_Fm->guestId != NCSW_MASTER_ID) + { + XX_IpcUnregisterMsgHandler(p_Fm->fmModuleName); + + if(!p_Fm->recoveryMode) + XX_Free(p_Fm->p_FmStateStruct); + + XX_Free(p_Fm); + + return E_OK; + } + + /* disable BMI and QMI */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_init, 0); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc, 0); + + /* release BMI resources */ + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg2, 0); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_cfg1, 0); + + /* disable ECC */ + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, 0); + + if ((p_Fm->guestId == NCSW_MASTER_ID) && (p_Fm->fmModuleName[0] != 0)) + XX_IpcUnregisterMsgHandler(p_Fm->fmModuleName); + + if (p_Fm->p_FmStateStruct) + { + if (p_Fm->p_FmStateStruct->irq != NO_IRQ) + { + XX_DisableIntr(p_Fm->p_FmStateStruct->irq); + XX_FreeIntr(p_Fm->p_FmStateStruct->irq); + } + if (p_Fm->p_FmStateStruct->errIrq != NO_IRQ) + { + XX_DisableIntr(p_Fm->p_FmStateStruct->errIrq); + XX_FreeIntr(p_Fm->p_FmStateStruct->errIrq); + } + } + + if (p_Fm->h_Spinlock) + XX_FreeSpinlock(p_Fm->h_Spinlock); + + if (p_Fm->p_FmDriverParam) + { + if (p_Fm->p_FmDriverParam->firmware.p_Code) + XX_Free(p_Fm->p_FmDriverParam->firmware.p_Code); + XX_Free(p_Fm->p_FmDriverParam); + p_Fm->p_FmDriverParam = NULL; + } + + FreeInitResources(p_Fm); + + if (!p_Fm->recoveryMode && p_Fm->p_FmStateStruct) + XX_Free(p_Fm->p_FmStateStruct); + + XX_Free(p_Fm); + + return E_OK; +} + +/*************************************************/ +/* API Advanced Init unit functions */ +/*************************************************/ + +t_Error FM_ConfigResetOnInit(t_Handle h_Fm, bool enable) +{ + + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->resetOnInit = enable; + + return E_OK; +} + + +t_Error FM_ConfigTotalNumOfTasks(t_Handle h_Fm, uint8_t totalNumOfTasks) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->totalNumOfTasks = totalNumOfTasks; + + return E_OK; +} + +t_Error FM_ConfigTotalFifoSize(t_Handle h_Fm, uint32_t totalFifoSize) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->totalFifoSize = totalFifoSize; + + return E_OK; +} + +t_Error FM_ConfigMaxNumOfOpenDmas(t_Handle h_Fm, uint8_t maxNumOfOpenDmas) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmStateStruct->maxNumOfOpenDmas = maxNumOfOpenDmas; + + return E_OK; +} + +t_Error FM_ConfigThresholds(t_Handle h_Fm, t_FmThresholds *p_FmThresholds) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->thresholds, p_FmThresholds, sizeof(t_FmThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaCacheOverride(t_Handle h_Fm, e_FmDmaCacheOverride cacheOverride) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaCacheOverride = cacheOverride; + + return E_OK; +} + +t_Error FM_ConfigDmaAidOverride(t_Handle h_Fm, bool aidOverride) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaAidOverride = aidOverride; + + return E_OK; +} + +t_Error FM_ConfigDmaAidMode(t_Handle h_Fm, e_FmDmaAidMode aidMode) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaAidMode = aidMode; + + return E_OK; +} + +t_Error FM_ConfigDmaAxiDbgNumOfBeats(t_Handle h_Fm, uint8_t axiDbgNumOfBeats) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaAxiDbgNumOfBeats = axiDbgNumOfBeats; + + return E_OK; +} + +t_Error FM_ConfigDmaCamNumOfEntries(t_Handle h_Fm, uint8_t numOfEntries) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaCamNumOfEntries = numOfEntries; + + return E_OK; +} + +t_Error FM_ConfigDmaWatchdog(t_Handle h_Fm, uint32_t watchdogValue) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + +#ifdef FM_NO_WATCHDOG + { + t_FmRevisionInfo revInfo; + FM_GetRevision(h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("watchdog!")); + } +#endif /* FM_NO_WATCHDOG */ + + p_Fm->p_FmDriverParam->dmaWatchdog = watchdogValue; + + return E_OK; +} + +t_Error FM_ConfigDmaWriteBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds) + +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->dmaWriteBufThresholds, p_FmDmaThresholds, sizeof(t_FmDmaThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaCommQThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->dmaCommQThresholds, p_FmDmaThresholds, sizeof(t_FmDmaThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaReadBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + memcpy(&p_Fm->p_FmDriverParam->dmaReadBufThresholds, p_FmDmaThresholds, sizeof(t_FmDmaThresholds)); + + return E_OK; +} + +t_Error FM_ConfigDmaEmergency(t_Handle h_Fm, t_FmDmaEmergency *p_Emergency) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaEnEmergency = TRUE; + memcpy(&p_Fm->p_FmDriverParam->dmaEmergency, p_Emergency, sizeof(t_FmDmaEmergency)); + + return E_OK; +} + +t_Error FM_ConfigDmaEmergencySmoother(t_Handle h_Fm, uint32_t emergencyCnt) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + if(!p_Fm->p_FmDriverParam->dmaEnEmergency) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("FM_ConfigEnDmaEmergencySmoother may be called only after FM_ConfigEnDmaEmergency")); + + p_Fm->p_FmDriverParam->dmaEnEmergencySmoother = TRUE; + p_Fm->p_FmDriverParam->dmaEmergencySwitchCounter = emergencyCnt; + + return E_OK; +} + +t_Error FM_ConfigDmaDbgCounter(t_Handle h_Fm, e_FmDmaDbgCntMode fmDmaDbgCntMode) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaDbgCntMode = fmDmaDbgCntMode; + + return E_OK; +} + +t_Error FM_ConfigDmaStopOnBusErr(t_Handle h_Fm, bool stop) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaStopOnBusError = stop; + + return E_OK; +} + +t_Error FM_ConfigDmaSosEmergencyThreshold(t_Handle h_Fm, uint32_t dmaSosEmergency) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaSosEmergency = dmaSosEmergency; + + return E_OK; +} + +t_Error FM_ConfigEnableCounters(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->enCounters = TRUE; + + return E_OK; +} + +t_Error FM_ConfigDmaErr(t_Handle h_Fm, e_FmDmaErr dmaErr) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->dmaErr = dmaErr; + + return E_OK; +} + +t_Error FM_ConfigCatastrophicErr(t_Handle h_Fm, e_FmCatastrophicErr catastrophicErr) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->catastrophicErr = catastrophicErr; + + return E_OK; +} + +t_Error FM_ConfigEnableMuramTestMode(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->enMuramTestMode = TRUE; + + return E_OK; +} + +t_Error FM_ConfigEnableIramTestMode(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->enIramTestMode = TRUE; + + return E_OK; +} + +t_Error FM_ConfigHaltOnExternalActivation(t_Handle h_Fm, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + +#ifdef FM_HALT_SIG_ERRATA_GEN12 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("HaltOnExternalActivation!")); + } +#endif /* FM_HALT_SIG_ERRATA_GEN12 */ + + p_Fm->p_FmDriverParam->haltOnExternalActivation = enable; + + return E_OK; +} + +t_Error FM_ConfigHaltOnUnrecoverableEccError(t_Handle h_Fm, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + +#ifdef FM_ECC_HALT_NO_SYNC_ERRATA_10GMAC_A008 + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("HaltOnEccError!")); +#endif /* FM_ECC_HALT_NO_SYNC_ERRATA_10GMAC_A008 */ + + p_Fm->p_FmDriverParam->haltOnUnrecoverableEccError = enable; + + return E_OK; +} + +t_Error FM_ConfigException(t_Handle h_Fm, e_FmExceptions exception, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask = 0; + t_FmRevisionInfo revInfo; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + FM_GetRevision(p_Fm, &revInfo); +#ifdef FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 + if((exception == e_FM_EX_BMI_PIPELINE_ECC) && (enable)) + { + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_PIPELINE_ECC!")); + return E_OK; + } + } +#endif /* FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 */ +#ifdef FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 + if((exception == e_FM_EX_BMI_LIST_RAM_ECC) && (enable)) + { + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_LIST_RAM_ECC!")); + return E_OK; + } + } +#endif /* FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 */ +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + if(((exception == e_FM_EX_QMI_SINGLE_ECC) || (exception == e_FM_EX_QMI_DOUBLE_ECC)) && + enable) + { + if (revInfo.majorRev == 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("QMI ECC exception!")); + return E_OK; + } + } +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ +#ifdef FM_NO_DISPATCH_RAM_ECC + if((exception == e_FM_EX_BMI_DISPATCH_RAM_ECC) && (enable)) + { + if (revInfo.majorRev != 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_DISPATCH_RAM_ECC!")); + return E_OK; + } + } +#endif /* FM_NO_DISPATCH_RAM_ECC */ + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Fm->p_FmStateStruct->exceptions |= bitMask; + else + p_Fm->p_FmStateStruct->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_ConfigExternalEccRamsEnable(t_Handle h_Fm, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + p_Fm->p_FmDriverParam->externalEccRamsEnable = enable; + + return E_OK; +} + +t_Error FM_ConfigTnumAgingPeriod(t_Handle h_Fm, uint16_t tnumAgingPeriod) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; +#ifdef FM_NO_TNUM_AGING + t_FmRevisionInfo revInfo; +#endif /* FM_NO_TNUM_AGING */ + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + +#ifdef FM_NO_TNUM_AGING + FM_GetRevision(h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_ConfigTnumAgingPeriod!")); +#endif /* FM_NO_TNUM_AGING */ + + p_Fm->p_FmDriverParam->tnumAgingPeriod = tnumAgingPeriod; + + return E_OK; + +} + +/****************************************************/ +/* API Run-time Control uint functions */ +/****************************************************/ +t_Handle FM_GetPcdHandle(t_Handle h_Fm) +{ + SANITY_CHECK_RETURN_VALUE(h_Fm, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!((t_Fm*)h_Fm)->p_FmDriverParam, E_INVALID_STATE, NULL); + + return ((t_Fm*)h_Fm)->h_Pcd; +} + +void FM_EventIsr(t_Handle h_Fm) +{ +#define FM_M_CALL_1G_MAC_TMR_ISR(_id) \ + { \ + if (p_Fm->guestId != p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].guestId) \ + SendIpcIsr(p_Fm, (e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id), pending); \ + else \ + p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].f_Isr(p_Fm->intrMng[(e_FmInterModuleEvent)(e_FM_EV_1G_MAC0_TMR+_id)].h_SrcHandle);\ + } + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t pending, event; + + SANITY_CHECK_RETURN(h_Fm, E_INVALID_HANDLE); + + /* normal interrupts */ + pending = GET_UINT32(p_Fm->p_FmFpmRegs->fmnpi); + ASSERT_COND(pending); + if (pending & INTR_EN_BMI) + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("BMI Event - undefined!")); + if (pending & INTR_EN_QMI) + QmiEvent(p_Fm); + if (pending & INTR_EN_PRS) + p_Fm->intrMng[e_FM_EV_PRS].f_Isr(p_Fm->intrMng[e_FM_EV_PRS].h_SrcHandle); + if (pending & INTR_EN_PLCR) + p_Fm->intrMng[e_FM_EV_PLCR].f_Isr(p_Fm->intrMng[e_FM_EV_PLCR].h_SrcHandle); + if (pending & INTR_EN_KG) + p_Fm->intrMng[e_FM_EV_KG].f_Isr(p_Fm->intrMng[e_FM_EV_KG].h_SrcHandle); + if (pending & INTR_EN_TMR) + p_Fm->intrMng[e_FM_EV_TMR].f_Isr(p_Fm->intrMng[e_FM_EV_TMR].h_SrcHandle); + + /* MAC events may belong to different partitions */ + if (pending & INTR_EN_1G_MAC0_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(0); + if (pending & INTR_EN_1G_MAC1_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(1); + if (pending & INTR_EN_1G_MAC2_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(2); + if (pending & INTR_EN_1G_MAC3_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(3); + if (pending & INTR_EN_1G_MAC4_TMR) + FM_M_CALL_1G_MAC_TMR_ISR(4); + + /* IM port events may belong to different partitions */ + if (pending & INTR_EN_REV0) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[0]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[0]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[0], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_0].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_0, pending); */ + else + p_Fm->fmanCtrlIntr[0].f_Isr(p_Fm->fmanCtrlIntr[0].h_SrcHandle, event); + + } + if (pending & INTR_EN_REV1) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[1]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[1]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[1], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_1].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_1, pending); */ + else + p_Fm->fmanCtrlIntr[1].f_Isr(p_Fm->fmanCtrlIntr[1].h_SrcHandle, event); + + } + if (pending & INTR_EN_REV2) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[2]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[2]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[2], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_2].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_2, pending); */ + else + p_Fm->fmanCtrlIntr[2].f_Isr(p_Fm->fmanCtrlIntr[2].h_SrcHandle, event); + } + if (pending & INTR_EN_REV3) + { + event = GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcev[3]) & GET_UINT32(p_Fm->p_FmFpmRegs->fmfpfcee[3]); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmcev[3], event); + if (p_Fm->guestId != p_Fm->intrMng[e_FM_EV_FMAN_CTRL_3].guestId) + /*TODO IPC ISR For Fman Ctrl */ + ASSERT_COND(0); + /* SendIpcIsr(p_Fm, e_FM_EV_FMAN_CTRL_2, pendin3); */ + else + p_Fm->fmanCtrlIntr[3].f_Isr(p_Fm->fmanCtrlIntr[3].h_SrcHandle, event); + } +} + +t_Error FM_ErrorIsr(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(h_Fm, E_INVALID_HANDLE); + + /* error interrupts */ + if (GET_UINT32(p_Fm->p_FmFpmRegs->fmepi) == 0) + return ERROR_CODE(E_EMPTY); + + ErrorIsrCB(p_Fm); + return E_OK; +} + +t_Error FM_SetPortsBandwidth(t_Handle h_Fm, t_FmPortsBandwidthParams *p_PortsBandwidth) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + int i; + uint8_t sum; + uint8_t hardwarePortId; + uint32_t tmpRegs[8] = {0,0,0,0,0,0,0,0}; + uint8_t relativePortId, shift, weight, maxPercent = 0; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + /* check that all ports add up to 100% */ + sum = 0; + for (i=0;inumOfPorts;i++) + sum +=p_PortsBandwidth->portsBandwidths[i].bandwidth; + if (sum != 100) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Sum of ports bandwidth differ from 100%")); + + /* find highest precent */ + for (i=0;inumOfPorts;i++) + { + if (p_PortsBandwidth->portsBandwidths[i].bandwidth > maxPercent) + maxPercent = p_PortsBandwidth->portsBandwidths[i].bandwidth; + } + + /* calculate weight for each port */ + for (i=0;inumOfPorts;i++) + { + weight = (uint8_t)((p_PortsBandwidth->portsBandwidths[i].bandwidth * PORT_MAX_WEIGHT )/maxPercent); + /* we want even division between 1-to-PORT_MAX_WEIGHT. so if exect division + is not reached, we round up so that: + 0 until maxPercent/PORT_MAX_WEIGHT get "1" + maxPercent/PORT_MAX_WEIGHT+1 until (maxPercent/PORT_MAX_WEIGHT)*2 get "2" + ... + maxPercent - maxPercent/PORT_MAX_WEIGHT until maxPercent get "PORT_MAX_WEIGHT: */ + if ((uint8_t)((p_PortsBandwidth->portsBandwidths[i].bandwidth * PORT_MAX_WEIGHT ) % maxPercent)) + weight++; + + /* find the location of this port within the register */ + SW_PORT_ID_TO_HW_PORT_ID(hardwarePortId, + p_PortsBandwidth->portsBandwidths[i].type, + p_PortsBandwidth->portsBandwidths[i].relativePortId); + relativePortId = (uint8_t)(hardwarePortId % 8); + shift = (uint8_t)(32-4*(relativePortId+1)); + + + if(weight > 1) + /* Add this port to tmpReg */ + /* (each 8 ports result in one register)*/ + tmpRegs[hardwarePortId/8] |= ((weight-1) << shift); + } + + for(i=0;i<8;i++) + if(tmpRegs[i]) + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_arb[i], tmpRegs[i]); + + return E_OK; +} + +t_Error FM_EnableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_FmIpcMsg msg; + t_Error err; + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_ENABLE_RAM_ECC; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + if(!p_Fm->p_FmStateStruct->internalCall) + p_Fm->p_FmStateStruct->explicitEnable = TRUE; + p_Fm->p_FmStateStruct->internalCall = FALSE; + + if(p_Fm->p_FmStateStruct->ramsEccEnable) + return E_OK; + else + { + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + if(tmpReg & FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL) + { + DBG(WARNING, ("Rams ECC is configured to be controlled through JTAG")); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg | FPM_RAM_CTL_IRAM_ECC_EN); + } + else + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg | (FPM_RAM_CTL_RAMS_ECC_EN | FPM_RAM_CTL_IRAM_ECC_EN)); + p_Fm->p_FmStateStruct->ramsEccEnable = TRUE; + } + + return E_OK; +} + +t_Error FM_DisableRamsEcc(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + bool explicitDisable = FALSE; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_HANDLE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + t_Error err; + t_FmIpcMsg msg; + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_DISABLE_RAM_ECC; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + if(!p_Fm->p_FmStateStruct->internalCall) + explicitDisable = TRUE; + p_Fm->p_FmStateStruct->internalCall = FALSE; + + /* if rams are already disabled, or if rams were explicitly enabled and are + currently called indirectly (not explicitly), ignore this call. */ + if(!p_Fm->p_FmStateStruct->ramsEccEnable || (p_Fm->p_FmStateStruct->explicitEnable && !explicitDisable)) + return E_OK; + else + { + if(p_Fm->p_FmStateStruct->explicitEnable) + /* This is the case were both explicit are TRUE. + Turn off this flag for cases were following ramsEnable + routines are called */ + p_Fm->p_FmStateStruct->explicitEnable = FALSE; + + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrcr); + if(tmpReg & FPM_RAM_CTL_RAMS_ECC_EN_SRC_SEL) + { + DBG(WARNING, ("Rams ECC is configured to be controlled through JTAG")); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg & ~FPM_RAM_CTL_IRAM_ECC_EN); + } + else + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrcr, tmpReg & ~(FPM_RAM_CTL_RAMS_ECC_EN | FPM_RAM_CTL_IRAM_ECC_EN)); + p_Fm->p_FmStateStruct->ramsEccEnable = FALSE; + } + + return E_OK; +} + +t_Error FM_SetException(t_Handle h_Fm, e_FmExceptions exception, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask = 0; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Fm->p_FmStateStruct->exceptions |= bitMask; + else + p_Fm->p_FmStateStruct->exceptions &= ~bitMask; + + switch(exception) + { + case(e_FM_EX_DMA_BUS_ERROR): + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr); + if(enable) + tmpReg |= DMA_MODE_BER; + else + tmpReg &= ~DMA_MODE_BER; + /* disable bus error */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, tmpReg); + break; + case(e_FM_EX_DMA_READ_ECC): + case(e_FM_EX_DMA_SYSTEM_WRITE_ECC): + case(e_FM_EX_DMA_FM_WRITE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr); + if(enable) + tmpReg |= DMA_MODE_ECC; + else + tmpReg &= ~DMA_MODE_ECC; + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, tmpReg); + break; + case(e_FM_EX_FPM_STALL_ON_TASKS): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + if(enable) + tmpReg |= FPM_EV_MASK_STALL_EN; + else + tmpReg &= ~FPM_EV_MASK_STALL_EN; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + break; + case(e_FM_EX_FPM_SINGLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + if(enable) + tmpReg |= FPM_EV_MASK_SINGLE_ECC_EN; + else + tmpReg &= ~FPM_EV_MASK_SINGLE_ECC_EN; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + break; + case( e_FM_EX_FPM_DOUBLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + if(enable) + tmpReg |= FPM_EV_MASK_DOUBLE_ECC_EN; + else + tmpReg &= ~FPM_EV_MASK_DOUBLE_ECC_EN; + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg); + break; + case( e_FM_EX_QMI_SINGLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien); + if(enable) + { +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev == 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_QMI_SINGLE_ECC")); + return E_OK; + } +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ + tmpReg |= QMI_INTR_EN_SINGLE_ECC; + } + else + tmpReg &= ~QMI_INTR_EN_SINGLE_ECC; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_ien, tmpReg); + break; + case(e_FM_EX_QMI_DOUBLE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien); + if(enable) + { +#ifdef FM_QMI_NO_ECC_EXCEPTIONS + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev == 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_QMI_DOUBLE_ECC")); + return E_OK; + } +#endif /* FM_QMI_NO_ECC_EXCEPTIONS */ + tmpReg |= QMI_ERR_INTR_EN_DOUBLE_ECC; + } + else + tmpReg &= ~QMI_ERR_INTR_EN_DOUBLE_ECC; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien, tmpReg); + break; + case(e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID): + tmpReg = GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien); + if(enable) + tmpReg |= QMI_ERR_INTR_EN_DEQ_FROM_DEF; + else + tmpReg &= ~QMI_ERR_INTR_EN_DEQ_FROM_DEF; + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eien, tmpReg); + break; + case(e_FM_EX_BMI_LIST_RAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + { +#ifdef FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_LIST_RAM_ECC")); + return E_OK; + } +#endif /* FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 */ + tmpReg |= BMI_ERR_INTR_EN_LIST_RAM_ECC; + } + else + tmpReg &= ~BMI_ERR_INTR_EN_LIST_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_BMI_PIPELINE_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + { +#ifdef FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_PIPELINE_ECCBMI_LIST_RAM_ECC")); + return E_OK; + } +#endif /* FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 */ + tmpReg |= BMI_ERR_INTR_EN_PIPELINE_ECC; + } + else + tmpReg &= ~BMI_ERR_INTR_EN_PIPELINE_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_BMI_STATISTICS_RAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + tmpReg |= BMI_ERR_INTR_EN_STATISTICS_RAM_ECC; + else + tmpReg &= ~BMI_ERR_INTR_EN_STATISTICS_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_BMI_DISPATCH_RAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier); + if(enable) + { +#ifdef FM_NO_DISPATCH_RAM_ECC + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Fm, &revInfo); + if (revInfo.majorRev != 4) + { + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_EX_BMI_DISPATCH_RAM_ECC")); + return E_OK; + } +#endif /* FM_NO_DISPATCH_RAM_ECC */ + tmpReg |= BMI_ERR_INTR_EN_DISPATCH_RAM_ECC; + } + else + tmpReg &= ~BMI_ERR_INTR_EN_DISPATCH_RAM_ECC; + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ier, tmpReg); + break; + case(e_FM_EX_IRAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + if(enable) + { + /* enable ECC if not enabled */ + FmEnableRamsEcc(p_Fm); + /* enable ECC interrupts */ + tmpReg |= FPM_IRAM_ECC_ERR_EX_EN; + } + else + { + /* ECC mechanism may be disabled, depending on driver status */ + FmDisableRamsEcc(p_Fm); + tmpReg &= ~FPM_IRAM_ECC_ERR_EX_EN; + } + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrie, tmpReg); + break; + + case(e_FM_EX_MURAM_ECC): + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fmrie); + if(enable) + { + /* enable ECC if not enabled */ + FmEnableRamsEcc(p_Fm); + /* enable ECC interrupts */ + tmpReg |= FPM_MURAM_ECC_ERR_EX_EN; + } + else + { + /* ECC mechanism may be disabled, depending on driver status */ + FmDisableRamsEcc(p_Fm); + tmpReg &= ~FPM_MURAM_ECC_ERR_EX_EN; + } + + WRITE_UINT32(p_Fm->p_FmFpmRegs->fmrie, tmpReg); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_GetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + t_FmIpcRevisionInfo ipcRevInfo; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + + if (p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_REV; + replyLength = sizeof(uint32_t) + sizeof(t_FmRevisionInfo); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(t_FmRevisionInfo))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&ipcRevInfo, reply.replyBody, sizeof(t_FmRevisionInfo)); + p_FmRevisionInfo->majorRev = ipcRevInfo.majorRev; + p_FmRevisionInfo->minorRev = ipcRevInfo.minorRev; + return (t_Error)(reply.error); + } + + /* read revision register 1 */ + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fm_ip_rev_1); + p_FmRevisionInfo->majorRev = (uint8_t)((tmpReg & FPM_REV1_MAJOR_MASK) >> FPM_REV1_MAJOR_SHIFT); + p_FmRevisionInfo->minorRev = (uint8_t)((tmpReg & FPM_REV1_MINOR_MASK) >> FPM_REV1_MINOR_SHIFT); + + return E_OK; +} + +uint32_t FM_GetCounter(t_Handle h_Fm, e_FmCounters counter) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + t_Error err; + uint32_t counterValue; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength, outCounter; + + SANITY_CHECK_RETURN_VALUE(p_Fm, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_Fm->p_FmDriverParam, E_INVALID_STATE, 0); + + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_GET_COUNTER; + memcpy(msg.msgBody, (uint8_t *)&counter, sizeof(uint32_t)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(counterValue), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy((uint8_t*)&outCounter, reply.replyBody, sizeof(uint32_t)); + + return outCounter; + } + + switch(counter) + { + case(e_FM_COUNTERS_ENQ_TOTAL_FRAME): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_etfc); + case(e_FM_COUNTERS_DEQ_TOTAL_FRAME): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dtfc); + case(e_FM_COUNTERS_DEQ_0): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc0); + case(e_FM_COUNTERS_DEQ_1): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc1); + case(e_FM_COUNTERS_DEQ_2): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc2); + case(e_FM_COUNTERS_DEQ_3): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc3); + case(e_FM_COUNTERS_DEQ_FROM_DEFAULT): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfdc); + case(e_FM_COUNTERS_DEQ_FROM_CONTEXT): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfcc); + case(e_FM_COUNTERS_DEQ_FROM_FD): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dffc); + case(e_FM_COUNTERS_DEQ_CONFIRM): + return GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_dcc); + case(e_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT): + return GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsefrc); + case(e_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT): + return GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsqfrc); + case(e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT): + return GET_UINT32(p_Fm->p_FmDmaRegs->fmdmssrc); + default: + break; + } + /* should never get here */ + ASSERT_COND(FALSE); + + return 0; +} + +t_Error FM_ModifyCounter(t_Handle h_Fm, e_FmCounters counter, uint32_t val) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + /* When applicable (when there is an 'enable counters' bit, + check that counters are enabled */ + switch(counter) + { + case(e_FM_COUNTERS_ENQ_TOTAL_FRAME): + case(e_FM_COUNTERS_DEQ_TOTAL_FRAME): + case(e_FM_COUNTERS_DEQ_0): + case(e_FM_COUNTERS_DEQ_1): + case(e_FM_COUNTERS_DEQ_2): + case(e_FM_COUNTERS_DEQ_3): + case(e_FM_COUNTERS_DEQ_FROM_DEFAULT): + case(e_FM_COUNTERS_DEQ_FROM_CONTEXT): + case(e_FM_COUNTERS_DEQ_FROM_FD): + case(e_FM_COUNTERS_DEQ_CONFIRM): + if(!(GET_UINT32(p_Fm->p_FmQmiRegs->fmqm_gc) & QMI_CFG_EN_COUNTERS)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + break; + } + + /* Set counter */ + switch(counter) + { + case(e_FM_COUNTERS_ENQ_TOTAL_FRAME): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_etfc, val); + break; + case(e_FM_COUNTERS_DEQ_TOTAL_FRAME): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dtfc, val); + break; + case(e_FM_COUNTERS_DEQ_0): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc0, val); + break; + case(e_FM_COUNTERS_DEQ_1): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc1, val); + break; + case(e_FM_COUNTERS_DEQ_2): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc2, val); + break; + case(e_FM_COUNTERS_DEQ_3): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dc3, val); + break; + case(e_FM_COUNTERS_DEQ_FROM_DEFAULT): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfdc, val); + break; + case(e_FM_COUNTERS_DEQ_FROM_CONTEXT): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dfcc, val); + break; + case(e_FM_COUNTERS_DEQ_FROM_FD): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dffc, val); + break; + case(e_FM_COUNTERS_DEQ_CONFIRM): + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_dcc, val); + break; + case(e_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT): + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsefrc, val); + break; + case(e_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT): + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmsqfrc, val); + break; + case(e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT): + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmssrc, val); + break; + default: + break; + } + + return E_OK; +} + +void FM_SetDmaEmergency(t_Handle h_Fm, e_FmDmaMuramPort muramPort, bool enable) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t bitMask; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + bitMask = (uint32_t)((muramPort==e_FM_DMA_MURAM_PORT_WRITE) ? DMA_MODE_EMERGENCY_WRITE : DMA_MODE_EMERGENCY_READ); + + if(enable) + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr) | bitMask); + else /* disable */ + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr) & ~bitMask); + + return; +} + +void FM_SetDmaExtBusPri(t_Handle h_Fm, e_FmDmaExtBusPri pri) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + WRITE_UINT32(p_Fm->p_FmDmaRegs->fmdmmr, GET_UINT32(p_Fm->p_FmDmaRegs->fmdmmr) | ((uint32_t)pri << DMA_MODE_BUS_PRI_SHIFT) ); + + return; +} + +void FM_GetDmaStatus(t_Handle h_Fm, t_FmDmaStatus *p_FmDmaStatus) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + t_Error err; + t_FmIpcMsg msg; + t_FmIpcReply reply; + uint32_t replyLength; + t_FmIpcDmaStatus ipcDmaStatus; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_DMA_STAT; + replyLength = sizeof(uint32_t) + sizeof(t_FmIpcDmaStatus); + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + if (replyLength != (sizeof(uint32_t) + sizeof(t_FmIpcDmaStatus))) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return; + } + memcpy((uint8_t*)&ipcDmaStatus, reply.replyBody, sizeof(t_FmIpcDmaStatus)); + + p_FmDmaStatus->cmqNotEmpty = (bool)ipcDmaStatus.boolCmqNotEmpty; /**< Command queue is not empty */ + p_FmDmaStatus->busError = (bool)ipcDmaStatus.boolBusError; /**< Bus error occurred */ + p_FmDmaStatus->readBufEccError = (bool)ipcDmaStatus.boolReadBufEccError; /**< Double ECC error on buffer Read */ + p_FmDmaStatus->writeBufEccSysError =(bool)ipcDmaStatus.boolWriteBufEccSysError; /**< Double ECC error on buffer write from system side */ + p_FmDmaStatus->writeBufEccFmError = (bool)ipcDmaStatus.boolWriteBufEccFmError; /**< Double ECC error on buffer write from FM side */ + return; + } + + tmpReg = GET_UINT32(p_Fm->p_FmDmaRegs->fmdmsr); + + p_FmDmaStatus->cmqNotEmpty = (bool)(tmpReg & DMA_STATUS_CMD_QUEUE_NOT_EMPTY); + p_FmDmaStatus->busError = (bool)(tmpReg & DMA_STATUS_BUS_ERR); + p_FmDmaStatus->readBufEccError = (bool)(tmpReg & DMA_STATUS_READ_ECC); + p_FmDmaStatus->writeBufEccSysError = (bool)(tmpReg & DMA_STATUS_SYSTEM_WRITE_ECC); + p_FmDmaStatus->writeBufEccFmError = (bool)(tmpReg & DMA_STATUS_FM_WRITE_ECC); + return; +} + +t_Error FM_ForceIntr (t_Handle h_Fm, e_FmExceptions exception) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + switch(exception) + { + case e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif, QMI_ERR_INTR_EN_DEQ_FROM_DEF); + break; + case e_FM_EX_QMI_SINGLE_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_SINGLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_if, QMI_INTR_EN_SINGLE_ECC); + break; + case e_FM_EX_QMI_DOUBLE_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_QMI_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmQmiRegs->fmqm_eif, QMI_ERR_INTR_EN_DOUBLE_ECC); + break; + case e_FM_EX_BMI_LIST_RAM_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_LIST_RAM_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_LIST_RAM_ECC); + break; + case e_FM_EX_BMI_PIPELINE_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_PIPELINE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_PIPELINE_ECC); + break; + case e_FM_EX_BMI_STATISTICS_RAM_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_STATISTICS_RAM_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_STATISTICS_RAM_ECC); + break; + case e_FM_EX_BMI_DISPATCH_RAM_ECC: + if (!(p_Fm->p_FmStateStruct->exceptions & FM_EX_BMI_DISPATCH_RAM_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_Fm->p_FmBmiRegs->fmbm_ifr, BMI_ERR_INTR_EN_DISPATCH_RAM_ECC); + break; + default: + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception may not be forced")); + } + + return E_OK; +} + +void FM_Resume(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm*)h_Fm; + uint32_t tmpReg; + + SANITY_CHECK_RETURN(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + if (p_Fm->guestId == NCSW_MASTER_ID) + { + tmpReg = GET_UINT32(p_Fm->p_FmFpmRegs->fpmem); + /* clear tmpReg event bits in order not to clear standing events */ + tmpReg &= ~(FPM_EV_MASK_DOUBLE_ECC | FPM_EV_MASK_STALL | FPM_EV_MASK_SINGLE_ECC); + WRITE_UINT32(p_Fm->p_FmFpmRegs->fpmem, tmpReg | FPM_EV_MASK_RELEASE_FM); + } + else + ASSERT_COND(0); /* TODO */ +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_DumpRegs(t_Handle h_Fm) +{ + t_Fm *p_Fm = (t_Fm *)h_Fm; + uint8_t i = 0; + t_Error err; + t_FmIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); + + + if(p_Fm->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_DUMP_REGS; + if ((err = XX_IpcSendMessage(p_Fm->h_IpcSessions[0], + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + return E_OK; + } + + + DUMP_SUBTITLE(("\n")); + + DUMP_TITLE(p_Fm->p_FmFpmRegs, ("FmFpmRegs Regs")); + + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtnc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmpr); + DUMP_VAR(p_Fm->p_FmFpmRegs,brkc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmflc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmdis1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmdis2); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmepi); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmrie); + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfpfcev, ("fmfpfcev")); + DUMP_SUBSTRUCT_ARRAY(i, 4) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfpfcev[i], sizeof(uint32_t)); + } + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfpfcee, ("fmfpfcee")); + DUMP_SUBSTRUCT_ARRAY(i, 4) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfpfcee[i], sizeof(uint32_t)); + } + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsc1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsc2); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsp); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmtsf); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmrcr); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmextc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmext1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmext2); + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fpmdrd, ("fpmdrd")); + DUMP_SUBSTRUCT_ARRAY(i, 16) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fpmdrd[i], sizeof(uint32_t)); + } + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmdra); + DUMP_VAR(p_Fm->p_FmFpmRegs,fm_ip_rev_1); + DUMP_VAR(p_Fm->p_FmFpmRegs,fm_ip_rev_2); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmrstc); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmcld); + DUMP_VAR(p_Fm->p_FmFpmRegs,fmnpi); + DUMP_VAR(p_Fm->p_FmFpmRegs,fpmem); + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fpmcev, ("fpmcev")); + DUMP_SUBSTRUCT_ARRAY(i, 4) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fpmcev[i], sizeof(uint32_t)); + } + + DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfp_ps, ("fmfp_ps")); + DUMP_SUBSTRUCT_ARRAY(i, 64) + { + DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_ps[i], sizeof(uint32_t)); + } + + + DUMP_TITLE(p_Fm->p_FmDmaRegs, ("p_FmDmaRegs Regs")); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmmr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmhy); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsetr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtah); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtal); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtcid); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmra); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmrd); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmwcr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmebcr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmccqdr); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmccqvr1); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmccqvr2); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmcqvr3); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmcqvr4); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmcqvr5); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsefrc); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsqfrc); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmssrc); + DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmdcr); + + DUMP_TITLE(&p_Fm->p_FmDmaRegs->fmdmplr, ("fmdmplr")); + + DUMP_SUBSTRUCT_ARRAY(i, FM_SIZE_OF_LIODN_TABLE/2) + { + DUMP_MEMORY(&p_Fm->p_FmDmaRegs->fmdmplr[i], sizeof(uint32_t)); + } + + DUMP_TITLE(p_Fm->p_FmBmiRegs, ("p_FmBmiRegs COMMON Regs")); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_init); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_cfg1); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_cfg2); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_ievr); + DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_ier); + + DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_arb, ("fmbm_arb")); + DUMP_SUBSTRUCT_ARRAY(i, 8) + { + DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_arb[i], sizeof(uint32_t)); + } + + + DUMP_TITLE(p_Fm->p_FmQmiRegs, ("p_FmQmiRegs COMMON Regs")); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_gc); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eie); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eien); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eif); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ie); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ien); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_if); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_gs); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ts); + DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_etfc); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.h @@ -0,0 +1,482 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File tgec.h + + @Description FM 10G MAC ... +*//***************************************************************************/ +#ifndef __TGEC_H +#define __TGEC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "tgec_mii_acc.h" +#include "fm_mac.h" + + +/* Interrupt Mask Register (IMASK) */ +#define IMASK_MDIO_SCAN_EVENTMDIO 0x00010000 /* MDIO_SCAN_EVENTMDIO scan event interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_MDIO_CMD_CMPL 0x00008000 /* 16 MDIO_CMD_CMPL MDIO command completion interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_REM_FAULT 0x00004000 /* 17 REM_FAULT Remote fault interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_LOC_FAULT 0x00002000 /* 18 LOC_FAULT Local fault interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_1TX_ECC_ER 0x00001000 /* 19 TX_ECC_ER Transmit frame ECC error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_TX_FIFO_UNFL 0x00000800 /* 20 TX_FIFO_UNFL Transmit FIFO underflow interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_TX_FIFO_OVFL 0x00000400 /* 21 TX_FIFO_OVFL Transmit FIFO overflow interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_TX_ER 0x00000200 /* 22 TX_ER Transmit frame error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_FIFO_OVFL 0x00000100 /* 23 RX_FIFO_OVFL Receive FIFO overflow interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_ECC_ER 0x00000080 /* 24 RX_ECC_ER Receive frame ECC error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_JAB_FRM 0x00000040 /* 25 RX_JAB_FRM Receive jabber frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_OVRSZ_FRM 0x00000020 /* 26 RX_OVRSZ_FRM Receive oversized frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_RUNT_FRM 0x00000010 /* 27 RX_RUNT_FRM Receive runt frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_FRAG_FRM 0x00000008 /* 28 RX_FRAG_FRM Receive fragment frame interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_LEN_ER 0x00000004 /* 29 RX_LEN_ER Receive payload length error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_CRC_ER 0x00000002 /* 30 RX_CRC_ER Receive CRC error interrupt mask. + * 0 masked + * 1 enabled + */ +#define IMASK_RX_ALIGN_ER 0x00000001 /* 31 RX_ALIGN_ER Receive alignment error interrupt mask. + * 0 masked + * 1 enabled + */ + +#define EVENTS_MASK ((uint32_t)(IMASK_MDIO_SCAN_EVENTMDIO | \ + IMASK_MDIO_CMD_CMPL | \ + IMASK_REM_FAULT | \ + IMASK_LOC_FAULT | \ + IMASK_1TX_ECC_ER | \ + IMASK_TX_FIFO_UNFL | \ + IMASK_TX_FIFO_OVFL | \ + IMASK_TX_ER | \ + IMASK_RX_FIFO_OVFL | \ + IMASK_RX_ECC_ER | \ + IMASK_RX_JAB_FRM | \ + IMASK_RX_OVRSZ_FRM | \ + IMASK_RX_RUNT_FRM | \ + IMASK_RX_FRAG_FRM | \ + IMASK_RX_LEN_ER | \ + IMASK_RX_CRC_ER | \ + IMASK_RX_ALIGN_ER)) + +#define GET_EXCEPTION_FLAG(bitMask, exception) switch(exception){ \ + case e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO: \ + bitMask = IMASK_MDIO_SCAN_EVENTMDIO; break; \ + case e_FM_MAC_EX_10G_MDIO_CMD_CMPL: \ + bitMask = IMASK_MDIO_CMD_CMPL ; break; \ + case e_FM_MAC_EX_10G_REM_FAULT: \ + bitMask = IMASK_REM_FAULT ; break; \ + case e_FM_MAC_EX_10G_LOC_FAULT: \ + bitMask = IMASK_LOC_FAULT ; break; \ + case e_FM_MAC_EX_10G_1TX_ECC_ER: \ + bitMask = IMASK_1TX_ECC_ER ; break; \ + case e_FM_MAC_EX_10G_TX_FIFO_UNFL: \ + bitMask = IMASK_TX_FIFO_UNFL ; break; \ + case e_FM_MAC_EX_10G_TX_FIFO_OVFL: \ + bitMask = IMASK_TX_FIFO_OVFL ; break; \ + case e_FM_MAC_EX_10G_TX_ER: \ + bitMask = IMASK_TX_ER ; break; \ + case e_FM_MAC_EX_10G_RX_FIFO_OVFL: \ + bitMask = IMASK_RX_FIFO_OVFL ; break; \ + case e_FM_MAC_EX_10G_RX_ECC_ER: \ + bitMask = IMASK_RX_ECC_ER ; break; \ + case e_FM_MAC_EX_10G_RX_JAB_FRM: \ + bitMask = IMASK_RX_JAB_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_OVRSZ_FRM: \ + bitMask = IMASK_RX_OVRSZ_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_RUNT_FRM: \ + bitMask = IMASK_RX_RUNT_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_FRAG_FRM: \ + bitMask = IMASK_RX_FRAG_FRM ; break; \ + case e_FM_MAC_EX_10G_RX_LEN_ER: \ + bitMask = IMASK_RX_LEN_ER ; break; \ + case e_FM_MAC_EX_10G_RX_CRC_ER: \ + bitMask = IMASK_RX_CRC_ER ; break; \ + case e_FM_MAC_EX_10G_RX_ALIGN_ER: \ + bitMask = IMASK_RX_ALIGN_ER ; break; \ + default: bitMask = 0;break;} + + +/* Default Config Params */ +#define DEFAULT_wanModeEnable FALSE +#define DEFAULT_promiscuousModeEnable FALSE + + +#define DEFAULT_pauseForwardEnable FALSE +#define DEFAULT_pauseIgnore FALSE +#define DEFAULT_txAddrInsEnable FALSE + +#define DEFAULT_loopbackEnable FALSE +#define DEFAULT_cmdFrameEnable FALSE +#define DEFAULT_rxErrorDiscard FALSE +#define DEFAULT_phyTxenaOn FALSE +#define DEFAULT_sendIdleEnable FALSE +#define DEFAULT_noLengthCheckEnable TRUE +#define DEFAULT_lgthCheckNostdr FALSE +#define DEFAULT_timeStampEnable FALSE +#define DEFAULT_rxSfdAny FALSE +#define DEFAULT_rxPblFwd FALSE +#define DEFAULT_txPblFwd FALSE +#define DEFAULT_txIpgLength 12 + +#define DEFAULT_maxFrameLength 0x600 + +#define DEFAULT_debugMode FALSE +#define DEFAULT_pauseTime 0xf000 +#define DEFAULT_imask 0xf000 +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +#define DEFAULT_skipFman11Workaround FALSE +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +#define DEFAULT_exceptions ((uint32_t)(IMASK_MDIO_SCAN_EVENTMDIO | \ + IMASK_REM_FAULT | \ + IMASK_LOC_FAULT | \ + IMASK_1TX_ECC_ER | \ + IMASK_TX_FIFO_UNFL | \ + IMASK_TX_FIFO_OVFL | \ + IMASK_TX_ER | \ + IMASK_RX_FIFO_OVFL | \ + IMASK_RX_ECC_ER | \ + IMASK_RX_JAB_FRM | \ + IMASK_RX_OVRSZ_FRM | \ + IMASK_RX_RUNT_FRM | \ + IMASK_RX_FRAG_FRM | \ + IMASK_RX_CRC_ER | \ + IMASK_RX_ALIGN_ER)) + +#define MAX_PACKET_ALIGNMENT 31 +#define MAX_INTER_PACKET_GAP 0x7f +#define MAX_INTER_PALTERNATE_BEB 0x0f +#define MAX_RETRANSMISSION 0x0f +#define MAX_COLLISION_WINDOW 0x03ff + + +#define TGEC_NUM_OF_PADDRS 1 /* number of pattern match registers (entries) */ + +#define GROUP_ADDRESS 0x0000010000000000LL /* Group address bit indication */ + +#define HASH_TABLE_SIZE 512 /* Hash table size (= 32 bits * 8 regs) */ + +#define TGEC_TO_MII_OFFSET 0x1030 /* Offset from the MEM map to the MDIO mem map */ + +/* 10-gigabit Ethernet MAC Controller ID (10GEC_ID) */ +#define TGEC_ID_ID 0xffff0000 +#define TGEC_ID_MAC_VERSION 0x0000FF00 +#define TGEC_ID_MAC_REV 0x000000ff + +/* Command and Configuration Register (COMMAND_CONFIG) */ +#define CMD_CFG_TX_PBL_FWD 0x00800000 /* 08 Transmit Preamble Forwarding (custom preamble). + */ +#define CMD_CFG_RX_PBL_FWD 0x00400000 /* 09 Receive Preamble Forwarding (custom preamble). + */ +#define RX_SFD_ANY 0x00200000 /* 10 Enables, when set, that any character is allowed at the SFD position of the preamble and the frame will be accepted. + */ +#define CMD_CFG_EN_TIMESTAMP 0x00100000 /* 11 EN_TIMESTAMP IEEE 1588 timeStamp functionality control. + * 0 disabled + * 1 enabled + */ +#define CMD_CFG_TX_ADDR_INS_SEL 0x00080000 /* 12 TX_ADDR_INS_SEL Transmit MAC address select + * 0 insert using first MAC address + * 1 insert using second MAC address + */ +#define CMD_CFG_LEN_CHK_NOSTDR 0x00040000 /* 13 LEN_CHK_NOSTDR + */ +#define CMD_CFG_NO_LEN_CHK 0x00020000 /* 14 NO_LEN_CHK Payload length check disable + * 0 MAC compares the frame payload length with the frame length/type field. + * 1 Payload length check is disabled. + */ +#define CMD_CFG_SEND_IDLE 0x00010000 /* 15 SEND_IDLE Force idle generation + * 0 Normal operation. + * 1 MAC permanently sends XGMII idle sequences even when faults are received. + */ +#define CMD_CFG_PHY_TX_EN 0x00008000 /* 16 PHY_TX_EN PHY transmit enable + * 0 PHY transmit is disabled. + * 1 PHY transmit is enabled. + */ +#define CMD_CFG_RX_ER_DISC 0x00004000 /* 17 RX_ER_DISC Receive error frame discard enable + * 0 Received error frames are processed. + * 1 Any frame received with an error is discarded. + */ +#define CMD_CFG_CMD_FRM_EN 0x00002000 /* 18 CMD_FRM_EN Command frame reception enable + * 0 Only Pause frames are accepted (all other command frames are rejected). + * 1 All command frames are accepted. + */ +#define CMD_CFG_STAT_CLR 0x00001000 /* 19 STAT_CLR Clear statistics + * 0 Normal operations. + * 1 All statistics counters are cleared. + */ +#define CMD_CFG_LOOPBACK_EN 0x00000400 /* 21 LOOPBAC_EN PHY interface loopback enable + * 0 Configure PHY for normal operation. + * 1 Configure PHY for loopback mode. + */ +#define CMD_CFG_TX_ADDR_INS 0x00000200 /* 22 TX_ADDR_INS Transmit source MAC address insertion + * 0 MAC transmits the source MAC address unmodified. + * 1 MAC overwrites the source MAC address with address specified by COMMAND_CONFIG[TX_ADDR_INS_SEL]. + */ +#define CMD_CFG_PAUSE_IGNORE 0x00000100 /* 23 PAUSE_IGNORE Ignore Pause frame quanta + * 0 MAC stops transmit process for the duration specified in the Pause frame quanta of a received Pause frame. + * 1 MAC ignores received Pause frames. + */ +#define CMD_CFG_PAUSE_FWD 0x00000080 /* 24 PAUSE_FWD Terminate/forward received Pause frames + * 0 MAC terminates and discards received Pause frames. + * 1 MAC forwards Pause frames to the user application. + */ +#define CMD_CFG_PROMIS_EN 0x00000010 /* 27 PROMIS_EN Promiscuous operation enable + * 0 Unicast frames with a destination address not matching the core MAC address (defined by registers, MAC_ADDR_0 and MAC_ADDR_1) are rejected. + * 1 All frames are received without any MAC address filtering. + */ +#define CMD_CFG_WAN_MODE 0x00000008 /* 28 WAN_MODE WAN mode enable + * 0 Configure MAC for LAN mode. + * 1 Configure MAC for WAN mode. + */ +#define CMD_CFG_RX_EN 0x00000002 /* 30 RX_EN MAC receive path enable + * 0 MAC receive path is disabled + * 1 MAC receive path is enabled. + */ +#define CMD_CFG_TX_EN 0x00000001 /* 31 TX_EN MAC transmit path enable + * 0 MAC transmit path is disabled + * 1 MAC transmit path is enabled. + */ + +/* Hashtable Control Register (HASHTABLE_CTRL) */ +#define HASH_CTRL_MCAST_SHIFT 23 + +#define HASH_CTRL_MCAST_RD 0x00000400 /* 22 MCAST_READ Entry Multicast frame reception for the hash entry. + * 0 disabled + * 1 enabled + */ +#define HASH_CTRL_MCAST_EN 0x00000200 /* 22 MCAST_EN Multicast frame reception for the hash entry. + * 0 disabled + * 1 enabled + */ +#define HASH_ADDR_MASK 0x000001ff /* 23-31 HASH_ADDR Hash table address code. + */ + +/* Transmit Inter-Packet Gap Length Register (TX_IPG_LENGTH) */ +#define TX_IPG_LENGTH_MASK 0x000003ff + + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/* + * 10G memory map + */ +typedef _Packed struct { +/* 10Ge General Control and Status */ + volatile uint32_t tgec_id; /* 0x000 10GEC_ID - Controller ID register */ + volatile uint32_t scratch; /* 0x004 */ + volatile uint32_t cmd_conf_ctrl; /* 0x008 COMMAND_CONFIG - Control and configuration register */ + volatile uint32_t mac_addr_0; /* 0x00C MAC_ADDR_0 - Lower 32 bits of the first 48-bit MAC address */ + volatile uint32_t mac_addr_1; /* 0x010 MAC_ADDR_1 - Upper 16 bits of the first 48-bit MAC address */ + volatile uint32_t maxfrm; /* 0x014 MAXFRM - Maximum frame length register */ + volatile uint32_t pause_quant; /* 0x018 PAUSE_QUANT - Pause quanta register */ + volatile uint32_t rx_fifo_sections; /* 0x01c */ + volatile uint32_t tx_fifo_sections; /* 0x020 */ + volatile uint32_t rx_fifo_almost_f_e; /* 0x024 */ + volatile uint32_t tx_fifo_almost_f_e; /* 0x028 */ + volatile uint32_t hashtable_ctrl; /* 0x02C HASHTABLE_CTRL - Hash table control register */ + volatile uint32_t mdio_cfg_status; /* 0x030 */ + volatile uint32_t mdio_command; /* 0x034 */ + volatile uint32_t mdio_data; /* 0x038 */ + volatile uint32_t mdio_regaddr; /* 0x03c */ + volatile uint32_t status; /* 0x040 */ + volatile uint32_t tx_ipg_len; /* 0x044 TX_IPG_LENGTH - Transmitter inter-packet-gap register */ + volatile uint32_t mac_addr_2; /* 0x048 MAC_ADDR_2 - Lower 32 bits of the second 48-bit MAC address */ + volatile uint32_t mac_addr_3; /* 0x04C MAC_ADDR_3 - Upper 16 bits of the second 48-bit MAC address */ + volatile uint32_t rx_fifo_ptr_rd; /* 0x050 */ + volatile uint32_t rx_fifo_ptr_wr; /* 0x054 */ + volatile uint32_t tx_fifo_ptr_rd; /* 0x058 */ + volatile uint32_t tx_fifo_ptr_wr; /* 0x05c */ + volatile uint32_t imask; /* 0x060 IMASK - Interrupt mask register */ + volatile uint32_t ievent; /* 0x064 IEVENT - Interrupt event register */ + volatile uint32_t udp_port; /* 0x068 Defines a UDP Port number. When an UDP/IP frame is received with a matching UDP destination port, the receive status indication pin ff_rx_ts_frm will be asserted.*/ + volatile uint32_t type_1588v2; /* 0x06c Type field for 1588v2 layer 2 frames. IEEE1588 defines the type 0x88f7 for 1588 frames. */ + volatile uint32_t TENGEC_RESERVED4[4]; +/*10Ge Statistics Counter */ + volatile uint64_t TFRM; /* 80 aFramesTransmittedOK */ + volatile uint64_t RFRM; /* 88 aFramesReceivedOK */ + volatile uint64_t RFCS; /* 90 aFrameCheckSequenceErrors */ + volatile uint64_t RALN; /* 98 aAlignmentErrors */ + volatile uint64_t TXPF; /* A0 aPAUSEMACCtrlFramesTransmitted */ + volatile uint64_t RXPF; /* A8 aPAUSEMACCtrlFramesReceived */ + volatile uint64_t RLONG; /* B0 aFrameTooLongErrors */ + volatile uint64_t RFLR; /* B8 aInRangeLengthErrors */ + volatile uint64_t TVLAN; /* C0 VLANTransmittedOK */ + volatile uint64_t RVLAN; /* C8 VLANReceivedOK */ + volatile uint64_t TOCT; /* D0 ifOutOctets */ + volatile uint64_t ROCT; /* D8 ifInOctets */ + volatile uint64_t RUCA; /* E0 ifInUcastPkts */ + volatile uint64_t RMCA; /* E8 ifInMulticastPkts */ + volatile uint64_t RBCA; /* F0 ifInBroadcastPkts */ + volatile uint64_t TERR; /* F8 ifOutErrors */ + volatile uint32_t TENGEC_RESERVED6[2]; + volatile uint64_t TUCA; /* 108 ifOutUcastPkts */ + volatile uint64_t TMCA; /* 110 ifOutMulticastPkts */ + volatile uint64_t TBCA; /* 118 ifOutBroadcastPkts */ + volatile uint64_t RDRP; /* 120 etherStatsDropEvents */ + volatile uint64_t REOCT; /* 128 etherStatsOctets */ + volatile uint64_t RPKT; /* 130 etherStatsPkts */ + volatile uint64_t TRUND; /* 138 etherStatsUndersizePkts */ + volatile uint64_t R64; /* 140 etherStatsPkts64Octets */ + volatile uint64_t R127; /* 148 etherStatsPkts65to127Octets */ + volatile uint64_t R255; /* 150 etherStatsPkts128to255Octets */ + volatile uint64_t R511; /* 158 etherStatsPkts256to511Octets */ + volatile uint64_t R1023; /* 160 etherStatsPkts512to1023Octets */ + volatile uint64_t R1518; /* 168 etherStatsPkts1024to1518Octets */ + volatile uint64_t R1519X; /* 170 etherStatsPkts1519toX */ + volatile uint64_t TROVR; /* 178 etherStatsOversizePkts */ + volatile uint64_t TRJBR; /* 180 etherStatsJabbers */ + volatile uint64_t TRFRG; /* 188 etherStatsFragments */ + volatile uint64_t RERR; /* 190 ifInErrors */ +} _PackedType t_TgecMemMap; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct { + bool wanModeEnable; /* WAN Mode Enable. Sets WAN mode (1) or LAN mode (0, default) of operation. */ + bool promiscuousModeEnable; /* Enables MAC promiscuous operation. When set to '1', all frames are received without any MAC address filtering, when set to '0' (Reset value) Unicast Frames with a destination address not matching the Core MAC Address (MAC Address programmed in Registers MAC_ADDR_0 and MAC_ADDR_1 or the MAC address programmed in Registers MAC_ADDR_2 and MAC_ADDR_3 ) are rejected. */ + bool pauseForwardEnable; /* Terminate / Forward Pause Frames. If set to '1' pause frames are forwarded to the user application. When set to '0' (Reset value) pause frames are terminated and discarded within the MAC. */ + bool pauseIgnore; /* Ignore Pause Frame Quanta. If set to '1' received pause frames are ignored by the MAC. When set to '0' (Reset value) the transmit process is stopped for the amount of time specified in the pause quanta received within a pause frame. */ + bool txAddrInsEnable; /* Set Source MAC Address on Transmit. + If set to '1' the MAC overwrites the source MAC address received from the Client Interface with one of the MAC addresses (Refer to section 10.4) + If set to '0' (Reset value), the source MAC address from the Client Interface is transmitted unmodified to the line. */ + bool loopbackEnable; /* PHY Interface Loopback. When set to '1', the signal loop_ena is set to '1', when set to '0' (Reset value) the signal loop_ena is set to '0'. */ + bool cmdFrameEnable; /* Enables reception of all command frames. When set to '1' all Command Frames are accepted, when set to '0' (Reset Value) only Pause Frames are accepted and all other Command Frames are rejected. */ + bool rxErrorDiscard; /* Receive Errored Frame Discard Enable. When set to 1, any frame received with an error is discarded in the Core and not forwarded to the Client interface. When set to 0 (Reset value), errored Frames are forwarded to the Client interface with ff_rx_err asserted. */ + bool phyTxenaOn; /* PHY Transmit Enable. When set to '1', the signal phy_txena is set to '1', when set to '0' (Reset value) the signal phy_txena is set to '0' */ + bool sendIdleEnable; /* Force Idle Generation. When set to '1', the MAC permanently sends XGMII Idle sequences even when faults are received. */ + bool noLengthCheckEnable; /* Payload Length Check Disable. When set to 0 (Reset value), the Core checks the frame's payload length with the Frame Length/Type field, when set to 1, the payload length check is disabled. */ + bool lgthCheckNostdr; /* The Core interprets the Length/Type field differently depending on the value of this Bit */ + bool timeStampEnable; /* This bit selects between enabling and disabling the IEEE 1588 functionality. + 1: IEEE 1588 is enabled. + 0: IEEE 1588 is disabled. */ + bool rxSfdAny; /* Enables, when set, that any character is allowed at the SFD position of the preamble and the frame will be accepted. + If cleared (default) the frame is accepted only if the 8th byte of the preamble contains the SFD value 0xd5. If another value is received, the frame is discarded and the alignment error counter increments. */ + bool rxPblFwd; /* Receive Preamble Forwarding (custom preamble). + If set, the first word (ff_rx_sop) of every received frame contains the preamble of the frame. The frame data starts with the 2nd word from the FIFO. + If the bit is cleared (default) the preamble is removed from the frame before it is written into the receive FIFO. */ + bool txPblFwd; /* Transmit Preamble Forwarding (custom preamble). + If set, the first word written into the TX FIFO is considered as frame preamble. The MAC will not add a preamble in front of the frame. Note that bits 7:0 of the preamble word will still be overwritten with the XGMII start character upon transmission. + If cleared (default) the MAC */ + uint32_t txIpgLength; /*Transmit Inter-Packet-Gap (IPG) value. + A 6-bit value: Depending on LAN or WAN mode of operation (see COMMAND_CONFIG, 19.2.1 page 91) the value has the following meaning: + - LAN Mode: Number of octets in steps of 4. Valid values are 8, 12, 16, ... 100. DIC is fully supported (see 10.6.1 page 49) for any setting. A default of 12 (reset value) must be set to conform to IEEE802.3ae. Warning: When set to 8, PCS layers may not be able to perform clock rate compensation. + - WAN Mode: Stretch factor. Valid values are 4..15. The stretch factor is calculated as (value+1)*8. A default of 12 (reset value) must be set to conform to IEEE 802.3ae (i.e. 13*8=104). A larger value shrinks the IPG (increasing bandwidth). */ +/*.. */ + uint16_t maxFrameLength; + bool debugMode; + uint16_t pauseTime; +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + bool skipFman11Workaround; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ +} t_TgecDriverParam; + +typedef struct { + t_FmMacControllerDriver fmMacControllerDriver; /**< Upper Mac control block */ + t_Handle h_App; /**< Handle to the upper layer application */ + t_TgecMemMap *p_MemMap; /**< pointer to 10G memory mapped registers. */ + t_TgecMiiAccessMemMap *p_MiiMemMap; /**< pointer to MII memory mapped registers. */ + uint64_t addr; /**< MAC address of device; */ + e_EnetMode enetMode; /**< Ethernet physical interface */ + t_FmMacExceptionCallback *f_Exception; + int mdioIrq; + t_FmMacExceptionCallback *f_Event; + bool indAddrRegUsed[TGEC_NUM_OF_PADDRS]; /**< Whether a particular individual address recognition register is being used */ + uint64_t paddr[TGEC_NUM_OF_PADDRS]; /**< MAC address for particular individual address recognition register */ + uint8_t numOfIndAddrInRegs; /**< Number of individual addresses in registers for this station. */ + t_EthHash *p_MulticastAddrHash; /**< pointer to driver's global address hash table */ + t_EthHash *p_UnicastAddrHash; /**< pointer to driver's individual address hash table */ + bool debugMode; + uint8_t macId; + uint32_t exceptions; + t_TgecDriverParam *p_TgecDriverParam; +} t_Tgec; + + +t_Error TGEC_MII_WritePhyReg(t_Handle h_Tgec, uint8_t phyAddr, uint8_t reg, uint16_t data); +t_Error TGEC_MII_ReadPhyReg(t_Handle h_Tgec, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + + +#endif /* __TGEC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec.c @@ -0,0 +1,1268 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File tgec.c + + @Description FM 10G MAC ... +*//***************************************************************************/ + +#include "std_ext.h" +#include "string_ext.h" +#include "error_ext.h" +#include "xx_ext.h" +#include "endian_ext.h" +#include "crc_mac_addr_ext.h" +#include "debug_ext.h" + +#include "fm_common.h" +#include "tgec.h" + + +/*****************************************************************************/ +/* Internal routines */ +/*****************************************************************************/ + +static t_Error CheckInitParameters(t_Tgec *p_Tgec) +{ + if(ENET_SPEED_FROM_MODE(p_Tgec->enetMode) < e_ENET_SPEED_10000) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet 10G MAC driver only support 10G speed")); +#if (FM_MAX_NUM_OF_10G_MACS > 0) + if(p_Tgec->macId >= FM_MAX_NUM_OF_10G_MACS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("macId of 10G can not be greater than 0")); +#endif + if(p_Tgec->addr == 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet 10G MAC Must have a valid MAC Address")); + if(!p_Tgec->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("uninitialized f_Exception")); + if(!p_Tgec->f_Event) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("uninitialized f_Event")); + return E_OK; +} + +/* .............................................................................. */ + +static void SetDefaultParam(t_TgecDriverParam *p_TgecDriverParam) +{ + p_TgecDriverParam->wanModeEnable = DEFAULT_wanModeEnable; + p_TgecDriverParam->promiscuousModeEnable = DEFAULT_promiscuousModeEnable; + p_TgecDriverParam->pauseForwardEnable = DEFAULT_pauseForwardEnable; + p_TgecDriverParam->pauseIgnore = DEFAULT_pauseIgnore; + p_TgecDriverParam->txAddrInsEnable = DEFAULT_txAddrInsEnable; + + p_TgecDriverParam->loopbackEnable = DEFAULT_loopbackEnable; + p_TgecDriverParam->cmdFrameEnable = DEFAULT_cmdFrameEnable; + p_TgecDriverParam->rxErrorDiscard = DEFAULT_rxErrorDiscard; + p_TgecDriverParam->phyTxenaOn = DEFAULT_phyTxenaOn; + p_TgecDriverParam->sendIdleEnable = DEFAULT_sendIdleEnable; + p_TgecDriverParam->noLengthCheckEnable = DEFAULT_noLengthCheckEnable; + p_TgecDriverParam->lgthCheckNostdr = DEFAULT_lgthCheckNostdr; + p_TgecDriverParam->timeStampEnable = DEFAULT_timeStampEnable; + p_TgecDriverParam->rxSfdAny = DEFAULT_rxSfdAny; + p_TgecDriverParam->rxPblFwd = DEFAULT_rxPblFwd; + p_TgecDriverParam->txPblFwd = DEFAULT_txPblFwd; + + p_TgecDriverParam->txIpgLength = DEFAULT_txIpgLength; + p_TgecDriverParam->maxFrameLength = DEFAULT_maxFrameLength; + + p_TgecDriverParam->debugMode = DEFAULT_debugMode; + + p_TgecDriverParam->pauseTime = DEFAULT_pauseTime; + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + p_TgecDriverParam->skipFman11Workaround = DEFAULT_skipFman11Workaround; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ +} + +/* ........................................................................... */ + +static void TgecErrException(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t event; + t_TgecMemMap *p_TgecMemMap = p_Tgec->p_MemMap; + + event = GET_UINT32(p_TgecMemMap->ievent); + /* do not handle MDIO events */ + event &= ~(IMASK_MDIO_SCAN_EVENTMDIO | IMASK_MDIO_CMD_CMPL); + + event &= GET_UINT32(p_TgecMemMap->imask); + + WRITE_UINT32(p_TgecMemMap->ievent, event); + + if (event & IMASK_REM_FAULT) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_REM_FAULT); + if (event & IMASK_LOC_FAULT) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_LOC_FAULT); + if (event & IMASK_1TX_ECC_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_1TX_ECC_ER); + if (event & IMASK_TX_FIFO_UNFL) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_TX_FIFO_UNFL); + if (event & IMASK_TX_FIFO_OVFL) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_TX_FIFO_OVFL); + if (event & IMASK_TX_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_TX_ER); + if (event & IMASK_RX_FIFO_OVFL) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_FIFO_OVFL); + if (event & IMASK_RX_ECC_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_ECC_ER); + if (event & IMASK_RX_JAB_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_JAB_FRM); + if (event & IMASK_RX_OVRSZ_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_OVRSZ_FRM); + if (event & IMASK_RX_RUNT_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_RUNT_FRM); + if (event & IMASK_RX_FRAG_FRM) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_FRAG_FRM); + if (event & IMASK_RX_LEN_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_LEN_ER); + if (event & IMASK_RX_CRC_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_CRC_ER); + if (event & IMASK_RX_ALIGN_ER) + p_Tgec->f_Exception(p_Tgec->h_App, e_FM_MAC_EX_10G_RX_ALIGN_ER); +} + +static void TgecException(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t event; + t_TgecMemMap *p_TgecMemMap = p_Tgec->p_MemMap; + + event = GET_UINT32(p_TgecMemMap->ievent); + /* handle only MDIO events */ + event &= (IMASK_MDIO_SCAN_EVENTMDIO | IMASK_MDIO_CMD_CMPL); + event &= GET_UINT32(p_TgecMemMap->imask); + + WRITE_UINT32(p_TgecMemMap->ievent, event); + + if(event & IMASK_MDIO_SCAN_EVENTMDIO) + p_Tgec->f_Event(p_Tgec->h_App, e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO); + if(event & IMASK_MDIO_CMD_CMPL) + p_Tgec->f_Event(p_Tgec->h_App, e_FM_MAC_EX_10G_MDIO_CMD_CMPL); +} + +static void FreeInitResources(t_Tgec *p_Tgec) +{ + if ((p_Tgec->mdioIrq != 0) && (p_Tgec->mdioIrq != NO_IRQ)) + { + XX_DisableIntr(p_Tgec->mdioIrq); + XX_FreeIntr(p_Tgec->mdioIrq); + } + else if (p_Tgec->mdioIrq == 0) + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, (NO_MSG)); + FmUnregisterIntr(p_Tgec->fmMacControllerDriver.h_Fm, e_FM_MOD_10G_MAC, p_Tgec->macId, e_FM_INTR_TYPE_ERR); + + /* release the driver's group hash table */ + FreeHashTable(p_Tgec->p_MulticastAddrHash); + p_Tgec->p_MulticastAddrHash = NULL; + + /* release the driver's individual hash table */ + FreeHashTable(p_Tgec->p_UnicastAddrHash); + p_Tgec->p_UnicastAddrHash = NULL; +} + +/* .............................................................................. */ + +static void HardwareClearAddrInPaddr(t_Tgec *p_Tgec, uint8_t paddrNum) +{ + if (paddrNum != 0) + return; /* At this time MAC has only one address */ + + WRITE_UINT32(p_Tgec->p_MemMap->mac_addr_2, 0x0); + WRITE_UINT32(p_Tgec->p_MemMap->mac_addr_3, 0x0); +} + +/* ........................................................................... */ + +static void HardwareAddAddrInPaddr(t_Tgec *p_Tgec, uint64_t *p_Addr, uint8_t paddrNum) +{ + uint32_t tmpReg32 = 0; + uint64_t addr = *p_Addr; + t_TgecMemMap *p_TgecMemMap = p_Tgec->p_MemMap; + + if (paddrNum != 0) + return; /* At this time MAC has only one address */ + + tmpReg32 = (uint32_t)(addr>>16); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_TgecMemMap->mac_addr_2, tmpReg32); + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + tmpReg32 >>= 16; + WRITE_UINT32(p_TgecMemMap->mac_addr_3, tmpReg32); +} + +/*****************************************************************************/ +/* 10G MAC API routines */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecEnable(t_Handle h_Tgec, e_CommMode mode) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_TgecMemMap*)(p_Tgec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + + switch (mode) + { + case e_COMM_MODE_NONE: + tmpReg32 &= ~(CMD_CFG_TX_EN | CMD_CFG_RX_EN); + break; + case e_COMM_MODE_RX : + tmpReg32 |= CMD_CFG_RX_EN ; + break; + case e_COMM_MODE_TX : + tmpReg32 |= CMD_CFG_TX_EN ; + break; + case e_COMM_MODE_RX_AND_TX: + tmpReg32 |= (CMD_CFG_TX_EN | CMD_CFG_RX_EN); + break; + } + + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecDisable (t_Handle h_Tgec, e_CommMode mode) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_TgecMemMap*)(p_Tgec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + switch (mode) + { + case e_COMM_MODE_RX: + tmpReg32 &= ~CMD_CFG_RX_EN; + break; + case e_COMM_MODE_TX: + tmpReg32 &= ~CMD_CFG_TX_EN; + break; + case e_COMM_MODE_RX_AND_TX: + tmpReg32 &= ~(CMD_CFG_TX_EN | CMD_CFG_RX_EN); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecSetPromiscuous(t_Handle h_Tgec, bool newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + + tmpReg32 = GET_UINT32(p_TgecMemMap->cmd_conf_ctrl); + + if (newVal) + tmpReg32 |= CMD_CFG_PROMIS_EN; + else + tmpReg32 &= ~CMD_CFG_PROMIS_EN; + + WRITE_UINT32(p_TgecMemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + + +/*****************************************************************************/ +/* Tgec Configs modification functions */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecConfigLoopback(t_Handle h_Tgec, bool newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + +#ifdef FM_NO_TGEC_LOOPBACK + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("no loopback in this chip rev!")); + } +#endif /* FM_NO_TGEC_LOOPBACK */ + + p_Tgec->p_TgecDriverParam->loopbackEnable = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecConfigWan(t_Handle h_Tgec, bool newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->wanModeEnable = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecConfigMaxFrameLength(t_Handle h_Tgec, uint16_t newVal) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->maxFrameLength = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecConfigLengthCheck(t_Handle h_Tgec, bool newVal) +{ +#ifdef FM_LEN_CHECK_ERRATA_FMAN_SW002 +UNUSED(h_Tgec); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("LengthCheck!")); + +#else + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + UNUSED(newVal); + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->noLengthCheckEnable = !newVal; + + return E_OK; +#endif /* FM_LEN_CHECK_ERRATA_FMAN_SW002 */ +} + +/* .............................................................................. */ + +static t_Error TgecConfigException(t_Handle h_Tgec, e_FmMacExceptions exception, bool enable) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t bitMask = 0; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); +#ifdef FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if((revInfo.majorRev <=2) && + enable && + ((exception == e_FM_MAC_EX_10G_LOC_FAULT) || (exception == e_FM_MAC_EX_10G_REM_FAULT))) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_MAC_EX_10G_LOC_FAULT and e_FM_MAC_EX_10G_REM_FAULT !")); + } +#endif /* FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 */ + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Tgec->exceptions |= bitMask; + else + p_Tgec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +/* .............................................................................. */ + +static t_Error TgecConfigSkipFman11Workaround(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_Tgec->p_TgecDriverParam->skipFman11Workaround = TRUE; + + return E_OK; +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + +/*****************************************************************************/ +/* Tgec Run Time API functions */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecTxMacPause(t_Handle h_Tgec, uint16_t pauseTime) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t ptv = 0; + t_TgecMemMap *p_MemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_TgecMemMap*)(p_Tgec->p_MemMap); + + ptv = (uint32_t)pauseTime; + + WRITE_UINT32(p_MemMap->pause_quant, ptv); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecRxIgnoreMacPause(t_Handle h_Tgec, bool en) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_TgecMemMap*)(p_Tgec->p_MemMap); + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + if (en) + tmpReg32 |= CMD_CFG_PAUSE_IGNORE; + else + tmpReg32 &= ~CMD_CFG_PAUSE_IGNORE; + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + return E_OK; +} + +/* Counters handling */ +/* .............................................................................. */ + +static t_Error TgecGetStatistics(t_Handle h_Tgec, t_FmMacStatistics *p_Statistics) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Statistics, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + + p_Statistics->eStatPkts64 = GET_UINT64(p_TgecMemMap->R64); + p_Statistics->eStatPkts65to127 = GET_UINT64(p_TgecMemMap->R127); + p_Statistics->eStatPkts128to255 = GET_UINT64(p_TgecMemMap->R255); + p_Statistics->eStatPkts256to511 = GET_UINT64(p_TgecMemMap->R511); + p_Statistics->eStatPkts512to1023 = GET_UINT64(p_TgecMemMap->R1023); + p_Statistics->eStatPkts1024to1518 = GET_UINT64(p_TgecMemMap->R1518); + p_Statistics->eStatPkts1519to1522 = GET_UINT64(p_TgecMemMap->R1519X); +/* */ + p_Statistics->eStatFragments = GET_UINT64(p_TgecMemMap->TRFRG); + p_Statistics->eStatJabbers = GET_UINT64(p_TgecMemMap->TRJBR); + + p_Statistics->eStatsDropEvents = GET_UINT64(p_TgecMemMap->RDRP); + p_Statistics->eStatCRCAlignErrors = GET_UINT64(p_TgecMemMap->RALN); + + p_Statistics->eStatUndersizePkts = GET_UINT64(p_TgecMemMap->TRUND); + p_Statistics->eStatOversizePkts = GET_UINT64(p_TgecMemMap->TROVR); +/* Pause */ + p_Statistics->reStatPause = GET_UINT64(p_TgecMemMap->RXPF); + p_Statistics->teStatPause = GET_UINT64(p_TgecMemMap->TXPF); + + +/* MIB II */ + p_Statistics->ifInOctets = GET_UINT64(p_TgecMemMap->ROCT); + p_Statistics->ifInMcastPkts = GET_UINT64(p_TgecMemMap->RMCA); + p_Statistics->ifInBcastPkts = GET_UINT64(p_TgecMemMap->RBCA); + p_Statistics->ifInPkts = GET_UINT64(p_TgecMemMap->RUCA) + + p_Statistics->ifInMcastPkts + + p_Statistics->ifInBcastPkts; + p_Statistics->ifInDiscards = 0; + p_Statistics->ifInErrors = GET_UINT64(p_TgecMemMap->RERR); + + p_Statistics->ifOutOctets = GET_UINT64(p_TgecMemMap->TOCT); + p_Statistics->ifOutMcastPkts = GET_UINT64(p_TgecMemMap->TMCA); + p_Statistics->ifOutBcastPkts = GET_UINT64(p_TgecMemMap->TBCA); + p_Statistics->ifOutPkts = GET_UINT64(p_TgecMemMap->TUCA); + p_Statistics->ifOutDiscards = 0; + p_Statistics->ifOutErrors = GET_UINT64(p_TgecMemMap->TERR); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecEnable1588TimeStamp(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_TgecMemMap = p_Tgec->p_MemMap; + SANITY_CHECK_RETURN_ERROR(p_TgecMemMap, E_INVALID_HANDLE); + + WRITE_UINT32(p_TgecMemMap->cmd_conf_ctrl, GET_UINT32(p_TgecMemMap->cmd_conf_ctrl) | CMD_CFG_EN_TIMESTAMP); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecDisable1588TimeStamp(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + + p_TgecMemMap = p_Tgec->p_MemMap; + SANITY_CHECK_RETURN_ERROR(p_TgecMemMap, E_INVALID_HANDLE); + + WRITE_UINT32(p_TgecMemMap->cmd_conf_ctrl, GET_UINT32(p_TgecMemMap->cmd_conf_ctrl) & ~CMD_CFG_EN_TIMESTAMP); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecModifyMacAddress (t_Handle h_Tgec, t_EnetAddr *p_EnetAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + uint32_t tmpReg32 = 0; + uint64_t addr; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + + /* Initialize MAC Station Address registers (1 & 2) */ + /* Station address have to be swapped (big endian to little endian */ + + addr = ((*(uint64_t *)p_EnetAddr) >> 16); + p_Tgec->addr = addr; + + tmpReg32 = (uint32_t)(addr>>16); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_TgecMemMap->mac_addr_0, tmpReg32); + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + tmpReg32 >>= 16; + WRITE_UINT32(p_TgecMemMap->mac_addr_1, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecResetCounters (t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_MemMap ; + uint32_t tmpReg32, cmdConfCtrl; + int i; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_TgecMemMap*)(p_Tgec->p_MemMap); + + cmdConfCtrl = GET_UINT32(p_MemMap->cmd_conf_ctrl); + + cmdConfCtrl |= CMD_CFG_STAT_CLR; + + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, cmdConfCtrl); + + for (i=0; i<1000; i++) + { + tmpReg32 = GET_UINT32(p_MemMap->cmd_conf_ctrl); + if (!(tmpReg32 & CMD_CFG_STAT_CLR)) + break; + } + + cmdConfCtrl &= ~CMD_CFG_STAT_CLR; + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, cmdConfCtrl); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecAddExactMatchMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *) h_Tgec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + if (ethAddr & GROUP_ADDRESS) + /* Multicast address has no effect in PADDR */ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Multicast address")); + + /* Make sure no PADDR contains this address */ + for (paddrNum = 0; paddrNum < TGEC_NUM_OF_PADDRS; paddrNum++) + { + if (p_Tgec->indAddrRegUsed[paddrNum]) + { + if (p_Tgec->paddr[paddrNum] == ethAddr) + { + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + } + } + } + + /* Find first unused PADDR */ + for (paddrNum = 0; paddrNum < TGEC_NUM_OF_PADDRS; paddrNum++) + { + if (!(p_Tgec->indAddrRegUsed[paddrNum])) + { + /* mark this PADDR as used */ + p_Tgec->indAddrRegUsed[paddrNum] = TRUE; + /* store address */ + p_Tgec->paddr[paddrNum] = ethAddr; + + /* put in hardware */ + HardwareAddAddrInPaddr(p_Tgec, ðAddr, paddrNum); + p_Tgec->numOfIndAddrInRegs++; + + return E_OK; + } + } + + /* No free PADDR */ + RETURN_ERROR(MAJOR, E_FULL, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error TgecDelExactMatchMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *) h_Tgec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* Find used PADDR containing this address */ + for (paddrNum = 0; paddrNum < TGEC_NUM_OF_PADDRS; paddrNum++) + { + if ((p_Tgec->indAddrRegUsed[paddrNum]) && + (p_Tgec->paddr[paddrNum] == ethAddr)) + { + /* mark this PADDR as not used */ + p_Tgec->indAddrRegUsed[paddrNum] = FALSE; + /* clear in hardware */ + HardwareClearAddrInPaddr(p_Tgec, paddrNum); + p_Tgec->numOfIndAddrInRegs--; + + return E_OK; + } + } + + RETURN_ERROR(MAJOR, E_NOT_FOUND, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error TgecAddHashMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + t_EthHashEntry *p_HashEntry; + uint32_t crc; + uint32_t hash; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + if (!(ethAddr & GROUP_ADDRESS)) + /* Unicast addresses not supported in hash */ + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unicast Address")); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + crc = MIRROR_32(crc); + + hash = (crc >> HASH_CTRL_MCAST_SHIFT) & HASH_ADDR_MASK; /* Take 9 MSB bits */ + + /* Create element to be added to the driver hash table */ + p_HashEntry = (t_EthHashEntry *)XX_Malloc(sizeof(t_EthHashEntry)); + p_HashEntry->addr = ethAddr; + INIT_LIST(&p_HashEntry->node); + + LIST_AddToTail(&(p_HashEntry->node), &(p_Tgec->p_MulticastAddrHash->p_Lsts[hash])); + WRITE_UINT32(p_TgecMemMap->hashtable_ctrl, (hash | HASH_CTRL_MCAST_EN)); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecDelHashMacAddress(t_Handle h_Tgec, t_EnetAddr *p_EthAddr) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + t_EthHashEntry *p_HashEntry = NULL; + t_List *p_Pos; + uint32_t crc; + uint32_t hash; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + crc = MIRROR_32(crc); + + hash = (crc >> HASH_CTRL_MCAST_SHIFT) & HASH_ADDR_MASK; /* Take 9 MSB bits */ + + LIST_FOR_EACH(p_Pos, &(p_Tgec->p_MulticastAddrHash->p_Lsts[hash])) + { + + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_Pos); + if(p_HashEntry->addr == ethAddr) + { + LIST_DelAndInit(&p_HashEntry->node); + XX_Free(p_HashEntry); + break; + } + } + if(LIST_IsEmpty(&p_Tgec->p_MulticastAddrHash->p_Lsts[hash])) + WRITE_UINT32(p_TgecMemMap->hashtable_ctrl, (hash & ~HASH_CTRL_MCAST_EN)); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecGetId(t_Handle h_Tgec, uint32_t *macId) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + + UNUSED(p_Tgec); + UNUSED(macId); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("TgecGetId Not Supported")); +} + +/* .............................................................................. */ + +static t_Error TgecGetVersion(t_Handle h_Tgec, uint32_t *macVersion) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; + *macVersion = GET_UINT32(p_TgecMemMap->tgec_id); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecSetExcpetion(t_Handle h_Tgec, e_FmMacExceptions exception, bool enable) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + uint32_t bitMask = 0, tmpReg; + t_TgecMemMap *p_TgecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_NULL_POINTER); + + p_TgecMemMap = p_Tgec->p_MemMap; +#ifdef FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if((revInfo.majorRev <=2) && + enable && + ((exception == e_FM_MAC_EX_10G_LOC_FAULT) || (exception == e_FM_MAC_EX_10G_REM_FAULT))) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("e_FM_MAC_EX_10G_LOC_FAULT and e_FM_MAC_EX_10G_REM_FAULT !")); + } +#endif /* FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 */ + + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Tgec->exceptions |= bitMask; + else + p_Tgec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + tmpReg = GET_UINT32(p_TgecMemMap->imask); + if(enable) + tmpReg |= bitMask; + else + tmpReg &= ~bitMask; + WRITE_UINT32(p_TgecMemMap->imask, tmpReg); + return E_OK; +} + +/* .............................................................................. */ + +static uint16_t TgecGetMaxFrameLength(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_VALUE(p_Tgec, E_INVALID_HANDLE, 0); + + return (uint16_t)GET_UINT32(p_Tgec->p_MemMap->maxfrm); +} + +/* .............................................................................. */ + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +static t_Error TgecTxEccWorkaround(t_Tgec *p_Tgec) +{ + t_Error err; + + XX_Print("Applying 10G tx-ecc error workaround (10GMAC-A004) ..."); + /* enable and set promiscuous */ + WRITE_UINT32(p_Tgec->p_MemMap->cmd_conf_ctrl, CMD_CFG_PROMIS_EN | CMD_CFG_TX_EN | CMD_CFG_RX_EN); + err = Fm10GTxEccWorkaround(p_Tgec->fmMacControllerDriver.h_Fm, p_Tgec->macId); + /* disable */ + WRITE_UINT32(p_Tgec->p_MemMap->cmd_conf_ctrl, 0); + if (err) + XX_Print("FAILED!\n"); + else + XX_Print("done.\n"); + TgecResetCounters (p_Tgec); + + return err; +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +/* .............................................................................. */ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +static t_Error TgecDumpRegs(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + DECLARE_DUMP; + + if (p_Tgec->p_MemMap) + { + DUMP_TITLE(p_Tgec->p_MemMap, ("10G MAC %d: ", p_Tgec->macId)); + DUMP_VAR(p_Tgec->p_MemMap, tgec_id); + DUMP_VAR(p_Tgec->p_MemMap, scratch); + DUMP_VAR(p_Tgec->p_MemMap, cmd_conf_ctrl); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_0); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_1); + DUMP_VAR(p_Tgec->p_MemMap, maxfrm); + DUMP_VAR(p_Tgec->p_MemMap, pause_quant); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_sections); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_sections); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_almost_f_e); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_almost_f_e); + DUMP_VAR(p_Tgec->p_MemMap, hashtable_ctrl); + DUMP_VAR(p_Tgec->p_MemMap, mdio_cfg_status); + DUMP_VAR(p_Tgec->p_MemMap, mdio_command); + DUMP_VAR(p_Tgec->p_MemMap, mdio_data); + DUMP_VAR(p_Tgec->p_MemMap, mdio_regaddr); + DUMP_VAR(p_Tgec->p_MemMap, status); + DUMP_VAR(p_Tgec->p_MemMap, tx_ipg_len); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_2); + DUMP_VAR(p_Tgec->p_MemMap, mac_addr_3); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_ptr_rd); + DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_ptr_wr); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_ptr_rd); + DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_ptr_wr); + DUMP_VAR(p_Tgec->p_MemMap, imask); + DUMP_VAR(p_Tgec->p_MemMap, ievent); + DUMP_VAR(p_Tgec->p_MemMap, udp_port); + DUMP_VAR(p_Tgec->p_MemMap, type_1588v2); + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + + +/*****************************************************************************/ +/* FM Init & Free API */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error TgecInit(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecDriverParam *p_TgecDriverParam; + t_TgecMemMap *p_MemMap; + uint64_t addr; + uint32_t tmpReg32; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_TgecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MemMap, E_INVALID_HANDLE); + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + if (!p_Tgec->p_TgecDriverParam->skipFman11Workaround && + ((err = TgecTxEccWorkaround(p_Tgec)) != E_OK)) +#ifdef NCSW_LINUX + { + /* the workaround fails in simics, just report and continue initialization */ + REPORT_ERROR(MAJOR, err, ("TgecTxEccWorkaround FAILED, skipping workaround")); + } +#else + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, err, ("TgecTxEccWorkaround FAILED")); + } +#endif +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + CHECK_INIT_PARAMETERS(p_Tgec, CheckInitParameters); + + p_TgecDriverParam = p_Tgec->p_TgecDriverParam; + p_MemMap = p_Tgec->p_MemMap; + + /* MAC Address */ + addr = p_Tgec->addr; + tmpReg32 = (uint32_t)(addr>>16); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_MemMap->mac_addr_0, tmpReg32); + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + tmpReg32 >>= 16; + WRITE_UINT32(p_MemMap->mac_addr_1, tmpReg32); + + /* Config */ + tmpReg32 = 0; + if (p_TgecDriverParam->wanModeEnable) + tmpReg32 |= CMD_CFG_WAN_MODE; + if (p_TgecDriverParam->promiscuousModeEnable) + tmpReg32 |= CMD_CFG_PROMIS_EN; + if (p_TgecDriverParam->pauseForwardEnable) + tmpReg32 |= CMD_CFG_PAUSE_FWD; + if (p_TgecDriverParam->pauseIgnore) + tmpReg32 |= CMD_CFG_PAUSE_IGNORE; + if (p_TgecDriverParam->txAddrInsEnable) + tmpReg32 |= CMD_CFG_TX_ADDR_INS; + if (p_TgecDriverParam->loopbackEnable) + tmpReg32 |= CMD_CFG_LOOPBACK_EN; + if (p_TgecDriverParam->cmdFrameEnable) + tmpReg32 |= CMD_CFG_CMD_FRM_EN; + if (p_TgecDriverParam->rxErrorDiscard) + tmpReg32 |= CMD_CFG_RX_ER_DISC; + if (p_TgecDriverParam->phyTxenaOn) + tmpReg32 |= CMD_CFG_PHY_TX_EN; + if (p_TgecDriverParam->sendIdleEnable) + tmpReg32 |= CMD_CFG_SEND_IDLE; + if (p_TgecDriverParam->noLengthCheckEnable) + tmpReg32 |= CMD_CFG_NO_LEN_CHK; + if (p_TgecDriverParam->lgthCheckNostdr) + tmpReg32 |= CMD_CFG_LEN_CHK_NOSTDR; + if (p_TgecDriverParam->timeStampEnable) + tmpReg32 |= CMD_CFG_EN_TIMESTAMP; + if (p_TgecDriverParam->rxSfdAny) + tmpReg32 |= RX_SFD_ANY; + if (p_TgecDriverParam->rxPblFwd) + tmpReg32 |= CMD_CFG_RX_PBL_FWD; + if (p_TgecDriverParam->txPblFwd) + tmpReg32 |= CMD_CFG_TX_PBL_FWD; + tmpReg32 |= 0x40; + WRITE_UINT32(p_MemMap->cmd_conf_ctrl, tmpReg32); + + /* Max Frame Length */ + WRITE_UINT32(p_MemMap->maxfrm, (uint32_t)p_TgecDriverParam->maxFrameLength); + err = FmSetMacMaxFrame(p_Tgec->fmMacControllerDriver.h_Fm, e_FM_MAC_10G, p_Tgec->fmMacControllerDriver.macId, p_TgecDriverParam->maxFrameLength); + if(err) + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + /* Pause Time */ + WRITE_UINT32(p_MemMap->pause_quant, p_TgecDriverParam->pauseTime); + +#ifdef FM_TX_FIFO_CORRUPTION_ERRATA_10GMAC_A007 + WRITE_UINT32(p_Tgec->p_MemMap->tx_ipg_len, + (GET_UINT32(p_Tgec->p_MemMap->tx_ipg_len) & ~TX_IPG_LENGTH_MASK) | DEFAULT_txIpgLength); +#endif /* FM_TX_FIFO_CORRUPTION_ERRATA_10GMAC_A007 */ + + /* Configure MII */ + tmpReg32 = GET_UINT32(p_Tgec->p_MiiMemMap->mdio_cfg_status); +#ifdef FM_10G_MDIO_HOLD_ERRATA_XAUI3 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + tmpReg32 |= (MIIMCOM_MDIO_HOLD_4_REG_CLK << 2); + } +#endif /* FM_10G_MDIO_HOLD_ERRATA_XAUI3 */ + tmpReg32 &= ~MIIMCOM_DIV_MASK; + /* (one half of fm clock => 2.5Mhz) */ + tmpReg32 |=((((p_Tgec->fmMacControllerDriver.clkFreq*10)/2)/25) << MIIMCOM_DIV_SHIFT); + WRITE_UINT32(p_Tgec->p_MiiMemMap->mdio_cfg_status, tmpReg32); + + p_Tgec->p_MulticastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Tgec->p_MulticastAddrHash) + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("allocation hash table is FAILED")); + } + + p_Tgec->p_UnicastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Tgec->p_UnicastAddrHash) + { + FreeInitResources(p_Tgec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("allocation hash table is FAILED")); + } + + /* interrupts */ +#ifdef FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Tgec->fmMacControllerDriver.h_Fm, &revInfo); + if (revInfo.majorRev <=2) + p_Tgec->exceptions &= ~(IMASK_REM_FAULT | IMASK_LOC_FAULT); + } +#endif /* FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 */ + WRITE_UINT32(p_MemMap->ievent, EVENTS_MASK); + WRITE_UINT32(p_MemMap->imask, p_Tgec->exceptions); + + FmRegisterIntr(p_Tgec->fmMacControllerDriver.h_Fm, e_FM_MOD_10G_MAC, p_Tgec->macId, e_FM_INTR_TYPE_ERR, TgecErrException , p_Tgec); + if ((p_Tgec->mdioIrq != 0) && (p_Tgec->mdioIrq != NO_IRQ)) + { + XX_SetIntr(p_Tgec->mdioIrq, TgecException, p_Tgec); + XX_EnableIntr(p_Tgec->mdioIrq); + } + else if (p_Tgec->mdioIrq == 0) + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, (NO_MSG)); + + XX_Free(p_TgecDriverParam); + p_Tgec->p_TgecDriverParam = NULL; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error TgecFree(t_Handle h_Tgec) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + + FreeInitResources(p_Tgec); + + if (p_Tgec->p_TgecDriverParam) + { + XX_Free(p_Tgec->p_TgecDriverParam); + p_Tgec->p_TgecDriverParam = NULL; + } + XX_Free (p_Tgec); + + return E_OK; +} + +/* .............................................................................. */ + +static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacControllerDriver) +{ + p_FmMacControllerDriver->f_FM_MAC_Init = TgecInit; + p_FmMacControllerDriver->f_FM_MAC_Free = TgecFree; + + p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback = TgecConfigLoopback; + p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength = TgecConfigMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_ConfigWan = TgecConfigWan; + + p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc = NULL; /* TGEC always works with pad+crc */ + p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex = NULL; /* half-duplex is not supported in xgec */ + p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck = TgecConfigLengthCheck; + p_FmMacControllerDriver->f_FM_MAC_ConfigException = TgecConfigException; + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround= TgecConfigSkipFman11Workaround; +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + p_FmMacControllerDriver->f_FM_MAC_SetException = TgecSetExcpetion; + + p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp = TgecEnable1588TimeStamp; + p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp = TgecDisable1588TimeStamp; + + p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous = TgecSetPromiscuous; + p_FmMacControllerDriver->f_FM_MAC_AdjustLink = NULL; + + p_FmMacControllerDriver->f_FM_MAC_Enable = TgecEnable; + p_FmMacControllerDriver->f_FM_MAC_Disable = TgecDisable; + + p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames = TgecTxMacPause; + p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames = TgecRxIgnoreMacPause; + + p_FmMacControllerDriver->f_FM_MAC_ResetCounters = TgecResetCounters; + p_FmMacControllerDriver->f_FM_MAC_GetStatistics = TgecGetStatistics; + + p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr = TgecModifyMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr = TgecAddHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr = TgecDelHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr = TgecAddExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr = TgecDelExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_GetId = TgecGetId; + p_FmMacControllerDriver->f_FM_MAC_GetVersion = TgecGetVersion; + p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength = TgecGetMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = TGEC_MII_WritePhyReg; + p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = TGEC_MII_ReadPhyReg; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + p_FmMacControllerDriver->f_FM_MAC_DumpRegs = TgecDumpRegs; +#endif /* (defined(DEBUG_ERRORS) && ... */ +} + + +/*****************************************************************************/ +/* Tgec Config Main Entry */ +/*****************************************************************************/ + +/* .............................................................................. */ + +t_Handle TGEC_Config(t_FmMacParams *p_FmMacParam) +{ + t_Tgec *p_Tgec; + t_TgecDriverParam *p_TgecDriverParam; + uintptr_t baseAddr; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_NULL_POINTER, NULL); + + baseAddr = p_FmMacParam->baseAddr; + /* allocate memory for the UCC GETH data structure. */ + p_Tgec = (t_Tgec *) XX_Malloc(sizeof(t_Tgec)); + if (!p_Tgec) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("10G MAC driver structure")); + return NULL; + } + /* Zero out * p_Tgec */ + memset(p_Tgec, 0, sizeof(t_Tgec)); + InitFmMacControllerDriver(&p_Tgec->fmMacControllerDriver); + + /* allocate memory for the 10G MAC driver parameters data structure. */ + p_TgecDriverParam = (t_TgecDriverParam *) XX_Malloc(sizeof(t_TgecDriverParam)); + if (!p_TgecDriverParam) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("10G MAC driver parameters")); + TgecFree(p_Tgec); + return NULL; + } + /* Zero out */ + memset(p_TgecDriverParam, 0, sizeof(t_TgecDriverParam)); + + /* Plant parameter structure pointer */ + p_Tgec->p_TgecDriverParam = p_TgecDriverParam; + + SetDefaultParam(p_TgecDriverParam); + + for (i=0; i < sizeof(p_FmMacParam->addr); i++) + p_Tgec->addr |= ((uint64_t)p_FmMacParam->addr[i] << ((5-i) * 8)); + + p_Tgec->p_MemMap = (t_TgecMemMap *)UINT_TO_PTR(baseAddr); + p_Tgec->p_MiiMemMap = (t_TgecMiiAccessMemMap *)UINT_TO_PTR(baseAddr + TGEC_TO_MII_OFFSET); + p_Tgec->enetMode = p_FmMacParam->enetMode; + p_Tgec->macId = p_FmMacParam->macId; + p_Tgec->exceptions = DEFAULT_exceptions; + p_Tgec->mdioIrq = p_FmMacParam->mdioIrq; + p_Tgec->f_Exception = p_FmMacParam->f_Exception; + p_Tgec->f_Event = p_FmMacParam->f_Event; + p_Tgec->h_App = p_FmMacParam->h_App; + + return p_Tgec; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/Makefile @@ -0,0 +1,14 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-MAC.o + +fsl-ncsw-MAC-objs := dtsec.o dtsec_mii_acc.o fm_mac.o tgec.o tgec_mii_acc.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.h @@ -0,0 +1,197 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_mac.h + + @Description FM MAC ... +*//***************************************************************************/ +#ifndef __FM_MAC_H +#define __FM_MAC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "fm_mac_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_MAC + + +#define DEFAULT_resetOnInit FALSE + + +typedef struct { + uint64_t addr; /* Ethernet Address */ + t_List node; +} t_EthHashEntry; +#define ETH_HASH_ENTRY_OBJ(ptr) LIST_OBJECT(ptr, t_EthHashEntry, node) + +typedef struct { + uint16_t size; + t_List *p_Lsts; +} t_EthHash; + +typedef struct { + t_Error (*f_FM_MAC_Init) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_Free) (t_Handle h_FmMac); + + t_Error (*f_FM_MAC_SetStatistics) (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel); + t_Error (*f_FM_MAC_ConfigLoopback) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigMaxFrameLength) (t_Handle h_FmMac, uint16_t newVal); + t_Error (*f_FM_MAC_ConfigWan) (t_Handle h_FmMac, bool flag); + t_Error (*f_FM_MAC_ConfigPadAndCrc) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigHalfDuplex) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigLengthCheck) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_ConfigException) (t_Handle h_FmMac, e_FmMacExceptions, bool enable); +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 + t_Error (*f_FM_MAC_ConfigSkipFman11Workaround) (t_Handle h_FmMac); +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + t_Error (*f_FM_MAC_SetException) (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable); + + t_Error (*f_FM_MAC_Enable) (t_Handle h_FmMac, e_CommMode mode); + t_Error (*f_FM_MAC_Disable) (t_Handle h_FmMac, e_CommMode mode); + t_Error (*f_FM_MAC_Enable1588TimeStamp) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_Disable1588TimeStamp) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_Reset) (t_Handle h_FmMac, bool wait); + + t_Error (*f_FM_MAC_SetTxAutoPauseFrames) (t_Handle h_FmMac, uint16_t pauseTime); + t_Error (*f_FM_MAC_SetRxIgnorePauseFrames) (t_Handle h_FmMac, bool en); + + t_Error (*f_FM_MAC_ResetCounters) (t_Handle h_FmMac); + t_Error (*f_FM_MAC_GetStatistics) (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics); + + t_Error (*f_FM_MAC_ModifyMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_AddHashMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_RemoveHashMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_AddExactMatchMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + t_Error (*f_FM_MAC_RemovelExactMatchMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + + t_Error (*f_FM_MAC_SetPromiscuous) (t_Handle h_FmMac, bool newVal); + t_Error (*f_FM_MAC_AdjustLink) (t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex); + + t_Error (*f_FM_MAC_GetId) (t_Handle h_FmMac, uint32_t *macId); + + t_Error (*f_FM_MAC_GetVersion) (t_Handle h_FmMac, uint32_t *macVersion); + + uint16_t (*f_FM_MAC_GetMaxFrameLength) (t_Handle h_FmMac); + + t_Error (*f_FM_MAC_MII_WritePhyReg)(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data); + t_Error (*f_FM_MAC_MII_ReadPhyReg)(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_Error (*f_FM_MAC_DumpRegs) (t_Handle h_FmMac); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + t_Handle h_Fm; + e_EnetMode enetMode; + uint8_t macId; + bool resetOnInit; + uint16_t clkFreq; +} t_FmMacControllerDriver; + + +t_Handle DTSEC_Config(t_FmMacParams *p_FmMacParam); +t_Handle TGEC_Config(t_FmMacParams *p_FmMacParams); +uint16_t FM_MAC_GetMaxFrameLength(t_Handle FmMac); + + +/* ........................................................................... */ + +static __inline__ t_EthHashEntry *DequeueAddrFromHashEntry(t_List *p_AddrLst) +{ + t_EthHashEntry *p_HashEntry = NULL; + if (!LIST_IsEmpty(p_AddrLst)) + { + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_AddrLst->p_Next); + LIST_DelAndInit(&p_HashEntry->node); + } + return p_HashEntry; +} + +/* ........................................................................... */ + +static __inline__ void FreeHashTable(t_EthHash *p_Hash) +{ + t_EthHashEntry *p_HashEntry; + int i = 0; + + if (!p_Hash || !p_Hash->p_Lsts) + return; + + for(i=0; isize; i++) + { + p_HashEntry = DequeueAddrFromHashEntry(&p_Hash->p_Lsts[i]); + while (p_HashEntry) + { + XX_Free(p_HashEntry); + p_HashEntry = DequeueAddrFromHashEntry(&p_Hash->p_Lsts[i]); + } + } + + XX_Free(p_Hash->p_Lsts); + XX_Free(p_Hash); +} + +/* ........................................................................... */ + +static __inline__ t_EthHash * AllocHashTable(uint16_t size) +{ + uint32_t i; + t_EthHash *p_Hash; + + /* Allocate address hash table */ + p_Hash = (t_EthHash *)XX_Malloc(size*sizeof(t_EthHash *)); + if (!p_Hash) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("Address hash table")); + return NULL; + } + p_Hash->size = size; + + p_Hash->p_Lsts = (t_List *)XX_Malloc(p_Hash->size*sizeof(t_List)); + if (!p_Hash->p_Lsts) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("Address hash table")); + XX_Free(p_Hash); + return NULL; + } + + for(i=0 ; isize; i++) + INIT_LIST(&p_Hash->p_Lsts[i]); + + return p_Hash; +} + + +#endif /* __FM_MAC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __DTSEC_MII_ACC_H +#define __DTSEC_MII_ACC_H + +#include "std_ext.h" + + +/* MII Management Configuration Register */ +#define MIIMCFG_RESET_MGMT 0x80000000 +#define MIIMCFG_MGMT_CLOCK_SELECT 0x00000007 + +/* MII Management Command Register */ +#define MIIMCOM_READ_CYCLE 0x00000001 +#define MIIMCOM_SCAN_CYCLE 0x00000002 + +/* MII Management Address Register */ +#define MIIMADD_PHY_ADDR_SHIFT 8 + +/* MII Management Indicator Register */ +#define MIIMIND_BUSY 0x00000001 + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/*----------------------------------------------------*/ +/* MII Configuration Control Memory Map Registers */ +/*----------------------------------------------------*/ +typedef _Packed struct t_MiiAccessMemMap +{ + volatile uint32_t miimcfg; /* MII Mgmt:configuration */ + volatile uint32_t miimcom; /* MII Mgmt:command */ + volatile uint32_t miimadd; /* MII Mgmt:address */ + volatile uint32_t miimcon; /* MII Mgmt:control 3 */ + volatile uint32_t miimstat; /* MII Mgmt:status */ + volatile uint32_t miimind; /* MII Mgmt:indicators */ +} _PackedType t_MiiAccessMemMap ; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +#endif /* __DTSEC_MII_ACC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __TGEC_MII_ACC_H +#define __TGEC_MII_ACC_H + +#include "std_ext.h" + + +/* MII Management Command Register */ +#define MIIMCOM_READ_POST_INCREMENT 0x00004000 +#define MIIMCOM_READ_CYCLE 0x00008000 +#define MIIMCOM_SCAN_CYCLE 0x00000800 +#define MIIMCOM_PREAMBLE_DISABLE 0x00000400 + +#define MIIMCOM_MDIO_HOLD_1_REG_CLK 0 +#define MIIMCOM_MDIO_HOLD_2_REG_CLK 1 +#define MIIMCOM_MDIO_HOLD_3_REG_CLK 2 +#define MIIMCOM_MDIO_HOLD_4_REG_CLK 3 + +#define MIIMCOM_DIV_MASK 0x0000ff00 +#define MIIMCOM_DIV_SHIFT 8 + +/* MII Management Indicator Register */ +#define MIIMIND_BUSY 0x00000001 +#define MIIMIND_READ_ERROR 0x00000002 + +#define MIIDATA_BUSY 0x80000000 + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/*----------------------------------------------------*/ +/* MII Configuration Control Memory Map Registers */ +/*----------------------------------------------------*/ +typedef _Packed struct t_TgecMiiAccessMemMap +{ + volatile uint32_t mdio_cfg_status; /* 0x030 */ + volatile uint32_t mdio_command; /* 0x034 */ + volatile uint32_t mdio_data; /* 0x038 */ + volatile uint32_t mdio_regaddr; /* 0x03c */ +} _PackedType t_TgecMiiAccessMemMap ; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +#endif /* __TGEC_MII_ACC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.c @@ -0,0 +1,1943 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File dtsec.c + + @Description FM dTSEC ... +*//***************************************************************************/ + +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "xx_ext.h" +#include "endian_ext.h" +#include "crc_mac_addr_ext.h" +#include "debug_ext.h" + +#include "fm_common.h" +#include "dtsec.h" + + +/*****************************************************************************/ +/* Internal routines */ +/*****************************************************************************/ + +static t_Error CheckInitParameters(t_Dtsec *p_Dtsec) +{ + if(ENET_SPEED_FROM_MODE(p_Dtsec->enetMode) >= e_ENET_SPEED_10000) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet 1G MAC driver only supports 1G or lower speeds")); + if(p_Dtsec->macId >= FM_MAX_NUM_OF_1G_MACS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("macId can not be greater than the number of 1G MACs")); + if(p_Dtsec->addr == 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet MAC Must have a valid MAC Address")); + if(((p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_QSGMII_1000)) && + p_Dtsec->p_DtsecDriverParam->halfDuplex) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Ethernet MAC 1G can't work in half duplex")); + if(p_Dtsec->p_DtsecDriverParam->halfDuplex && (p_Dtsec->p_DtsecDriverParam)->loopback) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("LoopBack is not supported in halfDuplex mode")); +#ifdef FM_NO_RX_PREAM_ERRATA_DTSECx1 + if(p_Dtsec->p_DtsecDriverParam->preambleRxEn) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("preambleRxEn")); +#endif /* FM_NO_RX_PREAM_ERRATA_DTSECx1 */ + if(((p_Dtsec->p_DtsecDriverParam)->preambleTxEn || (p_Dtsec->p_DtsecDriverParam)->preambleRxEn) &&( (p_Dtsec->p_DtsecDriverParam)->preambleLength != 0x7)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Preamble length should be 0x7 bytes")); + if((p_Dtsec->p_DtsecDriverParam)->fifoTxWatermarkH<((p_Dtsec->p_DtsecDriverParam)->fifoTxThr+8)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoTxWatermarkH has to be at least 8 larger than fifoTxThr")); + if((p_Dtsec->p_DtsecDriverParam)->halfDuplex && + (p_Dtsec->p_DtsecDriverParam->txTimeStampEn || p_Dtsec->p_DtsecDriverParam->rxTimeStampEn)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dTSEC in half duplex mode has to be with 1588 timeStamping diable")); + if((p_Dtsec->p_DtsecDriverParam)->actOnRxPauseFrame && (p_Dtsec->p_DtsecDriverParam)->controlFrameAccept ) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Receive control frame are not passed to the system memory so it can not be accept ")); + if((p_Dtsec->p_DtsecDriverParam)->packetAlignmentPadding > MAX_PACKET_ALIGNMENT) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("packetAlignmentPadding can't be greater than %d ",MAX_PACKET_ALIGNMENT )); + if(((p_Dtsec->p_DtsecDriverParam)->nonBackToBackIpg1 > MAX_INTER_PACKET_GAP) || + ((p_Dtsec->p_DtsecDriverParam)->nonBackToBackIpg2 > MAX_INTER_PACKET_GAP) || + ((p_Dtsec->p_DtsecDriverParam)->backToBackIpg > MAX_INTER_PACKET_GAP)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Inter packet gap can't be greater than %d ",MAX_INTER_PACKET_GAP )); + if((p_Dtsec->p_DtsecDriverParam)->alternateBackoffVal > MAX_INTER_PALTERNATE_BEB) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("alternateBackoffVal can't be greater than %d ",MAX_INTER_PALTERNATE_BEB )); + if((p_Dtsec->p_DtsecDriverParam)->maxRetransmission > MAX_RETRANSMISSION) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("maxRetransmission can't be greater than %d ",MAX_RETRANSMISSION )); + if((p_Dtsec->p_DtsecDriverParam)->collisionWindow > MAX_COLLISION_WINDOW) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("collisionWindow can't be greater than %d ",MAX_COLLISION_WINDOW )); + + /* If Auto negotiation process is disabled, need to */ + /* Set up the PHY using the MII Management Interface */ + if (p_Dtsec->p_DtsecDriverParam->tbiPhyAddr > MAX_PHYS) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, ("PHY address (should be 0-%d)", MAX_PHYS)); + if(!p_Dtsec->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("uninitialized f_Exception")); + if(!p_Dtsec->f_Event) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("uninitialized f_Event")); + return E_OK; +} + +static uint8_t GetMiiDiv(int32_t refClk) +{ + uint32_t div,tmpClk; + int minRange; + + div = 1; + minRange = (int)(refClk/40 - 1); + + tmpClk = (uint32_t)ABS(refClk/60 - 1); + if (tmpClk < minRange) + { + div = 2; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/60 - 1); + if (tmpClk < minRange) + { + div = 3; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/80 - 1); + if (tmpClk < minRange) + { + div = 4; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/100 - 1); + if (tmpClk < minRange) + { + div = 5; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/140 - 1); + if (tmpClk < minRange) + { + div = 6; + minRange = (int)tmpClk; + } + tmpClk = (uint32_t)ABS(refClk/280 - 1); + if (tmpClk < minRange) + { + div = 7; + minRange = (int)tmpClk; + } + + return (uint8_t)div; +} + +/* ........................................................................... */ + +static void SetDefaultParam(t_DtsecDriverParam *p_DtsecDriverParam) +{ + p_DtsecDriverParam->errorDisabled = DEFAULT_errorDisabled; + + p_DtsecDriverParam->promiscuousEnable = DEFAULT_promiscuousEnable; + + p_DtsecDriverParam->pauseExtended = DEFAULT_pauseExtended; + p_DtsecDriverParam->pauseTime = DEFAULT_pauseTime; + + p_DtsecDriverParam->halfDuplex = DEFAULT_halfDuplex; + p_DtsecDriverParam->halfDulexFlowControlEn = DEFAULT_halfDulexFlowControlEn; + p_DtsecDriverParam->txTimeStampEn = DEFAULT_txTimeStampEn; + p_DtsecDriverParam->rxTimeStampEn = DEFAULT_rxTimeStampEn; + + p_DtsecDriverParam->packetAlignmentPadding = DEFAULT_packetAlignment; + p_DtsecDriverParam->controlFrameAccept = DEFAULT_controlFrameAccept; + p_DtsecDriverParam->groupHashExtend = DEFAULT_groupHashExtend; + p_DtsecDriverParam->broadcReject = DEFAULT_broadcReject; + p_DtsecDriverParam->rxShortFrame = DEFAULT_rxShortFrame; + p_DtsecDriverParam->exactMatch = DEFAULT_exactMatch; + p_DtsecDriverParam->debugMode = DEFAULT_debugMode; + + p_DtsecDriverParam->loopback = DEFAULT_loopback; + p_DtsecDriverParam->tbiPhyAddr = DEFAULT_tbiPhyAddr; + p_DtsecDriverParam->actOnRxPauseFrame = DEFAULT_actOnRxPauseFrame; + p_DtsecDriverParam->actOnTxPauseFrame = DEFAULT_actOnTxPauseFrame; + + p_DtsecDriverParam->preambleLength = DEFAULT_PreAmLength; + p_DtsecDriverParam->preambleRxEn = DEFAULT_PreAmRxEn; + p_DtsecDriverParam->preambleTxEn = DEFAULT_PreAmTxEn; + p_DtsecDriverParam->lengthCheckEnable = DEFAULT_lengthCheckEnable; + p_DtsecDriverParam->padAndCrcEnable = DEFAULT_padAndCrcEnable; + p_DtsecDriverParam->crcEnable = DEFAULT_crcEnable; + + p_DtsecDriverParam->nonBackToBackIpg1 = DEFAULT_nonBackToBackIpg1; + p_DtsecDriverParam->nonBackToBackIpg2 = DEFAULT_nonBackToBackIpg2; + p_DtsecDriverParam->minIfgEnforcement = DEFAULT_minIfgEnforcement; + p_DtsecDriverParam->backToBackIpg = DEFAULT_backToBackIpg; + + p_DtsecDriverParam->alternateBackoffVal = DEFAULT_altBackoffVal; + p_DtsecDriverParam->alternateBackoffEnable = DEFAULT_altBackoffEnable; + p_DtsecDriverParam->backPressureNoBackoff = DEFAULT_backPressureNoBackoff; + p_DtsecDriverParam->noBackoff = DEFAULT_noBackoff; + p_DtsecDriverParam->excessDefer = DEFAULT_excessDefer; + p_DtsecDriverParam->maxRetransmission = DEFAULT_maxRetransmission; + p_DtsecDriverParam->collisionWindow = DEFAULT_collisionWindow; + + p_DtsecDriverParam->maxFrameLength = DEFAULT_maxFrameLength; + + p_DtsecDriverParam->fifoTxThr = DEFAULT_fifoTxThr; + p_DtsecDriverParam->fifoTxWatermarkH = DEFAULT_fifoTxWatermarkH; + + p_DtsecDriverParam->fifoRxWatermarkL = DEFAULT_fifoRxWatermarkL; +} + +static void DtsecException(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t event; + t_DtsecMemMap *p_DtsecMemMap; + + ASSERT_COND(p_Dtsec); + p_DtsecMemMap = p_Dtsec->p_MemMap; + ASSERT_COND(p_DtsecMemMap); + + event = GET_UINT32(p_DtsecMemMap->ievent); + /* handle only MDIO events */ + event &= (IMASK_MMRDEN | IMASK_MMWREN); + if(event) + { + event &= GET_UINT32(p_DtsecMemMap->imask); + + WRITE_UINT32(p_DtsecMemMap->ievent, event); + + if(event & IMASK_MMRDEN) + p_Dtsec->f_Event(p_Dtsec->h_App, e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET); + if(event & IMASK_MMWREN) + p_Dtsec->f_Event(p_Dtsec->h_App, e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET); + } +} + +static void UpdateStatistics(t_Dtsec *p_Dtsec) +{ + t_DtsecMemMap *p_DtsecMemMap = p_Dtsec->p_MemMap; + uint32_t car1 = GET_UINT32(p_DtsecMemMap->car1); + uint32_t car2 = GET_UINT32(p_DtsecMemMap->car2); + + if(car1) + { + WRITE_UINT32(p_DtsecMemMap->car1, car1); + if(car1 & CAR1_TR64) + p_Dtsec->internalStatistics.tr64 += VAL22BIT; + if(car1 & CAR1_TR127) + p_Dtsec->internalStatistics.tr127 += VAL22BIT; + if(car1 & CAR1_TR255) + p_Dtsec->internalStatistics.tr255 += VAL22BIT; + if(car1 & CAR1_TR511) + p_Dtsec->internalStatistics.tr511 += VAL22BIT; + if(car1 & CAR1_TRK1) + p_Dtsec->internalStatistics.tr1k += VAL22BIT; + if(car1 & CAR1_TRMAX) + p_Dtsec->internalStatistics.trmax += VAL22BIT; + if(car1 & CAR1_TRMGV) + p_Dtsec->internalStatistics.trmgv += VAL22BIT; + if(car1 & CAR1_RBYT) + p_Dtsec->internalStatistics.rbyt += (uint64_t)VAL32BIT; + if(car1 & CAR1_RPKT) + p_Dtsec->internalStatistics.rpkt += VAL22BIT; + if(car1 & CAR1_RMCA) + p_Dtsec->internalStatistics.rmca += VAL22BIT; + if(car1 & CAR1_RBCA) + p_Dtsec->internalStatistics.rbca += VAL22BIT; + if(car1 & CAR1_RXPF) + p_Dtsec->internalStatistics.rxpf += VAL16BIT; + if(car1 & CAR1_RALN) + p_Dtsec->internalStatistics.raln += VAL16BIT; + if(car1 & CAR1_RFLR) + p_Dtsec->internalStatistics.rflr += VAL16BIT; + if(car1 & CAR1_RCDE) + p_Dtsec->internalStatistics.rcde += VAL16BIT; + if(car1 & CAR1_RCSE) + p_Dtsec->internalStatistics.rcse += VAL16BIT; + if(car1 & CAR1_RUND) + p_Dtsec->internalStatistics.rund += VAL16BIT; + if(car1 & CAR1_ROVR) + p_Dtsec->internalStatistics.rovr += VAL16BIT; + if(car1 & CAR1_RFRG) + p_Dtsec->internalStatistics.rfrg += VAL16BIT; + if(car1 & CAR1_RJBR) + p_Dtsec->internalStatistics.rjbr += VAL16BIT; + if(car1 & CAR1_RDRP) + p_Dtsec->internalStatistics.rdrp += VAL16BIT; + } + if(car2) + { + WRITE_UINT32(p_DtsecMemMap->car2, car2); + if(car2 & CAR2_TFCS) + p_Dtsec->internalStatistics.tfcs += VAL12BIT; + if(car2 & CAR2_TBYT) + p_Dtsec->internalStatistics.tbyt += (uint64_t)VAL32BIT; + if(car2 & CAR2_TPKT) + p_Dtsec->internalStatistics.tpkt += VAL22BIT; + if(car2 & CAR2_TMCA) + p_Dtsec->internalStatistics.tmca += VAL22BIT; + if(car2 & CAR2_TBCA) + p_Dtsec->internalStatistics.tbca += VAL22BIT; + if(car2 & CAR2_TXPF) + p_Dtsec->internalStatistics.txpf += VAL16BIT; + if(car2 & CAR2_TDRP) + p_Dtsec->internalStatistics.tdrp += VAL16BIT; + } +} + +/* .............................................................................. */ + +static uint16_t DtsecGetMaxFrameLength(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_VALUE(p_Dtsec, E_INVALID_HANDLE, 0); + + return (uint16_t)GET_UINT32(p_Dtsec->p_MemMap->maxfrm); +} + +static void DtsecErrException(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t event; + t_DtsecMemMap *p_DtsecMemMap = p_Dtsec->p_MemMap; + + event = GET_UINT32(p_DtsecMemMap->ievent); + /* do not handle MDIO events */ + event &= ~(IMASK_MMRDEN | IMASK_MMWREN); + + event &= GET_UINT32(p_DtsecMemMap->imask); + + WRITE_UINT32(p_DtsecMemMap->ievent, event); + + if(event & IMASK_BREN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_BAB_RX); + if(event & IMASK_RXCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_RX_CTL); + if(event & IMASK_MSROEN) + UpdateStatistics(p_Dtsec); + if(event & IMASK_GTSCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET); + if(event & IMASK_BTEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_BAB_TX); + if(event & IMASK_TXCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_CTL); + if(event & IMASK_TXEEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_ERR); + if(event & IMASK_LCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_LATE_COL); + if(event & IMASK_CRLEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_COL_RET_LMT); + if(event & IMASK_XFUNEN) + { +#ifdef FM_TX_LOCKUP_ERRATA_DTSEC6 + uint32_t tpkt1, tmpReg1, tpkt2, tmpReg2, i; + /* a. Write 0x00E0_0C00 to DTSEC_ID */ + /* This is a read only regidter */ + + /* b. Read and save the value of TPKT */ + tpkt1 = GET_UINT32(p_DtsecMemMap->tpkt); + + /* c. Read the register at dTSEC address offset 0x32C */ + tmpReg1 = GET_UINT32(*(uint32_t*)((uint8_t*)p_DtsecMemMap + 0x32c)); + + /* d. Compare bits [9:15] to bits [25:31] of the register at address offset 0x32C. */ + if((tmpReg1 & 0x007F0000) != (tmpReg1 & 0x0000007F)) + { + /* If they are not equal, save the value of this register and wait for at least + * MAXFRM*16 ns */ + XX_UDelay((uint32_t)(MIN(DtsecGetMaxFrameLength(p_Dtsec)*16/1000, 1))); + } + + /* e. Read and save TPKT again and read the register at dTSEC address offset + 0x32C again*/ + tpkt2 = GET_UINT32(p_DtsecMemMap->tpkt); + tmpReg2 = GET_UINT32(*(uint32_t*)((uint8_t*)p_DtsecMemMap + 0x32c)); + + /* f. Compare the value of TPKT saved in step b to value read in step e. Also + compare bits [9:15] of the register at offset 0x32C saved in step d to the value + of bits [9:15] saved in step e. If the two registers values are unchanged, then + the transmit portion of the dTSEC controller is locked up and the user should + proceed to the recover sequence. */ + if((tpkt1 == tpkt2) && ((tmpReg1 & 0x007F0000) == (tmpReg2 & 0x007F0000))) + { + /* recover sequence */ + + /* a.Write a 1 to RCTRL[GRS]*/ + + WRITE_UINT32(p_DtsecMemMap->rctrl, GET_UINT32(p_DtsecMemMap->rctrl) | RCTRL_GRS); + + /* b.Wait until IEVENT[GRSC]=1, or at least 100 us has elapsed. */ + for(i = 0 ; i < 100 ; i++ ) + { + if(GET_UINT32(p_DtsecMemMap->ievent) & IMASK_GRSCEN) + break; + XX_UDelay(1); + } + if(GET_UINT32(p_DtsecMemMap->ievent) & IMASK_GRSCEN) + WRITE_UINT32(p_DtsecMemMap->ievent, IMASK_GRSCEN); + else + DBG(INFO,("Rx lockup due to dTSEC Tx lockup")); + + + /* c.Write a 1 to bit n of FM_RSTC (offset 0x0CC of FPM)*/ + FmResetMac(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MAC_1G, p_Dtsec->fmMacControllerDriver.macId); + + /* d.Wait 4 Tx clocks (32 ns) */ + XX_UDelay(1); + + /* e.Write a 0 to bit n of FM_RSTC. */ + /* cleared by FMAN */ + } + else + { + /* If either value has changed, the dTSEC controller is not locked up and the + controller should be allowed to proceed normally by writing the reset value + of 0x0824_0101 to DTSEC_ID. */ + /* Register is read only */ + } +#endif /* FM_TX_LOCKUP_ERRATA_DTSEC6 */ + + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_FIFO_UNDRN); + } + if(event & IMASK_MAGEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_MAG_PCKT); + if(event & IMASK_GRSCEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET); + if(event & IMASK_TDPEEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_TX_DATA_ERR); + if(event & IMASK_RDPEEN) + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_RX_DATA_ERR); + + /* - masked interrupts */ + ASSERT_COND(!(event & IMASK_ABRTEN)); + ASSERT_COND(!(event & IMASK_IFERREN)); +} + +static void Dtsec1588Exception(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t event; + t_DtsecMemMap *p_DtsecMemMap = p_Dtsec->p_MemMap; + + if (p_Dtsec->ptpTsuEnabled) + { + event = GET_UINT32(p_DtsecMemMap->tmr_pevent); + event &= GET_UINT32(p_DtsecMemMap->tmr_pemask); + if(event) + { + WRITE_UINT32(p_DtsecMemMap->tmr_pevent, event); + ASSERT_COND(event & PEMASK_TSRE); + p_Dtsec->f_Exception(p_Dtsec->h_App, e_FM_MAC_EX_1G_1588_TS_RX_ERR); + } + } +} + +/* ........................................................................... */ + +static void FreeInitResources(t_Dtsec *p_Dtsec) +{ + /*TODO - need to ask why with mdioIrq != 0*/ + if ((p_Dtsec->mdioIrq != 0) && (p_Dtsec->mdioIrq != NO_IRQ)) + { + XX_DisableIntr(p_Dtsec->mdioIrq); + XX_FreeIntr(p_Dtsec->mdioIrq); + } + else if (p_Dtsec->mdioIrq == 0) + FmUnregisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC, p_Dtsec->macId, e_FM_INTR_TYPE_NORMAL); + FmUnregisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC, p_Dtsec->macId, e_FM_INTR_TYPE_ERR); + FmUnregisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC_TMR, p_Dtsec->macId, e_FM_INTR_TYPE_NORMAL); + + /* release the driver's group hash table */ + FreeHashTable(p_Dtsec->p_MulticastAddrHash); + p_Dtsec->p_MulticastAddrHash = NULL; + + /* release the driver's individual hash table */ + FreeHashTable(p_Dtsec->p_UnicastAddrHash); + p_Dtsec->p_UnicastAddrHash = NULL; +} + +/* ........................................................................... */ + +static void HardwareClearAddrInPaddr(t_Dtsec *p_Dtsec, uint8_t paddrNum) +{ + WRITE_UINT32(((t_DtsecMemMap*)p_Dtsec->p_MemMap)->macaddr[paddrNum].exact_match1, 0x0); + WRITE_UINT32(((t_DtsecMemMap*)p_Dtsec->p_MemMap)->macaddr[paddrNum].exact_match2, 0x0); +} + +/* ........................................................................... */ + +static void HardwareAddAddrInPaddr(t_Dtsec *p_Dtsec, uint64_t *p_Addr, uint8_t paddrNum) +{ + uint32_t tmpReg32 = 0; + uint64_t addr = *p_Addr; + t_DtsecMemMap *p_DtsecMemMap = (t_DtsecMemMap*)p_Dtsec->p_MemMap; + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macaddr[paddrNum].exact_match1, tmpReg32); + + tmpReg32 = (uint32_t)(addr>>32); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macaddr[paddrNum].exact_match2, tmpReg32); +} + +/* ........................................................................... */ + +static t_Error GracefulStop(t_Dtsec *p_Dtsec, e_CommMode mode) +{ + t_DtsecMemMap *p_MemMap; + + ASSERT_COND(p_Dtsec); + + p_MemMap= (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + ASSERT_COND(p_MemMap); + + /* Assert the graceful transmit stop bit */ + if (mode & e_COMM_MODE_RX) + WRITE_UINT32(p_MemMap->rctrl, + GET_UINT32(p_MemMap->rctrl) | RCTRL_GRS); + +#ifdef FM_GRS_ERRATA_DTSEC_A002 + XX_UDelay(100); +#endif /* FM_GRS_ERRATA_DTSEC_A002 */ + +#ifdef FM_GTS_ERRATA_DTSEC_A004 + DBG(INFO, ("GTS not supported due to DTSEC_A004 errata.")); +#else /* not FM_GTS_ERRATA_DTSEC_A004 */ + if (mode & e_COMM_MODE_TX) + WRITE_UINT32(p_MemMap->tctrl, + GET_UINT32(p_MemMap->tctrl) | TCTRL_GTS); +#endif /* not FM_GTS_ERRATA_DTSEC_A004 */ + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error GracefulRestart(t_Dtsec *p_Dtsec, e_CommMode mode) +{ + t_DtsecMemMap *p_MemMap; + + ASSERT_COND(p_Dtsec); + + p_MemMap= (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + ASSERT_COND(p_MemMap); + + /* clear the graceful receive stop bit */ + if(mode & e_COMM_MODE_TX) + WRITE_UINT32(p_MemMap->tctrl, + GET_UINT32(p_MemMap->tctrl) & ~TCTRL_GTS); + + if(mode & e_COMM_MODE_RX) + WRITE_UINT32(p_MemMap->rctrl, + GET_UINT32(p_MemMap->rctrl) & ~RCTRL_GRS); + + return E_OK; +} + + +/*****************************************************************************/ +/* dTSEC Configs modification functions */ +/*****************************************************************************/ + + +/* .............................................................................. */ + +static t_Error DtsecConfigLoopback(t_Handle h_Dtsec, bool newVal) +{ + + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->loopback = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigMaxFrameLength(t_Handle h_Dtsec, uint16_t newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->maxFrameLength = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigPadAndCrc(t_Handle h_Dtsec, bool newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->padAndCrcEnable = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigHalfDuplex(t_Handle h_Dtsec, bool newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->halfDuplex = newVal; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecConfigLengthCheck(t_Handle h_Dtsec, bool newVal) +{ +#ifdef FM_LEN_CHECK_ERRATA_FMAN_SW002 +UNUSED(h_Dtsec); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("LengthCheck!")); + +#else + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->p_DtsecDriverParam->lengthCheckEnable = newVal; + + return E_OK; +#endif /* FM_LEN_CHECK_ERRATA_FMAN_SW002 */ +} + +static t_Error DtsecConfigException(t_Handle h_Dtsec, e_FmMacExceptions exception, bool enable) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t bitMask = 0; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + if(exception != e_FM_MAC_EX_1G_1588_TS_RX_ERR) + { + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Dtsec->exceptions |= bitMask; + else + p_Dtsec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } + else + { + if(!p_Dtsec->ptpTsuEnabled) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exception valid for 1588 only")); + switch(exception){ + case(e_FM_MAC_EX_1G_1588_TS_RX_ERR): + if(enable) + p_Dtsec->enTsuErrExeption = TRUE; + else + p_Dtsec->enTsuErrExeption = FALSE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } + } + return E_OK; +} +/*****************************************************************************/ +/* dTSEC Run Time API functions */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error DtsecEnable(t_Handle h_Dtsec, e_CommMode mode) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap= (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->maccfg1); + if (mode & e_COMM_MODE_RX) + tmpReg32 |= MACCFG1_RX_EN; + if (mode & e_COMM_MODE_TX) + tmpReg32 |= MACCFG1_TX_EN; + WRITE_UINT32(p_MemMap->maccfg1, tmpReg32); + + GracefulRestart(p_Dtsec, mode); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecDisable (t_Handle h_Dtsec, e_CommMode mode) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_MemMap ; + uint32_t tmpReg32 = 0; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_HANDLE); + + p_MemMap = (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + GracefulStop(p_Dtsec, mode); + + tmpReg32 = GET_UINT32(p_MemMap->maccfg1); + if (mode & e_COMM_MODE_RX) + tmpReg32 &= ~MACCFG1_RX_EN; + if (mode & e_COMM_MODE_TX) + tmpReg32 &= ~MACCFG1_TX_EN; + WRITE_UINT32(p_MemMap->maccfg1, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecTxMacPause(t_Handle h_Dtsec, uint16_t pauseTime) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t ptv = 0; + t_DtsecMemMap *p_MemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + if (pauseTime) + { +#ifdef FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 + { + if (pauseTime <= 320) + RETURN_ERROR(MINOR, E_INVALID_VALUE, + ("This pause-time value of %d is illegal due to errata dTSEC-A003!" + " value should be greater than 320.")); + } +#endif /* FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 */ + +#ifdef FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Dtsec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + pauseTime += 2; + } +#endif /* FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 */ + + ptv = GET_UINT32(p_MemMap->ptv); + ptv |= pauseTime; + WRITE_UINT32(p_MemMap->ptv, ptv); + + /* trigger the transmission of a flow-control pause frame */ + WRITE_UINT32(p_MemMap->maccfg1, + GET_UINT32(p_MemMap->maccfg1) | MACCFG1_TX_FLOW); + } + else + { + WRITE_UINT32(p_MemMap->maccfg1, + GET_UINT32(p_MemMap->maccfg1) & ~MACCFG1_TX_FLOW); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecRxIgnoreMacPause(t_Handle h_Dtsec, bool en) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_MemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_STATE); + + p_MemMap = (t_DtsecMemMap*)(p_Dtsec->p_MemMap); + + tmpReg32 = GET_UINT32(p_MemMap->maccfg1); + if (en) + tmpReg32 &= ~MACCFG1_RX_FLOW; + else + tmpReg32 |= MACCFG1_RX_FLOW; + WRITE_UINT32(p_MemMap->maccfg1, tmpReg32); + + return E_OK; +} + + +/* .............................................................................. */ + +static t_Error DtsecEnable1588TimeStamp(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); +#ifdef FM_10_100_SGMII_NO_TS_ERRATA_DTSEC3 + if((p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("1588TimeStamp in 10/100 SGMII")); +#endif /* FM_10_100_SGMII_NO_TS_ERRATA_DTSEC3 */ + p_Dtsec->ptpTsuEnabled = TRUE; + WRITE_UINT32(p_Dtsec->p_MemMap->rctrl, GET_UINT32(p_Dtsec->p_MemMap->rctrl) | RCTRL_RTSE); + WRITE_UINT32(p_Dtsec->p_MemMap->tctrl, GET_UINT32(p_Dtsec->p_MemMap->tctrl) | TCTRL_TTSE); + + return E_OK; +} + +static t_Error DtsecDisable1588TimeStamp(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + + p_Dtsec->ptpTsuEnabled = FALSE; + WRITE_UINT32(p_Dtsec->p_MemMap->rctrl, GET_UINT32(p_Dtsec->p_MemMap->rctrl) & ~RCTRL_RTSE); + WRITE_UINT32(p_Dtsec->p_MemMap->tctrl, GET_UINT32(p_Dtsec->p_MemMap->tctrl) & ~TCTRL_TTSE); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecGetStatistics(t_Handle h_Dtsec, t_FmMacStatistics *p_Statistics) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_Statistics, E_NULL_POINTER); + + if (p_Dtsec->statisticsLevel == e_FM_MAC_NONE_STATISTICS) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Statistics disabled")); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + memset(p_Statistics, 0xff, sizeof(t_FmMacStatistics)); + + if (p_Dtsec->statisticsLevel == e_FM_MAC_FULL_STATISTICS) + { + p_Statistics->eStatPkts64 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr64)) + + p_Dtsec->internalStatistics.tr64; /**< r-10G tr-DT 64 byte frame counter */ + p_Statistics->eStatPkts65to127 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr127)) + + p_Dtsec->internalStatistics.tr127; /**< r-10G 65 to 127 byte frame counter */ + p_Statistics->eStatPkts128to255 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr255)) + + p_Dtsec->internalStatistics.tr255; /**< r-10G 128 to 255 byte frame counter */ + p_Statistics->eStatPkts256to511 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr511)) + + p_Dtsec->internalStatistics.tr511; /**< r-10G 256 to 511 byte frame counter */ + p_Statistics->eStatPkts512to1023 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tr1k)) + + p_Dtsec->internalStatistics.tr1k; /**< r-10G 512 to 1023 byte frame counter */ + p_Statistics->eStatPkts1024to1518 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->trmax)) + + p_Dtsec->internalStatistics.trmax; /**< r-10G 1024 to 1518 byte frame counter */ + p_Statistics->eStatPkts1519to1522 = (MASK22BIT & GET_UINT32(p_DtsecMemMap->trmgv)) + + p_Dtsec->internalStatistics.trmgv; /**< r-10G 1519 to 1522 byte good frame count */ + /* MIB II */ + p_Statistics->ifInOctets = GET_UINT32(p_DtsecMemMap->rbyt) + + p_Dtsec->internalStatistics.rbyt; /**< Total number of byte received. */ + p_Statistics->ifInPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->rpkt)) + + p_Dtsec->internalStatistics.rpkt; /**< Total number of packets received.*/ + p_Statistics->ifInMcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->rmca)) + + p_Dtsec->internalStatistics.rmca; /**< Total number of multicast frame received*/ + p_Statistics->ifInBcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->rbca)) + + p_Dtsec->internalStatistics.rbca; /**< Total number of broadcast frame received */ + p_Statistics->ifOutOctets = GET_UINT32(p_DtsecMemMap->tbyt) + + p_Dtsec->internalStatistics.tbyt; /**< Total number of byte sent. */ + p_Statistics->ifOutPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tpkt)) + + p_Dtsec->internalStatistics.tpkt; /**< Total number of packets sent .*/ + p_Statistics->ifOutMcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tmca)) + + p_Dtsec->internalStatistics.tmca; /**< Total number of multicast frame sent */ + p_Statistics->ifOutBcastPkts = (MASK22BIT & GET_UINT32(p_DtsecMemMap->tbca)) + + p_Dtsec->internalStatistics.tbca; /**< Total number of multicast frame sent */ + } +/* */ + p_Statistics->eStatFragments = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rfrg)) + + p_Dtsec->internalStatistics.rfrg; /**< Total number of packets that were less than 64 octets long with a wrong CRC.*/ + p_Statistics->eStatJabbers = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rjbr)) + + p_Dtsec->internalStatistics.rjbr; /**< Total number of packets longer than valid maximum length octets */ + + p_Statistics->eStatsDropEvents = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rdrp)) + + p_Dtsec->internalStatistics.rdrp; /**< number of dropped packets due to internal errors of the MAC Client. */ + p_Statistics->eStatCRCAlignErrors = (MASK16BIT & GET_UINT32(p_DtsecMemMap->raln)) + + p_Dtsec->internalStatistics.raln; /**< Incremented when frames of correct length but with CRC error are received.*/ + + p_Statistics->eStatUndersizePkts = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rund)) + + p_Dtsec->internalStatistics.rund; /**< Total number of packets that were less than 64 octets long with a good CRC.*/ + p_Statistics->eStatOversizePkts = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rovr)) + + p_Dtsec->internalStatistics.rovr; /**< T,B.D*/ +/* Pause */ + p_Statistics->reStatPause = (MASK16BIT & GET_UINT32(p_DtsecMemMap->rxpf)) + + p_Dtsec->internalStatistics.rxpf; /**< Pause MAC Control received */ + p_Statistics->teStatPause = (MASK16BIT & GET_UINT32(p_DtsecMemMap->txpf)) + + p_Dtsec->internalStatistics.txpf; /**< Pause MAC Control sent */ + + p_Statistics->ifInDiscards = p_Statistics->eStatsDropEvents; /**< Frames received, but discarded due to problems within the MAC RX. */ + + p_Statistics->ifInErrors = p_Statistics->eStatsDropEvents + + p_Statistics->eStatCRCAlignErrors + + (MASK16BIT & GET_UINT32(p_DtsecMemMap->rflr)) + + p_Dtsec->internalStatistics.rflr + + (MASK16BIT & GET_UINT32(p_DtsecMemMap->rcde)) + + p_Dtsec->internalStatistics.rcde + + (MASK16BIT & GET_UINT32(p_DtsecMemMap->rcse)) + + p_Dtsec->internalStatistics.rcse; + + p_Statistics->ifOutDiscards = (MASK16BIT & GET_UINT32(p_DtsecMemMap->tdrp)) + + p_Dtsec->internalStatistics.tdrp; /**< Frames received, but discarded due to problems within the MAC TX N/A!.*/ + p_Statistics->ifOutErrors = p_Statistics->ifOutDiscards /**< Number of frames transmitted with error: */ + + (MASK12BIT & GET_UINT32(p_DtsecMemMap->tfcs)) + + p_Dtsec->internalStatistics.tfcs; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecModifyMacAddress (t_Handle h_Dtsec, t_EnetAddr *p_EnetAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t tmpReg32 = 0; + uint64_t addr; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + /* Initialize MAC Station Address registers (1 & 2) */ + /* Station address have to be swapped (big endian to little endian */ + addr = ((*(uint64_t *)p_EnetAddr) >> 16); + p_Dtsec->addr = addr; + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr1, tmpReg32); + + tmpReg32 = (uint32_t)(addr>>32); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr2, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecResetCounters (t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + /* clear HW counters */ + WRITE_UINT32(p_Dtsec->p_MemMap->ecntrl, GET_UINT32(p_Dtsec->p_MemMap->ecntrl) | ECNTRL_CLRCNT); + + /* clear SW counters holding carries */ + memset((char *)&p_Dtsec->internalStatistics, (char)0x0, sizeof(t_InternalStatistics)); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecAddExactMatchMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *) h_Dtsec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + if (ethAddr & GROUP_ADDRESS) + /* Multicast address has no effect in PADDR */ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Multicast address")); + + /* Make sure no PADDR contains this address */ + for (paddrNum = 0; paddrNum < DTSEC_NUM_OF_PADDRS; paddrNum++) + if (p_Dtsec->indAddrRegUsed[paddrNum]) + if (p_Dtsec->paddr[paddrNum] == ethAddr) + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + + /* Find first unused PADDR */ + for (paddrNum = 0; paddrNum < DTSEC_NUM_OF_PADDRS; paddrNum++) + if (!(p_Dtsec->indAddrRegUsed[paddrNum])) + { + /* mark this PADDR as used */ + p_Dtsec->indAddrRegUsed[paddrNum] = TRUE; + /* store address */ + p_Dtsec->paddr[paddrNum] = ethAddr; + + /* put in hardware */ + HardwareAddAddrInPaddr(p_Dtsec, ðAddr, paddrNum); + p_Dtsec->numOfIndAddrInRegs++; + + return E_OK; + } + + /* No free PADDR */ + RETURN_ERROR(MAJOR, E_FULL, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error DtsecDelExactMatchMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *) h_Dtsec; + uint64_t ethAddr; + uint8_t paddrNum; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* Find used PADDR containing this address */ + for (paddrNum = 0; paddrNum < DTSEC_NUM_OF_PADDRS; paddrNum++) + { + if ((p_Dtsec->indAddrRegUsed[paddrNum]) && + (p_Dtsec->paddr[paddrNum] == ethAddr)) + { + /* mark this PADDR as not used */ + p_Dtsec->indAddrRegUsed[paddrNum] = FALSE; + /* clear in hardware */ + HardwareClearAddrInPaddr(p_Dtsec, paddrNum); + p_Dtsec->numOfIndAddrInRegs--; + + return E_OK; + } + } + + RETURN_ERROR(MAJOR, E_NOT_FOUND, NO_MSG); +} + +/* .............................................................................. */ + +static t_Error DtsecAddHashMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t crc; + uint8_t crcMirror, reg; + uint32_t bitMask; + t_EthHashEntry *p_HashEntry; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + + /* calculate the "crc mirror" */ + crcMirror = MIRROR((uint8_t)crc); + + /* 3 MSB bits define the register */ + reg = (uint8_t)(crcMirror >> 5); + /* 5 LSB bits define the bit within the register */ + bitMask = 0x80000000 >> (crcMirror & 0x1f); + + /* Create element to be added to the driver hash table */ + p_HashEntry = (t_EthHashEntry *)XX_Malloc(sizeof(t_EthHashEntry)); + p_HashEntry->addr = ethAddr; + INIT_LIST(&p_HashEntry->node); + + if (ethAddr & GROUP_ADDRESS) + { + /* Group Address */ + LIST_AddToTail(&(p_HashEntry->node), &(p_Dtsec->p_MulticastAddrHash->p_Lsts[crcMirror])); + /* Set the appropriate bit in GADDR0-7 */ + WRITE_UINT32(p_DtsecMemMap->gaddr[reg], + GET_UINT32(p_DtsecMemMap->gaddr[reg]) | bitMask); + } + else + { + LIST_AddToTail(&(p_HashEntry->node), &(p_Dtsec->p_UnicastAddrHash->p_Lsts[crcMirror])); + /* Set the appropriate bit in IADDR0-7 */ + WRITE_UINT32(p_DtsecMemMap->igaddr[reg], + GET_UINT32(p_DtsecMemMap->igaddr[reg]) | bitMask); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecDelHashMacAddress(t_Handle h_Dtsec, t_EnetAddr *p_EthAddr) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + t_List *p_Pos; + uint32_t crc; + uint8_t crcMirror, reg; + uint32_t bitMask; + t_EthHashEntry *p_HashEntry = NULL; + uint64_t ethAddr; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + ethAddr = ((*(uint64_t *)p_EthAddr) >> 16); + + /* CRC calculation */ + GET_MAC_ADDR_CRC(ethAddr, crc); + + /* calculate the "crc mirror" */ + crcMirror = MIRROR((uint8_t)crc); + + /* 3 MSB bits define the register */ + reg =(uint8_t)( crcMirror >> 5); + /* 5 LSB bits define the bit within the register */ + bitMask = 0x80000000 >> (crcMirror & 0x1f); + + if (ethAddr & GROUP_ADDRESS) + { + /* Group Address */ + LIST_FOR_EACH(p_Pos, &(p_Dtsec->p_MulticastAddrHash->p_Lsts[crcMirror])) + { + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_Pos); + if(p_HashEntry->addr == ethAddr) + { + LIST_DelAndInit(&p_HashEntry->node); + XX_Free(p_HashEntry); + break; + } + } + if(LIST_IsEmpty(&p_Dtsec->p_MulticastAddrHash->p_Lsts[crcMirror])) + WRITE_UINT32(p_DtsecMemMap->gaddr[reg], + GET_UINT32(p_DtsecMemMap->gaddr[reg]) & ~bitMask); + } + else + { + /* Individual Address */ + LIST_FOR_EACH(p_Pos, &(p_Dtsec->p_UnicastAddrHash->p_Lsts[crcMirror])) + { + p_HashEntry = ETH_HASH_ENTRY_OBJ(p_Pos); + if(p_HashEntry->addr == ethAddr) + { + LIST_DelAndInit(&p_HashEntry->node); + XX_Free(p_HashEntry); + break; + } + } + if(LIST_IsEmpty(&p_Dtsec->p_UnicastAddrHash->p_Lsts[crcMirror])) + WRITE_UINT32(p_DtsecMemMap->igaddr[reg], + GET_UINT32(p_DtsecMemMap->igaddr[reg]) & ~bitMask); + } + + /* address does not exist */ + ASSERT_COND(p_HashEntry != NULL); + + return E_OK; +} + + +/* .............................................................................. */ + +static t_Error DtsecSetPromiscuous(t_Handle h_Dtsec, bool newVal) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + tmpReg32 = GET_UINT32(p_DtsecMemMap->rctrl); + + if (newVal) + tmpReg32 |= RCTRL_PROM; + else + tmpReg32 &= ~RCTRL_PROM; + + WRITE_UINT32(p_DtsecMemMap->rctrl, tmpReg32); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecSetStatistics(t_Handle h_Dtsec, e_FmMacStatisticsLevel statisticsLevel) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + p_Dtsec->statisticsLevel = statisticsLevel; + + switch (p_Dtsec->statisticsLevel) + { + case(e_FM_MAC_NONE_STATISTICS): + WRITE_UINT32(p_DtsecMemMap->cam1,0xffffffff); + WRITE_UINT32(p_DtsecMemMap->cam2,0xffffffff); + WRITE_UINT32(p_DtsecMemMap->ecntrl, GET_UINT32(p_DtsecMemMap->ecntrl) & ~ECNTRL_STEN); + WRITE_UINT32(p_DtsecMemMap->imask, GET_UINT32(p_DtsecMemMap->imask) & ~IMASK_MSROEN); + p_Dtsec->exceptions &= ~IMASK_MSROEN; + break; + case(e_FM_MAC_PARTIAL_STATISTICS): + WRITE_UINT32(p_DtsecMemMap->cam1, CAM1_ERRORS_ONLY); + WRITE_UINT32(p_DtsecMemMap->cam2, CAM2_ERRORS_ONLY); + WRITE_UINT32(p_DtsecMemMap->ecntrl, GET_UINT32(p_DtsecMemMap->ecntrl) | ECNTRL_STEN); + WRITE_UINT32(p_DtsecMemMap->imask, GET_UINT32(p_DtsecMemMap->imask) | IMASK_MSROEN); + p_Dtsec->exceptions |= IMASK_MSROEN; + break; + case(e_FM_MAC_FULL_STATISTICS): + WRITE_UINT32(p_DtsecMemMap->cam1,0); + WRITE_UINT32(p_DtsecMemMap->cam2,0); + WRITE_UINT32(p_DtsecMemMap->ecntrl, GET_UINT32(p_DtsecMemMap->ecntrl) | ECNTRL_STEN); + WRITE_UINT32(p_DtsecMemMap->imask, GET_UINT32(p_DtsecMemMap->imask) | IMASK_MSROEN); + p_Dtsec->exceptions |= IMASK_MSROEN; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecAdjustLink(t_Handle h_Dtsec, e_EnetSpeed speed, bool fullDuplex) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + p_DtsecMemMap = p_Dtsec->p_MemMap; + SANITY_CHECK_RETURN_ERROR(p_DtsecMemMap, E_INVALID_HANDLE); + + if (!fullDuplex && + ((speed >= e_ENET_SPEED_1000) || + (ENET_INTERFACE_FROM_MODE(p_Dtsec->enetMode) == e_ENET_IF_SGMII))) + RETURN_ERROR(MAJOR, E_CONFLICT, ("Ethernet interface does not support Half Duplex mode")); + + p_Dtsec->enetMode = MAKE_ENET_MODE(ENET_INTERFACE_FROM_MODE(p_Dtsec->enetMode), speed); + p_Dtsec->halfDuplex = !fullDuplex; + + tmpReg32 = GET_UINT32(p_DtsecMemMap->maccfg2); + if(p_Dtsec->halfDuplex) + tmpReg32 &= ~MACCFG2_FULL_DUPLEX; + else + tmpReg32 |= MACCFG2_FULL_DUPLEX; + + tmpReg32 &= ~(MACCFG2_NIBBLE_MODE | MACCFG2_BYTE_MODE); + if((p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100)|| + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + tmpReg32 |= MACCFG2_NIBBLE_MODE; + else if((p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_GMII_1000)) + tmpReg32 |= MACCFG2_BYTE_MODE; + WRITE_UINT32(p_DtsecMemMap->maccfg2, tmpReg32); + + tmpReg32 = GET_UINT32(p_DtsecMemMap->ecntrl); + if (!(tmpReg32 & ECNTRL_CFG_RO)) + { + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + tmpReg32 |= ECNTRL_R100M; + else + tmpReg32 &= ~ECNTRL_R100M; + WRITE_UINT32(p_DtsecMemMap->ecntrl, tmpReg32); + } + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecGetId(t_Handle h_Dtsec, uint32_t *macId) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + + *macId = p_Dtsec->macId; + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecGetVersion(t_Handle h_Dtsec, uint32_t *macVersion) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + *macVersion = GET_UINT32(p_DtsecMemMap->tsec_id1); + + return E_OK; +} + +/* .............................................................................. */ + +static t_Error DtsecSetException(t_Handle h_Dtsec, e_FmMacExceptions exception, bool enable) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + uint32_t tmpReg, bitMask = 0; + t_DtsecMemMap *p_DtsecMemMap; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Dtsec->p_DtsecDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_NULL_POINTER); + + p_DtsecMemMap = p_Dtsec->p_MemMap; + + if(exception != e_FM_MAC_EX_1G_1588_TS_RX_ERR) + { + GET_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_Dtsec->exceptions |= bitMask; + else + p_Dtsec->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + tmpReg = GET_UINT32(p_DtsecMemMap->imask); + if(enable) + tmpReg |= bitMask; + else + tmpReg &= ~bitMask; + WRITE_UINT32(p_DtsecMemMap->imask, tmpReg); + + /* warn if MIB OVFL is disabled and statistic gathering is enabled */ + if((exception == e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL) && + !enable && + (p_Dtsec->statisticsLevel != e_FM_MAC_NONE_STATISTICS)) + DBG(WARNING, ("Disabled MIB counters overflow exceptions. Counters value may be inaccurate due to unregistered overflow")); + + } + else + { + if(!p_Dtsec->ptpTsuEnabled) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exception valid for 1588 only")); + tmpReg = GET_UINT32(p_DtsecMemMap->tmr_pemask); + switch(exception){ + case(e_FM_MAC_EX_1G_1588_TS_RX_ERR): + if(enable) + { + p_Dtsec->enTsuErrExeption = TRUE; + WRITE_UINT32(p_DtsecMemMap->tmr_pemask, tmpReg | PEMASK_TSRE); + } + else + { + p_Dtsec->enTsuErrExeption = FALSE; + WRITE_UINT32(p_DtsecMemMap->tmr_pemask, tmpReg & ~PEMASK_TSRE); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + } + } + + return E_OK; +} + +/* ........................................................................... */ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +static t_Error DtsecDumpRegs(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + int i = 0; + + DECLARE_DUMP; + + if (p_Dtsec->p_MemMap) + { + + DUMP_TITLE(p_Dtsec->p_MemMap, ("MAC %d: ", p_Dtsec->macId)); + DUMP_VAR(p_Dtsec->p_MemMap, tsec_id1); + DUMP_VAR(p_Dtsec->p_MemMap, tsec_id2); + DUMP_VAR(p_Dtsec->p_MemMap, ievent); + DUMP_VAR(p_Dtsec->p_MemMap, imask); + DUMP_VAR(p_Dtsec->p_MemMap, edis); + DUMP_VAR(p_Dtsec->p_MemMap, ecntrl); + DUMP_VAR(p_Dtsec->p_MemMap, ptv); + DUMP_VAR(p_Dtsec->p_MemMap, tmr_ctrl); + DUMP_VAR(p_Dtsec->p_MemMap, tmr_pevent); + DUMP_VAR(p_Dtsec->p_MemMap, tmr_pemask); + DUMP_VAR(p_Dtsec->p_MemMap, tctrl); + DUMP_VAR(p_Dtsec->p_MemMap, rctrl); + DUMP_VAR(p_Dtsec->p_MemMap, maccfg1); + DUMP_VAR(p_Dtsec->p_MemMap, maccfg2); + DUMP_VAR(p_Dtsec->p_MemMap, ipgifg); + DUMP_VAR(p_Dtsec->p_MemMap, hafdup); + DUMP_VAR(p_Dtsec->p_MemMap, maxfrm); + + DUMP_VAR(p_Dtsec->p_MemMap, macstnaddr1); + DUMP_VAR(p_Dtsec->p_MemMap, macstnaddr2); + + DUMP_SUBSTRUCT_ARRAY(i, 8) + { + DUMP_VAR(p_Dtsec->p_MemMap, macaddr[i].exact_match1); + DUMP_VAR(p_Dtsec->p_MemMap, macaddr[i].exact_match2); + } + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + + +/*****************************************************************************/ +/* FM Init & Free API */ +/*****************************************************************************/ + +/* .............................................................................. */ + +static t_Error DtsecInit(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_DtsecDriverParam *p_DtsecDriverParam; + t_DtsecMemMap *p_DtsecMemMap; + int i; + uint32_t tmpReg32; + uint64_t addr; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_DtsecDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MemMap, E_INVALID_STATE); + + CHECK_INIT_PARAMETERS(p_Dtsec, CheckInitParameters); + + p_DtsecDriverParam = p_Dtsec->p_DtsecDriverParam; + p_Dtsec->halfDuplex = p_DtsecDriverParam->halfDuplex; + p_Dtsec->debugMode = p_DtsecDriverParam->debugMode; + p_DtsecMemMap = p_Dtsec->p_MemMap; + + /*************dtsec_id2******************/ + tmpReg32 = GET_UINT32(p_DtsecMemMap->tsec_id2); + + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_100)) + if(tmpReg32 & ID2_INT_REDUCED_OFF) + { + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("no support for reduced interface in current DTSEC version")); + } + + if ((p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_MII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_MII_100)) + if(tmpReg32 & ID2_INT_NORMAL_OFF) + { + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("no support for normal interface in current DTSEC version")); + } + /*************dtsec_id2******************/ + + /***************EDIS************************/ + WRITE_UINT32(p_DtsecMemMap->edis, p_DtsecDriverParam->errorDisabled); + /***************EDIS************************/ + + /***************ECNTRL************************/ + tmpReg32 = 0; + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_GMII_1000)) + tmpReg32 |= ECNTRL_GMIIM; + if ((p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)) + tmpReg32 |= (ECNTRL_SGMIIM | ECNTRL_TBIM); + if (p_Dtsec->enetMode == e_ENET_MODE_QSGMII_1000) + tmpReg32 |= (ECNTRL_SGMIIM | ECNTRL_TBIM | ECNTRL_QSGMIIM); + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_10)|| + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100)) + tmpReg32 |= ECNTRL_RPM; + if ((p_Dtsec->enetMode == e_ENET_MODE_RGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_100)) + tmpReg32 |= ECNTRL_R100M; + if ((p_Dtsec->enetMode == e_ENET_MODE_RMII_10) || (p_Dtsec->enetMode == e_ENET_MODE_RMII_100)) + tmpReg32 |= ECNTRL_RMM; + WRITE_UINT32(p_DtsecMemMap->ecntrl, tmpReg32); + /***************ECNTRL************************/ + + /***************PTV************************/ + tmpReg32 = 0; +#ifdef FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Dtsec->fmMacControllerDriver.h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_DtsecDriverParam->pauseTime += 2; + } +#endif /* FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 */ + if (p_DtsecDriverParam->pauseTime) + tmpReg32 |= (uint32_t)p_DtsecDriverParam->pauseTime; + + if (p_DtsecDriverParam->pauseExtended) + tmpReg32 |= ((uint32_t)p_DtsecDriverParam->pauseExtended) << PTV_PTE_OFST; + WRITE_UINT32(p_DtsecMemMap->ptv, tmpReg32); + /***************PTV************************/ + + /***************TCTRL************************/ + tmpReg32 = 0; + if(p_DtsecDriverParam->halfDuplex) + { + if(p_DtsecDriverParam->halfDulexFlowControlEn) + tmpReg32 |= TCTRL_THDF; + } + else + { + if(p_DtsecDriverParam->txTimeStampEn) + tmpReg32 |= TCTRL_TTSE; + } + WRITE_UINT32(p_DtsecMemMap->tctrl, tmpReg32); + /***************TCTRL************************/ + + /***************RCTRL************************/ + tmpReg32 = 0; + if (p_DtsecDriverParam->packetAlignmentPadding) + tmpReg32 |= ((uint32_t)(0x0000001f & p_DtsecDriverParam->packetAlignmentPadding)) << 16; + if (p_DtsecDriverParam->controlFrameAccept) + tmpReg32 |= RCTRL_CFA; + if (p_DtsecDriverParam->groupHashExtend) + tmpReg32 |= RCTRL_GHTX; + if(p_DtsecDriverParam->rxTimeStampEn) + tmpReg32 |= RCTRL_RTSE; + if (p_DtsecDriverParam->broadcReject) + tmpReg32 |= RCTRL_BC_REJ; + if (p_DtsecDriverParam->rxShortFrame) + tmpReg32 |= RCTRL_RSF; + if (p_DtsecDriverParam->promiscuousEnable) + tmpReg32 |= RCTRL_PROM; + if (p_DtsecDriverParam->exactMatch) + tmpReg32 |= RCTRL_EMEN; + + WRITE_UINT32(p_DtsecMemMap->rctrl, tmpReg32); + /***************RCTRL************************/ + + /* Assign a Phy Address to the TBI (TBIPA). */ + /* Done also in case that TBI is not selected to avoid */ + /* conflict with the external PHYs Physical address */ + WRITE_UINT32(p_DtsecMemMap->tbipa, p_DtsecDriverParam->tbiPhyAddr); + + /* Reset the management interface */ + WRITE_UINT32(p_Dtsec->p_MiiMemMap->miimcfg, MIIMCFG_RESET_MGMT); + WRITE_UINT32(p_Dtsec->p_MiiMemMap->miimcfg, ~MIIMCFG_RESET_MGMT); + /* Setup the MII Mgmt clock speed */ + WRITE_UINT32(p_Dtsec->p_MiiMemMap->miimcfg, + (uint32_t)GetMiiDiv((int32_t)(((p_Dtsec->fmMacControllerDriver.clkFreq*10)/2)/8))); + + if(p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000) + { + uint16_t tmpReg16; + + /* Configure the TBI PHY Control Register */ + tmpReg16 = PHY_TBICON_SPEED2 | PHY_TBICON_SRESET; + + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 17, tmpReg16); + + tmpReg16 = PHY_TBICON_SPEED2; + + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 17, tmpReg16); + + if(!p_DtsecDriverParam->halfDuplex) + tmpReg16 |= PHY_CR_FULLDUPLEX | 0x8000 | PHY_CR_ANE; + + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 0, tmpReg16); + + tmpReg16 = 0x01a0; + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 4, tmpReg16); + + tmpReg16 = 0x1340; + DTSEC_MII_WritePhyReg(p_Dtsec, p_DtsecDriverParam->tbiPhyAddr, 0, tmpReg16); + } + + /***************TMR_CTL************************/ + WRITE_UINT32(p_DtsecMemMap->tmr_ctrl, 0); + + if(p_Dtsec->ptpTsuEnabled) + { + tmpReg32 = 0; + if (p_Dtsec->enTsuErrExeption) + tmpReg32 |= PEMASK_TSRE; + WRITE_UINT32(p_DtsecMemMap->tmr_pemask, tmpReg32); + WRITE_UINT32(p_DtsecMemMap->tmr_pevent, tmpReg32); + } + + /***************DEBUG************************/ + tmpReg32 = 0; + if(p_DtsecDriverParam->debugMode) + WRITE_UINT32(p_DtsecMemMap->tsec_id1, TSEC_ID1_DEBUG); + /***************DEBUG************************/ + + /***************MACCFG1***********************/ + WRITE_UINT32(p_DtsecMemMap->maccfg1, MACCFG1_SOFT_RESET); + WRITE_UINT32(p_DtsecMemMap->maccfg1, 0); + tmpReg32 = 0; + if(p_DtsecDriverParam->loopback) + tmpReg32 |= MACCFG1_LOOPBACK; + if(p_DtsecDriverParam->actOnRxPauseFrame) + tmpReg32 |= MACCFG1_RX_FLOW; + if(p_DtsecDriverParam->actOnTxPauseFrame) + tmpReg32 |= MACCFG1_TX_FLOW; + WRITE_UINT32(p_DtsecMemMap->maccfg1, tmpReg32); + /***************MACCFG1***********************/ + + /***************MACCFG2***********************/ + tmpReg32 = 0; + if( (p_Dtsec->enetMode == e_ENET_MODE_RMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RMII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_MII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_MII_100) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_RGMII_100)|| + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_10) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_100)) + tmpReg32 |= MACCFG2_NIBBLE_MODE; + else if((p_Dtsec->enetMode == e_ENET_MODE_RGMII_1000) || + (p_Dtsec->enetMode == e_ENET_MODE_SGMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_GMII_1000)|| + (p_Dtsec->enetMode == e_ENET_MODE_QSGMII_1000)) + tmpReg32 |= MACCFG2_BYTE_MODE; + + tmpReg32 |= (((uint32_t)p_DtsecDriverParam->preambleLength) & 0x0000000f)<< PREAMBLE_LENGTH_SHIFT; + + if(p_DtsecDriverParam->preambleRxEn) + tmpReg32 |= MACCFG2_PRE_AM_Rx_EN; + if(p_DtsecDriverParam->preambleTxEn) + tmpReg32 |= MACCFG2_PRE_AM_Tx_EN; + if(p_DtsecDriverParam->lengthCheckEnable) + tmpReg32 |= MACCFG2_LENGTH_CHECK; + if(p_DtsecDriverParam->padAndCrcEnable) + tmpReg32 |= MACCFG2_PAD_CRC_EN; + if(p_DtsecDriverParam->crcEnable) + tmpReg32 |= MACCFG2_CRC_EN; + if(!p_DtsecDriverParam->halfDuplex) + tmpReg32 |= MACCFG2_FULL_DUPLEX; + WRITE_UINT32(p_DtsecMemMap->maccfg2, tmpReg32); + /***************MACCFG2***********************/ + + /***************IPGIFG************************/ + tmpReg32 = 0; + ASSERT_COND(p_DtsecDriverParam->nonBackToBackIpg1 <= p_DtsecDriverParam->nonBackToBackIpg2); + tmpReg32 = (uint32_t)((((uint32_t)p_DtsecDriverParam->nonBackToBackIpg1 << + IPGIFG_NON_BACK_TO_BACK_IPG_1_SHIFT) & IPGIFG_NON_BACK_TO_BACK_IPG_1) | + (((uint32_t)p_DtsecDriverParam->nonBackToBackIpg2 << + IPGIFG_NON_BACK_TO_BACK_IPG_2_SHIFT) & IPGIFG_NON_BACK_TO_BACK_IPG_2) | + (((uint32_t)p_DtsecDriverParam->minIfgEnforcement << + IPGIFG_MIN_IFG_ENFORCEMENT_SHIFT) & IPGIFG_MIN_IFG_ENFORCEMENT) | + ((uint32_t)p_DtsecDriverParam->backToBackIpg & IPGIFG_BACK_TO_BACK_IPG)); + WRITE_UINT32(p_DtsecMemMap->ipgifg, tmpReg32); + /***************IPGIFG************************/ + + /***************HAFDUP************************/ + tmpReg32 = 0; + if(p_DtsecDriverParam->alternateBackoffEnable) + { + tmpReg32 = (uint32_t) (HAFDUP_ALT_BEB | (((uint32_t)p_DtsecDriverParam->alternateBackoffVal & 0x0000000f) << + HAFDUP_ALTERNATE_BEB_TRUNCATION_SHIFT)); + } + + if(p_DtsecDriverParam->backPressureNoBackoff) + tmpReg32 |= HAFDUP_BP_NO_BACKOFF; + if(p_DtsecDriverParam->noBackoff) + tmpReg32 |= HAFDUP_NO_BACKOFF; + if(p_DtsecDriverParam->excessDefer) + tmpReg32 |= HAFDUP_EXCESS_DEFER; + tmpReg32 |= (((uint32_t)p_DtsecDriverParam->maxRetransmission << + HAFDUP_RETRANSMISSION_MAX_SHIFT )& HAFDUP_RETRANSMISSION_MAX); + tmpReg32|= ((uint32_t)p_DtsecDriverParam->collisionWindow & HAFDUP_COLLISION_WINDOW); + + WRITE_UINT32(p_DtsecMemMap->hafdup, tmpReg32); + /***************HAFDUP************************/ + + /***************MAXFRM************************/ + /* Initialize MAXFRM */ + WRITE_UINT32(p_DtsecMemMap->maxfrm, + p_DtsecDriverParam->maxFrameLength); + err = FmSetMacMaxFrame(p_Dtsec->fmMacControllerDriver.h_Fm, + e_FM_MAC_1G, + p_Dtsec->fmMacControllerDriver.macId, + p_DtsecDriverParam->maxFrameLength); + if (err) + RETURN_ERROR(MAJOR, err, NO_MSG); + /***************MAXFRM************************/ + + /***************CAM1************************/ + WRITE_UINT32(p_DtsecMemMap->cam1,0xffffffff); + WRITE_UINT32(p_DtsecMemMap->cam2,0xffffffff); + + /***************IMASK************************/ + WRITE_UINT32(p_DtsecMemMap->imask, p_Dtsec->exceptions); + /***************IMASK************************/ + + /***************IEVENT************************/ + WRITE_UINT32(p_DtsecMemMap->ievent, EVENTS_MASK); + + /***************MACSTNADDR1/2*****************/ + /* Initialize MAC Station Address registers (1 & 2) */ + /* Station address have to be swapped (big endian to little endian */ + addr = p_Dtsec->addr; + + tmpReg32 = (uint32_t)(addr); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr1, tmpReg32); + + tmpReg32 = (uint32_t)(addr>>32); + SwapUint32P(&tmpReg32); + WRITE_UINT32(p_DtsecMemMap->macstnaddr2, tmpReg32); + /***************MACSTNADDR1/2*****************/ + + /***************DEBUG*****************/ + WRITE_UINT32(p_DtsecMemMap->tx_threshold, (uint32_t)(p_DtsecDriverParam->fifoTxThr & 0x7f)); + WRITE_UINT32(p_DtsecMemMap->tx_watermark_high, (uint32_t)(p_DtsecDriverParam->fifoTxWatermarkH & 0x7f)); + WRITE_UINT32(p_DtsecMemMap->rx_watermark_low, (uint32_t)(p_DtsecDriverParam->fifoRxWatermarkL & 0x7f)); + /***************DEBUG*****************/ + + /*****************HASH************************/ + for(i=0 ; iigaddr[i], 0); + /* Initialize GADDRx */ + WRITE_UINT32(p_DtsecMemMap->gaddr[i], 0); + } + + p_Dtsec->p_MulticastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Dtsec->p_MulticastAddrHash) + { + FreeInitResources(p_Dtsec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MC hash table is FAILED")); + } + + p_Dtsec->p_UnicastAddrHash = AllocHashTable(HASH_TABLE_SIZE); + if(!p_Dtsec->p_UnicastAddrHash) + { + FreeInitResources(p_Dtsec); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("UC hash table is FAILED")); + } + + /* register err intr handler for dtsec to FPM (err)*/ + FmRegisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC, p_Dtsec->macId, e_FM_INTR_TYPE_ERR, DtsecErrException , p_Dtsec); + /* register 1588 intr handler for TMR to FPM (normal)*/ + FmRegisterIntr(p_Dtsec->fmMacControllerDriver.h_Fm, e_FM_MOD_1G_MAC_TMR, p_Dtsec->macId, e_FM_INTR_TYPE_NORMAL, Dtsec1588Exception , p_Dtsec); + /* register normal intr handler for dtsec to main interrupt controller. */ + if (p_Dtsec->mdioIrq != NO_IRQ) + { + XX_SetIntr(p_Dtsec->mdioIrq, DtsecException, p_Dtsec); + XX_EnableIntr(p_Dtsec->mdioIrq); + } + + XX_Free(p_DtsecDriverParam); + p_Dtsec->p_DtsecDriverParam = NULL; + + err = DtsecSetStatistics(p_Dtsec, e_FM_MAC_FULL_STATISTICS); + if(err) + { + FreeInitResources(p_Dtsec); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +/* ........................................................................... */ + +static t_Error DtsecFree(t_Handle h_Dtsec) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + + FreeInitResources(p_Dtsec); + + if (p_Dtsec->p_DtsecDriverParam) + { + XX_Free(p_Dtsec->p_DtsecDriverParam); + p_Dtsec->p_DtsecDriverParam = NULL; + } + XX_Free (h_Dtsec); + + return E_OK; +} + +/* .............................................................................. */ + +static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacControllerDriver) +{ + p_FmMacControllerDriver->f_FM_MAC_Init = DtsecInit; + p_FmMacControllerDriver->f_FM_MAC_Free = DtsecFree; + + p_FmMacControllerDriver->f_FM_MAC_SetStatistics = DtsecSetStatistics; + p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback = DtsecConfigLoopback; + p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength = DtsecConfigMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_ConfigWan = NULL; /* Not supported on dTSEC */ + + p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc = DtsecConfigPadAndCrc; + p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex = DtsecConfigHalfDuplex; + p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck = DtsecConfigLengthCheck; + p_FmMacControllerDriver->f_FM_MAC_ConfigException = DtsecConfigException; + + p_FmMacControllerDriver->f_FM_MAC_Enable = DtsecEnable; + p_FmMacControllerDriver->f_FM_MAC_Disable = DtsecDisable; + + p_FmMacControllerDriver->f_FM_MAC_SetException = DtsecSetException; + + p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous = DtsecSetPromiscuous; + p_FmMacControllerDriver->f_FM_MAC_AdjustLink = DtsecAdjustLink; + + p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp = DtsecEnable1588TimeStamp; + p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp = DtsecDisable1588TimeStamp; + + p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames = DtsecTxMacPause; + p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames = DtsecRxIgnoreMacPause; + + p_FmMacControllerDriver->f_FM_MAC_ResetCounters = DtsecResetCounters; + p_FmMacControllerDriver->f_FM_MAC_GetStatistics = DtsecGetStatistics; + + p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr = DtsecModifyMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr = DtsecAddHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr = DtsecDelHashMacAddress; + p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr = DtsecAddExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr = DtsecDelExactMatchMacAddress; + p_FmMacControllerDriver->f_FM_MAC_GetId = DtsecGetId; + p_FmMacControllerDriver->f_FM_MAC_GetVersion = DtsecGetVersion; + p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength = DtsecGetMaxFrameLength; + + p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = DTSEC_MII_WritePhyReg; + p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = DTSEC_MII_ReadPhyReg; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + p_FmMacControllerDriver->f_FM_MAC_DumpRegs = DtsecDumpRegs; +#endif /* (defined(DEBUG_ERRORS) && ... */ +} + + +/*****************************************************************************/ +/* dTSEC Config Main Entry */ +/*****************************************************************************/ + +/* .............................................................................. */ + +t_Handle DTSEC_Config(t_FmMacParams *p_FmMacParam) +{ + t_Dtsec *p_Dtsec; + t_DtsecDriverParam *p_DtsecDriverParam; + uintptr_t baseAddr; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_NULL_POINTER, NULL); + + baseAddr = p_FmMacParam->baseAddr; + /* allocate memory for the UCC GETH data structure. */ + p_Dtsec = (t_Dtsec *) XX_Malloc(sizeof(t_Dtsec)); + if (!p_Dtsec) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("dTSEC driver structure")); + return NULL; + } + /* Zero out * p_Dtsec */ + memset(p_Dtsec, 0, sizeof(t_Dtsec)); + InitFmMacControllerDriver(&p_Dtsec->fmMacControllerDriver); + + /* allocate memory for the dTSEC driver parameters data structure. */ + p_DtsecDriverParam = (t_DtsecDriverParam *) XX_Malloc(sizeof(t_DtsecDriverParam)); + if (!p_DtsecDriverParam) + { + XX_Free(p_Dtsec); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("dTSEC driver parameters")); + return NULL; + } + /* Zero out */ + memset(p_DtsecDriverParam, 0, sizeof(t_DtsecDriverParam)); + + /* Plant parameter structure pointer */ + p_Dtsec->p_DtsecDriverParam = p_DtsecDriverParam; + + SetDefaultParam(p_DtsecDriverParam); + + for (i=0; i < sizeof(p_FmMacParam->addr); i++) + p_Dtsec->addr |= ((uint64_t)p_FmMacParam->addr[i] << ((5-i) * 8)); + + p_Dtsec->p_MemMap = (t_DtsecMemMap *)UINT_TO_PTR(baseAddr); + p_Dtsec->p_MiiMemMap = (t_MiiAccessMemMap *)UINT_TO_PTR(baseAddr + DTSEC_TO_MII_OFFSET); + p_Dtsec->enetMode = p_FmMacParam->enetMode; + p_Dtsec->macId = p_FmMacParam->macId; + p_Dtsec->exceptions = DEFAULT_exceptions; + p_Dtsec->mdioIrq = p_FmMacParam->mdioIrq; + p_Dtsec->f_Exception = p_FmMacParam->f_Exception; + p_Dtsec->f_Event = p_FmMacParam->f_Event; + p_Dtsec->h_App = p_FmMacParam->h_App; + + return p_Dtsec; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/tgec_mii_acc.c @@ -0,0 +1,121 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_mac.h" +#include "tgec.h" +#include "xx_ext.h" + + +/*****************************************************************************/ +t_Error TGEC_MII_WritePhyReg(t_Handle h_Tgec, + uint8_t phyAddr, + uint8_t reg, + uint16_t data) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMiiAccessMemMap *p_MiiAccess; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Tgec->p_MiiMemMap; + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_command, phyAddr); + + WRITE_UINT32(p_MiiAccess->mdio_regaddr, reg); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_data, data); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_data)) & MIIDATA_BUSY) + XX_UDelay (1); + + return E_OK; +} + +/*****************************************************************************/ +t_Error TGEC_MII_ReadPhyReg(t_Handle h_Tgec, + uint8_t phyAddr, + uint8_t reg, + uint16_t *p_Data) +{ + t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; + t_TgecMiiAccessMemMap *p_MiiAccess; + uint32_t cfg_status; + + SANITY_CHECK_RETURN_ERROR(p_Tgec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Tgec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Tgec->p_MiiMemMap; + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_command, phyAddr); + + WRITE_UINT32(p_MiiAccess->mdio_regaddr, reg); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_cfg_status)) & MIIMIND_BUSY) + XX_UDelay (1); + + WRITE_UINT32(p_MiiAccess->mdio_command, (uint32_t)(phyAddr | MIIMCOM_READ_CYCLE)); + + CORE_MemoryBarrier(); + + while ((GET_UINT32(p_MiiAccess->mdio_data)) & MIIDATA_BUSY) + XX_UDelay (1); + + *p_Data = (uint16_t)GET_UINT32(p_MiiAccess->mdio_data); + + cfg_status = GET_UINT32(p_MiiAccess->mdio_cfg_status); + + if (cfg_status & MIIMIND_READ_ERROR) + RETURN_ERROR(MINOR, E_INVALID_VALUE, + ("Read Error: phyAddr 0x%x, dev 0x%x, reg 0x%x, cfg_status 0x%x", + ((phyAddr & 0xe0)>>5), (phyAddr & 0x1f), reg, cfg_status)); + + return E_OK; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/fm_mac.c @@ -0,0 +1,560 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_mac.c + + @Description FM MAC ... +*//***************************************************************************/ +#include "std_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "error_ext.h" +#include "fm_ext.h" + +#include "fm_common.h" +#include "fm_mac.h" + + +/* ........................................................................... */ + +t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver; + + SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL); + + if(ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000) + p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam); + else + p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam); + + if (!p_FmMacControllerDriver) + return NULL; + + p_FmMacControllerDriver->h_Fm = p_FmMacParam->h_Fm; + p_FmMacControllerDriver->enetMode = p_FmMacParam->enetMode; + p_FmMacControllerDriver->macId = p_FmMacParam->macId; + p_FmMacControllerDriver->resetOnInit = DEFAULT_resetOnInit; + + return (t_Handle)p_FmMacControllerDriver; +} + +/* ........................................................................... */ + +t_Error FM_MAC_Init (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->resetOnInit && + (FmResetMac(p_FmMacControllerDriver->h_Fm, + ((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ? e_FM_MAC_10G : e_FM_MAC_1G), + p_FmMacControllerDriver->macId) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!")); + + if ((p_FmMacControllerDriver->clkFreq = FmGetClockFreq(p_FmMacControllerDriver->h_Fm)) == 0) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!")); + + if (p_FmMacControllerDriver->f_FM_MAC_Init) + return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Free (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Free) + return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + p_FmMacControllerDriver->resetOnInit = enable; + + return E_OK; +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback) + return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength) + return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan) + return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc) + return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex) + return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck) + return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigException) + return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +/* ........................................................................... */ + +t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround) + return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + + +/*****************************************************************************/ +/* Run Time Control */ +/*****************************************************************************/ + +/* ........................................................................... */ + +t_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Enable) + return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Disable) + return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp) + return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp) + return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames) + return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac, pauseTime); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames) + return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ResetCounters (t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters) + return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetException) + return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics) + return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics) + return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr) + return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_GetVersion) + return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); + +} + +/* ........................................................................... */ + +t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_GetId) + return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous) + return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink) + return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg) + return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg) + return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data); + + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} + +/* ........................................................................... */ + +uint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0); + + if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength) + return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac); + + REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); + return 0; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/*****************************************************************************/ +t_Error FM_MAC_DumpRegs(t_Handle h_FmMac) +{ + t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; + + SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); + + if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs) + return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac); + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec_mii_acc.c @@ -0,0 +1,120 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File dtsec_mii_acc.c + + @Description FM dtsec MII register access MAC ... +*//***************************************************************************/ + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_mac.h" +#include "dtsec.h" + + +/*****************************************************************************/ +t_Error DTSEC_MII_WritePhyReg(t_Handle h_Dtsec, + uint8_t phyAddr, + uint8_t reg, + uint16_t data) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_MiiAccessMemMap *p_MiiAccess; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Dtsec->p_MiiMemMap; + + /* Stop the MII management read cycle */ + WRITE_UINT32(p_MiiAccess->miimcom, 0); + /* Dummy read to make sure MIIMCOM is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcom); + + /* Setting up MII Management Address Register */ + tmpReg = (uint32_t)((phyAddr << MIIMADD_PHY_ADDR_SHIFT) | reg); + WRITE_UINT32(p_MiiAccess->miimadd, tmpReg); + + /* Setting up MII Management Control Register with data */ + WRITE_UINT32(p_MiiAccess->miimcon, (uint32_t)data); + /* Dummy read to make sure MIIMCON is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcon); + + /* Wait till MII management write is complete */ + while ((GET_UINT32(p_MiiAccess->miimind)) & MIIMIND_BUSY) ; + + return E_OK; +} + +/*****************************************************************************/ +t_Error DTSEC_MII_ReadPhyReg(t_Handle h_Dtsec, + uint8_t phyAddr, + uint8_t reg, + uint16_t *p_Data) +{ + t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; + t_MiiAccessMemMap *p_MiiAccess; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Dtsec, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Dtsec->p_MiiMemMap, E_INVALID_HANDLE); + + p_MiiAccess = p_Dtsec->p_MiiMemMap; + + /* Setting up the MII Management Address Register */ + tmpReg = (uint32_t)((phyAddr << MIIMADD_PHY_ADDR_SHIFT) | reg); + WRITE_UINT32(p_MiiAccess->miimadd, tmpReg); + + /* Perform an MII management read cycle */ + WRITE_UINT32(p_MiiAccess->miimcom, MIIMCOM_READ_CYCLE); + /* Dummy read to make sure MIIMCOM is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcom); + + /* Wait till MII management read is complete */ + while ((GET_UINT32(p_MiiAccess->miimind)) & MIIMIND_BUSY) ; + + /* Read MII management status */ + *p_Data = (uint16_t)GET_UINT32(p_MiiAccess->miimstat); + + WRITE_UINT32(p_MiiAccess->miimcom, 0); + /* Dummy read to make sure MIIMCOM is written */ + tmpReg = GET_UINT32(p_MiiAccess->miimcom); + + if (*p_Data == 0xffff) + RETURN_ERROR(MINOR, E_NO_DEVICE, + ("Read wrong data (0xffff): phyAddr 0x%x, reg 0x%x", + phyAddr, reg)); + + return E_OK; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/MAC/dtsec.h @@ -0,0 +1,634 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File dtsec.h + + @Description FM dTSEC ... +*//***************************************************************************/ +#ifndef __DTSEC_H +#define __DTSEC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "dtsec_mii_acc.h" +#include "fm_mac.h" + + +#define PEMASK_TSRE 0x00010000 + +#define IMASK_BREN 0x80000000 +#define IMASK_RXCEN 0x40000000 +#define IMASK_MSROEN 0x04000000 +#define IMASK_GTSCEN 0x02000000 +#define IMASK_BTEN 0x01000000 +#define IMASK_TXCEN 0x00800000 +#define IMASK_TXEEN 0x00400000 +#define IMASK_LCEN 0x00040000 +#define IMASK_CRLEN 0x00020000 +#define IMASK_XFUNEN 0x00010000 +#define IMASK_ABRTEN 0x00008000 +#define IMASK_IFERREN 0x00004000 +#define IMASK_MAGEN 0x00000800 +#define IMASK_MMRDEN 0x00000400 +#define IMASK_MMWREN 0x00000200 +#define IMASK_GRSCEN 0x00000100 +#define IMASK_TDPEEN 0x00000002 +#define IMASK_RDPEEN 0x00000001 + +#define EVENTS_MASK ((uint32_t)(IMASK_BREN | \ + IMASK_RXCEN | \ + IMASK_MSROEN | \ + IMASK_GTSCEN | \ + IMASK_BTEN | \ + IMASK_TXCEN | \ + IMASK_TXEEN | \ + IMASK_ABRTEN | \ + IMASK_LCEN | \ + IMASK_CRLEN | \ + IMASK_XFUNEN | \ + IMASK_IFERREN | \ + IMASK_MAGEN | \ + IMASK_MMRDEN | \ + IMASK_MMWREN | \ + IMASK_GRSCEN | \ + IMASK_TDPEEN | \ + IMASK_RDPEEN)) + +#define GET_EXCEPTION_FLAG(bitMask, exception) switch(exception){ \ + case e_FM_MAC_EX_1G_BAB_RX: \ + bitMask = IMASK_BREN; break; \ + case e_FM_MAC_EX_1G_RX_CTL: \ + bitMask = IMASK_RXCEN; break; \ + case e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET: \ + bitMask = IMASK_GTSCEN ; break; \ + case e_FM_MAC_EX_1G_BAB_TX: \ + bitMask = IMASK_BTEN ; break; \ + case e_FM_MAC_EX_1G_TX_CTL: \ + bitMask = IMASK_TXCEN ; break; \ + case e_FM_MAC_EX_1G_TX_ERR: \ + bitMask = IMASK_TXEEN ; break; \ + case e_FM_MAC_EX_1G_LATE_COL: \ + bitMask = IMASK_LCEN ; break; \ + case e_FM_MAC_EX_1G_COL_RET_LMT: \ + bitMask = IMASK_CRLEN ; break; \ + case e_FM_MAC_EX_1G_TX_FIFO_UNDRN: \ + bitMask = IMASK_XFUNEN ; break; \ + case e_FM_MAC_EX_1G_MAG_PCKT: \ + bitMask = IMASK_MAGEN ; break; \ + case e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET: \ + bitMask = IMASK_MMRDEN; break; \ + case e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET: \ + bitMask = IMASK_MMWREN ; break; \ + case e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET: \ + bitMask = IMASK_GRSCEN; break; \ + case e_FM_MAC_EX_1G_TX_DATA_ERR: \ + bitMask = IMASK_TDPEEN; break; \ + case e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL: \ + bitMask = IMASK_MSROEN ; break; \ + default: bitMask = 0;break;} + + +#define MAX_PACKET_ALIGNMENT 31 +#define MAX_INTER_PACKET_GAP 0x7f +#define MAX_INTER_PALTERNATE_BEB 0x0f +#define MAX_RETRANSMISSION 0x0f +#define MAX_COLLISION_WINDOW 0x03ff + + +/********************* From mac ext ******************************************/ +typedef uint32_t t_ErrorDisable; + +#define ERROR_DISABLE_TRANSMIT 0x00400000 +#define ERROR_DISABLE_LATE_COLLISION 0x00040000 +#define ERROR_DISABLE_COLLISION_RETRY_LIMIT 0x00020000 +#define ERROR_DISABLE_TxFIFO_UNDERRUN 0x00010000 +#define ERROR_DISABLE_TxABORT 0x00008000 +#define ERROR_DISABLE_INTERFACE 0x00004000 +#define ERROR_DISABLE_TxDATA_PARITY 0x00000002 +#define ERROR_DISABLE_RxDATA_PARITY 0x00000001 + +/*****************************************************************************/ +#define DTSEC_NUM_OF_PADDRS 15 /* number of pattern match registers (entries) */ + +#define GROUP_ADDRESS 0x0000010000000000LL /* Group address bit indication */ + +#define HASH_TABLE_SIZE 256 /* Hash table size (= 32 bits * 8 regs) */ + +#define DTSEC_TO_MII_OFFSET 0x1120 /* number of pattern match registers (entries) */ + +#define DEFAULT_errorDisabled 0 +#define DEFAULT_promiscuousEnable FALSE +#define DEFAULT_pauseExtended 0x0 +#define DEFAULT_pauseTime 0xf000 +#define DEFAULT_halfDuplex FALSE +#define DEFAULT_halfDulexFlowControlEn FALSE +#define DEFAULT_txTimeStampEn FALSE +#define DEFAULT_rxTimeStampEn FALSE +#define DEFAULT_packetAlignment 0 +#define DEFAULT_controlFrameAccept FALSE +#define DEFAULT_groupHashExtend FALSE +#define DEFAULT_broadcReject FALSE +#define DEFAULT_rxShortFrame TRUE +#define DEFAULT_exactMatch FALSE +#define DEFAULT_debugMode FALSE +#define DEFAULT_loopback FALSE +#define DEFAULT_actOnRxPauseFrame TRUE +#define DEFAULT_actOnTxPauseFrame TRUE + +#define DEFAULT_PreAmLength 0x7 +#define DEFAULT_PreAmRxEn FALSE +#define DEFAULT_PreAmTxEn FALSE +#define DEFAULT_lengthCheckEnable FALSE +#define DEFAULT_padAndCrcEnable TRUE +#define DEFAULT_crcEnable FALSE + +#define DEFAULT_nonBackToBackIpg1 0x40 +#define DEFAULT_nonBackToBackIpg2 0x60 +#define DEFAULT_minIfgEnforcement 0x50 +#define DEFAULT_backToBackIpg 0x60 + +#define DEFAULT_altBackoffVal 0x0A +#define DEFAULT_altBackoffEnable FALSE +#define DEFAULT_backPressureNoBackoff FALSE +#define DEFAULT_noBackoff FALSE +#define DEFAULT_excessDefer TRUE +#define DEFAULT_maxRetransmission 0x0F +#define DEFAULT_collisionWindow 0x37 + +#define DEFAULT_maxFrameLength 0x600 + +#define DEFAULT_collisionWindow 0x37 + +#define DEFAULT_fifoTxThr 0x10 +#define DEFAULT_fifoTxWatermarkH 0x7e +#define DEFAULT_fifoRxWatermarkL 0x08 +#define DEFAULT_tbiPhyAddr 5 + +#define DEFAULT_exceptions ((uint32_t)(IMASK_BREN | \ + IMASK_RXCEN | \ + IMASK_BTEN | \ + IMASK_TXCEN | \ + IMASK_TXEEN | \ + IMASK_ABRTEN | \ + IMASK_LCEN | \ + IMASK_CRLEN | \ + IMASK_XFUNEN | \ + IMASK_IFERREN | \ + IMASK_MAGEN | \ + IMASK_TDPEEN | \ + IMASK_RDPEEN)) + + +#define MAX_PHYS 32 /* maximum number of phys */ + +#define DTSEC_ID1_ID 0xffff0000 +#define DTSEC_ID1_REV_MJ 0x0000FF00 +#define DTSEC_ID1_REV_MN 0x000000ff + +#define ID2_INT_REDUCED_OFF 0x00010000 +#define ID2_INT_NORMAL_OFF 0x00020000 + +#define ECNTRL_CLRCNT 0x00004000 +#define ECNTRL_AUTOZ 0x00002000 +#define ECNTRL_STEN 0x00001000 +#define ECNTRL_CFG_RO 0x80000000 +#define ECNTRL_GMIIM 0x00000040 +#define ECNTRL_TBIM 0x00000020 +#define ECNTRL_SGMIIM 0x00000002 +#define ECNTRL_RPM 0x00000010 +#define ECNTRL_R100M 0x00000008 +#define ECNTRL_RMM 0x00000004 +#define ECNTRL_QSGMIIM 0x00000001 + +#define TCTRL_THDF 0x00000800 +#define TCTRL_TTSE 0x00000040 +#define TCTRL_GTS 0x00000020 +#define TCTRL_TFC_PAUSE 0x00000010 + +/* PTV offsets */ +#define PTV_PTE_OFST 16 + +#define RCTRL_CFA 0x00008000 +#define RCTRL_GHTX 0x00000400 +#define RCTRL_RTSE 0x00000040 +#define RCTRL_GRS 0x00000020 +#define RCTRL_BC_REJ 0x00000010 +#define RCTRL_MPROM 0x00000008 +#define RCTRL_RSF 0x00000004 +#define RCTRL_EMEN 0x00000002 +#define RCTRL_UPROM 0x00000001 +#define RCTRL_PROM (RCTRL_UPROM | RCTRL_MPROM) + +#define TMR_CTL_ESFDP 0x00000800 +#define TMR_CTL_ESFDE 0x00000400 + +#define TSEC_ID1_DEBUG 0x00e00c00 +#define DEBUG_ENABLE 0x80000000 +#define DPERROR_Tx_ERROR_ON_SEC 0x00400000 +#define DPERROR_Tx_ERROR_ON_WRITE 0x10000000 +#define DPERROR_Rx_ERROR_ON_SEC 0x00000040 +#define DPERROR_Rx_ERROR_ON_WRITE 0x00001000 +#define DPERROR_STT 0x80000000 +#define DPERROR_STR 0x00008000 + +#define MACCFG1_SOFT_RESET 0x80000000 +#define MACCFG1_LOOPBACK 0x00000100 +#define MACCFG1_RX_FLOW 0x00000020 +#define MACCFG1_TX_FLOW 0x00000010 +#define MACCFG1_TX_EN 0x00000001 +#define MACCFG1_RX_EN 0x00000004 +#define MACCFG1_RESET_RxMC 0x00080000 +#define MACCFG1_RESET_TxMC 0x00040000 +#define MACCFG1_RESET_RxFUN 0x00020000 +#define MACCFG1_RESET_TxFUN 0x00010000 + +#define MACCFG2_NIBBLE_MODE 0x00000100 +#define MACCFG2_BYTE_MODE 0x00000200 +#define MACCFG2_PRE_AM_Rx_EN 0x00000080 +#define MACCFG2_PRE_AM_Tx_EN 0x00000040 +#define MACCFG2_LENGTH_CHECK 0x00000010 +#define MACCFG2_MAGIC_PACKET_EN 0x00000008 +#define MACCFG2_PAD_CRC_EN 0x00000004 +#define MACCFG2_CRC_EN 0x00000002 +#define MACCFG2_FULL_DUPLEX 0x00000001 + +#define PREAMBLE_LENGTH_SHIFT 12 + +#define IPGIFG_NON_BACK_TO_BACK_IPG_1_SHIFT 24 +#define IPGIFG_NON_BACK_TO_BACK_IPG_2_SHIFT 16 +#define IPGIFG_MIN_IFG_ENFORCEMENT_SHIFT 8 + +#define IPGIFG_NON_BACK_TO_BACK_IPG_1 0x7F000000 +#define IPGIFG_NON_BACK_TO_BACK_IPG_2 0x007F0000 +#define IPGIFG_MIN_IFG_ENFORCEMENT 0x0000FF00 +#define IPGIFG_BACK_TO_BACK_IPG 0x0000007F + +#define HAFDUP_ALT_BEB 0x00080000 +#define HAFDUP_BP_NO_BACKOFF 0x00040000 +#define HAFDUP_NO_BACKOFF 0x00020000 +#define HAFDUP_EXCESS_DEFER 0x00010000 +#define HAFDUP_COLLISION_WINDOW 0x000003ff + +#define HAFDUP_ALTERNATE_BEB_TRUNCATION_SHIFT 20 +#define HAFDUP_RETRANSMISSION_MAX_SHIFT 12 +#define HAFDUP_RETRANSMISSION_MAX 0x0000f000 + +#define NUM_OF_HASH_REGS 8 /* Number of hash table registers */ + +#define DEBUG_GET_FIFO_READ_INDEX 0x007f0000 +#define DEBUG_GET_FIFO_WRITE_INDEX 0x0000007f +/* Pause Time Value Register */ +#define PTV_PTE_SHIFT 16 + +#define MASK22BIT 0x003FFFFF +#define MASK16BIT 0x0000FFFF +#define MASK12BIT 0x00000FFF +#define MASK8BIT 0x000000FF + +#define VAL32BIT 0x100000000LL +#define VAL22BIT 0x00400000 +#define VAL16BIT 0x00010000 +#define VAL12BIT 0x00001000 + +/* PHY Control Register */ +#define PHY_CR_LOOPBACK 0x4000 +#define PHY_CR_SPEED0 0x2000 +#define PHY_CR_ANE 0x1000 +#define PHY_CR_FULLDUPLEX 0x0100 +#define PHY_CR_SPEED1 0x0040 + +#define PHY_TBICON_SRESET 0x8000 +#define PHY_TBICON_SPEED2 0x0020 + +/* CAR1/2 bits */ +#define CAR1_TR64 0x80000000 +#define CAR1_TR127 0x40000000 +#define CAR1_TR255 0x20000000 +#define CAR1_TR511 0x10000000 +#define CAR1_TRK1 0x08000000 +#define CAR1_TRMAX 0x04000000 +#define CAR1_TRMGV 0x02000000 + +#define CAR1_RBYT 0x00010000 +#define CAR1_RPKT 0x00008000 +#define CAR1_RMCA 0x00002000 +#define CAR1_RBCA 0x00001000 +#define CAR1_RXPF 0x00000400 +#define CAR1_RALN 0x00000100 +#define CAR1_RFLR 0x00000080 +#define CAR1_RCDE 0x00000040 +#define CAR1_RCSE 0x00000020 +#define CAR1_RUND 0x00000010 +#define CAR1_ROVR 0x00000008 +#define CAR1_RFRG 0x00000004 +#define CAR1_RJBR 0x00000002 +#define CAR1_RDRP 0x00000001 + +#define CAR2_TFCS 0x00040000 +#define CAR2_TBYT 0x00002000 +#define CAR2_TPKT 0x00001000 +#define CAR2_TMCA 0x00000800 +#define CAR2_TBCA 0x00000400 +#define CAR2_TXPF 0x00000200 +#define CAR2_TDRP 0x00000001 + +#define CAM1_ERRORS_ONLY (CAR1_RXPF | \ + CAR1_RALN | \ + CAR1_RFLR | \ + CAR1_RCDE | \ + CAR1_RCSE | \ + CAR1_RUND | \ + CAR1_ROVR | \ + CAR1_RFRG | \ + CAR1_RJBR | \ + CAR1_RDRP) + +#define CAM2_ERRORS_ONLY (CAR2_TFCS | CAR2_TXPF | CAR2_TDRP) + +typedef struct t_InternalStatistics +{ + uint64_t tr64; + uint64_t tr127; + uint64_t tr255; + uint64_t tr511; + uint64_t tr1k; + uint64_t trmax; + uint64_t trmgv; + uint64_t rfrg; + uint64_t rjbr; + uint64_t rdrp; + uint64_t raln; + uint64_t rund; + uint64_t rovr; + uint64_t rxpf; + uint64_t txpf; + uint64_t rbyt; + uint64_t rpkt; + uint64_t rmca; + uint64_t rbca; + uint64_t rflr; + uint64_t rcde; + uint64_t rcse; + uint64_t tbyt; + uint64_t tpkt; + uint64_t tmca; + uint64_t tbca; + uint64_t tdrp; + uint64_t tfcs; +} t_InternalStatistics; + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct +{ + uint32_t exact_match1; /* octets 1-4 */ + uint32_t exact_match2; /* octets 5-6 */ +} _PackedType macRegs; + +typedef _Packed struct +{ + volatile uint32_t tsec_id1; /* 0x000 ETSEC_ID register */ + volatile uint32_t tsec_id2; /* 0x004 ETSEC_ID2 register */ + volatile uint32_t ievent; /* 0x008 Interrupt event register */ + volatile uint32_t imask; /* 0x00C Interrupt mask register */ + volatile uint32_t edis; /* 0x010 Error disabled register */ + volatile uint32_t ecntrl; /* 0x014 E control register */ + volatile uint32_t ptv; /* 0x018 Pause time value register */ + volatile uint32_t tbipa; /* 0x01C TBI PHY address register */ + volatile uint32_t tmr_ctrl; /* 0x020 Time-stamp Control register */ + volatile uint32_t tmr_pevent; /* 0x024 Time-stamp event register */ + volatile uint32_t tmr_pemask; /* 0x028 Timer event mask register */ + volatile uint32_t DTSEC_RESERVED2; /* 0x02C */ + volatile uint32_t iobistctl; /* 0x030 IO BIST Control register */ + volatile uint32_t DTSEC_RESERVED3[3]; /* 0x034 */ + + volatile uint32_t tctrl; /* 0x040 Transmit control register */ + volatile uint32_t DTSEC_RESERVED4[3]; /* 0x044-0x04C */ + volatile uint32_t rctrl; /* 0x050 Receive control register */ + volatile uint32_t DTSEC_RESERVED5[11]; /* 0x054- 0x07C */ + + volatile uint32_t igaddr[8]; /* 0x080-0x09C Individual/group address registers 0-7 */ + volatile uint32_t gaddr[8]; /* 0x0A0-0x0BC Group address registers 0-7 */ + volatile uint32_t ETSEC_RESERVED6[16]; /* 0x0C0-0x0FC */ + + volatile uint32_t maccfg1; /* 0x100 MAC configuration #1 */ + volatile uint32_t maccfg2; /* 0x104 MAC configuration #2 */ + volatile uint32_t ipgifg; /* 0x108 IPG/IFG */ + volatile uint32_t hafdup; /* 0x10C Half-duplex */ + volatile uint32_t maxfrm; /* 0x110 Maximum frame */ + volatile uint32_t DTSEC_RESERVED7[3]; /* 0x114-0x11C register */ + t_MiiAccessMemMap miiMemMap; + volatile uint32_t ifctrl; /* 0x138 MII Mgmt:interface control */ + volatile uint32_t ifstat; /* 0x13C Interface status */ + volatile uint32_t macstnaddr1; /* 0x140 Station Address,part 1 */ + volatile uint32_t macstnaddr2; /* 0x144 Station Address,part 2 */ + volatile macRegs macaddr[DTSEC_NUM_OF_PADDRS]; /* 0x148-0x1BC mac exact match addresses 1-15, parts 1-2 */ + volatile uint32_t DTSEC_RESERVED8[16]; /* 0x1C0-0x1FC register */ + + /* RMON MIB REGISTERS */ + /* TRANSMIT and RECEIVE COUNTERS */ + + volatile uint32_t tr64; /* 0x200 transmit and receive 64 byte frame counter */ + volatile uint32_t tr127; /* 0x204 transmit and receive 65 to 127 byte frame counter */ + volatile uint32_t tr255; /* 0x208 transmit and receive 128 to 255 byte frame counter */ + volatile uint32_t tr511; /* 0x20C transmit and receive 256 to 511 byte frame counter */ + volatile uint32_t tr1k; /* 0x210 transmit and receive 512 to 1023 byte frame counter */ + volatile uint32_t trmax; /* 0x214 transmit and receive 1024 to 1518 byte frame counter */ + volatile uint32_t trmgv; /* 0x218 transmit and receive 1519 to 1522 byte good VLAN frame count */ + + /* RECEIVE COUNTERS */ + volatile uint32_t rbyt; /* 0x21C receive byte counter */ + volatile uint32_t rpkt; /* 0x220 receive packet counter */ + volatile uint32_t rfcs; /* 0x224 receive FCS error counter */ + volatile uint32_t rmca; /* 0x228 RMCA receive multicast packet counter */ + volatile uint32_t rbca; /* 0x22C receive broadcast packet counter */ + volatile uint32_t rxcf; /* 0x230 receive control frame packet counter */ + volatile uint32_t rxpf; /* 0x234 receive PAUSE frame packet counter */ + volatile uint32_t rxuo; /* 0x238 receive unknown OP code counter */ + volatile uint32_t raln; /* 0x23C receive alignment error counter */ + volatile uint32_t rflr; /* 0x240 receive frame length error counter */ + volatile uint32_t rcde; /* 0x244 receive code error counter */ + volatile uint32_t rcse; /* 0x248 receive carrier sense error counter */ + volatile uint32_t rund; /* 0x24C receive undersize packet counter */ + volatile uint32_t rovr; /* 0x250 receive oversize packet counter */ + volatile uint32_t rfrg; /* 0x254 receive fragments counter */ + volatile uint32_t rjbr; /* 0x258 receive jabber counter */ + volatile uint32_t rdrp; /* 0x25C receive drop */ + + /* TRANSMIT COUNTERS */ + volatile uint32_t tbyt; /* 0x260 transmit byte counter */ + volatile uint32_t tpkt; /* 0x264 transmit packet counter */ + volatile uint32_t tmca; /* 0x268 transmit multicast packet counter */ + volatile uint32_t tbca; /* 0x26C transmit broadcast packet counter */ + volatile uint32_t txpf; /* 0x270 transmit PAUSE control frame counter */ + volatile uint32_t tdfr; /* 0x274 transmit deferral packet counter */ + volatile uint32_t tedf; /* 0x278 transmit excessive deferral packet counter */ + volatile uint32_t tscl; /* 0x27C transmit single collision packet counter */ + volatile uint32_t tmcl; /* 0x280 transmit multiple collision packet counter */ + volatile uint32_t tlcl; /* 0x284 transmit late collision packet counter */ + volatile uint32_t txcl; /* 0x288 transmit excessive collision packet counter */ + volatile uint32_t tncl; /* 0x28C transmit total collision counter */ + volatile uint32_t DTSEC_RESERVED9; /* 0x290 */ + volatile uint32_t tdrp; /* 0x294 transmit drop frame counter */ + volatile uint32_t tjbr; /* 0x298 transmit jabber frame counter */ + volatile uint32_t tfcs; /* 0x29C transmit FCS error counter */ + volatile uint32_t txcf; /* 0x2A0 transmit control frame counter */ + volatile uint32_t tovr; /* 0x2A4 transmit oversize frame counter */ + volatile uint32_t tund; /* 0x2A8 transmit undersize frame counter */ + volatile uint32_t tfrg; /* 0x2AC transmit fragments frame counter */ + + /* GENERAL REGISTERS */ + volatile uint32_t car1; /* 0x2B0 carry register one register* */ + volatile uint32_t car2; /* 0x2B4 carry register two register* */ + volatile uint32_t cam1; /* 0x2B8 carry register one mask register */ + volatile uint32_t cam2; /* 0x2BC carry register two mask register */ + volatile uint32_t DTSEC_RESERVED10[16]; /* 0x2C0-0x2FC */ + + /* Debug and Factory Test Registers */ + volatile uint32_t debug; /* 0x300 DEBUG - Debug Register */ + volatile uint32_t dperror; /* 0x304 DPERROR - Parity Error Register */ + volatile uint32_t hwassert; /* 0x308 HWASSERT */ + volatile uint32_t RESERVED11; /* 0x30C Reserved */ + volatile uint32_t rx_fifo_ptr; /* 0x310 RXFIFOPTR - Rx FIFO R/W Pointer Register */ + volatile uint32_t rx_fifo_dath; /* 0x314 RXFIFODATH - Rx FIFO Data Register */ + volatile uint32_t rx_fifo_datl; /* 0x318 RXFIFODATL - Rx FIFO Data Register */ + volatile uint32_t rx_fifo_stat; /* 0x31C RXFIFOSTAT - Rx FIFO Status Register */ + volatile uint32_t tx_fifo_ptr; /* 0x320 TXFIFOPTR - Tx FIFO R/W Pointer Register */ + volatile uint32_t tx_fifo_dath; /* 0x324 TXFIFODATH - Rx FIFO Data Register */ + volatile uint32_t tx_fifo_datl; /* 0x328 TXFIFODATL - Rx FIFO Data Register */ + volatile uint32_t tx_fifo_stat; /* 0x32C TXFIFOSTAT - Tx FIFO Status Register */ + volatile uint32_t pkt_rcv_cnt; /* 0x330 PKTRCVCNT - Number of packets accepted and written to Rx FIFO */ + volatile uint32_t RESERVED12[3]; /* 0x334-0x33C Reserved */ + volatile uint32_t tx_threshold; /* 0x340 Transmit threshold; Number of entries (4 bytes units) before starting to transmit to the MAC */ + volatile uint32_t tx_watermark_high;/* 0x344 Transmit watermark high; Number of entries (4 byte units) before de-asserting Ready to packet Interface */ + volatile uint32_t rx_watermark_low; /* 0x348 Receive watermark low; Number of entries (4 byte units) before unloading to packet Interface */ +} _PackedType t_DtsecMemMap; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct { + uint32_t errorDisabled; + bool halfDuplex; + uint16_t pauseTime; + uint16_t pauseExtended; + uint8_t tbiPhyAddr; /**< TBI Physical address (1-31) [DEFAULT_tbiPhyAddr] */ + + bool autoZeroCounters; + bool promiscuousEnable; + + bool halfDulexFlowControlEn; + bool txTimeStampEn; + bool rxTimeStampEn; + + uint8_t packetAlignmentPadding; + bool controlFrameAccept; + bool groupHashExtend; + bool broadcReject; + bool rxShortFrame; + bool exactMatch; + + bool debugMode; + + bool loopback; + bool actOnRxPauseFrame; + bool actOnTxPauseFrame; + + uint8_t nonBackToBackIpg1; + uint8_t nonBackToBackIpg2; + uint8_t minIfgEnforcement; + uint8_t backToBackIpg; + + uint8_t preambleLength; + bool preambleRxEn; + bool preambleTxEn; + bool lengthCheckEnable; + bool magicPacketEnable; + bool padAndCrcEnable; + bool crcEnable; + + bool alternateBackoffEnable; + uint8_t alternateBackoffVal; + bool backPressureNoBackoff; + bool noBackoff; + bool excessDefer; + uint8_t maxRetransmission; + uint16_t collisionWindow; + + uint16_t maxFrameLength; + + uint8_t fifoTxThr; + uint8_t fifoTxWatermarkH; + uint8_t fifoRxWatermarkL; +} t_DtsecDriverParam; + +typedef struct { + t_FmMacControllerDriver fmMacControllerDriver; + t_Handle h_App; /**< Handle to the upper layer application */ + t_DtsecMemMap *p_MemMap; /**< pointer to dTSEC memory mapped registers. */ + t_MiiAccessMemMap *p_MiiMemMap; /**< pointer to dTSEC MII memory mapped registers. */ + uint64_t addr; /**< MAC address of device; */ + e_EnetMode enetMode; /**< Ethernet physical interface */ + t_FmMacExceptionCallback *f_Exception; + int mdioIrq; + t_FmMacExceptionCallback *f_Event; + bool indAddrRegUsed[DTSEC_NUM_OF_PADDRS]; /**< Whether a particular individual address recognition register is being used */ + uint64_t paddr[DTSEC_NUM_OF_PADDRS]; /**< MAC address for particular individual address recognition register */ + uint8_t numOfIndAddrInRegs; /**< Number of individual addresses in registers for this station. */ + bool debugMode; + bool halfDuplex; + t_InternalStatistics internalStatistics; + t_EthHash *p_MulticastAddrHash; /* pointer to driver's global address hash table */ + t_EthHash *p_UnicastAddrHash; /* pointer to driver's individual address hash table */ + uint8_t macId; + uint32_t exceptions; + bool ptpTsuEnabled; + bool enTsuErrExeption; + e_FmMacStatisticsLevel statisticsLevel; + + t_DtsecDriverParam *p_DtsecDriverParam; +} t_Dtsec; + + +t_Error DTSEC_MII_WritePhyReg(t_Handle h_Dtsec, uint8_t phyAddr, uint8_t reg, uint16_t data); +t_Error DTSEC_MII_ReadPhyReg(t_Handle h_Dtsec, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + + +#endif /* __DTSEC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/Makefile @@ -0,0 +1,15 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-RTC.o + +fsl-ncsw-RTC-objs := fm_rtc.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.c @@ -0,0 +1,891 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_rtc.c + + @Description FM RTC driver implementation. + + @Cautions None +*//***************************************************************************/ + +#include "error_ext.h" +#include "debug_ext.h" +#include "string_ext.h" +#include "part_ext.h" +#include "xx_ext.h" +#include "ncsw_ext.h" + +#include "fm_rtc.h" +#include "fm_common.h" + + +/*****************************************************************************/ +static void SetDefaultParam(t_FmRtc *p_Rtc) +{ + t_FmRtcDriverParam *p_RtcDriverParam = p_Rtc->p_RtcDriverParam; + int i; + + p_Rtc->outputClockDivisor = DEFAULT_outputClockDivisor; + p_Rtc->p_RtcDriverParam->bypass = DEFAULT_bypass; + p_RtcDriverParam->srcClk = DEFAULT_srcClock; + p_RtcDriverParam->invertInputClkPhase = DEFAULT_invertInputClkPhase; + p_RtcDriverParam->invertOutputClkPhase = DEFAULT_invertOutputClkPhase; + p_RtcDriverParam->pulseRealign = DEFAULT_pulseRealign; + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + p_RtcDriverParam->alarmPolarity[i] = DEFAULT_alarmPolarity; + } + for (i=0; i < FM_RTC_NUM_OF_EXT_TRIGGERS; i++) + { + p_RtcDriverParam->triggerPolarity[i] = DEFAULT_triggerPolarity; + } + p_Rtc->clockPeriodNanoSec = DEFAULT_clockPeriod; /* 1 usec */ +} + +/*****************************************************************************/ +static t_Error CheckInitParameters(t_FmRtc *p_Rtc) +{ + t_FmRtcDriverParam *p_RtcDriverParam = p_Rtc->p_RtcDriverParam; + int i; + + if ((p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_EXTERNAL) && + (p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_SYSTEM) && + (p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_OSCILATOR)) + RETURN_ERROR(MAJOR, E_INVALID_CLOCK, ("Source clock undefined")); + + if (p_Rtc->outputClockDivisor == 0) + { + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("Divisor for output clock (should be positive)")); + } + + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + if ((p_RtcDriverParam->alarmPolarity[i] != e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW) && + (p_RtcDriverParam->alarmPolarity[i] != e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH)) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm %d signal polarity", i)); + } + } + for (i=0; i < FM_RTC_NUM_OF_EXT_TRIGGERS; i++) + { + if ((p_RtcDriverParam->triggerPolarity[i] != e_FM_RTC_TRIGGER_ON_FALLING_EDGE) && + (p_RtcDriverParam->triggerPolarity[i] != e_FM_RTC_TRIGGER_ON_RISING_EDGE)) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Trigger %d signal polarity", i)); + } + } + +#ifdef FM_1588_SRC_CLK_ERRATA_FMAN1 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_Rtc->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)&& + ((p_RtcDriverParam->srcClk==e_FM_RTC_SOURCE_CLOCK_SYSTEM) && p_RtcDriverParam->invertInputClkPhase)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Can not use invertInputClkPhase when source clock is e_FM_RTC_SOURCE_CLOCK_SYSTEM")); + } +#endif /* FM_1588_SRC_CLK_ERRATA_FMAN1 */ + + return E_OK; +} + +/*****************************************************************************/ +static void RtcExceptions(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap; + register uint32_t events; + + ASSERT_COND(p_Rtc); + p_MemMap = p_Rtc->p_MemMap; + + /* Get valid events */ + events = GET_UINT32(p_MemMap->tmr_tevent); + events &= GET_UINT32(p_MemMap->tmr_temask); + + /* Clear event bits */ + WRITE_UINT32(p_MemMap->tmr_tevent, events); + + if (events & TMR_TEVENT_ALM1) + { + if(p_Rtc->alarmParams[0].clearOnExpiration) + { + WRITE_UINT32(p_MemMap->tmr_alarm[0].tmr_alarm_l, 0); + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) & ~TMR_TEVENT_ALM1); + } + ASSERT_COND(p_Rtc->alarmParams[0].f_AlarmCallback); + p_Rtc->alarmParams[0].f_AlarmCallback(p_Rtc->h_App, 0); + } + if (events & TMR_TEVENT_ALM2) + { + if(p_Rtc->alarmParams[1].clearOnExpiration) + { + WRITE_UINT32(p_MemMap->tmr_alarm[1].tmr_alarm_l, 0); + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) & ~TMR_TEVENT_ALM2); + } + ASSERT_COND(p_Rtc->alarmParams[1].f_AlarmCallback); + p_Rtc->alarmParams[1].f_AlarmCallback(p_Rtc->h_App, 1); + } + if (events & TMR_TEVENT_PP1) + { + ASSERT_COND(p_Rtc->periodicPulseParams[0].f_PeriodicPulseCallback); + p_Rtc->periodicPulseParams[0].f_PeriodicPulseCallback(p_Rtc->h_App, 0); + } + if (events & TMR_TEVENT_PP2) + { + ASSERT_COND(p_Rtc->periodicPulseParams[1].f_PeriodicPulseCallback); + p_Rtc->periodicPulseParams[1].f_PeriodicPulseCallback(p_Rtc->h_App, 1); + } + if (events & TMR_TEVENT_ETS1) + { + ASSERT_COND(p_Rtc->externalTriggerParams[0].f_ExternalTriggerCallback); + p_Rtc->externalTriggerParams[0].f_ExternalTriggerCallback(p_Rtc->h_App, 0); + } + if (events & TMR_TEVENT_ETS2) + { + ASSERT_COND(p_Rtc->externalTriggerParams[1].f_ExternalTriggerCallback); + p_Rtc->externalTriggerParams[1].f_ExternalTriggerCallback(p_Rtc->h_App, 1); + } +} + + +/*****************************************************************************/ +t_Handle FM_RTC_Config(t_FmRtcParams *p_FmRtcParam) +{ + t_FmRtc *p_Rtc; + + SANITY_CHECK_RETURN_VALUE(p_FmRtcParam, E_NULL_POINTER, NULL); + + /* Allocate memory for the FM RTC driver parameters */ + p_Rtc = (t_FmRtc *)XX_Malloc(sizeof(t_FmRtc)); + if (!p_Rtc) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM RTC driver structure")); + return NULL; + } + + memset(p_Rtc, 0, sizeof(t_FmRtc)); + + /* Allocate memory for the FM RTC driver parameters */ + p_Rtc->p_RtcDriverParam = (t_FmRtcDriverParam *)XX_Malloc(sizeof(t_FmRtcDriverParam)); + if (!p_Rtc->p_RtcDriverParam) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM RTC driver parameters")); + XX_Free(p_Rtc); + return NULL; + } + + memset(p_Rtc->p_RtcDriverParam, 0, sizeof(t_FmRtcDriverParam)); + + /* Store RTC configuration parameters */ + p_Rtc->h_Fm = p_FmRtcParam->h_Fm; + + /* Set default RTC configuration parameters */ + SetDefaultParam(p_Rtc); + + /* Store RTC parameters in the RTC control structure */ + p_Rtc->p_MemMap = (t_FmRtcMemMap *)UINT_TO_PTR(p_FmRtcParam->baseAddress); + p_Rtc->h_App = p_FmRtcParam->h_App; + + return p_Rtc; +} + +/*****************************************************************************/ +t_Error FM_RTC_Init(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcDriverParam *p_RtcDriverParam; + t_FmRtcMemMap *p_MemMap; + uint32_t freqCompensation; + uint32_t tmrCtrl; + int i; + uint64_t tmpDouble; + + p_RtcDriverParam = p_Rtc->p_RtcDriverParam; + p_MemMap = p_Rtc->p_MemMap; + + if(CheckInitParameters(p_Rtc)!=E_OK) + RETURN_ERROR(MAJOR, E_CONFLICT, + ("Init Parameters are not Valid")); + + /* TODO A check must be added here, that no timestamping MAC's + * are working in this stage. */ + WRITE_UINT32(p_MemMap->tmr_ctrl, TMR_CTRL_TMSR); + XX_UDelay(10); + WRITE_UINT32(p_MemMap->tmr_ctrl, 0); + + /* Set the source clock */ + switch (p_RtcDriverParam->srcClk) + { + case e_FM_RTC_SOURCE_CLOCK_SYSTEM: + tmrCtrl = TMR_CTRL_CKSEL_MAC_CLK; + break; + case e_FM_RTC_SOURCE_CLOCK_OSCILATOR: + tmrCtrl = TMR_CTRL_CKSEL_OSC_CLK; + break; + default: + /* Use a clock from the External TMR reference clock.*/ + tmrCtrl = TMR_CTRL_CKSEL_EXT_CLK; + break; + } + + /* whatever period the user picked, the timestamp will advance in '1' every time + * the period passed. */ + tmrCtrl |= ((1 << TMR_CTRL_TCLK_PERIOD_SHIFT) & TMR_CTRL_TCLK_PERIOD_MASK); + + if (p_RtcDriverParam->invertInputClkPhase) + tmrCtrl |= TMR_CTRL_CIPH; + if (p_RtcDriverParam->invertOutputClkPhase) + tmrCtrl |= TMR_CTRL_COPH; + + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + if (p_RtcDriverParam->alarmPolarity[i] == e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW) + tmrCtrl |= (TMR_CTRL_ALMP1 >> i); + } + + for (i=0; i < FM_RTC_NUM_OF_EXT_TRIGGERS; i++) + if (p_RtcDriverParam->triggerPolarity[i] == e_FM_RTC_TRIGGER_ON_FALLING_EDGE) + tmrCtrl |= (TMR_CTRL_ETEP1 << i); + + if (!p_RtcDriverParam->timerSlaveMode && p_Rtc->p_RtcDriverParam->bypass) + tmrCtrl |= TMR_CTRL_BYP; + + WRITE_UINT32(p_MemMap->tmr_ctrl, tmrCtrl); + + for (i=0; i < FM_RTC_NUM_OF_ALARMS; i++) + { + /* Clear TMR_ALARM registers */ + WRITE_UINT32(p_MemMap->tmr_alarm[i].tmr_alarm_l, 0xFFFFFFFF); + WRITE_UINT32(p_MemMap->tmr_alarm[i].tmr_alarm_h, 0xFFFFFFFF); + } + + /* Clear TMR_TEVENT */ + WRITE_UINT32(p_MemMap->tmr_tevent, TMR_TEVENT_ALL); + + /* Initialize TMR_TEMASK */ + WRITE_UINT32(p_MemMap->tmr_temask, 0); + + + /* find source clock frequency in Mhz */ + if (p_Rtc->p_RtcDriverParam->srcClk != e_FM_RTC_SOURCE_CLOCK_SYSTEM) + p_Rtc->srcClkFreqMhz = p_Rtc->p_RtcDriverParam->extSrcClkFreq; + else + p_Rtc->srcClkFreqMhz = (uint32_t)(FmGetClockFreq(p_Rtc->h_Fm)/2); + + /* if timer in Master mode Initialize TMR_CTRL */ + /* We want the counter (TMR_CNT) to count in nano-seconds */ + if (!p_RtcDriverParam->timerSlaveMode && p_Rtc->p_RtcDriverParam->bypass) + { + p_Rtc->clockPeriodNanoSec = (1000 / p_Rtc->srcClkFreqMhz); + } + else + { + /* Initialize TMR_ADD with the initial frequency compensation value: + freqCompensation = (2^32 / frequency ratio) */ + /* frequency ratio = sorce clock/rtc clock = + * (p_Rtc->srcClkFreqMhz*1000000))/ 1/(p_Rtc->clockPeriodNanoSec * 1000000000) */ + freqCompensation = (uint32_t)DIV_CEIL(ACCUMULATOR_OVERFLOW * 1000, + p_Rtc->clockPeriodNanoSec * p_Rtc->srcClkFreqMhz); + WRITE_UINT32(p_MemMap->tmr_add, freqCompensation); + } + /* check the legality of the relation between source and destination clocks */ + /* should be larger than 1.0001 */ + tmpDouble = 10000 * (uint64_t)p_Rtc->clockPeriodNanoSec * (uint64_t)p_Rtc->srcClkFreqMhz; + if((tmpDouble) <= 10001) + RETURN_ERROR(MAJOR, E_CONFLICT, + ("Invalid relation between source and destination clocks. Should be larger than 1.0001")); + + + for (i=0; i < 2; i++) + /* Clear TMR_FIPER registers */ + WRITE_UINT32(p_MemMap->tmr_fiper[i], 0xFFFFFFFF); + + /* Initialize TMR_PRSC */ + WRITE_UINT32(p_MemMap->tmr_prsc, p_Rtc->outputClockDivisor); + + /* Clear TMR_OFF */ + WRITE_UINT32(p_MemMap->tmr_off_l, 0); + WRITE_UINT32(p_MemMap->tmr_off_h, 0); + + /* Register the FM RTC interrupt */ + FmRegisterIntr(p_Rtc->h_Fm, e_FM_MOD_TMR, 0, e_FM_INTR_TYPE_NORMAL, RtcExceptions , p_Rtc); + + /* Free parameters structures */ + XX_Free(p_Rtc->p_RtcDriverParam); + p_Rtc->p_RtcDriverParam = NULL; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_Free(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + + if (p_Rtc->p_RtcDriverParam) + { + XX_Free(p_Rtc->p_RtcDriverParam); + } + else + { + FM_RTC_Disable(h_FmRtc); + } + + /* Unregister FM RTC interrupt */ + FmUnregisterIntr(p_Rtc->h_Fm, e_FM_MOD_TMR, 0, e_FM_INTR_TYPE_NORMAL); + XX_Free(p_Rtc); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigSourceClock(t_Handle h_FmRtc, + e_FmSrcClk srcClk, + uint32_t freqInMhz) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->srcClk = srcClk; + if(srcClk != e_FM_RTC_SOURCE_CLOCK_SYSTEM) + p_Rtc->p_RtcDriverParam->extSrcClkFreq = freqInMhz; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigPeriod(t_Handle h_FmRtc, uint32_t period) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->clockPeriodNanoSec = period; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigFrequencyBypass(t_Handle h_FmRtc, bool enabled) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->bypass = enabled; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigInvertedInputClockPhase(t_Handle h_FmRtc, bool inverted) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->invertInputClkPhase = inverted; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigInvertedOutputClockPhase(t_Handle h_FmRtc, bool inverted) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->invertOutputClkPhase = inverted; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigOutputClockDivisor(t_Handle h_FmRtc, uint16_t divisor) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->outputClockDivisor = divisor; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigPulseRealignment(t_Handle h_FmRtc, bool enable) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_Rtc->p_RtcDriverParam->pulseRealign = enable; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigAlarmPolarity(t_Handle h_FmRtc, + uint8_t alarmId, + e_FmRtcAlarmPolarity alarmPolarity) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (alarmId >= FM_RTC_NUM_OF_ALARMS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm ID")); + } + + p_Rtc->p_RtcDriverParam->alarmPolarity[alarmId] = alarmPolarity; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ConfigExternalTriggerPolarity(t_Handle h_FmRtc, + uint8_t triggerId, + e_FmRtcTriggerPolarity triggerPolarity) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (triggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External trigger ID")); + } + + p_Rtc->p_RtcDriverParam->triggerPolarity[triggerId] = triggerPolarity; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_Enable(t_Handle h_FmRtc, bool resetClock) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmrCtrl; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + tmrCtrl = GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl); + + /* TODO A check must be added here, that no timestamping MAC's + * are working in this stage. */ + if (resetClock) + { + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, (tmrCtrl | TMR_CTRL_TMSR)); + + XX_UDelay(10); + /* Clear TMR_OFF */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_l, 0); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_h, 0); + } + + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, (tmrCtrl | TMR_CTRL_TE)); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_Disable(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmrCtrl; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* TODO A check must be added here, that no timestamping MAC's + * are working in this stage. */ + tmrCtrl = GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, (tmrCtrl & ~(TMR_CTRL_TE))); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetClockOffset(t_Handle h_FmRtc, int64_t offset) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* TMR_OFF_L must be written first */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_l, (uint32_t)offset); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_off_h, (uint32_t)(offset >> 32)); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetAlarm(t_Handle h_FmRtc, t_FmRtcAlarmParams *p_FmRtcAlarmParams) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap; + uint32_t tmpReg; + uint64_t tmpAlarm; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_MemMap = p_Rtc->p_MemMap; + + if (p_FmRtcAlarmParams->alarmId >= FM_RTC_NUM_OF_ALARMS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm ID")); + } + + if(p_FmRtcAlarmParams->alarmTime < p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm time must be equal or larger than RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + if(p_FmRtcAlarmParams->alarmTime % (uint64_t)p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Alarm time must be a multiple of RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + tmpAlarm = p_FmRtcAlarmParams->alarmTime/(uint64_t)p_Rtc->clockPeriodNanoSec; + + /* TMR_ALARM_L must be written first */ + WRITE_UINT32(p_MemMap->tmr_alarm[p_FmRtcAlarmParams->alarmId].tmr_alarm_l, (uint32_t)tmpAlarm); + WRITE_UINT32(p_MemMap->tmr_alarm[p_FmRtcAlarmParams->alarmId].tmr_alarm_h, + (uint32_t)(tmpAlarm >> 32)); + + if (p_FmRtcAlarmParams->f_AlarmCallback) + { + p_Rtc->alarmParams[p_FmRtcAlarmParams->alarmId].f_AlarmCallback = p_FmRtcAlarmParams->f_AlarmCallback; + p_Rtc->alarmParams[p_FmRtcAlarmParams->alarmId].clearOnExpiration = p_FmRtcAlarmParams->clearOnExpiration; + + if(p_FmRtcAlarmParams->alarmId == 0) + tmpReg = TMR_TEVENT_ALM1; + else + tmpReg = TMR_TEVENT_ALM2; + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) | tmpReg); + } + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetPeriodicPulse(t_Handle h_FmRtc, t_FmRtcPeriodicPulseParams *p_FmRtcPeriodicPulseParams) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap; + uint32_t tmpReg; + uint64_t tmpFiper; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + p_MemMap = p_Rtc->p_MemMap; + + if (p_FmRtcPeriodicPulseParams->periodicPulseId >= FM_RTC_NUM_OF_PERIODIC_PULSES) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse ID")); + } + if(GET_UINT32(p_MemMap->tmr_ctrl) & TMR_CTRL_TE) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Can't set Periodic pulse when RTC is enabled.")); + if(p_FmRtcPeriodicPulseParams->periodicPulsePeriod < p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse must be equal or larger than RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + if(p_FmRtcPeriodicPulseParams->periodicPulsePeriod % (uint64_t)p_Rtc->clockPeriodNanoSec) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse must be a multiple of RTC period - %d nanoseconds", p_Rtc->clockPeriodNanoSec)); + tmpFiper = p_FmRtcPeriodicPulseParams->periodicPulsePeriod/(uint64_t)p_Rtc->clockPeriodNanoSec; + if(tmpFiper & 0xffffffff00000000LL) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse/RTC Period must be smaller than 4294967296", p_Rtc->clockPeriodNanoSec)); + + WRITE_UINT32(p_MemMap->tmr_fiper[p_FmRtcPeriodicPulseParams->periodicPulseId], (uint32_t)tmpFiper); + + if (p_FmRtcPeriodicPulseParams->f_PeriodicPulseCallback) + { + p_Rtc->periodicPulseParams[p_FmRtcPeriodicPulseParams->periodicPulseId].f_PeriodicPulseCallback = + p_FmRtcPeriodicPulseParams->f_PeriodicPulseCallback; + + if(p_FmRtcPeriodicPulseParams->periodicPulseId == 0) + tmpReg = TMR_TEVENT_PP1; + else + tmpReg = TMR_TEVENT_PP2; + WRITE_UINT32(p_MemMap->tmr_temask, GET_UINT32(p_MemMap->tmr_temask) | tmpReg); + } + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ClearPeriodicPulse(t_Handle h_FmRtc, uint8_t periodicPulseId) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (periodicPulseId >= FM_RTC_NUM_OF_PERIODIC_PULSES) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Periodic pulse ID")); + } + + p_Rtc->periodicPulseParams[periodicPulseId].f_PeriodicPulseCallback = NULL; + + if(periodicPulseId == 0) + tmpReg = TMR_TEVENT_PP1; + else + tmpReg = TMR_TEVENT_PP2; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_temask, GET_UINT32(p_Rtc->p_MemMap->tmr_temask) & ~tmpReg); + + if (GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & TMR_CTRL_FS) + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & ~TMR_CTRL_FS); + + WRITE_UINT32(p_Rtc->p_MemMap->tmr_fiper[periodicPulseId], 0xFFFFFFFF); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetExternalTrigger(t_Handle h_FmRtc, t_FmRtcExternalTriggerParams *p_FmRtcExternalTriggerParams) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (p_FmRtcExternalTriggerParams->externalTriggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External Trigger ID")); + } + + if (p_FmRtcExternalTriggerParams->f_ExternalTriggerCallback) + { + p_Rtc->externalTriggerParams[p_FmRtcExternalTriggerParams->externalTriggerId].f_ExternalTriggerCallback = p_FmRtcExternalTriggerParams->f_ExternalTriggerCallback; + if(p_FmRtcExternalTriggerParams->externalTriggerId == 0) + tmpReg = TMR_TEVENT_ETS1; + else + tmpReg = TMR_TEVENT_ETS2; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_temask, GET_UINT32(p_Rtc->p_MemMap->tmr_temask) | tmpReg); + } + + if(p_FmRtcExternalTriggerParams->usePulseAsInput) + { + if(p_FmRtcExternalTriggerParams->externalTriggerId == 0) + tmpReg = TMR_CTRL_PP1L; + else + tmpReg = TMR_CTRL_PP2L; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) | tmpReg); + } + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_ClearExternalTrigger(t_Handle h_FmRtc, uint8_t externalTriggerId) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (externalTriggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External Trigger ID")); + + p_Rtc->externalTriggerParams[externalTriggerId].f_ExternalTriggerCallback = NULL; + + if(externalTriggerId == 0) + tmpReg = TMR_TEVENT_ETS1; + else + tmpReg = TMR_TEVENT_ETS2; + WRITE_UINT32(p_Rtc->p_MemMap->tmr_temask, GET_UINT32(p_Rtc->p_MemMap->tmr_temask) & ~tmpReg); + + if(externalTriggerId == 0) + tmpReg = TMR_CTRL_PP1L; + else + tmpReg = TMR_CTRL_PP2L; + + if (GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & tmpReg) + WRITE_UINT32(p_Rtc->p_MemMap->tmr_ctrl, GET_UINT32(p_Rtc->p_MemMap->tmr_ctrl) & ~tmpReg); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_GetExternalTriggerTimeStamp(t_Handle h_FmRtc, + uint8_t triggerId, + uint64_t *p_TimeStamp) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint64_t timeStamp; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + if (triggerId >= FM_RTC_NUM_OF_EXT_TRIGGERS) + { + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("External trigger ID")); + } + + timeStamp = (uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_etts[triggerId].tmr_etts_l); + timeStamp |= ((uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_etts[triggerId].tmr_etts_h) << 32); + + timeStamp = timeStamp*p_Rtc->clockPeriodNanoSec; + *p_TimeStamp = timeStamp; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_GetCurrentTime(t_Handle h_FmRtc, uint64_t *p_Ts) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + uint64_t time; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* TMR_CNT_L must be read first to get an accurate value */ + time = (uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_cnt_l); + time |= ((uint64_t)GET_UINT32(p_Rtc->p_MemMap->tmr_cnt_h) << 32); + + time = time*p_Rtc->clockPeriodNanoSec; + + *p_Ts = time; + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetCurrentTime(t_Handle h_FmRtc, uint64_t ts) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + ts = ts/p_Rtc->clockPeriodNanoSec; + /* TMR_CNT_L must be written first to get an accurate value */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_cnt_l, (uint32_t)ts); + WRITE_UINT32(p_Rtc->p_MemMap->tmr_cnt_h, (uint32_t)(ts >> 32)); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_GetFreqCompensation(t_Handle h_FmRtc, uint32_t *p_Compensation) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + *p_Compensation = (uint32_t) + DIV_CEIL(ACCUMULATOR_OVERFLOW * 1000, + p_Rtc->clockPeriodNanoSec * p_Rtc->srcClkFreqMhz); + + return E_OK; +} + +/*****************************************************************************/ +t_Error FM_RTC_SetFreqCompensation(t_Handle h_FmRtc, uint32_t freqCompensation) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + + SANITY_CHECK_RETURN_ERROR(p_Rtc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_Rtc->p_RtcDriverParam, E_INVALID_STATE); + + /* set the new freqCompensation */ + WRITE_UINT32(p_Rtc->p_MemMap->tmr_add, freqCompensation); + + return E_OK; +} + +/*****************************************************************************/ +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_RTC_DumpRegs(t_Handle h_FmRtc) +{ + t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; + t_FmRtcMemMap *p_MemMap = p_Rtc->p_MemMap; + int i = 0; + + DECLARE_DUMP; + + if (p_MemMap) + { + + DUMP_TITLE(p_MemMap, ("RTC:")); + DUMP_VAR(p_MemMap, tmr_id); + DUMP_VAR(p_MemMap, tmr_id2); + DUMP_VAR(p_MemMap, tmr_ctrl); + DUMP_VAR(p_MemMap, tmr_tevent); + DUMP_VAR(p_MemMap, tmr_temask); + DUMP_VAR(p_MemMap, tmr_cnt_h); + DUMP_VAR(p_MemMap, tmr_cnt_l); + DUMP_VAR(p_MemMap, tmr_ctrl); + DUMP_VAR(p_MemMap, tmr_add); + DUMP_VAR(p_MemMap, tmr_acc); + DUMP_VAR(p_MemMap, tmr_prsc); + DUMP_VAR(p_MemMap, tmr_off_h); + DUMP_VAR(p_MemMap, tmr_off_l); + + DUMP_SUBSTRUCT_ARRAY(i, 2) + { + DUMP_VAR(p_MemMap, tmr_alarm[i].tmr_alarm_h); + DUMP_VAR(p_MemMap, tmr_alarm[i].tmr_alarm_l); + } + DUMP_SUBSTRUCT_ARRAY(i, 2) + { + DUMP_VAR(p_MemMap, tmr_fiper[i]); + DUMP_VAR(p_MemMap, tmr_fiper[i]); + } + DUMP_SUBSTRUCT_ARRAY(i, 2) + { + DUMP_VAR(p_MemMap, tmr_etts[i].tmr_etts_l); + DUMP_VAR(p_MemMap, tmr_etts[i].tmr_etts_l); + } + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Rtc/fm_rtc.h @@ -0,0 +1,217 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_rtc.h + + @Description Memory map and internal definitions for FM RTC IEEE1588 Timer driver. + + @Cautions None +*//***************************************************************************/ + +#ifndef __FM_RTC_H__ +#define __FM_RTC_H__ + +#include "std_ext.h" +#include "fm_rtc_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_RTC + +/* General definitions */ + +#define NANOSEC_PER_ONE_HZ_TICK 1000000000 +#define MIN_RTC_CLK_FREQ_HZ 1000 +#define MHz 1000000 + +#define ACCUMULATOR_OVERFLOW ((uint64_t)(1LL << 32)) + +/* RTC default values */ +#define DEFAULT_srcClock e_FM_RTC_SOURCE_CLOCK_SYSTEM +#define DEFAULT_bypass FALSE +#define DEFAULT_invertInputClkPhase FALSE +#define DEFAULT_invertOutputClkPhase FALSE +#define DEFAULT_outputClockDivisor 0x00000002 +#define DEFAULT_alarmPolarity e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH +#define DEFAULT_triggerPolarity e_FM_RTC_TRIGGER_ON_FALLING_EDGE +#define DEFAULT_pulseRealign FALSE +#define DEFAULT_clockPeriod 1000 + +/* FM RTC Registers definitions */ +#define TMR_CTRL_ALMP1 0x80000000 +#define TMR_CTRL_ALMP2 0x40000000 +#define TMR_CTRL_FS 0x10000000 +#define TMR_CTRL_PP1L 0x08000000 +#define TMR_CTRL_PP2L 0x04000000 +#define TMR_CTRL_TCLK_PERIOD_MASK 0x03FF0000 +#define TMR_CTRL_FRD 0x00004000 +#define TMR_CTRL_SLV 0x00002000 +#define TMR_CTRL_ETEP1 0x00000100 +#define TMR_CTRL_COPH 0x00000080 +#define TMR_CTRL_CIPH 0x00000040 +#define TMR_CTRL_TMSR 0x00000020 +#define TMR_CTRL_DBG 0x00000010 +#define TMR_CTRL_BYP 0x00000008 +#define TMR_CTRL_TE 0x00000004 +#define TMR_CTRL_CKSEL_OSC_CLK 0x00000003 +#define TMR_CTRL_CKSEL_MAC_CLK 0x00000001 +#define TMR_CTRL_CKSEL_EXT_CLK 0x00000000 +#define TMR_CTRL_TCLK_PERIOD_SHIFT 16 + +#define TMR_TEVENT_ETS2 0x02000000 +#define TMR_TEVENT_ETS1 0x01000000 +#define TMR_TEVENT_ALM2 0x00020000 +#define TMR_TEVENT_ALM1 0x00010000 +#define TMR_TEVENT_PP1 0x00000080 +#define TMR_TEVENT_PP2 0x00000040 +#define TMR_TEVENT_PP3 0x00000020 +#define TMR_TEVENT_ALL (TMR_TEVENT_ETS2 | TMR_TEVENT_ETS1 | \ + TMR_TEVENT_ALM2 | TMR_TEVENT_ALM1 | \ + TMR_TEVENT_PP1 | TMR_TEVENT_PP2 | TMR_TEVENT_PP3) + +#define TMR_PRSC_OCK_MASK 0x0000FFFF + + +/**************************************************************************//** + @Description Memory Mapped Registers +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description FM RTC timer alarm +*//***************************************************************************/ +typedef _Packed struct t_TmrAlaram +{ + volatile uint32_t tmr_alarm_h; /**< */ + volatile uint32_t tmr_alarm_l; /**< */ +} _PackedType t_TmrAlaram; + +/**************************************************************************//** + @Description FM RTC timer Ex trigger +*//***************************************************************************/ +typedef _Packed struct t_TmrExtTrigger +{ + volatile uint32_t tmr_etts_h; /**< */ + volatile uint32_t tmr_etts_l; /**< */ +} _PackedType t_TmrExtTrigger; + +typedef _Packed struct +{ + volatile uint32_t tmr_id; /* Module ID and version register */ + volatile uint32_t tmr_id2; /* Module ID and configuration register */ + volatile uint32_t PTP_RESERVED1[30]; + volatile uint32_t tmr_ctrl; /* timer control register */ + volatile uint32_t tmr_tevent; /* timer event register */ + volatile uint32_t tmr_temask; /* timer event mask register */ + volatile uint32_t PTP_RESERVED2[3]; + volatile uint32_t tmr_cnt_h; /* timer counter high register */ + volatile uint32_t tmr_cnt_l; /* timer counter low register */ + volatile uint32_t tmr_add; /* timer drift compensation addend register */ + volatile uint32_t tmr_acc; /* timer accumulator register */ + volatile uint32_t tmr_prsc; /* timer prescale */ + volatile uint32_t PTP_RESERVED3; + volatile uint32_t tmr_off_h; /* timer offset high */ + volatile uint32_t tmr_off_l; /* timer offset low */ + volatile t_TmrAlaram tmr_alarm[FM_RTC_NUM_OF_ALARMS]; /* timer alarm */ + volatile uint32_t PTP_RESERVED4[2]; + volatile uint32_t tmr_fiper[FM_RTC_NUM_OF_PERIODIC_PULSES]; /* timer fixed period interval */ + volatile uint32_t PTP_RESERVED5[2]; + volatile t_TmrExtTrigger tmr_etts[FM_RTC_NUM_OF_EXT_TRIGGERS]; /*time stamp general purpose external */ + volatile uint32_t PTP_RESERVED6[3]; +} _PackedType t_FmRtcMemMap; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description RTC FM driver parameters structure. +*//***************************************************************************/ +typedef struct t_FmRtcDriverParam +{ + t_Handle h_Fm; /**< */ + e_FmSrcClk srcClk; /**< */ + uint32_t extSrcClkFreq; /**< */ + uint32_t rtcFreqHz; /**< */ + bool timerSlaveMode; /*Slave/Master Mode*/ + bool invertInputClkPhase; + bool invertOutputClkPhase; + uint32_t eventsMask; + bool bypass; /**< Indicates if frequency compensation is bypassed */ + bool pulseRealign; + e_FmRtcAlarmPolarity alarmPolarity[FM_RTC_NUM_OF_ALARMS]; + e_FmRtcTriggerPolarity triggerPolarity[FM_RTC_NUM_OF_EXT_TRIGGERS]; +} t_FmRtcDriverParam; + +typedef struct t_FmRtcAlarm +{ + t_FmRtcExceptionsCallback *f_AlarmCallback; + bool clearOnExpiration; +} t_FmRtcAlarm; + +typedef struct t_FmRtcPeriodicPulse +{ + t_FmRtcExceptionsCallback *f_PeriodicPulseCallback; +} t_FmRtcPeriodicPulse; + +typedef struct t_FmRtcExternalTrigger +{ + t_FmRtcExceptionsCallback *f_ExternalTriggerCallback; +} t_FmRtcExternalTrigger; + + +/**************************************************************************//** + @Description RTC FM driver control structure. +*//***************************************************************************/ +typedef struct t_FmRtc +{ + t_Part *p_Part; /**< Pointer to the integration device */ + t_Handle h_Fm; + t_Handle h_App; /**< Application handle */ + t_FmRtcMemMap *p_MemMap; /**< Pointer to RTC memory map */ + uint32_t clockPeriodNanoSec; /**< RTC clock period in nano-seconds (for FS mode) */ + uint32_t srcClkFreqMhz; + uint16_t outputClockDivisor; /**< Output clock divisor (for FS mode) */ + t_FmRtcAlarm alarmParams[FM_RTC_NUM_OF_ALARMS]; + t_FmRtcPeriodicPulse periodicPulseParams[FM_RTC_NUM_OF_PERIODIC_PULSES]; + t_FmRtcExternalTrigger externalTriggerParams[FM_RTC_NUM_OF_EXT_TRIGGERS]; + t_FmRtcDriverParam *p_RtcDriverParam; /**< RTC Driver parameters (for Init phase) */ +} t_FmRtc; + + +#endif /* __FM_RTC_H__ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/Makefile @@ -0,0 +1,15 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-Hc.o + +fsl-ncsw-Hc-objs := hc.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/hc.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/HC/hc.c @@ -0,0 +1,1584 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "std_ext.h" +#include "error_ext.h" +#include "sprint_ext.h" +#include "string_ext.h" + +#include "fm_common.h" +#include "fm_hc.h" + + +#define HC_HCOR_OPCODE_PLCR_PRFL 0x0 +#define HC_HCOR_OPCODE_KG_SCM 0x1 +#define HC_HCOR_OPCODE_SYNC 0x2 +#define HC_HCOR_OPCODE_CC 0x3 +#define HC_HCOR_OPCODE_CC_CAPWAP_REASSM_TIMEOUT 0x5 + +#define HC_HCOR_GBL 0x20000000 + +#define SIZE_OF_HC_FRAME_PORT_REGS (sizeof(t_HcFrame)-sizeof(t_FmPcdKgInterModuleSchemeRegs)+sizeof(t_FmPcdKgPortRegs)) +#define SIZE_OF_HC_FRAME_SCHEME_REGS sizeof(t_HcFrame) +#define SIZE_OF_HC_FRAME_PROFILES_REGS (sizeof(t_HcFrame)-sizeof(t_FmPcdKgInterModuleSchemeRegs)+sizeof(t_FmPcdPlcrInterModuleProfileRegs)) +#define SIZE_OF_HC_FRAME_PROFILE_CNT (sizeof(t_HcFrame)-sizeof(t_FmPcdPlcrInterModuleProfileRegs)+sizeof(uint32_t)) +#define SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC 16 + +#define BUILD_FD(len) \ +do { \ + memset(&fmFd, 0, sizeof(t_DpaaFD)); \ + DPAA_FD_SET_ADDR(&fmFd, p_HcFrame); \ + DPAA_FD_SET_OFFSET(&fmFd, 0); \ + DPAA_FD_SET_LENGTH(&fmFd, len); \ +} while (0) + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description PCD KG scheme registers +*//***************************************************************************/ +typedef _Packed struct t_FmPcdKgSchemeRegsWithoutCounter { + volatile uint32_t kgse_mode; /**< MODE */ + volatile uint32_t kgse_ekfc; /**< Extract Known Fields Command */ + volatile uint32_t kgse_ekdv; /**< Extract Known Default Value */ + volatile uint32_t kgse_bmch; /**< Bit Mask Command High */ + volatile uint32_t kgse_bmcl; /**< Bit Mask Command Low */ + volatile uint32_t kgse_fqb; /**< Frame Queue Base */ + volatile uint32_t kgse_hc; /**< Hash Command */ + volatile uint32_t kgse_ppc; /**< Policer Profile Command */ + volatile uint32_t kgse_gec[FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< Generic Extract Command */ + volatile uint32_t kgse_dv0; /**< KeyGen Scheme Entry Default Value 0 */ + volatile uint32_t kgse_dv1; /**< KeyGen Scheme Entry Default Value 1 */ + volatile uint32_t kgse_ccbs; /**< KeyGen Scheme Entry Coarse Classification Bit*/ + volatile uint32_t kgse_mv; /**< KeyGen Scheme Entry Match vector */ +} _PackedType t_FmPcdKgSchemeRegsWithoutCounter; + +typedef _Packed struct t_FmPcdKgPortRegs { + volatile uint32_t spReg; + volatile uint32_t cppReg; +} _PackedType t_FmPcdKgPortRegs; + +typedef _Packed struct t_HcFrame { + volatile uint32_t opcode; + volatile uint32_t actionReg; + volatile uint32_t extraReg; + volatile uint32_t commandSequence; + union { + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_FmPcdKgInterModuleSchemeRegs schemeRegsWithoutCounter; + t_FmPcdPlcrInterModuleProfileRegs profileRegs; + volatile uint32_t singleRegForWrite; /* for writing SP, CPP, profile counter */ + t_FmPcdKgPortRegs portRegsForRead; + volatile uint32_t clsPlanEntries[CLS_PLAN_NUM_PER_GRP]; + t_FmPcdCcCapwapReassmTimeoutParams ccCapwapReassmTimeout; + } hcSpecificData; +} _PackedType t_HcFrame; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct t_FmHc { + t_Handle h_FmPcd; + t_Handle h_HcPortDev; + t_FmPcdQmEnqueueCallback *f_QmEnqueue; /**< A callback for enqueuing frames to the QM */ + t_Handle h_QmArg; /**< A handle to the QM module */ + uint8_t padTill16; + + uint32_t seqNum; + volatile bool wait[32]; +} t_FmHc; + + +static __inline__ t_Error EnQFrm(t_FmHc *p_FmHc, t_DpaaFD *p_FmFd, volatile uint32_t *p_SeqNum) +{ + t_Error err = E_OK; + uint32_t savedSeqNum; + uint32_t intFlags; + uint32_t timeout=100; + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + *p_SeqNum = p_FmHc->seqNum; + savedSeqNum = p_FmHc->seqNum; + p_FmHc->seqNum = (uint32_t)((p_FmHc->seqNum+1)%32); + ASSERT_COND(!p_FmHc->wait[savedSeqNum]); + p_FmHc->wait[savedSeqNum] = TRUE; + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + DBG(TRACE, ("Send Hc, SeqNum %d, FD@0x%x, fd offset 0x%x", + savedSeqNum,DPAA_FD_GET_ADDR(p_FmFd),DPAA_FD_GET_OFFSET(p_FmFd))); + err = p_FmHc->f_QmEnqueue(p_FmHc->h_QmArg, (void *)p_FmFd); + if(err) + RETURN_ERROR(MINOR, err, ("HC enqueue failed")); + + while (p_FmHc->wait[savedSeqNum] && --timeout) + XX_UDelay(100); + + if (!timeout) + RETURN_ERROR(MINOR, E_TIMEOUT, ("HC Callback, timeout exceeded")); + + return err; +} + +static t_Error CcHcDoDynamicChange(t_FmHc *p_FmHc, t_Handle p_OldPointer, t_Handle p_NewPointer) +{ + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_CC); + p_HcFrame->actionReg = FmPcdCcGetNodeAddrOffsetFromNodeInfo(p_FmHc->h_FmPcd, p_NewPointer); + if(p_HcFrame->actionReg == (uint32_t)ILLEGAL_BASE) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something wrong with base address")); + } + + p_HcFrame->actionReg |= 0xc0000000; + p_HcFrame->extraReg = FmPcdCcGetNodeAddrOffsetFromNodeInfo(p_FmHc->h_FmPcd, p_OldPointer); + if(p_HcFrame->extraReg == (uint32_t)ILLEGAL_BASE) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something wrong with base address")); + } + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +static t_Error HcDynamicChange(t_FmHc *p_FmHc,t_List *h_OldPointersLst, t_List *h_NewPointersLst, t_Handle *h_Params) +{ + + t_List *p_PosOld, *p_PosNew; + uint16_t i = 0; + t_Error err = E_OK; + uint8_t numOfModifiedPtr; + + SANITY_CHECK_RETURN_ERROR((LIST_NumOfObjs(h_NewPointersLst) == LIST_NumOfObjs(h_OldPointersLst)),E_INVALID_STATE); + + numOfModifiedPtr = (uint8_t)LIST_NumOfObjs(h_NewPointersLst); + p_PosNew = LIST_FIRST(h_NewPointersLst); + p_PosOld = LIST_FIRST(h_OldPointersLst); + for(i = 0; i < numOfModifiedPtr; i++) + { + err = CcHcDoDynamicChange(p_FmHc, p_PosOld, p_PosNew); + if(err) + { + FmPcdCcReleaseModifiedDataStructure(p_FmHc->h_FmPcd, h_OldPointersLst, h_NewPointersLst, i, h_Params); + RETURN_ERROR(MAJOR, err, ("For part of nodes changes are done - situation is danger")); + } + p_PosNew = LIST_NEXT(p_PosNew); + p_PosOld = LIST_NEXT(p_PosOld); + } + + err = FmPcdCcReleaseModifiedDataStructure(p_FmHc->h_FmPcd, h_OldPointersLst, h_NewPointersLst, i, h_Params); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + return E_OK; +} + + +t_Handle FmHcConfigAndInit(t_FmHcParams *p_FmHcParams) +{ + t_FmHc *p_FmHc; + t_FmPortParams fmPortParam; + t_Error err = E_OK; + + p_FmHc = (t_FmHc *)XX_Malloc(sizeof(t_FmHc)); + if (!p_FmHc) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC obj")); + return NULL; + } + memset(p_FmHc,0,sizeof(t_FmHc)); + + p_FmHc->h_FmPcd = p_FmHcParams->h_FmPcd; + p_FmHc->f_QmEnqueue = p_FmHcParams->params.f_QmEnqueue; + p_FmHc->h_QmArg = p_FmHcParams->params.h_QmArg; + + if (!FmIsMaster(p_FmHcParams->h_Fm)) + return (t_Handle)p_FmHc; + +/* +TKT056919 - axi12axi0 can hang if read request follows the single byte write on the very next cycle +TKT038900 - FM dma lockup occur due to AXI slave protocol violation +*/ +#ifdef FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004 + p_FmHc->padTill16 = 16 - (sizeof(t_FmHc) % 16); +#endif /* FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004 */ + memset(&fmPortParam, 0, sizeof(fmPortParam)); + fmPortParam.baseAddr = p_FmHcParams->params.portBaseAddr; + fmPortParam.portType = e_FM_PORT_TYPE_OH_HOST_COMMAND; + fmPortParam.portId = p_FmHcParams->params.portId; + fmPortParam.liodnBase = p_FmHcParams->params.liodnBase; + fmPortParam.h_Fm = p_FmHcParams->h_Fm; + + fmPortParam.specificParams.nonRxParams.errFqid = p_FmHcParams->params.errFqid; + fmPortParam.specificParams.nonRxParams.dfltFqid = p_FmHcParams->params.confFqid; + fmPortParam.specificParams.nonRxParams.qmChannel = p_FmHcParams->params.qmChannel; + + p_FmHc->h_HcPortDev = FM_PORT_Config(&fmPortParam); + if(!p_FmHc->h_HcPortDev) + { + REPORT_ERROR(MAJOR, E_INVALID_HANDLE, ("FM HC port!")); + XX_Free(p_FmHc); + return NULL; + } + + /* final init */ + if ((err = FM_PORT_Init(p_FmHc->h_HcPortDev)) != E_OK) + { + REPORT_ERROR(MAJOR, err, ("FM HC port!")); + FmHcFree(p_FmHc); + return NULL; + } + + if ((err = FM_PORT_Enable(p_FmHc->h_HcPortDev)) != E_OK) + { + REPORT_ERROR(MAJOR, err, ("FM HC port!")); + FmHcFree(p_FmHc); + return NULL; + } + + return (t_Handle)p_FmHc; +} + +void FmHcFree(t_Handle h_FmHc) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + + if (!p_FmHc) + return; + + if (p_FmHc->h_HcPortDev) + FM_PORT_Free(p_FmHc->h_HcPortDev); + + XX_Free(p_FmHc); +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FmHcDumpRegs(t_Handle h_FmHc) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + + SANITY_CHECK_RETURN_ERROR(p_FmHc, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmHc->h_HcPortDev, E_INVALID_HANDLE); + + return FM_PORT_DumpRegs(p_FmHc->h_HcPortDev); + +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + +void FmHcTxConf(t_Handle h_FmHc, t_DpaaFD *p_Fd) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + uint32_t intFlags; + + ASSERT_COND(p_FmHc); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + p_HcFrame = (t_HcFrame *)PTR_MOVE(DPAA_FD_GET_ADDR(p_Fd), DPAA_FD_GET_OFFSET(p_Fd)); + + DBG(TRACE, ("Hc Conf, SeqNum %d, FD@0x%x, fd offset 0x%x", + p_HcFrame->commandSequence, DPAA_FD_GET_ADDR(p_Fd), DPAA_FD_GET_OFFSET(p_Fd))); + + if (!(p_FmHc->wait[p_HcFrame->commandSequence])) + REPORT_ERROR(MINOR, E_INVALID_FRAME, ("Not an Host-Command frame received!")); + else + p_FmHc->wait[p_HcFrame->commandSequence] = FALSE; + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); +} + +t_Handle FmHcPcdKgSetScheme(t_Handle h_FmHc, t_FmPcdKgSchemeParams *p_Scheme) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t intFlags; + uint8_t physicalSchemeId, relativeSchemeId; + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return NULL; + } + + if(!p_Scheme->modify) + { + /* check that schemeId is in range */ + if(p_Scheme->id.relativeSchemeId >= FmPcdKgGetNumOfPartitionSchemes(p_FmHc->h_FmPcd)) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("Scheme is out of range")); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + relativeSchemeId = p_Scheme->id.relativeSchemeId; + + if (FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) + { + XX_FreeSmart(p_HcFrame); + return NULL; + } + + physicalSchemeId = FmPcdKgGetPhysicalSchemeId(p_FmHc->h_FmPcd, relativeSchemeId); + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + /* check if this scheme is already used */ + if (FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is already used")); + XX_FreeSmart(p_HcFrame); + return NULL; + } + } + else + { + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, TRUE); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + if (err) + { + XX_FreeSmart(p_HcFrame); + return NULL; + } + } + + err = FmPcdKgBuildScheme(p_FmHc->h_FmPcd, p_Scheme, &schemeRegs); + if(err) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MAJOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, p_Scheme->schemeCounter.update); + p_HcFrame->extraReg = 0xFFFFF800; + memcpy(&p_HcFrame->hcSpecificData.schemeRegs, &schemeRegs, sizeof(t_FmPcdKgInterModuleSchemeRegs)); + if(!p_Scheme->schemeCounter.update) + { + p_HcFrame->hcSpecificData.schemeRegs.kgse_dv0 = schemeRegs.kgse_dv0; + p_HcFrame->hcSpecificData.schemeRegs.kgse_dv1 = schemeRegs.kgse_dv1; + p_HcFrame->hcSpecificData.schemeRegs.kgse_ccbs = schemeRegs.kgse_ccbs; + p_HcFrame->hcSpecificData.schemeRegs.kgse_mv = schemeRegs.kgse_mv; + } + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + FmPcdKgValidateSchemeSw(p_FmHc->h_FmPcd, relativeSchemeId); + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + XX_FreeSmart(p_HcFrame); + + return (t_Handle)(UINT_TO_PTR(physicalSchemeId + 1)); +} + +t_Error FmHcPcdKgDeleteScheme(t_Handle h_FmHc, t_Handle h_Scheme) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + + if ((err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + } + + err = FmPcdKgCheckInvalidateSchemeSw(p_FmHc->h_FmPcd, relativeSchemeId); + if (err) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, TRUE); + p_HcFrame->extraReg = 0xFFFFF800; + memset(&p_HcFrame->hcSpecificData.schemeRegs, 0, sizeof(t_FmPcdKgInterModuleSchemeRegs)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + FmPcdKgInvalidateSchemeSw(p_FmHc->h_FmPcd, relativeSchemeId); + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +t_Error FmHcPcdKgCcGetSetParams(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t requiredAction) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + uint32_t tmpReg32 = 0; + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if (FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Lock of the scheme FAILED")); + + if(!FmPcdKgGetPointedOwners(p_FmHc->h_FmPcd, relativeSchemeId) || + !(FmPcdKgGetRequiredAction(p_FmHc->h_FmPcd, relativeSchemeId) & requiredAction)) + { + + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + if((FmPcdKgGetNextEngine(p_FmHc->h_FmPcd, relativeSchemeId) == e_FM_PCD_DONE) && (FmPcdKgGetDoneAction(p_FmHc->h_FmPcd, relativeSchemeId) == e_FM_PCD_ENQ_FRAME)) + + { + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check if this scheme is already used */ + if (!FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is already used")); + } + tmpReg32 = p_HcFrame->hcSpecificData.schemeRegs.kgse_mode; + + ASSERT_COND(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); + + p_HcFrame->hcSpecificData.schemeRegs.kgse_mode = tmpReg32 | NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, FALSE); + p_HcFrame->extraReg = 0x80000000; + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + } + else if (FmPcdKgGetNextEngine(p_FmHc->h_FmPcd, relativeSchemeId) == e_FM_PCD_PLCR) + { + + if((FmPcdKgIsDirectPlcr(p_FmHc->h_FmPcd, relativeSchemeId) == FALSE) || + (FmPcdKgIsDistrOnPlcrProfile(p_FmHc->h_FmPcd, relativeSchemeId) == TRUE)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this situation PP can not be with distribution and has to be shared")); + } + err = FmPcdPlcrCcGetSetParams(p_FmHc->h_FmPcd, FmPcdKgGetRelativeProfileId(p_FmHc->h_FmPcd, relativeSchemeId), requiredAction); + if(err) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + } + } + + FmPcdKgUpatePointedOwner(p_FmHc->h_FmPcd, relativeSchemeId,TRUE); + FmPcdKgUpdateRequiredAction(p_FmHc->h_FmPcd, relativeSchemeId,requiredAction); + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + return E_OK; +} + +uint32_t FmHcPcdKgGetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t retVal; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + return 0; + } + + if ((err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) != E_OK) + { + REPORT_ERROR(MAJOR, err, ("Scheme lock")); + return 0; + } + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return 0; + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return 0; + } + + if (!FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is invalid")); + XX_FreeSmart(p_HcFrame); + return 0; + } + + retVal = p_HcFrame->hcSpecificData.schemeRegs.kgse_spc; + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + + XX_FreeSmart(p_HcFrame); + + return retVal; +} + +t_Error FmHcPcdKgSetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t value) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint8_t relativeSchemeId, physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmHc->h_FmPcd, physicalSchemeId); + if( relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if ((err = FmPcdKgSchemeTryLock(p_FmHc->h_FmPcd, relativeSchemeId, FALSE)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check that scheme is valid */ + if (!FmPcdKgHwSchemeIsValid(p_HcFrame->hcSpecificData.schemeRegs.kgse_mode)) + { + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is invalid")); + } + + /* Write scheme back, with modified counter */ + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, TRUE); + p_HcFrame->extraReg = 0xFFFFF800; + /* write counter */ + p_HcFrame->hcSpecificData.schemeRegs.kgse_spc = value; + + BUILD_FD(sizeof(t_HcFrame)); + + err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence); + + FmPcdKgReleaseSchemeLock(p_FmHc->h_FmPcd, relativeSchemeId); + XX_FreeSmart(p_HcFrame); + + return err; +} + +t_Error FmHcPcdKgSetClsPlan(t_Handle h_FmHc, t_FmPcdKgInterModuleClsPlanSet *p_Set) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t i; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + + for(i=p_Set->baseEntry;ibaseEntry+p_Set->numOfClsPlanEntries;i+=8) + { + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWriteClsPlanBlockActionReg((uint8_t)(i / CLS_PLAN_NUM_PER_GRP)); + p_HcFrame->extraReg = 0xFFFFF800; + memcpy((void*)&p_HcFrame->hcSpecificData.clsPlanEntries, (void *)&p_Set->vectors[i-p_Set->baseEntry], CLS_PLAN_NUM_PER_GRP*sizeof(uint32_t)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + XX_FreeSmart(p_HcFrame); + + return err; +} + +t_Error FmHcPcdKgDeleteClsPlan(t_Handle h_FmHc, uint8_t grpId) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet; + + /* clear clsPlan entries in memory */ + p_ClsPlanSet = (t_FmPcdKgInterModuleClsPlanSet *)XX_Malloc(sizeof(t_FmPcdKgInterModuleClsPlanSet)); + if (!p_ClsPlanSet) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("memory allocation failed for p_ClsPlanSetd")); + memset(p_ClsPlanSet, 0, sizeof(t_FmPcdKgInterModuleClsPlanSet)); + + p_ClsPlanSet->baseEntry = FmPcdKgGetClsPlanGrpBase(p_FmHc->h_FmPcd, grpId); + p_ClsPlanSet->numOfClsPlanEntries = FmPcdKgGetClsPlanGrpSize(p_FmHc->h_FmPcd, grpId); + ASSERT_COND(p_ClsPlanSet->numOfClsPlanEntries <= FM_PCD_MAX_NUM_OF_CLS_PLANS); + + if (FmHcPcdKgSetClsPlan(p_FmHc, p_ClsPlanSet) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + XX_Free(p_ClsPlanSet); + + FmPcdKgDestroyClsPlanGrp(p_FmHc->h_FmPcd, grpId); + + return E_OK; +} + +t_Error FmHcPcdCcCapwapTimeoutReassm(t_Handle h_FmHc, t_FmPcdCcCapwapReassmTimeoutParams *p_CcCapwapReassmTimeoutParams ) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + uint32_t intFlags; + t_DpaaFD fmFd; + t_Error err; + + SANITY_CHECK_RETURN_VALUE(h_FmHc, E_INVALID_HANDLE,0); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_CC_CAPWAP_REASSM_TIMEOUT); + memcpy(&p_HcFrame->hcSpecificData.ccCapwapReassmTimeout, p_CcCapwapReassmTimeoutParams, sizeof(t_FmPcdCcCapwapReassmTimeoutParams)); + BUILD_FD(sizeof(t_HcFrame)); + + err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence); + + XX_FreeSmart(p_HcFrame); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; +} + + +t_Error FmHcPcdPlcrCcGetSetParams(t_Handle h_FmHc,uint16_t absoluteProfileId, uint32_t requiredAction) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err; + uint32_t tmpReg32 = 0; + uint32_t requiredActionTmp, pointedOwnersTmp; + + SANITY_CHECK_RETURN_VALUE(h_FmHc, E_INVALID_HANDLE,0); + + if (absoluteProfileId >= FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Policer profile out of range")); + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return ERROR_CODE(E_BUSY); + + + requiredActionTmp = FmPcdPlcrGetRequiredAction(p_FmHc->h_FmPcd, absoluteProfileId); + pointedOwnersTmp = FmPcdPlcrGetPointedOwners(p_FmHc->h_FmPcd, absoluteProfileId); + + if(!pointedOwnersTmp || !(requiredActionTmp & requiredAction)) + { + + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + /* first read scheme and check that it is valid */ + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check that profile is valid */ + if (!FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer is already used")); + } + + tmpReg32 = p_HcFrame->hcSpecificData.profileRegs.fmpl_pegnia; + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildNiaProfileReg(TRUE, FALSE, FALSE); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = tmpReg32; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + tmpReg32 = p_HcFrame->hcSpecificData.profileRegs.fmpl_peynia; + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildNiaProfileReg(FALSE, TRUE, FALSE); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = tmpReg32; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + tmpReg32 = p_HcFrame->hcSpecificData.profileRegs.fmpl_pernia; + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildNiaProfileReg(FALSE, FALSE, TRUE); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = tmpReg32; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + XX_FreeSmart(p_HcFrame); + } + } + + FmPcdPlcrUpatePointedOwner(p_FmHc->h_FmPcd, absoluteProfileId, TRUE); + FmPcdPlcrUpdateRequiredAction(p_FmHc->h_FmPcd, absoluteProfileId, requiredAction); + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + return E_OK; +} + +t_Handle FmHcPcdPlcrSetProfile(t_Handle h_FmHc,t_FmPcdPlcrProfileParams *p_Profile) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_FmPcdPlcrInterModuleProfileRegs profileRegs; + t_Error err = E_OK; + uint32_t intFlags; + uint16_t profileIndx; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + + if (p_Profile->modify) + { + profileIndx = (uint16_t)(PTR_TO_UINT(p_Profile->id.h_Profile)-1); + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, profileIndx, FALSE)) + return NULL; + } + else + { + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + err = FmPcdPlcrGetAbsoluteProfileId(p_FmHc->h_FmPcd, + p_Profile->id.newParams.profileType, + p_Profile->id.newParams.h_FmPort, + p_Profile->id.newParams.relativeProfileId, + &profileIndx); + if (err) + { + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + err = FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, profileIndx, TRUE); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + if (err) + return NULL; + } + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return NULL; + } + + if(!p_Profile->modify) + { + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(profileIndx); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + /* check if this scheme is already used */ + if (FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer is already used")); + XX_FreeSmart(p_HcFrame); + return NULL; + } + } + + memset(&profileRegs, 0, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + err = FmPcdPlcrBuildProfile(p_FmHc->h_FmPcd, p_Profile, &profileRegs); + if(err) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MAJOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionRegs(profileIndx); + p_HcFrame->extraReg = 0x00008000; + memcpy(&p_HcFrame->hcSpecificData.profileRegs, &profileRegs, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return NULL; + } + + FmPcdPlcrValidateProfileSw(p_FmHc->h_FmPcd, profileIndx); + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, profileIndx); + + XX_FreeSmart(p_HcFrame); + + return UINT_TO_PTR((uint64_t)profileIndx+1); +} + +t_Error FmHcPcdPlcrDeleteProfile(t_Handle h_FmHc, t_Handle h_Profile) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return ERROR_CODE(E_BUSY); + + FmPcdPlcrInvalidateProfileSw(p_FmHc->h_FmPcd, absoluteProfileId); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= 0x00008000; + p_HcFrame->extraReg = 0x00008000; + memset(&p_HcFrame->hcSpecificData.profileRegs, 0, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +t_Error FmHcPcdPlcrSetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value) +{ + + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return ERROR_CODE(E_BUSY); + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* check that profile is valid */ + if (!FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer is already used")); + } + + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildWritePlcrActionReg(absoluteProfileId); + p_HcFrame->actionReg |= FmPcdPlcrBuildCounterProfileReg(counter); + p_HcFrame->extraReg = 0x00008000; + p_HcFrame->hcSpecificData.singleRegForWrite = value; + + BUILD_FD(SIZE_OF_HC_FRAME_PROFILE_CNT); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +uint32_t FmHcPcdPlcrGetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_Error err = E_OK; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + uint32_t retVal = 0; + + SANITY_CHECK_RETURN_VALUE(h_FmHc, E_INVALID_HANDLE,0); + + if (FmPcdPlcrProfileTryLock(p_FmHc->h_FmPcd, absoluteProfileId, FALSE)) + return 0; + + /* first read scheme and check that it is valid */ + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + return 0; + } + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_PLCR_PRFL); + p_HcFrame->actionReg = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + p_HcFrame->extraReg = 0x00008000; + + BUILD_FD(SIZE_OF_HC_FRAME_READ_OR_CC_DYNAMIC); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + REPORT_ERROR(MINOR, err, NO_MSG); + XX_FreeSmart(p_HcFrame); + return 0; + } + + /* check that profile is valid */ + if (!FmPcdPlcrHwProfileIsValid(p_HcFrame->hcSpecificData.profileRegs.fmpl_pemode)) + { + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + XX_FreeSmart(p_HcFrame); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("invalid Policer profile")); + return 0; + } + + switch (counter) + { + case e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_pegpc; + break; + case e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_peypc; + break; + case e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_perpc; + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_perypc; + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER: + retVal = p_HcFrame->hcSpecificData.profileRegs.fmpl_perrpc; + break; + default: + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + FmPcdPlcrReleaseProfileLock(p_FmHc->h_FmPcd, absoluteProfileId); + + XX_FreeSmart(p_HcFrame); + + return retVal; +} + +t_Error FmHcPcdCcModifyTreeNextEngine(t_Handle h_FmHc, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + uint32_t intFlags; + t_List h_OldPointersLst, h_NewPointersLst; + t_Handle h_Params; + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + err = FmPcdCcTreeTryLock(h_CcTree); + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + if (err) + return err; + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModifyNextEngineParamTree(p_FmHc->h_FmPcd, h_CcTree, grpId, index, p_FmPcdCcNextEngineParams, + &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcTreeReleaseLock(h_CcTree); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcTreeReleaseLock(h_CcTree); + + return err; +} + + +t_Error FmHcPcdCcModifyNodeMissNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Handle h_Params; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModifyMissNextEngineParamNode(p_FmHc->h_FmPcd, h_CcNode, p_FmPcdCcNextEngineParams, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + + return E_OK; +} + +t_Error FmHcPcdCcRemoveKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Handle h_Params; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + + err = FmPcdCcRemoveKey(p_FmHc->h_FmPcd,h_CcNode,keyIndex, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + return err; + +} + +t_Error FmHcPcdCcAddKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Handle h_Params; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + + err = FmPcdCcAddKey(p_FmHc->h_FmPcd,h_CcNode,keyIndex,keySize, p_KeyParams, &h_OldPointersLst,&h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + return err; +} + + +t_Error FmHcPcdCcModifyKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + t_Handle h_Params; + + UNUSED(keySize); + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModifyKey(p_FmHc->h_FmPcd, h_CcNode, keyIndex, keySize, p_Key, p_Mask, &h_OldPointersLst,&h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + return err; +} + +t_Error FmHcPcdCcModifyNodeNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_Error err = E_OK; + t_List h_OldPointersLst, h_NewPointersLst; + t_List h_List; + uint32_t intFlags; + t_Handle h_Params; + + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + + err = FmPcdCcModiyNextEngineParamNode(p_FmHc->h_FmPcd, h_CcNode, keyIndex, p_FmPcdCcNextEngineParams, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + FmPcdCcNodeTreeReleaseLock(&h_List); + return err; +} + + +t_Error FmHcPcdCcModifyKeyAndNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_List h_OldPointersLst, h_NewPointersLst; + t_Error err = E_OK; + t_List h_List; + uint32_t intFlags; + t_Handle h_Params; + + INIT_LIST(&h_OldPointersLst); + INIT_LIST(&h_NewPointersLst); + INIT_LIST(&h_List); + + intFlags = FmPcdLock(p_FmHc->h_FmPcd); + + if ((err = FmPcdCcNodeTreeTryLock(p_FmHc->h_FmPcd, h_CcNode, &h_List)) != E_OK) + { + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + return err; + } + + FmPcdUnlock(p_FmHc->h_FmPcd, intFlags); + + + err = FmPcdCcModifyKeyAndNextEngine(p_FmHc->h_FmPcd,h_CcNode,keyIndex,keySize, p_KeyParams, &h_OldPointersLst,&h_NewPointersLst, &h_Params); + if(err) + { + FmPcdCcNodeTreeReleaseLock(&h_List); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = HcDynamicChange(p_FmHc, &h_OldPointersLst, &h_NewPointersLst, &h_Params); + + FmPcdCcNodeTreeReleaseLock(&h_List); + + + return err; +} + + +t_Error FmHcKgWriteSp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t spReg, bool add) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + /* first read SP register */ + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildReadPortSchemeBindActionReg(hardwarePortId); + p_HcFrame->extraReg = 0xFFFFF800; + + BUILD_FD(SIZE_OF_HC_FRAME_PORT_REGS); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + /* spReg is the first reg, so we can use it both for read and for write */ + if(add) + p_HcFrame->hcSpecificData.portRegsForRead.spReg |= spReg; + else + p_HcFrame->hcSpecificData.portRegsForRead.spReg &= ~spReg; + + p_HcFrame->actionReg = FmPcdKgBuildWritePortSchemeBindActionReg(hardwarePortId); + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + +t_Error FmHcKgWriteCpp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t cppReg) +{ + t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; + t_HcFrame *p_HcFrame; + t_DpaaFD fmFd; + t_Error err = E_OK; + + ASSERT_COND(p_FmHc); + + p_HcFrame = (t_HcFrame *)XX_MallocSmart((sizeof(t_HcFrame) + p_FmHc->padTill16), 0, 16); + if (!p_HcFrame) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("HC Frame obj")); + memset(p_HcFrame, 0, sizeof(t_HcFrame)); + /* first read SP register */ + p_HcFrame->opcode = (uint32_t)(HC_HCOR_GBL | HC_HCOR_OPCODE_KG_SCM); + p_HcFrame->actionReg = FmPcdKgBuildWritePortClsPlanBindActionReg(hardwarePortId); + p_HcFrame->extraReg = 0xFFFFF800; + p_HcFrame->hcSpecificData.singleRegForWrite = cppReg; + + BUILD_FD(sizeof(t_HcFrame)); + + if ((err = EnQFrm(p_FmHc, &fmFd, &p_HcFrame->commandSequence)) != E_OK) + { + XX_FreeSmart(p_HcFrame); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + XX_FreeSmart(p_HcFrame); + + return E_OK; +} + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/Makefile @@ -0,0 +1,19 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-Pcd.o + +fsl-ncsw-Pcd-objs := fm_cc.o fm_kg.o fm_pcd.o fm_plcr.o fm_prs.o + + + + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.c @@ -0,0 +1,3467 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_cc.c + + @Description FM CC ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "fm_pcd_ext.h" +#include "fm_muram_ext.h" + +#include "fm_common.h" +#include "fm_hc.h" +#include "fm_cc.h" + + +#if defined(FM_CAPWAP_SUPPORT) +#define FM_PCD_CC_MANIP +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +t_Handle FmPcdCcTreeGetSavedManipParams(t_Handle h_FmTree, uint8_t manipIndx) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmTree; + + ASSERT_COND(p_FmPcdCcTree); + + return p_FmPcdCcTree->fmPcdCcSavedManipParams[manipIndx]; +} + +void FmPcdCcTreeSetSavedManipParams(t_Handle h_FmTree, t_Handle h_SavedManipParams, uint8_t manipIndx) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmTree; + + ASSERT_COND(p_FmPcdCcTree); + + p_FmPcdCcTree->fmPcdCcSavedManipParams[manipIndx] = h_SavedManipParams; +} + +uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + return p_FmPcdCcNode->parseCode; +} + +uint8_t FmPcdCcGetOffset(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + return p_FmPcdCcNode->offset; +} + +uint16_t FmPcdCcGetNumOfKeys(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + return p_FmPcdCcNode->numOfKeys; +} +static void EnqueueNodeInfoToRelevantLst(t_List *p_List, t_CcNodeInformation *p_CcInfo) +{ + t_CcNodeInformation *p_CcInformation; + uint32_t intFlags; + + p_CcInformation = (t_CcNodeInformation *)XX_Malloc(sizeof(t_CcNodeInformation)); + if (p_CcInformation) + { + memset(p_CcInformation, 0, sizeof(t_CcNodeInformation)); + memcpy(p_CcInformation, p_CcInfo, sizeof(t_CcNodeInformation)); + INIT_LIST(&p_CcInformation->node); + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_CcInformation->node, p_List); + XX_RestoreAllIntr(intFlags); + } + else + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("CC Node Information")); +} + + +static t_CcNodeInformation* FindNodeInfoInReleventLst(t_List *p_List, t_Handle h_Info) +{ + t_CcNodeInformation *p_CcInformation; + t_List *p_Pos; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + for (p_Pos = LIST_FIRST(p_List); p_Pos != (p_List); p_Pos = LIST_NEXT(p_Pos)) + { + p_CcInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcInformation->h_CcNode); + if(p_CcInformation->h_CcNode == h_Info) + { + XX_RestoreAllIntr(intFlags); + return p_CcInformation; + } + } + XX_RestoreAllIntr(intFlags); + return NULL; +} + +static void DequeueNodeInfoFromRelevantLst(t_List *p_List, t_Handle h_Info) +{ + t_CcNodeInformation *p_CcInformation = NULL; + uint32_t intFlags; + t_List *p_Pos; + + intFlags = XX_DisableAllIntr(); + if (LIST_IsEmpty(p_List)) + { + XX_RestoreAllIntr(intFlags); + return; + } + + for (p_Pos = LIST_FIRST(p_List); p_Pos != (p_List); p_Pos = LIST_NEXT(p_Pos)) + { + p_CcInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcInformation->h_CcNode); + if (p_CcInformation->h_CcNode == h_Info) + break; + } + if (p_CcInformation) + LIST_DelAndInit(&p_CcInformation->node); + XX_RestoreAllIntr(intFlags); +} + +static t_Error FmPcdCcSetRequiredAction(t_Handle h_FmPcd, uint32_t requiredAction, t_FmPcdCcNextEngineAndRequiredActionParams *p_CcNextEngineParamsTmp, + t_Handle h_AdTmp, uint16_t numOfEntries, t_Handle h_Tree) +{ + + t_AdOfTypeResult *p_AdTmp = (t_AdOfTypeResult *)h_AdTmp; + uint32_t tmpReg32; + t_Error err; + t_FmPcdCcNode *p_FmPcdCcNode; + int i = 0; + uint16_t tmp = 0; + uint16_t profileId; + uint8_t relativeSchemeId, physicalSchemeId; + t_CcNodeInformation ccNodeInfo; + + for(i = 0; i < numOfEntries; i++) + { + if(i == 0) + h_AdTmp = PTR_MOVE(h_AdTmp, i*FM_PCD_CC_AD_ENTRY_SIZE); + else + h_AdTmp = PTR_MOVE(h_AdTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + if(p_CcNextEngineParamsTmp[i].shadowAction & requiredAction) + continue; + switch(p_CcNextEngineParamsTmp[i].nextEngineParams.nextEngine) + { + case(e_FM_PCD_CC): + if(requiredAction) + { + p_FmPcdCcNode = p_CcNextEngineParamsTmp[i].nextEngineParams.params.ccParams.h_CcNode; + ASSERT_COND(p_FmPcdCcNode); + if(p_FmPcdCcNode->shadowAction == requiredAction) + break; + if((requiredAction & UPDATE_CC_WITH_TREE) && !(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_TREE)) + { + + ASSERT_COND(LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) == 0); + if(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_DELETE_TREE) + p_FmPcdCcNode->shadowAction &= ~UPDATE_CC_WITH_DELETE_TREE; + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = h_Tree; + EnqueueNodeInfoToRelevantLst(&p_FmPcdCcNode->ccTreesLst, &ccNodeInfo); + p_CcNextEngineParamsTmp[i].shadowAction |= UPDATE_CC_WITH_TREE; + } + if((requiredAction & UPDATE_CC_WITH_DELETE_TREE) && !(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_DELETE_TREE)) + { + ASSERT_COND(LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) == 1); + if(p_FmPcdCcNode->shadowAction & UPDATE_CC_WITH_TREE) + p_FmPcdCcNode->shadowAction &= ~UPDATE_CC_WITH_TREE; + DequeueNodeInfoFromRelevantLst(&p_FmPcdCcNode->ccTreesLst, h_Tree); + p_CcNextEngineParamsTmp[i].shadowAction |= UPDATE_CC_WITH_DELETE_TREE; + } + if(p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams.nextEngine != e_FM_PCD_INVALID) + tmp = (uint8_t)(p_FmPcdCcNode->numOfKeys + 1); + else + tmp = p_FmPcdCcNode->numOfKeys; + err = FmPcdCcSetRequiredAction(h_FmPcd, requiredAction, p_FmPcdCcNode->nextEngineAndRequiredAction, p_FmPcdCcNode->h_AdTable, tmp, h_Tree); + if(err != E_OK) + return err; + p_FmPcdCcNode->shadowAction |= requiredAction; + } + break; + + case(e_FM_PCD_KG): + if((requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) && !(p_CcNextEngineParamsTmp[i].shadowAction & UPDATE_NIA_ENQ_WITHOUT_DMA)) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_CcNextEngineParamsTmp[i].nextEngineParams.params.kgParams.h_DirectScheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(h_FmPcd, physicalSchemeId); + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + if (!FmPcdKgIsSchemeValidSw(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid direct scheme.")); + if(!KgIsSchemeAlwaysDirect(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("For this action scheme has to be direct.")); + err = FmPcdKgCcGetSetParams(h_FmPcd, p_CcNextEngineParamsTmp[i].nextEngineParams.params.kgParams.h_DirectScheme, requiredAction); + if(err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + p_CcNextEngineParamsTmp[i].shadowAction |= requiredAction; + } + break; + + case(e_FM_PCD_PLCR): + if((requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) && !(p_CcNextEngineParamsTmp[i].shadowAction & UPDATE_NIA_ENQ_WITHOUT_DMA)) + { + if(!p_CcNextEngineParamsTmp[i].nextEngineParams.params.plcrParams.overrideParams) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this intialization only overrideFqid can be intiizliaes")); + if(!p_CcNextEngineParamsTmp[i].nextEngineParams.params.plcrParams.sharedProfile) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this intialization only overrideFqid can be intiizliaes")); + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd, e_FM_PCD_PLCR_SHARED, NULL, p_CcNextEngineParamsTmp[i].nextEngineParams.params.plcrParams.newRelativeProfileId, &profileId); + if(err!= E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + err = FmPcdPlcrCcGetSetParams(h_FmPcd, profileId, requiredAction); + if(err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + p_CcNextEngineParamsTmp[i].shadowAction |= requiredAction; + } + break; + + case(e_FM_PCD_DONE): + if((requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) && !(p_CcNextEngineParamsTmp[i].shadowAction & UPDATE_NIA_ENQ_WITHOUT_DMA)) + { + tmpReg32 = GET_UINT32(p_AdTmp->nia); + if((tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine was previosely assigned not as PCD_DONE")); + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_AdTmp->nia, tmpReg32); + p_CcNextEngineParamsTmp[i].shadowAction |= requiredAction; + } + break; + + default: + break; + } + } + + return E_OK; +} + +static t_Error CcUpdateParam(t_Handle h_FmPcd, + t_Handle h_FmPort, + t_FmPcdCcNextEngineAndRequiredActionParams *p_CcNextEngineParams, + uint16_t numOfEntries, + t_Handle h_Ad, + bool validate, + uint16_t level, + t_Handle h_FmTree, + bool modify) +{ + t_CcNodeInformation *p_CcNodeInfo; + t_FmPcdCcNode *p_FmPcdCcNode; + t_Error err; + uint16_t tmp = 0; + int i = 0; + + level++; + + if(numOfEntries) + { + for(i = 0; i < numOfEntries; i++) + { + if(i == 0) + h_Ad = PTR_MOVE(h_Ad, i*FM_PCD_CC_AD_ENTRY_SIZE); + else + h_Ad = PTR_MOVE(h_Ad, FM_PCD_CC_AD_ENTRY_SIZE); + + if(p_CcNextEngineParams[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNode = p_CcNextEngineParams[i].nextEngineParams.params.ccParams.h_CcNode; + ASSERT_COND(p_FmPcdCcNode); + p_CcNodeInfo = FindNodeInfoInReleventLst(&p_FmPcdCcNode->ccTreesLst,h_FmTree); + ASSERT_COND(p_CcNodeInfo); + p_CcNodeInfo->index = level; +#ifdef FM_PCD_CC_MANIP + if(p_CcNextEngineParams[i].nextEngineParams.h_Manip) + { + err = FmPcdManipUpdate(h_FmPcd, h_FmPort, p_CcNextEngineParams[i].nextEngineParams.h_Manip, h_Ad, validate, p_CcNodeInfo->index, h_FmTree, modify); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } +#endif /* FM_PCD_CC_MANIP */ + + if(p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams.nextEngine != e_FM_PCD_INVALID) + tmp = (uint8_t)(p_FmPcdCcNode->numOfKeys + 1); + else + tmp = p_FmPcdCcNode->numOfKeys; + + err = CcUpdateParam(h_FmPcd, h_FmPort, p_FmPcdCcNode->nextEngineAndRequiredAction, tmp, p_FmPcdCcNode->h_AdTable, validate,level, h_FmTree, modify); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } +#ifdef FM_PCD_CC_MANIP + else + { + if(p_CcNextEngineParams[i].nextEngineParams.h_Manip) + { + err = FmPcdManipUpdate(h_FmPcd, h_FmPort, p_CcNextEngineParams[i].nextEngineParams.h_Manip, h_Ad, validate, level,h_FmTree, modify); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } +#endif /* FM_PCD_CC_MANIP */ + } + } + + return E_OK; +} +static bool IsNodeInModifiedState(t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_CcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_CcNode); + + return p_CcNode->modifiedState; +} + +static void UpdateNodeWithModifiedState(t_Handle h_CcNode, bool modifiedState) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + + ASSERT_COND(p_FmPcdCcNode); + + p_FmPcdCcNode->modifiedState = modifiedState; +} + +static ccPrivateInfo_t IcDefineCode(t_FmPcdCcNodeParams *p_CcNodeParam) +{ + switch (p_CcNodeParam->extractCcParams.extractNonHdr.action) + { + case(e_FM_PCD_ACTION_EXACT_MATCH): + switch(p_CcNodeParam->extractCcParams.extractNonHdr.src) + { + case(e_FM_PCD_EXTRACT_FROM_KEY): + return CC_PRIVATE_INFO_IC_KEY_EXACT_MATCH; + case(e_FM_PCD_EXTRACT_FROM_HASH): + return CC_PRIVATE_INFO_IC_HASH_EXACT_MATCH; + default: + return CC_PRIVATE_INFO_NONE; + } + case(e_FM_PCD_ACTION_INDEXED_LOOKUP): + switch(p_CcNodeParam->extractCcParams.extractNonHdr.src) + { + case(e_FM_PCD_EXTRACT_FROM_HASH): + return CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP; + case(e_FM_PCD_EXTRACT_FROM_FLOW_ID): + return CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP; + default: + return CC_PRIVATE_INFO_NONE; + } + default: + break; + } + return CC_PRIVATE_INFO_NONE; +} + +static t_CcNodeInformation * DequeueAdditionalInfoFromRelevantLst(t_List *p_List) +{ + t_CcNodeInformation *p_CcNodeInfo = NULL; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + if (!LIST_IsEmpty(p_List)) + { + p_CcNodeInfo = CC_NODE_F_OBJECT(p_List->p_Next); + LIST_DelAndInit(&p_CcNodeInfo->node); + } + XX_RestoreAllIntr(intFlags); + return p_CcNodeInfo; +} + +static void ReleaseLst(t_List *p_List) +{ + t_CcNodeInformation *p_CcNodeInfo = NULL; + + if(!LIST_IsEmpty(p_List)) + { + p_CcNodeInfo = DequeueAdditionalInfoFromRelevantLst(p_List); + while (p_CcNodeInfo) + { + XX_Free(p_CcNodeInfo); + p_CcNodeInfo = DequeueAdditionalInfoFromRelevantLst(p_List); + } + } + LIST_DelAndInit(p_List); +} + +void FmPcdCcTreeReleaseLock(t_Handle h_FmPcdCcTree) +{ + RELEASE_LOCK(((t_FmPcdCcTree *)h_FmPcdCcTree)->lock); +} + +void FmPcdCcNodeTreeReleaseLock(t_List *p_List) +{ + t_List *p_Pos; + t_CcNodeInformation *p_CcNodeInfo; + t_Handle h_FmPcdCcTree; + + LIST_FOR_EACH(p_Pos, p_List) + { + p_CcNodeInfo = CC_NODE_F_OBJECT(p_Pos); + h_FmPcdCcTree = p_CcNodeInfo->h_CcNode; + FmPcdCcTreeReleaseLock(h_FmPcdCcTree); + } + ReleaseLst(p_List); +} + +static void DeleteNode(t_FmPcdCcNode *p_FmPcdCcNode) +{ + if(p_FmPcdCcNode) + { + if(p_FmPcdCcNode->p_GlblMask) + { + XX_Free(p_FmPcdCcNode->p_GlblMask); + p_FmPcdCcNode->p_GlblMask = NULL; + } + if(p_FmPcdCcNode->h_KeysMatchTable) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), p_FmPcdCcNode->h_KeysMatchTable); + p_FmPcdCcNode->h_KeysMatchTable = NULL; + } + if(p_FmPcdCcNode->h_AdTable) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), p_FmPcdCcNode->h_AdTable); + p_FmPcdCcNode->h_AdTable = NULL; + } + + ReleaseLst(&p_FmPcdCcNode->ccPrevNodesLst); + ReleaseLst(&p_FmPcdCcNode->ccTreeIdLst); + ReleaseLst(&p_FmPcdCcNode->ccTreesLst); + + XX_Free(p_FmPcdCcNode); + } +} + +static void DeleteTree(t_FmPcdCcTree *p_FmPcdTree, t_FmPcd *p_FmPcd) +{ + if(p_FmPcdTree) + { + if(p_FmPcdTree->ccTreeBaseAddr) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcd), UINT_TO_PTR(p_FmPcdTree->ccTreeBaseAddr)); + p_FmPcdTree->ccTreeBaseAddr = 0; + } + + ReleaseLst(&p_FmPcdTree->fmPortsLst); + + XX_Free(p_FmPcdTree); + } +} + +static void UpdateNodeOwner(t_FmPcdCcNode *p_FmPcdCcNode, bool add) +{ + ASSERT_COND(p_FmPcdCcNode); + + if(add) + p_FmPcdCcNode->owners++; + else + { + ASSERT_COND(p_FmPcdCcNode->owners); + p_FmPcdCcNode->owners--; + } +} + +static void GetCcExtractKeySize(uint8_t parseCodeRealSize, uint8_t *parseCodeCcSize) +{ + if((parseCodeRealSize > 0) && (parseCodeRealSize < 2)) + *parseCodeCcSize = 1; + else if(parseCodeRealSize == 2) + *parseCodeCcSize = 2; + else if((parseCodeRealSize > 2) && (parseCodeRealSize <= 4)) + *parseCodeCcSize = 4; + else if((parseCodeRealSize > 4) && (parseCodeRealSize <= 8)) + *parseCodeCcSize = 8; + else if((parseCodeRealSize > 8) && (parseCodeRealSize <= 16)) + *parseCodeCcSize = 16; + else if((parseCodeRealSize > 16) && (parseCodeRealSize <= 24)) + *parseCodeCcSize = 24; + else if((parseCodeRealSize > 24) && (parseCodeRealSize <= 32)) + *parseCodeCcSize = 32; + else if((parseCodeRealSize > 32) && (parseCodeRealSize <= 40)) + *parseCodeCcSize = 40; + else if((parseCodeRealSize > 40) && (parseCodeRealSize <= 48)) + *parseCodeCcSize = 48; + else if((parseCodeRealSize > 48) && (parseCodeRealSize <= 56)) + *parseCodeCcSize = 56; + else + *parseCodeCcSize = 0; +} + +static void GetSizeHeaderField(e_NetHeaderType hdr,t_FmPcdFields field,uint8_t *parseCodeRealSize) +{ + switch(hdr) + { + case (HEADER_TYPE_ETH): + switch(field.eth) + { + case(NET_HEADER_FIELD_ETH_DA): + *parseCodeRealSize = 6; + break; + case(NET_HEADER_FIELD_ETH_SA): + *parseCodeRealSize = 6; + break; + case(NET_HEADER_FIELD_ETH_TYPE): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported1")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case(HEADER_TYPE_PPPoE): + switch(field.pppoe) + { + case(NET_HEADER_FIELD_PPPoE_PID): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported1")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_VLAN): + switch(field.vlan) + { + case(NET_HEADER_FIELD_VLAN_TCI): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported2")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_MPLS): + switch(field.mpls) + { + case(NET_HEADER_FIELD_MPLS_LABEL_STACK): + *parseCodeRealSize = 4; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported3")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_IPv4): + switch(field.ipv4) + { + case(NET_HEADER_FIELD_IPv4_DST_IP): + case(NET_HEADER_FIELD_IPv4_SRC_IP): + *parseCodeRealSize = 4; + break; + case(NET_HEADER_FIELD_IPv4_TOS): + case(NET_HEADER_FIELD_IPv4_PROTO): + *parseCodeRealSize = 1; + break; + case(NET_HEADER_FIELD_IPv4_DST_IP | NET_HEADER_FIELD_IPv4_SRC_IP): + *parseCodeRealSize = 8; + break; + case(NET_HEADER_FIELD_IPv4_TTL): + *parseCodeRealSize = 1; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported4")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_IPv6): + switch(field.ipv6) + { + case(NET_HEADER_FIELD_IPv6_VER | NET_HEADER_FIELD_IPv6_FL | NET_HEADER_FIELD_IPv6_TC): + *parseCodeRealSize = 4; + break; + case(NET_HEADER_FIELD_IPv6_NEXT_HDR): + case(NET_HEADER_FIELD_IPv6_HOP_LIMIT): + *parseCodeRealSize = 1; + break; + case(NET_HEADER_FIELD_IPv6_DST_IP): + case(NET_HEADER_FIELD_IPv6_SRC_IP): + *parseCodeRealSize = 16; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported5")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_GRE): + switch(field.gre) + { + case(NET_HEADER_FIELD_GRE_TYPE): + *parseCodeRealSize = 2; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported6")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_MINENCAP): + switch(field.minencap) + { + case(NET_HEADER_FIELD_MINENCAP_TYPE): + *parseCodeRealSize = 1; + break; + case(NET_HEADER_FIELD_MINENCAP_DST_IP): + case(NET_HEADER_FIELD_MINENCAP_SRC_IP): + *parseCodeRealSize = 4; + break; + case(NET_HEADER_FIELD_MINENCAP_SRC_IP | NET_HEADER_FIELD_MINENCAP_DST_IP): + *parseCodeRealSize = 8; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported7")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_TCP): + switch(field.tcp) + { + case(NET_HEADER_FIELD_TCP_PORT_SRC): + case(NET_HEADER_FIELD_TCP_PORT_DST): + *parseCodeRealSize = 2; + break; + case(NET_HEADER_FIELD_TCP_PORT_SRC | NET_HEADER_FIELD_TCP_PORT_DST): + *parseCodeRealSize = 4; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported8")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + case (HEADER_TYPE_UDP): + switch(field.udp) + { + case(NET_HEADER_FIELD_UDP_PORT_SRC): + case(NET_HEADER_FIELD_UDP_PORT_DST): + *parseCodeRealSize = 2; + break; + case(NET_HEADER_FIELD_UDP_PORT_SRC | NET_HEADER_FIELD_UDP_PORT_DST): + *parseCodeRealSize = 4; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported9")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported10")); + *parseCodeRealSize = CC_SIZE_ILLEGAL; + break; + } +} + +static t_Error ValidateNextEngineParams(t_Handle h_FmPcd, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + uint16_t absoluteProfileId; + t_Error err = E_OK; + uint8_t relativeSchemeId; + + switch(p_FmPcdCcNextEngineParams->nextEngine) + { + case(e_FM_PCD_INVALID): + err = E_NOT_SUPPORTED; + break; + case(e_FM_PCD_DONE): + if(p_FmPcdCcNextEngineParams->params.enqueueParams.action == e_FM_PCD_ENQ_FRAME) + { + if(p_FmPcdCcNextEngineParams->params.enqueueParams.overrideFqid && + !p_FmPcdCcNextEngineParams->params.enqueueParams.newFqid) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("not defined fqid for control flow for BMI next engine ")); + if(p_FmPcdCcNextEngineParams->params.enqueueParams.newFqid & ~0x00FFFFFF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fqidForCtrlFlow must be between 1 and 2^24-1")); + } + break; + case(e_FM_PCD_KG): + relativeSchemeId = FmPcdKgGetRelativeSchemeId(h_FmPcd, (uint8_t)(PTR_TO_UINT(p_FmPcdCcNextEngineParams->params.kgParams.h_DirectScheme)-1)); + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if(!FmPcdKgIsSchemeValidSw(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("not valid schemeIndex in KG next engine param")); + if(!KgIsSchemeAlwaysDirect(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("CC Node may point only to a scheme that is always direct.")); + break; + case(e_FM_PCD_PLCR): + if(p_FmPcdCcNextEngineParams->params.plcrParams.overrideParams) + { + /* if private policer profile, it may be uninitialized yet, therefor no checks are done at this stage */ + if(p_FmPcdCcNextEngineParams->params.plcrParams.sharedProfile) + { + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd,e_FM_PCD_PLCR_SHARED,NULL,p_FmPcdCcNextEngineParams->params.plcrParams.newRelativeProfileId, &absoluteProfileId); + if(err) + RETURN_ERROR(MAJOR, err, ("Shared profile offset is out of range")); + if(!FmPcdPlcrIsProfileValid(h_FmPcd, absoluteProfileId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid profile")); + } + else + { + } + /* TODO - add check according to the revision of the chip. + if(!p_FmPcdCcNextEngineParams->params.plcrParams.newFqid || + (p_FmPcdCcNextEngineParams->params.plcrParams.newFqid & ~0x00FFFFFF)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("newFqid must be between 1 and 2^24-1")); + */ + } + break; + case(e_FM_PCD_CC): + if(!p_FmPcdCcNextEngineParams->params.ccParams.h_CcNode) + RETURN_ERROR(MAJOR, E_NULL_POINTER, ("handler to next Node is NULL")); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine is not correct")); + } + return err; +} + +static uint8_t GetGenParseCode(e_FmPcdExtractFrom src, uint32_t offset, bool glblMask, uint8_t *parseArrayOffset, bool fromIc, ccPrivateInfo_t icCode) +{ + if(!fromIc) + { + switch(src) + { + case(e_FM_PCD_EXTRACT_FROM_FRAME_START): + if(glblMask) + return CC_PC_GENERIC_WITH_MASK ; + else + return CC_PC_GENERIC_WITHOUT_MASK; + case(e_FM_PCD_EXTRACT_FROM_CURR_END_OF_PARSE): + *parseArrayOffset = CC_PC_PR_NEXT_HEADER_OFFSET; + if(offset) + return CC_PR_OFFSET; + else + return CC_PR_WITHOUT_OFFSET; + default: + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 'extract from' src")); + return CC_PC_ILLEGAL; + } + } + else + { + switch (icCode) + { + case(CC_PRIVATE_INFO_IC_KEY_EXACT_MATCH): + *parseArrayOffset = 0x50; + return CC_PC_GENERIC_IC_GMASK; + case(CC_PRIVATE_INFO_IC_HASH_EXACT_MATCH): + *parseArrayOffset = 0x48; + return CC_PC_GENERIC_IC_GMASK; + case(CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP): + *parseArrayOffset = 0x48; + return CC_PC_GENERIC_IC_HASH_INDEXED; + case(CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP): + *parseArrayOffset = 0x16; + return CC_PC_GENERIC_IC_HASH_INDEXED; + default: + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 'extract from' src")); + break; + } + } + return CC_PC_ILLEGAL; +} + +static uint8_t GetFullFieldParseCode(e_NetHeaderType hdr, e_FmPcdHdrIndex index, t_FmPcdFields field) +{ + + switch(hdr) + { + case(HEADER_TYPE_NONE): + ASSERT_COND(FALSE); + return CC_PC_ILLEGAL; + + case(HEADER_TYPE_ETH): + switch(field.eth) + { + case(NET_HEADER_FIELD_ETH_DA): + return CC_PC_FF_MACDST; + case(NET_HEADER_FIELD_ETH_SA): + return CC_PC_FF_MACSRC; + case(NET_HEADER_FIELD_ETH_TYPE): + return CC_PC_FF_ETYPE; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_VLAN): + switch(field.vlan) + { + case(NET_HEADER_FIELD_VLAN_TCI): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_TCI1; + if(index == e_FM_PCD_HDR_INDEX_LAST) + return CC_PC_FF_TCI2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_MPLS): + switch(field.mpls) + { + case(NET_HEADER_FIELD_MPLS_LABEL_STACK): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_MPLS1; + if(index == e_FM_PCD_HDR_INDEX_LAST) + return CC_PC_FF_MPLS_LAST; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal MPLS index")); + return CC_PC_ILLEGAL; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_IPv4): + switch(field.ipv4) + { + case(NET_HEADER_FIELD_IPv4_DST_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4DST1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4DST2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_TOS): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4IPTOS_TC1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4IPTOS_TC2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_PROTO): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4PTYPE1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4PTYPE2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_SRC_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4SRC1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4SRC2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_SRC_IP | NET_HEADER_FIELD_IPv4_DST_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV4SRC1_IPV4DST1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV4SRC2_IPV4DST2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv4 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv4_TTL): + return CC_PC_FF_IPV4TTL; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_IPv6): + switch(field.ipv6) + { + case(NET_HEADER_FIELD_IPv6_VER | NET_HEADER_FIELD_IPv6_FL | NET_HEADER_FIELD_IPv6_TC): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPTOS_IPV6TC1_IPV6FLOW1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPTOS_IPV6TC2_IPV6FLOW2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_NEXT_HDR): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV6PTYPE1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV6PTYPE2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_DST_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV6DST1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV6DST2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_SRC_IP): + if((index == e_FM_PCD_HDR_INDEX_NONE) || (index == e_FM_PCD_HDR_INDEX_1)) + return CC_PC_FF_IPV6SRC1; + if(index == e_FM_PCD_HDR_INDEX_2) + return CC_PC_FF_IPV6SRC2; + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IPv6 index")); + return CC_PC_ILLEGAL; + case(NET_HEADER_FIELD_IPv6_HOP_LIMIT): + return CC_PC_FF_IPV6HOP_LIMIT; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_GRE): + switch(field.gre) + { + case(NET_HEADER_FIELD_GRE_TYPE): + return CC_PC_FF_GREPTYPE; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + case(HEADER_TYPE_MINENCAP): + switch(field.minencap) + { + case(NET_HEADER_FIELD_MINENCAP_TYPE): + return CC_PC_FF_MINENCAP_PTYPE; + case(NET_HEADER_FIELD_MINENCAP_DST_IP): + return CC_PC_FF_MINENCAP_IPDST; + case(NET_HEADER_FIELD_MINENCAP_SRC_IP): + return CC_PC_FF_MINENCAP_IPSRC; + case(NET_HEADER_FIELD_MINENCAP_SRC_IP | NET_HEADER_FIELD_MINENCAP_DST_IP): + return CC_PC_FF_MINENCAP_IPSRC_IPDST; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_TCP): + switch(field.tcp) + { + case(NET_HEADER_FIELD_TCP_PORT_SRC): + return CC_PC_FF_L4PSRC; + case(NET_HEADER_FIELD_TCP_PORT_DST): + return CC_PC_FF_L4PDST; + case(NET_HEADER_FIELD_TCP_PORT_DST | NET_HEADER_FIELD_TCP_PORT_SRC): + return CC_PC_FF_L4PSRC_L4PDST; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_PPPoE): + switch(field.pppoe) + { + case(NET_HEADER_FIELD_PPPoE_PID): + return CC_PC_FF_PPPPID; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + case(HEADER_TYPE_UDP): + switch(field.udp) + { + case(NET_HEADER_FIELD_UDP_PORT_SRC): + return CC_PC_FF_L4PSRC; + case(NET_HEADER_FIELD_UDP_PORT_DST): + return CC_PC_FF_L4PDST; + case(NET_HEADER_FIELD_UDP_PORT_DST | NET_HEADER_FIELD_UDP_PORT_SRC): + return CC_PC_FF_L4PSRC_L4PDST; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } +} + +static uint8_t GetPrParseCode(e_NetHeaderType hdr, e_FmPcdHdrIndex hdrIndex, uint32_t offset, bool glblMask, uint8_t *parseArrayOffset) +{ + bool offsetRelevant = FALSE; + + if(offset) + offsetRelevant = TRUE; + + switch(hdr){ + case(HEADER_TYPE_NONE): + ASSERT_COND(FALSE); + return CC_PC_ILLEGAL; + case(HEADER_TYPE_ETH): + *parseArrayOffset = (uint8_t)CC_PC_PR_ETH_OFFSET; + break; + case(HEADER_TYPE_USER_DEFINED_SHIM1): + if(offset || glblMask) + *parseArrayOffset = (uint8_t)CC_PC_PR_USER_DEFINED_SHIM1_OFFSET; + else + return CC_PC_PR_SHIM1; + break; + case(HEADER_TYPE_USER_DEFINED_SHIM2): + if(offset || glblMask) + *parseArrayOffset = (uint8_t)CC_PC_PR_USER_DEFINED_SHIM2_OFFSET; + else + return CC_PC_PR_SHIM2; + break; + case(HEADER_TYPE_LLC_SNAP): + *parseArrayOffset = CC_PC_PR_USER_LLC_SNAP_OFFSET; + break; + case(HEADER_TYPE_PPPoE): + *parseArrayOffset = CC_PC_PR_PPPOE_OFFSET; + break; + case(HEADER_TYPE_MPLS): + if((hdrIndex == e_FM_PCD_HDR_INDEX_NONE) || (hdrIndex == e_FM_PCD_HDR_INDEX_1)) + *parseArrayOffset = CC_PC_PR_MPLS1_OFFSET; + else if(hdrIndex == e_FM_PCD_HDR_INDEX_LAST) + *parseArrayOffset = CC_PC_PR_MPLS_LAST_OFFSET; + else + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal MPLS header index")); + return CC_PC_ILLEGAL; + } + break; + case(HEADER_TYPE_IPv4): + case(HEADER_TYPE_IPv6): + if((hdrIndex == e_FM_PCD_HDR_INDEX_NONE) || (hdrIndex == e_FM_PCD_HDR_INDEX_1)) + *parseArrayOffset = CC_PC_PR_IP1_OFFSET; + else if(hdrIndex == e_FM_PCD_HDR_INDEX_2) + *parseArrayOffset = CC_PC_PR_IP_LAST_OFFSET; + else + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IP header index")); + return CC_PC_ILLEGAL; + + } + break; + case(HEADER_TYPE_MINENCAP): + *parseArrayOffset = CC_PC_PR_MINENC_OFFSET; + break; + case(HEADER_TYPE_GRE): + *parseArrayOffset = CC_PC_PR_GRE_OFFSET; + break; + case(HEADER_TYPE_TCP): + case(HEADER_TYPE_UDP): + case(HEADER_TYPE_IPSEC_AH): + case(HEADER_TYPE_IPSEC_ESP): + case(HEADER_TYPE_DCCP): + case(HEADER_TYPE_SCTP): + *parseArrayOffset = CC_PC_PR_L4_OFFSET; + break; + + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal IP header for this type of operation")); + return CC_PC_ILLEGAL; + } + + if(offsetRelevant) + return CC_PR_OFFSET; + else + return CC_PR_WITHOUT_OFFSET; +} + +static uint8_t GetFieldParseCode(e_NetHeaderType hdr, t_FmPcdFields field, uint32_t offset, uint8_t *parseArrayOffset, e_FmPcdHdrIndex hdrIndex) +{ + bool offsetRelevant = FALSE; + + if(offset) + offsetRelevant = TRUE; + + switch(hdr) + { + case(HEADER_TYPE_NONE): + ASSERT_COND(FALSE); + case(HEADER_TYPE_ETH): + switch(field.eth) + { + case(NET_HEADER_FIELD_ETH_TYPE): + *parseArrayOffset = CC_PC_PR_ETYPE_LAST_OFFSET; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + break; + case(HEADER_TYPE_VLAN): + switch(field.vlan) + { + case(NET_HEADER_FIELD_VLAN_TCI): + if((hdrIndex == e_FM_PCD_HDR_INDEX_NONE) || (hdrIndex == e_FM_PCD_HDR_INDEX_1)) + *parseArrayOffset = CC_PC_PR_VLAN1_OFFSET; + else if(hdrIndex == e_FM_PCD_HDR_INDEX_LAST) + *parseArrayOffset = CC_PC_PR_VLAN2_OFFSET; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Extraction not supported")); + return CC_PC_ILLEGAL; + } + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal header ")); + return CC_PC_ILLEGAL; + } + if(offsetRelevant) + return CC_PR_OFFSET; + else + return CC_PR_WITHOUT_OFFSET; +} + +static void FillAdOfTypeResult(t_Handle p_Ad, t_FmPcd *p_FmPcd, t_FmPcdCcNextEngineParams *p_CcNextEngineParams) +{ + t_AdOfTypeResult *p_AdResult = (t_AdOfTypeResult*)p_Ad; + uint32_t tmp = 0, tmpNia = 0; + uint16_t profileId; + t_Handle p_AdNewPtr = NULL; + + p_AdNewPtr = p_AdResult; + +#ifdef FM_PCD_CC_MANIP + if (p_CcNextEngineParams->h_Manip) + FmPcdManipUpdateAdResultForCc(p_CcNextEngineParams->h_Manip, p_Ad, &p_AdNewPtr); +#endif /* FM_PCD_CC_MANIP */ + + if(p_AdNewPtr) + { + switch(p_CcNextEngineParams->nextEngine) + { + case(e_FM_PCD_DONE): + if(p_CcNextEngineParams->params.enqueueParams.action == e_FM_PCD_ENQ_FRAME) + { + if(p_CcNextEngineParams->params.enqueueParams.overrideFqid) + { + tmp = FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE; + tmp |= p_CcNextEngineParams->params.enqueueParams.newFqid; + } + else + { + tmp = FM_PCD_AD_RESULT_DATA_FLOW_TYPE; + tmp |= FM_PCD_AD_RESULT_PLCR_DIS; + } + } + if(p_CcNextEngineParams->params.enqueueParams.action == e_FM_PCD_DROP_FRAME) + tmpNia |= (NIA_ENG_BMI |NIA_BMI_AC_DISCARD); + else + tmpNia |= (NIA_ENG_BMI |NIA_BMI_AC_ENQ_FRAME); + if(p_CcNextEngineParams->params.enqueueParams.statisticsEn) + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE | FM_PCD_AD_RESULT_STATISTICS_EN; + break; + case(e_FM_PCD_KG): + if(p_CcNextEngineParams->params.kgParams.overrideFqid) + { + tmp = FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE; + tmp |= p_CcNextEngineParams->params.kgParams.newFqid; + } + else + { + tmp = FM_PCD_AD_RESULT_DATA_FLOW_TYPE; + tmp |= FM_PCD_AD_RESULT_PLCR_DIS; + } + tmpNia = NIA_KG_DIRECT; + tmpNia |= NIA_ENG_KG; + tmpNia |= (uint8_t)(PTR_TO_UINT(p_CcNextEngineParams->params.kgParams.h_DirectScheme)-1); + if(p_CcNextEngineParams->params.kgParams.statisticsEn) + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE | FM_PCD_AD_RESULT_STATISTICS_EN; + break; + case(e_FM_PCD_PLCR): + tmp = 0; + if(p_CcNextEngineParams->params.plcrParams.overrideParams) + { + tmp = FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE; + + /* if private policer profile, it may be uninitialized yet, therefor no checks are done at this stage */ + if(p_CcNextEngineParams->params.plcrParams.sharedProfile) + { + tmpNia |= NIA_PLCR_ABSOLUTE; + FmPcdPlcrGetAbsoluteProfileId((t_Handle)p_FmPcd,e_FM_PCD_PLCR_SHARED,NULL,p_CcNextEngineParams->params.plcrParams.newRelativeProfileId, &profileId); + } + else + profileId = p_CcNextEngineParams->params.plcrParams.newRelativeProfileId; + + tmp |= p_CcNextEngineParams->params.plcrParams.newFqid; + WRITE_UINT32(p_AdResult->plcrProfile,(uint32_t)((uint32_t)profileId << FM_PCD_AD_PROFILEID_FOR_CNTRL_SHIFT)); + } + else + tmp = FM_PCD_AD_RESULT_DATA_FLOW_TYPE; + tmpNia |= NIA_ENG_PLCR | p_CcNextEngineParams->params.plcrParams.newRelativeProfileId; + if(p_CcNextEngineParams->params.kgParams.statisticsEn) + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE | FM_PCD_AD_RESULT_STATISTICS_EN; + break; + default: + return; + } + WRITE_UINT32(p_AdResult->fqid, tmp); + +#ifdef FM_PCD_CC_MANIP + if(p_CcNextEngineParams->h_Manip) + { + tmp = GET_UINT32(p_AdResult->plcrProfile); + tmp |= (uint32_t)(XX_VirtToPhys(p_AdNewPtr) - (p_FmPcd->physicalMuramBase)) >> 4; + WRITE_UINT32(p_AdResult->plcrProfile, tmp); + + tmpNia |= FM_PCD_AD_RESULT_EXTENDED_MODE; + tmpNia |= FM_PCD_AD_RESULT_NADEN; + } +#endif /* FM_PCD_CC_MANIP */ + + WRITE_UINT32(p_AdResult->nia, tmpNia); + } +} + +static void FillAdOfTypeContLookup(t_Handle p_Ad, t_Handle h_FmPcd, t_Handle p_FmPcdCcNode, t_Handle h_Manip) +{ + t_FmPcdCcNode *p_Node = (t_FmPcdCcNode *)p_FmPcdCcNode; + t_AdOfTypeContLookup *p_AdContLookup = (t_AdOfTypeContLookup *)p_Ad; + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpReg32; + t_Handle p_AdNewPtr = NULL; + + p_AdNewPtr = p_AdContLookup; + +#ifdef FM_PCD_CC_MANIP + if (h_Manip) + FmPcdManipUpdateAdContLookupForCc(h_Manip, p_Ad, &p_AdNewPtr, (uint32_t)((XX_VirtToPhys(p_Node->h_AdTable) - p_FmPcd->physicalMuramBase))); +#else + UNUSED(h_Manip); +#endif /* FM_PCD_CC_MANIP */ + + if(p_AdNewPtr) + { + tmpReg32 = 0; + tmpReg32 |= FM_PCD_AD_CONT_LOOKUP_TYPE; + tmpReg32 |= p_Node->sizeOfExtraction ? ((p_Node->sizeOfExtraction - 1) << 24) : 0; + tmpReg32 |= (uint32_t)(XX_VirtToPhys(p_Node->h_AdTable) - p_FmPcd->physicalMuramBase); + WRITE_UINT32(p_AdContLookup->ccAdBase, tmpReg32); + + tmpReg32 = 0; + tmpReg32 |= p_Node->numOfKeys << 24; + tmpReg32 |= (p_Node->lclMask ? FM_PCD_AD_CONT_LOOKUP_LCL_MASK : 0); + tmpReg32 |= p_Node->h_KeysMatchTable ? + (uint32_t)(XX_VirtToPhys(p_Node->h_KeysMatchTable) - p_FmPcd->physicalMuramBase) : 0; + WRITE_UINT32(p_AdContLookup->matchTblPtr, tmpReg32); + + tmpReg32 = 0; + tmpReg32 |= p_Node->prsArrayOffset << 24; + tmpReg32 |= p_Node->offset << 16; + tmpReg32 |= p_Node->parseCode; + WRITE_UINT32(p_AdContLookup->pcAndOffsets, tmpReg32); + + Mem2IOCpy32((void*)&p_AdContLookup->gmask, p_Node->p_GlblMask, CC_GLBL_MASK_SIZE); + } +} + +static void NextStepAd(t_Handle p_Ad, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams, t_FmPcd *p_FmPcd) +{ + switch(p_FmPcdCcNextEngineParams->nextEngine) + { + case(e_FM_PCD_KG): + case(e_FM_PCD_PLCR): + case(e_FM_PCD_DONE): + FillAdOfTypeResult(p_Ad, p_FmPcd, p_FmPcdCcNextEngineParams); + break; + case(e_FM_PCD_CC): + FillAdOfTypeContLookup(p_Ad, + p_FmPcd, + p_FmPcdCcNextEngineParams->params.ccParams.h_CcNode, +#ifdef FM_PCD_CC_MANIP + p_FmPcdCcNextEngineParams->h_Manip +#else + NULL +#endif /* FM_PCD_CC_MANIP */ + ); + UpdateNodeOwner (p_FmPcdCcNextEngineParams->params.ccParams.h_CcNode, + TRUE); + break; + default: + return; + } +} + + +static void ReleaseNewNodeCommonPart(t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + if(p_AdditionalInfo->p_AdTableNew) + FM_MURAM_FreeMem(FmPcdGetMuramHandle(((t_FmPcdCcNode *)(p_AdditionalInfo->h_CurrentNode))->h_FmPcd), p_AdditionalInfo->p_AdTableNew); + if(p_AdditionalInfo->p_KeysMatchTableNew) + FM_MURAM_FreeMem(FmPcdGetMuramHandle(((t_FmPcdCcNode *)(p_AdditionalInfo->h_CurrentNode))->h_FmPcd), p_AdditionalInfo->p_KeysMatchTableNew); +} + +static t_Error UpdateGblMask(t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keySize, uint8_t *p_Mask) +{ + if (p_Mask && + !p_FmPcdCcNode->glblMaskUpdated && + (keySize <= 4) && + !p_FmPcdCcNode->lclMask ) + { + memcpy(p_FmPcdCcNode->p_GlblMask, p_Mask, (sizeof(uint8_t))*keySize); + p_FmPcdCcNode->glblMaskUpdated = TRUE; + p_FmPcdCcNode->glblMaskSize = 4; + } + else if (p_Mask && + (keySize <= 4) && + !p_FmPcdCcNode->lclMask) + { + if (memcmp(p_FmPcdCcNode->p_GlblMask, p_Mask, keySize) != 0) + { + p_FmPcdCcNode->lclMask = TRUE; + p_FmPcdCcNode->glblMaskSize = 0; + } + } + else if (!p_Mask && (p_FmPcdCcNode->glblMaskUpdated) && (keySize <= 4)) + { + uint32_t tmpMask = 0xffffffff; + if (memcmp(p_FmPcdCcNode->p_GlblMask, &tmpMask, 4) != 0) + { + p_FmPcdCcNode->lclMask = TRUE; + p_FmPcdCcNode->glblMaskSize = 0; + } + } + else if (p_Mask) + { + p_FmPcdCcNode->lclMask = TRUE; + p_FmPcdCcNode->glblMaskSize = 0; + } + + return E_OK; +} + +static t_Error BuildNewNodeCommonPart(t_FmPcdCcNode *p_FmPcdCcNode, + int *size, + t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + + p_AdditionalInfo->p_AdTableNew = (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)( (p_AdditionalInfo->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE), + FM_PCD_CC_AD_TABLE_ALIGN); + if(!p_AdditionalInfo->p_AdTableNew) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for AD table ")); + + IOMemSet32((uint8_t*)p_AdditionalInfo->p_AdTableNew, 0, (uint32_t)((p_AdditionalInfo->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE)); + + if(p_FmPcdCcNode->lclMask) + *size = 2 * p_FmPcdCcNode->ccKeySizeAccExtraction; + else + *size = p_FmPcdCcNode->ccKeySizeAccExtraction; + + p_AdditionalInfo->p_KeysMatchTableNew = + (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)(*size * sizeof(uint8_t) * (p_AdditionalInfo->numOfKeys + 1)), + FM_PCD_CC_KEYS_MATCH_TABLE_ALIGN); + if(!p_AdditionalInfo->p_KeysMatchTableNew) + { + FM_MURAM_FreeMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), p_AdditionalInfo->p_AdTableNew); + p_AdditionalInfo->p_AdTableNew = NULL; + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for KEY MATCH table")); + } + IOMemSet32((uint8_t*)p_AdditionalInfo->p_KeysMatchTableNew, 0, *size * sizeof(uint8_t) * (p_AdditionalInfo->numOfKeys + 1)); + + p_AdditionalInfo->p_AdTableOld = p_FmPcdCcNode->h_AdTable; + p_AdditionalInfo->p_KeysMatchTableOld = p_FmPcdCcNode->h_KeysMatchTable; + + return E_OK; +} + +static t_Error BuildNewNodeAddOrMdfyKeyAndNextEngine(t_Handle h_FmPcd ,t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keyIndex, t_FmPcdCcKeyParams *p_KeyParams,t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo, bool add) +{ + t_Error err = E_OK; + t_Handle p_AdTableNewTmp, p_KeysMatchTableNewTmp; + t_Handle p_KeysMatchTableOldTmp, p_AdTableOldTmp; + int size; + int i = 0, j = 0; + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t requiredAction = 0; + bool prvLclMask; + t_CcNodeInformation *p_CcNodeInformation; + t_List *p_Pos; + + /*check that new NIA is legal*/ + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + prvLclMask = p_FmPcdCcNode->lclMask; + + /*check that new key is not require update of localMask*/ + err = UpdateGblMask(p_FmPcdCcNode, + p_FmPcdCcNode->ccKeySizeAccExtraction, + p_KeyParams->p_Mask); + if (err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*update internal data structure for next engine per index (index - key)*/ + memcpy(&p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].nextEngineParams,&p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + + /*update numOfKeys*/ + if(add) + p_AdditionalInfo->numOfKeys = (uint8_t)(p_FmPcdCcNode->numOfKeys + 1); + else + p_AdditionalInfo->numOfKeys = (uint8_t)p_FmPcdCcNode->numOfKeys; + /*function which build in the memory new KeyTbl, AdTbl*/ + err = BuildNewNodeCommonPart(p_FmPcdCcNode, &size, p_AdditionalInfo); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + +#ifdef FM_PCD_CC_MANIP + /*check that manip is legal and what requiredAction is necessary for this manip*/ + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams,&requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + } +#endif /* FM_PCD_CC_MANIP */ + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction = requiredAction; + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction |= UPDATE_CC_WITH_TREE; + + + /*update new Ad and new Key Table according to new requirement*/ + i = 0; + for(j = 0; j < p_AdditionalInfo->numOfKeys; j++) + { + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + if(j == keyIndex) + { + NextStepAd(p_AdTableNewTmp,&p_KeyParams->ccNextEngineParams, p_FmPcd); + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + Mem2IOCpy32((void*)p_KeysMatchTableNewTmp, p_KeyParams->p_Key, p_FmPcdCcNode->userSizeOfExtraction); + if(p_FmPcdCcNode->lclMask) + { + if(p_KeyParams->p_Mask) + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_KeyParams->p_Mask, p_FmPcdCcNode->userSizeOfExtraction); + else if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction),p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + if(!add) + i++; + } + else + { + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + p_KeysMatchTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableOld, i*size * sizeof(uint8_t)); + + if(p_FmPcdCcNode->lclMask) + { + if(prvLclMask) + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + PTR_MOVE(p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + p_FmPcdCcNode->ccKeySizeAccExtraction); + else + { + p_KeysMatchTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_KeysMatchTable, i*p_FmPcdCcNode->ccKeySizeAccExtraction*sizeof(uint8_t)); + + if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + } + IO2IOCpy32(p_KeysMatchTableNewTmp, p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction); + i++; + } + } + + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + + if(!LIST_IsEmpty(&p_FmPcdCcNode->ccTreesLst)) + { + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNode->ccTreesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + /*update the manipulation which has to be updated from parameters of the port*/ + /*it's has to be updated with restrictions defined in the function*/ + err = FmPcdCcSetRequiredAction(p_FmPcdCcNode->h_FmPcd, + p_FmPcdCcNode->shadowAction | p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction, + &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + PTR_MOVE(p_AdditionalInfo->p_AdTableNew, keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + 1, + p_CcNodeInformation->h_CcNode); + if (err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + err = CcUpdateParam(p_FmPcdCcNode->h_FmPcd, + NULL, + &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + 1, + PTR_MOVE(p_AdditionalInfo->p_AdTableNew, keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + TRUE, + p_CcNodeInformation->index, + p_CcNodeInformation->h_CcNode, + TRUE); + if (err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + } + + if(p_FmPcdCcNode->lclMask) + memset(p_FmPcdCcNode->p_GlblMask, 0xff, CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + + + if(p_KeyParams->ccNextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForAdd = p_KeyParams->ccNextEngineParams.params.ccParams.h_CcNode; + + if(!add) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + } + + return E_OK; +} + +static t_Error BuildNewNodeRemoveKey(t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keyIndex, t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + int i = 0, j = 0; + t_Handle p_AdTableNewTmp,p_KeysMatchTableNewTmp; + t_Handle p_KeysMatchTableOldTmp, p_AdTableOldTmp; + int size; + t_Error err = E_OK; + + /*save new numOfKeys*/ + p_AdditionalInfo->numOfKeys = (uint16_t)(p_FmPcdCcNode->numOfKeys - 1); + + /*function which allocates in the memory new KeyTbl, AdTbl*/ + err = BuildNewNodeCommonPart(p_FmPcdCcNode, &size, p_AdditionalInfo); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*update new Ad and new Key Table according to new requirement*/ + for(i = 0, j = 0; j < p_FmPcdCcNode->numOfKeys; i++, j++) + { + if(j == keyIndex) + { + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, j*FM_PCD_CC_AD_ENTRY_SIZE); + j++; + } + if(j == p_FmPcdCcNode->numOfKeys) + break; + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, i*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, j*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp,p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + p_KeysMatchTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableOld, j*size * sizeof(uint8_t)); + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, i*size * sizeof(uint8_t)); + IO2IOCpy32(p_KeysMatchTableNewTmp,p_KeysMatchTableOldTmp, size * sizeof(uint8_t)); + } + + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, i*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, j*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + + return E_OK; +} + +static t_Error BuildNewNodeModifyKey(t_FmPcdCcNode *p_FmPcdCcNode, uint8_t keyIndex, uint8_t *p_Key, uint8_t *p_Mask,t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + t_Error err = E_OK; + t_Handle p_AdTableNewTmp, p_KeysMatchTableNewTmp; + t_Handle p_KeysMatchTableOldTmp, p_AdTableOldTmp; + int size; + int i = 0, j = 0; + bool prvLclMask; + + p_AdditionalInfo->numOfKeys = p_FmPcdCcNode->numOfKeys; + + prvLclMask = p_FmPcdCcNode->lclMask; + + /*check that new key is not require update of localMask*/ + err = UpdateGblMask(p_FmPcdCcNode, + p_FmPcdCcNode->sizeOfExtraction, + p_Mask); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*function which build in the memory new KeyTbl, AdTbl*/ + err = BuildNewNodeCommonPart(p_FmPcdCcNode, &size, p_AdditionalInfo); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*fill the New AdTable and New KeyTable*/ + for(j = 0, i = 0; j < p_AdditionalInfo->numOfKeys; j++, i++) + { + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableOld, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + if(j == keyIndex) + { + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + Mem2IOCpy32(p_KeysMatchTableNewTmp, p_Key, p_FmPcdCcNode->userSizeOfExtraction); + if(p_FmPcdCcNode->lclMask) + { + if(p_Mask) + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_Mask, p_FmPcdCcNode->userSizeOfExtraction); + else if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction),p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + } + else + { + p_KeysMatchTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_KeysMatchTableNew, j*size * sizeof(uint8_t)); + p_KeysMatchTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_KeysMatchTable, i*size * sizeof(uint8_t)); + if (p_FmPcdCcNode->lclMask) + { + if(prvLclMask) + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + PTR_MOVE(p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), + p_FmPcdCcNode->userSizeOfExtraction); + else + { + p_KeysMatchTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_KeysMatchTable, i*p_FmPcdCcNode->ccKeySizeAccExtraction * sizeof(uint8_t)); + + if (p_FmPcdCcNode->ccKeySizeAccExtraction > 4) + IOMemSet32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->userSizeOfExtraction); + else + IO2IOCpy32(PTR_MOVE(p_KeysMatchTableNewTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_FmPcdCcNode->p_GlblMask, p_FmPcdCcNode->userSizeOfExtraction); + } + } + IO2IOCpy32((void*)p_KeysMatchTableNewTmp, p_KeysMatchTableOldTmp, p_FmPcdCcNode->ccKeySizeAccExtraction); + } + } + + p_AdTableNewTmp = PTR_MOVE(p_AdditionalInfo->p_AdTableNew, j*FM_PCD_CC_AD_ENTRY_SIZE); + p_AdTableOldTmp = PTR_MOVE(p_FmPcdCcNode->h_AdTable, i*FM_PCD_CC_AD_ENTRY_SIZE); + IO2IOCpy32(p_AdTableNewTmp, p_AdTableOldTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + return E_OK; +} + +static t_Error BuildNewNodeModifyNextEngine(t_Handle h_FmPcd ,t_Handle h_FmPcdCcNodeOrTree, uint16_t keyIndex,t_FmPcdCcNextEngineParams *p_CcNextEngineParams, t_List *h_OldLst, t_List *h_NewLst,t_FmPcdModifyCcKeyAdditionalParams *p_AdditionalInfo) +{ + + t_Error err = E_OK; + uint32_t requiredAction = 0; + t_List *p_Pos; + t_CcNodeInformation *p_CcNodeInformation, ccNodeInfo; + t_Handle p_Ad; + t_FmPcdCcNode *p_FmPcdCcNode1 = NULL; + t_FmPcdCcTree *p_FmPcdCcTree = NULL; + + ASSERT_COND(p_CcNextEngineParams); + /*check that new NIA is legal*/ + err = ValidateNextEngineParams(h_FmPcd, p_CcNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + /*update internal data structure for next engine per index (index - key)*/ + memcpy(&p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].nextEngineParams,p_CcNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + +#ifdef FM_PCD_CC_MANIP + /*check that manip is legal and what requiredAction is necessary for this manip*/ + if(p_CcNextEngineParams->h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(p_CcNextEngineParams,&requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + } +#endif /* FM_PCD_CC_MANIP */ + + if(!p_AdditionalInfo->tree) + { + p_FmPcdCcNode1 = (t_FmPcdCcNode *)h_FmPcdCcNodeOrTree; + p_Ad = p_FmPcdCcNode1->h_AdTable; + if(p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcNode1->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + } + else + { + p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcNodeOrTree; + p_Ad = UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr); + if(p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForRmv = p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.ccParams.h_CcNode; +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip) + p_AdditionalInfo->h_ManipForRmv = p_FmPcdCcTree->nextEngineAndRequiredAction[keyIndex].nextEngineParams.h_Manip; +#endif /* FM_PCD_CC_MANIP */ + } + ASSERT_COND(p_Ad); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = PTR_MOVE(p_Ad, keyIndex * FM_PCD_CC_AD_ENTRY_SIZE); + EnqueueNodeInfoToRelevantLst(h_OldLst, &ccNodeInfo); + + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + p_Ad = (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(h_FmPcd), + FM_PCD_CC_AD_ENTRY_SIZE, + FM_PCD_CC_AD_TABLE_ALIGN); + + if(!p_Ad) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Memory allocation in MURAM FAILED")); + + IOMemSet32((uint8_t *)p_Ad, 0, FM_PCD_CC_AD_ENTRY_SIZE); + if(p_CcNextEngineParams) + NextStepAd(p_Ad,p_CcNextEngineParams, h_FmPcd); + ccNodeInfo.h_CcNode = p_Ad; + EnqueueNodeInfoToRelevantLst(h_NewLst, &ccNodeInfo); + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction = requiredAction; + + p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction |= UPDATE_CC_WITH_TREE; + + if(!p_AdditionalInfo->tree) + { + ASSERT_COND(p_FmPcdCcNode1); + if(!LIST_IsEmpty(&p_FmPcdCcNode1->ccTreesLst)) + { + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNode1->ccTreesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + /*update the manipulation which has to be updated from parameters of the port*/ + /*it's has to be updated with restrictions defined in the function*/ + err = FmPcdCcSetRequiredAction(p_FmPcdCcNode1->h_FmPcd, p_FmPcdCcNode1->shadowAction | p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + p_Ad, 1, p_CcNodeInformation->h_CcNode); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + err = CcUpdateParam(p_FmPcdCcNode1->h_FmPcd, NULL, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex],1, p_Ad, TRUE, p_CcNodeInformation->index, p_CcNodeInformation->h_CcNode, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + } + } + else + { + ASSERT_COND(p_FmPcdCcTree); + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcTree->requiredAction | p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex].requiredAction, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex], + p_Ad, 1, (t_Handle)p_FmPcdCcTree); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + err = CcUpdateParam(h_FmPcd, NULL, &p_AdditionalInfo->nextEngineAndRequiredAction[keyIndex],1, p_Ad, TRUE, 0, (t_Handle)p_FmPcdCcTree, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + + if(p_CcNextEngineParams->nextEngine == e_FM_PCD_CC) + p_AdditionalInfo->h_NodeForAdd = p_CcNextEngineParams->params.ccParams.h_CcNode; + return E_OK; +} + +static t_Handle BuildNewAd(t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams, + t_FmPcdCcNode *p_FmPcdCcNode, + t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + + t_Handle p_Ad; + t_FmPcdCcNode *p_FmPcdCcNodeTmp; + + p_Ad = (t_Handle)FM_MURAM_AllocMem(((t_FmPcd *)(p_FmPcdCcNode->h_FmPcd))->h_FmMuram, + FM_PCD_CC_AD_ENTRY_SIZE, + FM_PCD_CC_AD_TABLE_ALIGN); + if(!p_Ad) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("MURAM for AD")); + return NULL; + } + IOMemSet32(p_Ad, 0, FM_PCD_CC_AD_ENTRY_SIZE); + + p_FmPcdCcNodeTmp = (t_FmPcdCcNode*)XX_Malloc(sizeof(t_FmPcdCcNode)); + if(!p_FmPcdCcNodeTmp) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("p_FmPcdCcNodeTmp")); + return NULL; + } + memset(p_FmPcdCcNodeTmp, 0, sizeof(t_FmPcdCcNode)); + + p_FmPcdCcNodeTmp->numOfKeys = p_FmPcdModifyCcKeyAdditionalParams->numOfKeys; + p_FmPcdCcNodeTmp->h_KeysMatchTable = p_FmPcdModifyCcKeyAdditionalParams->p_KeysMatchTableNew; + p_FmPcdCcNodeTmp->h_AdTable = p_FmPcdModifyCcKeyAdditionalParams->p_AdTableNew; + + p_FmPcdCcNodeTmp->lclMask = p_FmPcdCcNode->lclMask; + p_FmPcdCcNodeTmp->parseCode = p_FmPcdCcNode->parseCode; + p_FmPcdCcNodeTmp->offset = p_FmPcdCcNode->offset; + p_FmPcdCcNodeTmp->prsArrayOffset = p_FmPcdCcNode->prsArrayOffset; + p_FmPcdCcNodeTmp->ctrlFlow = p_FmPcdCcNode->ctrlFlow; + p_FmPcdCcNodeTmp->ccKeySizeAccExtraction = p_FmPcdCcNode->ccKeySizeAccExtraction; + p_FmPcdCcNodeTmp->sizeOfExtraction = p_FmPcdCcNode->sizeOfExtraction; + p_FmPcdCcNodeTmp->glblMaskSize = p_FmPcdCcNode->glblMaskSize; + p_FmPcdCcNodeTmp->p_GlblMask = p_FmPcdCcNode->p_GlblMask; + + if (p_FmPcdCcNextEngineParams->nextEngine == e_FM_PCD_CC) + FillAdOfTypeContLookup(p_Ad, + p_FmPcdCcNode->h_FmPcd, + p_FmPcdCcNodeTmp, +#ifdef FM_PCD_CC_MANIP + p_FmPcdCcNextEngineParams->h_Manip +#else + NULL +#endif /* FM_PCD_CC_MANIP */ + ); + + XX_Free(p_FmPcdCcNodeTmp); + + return p_Ad; +} + +static void UpdateAdPtrOfNodesWhichPointsOnCrntMdfNode(t_FmPcdCcNode *p_CrntMdfNode ,t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams, t_List *h_OldLst, t_List *h_NewLst) +{ + t_CcNodeInformation *p_CcNodeInformation; + t_FmPcdCcNode *p_NodePtrOnCurrentMdfNode = NULL; + t_List *p_Pos; + int i = 0; + t_Handle p_AdTablePtOnCrntCurrentMdfNode, p_AdTableNewModified; + t_CcNodeInformation ccNodeInfo; + + LIST_FOR_EACH(p_Pos, &p_CrntMdfNode->ccPrevNodesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + p_NodePtrOnCurrentMdfNode = (t_FmPcdCcNode *)p_CcNodeInformation->h_CcNode; + ASSERT_COND(p_NodePtrOnCurrentMdfNode); + /*search in the prev node which exact index points on this current modified node for getting AD */ + for(i = 0; i < p_NodePtrOnCurrentMdfNode->numOfKeys + 1; i++) + { + if(p_NodePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + if(p_NodePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode == (t_Handle)p_CrntMdfNode) + { + p_AdTablePtOnCrntCurrentMdfNode = PTR_MOVE(p_NodePtrOnCurrentMdfNode->h_AdTable, i*FM_PCD_CC_AD_ENTRY_SIZE); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTablePtOnCrntCurrentMdfNode; + EnqueueNodeInfoToRelevantLst(h_OldLst, &ccNodeInfo); + + p_AdTableNewModified = BuildNewAd(p_FmPcdModifyCcKeyAdditionalParams, p_CrntMdfNode, &p_NodePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTableNewModified; + EnqueueNodeInfoToRelevantLst(h_NewLst, &ccNodeInfo); + } + } + } + ASSERT_COND(i != p_NodePtrOnCurrentMdfNode->numOfKeys); + } +} + +static void UpdateAdPtrOfTreesWhichPointsOnCrntMdfNode(t_FmPcdCcNode *p_CrntMdfNode ,t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams, t_List *h_OldLst, t_List *h_NewLst) +{ + t_CcNodeInformation *p_CcNodeInformation; + t_FmPcdCcTree *p_TreePtrOnCurrentMdfNode = NULL; + t_List *p_Pos; + int i = 0; + t_Handle p_AdTableTmp, p_AdTableTmp1; + t_CcNodeInformation ccNodeInfo; + + LIST_FOR_EACH(p_Pos, &p_CrntMdfNode->ccTreeIdLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + p_TreePtrOnCurrentMdfNode = (t_FmPcdCcTree *)p_CcNodeInformation->h_CcNode; + + ASSERT_COND(p_TreePtrOnCurrentMdfNode); + /*search in the trees which exact index points on this current modified node for getting AD + */ + for(i = 0; i < p_TreePtrOnCurrentMdfNode->numOfEntries; i++) + { + if(p_TreePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + if(p_TreePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode == (t_Handle)p_CrntMdfNode) + { + p_AdTableTmp = UINT_TO_PTR(p_TreePtrOnCurrentMdfNode->ccTreeBaseAddr + i*FM_PCD_CC_AD_ENTRY_SIZE); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTableTmp; + EnqueueNodeInfoToRelevantLst(h_OldLst, &ccNodeInfo); + + p_AdTableTmp1 = BuildNewAd(p_FmPcdModifyCcKeyAdditionalParams, p_CrntMdfNode, &p_TreePtrOnCurrentMdfNode->nextEngineAndRequiredAction[i].nextEngineParams); + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = p_AdTableTmp1; + EnqueueNodeInfoToRelevantLst(h_NewLst, &ccNodeInfo); + } + } + } + ASSERT_COND(i == p_TreePtrOnCurrentMdfNode->numOfEntries); + } +} + +static t_Error ModifyKeyCommonPart1(t_Handle h_FmPcdCcNodeOrTree, uint16_t keyIndex, t_Handle *h_Params, e_ModifyState modifyState, bool check, bool tree) +{ + t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams; + int i = 0, j = 0; + bool wasUpdate = FALSE; + t_FmPcdCcNode *p_FmPcdCcNode = NULL; + t_FmPcdCcTree *p_FmPcdCcTree; + uint16_t numOfKeys; + t_FmPcdCcNextEngineAndRequiredActionParams *p_nextEngineAndRequiredAction = NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPcdCcNodeOrTree,E_INVALID_HANDLE); + + p_nextEngineAndRequiredAction = XX_Malloc(FM_PCD_MAX_NUM_OF_KEYS * sizeof(*p_nextEngineAndRequiredAction)); + if(!p_nextEngineAndRequiredAction) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("failed to allocate memory for p_nextEngineAndRequiredAction")); + + memset(p_nextEngineAndRequiredAction, 0, FM_PCD_MAX_NUM_OF_KEYS * sizeof(*p_nextEngineAndRequiredAction)); + + if(!tree) + { + p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNodeOrTree; + numOfKeys = p_FmPcdCcNode->numOfKeys; + + /*node has to be pointed by another node or tree*/ + if (!LIST_NumOfObjs(&p_FmPcdCcNode->ccPrevNodesLst) && + !LIST_NumOfObjs(&p_FmPcdCcNode->ccTreeIdLst)) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("node has to be pointed by node or tree")); + } + + if(!LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) || + (LIST_NumOfObjs(&p_FmPcdCcNode->ccTreesLst) != 1)) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("node has to be belonging to some tree and only to one tree")); + } + + memcpy(p_nextEngineAndRequiredAction, + p_FmPcdCcNode->nextEngineAndRequiredAction, + FM_PCD_MAX_NUM_OF_KEYS * sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + + if(check) + { + if((p_FmPcdCcNode->parseCode == CC_PC_FF_IPV4TTL) || + (p_FmPcdCcNode->parseCode == CC_PC_FF_IPV6HOP_LIMIT) || + (p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_HASH_INDEXED)) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("nodeId of CC_PC_FF_IPV4TTL or CC_PC_FF_IPV6HOP_LIMIT can not be used for addKey, removeKey, modifyKey")); + } + } + } + else + { + p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcNodeOrTree; + numOfKeys = p_FmPcdCcTree->numOfEntries; + memcpy(p_nextEngineAndRequiredAction, + p_FmPcdCcTree->nextEngineAndRequiredAction, + FM_PCD_MAX_NUM_OF_KEYS * sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + } + + p_FmPcdModifyCcKeyAdditionalParams = + (t_FmPcdModifyCcKeyAdditionalParams *)XX_Malloc(sizeof(t_FmPcdModifyCcKeyAdditionalParams)); + if(!p_FmPcdModifyCcKeyAdditionalParams) + { + XX_Free(p_nextEngineAndRequiredAction); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Allocation of internal data structure FAILED")); + } + memset(p_FmPcdModifyCcKeyAdditionalParams, 0, sizeof(t_FmPcdModifyCcKeyAdditionalParams)); + + p_FmPcdModifyCcKeyAdditionalParams->h_CurrentNode = h_FmPcdCcNodeOrTree; + p_FmPcdModifyCcKeyAdditionalParams->keyIndex = keyIndex; + + while(i < numOfKeys) + { + if((j == keyIndex) && !wasUpdate) + { + if(modifyState == e_MODIFY_STATE_ADD) + j++; + else if(modifyState == e_MODIFY_STATE_REMOVE) + i++; + wasUpdate = TRUE; + } + else + { + memcpy(&p_FmPcdModifyCcKeyAdditionalParams->nextEngineAndRequiredAction[j], &p_nextEngineAndRequiredAction[i], sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + i++; + j++; + } + } + + if (keyIndex == numOfKeys) + { + if (modifyState == e_MODIFY_STATE_ADD) + j++; + else if(modifyState == e_MODIFY_STATE_REMOVE) + i++; + } + + memcpy(&p_FmPcdModifyCcKeyAdditionalParams->nextEngineAndRequiredAction[j], &p_nextEngineAndRequiredAction[numOfKeys], sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + + XX_Free(p_nextEngineAndRequiredAction); + *h_Params = p_FmPcdModifyCcKeyAdditionalParams; + + return E_OK; +} + +static t_Error UpdatePtrWhichPointOnCrntMdfNode(t_FmPcdCcNode *p_FmPcdCcNode, t_FmPcdModifyCcKeyAdditionalParams *p_FmPcdModifyCcKeyAdditionalParams ,t_List *h_OldLst, t_List *h_NewLst) +{ + if(!LIST_IsEmpty(&p_FmPcdCcNode->ccPrevNodesLst)) + UpdateAdPtrOfNodesWhichPointsOnCrntMdfNode(p_FmPcdCcNode, p_FmPcdModifyCcKeyAdditionalParams, h_OldLst, h_NewLst); + + if(!LIST_IsEmpty(&p_FmPcdCcNode->ccTreeIdLst)) + UpdateAdPtrOfTreesWhichPointsOnCrntMdfNode(p_FmPcdCcNode, p_FmPcdModifyCcKeyAdditionalParams, h_OldLst, h_NewLst); + + return E_OK; +} + +static void FmPcdCcUpdateTreeOwner(t_FmPcdCcTree *p_FmPcdCcTree, bool add) +{ + ASSERT_COND(p_FmPcdCcTree); + + if(add) + p_FmPcdCcTree->owners++; + else + { + ASSERT_COND(p_FmPcdCcTree->owners); + p_FmPcdCcTree->owners--; + } +} + +#ifdef FM_PCD_CC_MANIP +static t_Error CheckAndSetManipParamsWithCcNodeParams(t_FmPcdCcNode *p_FmPcdCcNode) +{ + t_Error err = E_OK; + int i = 0; + + for(i = 0; i < p_FmPcdCcNode->numOfKeys; i++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsWithCcNodeParams(p_FmPcdCcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, (t_Handle)p_FmPcdCcNode); + if(err) + return err; + } + } + + return err; +} +#endif /* FM_PCD_CC_MANIP */ + +static t_Error CcUpdateParams(t_Handle h_FmPcd, + t_Handle h_FmPort, + t_Handle h_FmTree, + bool validate) +{ + t_FmPcdCcTree *p_CcTree = (t_FmPcdCcTree *) h_FmTree; + + return CcUpdateParam(h_FmPcd, + h_FmPort, + p_CcTree->nextEngineAndRequiredAction, + p_CcTree->numOfEntries, + UINT_TO_PTR(p_CcTree->ccTreeBaseAddr), + validate, + 0, + h_FmTree, + FALSE); +} + +static t_Error CheckParams(t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam, + t_FmPcdCcNode *p_FmPcdCcNode, + bool *isKeyTblAlloc) +{ + int tmp = 0; + t_FmPcdCcKeyParams *p_KeyParams; + t_Error err; + uint32_t requiredAction = 0; + + err = ValidateNextEngineParams(h_FmPcd, &p_CcNodeParam->keysParams.ccNextEngineParamsForMiss); + if(err) + RETURN_ERROR(MAJOR, err, ("For this node MissNextEngineParams are not valid")); + +#ifdef FM_PCD_CC_MANIP + if(p_CcNodeParam->keysParams.ccNextEngineParamsForMiss.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams,&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].requiredAction = requiredAction; + + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + + if(!p_KeyParams->p_Key) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_Key is not initialized")); + + + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + + err = UpdateGblMask(p_FmPcdCcNode, + p_CcNodeParam->keysParams.keySize, + p_KeyParams->p_Mask); + +#ifdef FM_PCD_CC_MANIP + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[tmp],&p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction = requiredAction; + } + + *isKeyTblAlloc = TRUE; + return E_OK; +} + +static t_Error Ipv4TtlOrIpv6HopLimiCheckParams( t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam, t_FmPcdCcNode *p_FmPcdCcNode, + bool *isKeyTblAlloc) +{ + int tmp = 0; + t_FmPcdCcKeyParams *p_KeyParams; + t_Error err; + uint8_t key = 0x01; + uint32_t requiredAction = 0; + + if(p_FmPcdCcNode->numOfKeys != 1 ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("for IPV4TTL and IPV6_HOP_LIMIT has to be only 1 key - TTL = 1, otherwise it's Miss")); + + err = ValidateNextEngineParams(h_FmPcd, &p_CcNodeParam->keysParams.ccNextEngineParamsForMiss); + if(err) + RETURN_ERROR(MAJOR, err, ("For this node MissNextEngineParams are not valid")); + +#ifdef FM_PCD_CC_MANIP + if(p_CcNodeParam->keysParams.ccNextEngineParamsForMiss.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].nextEngineParams, &p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[p_FmPcdCcNode->numOfKeys].requiredAction = requiredAction; + + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + if(p_KeyParams->p_Mask) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("If node of the type IPV4_TTL or IPV6_HOP_LIMIT p_Mask can not be initialized")); + if(memcmp(p_KeyParams->p_Key, &key, 1) != 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("If node of the type IPV4_TTL or IPV6_HOP_LIMIT p_Key has to be 1")); + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + +#ifdef FM_PCD_CC_MANIP + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams, &p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction = requiredAction; + } + + *isKeyTblAlloc = FALSE; + return E_OK; +} + +static t_Error IcHashIndexedCheckParams(t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam, + t_FmPcdCcNode *p_FmPcdCcNode, + /*uint16_t *ccInfo,*/ + /*t_List *ccNextDifferentNodesLst,*/ + bool *isKeyTblAlloc) +{ + int tmp = 0, countOnes = 0; + t_FmPcdCcKeyParams *p_KeyParams; + t_Error err; + uint16_t glblMask = p_CcNodeParam->extractCcParams.extractNonHdr.icIndxMask; + uint16_t countMask = (uint16_t)(glblMask >> 4); +#ifdef FM_PCD_CC_MANIP + uint32_t requiredAction; +#endif /* FM_PCD_CC_MANIP */ + + if (glblMask & 0x000f) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("icIndxMask has to be with last nibble 0")); + + while (countMask) + { + countOnes++; + countMask=(uint16_t)(countMask>>1); + } + + if (!POWER_OF_2(p_FmPcdCcNode->numOfKeys)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("For Node of the type INDEXED numOfKeys has to be powerOfTwo")); + if (p_FmPcdCcNode->numOfKeys != ((uint32_t)1<keysParams.ccNextEngineParamsForMiss); + if(GET_ERROR_TYPE(err)!= E_NOT_SUPPORTED) + RETURN_ERROR(MAJOR, err, ("MissNextEngineParams for the node of the type IC_INDEX_HASH has to be UnInitialized")); + + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + if(p_KeyParams->p_Mask || p_KeyParams->p_Key) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("For Node of the type IC_HASH_INDEXED p_Key or p_Mask has to be NULL")); + + if((glblMask & (tmp * 16)) == (tmp * 16)) + { + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(err) + RETURN_ERROR(MAJOR, err, ("This index has to be initialized for the node of the type IC_INDEX_HASH according to settings of GlobalMask ")); + +#ifdef FM_PCD_CC_MANIP + if(p_KeyParams->ccNextEngineParams.h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_KeyParams->ccNextEngineParams, &requiredAction); + if(err) + RETURN_ERROR(MAJOR, err, (NO_MSG)); + } + p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction = requiredAction; +#endif /* FM_PCD_CC_MANIP */ + + memcpy(&p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams,&p_KeyParams->ccNextEngineParams, sizeof(t_FmPcdCcNextEngineParams)); + } + else + { + err = ValidateNextEngineParams(h_FmPcd, &p_KeyParams->ccNextEngineParams); + if(GET_ERROR_TYPE(err)!= E_NOT_SUPPORTED) + RETURN_ERROR(MAJOR, err, ("This index has to be UnInitialized for the node of the type IC_INDEX_HASH according to settings of GlobalMask")); + } + } + *isKeyTblAlloc = FALSE; + memcpy(PTR_MOVE(p_FmPcdCcNode->p_GlblMask, 2), &glblMask, 2); + + return E_OK; +} + +t_Error FmPcdCcModifyNextEngineParamTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcTree; + t_Error err = E_OK; + uint16_t keyIndex; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + SANITY_CHECK_RETURN_ERROR((grpId <= 7),E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(h_FmPcdCcTree,E_INVALID_VALUE); + + if(grpId >= p_FmPcdCcTree->numOfGrps) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("grpId you asked > numOfGroup of relevant tree")); + + if(index >= p_FmPcdCcTree->fmPcdGroupParam[grpId].numOfEntriesInGroup) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("index > numOfEntriesInGroup")); + + keyIndex = (uint16_t)(p_FmPcdCcTree->fmPcdGroupParam[grpId].baseGroupEntry + index); + + err = ModifyKeyCommonPart1(h_FmPcdCcTree, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, TRUE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + p_ModifyKeyParams->tree = TRUE; + + err = BuildNewNodeModifyNextEngine (h_FmPcd, h_FmPcdCcTree, keyIndex,p_FmPcdCcNextEngineParams, h_OldLst, h_NewLst, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + return E_OK; + +} + +t_Error FmPcdCcRemoveKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *) h_FmPcdCcNode; + t_Error err = E_OK; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + if(keyIndex >= p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("impossible to remove key when numOfKeys <= keyIndex")); + + if(!p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("keyIndex you asked > numOfKeys of relevant node that was initialized")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_REMOVE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + err = BuildNewNodeRemoveKey (p_FmPcdCcNode, keyIndex, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; + +} + +t_Error FmPcdCcModifyKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask, t_List *h_OldLst, t_List *h_NewLst,t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_Error err = E_OK; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + if(keyIndex >= p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + if(keySize != p_FmPcdCcNode->userSizeOfExtraction) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("size for ModifyKey has to be the same as defined in SetNode")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeModifyKey (p_FmPcdCcNode, keyIndex, p_Key, p_Mask, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + return E_OK; +} + + +t_Error FmPcdCcModiyNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, uint8_t keyIndex,t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_Error err = E_OK; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd,E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcNode,E_INVALID_HANDLE); + + if(keyIndex >= p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, FALSE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeModifyNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex,p_FmPcdCcNextEngineParams, h_OldPointer, h_NewPointer, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + return E_OK; +} + +t_Error FmPcdCcModifyMissNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_Error err = E_OK; + uint16_t keyIndex; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcNode,E_INVALID_VALUE); + + keyIndex = p_FmPcdCcNode->numOfKeys; + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeModifyNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex,p_FmPcdCcNextEngineParams, h_OldPointer, h_NewPointer, p_ModifyKeyParams); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +t_Error FmPcdCcAddKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + t_Error err = E_OK; + + if(keyIndex > p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + if(keySize != p_FmPcdCcNode->userSizeOfExtraction) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be defined as it was defined in initialization step.")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_ADD, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + err = BuildNewNodeAddOrMdfyKeyAndNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex, p_FmPcdCcKeyParams, p_ModifyKeyParams, TRUE); + if(err) + { + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +t_Error FmPcdCcModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_FmPcdModifyCcKeyAdditionalParams *p_ModifyKeyParams; + t_Error err = E_OK; + + if(keyIndex > p_FmPcdCcNode->numOfKeys) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("keyIndex > previousely cleared last index + 1")); + + if((p_FmPcdCcNode->numOfKeys + 1) > FM_PCD_MAX_NUM_OF_CC_NODES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfKeys with new key can not be larger than 255")); + + if(keySize != p_FmPcdCcNode->userSizeOfExtraction) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be defined as it was defined in initialization step")); + + if(p_FmPcdCcNode->h_FmPcd != h_FmPcd) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("handler to FmPcd is diferent from one which was assigned to the node in the Init time")); + + err = ModifyKeyCommonPart1(p_FmPcdCcNode, keyIndex, h_AdditionalParams, e_MODIFY_STATE_CHANGE, TRUE, FALSE); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + p_ModifyKeyParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_AdditionalParams; + + err = BuildNewNodeAddOrMdfyKeyAndNextEngine (h_FmPcd, p_FmPcdCcNode, keyIndex, p_FmPcdCcKeyParams, p_ModifyKeyParams, FALSE); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + err = UpdatePtrWhichPointOnCrntMdfNode(p_FmPcdCcNode, p_ModifyKeyParams, h_OldLst, h_NewLst); + if(err) + { + ReleaseNewNodeCommonPart(p_ModifyKeyParams); + XX_Free(p_ModifyKeyParams); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + return E_OK; +} + +t_Error FmPcdCcReleaseModifiedDataStructure(t_Handle h_FmPcd, t_List *h_FmPcdOldPointersLst, t_List *h_FmPcdNewPointersLst, uint16_t numOfGoodChanges, t_Handle *h_Params) +{ + t_FmPcdModifyCcKeyAdditionalParams *p_CcNewModifyAdditionalParams = (t_FmPcdModifyCcKeyAdditionalParams *)*h_Params; + t_List *p_Pos; + t_Error err = E_OK; + t_CcNodeInformation ccNodeInfo, *p_CcNodeInformation; + t_Handle h_Muram; + t_FmPcdCcNode *p_FmPcdCcNextNode; + t_List *p_UpdateLst; + + UNUSED(numOfGoodChanges); + + SANITY_CHECK_RETURN_ERROR(h_FmPcd,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_CcNewModifyAdditionalParams->h_CurrentNode,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(h_FmPcdOldPointersLst,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(h_FmPcdNewPointersLst,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((numOfGoodChanges == LIST_NumOfObjs(h_FmPcdOldPointersLst)),E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR((numOfGoodChanges == LIST_NumOfObjs(h_FmPcdNewPointersLst)),E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR((LIST_NumOfObjs(h_FmPcdOldPointersLst) == LIST_NumOfObjs(h_FmPcdNewPointersLst)),E_INVALID_STATE); + + /*we don't update subtree of the new node with new tree because it was done in the previose stage*/ + if(p_CcNewModifyAdditionalParams->h_NodeForAdd) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_CcNewModifyAdditionalParams->h_NodeForAdd; + if(!p_CcNewModifyAdditionalParams->tree) + p_UpdateLst = &p_FmPcdCcNextNode->ccPrevNodesLst; + else + p_UpdateLst = &p_FmPcdCcNextNode->ccTreeIdLst; + p_CcNodeInformation = FindNodeInfoInReleventLst(p_UpdateLst, p_CcNewModifyAdditionalParams->h_CurrentNode); + if(p_CcNodeInformation) + p_CcNodeInformation->index++; + else + { + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = (t_Handle)p_CcNewModifyAdditionalParams->h_CurrentNode; + ccNodeInfo.index = 1; + EnqueueNodeInfoToRelevantLst(p_UpdateLst, &ccNodeInfo); + } + } + + if(p_CcNewModifyAdditionalParams->h_NodeForRmv) + { + + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_CcNewModifyAdditionalParams->h_NodeForRmv; + if(!p_CcNewModifyAdditionalParams->tree) + { + p_UpdateLst = &p_FmPcdCcNextNode->ccPrevNodesLst; + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNextNode->ccTreesLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + err = FmPcdCcSetRequiredAction(h_FmPcd, + UPDATE_CC_WITH_DELETE_TREE, + &((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction[p_CcNewModifyAdditionalParams->keyIndex], + PTR_MOVE(((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->h_AdTable, p_CcNewModifyAdditionalParams->keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + 1, + p_CcNodeInformation->h_CcNode); + } + } + else + { + p_UpdateLst = &p_FmPcdCcNextNode->ccTreeIdLst; + err = FmPcdCcSetRequiredAction(h_FmPcd, + UPDATE_CC_WITH_DELETE_TREE, + &((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction[p_CcNewModifyAdditionalParams->keyIndex], + UINT_TO_PTR(((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->ccTreeBaseAddr + p_CcNewModifyAdditionalParams->keyIndex*FM_PCD_CC_AD_ENTRY_SIZE), + 1, + p_CcNewModifyAdditionalParams->h_CurrentNode); + } + if(err) + return err; + + /*we remove from the subtree of the removed node tree because it wasn't done in the previose stage*/ + /*update ccPrevNodesLst or ccTreeIdLst of the removed node*/ + /*update of the nodeOwner*/ + p_CcNodeInformation = FindNodeInfoInReleventLst(p_UpdateLst, p_CcNewModifyAdditionalParams->h_CurrentNode); + ASSERT_COND(p_CcNodeInformation); + ASSERT_COND(p_CcNodeInformation->index); + p_CcNodeInformation->index--; + if(p_CcNodeInformation->index == 0) + DequeueNodeInfoFromRelevantLst(p_UpdateLst,p_CcNewModifyAdditionalParams->h_CurrentNode); + ASSERT_COND(LIST_NumOfObjs(&p_FmPcdCcNextNode->ccTreesLst) == 1); + UpdateNodeOwner(p_FmPcdCcNextNode, FALSE); + } + +#ifdef FM_PCD_CC_MANIP + if(p_CcNewModifyAdditionalParams->h_ManipForRmv) + FmPcdManipUpdateOwner(p_CcNewModifyAdditionalParams->h_ManipForRmv, FALSE); +#endif /* FM_PCD_CC_MANIP */ + + h_Muram = FmPcdGetMuramHandle(h_FmPcd); + ASSERT_COND(h_Muram); + + /*we release new AD which was allocated and updated for copy from to actual AD*/ + LIST_FOR_EACH(p_Pos, h_FmPcdNewPointersLst) + { + p_CcNodeInformation = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInformation->h_CcNode); + FM_MURAM_FreeMem(h_Muram, p_CcNodeInformation->h_CcNode); + + } + + /*free Old data structure if it has to be freed - new data structure was allocated*/ + if(p_CcNewModifyAdditionalParams->p_AdTableOld) + FM_MURAM_FreeMem(h_Muram,p_CcNewModifyAdditionalParams->p_AdTableOld); + if(p_CcNewModifyAdditionalParams->p_KeysMatchTableOld) + FM_MURAM_FreeMem(h_Muram,p_CcNewModifyAdditionalParams->p_KeysMatchTableOld); + + /*update current modified node with changed fields if it's required*/ + if(!p_CcNewModifyAdditionalParams->tree) + { + if(p_CcNewModifyAdditionalParams->p_AdTableNew) + ((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->h_AdTable = p_CcNewModifyAdditionalParams->p_AdTableNew; + if(p_CcNewModifyAdditionalParams->numOfKeys) + ((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->numOfKeys = p_CcNewModifyAdditionalParams->numOfKeys; + if(p_CcNewModifyAdditionalParams->p_KeysMatchTableNew) + ((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->h_KeysMatchTable = p_CcNewModifyAdditionalParams->p_KeysMatchTableNew; + memcpy(((t_FmPcdCcNode *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction, &p_CcNewModifyAdditionalParams->nextEngineAndRequiredAction, sizeof(t_FmPcdCcNextEngineAndRequiredActionParams) * (FM_PCD_MAX_NUM_OF_KEYS)); + } + else + memcpy(&((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->nextEngineAndRequiredAction, &p_CcNewModifyAdditionalParams->nextEngineAndRequiredAction, sizeof(t_FmPcdCcNextEngineAndRequiredActionParams) * (((t_FmPcdCcTree *)(p_CcNewModifyAdditionalParams->h_CurrentNode))->numOfEntries)); + + ReleaseLst(h_FmPcdOldPointersLst); + ReleaseLst(h_FmPcdNewPointersLst); + XX_Free(p_CcNewModifyAdditionalParams); + + return E_OK; +} + +uint32_t FmPcdCcGetNodeAddrOffsetFromNodeInfo(t_Handle h_FmPcd, t_Handle h_Pointer) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_CcNodeInformation *p_CcNodeInfo; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd,E_INVALID_HANDLE, (uint32_t)ILLEGAL_BASE); + + p_CcNodeInfo = CC_NODE_F_OBJECT(h_Pointer); + return (uint32_t)(XX_VirtToPhys(p_CcNodeInfo->h_CcNode) - p_FmPcd->physicalMuramBase); +} + +t_Error FmPcdCcGetGrpParams(t_Handle h_FmPcdCcTree, uint8_t grpId, uint32_t *p_GrpBits, uint8_t *p_GrpBase) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *) h_FmPcdCcTree; + + SANITY_CHECK_RETURN_ERROR(h_FmPcdCcTree, E_INVALID_HANDLE); + + if(grpId >= p_FmPcdCcTree->numOfGrps) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("grpId you asked > numOfGroup of relevant tree")); + *p_GrpBits = p_FmPcdCcTree->fmPcdGroupParam[grpId].totalBitsMask; + *p_GrpBase = p_FmPcdCcTree->fmPcdGroupParam[grpId].baseGroupEntry; + return E_OK; +} + +t_Error FmPcdCcBindTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint32_t *p_Offset, t_Handle h_FmPort) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcTree; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd,E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcTree,E_INVALID_STATE); + + FmPcdCcUpdateTreeOwner(p_FmPcdCcTree, TRUE); + + *p_Offset = (uint32_t)(XX_VirtToPhys(UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr)) - + p_FmPcd->physicalMuramBase); + + err = CcUpdateParams(h_FmPcd, h_FmPort, h_FmPcdCcTree, TRUE); + + return err; +} + +t_Error FmPcdCcUnbindTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree) +{ + t_FmPcdCcTree *p_FmPcdCcTree = (t_FmPcdCcTree *)h_FmPcdCcTree; + + UNUSED(h_FmPcd); + + SANITY_CHECK_RETURN_ERROR(p_FmPcdCcTree,E_INVALID_HANDLE); + + FmPcdCcUpdateTreeOwner(p_FmPcdCcTree, FALSE); + + return E_OK; +} + +t_Error FmPcdCcTreeTryLock(t_Handle h_FmPcdCcTree) +{ + if (TRY_LOCK(NULL, &((t_FmPcdCcTree *)h_FmPcdCcTree)->lock)) + return E_OK; + return ERROR_CODE(E_BUSY); +} + +t_Error FmPcdCcNodeTreeTryLock(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_List *p_List) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_FmPcdCcNode; + t_List *p_Pos; + t_CcNodeInformation *p_CcNodeInfo, nodeInfo; + t_Error err = E_OK; + + UNUSED(h_FmPcd); + + if(LIST_IsEmpty(&p_FmPcdCcNode->ccTreesLst)) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("asked for more nodes in CC than MAX")) ; + LIST_FOR_EACH(p_Pos, &p_FmPcdCcNode->ccTreesLst) + { + p_CcNodeInfo = CC_NODE_F_OBJECT(p_Pos); + ASSERT_COND(p_CcNodeInfo->h_CcNode); + err = FmPcdCcTreeTryLock(p_CcNodeInfo->h_CcNode); + if(err == E_OK) + { + memset(&nodeInfo, 0, sizeof(t_CcNodeInformation)); + nodeInfo.h_CcNode = p_CcNodeInfo->h_CcNode; + EnqueueNodeInfoToRelevantLst(p_List, &nodeInfo); + } + else + FmPcdCcNodeTreeReleaseLock(p_List); + } + + return err; +} + +t_Handle FM_PCD_CcBuildTree(t_Handle h_FmPcd, t_FmPcdCcTreeParams *p_PcdGroupsParam) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_Error err = E_OK; + int i = 0, j = 0, k = 0; + t_FmPcdCcTree *p_FmPcdCcTree; + uint8_t numOfEntries; + t_Handle p_CcTreeTmp; + t_FmPcdCcGrpParams *p_FmPcdCcGroupParams; + t_FmPcdCcNextEngineAndRequiredActionParams params[16]; + t_NetEnvParams netEnvParams; + uint8_t lastOne = 0; + uint32_t requiredAction = 0; + t_FmPcdCcNode *p_FmPcdCcNextNode; + t_CcNodeInformation ccNodeInfo, *p_CcInformation; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd,E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_PcdGroupsParam,E_INVALID_HANDLE, NULL); + + if (p_PcdGroupsParam->numOfGrps > FM_PCD_MAX_NUM_OF_CC_GROUPS) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("numOfGrps should not exceed %d", FM_PCD_MAX_NUM_OF_CC_GROUPS)); + return NULL; + } + + p_FmPcdCcTree = (t_FmPcdCcTree*)XX_Malloc(sizeof(t_FmPcdCcTree)); + if(!p_FmPcdCcTree) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("PCD tree structure")); + return NULL; + } + memset(p_FmPcdCcTree, 0, sizeof(t_FmPcdCcTree)) ; + memset(params, 0, 16 * sizeof(t_FmPcdCcNextEngineParams)); + + INIT_LIST(&p_FmPcdCcTree->fmPortsLst); + + numOfEntries = 0; + p_FmPcdCcTree->netEnvId = (uint8_t)(PTR_TO_UINT(p_PcdGroupsParam->h_NetEnv)-1); + for(i = 0; i < p_PcdGroupsParam->numOfGrps; i++) + { + p_FmPcdCcGroupParams = &p_PcdGroupsParam->ccGrpParams[i]; + + if (p_FmPcdCcGroupParams->numOfDistinctionUnits > FM_PCD_MAX_NUM_OF_CC_UNITS) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("numOfDistinctionUnits (group %d) should not exceed %d", i, FM_PCD_MAX_NUM_OF_CC_UNITS)); + return NULL; + } + + p_FmPcdCcTree->fmPcdGroupParam[i].baseGroupEntry = numOfEntries; + p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup =(uint8_t)( 0x01 << p_FmPcdCcGroupParams->numOfDistinctionUnits); + numOfEntries += p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup; + if(numOfEntries > 16) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("numOfEntries can not be larger than 16")); + return NULL; + } + if(lastOne) + { + if(p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup > lastOne) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_CONFLICT, ("numOfEntries per group must be set in descending order")); + return NULL; + } + } + + lastOne = p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup; + + netEnvParams.netEnvId = p_FmPcdCcTree->netEnvId; + netEnvParams.numOfDistinctionUnits = p_FmPcdCcGroupParams->numOfDistinctionUnits; + memcpy(netEnvParams.unitIds, &p_FmPcdCcGroupParams->unitIds, (sizeof(uint8_t)) * p_FmPcdCcGroupParams->numOfDistinctionUnits); + err = PcdGetUnitsVector(p_FmPcd, &netEnvParams); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + p_FmPcdCcTree->fmPcdGroupParam[i].totalBitsMask = netEnvParams.vector; + for(j = 0; j < p_FmPcdCcTree->fmPcdGroupParam[i].numOfEntriesInGroup; j++) + { + err = ValidateNextEngineParams(h_FmPcd,&p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j]); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, err, (NO_MSG)); + return NULL; + } + +#ifdef FM_PCD_CC_MANIP + if(p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j].h_Manip) + { + err = FmPcdManipCheckParamsForCcNextEgine(&p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j], &requiredAction); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + return NULL; + } + } +#endif /* FM_PCD_CC_MANIP */ + + memcpy(¶ms[k].nextEngineParams, &p_FmPcdCcGroupParams->nextEnginePerEntriesInGrp[j], sizeof(t_FmPcdCcNextEngineParams)); + requiredAction |= UPDATE_CC_WITH_TREE; + params[k].requiredAction = requiredAction; + k++; + } + } + + p_FmPcdCcTree->numOfEntries = (uint8_t)k; + p_FmPcdCcTree->numOfGrps = p_PcdGroupsParam->numOfGrps; + p_FmPcdCcTree->ccTreeBaseAddr = + PTR_TO_UINT(FM_MURAM_AllocMem(FmPcdGetMuramHandle(h_FmPcd), + (uint32_t)( k * FM_PCD_CC_AD_ENTRY_SIZE), + FM_PCD_CC_AD_TABLE_ALIGN)); + + if(!p_FmPcdCcTree->ccTreeBaseAddr) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + return NULL; + } + IOMemSet32(UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr), 0, (uint32_t)(k * FM_PCD_CC_AD_ENTRY_SIZE)); + + p_CcTreeTmp = UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr); + + j = 0; + for(i = 0; i < numOfEntries; i++) + { + NextStepAd(p_CcTreeTmp,¶ms[i].nextEngineParams,p_FmPcd); + p_CcTreeTmp = PTR_MOVE(p_CcTreeTmp, FM_PCD_CC_AD_ENTRY_SIZE); + memcpy(&p_FmPcdCcTree->nextEngineAndRequiredAction[i], ¶ms[i], sizeof(t_FmPcdCcNextEngineAndRequiredActionParams)); + if(p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine== e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode; + if(!IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + { + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = (t_Handle)p_FmPcdCcTree; + ccNodeInfo.index = 1; + EnqueueNodeInfoToRelevantLst(&p_FmPcdCcNextNode->ccTreeIdLst, &ccNodeInfo); + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, TRUE); + } + else + { + p_CcInformation = FindNodeInfoInReleventLst(&p_FmPcdCcNextNode->ccTreeIdLst,(t_Handle)p_FmPcdCcTree); + ASSERT_COND(p_CcInformation); + p_CcInformation->index++; + } + } + } + + FmPcdIncNetEnvOwners(h_FmPcd, p_FmPcdCcTree->netEnvId); + p_CcTreeTmp = UINT_TO_PTR(p_FmPcdCcTree->ccTreeBaseAddr); + + for(i = 0; i < p_FmPcdCcTree->numOfEntries ; i++) + { + if(p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcTree->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode; + + if(IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, FALSE); + } + } + + for(i = 0; i < numOfEntries; i++) + { + if(p_FmPcdCcTree->nextEngineAndRequiredAction[i].requiredAction) + { + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcTree->nextEngineAndRequiredAction[i].requiredAction, &p_FmPcdCcTree->nextEngineAndRequiredAction[i], p_CcTreeTmp,1, p_FmPcdCcTree); + if(err) + { + DeleteTree(p_FmPcdCcTree,p_FmPcd); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + return NULL; + } + p_CcTreeTmp = PTR_MOVE(p_CcTreeTmp, FM_PCD_CC_AD_ENTRY_SIZE); + } + } + + return p_FmPcdCcTree; +} + +t_Error FM_PCD_CcDeleteTree(t_Handle h_FmPcd, t_Handle h_CcTree) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdCcTree *p_CcTree = (t_FmPcdCcTree *)h_CcTree; + int i= 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_CcTree,E_INVALID_STATE); + + FmPcdDecNetEnvOwners(h_FmPcd, p_CcTree->netEnvId); + + if(p_CcTree->owners) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("the tree with this ID can not be removed because this tree is occupied, first - unbind this tree")); + + for(i = 0; i numOfEntries; i++) + { + if(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + UpdateNodeOwner(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode, FALSE); + } + +#ifdef FM_PCD_CC_MANIP + for(i = 0; i < p_CcTree->numOfEntries; i++) + { + if(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + FmPcdManipUpdateOwner(p_CcTree->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, FALSE); + } +#endif /* FM_PCD_CC_MANIP */ + + DeleteTree(p_CcTree, p_FmPcd); + return E_OK; +} + +t_Handle FM_PCD_CcSetNode(t_Handle h_FmPcd, t_FmPcdCcNodeParams *p_CcNodeParam) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *) h_FmPcd; + t_FmPcdCcNode *p_FmPcdCcNode, *p_FmPcdCcNextNode; + t_Error err = E_OK; + int tmp, size; + bool glblMask = FALSE; + t_FmPcdCcKeyParams *p_KeyParams; + t_Handle p_KeysMatchTblTmp; + t_Handle p_AdTableTmp; + bool fullField = FALSE; + ccPrivateInfo_t icCode = CC_PRIVATE_INFO_NONE; + bool isKeyTblAlloc, fromIc = FALSE; + t_CcNodeInformation ccNodeInfo, *p_CcInformation; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd,E_INVALID_HANDLE,NULL); + + /* + if (!p_CcNodeParam->keysParams.keySize || + !p_CcNodeParam->keysParams.numOfKeys) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("At least one key of keySize > 0 must be defined.")); + return NULL; + } + */ + p_FmPcdCcNode = (t_FmPcdCcNode*)XX_Malloc(sizeof(t_FmPcdCcNode)); + if(!p_FmPcdCcNode) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + return NULL; + } + memset(p_FmPcdCcNode, 0, sizeof(t_FmPcdCcNode)); + + p_FmPcdCcNode->p_GlblMask = (t_Handle)XX_Malloc(CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + memset(p_FmPcdCcNode->p_GlblMask, 0, CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + + p_FmPcdCcNode->numOfKeys = p_CcNodeParam->keysParams.numOfKeys; + + p_FmPcdCcNode->h_FmPcd = h_FmPcd; + + INIT_LIST(&p_FmPcdCcNode->ccPrevNodesLst); + INIT_LIST(&p_FmPcdCcNode->ccTreeIdLst); + INIT_LIST(&p_FmPcdCcNode->ccTreesLst); + + if((p_CcNodeParam->extractCcParams.type == e_FM_PCD_EXTRACT_BY_HDR) && + ((p_CcNodeParam->extractCcParams.extractByHdr.hdr == HEADER_TYPE_IPv4) || + (p_CcNodeParam->extractCcParams.extractByHdr.hdr == HEADER_TYPE_IPv6)) && + (p_CcNodeParam->extractCcParams.extractByHdr.type == e_FM_PCD_EXTRACT_FULL_FIELD) && + ((p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField.ipv6 == NET_HEADER_FIELD_IPv6_HOP_LIMIT) || + (p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField.ipv4 == NET_HEADER_FIELD_IPv4_TTL))) + { + err = Ipv4TtlOrIpv6HopLimiCheckParams(h_FmPcd, p_CcNodeParam, p_FmPcdCcNode, &isKeyTblAlloc); + glblMask = FALSE; + + } + else if((p_CcNodeParam->extractCcParams.type == e_FM_PCD_EXTRACT_NON_HDR) && + ((p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_KEY) || + (p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_HASH) || + (p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_FLOW_ID))) + { + if((p_CcNodeParam->extractCcParams.extractNonHdr.src == e_FM_PCD_EXTRACT_FROM_FLOW_ID) && + (p_CcNodeParam->extractCcParams.extractNonHdr.offset != 0)) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("In the case of the extraction from e_FM_PCD_EXTRACT_FROM_FLOW_ID offset has to be 0")); + return NULL; + } + + icCode = IcDefineCode(p_CcNodeParam); + fromIc = TRUE; + if(icCode == CC_PRIVATE_INFO_NONE) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("user asked extraction from IC and field in internal context or action wasn't initialized in the right way")); + return NULL; + } + + if((icCode == CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP) || (icCode == CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP)) + { + err = IcHashIndexedCheckParams(h_FmPcd, p_CcNodeParam, p_FmPcdCcNode, &isKeyTblAlloc); + + glblMask = TRUE; + } + else + { + err = CheckParams(h_FmPcd, p_CcNodeParam,p_FmPcdCcNode, &isKeyTblAlloc); + if(p_FmPcdCcNode->glblMaskSize) + glblMask = TRUE; + } + } + else + { + err = CheckParams(h_FmPcd, p_CcNodeParam,p_FmPcdCcNode, &isKeyTblAlloc); + if(p_FmPcdCcNode->glblMaskSize) + glblMask = TRUE; + } + + if(err) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + switch(p_CcNodeParam->extractCcParams.type) + { + case(e_FM_PCD_EXTRACT_BY_HDR): + switch(p_CcNodeParam->extractCcParams.extractByHdr.type) + { + case(e_FM_PCD_EXTRACT_FULL_FIELD): + p_FmPcdCcNode->parseCode = GetFullFieldParseCode(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.hdrIndex, + p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField); + GetSizeHeaderField(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fullField, &p_FmPcdCcNode->sizeOfExtraction); + fullField = TRUE; + if((p_FmPcdCcNode->parseCode != CC_PC_FF_TCI1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_TCI2) && + (p_FmPcdCcNode->parseCode != CC_PC_FF_MPLS1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_MPLS1) && + (p_FmPcdCcNode->parseCode != CC_PC_FF_IPV4IPTOS_TC1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_IPV4IPTOS_TC2) && + (p_FmPcdCcNode->parseCode != CC_PC_FF_IPTOS_IPV6TC1_IPV6FLOW1) && (p_FmPcdCcNode->parseCode != CC_PC_FF_IPTOS_IPV6TC2_IPV6FLOW2) && + glblMask) + { + glblMask = FALSE; + p_FmPcdCcNode->glblMaskSize = 4; + p_FmPcdCcNode->lclMask = TRUE; + } + break; + case(e_FM_PCD_EXTRACT_FROM_HDR): + p_FmPcdCcNode->sizeOfExtraction = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromHdr.size; + p_FmPcdCcNode->offset = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromHdr.offset; + p_FmPcdCcNode->parseCode = GetPrParseCode(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.hdrIndex, + p_FmPcdCcNode->offset,glblMask, &p_FmPcdCcNode->prsArrayOffset); + break; + case(e_FM_PCD_EXTRACT_FROM_FIELD): + p_FmPcdCcNode->offset = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromField.offset; + p_FmPcdCcNode->sizeOfExtraction = p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromField.size; + p_FmPcdCcNode->parseCode = GetFieldParseCode(p_CcNodeParam->extractCcParams.extractByHdr.hdr, p_CcNodeParam->extractCcParams.extractByHdr.extractByHdrType.fromField.field, + p_FmPcdCcNode->offset,&p_FmPcdCcNode->prsArrayOffset, + p_CcNodeParam->extractCcParams.extractByHdr.hdrIndex); + break; + default: + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + return NULL; + } + break; + case(e_FM_PCD_EXTRACT_NON_HDR): + /* get the field code for the generic extract */ + p_FmPcdCcNode->sizeOfExtraction = p_CcNodeParam->extractCcParams.extractNonHdr.size; + p_FmPcdCcNode->offset = p_CcNodeParam->extractCcParams.extractNonHdr.offset; + p_FmPcdCcNode->parseCode = GetGenParseCode(p_CcNodeParam->extractCcParams.extractNonHdr.src, p_FmPcdCcNode->offset, glblMask, &p_FmPcdCcNode->prsArrayOffset, fromIc,icCode); + + if(p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_HASH_INDEXED) + { + if((p_FmPcdCcNode->offset + p_FmPcdCcNode->sizeOfExtraction) > 64) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_SELECTION,("when node of the type CC_PC_GENERIC_IC_HASH_INDEXED offset + size can not be bigger then size of HASH 64 bits (8 bytes)")); + return NULL; + } + } + if((p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_GMASK) || (p_FmPcdCcNode->parseCode == CC_PC_GENERIC_IC_HASH_INDEXED)) + { + p_FmPcdCcNode->offset += p_FmPcdCcNode->prsArrayOffset; + p_FmPcdCcNode->prsArrayOffset = 0; + } + break; + + default: + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + return NULL; + } + + if(p_FmPcdCcNode->parseCode == CC_PC_ILLEGAL) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("illeagl extraction type")); + return NULL; + } + + if((p_FmPcdCcNode->sizeOfExtraction > FM_PCD_MAX_SIZE_OF_KEY) || !p_FmPcdCcNode->sizeOfExtraction) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("sizeOfExatrction can not be greater than 56 and not 0")); + return NULL; + } + + if(p_CcNodeParam->keysParams.keySize != p_FmPcdCcNode->sizeOfExtraction) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be equal to sizeOfExtraction")); + return NULL; + } + + + p_FmPcdCcNode->userSizeOfExtraction = p_FmPcdCcNode->sizeOfExtraction; + + if(!glblMask) + memset(p_FmPcdCcNode->p_GlblMask, 0xff, CC_GLBL_MASK_SIZE * sizeof(uint8_t)); + +#ifdef FM_PCD_CC_MANIP + err = CheckAndSetManipParamsWithCcNodeParams(p_FmPcdCcNode); + if(err != E_OK) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("keySize has to be equal to sizeOfExtraction")); + return NULL; + } +#endif /* FM_PCD_CC_MANIP */ + + GetCcExtractKeySize(p_FmPcdCcNode->sizeOfExtraction, &p_FmPcdCcNode->ccKeySizeAccExtraction); + + if(p_FmPcdCcNode->lclMask) + size = 2 * p_FmPcdCcNode->ccKeySizeAccExtraction; + else + size = p_FmPcdCcNode->ccKeySizeAccExtraction; + + if(isKeyTblAlloc) + { + p_FmPcdCcNode->h_KeysMatchTable =(t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)(size * sizeof(uint8_t) * (p_FmPcdCcNode->numOfKeys + 1)), + FM_PCD_CC_KEYS_MATCH_TABLE_ALIGN); + if(!p_FmPcdCcNode->h_KeysMatchTable) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for KEY MATCH table")); + return NULL; + } + IOMemSet32((uint8_t *)p_FmPcdCcNode->h_KeysMatchTable, 0, size * sizeof(uint8_t) * (p_FmPcdCcNode->numOfKeys + 1)); + } + + p_FmPcdCcNode->h_AdTable = (t_Handle)FM_MURAM_AllocMem(FmPcdGetMuramHandle(p_FmPcdCcNode->h_FmPcd), + (uint32_t)( (p_FmPcdCcNode->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE), + FM_PCD_CC_AD_TABLE_ALIGN); + if(!p_FmPcdCcNode->h_AdTable) + { + DeleteNode(p_FmPcdCcNode); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("No memory in MURAM for AD table ")); + return NULL; + } + IOMemSet32((uint8_t *)p_FmPcdCcNode->h_AdTable, 0, (uint32_t)((p_FmPcdCcNode->numOfKeys+1) * FM_PCD_CC_AD_ENTRY_SIZE)); + + p_KeysMatchTblTmp = p_FmPcdCcNode->h_KeysMatchTable; + p_AdTableTmp = p_FmPcdCcNode->h_AdTable; + for(tmp = 0 ; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + p_KeyParams = &p_CcNodeParam->keysParams.keyParams[tmp]; + + if(p_KeysMatchTblTmp) + { + Mem2IOCpy32((void*)p_KeysMatchTblTmp, p_KeyParams->p_Key, p_FmPcdCcNode->sizeOfExtraction); + + if(p_FmPcdCcNode->lclMask && p_KeyParams->p_Mask) + Mem2IOCpy32(PTR_MOVE(p_KeysMatchTblTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), p_KeyParams->p_Mask, p_FmPcdCcNode->sizeOfExtraction); + else if(p_FmPcdCcNode->lclMask) + IOMemSet32(PTR_MOVE(p_KeysMatchTblTmp, p_FmPcdCcNode->ccKeySizeAccExtraction), 0xff, p_FmPcdCcNode->sizeOfExtraction); + p_KeysMatchTblTmp = PTR_MOVE(p_KeysMatchTblTmp, size * sizeof(uint8_t)); + } + NextStepAd(p_AdTableTmp,&p_KeyParams->ccNextEngineParams, p_FmPcd); + + p_AdTableTmp = PTR_MOVE(p_AdTableTmp, FM_PCD_CC_AD_ENTRY_SIZE); + + } + NextStepAd(p_AdTableTmp,&p_CcNodeParam->keysParams.ccNextEngineParamsForMiss, p_FmPcd); + + if(fullField == TRUE) + p_FmPcdCcNode->sizeOfExtraction = 0; + + + for(tmp = 0; tmp < p_FmPcdCcNode->numOfKeys + 1; tmp++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.params.ccParams.h_CcNode; + + if(!IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + { + memset(&ccNodeInfo, 0, sizeof(t_CcNodeInformation)); + ccNodeInfo.h_CcNode = (t_Handle)p_FmPcdCcNode; + ccNodeInfo.index = 1; + EnqueueNodeInfoToRelevantLst(&p_FmPcdCcNextNode->ccPrevNodesLst, &ccNodeInfo); + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, TRUE); + } + else + { + p_CcInformation = FindNodeInfoInReleventLst(&p_FmPcdCcNextNode->ccPrevNodesLst,(t_Handle)p_FmPcdCcNode); + ASSERT_COND(p_CcInformation); + p_CcInformation->index++; + } + } + + } + + for(tmp = 0; tmp < p_FmPcdCcNode->numOfKeys + 1; tmp++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + p_FmPcdCcNextNode = (t_FmPcdCcNode*)p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].nextEngineParams.params.ccParams.h_CcNode; + + if(IsNodeInModifiedState((t_Handle)p_FmPcdCcNextNode)) + UpdateNodeWithModifiedState((t_Handle)p_FmPcdCcNextNode, FALSE); + } + } + + p_AdTableTmp = p_FmPcdCcNode->h_AdTable; + for(tmp = 0; tmp < p_FmPcdCcNode->numOfKeys; tmp++) + { + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction) + { + + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction, &p_FmPcdCcNode->nextEngineAndRequiredAction[tmp], p_AdTableTmp,1, NULL); + if(err) + { + FM_PCD_CcDeleteNode(h_FmPcd, (t_Handle)p_FmPcdCcNode); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + p_AdTableTmp = PTR_MOVE(p_AdTableTmp, FM_PCD_CC_AD_ENTRY_SIZE); + } + } + if(p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction) + { + err = FmPcdCcSetRequiredAction(h_FmPcd, p_FmPcdCcNode->nextEngineAndRequiredAction[tmp].requiredAction, &p_FmPcdCcNode->nextEngineAndRequiredAction[tmp], p_AdTableTmp,1, NULL); + if(err) + { + FM_PCD_CcDeleteNode(h_FmPcd, (t_Handle)p_FmPcdCcNode); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + } + + + return p_FmPcdCcNode; +} + +t_Error FM_PCD_CcDeleteNode(t_Handle h_FmPcd, t_Handle h_CcNode) +{ + t_FmPcdCcNode *p_CcNode = (t_FmPcdCcNode *)h_CcNode; + int i = 0; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + + UNUSED(h_FmPcd); + if(!p_CcNode) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("the node with this ID is not initialized")); + + if(p_CcNode->owners) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("the node with this ID can not be removed because this node is occupied, first - unbind this node")); + + for(i = 0; i < p_CcNode->numOfKeys; i++) + { + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + UpdateNodeOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode, FALSE); + + } + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.nextEngine == e_FM_PCD_CC) + UpdateNodeOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.params.ccParams.h_CcNode, FALSE); + +#ifdef FM_PCD_CC_MANIP + for(i = 0; i < p_CcNode->numOfKeys; i++) + { + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + FmPcdManipUpdateOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, FALSE); + } + if(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip) + FmPcdManipUpdateOwner(p_CcNode->nextEngineAndRequiredAction[i].nextEngineParams.h_Manip, FALSE); +#endif /* FM_PCD_CC_MANIP */ + + DeleteNode(p_CcNode); + + return E_OK; +} + +t_Error FM_PCD_CcNodeAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcAddKey(p_FmPcd->h_Hc, h_CcNode, keyIndex, keySize, p_KeyParams); +} + +t_Error FM_PCD_CcNodeRemoveKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcRemoveKey(p_FmPcd->h_Hc, h_CcNode, keyIndex); +} + +t_Error FM_PCD_CcNodeModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyKey(p_FmPcd->h_Hc, h_CcNode, keyIndex, keySize, p_Key, p_Mask); +} + +t_Error FM_PCD_CcNodeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyNodeNextEngine(p_FmPcd->h_Hc, h_CcNode, keyIndex, p_FmPcdCcNextEngineParams); +} + +t_Error FM_PCD_CcNodeModifyMissNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyNodeMissNextEngine(p_FmPcd->h_Hc, h_CcNode, p_FmPcdCcNextEngineParams); +} + +t_Error FM_PCD_CcTreeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyTreeNextEngine(p_FmPcd->h_Hc, h_CcTree, grpId, index, p_FmPcdCcNextEngineParams); +} + +t_Error FM_PCD_CcNodeModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_HANDLE); + + return FmHcPcdCcModifyKeyAndNextEngine(p_FmPcd->h_Hc, h_CcNode, keyIndex, keySize, p_KeyParams); +} + +uint32_t FM_PCD_CcNodeGetKeyCounter(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex) +{ + t_FmPcdCcNode *p_FmPcdCcNode = (t_FmPcdCcNode *)h_CcNode; + t_AdOfTypeResult *p_AdResult = NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_VALUE(h_CcNode, E_INVALID_HANDLE, 0); +#ifdef DISABLE_SANITY_CHECKS +UNUSED(h_FmPcd); +#endif /* DISABLE_SANITY_CHECKS */ + + if (keyIndex >= p_FmPcdCcNode->numOfKeys) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, + ("keyIndex > numOfKeys defined for this node")); + return 0; + } + + p_AdResult = PTR_MOVE(p_FmPcdCcNode->h_AdTable, keyIndex*FM_PCD_CC_AD_ENTRY_SIZE); + ASSERT_COND(p_AdResult); + + if (p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_CC) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, + ("statistics updated only for entries where next engine not CC")); + return 0; + } + + if(((p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_DONE) && + !p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.enqueueParams.statisticsEn) || + ((p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_KG) && + !p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.kgParams.statisticsEn) || + ((p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.nextEngine == e_FM_PCD_PLCR) && + !p_FmPcdCcNode->nextEngineAndRequiredAction[keyIndex].nextEngineParams.params.plcrParams.statisticsEn)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, + ("statistics wasn't enable")); + return 0; + } + + return GET_UINT32(p_AdResult->res); +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.h @@ -0,0 +1,715 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_pcd.h + + @Description FM PCD ... +*//***************************************************************************/ +#ifndef __FM_PCD_H +#define __FM_PCD_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" +#include "fm_pcd_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_PCD + + +/**************************************************************************//** + @Group FM_PCD_Runtime_grp FM PCD Runtime Unit + @{ +*//***************************************************************************/ + +/****************************/ +/* Network defines */ +/****************************/ +#define UDP_HEADER_SIZE 8 + +#define ESP_SPI_OFFSET 0 +#define ESP_SPI_SIZE 4 +#define ESP_SEQ_NUM_OFFSET ESP_SPI_SIZE +#define ESP_SEQ_NUM_SIZE 4 + +/****************************/ +/* General defines */ +/****************************/ +#define ILLEGAL_CLS_PLAN 0xff +#define ILLEGAL_NETENV 0xff +/****************************/ +/* Error defines */ +/****************************/ +#define FM_PCD_EX_KG_DOUBLE_ECC 0x80000000 +#define FM_PCD_EX_KG_KEYSIZE_OVERFLOW 0x40000000 + +#define FM_PCD_EX_PLCR_DOUBLE_ECC 0x20000000 +#define FM_PCD_EX_PLCR_INIT_ENTRY_ERROR 0x10000000 +#define FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE 0x08000000 +#define FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE 0x04000000 + +#define FM_PCD_EX_PRS_DOUBLE_ECC 0x02000000 +#define FM_PCD_EX_PRS_SINGLE_ECC 0x01000000 + +#define GET_FM_PCD_EXCEPTION_FLAG(bitMask, exception) \ +switch(exception){ \ + case e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC: \ + bitMask = FM_PCD_EX_KG_DOUBLE_ECC; break; \ + case e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC: \ + bitMask = FM_PCD_EX_PLCR_DOUBLE_ECC; break; \ + case e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW: \ + bitMask = FM_PCD_EX_KG_KEYSIZE_OVERFLOW; break; \ + case e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR: \ + bitMask = FM_PCD_EX_PLCR_INIT_ENTRY_ERROR; break; \ + case e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE: \ + bitMask = FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE; break; \ + case e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE: \ + bitMask = FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE; break; \ + case e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC: \ + bitMask = FM_PCD_EX_PRS_DOUBLE_ECC; break; \ + case e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC: \ + bitMask = FM_PCD_EX_PRS_SINGLE_ECC; break; \ + default: bitMask = 0;break;} + +/***********************************************************************/ +/* SW parser L4 shells patch */ +/***********************************************************************/ +#ifdef FM_PRS_L4_SHELL_ERRATA_FMANb +#define SW_PRS_L4_PATCH \ +{ 0x31,0x92,0x02,0x1f,0x00,0x32,0x00,0x78, \ + 0x00,0x34,0x32,0xf0,0x00,0x50,0x00,0x0c, \ + 0x28,0x5e,0x83,0x8e,0x29,0x32,0xaf,0x8e, \ + 0x31,0xb2,0x9f,0xff,0x00,0x06,0xaf,0xbf, \ + 0x00,0x06,0x29,0x36,0x00,0x01,0x1b,0xff, \ + 0x32,0xf0,0x00,0x50,0x00,0x08,0x28,0x5e, \ + 0x08,0x99,0x00,0x00,0x9f,0x8e,0x31,0xb2, \ + 0x9f,0xff,0x00,0x06,0x29,0x36,0x00,0x01, \ + 0x1b,0xff,0x32,0xf0,0x00,0x50,0x00,0x04, \ + 0x28,0x5e,0x8f,0x9e,0x29,0x32,0x31,0xb2, \ + 0x8f,0xbf,0x00,0x06,0x29,0x36,0x00,0x01, \ + 0x1b,0xff,0x32,0xf0,0x00,0x50,0x00,0x04, \ + 0x28,0x5e,0x8f,0x9e,0x29,0x32,0x31,0xb2, \ + 0x8f,0xbf,0x00,0x06,0x29,0x36,0x00,0x01, \ + 0x1b,0xff,0x00,0x00,0x00,0x00,0x00,0x00}; + +#define SW_PRS_L4_PATCH_SIZE 120 +#endif /* FM_PRS_L4_SHELL_ERRATA_FMANb */ + +/****************************/ +/* Parser defines */ +/****************************/ +/* masks */ +#define PRS_ERR_CAP 0x80000000 +#define PRS_ERR_TYPE_DOUBLE 0x40000000 +#define PRS_ERR_SINGLE_ECC_CNT_MASK 0x00FF0000 +#define PRS_ERR_ADDR_MASK 0x000001FF +#define FM_PCD_PRS_RPIMAC_EN 0x00000001 +#define FM_PCD_PRS_SINGLE_ECC 0x00004000 +#define FM_PCD_PRS_PORT_IDLE_STS 0xffff0000 +#define FM_PCD_PRS_DOUBLE_ECC 0x00004000 +#define FM_PCD_PRS_PPSC_ALL_PORTS 0xffff0000 + +/* others */ +#define PRS_MAX_CYCLE_LIMIT 8191 +#define PRS_SW_DATA 0x00000800 +#define PRS_REGS_OFFSET 0x00000840 + +#define GET_FM_PCD_PRS_PORT_ID(prsPortId,hardwarePortId) \ + prsPortId = (uint8_t)(hardwarePortId & 0x0f) + +#define GET_FM_PCD_INDEX_FLAG(bitMask, prsPortId) \ + bitMask = 0x80000000>>prsPortId + +/***********************************************************************/ +/* Keygen defines */ +/***********************************************************************/ +/* Masks */ +#define FM_PCD_KG_KGGCR_EN 0x80000000 +#define KG_SCH_GEN_VALID 0x80000000 +#define KG_SCH_GEN_EXTRACT_TYPE 0x00008000 +#define KG_ERR_CAP 0x80000000 +#define KG_ERR_TYPE_DOUBLE 0x40000000 +#define KG_ERR_ADDR_MASK 0x00000FFF +#define FM_PCD_KG_DOUBLE_ECC 0x80000000 +#define FM_PCD_KG_KEYSIZE_OVERFLOW 0x40000000 +#define KG_SCH_MODE_EN 0x80000000 + +/* shifts */ +#define FM_PCD_KG_PE_CPP_MASK_SHIFT 16 +#define FM_PCD_KG_KGAR_WSEL_SHIFT 8 + +/* others */ +#define KG_DOUBLE_MEANING_REGS_OFFSET 0x100 +#define NO_VALIDATION 0x70 +#define KG_ACTION_REG_TO 1024 +#define KG_MAX_PROFILE 255 +#define SCHEME_ALWAYS_DIRECT 0xFFFFFFFF + +typedef struct { + bool known; + uint8_t id; +} t_FmPcdKgSchemesExtractsEntry; + +typedef struct { + t_FmPcdKgSchemesExtractsEntry extractsArray[FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; +} t_FmPcdKgSchemesExtracts; + +/***********************************************************************/ +/* Policer defines */ +/***********************************************************************/ + +/* masks */ +#define FM_PCD_PLCR_PEMODE_PI 0x80000000 +#define FM_PCD_PLCR_PEMODE_CBLND 0x40000000 +#define FM_PCD_PLCR_PEMODE_ALG_MASK 0x30000000 +#define FM_PCD_PLCR_PEMODE_ALG_RFC2698 0x10000000 +#define FM_PCD_PLCR_PEMODE_ALG_RFC4115 0x20000000 +#define FM_PCD_PLCR_PEMODE_DEFC_MASK 0x0C000000 +#define FM_PCD_PLCR_PEMODE_DEFC_Y 0x04000000 +#define FM_PCD_PLCR_PEMODE_DEFC_R 0x08000000 +#define FM_PCD_PLCR_PEMODE_DEFC_OVERRIDE 0x0C000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_MASK 0x03000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_Y 0x01000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_R 0x02000000 +#define FM_PCD_PLCR_PEMODE_OVCLR_G_NC 0x03000000 +#define FM_PCD_PLCR_PEMODE_PKT 0x00800000 +#define FM_PCD_PLCR_PEMODE_FPP_MASK 0x001F0000 +#define FM_PCD_PLCR_PEMODE_FPP_SHIFT 16 +#define FM_PCD_PLCR_PEMODE_FLS_MASK 0x0000F000 +#define FM_PCD_PLCR_PEMODE_FLS_L2 0x00003000 +#define FM_PCD_PLCR_PEMODE_FLS_L3 0x0000B000 +#define FM_PCD_PLCR_PEMODE_FLS_L4 0x0000E000 +#define FM_PCD_PLCR_PEMODE_FLS_FULL 0x0000F000 +#define FM_PCD_PLCR_PEMODE_RBFLS 0x00000800 +#define FM_PCD_PLCR_PEMODE_TRA 0x00000004 +#define FM_PCD_PLCR_PEMODE_TRB 0x00000002 +#define FM_PCD_PLCR_PEMODE_TRC 0x00000001 +#define FM_PCD_PLCR_DOUBLE_ECC 0x80000000 +#define FM_PCD_PLCR_INIT_ENTRY_ERROR 0x40000000 +#define FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE 0x80000000 +#define FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE 0x40000000 + +#define FM_PCD_PLCR_NIA_VALID 0x80000000 + +#define FM_PCD_PLCR_GCR_EN 0x80000000 +#define FM_PCD_PLCR_GCR_STEN 0x40000000 +#define FM_PCD_PLCR_GCR_DAR 0x20000000 +#define FM_PCD_PLCR_GCR_DEFNIA 0x00FFFFFF +#define FM_PCD_PLCR_NIA_ABS 0x00000100 + +#define FM_PCD_PLCR_GSR_BSY 0x80000000 +#define FM_PCD_PLCR_GSR_DQS 0x60000000 +#define FM_PCD_PLCR_GSR_RPB 0x20000000 +#define FM_PCD_PLCR_GSR_FQS 0x0C000000 +#define FM_PCD_PLCR_GSR_LPALG 0x0000C000 +#define FM_PCD_PLCR_GSR_LPCA 0x00003000 +#define FM_PCD_PLCR_GSR_LPNUM 0x000000FF + +#define FM_PCD_PLCR_EVR_PSIC 0x80000000 +#define FM_PCD_PLCR_EVR_AAC 0x40000000 + +#define FM_PCD_PLCR_PAR_PSI 0x20000000 +#define FM_PCD_PLCR_PAR_PNUM 0x00FF0000 +/* PWSEL Selctive select options */ +#define FM_PCD_PLCR_PAR_PWSEL_PEMODE 0x00008000 /* 0 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEGNIA 0x00004000 /* 1 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEYNIA 0x00002000 /* 2 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERNIA 0x00001000 /* 3 */ +#define FM_PCD_PLCR_PAR_PWSEL_PECIR 0x00000800 /* 4 */ +#define FM_PCD_PLCR_PAR_PWSEL_PECBS 0x00000400 /* 5 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEPIR_EIR 0x00000200 /* 6 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEPBS_EBS 0x00000100 /* 7 */ +#define FM_PCD_PLCR_PAR_PWSEL_PELTS 0x00000080 /* 8 */ +#define FM_PCD_PLCR_PAR_PWSEL_PECTS 0x00000040 /* 9 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEPTS_ETS 0x00000020 /* 10 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEGPC 0x00000010 /* 11 */ +#define FM_PCD_PLCR_PAR_PWSEL_PEYPC 0x00000008 /* 12 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERPC 0x00000004 /* 13 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERYPC 0x00000002 /* 14 */ +#define FM_PCD_PLCR_PAR_PWSEL_PERRPC 0x00000001 /* 15 */ + +#define FM_PCD_PLCR_PAR_PMR_BRN_1TO1 0x0000 /* - Full bit replacement. {PBNUM[0:N-1] + 1-> 2^N specific locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_2TO2 0x1 /* - {PBNUM[0:N-2],PNUM[N-1]}. + 2-> 2^(N-1) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_4TO4 0x2 /* - {PBNUM[0:N-3],PNUM[N-2:N-1]}. + 4-> 2^(N-2) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_8TO8 0x3 /* - {PBNUM[0:N-4],PNUM[N-3:N-1]}. + 8->2^(N-3) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_16TO16 0x4 /* - {PBNUM[0:N-5],PNUM[N-4:N-1]}. + 16-> 2^(N-4) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_32TO32 0x5 /* {PBNUM[0:N-6],PNUM[N-5:N-1]}. + 32-> 2^(N-5) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_64TO64 0x6 /* {PBNUM[0:N-7],PNUM[N-6:N-1]}. + 64-> 2^(N-6) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_128TO128 0x7 /* {PBNUM[0:N-8],PNUM[N-7:N-1]}. + 128-> 2^(N-7) base locations. */ +#define FM_PCD_PLCR_PAR_PMR_BRN_256TO256 0x8 /* - No bit replacement for N=8. {PNUM[N-8:N-1]}. + When N=8 this option maps all 256 profiles by the DISPATCH bus into one group. */ + +#define FM_PCD_PLCR_PMR_V 0x80000000 +#define PLCR_ERR_ECC_CAP 0x80000000 +#define PLCR_ERR_ECC_TYPE_DOUBLE 0x40000000 +#define PLCR_ERR_ECC_PNUM_MASK 0x00000FF0 +#define PLCR_ERR_ECC_OFFSET_MASK 0x0000000F + +#define PLCR_ERR_UNINIT_CAP 0x80000000 +#define PLCR_ERR_UNINIT_NUM_MASK 0x000000FF +#define PLCR_ERR_UNINIT_PID_MASK 0x003f0000 +#define PLCR_ERR_UNINIT_ABSOLUTE_MASK 0x00008000 + +/* shifts */ +#define PLCR_ERR_ECC_PNUM_SHIFT 4 +#define PLCR_ERR_UNINIT_PID_SHIFT 16 + +#define FM_PCD_PLCR_PMR_BRN_SHIFT 16 + +/* others */ +#define WAIT_FOR_PLCR_EVR_AAC \ +{\ + uint32_t count = 0; \ + uint32_t tmpReg32; \ + while (count < FM_PCD_PLCR_POLL) \ + { \ + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->fmpl_evr);\ + if (!( tmpReg32 & FM_PCD_PLCR_EVR_AAC)) break;\ + count++;\ + }\ +} + +#define WAIT_FOR_PLCR_PAR_GO \ +{\ + uint32_t count = 0; \ + uint32_t tmpReg32; \ + while (count < FM_PCD_PLCR_POLL) \ + { \ + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->fmpl_par);\ + if (!( tmpReg32 & FM_PCD_PLCR_PAR_GO)) break;\ + count++; \ + }\ +} + +#define PLCR_PORT_WINDOW_SIZE(hardwarePortId) + +/****************************/ +/* Defaults */ +/****************************/ +#define DEFAULT_plcrAutoRefresh FALSE +#define DEFAULT_prsMaxParseCycleLimit 0 +#define DEFAULT_fmPcdKgErrorExceptions (FM_PCD_EX_KG_DOUBLE_ECC | FM_PCD_EX_KG_KEYSIZE_OVERFLOW) +#define DEFAULT_fmPcdPlcrErrorExceptions (FM_PCD_EX_PLCR_DOUBLE_ECC | FM_PCD_EX_PLCR_INIT_ENTRY_ERROR) +#define DEFAULT_fmPcdPlcrExceptions 0 +#define DEFAULT_fmPcdPrsErrorExceptions (FM_PCD_EX_PRS_DOUBLE_ECC) + +#define DEFAULT_fmPcdPrsExceptions FM_PCD_EX_PRS_SINGLE_ECC +#define DEFAULT_numOfUsedProfilesPerWindow 16 +#define DEFAULT_numOfSharedPlcrProfiles 4 + +/***********************************************************************/ +/* Memory map */ +/***********************************************************************/ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct { + volatile uint32_t kgoe_sp; + volatile uint32_t kgoe_cpp; +} _PackedType t_FmPcdKgPortConfigRegs; + +typedef _Packed struct { + volatile uint32_t kgcpe[8]; +} _PackedType t_FmPcdKgClsPlanRegs; + +typedef _Packed union { + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_FmPcdKgPortConfigRegs portRegs; + t_FmPcdKgClsPlanRegs clsPlanRegs; +} _PackedType u_FmPcdKgIndirectAccessRegs; + +typedef _Packed struct { + volatile uint32_t kggcr; + volatile uint32_t res0; + volatile uint32_t res1; + volatile uint32_t kgeer; + volatile uint32_t kgeeer; + volatile uint32_t res2; + volatile uint32_t res3; + volatile uint32_t kgseer; + volatile uint32_t kgseeer; + volatile uint32_t kggsr; + volatile uint32_t kgtpc; + volatile uint32_t kgserc; + volatile uint32_t res4[4]; + volatile uint32_t kgfdor; + volatile uint32_t kggdv0r; + volatile uint32_t kggdv1r; + volatile uint32_t res5[5]; + volatile uint32_t kgfer; + volatile uint32_t kgfeer; + volatile uint32_t res6[38]; + u_FmPcdKgIndirectAccessRegs indirectAccessRegs; + volatile uint32_t res[42]; /*(0xfc-sizeof(u_FmPcdKgIndirectAccessRegs))/4 */ + volatile uint32_t kgar; +} _PackedType t_FmPcdKgRegs; + +typedef _Packed struct { +/* General Configuration and Status Registers */ + volatile uint32_t fmpl_gcr; /* 0x000 FMPL_GCR - FM Policer General Configuration */ + volatile uint32_t fmpl_gsr; /* 0x004 FMPL_GSR - FM Policer Global Status Register */ + volatile uint32_t fmpl_evr; /* 0x008 FMPL_EVR - FM Policer Event Register */ + volatile uint32_t fmpl_ier; /* 0x00C FMPL_IER - FM Policer Interrupt Enable Register */ + volatile uint32_t fmpl_ifr; /* 0x010 FMPL_IFR - FM Policer Interrupt Force Register */ + volatile uint32_t fmpl_eevr; /* 0x014 FMPL_EEVR - FM Policer Error Event Register */ + volatile uint32_t fmpl_eier; /* 0x018 FMPL_EIER - FM Policer Error Interrupt Enable Register */ + volatile uint32_t fmpl_eifr; /* 0x01C FMPL_EIFR - FM Policer Error Interrupt Force Register */ +/* Global Statistic Counters */ + volatile uint32_t fmpl_rpcnt; /* 0x020 FMPL_RPC - FM Policer RED Packets Counter */ + volatile uint32_t fmpl_ypcnt; /* 0x024 FMPL_YPC - FM Policer YELLOW Packets Counter */ + volatile uint32_t fmpl_rrpcnt; /* 0x028 FMPL_RRPC - FM Policer Recolored RED Packet Counter */ + volatile uint32_t fmpl_rypcnt; /* 0x02C FMPL_RYPC - FM Policer Recolored YELLOW Packet Counter */ + volatile uint32_t fmpl_tpcnt; /* 0x030 FMPL_TPC - FM Policer Total Packet Counter */ + volatile uint32_t fmpl_flmcnt; /* 0x034 FMPL_FLMC - FM Policer Frame Length Mismatch Counter */ + volatile uint32_t fmpl_res0[21]; /* 0x038 - 0x08B Reserved */ +/* Profile RAM Access Registers */ + volatile uint32_t fmpl_par; /* 0x08C FMPL_PAR - FM Policer Profile Action Register*/ + t_FmPcdPlcrInterModuleProfileRegs profileRegs; +/* Error Capture Registers */ + volatile uint32_t fmpl_serc; /* 0x100 FMPL_SERC - FM Policer Soft Error Capture */ + volatile uint32_t fmpl_upcr; /* 0x104 FMPL_UPCR - FM Policer Uninitialized Profile Capture Register */ + volatile uint32_t fmpl_res2; /* 0x108 Reserved */ +/* Debug Registers */ + volatile uint32_t fmpl_res3[61]; /* 0x10C-0x200 Reserved Debug*/ +/* Profile Selection Mapping Registers Per Port-ID (n=1-11, 16) */ + volatile uint32_t fmpl_dpmr; /* 0x200 FMPL_DPMR - FM Policer Default Mapping Register */ + volatile uint32_t fmpl_pmr[63]; /*+default 0x204-0x2FF FMPL_PMR1 - FMPL_PMR63, - FM Policer Profile Mapping Registers. + (for port-ID 1-11, only for supported Port-ID registers) */ +} _PackedType t_FmPcdPlcrRegs; + +typedef _Packed struct { + volatile uint32_t rpclim; + volatile uint32_t rpimac; + volatile uint32_t pmeec; + volatile uint32_t res1[5]; + volatile uint32_t pevr; + volatile uint32_t pever; + volatile uint32_t pevfr; + volatile uint32_t perr; + volatile uint32_t perer; + volatile uint32_t perfr; + volatile uint32_t res2[0xA]; + volatile uint32_t ppsc; + volatile uint32_t res3; + volatile uint32_t pds; + volatile uint32_t l2rrs; + volatile uint32_t l3rrs; + volatile uint32_t l4rrs; + volatile uint32_t srrs; + volatile uint32_t l2rres; + volatile uint32_t l3rres; + volatile uint32_t l4rres; + volatile uint32_t srres; + volatile uint32_t spcs; + volatile uint32_t spscs; + volatile uint32_t hxscs; + volatile uint32_t mrcs; + volatile uint32_t mwcs; + volatile uint32_t mrscs; + volatile uint32_t mwscs; + volatile uint32_t fcscs; +} _PackedType t_FmPcdPrsRegs; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***********************************************************************/ +/* Driver's internal structures */ +/***********************************************************************/ + +typedef struct { + t_Handle h_Manip; + bool keepRes; + e_FmPcdEngine nextEngine; + uint8_t parseCode; +} t_FmPcdInfoForManip; + +/**************************************************************************//** + @Description A structure of parameters to communicate + between the port and PCD regarding the KG scheme. +*//***************************************************************************/ +typedef struct { + uint8_t netEnvId; /* in */ + uint8_t numOfDistinctionUnits; /* in */ + uint8_t unitIds[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; /* in */ + uint32_t vector; /* out */ +} t_NetEnvParams; + +typedef struct { + volatile bool lock; + bool used; + uint8_t owners; + uint8_t netEnvId; + uint8_t guestId; + uint8_t baseEntry; + uint16_t sizeOfGrp; + protocolOpt_t optArray[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; +} t_FmPcdKgClsPlanGrp; + +typedef struct { + volatile bool lock; + bool valid; + uint8_t netEnvId; + uint8_t owners; + uint32_t matchVector; + uint32_t ccUnits; + bool nextRelativePlcrProfile; + uint16_t relativeProfileId; + uint16_t numOfProfiles; + t_FmPcdKgKeyOrder orderedArray; + e_FmPcdEngine nextEngine; + e_FmPcdDoneAction doneAction; + uint8_t pointedOwners; + uint32_t requiredAction; + bool extractedOrs; + uint8_t bitOffsetInPlcrProfile; + bool directPlcr; +} t_FmPcdKgScheme; + +typedef struct { + bool allocated; + uint8_t ownerId; /* guestId for KG in multi-partition only, + portId for PLCR in any environment */ +} t_FmPcdAllocMng; + +typedef struct { + t_FmPcdKgRegs *p_FmPcdKgRegs; + uint32_t schemeExceptionsBitMask; + uint8_t numOfSchemes; + uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES]; + t_FmPcdKgScheme schemes[FM_PCD_KG_NUM_OF_SCHEMES]; + t_FmPcdKgClsPlanGrp clsPlanGrps[FM_MAX_NUM_OF_PORTS]; + uint8_t emptyClsPlanGrpId; + t_FmPcdAllocMng schemesMng[FM_PCD_KG_NUM_OF_SCHEMES]; /* only for MASTER ! */ + t_FmPcdAllocMng clsPlanBlocksMng[FM_PCD_MAX_NUM_OF_CLS_PLANS/CLS_PLAN_NUM_PER_GRP]; +} t_FmPcdKg; + +typedef struct { + uint16_t profilesBase; + uint16_t numOfProfiles; + t_Handle h_FmPort; +} t_FmPcdPlcrMapParam; + +typedef struct { + bool valid; + volatile bool lock; + t_FmPcdAllocMng profilesMng; + uint8_t pointedOwners; + uint32_t requiredAction; + e_FmPcdEngine nextEngineOnGreen; /**< Green next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnGreen; /**< Green next engine params */ + + e_FmPcdEngine nextEngineOnYellow; /**< Yellow next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnYellow; /**< Yellow next engine params */ + + e_FmPcdEngine nextEngineOnRed; /**< Red next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnRed; /**< Red next engine params */ +} t_FmPcdPlcrProfile; + +typedef struct { + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + t_FmPcdPlcrProfile profiles[FM_PCD_PLCR_NUM_ENTRIES]; + uint16_t numOfSharedProfiles; + uint16_t sharedProfilesIds[FM_PCD_PLCR_NUM_ENTRIES]; + t_FmPcdPlcrMapParam portsMapping[FM_MAX_NUM_OF_PORTS]; +} t_FmPcdPlcr; + +typedef struct { + uint32_t *p_SwPrsCode; + uint32_t *p_CurrSwPrs; + uint8_t currLabel; + t_FmPcdPrsRegs *p_FmPcdPrsRegs; + t_FmPcdPrsLabelParams labelsTable[FM_PCD_PRS_NUM_OF_LABELS]; + uint32_t fmPcdPrsPortIdStatistics; +} t_FmPcdPrs; + +typedef struct { + struct { + e_NetHeaderType hdr; + protocolOpt_t opt; /* only one option !! */ + } hdrs[FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS]; +} t_FmPcdIntDistinctionUnit; + +typedef struct { + e_NetHeaderType hdr; + e_NetHeaderType aliasHdr; +} t_FmPcdNetEnvAliases; + +typedef struct { + volatile bool lock; + bool used; + uint8_t owners; + uint8_t clsPlanGrpId; + t_FmPcdIntDistinctionUnit units[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + uint32_t unitsVectors[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + uint32_t lcvs[FM_PCD_PRS_NUM_OF_HDRS]; + uint32_t macsecVector; + t_FmPcdNetEnvAliases aliasHdrs[FM_PCD_MAX_NUM_OF_PRIVATE_HDRS]; +} t_FmPcdNetEnv; + +typedef struct { + bool plcrAutoRefresh; + + uint16_t prsMaxParseCycleLimit; +} t_FmPcdDriverParam; + +typedef struct { + t_Handle h_Fm; + t_Handle h_FmMuram; + uint64_t physicalMuramBase; + volatile bool lock; + t_Handle h_Spinlock; + t_Handle h_IpcSession; /* relevant for guest only */ + bool enabled; + uint8_t guestId; /**< Guest Partition Id */ + uint8_t numOfEnabledGuestPartitionsPcds; + char fmPcdModuleName[MODULE_NAME_SIZE]; + char fmPcdIpcHandlerModuleName[MODULE_NAME_SIZE]; /* relevant for guest only - this is the master's name */ + t_FmPcdNetEnv netEnvs[FM_MAX_NUM_OF_PORTS]; + t_FmPcdKg *p_FmPcdKg; + t_FmPcdPlcr *p_FmPcdPlcr; + t_FmPcdPrs *p_FmPcdPrs; + + t_Handle h_Hc; + + uint32_t exceptions; + t_FmPcdExceptionCallback *f_Exception; + t_FmPcdIdExceptionCallback *f_FmPcdIndexedException; + t_Handle h_App; + + t_FmPcdDriverParam *p_FmPcdDriverParam; +} t_FmPcd; + + +/***********************************************************************/ +/* PCD internal routines */ +/***********************************************************************/ + +/**************************************************************************//** + + @Group FM_PCD_InterModule_grp FM PCD Inter-Module Unit + + @Description FM PCD Inter Module functions - + These are not User API routines but routines that may be called + from other modules. This will be the case in a single core environment, + where instead of useing the XX messeging mechanism, the routines may be + called from other modules. In a multicore environment, the other modules may + be run by other cores and therefor these routines may not be called directly. + + @{ +*//***************************************************************************/ + +t_Error PcdGetVectorForOpt(t_FmPcd *p_FmPcd, uint8_t netEnvId, protocolOpt_t opt, uint32_t *p_Vector); +t_Error PcdGetUnitsVector(t_FmPcd *p_FmPcd, t_NetEnvParams *p_Params); +bool PcdNetEnvIsUnitWithoutOpts(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint32_t unitVector); +t_Error PcdGetClsPlanGrpParams(t_FmPcd *p_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_GrpParams); +void FmPcdSetClsPlanGrpId(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint8_t clsPlanGrpId); +e_NetHeaderType FmPcdGetAliasHdr(t_FmPcd *p_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr); +uint8_t FmPcdNetEnvGetUnitIdForSingleHdr(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr); + +t_Handle KgConfig( t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams); +t_Error KgInit(t_FmPcd *p_FmPcd); +t_Error KgFree(t_FmPcd *p_FmPcd); +void KgSetClsPlan(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanSet *p_Set); +bool KgIsSchemeAlwaysDirect(t_Handle h_FmPcd, uint8_t schemeId); +void KgEnable(t_FmPcd *p_FmPcd); +void KgDisable(t_FmPcd *p_FmPcd); +t_Error KgAllocClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t *p_First); +void KgFreeClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t base); + +/* only for MULTI partittion */ +t_Error FmPcdKgAllocSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds); +t_Error FmPcdKgFreeSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds); +/* only for SINGLE partittion */ +t_Error KgBindPortToSchemes(t_Handle h_FmPcd , uint8_t hardwarePortId, uint32_t spReg); + +t_Handle PlcrConfig(t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams); +t_Error PlcrInit(t_FmPcd *p_FmPcd); +t_Error PlcrFree(t_FmPcd *p_FmPcd); +void PlcrEnable(t_FmPcd *p_FmPcd); +void PlcrDisable(t_FmPcd *p_FmPcd); +t_Error PlcrFreeProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t num, uint16_t base); +t_Error PlcrAllocProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles, uint16_t *p_Base); +t_Error PlcrAllocSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds); +void PlcrFreeSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds); + +t_Handle PrsConfig(t_FmPcd *p_FmPcd,t_FmPcdParams *p_FmPcdParams); +t_Error PrsInit(t_FmPcd *p_FmPcd); +void PrsEnable(t_FmPcd *p_FmPcd); +void PrsDisable(t_FmPcd *p_FmPcd); +void PrsFree(t_FmPcd *p_FmPcd ); +t_Error PrsIncludePortInStatistics(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, bool include); + +t_Handle FmPcdCcConfig(t_Handle h_FmPcd, t_FmPcdParams *p_FmPcdParams); +t_Error FmPcdCcGetGrpParams(t_Handle treeId, uint8_t grpId, uint32_t *p_GrpBits, uint8_t *p_GrpBase); +uint8_t FmPcdCcGetOffset(t_Handle h_CcNode); +uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode); +uint16_t FmPcdCcGetNumOfKeys(t_Handle h_CcNode); + +void FmPcdManipUpdateOwner(t_Handle h_Manip, bool add); +t_Error FmPcdManipCheckParamsForCcNextEgine(t_FmPcdCcNextEngineParams *p_InfoForManip, uint32_t *requiredAction); +void FmPcdManipUpdateAdResultForCc(t_Handle h_Manip, t_Handle p_Ad, t_Handle *p_AdNew); +void FmPcdManipUpdateAdContLookupForCc(t_Handle h_Manip, t_Handle p_Ad, t_Handle *p_AdNew, uint32_t adTableOffset); +uint32_t FmPcdManipCheckNia(t_Handle h_FmPcd, t_Handle h_Ad); +void FmPcdManipUpdateOwner(t_Handle h_Manip, bool add); +t_Error FmPcdManipCheckParamsWithCcNodeParams(t_Handle h_Manip, t_Handle h_FmPcdCcNode); + +static __inline__ t_Handle FmPcdGetMuramHandle(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + ASSERT_COND(p_FmPcd); + return p_FmPcd->h_FmMuram; +} + +static __inline__ uint64_t FmPcdGetMuramPhysBase(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + ASSERT_COND(p_FmPcd); + return p_FmPcd->physicalMuramBase; +} + + +#endif /* __FM_PCD_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd.c @@ -0,0 +1,1693 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_pcd.c + + @Description FM PCD ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "xx_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "net_ext.h" +#include "fm_ext.h" +#include "fm_pcd_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_pcd_ipc.h" +#include "fm_hc.h" + + +static t_Error CheckFmPcdParameters(t_FmPcd *p_FmPcd) +{ + if(!p_FmPcd->h_Fm) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("h_Fm has to be initialized")); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + if(p_FmPcd->p_FmPcdKg && !p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something WRONG")); + + if(p_FmPcd->p_FmPcdPlcr && !p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Something WRONG")); + + if(!p_FmPcd->f_Exception) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("f_FmPcdExceptions has to be initialized")); + + if((!p_FmPcd->f_FmPcdIndexedException) && (p_FmPcd->p_FmPcdPlcr || p_FmPcd->p_FmPcdKg)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("f_FmPcdIndexedException has to be initialized")); + + if(p_FmPcd->p_FmPcdDriverParam->prsMaxParseCycleLimit > PRS_MAX_CYCLE_LIMIT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("prsMaxParseCycleLimit has to be less than 8191")); + } + + return E_OK; +} + +static volatile bool blockingFlag = FALSE; +static void FmPcdIpcMsgCompletionCB(t_Handle h_FmPcd, + uint8_t *p_Msg, + uint8_t *p_Reply, + uint32_t replyLength, + t_Error status) +{ + UNUSED(h_FmPcd);UNUSED(p_Msg);UNUSED(p_Reply);UNUSED(replyLength);UNUSED(status); + blockingFlag = FALSE; +} + +static t_Error FmPcdHandleIpcMsgCB(t_Handle h_FmPcd, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcMsg *p_IpcMsg = (t_FmPcdIpcMsg*)p_Msg; + t_FmPcdIpcReply *p_IpcReply = (t_FmPcdIpcReply*)p_Reply; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((msgLength >= sizeof(uint32_t)), E_INVALID_VALUE); + +#ifdef DISABLE_SANITY_CHECKS + UNUSED(msgLength); +#endif /* DISABLE_SANITY_CHECKS */ + + ASSERT_COND(p_Msg); + + memset(p_IpcReply, 0, (sizeof(uint8_t) * FM_PCD_MAX_REPLY_SIZE)); + *p_ReplyLength = 0; + + switch(p_IpcMsg->msgId) + { + case (FM_PCD_MASTER_IS_ALIVE): + *(uint8_t*)(p_IpcReply->replyBody) = 1; + p_IpcReply->error = E_OK; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + case (FM_PCD_MASTER_IS_ENABLED): + /* count partitions registrations */ + if(p_FmPcd->enabled) + p_FmPcd->numOfEnabledGuestPartitionsPcds++; + *(uint8_t*)(p_IpcReply->replyBody) = (uint8_t)p_FmPcd->enabled; + p_IpcReply->error = E_OK; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + case (FM_PCD_GUEST_DISABLE): + if(p_FmPcd->numOfEnabledGuestPartitionsPcds) + { + p_FmPcd->numOfEnabledGuestPartitionsPcds--; + p_IpcReply->error = E_OK; + } + else + { + REPORT_ERROR(MINOR, E_INVALID_STATE,("Trying to disable an unregistered partition")); + p_IpcReply->error = E_INVALID_STATE; + } + *p_ReplyLength = sizeof(uint32_t); + break; + case(FM_PCD_GET_COUNTER): + { + e_FmPcdCounters inCounter; + uint32_t outCounter; + + memcpy((uint8_t*)&inCounter, p_IpcMsg->msgBody, sizeof(uint32_t)); + outCounter = FM_PCD_GetCounter(h_FmPcd, inCounter); + memcpy(p_IpcReply->replyBody, (uint8_t*)&outCounter, sizeof(uint32_t)); + p_IpcReply->error = E_OK; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_KG_SCHEMES): + { + t_FmPcdIpcKgSchemesParams ipcSchemesParams; + + memcpy((uint8_t*)&ipcSchemesParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgSchemesParams)); + err = FmPcdKgAllocSchemes(h_FmPcd, + ipcSchemesParams.numOfSchemes, + ipcSchemesParams.guestId, + p_IpcReply->replyBody); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t) + ipcSchemesParams.numOfSchemes*sizeof(uint8_t); + break; + } + case (FM_PCD_FREE_KG_SCHEMES): + { + t_FmPcdIpcKgSchemesParams ipcSchemesParams; + + memcpy((uint8_t*)&ipcSchemesParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgSchemesParams)); + err = FmPcdKgFreeSchemes(h_FmPcd, + ipcSchemesParams.numOfSchemes, + ipcSchemesParams.guestId, + ipcSchemesParams.schemesIds); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_KG_CLSPLAN): + { + t_FmPcdIpcKgClsPlanParams ipcKgClsPlanParams; + + memcpy((uint8_t*)&ipcKgClsPlanParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgClsPlanParams)); + err = KgAllocClsPlanEntries(h_FmPcd, + ipcKgClsPlanParams.numOfClsPlanEntries, + ipcKgClsPlanParams.guestId, + p_IpcReply->replyBody); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint8_t); + break; + } + case (FM_PCD_FREE_KG_CLSPLAN): + { + t_FmPcdIpcKgClsPlanParams ipcKgClsPlanParams; + + memcpy((uint8_t*)&ipcKgClsPlanParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcKgClsPlanParams)); + KgFreeClsPlanEntries(h_FmPcd, + ipcKgClsPlanParams.numOfClsPlanEntries, + ipcKgClsPlanParams.guestId, + ipcKgClsPlanParams.clsPlanBase); + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_PROFILES): + { + t_FmPcdIpcPlcrAllocParams ipcPlcrAllocParams; + uint16_t profilesBase; + + memcpy((uint8_t*)&ipcPlcrAllocParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcPlcrAllocParams)); + err = PlcrAllocProfiles(h_FmPcd, + ipcPlcrAllocParams.hardwarePortId, + ipcPlcrAllocParams.num, + &profilesBase); + memcpy(p_IpcReply->replyBody, (uint8_t*)&profilesBase, sizeof(uint16_t)); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint16_t); + break; + } + case (FM_PCD_FREE_PROFILES): + { + t_FmPcdIpcPlcrAllocParams ipcPlcrAllocParams; + + memcpy((uint8_t*)&ipcPlcrAllocParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcPlcrAllocParams)); + err = PlcrFreeProfiles(h_FmPcd, + ipcPlcrAllocParams.hardwarePortId, + ipcPlcrAllocParams.num, + ipcPlcrAllocParams.plcrProfilesBase); + p_IpcReply->error = err; + *p_ReplyLength = sizeof(uint32_t); + break; + } + case (FM_PCD_ALLOC_SHARED_PROFILES): + { + uint16_t numOfProfiles; + uint16_t profilesIds[FM_PCD_PLCR_NUM_ENTRIES]; + uint32_t profilesMask[FM_PCD_PLCR_NUM_ENTRIES/32]; + int i; + + memset(profilesMask, 0, FM_PCD_PLCR_NUM_ENTRIES/32 * sizeof(uint32_t)); + memcpy((uint8_t*)&numOfProfiles, p_IpcMsg->msgBody, sizeof(uint16_t)); + err = PlcrAllocSharedProfiles(h_FmPcd, + numOfProfiles, + profilesIds); + p_IpcReply->error = err; + + /* translate the allocated profile id's to a 32bit * 8regs mask */ + for(i = 0;i> (profilesIds[i] % 32)); + + memcpy(p_IpcReply->replyBody, (uint8_t*)&profilesMask, sizeof(profilesMask)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(profilesMask); /* num-of-shared-profiles */ + break; + } + case (FM_PCD_FREE_SHARED_PROFILES): + { + t_FmPcdIpcSharedPlcrAllocParams ipcSharedPlcrAllocParams; + uint16_t profilesIds[FM_PCD_PLCR_NUM_ENTRIES]; + int i,j, index = 0; + uint32_t walking1Mask = 0x80000000; + + memset(profilesIds, 0, FM_PCD_PLCR_NUM_ENTRIES*sizeof(uint16_t)); + memcpy((uint8_t*)&ipcSharedPlcrAllocParams, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcSharedPlcrAllocParams)); + for(i = 0; i>= 1; + } + walking1Mask = 0x80000000; + } + } + + PlcrFreeSharedProfiles(h_FmPcd, + ipcSharedPlcrAllocParams.num, + profilesIds); + break; + } + case(FM_PCD_GET_SW_PRS_OFFSET): + { + t_FmPcdIpcSwPrsLable ipcSwPrsLable; + uint32_t swPrsOffset; + + memcpy((uint8_t*)&ipcSwPrsLable, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcSwPrsLable)); + swPrsOffset = + FmPcdGetSwPrsOffset(h_FmPcd, + (e_NetHeaderType)ipcSwPrsLable.enumHdr, + ipcSwPrsLable.indexPerHdr); + memcpy(p_IpcReply->replyBody, (uint8_t*)&swPrsOffset, sizeof(uint32_t)); + *p_ReplyLength = sizeof(uint32_t) + sizeof(uint32_t); + break; + } + case(FM_PCD_PRS_INC_PORT_STATS): + { + t_FmPcdIpcPrsIncludePort ipcPrsIncludePort; + + memcpy((uint8_t*)&ipcPrsIncludePort, p_IpcMsg->msgBody, sizeof(t_FmPcdIpcPrsIncludePort)); + PrsIncludePortInStatistics(h_FmPcd, + ipcPrsIncludePort.hardwarePortId, + ipcPrsIncludePort.include); + break; + } +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + case(FM_PCD_DUMP_REGS): + if((err = FM_PCD_DumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + case(FM_PCD_KG_DUMP_REGS): + if((err = FM_PCD_KgDumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + case(FM_PCD_PLCR_DUMP_REGS): + if((err = FM_PCD_PlcrDumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + case(FM_PCD_PLCR_PROFILE_DUMP_REGS): + { + t_Handle h_Profile; + memcpy((uint8_t*)&h_Profile, p_IpcMsg->msgBody, sizeof(t_Handle)); + if((err = FM_PCD_PlcrProfileDumpRegs(h_FmPcd, h_Profile)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; + + } + case(FM_PCD_PRS_DUMP_REGS): + if((err = FM_PCD_PrsDumpRegs(h_FmPcd)) != E_OK) + REPORT_ERROR(MINOR, err, NO_MSG); + break; +#endif /* (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) */ + default: + *p_ReplyLength = 0; + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("command not found!!!")); + } + return E_OK; +} + +void FmPcdSetClsPlanGrpId(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint8_t clsPlanGrpId) +{ + p_FmPcd->netEnvs[netEnvId].clsPlanGrpId = clsPlanGrpId; +} + +t_Error PcdGetClsPlanGrpParams(t_FmPcd *p_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_GrpParams) +{ + uint8_t netEnvId = p_GrpParams->netEnvId; + int i, k, j; + + if(p_FmPcd->netEnvs[netEnvId].clsPlanGrpId != ILLEGAL_CLS_PLAN) + { + p_GrpParams->grpExists = TRUE; + p_GrpParams->clsPlanGrpId = p_FmPcd->netEnvs[netEnvId].clsPlanGrpId; + return E_OK; + } + + for (i=0; ((i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE)); i++) + { + for (k=0; ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE)); k++) + { + /* if an option exists, add it to the opts list */ + if(p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt) + { + /* check if this option already exists, add if it doesn't */ + for(j = 0;jnumOfOptions;j++) + { + if(p_GrpParams->options[j] == p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt) + break; + } + p_GrpParams->optVectors[j] |= p_FmPcd->netEnvs[netEnvId].unitsVectors[i]; + if(j == p_GrpParams->numOfOptions) + { + p_GrpParams->options[p_GrpParams->numOfOptions] = p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt; + p_GrpParams->numOfOptions++; + } + } + } + } + + if(p_GrpParams->numOfOptions == 0) + { + if(p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId != ILLEGAL_CLS_PLAN) + { + p_GrpParams->grpExists = TRUE; + p_GrpParams->clsPlanGrpId = p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId; + } + } + + return E_OK; + +} + +t_Error PcdGetVectorForOpt(t_FmPcd *p_FmPcd, uint8_t netEnvId, protocolOpt_t opt, uint32_t *p_Vector) +{ + uint8_t j,k; + + *p_Vector = 0; + + for (j=0; ((j < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) && + (p_FmPcd->netEnvs[netEnvId].units[j].hdrs[0].hdr != HEADER_TYPE_NONE)); j++) + { + for (k=0; ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[j].hdrs[k].hdr != HEADER_TYPE_NONE)); k++) + { + if (p_FmPcd->netEnvs[netEnvId].units[j].hdrs[k].opt == opt) + *p_Vector |= p_FmPcd->netEnvs[netEnvId].unitsVectors[j]; + } + } + + if (!*p_Vector) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Requested option was not defined for this Network Environment Characteristics module")); + else + return E_OK; +} + +t_Error PcdGetUnitsVector(t_FmPcd *p_FmPcd, t_NetEnvParams *p_Params) +{ + int i; + + p_Params->vector = 0; + for(i=0; inumOfDistinctionUnits ;i++) + { + if(p_FmPcd->netEnvs[p_Params->netEnvId].units[p_Params->unitIds[i]].hdrs[0].hdr == HEADER_TYPE_NONE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Requested unit was not defined for this Network Environment Characteristics module")); + ASSERT_COND(p_FmPcd->netEnvs[p_Params->netEnvId].unitsVectors[p_Params->unitIds[i]]); + p_Params->vector |= p_FmPcd->netEnvs[p_Params->netEnvId].unitsVectors[p_Params->unitIds[i]]; + } + + return E_OK; +} + +bool PcdNetEnvIsUnitWithoutOpts(t_FmPcd *p_FmPcd, uint8_t netEnvId, uint32_t unitVector) +{ + int i=0, k; + /* check whether a given unit may be used by non-clsPlan users. */ + /* first, recognize the unit by its vector */ + while (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE) + { + if (p_FmPcd->netEnvs[netEnvId].unitsVectors[i] == unitVector) + { + for (k=0; + ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE)); + k++) + /* check that no option exists */ + if((protocolOpt_t)p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].opt) + return FALSE; + break; + } + i++; + } + /* assert that a unit was found to mach the vector */ + ASSERT_COND(p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); + + return TRUE; +} +bool FmPcdNetEnvIsHdrExist(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i, k; + + ASSERT_COND(p_FmPcd); + + for (i=0; ((i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE)); i++) + { + for (k=0; ((k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE)); k++) + if (p_FmPcd->netEnvs[netEnvId].units[i].hdrs[k].hdr == hdr) + return TRUE; + } + for (i=0; ((i < FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) && + (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr != HEADER_TYPE_NONE)); i++) + { + if (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr == hdr) + return TRUE; + } + + return FALSE; +} + +e_NetHeaderType FmPcdGetAliasHdr(t_FmPcd *p_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr) +{ + int i; + + ASSERT_COND(p_FmPcd); + + for (i=0; (i < FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) + && (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr != HEADER_TYPE_NONE); i++) + { + if (p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].hdr == hdr) + return p_FmPcd->netEnvs[netEnvId].aliasHdrs[i].aliasHdr; + } + + return HEADER_TYPE_NONE; +} + +void FmPcdPortRegister(t_Handle h_FmPcd, t_Handle h_FmPort, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t swPortIndex = 0; + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].h_FmPort = h_FmPort; +} + +uint32_t FmPcdGetLcv(t_Handle h_FmPcd, uint32_t netEnvId, uint8_t hdrNum) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->netEnvs[netEnvId].lcvs[hdrNum]; +} + +uint32_t FmPcdGetMacsecLcv(t_Handle h_FmPcd, uint32_t netEnvId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->netEnvs[netEnvId].macsecVector; +} + +void FmPcdIncNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId) +{ + ((t_FmPcd*)h_FmPcd)->netEnvs[netEnvId].owners++; +} + +void FmPcdDecNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId) +{ + ASSERT_COND(((t_FmPcd*)h_FmPcd)->netEnvs[netEnvId].owners); + ((t_FmPcd*)h_FmPcd)->netEnvs[netEnvId].owners--; +} + +uint32_t FmPcdLock(t_Handle h_FmPcd) +{ + return XX_LockIntrSpinlock(((t_FmPcd*)h_FmPcd)->h_Spinlock); +} + +void FmPcdUnlock(t_Handle h_FmPcd, uint32_t intFlags) +{ + XX_UnlockIntrSpinlock(((t_FmPcd*)h_FmPcd)->h_Spinlock, intFlags); +} + +t_Handle FmPcdGetHcHandle(t_Handle h_FmPcd) +{ + ASSERT_COND(h_FmPcd); + SANITY_CHECK_RETURN_VALUE(((t_FmPcd*)h_FmPcd)->h_Hc, E_INVALID_HANDLE, NULL); + return ((t_FmPcd*)h_FmPcd)->h_Hc; +} + +/**********************************************************************************************************/ +/* API */ +/**********************************************************************************************************/ + +t_Handle FM_PCD_Config(t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcd *p_FmPcd = NULL; + t_FmPhysAddr physicalMuramBase; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmPcdParams, E_INVALID_HANDLE,NULL); + + p_FmPcd = (t_FmPcd *) XX_Malloc(sizeof(t_FmPcd)); + if (!p_FmPcd) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd")); + return NULL; + } + memset(p_FmPcd, 0, sizeof(t_FmPcd)); + + p_FmPcd->p_FmPcdDriverParam = (t_FmPcdDriverParam *) XX_Malloc(sizeof(t_FmPcdDriverParam)); + if (!p_FmPcd->p_FmPcdDriverParam) + { + XX_Free(p_FmPcd); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Driver Param")); + return NULL; + } + memset(p_FmPcd->p_FmPcdDriverParam, 0, sizeof(t_FmPcdDriverParam)); + + p_FmPcd->h_Fm = p_FmPcdParams->h_Fm; + p_FmPcd->guestId = FmGetGuestId(p_FmPcd->h_Fm); + p_FmPcd->h_FmMuram = FmGetMuramHandle(p_FmPcd->h_Fm); + FmGetPhysicalMuramBase(p_FmPcdParams->h_Fm, &physicalMuramBase); + p_FmPcd->physicalMuramBase = (uint64_t)((uint64_t)(&physicalMuramBase)->low | ((uint64_t)(&physicalMuramBase)->high << 32)); + + for(i = 0; inetEnvs[i].clsPlanGrpId = ILLEGAL_CLS_PLAN; + + if (p_FmPcdParams->useHostCommand) + { + t_FmHcParams hcParams; + + memset(&hcParams, 0, sizeof(hcParams)); + hcParams.h_Fm = p_FmPcd->h_Fm; + hcParams.h_FmPcd = (t_Handle)p_FmPcd; + memcpy((uint8_t*)&hcParams.params, (uint8_t*)&p_FmPcdParams->hc, sizeof(t_FmPcdHcParams)); + p_FmPcd->h_Hc = FmHcConfigAndInit(&hcParams); + if (!p_FmPcd->h_Hc) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd HC")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + else if(p_FmPcd->guestId != NCSW_MASTER_ID) + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("No Host Command defined for a guest partition.")); + + if(p_FmPcdParams->kgSupport) + { + p_FmPcd->p_FmPcdKg = (t_FmPcdKg *)KgConfig(p_FmPcd, p_FmPcdParams); + if(!p_FmPcd->p_FmPcdKg) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Keygen")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + + if(p_FmPcdParams->plcrSupport) + { + p_FmPcd->p_FmPcdPlcr = (t_FmPcdPlcr *)PlcrConfig(p_FmPcd, p_FmPcdParams); + if(!p_FmPcd->p_FmPcdPlcr) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Policer")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + + if(p_FmPcdParams->prsSupport) + { + p_FmPcd->p_FmPcdPrs = (t_FmPcdPrs *)PrsConfig(p_FmPcd, p_FmPcdParams); + if(!p_FmPcd->p_FmPcdPrs) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd Parser")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + } + + p_FmPcd->h_Spinlock = XX_InitSpinlock(); + if (!p_FmPcd->h_Spinlock) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Pcd spinlock")); + FM_PCD_Free(p_FmPcd); + return NULL; + } + + p_FmPcd->numOfEnabledGuestPartitionsPcds = 0; + + p_FmPcd->f_Exception = p_FmPcdParams->f_Exception; + p_FmPcd->f_FmPcdIndexedException = p_FmPcdParams->f_ExceptionId; + p_FmPcd->h_App = p_FmPcdParams->h_App; + + return p_FmPcd; +} + +t_Error FM_PCD_Init(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + uint8_t isMasterAlive = 0; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + memset(p_FmPcd->fmPcdIpcHandlerModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPcd->fmPcdIpcHandlerModuleName, "FM_PCD_%d_%d", FmGetId(p_FmPcd->h_Fm), NCSW_MASTER_ID) != 10) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + memset(p_FmPcd->fmPcdModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPcd->fmPcdModuleName, "FM_PCD_%d_%d",FmGetId(p_FmPcd->h_Fm), p_FmPcd->guestId) != (p_FmPcd->guestId<10 ? 10:11)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + + p_FmPcd->h_IpcSession = XX_IpcInitSession(p_FmPcd->fmPcdIpcHandlerModuleName, p_FmPcd->fmPcdModuleName); + if (p_FmPcd->h_IpcSession == NULL) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("FM PCD Guest %d IPC session", p_FmPcd->guestId)); + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_PCD_MASTER_IS_ALIVE; + msg.msgBody[0] = p_FmPcd->guestId; + blockingFlag = TRUE; + + do + { + replyLength = sizeof(uint32_t) + sizeof(isMasterAlive); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(p_FmPcd->guestId), + (uint8_t*)&reply, + &replyLength, + FmPcdIpcMsgCompletionCB, + h_FmPcd)) != E_OK) + REPORT_ERROR(MAJOR, err, NO_MSG); + while(blockingFlag) ; + if(replyLength != (sizeof(uint32_t) + sizeof(isMasterAlive))) + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + isMasterAlive = *(uint8_t*)(reply.replyBody); + } while (!isMasterAlive); + } + + CHECK_INIT_PARAMETERS(p_FmPcd, CheckFmPcdParameters); + + if(p_FmPcd->p_FmPcdKg) + { + err = KgInit(p_FmPcd); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPcd->p_FmPcdPlcr) + { + err = PlcrInit(p_FmPcd); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPcd->p_FmPcdPrs) + { + err = PrsInit(p_FmPcd); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + /* register to inter-core messaging mechanism */ + memset(p_FmPcd->fmPcdModuleName, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPcd->fmPcdModuleName, "FM_PCD_%d_%d",FmGetId(p_FmPcd->h_Fm),NCSW_MASTER_ID) != 10) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + err = XX_IpcRegisterMsgHandler(p_FmPcd->fmPcdModuleName, FmPcdHandleIpcMsgCB, p_FmPcd, FM_PCD_MAX_REPLY_SIZE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + XX_Free(p_FmPcd->p_FmPcdDriverParam); + p_FmPcd->p_FmPcdDriverParam = NULL; + + FmRegisterPcd(p_FmPcd->h_Fm, p_FmPcd); + + return E_OK; +} + +t_Error FM_PCD_Free(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd =(t_FmPcd *)h_FmPcd; + t_Error err = E_OK; + + if(p_FmPcd->enabled) + FM_PCD_Disable(p_FmPcd); + + if (p_FmPcd->h_Spinlock) + XX_FreeSpinlock(p_FmPcd->h_Spinlock); + + if(p_FmPcd->p_FmPcdDriverParam) + { + XX_Free(p_FmPcd->p_FmPcdDriverParam); + p_FmPcd->p_FmPcdDriverParam = NULL; + } + if(p_FmPcd->p_FmPcdKg) + { + if((err = KgFree(p_FmPcd)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + XX_Free(p_FmPcd->p_FmPcdKg); + p_FmPcd->p_FmPcdKg = NULL; + } + + if(p_FmPcd->p_FmPcdPlcr) + { + if((err = PlcrFree(p_FmPcd)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + XX_Free(p_FmPcd->p_FmPcdPlcr); + p_FmPcd->p_FmPcdPlcr = NULL; + } + + if(p_FmPcd->p_FmPcdPrs) + { + if(p_FmPcd->guestId == NCSW_MASTER_ID) + PrsFree(p_FmPcd); + XX_Free(p_FmPcd->p_FmPcdPrs); + p_FmPcd->p_FmPcdPrs = NULL; + } + + if (p_FmPcd->h_Hc) + { + FmHcFree(p_FmPcd->h_Hc); + p_FmPcd->h_Hc = NULL; + } + + XX_IpcUnregisterMsgHandler(p_FmPcd->fmPcdModuleName); + + FmUnregisterPcd(p_FmPcd->h_Fm); + + XX_Free(p_FmPcd); + return E_OK; +} + +t_Error FM_PCD_Enable(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + if(p_FmPcd->p_FmPcdKg) + KgEnable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPlcr) + PlcrEnable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPrs) + PrsEnable(p_FmPcd); + + p_FmPcd->enabled = TRUE; + } + else + { + uint8_t enabled; + t_FmPcdIpcMsg msg; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_PCD_MASTER_IS_ENABLED; + replyLength = sizeof(uint32_t) + sizeof(enabled); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t) + sizeof(enabled)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + p_FmPcd->enabled = (bool)!!(*(uint8_t*)(reply.replyBody)); + if (!p_FmPcd->enabled) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-PCD master should be enabled first!")); + } + + return E_OK; +} + +t_Error FM_PCD_Disable(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + if(p_FmPcd->numOfEnabledGuestPartitionsPcds != 0) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Trying to disable a master partition PCD while guest partitions are still enabled.")); + + if(p_FmPcd->p_FmPcdKg) + KgDisable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPlcr) + PlcrDisable(p_FmPcd); + + if(p_FmPcd->p_FmPcdPrs) + PrsDisable(p_FmPcd); + + p_FmPcd->enabled = FALSE; + + return E_OK; + } + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_GUEST_DISABLE; + memset(&reply, 0, sizeof(reply)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + return (t_Error)(reply.error); +} + +t_Handle FM_PCD_SetNetEnvCharacteristics(t_Handle h_FmPcd, t_FmPcdNetEnvParams *p_NetEnvParams) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags, specialUnits = 0; + uint8_t bitId = 0; + uint8_t i, j, k; + uint8_t netEnvCurrId; + uint8_t ipsecAhUnit = 0,ipsecEspUnit = 0; + bool ipsecAhExists = FALSE, ipsecEspExists = FALSE, shim1Selected = FALSE; + uint8_t hdrNum; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_STATE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL); + + intFlags = FmPcdLock(p_FmPcd); + + /* find a new netEnv */ + for(i = 0;inetEnvs[i].used) + break; + + if(i== FM_MAX_NUM_OF_PORTS) + { + REPORT_ERROR(MAJOR, E_FULL,("No more than %d netEnv's allowed.", FM_MAX_NUM_OF_PORTS)); + FmPcdUnlock(p_FmPcd, intFlags); + return NULL; + } + + p_FmPcd->netEnvs[i].used = TRUE; + + if (!TRY_LOCK(NULL, &p_FmPcd->netEnvs[i].lock)) + { + FmPcdUnlock(p_FmPcd, intFlags); + return NULL; + } + FmPcdUnlock(p_FmPcd, intFlags); + + netEnvCurrId = (uint8_t)i; + + /* clear from previous use */ + memset(&p_FmPcd->netEnvs[netEnvCurrId].units, 0, FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS * sizeof(t_FmPcdIntDistinctionUnit)); + memset(&p_FmPcd->netEnvs[netEnvCurrId].aliasHdrs, 0, FM_PCD_MAX_NUM_OF_PRIVATE_HDRS * sizeof(t_FmPcdNetEnvAliases)); + memcpy(&p_FmPcd->netEnvs[netEnvCurrId].units, p_NetEnvParams->units, p_NetEnvParams->numOfDistinctionUnits*sizeof(t_FmPcdIntDistinctionUnit)); + p_FmPcd->netEnvs[netEnvCurrId].clsPlanGrpId = ILLEGAL_CLS_PLAN; + + /* check that header with opt is not interchanged with the same header */ + for (i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + for (k=0; (k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE); k++) + { + /* if an option exists, check that other headers are not the same header + without option */ + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].opt) + { + for (j=0; (j < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[j].hdr != HEADER_TYPE_NONE); j++) + if((p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[j].hdr == p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr) && + !p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[j].opt) + { + REPORT_ERROR(MINOR, E_FULL, ("Illegal unit - header with opt may not be interchangeable with the same header without opt")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + } + } + } + + /* IPSEC_AH and IPSEC_SPI can't be 2 units, */ + /* check that header with opt is not interchanged with the same header */ + for(i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + for(k=0; (k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE); k++) + { + /* Some headers pairs may not be defined on different units as the parser + doesn't distinguish */ + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr == HEADER_TYPE_IPSEC_AH) + { + if (ipsecEspExists && (ipsecEspUnit != i)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("HEADER_TYPE_IPSEC_AH and HEADER_TYPE_IPSEC_ESP may not be defined in separate units")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + else + { + ipsecAhUnit = i; + ipsecAhExists = TRUE; + } + } + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr == HEADER_TYPE_IPSEC_ESP) + { + if (ipsecAhExists && (ipsecAhUnit != i)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("HEADER_TYPE_IPSEC_AH and HEADER_TYPE_IPSEC_ESP may not be defined in separate units")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + else + { + ipsecEspUnit = i; + ipsecEspExists = TRUE; + } + } + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr == HEADER_TYPE_UDP_ENCAP_ESP) + { + /* TODO - general coding. choose the free shim header */ + p_FmPcd->netEnvs[netEnvCurrId].aliasHdrs[specialUnits].hdr = HEADER_TYPE_UDP_ENCAP_ESP; + p_FmPcd->netEnvs[netEnvCurrId].aliasHdrs[specialUnits++].aliasHdr = HEADER_TYPE_USER_DEFINED_SHIM1; + p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr = HEADER_TYPE_USER_DEFINED_SHIM1; + p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].opt = 0; + } + } + } + + /* if private header (shim), check that no other headers specified */ + for (i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + if(IS_PRIVATE_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + if(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[1].hdr != HEADER_TYPE_NONE) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("SHIM header may not be interchanged with other headers")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + } + + for(i=0; inumOfDistinctionUnits;i++) + { + if (IS_PRIVATE_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + switch(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr) + { + case(HEADER_TYPE_USER_DEFINED_SHIM1): + if (shim1Selected) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("SHIM header cannot be selected with UDP_IPSEC_ESP")); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + shim1Selected = TRUE; + p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i] = 0x00000001; + break; + case(HEADER_TYPE_USER_DEFINED_SHIM2): + p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i] = 0x00000002; + break; + default: + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Requested SHIM not supported")); + } + else + { + p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i] = (uint32_t)(0x80000000 >> bitId++); + + if(IS_SPECIAL_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + p_FmPcd->netEnvs[netEnvCurrId].macsecVector = p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i]; + } + } + + /* define a set of hardware parser LCV's according to the defined netenv */ + + /* set an array of LCV's for each header in the netEnv */ + for (i=0; (i < FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr != HEADER_TYPE_NONE); i++) + { + /* private headers have no LCV in the hard parser */ + if (!IS_PRIVATE_HEADER(p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[0].hdr)) + { + for (k=0; (k < FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) + && (p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr != HEADER_TYPE_NONE); k++) + { + GET_PRS_HDR_NUM(hdrNum, p_FmPcd->netEnvs[netEnvCurrId].units[i].hdrs[k].hdr); + if ((hdrNum == ILLEGAL_HDR_NUM) || (hdrNum == NO_HDR_NUM)) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + return NULL; + } + p_FmPcd->netEnvs[netEnvCurrId].lcvs[hdrNum] |= p_FmPcd->netEnvs[netEnvCurrId].unitsVectors[i]; + } + } + } + + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvCurrId].lock); + + return UINT_TO_PTR((uint64_t)netEnvCurrId+1); +} + +t_Error FM_PCD_DeleteNetEnvCharacteristics(t_Handle h_FmPcd, t_Handle h_NetEnv) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t netEnvId = (uint8_t)(PTR_TO_UINT(h_NetEnv)-1); + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if (!TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->netEnvs[netEnvId].lock)) + return ERROR_CODE(E_BUSY); + /* check that no port is bound to this netEnv */ + if(p_FmPcd->netEnvs[netEnvId].owners) + { + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvId].lock); + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete a netEnv that has ports/schemes/trees/clsPlanGrps bound to")); + } + p_FmPcd->netEnvs[netEnvId].used= FALSE; + p_FmPcd->netEnvs[netEnvId].clsPlanGrpId = ILLEGAL_CLS_PLAN; + + memset(p_FmPcd->netEnvs[netEnvId].units, 0, sizeof(t_FmPcdIntDistinctionUnit)*FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + memset(p_FmPcd->netEnvs[netEnvId].unitsVectors, 0, sizeof(uint32_t)*FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + memset(p_FmPcd->netEnvs[netEnvId].lcvs, 0, sizeof(uint32_t)*FM_PCD_PRS_NUM_OF_HDRS); + + RELEASE_LOCK(p_FmPcd->netEnvs[netEnvId].lock); + + return E_OK; +} + +void FM_PCD_HcTxConf(t_Handle h_FmPcd, t_DpaaFD *p_Fd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN(h_FmPcd, E_INVALID_STATE); + + FmHcTxConf(p_FmPcd->h_Hc, p_Fd); +} + +uint32_t FM_PCD_GetCounter(t_Handle h_FmPcd, e_FmPcdCounters counter) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t replyLength, outCounter = 0; + t_FmPcdIpcMsg msg; + t_Error err; + t_FmPcdIpcReply reply; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + memset(&reply, 0, sizeof(reply)); + msg.msgId = FM_PCD_GET_COUNTER; + memcpy(msg.msgBody, (uint8_t *)&counter, sizeof(uint32_t)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(uint32_t), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t) + sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy((uint8_t*)&outCounter, reply.replyBody, sizeof(uint32_t)); + return outCounter; + } + + switch(counter) + { + case(e_FM_PCD_KG_COUNTERS_TOTAL): + if(!p_FmPcd->p_FmPcdKg) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters")); + return 0; + } + break; + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + if(!p_FmPcd->p_FmPcdPlcr) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters")); + return 0; + } + /* check that counters are enabled */ + if(!(GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr) & FM_PCD_PLCR_GCR_STEN)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + return 0; + } + break; + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + if(!p_FmPcd->p_FmPcdPrs) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters")); + return 0; + } + break; + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + return 0; + } + switch(counter) + { + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pds); + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rrs); + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rrs); + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rrs); + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srrs); + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rres); + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rres); + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rres); + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srres); + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spcs); + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spscs); + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->hxscs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrcs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrscs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwcs); + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwscs); + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + return GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->fcscs); + case(e_FM_PCD_KG_COUNTERS_TOTAL): + return GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgtpc); + + /*Policer statictics*/ + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ypcnt); + case(e_FM_PCD_PLCR_COUNTERS_RED): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rpcnt); + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rrpcnt); + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rypcnt); + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_tpcnt); + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + return GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_flmcnt); + + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + return 0; + } +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_DumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + if (p_FmPcd->p_FmPcdKg) + return FM_PCD_KgDumpRegs(h_FmPcd); + if (p_FmPcd->p_FmPcdPlcr) + return FM_PCD_PlcrDumpRegs(h_FmPcd); + if (p_FmPcd->p_FmPcdPrs) + return FM_PCD_PrsDumpRegs(h_FmPcd); + return E_OK; +} + +t_Error FM_PCD_HcDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_STATE); + + return FmHcDumpRegs(p_FmPcd->h_Hc); +} + +#endif /* (defined(DEBUG_ERRORS) && ... */ + +t_Error FM_PCD_ConfigException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t bitMask = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ConfigException - guest mode!")); + + GET_FM_PCD_EXCEPTION_FLAG(bitMask, exception); + if(bitMask) + { + if (enable) + p_FmPcd->exceptions |= bitMask; + else + p_FmPcd->exceptions &= ~bitMask; + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_PCD_SetException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t bitMask = 0, tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_SetException - guest mode!")); + + GET_FM_PCD_EXCEPTION_FLAG(bitMask, exception); + + if(bitMask) + { + if (enable) + p_FmPcd->exceptions |= bitMask; + else + p_FmPcd->exceptions &= ~bitMask; + + switch(exception) + { + case(e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW): + if(!p_FmPcd->p_FmPcdKg) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - keygen is not working")); + break; + case(e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR): + case(e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE): + case(e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE): + if(!p_FmPcd->p_FmPcdPlcr) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - policer is not working")); + break; + case(e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC): + if(!p_FmPcd->p_FmPcdPrs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - parser is not working")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported exception")); + + } + + switch(exception) + { + case(e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer); + if(enable) + tmpReg |= FM_PCD_KG_DOUBLE_ECC; + else + tmpReg &= ~FM_PCD_KG_DOUBLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer, tmpReg); + break; + case(e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer); + if(enable) + tmpReg |= FM_PCD_KG_KEYSIZE_OVERFLOW; + else + tmpReg &= ~FM_PCD_KG_KEYSIZE_OVERFLOW; + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer, tmpReg); + break; + case(e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perer); + if(enable) + tmpReg |= FM_PCD_PRS_DOUBLE_ECC; + else + tmpReg &= ~FM_PCD_PRS_DOUBLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perer, tmpReg); + break; + case(e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pever); + if(enable) + tmpReg |= FM_PCD_PRS_SINGLE_ECC; + else + tmpReg &= ~FM_PCD_PRS_SINGLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pever, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier); + if(enable) + tmpReg |= FM_PCD_PLCR_DOUBLE_ECC; + else + tmpReg &= ~FM_PCD_PLCR_DOUBLE_ECC; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier); + if(enable) + tmpReg |= FM_PCD_PLCR_INIT_ENTRY_ERROR; + else + tmpReg &= ~FM_PCD_PLCR_INIT_ENTRY_ERROR; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier); + if(enable) + tmpReg |= FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE; + else + tmpReg &= ~FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier, tmpReg); + break; + case(e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE): + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier); + if(enable) + tmpReg |= FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE; + else + tmpReg &= ~FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE; + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier, tmpReg); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported exception")); + } + /* for ECC exceptions driver automatically enables ECC mechanism, if disabled. + Driver may disable them automatically, depending on driver's status */ + if(enable && ( (exception == e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC))) + FmEnableRamsEcc(p_FmPcd->h_Fm); + if(!enable && ( (exception == e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC) | + (exception == e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC))) + FmDisableRamsEcc(p_FmPcd->h_Fm); + } + else + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Undefined exception")); + + return E_OK; +} + +t_Error FM_PCD_ForceIntr (t_Handle h_FmPcd, e_FmPcdExceptions exception) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ForceIntr - guest mode!")); + + switch(exception) + { + case(e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW): + if(!p_FmPcd->p_FmPcdKg) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - keygen is not working")); + break; + case(e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR): + case(e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE): + case(e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE): + if(!p_FmPcd->p_FmPcdPlcr) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt - policer is not working")); + break; + case(e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC): + case(e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC): + if(!p_FmPcd->p_FmPcdPrs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this interrupt -parsrer is not working")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Invalid interrupt requested")); + + } + switch(exception) + { + case e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PRS_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perfr, FM_PCD_PRS_DOUBLE_ECC); + break; + case e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PRS_SINGLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevfr, FM_PCD_PRS_SINGLE_ECC); + break; + case e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_KG_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, FM_PCD_KG_DOUBLE_ECC); + break; + case e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW: + if (!(p_FmPcd->exceptions & FM_PCD_EX_KG_KEYSIZE_OVERFLOW)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, FM_PCD_KG_KEYSIZE_OVERFLOW); + break; + case e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_DOUBLE_ECC)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr, FM_PCD_PLCR_DOUBLE_ECC); + break; + case e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_INIT_ENTRY_ERROR)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr, FM_PCD_PLCR_INIT_ENTRY_ERROR); + break; + case e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr, FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE); + break; + case e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE: + if (!(p_FmPcd->exceptions & FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception is masked")); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr, FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE); + break; + default: + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("The selected exception may not be forced")); + } + + return E_OK; +} + + +t_Error FM_PCD_ModifyCounter(t_Handle h_FmPcd, e_FmPcdCounters counter, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ModifyCounter - guest mode!")); + + switch(counter) + { + case(e_FM_PCD_KG_COUNTERS_TOTAL): + if(!p_FmPcd->p_FmPcdKg) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters - keygen is not working")); + break; + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + if(!p_FmPcd->p_FmPcdPlcr) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Can't ask for this counters - Policer is not working")); + if(!(GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr) & FM_PCD_PLCR_GCR_STEN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + if(!p_FmPcd->p_FmPcdPrs) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported type of counter")); + } + switch(counter) + { + case(e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pds, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srrs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l2rres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l3rres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->l4rres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->srres, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spcs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->spscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->hxscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrcs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mrscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwcs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->mwscs, value); + break; + case(e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES): + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->fcscs, value); + break; + case(e_FM_PCD_KG_COUNTERS_TOTAL): + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgtpc,value); + break; + + /*Policer counters*/ + case(e_FM_PCD_PLCR_COUNTERS_YELLOW): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ypcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_RED): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rpcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rrpcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_rypcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_TOTAL): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_tpcnt, value); + break; + case(e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH): + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_flmcnt, value); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Unsupported type of counter")); + } + +return E_OK; +} + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_cc.h @@ -0,0 +1,312 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_cc.h + + @Description FM PCD CC ... +*//***************************************************************************/ +#ifndef __FM_CC_H +#define __FM_CC_H + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" + +#include "fm_pcd.h" + + +/***********************************************************************/ +/* Coarse classification defines */ +/***********************************************************************/ + +#define CC_PC_FF_MACDST 0x00 +#define CC_PC_FF_MACSRC 0x01 +#define CC_PC_FF_ETYPE 0x02 + +#define CC_PC_FF_TCI1 0x03 +#define CC_PC_FF_TCI2 0x04 + +#define CC_PC_FF_MPLS1 0x06 +#define CC_PC_FF_MPLS_LAST 0x07 + +#define CC_PC_FF_IPV4DST1 0x08 +#define CC_PC_FF_IPV4DST2 0x16 +#define CC_PC_FF_IPV4IPTOS_TC1 0x09 +#define CC_PC_FF_IPV4IPTOS_TC2 0x17 +#define CC_PC_FF_IPV4PTYPE1 0x0A +#define CC_PC_FF_IPV4PTYPE2 0x18 +#define CC_PC_FF_IPV4SRC1 0x0b +#define CC_PC_FF_IPV4SRC2 0x19 +#define CC_PC_FF_IPV4SRC1_IPV4DST1 0x0c +#define CC_PC_FF_IPV4SRC2_IPV4DST2 0x1a +#define CC_PC_FF_IPV4TTL 0x29 + + +#define CC_PC_FF_IPTOS_IPV6TC1_IPV6FLOW1 0x0d /*TODO - CLASS - what is it? TOS*/ +#define CC_PC_FF_IPTOS_IPV6TC2_IPV6FLOW2 0x1b +#define CC_PC_FF_IPV6PTYPE1 0x0e +#define CC_PC_FF_IPV6PTYPE2 0x1c +#define CC_PC_FF_IPV6DST1 0x0f +#define CC_PC_FF_IPV6DST2 0x1d +#define CC_PC_FF_IPV6SRC1 0x10 +#define CC_PC_FF_IPV6SRC2 0x1e +#define CC_PC_FF_IPV6HOP_LIMIT 0x2a +#define CC_PC_FF_GREPTYPE 0x11 + +#define CC_PC_FF_MINENCAP_PTYPE 0x12 +#define CC_PC_FF_MINENCAP_IPDST 0x13 +#define CC_PC_FF_MINENCAP_IPSRC 0x14 +#define CC_PC_FF_MINENCAP_IPSRC_IPDST 0x15 + +#define CC_PC_FF_L4PSRC 0x1f +#define CC_PC_FF_L4PDST 0x20 +#define CC_PC_FF_L4PSRC_L4PDST 0x21 + +#define CC_PC_FF_PPPPID 0x05 + +#define CC_PC_PR_SHIM1 0x22 +#define CC_PC_PR_SHIM2 0x23 + +#define CC_PC_GENERIC_WITHOUT_MASK 0x27 +#define CC_PC_GENERIC_WITH_MASK 0x28 +#define CC_PC_GENERIC_IC_GMASK 0x2B +#define CC_PC_GENERIC_IC_HASH_INDEXED 0x2C + +#define CC_PR_OFFSET 0x25 +#define CC_PR_WITHOUT_OFFSET 0x26 + +#define CC_PC_PR_ETH_OFFSET 19 +#define CC_PC_PR_USER_DEFINED_SHIM1_OFFSET 16 +#define CC_PC_PR_USER_DEFINED_SHIM2_OFFSET 17 +#define CC_PC_PR_USER_LLC_SNAP_OFFSET 20 +#define CC_PC_PR_VLAN1_OFFSET 21 +#define CC_PC_PR_VLAN2_OFFSET 22 +#define CC_PC_PR_PPPOE_OFFSET 24 +#define CC_PC_PR_MPLS1_OFFSET 25 +#define CC_PC_PR_MPLS_LAST_OFFSET 26 +#define CC_PC_PR_IP1_OFFSET 27 +#define CC_PC_PR_IP_LAST_OFFSET 28 +#define CC_PC_PR_MINENC_OFFSET 28 +#define CC_PC_PR_L4_OFFSET 30 +#define CC_PC_PR_GRE_OFFSET 29 +#define CC_PC_PR_ETYPE_LAST_OFFSET 23 +#define CC_PC_PR_NEXT_HEADER_OFFSET 31 + +#define CC_PC_ILLEGAL 0xff +#define CC_SIZE_ILLEGAL 0 + +#define FM_PCD_CC_KEYS_MATCH_TABLE_ALIGN 16 +#define FM_PCD_CC_AD_TABLE_ALIGN 256 +#define FM_PCD_CC_AD_ENTRY_SIZE 16 +#define FM_PCD_CC_NUM_OF_KEYS 255 + +#define FM_PCD_AD_RESULT_CONTRL_FLOW_TYPE 0x00000000 +#define FM_PCD_AD_RESULT_DATA_FLOW_TYPE 0x80000000 +#define FM_PCD_AD_RESULT_PLCR_DIS 0x20000000 +#define FM_PCD_AD_RESULT_EXTENDED_MODE 0x80000000 +#define FM_PCD_AD_RESULT_NADEN 0x20000000 +#define FM_PCD_AD_RESULT_STATISTICS_EN 0x40000000 + + +#define FM_PCD_AD_CONT_LOOKUP_TYPE 0x40000000 +#define FM_PCD_AD_CONT_LOOKUP_LCL_MASK 0x00800000 + +#define FM_PCD_AD_TYPE_MASK 0xc0000000 +#define FM_PCD_AD_OPCODE_MASK 0x0000000f + +#define FM_PCD_AD_PROFILEID_FOR_CNTRL_SHIFT 16 + +#define GLBL_MASK_FOR_HASH_INDEXED 0xfff00000 +#define CC_GLBL_MASK_SIZE 4 + +typedef uint32_t ccPrivateInfo_t; /**< private info of CC: */ + +#define CC_PRIVATE_INFO_NONE 0 +#define CC_PRIVATE_INFO_IC_HASH_INDEX_LOOKUP 0x80000000 +#define CC_PRIVATE_INFO_IC_HASH_EXACT_MATCH 0x40000000 +#define CC_PRIVATE_INFO_IC_KEY_EXACT_MATCH 0x20000000 +#define CC_PRIVATE_INFO_IC_DEQ_FQID_INDEX_LOOKUP 0x10000000 + +/***********************************************************************/ +/* Memory map */ +/***********************************************************************/ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +typedef _Packed struct { + volatile uint32_t fqid; + volatile uint32_t plcrProfile; + volatile uint32_t nia; + volatile uint32_t res; +} _PackedType t_AdOfTypeResult; + +typedef _Packed struct { + volatile uint32_t ccAdBase; + volatile uint32_t matchTblPtr; + volatile uint32_t pcAndOffsets; + volatile uint32_t gmask; +} _PackedType t_AdOfTypeContLookup; + +typedef _Packed union { + volatile t_AdOfTypeResult adResult; + volatile t_AdOfTypeContLookup adContLookup; +} _PackedType t_Ad; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/***********************************************************************/ +/* Driver's internal structures */ +/***********************************************************************/ + +typedef enum e_ModifyState { + e_MODIFY_STATE_ADD = 0, + e_MODIFY_STATE_REMOVE, + e_MODIFY_STATE_CHANGE +} e_ModifyState; + +typedef struct { + t_FmPcdCcNextEngineParams nextEngineParams; + uint32_t requiredAction; + uint32_t shadowAction; +} t_FmPcdCcNextEngineAndRequiredActionParams; + +typedef struct { + t_Handle p_Ad; + e_FmPcdEngine fmPcdEngine; + bool adAllocated; + bool isTree; + + uint32_t myInfo; + t_List *h_CcNextNodesLst; + t_Handle h_AdditionalInfo; + t_Handle h_Node; +} t_FmPcdModifyCcAdditionalParams; + +typedef struct { + t_Handle p_AdTableNew; + t_Handle p_KeysMatchTableNew; + t_Handle p_AdTableOld; + t_Handle p_KeysMatchTableOld; + uint16_t numOfKeys; + t_Handle h_CurrentNode; + uint16_t keyIndex; + t_Handle h_NodeForAdd; + t_Handle h_NodeForRmv; + t_Handle h_ManipForRmv; + bool tree; + + t_FmPcdCcNextEngineAndRequiredActionParams nextEngineAndRequiredAction[256]; +} t_FmPcdModifyCcKeyAdditionalParams; + +typedef struct { + t_Handle h_Manip; + t_Handle h_CcNode; +} t_CcNextEngineInfo; + +typedef struct { + uint16_t numOfKeys; + bool glblMaskUpdated; + t_Handle p_GlblMask; + bool lclMask; + uint8_t parseCode; + uint8_t offset; + uint8_t prsArrayOffset; + bool ctrlFlow; + uint8_t owners; + + uint8_t ccKeySizeAccExtraction; + uint8_t sizeOfExtraction; + uint8_t glblMaskSize; + + t_Handle h_KeysMatchTable; + t_Handle h_AdTable; + + t_List ccPrevNodesLst; + + t_List ccTreeIdLst; + t_List ccTreesLst; + + t_Handle h_FmPcd; + uint32_t shadowAction; + bool modifiedState; + uint8_t userSizeOfExtraction; + + t_FmPcdCcNextEngineAndRequiredActionParams nextEngineAndRequiredAction[256]; +} t_FmPcdCcNode; + +typedef struct { + t_FmPcdCcNode *p_FmPcdCcNode; + bool occupied; + uint8_t owners; + volatile bool lock; +} t_FmPcdCcNodeArray; + +typedef struct { + uint8_t numOfEntriesInGroup; + uint32_t totalBitsMask; + uint8_t baseGroupEntry; +} t_FmPcdCcGroupParam; + +typedef struct { + uint8_t netEnvId; + uintptr_t ccTreeBaseAddr; + uint8_t numOfGrps; + t_FmPcdCcGroupParam fmPcdGroupParam[FM_PCD_MAX_NUM_OF_CC_GROUPS]; + t_List fmPortsLst; + volatile bool lock; + uint8_t numOfEntries; + uint8_t owners; + t_Handle *fmPcdCcSavedManipParams[256]; + bool modifiedState; + uint32_t requiredAction; + t_FmPcdCcNextEngineAndRequiredActionParams nextEngineAndRequiredAction[FM_PCD_MAX_NUM_OF_KEYS]; +} t_FmPcdCcTree; + +typedef struct { + t_FmPcdCcTree *p_FmPcdCcTree; + bool occupied; + uint8_t owners; + volatile bool lock; +} t_FmPcdCcTreeArray; + + +bool FmPcdManipIsManipNode(t_Handle h_Ad); + + +#endif /* __FM_CC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_plcr.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_plcr.c @@ -0,0 +1,1702 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_plcr.c + + @Description FM PCD POLICER... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "net_ext.h" +#include "fm_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_hc.h" +#include "fm_pcd_ipc.h" + + +static bool FmPcdPlcrIsProfileShared(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, FALSE); + + for(i=0;ip_FmPcdPlcr->numOfSharedProfiles;i++) + if(p_FmPcd->p_FmPcdPlcr->sharedProfilesIds[i] == absoluteProfileId) + return TRUE; + return FALSE; +} + +static t_Error SetProfileNia(t_FmPcd *p_FmPcd, e_FmPcdEngine nextEngine, u_FmPcdPlcrNextEngineParams *p_NextEngineParams, uint32_t *nextAction) +{ + uint32_t nia; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(p_NextEngineParams->h_Profile)-1); + uint8_t relativeSchemeId, physicatSchemeId; + + nia = FM_PCD_PLCR_NIA_VALID; + + switch (nextEngine) + { + case e_FM_PCD_DONE : + switch (p_NextEngineParams->action) + { + case e_FM_PCD_DROP_FRAME : + nia |= (NIA_ENG_BMI | NIA_BMI_AC_DISCARD); + break; + case e_FM_PCD_ENQ_FRAME: + nia |= (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + case e_FM_PCD_KG: + physicatSchemeId = (uint8_t)(PTR_TO_UINT(p_NextEngineParams->h_DirectScheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicatSchemeId); + if(relativeSchemeId == FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + if (!FmPcdKgIsSchemeValidSw(p_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid direct scheme.")); + if(!KgIsSchemeAlwaysDirect(p_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Policer Profile may point only to a scheme that is always direct.")); + nia |= NIA_ENG_KG | NIA_KG_DIRECT | physicatSchemeId; + break; + case e_FM_PCD_PLCR: + if(!FmPcdPlcrIsProfileShared(p_FmPcd, absoluteProfileId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next profile must be a shared profile")); + if(!FmPcdPlcrIsProfileValid(p_FmPcd, absoluteProfileId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid profile ")); + nia |= NIA_ENG_PLCR | NIA_PLCR_ABSOLUTE | absoluteProfileId; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + *nextAction = nia; + + return E_OK; +} + +static uint32_t FPP_Function(uint32_t fpp) +{ + if(fpp > 15) + return 15 - (0x1f - fpp); + else + return 16 + fpp; +} + +static void GetInfoRateReg(e_FmPcdPlcrRateMode rateMode, + uint32_t rate, + uint64_t tsuInTenthNano, + uint32_t fppShift, + uint64_t *p_Integer, + uint64_t *p_Fraction) +{ + uint64_t tmp, div; + + if(rateMode == e_FM_PCD_PLCR_BYTE_MODE) + { + /* now we calculate the initial integer for the bigger rate */ + /* from Kbps to Bytes/TSU */ + tmp = (uint64_t)rate; + tmp *= 1000; /* kb --> b */ + tmp *= tsuInTenthNano; /* bps --> bpTsu(in 10nano) */ + + div = 1000000000; /* nano */ + div *= 10; /* 10 nano */ + div *= 8; /* bit to byte */ + } + else + { + /* now we calculate the initial integer for the bigger rate */ + /* from Kbps to Bytes/TSU */ + tmp = (uint64_t)rate; + tmp *= tsuInTenthNano; /* bps --> bpTsu(in 10nano) */ + + div = 1000000000; /* nano */ + div *= 10; /* 10 nano */ + } + *p_Integer = (tmp<h_Fm); /* TimeStamp per nano seconds units */ + /* we want the tsu to count 10 nano for better precision normally tsu is 3.9 nano, now we will get 39 */ + tsuInTenthNanos = (uint32_t)(1000*10/(1<comittedInfoRate > p_NonPassthroughAlgParam->peakOrAccessiveInfoRate) + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->comittedInfoRate, tsuInTenthNanos, 0, &integer, &fraction); + else + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->peakOrAccessiveInfoRate, tsuInTenthNanos, 0, &integer, &fraction); + + + /* we shift integer, as in cir/pir it is represented by the MSB 16 bits, and + * the LSB bits are for the fraction */ + temp = (uint32_t)((integer<<16) & 0x00000000FFFFFFFF); + /* temp is effected by the rate. For low rates it may be as low as 0, and then we'll + * take max fpp=31. + * For high rates it will never exceed the 32 bit reg (after the 16 shift), as it is + * limited by the 10G physical port. + */ + if(temp != 0) + { + /* count zeroes left of the higher used bit (in order to shift the value such that + * unused bits may be used for fraction). + */ + while ((temp & 0x80000000) == 0) + { + temp = temp << 1; + fppShift++; + } + if(fppShift > 15) + { + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, ("timeStampPeriod to Information rate ratio is too small")); + return; + } + } + else + { + temp = (uint32_t)fraction; /* fraction will alyas be smaller than 2^16 */ + if(!temp) + /* integer and fraction are 0, we set fpp to its max val */ + fppShift = 31; + else + { + /* integer was 0 but fraction is not. fpp is 16 for the integer, + * + all left zeroes of the fraction. */ + fppShift=16; + /* count zeroes left of the higher used bit (in order to shift the value such that + * unused bits may be used for fraction). + */ + while ((temp & 0x8000) == 0) + { + temp = temp << 1; + fppShift++; + } + } + } + + /* + * This means that the FM TS register will now be used so that 'count' bits are for + * fraction and the rest for integer */ + /* now we re-calculate cir */ + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->comittedInfoRate, tsuInTenthNanos, fppShift, &integer, &fraction); + *cir = (uint32_t)(integer << 16 | (fraction & 0xFFFF)); + GetInfoRateReg(p_NonPassthroughAlgParam->rateMode, p_NonPassthroughAlgParam->peakOrAccessiveInfoRate, tsuInTenthNanos, fppShift, &integer, &fraction); + *pir_eir = (uint32_t)(integer << 16 | (fraction & 0xFFFF)); + + *cbs = p_NonPassthroughAlgParam->comittedBurstSize; + *pbs_ebs = p_NonPassthroughAlgParam->peakOrAccessiveBurstSize; + + /* get fpp as it should be written to reg.*/ + *fpp = FPP_Function(fppShift); + +} + +static void WritePar(t_FmPcd *p_FmPcd, uint32_t par) +{ + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + WRITE_UINT32(p_FmPcdPlcrRegs->fmpl_par, par); + + while(GET_UINT32(p_FmPcdPlcrRegs->fmpl_par) & FM_PCD_PLCR_PAR_GO) ; + +} + +/*********************************************/ +/*............Policer Exception..............*/ +/*********************************************/ +static void PcdPlcrException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, mask, force; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + event = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_evr); + mask = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ier); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_ifr, force & ~event); + + + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_evr, event); + + if(event & FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE); + if(event & FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE); + +} + +/* ..... */ + +static void PcdPlcrErrorException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, force, captureReg, mask; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + event = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eevr); + mask = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eier); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eifr, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_eevr, event); + + if(event & FM_PCD_PLCR_DOUBLE_ECC) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC); + if(event & FM_PCD_PLCR_INIT_ENTRY_ERROR) + { + captureReg = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_upcr); + /*ASSERT_COND(captureReg & PLCR_ERR_UNINIT_CAP); + p_UnInitCapt->profileNum = (uint8_t)(captureReg & PLCR_ERR_UNINIT_NUM_MASK); + p_UnInitCapt->portId = (uint8_t)((captureReg & PLCR_ERR_UNINIT_PID_MASK) >>PLCR_ERR_UNINIT_PID_SHIFT) ; + p_UnInitCapt->absolute = (bool)(captureReg & PLCR_ERR_UNINIT_ABSOLUTE_MASK);*/ + p_FmPcd->f_FmPcdIndexedException(p_FmPcd->h_App,e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR,(uint16_t)(captureReg & PLCR_ERR_UNINIT_NUM_MASK)); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_upcr, PLCR_ERR_UNINIT_CAP); + } +} + +void FmPcdPlcrUpatePointedOwner(t_Handle h_FmPcd, uint16_t absoluteProfileId, bool add) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + if(add) + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].pointedOwners++; + else + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].pointedOwners--; +} + +uint32_t FmPcdPlcrGetPointedOwners(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + return p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].pointedOwners; +} +uint32_t FmPcdPlcrGetRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + return p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredAction; +} + +t_Error FmPcdPlcrAllocProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcPlcrAllocParams ipcPlcrParams; + t_Error err = E_OK; + uint16_t base; + uint16_t swPortIndex = 0; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + if(!numOfProfiles) + return E_OK; + + memset(&ipcPlcrParams, 0, sizeof(ipcPlcrParams)); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + /* Alloc resources using IPC messaging */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + ipcPlcrParams.num = numOfProfiles; + ipcPlcrParams.hardwarePortId = hardwarePortId; + msg.msgId = FM_PCD_ALLOC_PROFILES; + memcpy(msg.msgBody, &ipcPlcrParams, sizeof(ipcPlcrParams)); + replyLength = sizeof(uint32_t) + sizeof(uint16_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(ipcPlcrParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + if (replyLength != sizeof(uint32_t) + sizeof(uint16_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + if((t_Error)reply.error != E_OK) + RETURN_ERROR(MAJOR, (t_Error)reply.error, ("PLCR profiles allocation failed")); + + memcpy((uint8_t*)&base, reply.replyBody, sizeof(uint16_t)); + } + else /* master */ + { + err = PlcrAllocProfiles(p_FmPcd, hardwarePortId, numOfProfiles, &base); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles = numOfProfiles; + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase = base; + + return E_OK; +} + +t_Error FmPcdPlcrFreeProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcPlcrAllocParams ipcPlcrParams; + t_Error err = E_OK; + uint16_t swPortIndex = 0; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + /* Alloc resources using IPC messaging */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + ipcPlcrParams.num = p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles; + ipcPlcrParams.hardwarePortId = hardwarePortId; + ipcPlcrParams.plcrProfilesBase = p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase; + msg.msgId = FM_PCD_FREE_PROFILES; + memcpy(msg.msgBody, &ipcPlcrParams, sizeof(ipcPlcrParams)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(ipcPlcrParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + if ((t_Error)reply.error != E_OK) + RETURN_ERROR(MINOR, (t_Error)reply.error, ("PLCR Free Profiles failed")); + } + else /* master */ + { + err = PlcrFreeProfiles(p_FmPcd, hardwarePortId, p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles, p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles = 0; + p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase = 0; + + return E_OK; +} + +bool FmPcdPlcrIsProfileValid(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + + return p_FmPcdPlcr->profiles[absoluteProfileId].valid; +} + +t_Error PlcrAllocProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles, uint16_t *p_Base) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + uint32_t profilesFound, log2Num, tmpReg32; + uint32_t intFlags; + uint16_t first, i; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + if(!numOfProfiles) + return E_OK; + + ASSERT_COND(hardwarePortId); + + if (numOfProfiles>FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("numProfiles is too big.")); + + if (!POWER_OF_2(numOfProfiles)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numProfiles must be a power of 2.")); + + intFlags = FmPcdLock(p_FmPcd); + + if(GET_UINT32(p_Regs->fmpl_pmr[hardwarePortId-1]) & FM_PCD_PLCR_PMR_V) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("The requesting port has already an allocated profiles window.")); + } + + first = 0; + profilesFound = 0; + for(i=0;ip_FmPcdPlcr->profiles[i].profilesMng.allocated) + { + profilesFound++; + i++; + if(profilesFound == numOfProfiles) + break; + } + else + { + profilesFound = 0; + /* advance i to the next aligned address */ + first = i = (uint8_t)(first + numOfProfiles); + } + } + if(profilesFound == numOfProfiles) + { + for(i = first; ip_FmPcdPlcr->profiles[i].profilesMng.allocated = TRUE; + p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.ownerId = hardwarePortId; + } + } + else + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MINOR, E_FULL, ("No profiles.")); + } + + /**********************FMPL_PMRx******************/ + LOG2((uint64_t)numOfProfiles, log2Num); + tmpReg32 = first; + tmpReg32 |= log2Num << 16; + tmpReg32 |= FM_PCD_PLCR_PMR_V; + WRITE_UINT32(p_Regs->fmpl_pmr[hardwarePortId-1], tmpReg32); + + *p_Base = first; + + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +t_Error PlcrAllocSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds) +{ + uint32_t profilesFound; + uint16_t i, k=0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + if(!numOfProfiles) + return E_OK; + + if (numOfProfiles>FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("numProfiles is too big.")); + + profilesFound = 0; + for(i=0;ip_FmPcdPlcr->profiles[i].profilesMng.allocated) + { + profilesFound++; + profilesIds[k] = i; + k++; + if(profilesFound == numOfProfiles) + break; + } + } + if(profilesFound != numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_STATE,NO_MSG); + for(i = 0;ip_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.allocated = TRUE; + p_FmPcd->p_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.ownerId = 0; + } + + return E_OK; +} + +t_Error PlcrFreeProfiles(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles, uint16_t base) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + uint16_t i; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + ASSERT_COND(IN_RANGE(1, hardwarePortId, 63)); + WRITE_UINT32(p_Regs->fmpl_pmr[hardwarePortId-1], 0); + + for(i = base; ip_FmPcdPlcr->profiles[i].profilesMng.ownerId == hardwarePortId); + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.allocated); + + p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.allocated = FALSE; + p_FmPcd->p_FmPcdPlcr->profiles[i].profilesMng.ownerId = 0; + } + + return E_OK; +} + +void PlcrFreeSharedProfiles(t_FmPcd *p_FmPcd, uint16_t numOfProfiles, uint16_t *profilesIds) +{ + uint16_t i; + + SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + for(i=0;ip_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.allocated); + p_FmPcd->p_FmPcdPlcr->profiles[profilesIds[i]].profilesMng.allocated = FALSE; + } +} + +void PlcrEnable(t_FmPcd *p_FmPcd) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + + WRITE_UINT32(p_Regs->fmpl_gcr, GET_UINT32(p_Regs->fmpl_gcr) | FM_PCD_PLCR_GCR_EN); +} + +void PlcrDisable(t_FmPcd *p_FmPcd) +{ + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + + WRITE_UINT32(p_Regs->fmpl_gcr, GET_UINT32(p_Regs->fmpl_gcr) & ~FM_PCD_PLCR_GCR_EN); +} + +t_Error FM_PCD_SetPlcrStatistics(t_Handle h_FmPcd, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_SetPlcrStatistics - guest mode!")); + + tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr); + if(enable) + tmpReg32 |= FM_PCD_PLCR_GCR_STEN; + else + tmpReg32 &= ~FM_PCD_PLCR_GCR_STEN; + + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_gcr, tmpReg32); + return E_OK; +} + +t_Error FM_PCD_ConfigPlcrAutoRefreshMode(t_Handle h_FmPcd, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ConfigPlcrAutoRefreshMode - guest mode!")); + + p_FmPcd->p_FmPcdDriverParam->plcrAutoRefresh = enable; + + return E_OK; +} + + +t_Error FmPcdPlcrBuildProfile(t_Handle h_FmPcd, t_FmPcdPlcrProfileParams *p_Profile, t_FmPcdPlcrInterModuleProfileRegs *p_PlcrRegs) +{ + + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_Error err = E_OK; + uint32_t pemode, gnia, ynia, rnia; + +/* Set G, Y, R Nia */ + err = SetProfileNia(p_FmPcd, p_Profile->nextEngineOnGreen, &(p_Profile->paramsOnGreen), &gnia); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + err = SetProfileNia(p_FmPcd, p_Profile->nextEngineOnYellow, &(p_Profile->paramsOnYellow), &ynia); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + err = SetProfileNia(p_FmPcd, p_Profile->nextEngineOnRed, &(p_Profile->paramsOnRed), &rnia); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + +/* Mode fmpl_pemode */ + pemode = FM_PCD_PLCR_PEMODE_PI; + + switch (p_Profile->algSelection) + { + case e_FM_PCD_PLCR_PASS_THROUGH: + p_PlcrRegs->fmpl_pecir = 0; + p_PlcrRegs->fmpl_pecbs = 0; + p_PlcrRegs->fmpl_pepepir_eir = 0; + p_PlcrRegs->fmpl_pepbs_ebs = 0; + p_PlcrRegs->fmpl_pelts = 0; + p_PlcrRegs->fmpl_pects = 0; + p_PlcrRegs->fmpl_pepts_ets = 0; + pemode &= ~FM_PCD_PLCR_PEMODE_ALG_MASK; + switch (p_Profile->colorMode) + { + case e_FM_PCD_PLCR_COLOR_BLIND: + pemode |= FM_PCD_PLCR_PEMODE_CBLND; + switch (p_Profile->color.dfltColor) + { + case e_FM_PCD_PLCR_GREEN: + pemode &= ~FM_PCD_PLCR_PEMODE_DEFC_MASK; + break; + case e_FM_PCD_PLCR_YELLOW: + pemode |= FM_PCD_PLCR_PEMODE_DEFC_Y; + break; + case e_FM_PCD_PLCR_RED: + pemode |= FM_PCD_PLCR_PEMODE_DEFC_R; + break; + case e_FM_PCD_PLCR_OVERRIDE: + pemode |= FM_PCD_PLCR_PEMODE_DEFC_OVERRIDE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + break; + case e_FM_PCD_PLCR_COLOR_AWARE: + pemode &= ~FM_PCD_PLCR_PEMODE_CBLND; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + + case e_FM_PCD_PLCR_RFC_2698: + /* Select algorithm MODE[ALG] = "01" */ + pemode |= FM_PCD_PLCR_PEMODE_ALG_RFC2698; + if (p_Profile->nonPassthroughAlgParams.comittedInfoRate > p_Profile->nonPassthroughAlgParams.peakOrAccessiveInfoRate) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("in RFC2698 Peak rate must be equal or larger than comittedInfoRate.")); + goto cont_rfc; + case e_FM_PCD_PLCR_RFC_4115: + /* Select algorithm MODE[ALG] = "10" */ + pemode |= FM_PCD_PLCR_PEMODE_ALG_RFC4115; +cont_rfc: + /* Select Color-Blind / Color-Aware operation (MODE[CBLND]) */ + switch (p_Profile->colorMode) + { + case e_FM_PCD_PLCR_COLOR_BLIND: + pemode |= FM_PCD_PLCR_PEMODE_CBLND; + break; + case e_FM_PCD_PLCR_COLOR_AWARE: + pemode &= ~FM_PCD_PLCR_PEMODE_CBLND; + /*In color aware more select override color interpretation (MODE[OVCLR]) */ + switch (p_Profile->color.override) + { + case e_FM_PCD_PLCR_GREEN: + pemode &= ~FM_PCD_PLCR_PEMODE_OVCLR_MASK; + break; + case e_FM_PCD_PLCR_YELLOW: + pemode |= FM_PCD_PLCR_PEMODE_OVCLR_Y; + break; + case e_FM_PCD_PLCR_RED: + pemode |= FM_PCD_PLCR_PEMODE_OVCLR_R; + break; + case e_FM_PCD_PLCR_OVERRIDE: + pemode |= FM_PCD_PLCR_PEMODE_OVCLR_G_NC; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + /* Select Measurement Unit Mode to BYTE or PACKET (MODE[PKT]) */ + switch (p_Profile->nonPassthroughAlgParams.rateMode) + { + case e_FM_PCD_PLCR_BYTE_MODE : + pemode &= ~FM_PCD_PLCR_PEMODE_PKT; + switch (p_Profile->nonPassthroughAlgParams.byteModeParams.frameLengthSelection) + { + case e_FM_PCD_PLCR_L2_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_L2; + break; + case e_FM_PCD_PLCR_L3_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_L3; + break; + case e_FM_PCD_PLCR_L4_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_L4; + break; + case e_FM_PCD_PLCR_FULL_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_FLS_FULL; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + switch (p_Profile->nonPassthroughAlgParams.byteModeParams.rollBackFrameSelection) + { + case e_FM_PCD_PLCR_ROLLBACK_L2_FRM_LEN: + pemode &= ~FM_PCD_PLCR_PEMODE_RBFLS; + break; + case e_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN: + pemode |= FM_PCD_PLCR_PEMODE_RBFLS; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + case e_FM_PCD_PLCR_PACKET_MODE : + pemode |= FM_PCD_PLCR_PEMODE_PKT; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + /* Select timeStamp floating point position (MODE[FPP]) to fit the actual traffic rates. For PACKET + mode with low traffic rates move the fixed point to the left to increase fraction accuracy. For BYTE + mode with high traffic rates move the fixed point to the right to increase integer accuracy. */ + + /* Configure Traffic Parameters*/ + { + uint32_t cir=0, cbs=0, pir_eir=0, pbs_ebs=0, fpp=0; + + calcRates(h_FmPcd, &p_Profile->nonPassthroughAlgParams, &cir, &cbs, &pir_eir, &pbs_ebs, &fpp); + + /* Set Committed Information Rate (CIR) */ + p_PlcrRegs->fmpl_pecir = cir; + /* Set Committed Burst Size (CBS). */ + p_PlcrRegs->fmpl_pecbs = cbs; + /* Set Peak Information Rate (PIR_EIR used as PIR) */ + p_PlcrRegs->fmpl_pepepir_eir = pir_eir; + /* Set Peak Burst Size (PBS_EBS used as PBS) */ + p_PlcrRegs->fmpl_pepbs_ebs = pbs_ebs; + + /* Initialize the Metering Buckets to be full (write them with 0xFFFFFFFF. */ + /* Peak Rate Token Bucket Size (PTS_ETS used as PTS) */ + p_PlcrRegs->fmpl_pepts_ets = 0xFFFFFFFF; + /* Committed Rate Token Bucket Size (CTS) */ + p_PlcrRegs->fmpl_pects = 0xFFFFFFFF; + + /* Set the FPP based on calculation */ + pemode |= (fpp << FM_PCD_PLCR_PEMODE_FPP_SHIFT); + } + break; /* FM_PCD_PLCR_PEMODE_ALG_RFC2698 , FM_PCD_PLCR_PEMODE_ALG_RFC4115 */ + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + p_PlcrRegs->fmpl_pemode = pemode; + + p_PlcrRegs->fmpl_pegnia = gnia; + p_PlcrRegs->fmpl_peynia = ynia; + p_PlcrRegs->fmpl_pernia = rnia; + + /* Zero Counters */ + p_PlcrRegs->fmpl_pegpc = 0; + p_PlcrRegs->fmpl_peypc = 0; + p_PlcrRegs->fmpl_perpc = 0; + p_PlcrRegs->fmpl_perypc = 0; + p_PlcrRegs->fmpl_perrpc = 0; + + return E_OK; +} + +void FmPcdPlcrValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(!p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid = TRUE; +} + +void FmPcdPlcrInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid = FALSE; +} + +t_Handle PlcrConfig(t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcdPlcr *p_FmPcdPlcr; + /*uint8_t i=0;*/ + + UNUSED(p_FmPcd); + UNUSED(p_FmPcdParams); + + p_FmPcdPlcr = (t_FmPcdPlcr *) XX_Malloc(sizeof(t_FmPcdPlcr)); + if (!p_FmPcdPlcr) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Policer structure allocation FAILED")); + return NULL; + } + memset(p_FmPcdPlcr, 0, sizeof(t_FmPcdPlcr)); + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + p_FmPcdPlcr->p_FmPcdPlcrRegs = (t_FmPcdPlcrRegs *)UINT_TO_PTR(FmGetPcdPlcrBaseAddr(p_FmPcdParams->h_Fm)); + p_FmPcd->p_FmPcdDriverParam->plcrAutoRefresh = DEFAULT_plcrAutoRefresh; + p_FmPcd->exceptions |= (DEFAULT_fmPcdPlcrExceptions | DEFAULT_fmPcdPlcrErrorExceptions); + } + + p_FmPcdPlcr->numOfSharedProfiles = DEFAULT_numOfSharedPlcrProfiles; + + return p_FmPcdPlcr; +} + +t_Error PlcrInit(t_FmPcd *p_FmPcd) +{ + t_FmPcdDriverParam *p_Param = p_FmPcd->p_FmPcdDriverParam; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + uint32_t tmpReg32 = 0; + t_Error err = E_OK; + t_FmPcdPlcrRegs *p_Regs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + if ((p_FmPcd->guestId != NCSW_MASTER_ID) && + (p_FmPcdPlcr->numOfSharedProfiles)) + { + int i, j, index = 0; + uint32_t walking1Mask = 0x80000000; + uint32_t sharedProfilesMask[FM_PCD_PLCR_NUM_ENTRIES/32]; + + memset(sharedProfilesMask, 0, FM_PCD_PLCR_NUM_ENTRIES/32 * sizeof(uint32_t)); + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_ALLOC_SHARED_PROFILES; + memcpy(msg.msgBody, (uint8_t *)&p_FmPcdPlcr->numOfSharedProfiles, sizeof(uint16_t)); + replyLength = sizeof(uint32_t) + sizeof(sharedProfilesMask); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId)+ sizeof(p_FmPcdPlcr->numOfSharedProfiles), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + if (replyLength != (sizeof(uint32_t) + sizeof(sharedProfilesMask))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy(sharedProfilesMask, reply.replyBody, sizeof(sharedProfilesMask)); + /* translate 8 regs of 32 bits masks into an array of up to 256 indexes. */ + for(i = 0; ip_FmPcdPlcr->sharedProfilesIds[index++] = (uint16_t)(i*32+j); + walking1Mask >>= 1; + } + walking1Mask = 0x80000000; + } + } + return (t_Error)reply.error; + } + + if(p_FmPcdPlcr->numOfSharedProfiles) + { + err = PlcrAllocSharedProfiles(p_FmPcd, p_FmPcdPlcr->numOfSharedProfiles, p_FmPcd->p_FmPcdPlcr->sharedProfilesIds); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + + /**********************FMPL_GCR******************/ + tmpReg32 = 0; + tmpReg32 |= FM_PCD_PLCR_GCR_STEN; + if(p_Param->plcrAutoRefresh) + tmpReg32 |= FM_PCD_PLCR_GCR_DAR; + tmpReg32 |= NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME; + + WRITE_UINT32(p_Regs->fmpl_gcr, tmpReg32); + /**********************FMPL_GCR******************/ + + /**********************FMPL_EEVR******************/ + WRITE_UINT32(p_Regs->fmpl_eevr, (FM_PCD_PLCR_DOUBLE_ECC | FM_PCD_PLCR_INIT_ENTRY_ERROR)); + /**********************FMPL_EEVR******************/ + /**********************FMPL_EIER******************/ + tmpReg32 = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_DOUBLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + tmpReg32 |= FM_PCD_PLCR_DOUBLE_ECC; + } + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_INIT_ENTRY_ERROR) + tmpReg32 |= FM_PCD_PLCR_INIT_ENTRY_ERROR; + WRITE_UINT32(p_Regs->fmpl_eier, tmpReg32); + /**********************FMPL_EIER******************/ + + /**********************FMPL_EVR******************/ + WRITE_UINT32(p_Regs->fmpl_evr, (FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE | FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE)); + /**********************FMPL_EVR******************/ + /**********************FMPL_IER******************/ + tmpReg32 = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_PRAM_SELF_INIT_COMPLETE) + tmpReg32 |= FM_PCD_PLCR_PRAM_SELF_INIT_COMPLETE; + if(p_FmPcd->exceptions & FM_PCD_EX_PLCR_ATOMIC_ACTION_COMPLETE ) + tmpReg32 |= FM_PCD_PLCR_ATOMIC_ACTION_COMPLETE; + WRITE_UINT32(p_Regs->fmpl_ier, tmpReg32); + /**********************FMPL_IER******************/ + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_ERR, PcdPlcrErrorException, p_FmPcd); + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_NORMAL, PcdPlcrException, p_FmPcd); + + /* driver initializes one DFLT profile at the last entry*/ + /**********************FMPL_DPMR******************/ + tmpReg32 = 0; + WRITE_UINT32(p_Regs->fmpl_dpmr, tmpReg32); + p_FmPcd->p_FmPcdPlcr->profiles[0].profilesMng.allocated = TRUE; + + return E_OK; +} + +t_Error PlcrFree(t_FmPcd *p_FmPcd) +{ + t_Error err; + t_FmPcdIpcSharedPlcrAllocParams ipcSharedPlcrParams; + t_FmPcdIpcMsg msg; + + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_ERR); + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PLCR, 0, e_FM_INTR_TYPE_NORMAL); + + if(p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles) + { + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + int i; + memset(ipcSharedPlcrParams.sharedProfilesMask, 0, sizeof(ipcSharedPlcrParams.sharedProfilesMask)); + /* Free resources using IPC messaging */ + ipcSharedPlcrParams.num = p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles; + + /* translate the allocated profile id's to a 32bit * 8regs mask */ + for(i = 0;ip_FmPcdPlcr->numOfSharedProfiles;i++) + ipcSharedPlcrParams.sharedProfilesMask[p_FmPcd->p_FmPcdPlcr->sharedProfilesIds[i]/32] |= (0x80000000 >> (p_FmPcd->p_FmPcdPlcr->sharedProfilesIds[i] % 32)); + + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_FREE_SHARED_PROFILES; + memcpy(msg.msgBody, &ipcSharedPlcrParams, sizeof(ipcSharedPlcrParams)); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId)+sizeof(ipcSharedPlcrParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + /* else + PlcrFreeSharedProfiles(p_FmPcd, p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles, p_FmPcd->p_FmPcdPlcr->sharedProfilesIds);*/ + } + return E_OK; +} + +t_Error FmPcdPlcrGetAbsoluteProfileId(t_Handle h_FmPcd, + e_FmPcdProfileTypeSelection profileType, + t_Handle h_FmPort, + uint16_t relativeProfile, + uint16_t *p_AbsoluteId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + uint8_t i; + + switch (profileType) + { + case e_FM_PCD_PLCR_PORT_PRIVATE: + /* get port PCD id from port handle */ + for(i=0;ip_FmPcdPlcr->portsMapping[i].h_FmPort == h_FmPort) + break; + if (i == FM_MAX_NUM_OF_PORTS) + RETURN_ERROR(MAJOR, E_INVALID_STATE , ("Invalid port handle.")); + + if(!p_FmPcd->p_FmPcdPlcr->portsMapping[i].numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION , ("Port has no allocated profiles")); + if(relativeProfile >= p_FmPcd->p_FmPcdPlcr->portsMapping[i].numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION , ("Profile id is out of range")); + *p_AbsoluteId = (uint16_t)(p_FmPcd->p_FmPcdPlcr->portsMapping[i].profilesBase + relativeProfile); + break; + case e_FM_PCD_PLCR_SHARED: + if(relativeProfile >= p_FmPcdPlcr->numOfSharedProfiles) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION , ("Profile id is out of range")); + *p_AbsoluteId = (uint16_t)(p_FmPcdPlcr->sharedProfilesIds[relativeProfile]); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Invalid policer profile type")); + } + return E_OK; +} + +uint16_t FmPcdPlcrGetPortProfilesBase(t_Handle h_FmPcd, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint16_t swPortIndex = 0; + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + return p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase; +} + +uint16_t FmPcdPlcrGetPortNumOfProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint16_t swPortIndex = 0; + + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId); + + return p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles; + +} +uint32_t FmPcdPlcrBuildWritePlcrActionReg(uint16_t absoluteProfileId) +{ + return (uint32_t)(FM_PCD_PLCR_PAR_GO | + ((uint32_t)absoluteProfileId << FM_PCD_PLCR_PAR_PNUM_SHIFT)); +} + +uint32_t FmPcdPlcrBuildWritePlcrActionRegs(uint16_t absoluteProfileId) +{ + return (uint32_t)(FM_PCD_PLCR_PAR_GO | + ((uint32_t)absoluteProfileId << FM_PCD_PLCR_PAR_PNUM_SHIFT) | + FM_PCD_PLCR_PAR_PWSEL_MASK); +} + +bool FmPcdPlcrHwProfileIsValid(uint32_t profileModeReg) +{ + + if(profileModeReg & FM_PCD_PLCR_PEMODE_PI) + return TRUE; + else + return FALSE; +} + +uint32_t FmPcdPlcrBuildReadPlcrActionReg(uint16_t absoluteProfileId) +{ + return (uint32_t)(FM_PCD_PLCR_PAR_GO | + FM_PCD_PLCR_PAR_R | + ((uint32_t)absoluteProfileId << FM_PCD_PLCR_PAR_PNUM_SHIFT) | + FM_PCD_PLCR_PAR_PWSEL_MASK); +} + +uint32_t FmPcdPlcrBuildCounterProfileReg(e_FmPcdPlcrProfileCounters counter) +{ + switch(counter) + { + case(e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER): + return FM_PCD_PLCR_PAR_PWSEL_PEGPC; + case(e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER): + return FM_PCD_PLCR_PAR_PWSEL_PEYPC; + case(e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER) : + return FM_PCD_PLCR_PAR_PWSEL_PERPC; + case(e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER) : + return FM_PCD_PLCR_PAR_PWSEL_PERYPC; + case(e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER) : + return FM_PCD_PLCR_PAR_PWSEL_PERRPC; + default: + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + return 0; + } +} + +uint32_t FmPcdPlcrBuildNiaProfileReg(bool green, bool yellow, bool red) +{ + + uint32_t tmpReg32 = 0; + + if(green) + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEGNIA; + if(yellow) + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEYNIA; + if(red) + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PERNIA; + + return tmpReg32; +} + +void FmPcdPlcrUpdateRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId, uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].valid); + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].requiredAction = requiredAction; +} + +t_Error FmPcdPlcrProfileTryLock(t_Handle h_FmPcd, uint16_t profileId, bool intr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + bool ans; + if (intr) + ans = TRY_LOCK(NULL, &p_FmPcd->p_FmPcdPlcr->profiles[profileId].lock); + else + ans = TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->p_FmPcdPlcr->profiles[profileId].lock); + if (ans) + return E_OK; + return ERROR_CODE(E_BUSY); +} + +void FmPcdPlcrReleaseProfileLock(t_Handle h_FmPcd, uint16_t profileId) +{ + RELEASE_LOCK(((t_FmPcd*)h_FmPcd)->p_FmPcdPlcr->profiles[profileId].lock); +} + +/**************************************************/ +/*............Policer API.........................*/ +/**************************************************/ + +t_Handle FM_PCD_PlcrSetProfile(t_Handle h_FmPcd, + t_FmPcdPlcrProfileParams *p_Profile) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + t_FmPcdPlcrInterModuleProfileRegs plcrProfileReg; + uint32_t intFlags; + uint16_t absoluteProfileId; + t_Error err = E_OK; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE, NULL); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrSetProfile(p_FmPcd->h_Hc, p_Profile); + + p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + SANITY_CHECK_RETURN_VALUE(p_FmPcdPlcrRegs, E_INVALID_HANDLE, NULL); + + if (p_Profile->modify) + { + absoluteProfileId = (uint16_t)(PTR_TO_UINT(p_Profile->id.h_Profile)-1); + if (absoluteProfileId >= FM_PCD_PLCR_NUM_ENTRIES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("profileId too Big ")); + return NULL; + } + if (FmPcdPlcrProfileTryLock(p_FmPcd, absoluteProfileId, FALSE)) + return NULL; + } + else + { + intFlags = FmPcdLock(p_FmPcd); + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd, + p_Profile->id.newParams.profileType, + p_Profile->id.newParams.h_FmPort, + p_Profile->id.newParams.relativeProfileId, + &absoluteProfileId); + if (absoluteProfileId >= FM_PCD_PLCR_NUM_ENTRIES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("profileId too Big ")); + return NULL; + } + if(err) + { + FmPcdUnlock(p_FmPcd, intFlags); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + err = FmPcdPlcrProfileTryLock(p_FmPcd, absoluteProfileId, TRUE); + FmPcdUnlock(p_FmPcd, intFlags); + if (err) + return NULL; + } + + /* if no override, check first that this profile is unused */ + if(!p_Profile->modify) + { + /* read specified profile into profile registers */ + tmpReg32 = FmPcdPlcrBuildReadPlcrActionReg(absoluteProfileId); + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, tmpReg32); + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode); + FmPcdUnlock(p_FmPcd, intFlags); + if (tmpReg32 & FM_PCD_PLCR_PEMODE_PI) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].lock); + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Policer Profile is already used")); + return NULL; + } + } + + memset(&plcrProfileReg, 0, sizeof(t_FmPcdPlcrInterModuleProfileRegs)); + + err = FmPcdPlcrBuildProfile(h_FmPcd, p_Profile, &plcrProfileReg); + if(err) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].lock); + REPORT_ERROR(MAJOR, err, NO_MSG); + return NULL; + } + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].nextEngineOnGreen = p_Profile->nextEngineOnGreen; + memcpy(&p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].paramsOnGreen, &(p_Profile->paramsOnGreen), sizeof(u_FmPcdPlcrNextEngineParams)); + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].nextEngineOnYellow = p_Profile->nextEngineOnYellow; + memcpy(&p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].paramsOnYellow, &(p_Profile->paramsOnYellow), sizeof(u_FmPcdPlcrNextEngineParams)); + + p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].nextEngineOnRed = p_Profile->nextEngineOnRed; + memcpy(&p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].paramsOnRed, &(p_Profile->paramsOnRed), sizeof(u_FmPcdPlcrNextEngineParams)); + + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode , plcrProfileReg.fmpl_pemode); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegnia , plcrProfileReg.fmpl_pegnia); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peynia , plcrProfileReg.fmpl_peynia); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pernia , plcrProfileReg.fmpl_pernia); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pecir , plcrProfileReg.fmpl_pecir); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pecbs , plcrProfileReg.fmpl_pecbs); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pepepir_eir,plcrProfileReg.fmpl_pepepir_eir); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pepbs_ebs,plcrProfileReg.fmpl_pepbs_ebs); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pelts , plcrProfileReg.fmpl_pelts); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pects , plcrProfileReg.fmpl_pects); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pepts_ets,plcrProfileReg.fmpl_pepts_ets); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegpc , plcrProfileReg.fmpl_pegpc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peypc , plcrProfileReg.fmpl_peypc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perpc , plcrProfileReg.fmpl_perpc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perypc , plcrProfileReg.fmpl_perypc); + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perrpc , plcrProfileReg.fmpl_perrpc); + + tmpReg32 = FmPcdPlcrBuildWritePlcrActionRegs(absoluteProfileId); + WritePar(p_FmPcd, tmpReg32); + + FmPcdUnlock(p_FmPcd, intFlags); + + if (!p_Profile->modify) + FmPcdPlcrValidateProfileSw(p_FmPcd,absoluteProfileId); + + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[absoluteProfileId].lock); + + return UINT_TO_PTR((uint64_t)absoluteProfileId+1); +} + +t_Error FM_PCD_PlcrDeleteProfile(t_Handle h_FmPcd, t_Handle h_Profile) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + uint32_t tmpReg32, intFlags; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR((profileIndx < FM_PCD_PLCR_NUM_ENTRIES), E_INVALID_SELECTION); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrDeleteProfile(p_FmPcd->h_Hc, h_Profile); + + FmPcdPlcrInvalidateProfileSw(p_FmPcd,profileIndx); + + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->profileRegs.fmpl_pemode, ~FM_PCD_PLCR_PEMODE_PI); + + tmpReg32 = FmPcdPlcrBuildWritePlcrActionRegs(profileIndx); + WritePar(p_FmPcd, tmpReg32); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +/* ......... */ +/***************************************************/ +/*............Policer Profile Counter..............*/ +/***************************************************/ +uint32_t FM_PCD_PlcrGetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + uint32_t intFlags, counterVal = 0; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrGetProfileCounter(p_FmPcd->h_Hc, h_Profile, counter); + + p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + SANITY_CHECK_RETURN_VALUE(p_FmPcdPlcrRegs, E_INVALID_HANDLE, 0); + + if (profileIndx >= FM_PCD_PLCR_NUM_ENTRIES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("profileId too Big ")); + return 0; + } + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, FmPcdPlcrBuildReadPlcrActionReg(profileIndx)); + + if(!FmPcdPlcrHwProfileIsValid(GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode))) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Uninitialized profile")); + FmPcdUnlock(p_FmPcd, intFlags); + return 0; + } + + switch (counter) + { + case e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER: + counterVal = (GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegpc)); + break; + case e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peypc); + break; + case e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perpc); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perypc); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER: + counterVal = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perrpc); + break; + default: + REPORT_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + break; + } + FmPcdUnlock(p_FmPcd, intFlags); + + return counterVal; +} + + +t_Error FmPcdPlcrCcGetSetParams(t_Handle h_FmPcd, uint16_t profileIndx ,uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdPlcr *p_FmPcdPlcr = p_FmPcd->p_FmPcdPlcr; + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs = p_FmPcdPlcr->p_FmPcdPlcrRegs; + uint32_t tmpReg32, intFlags; + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrCcGetSetParams(p_FmPcd->h_Hc, profileIndx, requiredAction); + + if (profileIndx >= FM_PCD_PLCR_NUM_ENTRIES) + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Policer profile out of range")); + + if (FmPcdPlcrProfileTryLock(p_FmPcd, profileIndx, FALSE)) + RETURN_ERROR(MAJOR, E_INVALID_STATE,("Lock on PP FAILED")); + + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, FmPcdPlcrBuildReadPlcrActionReg(profileIndx)); + + if(!FmPcdPlcrHwProfileIsValid(GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pemode))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].lock); + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Policer profile is not valid")); + } + + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].valid); + + if(!p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].pointedOwners || + !(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].requiredAction & requiredAction)) + { + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + if((p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].nextEngineOnGreen!= e_FM_PCD_DONE) || + (p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].nextEngineOnYellow!= e_FM_PCD_DONE) || + (p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].nextEngineOnRed!= e_FM_PCD_DONE)) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR (MAJOR, E_OK, ("In this case the next engine can be e_FM_PCD_DONE")); + } + + if(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].paramsOnGreen.action == e_FM_PCD_ENQ_FRAME) + { + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegnia); + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegnia, tmpReg32); + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEGNIA; + WritePar(p_FmPcd, tmpReg32); + } + + if(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].paramsOnYellow.action == e_FM_PCD_ENQ_FRAME) + { + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peynia); + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peynia, tmpReg32); + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PEYNIA; + WritePar(p_FmPcd, tmpReg32); + } + + if(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].paramsOnRed.action == e_FM_PCD_ENQ_FRAME) + { + tmpReg32 = GET_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pernia); + if(!(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next engine of this policer profile has to be assigned to FM_PCD_DONE")); + } + tmpReg32 |= NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA; + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pernia, tmpReg32); + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FM_PCD_PLCR_PAR_PWSEL_PERNIA; + WritePar(p_FmPcd, tmpReg32); + } + } + } + FmPcdUnlock(p_FmPcd, intFlags); + + p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].pointedOwners += 1; + p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].requiredAction |= requiredAction; + + RELEASE_LOCK(p_FmPcd->p_FmPcdPlcr->profiles[profileIndx].lock); + + return E_OK; +} + +t_Error FM_PCD_PlcrSetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_FmPcdPlcrRegs *p_FmPcdPlcrRegs; + uint32_t tmpReg32, intFlags; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + if (p_FmPcd->h_Hc) + return FmHcPcdPlcrSetProfileCounter(p_FmPcd->h_Hc, h_Profile, counter, value); + + p_FmPcdPlcrRegs = p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs; + SANITY_CHECK_RETURN_ERROR(p_FmPcdPlcrRegs, E_INVALID_HANDLE); + + intFlags = FmPcdLock(p_FmPcd); + switch (counter) + { + case e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_pegpc, value); + break; + case e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_peypc, value); + break; + case e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perpc, value); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perypc ,value); + break; + case e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER: + WRITE_UINT32(p_FmPcdPlcrRegs->profileRegs.fmpl_perrpc ,value); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + /* Activate the atomic write action by writing FMPL_PAR with: GO=1, RW=1, PSI=0, PNUM = + * Profile Number, PWSEL=0xFFFF (select all words). + */ + tmpReg32 = FmPcdPlcrBuildWritePlcrActionReg(profileIndx); + tmpReg32 |= FmPcdPlcrBuildCounterProfileReg(counter); + WritePar(p_FmPcd, tmpReg32); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +t_Error FM_PCD_ConfigPlcrNumOfSharedProfiles(t_Handle h_FmPcd, uint16_t numOfSharedPlcrProfiles) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + + p_FmPcd->p_FmPcdPlcr->numOfSharedProfiles = numOfSharedPlcrProfiles; + + return E_OK; +} + + +/* ... */ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_PlcrDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i = 0; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PLCR_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + else + { + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs, ("FmPcdPlcrRegs Regs")); + + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_gcr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_gsr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_evr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ier); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ifr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eevr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eier); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eifr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rpcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ypcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rrpcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rypcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_tpcnt); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_flmcnt); + + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_serc); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_upcr); + DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_dpmr); + + + DUMP_TITLE(&p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_pmr, ("fmpl_pmr")); + DUMP_SUBSTRUCT_ARRAY(i, 63) + { + DUMP_MEMORY(&p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_pmr[i], sizeof(uint32_t)); + } + + return E_OK; + } +} + +t_Error FM_PCD_PlcrProfileDumpRegs(t_Handle h_FmPcd, t_Handle h_Profile) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdPlcrInterModuleProfileRegs *p_ProfilesRegs; + uint32_t tmpReg, intFlags; + uint16_t profileIndx = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PLCR_PROFILE_DUMP_REGS; + memcpy(msg.msgBody, (uint8_t *)&h_Profile, sizeof(uint32_t)); + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(uint32_t), + NULL, + NULL, + NULL, + NULL); + } + else + { + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs, ("FmPcdPlcrRegs Profile Regs")); + + p_ProfilesRegs = &p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->profileRegs; + + tmpReg = FmPcdPlcrBuildReadPlcrActionReg((uint16_t)profileIndx); + intFlags = FmPcdLock(p_FmPcd); + WritePar(p_FmPcd, tmpReg); + + DUMP_TITLE(p_ProfilesRegs, ("Profile %d regs", profileIndx)); + + DUMP_VAR(p_ProfilesRegs, fmpl_pemode); + DUMP_VAR(p_ProfilesRegs, fmpl_pegnia); + DUMP_VAR(p_ProfilesRegs, fmpl_peynia); + DUMP_VAR(p_ProfilesRegs, fmpl_pernia); + DUMP_VAR(p_ProfilesRegs, fmpl_pecir); + DUMP_VAR(p_ProfilesRegs, fmpl_pecbs); + DUMP_VAR(p_ProfilesRegs, fmpl_pepepir_eir); + DUMP_VAR(p_ProfilesRegs, fmpl_pepbs_ebs); + DUMP_VAR(p_ProfilesRegs, fmpl_pelts); + DUMP_VAR(p_ProfilesRegs, fmpl_pects); + DUMP_VAR(p_ProfilesRegs, fmpl_pepts_ets); + DUMP_VAR(p_ProfilesRegs, fmpl_pegpc); + DUMP_VAR(p_ProfilesRegs, fmpl_peypc); + DUMP_VAR(p_ProfilesRegs, fmpl_perpc); + DUMP_VAR(p_ProfilesRegs, fmpl_perypc); + DUMP_VAR(p_ProfilesRegs, fmpl_perrpc); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; + } +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_prs.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_prs.c @@ -0,0 +1,517 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_pcd.c + + @Description FM PCD ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "net_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_pcd_ipc.h" + + +t_Handle PrsConfig(t_FmPcd *p_FmPcd,t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcdPrs *p_FmPcdPrs; + uintptr_t baseAddr; + + UNUSED(p_FmPcd); + UNUSED(p_FmPcdParams); + + p_FmPcdPrs = (t_FmPcdPrs *) XX_Malloc(sizeof(t_FmPcdPrs)); + if (!p_FmPcdPrs) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Parser structure allocation FAILED")); + return NULL; + } + memset(p_FmPcdPrs, 0, sizeof(t_FmPcdPrs)); + + if (p_FmPcd->guestId == NCSW_MASTER_ID) + { + baseAddr = FmGetPcdPrsBaseAddr(p_FmPcdParams->h_Fm); + p_FmPcdPrs->p_SwPrsCode = (uint32_t *)UINT_TO_PTR(baseAddr); + p_FmPcdPrs->p_FmPcdPrsRegs = (t_FmPcdPrsRegs *)UINT_TO_PTR(baseAddr + PRS_REGS_OFFSET); + } + + p_FmPcdPrs->fmPcdPrsPortIdStatistics = 0; + p_FmPcd->p_FmPcdDriverParam->prsMaxParseCycleLimit = DEFAULT_prsMaxParseCycleLimit; + p_FmPcd->exceptions |= (DEFAULT_fmPcdPrsErrorExceptions | DEFAULT_fmPcdPrsExceptions); + + return p_FmPcdPrs; +} + +static void PcdPrsErrorException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, mask, force; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + event = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perr); + mask = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perer); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perfr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perfr, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->perr, event); + + DBG(TRACE, ("parser error - 0x%08x\n",event)); + + if(event & FM_PCD_PRS_DOUBLE_ECC) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC); +} + +static void PcdPrsException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, force; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + event = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevr); + event &= GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pever); + + ASSERT_COND(event & FM_PCD_PRS_SINGLE_ECC); + + DBG(TRACE, ("parser event - 0x%08x\n",event)); + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevfr); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevfr, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->pevr, event); + + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC); +} + +static uint32_t GetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i; + t_FmPcdPrsLabelParams *p_Label; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE, 0); + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + ASSERT_COND(p_FmPcd->p_FmPcdPrs->currLabel < FM_PCD_PRS_NUM_OF_LABELS); + + for (i=0; i < p_FmPcd->p_FmPcdPrs->currLabel; i++) + { + p_Label = &p_FmPcd->p_FmPcdPrs->labelsTable[i]; + + if ((hdr == p_Label->hdr) && (indexPerHdr == p_Label->indexPerHdr)) + return p_Label->instructionOffset; + } + + REPORT_ERROR(MAJOR, E_NOT_FOUND, ("Sw Parser attachment Not found")); + return (uint32_t)ILLEGAL_BASE; +} + +t_Error PrsInit(t_FmPcd *p_FmPcd) +{ + t_FmPcdDriverParam *p_Param = p_FmPcd->p_FmPcdDriverParam; + t_FmPcdPrsRegs *p_Regs = p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs; + uint32_t tmpReg; + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + return E_OK; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + +#ifdef FM_PRS_MEM_ERRATA_FMAN_SW003 + { + uint32_t i; + uint32_t regsToGlobalOffset = 0x840; + uint32_t firstPortToGlobalOffset = 0x45800; + uint64_t globalAddr = PTR_TO_UINT(p_Regs) - regsToGlobalOffset; + uint32_t firstPortAddr = (uint32_t)(globalAddr - (uint64_t)firstPortToGlobalOffset); + uint32_t portSize = 0x1000; + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + /* clear all parser memory */ + IOMemSet32(UINT_TO_PTR(globalAddr), 0x00000000, 0x800); + for(i = 0;i<16;i++) + IOMemSet32(UINT_TO_PTR(firstPortAddr+i*portSize), (uint8_t)0x00000000, (uint32_t)0x80); + } + } +#endif /* FM_PRS_MEM_ERRATA_FMAN_SW003 */ + + /**********************RPCLIM******************/ + WRITE_UINT32(p_Regs->rpclim, (uint32_t)p_Param->prsMaxParseCycleLimit); + /**********************FMPL_RPCLIM******************/ + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_ERR, PcdPrsErrorException, p_FmPcd); + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_NORMAL, PcdPrsException, p_FmPcd); + + /**********************PEVR******************/ + WRITE_UINT32(p_Regs->pevr, (FM_PCD_PRS_SINGLE_ECC | FM_PCD_PRS_PORT_IDLE_STS) ); + /**********************PEVR******************/ + + /**********************PEVER******************/ + if(p_FmPcd->exceptions & FM_PCD_EX_PRS_SINGLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + WRITE_UINT32(p_Regs->pever, FM_PCD_PRS_SINGLE_ECC); + } + else + WRITE_UINT32(p_Regs->pever, 0); + /**********************PEVER******************/ + + /**********************PERR******************/ + WRITE_UINT32(p_Regs->perr, FM_PCD_PRS_DOUBLE_ECC); + + /**********************PERR******************/ + + /**********************PERER******************/ + tmpReg = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_PRS_DOUBLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + tmpReg |= FM_PCD_PRS_DOUBLE_ECC; + } + WRITE_UINT32(p_Regs->perer, tmpReg); + /**********************PERER******************/ + + /**********************PPCS******************/ + WRITE_UINT32(p_Regs->ppsc, p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics); + /**********************PPCS******************/ + +#ifdef FM_PRS_L4_SHELL_ERRATA_FMANb + { + uint32_t i, j; + t_FmRevisionInfo revInfo; + uint8_t swPrsL4Patch[] = SW_PRS_L4_PATCH; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + /* load sw parser L4 patch */ + for(i=0;ip_FmPcdPrs->p_SwPrsCode+ FM_PCD_PRS_SW_OFFSET/4 + i), tmpReg); + } + p_FmPcd->p_FmPcdPrs->p_CurrSwPrs = FM_PCD_PRS_SW_OFFSET/4 + p_FmPcd->p_FmPcdPrs->p_SwPrsCode+sizeof(swPrsL4Patch)/4; + } + } +#endif /* FM_PRS_L4_SHELL_ERRATA_FMANb */ + + return E_OK; +} + +void PrsFree(t_FmPcd *p_FmPcd ) +{ + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_ERR); + /* register even if no interrupts enabled, to allow future enablement */ + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_PRS, 0, e_FM_INTR_TYPE_NORMAL); +} + +void PrsEnable(t_FmPcd *p_FmPcd ) +{ + t_FmPcdPrsRegs *p_Regs = p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + WRITE_UINT32(p_Regs->rpimac, GET_UINT32(p_Regs->rpimac) | FM_PCD_PRS_RPIMAC_EN); +} + +void PrsDisable(t_FmPcd *p_FmPcd ) +{ + t_FmPcdPrsRegs *p_Regs = p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + WRITE_UINT32(p_Regs->rpimac, GET_UINT32(p_Regs->rpimac) & ~FM_PCD_PRS_RPIMAC_EN); +} + +t_Error PrsIncludePortInStatistics(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, bool include) +{ + uint32_t bitMask = 0; + uint8_t prsPortId; + + SANITY_CHECK_RETURN_ERROR((hardwarePortId >=1 && hardwarePortId <= 16), E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + + GET_FM_PCD_PRS_PORT_ID(prsPortId, hardwarePortId); + GET_FM_PCD_INDEX_FLAG(bitMask, prsPortId); + + if(include) + p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics |= bitMask; + else + p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics &= ~bitMask; + + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->ppsc, p_FmPcd->p_FmPcdPrs->fmPcdPrsPortIdStatistics); + + return E_OK; +} + +t_Error FmPcdPrsIncludePortInStatistics(t_Handle h_FmPcd, uint8_t hardwarePortId, bool include) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdIpcPrsIncludePort prsIncludePortParams; + t_FmPcdIpcMsg msg; + t_Error err; + + SANITY_CHECK_RETURN_ERROR((hardwarePortId >=1 && hardwarePortId <= 16), E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + prsIncludePortParams.hardwarePortId = hardwarePortId; + prsIncludePortParams.include = include; + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PRS_INC_PORT_STATS; + memcpy(msg.msgBody, &prsIncludePortParams, sizeof(prsIncludePortParams)); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(prsIncludePortParams), + NULL, + NULL, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + return E_OK; + } + return PrsIncludePortInStatistics(p_FmPcd, hardwarePortId, include); +} + +uint32_t FmPcdGetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_Error err = E_OK; + t_FmPcdIpcSwPrsLable labelParams; + t_FmPcdIpcMsg msg; + uint32_t prsOffset = 0; + t_FmPcdIpcReply reply; + uint32_t replyLength; + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + labelParams.enumHdr = (uint32_t)hdr; + labelParams.indexPerHdr = indexPerHdr; + msg.msgId = FM_PCD_GET_SW_PRS_OFFSET; + memcpy(msg.msgBody, &labelParams, sizeof(labelParams)); + replyLength = sizeof(uint32_t) + sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) +sizeof(labelParams), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != sizeof(uint32_t) + sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + memcpy((uint8_t*)&prsOffset, reply.replyBody, sizeof(uint32_t)); + return prsOffset; + } + + return GetSwPrsOffset(h_FmPcd, hdr, indexPerHdr); +} + +void FM_PCD_SetPrsStatistics(t_Handle h_FmPcd, bool enable) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_SetPrsStatistics - guest mode!")); + return; + } + if(enable) + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->ppsc, FM_PCD_PRS_PPSC_ALL_PORTS); + else + WRITE_UINT32(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs->ppsc, 0); + +} + +t_Error FM_PCD_PrsLoadSw(t_Handle h_FmPcd, t_FmPcdPrsSwParams *p_SwPrs) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t *p_LoadTarget, tmpReg; + int i, j; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_SwPrs, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->enabled, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_PrsLoadSw - guest mode!")); + + if(!p_SwPrs->override) + { + if(p_FmPcd->p_FmPcdPrs->p_CurrSwPrs > p_FmPcd->p_FmPcdPrs->p_SwPrsCode + p_SwPrs->base*2/4) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SW parser base must be larger than current loaded code")); + } + if(p_SwPrs->size > FM_PCD_SW_PRS_SIZE - FM_PCD_PRS_SW_TAIL_SIZE - p_SwPrs->base*2) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_SwPrs->size may not be larger than MAX_SW_PRS_CODE_SIZE")); + if(p_SwPrs->size % 4) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_SwPrs->size must be divisible by 4")); + + /* save sw parser labels */ + if(p_SwPrs->override) + p_FmPcd->p_FmPcdPrs->currLabel = 0; + if(p_FmPcd->p_FmPcdPrs->currLabel+ p_SwPrs->numOfLabels > FM_PCD_PRS_NUM_OF_LABELS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Exceeded number of labels allowed ")); + memcpy(&p_FmPcd->p_FmPcdPrs->labelsTable[p_FmPcd->p_FmPcdPrs->currLabel], p_SwPrs->labelsTable, p_SwPrs->numOfLabels*sizeof(t_FmPcdPrsLabelParams)); + p_FmPcd->p_FmPcdPrs->currLabel += p_SwPrs->numOfLabels; + /* load sw parser code */ + p_LoadTarget = p_FmPcd->p_FmPcdPrs->p_SwPrsCode + p_SwPrs->base*2/4; + for(i=0;isize/4;i++) + { + tmpReg = 0; + for(j =0;j<4;j++) + { + tmpReg <<= 8; + tmpReg |= *(p_SwPrs->p_Code+i*4+j); + } + WRITE_UINT32(*(p_LoadTarget + i), tmpReg); + } + p_FmPcd->p_FmPcdPrs->p_CurrSwPrs = p_FmPcd->p_FmPcdPrs->p_SwPrsCode + p_SwPrs->base*2/4 + p_SwPrs->size/4; + + /* copy data parameters */ + for(i=0;ip_FmPcdPrs->p_SwPrsCode+PRS_SW_DATA/4+i), p_SwPrs->swPrsDataParams[i]); + + + /* Clear last 4 bytes */ + WRITE_UINT32(*(p_FmPcd->p_FmPcdPrs->p_SwPrsCode+(PRS_SW_DATA-FM_PCD_PRS_SW_TAIL_SIZE)/4), 0); + + return E_OK; +} + +t_Error FM_PCD_ConfigPrsMaxCycleLimit(t_Handle h_FmPcd,uint16_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdDriverParam, E_INVALID_HANDLE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_ConfigPrsMaxCycleLimit - guest mode!")); + + p_FmPcd->p_FmPcdDriverParam->prsMaxParseCycleLimit = value; + + return E_OK; +} + + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_PrsDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_PRS_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs, ("FmPcdPrsRegs Regs")); + + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,rpclim); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,rpimac); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pmeec); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pevr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pever); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pevfr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,perr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,perer); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,perfr); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,ppsc); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pds); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l2rrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l3rrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l4rrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,srrs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l2rres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l3rres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,l4rres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,srres); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,spcs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,spscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,hxscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mrcs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mwcs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mrscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,mwscs); + DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fcscs); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd_ipc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_pcd_ipc.h @@ -0,0 +1,326 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_pcd_ipc.h + + @Description FM PCD Inter-Partition prototypes, structures and definitions. +*//***************************************************************************/ +#ifndef __FM_PCD_IPC_H +#define __FM_PCD_IPC_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description Structure for getting a sw parser address according to a label + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. +*//***************************************************************************/ +typedef _Packed struct t_FmPcdIpcSwPrsLable +{ + uint32_t enumHdr; /**< IN. The existance of this header will envoke + the sw parser code. */ + uint8_t indexPerHdr; /**< IN. Normally 0, if more than one sw parser + attachments for the same header, use this + + index to distinguish between them. */ +} _PackedType t_FmPcdIpcSwPrsLable; + +/**************************************************************************//** + @Description Structure for port-PCD communication. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. + Some fields are optional (depending on configuration) and + will be analized by the port and FM modules accordingly. +*//***************************************************************************/ +typedef struct t_FmPcdIpcKgSchemesParams +{ + uint8_t guestId; /**< IN */ + uint8_t numOfSchemes; /**< IN */ + uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES]; /**< OUT */ +} _PackedType t_FmPcdIpcKgSchemesParams; + +typedef struct t_FmPcdIpcKgClsPlanParams +{ + uint8_t guestId; /**< IN */ + uint16_t numOfClsPlanEntries; /**< IN */ + uint8_t clsPlanBase; /**< IN in alloc only */ +} _PackedType t_FmPcdIpcKgClsPlanParams; + +typedef _Packed struct t_FmPcdIpcPlcrAllocParams +{ + uint16_t num; + uint8_t hardwarePortId; + uint16_t plcrProfilesBase; +} _PackedType t_FmPcdIpcPlcrAllocParams; + +typedef _Packed struct t_FmPcdIpcSharedPlcrAllocParams +{ + uint16_t num; /**< IN */ + //uint16_t profilesIds[FM_PCD_PLCR_NUM_ENTRIES]; /**< OUT */ + uint32_t sharedProfilesMask[8]; +} _PackedType t_FmPcdIpcSharedPlcrAllocParams; + +typedef _Packed struct t_FmPcdIpcPrsIncludePort +{ + uint8_t hardwarePortId; /* IN */ + bool include; /* IN */ +} _PackedType t_FmPcdIpcPrsIncludePort; + + +#define FM_PCD_MAX_REPLY_SIZE 16 +#define FM_PCD_MAX_MSG_SIZE 36 +#define FM_PCD_MAX_REPLY_BODY_SIZE 36 + +typedef _Packed struct +{ + uint32_t msgId; + uint8_t msgBody[FM_PCD_MAX_MSG_SIZE]; +} _PackedType t_FmPcdIpcMsg; + +typedef _Packed struct t_FmPcdIpcReply +{ + uint32_t error; + uint8_t replyBody[FM_PCD_MAX_REPLY_BODY_SIZE]; +} _PackedType t_FmPcdIpcReply; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + + +/**************************************************************************//** + @Function FM_PCD_ALLOC_KG_SCHEMES + + @Description Used by FM PCD front-end in order to allocate KG resources + + @Param[in/out] t_FmPcdIpcKgAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_KG_SCHEMES 3 + +/**************************************************************************//** + @Function FM_PCD_FREE_KG_SCHEMES + + @Description Used by FM PCD front-end in order to Free KG resources + + @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_KG_SCHEMES 4 + +/**************************************************************************//** + @Function FM_PCD_ALLOC_PROFILES + + @Description Used by FM PCD front-end in order to allocate Policer profiles + + @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_PROFILES 5 + +/**************************************************************************//** + @Function FM_PCD_FREE_PROFILES + + @Description Used by FM PCD front-end in order to Free Policer profiles + + @Param[in/out] t_FmPcdIpcPlcrAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_PROFILES 6 + +/**************************************************************************//** + @Function FM_PCD_GET_PHYS_MURAM_BASE + + @Description Used by FM PCD front-end in order to get MURAM base address + + @Param[in/out] t_FmPcdIcPhysAddr Pointer +*//***************************************************************************/ +#define FM_PCD_GET_PHYS_MURAM_BASE 7 + +/**************************************************************************//** + @Function FM_PCD_GET_SW_PRS_OFFSET + + @Description Used by FM front-end to get the SW parser offset of the start of + code relevant to a given label. + + @Param[in/out] t_FmPcdIpcSwPrsLable Pointer +*//***************************************************************************/ +#define FM_PCD_GET_SW_PRS_OFFSET 8 + +/**************************************************************************//** + @Function FM_PCD_ALLOC_SHARED_PROFILES + + @Description Used by FM PCD front-end in order to allocate shared profiles + + @Param[in/out] t_FmPcdIpcSharedPlcrAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_SHARED_PROFILES 9 + +/**************************************************************************//** + @Function FM_PCD_FREE_SHARED_PROFILES + + @Description Used by FM PCD front-end in order to free shared profiles + + @Param[in/out] t_FmPcdIpcSharedPlcrAllocParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_SHARED_PROFILES 10 + +/**************************************************************************//** + @Function FM_PCD_MASTER_IS_ENABLED + + @Description Used by FM front-end in order to verify + PCD enablement. + + @Param[in] bool Pointer +*//***************************************************************************/ +#define FM_PCD_MASTER_IS_ENABLED 15 + +/**************************************************************************//** + @Function FM_PCD_GUEST_DISABLE + + @Description Used by FM front-end to inform back-end when + front-end PCD is disabled + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_GUEST_DISABLE 16 + +/**************************************************************************//** + @Function FM_PCD_DUMP_REGS + + @Description Used by FM front-end to dump all PCD registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_DUMP_REGS 17 + +/**************************************************************************//** + @Function FM_PCD_KG_DUMP_REGS + + @Description Used by FM front-end to dump KG registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_KG_DUMP_REGS 18 + +/**************************************************************************//** + @Function FM_PCD_PLCR_DUMP_REGS + + @Description Used by FM front-end to dump PLCR registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_PLCR_DUMP_REGS 19 + +/**************************************************************************//** + @Function FM_PCD_PLCR_PROFILE_DUMP_REGS + + @Description Used by FM front-end to dump PLCR specified profile registers + + @Param[in] t_Handle Pointer +*//***************************************************************************/ +#define FM_PCD_PLCR_PROFILE_DUMP_REGS 20 + +/**************************************************************************//** + @Function FM_PCD_PRS_DUMP_REGS + + @Description Used by FM front-end to dump PRS registers + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_PRS_DUMP_REGS 21 + +/**************************************************************************//** + @Function FM_PCD_FREE_KG_CLSPLAN + + @Description Used by FM PCD front-end in order to Free KG classification plan entries + + @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer +*//***************************************************************************/ +#define FM_PCD_FREE_KG_CLSPLAN 22 + +/**************************************************************************//** + @Function FM_PCD_ALLOC_KG_CLSPLAN + + @Description Used by FM PCD front-end in order to allocate KG classification plan entries + + @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer +*//***************************************************************************/ +#define FM_PCD_ALLOC_KG_CLSPLAN 23 + +/**************************************************************************//** + @Function FM_PCD_MASTER_IS_ALIVE + + @Description Used by FM front-end to check that back-end exists + + @Param[in] None +*//***************************************************************************/ +#define FM_PCD_MASTER_IS_ALIVE 24 + +/**************************************************************************//** + @Function FM_PCD_GET_COUNTER + + @Description Used by FM front-end to read PCD counters + + @Param[in/out] t_FmPcdIpcGetCounter Pointer +*//***************************************************************************/ +#define FM_PCD_GET_COUNTER 25 + +/**************************************************************************//** + @Function FM_PCD_PRS_INC_PORT_STATS + + @Description Used by FM front-end to set/clear statistics for port + + @Param[in/out] t_FmPcdIpcPrsIncludePort Pointer +*//***************************************************************************/ +#define FM_PCD_PRS_INC_PORT_STATS 26 +/** @} */ /* end of FM_PCD_IPC_grp group */ +/** @} */ /* end of FM_grp group */ + + +#endif /* __FM_PCD_IPC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_kg.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Pcd/fm_kg.c @@ -0,0 +1,3189 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_kg.c + + @Description FM PCD ... +*//***************************************************************************/ +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "debug_ext.h" +#include "net_ext.h" +#include "fm_port_ext.h" + +#include "fm_common.h" +#include "fm_pcd.h" +#include "fm_hc.h" + +#include "fm_pcd_ipc.h" + + +static t_Error WriteKgarWait(t_FmPcd *p_FmPcd, uint32_t kgar) +{ + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgar, kgar); + /* Wait for GO to be idle and read error */ + while ((kgar = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgar)) & FM_PCD_KG_KGAR_GO) ; + if (kgar & FM_PCD_KG_KGAR_ERR) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Keygen scheme access violation")); + return E_OK; +} + +static e_FmPcdKgExtractDfltSelect GetGenericSwDefault(t_FmPcdKgExtractDflt swDefaults[], uint8_t numOfSwDefaults, uint8_t code) +{ + int i; + + switch(code) + { + case( KG_SCH_GEN_PARSE_RESULT_N_FQID): + case( KG_SCH_GEN_DEFAULT): + case( KG_SCH_GEN_NEXTHDR): + for(i=0 ; i mask 0x1-0x7F */ + if(bitOffset<8) + { + mask = 0; + for(i = 0 ; i < bitOffset ; i++, walking1Mask <<= 1) + mask |= walking1Mask; + } + else + { + mask = 0xFF; + numOfOnesToClear = 0; + if(fqid && bitOffset>24) + /* bitOffset 25-31 --> mask 0xFE-0x80 */ + numOfOnesToClear = (uint8_t)(bitOffset-24); + else + /* bitOffset 9-15 --> mask 0xFE-0x80 */ + if(!fqid && bitOffset>8) + numOfOnesToClear = (uint8_t)(bitOffset-8); + for(i = 0 ; i < numOfOnesToClear ; i++, walking1Mask <<= 1) + mask &= ~walking1Mask; + /* bitOffset 8-24 for FQID, 8 for PP --> no mask (0xFF)*/ + } + return mask; +} + + +t_Error FmPcdKgBuildClsPlanGrp(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_Grp, t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgClsPlanGrp *p_ClsPlanGrp; + t_FmPcdIpcKgClsPlanParams kgAlloc; + t_Error err = E_OK; + uint32_t oredVectors = 0; + uint32_t intFlags; + int i, j; + + if (p_Grp->numOfOptions >= FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("Too many classification plan basic options selected.")); + + intFlags = FmPcdLock(p_FmPcd); + + /* find a new clsPlan group */ + for(i = 0;ip_FmPcdKg->clsPlanGrps[i].used) + break; + if(i== FM_MAX_NUM_OF_PORTS) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_FULL,("No classification plan groups available.")); + } + p_FmPcd->p_FmPcdKg->clsPlanGrps[i].used = TRUE; + p_Grp->clsPlanGrpId = (uint8_t)i; + + if(p_Grp->numOfOptions == 0) + p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = (uint8_t)i; + + if (!TRY_LOCK(NULL, &p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock)) + { + FmPcdUnlock(p_FmPcd, intFlags); + return ERROR_CODE(E_BUSY); + } + FmPcdUnlock(p_FmPcd, intFlags); + + p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[i]; + p_ClsPlanGrp->netEnvId = p_Grp->netEnvId; + p_ClsPlanGrp->owners = 0; + FmPcdSetClsPlanGrpId(p_FmPcd, p_Grp->netEnvId, p_Grp->clsPlanGrpId); + FmPcdIncNetEnvOwners(p_FmPcd, p_Grp->netEnvId); + + p_ClsPlanGrp->sizeOfGrp = (uint16_t)(1<numOfOptions); + /* a minimal group of 8 is required */ + if(p_ClsPlanGrp->sizeOfGrp < CLS_PLAN_NUM_PER_GRP) + p_ClsPlanGrp->sizeOfGrp = CLS_PLAN_NUM_PER_GRP; + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + err = KgAllocClsPlanEntries(h_FmPcd, p_ClsPlanGrp->sizeOfGrp, p_FmPcd->guestId, &p_ClsPlanGrp->baseEntry); + + if(err) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + } + + } + else + { + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + /* in GUEST_PARTITION, we use the IPC, to also set a private driver group if required */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + memset(&kgAlloc, 0, sizeof(kgAlloc)); + kgAlloc.guestId = p_FmPcd->guestId; + kgAlloc.numOfClsPlanEntries = p_ClsPlanGrp->sizeOfGrp; + msg.msgId = FM_PCD_ALLOC_KG_CLSPLAN; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = (sizeof(uint32_t) + sizeof(p_ClsPlanGrp->baseEntry)); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if (replyLength != (sizeof(uint32_t) + sizeof(p_ClsPlanGrp->baseEntry))) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + } + if ((t_Error)reply.error != E_OK) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + RETURN_ERROR(MINOR, (t_Error)reply.error, NO_MSG); + } + + p_ClsPlanGrp->baseEntry = *(uint8_t*)(reply.replyBody); + } + + /* build classification plan entries parameters */ + p_ClsPlanSet->baseEntry = p_ClsPlanGrp->baseEntry; + p_ClsPlanSet->numOfClsPlanEntries = p_ClsPlanGrp->sizeOfGrp; + + oredVectors = 0; + for(i = 0; inumOfOptions; i++) + { + oredVectors |= p_Grp->optVectors[i]; + /* save an array of used options - the indexes represent the power of 2 index */ + p_ClsPlanGrp->optArray[i] = p_Grp->options[i]; + } + /* set the classification plan relevant entries so that all bits + * relevant to the list of options is cleared + */ + for(j = 0; jsizeOfGrp; j++) + p_ClsPlanSet->vectors[j] = ~oredVectors; + + for(i = 0; inumOfOptions; i++) + { + /* option i got the place 2^i in the clsPlan array. all entries that + * have bit i set, should have the vector bit cleared. So each option + * has one location that it is exclusive (1,2,4,8...) and represent the + * presence of that option only, and other locations that represent a + * combination of options. + * e.g: + * If ethernet-BC is option 1 it gets entry 2 in the table. Entry 2 + * now represents a frame with ethernet-BC header - so the bit + * representing ethernet-BC should be set and all other option bits + * should be cleared. + * Entries 2,3,6,7,10... also have ethernet-BC and therefore have bit + * vector[1] set, but they also have other bits set: + * 3=1+2, options 0 and 1 + * 6=2+4, options 1 and 2 + * 7=1+2+4, options 0,1,and 2 + * 10=2+8, options 1 and 3 + * etc. + * */ + + /* now for each option (i), we set their bits in all entries (j) + * that contain bit 2^i. + */ + for(j = 0; jsizeOfGrp; j++) + { + if(j & (1<vectors[j] |= p_Grp->optVectors[i]; + } + } + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock); + + return E_OK; +} + +void FmPcdKgDestroyClsPlanGrp(t_Handle h_FmPcd, uint8_t grpId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdIpcKgClsPlanParams kgAlloc; + t_Error err; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + /* check that no port is bound to this clsPlan */ + if(p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].owners) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete a clsPlan grp that has ports bound to")); + return; + } + + FmPcdDecNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].netEnvId); + + /* free blocks */ + if(p_FmPcd->guestId == NCSW_MASTER_ID) + { + KgFreeClsPlanEntries(h_FmPcd, + p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp, + p_FmPcd->guestId, + p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry); + } + else /* in GUEST_PARTITION, we use the IPC, to also set a private driver group if required */ + { + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + kgAlloc.guestId = p_FmPcd->guestId; + kgAlloc.numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp; + kgAlloc.clsPlanBase = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry; + msg.msgId = FM_PCD_FREE_KG_CLSPLAN; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return; + } + if (replyLength != sizeof(uint32_t)) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + return; + } + if((t_Error)reply.error != E_OK) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Free KG clsPlan failed")); + return; + } + } + + if(grpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId) + p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN; + /* clear clsPlan driver structure */ + memset(&p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId], 0, sizeof(t_FmPcdKgClsPlanGrp)); +} + +t_Error FmPcdKgBuildBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort, uint32_t *p_SpReg, bool add) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t j, schemesPerPortVector = 0; + t_FmPcdKgScheme *p_Scheme; + uint8_t i, relativeSchemeId; + uint32_t tmp, walking1Mask; + uint8_t swPortIndex = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + /* for each scheme */ + for(i = 0; inumOfSchemes; i++) + { + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, p_BindPort->schemesIds[i]); + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if(add) + { + if (!FmPcdKgIsSchemeValidSw(h_FmPcd, relativeSchemeId)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Requested scheme is invalid.")); + + p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId]; + /* check netEnvId of the port against the scheme netEnvId */ + if((p_Scheme->netEnvId != p_BindPort->netEnvId) && (p_Scheme->netEnvId != ILLEGAL_NETENV)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port may not be bound to requested scheme - differ in netEnvId")); + + /* if next engine is private port policer profile, we need to check that it is valid */ + HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, p_BindPort->hardwarePortId); + if(p_Scheme->nextRelativePlcrProfile) + { + for(j = 0;jnumOfProfiles;j++) + { + ASSERT_COND(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].h_FmPort); + if(p_Scheme->relativeProfileId+j >= p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Relative profile not in range")); + if(!FmPcdPlcrIsProfileValid(p_FmPcd, (uint16_t)(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase + p_Scheme->relativeProfileId + j))) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Relative profile not valid.")); + } + } + if(!p_BindPort->useClsPlan) + { + /* if this port does not use clsPlan, it may not be bound to schemes with units that contain + cls plan options. Schemes that are used only directly, should not be checked. + it also may not be bound to schemes that go to CC with units that are options - so we OR + the match vector and the grpBits (= ccUnits) */ + if ((p_Scheme->matchVector != SCHEME_ALWAYS_DIRECT) || p_Scheme->ccUnits) + { + walking1Mask = 0x80000000; + tmp = (p_Scheme->matchVector == SCHEME_ALWAYS_DIRECT)? 0:p_Scheme->matchVector; + tmp |= p_Scheme->ccUnits; + while (tmp) + { + if(tmp & walking1Mask) + { + tmp &= ~walking1Mask; + if(!PcdNetEnvIsUnitWithoutOpts(p_FmPcd, p_Scheme->netEnvId, walking1Mask)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port (without clsPlan) may not be bound to requested scheme - uses clsPlan options")); + } + walking1Mask >>= 1; + } + } + } + } + /* build vector */ + schemesPerPortVector |= 1 << (31 - p_BindPort->schemesIds[i]); + } + + *p_SpReg = schemesPerPortVector; + + return E_OK; +} + +void FmPcdKgIncSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i; + t_FmPcdKgScheme *p_Scheme; + + /* for each scheme - update owners counters */ + for(i = 0; inumOfSchemes; i++) + { + p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[p_BindPort->schemesIds[i]]; + + /* increment owners number */ + p_Scheme->owners++; + } +} + +void FmPcdKgDecSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i; + t_FmPcdKgScheme *p_Scheme; + + /* for each scheme - update owners counters */ + for(i = 0; inumOfSchemes; i++) + { + p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[p_BindPort->schemesIds[i]]; + + /* increment owners number */ + ASSERT_COND(p_Scheme->owners); + p_Scheme->owners--; + } +} + +static t_Error KgWriteSp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint32_t spReg, bool add) +{ + t_FmPcdKgPortConfigRegs *p_FmPcdKgPortRegs; + uint32_t tmpKgarReg = 0, tmpKgpeSp, intFlags; + t_Error err = E_OK; + + if (p_FmPcd->h_Hc) + return FmHcKgWriteSp(p_FmPcd->h_Hc, hardwarePortId, spReg, add); + + p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs; + + tmpKgarReg = FmPcdKgBuildReadPortSchemeBindActionReg(hardwarePortId); + intFlags = FmPcdLock(p_FmPcd); + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + if(err) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + tmpKgpeSp = GET_UINT32(p_FmPcdKgPortRegs->kgoe_sp); + + if(add) + tmpKgpeSp |= spReg; + else /* clear */ + tmpKgpeSp &= ~spReg; + + WRITE_UINT32(p_FmPcdKgPortRegs->kgoe_sp, tmpKgpeSp); + + tmpKgarReg = FmPcdKgBuildWritePortSchemeBindActionReg(hardwarePortId); + + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + return err; +} + +static t_Error KgWriteCpp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint32_t cppReg) +{ + t_FmPcdKgPortConfigRegs *p_FmPcdKgPortRegs; + uint32_t tmpKgarReg, intFlags; + t_Error err; + + if (p_FmPcd->h_Hc) + return FmHcKgWriteCpp(p_FmPcd->h_Hc, hardwarePortId, cppReg); + + p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs; + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_FmPcdKgPortRegs->kgoe_cpp, cppReg); + + tmpKgarReg = FmPcdKgBuildWritePortClsPlanBindActionReg(hardwarePortId); + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + return err; +} + +static void FmPcdKgUnbindPortToClsPlanGrp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId) +{ + KgWriteCpp(p_FmPcd, hardwarePortId, 0); +} + +static t_Error KgBindPortToClsPlanGrp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId) +{ + uint32_t tmpKgpeCpp = 0; + + tmpKgpeCpp = FmPcdKgBuildCppReg(p_FmPcd, clsPlanGrpId); + return KgWriteCpp(p_FmPcd, hardwarePortId, tmpKgpeCpp); +} + +t_Error FmPcdKgBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t spReg; + t_Error err = E_OK; + + err = FmPcdKgBuildBindPortToSchemes(h_FmPcd, p_SchemeBind, &spReg, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, TRUE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + FmPcdKgIncSchemeOwners(h_FmPcd, p_SchemeBind); + + return E_OK; +} + +t_Error FmPcdKgUnbindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t spReg; + t_Error err = E_OK; + + err = FmPcdKgBuildBindPortToSchemes(h_FmPcd, p_SchemeBind, &spReg, FALSE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, FALSE); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + FmPcdKgDecSchemeOwners(h_FmPcd, p_SchemeBind); + + return E_OK; +} + +bool FmPcdKgIsSchemeValidSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].valid; +} + +bool KgIsSchemeAlwaysDirect(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].matchVector == SCHEME_ALWAYS_DIRECT) + return TRUE; + else + return FALSE; +} + +t_Error FmPcdKgAllocSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t i,j; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + + intFlags = FmPcdLock(p_FmPcd); + for(j=0,i=0;ip_FmPcdKg->schemesMng[i].allocated) + { + p_FmPcd->p_FmPcdKg->schemesMng[i].allocated = TRUE; + p_FmPcd->p_FmPcdKg->schemesMng[i].ownerId = guestId; + p_SchemesIds[j] = i; + j++; + } + } + + if (j != numOfSchemes) + { + /* roll back */ + for(j--; j; j--) + { + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].allocated = FALSE; + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].ownerId = 0; + p_SchemesIds[j] = 0; + } + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("No schemes found")); + } + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + +t_Error FmPcdKgFreeSchemes(t_Handle h_FmPcd, uint8_t numOfSchemes, uint8_t guestId, uint8_t *p_SchemesIds) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t i; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + + intFlags = FmPcdLock(p_FmPcd); + + for(i=0;ip_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Scheme was not previously allocated")); + } + if(p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId != guestId) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Scheme is not owned by caller. ")); + } + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated = FALSE; + p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId = 0; + } + + FmPcdUnlock(p_FmPcd, intFlags); + return E_OK; +} + +t_Error KgAllocClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t *p_First) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t numOfBlocks, blocksFound=0, first=0; + uint8_t i, j; + + intFlags = FmPcdLock(p_FmPcd); + + if(!numOfClsPlanEntries) + { + FmPcdUnlock(p_FmPcd, intFlags); + return E_OK; + } + + if ((numOfClsPlanEntries % CLS_PLAN_NUM_PER_GRP) || (!POWER_OF_2(numOfClsPlanEntries))) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfClsPlanEntries must be a power of 2 and divisible by 8")); + } + + numOfBlocks = (uint8_t)(numOfClsPlanEntries/CLS_PLAN_NUM_PER_GRP); + + /* try to find consequent blocks */ + first = 0; + for(i=0;ip_FmPcdKg->clsPlanBlocksMng[i].allocated) + { + blocksFound++; + i++; + if(blocksFound == numOfBlocks) + break; + } + else + { + blocksFound = 0; + /* advance i to the next aligned address */ + first = i = (uint8_t)(first + numOfBlocks); + } + } + + if(blocksFound == numOfBlocks) + { + *p_First = (uint8_t)(first*CLS_PLAN_NUM_PER_GRP); + for(j = first; jp_FmPcdKg->clsPlanBlocksMng[j].allocated = TRUE; + p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[j].ownerId = guestId; + } + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; + } + else + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MINOR, E_FULL, ("No recources for clsPlan")); + } +} + +void KgFreeClsPlanEntries(t_Handle h_FmPcd, uint16_t numOfClsPlanEntries, uint8_t guestId, uint8_t base) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t intFlags; + uint8_t numOfBlocks; + uint8_t i, baseBlock; + + UNUSED( guestId); + + intFlags = FmPcdLock(p_FmPcd); + + numOfBlocks = (uint8_t)(numOfClsPlanEntries/CLS_PLAN_NUM_PER_GRP); + ASSERT_COND(!(base%CLS_PLAN_NUM_PER_GRP)); + + baseBlock = (uint8_t)(base/CLS_PLAN_NUM_PER_GRP); + for(i=baseBlock;ip_FmPcdKg->clsPlanBlocksMng[i].allocated); + ASSERT_COND(guestId == p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId); + p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated = FALSE; + p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId = 0; + } + FmPcdUnlock(p_FmPcd, intFlags); +} + +void KgEnable(t_FmPcd *p_FmPcd) +{ + t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + WRITE_UINT32(p_Regs->kggcr,GET_UINT32(p_Regs->kggcr) | FM_PCD_KG_KGGCR_EN); +} + +void KgDisable(t_FmPcd *p_FmPcd) +{ + t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + WRITE_UINT32(p_Regs->kggcr,GET_UINT32(p_Regs->kggcr) & ~FM_PCD_KG_KGGCR_EN); +} + +void KgSetClsPlan(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanSet *p_Set) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgClsPlanRegs *p_FmPcdKgPortRegs; + uint32_t tmpKgarReg=0, intFlags; + uint16_t i, j; + + SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs; + + intFlags = FmPcdLock(p_FmPcd); + for(i=p_Set->baseEntry;ibaseEntry+p_Set->numOfClsPlanEntries;i+=8) + { + tmpKgarReg = FmPcdKgBuildWriteClsPlanBlockActionReg((uint8_t)(i / CLS_PLAN_NUM_PER_GRP)); + + for (j = i; j < i+8; j++) + { + ASSERT_COND(IN_RANGE(0, (j - p_Set->baseEntry), FM_PCD_MAX_NUM_OF_CLS_PLANS-1)); + WRITE_UINT32(p_FmPcdKgPortRegs->kgcpe[j % CLS_PLAN_NUM_PER_GRP],p_Set->vectors[j - p_Set->baseEntry]); + } + + if(WriteKgarWait(p_FmPcd, tmpKgarReg) != E_OK) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("WriteKgarWait FAILED")); + return; + } + } + FmPcdUnlock(p_FmPcd, intFlags); +} + +static void PcdKgErrorException(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t event, force, schemeIndexes = 0,index = 0, mask = 0; + + ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); + event = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeer); + mask = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer); + + schemeIndexes = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseer); + schemeIndexes &= GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseeer); + + event &= mask; + + /* clear the forced events */ + force = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer); + if(force & event) + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, force & ~event); + + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeer, event); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseer, schemeIndexes); + + if(event & FM_PCD_KG_DOUBLE_ECC) + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC); + if(event & FM_PCD_KG_KEYSIZE_OVERFLOW) + { + if(schemeIndexes) + { + while(schemeIndexes) + { + if(schemeIndexes & 0x1) + p_FmPcd->f_FmPcdIndexedException(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, (uint16_t)(31 - index)); + schemeIndexes >>= 1; + index+=1; + } + } + else /* this should happen only when interrupt is forced. */ + p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW); + } +} + +static t_Error KgInitGuest(t_FmPcd *p_FmPcd) +{ + t_Error err = E_OK; + t_FmPcdIpcKgSchemesParams kgAlloc; + uint32_t replyLength; + t_FmPcdIpcReply reply; + t_FmPcdIpcMsg msg; + + ASSERT_COND(p_FmPcd->guestId != NCSW_MASTER_ID); + + /* in GUEST_PARTITION, we use the IPC */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + memset(&kgAlloc, 0, sizeof(t_FmPcdIpcKgSchemesParams)); + kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes; + kgAlloc.guestId = p_FmPcd->guestId; + msg.msgId = FM_PCD_ALLOC_KG_SCHEMES; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if(replyLength != (sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + memcpy(p_FmPcd->p_FmPcdKg->schemesIds, (uint8_t*)(reply.replyBody),p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t)); + + return (t_Error)reply.error; +} + +static t_Error KgInitMaster(t_FmPcd *p_FmPcd) +{ + t_Error err = E_OK; + t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + int i; + uint8_t hardwarePortId = 0; + uint32_t tmpReg; + + ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); + + /**********************KGEER******************/ + WRITE_UINT32(p_Regs->kgeer, (FM_PCD_KG_DOUBLE_ECC | FM_PCD_KG_KEYSIZE_OVERFLOW)); + /**********************KGEER******************/ + + /**********************KGEEER******************/ + tmpReg = 0; + if(p_FmPcd->exceptions & FM_PCD_EX_KG_DOUBLE_ECC) + { + FmEnableRamsEcc(p_FmPcd->h_Fm); + tmpReg |= FM_PCD_KG_DOUBLE_ECC; + } + if(p_FmPcd->exceptions & FM_PCD_EX_KG_KEYSIZE_OVERFLOW) + tmpReg |= FM_PCD_KG_KEYSIZE_OVERFLOW; + WRITE_UINT32(p_Regs->kgeeer,tmpReg); + /**********************KGEEER******************/ + + /**********************KGFDOR******************/ + WRITE_UINT32(p_Regs->kgfdor,0); + /**********************KGFDOR******************/ + + /**********************KGGDV0R******************/ + WRITE_UINT32(p_Regs->kggdv0r,0); + /**********************KGGDV0R******************/ + + /**********************KGGDV1R******************/ + WRITE_UINT32(p_Regs->kggdv1r,0); + /**********************KGGDV1R******************/ + + /**********************KGGCR******************/ + WRITE_UINT32(p_Regs->kggcr, NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + /**********************KGGCR******************/ + + /* register even if no interrupts enabled, to allow future enablement */ + FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR, PcdKgErrorException, p_FmPcd); + + /* clear binding between ports to schemes so that all ports are not bound to any schemes */ + for (i=0;ikgseer, 0xFFFFFFFF); + WRITE_UINT32(p_Regs->kgseeer, 0xFFFFFFFF); + + if(p_FmPcd->p_FmPcdKg->numOfSchemes) + { + err = FmPcdKgAllocSchemes(p_FmPcd, + p_FmPcd->p_FmPcdKg->numOfSchemes, + p_FmPcd->guestId, + p_FmPcd->p_FmPcdKg->schemesIds); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + } + + return E_OK; +} + + +/****************************************/ +/* API routines */ +/****************************************/ +t_Error FM_PCD_KgSetAdditionalDataAfterParsing(t_Handle h_FmPcd, uint8_t payloadOffset) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgRegs *p_Regs; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER); + + p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_KgSetAdditionalDataAfterParsing - guest mode!")); + +/* not needed + if(payloadOffset > 256) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("data exatraction offset from parseing end can not be more than 256")); +*/ + + WRITE_UINT32(p_Regs->kgfdor,payloadOffset); + + return E_OK; +} + +t_Error FM_PCD_KgSetDfltValue(t_Handle h_FmPcd, uint8_t valueId, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + t_FmPcdKgRegs *p_Regs; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(((valueId == 0) || (valueId == 1)), E_INVALID_VALUE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER); + + p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; + + if(!FmIsMaster(p_FmPcd->h_Fm)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_KgSetDfltValue - guest mode!")); + + if(valueId == 0) + WRITE_UINT32(p_Regs->kggdv0r,value); + else + WRITE_UINT32(p_Regs->kggdv1r,value); + return E_OK; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PCD_KgDumpRegs(t_Handle h_FmPcd) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + int i = 0, j = 0; + uint8_t hardwarePortId = 0; + uint32_t tmpKgarReg, intFlags; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if(p_FmPcd->guestId != NCSW_MASTER_ID) + { + memset(&msg, 0, sizeof(msg)); + msg.msgId = FM_PCD_KG_DUMP_REGS; + return XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId), + NULL, + NULL, + NULL, + NULL); + } + DUMP_SUBTITLE(("\n")); + DUMP_TITLE(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, ("FmPcdKgRegs Regs")); + + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggcr); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgeeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgseer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgseeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggsr); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgtpc); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgserc); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfdor); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggdv0r); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggdv1r); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfeer); + DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgar); + + DUMP_SUBTITLE(("\n")); + intFlags = FmPcdLock(p_FmPcd); + for(j = 0;jp_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs, ("FmPcdKgIndirectAccessSchemeRegs Scheme %d Regs", j)); + + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_mode); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ekfc); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ekdv); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_bmch); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_bmcl); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_fqb); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_hc); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ppc); + + DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_gec, ("kgse_gec")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PCD_KG_NUM_OF_GENERIC_REGS) + { + DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_gec[i], sizeof(uint32_t)); + } + + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_spc); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_dv0); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_dv1); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ccbs); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_mv); + } + DUMP_SUBTITLE(("\n")); + + for (i=0;ip_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, ("FmPcdKgIndirectAccessPortRegs PCD Port %d regs", hardwarePortId)); + + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, kgoe_sp); + DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, kgoe_cpp); + } + + DUMP_SUBTITLE(("\n")); + for(j=0;jp_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs, ("FmPcdKgIndirectAccessClsPlanRegs Regs group %d", j)); + DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs.kgcpe, ("kgcpe")); + + tmpKgarReg = FmPcdKgBuildReadClsPlanBlockActionReg((uint8_t)j); + err = WriteKgarWait(p_FmPcd, tmpKgarReg); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + DUMP_SUBSTRUCT_ARRAY(i, 8) + DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs.kgcpe[i], sizeof(uint32_t)); + } + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + +t_Handle KgConfig( t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams) +{ + t_FmPcdKg *p_FmPcdKg; + + UNUSED(p_FmPcd); + + if (p_FmPcdParams->numOfSchemes > FM_PCD_KG_NUM_OF_SCHEMES) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("numOfSchemes should not exceed %d", FM_PCD_KG_NUM_OF_SCHEMES)); + return NULL; + } + + p_FmPcdKg = (t_FmPcdKg *)XX_Malloc(sizeof(t_FmPcdKg)); + if (!p_FmPcdKg) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Keygen allocation FAILED")); + return NULL; + } + memset(p_FmPcdKg, 0, sizeof(t_FmPcdKg)); + + if(FmIsMaster(p_FmPcd->h_Fm)) + { + p_FmPcdKg->p_FmPcdKgRegs = (t_FmPcdKgRegs *)UINT_TO_PTR(FmGetPcdKgBaseAddr(p_FmPcdParams->h_Fm)); + p_FmPcd->exceptions |= DEFAULT_fmPcdKgErrorExceptions; + } + + p_FmPcdKg->numOfSchemes = p_FmPcdParams->numOfSchemes; + if((p_FmPcd->guestId == NCSW_MASTER_ID) && !p_FmPcdKg->numOfSchemes) + { + p_FmPcdKg->numOfSchemes = FM_PCD_KG_NUM_OF_SCHEMES; + DBG(WARNING, ("numOfSchemes was defined 0 by user, re-defined by driver to FM_PCD_KG_NUM_OF_SCHEMES")); + } + + p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN; + + return p_FmPcdKg; +} + +t_Error KgInit(t_FmPcd *p_FmPcd) +{ + if (p_FmPcd->guestId == NCSW_MASTER_ID) + return KgInitMaster(p_FmPcd); + else + return KgInitGuest(p_FmPcd); +} + +t_Error KgFree(t_FmPcd *p_FmPcd) +{ + t_FmPcdIpcKgSchemesParams kgAlloc; + t_Error err = E_OK; + t_FmPcdIpcMsg msg; + uint32_t replyLength; + t_FmPcdIpcReply reply; + + FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR); + + if(p_FmPcd->guestId == NCSW_MASTER_ID) + return FmPcdKgFreeSchemes(p_FmPcd, + p_FmPcd->p_FmPcdKg->numOfSchemes, + p_FmPcd->guestId, + p_FmPcd->p_FmPcdKg->schemesIds); + + /* guest */ + memset(&reply, 0, sizeof(reply)); + memset(&msg, 0, sizeof(msg)); + kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes; + kgAlloc.guestId = p_FmPcd->guestId; + ASSERT_COND(kgAlloc.numOfSchemes < FM_PCD_KG_NUM_OF_SCHEMES); + memcpy(kgAlloc.schemesIds, p_FmPcd->p_FmPcdKg->schemesIds , (sizeof(uint8_t))*kgAlloc.numOfSchemes); + msg.msgId = FM_PCD_FREE_KG_SCHEMES; + memcpy(msg.msgBody, &kgAlloc, sizeof(kgAlloc)); + replyLength = sizeof(uint32_t); + if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, + (uint8_t*)&msg, + sizeof(msg.msgId) + sizeof(kgAlloc), + (uint8_t*)&reply, + &replyLength, + NULL, + NULL)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + if (replyLength != sizeof(uint32_t)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("IPC reply length mismatch")); + + return (t_Error)reply.error; +} + +t_Error FmPcdKgSetOrBindToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t netEnvId, protocolOpt_t *p_OptArray, uint8_t *p_ClsPlanGrpId, bool *p_IsEmptyClsPlanGrp) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdKgInterModuleClsPlanGrpParams grpParams, *p_GrpParams; + t_FmPcdKgClsPlanGrp *p_ClsPlanGrp; + t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet; + t_Error err; + + memset(&grpParams, 0, sizeof(grpParams)); + grpParams.clsPlanGrpId = ILLEGAL_CLS_PLAN; + p_GrpParams = &grpParams; + + p_GrpParams->netEnvId = netEnvId; + err = PcdGetClsPlanGrpParams(h_FmPcd, p_GrpParams); + if(err) + RETURN_ERROR(MINOR,err,NO_MSG); + if(p_GrpParams->grpExists) + *p_ClsPlanGrpId = p_GrpParams->clsPlanGrpId; + else + { + p_ClsPlanSet = (t_FmPcdKgInterModuleClsPlanSet *)XX_Malloc(sizeof(t_FmPcdKgInterModuleClsPlanSet)); + if (!p_ClsPlanSet) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("memory allocation failed for p_ClsPlanSet")); + memset(p_ClsPlanSet, 0, sizeof(t_FmPcdKgInterModuleClsPlanSet)); + err = FmPcdKgBuildClsPlanGrp(h_FmPcd, p_GrpParams, p_ClsPlanSet); + if (err) + { + XX_Free(p_ClsPlanSet); + RETURN_ERROR(MINOR,err,NO_MSG); + } + *p_ClsPlanGrpId = p_GrpParams->clsPlanGrpId; + + if (p_FmPcd->h_Hc) + { + /* write clsPlan entries to memory */ + err = FmHcPcdKgSetClsPlan(p_FmPcd->h_Hc, p_ClsPlanSet); + if (err) + { + XX_Free(p_ClsPlanSet); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + else + /* write clsPlan entries to memory */ + KgSetClsPlan(p_FmPcd, p_ClsPlanSet); + + XX_Free(p_ClsPlanSet); + } + + /* mark if this is an empty classification group */ + if(*p_ClsPlanGrpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId) + *p_IsEmptyClsPlanGrp = TRUE; + else + *p_IsEmptyClsPlanGrp = FALSE; + + p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId]; + + /* increment owners number */ + p_ClsPlanGrp->owners++; + + /* copy options array for port */ + memcpy(p_OptArray, &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId].optArray, FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)*sizeof(protocolOpt_t)); + + /* bind port to the new or existing group */ + err = KgBindPortToClsPlanGrp(p_FmPcd, hardwarePortId, p_GrpParams->clsPlanGrpId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + return E_OK; +} + +t_Error FmPcdKgDeleteOrUnbindPortToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + t_FmPcdKgClsPlanGrp *p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId]; + t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet; + + FmPcdKgUnbindPortToClsPlanGrp(p_FmPcd, hardwarePortId); + + /* decrement owners number */ + ASSERT_COND(p_ClsPlanGrp->owners); + p_ClsPlanGrp->owners--; + + if(!p_ClsPlanGrp->owners) + { + if (p_FmPcd->h_Hc) + return FmHcPcdKgDeleteClsPlan(p_FmPcd->h_Hc, clsPlanGrpId); + else + { + /* clear clsPlan entries in memory */ + p_ClsPlanSet = (t_FmPcdKgInterModuleClsPlanSet *)XX_Malloc(sizeof(t_FmPcdKgInterModuleClsPlanSet)); + if (!p_ClsPlanSet) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("memory allocation failed for p_ClsPlanSet")); + memset(p_ClsPlanSet, 0, sizeof(t_FmPcdKgInterModuleClsPlanSet)); + p_ClsPlanSet->baseEntry = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry; + p_ClsPlanSet->numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp; + KgSetClsPlan(p_FmPcd, p_ClsPlanSet); + XX_Free(p_ClsPlanSet); + FmPcdKgDestroyClsPlanGrp(h_FmPcd, clsPlanGrpId); + } + } + return E_OK; +} + +t_Error FmPcdKgBuildScheme(t_Handle h_FmPcd, t_FmPcdKgSchemeParams *p_Scheme, t_FmPcdKgInterModuleSchemeRegs *p_SchemeRegs) +{ + t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd; + uint32_t grpBits = 0; + uint8_t grpBase; + bool direct=TRUE, absolute=FALSE; + uint16_t profileId=0, numOfProfiles=0, relativeProfileId; + t_Error err = E_OK; + int i = 0; + t_NetEnvParams netEnvParams; + uint32_t tmpReg, fqbTmp = 0, ppcTmp = 0, selectTmp, maskTmp, knownTmp, genTmp; + t_FmPcdKgKeyExtractAndHashParams *p_KeyAndHash = NULL; + uint8_t j, curr, idx; + uint8_t id, shift=0, code=0, offset=0, size=0; + t_FmPcdExtractEntry *p_Extract = NULL; + t_FmPcdKgExtractedOrParams *p_ExtractOr; + bool generic = FALSE; + t_KnownFieldsMasks bitMask; + e_FmPcdKgExtractDfltSelect swDefault = (e_FmPcdKgExtractDfltSelect)0; + t_FmPcdKgSchemesExtracts *p_LocalExtractsArray; + uint8_t numOfSwDefaults = 0; + t_FmPcdKgExtractDflt swDefaults[NUM_OF_SW_DEFAULTS]; + uint8_t currGenId = 0, relativeSchemeId; + + if(!p_Scheme->modify) + relativeSchemeId = p_Scheme->id.relativeSchemeId; + else + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1)); + + memset(&p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId], 0, sizeof(t_FmPcdKgScheme)); + memset(swDefaults, 0, NUM_OF_SW_DEFAULTS*sizeof(t_FmPcdKgExtractDflt)); + memset(p_SchemeRegs, 0, sizeof(t_FmPcdKgInterModuleSchemeRegs)); + + if (p_Scheme->netEnvParams.numOfDistinctionUnits > FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("numOfDistinctionUnits should not exceed %d", FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS)); + + /* by netEnv parameters, get match vector */ + if(!p_Scheme->alwaysDirect) + { + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId = + (uint8_t)(PTR_TO_UINT(p_Scheme->netEnvParams.h_NetEnv)-1); + netEnvParams.netEnvId = p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId; + netEnvParams.numOfDistinctionUnits = p_Scheme->netEnvParams.numOfDistinctionUnits; + memcpy(netEnvParams.unitIds, p_Scheme->netEnvParams.unitIds, (sizeof(uint8_t))*p_Scheme->netEnvParams.numOfDistinctionUnits); + err = PcdGetUnitsVector(p_FmPcd, &netEnvParams); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector = netEnvParams.vector; + } + else + { + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector = SCHEME_ALWAYS_DIRECT; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId = ILLEGAL_NETENV; + } + + if(p_Scheme->nextEngine == e_FM_PCD_INVALID) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next Engine of the scheme is not Valid")); + + if(p_Scheme->bypassFqidGeneration) + { +#ifdef FM_KG_NO_BYPASS_FQID_GEN + { + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("bypassFqidGeneration.")); + } +#endif /* FM_KG_NO_BYPASS_FQID_GEN */ + if(p_Scheme->baseFqid) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("baseFqid set for a scheme that does not generate an FQID")); + } + else + if(!p_Scheme->baseFqid) + DBG(WARNING, ("baseFqid is 0.")); + + if(p_Scheme->nextEngine == e_FM_PCD_PLCR) + { + direct = p_Scheme->kgNextEngineParams.plcrProfile.direct; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr = direct; + absolute = (bool)(p_Scheme->kgNextEngineParams.plcrProfile.sharedProfile ? TRUE : FALSE); + if(!direct && absolute) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Indirect policing is not available when profile is shared.")); + + if(direct) + { + profileId = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.directRelativeProfileId; + numOfProfiles = 1; + } + else + { + profileId = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.fqidOffsetRelativeProfileIdBase; + shift = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.fqidOffsetShift; + numOfProfiles = p_Scheme->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.numOfProfiles; + } + } + + if(p_Scheme->nextEngine == e_FM_PCD_CC) + { +#ifdef FM_KG_NO_BYPASS_PLCR_PROFILE_GEN + if((p_Scheme->kgNextEngineParams.cc.plcrNext) && (p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration)) + { + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPcd->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("bypassPlcrProfileGeneration.")); + } +#endif /* FM_KG_NO_BYPASS_PLCR_PROFILE_GEN */ + + err = FmPcdCcGetGrpParams(p_Scheme->kgNextEngineParams.cc.h_CcTree, + p_Scheme->kgNextEngineParams.cc.grpId, + &grpBits, + &grpBase); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].ccUnits = grpBits; + + if((p_Scheme->kgNextEngineParams.cc.plcrNext) && + (!p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration)) + { + if(p_Scheme->kgNextEngineParams.cc.plcrProfile.sharedProfile) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Shared profile may not be used after Coarse classification.")); + absolute = FALSE; + direct = p_Scheme->kgNextEngineParams.cc.plcrProfile.direct; + if(direct) + { + profileId = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.directRelativeProfileId; + numOfProfiles = 1; + } + else + { + profileId = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.fqidOffsetRelativeProfileIdBase; + shift = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.fqidOffsetShift; + numOfProfiles = p_Scheme->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.numOfProfiles; + } + } + } + + /* if policer is used directly after KG, or after CC */ + if((p_Scheme->nextEngine == e_FM_PCD_PLCR) || + ((p_Scheme->nextEngine == e_FM_PCD_CC) && + (p_Scheme->kgNextEngineParams.cc.plcrNext) && + (!p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration))) + { + /* if private policer profile, it may be uninitialized yet, therefore no checks are done at this stage */ + if(absolute) + { + /* for absolute direct policy only, */ + relativeProfileId = profileId; + err = FmPcdPlcrGetAbsoluteProfileId(h_FmPcd,e_FM_PCD_PLCR_SHARED,NULL, relativeProfileId, &profileId); + if(err) + RETURN_ERROR(MAJOR, err, ("Shared profile not valid offset")); + if(!FmPcdPlcrIsProfileValid(p_FmPcd, profileId)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Shared profile not valid.")); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId = profileId; + } + else + { + /* save relative profile id's for later check */ + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile = TRUE; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId = profileId; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].numOfProfiles = numOfProfiles; + } + } + else + { + /* if policer is NOT going to be used after KG at all than if bypassFqidGeneration + is set, we do not need numOfUsedExtractedOrs and hashDistributionNumOfFqids */ + if(p_Scheme->bypassFqidGeneration && p_Scheme->numOfUsedExtractedOrs) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("numOfUsedExtractedOrs is set in a scheme that does not generate FQID or policer profile ID")); + if(p_Scheme->bypassFqidGeneration && + p_Scheme->useHash && + p_Scheme->keyExtractAndHashParams.hashDistributionNumOfFqids) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("hashDistributionNumOfFqids is set in a scheme that does not generate FQID or policer profile ID")); + } + + /* configure all 21 scheme registers */ + tmpReg = KG_SCH_MODE_EN; + switch(p_Scheme->nextEngine) + { + case(e_FM_PCD_PLCR): + /* add to mode register - NIA */ + tmpReg |= KG_SCH_MODE_NIA_PLCR; + tmpReg |= NIA_ENG_PLCR; + tmpReg |= (uint32_t)(p_Scheme->kgNextEngineParams.plcrProfile.sharedProfile ? NIA_PLCR_ABSOLUTE:0); + /* initialize policer profile command - */ + /* configure kgse_ppc */ + if(direct) + /* use profileId as base, other fields are 0 */ + p_SchemeRegs->kgse_ppc = (uint32_t)profileId; + else + { + if(shift > MAX_PP_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fqidOffsetShift may not be larger than %d", MAX_PP_SHIFT)); + + if(!numOfProfiles || !POWER_OF_2(numOfProfiles)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfProfiles must not be 0 and must be a power of 2")); + + ppcTmp = ((uint32_t)shift << KG_SCH_PP_SHIFT_HIGH_SHIFT) & KG_SCH_PP_SHIFT_HIGH; + ppcTmp |= ((uint32_t)shift << KG_SCH_PP_SHIFT_LOW_SHIFT) & KG_SCH_PP_SHIFT_LOW; + ppcTmp |= ((uint32_t)(numOfProfiles-1) << KG_SCH_PP_MASK_SHIFT); + ppcTmp |= (uint32_t)profileId; + + p_SchemeRegs->kgse_ppc = ppcTmp; + } + break; + case(e_FM_PCD_CC): + /* mode reg - define NIA */ + tmpReg |= (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_CC); + + p_SchemeRegs->kgse_ccbs = grpBits; + tmpReg |= (uint32_t)(grpBase << KG_SCH_MODE_CCOBASE_SHIFT); + + if(p_Scheme->kgNextEngineParams.cc.plcrNext) + { + if(!p_Scheme->kgNextEngineParams.cc.bypassPlcrProfileGeneration) + { + /* find out if absolute or relative */ + if(absolute) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("It is illegal to request a shared profile in a scheme that is in a KG->CC->PLCR flow")); + if(direct) + { + /* mask = 0, base = directProfileId */ + p_SchemeRegs->kgse_ppc = (uint32_t)profileId; + } + else + { + if(shift > MAX_PP_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fqidOffsetShift may not be larger than %d", MAX_PP_SHIFT)); + if(!numOfProfiles || !POWER_OF_2(numOfProfiles)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfProfiles must not be 0 and must be a power of 2")); + + ppcTmp = ((uint32_t)shift << KG_SCH_PP_SHIFT_HIGH_SHIFT) & KG_SCH_PP_SHIFT_HIGH; + ppcTmp |= ((uint32_t)shift << KG_SCH_PP_SHIFT_LOW_SHIFT) & KG_SCH_PP_SHIFT_LOW; + ppcTmp |= ((uint32_t)(numOfProfiles-1) << KG_SCH_PP_MASK_SHIFT); + ppcTmp |= (uint32_t)profileId; + + p_SchemeRegs->kgse_ppc = ppcTmp; + } + } + else + ppcTmp = KG_SCH_PP_NO_GEN; + } + break; + case(e_FM_PCD_DONE): + if(p_Scheme->kgNextEngineParams.doneAction == e_FM_PCD_DROP_FRAME) + tmpReg |= (NIA_ENG_BMI | NIA_BMI_AC_DISCARD); + else + tmpReg |= (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + break; + default: + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Next engine not supported")); + } + p_SchemeRegs->kgse_mode = tmpReg; + + p_SchemeRegs->kgse_mv = p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector; + + if(p_Scheme->useHash) + { + p_KeyAndHash = &p_Scheme->keyExtractAndHashParams; + + if (p_KeyAndHash->numOfUsedExtracts >= FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfUsedExtracts out of range")); + + /* configure kgse_dv0 */ + p_SchemeRegs->kgse_dv0 = p_KeyAndHash->privateDflt0; + + /* configure kgse_dv1 */ + p_SchemeRegs->kgse_dv1 = p_KeyAndHash->privateDflt1; + + if(!p_Scheme->bypassFqidGeneration) + { + if(!p_KeyAndHash->hashDistributionNumOfFqids || !POWER_OF_2(p_KeyAndHash->hashDistributionNumOfFqids)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("hashDistributionNumOfFqids must not be 0 and must be a power of 2")); + if((p_KeyAndHash->hashDistributionNumOfFqids-1) & p_Scheme->baseFqid) + DBG(WARNING, ("baseFqid unaligned. Distribution may result in less than hashDistributionNumOfFqids queues.")); + } + + /* configure kgse_ekdv */ + tmpReg = 0; + for( i=0 ;inumOfUsedDflts ; i++) + { + switch(p_KeyAndHash->dflts[i].type) + { + case(e_FM_PCD_KG_MAC_ADDR): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_MAC_ADDR_SHIFT); + break; + case(e_FM_PCD_KG_TCI): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_TCI_SHIFT); + break; + case(e_FM_PCD_KG_ENET_TYPE): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_ENET_TYPE_SHIFT); + break; + case(e_FM_PCD_KG_PPP_SESSION_ID): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PPP_SESSION_ID_SHIFT); + break; + case(e_FM_PCD_KG_PPP_PROTOCOL_ID): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PPP_PROTOCOL_ID_SHIFT); + break; + case(e_FM_PCD_KG_MPLS_LABEL): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_MPLS_LABEL_SHIFT); + break; + case(e_FM_PCD_KG_IP_ADDR): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IP_ADDR_SHIFT); + break; + case(e_FM_PCD_KG_PROTOCOL_TYPE): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PROTOCOL_TYPE_SHIFT); + break; + case(e_FM_PCD_KG_IP_TOS_TC): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IP_TOS_TC_SHIFT); + break; + case(e_FM_PCD_KG_IPV6_FLOW_LABEL): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_L4_PORT_SHIFT); + break; + case(e_FM_PCD_KG_IPSEC_SPI): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IPSEC_SPI_SHIFT); + break; + case(e_FM_PCD_KG_L4_PORT): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_L4_PORT_SHIFT); + break; + case(e_FM_PCD_KG_TCP_FLAG): + tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_TCP_FLAG_SHIFT); + break; + case(e_FM_PCD_KG_GENERIC_FROM_DATA): + swDefaults[numOfSwDefaults].type = e_FM_PCD_KG_GENERIC_FROM_DATA; + swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; + numOfSwDefaults ++; + break; + case(e_FM_PCD_KG_GENERIC_FROM_DATA_NO_V): + swDefaults[numOfSwDefaults].type = e_FM_PCD_KG_GENERIC_FROM_DATA_NO_V; + swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; + numOfSwDefaults ++; + break; + case(e_FM_PCD_KG_GENERIC_NOT_FROM_DATA): + swDefaults[numOfSwDefaults].type = e_FM_PCD_KG_GENERIC_NOT_FROM_DATA; + swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; + numOfSwDefaults ++; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + } + p_SchemeRegs->kgse_ekdv = tmpReg; + + p_LocalExtractsArray = (t_FmPcdKgSchemesExtracts *)XX_Malloc(sizeof(t_FmPcdKgSchemesExtracts)); + if(!p_LocalExtractsArray) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("No memory")); + + /* configure kgse_ekfc and kgse_gec */ + knownTmp = 0; + for( i=0 ;inumOfUsedExtracts ; i++) + { + p_Extract = &p_KeyAndHash->extractArray[i]; + switch(p_Extract->type) + { + case(e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO): + knownTmp |= KG_SCH_KN_PORT_ID; + /* save in driver structure */ + p_LocalExtractsArray->extractsArray[i].id = GetKnownFieldId(KG_SCH_KN_PORT_ID); + p_LocalExtractsArray->extractsArray[i].known = TRUE; + break; + case(e_FM_PCD_EXTRACT_BY_HDR): + switch(p_Extract->extractByHdr.hdr) + { + case(HEADER_TYPE_UDP_ENCAP_ESP): + switch(p_Extract->extractByHdr.type) + { + case(e_FM_PCD_EXTRACT_FROM_HDR): + /* case where extraction from ESP only */ + if (p_Extract->extractByHdr.extractByHdrType.fromHdr.offset >= UDP_HEADER_SIZE) + { + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromHdr.offset -= UDP_HEADER_SIZE; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + } + else + { + p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; + p_Extract->extractByHdr.ignoreProtocolValidation = FALSE; + } + break; + case(e_FM_PCD_EXTRACT_FROM_FIELD): + switch(p_Extract->extractByHdr.extractByHdrType.fromField.field.udpEncapEsp) + { + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM): + p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromField.size = p_Extract->extractByHdr.extractByHdrType.fromField.size; + /*p_Extract->extractByHdr.extractByHdrType.fromField.offset += ESP_SPI_OFFSET;*/ + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromField.size = p_Extract->extractByHdr.extractByHdrType.fromField.size; + p_Extract->extractByHdr.extractByHdrType.fromField.offset += ESP_SEQ_NUM_OFFSET; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + } + break; + case(e_FM_PCD_EXTRACT_FULL_FIELD): + switch(p_Extract->extractByHdr.extractByHdrType.fullField.udpEncapEsp) + { + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN): + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM): + p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromHdr.size = ESP_SPI_SIZE; + p_Extract->extractByHdr.extractByHdrType.fromHdr.offset = ESP_SPI_OFFSET; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + case(NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM): + p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; + p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP); + p_Extract->extractByHdr.extractByHdrType.fromHdr.size = ESP_SEQ_NUM_SIZE; + p_Extract->extractByHdr.extractByHdrType.fromHdr.offset = ESP_SEQ_NUM_OFFSET; + p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; + break; + } + break; + } + break; + default: + break; + } + switch(p_Extract->extractByHdr.type) + { + case(e_FM_PCD_EXTRACT_FROM_HDR): + generic = TRUE; + /* get the header code for the generic extract */ + code = GetGenHdrCode(p_Extract->extractByHdr.hdr, p_Extract->extractByHdr.hdrIndex, p_Extract->extractByHdr.ignoreProtocolValidation); + /* set generic register fields */ + offset = p_Extract->extractByHdr.extractByHdrType.fromHdr.offset; + size = p_Extract->extractByHdr.extractByHdrType.fromHdr.size; + break; + case(e_FM_PCD_EXTRACT_FROM_FIELD): + generic = TRUE; + /* get the field code for the generic extract */ + code = GetGenFieldCode(p_Extract->extractByHdr.hdr, + p_Extract->extractByHdr.extractByHdrType.fromField.field, p_Extract->extractByHdr.ignoreProtocolValidation,p_Extract->extractByHdr.hdrIndex); + offset = p_Extract->extractByHdr.extractByHdrType.fromField.offset; + size = p_Extract->extractByHdr.extractByHdrType.fromField.size; + break; + case(e_FM_PCD_EXTRACT_FULL_FIELD): + if(!p_Extract->extractByHdr.ignoreProtocolValidation) + { + /* if we have a known field for it - use it, otherwise use generic */ + bitMask = GetKnownProtMask(p_Extract->extractByHdr.hdr, p_Extract->extractByHdr.hdrIndex, + p_Extract->extractByHdr.extractByHdrType.fullField); + if(bitMask) + { + knownTmp |= bitMask; + /* save in driver structure */ + p_LocalExtractsArray->extractsArray[i].id = GetKnownFieldId(bitMask); + p_LocalExtractsArray->extractsArray[i].known = TRUE; + } + else + generic = TRUE; + + } + else + generic = TRUE; + if(generic) + { + /* tmp - till we cover more headers under generic */ + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Full header selection not supported")); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + break; + case(e_FM_PCD_EXTRACT_NON_HDR): + /* use generic */ + generic = TRUE; + offset = 0; + /* get the field code for the generic extract */ + code = GetGenCode(p_Extract->extractNonHdr.src, &offset); + offset += p_Extract->extractNonHdr.offset; + size = p_Extract->extractNonHdr.size; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + if(generic) + { + /* set generic register fields */ + if(currGenId >= FM_PCD_KG_NUM_OF_GENERIC_REGS) + RETURN_ERROR(MAJOR, E_FULL, ("Generic registers are fully used")); + if(!code) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); + + genTmp = KG_SCH_GEN_VALID; + genTmp |= (uint32_t)(code << KG_SCH_GEN_HT_SHIFT); + genTmp |= offset; + if((size > MAX_KG_SCH_SIZE) || (size < 1)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Illegal extraction (size out of range)")); + genTmp |= (uint32_t)((size - 1) << KG_SCH_GEN_SIZE_SHIFT); + swDefault = GetGenericSwDefault(swDefaults, numOfSwDefaults, code); + if(swDefault == e_FM_PCD_KG_DFLT_ILLEGAL) + DBG(WARNING, ("No sw default configured")); + + genTmp |= swDefault << KG_SCH_GEN_DEF_SHIFT; + genTmp |= KG_SCH_GEN_MASK; + p_SchemeRegs->kgse_gec[currGenId] = genTmp; + /* save in driver structure */ + p_LocalExtractsArray->extractsArray[i].id = currGenId++; + p_LocalExtractsArray->extractsArray[i].known = FALSE; + generic = FALSE; + } + } + p_SchemeRegs->kgse_ekfc = knownTmp; + + selectTmp = 0; + maskTmp = 0xFFFFFFFF; + /* configure kgse_bmch, kgse_bmcl and kgse_fqb */ + + if(p_KeyAndHash->numOfUsedMasks >= FM_PCD_KG_NUM_OF_EXTRACT_MASKS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Only %d masks supported", FM_PCD_KG_NUM_OF_EXTRACT_MASKS)); + for( i=0 ;inumOfUsedMasks ; i++) + { + /* Get the relative id of the extract (for known 0-0x1f, for generic 0-7) */ + id = p_LocalExtractsArray->extractsArray[p_KeyAndHash->masks[i].extractArrayIndex].id; + /* Get the shift of the select field (depending on i) */ + GET_MASK_SEL_SHIFT(shift,i); + if (p_LocalExtractsArray->extractsArray[p_KeyAndHash->masks[i].extractArrayIndex].known) + selectTmp |= id << shift; + else + selectTmp |= (id + MASK_FOR_GENERIC_BASE_ID) << shift; + + /* Get the shift of the offset field (depending on i) - may + be in kgse_bmch or in kgse_fqb (depending on i) */ + GET_MASK_OFFSET_SHIFT(shift,i); + if (i<=1) + selectTmp |= p_KeyAndHash->masks[i].offset << shift; + else + fqbTmp |= p_KeyAndHash->masks[i].offset << shift; + + /* Get the shift of the mask field (depending on i) */ + GET_MASK_SHIFT(shift,i); + /* pass all bits */ + maskTmp |= KG_SCH_BITMASK_MASK << shift; + /* clear bits that need masking */ + maskTmp &= ~(0xFF << shift) ; + /* set mask bits */ + maskTmp |= (p_KeyAndHash->masks[i].mask << shift) ; + } + p_SchemeRegs->kgse_bmch = selectTmp; + p_SchemeRegs->kgse_bmcl = maskTmp; + /* kgse_fqb will be written t the end of the routine */ + + /* configure kgse_hc */ + if(p_KeyAndHash->hashShift > MAX_HASH_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("hashShift must not be larger than %d", MAX_HASH_SHIFT)); + if(p_KeyAndHash->hashDistributionFqidsShift > MAX_DIST_FQID_SHIFT) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("hashDistributionFqidsShift must not be larger than %d", MAX_DIST_FQID_SHIFT)); + + tmpReg = 0; + + tmpReg |= ((p_KeyAndHash->hashDistributionNumOfFqids - 1) << p_KeyAndHash->hashDistributionFqidsShift); + tmpReg |= p_KeyAndHash->hashShift << KG_SCH_HASH_CONFIG_SHIFT_SHIFT; + + if(p_KeyAndHash->symmetricHash) + { + if((!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_MACSRC) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_MACDST)) || + (!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPSRC1) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPDST1)) || + (!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPSRC2) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPDST2)) || + (!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_L4PSRC) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_L4PDST))) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("symmetricHash set but src/dest extractions missing")); + tmpReg |= KG_SCH_HASH_CONFIG_SYM; + } + p_SchemeRegs->kgse_hc = tmpReg; + + /* build the return array describing the order of the extractions */ + + /* the last currGenId places of the array + are for generic extracts that are always last. + We now sort for the calculation of the order of the known + extractions we sort the known extracts between orderedArray[0] and + orderedArray[p_KeyAndHash->numOfUsedExtracts - currGenId - 1]. + for the calculation of the order of the generic extractions we use: + num_of_generic - currGenId + num_of_known - p_KeyAndHash->numOfUsedExtracts - currGenId + first_generic_index = num_of_known */ + curr = 0; + for (i=0;inumOfUsedExtracts ; i++) + { + if(p_LocalExtractsArray->extractsArray[i].known) + { + ASSERT_COND(curr<(p_KeyAndHash->numOfUsedExtracts - currGenId)); + j = curr; + /* id is the extract id (port id = 0, mac src = 1 etc.). the value in the array is the original + index in the user's extractions array */ + /* we compare the id of the current extract with the id of the extract in the orderedArray[j-1] + location */ + while((j > 0) && (p_LocalExtractsArray->extractsArray[i].id < + p_LocalExtractsArray->extractsArray[p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j-1]].id)) + { + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j] = + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j-1]; + j--; + } + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j] = (uint8_t)i; + curr++; + } + else + { + /* index is first_generic_index + generic index (id) */ + idx = (uint8_t)(p_KeyAndHash->numOfUsedExtracts - currGenId + p_LocalExtractsArray->extractsArray[i].id); + ASSERT_COND(idx < FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[idx]= (uint8_t)i; + } + } + XX_Free(p_LocalExtractsArray); + p_LocalExtractsArray = NULL; + + } + else + { + /* clear all unused registers: */ + p_SchemeRegs->kgse_ekfc = 0; + p_SchemeRegs->kgse_ekdv = 0; + p_SchemeRegs->kgse_bmch = 0; + p_SchemeRegs->kgse_bmcl = 0; + p_SchemeRegs->kgse_hc = 0; + p_SchemeRegs->kgse_dv0 = 0; + p_SchemeRegs->kgse_dv1 = 0; + } + + if(p_Scheme->bypassFqidGeneration) + p_SchemeRegs->kgse_hc |= KG_SCH_HASH_CONFIG_NO_FQID; + + /* configure kgse_spc */ + if( p_Scheme->schemeCounter.update) + p_SchemeRegs->kgse_spc = p_Scheme->schemeCounter.value; + + + /* check that are enough generic registers */ + if(p_Scheme->numOfUsedExtractedOrs + currGenId > FM_PCD_KG_NUM_OF_GENERIC_REGS) + RETURN_ERROR(MAJOR, E_FULL, ("Generic registers are fully used")); + + /* extracted OR mask on Qid */ + for( i=0 ;inumOfUsedExtractedOrs ; i++) + { + + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs = TRUE; + /* configure kgse_gec[i] */ + p_ExtractOr = &p_Scheme->extractedOrs[i]; + switch(p_ExtractOr->type) + { + case(e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO): + code = KG_SCH_GEN_PARSE_RESULT_N_FQID; + offset = 0; + break; + case(e_FM_PCD_EXTRACT_BY_HDR): + /* get the header code for the generic extract */ + code = GetGenHdrCode(p_ExtractOr->extractByHdr.hdr, p_ExtractOr->extractByHdr.hdrIndex, p_ExtractOr->extractByHdr.ignoreProtocolValidation); + /* set generic register fields */ + offset = p_ExtractOr->extractionOffset; + break; + case(e_FM_PCD_EXTRACT_NON_HDR): + /* get the field code for the generic extract */ + offset = 0; + code = GetGenCode(p_ExtractOr->src, &offset); + offset += p_ExtractOr->extractionOffset; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, NO_MSG); + } + + /* set generic register fields */ + if(!code) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); + genTmp = KG_SCH_GEN_EXTRACT_TYPE | KG_SCH_GEN_VALID; + genTmp |= (uint32_t)(code << KG_SCH_GEN_HT_SHIFT); + genTmp |= offset; + if(!!p_ExtractOr->bitOffsetInFqid == !!p_ExtractOr->bitOffsetInPlcrProfile) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" extracted byte must effect either FQID or Policer profile")); + + /************************************************************************************ + bitOffsetInFqid and bitOffsetInPolicerProfile are translated to rotate parameter + in the following way: + + Driver API and implementation: + ============================== + FQID: extracted OR byte may be shifted right 1-31 bits to effect parts of the FQID. + if shifted less than 8 bits, or more than 24 bits a mask is set on the bits that + are not overlapping FQID. + ------------------------ + | FQID (24) | + ------------------------ + -------- + | | extracted OR byte + -------- + + Policer Profile: extracted OR byte may be shifted right 1-15 bits to effect parts of the + PP id. Unless shifted exactly 8 bits to overlap the PP id, a mask is set on the bits that + are not overlapping PP id. + + -------- + | PP (8) | + -------- + -------- + | | extracted OR byte + -------- + + HW implementation + ================= + FQID and PP construct a 32 bit word in the way describe below. Extracted byte is located + as the highest byte of that word and may be rotated to effect any part os the FQID or + the PP. + ------------------------ -------- + | FQID (24) || PP (8) | + ------------------------ -------- + -------- + | | extracted OR byte + -------- + + ************************************************************************************/ + + if(p_ExtractOr->bitOffsetInFqid) + { + if(p_ExtractOr->bitOffsetInFqid > MAX_KG_SCH_FQID_BIT_OFFSET ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal extraction (bitOffsetInFqid out of range)")); + if(p_ExtractOr->bitOffsetInFqid<8) + genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInFqid+24) << KG_SCH_GEN_SIZE_SHIFT); + else + genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInFqid-8) << KG_SCH_GEN_SIZE_SHIFT); + p_ExtractOr->mask &= GetExtractedOrMask(p_ExtractOr->bitOffsetInFqid, TRUE); + } + else /* effect policer profile */ + { + if(p_ExtractOr->bitOffsetInPlcrProfile > MAX_KG_SCH_PP_BIT_OFFSET ) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal extraction (bitOffsetInPlcrProfile out of range)")); + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile = p_ExtractOr->bitOffsetInPlcrProfile; + genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInPlcrProfile+16) << KG_SCH_GEN_SIZE_SHIFT); + p_ExtractOr->mask &= GetExtractedOrMask(p_ExtractOr->bitOffsetInPlcrProfile, FALSE); + } + + genTmp |= (uint32_t)(p_ExtractOr->extractionOffset << KG_SCH_GEN_DEF_SHIFT); + /* clear bits that need masking */ + genTmp &= ~KG_SCH_GEN_MASK ; + /* set mask bits */ + genTmp |= (uint32_t)(p_ExtractOr->mask << KG_SCH_GEN_MASK_SHIFT); + p_SchemeRegs->kgse_gec[currGenId++] = genTmp; + + } + /* clear all unused GEC registers */ + for( i=currGenId ;ikgse_gec[i] = 0; + + /* add base Qid for this scheme */ + /* add configuration for kgse_fqb */ + if(p_Scheme->baseFqid & ~0x00FFFFFF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("baseFqid must be between 1 and 2^24-1")); + + fqbTmp |= p_Scheme->baseFqid; + p_SchemeRegs->kgse_fqb = fqbTmp; + + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine = p_Scheme->nextEngine; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction = p_Scheme->kgNextEngineParams.doneAction; + return E_OK; +} + +void FmPcdKgValidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(!p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId != ILLEGAL_NETENV) + FmPcdIncNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId); + p_FmPcd->p_FmPcdKg->schemes[schemeId].valid = TRUE; +} + +void FmPcdKgInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId != ILLEGAL_NETENV) + FmPcdDecNetEnvOwners(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId); + p_FmPcd->p_FmPcdKg->schemes[schemeId].valid = FALSE; +} + +uint32_t FmPcdKgGetRequiredAction(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction; +} + +uint32_t FmPcdKgGetPointedOwners(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners; +} + +bool FmPcdKgIsDirectPlcr(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].directPlcr; +} + + +uint16_t FmPcdKgGetRelativeProfileId(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].relativeProfileId; +} + + +bool FmPcdKgIsDistrOnPlcrProfile(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + if((p_FmPcd->p_FmPcdKg->schemes[schemeId].extractedOrs && + p_FmPcd->p_FmPcdKg->schemes[schemeId].bitOffsetInPlcrProfile) || + p_FmPcd->p_FmPcdKg->schemes[schemeId].nextRelativePlcrProfile) + return TRUE; + else + return FALSE; + +} +void FmPcdKgUpatePointedOwner(t_Handle h_FmPcd, uint8_t schemeId, bool add) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + if(add) + p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners++; + else + p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners--; +} + +e_FmPcdEngine FmPcdKgGetNextEngine(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].nextEngine; +} + +e_FmPcdDoneAction FmPcdKgGetDoneAction(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + return p_FmPcd->p_FmPcdKg->schemes[schemeId].doneAction; +} + +void FmPcdKgUpdateRequiredAction(t_Handle h_FmPcd, uint8_t schemeId, uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); + + p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction = requiredAction; +} + +t_Error FmPcdKgCheckInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + if(schemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + /* check that no port is bound to this scheme */ + if(p_FmPcd->p_FmPcdKg->schemes[schemeId].owners) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete a scheme that has ports bound to")); + if(!p_FmPcd->p_FmPcdKg->schemes[schemeId].valid) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Trying to delete an invalid scheme")); + return E_OK; +} + +uint32_t FmPcdKgBuildCppReg(t_Handle h_FmPcd, uint8_t clsPlanGrpId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpKgpeCpp; + + tmpKgpeCpp = (uint32_t)(p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry / 8); + tmpKgpeCpp |= (uint32_t)(((p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp / 8) - 1) << FM_PCD_KG_PE_CPP_MASK_SHIFT); + return tmpKgpeCpp; +} + +bool FmPcdKgHwSchemeIsValid(uint32_t schemeModeReg) +{ + + if(schemeModeReg & KG_SCH_MODE_EN) + return TRUE; + else + return FALSE; +} + +uint32_t FmPcdKgBuildWriteSchemeActionReg(uint8_t schemeId, bool updateCounter) +{ + return (uint32_t)(((uint32_t)schemeId << FM_PCD_KG_KGAR_NUM_SHIFT)| + FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_SCHEME_ENTRY | + DUMMY_PORT_ID | + (updateCounter ? FM_PCD_KG_KGAR_SCHEME_WSEL_UPDATE_CNT:0)); + +} + +uint32_t FmPcdKgBuildReadSchemeActionReg(uint8_t schemeId) +{ + return (uint32_t)(((uint32_t)schemeId << FM_PCD_KG_KGAR_NUM_SHIFT)| + FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_READ | + FM_PCD_KG_KGAR_SEL_SCHEME_ENTRY | + DUMMY_PORT_ID | + FM_PCD_KG_KGAR_SCHEME_WSEL_UPDATE_CNT); + +} + + +uint32_t FmPcdKgBuildWriteClsPlanBlockActionReg(uint8_t grpId) +{ + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_CLS_PLAN_ENTRY | + DUMMY_PORT_ID | + ((uint32_t)grpId << FM_PCD_KG_KGAR_NUM_SHIFT) | + FM_PCD_KG_KGAR_WSEL_MASK); + + + /* if we ever want to write 1 by 1, use: + sel = (uint8_t)(0x01 << (7- (entryId % CLS_PLAN_NUM_PER_GRP)));*/ +} + +uint32_t FmPcdKgBuildReadClsPlanBlockActionReg(uint8_t grpId) +{ + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_READ | + FM_PCD_KG_KGAR_SEL_CLS_PLAN_ENTRY | + DUMMY_PORT_ID | + ((uint32_t)grpId << FM_PCD_KG_KGAR_NUM_SHIFT) | + FM_PCD_KG_KGAR_WSEL_MASK); + + + /* if we ever want to write 1 by 1, use: + sel = (uint8_t)(0x01 << (7- (entryId % CLS_PLAN_NUM_PER_GRP)));*/ +} + +uint32_t FmPcdKgBuildWritePortSchemeBindActionReg(uint8_t hardwarePortId) +{ + + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_PORT_ENTRY | + hardwarePortId | + FM_PCD_KG_KGAR_SEL_PORT_WSEL_SP); +} + +uint32_t FmPcdKgBuildReadPortSchemeBindActionReg(uint8_t hardwarePortId) +{ + + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_READ | + FM_PCD_KG_KGAR_SEL_PORT_ENTRY | + hardwarePortId | + FM_PCD_KG_KGAR_SEL_PORT_WSEL_SP); +} +uint32_t FmPcdKgBuildWritePortClsPlanBindActionReg(uint8_t hardwarePortId) +{ + + return (uint32_t)(FM_PCD_KG_KGAR_GO | + FM_PCD_KG_KGAR_WRITE | + FM_PCD_KG_KGAR_SEL_PORT_ENTRY | + hardwarePortId | + FM_PCD_KG_KGAR_SEL_PORT_WSEL_CPP); +} + +uint8_t FmPcdKgGetClsPlanGrpBase(t_Handle h_FmPcd, uint8_t clsPlanGrp) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].baseEntry; +} + +uint16_t FmPcdKgGetClsPlanGrpSize(t_Handle h_FmPcd, uint8_t clsPlanGrp) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + + return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].sizeOfGrp; +} + +uint8_t FmPcdKgGetSchemeSwId(t_Handle h_FmPcd, uint8_t schemeHwId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t i; + + for(i=0;ip_FmPcdKg->numOfSchemes;i++) + if(p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeHwId) + return i; + ASSERT_COND(i!=p_FmPcd->p_FmPcdKg->numOfSchemes); + return FM_PCD_KG_NUM_OF_SCHEMES; +} + +uint8_t FmPcdKgGetNumOfPartitionSchemes(t_Handle h_FmPcd) +{ + return ((t_FmPcd*)h_FmPcd)->p_FmPcdKg->numOfSchemes; +} + +uint8_t FmPcdKgGetPhysicalSchemeId(t_Handle h_FmPcd, uint8_t relativeSchemeId) +{ + return ((t_FmPcd*)h_FmPcd)->p_FmPcdKg->schemesIds[relativeSchemeId]; +} + +uint8_t FmPcdKgGetRelativeSchemeId(t_Handle h_FmPcd, uint8_t schemeId) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t i; + + for(i = 0;ip_FmPcdKg->numOfSchemes;i++) + if(p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeId) + return i; + + if(i == p_FmPcd->p_FmPcdKg->numOfSchemes) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("Scheme is out of partition range")); + + return FM_PCD_KG_NUM_OF_SCHEMES; +} + +t_Error FmPcdKgCcGetSetParams(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t requiredAction) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t relativeSchemeId, physicalSchemeId; + uint32_t tmpKgarReg, tmpReg32 = 0, intFlags; + t_Error err; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgCcGetSetParams(p_FmPcd->h_Hc, h_Scheme, requiredAction); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId); + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if (FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Lock of the scheme FAILED")); + + if(!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].pointedOwners || + !(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction & requiredAction)) + { + if(requiredAction & UPDATE_NIA_ENQ_WITHOUT_DMA) + { + switch(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine) + { + case(e_FM_PCD_DONE): + if(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction == e_FM_PCD_ENQ_FRAME) + { + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is Invalid")); + } + tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode); + ASSERT_COND(tmpReg32 & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode, tmpReg32 | NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA); + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, FALSE); + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + } + break; + case(e_FM_PCD_PLCR): + if(!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr || + (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs && + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile) || + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("In this situation PP can not be with distribution and has to be shared")); + } + err = FmPcdPlcrCcGetSetParams(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId, requiredAction); + if(err) + { + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE,("in this situation the next engine after scheme can be or PLCR or ENQ_FRAME")); + } + } + } + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].pointedOwners += 1; + p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction |= requiredAction; + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + return E_OK; +} + +t_Error FmPcdKgSchemeTryLock(t_Handle h_FmPcd, uint8_t schemeId, bool intr) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + bool ans; + + if (intr) + ans = TRY_LOCK(NULL, &p_FmPcd->p_FmPcdKg->schemes[schemeId].lock); + else + ans = TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->p_FmPcdKg->schemes[schemeId].lock); + if (ans) + return E_OK; + return ERROR_CODE(E_BUSY); +} + +void FmPcdKgReleaseSchemeLock(t_Handle h_FmPcd, uint8_t schemeId) +{ + RELEASE_LOCK(((t_FmPcd*)h_FmPcd)->p_FmPcdKg->schemes[schemeId].lock); +} + +t_Handle FM_PCD_KgSetScheme(t_Handle h_FmPcd, t_FmPcdKgSchemeParams *p_Scheme) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpReg; + t_FmPcdKgInterModuleSchemeRegs schemeRegs; + t_FmPcdKgInterModuleSchemeRegs *p_MemRegs; + uint8_t i; + t_Error err = E_OK; + uint32_t tmpKgarReg; + uint32_t intFlags; + uint8_t physicalSchemeId, relativeSchemeId; + + SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgSetScheme(p_FmPcd->h_Hc, p_Scheme); + + /* if not called for modification, check first that this scheme is unused */ + if(!p_Scheme->modify) + { + /* check that schemeId is in range */ + if(p_Scheme->id.relativeSchemeId >= p_FmPcd->p_FmPcdKg->numOfSchemes) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("Scheme is out of range")); + return NULL; + } + relativeSchemeId = p_Scheme->id.relativeSchemeId; + + if (FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) + return NULL; + + physicalSchemeId = p_FmPcd->p_FmPcdKg->schemesIds[relativeSchemeId]; + + /* read specified scheme into scheme registers */ + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode); + FmPcdUnlock(p_FmPcd, intFlags); + + if (tmpReg & KG_SCH_MODE_EN) + { + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, + ("Scheme %d(phys %d) is already used", relativeSchemeId, physicalSchemeId)); + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + return NULL; + } + } + else + { + SANITY_CHECK_RETURN_VALUE(p_Scheme->id.h_Scheme, E_INVALID_HANDLE, NULL); + + intFlags = FmPcdLock(p_FmPcd); + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId); + + /* check that schemeId is in range */ + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + { + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + FmPcdUnlock(p_FmPcd, intFlags); + return NULL; + } + + err = FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, TRUE); + FmPcdUnlock(p_FmPcd, intFlags); + if (err) + return NULL; + } + + err = FmPcdKgBuildScheme(h_FmPcd, p_Scheme, &schemeRegs); + if(err) + { + REPORT_ERROR(MAJOR, err, NO_MSG); + FmPcdKgInvalidateSchemeSw(h_FmPcd, relativeSchemeId); + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + return NULL; + } + + /* configure all 21 scheme registers */ + p_MemRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs; + intFlags = FmPcdLock(p_FmPcd); + WRITE_UINT32(p_MemRegs->kgse_ppc, schemeRegs.kgse_ppc); + WRITE_UINT32(p_MemRegs->kgse_ccbs, schemeRegs.kgse_ccbs); + WRITE_UINT32(p_MemRegs->kgse_mode, schemeRegs.kgse_mode); + WRITE_UINT32(p_MemRegs->kgse_mv, schemeRegs.kgse_mv); + WRITE_UINT32(p_MemRegs->kgse_dv0, schemeRegs.kgse_dv0); + WRITE_UINT32(p_MemRegs->kgse_dv1, schemeRegs.kgse_dv1); + WRITE_UINT32(p_MemRegs->kgse_ekdv, schemeRegs.kgse_ekdv); + WRITE_UINT32(p_MemRegs->kgse_ekfc, schemeRegs.kgse_ekfc); + WRITE_UINT32(p_MemRegs->kgse_bmch, schemeRegs.kgse_bmch); + WRITE_UINT32(p_MemRegs->kgse_bmcl, schemeRegs.kgse_bmcl); + WRITE_UINT32(p_MemRegs->kgse_hc, schemeRegs.kgse_hc); + WRITE_UINT32(p_MemRegs->kgse_spc, schemeRegs.kgse_spc); + WRITE_UINT32(p_MemRegs->kgse_fqb, schemeRegs.kgse_fqb); + for(i=0 ; ikgse_gec[i], schemeRegs.kgse_gec[i]); + + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, p_Scheme->schemeCounter.update); + + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + FmPcdKgValidateSchemeSw(h_FmPcd, relativeSchemeId); + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + + return UINT_TO_PTR((uint64_t)physicalSchemeId+1); +} + +t_Error FM_PCD_KgDeleteScheme(t_Handle h_FmPcd, t_Handle h_Scheme) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint8_t physicalSchemeId; + uint32_t tmpKgarReg, intFlags; + t_Error err = E_OK; + uint8_t relativeSchemeId; + + SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgDeleteScheme(p_FmPcd->h_Hc, h_Scheme); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId); + + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + if ((err = FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + + /* check that no port is bound to this scheme */ + err = FmPcdKgCheckInvalidateSchemeSw(h_FmPcd, relativeSchemeId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + intFlags = FmPcdLock(p_FmPcd); + /* clear mode register, including enable bit */ + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode, 0); + + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, FALSE); + + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + FmPcdKgInvalidateSchemeSw(h_FmPcd, relativeSchemeId); + + RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock); + + return E_OK; +} + +uint32_t FM_PCD_KgGetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpKgarReg, spc, intFlags; + uint8_t physicalSchemeId; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgGetSchemeCounter(p_FmPcd->h_Hc, h_Scheme); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + + if(FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId) == FM_PCD_KG_NUM_OF_SCHEMES) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) + REPORT_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is Invalid")); + spc = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_spc); + FmPcdUnlock(p_FmPcd, intFlags); + + return spc; +} + +t_Error FM_PCD_KgSetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t value) +{ + t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; + uint32_t tmpKgarReg, intFlags; + uint8_t physicalSchemeId; + + SANITY_CHECK_RETURN_VALUE(h_FmPcd, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); + + if (p_FmPcd->h_Hc) + return FmHcPcdKgSetSchemeCounter(p_FmPcd->h_Hc, h_Scheme, value); + + physicalSchemeId = (uint8_t)(PTR_TO_UINT(h_Scheme)-1); + /* check that schemeId is in range */ + if(FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId) == FM_PCD_KG_NUM_OF_SCHEMES) + REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, NO_MSG); + + /* read specified scheme into scheme registers */ + tmpKgarReg = FmPcdKgBuildReadSchemeActionReg(physicalSchemeId); + intFlags = FmPcdLock(p_FmPcd); + WriteKgarWait(p_FmPcd, tmpKgarReg); + if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) + { + FmPcdUnlock(p_FmPcd, intFlags); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, ("Scheme is Invalid")); + } + + /* change counter value */ + WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_spc, value); + + /* call indirect command for scheme write */ + tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, TRUE); + + WriteKgarWait(p_FmPcd, tmpKgarReg); + FmPcdUnlock(p_FmPcd, intFlags); + + return E_OK; +} + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/Makefile @@ -0,0 +1,19 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +NCSW_FM_INC = $(srctree)/drivers/net/dpa/NetCommSw/Peripherals/FM/inc + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) + +obj-y += fsl-ncsw-Pcd.o + +fsl-ncsw-Pcd-objs := fm_port.o fm_port_im.o + + + + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.h @@ -0,0 +1,894 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_port.h + + @Description FM Port internal structures and definitions. +*//***************************************************************************/ +#ifndef __FM_PORT_H +#define __FM_PORT_H + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_port_ext.h" + +#include "fm_common.h" + + +#define __ERR_MODULE__ MODULE_FM_PORT + + +#define MIN_EXT_BUF_SIZE 64 +#define DATA_ALIGNMENT 64 +#define MAX_LIODN_OFFSET 64 + +/**************************************************************************//** + @Description Memory Map defines +*//***************************************************************************/ +#define BMI_PORT_REGS_OFFSET 0 +#define QMI_PORT_REGS_OFFSET 0x400 +#define PRS_PORT_REGS_OFFSET 0x800 + +/**************************************************************************//** + @Description defaults +*//***************************************************************************/ +#define DEFAULT_PORT_deqHighPriority TRUE +#define DEFAULT_PORT_deqType e_FM_PORT_DEQ_TYPE1 +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +#define DEFAULT_PORT_deqPrefetchOption e_FM_PORT_DEQ_FULL_PREFETCH +#define DEFAULT_PORT_deqPrefetchOption_HC e_FM_PORT_DEQ_NO_PREFETCH +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +#define DEFAULT_PORT_deqByteCnt 2000 +#define DEFAULT_PORT_bufferPrefixContent_privDataSize 0 +#define DEFAULT_PORT_bufferPrefixContent_passPrsResult FALSE +#define DEFAULT_PORT_bufferPrefixContent_passTimeStamp FALSE +#define DEFAULT_PORT_bufferPrefixContent_allOtherPCDInfo FALSE +#ifdef DEBUG +#define DEFAULT_PORT_bufferPrefixContent_debugInfo FALSE +#endif /* DEBUG */ +#define DEFAULT_PORT_bufferPrefixContent_dataAlign DATA_ALIGNMENT +#define DEFAULT_PORT_cheksumLastBytesIgnore 0 +#define DEFAULT_PORT_cutBytesFromEnd 4 +#define DEFAULT_PORT_txFifoMinFillLevel 0 +#define DEFAULT_PORT_txFifoDeqPipelineDepth_IM 2 +#define DEFAULT_PORT_txFifoDeqPipelineDepth_1G 2 +#define DEFAULT_PORT_txFifoDeqPipelineDepth_10G 8 +#define DEFAULT_PORT_txFifoLowComfLevel (5*KILOBYTE) +#define DEFAULT_PORT_rxFifoPriElevationLevel BMI_MAX_FIFO_SIZE +#define DEFAULT_PORT_rxFifoThreshold (BMI_MAX_FIFO_SIZE*3/4) +#define DEFAULT_PORT_frmDiscardOverride FALSE +#define DEFAULT_PORT_dmaSwapData e_FM_PORT_DMA_NO_SWP +#define DEFAULT_PORT_dmaIntContextCacheAttr e_FM_PORT_DMA_NO_STASH +#define DEFAULT_PORT_dmaHeaderCacheAttr e_FM_PORT_DMA_NO_STASH +#define DEFAULT_PORT_dmaScatterGatherCacheAttr e_FM_PORT_DMA_NO_STASH +#define DEFAULT_PORT_dmaWriteOptimize TRUE +#define DEFAULT_PORT_forwardIntContextReuse FALSE +#define DEFAULT_PORT_BufMargins_startMargins 32 +#define DEFAULT_PORT_BufMargins_endMargins 0 +#define DEFAULT_PORT_syncReq TRUE +#define DEFAULT_PORT_syncReqForHc FALSE +#define DEFAULT_PORT_color e_FM_PORT_COLOR_GREEN +#define DEFAULT_PORT_errorsToDiscard FM_PORT_FRM_ERR_CLS_DISCARD +#define DEFAULT_dualRateLimitScaleDown e_FM_PORT_DUAL_RATE_LIMITER_NONE +#define DEFAULT_rateLimitBurstSizeHighGranularity FALSE +#define DEFAULT_exception IM_EV_BSY + +/* Host command port MUST NOT be changed to more than 1 !!! */ +#define DEFAULT_PORT_numOfTasks(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? 16 : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? 3 : 1)) + +#define DEFAULT_PORT_extraNumOfTasks(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? 8 : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? 2 : 0)) + +#define DEFAULT_PORT_numOfOpenDmas(type) \ + (uint32_t)(((type) == e_FM_PORT_TYPE_TX_10G) ? 8 : \ + (((type) == e_FM_PORT_TYPE_RX_10G) ? 4 : 1)) + +#define DEFAULT_PORT_extraNumOfOpenDmas(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? 8 : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? 1 : 0)) + +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) +/* Let LLD to set minimum fifosize, otherwise fifosize settings will not work */ +#define DEFAULT_PORT_sizeOfFifo(type) \ + (uint32_t)(KILOBYTE) +#else +#define DEFAULT_PORT_sizeOfFifo(type) \ + (uint32_t)((((type) == e_FM_PORT_TYPE_RX_10G) || \ + ((type) == e_FM_PORT_TYPE_TX_10G)) ? (16*KILOBYTE) : \ + ((((type) == e_FM_PORT_TYPE_RX) || \ + ((type) == e_FM_PORT_TYPE_TX) || \ + ((type) == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) ? (4*KILOBYTE) : (1536))) +#endif + +#define DEFAULT_PORT_extraSizeOfFifo(type) \ + (uint32_t)(((type) == e_FM_PORT_TYPE_RX_10G) ? (8*KILOBYTE) : \ + (((type) == e_FM_PORT_TYPE_RX) ? (4*KILOBYTE) : (0))) + +#define DEFAULT_PORT_txBdRingLength 16 +#define DEFAULT_PORT_rxBdRingLength 128 +#define DEFAULT_PORT_ImfwExtStructsMemId 0 +#define DEFAULT_PORT_ImfwExtStructsMemAttr MEMORY_ATTR_CACHEABLE + +#define OH_PIPELINE_DEPTH 2 + +/**************************************************************************//** + @Description Memory Mapped Registers +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +#define FM_PORT_MAX_NUM_OF_EXT_POOLS_ALL_INTEGRATIONS 8 +#define FM_PORT_NUM_OF_CONGESTION_GRPS_ALL_INTEGRATIONS 256 + +typedef _Packed struct +{ + volatile uint32_t fmbm_rcfg; /**< Rx Configuration */ + volatile uint32_t fmbm_rst; /**< Rx Status */ + volatile uint32_t fmbm_rda; /**< Rx DMA attributes*/ + volatile uint32_t fmbm_rfp; /**< Rx FIFO Parameters*/ + volatile uint32_t fmbm_rfed; /**< Rx Frame End Data*/ + volatile uint32_t fmbm_ricp; /**< Rx Internal Context Parameters*/ + volatile uint32_t fmbm_rim; /**< Rx Internal Buffer Margins*/ + volatile uint32_t fmbm_rebm; /**< Rx External Buffer Margins*/ + volatile uint32_t fmbm_rfne; /**< Rx Frame Next Engine*/ + volatile uint32_t fmbm_rfca; /**< Rx Frame Command Attributes.*/ + volatile uint32_t fmbm_rfpne; /**< Rx Frame Parser Next Engine*/ + volatile uint32_t fmbm_rpso; /**< Rx Parse Start Offset*/ + volatile uint32_t fmbm_rpp; /**< Rx Policer Profile */ + volatile uint32_t fmbm_rccb; /**< Rx Coarse Classification Base */ + volatile uint32_t fmbm_reth; /**< Rx Excessive Threshold */ + volatile uint32_t reserved1[1]; /**< (0x03C 0x03F) */ + volatile uint32_t fmbm_rprai[FM_PORT_PRS_RESULT_NUM_OF_WORDS]; + /**< Rx Parse Results Array Initialization*/ + volatile uint32_t fmbm_rfqid; /**< Rx Frame Queue ID*/ + volatile uint32_t fmbm_refqid; /**< Rx Error Frame Queue ID*/ + volatile uint32_t fmbm_rfsdm; /**< Rx Frame Status Discard Mask*/ + volatile uint32_t fmbm_rfsem; /**< Rx Frame Status Error Mask*/ + volatile uint32_t fmbm_rfene; /**< Rx Frame Enqueue Next Engine */ + volatile uint32_t reserved2[0x23];/**< (0x074 0x0FF) */ + volatile uint32_t fmbm_ebmpi[FM_PORT_MAX_NUM_OF_EXT_POOLS_ALL_INTEGRATIONS]; + /**< Buffer Manager pool Information-*/ + volatile uint32_t fmbm_acnt[FM_PORT_MAX_NUM_OF_EXT_POOLS_ALL_INTEGRATIONS]; + /**< Allocate Counter-*/ + volatile uint32_t reserved3[8]; + /**< 0x130/0x140 - 0x15F reserved -*/ + volatile uint32_t fmbm_cgm[FM_PORT_NUM_OF_CONGESTION_GRPS_ALL_INTEGRATIONS/32]; + /**< Congestion Group Map*/ + volatile uint32_t fmbm_mpd; /**< BM Pool Depletion */ + volatile uint32_t reserved4[0x1F];/**< (0x184 0x1FF) */ + volatile uint32_t fmbm_rstc; /**< Rx Statistics Counters*/ + volatile uint32_t fmbm_rfrc; /**< Rx Frame Counter*/ + volatile uint32_t fmbm_rfbc; /**< Rx Bad Frames Counter*/ + volatile uint32_t fmbm_rlfc; /**< Rx Large Frames Counter*/ + volatile uint32_t fmbm_rffc; /**< Rx Filter Frames Counter*/ + volatile uint32_t fmbm_rfcd; /**< Rx Frame Discard Counter*/ + volatile uint32_t fmbm_rfldec; /**< Rx Frames List DMA Error Counter*/ + volatile uint32_t fmbm_rodc; /**< Rx Out of Buffers Discard Counter-*/ + volatile uint32_t fmbm_rbdc; /**< Rx Buffers Deallocate Counter-*/ + volatile uint32_t reserved5[0x17];/**< (0x224 0x27F) */ + volatile uint32_t fmbm_rpc; /**< Rx Performance Counters*/ + volatile uint32_t fmbm_rpcp; /**< Rx Performance Count Parameters*/ + volatile uint32_t fmbm_rccn; /**< Rx Cycle Counter*/ + volatile uint32_t fmbm_rtuc; /**< Rx Tasks Utilization Counter*/ + volatile uint32_t fmbm_rrquc; /**< Rx Receive Queue Utilization Counter*/ + volatile uint32_t fmbm_rduc; /**< Rx DMA Utilization Counter*/ + volatile uint32_t fmbm_rfuc; /**< Rx FIFO Utilization Counter*/ + volatile uint32_t fmbm_rpac; /**< Rx Pause Activation Counter*/ + volatile uint32_t reserved6[0x18];/**< (0x2A0 0x2FF) */ + volatile uint32_t fmbm_rdbg; /**< Rx Debug-*/ +} _PackedType t_FmPortRxBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmbm_tcfg; /**< Tx Configuration */ + volatile uint32_t fmbm_tst; /**< Tx Status */ + volatile uint32_t fmbm_tda; /**< Tx DMA attributes */ + volatile uint32_t fmbm_tfp; /**< Tx FIFO Parameters */ + volatile uint32_t fmbm_tfed; /**< Tx Frame End Data */ + volatile uint32_t fmbm_ticp; /**< Tx Internal Context Parameters */ + volatile uint32_t fmbm_tfne; /**< Tx Frame Next Engine. */ + volatile uint32_t fmbm_tfca; /**< Tx Frame Command attribute. */ + volatile uint32_t fmbm_tcfqid; /**< Tx Confirmation Frame Queue ID. */ + volatile uint32_t fmbm_tfeqid; /**< Tx Frame Error Queue ID */ + volatile uint32_t fmbm_tfene; /**< Tx Frame Enqueue Next Engine */ + volatile uint32_t fmbm_trlmts; /**< Tx Rate Limiter Scale */ + volatile uint32_t fmbm_trlmt; /**< Tx Rate Limiter */ + volatile uint32_t reserved0[0x73];/**< (0x038-0x200) */ + volatile uint32_t fmbm_tstc; /**< Tx Statistics Counters */ + volatile uint32_t fmbm_tfrc; /**< Tx Frame Counter */ + volatile uint32_t fmbm_tfdc; /**< Tx Frames Discard Counter */ + volatile uint32_t fmbm_tfledc; /**< Tx Frame Length error discard counter */ + volatile uint32_t fmbm_tfufdc; /**< Tx Frame unsupported format discard Counter */ + volatile uint32_t fmbm_tbdc; /**< Tx Buffers Deallocate Counter */ + volatile uint32_t reserved1[0x1A];/**< (0x218-0x280) */ + volatile uint32_t fmbm_tpc; /**< Tx Performance Counters*/ + volatile uint32_t fmbm_tpcp; /**< Tx Performance Count Parameters*/ + volatile uint32_t fmbm_tccn; /**< Tx Cycle Counter*/ + volatile uint32_t fmbm_ttuc; /**< Tx Tasks Utilization Counter*/ + volatile uint32_t fmbm_ttcquc; /**< Tx Transmit Confirm Queue Utilization Counter*/ + volatile uint32_t fmbm_tduc; /**< Tx DMA Utilization Counter*/ + volatile uint32_t fmbm_tfuc; /**< Tx FIFO Utilization Counter*/ +} _PackedType t_FmPortTxBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmbm_ocfg; /**< O/H Configuration */ + volatile uint32_t fmbm_ost; /**< O/H Status */ + volatile uint32_t fmbm_oda; /**< O/H DMA attributes */ + volatile uint32_t fmbm_oicp; /**< O/H Internal Context Parameters */ + volatile uint32_t fmbm_ofdne; /**< O/H Frame Dequeue Next Engine */ + volatile uint32_t fmbm_ofne; /**< O/H Frame Next Engine */ + volatile uint32_t fmbm_ofca; /**< O/H Frame Command Attributes. */ + volatile uint32_t fmbm_ofpne; /**< O/H Frame Parser Next Engine */ + volatile uint32_t fmbm_opso; /**< O/H Parse Start Offset */ + volatile uint32_t fmbm_opp; /**< O/H Policer Profile */ + volatile uint32_t fmbm_occb; /**< O/H Coarse Classification base */ + volatile uint32_t fmbm_oim; /**< O/H Internal margins*/ + volatile uint32_t reserved0[4]; /**< (0x030 - 0x03F) */ + volatile uint32_t fmbm_oprai[FM_PORT_PRS_RESULT_NUM_OF_WORDS]; + /**< O/H Parse Results Array Initialization */ + volatile uint32_t fmbm_ofqid; /**< O/H Frame Queue ID */ + volatile uint32_t fmbm_oefqid; /**< O/H Error Frame Queue ID */ + volatile uint32_t fmbm_ofsdm; /**< O/H Frame Status Discard Mask */ + volatile uint32_t fmbm_ofsem; /**< O/H Frame Status Error Mask */ + volatile uint32_t fmbm_ofene; /**< O/H Frame Enqueue Next Engine */ + volatile uint32_t fmbm_orlmts; /**< O/H Rate Limiter Scale */ + volatile uint32_t fmbm_orlmt; /**< O/H Rate Limiter */ + volatile uint32_t reserved0a[0x21]; + /**< 0x07C - 0x0FF Reserved */ + union + { + volatile uint32_t fmbm_oebmpi[FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS]; + /**< Buffer Manager Observed Pool Information */ + volatile uint32_t reserved0b[0x18]; + }; /**< 0x100 - 0x15F Reserved */ + volatile uint32_t fmbm_ocgm; /**< Observed Congestion Group Map */ + volatile uint32_t reserved0c[0x7];/**< 0x164 - 0x17F Reserved */ + volatile uint32_t fmbm_ompd; /**< Observed BMan Pool Depletion */ + volatile uint32_t reserved0d[0x1F]; + /**< 0x184 - 0x1FF Reserved */ + volatile uint32_t fmbm_ostc; /**< O/H Statistics Counters */ + volatile uint32_t fmbm_ofrc; /**< O/H Frame Counter */ + volatile uint32_t fmbm_ofdc; /**< O/H Frames Discard Counter */ + volatile uint32_t fmbm_ofledc; /**< O/H Frames Length Error Discard Counter */ + volatile uint32_t fmbm_ofufdc; /**< O/H Frames Unsupported Format Discard Counter */ + volatile uint32_t fmbm_offc; /**< O/H Filter Frames Counter */ + volatile uint32_t fmbm_ofwdc; /**< - Rx Frames WRED Discard Counter */ + volatile uint32_t fmbm_ofldec; /**< O/H Frames List DMA Error Counter */ + volatile uint32_t fmbm_obdc; /**< O/H Buffers Deallocate Counter */ + volatile uint32_t reserved2[0x17];/**< (0x218 - 0x27F) */ + volatile uint32_t fmbm_opc; /**< O/H Performance Counters */ + volatile uint32_t fmbm_opcp; /**< O/H Performance Count Parameters */ + volatile uint32_t fmbm_occn; /**< O/H Cycle Counter */ + volatile uint32_t fmbm_otuc; /**< O/H Tasks Utilization Counter */ + volatile uint32_t fmbm_oduc; /**< O/H DMA Utilization Counter */ + volatile uint32_t fmbm_ofuc; /**< O/H FIFO Utilization Counter */ +} _PackedType t_FmPortOhBmiRegs; + +typedef _Packed union +{ + t_FmPortRxBmiRegs rxPortBmiRegs; + t_FmPortTxBmiRegs txPortBmiRegs; + t_FmPortOhBmiRegs ohPortBmiRegs; +} _PackedType u_FmPortBmiRegs; + +typedef _Packed struct +{ + volatile uint32_t reserved1[2]; /**< 0xn024 - 0x02B */ + volatile uint32_t fmqm_pndn; /**< PortID n Dequeue NIA Register */ + volatile uint32_t fmqm_pndc; /**< PortID n Dequeue Config Register */ + volatile uint32_t fmqm_pndtfc; /**< PortID n Dequeue Total Frame Counter */ + volatile uint32_t fmqm_pndfdc; /**< PortID n Dequeue FQID from Default Counter */ + volatile uint32_t fmqm_pndcc; /**< PortID n Dequeue Confirm Counter */ +} _PackedType t_FmPortNonRxQmiRegs; + +typedef _Packed struct +{ + volatile uint32_t fmqm_pnc; /**< PortID n Configuration Register */ + volatile uint32_t fmqm_pns; /**< PortID n Status Register */ + volatile uint32_t fmqm_pnts; /**< PortID n Task Status Register */ + volatile uint32_t reserved0[4]; /**< 0xn00C - 0xn01B */ + volatile uint32_t fmqm_pnen; /**< PortID n Enqueue NIA Register */ + volatile uint32_t fmqm_pnetfc; /**< PortID n Enqueue Total Frame Counter */ + t_FmPortNonRxQmiRegs nonRxQmiRegs; /**< Registers for Tx Hc & Op ports */ +} _PackedType t_FmPortQmiRegs; + +typedef _Packed struct +{ + _Packed struct + { + volatile uint32_t softSeqAttach; /**< Soft Sequence Attachment */ + volatile uint32_t lcv; /**< Line-up Enable Confirmation Mask */ + } _PackedType hdrs[FM_PCD_PRS_NUM_OF_HDRS]; + volatile uint8_t reserved0[0x378]; + volatile uint32_t pcac; /**< Parse Internal Memory Configuration Access Control Register */ + volatile uint32_t pctpid; /**< Parse Internal Memory Configured TPID Register */ +} _PackedType t_FmPortPrsRegs; + +/**************************************************************************//* + @Description Basic buffer descriptor (BD) structure +*//***************************************************************************/ +typedef _Packed struct +{ + volatile uint16_t status; + volatile uint16_t length; + volatile uint8_t reserved0[0x6]; + volatile uint8_t reserved1[0x1]; + volatile t_FmPhysAddr buff; +} _PackedType t_FmImBd; + +typedef _Packed struct +{ + volatile uint16_t gen; /**< tbd */ + volatile uint8_t reserved0[0x1]; + volatile t_FmPhysAddr bdRingBase; /**< tbd */ + volatile uint16_t bdRingSize; /**< tbd */ + volatile uint16_t offsetIn; /**< tbd */ + volatile uint16_t offsetOut; /**< tbd */ + volatile uint8_t reserved1[0x12]; /**< 0x0e - 0x1f */ +} _PackedType t_FmPortImQd; + +typedef _Packed struct +{ + volatile uint32_t mode; /**< Mode register */ + volatile uint32_t rxQdPtr; /**< tbd */ + volatile uint32_t txQdPtr; /**< tbd */ + volatile uint16_t mrblr; /**< tbd */ + volatile uint16_t rxQdBsyCnt; /**< tbd */ + volatile uint8_t reserved0[0x10]; /**< 0x10 - 0x1f */ + t_FmPortImQd rxQd; + t_FmPortImQd txQd; + volatile uint8_t reserved1[0xa0]; /**< 0x60 - 0xff */ +} _PackedType t_FmPortImPram; + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description Registers bit fields +*//***************************************************************************/ + +/**************************************************************************//** + @Description BMI defines +*//***************************************************************************/ +#define BMI_PORT_CFG_EN 0x80000000 +#define BMI_PORT_CFG_EN_MACSEC 0x00800000 +#define BMI_PORT_CFG_FDOVR 0x02000000 +#define BMI_PORT_CFG_IM 0x01000000 +#define BMI_PORT_STATUS_BSY 0x80000000 +#define BMI_COUNTERS_EN 0x80000000 +#define BMI_DMA_ATTR_WRITE_OPTIMIZE 0x00100000 +#define BMI_PORT_RFNE_FRWD_DCL4C 0x10000000 +#define BMI_PORT_RFNE_FRWD_RPD 0x40000000 +#define BMI_RFNE_FDCS_MASK 0xFF000000 + +#define BMI_CMD_MR_LEAC 0x00200000 +#define BMI_CMD_MR_SLEAC 0x00100000 +#define BMI_CMD_MR_MA 0x00080000 +#define BMI_CMD_MR_DEAS 0x00040000 +#define BMI_CMD_TX_MR_DEF (0) +#define BMI_CMD_RX_MR_DEF (BMI_CMD_MR_LEAC | \ + BMI_CMD_MR_SLEAC | \ + BMI_CMD_MR_MA | \ + BMI_CMD_MR_DEAS) +#define BMI_CMD_ATTR_ORDER 0x80000000 +#define BMI_CMD_ATTR_SYNC 0x02000000 +#define BMI_CMD_ATTR_MACCMD_MASK 0x0000ff00 +#define BMI_CMD_ATTR_MACCMD_OVERRIDE 0x00008000 +#define BMI_CMD_ATTR_MACCMD_SECURED 0x00001000 +#define BMI_CMD_ATTR_MACCMD_SC_MASK 0x00000f00 + +#define BMI_EXT_BUF_POOL_VALID 0x80000000 +#define BMI_EXT_BUF_POOL_EN_COUNTER 0x40000000 +#define BMI_EXT_BUF_POOL_BACKUP 0x20000000 +#define BMI_EXT_BUF_POOL_ID_MASK 0x003F0000 +#define BMI_STATUS_RX_MASK_UNUSED (uint32_t)(~(FM_PORT_FRM_ERR_DMA | \ + FM_PORT_FRM_ERR_PHYSICAL | \ + FM_PORT_FRM_ERR_SIZE | \ + FM_PORT_FRM_ERR_CLS_DISCARD | \ + FM_PORT_FRM_ERR_EXTRACTION | \ + FM_PORT_FRM_ERR_NO_SCHEME | \ + FM_PORT_FRM_ERR_COLOR_RED | \ + FM_PORT_FRM_ERR_COLOR_YELLOW | \ + FM_PORT_FRM_ERR_ILL_PLCR | \ + FM_PORT_FRM_ERR_PLCR_FRAME_LEN | \ + FM_PORT_FRM_ERR_PRS_TIMEOUT | \ + FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT | \ + FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED | \ + FM_PORT_FRM_ERR_PRS_HDR_ERR | \ + FM_PORT_FRM_ERR_PROCESS_TIMEOUT | \ + FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW)) + +#define BMI_STATUS_OP_MASK_UNUSED (uint32_t)(BMI_STATUS_RX_MASK_UNUSED & \ + ~(FM_PORT_FRM_ERR_LENGTH | \ + FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT)) + +#define BMI_RATE_LIMIT_EN 0x80000000 +#define BMI_RATE_LIMIT_BURST_SIZE_GRAN 0x80000000 +#define BMI_RATE_LIMIT_SCALE_BY_2 0x00000001 +#define BMI_RATE_LIMIT_SCALE_BY_4 0x00000002 +#define BMI_RATE_LIMIT_SCALE_BY_8 0x00000003 + +#define BMI_RX_FIFO_THRESHOLD_BC 0x80000000 + +#define BMI_PRS_RESULT_HIGH 0x00000000 +#define BMI_PRS_RESULT_LOW 0xFFFFFFFF + +#define RX_ERRS_TO_ENQ (FM_PORT_FRM_ERR_DMA | \ + FM_PORT_FRM_ERR_PHYSICAL | \ + FM_PORT_FRM_ERR_SIZE | \ + FM_PORT_FRM_ERR_EXTRACTION | \ + FM_PORT_FRM_ERR_NO_SCHEME | \ + FM_PORT_FRM_ERR_ILL_PLCR | \ + FM_PORT_FRM_ERR_PLCR_FRAME_LEN | \ + FM_PORT_FRM_ERR_PRS_TIMEOUT | \ + FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT | \ + FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED | \ + FM_PORT_FRM_ERR_PRS_HDR_ERR | \ + FM_PORT_FRM_ERR_PROCESS_TIMEOUT | \ + FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW) + +#ifdef FM_CAPWAP_SUPPORT +#define OP_ERRS_TO_ENQ (RX_ERRS_TO_ENQ | \ + FM_PORT_FRM_ERR_LENGTH | \ + FM_PORT_FRM_ERR_NON_FM | \ + FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT) + +#else +#define OP_ERRS_TO_ENQ (RX_ERRS_TO_ENQ | \ + FM_PORT_FRM_ERR_LENGTH | \ + FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT) +#endif /* FM_CAPWAP_SUPPORT */ + +/* shifts */ +#define BMI_PORT_CFG_MS_SEL_SHIFT 16 +#define BMI_DMA_ATTR_SWP_SHIFT 30 +#define BMI_DMA_ATTR_IC_CACHE_SHIFT 28 +#define BMI_DMA_ATTR_HDR_CACHE_SHIFT 26 +#define BMI_DMA_ATTR_SG_CACHE_SHIFT 24 + +#define BMI_IM_FOF_SHIFT 28 +#define BMI_PR_PORTID_SHIFT 24 + +#define BMI_RX_FIFO_PRI_ELEVATION_SHIFT 16 +#define BMI_RX_FIFO_THRESHOLD_SHIFT 0 + +#define BMI_RX_FRAME_END_CS_IGNORE_SHIFT 24 +#define BMI_RX_FRAME_END_CUT_SHIFT 16 + +#define BMI_IC_TO_EXT_SHIFT 16 +#define BMI_IC_FROM_INT_SHIFT 8 +#define BMI_IC_SIZE_SHIFT 0 + +#define BMI_INT_BUF_MARG_SHIFT 28 + +#define BMI_EXT_BUF_MARG_START_SHIFT 16 +#define BMI_EXT_BUF_MARG_END_SHIFT 0 + +#define BMI_CMD_ATTR_COLOR_SHIFT 26 +#define BMI_CMD_ATTR_COM_MODE_SHIFT 16 +#define BMI_CMD_ATTR_MACCMD_SHIFT 8 +#define BMI_CMD_ATTR_MACCMD_OVERRIDE_SHIFT 15 +#define BMI_CMD_ATTR_MACCMD_SECURED_SHIFT 12 +#define BMI_CMD_ATTR_MACCMD_SC_SHIFT 8 + +#define BMI_POOL_DEP_NUM_OF_POOLS_SHIFT 16 +#define BMI_POOL_DEP_NUM_OF_POOLS_VECTOR_SHIFT 24 + +#define BMI_EXT_BUF_POOL_ID_SHIFT 16 + +#define BMI_TX_FIFO_MIN_FILL_SHIFT 16 +#define BMI_TX_FIFO_PIPELINE_DEPTH_SHIFT 12 +#define BMI_TX_LOW_COMF_SHIFT 0 + +#define BMI_TX_FRAME_END_CS_IGNORE_SHIFT 24 + +#define BMI_PERFORMANCE_TASK_COMP_SHIFT 24 +#define BMI_PERFORMANCE_PORT_COMP_SHIFT 16 +#define BMI_PERFORMANCE_DMA_COMP_SHIFT 12 +#define BMI_PERFORMANCE_FIFO_COMP_SHIFT 0 + +#define BMI_MAX_BURST_SHIFT 16 +#define BMI_COUNT_RATE_UNIT_SHIFT 16 + +/* sizes */ +#define FRAME_END_DATA_SIZE 16 +#define OFFSET_UNITS 16 +#define FRAME_OFFSET_UNITS 16 +#define MAX_EXT_OFFSET 496 +#define MAX_EXT_BUFFER_OFFSET 511 +#define MAX_INT_OFFSET 240 +#define MIN_TX_INT_OFFSET 16 +#define MAX_IC_SIZE 256 +#define MAX_FRAME_OFFSET 64 +#define MAX_FIFO_PIPELINE_DEPTH 8 +#define MAX_PERFORMANCE_TASK_COMP 64 +#define MAX_PERFORMANCE_TX_QUEUE_COMP 8 +#define MAX_PERFORMANCE_RX_QUEUE_COMP 64 +#define MAX_PERFORMANCE_DMA_COMP 16 +#define MAX_NUM_OF_TASKS 64 +#define MAX_NUM_OF_EXTRA_TASKS 8 +#define MAX_NUM_OF_DMAS 16 +#define MAX_NUM_OF_EXTRA_DMAS 8 +#define MAX_BURST_SIZE 1024 +#define FRAG_EXTRA_SPACE 32 + +/**************************************************************************//** + @Description QMI defines +*//***************************************************************************/ +/* masks */ +#define QMI_PORT_CFG_EN 0x80000000 +#define QMI_PORT_CFG_EN_COUNTERS 0x10000000 +#define QMI_PORT_STATUS_DEQ_TNUM_BSY 0x80000000 +#define QMI_PORT_STATUS_DEQ_FD_BSY 0x20000000 + +#define QMI_DEQ_CFG_PREFETCH_NO_TNUM 0x02000000 +#define QMI_DEQ_CFG_PREFETCH_WAITING_TNUM 0 +#define QMI_DEQ_CFG_PREFETCH_1_FRAME 0 +#define QMI_DEQ_CFG_PREFETCH_3_FRAMES 0x01000000 + +#define QMI_DEQ_CFG_PRI 0x80000000 +#define QMI_DEQ_CFG_TYPE1 0x10000000 +#define QMI_DEQ_CFG_TYPE2 0x20000000 +#define QMI_DEQ_CFG_TYPE3 0x30000000 + +#define QMI_DEQ_CFG_SUBPORTAL_MASK 0x1f +#define QMI_DEQ_CFG_SUBPORTAL_SHIFT 20 + +/**************************************************************************//** + @Description PARSER defines +*//***************************************************************************/ +/* masks */ +#define PRS_HDR_ERROR_DIS 0x00000800 +#define PRS_HDR_SW_PRS_EN 0x00000400 +#define PRS_CP_OFFSET_MASK 0x0000000F +#define PRS_TPID1_MASK 0xFFFF0000 +#define PRS_TPID2_MASK 0x0000FFFF +#define PRS_TPID_DFLT 0x91009100 + +#define PRS_HDR_MPLS_LBL_INTER_EN 0x00200000 +#define PRS_HDR_IPV6_ROUTE_HDR_DIS 0x00008000 +#define PRS_HDR_PPPOE_MTU_CHECK_EN 0x80000000 +#define PRS_HDR_UDP_PAD_REMOVAL 0x80000000 +#define PRS_HDR_TCP_PAD_REMOVAL 0x80000000 +#define PRS_CAC_STOP 0x00000001 +#define PRS_CAC_ACTIVE 0x00000100 + +/* shifts */ +#define PRS_PCTPID_SHIFT 16 +#define PRS_HDR_MPLS_NEXT_HDR_SHIFT 22 +#define PRS_HDR_ETH_BC_SHIFT 28 +#define PRS_HDR_ETH_MC_SHIFT 24 +#define PRS_HDR_VLAN_STACKED_SHIFT 16 +#define PRS_HDR_MPLS_STACKED_SHIFT 16 +#define PRS_HDR_IPV4_1_BC_SHIFT 28 +#define PRS_HDR_IPV4_1_MC_SHIFT 24 +#define PRS_HDR_IPV4_2_UC_SHIFT 20 +#define PRS_HDR_IPV4_2_MC_BC_SHIFT 16 +#define PRS_HDR_IPV6_1_MC_SHIFT 24 +#define PRS_HDR_IPV6_2_UC_SHIFT 20 +#define PRS_HDR_IPV6_2_MC_SHIFT 16 + +#define PRS_HDR_ETH_BC_MASK 0x0fffffff +#define PRS_HDR_ETH_MC_MASK 0xf0ffffff +#define PRS_HDR_VLAN_STACKED_MASK 0xfff0ffff +#define PRS_HDR_MPLS_STACKED_MASK 0xfff0ffff +#define PRS_HDR_IPV4_1_BC_MASK 0x0fffffff +#define PRS_HDR_IPV4_1_MC_MASK 0xf0ffffff +#define PRS_HDR_IPV4_2_UC_MASK 0xff0fffff +#define PRS_HDR_IPV4_2_MC_BC_MASK 0xfff0ffff +#define PRS_HDR_IPV6_1_MC_MASK 0xf0ffffff +#define PRS_HDR_IPV6_2_UC_MASK 0xff0fffff +#define PRS_HDR_IPV6_2_MC_MASK 0xfff0ffff + +/* others */ +#define PRS_HDR_ENTRY_SIZE 8 +#define DEFAULT_CLS_PLAN_VECTOR 0xFFFFFFFF + +#define IPSEC_SW_PATCH_START 0x20 +#define SCTP_SW_PATCH_START 0x4D +#define DCCP_SW_PATCH_START 0x41 + +#define IP_FRAG_SW_PATCH_IPv4 0x300 +#define IP_FRAG_SW_PATCH_IPv6_0 0x320 +#define IP_FRAG_SW_PATCH_IPv6_1 0x372 + +/**************************************************************************//** + @Description IM defines +*//***************************************************************************/ +#define BD_R_E 0x80000000 +#define BD_L 0x08000000 + +#define BD_RX_CRE 0x00080000 +#define BD_RX_FTL 0x00040000 +#define BD_RX_FTS 0x00020000 +#define BD_RX_OV 0x00010000 + +#define BD_RX_ERRORS (BD_RX_CRE | BD_RX_FTL | BD_RX_FTS | BD_RX_OV) +#define BD_ERROR_PASS_FRAME BD_RX_ERRORS + +#define FM_IM_SIZEOF_BD sizeof(t_FmImBd) + +#define BD_STATUS_MASK 0xffff0000 +#define BD_LENGTH_MASK 0x0000ffff + +#define BD_STATUS_AND_LENGTH_SET(bd, val) WRITE_UINT32(*(volatile uint32_t*)(bd), (val)) + +#define BD_STATUS_AND_LENGTH(bd) GET_UINT32(*(volatile uint32_t*)(bd)) + +#define BD_GET(id) &p_FmPort->im.p_BdRing[id] + +#define IM_ILEGAL_BD_ID 0xffff + +/* others */ +#define IM_PRAM_ALIGN 0x100 + +/* masks */ +#define IM_MODE_GBL 0x20000000 +#define IM_MODE_BO_MASK 0x18000000 +#define IM_MODE_BO_SHIFT 3 +#define IM_MODE_GRC_STP 0x00800000 + +#define IM_MODE_SET_BO(val) (uint32_t)((val << (31-IM_MODE_BO_SHIFT)) & IM_MODE_BO_MASK) + +#define IM_RXQD_BSYINTM 0x0008 +#define IM_RXQD_RXFINTM 0x0010 +#define IM_RXQD_FPMEVT_SEL_MASK 0x0003 + +#define IM_EV_BSY 0x40000000 +#define IM_EV_RX 0x80000000 + +typedef struct { + t_Handle h_FmMuram; + t_FmPortImPram *p_FmPortImPram; + uint8_t fwExtStructsMemId; + uint32_t fwExtStructsMemAttr; + uint16_t bdRingSize; + t_FmImBd *p_BdRing; + t_Handle *p_BdShadow; + uint16_t currBdId; + uint16_t firstBdOfFrameId; + + /* Rx port parameters */ + uint8_t dataMemId; /**< Memory partition ID for data buffers */ + uint32_t dataMemAttributes; /**< Memory attributes for data buffers */ + t_BufferPoolInfo rxPool; + uint16_t mrblr; + uint16_t rxFrameAccumLength; + t_FmPortImRxStoreCallback *f_RxStore; + + /* Tx port parameters */ + uint32_t txFirstBdStatus; + t_FmPortImTxConfCallback *f_TxConf; +} t_FmMacIm; + +/**************************************************************************//** + @Description structure for defining internal context copying +*//***************************************************************************/ +typedef struct +{ + uint16_t extBufOffset; /**< Offset in External buffer to which internal + context is copied to (Rx) or taken from (Tx, Op). */ + uint8_t intContextOffset; /**< Offset within internal context to copy from + (Rx) or to copy to (Tx, Op). */ + uint16_t size; /**< Internal offset size to be copied */ +} t_FmPortIntContextDataCopy; + +/**************************************************************************//** + @Description struct for defining external buffer margins +*//***************************************************************************/ +typedef struct { + uint16_t startMargins; /**< Number of bytes to be left at the beginning + of the external buffer (must be divisible by 16) */ + uint16_t endMargins; /**< number of bytes to be left at the end + of the external buffer(must be divisible by 16) */ +} t_FmPortBufMargins; + +typedef struct { + uint32_t dataOffset; + uint32_t prsResultOffset; + uint32_t timeStampOffset; + uint32_t hashResultOffset; + uint32_t pcdInfoOffset; + uint32_t manipOffset; +#ifdef DEBUG + uint32_t debugOffset; +#endif /* DEBUG */ +} t_FmPortBufferOffsets; + +typedef struct { + uint32_t dfltFqid; + uint32_t confFqid; + uint32_t errFqid; + uintptr_t baseAddr; + uint8_t deqSubPortal; + bool deqHighPriority; + e_FmPortDeqType deqType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + e_FmPortDeqPrefetchOption deqPrefetchOption; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + uint16_t deqByteCnt; + uint8_t cheksumLastBytesIgnore; + uint8_t cutBytesFromEnd; + t_FmPortBufPoolDepletion bufPoolDepletion; + uint8_t pipelineDepth; + uint16_t fifoLowComfLevel; + bool frmDiscardOverride; + bool enRateLimit; + t_FmPortRateLimit rateLimit; + e_FmPortDualRateLimiterScaleDown rateLimitDivider; + bool enBufPoolDepletion; + uint16_t liodnOffset; + uint16_t liodnBase; + t_FmPortExtPools extBufPools; + e_FmPortDmaSwap dmaSwapData; + e_FmPortDmaCache dmaIntContextCacheAttr; + e_FmPortDmaCache dmaHeaderCacheAttr; + e_FmPortDmaCache dmaScatterGatherCacheAttr; + bool dmaReadOptimize; + bool dmaWriteOptimize; + uint32_t txFifoMinFillLevel; + uint32_t txFifoLowComfLevel; + uint32_t rxFifoPriElevationLevel; + uint32_t rxFifoThreshold; + t_FmPortBufMargins bufMargins; + t_FmPortIntContextDataCopy intContext; + bool syncReq; + e_FmPortColor color; + fmPortFrameErrSelect_t errorsToDiscard; + fmPortFrameErrSelect_t errorsToEnq; + uint64_t fmMuramPhysBaseAddr; + bool forwardReuseIntContext; + t_FmPortBufferPrefixContent bufferPrefixContent; + uint8_t internalBufferOffset; + t_FmPortBackupBmPools *p_BackupBmPools; + bool dontReleaseBuf; +} t_FmPortDriverParam; + +typedef struct { + t_Handle h_Fm; + t_Handle h_FmPcd; + uint8_t portId; + e_FmPortType portType; + int enabled; + char name[MODULE_NAME_SIZE]; + uint8_t hardwarePortId; + uint16_t fmClkFreq; + t_FmPortQmiRegs *p_FmPortQmiRegs; + u_FmPortBmiRegs *p_FmPortBmiRegs; + t_FmPortPrsRegs *p_FmPortPrsRegs; + fmPcdEngines_t pcdEngines; + uint32_t savedBmiNia; + uint8_t netEnvId; + uint32_t optArray[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; + uint32_t lcvs[FM_PCD_PRS_NUM_OF_HDRS]; + uint8_t privateInfo; + uint32_t schemesPerPortVector; + bool useClsPlan; + uint8_t clsPlanGrpId; + t_Handle ccTreeId; + t_Handle completeArg; + void (*f_Complete)(t_Handle arg); + t_FmPortBufferOffsets bufferOffsets; + /* Independent-Mode parameters support */ + bool imEn; + t_FmMacIm im; + uint8_t txFifoDeqPipelineDepth; + volatile bool lock; + t_Handle h_Spinlock; + t_FmPortExceptionCallback *f_Exception; + t_Handle h_App; + uint8_t internalBufferOffset; + uint8_t fmanCtrlEventId; + uint32_t exceptions; + bool polling; + uint8_t numOfTasks; + t_FmPortExtPools extBufPools; + uint32_t requiredAction; + uint32_t savedQmiPnen; + uint32_t savedNonRxQmiRegsPndn; + int savedPrsStartOffset; + t_FmPortRsrc openDmas; + t_FmPortRsrc tasks; + t_FmPortRsrc fifoBufs; + t_FmInterModulePortRxPoolsParams rxPoolsParams; + t_FmPortDriverParam *p_FmPortDriverParam; +} t_FmPort; + +#define CHECK_FM_CTL_AC_POST_FETCH_PCD(savedBmiNia) \ + ((((savedBmiNia) & NIA_ENG_MASK) == NIA_ENG_FM_CTL) && \ + ((((savedBmiNia) & NIA_FM_CTL_AC_MASK) == NIA_FM_CTL_AC_POST_FETCH_PCD) || \ + (((savedBmiNia) & NIA_FM_CTL_AC_MASK) == NIA_FM_CTL_AC_POST_FETCH_PCD_UDP_LEN))) + +void FmPortConfigIM (t_FmPort *p_FmPort, t_FmPortParams *p_FmPortParams); +t_Error FmPortImCheckInitParameters(t_FmPort *p_FmPort); + +t_Error FmPortImInit(t_FmPort *p_FmPort); +void FmPortImFree(t_FmPort *p_FmPort); + +t_Error FmPortImEnable (t_FmPort *p_FmPort); +t_Error FmPortImDisable (t_FmPort *p_FmPort); +t_Error FmPortImRx (t_FmPort *p_FmPort); + +void FmPortSetMacsecLcv(t_Handle h_FmPort); +void FmPortSetMacsecCmd(t_Handle h_FmPort, uint8_t dfltSci); + + +static __inline__ uint8_t * BdBufferGet (t_PhysToVirt *f_PhysToVirt, t_FmImBd *p_Bd) +{ + uint64_t physAddr = (uint64_t)((uint64_t)GET_UINT8(p_Bd->buff.high) << 32); + physAddr |= GET_UINT32(p_Bd->buff.low); + + return (uint8_t *)f_PhysToVirt((physAddress_t)(physAddr)); +} + +static __inline__ void SET_ADDR(volatile t_FmPhysAddr *fmPhysAddr, uint64_t value) +{ + WRITE_UINT8(fmPhysAddr->high,(uint8_t)((value & 0x000000ff00000000LL) >> 32)); + WRITE_UINT32(fmPhysAddr->low,(uint32_t)value); +} + +static __inline__ void BdBufferSet(t_VirtToPhys *f_VirtToPhys, t_FmImBd *p_Bd, uint8_t *p_Buffer) +{ + uint64_t physAddr = (uint64_t)(f_VirtToPhys(p_Buffer)); + SET_ADDR(&p_Bd->buff, physAddr); +} + +static __inline__ uint16_t GetNextBdId(t_FmPort *p_FmPort, uint16_t id) +{ + if (id < p_FmPort->im.bdRingSize-1) + return (uint16_t)(id+1); + else + return 0; +} + + +#endif /* __FM_PORT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port.c @@ -0,0 +1,5060 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_port.c + + @Description FM driver routines implementation. +*//***************************************************************************/ +#include "error_ext.h" +#include "std_ext.h" +#include "string_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "fm_pcd_ext.h" + +#include "fm_port.h" + + +/****************************************/ +/* static functions */ +/****************************************/ + +static t_Error CheckInitParameters(t_FmPort *p_FmPort) +{ + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + t_Error ans = E_OK; + uint32_t unusedMask; + uint8_t i; + uint8_t j; + bool found; + + if (p_FmPort->imEn) + { + if ((ans = FmPortImCheckInitParameters(p_FmPort)) != E_OK) + return ERROR_CODE(ans); + } + else + { + /****************************************/ + /* Rx only */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* external buffer pools */ + if(!p_Params->extBufPools.numOfPoolsUsed) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("extBufPools.numOfPoolsUsed=0. At least one buffer pool must be defined")); + + if(p_Params->extBufPools.numOfPoolsUsed > FM_PORT_MAX_NUM_OF_EXT_POOLS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("numOfPoolsUsed can't be larger than %d", FM_PORT_MAX_NUM_OF_EXT_POOLS)); + + for(i=0;iextBufPools.numOfPoolsUsed;i++) + { + if(p_Params->extBufPools.extBufPool[i].id >= BM_MAX_NUM_OF_POOLS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("extBufPools.extBufPool[%d].id can't be larger than %d", i, BM_MAX_NUM_OF_POOLS)); + if(!p_Params->extBufPools.extBufPool[i].size) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("extBufPools.extBufPool[%d].size is 0", i)); + } + + /* backup BM pools indication is valid only for some chip deriviatives + (limited by the config routine) */ + if(p_Params->p_BackupBmPools) + { + if(p_Params->p_BackupBmPools->numOfBackupPools >= p_Params->extBufPools.numOfPoolsUsed) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_BackupBmPools must be smaller than extBufPools.numOfPoolsUsed")); + found = FALSE; + for(i = 0;ip_BackupBmPools->numOfBackupPools;i++) + for(j=0;jextBufPools.numOfPoolsUsed;j++) + if(p_Params->p_BackupBmPools->poolIds[i] == p_Params->extBufPools.extBufPool[j].id) + found = TRUE; + if (!found) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("All p_BackupBmPools.poolIds must be included in extBufPools.extBufPool[n].id")); + } + + /* up to extBufPools.numOfPoolsUsed pools may be defined */ + if(p_Params->bufPoolDepletion.numberOfPoolsModeEnable) + { + if((p_Params->bufPoolDepletion.numOfPools > p_Params->extBufPools.numOfPoolsUsed)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPools can't be larger than %d and can't be larger than numOfPoolsUsed", FM_PORT_MAX_NUM_OF_EXT_POOLS)); + + if(!p_Params->bufPoolDepletion.numOfPools) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPoolsToConsider can not be 0 when numberOfPoolsModeEnable=TRUE")); + } + /* Check that part of IC that needs copying is small enough to enter start margin */ + if(p_Params->intContext.size + p_Params->intContext.extBufOffset > p_Params->bufMargins.startMargins) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.size is larger than start margins")); + + if(p_Params->liodnOffset & ~FM_LIODN_OFFSET_MASK) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("liodnOffset is larger than %d", FM_LIODN_OFFSET_MASK+1)); +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + if(p_Params->liodnOffset >= MAX_LIODN_OFFSET) + { + p_Params->liodnOffset = (uint16_t)(p_Params->liodnOffset & (MAX_LIODN_OFFSET-1)); + DBG(WARNING, ("liodnOffset number is out of rev1 range - MSB bits cleard.")); + } + } + } +#endif /* FM_PARTITION_ARRAY */ + } + + /****************************************/ + /* Non Rx ports */ + /****************************************/ + else + { + if(p_Params->deqSubPortal >= MAX_QMI_DEQ_SUBPORTAL) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" deqSubPortal has to be in the range of 0 - %d", MAX_QMI_DEQ_SUBPORTAL)); + + /* to protect HW internal-context from overwrite */ + if((p_Params->intContext.size) && (p_Params->intContext.intContextOffset < MIN_TX_INT_OFFSET)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("non-Rx intContext.intContextOffset can't be smaller than %d", MIN_TX_INT_OFFSET)); + } + + /****************************************/ + /* Rx Or Offline Parsing */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + { + + if(!p_Params->dfltFqid) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dfltFqid must be between 1 and 2^24-1")); +#if defined(FM_CAPWAP_SUPPORT) && defined(FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004) + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace % 16) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufferPrefixContent.manipExtraSpace has to be devidable by 16")); +#endif /* defined(FM_CAPWAP_SUPPORT) && ... */ + } + + /****************************************/ + /* All ports */ + /****************************************/ + /* common BMI registers values */ + /* Check that Queue Id is not larger than 2^24, and is not 0 */ + if((p_Params->errFqid & ~0x00FFFFFF) || !p_Params->errFqid) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("errFqid must be between 1 and 2^24-1")); + if(p_Params->dfltFqid & ~0x00FFFFFF) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("dfltFqid must be between 1 and 2^24-1")); + } + + /****************************************/ + /* Rx only */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* Check that divisible by 256 and not larger than 256 */ + if(p_Params->rxFifoPriElevationLevel % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoPriElevationLevel has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Params->rxFifoPriElevationLevel || (p_Params->rxFifoPriElevationLevel > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoPriElevationLevel has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + if(p_Params->rxFifoThreshold % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoThreshold has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Params->rxFifoThreshold ||(p_Params->rxFifoThreshold > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("rxFifoThreshold has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + + /* Check that not larger than 16 */ + if(p_Params->cutBytesFromEnd > FRAME_END_DATA_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("cutBytesFromEnd can't be larger than %d", FRAME_END_DATA_SIZE)); + + /* Check the margin definition */ + if(p_Params->bufMargins.startMargins > MAX_EXT_BUFFER_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufMargins.startMargins can't be larger than %d", MAX_EXT_BUFFER_OFFSET)); + if(p_Params->bufMargins.endMargins > MAX_EXT_BUFFER_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufMargins.endMargins can't be larger than %d", MAX_EXT_BUFFER_OFFSET)); + + /* extra FIFO size (allowed only to Rx ports) */ + if(p_FmPort->fifoBufs.extra % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoBufs.extra has to be divisible by %d", BMI_FIFO_UNITS)); + + if(p_Params->bufPoolDepletion.numberOfPoolsModeEnable && + !p_Params->bufPoolDepletion.numOfPools) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPoolsToConsider can not be 0 when numberOfPoolsModeEnable=TRUE")); +#ifdef FM_CSI_CFED_LIMIT + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + + if (revInfo.majorRev == 4) + { + /* Check that not larger than 16 */ + if(p_Params->cutBytesFromEnd + p_Params->cheksumLastBytesIgnore > FRAME_END_DATA_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("cheksumLastBytesIgnore + cutBytesFromEnd can't be larger than %d", FRAME_END_DATA_SIZE)); + } + } +#endif /* FM_CSI_CFED_LIMIT */ + + } + + /****************************************/ + /* Non Rx ports */ + /****************************************/ + else + /* extra FIFO size (allowed only to Rx ports) */ + if(p_FmPort->fifoBufs.extra) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" No fifoBufs.extra for non Rx ports")); + + /****************************************/ + /* Rx & Tx */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_TX) || (p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* Check that not larger than 16 */ + if(p_Params->cheksumLastBytesIgnore > FRAME_END_DATA_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("cheksumLastBytesIgnore can't be larger than %d", FRAME_END_DATA_SIZE)); + } + + /****************************************/ + /* Tx only */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_TX) || (p_FmPort->portType == e_FM_PORT_TYPE_TX_10G)) + { + /* Check that divisible by 256 and not larger than 256 */ + if(p_Params->txFifoMinFillLevel % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoMinFillLevel has to be divisible by %d", BMI_FIFO_UNITS)); + if(p_Params->txFifoMinFillLevel > (BMI_MAX_FIFO_SIZE - 256)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoMinFillLevel has to be in the range of 0 - %d", BMI_MAX_FIFO_SIZE)); + if(p_Params->txFifoLowComfLevel % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoLowComfLevel has to be divisible by %d", BMI_FIFO_UNITS)); + if(!p_Params->txFifoLowComfLevel || (p_Params->txFifoLowComfLevel > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoLowComfLevel has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + + /* Check that not larger than 8 */ + if((!p_FmPort->txFifoDeqPipelineDepth) ||( p_FmPort->txFifoDeqPipelineDepth > MAX_FIFO_PIPELINE_DEPTH)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoDeqPipelineDepth can't be larger than %d", MAX_FIFO_PIPELINE_DEPTH)); + if(p_FmPort->portType == e_FM_PORT_TYPE_TX) + if(p_FmPort->txFifoDeqPipelineDepth > 2) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("txFifoDeqPipelineDepth for !G can't be larger than 2")); + } + else + /****************************************/ + /* Non Tx Ports */ + /****************************************/ + { + /* If discard override was selected , no frames may be discarded. */ + if(p_Params->frmDiscardOverride && p_Params->errorsToDiscard) + RETURN_ERROR(MAJOR, E_CONFLICT, ("errorsToDiscard is not empty, but frmDiscardOverride selected (all discarded frames to be enqueued to error queue).")); + } + + /****************************************/ + /* Rx and Offline parsing */ + /****************************************/ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) + || (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + { + if(p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + unusedMask = BMI_STATUS_OP_MASK_UNUSED; + else + unusedMask = BMI_STATUS_RX_MASK_UNUSED; + + /* Check that no common bits with BMI_STATUS_MASK_UNUSED */ + if(p_Params->errorsToDiscard & unusedMask) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("errorsToDiscard contains undefined bits")); + } + + /****************************************/ + /* All ports */ + /****************************************/ + + /* Check that divisible by 16 and not larger than 240 */ + if(p_Params->intContext.intContextOffset >MAX_INT_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.intContextOffset can't be larger than %d", MAX_INT_OFFSET)); + if(p_Params->intContext.intContextOffset % OFFSET_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.intContextOffset has to be divisible by %d", OFFSET_UNITS)); + + /* check that ic size+ic internal offset, does not exceed ic block size */ + if(p_Params->intContext.size + p_Params->intContext.intContextOffset > MAX_IC_SIZE) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.size + intContext.intContextOffset has to be smaller than %d", MAX_IC_SIZE)); + /* Check that divisible by 16 and not larger than 256 */ + if(p_Params->intContext.size % OFFSET_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.size has to be divisible by %d", OFFSET_UNITS)); + + /* Check that divisible by 16 and not larger than 4K */ + if(p_Params->intContext.extBufOffset > MAX_EXT_OFFSET) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.extBufOffset can't be larger than %d", MAX_EXT_OFFSET)); + if(p_Params->intContext.extBufOffset % OFFSET_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("intContext.extBufOffset has to be divisible by %d", OFFSET_UNITS)); + + /* common BMI registers values */ + if((!p_FmPort->tasks.num) || (p_FmPort->tasks.num > MAX_NUM_OF_TASKS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("tasks.num can't be larger than %d", MAX_NUM_OF_TASKS)); + if(p_FmPort->tasks.extra > MAX_NUM_OF_EXTRA_TASKS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("tasks.extra can't be larger than %d", MAX_NUM_OF_EXTRA_TASKS)); + if((!p_FmPort->openDmas.num) || (p_FmPort->openDmas.num > MAX_NUM_OF_DMAS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas.num can't be larger than %d", MAX_NUM_OF_DMAS)); + if(p_FmPort->openDmas.extra > MAX_NUM_OF_EXTRA_DMAS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas.extra can't be larger than %d", MAX_NUM_OF_EXTRA_DMAS)); + if(!p_FmPort->fifoBufs.num || (p_FmPort->fifoBufs.num > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoBufs.num has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + if(p_FmPort->fifoBufs.num % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fifoBufs.num has to be divisible by %d", BMI_FIFO_UNITS)); + + return E_OK; +} + +static void FmPortDriverParamFree(t_FmPort *p_FmPort) +{ + if(p_FmPort->p_FmPortDriverParam) + { + XX_Free(p_FmPort->p_FmPortDriverParam); + p_FmPort->p_FmPortDriverParam = NULL; + } +} + +static t_Error SetExtBufferPools(t_FmPort *p_FmPort) +{ + t_FmPortExtPools *p_ExtBufPools = &p_FmPort->p_FmPortDriverParam->extBufPools; + t_FmPortBufPoolDepletion *p_BufPoolDepletion = &p_FmPort->p_FmPortDriverParam->bufPoolDepletion; + volatile uint32_t *p_ExtBufRegs; + volatile uint32_t *p_BufPoolDepletionReg; + bool rxPort; + bool found; + uint8_t orderedArray[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + uint16_t sizesArray[BM_MAX_NUM_OF_POOLS]; + uint8_t count = 0; + uint8_t numOfPools; + uint16_t bufSize = 0, largestBufSize = 0; + int i=0, j=0, k=0; + uint32_t tmpReg, vector, minFifoSizeRequired=0; + + memset(&orderedArray, 0, sizeof(uint8_t) * FM_PORT_MAX_NUM_OF_EXT_POOLS); + memset(&sizesArray, 0, sizeof(uint16_t) * BM_MAX_NUM_OF_POOLS); + memcpy(&p_FmPort->extBufPools, p_ExtBufPools, sizeof(t_FmPortExtPools)); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_ExtBufRegs = p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi; + p_BufPoolDepletionReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_mpd; + rxPort = TRUE; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_ExtBufRegs = p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi; + p_BufPoolDepletionReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ompd; + rxPort = FALSE; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Not available for port type")); + } + + /* First we copy the external buffers pools information to an ordered local array */ + for(i=0;inumOfPoolsUsed;i++) + { + /* get pool size */ + bufSize = p_ExtBufPools->extBufPool[i].size; + + /* keep sizes in an array according to poolId for direct access */ + sizesArray[p_ExtBufPools->extBufPool[i].id] = bufSize; + + /* save poolId in an ordered array according to size */ + for (j=0;j<=i;j++) + { + /* this is the next free place in the array */ + if (j==i) + orderedArray[i] = p_ExtBufPools->extBufPool[i].id; + else + { + /* find the right place for this poolId */ + if(bufSize < sizesArray[orderedArray[j]]) + { + /* move the poolIds one place ahead to make room for this poolId */ + for(k=i;k>j;k--) + orderedArray[k] = orderedArray[k-1]; + + /* now k==j, this is the place for the new size */ + orderedArray[k] = p_ExtBufPools->extBufPool[i].id; + break; + } + } + } + } + + /* build the register value */ + + for(i=0;inumOfPoolsUsed;i++) + { + tmpReg = BMI_EXT_BUF_POOL_VALID | BMI_EXT_BUF_POOL_EN_COUNTER; + tmpReg |= ((uint32_t)orderedArray[i] << BMI_EXT_BUF_POOL_ID_SHIFT); + tmpReg |= sizesArray[orderedArray[i]]; + /* functionality available only for some deriviatives (limited by config) */ + if(p_FmPort->p_FmPortDriverParam->p_BackupBmPools) + for(j=0;jp_FmPortDriverParam->p_BackupBmPools->numOfBackupPools;j++) + if(orderedArray[i] == p_FmPort->p_FmPortDriverParam->p_BackupBmPools->poolIds[j]) + { + tmpReg |= BMI_EXT_BUF_POOL_BACKUP; + break; + } + WRITE_UINT32(*(p_ExtBufRegs+i), tmpReg); + } + + if(p_FmPort->p_FmPortDriverParam->p_BackupBmPools) + XX_Free(p_FmPort->p_FmPortDriverParam->p_BackupBmPools); + + numOfPools = (uint8_t)(rxPort ? FM_PORT_MAX_NUM_OF_EXT_POOLS:FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS); + + /* clear unused pools */ + for(i=p_ExtBufPools->numOfPoolsUsed;irxPoolsParams.largestBufSize = largestBufSize = sizesArray[orderedArray[p_ExtBufPools->numOfPoolsUsed-1]]; + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { +#ifdef FM_FIFO_ALLOCATION_OLD_ALG + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + + if(revInfo.majorRev != 4) + { + minFifoSizeRequired = (uint32_t)(((largestBufSize % BMI_FIFO_UNITS) ? + ((largestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + largestBufSize) + + (7*BMI_FIFO_UNITS)); + } + else +#endif /* FM_FIFO_ALLOCATION_OLD_ALG */ + { + p_FmPort->rxPoolsParams.numOfPools = p_ExtBufPools->numOfPoolsUsed; + if(p_ExtBufPools->numOfPoolsUsed == 1) + minFifoSizeRequired = 8*BMI_FIFO_UNITS; + else + { + uint16_t secondLargestBufSize = sizesArray[orderedArray[p_ExtBufPools->numOfPoolsUsed-2]]; + p_FmPort->rxPoolsParams.secondLargestBufSize = secondLargestBufSize; + minFifoSizeRequired = (uint32_t)(((secondLargestBufSize % BMI_FIFO_UNITS) ? + ((secondLargestBufSize/BMI_FIFO_UNITS + 1) * BMI_FIFO_UNITS) : + secondLargestBufSize) + + (7*BMI_FIFO_UNITS)); + } + } + if(p_FmPort->fifoBufs.num < minFifoSizeRequired) + { + p_FmPort->fifoBufs.num = minFifoSizeRequired; + DBG(INFO, ("FIFO size for Rx port enlarged to %d",minFifoSizeRequired)); + } + } + + /* check if pool size is not too big */ + /* This is a definition problem in which if the fifo for the RX port + is lower than the largest pool size the hardware will allocate scatter gather + buffers even though the frame size can fit in a single buffer. */ + if (largestBufSize > p_FmPort->fifoBufs.num) + DBG(WARNING, ("Frame larger than port Fifo size (%u) will be split to more than a single buffer (S/G) even if shorter than largest buffer size (%u)", + p_FmPort->fifoBufs.num, largestBufSize)); + + /* pool depletion */ + tmpReg = 0; + if(p_BufPoolDepletion->numberOfPoolsModeEnable) + { + /* calculate vector for number of pools depletion */ + found = FALSE; + vector = 0; + count = 0; + for(i=0;ipoolsToConsider[i]) + { + for(j=0;jnumOfPoolsUsed;j++) + { + if (i == orderedArray[j]) + { + vector |= 0x80000000 >> j; + found = TRUE; + count++; + break; + } + } + if (!found) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Pools selected for depletion are not used.")); + else + found = FALSE; + } + } + if (count < p_BufPoolDepletion->numOfPools) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufPoolDepletion.numOfPools is larger than the number of pools defined.")); + + /* configure num of pools and vector for number of pools mode */ + tmpReg |= (((uint32_t)p_BufPoolDepletion->numOfPools - 1) << BMI_POOL_DEP_NUM_OF_POOLS_SHIFT); + tmpReg |= vector; + } + + if(p_BufPoolDepletion->singlePoolModeEnable) + { + /* calculate vector for number of pools depletion */ + found = FALSE; + vector = 0; + count = 0; + for(i=0;ipoolsToConsiderForSingleMode[i]) + { + for(j=0;jnumOfPoolsUsed;j++) + { + if (i == orderedArray[j]) + { + vector |= 0x00000080 >> j; + found = TRUE; + count++; + break; + } + } + if (!found) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Pools selected for depletion are not used.")); + else + found = FALSE; + } + } + if (!count) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("No pools defined for single buffer mode pool depletion.")); + + /* configure num of pools and vector for number of pools mode */ + tmpReg |= vector; + } + + WRITE_UINT32(*p_BufPoolDepletionReg, tmpReg); + + return E_OK; +} + +static t_Error ClearPerfCnts(t_FmPort *p_FmPort) +{ + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_TASK_UTIL, 0); + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_QUEUE_UTIL, 0); + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_DMA_UTIL, 0); + FM_PORT_ModifyCounter(p_FmPort, e_FM_PORT_COUNTERS_FIFO_UTIL, 0); + return E_OK; +} + +static t_Error BmiRxPortInit(t_FmPort *p_FmPort) +{ + t_FmPortRxBmiRegs *p_Regs = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs; + uint32_t tmpReg; + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + uint32_t errorsToEnq = 0; + t_FmPortPerformanceCnt performanceContersParams; + t_Error err; + + /* check that port is not busy */ + if (GET_UINT32(p_Regs->fmbm_rcfg) & BMI_PORT_CFG_EN) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("Port(%d,%d) is already enabled",p_FmPort->portType, p_FmPort->portId)); + + /* Set Config register */ + tmpReg = 0; + if (p_FmPort->imEn) + tmpReg |= BMI_PORT_CFG_IM; + /* No discard - all error frames go to error queue */ + else if (p_Params->frmDiscardOverride) + tmpReg |= BMI_PORT_CFG_FDOVR; + + WRITE_UINT32(p_Regs->fmbm_rcfg, tmpReg); + + /* Configure dma attributes */ + tmpReg = 0; + tmpReg |= (uint32_t)p_Params->dmaSwapData << BMI_DMA_ATTR_SWP_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaIntContextCacheAttr << BMI_DMA_ATTR_IC_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaHeaderCacheAttr << BMI_DMA_ATTR_HDR_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaScatterGatherCacheAttr << BMI_DMA_ATTR_SG_CACHE_SHIFT; + if(p_Params->dmaWriteOptimize) + tmpReg |= BMI_DMA_ATTR_WRITE_OPTIMIZE; + + WRITE_UINT32(p_Regs->fmbm_rda, tmpReg); + + /* Configure Rx Fifo params */ + tmpReg = 0; + tmpReg |= ((p_Params->rxFifoPriElevationLevel/BMI_FIFO_UNITS - 1) << BMI_RX_FIFO_PRI_ELEVATION_SHIFT); + tmpReg |= ((p_Params->rxFifoThreshold/BMI_FIFO_UNITS - 1) << BMI_RX_FIFO_THRESHOLD_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_rfp, tmpReg); + + { +#ifdef FM_NO_THRESHOLD_REG + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev > 1) +#endif /* FM_NO_THRESHOLD_REG */ + /* always allow access to the extra resources */ + WRITE_UINT32(p_Regs->fmbm_reth, BMI_RX_FIFO_THRESHOLD_BC); + } + + /* frame end parameters */ + tmpReg = 0; + tmpReg |= ((uint32_t)p_Params->cheksumLastBytesIgnore << BMI_RX_FRAME_END_CS_IGNORE_SHIFT); + tmpReg |= ((uint32_t)p_Params->cutBytesFromEnd<< BMI_RX_FRAME_END_CUT_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_rfed, tmpReg); + + /* IC parameters */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->intContext.extBufOffset/OFFSET_UNITS) << BMI_IC_TO_EXT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.intContextOffset/OFFSET_UNITS) << BMI_IC_FROM_INT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.size/OFFSET_UNITS) << BMI_IC_SIZE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_ricp, tmpReg); + + if (!p_FmPort->imEn) + { + /* check if the largest external buffer pool is large enough */ + if(p_Params->bufMargins.startMargins + MIN_EXT_BUF_SIZE + p_Params->bufMargins.endMargins > p_FmPort->rxPoolsParams.largestBufSize) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("bufMargins.startMargins (%d) + minimum buf size (64) + bufMargins.endMargins (%d) is larger than maximum external buffer size (%d)", + p_Params->bufMargins.startMargins, p_Params->bufMargins.endMargins, p_FmPort->rxPoolsParams.largestBufSize)); + + /* buffer margins */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->bufMargins.startMargins) << BMI_EXT_BUF_MARG_START_SHIFT); + tmpReg |= (((uint32_t)p_Params->bufMargins.endMargins) << BMI_EXT_BUF_MARG_END_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_rebm, tmpReg); + } + + + if(p_FmPort->internalBufferOffset) + { + tmpReg = (uint32_t)((p_FmPort->internalBufferOffset % OFFSET_UNITS) ? + (p_FmPort->internalBufferOffset/OFFSET_UNITS + 1): + (p_FmPort->internalBufferOffset/OFFSET_UNITS)); + p_FmPort->internalBufferOffset = (uint8_t)(tmpReg * OFFSET_UNITS); + WRITE_UINT32(p_Regs->fmbm_rim, tmpReg << BMI_IM_FOF_SHIFT); + } + + /* NIA */ + if (p_FmPort->imEn) + WRITE_UINT32(p_Regs->fmbm_rfne, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_IND_MODE_RX); + else + { + tmpReg = 0; + if (p_Params->forwardReuseIntContext) + tmpReg |= BMI_PORT_RFNE_FRWD_RPD; + /* L3/L4 checksum verify is enabled by default. */ + /*tmpReg |= BMI_PORT_RFNE_FRWD_DCL4C;*/ + WRITE_UINT32(p_Regs->fmbm_rfne, tmpReg | NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + } + WRITE_UINT32(p_Regs->fmbm_rfene, NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR); + + /* command attribute */ + tmpReg = BMI_CMD_RX_MR_DEF; + if (!p_FmPort->imEn) + { + tmpReg |= BMI_CMD_ATTR_ORDER; + if(p_Params->syncReq) + tmpReg |= BMI_CMD_ATTR_SYNC; + tmpReg |= ((uint32_t)p_Params->color << BMI_CMD_ATTR_COLOR_SHIFT); + } + + WRITE_UINT32(p_Regs->fmbm_rfca, tmpReg); + + /* default queues */ + if (!p_FmPort->imEn) + { + WRITE_UINT32(p_Regs->fmbm_rfqid, p_Params->dfltFqid); + WRITE_UINT32(p_Regs->fmbm_refqid, p_Params->errFqid); + } + + /* set counters */ + WRITE_UINT32(p_Regs->fmbm_rstc, BMI_COUNTERS_EN); + + performanceContersParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + performanceContersParams.queueCompVal = 1; + performanceContersParams.dmaCompVal =(uint8_t) p_FmPort->openDmas.num; + performanceContersParams.fifoCompVal = p_FmPort->fifoBufs.num; + if((err = FM_PORT_SetPerformanceCountersParams(p_FmPort, &performanceContersParams)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + WRITE_UINT32(p_Regs->fmbm_rpc, BMI_COUNTERS_EN); + + /* error/status mask - check that if discard OV is set, no + discard is required for specific errors.*/ + WRITE_UINT32(p_Regs->fmbm_rfsdm, p_Params->errorsToDiscard); + + errorsToEnq = (RX_ERRS_TO_ENQ & ~p_Params->errorsToDiscard); + WRITE_UINT32(p_Regs->fmbm_rfsem, errorsToEnq); + +#ifdef FM_BMI_TO_RISC_ENQ_ERRATA_FMANc + if((GET_UINT32(p_Regs->fmbm_rfene) && NIA_ENG_MASK)== NIA_ENG_FM_CTL) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("NIA not supported at this stage")); +#endif /* FM_BMI_TO_RISC_ENQ_ERRATA_FMANc */ + + return E_OK; +} + +static t_Error BmiTxPortInit(t_FmPort *p_FmPort) +{ + t_FmPortTxBmiRegs *p_Regs = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs; + uint32_t tmpReg; + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + /*uint32_t rateCountUnit;*/ + t_FmPortPerformanceCnt performanceContersParams; + + /* check that port is not busy */ + if (GET_UINT32(p_Regs->fmbm_tcfg) & BMI_PORT_CFG_EN) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is already enabled")); + + tmpReg = 0; + if (p_FmPort->imEn) + tmpReg |= BMI_PORT_CFG_IM; + + WRITE_UINT32(p_Regs->fmbm_tcfg, tmpReg); + + /* Configure dma attributes */ + tmpReg = 0; + tmpReg |= (uint32_t)p_Params->dmaSwapData << BMI_DMA_ATTR_SWP_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaIntContextCacheAttr << BMI_DMA_ATTR_IC_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaHeaderCacheAttr << BMI_DMA_ATTR_HDR_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaScatterGatherCacheAttr << BMI_DMA_ATTR_SG_CACHE_SHIFT; + + WRITE_UINT32(p_Regs->fmbm_tda, tmpReg); + + /* Configure Tx Fifo params */ + tmpReg = 0; + tmpReg |= ((p_Params->txFifoMinFillLevel/BMI_FIFO_UNITS) << BMI_TX_FIFO_MIN_FILL_SHIFT); + tmpReg |= (((uint32_t)p_FmPort->txFifoDeqPipelineDepth - 1) << BMI_TX_FIFO_PIPELINE_DEPTH_SHIFT); + tmpReg |= ((p_Params->txFifoLowComfLevel/BMI_FIFO_UNITS - 1) << BMI_TX_LOW_COMF_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_tfp, tmpReg); + + /* frame end parameters */ + tmpReg = 0; + tmpReg |= ((uint32_t)p_Params->cheksumLastBytesIgnore << BMI_TX_FRAME_END_CS_IGNORE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_tfed, tmpReg); + + if (!p_FmPort->imEn) + { + /* IC parameters */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->intContext.extBufOffset/OFFSET_UNITS) << BMI_IC_TO_EXT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.intContextOffset/OFFSET_UNITS) << BMI_IC_FROM_INT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.size/OFFSET_UNITS) << BMI_IC_SIZE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_ticp, tmpReg); + } + + /* NIA */ + if (p_FmPort->imEn) + { + WRITE_UINT32(p_Regs->fmbm_tfne, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_IND_MODE_TX); + WRITE_UINT32(p_Regs->fmbm_tfene, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_IND_MODE_TX); + } + else + { + WRITE_UINT32(p_Regs->fmbm_tfne, NIA_ENG_QMI_DEQ); + WRITE_UINT32(p_Regs->fmbm_tfene, NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR); + /* The line bellow is a trick so the FM will not release the buffer + to BM nor will try to enq the frame to QM */ + if(!p_Params->dfltFqid && p_Params->dontReleaseBuf) + { + /* override fmbm_tcfqid 0 with a false non-0 value. This will force FM to + * act acording to tfene. Otherwise, if fmbm_tcfqid is 0 the FM will release + * buffers to BM regardless of fmbm_tfene + */ + WRITE_UINT32(p_Regs->fmbm_tcfqid, 0xFFFFFF); + WRITE_UINT32(p_Regs->fmbm_tfene, NIA_ENG_BMI | NIA_BMI_AC_TX_RELEASE); + } + } + + /* command attribute */ + tmpReg = BMI_CMD_TX_MR_DEF; + if (p_FmPort->imEn) + tmpReg |= BMI_CMD_MR_DEAS; + else + { + tmpReg |= BMI_CMD_ATTR_ORDER; + /* if we set syncReq, we may get stuck when HC command is running */ + /*if(p_Params->syncReq) + tmpReg |= BMI_CMD_ATTR_SYNC;*/ + tmpReg |= ((uint32_t)p_Params->color << BMI_CMD_ATTR_COLOR_SHIFT); + } + + WRITE_UINT32(p_Regs->fmbm_tfca, tmpReg); + + /* default queues */ + if (!p_FmPort->imEn) + { + if(p_Params->dfltFqid || !p_Params->dontReleaseBuf) + WRITE_UINT32(p_Regs->fmbm_tcfqid, p_Params->dfltFqid); + WRITE_UINT32(p_Regs->fmbm_tfeqid, p_Params->errFqid); + } + + /* statistics & performance counters */ + WRITE_UINT32(p_Regs->fmbm_tstc, BMI_COUNTERS_EN); + + performanceContersParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + performanceContersParams.queueCompVal = 1; + performanceContersParams.dmaCompVal = (uint8_t)p_FmPort->openDmas.num; + performanceContersParams.fifoCompVal = p_FmPort->fifoBufs.num; + FM_PORT_SetPerformanceCountersParams(p_FmPort, &performanceContersParams); + + WRITE_UINT32(p_Regs->fmbm_tpc, BMI_COUNTERS_EN); + + return E_OK; +} + +static t_Error BmiOhPortInit(t_FmPort *p_FmPort) +{ + t_FmPortOhBmiRegs *p_Regs = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs; + uint32_t tmpReg, errorsToEnq = 0; + t_FmPortDriverParam *p_Params = p_FmPort->p_FmPortDriverParam; + t_FmPortPerformanceCnt performanceContersParams; + t_Error err; + + /* check that port is not busy */ + if (GET_UINT32(p_Regs->fmbm_ocfg) & BMI_PORT_CFG_EN) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is already enabled")); + + /* Configure dma attributes */ + tmpReg = 0; + tmpReg |= (uint32_t)p_Params->dmaSwapData << BMI_DMA_ATTR_SWP_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaIntContextCacheAttr << BMI_DMA_ATTR_IC_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaHeaderCacheAttr << BMI_DMA_ATTR_HDR_CACHE_SHIFT; + tmpReg |= (uint32_t)p_Params->dmaScatterGatherCacheAttr << BMI_DMA_ATTR_SG_CACHE_SHIFT; + if(p_Params->dmaWriteOptimize) + tmpReg |= BMI_DMA_ATTR_WRITE_OPTIMIZE; + + WRITE_UINT32(p_Regs->fmbm_oda, tmpReg); + + /* IC parameters */ + tmpReg = 0; + tmpReg |= (((uint32_t)p_Params->intContext.extBufOffset/OFFSET_UNITS) << BMI_IC_TO_EXT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.intContextOffset/OFFSET_UNITS) << BMI_IC_FROM_INT_SHIFT); + tmpReg |= (((uint32_t)p_Params->intContext.size/OFFSET_UNITS) << BMI_IC_SIZE_SHIFT); + + WRITE_UINT32(p_Regs->fmbm_oicp, tmpReg); + + /* NIA */ + WRITE_UINT32(p_Regs->fmbm_ofdne, NIA_ENG_QMI_DEQ); + + if (p_FmPort->portType==e_FM_PORT_TYPE_OH_HOST_COMMAND) + WRITE_UINT32(p_Regs->fmbm_ofene, NIA_ENG_QMI_ENQ); + else + WRITE_UINT32(p_Regs->fmbm_ofene, NIA_ENG_QMI_ENQ | NIA_ORDER_RESTOR); + + /* command attribute */ + if (p_FmPort->portType==e_FM_PORT_TYPE_OH_HOST_COMMAND) + tmpReg = BMI_CMD_MR_DEAS | BMI_CMD_MR_MA; + else + tmpReg = BMI_CMD_ATTR_ORDER | BMI_CMD_MR_DEAS | BMI_CMD_MR_MA; + + if(p_Params->syncReq) + tmpReg |= BMI_CMD_ATTR_SYNC; + tmpReg |= ((uint32_t)p_Params->color << BMI_CMD_ATTR_COLOR_SHIFT); + WRITE_UINT32(p_Regs->fmbm_ofca, tmpReg); + + /* No discard - all error frames go to error queue */ + if (p_Params->frmDiscardOverride) + tmpReg = BMI_PORT_CFG_FDOVR; + else + tmpReg = 0; + WRITE_UINT32(p_Regs->fmbm_ocfg, tmpReg); + + if(p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + { + WRITE_UINT32(p_Regs->fmbm_ofsdm, p_Params->errorsToDiscard); + + errorsToEnq = (OP_ERRS_TO_ENQ & ~p_Params->errorsToDiscard); + WRITE_UINT32(p_Regs->fmbm_ofsem, errorsToEnq); + + /* NIA */ + WRITE_UINT32(p_Regs->fmbm_ofne, NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + { +#ifdef FM_NO_OP_OBSERVED_POOLS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 4) && (p_Params->enBufPoolDepletion)) +#endif /* FM_NO_OP_OBSERVED_POOLS */ + { + /* define external buffer pools */ + err = SetExtBufferPools(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + } + else + /* NIA */ + WRITE_UINT32(p_Regs->fmbm_ofne, NIA_ENG_FM_CTL | NIA_FM_CTL_AC_HC); + + /* default queues */ + WRITE_UINT32(p_Regs->fmbm_ofqid, p_Params->dfltFqid); + WRITE_UINT32(p_Regs->fmbm_oefqid, p_Params->errFqid); + + if(p_FmPort->internalBufferOffset) + { + tmpReg = (uint32_t)((p_FmPort->internalBufferOffset % OFFSET_UNITS) ? + (p_FmPort->internalBufferOffset/OFFSET_UNITS + 1): + (p_FmPort->internalBufferOffset/OFFSET_UNITS)); + p_FmPort->internalBufferOffset = (uint8_t)(tmpReg * OFFSET_UNITS); + WRITE_UINT32(p_Regs->fmbm_oim, tmpReg << BMI_IM_FOF_SHIFT); + } + /* statistics & performance counters */ + WRITE_UINT32(p_Regs->fmbm_ostc, BMI_COUNTERS_EN); + + performanceContersParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + performanceContersParams.queueCompVal = 0; + performanceContersParams.dmaCompVal = (uint8_t)p_FmPort->openDmas.num; + performanceContersParams.fifoCompVal = p_FmPort->fifoBufs.num; + FM_PORT_SetPerformanceCountersParams(p_FmPort, &performanceContersParams); + + WRITE_UINT32(p_Regs->fmbm_opc, BMI_COUNTERS_EN); + + return E_OK; +} + +static t_Error QmiInit(t_FmPort *p_FmPort) +{ + t_FmPortDriverParam *p_Params = NULL; + uint32_t tmpReg; + + p_Params = p_FmPort->p_FmPortDriverParam; + + /* check that port is not busy */ + if(((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) && + (GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & QMI_PORT_CFG_EN)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port is already enabled")); + + /* enable & clear counters */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, QMI_PORT_CFG_EN_COUNTERS); + + /* The following is done for non-Rx ports only */ + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + { + if((p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) || + (p_FmPort->portType == e_FM_PORT_TYPE_TX)) + { + /* define dequeue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_TX); + /* define enqueue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_TX_RELEASE); + } + else /* for HC & OP */ + { + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_FETCH); + /* define enqueue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_RELEASE); + } + + /* configure dequeue */ + tmpReg = 0; + if(p_Params->deqHighPriority) + tmpReg |= QMI_DEQ_CFG_PRI; + + switch(p_Params->deqType) + { + case(e_FM_PORT_DEQ_TYPE1): + tmpReg |= QMI_DEQ_CFG_TYPE1; + break; + case(e_FM_PORT_DEQ_TYPE2): + tmpReg |= QMI_DEQ_CFG_TYPE2; + break; + case(e_FM_PORT_DEQ_TYPE3): + tmpReg |= QMI_DEQ_CFG_TYPE3; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid dequeue type")); + } + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + switch(p_Params->deqPrefetchOption) + { + case(e_FM_PORT_DEQ_NO_PREFETCH): + /* Do nothing - QMI_DEQ_CFG_PREFETCH_WAITING_TNUM | QMI_DEQ_CFG_PREFETCH_1_FRAME = 0 */ + break; + case(e_FM_PORT_DEQ_PARTIAL_PREFETCH): + tmpReg |= QMI_DEQ_CFG_PREFETCH_WAITING_TNUM | QMI_DEQ_CFG_PREFETCH_3_FRAMES; + break; + case(e_FM_PORT_DEQ_FULL_PREFETCH): + tmpReg |= QMI_DEQ_CFG_PREFETCH_NO_TNUM | QMI_DEQ_CFG_PREFETCH_3_FRAMES; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid dequeue prefetch option")); + } +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + tmpReg |= p_Params->deqByteCnt; + tmpReg |= (uint32_t)p_Params->deqSubPortal << QMI_DEQ_CFG_SUBPORTAL_SHIFT; + + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndc, tmpReg); + } + else /* rx port */ + /* define enqueue NIA */ + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_RELEASE); + + return E_OK; +} + +static t_Error BmiRxPortCheckAndGetCounterPtr(t_FmPort *p_FmPort, e_FmPortCounters counter, volatile uint32_t **p_Ptr) +{ + t_FmPortRxBmiRegs *p_BmiRegs = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs; + + /* check that counters are enabled */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + case(e_FM_PORT_COUNTERS_TASK_UTIL): + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + case(e_FM_PORT_COUNTERS_DMA_UTIL): + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + case(e_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION): + /* performance counters - may be read when disabled */ + break; + case(e_FM_PORT_COUNTERS_FRAME): + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + case(e_FM_PORT_COUNTERS_RX_BAD_FRAME): + case(e_FM_PORT_COUNTERS_RX_LARGE_FRAME): + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): + case(e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD): + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + if(!(GET_UINT32(p_BmiRegs->fmbm_rstc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + *p_Ptr = &p_BmiRegs->fmbm_rccn; + break; + case(e_FM_PORT_COUNTERS_TASK_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rtuc; + break; + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rrquc; + break; + case(e_FM_PORT_COUNTERS_DMA_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rduc; + break; + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_rfuc; + break; + case(e_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION): + *p_Ptr = &p_BmiRegs->fmbm_rpac; + break; + case(e_FM_PORT_COUNTERS_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rfrc; + break; + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rfcd; + break; + case(e_FM_PORT_COUNTERS_RX_BAD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rfbc; + break; + case(e_FM_PORT_COUNTERS_RX_LARGE_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rlfc; + break; + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_rffc; + break; + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): +#ifdef FM_PORT_COUNTERS_ERRATA_FMANg + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("Requested counter is not available in rev1")); + } +#endif /* FM_PORT_COUNTERS_ERRATA_FMANg */ + *p_Ptr = &p_BmiRegs->fmbm_rfldec; + break; + case(e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD): + *p_Ptr = &p_BmiRegs->fmbm_rodc; + break; + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + *p_Ptr = &p_BmiRegs->fmbm_rbdc; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + } + + return E_OK; +} + +static t_Error BmiTxPortCheckAndGetCounterPtr(t_FmPort *p_FmPort, e_FmPortCounters counter, volatile uint32_t **p_Ptr) +{ + t_FmPortTxBmiRegs *p_BmiRegs = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs; + + /* check that counters are enabled */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + case(e_FM_PORT_COUNTERS_TASK_UTIL): + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + case(e_FM_PORT_COUNTERS_DMA_UTIL): + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + /* performance counters - may be read when disabled */ + break; + case(e_FM_PORT_COUNTERS_FRAME): + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + if(!(GET_UINT32(p_BmiRegs->fmbm_tstc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Tx ports")); + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + *p_Ptr = &p_BmiRegs->fmbm_tccn; + break; + case(e_FM_PORT_COUNTERS_TASK_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_ttuc; + break; + case(e_FM_PORT_COUNTERS_QUEUE_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_ttcquc; + break; + case(e_FM_PORT_COUNTERS_DMA_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_tduc; + break; + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_tfuc; + break; + case(e_FM_PORT_COUNTERS_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_tfrc; + break; + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_tfdc; + break; + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + *p_Ptr = &p_BmiRegs->fmbm_tfledc; + break; + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + *p_Ptr = &p_BmiRegs->fmbm_tfufdc; + break; + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + *p_Ptr = &p_BmiRegs->fmbm_tbdc; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Tx ports")); + } + + return E_OK; +} + +static t_Error BmiOhPortCheckAndGetCounterPtr(t_FmPort *p_FmPort, e_FmPortCounters counter, volatile uint32_t **p_Ptr) +{ + t_FmPortOhBmiRegs *p_BmiRegs = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs; + + /* check that counters are enabled */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + case(e_FM_PORT_COUNTERS_TASK_UTIL): + case(e_FM_PORT_COUNTERS_DMA_UTIL): + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + /* performance counters - may be read when disabled */ + break; + case(e_FM_PORT_COUNTERS_FRAME): + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): + case(e_FM_PORT_COUNTERS_WRED_DISCARD): + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + if(!(GET_UINT32(p_BmiRegs->fmbm_ostc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): /* only valid for offline parsing */ + if(p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Host Command ports")); + if(!(GET_UINT32(p_BmiRegs->fmbm_ostc) & BMI_COUNTERS_EN)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for O/H ports")); + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_CYCLE): + *p_Ptr = &p_BmiRegs->fmbm_occn; + break; + case(e_FM_PORT_COUNTERS_TASK_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_otuc; + break; + case(e_FM_PORT_COUNTERS_DMA_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_oduc; + break; + case(e_FM_PORT_COUNTERS_FIFO_UTIL): + *p_Ptr = &p_BmiRegs->fmbm_ofuc; + break; + case(e_FM_PORT_COUNTERS_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_ofrc; + break; + case(e_FM_PORT_COUNTERS_DISCARD_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_ofdc; + break; + case(e_FM_PORT_COUNTERS_RX_FILTER_FRAME): + *p_Ptr = &p_BmiRegs->fmbm_offc; + break; + case(e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR): +#ifdef FM_PORT_COUNTERS_ERRATA_FMANg + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("Requested counter is not available in rev1")); + } +#endif /* FM_PORT_COUNTERS_ERRATA_FMANg */ + *p_Ptr = &p_BmiRegs->fmbm_ofldec; + break; + case(e_FM_PORT_COUNTERS_WRED_DISCARD): + *p_Ptr = &p_BmiRegs->fmbm_ofwdc; + break; + case(e_FM_PORT_COUNTERS_LENGTH_ERR): + *p_Ptr = &p_BmiRegs->fmbm_ofledc; + break; + case(e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT): + *p_Ptr = &p_BmiRegs->fmbm_ofufdc; + break; + case(e_FM_PORT_COUNTERS_DEALLOC_BUF): + *p_Ptr = &p_BmiRegs->fmbm_obdc; + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for O/H ports")); + } + + return E_OK; +} + +static t_Error AdditionalPrsParams(t_FmPort *p_FmPort, t_FmPcdPrsAdditionalHdrParams *p_HdrParams, uint32_t *p_SoftSeqAttachReg) +{ + uint8_t hdrNum, Ipv4HdrNum; + u_FmPcdHdrPrsOpts *p_prsOpts; + uint32_t tmpReg = 0, tmpPrsOffset; + + if(IS_PRIVATE_HEADER(p_HdrParams->hdr) || IS_SPECIAL_HEADER(p_HdrParams->hdr)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("No additional parameters for private or special headers.")); + + if(p_HdrParams->errDisable) + tmpReg |= PRS_HDR_ERROR_DIS; + + /* Set parser options */ + if(p_HdrParams->usePrsOpts) + { + p_prsOpts = &p_HdrParams->prsOpts; + switch(p_HdrParams->hdr) + { + case(HEADER_TYPE_MPLS): + if(p_prsOpts->mplsPrsOptions.labelInterpretationEnable) + tmpReg |= PRS_HDR_MPLS_LBL_INTER_EN; + GET_PRS_HDR_NUM(hdrNum, p_prsOpts->mplsPrsOptions.nextParse); + if(hdrNum == ILLEGAL_HDR_NUM) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + GET_PRS_HDR_NUM(Ipv4HdrNum, HEADER_TYPE_IPv4); + if(hdrNum < Ipv4HdrNum) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("Header must be equal or higher than IPv4")); + tmpReg |= ((uint32_t)hdrNum * PRS_HDR_ENTRY_SIZE) << PRS_HDR_MPLS_NEXT_HDR_SHIFT; + break; + case(HEADER_TYPE_PPPoE): + if(p_prsOpts->pppoePrsOptions.enableMTUCheck) + { +#ifdef FM_PPPOE_NO_MTU_CHECK + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Invalid parser option")); + else +#endif /* FM_PPPOE_NO_MTU_CHECK */ + tmpReg |= PRS_HDR_PPPOE_MTU_CHECK_EN; + } + break; + case(HEADER_TYPE_IPv6): + if(p_prsOpts->ipv6PrsOptions.routingHdrDisable) + tmpReg |= PRS_HDR_IPV6_ROUTE_HDR_DIS; + break; + case(HEADER_TYPE_TCP): + if(p_prsOpts->tcpPrsOptions.padIgnoreChecksum) + tmpReg |= PRS_HDR_TCP_PAD_REMOVAL; + break; + case(HEADER_TYPE_UDP): + if(p_prsOpts->udpPrsOptions.padIgnoreChecksum) + tmpReg |= PRS_HDR_TCP_PAD_REMOVAL; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid header")); + } + } + + /* set software parsing (address is devided in 2 since parser uses 2 byte access. */ + if(p_HdrParams->swPrsEnable) + { + tmpPrsOffset = FmPcdGetSwPrsOffset(p_FmPort->h_FmPcd, p_HdrParams->hdr, p_HdrParams->indexPerHdr); + if(tmpPrsOffset == ILLEGAL_BASE) + RETURN_ERROR(MINOR, E_INVALID_VALUE, NO_MSG); + tmpReg |= (PRS_HDR_SW_PRS_EN | tmpPrsOffset); + } + *p_SoftSeqAttachReg = tmpReg; + + return E_OK; +} + +static uint32_t GetPortSchemeBindParams(t_Handle h_FmPort, t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t walking1Mask = 0x80000000, tmp; + uint8_t idx = 0; + + p_SchemeBind->netEnvId = p_FmPort->netEnvId; + p_SchemeBind->hardwarePortId = p_FmPort->hardwarePortId; + p_SchemeBind->useClsPlan = p_FmPort->useClsPlan; + p_SchemeBind->numOfSchemes = 0; + tmp = p_FmPort->schemesPerPortVector; + if(tmp) + { + while (tmp) + { + if(tmp & walking1Mask) + { + p_SchemeBind->schemesIds[p_SchemeBind->numOfSchemes] = FmPcdKgGetSchemeSwId(p_FmPort->h_FmPcd, idx); + p_SchemeBind->numOfSchemes++; + tmp &= ~walking1Mask; + } + walking1Mask >>= 1; + idx++; + } + } + + return tmp; +} + +static t_Error BuildBufferStructure(t_FmPort *p_FmPort) +{ + uint32_t tmp; + + ASSERT_COND(p_FmPort); + + /* Align start of internal context data to 16 byte */ + p_FmPort->p_FmPortDriverParam->intContext.extBufOffset = + (uint16_t)((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize & (OFFSET_UNITS-1)) ? + ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize + OFFSET_UNITS) & ~(uint16_t)(OFFSET_UNITS-1)) : + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize); + + /* Translate margin and intContext params to FM parameters */ +#ifdef FM_INCORRECT_CS_ERRATA_FMAN18 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + uint8_t mod = p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign % 256; + if(mod) + { + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign += (256-mod); + DBG(WARNING,("dataAlign modified to next 256 to conform with FMAN18 errata\n")); + } + } + } +#endif /* FM_INCORRECT_CS_ERRATA_FMAN18 */ + + /* Initialize with illegal value. Later we'll set legal values. */ + p_FmPort->bufferOffsets.prsResultOffset = (uint32_t)ILLEGAL_BASE; + p_FmPort->bufferOffsets.timeStampOffset = (uint32_t)ILLEGAL_BASE; + p_FmPort->bufferOffsets.hashResultOffset= (uint32_t)ILLEGAL_BASE; + p_FmPort->bufferOffsets.pcdInfoOffset = (uint32_t)ILLEGAL_BASE; +#ifdef DEBUG + p_FmPort->bufferOffsets.debugOffset = (uint32_t)ILLEGAL_BASE; +#endif /* DEBUG */ + + /* Internally the driver supports 4 options + 1. prsResult/timestamp/hashResult selection (in fact 8 options, but for simplicity we'll + relate to it as 1). + 2. All IC context (from AD) except debug. + 3. Debug information only. + 4. All IC context (from AD) including debug. + Note, that if user asks for prsResult/timestamp/hashResult and Debug, we give them (4) */ + + /* This 'if' covers options 2 & 4. We copy from beginning of context with or without debug. */ + /* If passAllOtherPCDInfo explicitly requested, or passDebugInfo+prs/ts --> we also take passAllOtherPCDInfo */ + if ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passAllOtherPCDInfo) +#ifdef DEBUG + || (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo && + (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult)) +#endif /* DEBUG */ + ) + { +#ifdef DEBUG + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo) + { + p_FmPort->p_FmPortDriverParam->intContext.size = 240; + p_FmPort->bufferOffsets.debugOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 128); + } + else +#endif /* DEBUG */ + p_FmPort->p_FmPortDriverParam->intContext.size = 128; /* must be aligned to 16 */ + /* Start copying data after 16 bytes (FD) from the beginning of the internal context */ + p_FmPort->p_FmPortDriverParam->intContext.intContextOffset = 16; + + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passAllOtherPCDInfo) + p_FmPort->bufferOffsets.pcdInfoOffset = p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult) + p_FmPort->bufferOffsets.prsResultOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 16); + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp) + p_FmPort->bufferOffsets.timeStampOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 48); + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) + p_FmPort->bufferOffsets.hashResultOffset = + (uint32_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 56); + } + else + { +#ifdef DEBUG + if (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo) + { + /* This case covers option 3 */ + p_FmPort->p_FmPortDriverParam->intContext.size = 112; + p_FmPort->p_FmPortDriverParam->intContext.intContextOffset = 144; + p_FmPort->bufferOffsets.debugOffset = p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + } + else +#endif /* DEBUG */ + { + /* This case covers the options under 1 */ + /* Copy size must be in 16-byte granularity. */ + p_FmPort->p_FmPortDriverParam->intContext.size = + (uint16_t)((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? 32 : 0) + + ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) ? 16 : 0)); + + /* Align start of internal context data to 16 byte */ + p_FmPort->p_FmPortDriverParam->intContext.intContextOffset = + (uint8_t)(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? 32 : + ((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp || + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) ? 64 : 0)); + + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult) + p_FmPort->bufferOffsets.prsResultOffset = p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp) + p_FmPort->bufferOffsets.timeStampOffset = p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? + (p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + sizeof(t_FmPrsResult)) : + p_FmPort->p_FmPortDriverParam->intContext.extBufOffset; + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passHashResult) + /* If PR is not requested, whether TS is requested or not, IC will be copied from TS */ + p_FmPort->bufferOffsets.hashResultOffset = p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult ? + (p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + sizeof(t_FmPrsResult) + 8) : + p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + 8; + } + } + + p_FmPort->p_FmPortDriverParam->bufMargins.startMargins = + (uint16_t)(p_FmPort->p_FmPortDriverParam->intContext.extBufOffset + + p_FmPort->p_FmPortDriverParam->intContext.size); +#ifdef FM_CAPWAP_SUPPORT + /* save extra space for manip in both external and internal buffers */ + if(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace) + { + if((p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + FRAG_EXTRA_SPACE) >= 256) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + 32 can not be equal or larger to 256")); + p_FmPort->bufferOffsets.manipOffset = p_FmPort->p_FmPortDriverParam->bufMargins.startMargins; + p_FmPort->p_FmPortDriverParam->bufMargins.startMargins += (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + FRAG_EXTRA_SPACE); + p_FmPort->p_FmPortDriverParam->internalBufferOffset = + (uint8_t)(p_FmPort->p_FmPortDriverParam->bufferPrefixContent.manipExtraSpace + FRAG_EXTRA_SPACE); + } +#endif /* FM_CAPWAP_SUPPORT */ + + /* align data start */ + tmp = (uint32_t)(p_FmPort->p_FmPortDriverParam->bufMargins.startMargins % + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign); + if (tmp) + p_FmPort->p_FmPortDriverParam->bufMargins.startMargins += (p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign-tmp); + p_FmPort->bufferOffsets.dataOffset = p_FmPort->p_FmPortDriverParam->bufMargins.startMargins; + p_FmPort->internalBufferOffset = p_FmPort->p_FmPortDriverParam->internalBufferOffset; + + return E_OK; +} + +static t_Error SetPcd(t_Handle h_FmPort, t_FmPortPcdParams *p_PcdParams) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + uint32_t tmpReg; + volatile uint32_t *p_BmiNia=NULL; + volatile uint32_t *p_BmiPrsNia=NULL; + volatile uint32_t *p_BmiPrsStartOffset=NULL; + volatile uint32_t *p_BmiInitPrsResult=NULL; + volatile uint32_t *p_BmiCcBase=NULL; + uint8_t hdrNum, L3HdrNum, greHdrNum; + int i; + bool isEmptyClsPlanGrp; + uint32_t tmpHxs[FM_PCD_PRS_NUM_OF_HDRS]; + uint16_t absoluteProfileId; + uint8_t physicalSchemeId; + uint32_t ccTreePhysOffset; + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + + p_FmPort->netEnvId = (uint8_t)(PTR_TO_UINT(p_PcdParams->h_NetEnv)-1); + + p_FmPort->pcdEngines = 0; + + /* initialize p_FmPort->pcdEngines field in port's structure */ + switch(p_PcdParams->pcdSupport) + { + case(e_FM_PORT_PCD_SUPPORT_NONE): + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("No PCD configuration required if e_FM_PORT_PCD_SUPPORT_NONE selected")); + case(e_FM_PORT_PCD_SUPPORT_PRS_ONLY): + p_FmPort->pcdEngines |= FM_PCD_PRS; + break; + case(e_FM_PORT_PCD_SUPPORT_PLCR_ONLY): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_KG; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_KG; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_KG; + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR): + p_FmPort->pcdEngines |= FM_PCD_PRS; + p_FmPort->pcdEngines |= FM_PCD_KG; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; + +#ifdef FM_CAPWAP_SUPPORT + case(e_FM_PORT_PCD_SUPPORT_CC_ONLY): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_CC; + break; + case(e_FM_PORT_PCD_SUPPORT_CC_AND_KG): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_KG; + break; + case(e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR): + if (CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser support is required")); + p_FmPort->pcdEngines |= FM_PCD_CC; + p_FmPort->pcdEngines |= FM_PCD_KG; + p_FmPort->pcdEngines |= FM_PCD_PLCR; + break; +#endif /* FM_CAPWAP_SUPPORT */ + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("invalid pcdSupport")); + } + + if((p_FmPort->pcdEngines & FM_PCD_PRS) && (p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams > FM_PCD_PRS_NUM_OF_HDRS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Port parser numOfHdrsWithAdditionalParams may not exceed %d", FM_PCD_PRS_NUM_OF_HDRS)); + + /* check that parameters exist for each and only each defined engine */ + if((!!(p_FmPort->pcdEngines & FM_PCD_PRS) != !!p_PcdParams->p_PrsParams) || + (!!(p_FmPort->pcdEngines & FM_PCD_KG) != !!p_PcdParams->p_KgParams) || + (!!(p_FmPort->pcdEngines & FM_PCD_CC) != !!p_PcdParams->p_CcParams)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("PCD initialization structure is not consistant with pcdSupport")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + p_BmiPrsNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne; + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpso; + p_BmiInitPrsResult = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai[0]; + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rccb; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + p_BmiPrsNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofpne; + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opso; + p_BmiInitPrsResult = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai[0]; + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_occb; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + + if(p_PcdParams->p_KgParams->numOfSchemes == 0) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("For ports using Keygen, at lease one scheme must be bound. ")); + /* for each scheme */ + for(i = 0; ip_KgParams->numOfSchemes; i++) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_PcdParams->p_KgParams->h_Schemes[i])-1); + /* build vector */ + p_FmPort->schemesPerPortVector |= 1 << (31 - (uint32_t)physicalSchemeId); + } + + err = FmPcdKgSetOrBindToClsPlanGrp(p_FmPort->h_FmPcd, + p_FmPort->hardwarePortId, + p_FmPort->netEnvId, + p_FmPort->optArray, + &p_FmPort->clsPlanGrpId, + &isEmptyClsPlanGrp); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("FmPcdKgSetOrBindToClsPlanGrp failed. ")); + + p_FmPort->useClsPlan = !isEmptyClsPlanGrp; + } + + /* set PCD port parameter */ + if(p_FmPort->pcdEngines & FM_PCD_CC) + { + err = FmPcdCcBindTree(p_FmPort->h_FmPcd, p_PcdParams->p_CcParams->h_CcTree, &ccTreePhysOffset, h_FmPort); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + WRITE_UINT32(*p_BmiCcBase, ccTreePhysOffset); + p_FmPort->ccTreeId = p_PcdParams->p_CcParams->h_CcTree; + } + + /***************************/ + /* configure NIA after BMI */ + /***************************/ + if (!CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + /* rfne may contain FDCS bits, so first we read them. */ + p_FmPort->savedBmiNia = GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK; + + /* If policer is used directly after BMI or PRS */ + if((p_FmPort->pcdEngines & FM_PCD_PLCR) && + ((p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_PLCR_ONLY) || + (p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR))) + { + absoluteProfileId = (uint16_t)(PTR_TO_UINT(p_PcdParams->p_PlcrParams->h_Profile)-1); + + if(!FmPcdPlcrIsProfileValid(p_FmPort->h_FmPcd, absoluteProfileId)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Private port profile not valid.")); + + tmpReg = (uint32_t)(absoluteProfileId | NIA_PLCR_ABSOLUTE); + + if(p_FmPort->pcdEngines & FM_PCD_PRS) /* e_FM_PCD_SUPPORT_PRS_AND_PLCR */ + { + /* update BMI HPNIA */ + WRITE_UINT32(*p_BmiPrsNia, (uint32_t)(NIA_ENG_PLCR | tmpReg)); + } + else /* e_FM_PCD_SUPPORT_PLCR_ONLY */ + /* update BMI NIA */ + p_FmPort->savedBmiNia |= (uint32_t)(NIA_ENG_PLCR); + } + +#ifdef FM_CAPWAP_SUPPORT + /* if CC is used directly after BMI */ + if((p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_CC_ONLY) || + (p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_CC_AND_KG) || + (p_PcdParams->pcdSupport == e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR)) + { + if (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("e_FM_PORT_PCD_SUPPORT_CC_xx available for offline parsing ports only")); + p_FmPort->savedBmiNia |= (uint32_t)(NIA_ENG_FM_CTL | NIA_FM_CTL_AC_CC); + /* check that prs start offset == RIM[FOF] */ + } +#endif /* FM_CAPWAP_SUPPORT */ + + if (p_FmPort->pcdEngines & FM_PCD_PRS) + { + ASSERT_COND(p_PcdParams->p_PrsParams); + /* if PRS is used it is always first */ + GET_PRS_HDR_NUM(hdrNum, p_PcdParams->p_PrsParams->firstPrsHdr); + if (hdrNum == ILLEGAL_HDR_NUM) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unsupported header.")); + if (!CHECK_FM_CTL_AC_POST_FETCH_PCD(p_FmPort->savedBmiNia)) + p_FmPort->savedBmiNia |= (uint32_t)(NIA_ENG_PRS | (uint32_t)(hdrNum)); + /* set after parser NIA */ + tmpReg = 0; + switch(p_PcdParams->pcdSupport) + { + case(e_FM_PORT_PCD_SUPPORT_PRS_ONLY): + WRITE_UINT32(*p_BmiPrsNia, NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME); + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC): + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR): + tmpReg = NIA_KG_CC_EN; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG): + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR): + if(p_PcdParams->p_KgParams->directScheme) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_PcdParams->p_KgParams->h_DirectScheme)-1); + /* check that this scheme was bound to this port */ + for(i=0 ; ip_KgParams->numOfSchemes; i++) + if(p_PcdParams->p_KgParams->h_DirectScheme == p_PcdParams->p_KgParams->h_Schemes[i]) + break; + if(i == p_PcdParams->p_KgParams->numOfSchemes) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Direct scheme is not one of the port selected schemes.")); + tmpReg |= (uint32_t)(NIA_KG_DIRECT | physicalSchemeId); + } + WRITE_UINT32(*p_BmiPrsNia, NIA_ENG_KG | tmpReg); + break; + case(e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR): + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid PCD support")); + } + + /* set start parsing offset */ + /* WRITE_UINT32(*p_BmiPrsStartOffset, p_PcdParams->p_PrsParams->parsingOffset); */ + + /************************************/ + /* Parser port parameters */ + /************************************/ + /* stop before configuring */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pcac, PRS_CAC_STOP); + /* wait for parser to be in idle state */ + while(GET_UINT32(p_FmPort->p_FmPortPrsRegs->pcac) & PRS_CAC_ACTIVE) ; + + /* set soft seq attachment register */ + memset(tmpHxs, 0, FM_PCD_PRS_NUM_OF_HDRS*sizeof(uint32_t)); + + /* set protocol options */ + for(i=0;p_FmPort->optArray[i];i++) + switch(p_FmPort->optArray[i]) + { + case(ETH_BROADCAST): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_ETH) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_ETH_BC_SHIFT; + break; + case(ETH_MULTICAST): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_ETH) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_ETH_MC_SHIFT; + break; + case(VLAN_STACKED): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_VLAN) + tmpHxs[hdrNum] |= (i+1)<< PRS_HDR_VLAN_STACKED_SHIFT; + break; + case(MPLS_STACKED): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_MPLS) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_MPLS_STACKED_SHIFT; + break; + case(IPV4_BROADCAST_1): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_1_BC_SHIFT; + break; + case(IPV4_MULTICAST_1): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_1_MC_SHIFT; + break; + case(IPV4_UNICAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_2_UC_SHIFT; + break; + case(IPV4_MULTICAST_BROADCAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv4) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV4_2_MC_BC_SHIFT; + break; + case(IPV6_MULTICAST_1): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv6) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV6_1_MC_SHIFT; + break; + case(IPV6_UNICAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv6) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV6_2_UC_SHIFT; + break; + case(IPV6_MULTICAST_2): + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPv6) + tmpHxs[hdrNum] |= (i+1) << PRS_HDR_IPV6_2_MC_SHIFT; + break; + } + + if (FmPcdNetEnvIsHdrExist(p_FmPort->h_FmPcd, p_FmPort->netEnvId, HEADER_TYPE_UDP_ENCAP_ESP)) + { + p_PcdParams->p_PrsParams->additionalParams + [p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams].hdr = HEADER_TYPE_UDP; + p_PcdParams->p_PrsParams->additionalParams + [p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams].swPrsEnable = TRUE; + p_PcdParams->p_PrsParams->numOfHdrsWithAdditionalParams++; + } + + /* set MPLS default next header - HW reset workaround */ + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_MPLS) + tmpHxs[hdrNum] |= PRS_HDR_MPLS_LBL_INTER_EN; + GET_PRS_HDR_NUM(L3HdrNum, HEADER_TYPE_USER_DEFINED_L3); + tmpHxs[hdrNum] |= (uint32_t)L3HdrNum << PRS_HDR_MPLS_NEXT_HDR_SHIFT; + + /* for GRE, disable errors */ + GET_PRS_HDR_NUM(greHdrNum, HEADER_TYPE_GRE); + tmpHxs[greHdrNum] |= PRS_HDR_ERROR_DIS; + + /* config additional params for specific headers */ + for(i=0 ; ip_PrsParams->numOfHdrsWithAdditionalParams ; i++) + { + GET_PRS_HDR_NUM(hdrNum, p_PcdParams->p_PrsParams->additionalParams[i].hdr); + if(hdrNum== ILLEGAL_HDR_NUM) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + if(hdrNum==NO_HDR_NUM) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Private headers may not use additional parameters")); + + err = AdditionalPrsParams(p_FmPort, &p_PcdParams->p_PrsParams->additionalParams[i], &tmpReg); + if(err) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + + tmpHxs[hdrNum] |= tmpReg; + } +#ifdef FM_PRS_L4_SHELL_ERRATA_FMANb + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + /* link to sw parser code for L4 shells - only if no other code is applied. */ + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_SCTP) + if(!(tmpHxs[hdrNum] & PRS_HDR_SW_PRS_EN)) + tmpHxs[hdrNum] |= (PRS_HDR_SW_PRS_EN | SCTP_SW_PATCH_START); + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_DCCP) + if(!(tmpHxs[hdrNum] & PRS_HDR_SW_PRS_EN)) + tmpHxs[hdrNum] |= (PRS_HDR_SW_PRS_EN | DCCP_SW_PATCH_START); + GET_PRS_HDR_NUM(hdrNum, HEADER_TYPE_IPSEC_AH) + if(!(tmpHxs[hdrNum] & PRS_HDR_SW_PRS_EN)) + tmpHxs[hdrNum] |= (PRS_HDR_SW_PRS_EN | IPSEC_SW_PATCH_START); + } + } +#endif /* FM_PRS_L4_SHELL_ERRATA_FMANb */ + + for(i=0 ; ip_FmPortPrsRegs->hdrs[i].lcv, FmPcdGetLcv(p_FmPort->h_FmPcd, p_FmPort->netEnvId, (uint8_t)i)); + /* set HXS register according to default+Additional params+protocol options */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->hdrs[i].softSeqAttach, tmpHxs[i]); + } + + /* set tpid. */ + tmpReg = PRS_TPID_DFLT; + if(p_PcdParams->p_PrsParams->setVlanTpid1) + { + tmpReg &= PRS_TPID2_MASK; + tmpReg |= (uint32_t)p_PcdParams->p_PrsParams->vlanTpid1 << PRS_PCTPID_SHIFT; + } + if(p_PcdParams->p_PrsParams->setVlanTpid2) + { + tmpReg &= PRS_TPID1_MASK; + tmpReg |= (uint32_t)p_PcdParams->p_PrsParams->vlanTpid2; + } + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pctpid, tmpReg); + + /* enable parser */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pcac, 0); + + if(p_PcdParams->p_PrsParams->prsResultPrivateInfo) + p_FmPort->privateInfo = p_PcdParams->p_PrsParams->prsResultPrivateInfo; + + } /* end parser */ + else + p_FmPort->privateInfo = 0; + + WRITE_UINT32(*p_BmiPrsStartOffset, GET_UINT32(*p_BmiPrsStartOffset) + p_FmPort->internalBufferOffset); + + /* set initial parser result - used for all engines */ + for (i=0;iprivateInfo << BMI_PR_PORTID_SHIFT) + | BMI_PRS_RESULT_HIGH)); + else + if (i< FM_PORT_PRS_RESULT_NUM_OF_WORDS/2) + WRITE_UINT32(*(p_BmiInitPrsResult+i), BMI_PRS_RESULT_HIGH); + else + WRITE_UINT32(*(p_BmiInitPrsResult+i), BMI_PRS_RESULT_LOW); + } + + return E_OK; +} + +static t_Error DeletePcd(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + volatile uint32_t *p_BmiNia=NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + + if(!p_FmPort->pcdEngines) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("called for non PCD port")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if((GET_UINT32(*p_BmiNia) & (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("port has to be detached previousely")); + + /* "cut" PCD out of the port's flow - go to BMI */ + /* WRITE_UINT32(*p_BmiNia, (p_FmPort->savedBmiNia & BMI_RFNE_FDCS_MASK) | (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); */ + + if(p_FmPort->pcdEngines | FM_PCD_PRS) + { + /* stop parser */ + WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->pcac, PRS_CAC_STOP); + /* wait for parser to be in idle state */ + while(GET_UINT32(p_FmPort->p_FmPortPrsRegs->pcac) & PRS_CAC_ACTIVE) ; + } + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + err = FmPcdKgDeleteOrUnbindPortToClsPlanGrp(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, p_FmPort->clsPlanGrpId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + p_FmPort->useClsPlan = FALSE; + } + + if(p_FmPort->pcdEngines & FM_PCD_CC) + { + /* unbind - we need to get the treeId too */ + err = FmPcdCcUnbindTree(p_FmPort->h_FmPcd, p_FmPort->ccTreeId); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + } + + p_FmPort->pcdEngines = 0; + + return E_OK; +} + + +/********************************************/ +/* Inter-module API */ +/********************************************/ +void FmPortSetMacsecLcv(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + uint32_t macsecEn = BMI_PORT_CFG_EN_MACSEC; + uint32_t lcv, walking1Mask = 0x80000000; + uint8_t cnt = 0; + + SANITY_CHECK_RETURN(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + { + REPORT_ERROR(MAJOR, E_INVALID_OPERATION, ("The routine is relevant for Rx ports only")); + return; + } + + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg; + /* get LCV for MACSEC */ + if ((p_FmPort->h_FmPcd) && ((lcv = FmPcdGetMacsecLcv(p_FmPort->h_FmPcd, p_FmPort->netEnvId))!= 0)) + { + while(!(lcv & walking1Mask)) + { + cnt++; + walking1Mask >>= 1; + } + + macsecEn |= (uint32_t)cnt << BMI_PORT_CFG_MS_SEL_SHIFT; + } + + WRITE_UINT32(*p_BmiCfgReg, GET_UINT32(*p_BmiCfgReg) | macsecEn); +} + +void FmPortSetMacsecCmd(t_Handle h_FmPort, uint8_t dfltSci) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + uint32_t tmpReg; + + SANITY_CHECK_RETURN(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + { + REPORT_ERROR(MAJOR, E_INVALID_OPERATION, ("The routine is relevant for Tx ports only")); + return; + } + + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tfca; + tmpReg = GET_UINT32(*p_BmiCfgReg) & ~BMI_CMD_ATTR_MACCMD_MASK; + tmpReg |= BMI_CMD_ATTR_MACCMD_SECURED; + tmpReg |= (((uint32_t)dfltSci << BMI_CMD_ATTR_MACCMD_SC_SHIFT) & BMI_CMD_ATTR_MACCMD_SC_MASK); + + WRITE_UINT32(*p_BmiCfgReg, tmpReg); +} + +uint8_t FmPortGetNetEnvId(t_Handle h_FmPort) +{ + return ((t_FmPort*)h_FmPort)->netEnvId; +} + +uint8_t FmPortGetHardwarePortId(t_Handle h_FmPort) +{ + return ((t_FmPort*)h_FmPort)->hardwarePortId; +} + +uint32_t FmPortGetPcdEngines(t_Handle h_FmPort) +{ + return ((t_FmPort*)h_FmPort)->pcdEngines; +} + +t_Error FmPortAttachPCD(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiNia=NULL; + +/*TODO - to take care about the chnges that were made in the port because of the previously assigned tree. +pndn, pnen ... maybe were changed because of the Tree requirement*/ + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if(p_FmPort->requiredAction & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY) + if(FmSetNumOfRiscsPerPort(p_FmPort->h_Fm, p_FmPort->hardwarePortId, 1)!= E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + /* check that current NIA is BMI to BMI */ + if((GET_UINT32(*p_BmiNia) & ~BMI_RFNE_FDCS_MASK) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("may be called only for ports in BMI-to-BMI state.")); + + WRITE_UINT32(*p_BmiNia, p_FmPort->savedBmiNia); + + if(p_FmPort->requiredAction & UPDATE_NIA_PNEN) + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, p_FmPort->savedQmiPnen); + + if(p_FmPort->requiredAction & UPDATE_NIA_PNDN) + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, p_FmPort->savedNonRxQmiRegsPndn); + + + return E_OK; +} + +t_Error FmPortGetSetCcParams(t_Handle h_FmPort, t_FmPortGetSetCcParams *p_CcParams) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + int tmpInt; + volatile uint32_t *p_BmiPrsStartOffset = NULL; + + /* this function called from Cc for pass and receive parameters port params between CC and PORT*/ + + if((p_CcParams->getCcParams.type & OFFSET_OF_PR) && (p_FmPort->bufferOffsets.prsResultOffset != ILLEGAL_BASE)) + { + p_CcParams->getCcParams.prOffset = (uint8_t)p_FmPort->bufferOffsets.prsResultOffset; + p_CcParams->getCcParams.type &= ~OFFSET_OF_PR; + } + if(p_CcParams->getCcParams.type & HW_PORT_ID) + { + p_CcParams->getCcParams.hardwarePortId = (uint8_t)p_FmPort->hardwarePortId; + p_CcParams->getCcParams.type &= ~HW_PORT_ID; + } + if((p_CcParams->getCcParams.type & OFFSET_OF_DATA) && (p_FmPort->bufferOffsets.dataOffset != ILLEGAL_BASE)) + { + p_CcParams->getCcParams.dataOffset = (uint16_t)p_FmPort->bufferOffsets.dataOffset; + p_CcParams->getCcParams.type &= ~OFFSET_OF_DATA; + } + if(p_CcParams->getCcParams.type & NUM_OF_TASKS) + { + p_CcParams->getCcParams.numOfTasks = p_FmPort->numOfTasks; + p_CcParams->getCcParams.type &= ~NUM_OF_TASKS; + } + if(p_CcParams->getCcParams.type & BUFFER_POOL_ID_FOR_MANIP) + { + if(p_CcParams->getCcParams.poolIndex < p_FmPort->extBufPools.numOfPoolsUsed) + { + p_CcParams->getCcParams.poolIdForManip = p_FmPort->extBufPools.extBufPool[p_CcParams->getCcParams.poolIndex].id; + p_CcParams->getCcParams.type &= ~BUFFER_POOL_ID_FOR_MANIP; + } + } + + if((p_CcParams->setCcParams.type & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY) && !(p_FmPort->requiredAction & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY)) + { + p_FmPort->requiredAction |= UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY; + } + + if((p_CcParams->setCcParams.type & UPDATE_NIA_PNEN) && !(p_FmPort->requiredAction & UPDATE_NIA_PNEN)) + { + p_FmPort->savedQmiPnen = p_CcParams->setCcParams.nia; + p_FmPort->requiredAction |= UPDATE_NIA_PNEN; + } + else if (p_CcParams->setCcParams.type & UPDATE_NIA_PNEN) + { + if(p_FmPort->savedQmiPnen != p_CcParams->setCcParams.nia) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("pnen was defined previously different")); + } + + if((p_CcParams->setCcParams.type & UPDATE_NIA_PNDN) && !(p_FmPort->requiredAction & UPDATE_NIA_PNDN)) + { + p_FmPort->savedNonRxQmiRegsPndn = p_CcParams->setCcParams.nia; + p_FmPort->requiredAction |= UPDATE_NIA_PNDN; + } + else if(p_CcParams->setCcParams.type & UPDATE_NIA_PNDN) + { + if(p_FmPort->savedNonRxQmiRegsPndn != p_CcParams->setCcParams.nia) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("pndn was defined previously different")); + } + + + if((p_CcParams->setCcParams.type & UPDATE_PSO) && !(p_FmPort->requiredAction & UPDATE_PSO)) + { + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpso; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opso; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + /* set start parsing offset */ + tmpInt = (int)GET_UINT32(*p_BmiPrsStartOffset)+ p_CcParams->setCcParams.psoSize; + if(tmpInt>0) + WRITE_UINT32(*p_BmiPrsStartOffset, (uint32_t)tmpInt); + + p_FmPort->requiredAction |= UPDATE_PSO; + p_FmPort->savedPrsStartOffset = p_CcParams->setCcParams.psoSize; + + } + else if (p_CcParams->setCcParams.type & UPDATE_PSO) + { + if(p_FmPort->savedPrsStartOffset != p_CcParams->setCcParams.psoSize) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("parser start offset was defoned previousley different")); + } + return E_OK; +} +/********************************** End of inter-module routines ********************************/ + +/****************************************/ +/* API Init unit functions */ +/****************************************/ +t_Handle FM_PORT_Config(t_FmPortParams *p_FmPortParams) +{ + t_FmPort *p_FmPort; + uintptr_t baseAddr = p_FmPortParams->baseAddr; + + /* Allocate FM structure */ + p_FmPort = (t_FmPort *) XX_Malloc(sizeof(t_FmPort)); + if (!p_FmPort) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Port driver structure")); + return NULL; + } + memset(p_FmPort, 0, sizeof(t_FmPort)); + + /* Allocate the FM driver's parameters structure */ + p_FmPort->p_FmPortDriverParam = (t_FmPortDriverParam *)XX_Malloc(sizeof(t_FmPortDriverParam)); + if (!p_FmPort->p_FmPortDriverParam) + { + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FM Port driver parameters")); + return NULL; + } + memset(p_FmPort->p_FmPortDriverParam, 0, sizeof(t_FmPortDriverParam)); + + /* Initialize FM port parameters which will be kept by the driver */ + p_FmPort->portType = p_FmPortParams->portType; + p_FmPort->portId = p_FmPortParams->portId; + p_FmPort->pcdEngines = FM_PCD_NONE; + p_FmPort->f_Exception = p_FmPortParams->f_Exception; + p_FmPort->h_App = p_FmPortParams->h_App; + p_FmPort->h_Fm = p_FmPortParams->h_Fm; + + /* calculate global portId number */ + SW_PORT_ID_TO_HW_PORT_ID(p_FmPort->hardwarePortId, p_FmPort->portType, p_FmPortParams->portId); + + /* Initialize FM port parameters for initialization phase only */ + p_FmPort->p_FmPortDriverParam->baseAddr = baseAddr; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.privDataSize = DEFAULT_PORT_bufferPrefixContent_privDataSize; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passPrsResult= DEFAULT_PORT_bufferPrefixContent_passPrsResult; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passTimeStamp= DEFAULT_PORT_bufferPrefixContent_passTimeStamp; + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passAllOtherPCDInfo + = DEFAULT_PORT_bufferPrefixContent_passTimeStamp; +#ifdef DEBUG + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.passDebugInfo= DEFAULT_PORT_bufferPrefixContent_debugInfo; +#endif /* DEBUG */ + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign = DEFAULT_PORT_bufferPrefixContent_dataAlign; + p_FmPort->p_FmPortDriverParam->dmaSwapData = DEFAULT_PORT_dmaSwapData; + p_FmPort->p_FmPortDriverParam->dmaIntContextCacheAttr = DEFAULT_PORT_dmaIntContextCacheAttr; + p_FmPort->p_FmPortDriverParam->dmaHeaderCacheAttr = DEFAULT_PORT_dmaHeaderCacheAttr; + p_FmPort->p_FmPortDriverParam->dmaScatterGatherCacheAttr = DEFAULT_PORT_dmaScatterGatherCacheAttr; + p_FmPort->p_FmPortDriverParam->dmaWriteOptimize = DEFAULT_PORT_dmaWriteOptimize; + p_FmPort->p_FmPortDriverParam->liodnBase = p_FmPortParams->liodnBase; + + /* resource distribution. */ + p_FmPort->fifoBufs.num = DEFAULT_PORT_sizeOfFifo(p_FmPort->portType); + p_FmPort->fifoBufs.extra = DEFAULT_PORT_extraSizeOfFifo(p_FmPort->portType); + p_FmPort->openDmas.num = DEFAULT_PORT_numOfOpenDmas(p_FmPort->portType); + p_FmPort->openDmas.extra = DEFAULT_PORT_extraNumOfOpenDmas(p_FmPort->portType); + p_FmPort->tasks.num = DEFAULT_PORT_numOfTasks(p_FmPort->portType); + p_FmPort->tasks.extra = DEFAULT_PORT_extraNumOfTasks(p_FmPort->portType); + p_FmPort->numOfTasks = (uint8_t)p_FmPort->tasks.num; +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + p_FmPort->fifoBufs.extra = 0; + p_FmPort->openDmas.extra = 0; + p_FmPort->tasks.extra = 0; + } + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + + p_FmPort->p_FmPortDriverParam->color = DEFAULT_PORT_color; +#ifdef FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + p_FmPort->p_FmPortDriverParam->color = e_FM_PORT_COLOR_OVERRIDE; + } +#endif /* FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 */ + + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + p_FmPort->p_FmPortDriverParam->syncReq = DEFAULT_PORT_syncReqForHc; + else + p_FmPort->p_FmPortDriverParam->syncReq = DEFAULT_PORT_syncReq; + +#ifdef FM_PORT_SYNC_ERRATA_FMAN6 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + p_FmPort->p_FmPortDriverParam->syncReq = FALSE; + } +#endif /* FM_PORT_SYNC_ERRATA_FMAN6 */ + + /* Port type specific initialization: */ + if ((p_FmPort->portType != e_FM_PORT_TYPE_TX) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX_10G)) + p_FmPort->p_FmPortDriverParam->frmDiscardOverride = DEFAULT_PORT_frmDiscardOverride; + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX): + case(e_FM_PORT_TYPE_RX_10G): + /* Initialize FM port parameters for initialization phase only */ + p_FmPort->p_FmPortDriverParam->cutBytesFromEnd = DEFAULT_PORT_cutBytesFromEnd; + p_FmPort->p_FmPortDriverParam->enBufPoolDepletion = FALSE; + p_FmPort->p_FmPortDriverParam->frmDiscardOverride = DEFAULT_PORT_frmDiscardOverride; + p_FmPort->p_FmPortDriverParam->rxFifoPriElevationLevel = DEFAULT_PORT_rxFifoPriElevationLevel; + p_FmPort->p_FmPortDriverParam->rxFifoThreshold = DEFAULT_PORT_rxFifoThreshold; + p_FmPort->p_FmPortDriverParam->bufMargins.endMargins = DEFAULT_PORT_BufMargins_endMargins; + p_FmPort->p_FmPortDriverParam->errorsToDiscard = DEFAULT_PORT_errorsToDiscard; + p_FmPort->p_FmPortDriverParam->cheksumLastBytesIgnore = DEFAULT_PORT_cheksumLastBytesIgnore; + p_FmPort->p_FmPortDriverParam->forwardReuseIntContext = DEFAULT_PORT_forwardIntContextReuse; + break; + + case(e_FM_PORT_TYPE_TX): + p_FmPort->txFifoDeqPipelineDepth = DEFAULT_PORT_txFifoDeqPipelineDepth_1G; + p_FmPort->p_FmPortDriverParam->dontReleaseBuf = FALSE; + case(e_FM_PORT_TYPE_TX_10G): + if(p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) + p_FmPort->txFifoDeqPipelineDepth = DEFAULT_PORT_txFifoDeqPipelineDepth_10G; + p_FmPort->p_FmPortDriverParam->cheksumLastBytesIgnore = DEFAULT_PORT_cheksumLastBytesIgnore; + p_FmPort->p_FmPortDriverParam->txFifoMinFillLevel = DEFAULT_PORT_txFifoMinFillLevel; + p_FmPort->p_FmPortDriverParam->txFifoLowComfLevel = DEFAULT_PORT_txFifoLowComfLevel; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_FmPort->p_FmPortDriverParam->deqHighPriority = DEFAULT_PORT_deqHighPriority; + p_FmPort->p_FmPortDriverParam->deqType = DEFAULT_PORT_deqType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + p_FmPort->p_FmPortDriverParam->deqPrefetchOption = DEFAULT_PORT_deqPrefetchOption; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + p_FmPort->p_FmPortDriverParam->deqByteCnt = DEFAULT_PORT_deqByteCnt; + + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + p_FmPort->p_FmPortDriverParam->errorsToDiscard = DEFAULT_PORT_errorsToDiscard; + break; + + default: + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + return NULL; + } +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + p_FmPort->p_FmPortDriverParam->deqPrefetchOption = DEFAULT_PORT_deqPrefetchOption_HC; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + if ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + p_FmPort->txFifoDeqPipelineDepth = OH_PIPELINE_DEPTH; + + p_FmPort->imEn = p_FmPortParams->independentModeEnable; + + if (p_FmPort->imEn) + { + if ((p_FmPort->portType == e_FM_PORT_TYPE_TX) || + (p_FmPort->portType == e_FM_PORT_TYPE_TX_10G)) + p_FmPort->txFifoDeqPipelineDepth = DEFAULT_PORT_txFifoDeqPipelineDepth_IM; + FmPortConfigIM(p_FmPort, p_FmPortParams); + } + else + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX): + case(e_FM_PORT_TYPE_RX_10G): + /* Initialize FM port parameters for initialization phase only */ + memcpy(&p_FmPort->p_FmPortDriverParam->extBufPools, + &p_FmPortParams->specificParams.rxParams.extBufPools, + sizeof(t_FmPortExtPools)); + p_FmPort->p_FmPortDriverParam->errFqid = p_FmPortParams->specificParams.rxParams.errFqid; + p_FmPort->p_FmPortDriverParam->dfltFqid = p_FmPortParams->specificParams.rxParams.dfltFqid; + p_FmPort->p_FmPortDriverParam->liodnOffset = p_FmPortParams->specificParams.rxParams.liodnOffset; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): +#ifdef FM_OP_PARTITION_ERRATA_FMANx8 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + p_FmPort->p_FmPortDriverParam->liodnOffset = p_FmPortParams->specificParams.nonRxParams.opLiodnOffset; + } +#endif /* FM_OP_PARTITION_ERRATA_FMANx8 */ + case(e_FM_PORT_TYPE_TX): + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_FmPort->p_FmPortDriverParam->errFqid = p_FmPortParams->specificParams.nonRxParams.errFqid; + p_FmPort->p_FmPortDriverParam->deqSubPortal = + (uint8_t)(p_FmPortParams->specificParams.nonRxParams.qmChannel & QMI_DEQ_CFG_SUBPORTAL_MASK); + p_FmPort->p_FmPortDriverParam->dfltFqid = p_FmPortParams->specificParams.nonRxParams.dfltFqid; + break; + default: + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + return NULL; + } + } + + memset(p_FmPort->name, 0, (sizeof(char)) * MODULE_NAME_SIZE); + if(Sprint (p_FmPort->name, "FM-%d-port-%s-%d", + FmGetId(p_FmPort->h_Fm), + ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) ? + "OH" : (p_FmPort->portType == e_FM_PORT_TYPE_RX ? + "1g-RX" : (p_FmPort->portType == e_FM_PORT_TYPE_TX ? + "1g-TX" : (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G ? + "10g-RX" : "10g-TX")))), + p_FmPort->portId) == 0) + { + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + return NULL; + } + + p_FmPort->h_Spinlock = XX_InitSpinlock(); + if (!p_FmPort->h_Spinlock) + { + XX_Free(p_FmPort->p_FmPortDriverParam); + XX_Free(p_FmPort); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Sprint failed")); + return NULL; + } + + return p_FmPort; +} + +/**************************************************************************//** + @Function FM_PORT_Init + + @Description Initializes the FM module + + @Param[in] h_FmPort - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Init(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPortDriverParam *p_Params; + t_Error err = E_OK; + t_FmInterModulePortInitParams fmParams; + uint32_t minFifoSizeRequired = 0; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if ((err = BuildBufferStructure(p_FmPort)) != E_OK) + RETURN_ERROR(MINOR, err, NO_MSG); + + CHECK_INIT_PARAMETERS(p_FmPort, CheckInitParameters); + + p_Params = p_FmPort->p_FmPortDriverParam; + + /* set memory map pointers */ + p_FmPort->p_FmPortQmiRegs = (t_FmPortQmiRegs *)UINT_TO_PTR(p_Params->baseAddr + QMI_PORT_REGS_OFFSET); + p_FmPort->p_FmPortBmiRegs = (u_FmPortBmiRegs *)UINT_TO_PTR(p_Params->baseAddr + BMI_PORT_REGS_OFFSET); + p_FmPort->p_FmPortPrsRegs = (t_FmPortPrsRegs *)UINT_TO_PTR(p_Params->baseAddr + PRS_PORT_REGS_OFFSET); + + /* For O/H ports, check fifo size and update if necessary */ + if ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + { + minFifoSizeRequired = (uint32_t)((p_FmPort->txFifoDeqPipelineDepth+4)*BMI_FIFO_UNITS); + if (p_FmPort->fifoBufs.num < minFifoSizeRequired) + { + p_FmPort->fifoBufs.num = minFifoSizeRequired; + DBG(WARNING, ("FIFO size enlarged to %d due to txFifoDeqPipelineDepth size", minFifoSizeRequired)); + } + } + + /* For Rx Ports, call the external Buffer routine which also checks fifo + size and updates it if necessary */ + if(((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + && !p_FmPort->imEn) + { + /* define external buffer pools and pool depletion*/ + err = SetExtBufferPools(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + /************************************************************/ + /* Call FM module routine for communicating parameters */ + /************************************************************/ + memset(&fmParams, 0, sizeof(fmParams)); + fmParams.hardwarePortId = p_FmPort->hardwarePortId; + fmParams.portType = (e_FmPortType)p_FmPort->portType; + fmParams.numOfTasks = (uint8_t)p_FmPort->tasks.num; + fmParams.numOfExtraTasks = (uint8_t)p_FmPort->tasks.extra; + fmParams.numOfOpenDmas = (uint8_t)p_FmPort->openDmas.num; + fmParams.numOfExtraOpenDmas = (uint8_t)p_FmPort->openDmas.extra; + fmParams.sizeOfFifo = p_FmPort->fifoBufs.num; + fmParams.extraSizeOfFifo = p_FmPort->fifoBufs.extra; + fmParams.independentMode = p_FmPort->imEn; + fmParams.liodnOffset = p_Params->liodnOffset; + fmParams.liodnBase = p_Params->liodnBase; + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + fmParams.deqPipelineDepth = p_FmPort->txFifoDeqPipelineDepth; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + } + + err = FmGetSetPortParams(p_FmPort->h_Fm, &fmParams); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + p_FmPort->tasks.num = fmParams.numOfTasks; + p_FmPort->tasks.extra = fmParams.numOfExtraTasks; + p_FmPort->openDmas.num = fmParams.numOfOpenDmas; + p_FmPort->openDmas.extra = fmParams.numOfExtraOpenDmas; + p_FmPort->fifoBufs.num = fmParams.sizeOfFifo; + p_FmPort->fifoBufs.extra = fmParams.extraSizeOfFifo; + + /* get params for use in init */ + p_Params->fmMuramPhysBaseAddr = + (uint64_t)((uint64_t)(fmParams.fmMuramPhysBaseAddr.low) | + ((uint64_t)(fmParams.fmMuramPhysBaseAddr.high) << 32)); + + /**********************/ + /* Init BMI Registers */ + /**********************/ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + err = BmiRxPortInit(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + err = BmiTxPortInit(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + err = BmiOhPortInit(p_FmPort); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + } + + /**********************/ + /* Init QMI Registers */ + /**********************/ + if (!p_FmPort->imEn && ((err = QmiInit(p_FmPort)) != E_OK)) + RETURN_ERROR(MAJOR, err, NO_MSG); + + if (p_FmPort->imEn && ((err = FmPortImInit(p_FmPort)) != E_OK)) + RETURN_ERROR(MAJOR, err, NO_MSG); + + FmPortDriverParamFree(p_FmPort); + + return E_OK; +} + +/**************************************************************************//** + @Function FM_PORT_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPort - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Free(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmInterModulePortFreeParams fmParams; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + if(p_FmPort->pcdEngines) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Trying to free a port with PCD. FM_PORT_DeletePCD must be called first.")); + + if (p_FmPort->enabled) + { + if (FM_PORT_Disable(p_FmPort) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM_PORT_Disable FAILED")); + } + + if (p_FmPort->h_Spinlock) + XX_FreeSpinlock(p_FmPort->h_Spinlock); + + FmPortDriverParamFree(p_FmPort); + + if (p_FmPort->imEn) + FmPortImFree(p_FmPort); + + fmParams.hardwarePortId = p_FmPort->hardwarePortId; + fmParams.portType = (e_FmPortType)p_FmPort->portType; +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + fmParams.deqPipelineDepth = p_FmPort->txFifoDeqPipelineDepth; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + + FmFreePortParams(p_FmPort->h_Fm, &fmParams); + + XX_Free(p_FmPort); + + return E_OK; +} + + +/*************************************************/ +/* API Advanced Init unit functions */ +/*************************************************/ + +t_Error FM_PORT_ConfigDeqHighPriority(t_Handle h_FmPort, bool highPri) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("not available for Rx ports")); + + p_FmPort->p_FmPortDriverParam->deqHighPriority = highPri; + + return E_OK; +} + +t_Error FM_PORT_ConfigDeqType(t_Handle h_FmPort, e_FmPortDeqType deqType) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Rx ports")); + + p_FmPort->p_FmPortDriverParam->deqType = deqType; + + return E_OK; +} + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +t_Error FM_PORT_ConfigDeqPrefetchOption(t_Handle h_FmPort, e_FmPortDeqPrefetchOption deqPrefetchOption) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Rx ports")); + p_FmPort->p_FmPortDriverParam->deqPrefetchOption = deqPrefetchOption; + return E_OK; +} +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +t_Error FM_PORT_ConfigBackupPools(t_Handle h_FmPort, t_FmPortBackupBmPools *p_BackupBmPools) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; +#ifdef FM_NO_BACKUP_POOLS + t_FmRevisionInfo revInfo; +#endif /* FM_NO_BACKUP_POOLS */ + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + +#ifdef FM_NO_BACKUP_POOLS + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_PORT_ConfigBackupPools")); +#endif /* FM_NO_BACKUP_POOLS */ + + p_FmPort->p_FmPortDriverParam->p_BackupBmPools = (t_FmPortBackupBmPools *)XX_Malloc(sizeof(t_FmPortBackupBmPools)); + if(!p_FmPort->p_FmPortDriverParam->p_BackupBmPools) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("p_BackupBmPools allocation failed")); + memcpy(p_FmPort->p_FmPortDriverParam->p_BackupBmPools, p_BackupBmPools, sizeof(t_FmPortBackupBmPools)); + + return E_OK; +} + +t_Error FM_PORT_ConfigDeqByteCnt(t_Handle h_FmPort, uint16_t deqByteCnt) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Rx ports")); + + p_FmPort->p_FmPortDriverParam->deqByteCnt = deqByteCnt; + + return E_OK; +} + +t_Error FM_PORT_ConfigBufferPrefixContent(t_Handle h_FmPort, t_FmPortBufferPrefixContent *p_FmPortBufferPrefixContent) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + memcpy(&p_FmPort->p_FmPortDriverParam->bufferPrefixContent, p_FmPortBufferPrefixContent, sizeof(t_FmPortBufferPrefixContent)); + /* if dataAlign was not initialized by user, we return to driver's deafult */ + if (!p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign) + p_FmPort->p_FmPortDriverParam->bufferPrefixContent.dataAlign = DEFAULT_PORT_bufferPrefixContent_dataAlign; + + return E_OK; +} + +t_Error FM_PORT_ConfigCheksumLastBytesIgnore(t_Handle h_FmPort, uint8_t cheksumLastBytesIgnore) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx & Tx ports only")); + + p_FmPort->p_FmPortDriverParam->cheksumLastBytesIgnore = cheksumLastBytesIgnore; + + return E_OK; +} + +t_Error FM_PORT_ConfigCutBytesFromEnd(t_Handle h_FmPort, uint8_t cutBytesFromEnd) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->cutBytesFromEnd = cutBytesFromEnd; + + return E_OK; +} + +t_Error FM_PORT_ConfigPoolDepletion(t_Handle h_FmPort, t_FmPortBufPoolDepletion *p_BufPoolDepletion) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->enBufPoolDepletion = TRUE; + memcpy(&p_FmPort->p_FmPortDriverParam->bufPoolDepletion, p_BufPoolDepletion, sizeof(t_FmPortBufPoolDepletion)); + + return E_OK; +} + +t_Error FM_PORT_ConfigObservedPoolDepletion(t_Handle h_FmPort, t_FmPortObservedBufPoolDepletion *p_FmPortObservedBufPoolDepletion) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if(p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for OP ports only")); + + p_FmPort->p_FmPortDriverParam->enBufPoolDepletion = TRUE; + memcpy(&p_FmPort->p_FmPortDriverParam->bufPoolDepletion, &p_FmPortObservedBufPoolDepletion->poolDepletionParams, sizeof(t_FmPortBufPoolDepletion)); + memcpy(&p_FmPort->p_FmPortDriverParam->extBufPools, &p_FmPortObservedBufPoolDepletion->poolsParams, sizeof(t_FmPortExtPools)); + + return E_OK; +} + +t_Error FM_PORT_ConfigExtBufPools(t_Handle h_FmPort, t_FmPortExtPools *p_FmPortExtPools) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if(p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for OP ports only")); + + memcpy(&p_FmPort->p_FmPortDriverParam->extBufPools, p_FmPortExtPools, sizeof(t_FmPortExtPools)); + + return E_OK; +} + +t_Error FM_PORT_ConfigRxFifoThreshold(t_Handle h_FmPort, uint32_t fifoThreshold) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->rxFifoThreshold = fifoThreshold; + + return E_OK; +} + +t_Error FM_PORT_ConfigRxFifoPriElevationLevel(t_Handle h_FmPort, uint32_t priElevationLevel) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->rxFifoPriElevationLevel = priElevationLevel; + + return E_OK; +} + +t_Error FM_PORT_ConfigTxFifoMinFillLevel(t_Handle h_FmPort, uint32_t minFillLevel) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + + p_FmPort->p_FmPortDriverParam->txFifoMinFillLevel = minFillLevel; + + return E_OK; +} + +t_Error FM_PORT_ConfigTxFifoDeqPipelineDepth(t_Handle h_FmPort, uint8_t deqPipelineDepth) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if ((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Not available for IM ports!")); + + p_FmPort->txFifoDeqPipelineDepth = deqPipelineDepth; + + return E_OK; +} + +t_Error FM_PORT_ConfigTxFifoLowComfLevel(t_Handle h_FmPort, uint32_t fifoLowComfLevel) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + + p_FmPort->p_FmPortDriverParam->txFifoLowComfLevel = fifoLowComfLevel; + + return E_OK; +} + +t_Error FM_PORT_ConfigDontReleaseTxBufToBM(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx ports only")); + + p_FmPort->p_FmPortDriverParam->dontReleaseBuf = TRUE; + + return E_OK; +} + +t_Error FM_PORT_ConfigDfltColor(t_Handle h_FmPort, e_FmPortColor color) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); +#ifdef FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_PORT_ConfigDfltColor!")); + } +#endif /* FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 */ + p_FmPort->p_FmPortDriverParam->color = color; + + return E_OK; +} + +t_Error FM_PORT_ConfigSyncReq(t_Handle h_FmPort, bool syncReq) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); +#ifdef FM_PORT_SYNC_ERRATA_FMAN6 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("port-sync!")); + } +#endif /* FM_PORT_SYNC_ERRATA_FMAN6 */ + + p_FmPort->p_FmPortDriverParam->syncReq = syncReq; + + return E_OK; +} + + +t_Error FM_PORT_ConfigFrmDiscardOverride(t_Handle h_FmPort, bool override) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) && (p_FmPort->portType == e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("not available for Tx ports")); + + p_FmPort->p_FmPortDriverParam->frmDiscardOverride = override; + + return E_OK; +} + +t_Error FM_PORT_ConfigErrorsToDiscard(t_Handle h_FmPort, fmPortFrameErrSelect_t errs) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + + p_FmPort->p_FmPortDriverParam->errorsToDiscard = errs; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaSwapData(t_Handle h_FmPort, e_FmPortDmaSwap swapData) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaSwapData = swapData; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaIcCacheAttr(t_Handle h_FmPort, e_FmPortDmaCache intContextCacheAttr) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaIntContextCacheAttr = intContextCacheAttr; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaHdrAttr(t_Handle h_FmPort, e_FmPortDmaCache headerCacheAttr) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaHeaderCacheAttr = headerCacheAttr; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaScatterGatherAttr(t_Handle h_FmPort, e_FmPortDmaCache scatterGatherCacheAttr) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->p_FmPortDriverParam->dmaScatterGatherCacheAttr = scatterGatherCacheAttr; + + return E_OK; +} + +t_Error FM_PORT_ConfigDmaWriteOptimize(t_Handle h_FmPort, bool optimize) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType == e_FM_PORT_TYPE_TX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_TX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Not available for Tx ports")); + + p_FmPort->p_FmPortDriverParam->dmaWriteOptimize = optimize; + + return E_OK; +} + +t_Error FM_PORT_ConfigForwardReuseIntContext(t_Handle h_FmPort, bool forwardReuse) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + p_FmPort->p_FmPortDriverParam->forwardReuseIntContext = forwardReuse; + + return E_OK; +} + + +/****************************************************/ +/* PCD Advaced config API */ +/****************************************************/ + +/****************************************************/ +/* API Run-time Control unit functions */ +/****************************************************/ + +t_Error FM_PORT_SetNumOfOpenDmas(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfOpenDmas) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_NumOfOpenDmas->extra)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("excessive resources")); + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + + if((!p_NumOfOpenDmas->num) || (p_NumOfOpenDmas->num > MAX_NUM_OF_DMAS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas-num can't be larger than %d", MAX_NUM_OF_DMAS)); + if(p_NumOfOpenDmas->extra > MAX_NUM_OF_EXTRA_DMAS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("openDmas-extra can't be larger than %d", MAX_NUM_OF_EXTRA_DMAS)); + err = FmSetNumOfOpenDmas(p_FmPort->h_Fm, p_FmPort->hardwarePortId, (uint8_t)p_NumOfOpenDmas->num, (uint8_t)p_NumOfOpenDmas->extra, FALSE); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + memcpy(&p_FmPort->openDmas, p_NumOfOpenDmas, sizeof(t_FmPortRsrc)); + + return E_OK; +} + +t_Error FM_PORT_SetNumOfTasks(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfTasks) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("not available for host command port where number is always 1")); + +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_NumOfTasks->extra)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("excessive resources")); + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + + if((!p_NumOfTasks->num) || (p_NumOfTasks->num > MAX_NUM_OF_TASKS)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("NumOfTasks-num can't be larger than %d", MAX_NUM_OF_TASKS)); + if(p_NumOfTasks->extra > MAX_NUM_OF_EXTRA_TASKS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("NumOfTasks-extra can't be larger than %d", MAX_NUM_OF_EXTRA_TASKS)); + + err = FmSetNumOfTasks(p_FmPort->h_Fm, p_FmPort->hardwarePortId, (uint8_t)p_NumOfTasks->num, (uint8_t)p_NumOfTasks->extra, FALSE); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + /* update driver's struct */ + memcpy(&p_FmPort->tasks, p_NumOfTasks, sizeof(t_FmPortRsrc)); + return E_OK; +} + +t_Error FM_PORT_SetSizeOfFifo(t_Handle h_FmPort, t_FmPortRsrc *p_SizeOfFifo) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + t_FmInterModulePortRxPoolsParams rxPoolsParams; + uint32_t minFifoSizeRequired; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + +#ifdef FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0) && + (p_SizeOfFifo->extra)) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("excessive resources")); + } +#endif /* FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 */ + if(!p_SizeOfFifo->num || (p_SizeOfFifo->num > BMI_MAX_FIFO_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SizeOfFifo-num has to be in the range of 256 - %d", BMI_MAX_FIFO_SIZE)); + if(p_SizeOfFifo->num % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SizeOfFifo-num has to be divisible by %d", BMI_FIFO_UNITS)); + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + /* extra FIFO size (allowed only to Rx ports) */ + if(p_SizeOfFifo->extra % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("SizeOfFifo-extra has to be divisible by %d", BMI_FIFO_UNITS)); + } + else + if(p_SizeOfFifo->extra) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, (" No SizeOfFifo-extra for non Rx ports")); + + /* For O/H ports, check fifo size and update if necessary */ + if((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + { + minFifoSizeRequired = (uint32_t)((p_FmPort->txFifoDeqPipelineDepth+4)*BMI_FIFO_UNITS); + if (p_FmPort->fifoBufs.num < minFifoSizeRequired) + { + p_FmPort->fifoBufs.num = minFifoSizeRequired; + DBG(INFO, ("FIFO size enlarged to %d", minFifoSizeRequired)); + } + } + memcpy(&rxPoolsParams, &p_FmPort->rxPoolsParams, sizeof(rxPoolsParams)); + err = FmSetSizeOfFifo(p_FmPort->h_Fm, + p_FmPort->hardwarePortId, + p_FmPort->portType, + p_FmPort->imEn, + &p_SizeOfFifo->num, + p_SizeOfFifo->extra, + p_FmPort->txFifoDeqPipelineDepth, + &rxPoolsParams, + FALSE); + if(err) + RETURN_ERROR(MINOR, err, NO_MSG); + + /* update driver's structure AFTER the FM routine, as it may change by the FM. */ + memcpy(&p_FmPort->fifoBufs, p_SizeOfFifo, sizeof(t_FmPortRsrc)); + + return E_OK; +} + +uint32_t FM_PORT_GetBufferDataOffset(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + return p_FmPort->bufferOffsets.dataOffset; +} + +uint8_t * FM_PORT_GetBufferICInfo(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + if(p_FmPort->bufferOffsets.pcdInfoOffset == ILLEGAL_BASE) + return NULL; + + return (uint8_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.pcdInfoOffset); +} + +#ifdef DEBUG +uint8_t * FM_PORT_GetBufferDebugInfo(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + if(p_FmPort->bufferOffsets.debugOffset == ILLEGAL_BASE) + return NULL; + + return (uint8_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.debugOffset); +} +#endif /* DEBUG */ + +t_FmPrsResult * FM_PORT_GetBufferPrsResult(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, NULL); + + if(p_FmPort->bufferOffsets.prsResultOffset == ILLEGAL_BASE) + return NULL; + + return (t_FmPrsResult *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.prsResultOffset); +} + +uint64_t * FM_PORT_GetBufferTimeStamp(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, NULL); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, NULL); + + if(p_FmPort->bufferOffsets.timeStampOffset == ILLEGAL_BASE) + return NULL; + + return (uint64_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.timeStampOffset); +} + +uint8_t * FM_PORT_GetBufferHashResult(t_Handle h_FmPort, char *p_Data) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, 0); + + if(p_FmPort->bufferOffsets.hashResultOffset == ILLEGAL_BASE) + return NULL; + + return (uint8_t *)PTR_MOVE(p_Data, p_FmPort->bufferOffsets.hashResultOffset); +} + +t_Error FM_PORT_Disable(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + volatile uint32_t *p_BmiStatusReg = NULL; + bool rxPort = FALSE; + int tries; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg; + p_BmiStatusReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rst; + rxPort = TRUE; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfg; + p_BmiStatusReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tst; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocfg; + p_BmiStatusReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ost; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + /* check if port is already disabled */ + if(!(GET_UINT32(*p_BmiCfgReg) & BMI_PORT_CFG_EN)) + { + if (!rxPort && !p_FmPort->imEn) + { + if(!(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc)& QMI_PORT_CFG_EN)) + /* port is disabled */ + return E_OK; + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Inconsistency: Port's QMI is enabled but BMI disabled")); + } + /* port is disabled */ + return E_OK; + } + + /* Disable QMI */ + if (!rxPort && !p_FmPort->imEn) + { + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, + GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & ~QMI_PORT_CFG_EN); + /* wait for QMI to finish Handling dequeue tnums */ + tries=1000; + while ((GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pns) & QMI_PORT_STATUS_DEQ_FD_BSY) && + --tries) + XX_UDelay(1); + if (!tries) + RETURN_ERROR(MINOR, E_BUSY, ("%s: can't disable!", p_FmPort->name)); + } + + /* Disable BMI */ + WRITE_UINT32(*p_BmiCfgReg, GET_UINT32(*p_BmiCfgReg) & ~BMI_PORT_CFG_EN); + + if (p_FmPort->imEn) + FmPortImDisable(p_FmPort); + + tries=5000; + while ((GET_UINT32(*p_BmiStatusReg) & BMI_PORT_STATUS_BSY) && + --tries) + XX_UDelay(1); + + if (!tries) + RETURN_ERROR(MINOR, E_BUSY, ("%s: can't disable!", p_FmPort->name)); + + p_FmPort->enabled = 0; + + return E_OK; +} + +t_Error FM_PORT_Enable(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiCfgReg = NULL; + bool rxPort = FALSE; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcfg; + rxPort = TRUE; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfg; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiCfgReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocfg; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + /* check if port is already enabled */ + if(GET_UINT32(*p_BmiCfgReg) & BMI_PORT_CFG_EN) + { + if (!rxPort && !p_FmPort->imEn) + { + if(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc)& QMI_PORT_CFG_EN) + /* port is enabled */ + return E_OK; + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Inconsistency: Port's BMI is enabled but QMI disabled")); + } + /* port is enabled */ + return E_OK; + } + + if (p_FmPort->imEn) + FmPortImEnable(p_FmPort); + + /* Enable QMI */ + if (!rxPort && !p_FmPort->imEn) + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, + GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) | QMI_PORT_CFG_EN); + + /* Enable BMI */ + WRITE_UINT32(*p_BmiCfgReg, GET_UINT32(*p_BmiCfgReg) | BMI_PORT_CFG_EN); + + p_FmPort->enabled = 1; + + return E_OK; +} + +t_Error FM_PORT_SetRateLimit(t_Handle h_FmPort, t_FmPortRateLimit *p_RateLimit) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpRateLimit, tmpRateLimitScale; + volatile uint32_t *p_RateLimitReg, *p_RateLimitScaleReg; + uint8_t factor, countUnitBit; + uint16_t baseGran; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx and Offline parsing ports only")); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmts; + baseGran = 16000; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmts; + baseGran = 10000; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + countUnitBit = (uint8_t)FmGetTimeStampScale(p_FmPort->h_Fm); /* TimeStamp per nano seconds units */ + /* normally, we use 1 usec as the reference count */ + factor = 1; + /* if ratelimit is too small for a 1usec factor, multiply the factor */ + while (p_RateLimit->rateLimit < baseGran/factor) + { + if (countUnitBit==31) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Rate limit is too small")); + + countUnitBit++; + factor <<= 1; + } + /* if ratelimit is too large for a 1usec factor, it is also larger than max rate*/ + if (p_RateLimit->rateLimit > ((uint32_t)baseGran * (1<<10) * (uint32_t)factor)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Rate limit is too large")); + + tmpRateLimit = (uint32_t)(p_RateLimit->rateLimit*factor/baseGran - 1); + + if(!p_RateLimit->maxBurstSize || (p_RateLimit->maxBurstSize > MAX_BURST_SIZE)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("maxBurstSize must be between 1K and %dk", MAX_BURST_SIZE)); + + tmpRateLimitScale = ((31 - (uint32_t)countUnitBit) << BMI_COUNT_RATE_UNIT_SHIFT) | BMI_RATE_LIMIT_EN; + + if(p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + tmpRateLimit |= (uint32_t)(p_RateLimit->maxBurstSize - 1) << BMI_MAX_BURST_SHIFT; + else + { +#ifndef FM_NO_ADVANCED_RATE_LIMITER + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev == 4) + { + switch(p_RateLimit->rateLimitDivider) + { + case(e_FM_PORT_DUAL_RATE_LIMITER_NONE): + break; + case(e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_2): + tmpRateLimitScale |= BMI_RATE_LIMIT_SCALE_BY_2; + break; + case(e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_4): + tmpRateLimitScale |= BMI_RATE_LIMIT_SCALE_BY_4; + break; + case(e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8): + tmpRateLimitScale |= BMI_RATE_LIMIT_SCALE_BY_8; + break; + default: + break; + } + tmpRateLimit |= BMI_RATE_LIMIT_BURST_SIZE_GRAN; + } + else +#endif /* ! FM_NO_ADVANCED_RATE_LIMITER */ + { + if(p_RateLimit->rateLimitDivider != e_FM_PORT_DUAL_RATE_LIMITER_NONE) + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("FM_PORT_ConfigDualRateLimitScaleDown")); + + if(p_RateLimit->maxBurstSize % 1000) + { + p_RateLimit->maxBurstSize = (uint16_t)((p_RateLimit->maxBurstSize/1000)+1); + DBG(WARNING, ("rateLimit.maxBurstSize rounded up to %d", (p_RateLimit->maxBurstSize/1000+1)*1000)); + } + else + p_RateLimit->maxBurstSize = (uint16_t)(p_RateLimit->maxBurstSize/1000); + } + tmpRateLimit |= (uint32_t)(p_RateLimit->maxBurstSize - 1) << BMI_MAX_BURST_SHIFT; + + } + WRITE_UINT32(*p_RateLimitScaleReg, tmpRateLimitScale); + WRITE_UINT32(*p_RateLimitReg, tmpRateLimit); + + return E_OK; +} + +t_Error FM_PORT_DeleteRateLimit(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_RateLimitReg, *p_RateLimitScaleReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType == e_FM_PORT_TYPE_RX_10G) || (p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Tx and Offline parsing ports only")); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_trlmts; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_RateLimitReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmt; + p_RateLimitScaleReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_orlmts; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + WRITE_UINT32(*p_RateLimitScaleReg, 0); + WRITE_UINT32(*p_RateLimitReg, 0); + + return E_OK; +} + + +t_Error FM_PORT_SetFrameQueueCounters(t_Handle h_FmPort, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + tmpReg = GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc); + if(enable) + tmpReg |= QMI_PORT_CFG_EN_COUNTERS ; + else + tmpReg &= ~QMI_PORT_CFG_EN_COUNTERS; + + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc, tmpReg); + + return E_OK; +} + +t_Error FM_PORT_SetPerformanceCounters(t_Handle h_FmPort, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiPcReg = NULL; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPcReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpc; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiPcReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tpc; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiPcReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opc; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if(enable) + WRITE_UINT32(*p_BmiPcReg, BMI_COUNTERS_EN); + else + WRITE_UINT32(*p_BmiPcReg, 0); + + return E_OK; +} + +t_Error FM_PORT_SetPerformanceCountersParams(t_Handle h_FmPort, t_FmPortPerformanceCnt *p_FmPortPerformanceCnt) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + volatile uint32_t *p_BmiPcpReg = NULL; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPcpReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpcp; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiPcpReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tpcp; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiPcpReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opcp; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + /* check parameters */ + if (!p_FmPortPerformanceCnt->taskCompVal || + (p_FmPortPerformanceCnt->taskCompVal > p_FmPort->tasks.num)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.taskCompVal has to be in the range of 1 - %d (current value)!", + p_FmPort->tasks.num)); + if (!p_FmPortPerformanceCnt->dmaCompVal || + (p_FmPortPerformanceCnt->dmaCompVal > p_FmPort->openDmas.num)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.dmaCompVal has to be in the range of 1 - %d (current value)!", + p_FmPort->openDmas.num)); + if (!p_FmPortPerformanceCnt->fifoCompVal || + (p_FmPortPerformanceCnt->fifoCompVal > p_FmPort->fifoBufs.num)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.fifoCompVal has to be in the range of 256 - %d (current value)!", + p_FmPort->fifoBufs.num)); + if (p_FmPortPerformanceCnt->fifoCompVal % BMI_FIFO_UNITS) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.fifoCompVal has to be divisible by %d", + BMI_FIFO_UNITS)); + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + if (!p_FmPortPerformanceCnt->queueCompVal || + (p_FmPortPerformanceCnt->queueCompVal > MAX_PERFORMANCE_RX_QUEUE_COMP)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.queueCompVal for Rx has to be in the range of 1 - %d", + MAX_PERFORMANCE_RX_QUEUE_COMP)); + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + if (!p_FmPortPerformanceCnt->queueCompVal || + (p_FmPortPerformanceCnt->queueCompVal > MAX_PERFORMANCE_TX_QUEUE_COMP)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("performanceCnt.queueCompVal for Tx has to be in the range of 1 - %d", + MAX_PERFORMANCE_TX_QUEUE_COMP)); + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + if (p_FmPortPerformanceCnt->queueCompVal) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("performanceCnt.queueCompVal is not relevant for H/O ports.")); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + tmpReg = 0; + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->queueCompVal - 1) << BMI_PERFORMANCE_PORT_COMP_SHIFT); + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->dmaCompVal- 1) << BMI_PERFORMANCE_DMA_COMP_SHIFT); + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->fifoCompVal/BMI_FIFO_UNITS - 1) << BMI_PERFORMANCE_FIFO_COMP_SHIFT); + if ((p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING) && (p_FmPort->portType != e_FM_PORT_TYPE_OH_HOST_COMMAND)) + tmpReg |= ((uint32_t)(p_FmPortPerformanceCnt->taskCompVal - 1) << BMI_PERFORMANCE_TASK_COMP_SHIFT); + + WRITE_UINT32(*p_BmiPcpReg, tmpReg); + + return E_OK; +} + +t_Error FM_PORT_AnalyzePerformanceParams(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPortPerformanceCnt currParams, savedParams; + t_Error err; + bool underTest, failed = FALSE; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + XX_Print("Analyzing Performance parameters for port (type %d, id%d)\n", + p_FmPort->portType, p_FmPort->portId); + + currParams.taskCompVal = (uint8_t)p_FmPort->tasks.num; + if ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) || + (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)) + currParams.queueCompVal = 0; + else + currParams.queueCompVal = 1; + currParams.dmaCompVal =(uint8_t) p_FmPort->openDmas.num; + currParams.fifoCompVal = p_FmPort->fifoBufs.num; + + FM_PORT_SetPerformanceCounters(p_FmPort, FALSE); + ClearPerfCnts(p_FmPort); + if ((err = FM_PORT_SetPerformanceCountersParams(p_FmPort, &currParams)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + FM_PORT_SetPerformanceCounters(p_FmPort, TRUE); + XX_UDelay(1000000); + FM_PORT_SetPerformanceCounters(p_FmPort, FALSE); + if (FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_TASK_UTIL)) + { + XX_Print ("Max num of defined port tasks (%d) utilized - Please enlarge\n",p_FmPort->tasks.num); + failed = TRUE; + } + if (FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_DMA_UTIL)) + { + XX_Print ("Max num of defined port openDmas (%d) utilized - Please enlarge\n",p_FmPort->openDmas.num); + failed = TRUE; + } + if (FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_FIFO_UTIL)) + { + XX_Print ("Max size of defined port fifo (%d) utilized - Please enlarge\n",p_FmPort->fifoBufs.num*BMI_FIFO_UNITS); + failed = TRUE; + } + if (failed) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + + memset(&savedParams, 0, sizeof(savedParams)); + while (TRUE) + { + underTest = FALSE; + if ((currParams.taskCompVal != 1) && !savedParams.taskCompVal) + { + currParams.taskCompVal--; + underTest = TRUE; + } + if ((currParams.dmaCompVal != 1) && !savedParams.dmaCompVal) + { + currParams.dmaCompVal--; + underTest = TRUE; + } + if ((currParams.fifoCompVal != BMI_FIFO_UNITS) && !savedParams.fifoCompVal) + { + currParams.fifoCompVal -= BMI_FIFO_UNITS; + underTest = TRUE; + } + if (!underTest) + break; + + ClearPerfCnts(p_FmPort); + if ((err = FM_PORT_SetPerformanceCountersParams(p_FmPort, &currParams)) != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + FM_PORT_SetPerformanceCounters(p_FmPort, TRUE); + XX_UDelay(1000000); + FM_PORT_SetPerformanceCounters(p_FmPort, FALSE); + + if (!savedParams.taskCompVal && FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_TASK_UTIL)) + savedParams.taskCompVal = (uint8_t)(currParams.taskCompVal+2); + if (!savedParams.dmaCompVal && FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_DMA_UTIL)) + savedParams.dmaCompVal = (uint8_t)(currParams.dmaCompVal+2); + if (!savedParams.fifoCompVal && FM_PORT_GetCounter(p_FmPort, e_FM_PORT_COUNTERS_FIFO_UTIL)) + savedParams.fifoCompVal = currParams.fifoCompVal+2; + } + + XX_Print("best vals: tasks %d, dmas %d, fifos %d\n", + savedParams.taskCompVal, savedParams.dmaCompVal, savedParams.fifoCompVal); + return E_OK; +} + +t_Error FM_PORT_SetStatisticsCounters(t_Handle h_FmPort, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + volatile uint32_t *p_BmiStcReg = NULL; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiStcReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rstc; + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + p_BmiStcReg = &p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tstc; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + p_BmiStcReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ostc; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + tmpReg = GET_UINT32(*p_BmiStcReg); + + if(enable) + tmpReg |= BMI_COUNTERS_EN; + else + tmpReg &= ~BMI_COUNTERS_EN; + + WRITE_UINT32(*p_BmiStcReg, tmpReg); + + return E_OK; +} + +t_Error FM_PORT_SetErrorsRoute(t_Handle h_FmPort, fmPortFrameErrSelect_t errs) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_ErrQReg, *p_ErrDiscard; + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_ErrQReg = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfsem; + p_ErrDiscard = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfsdm; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_ErrQReg = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofsem; + p_ErrDiscard = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofsdm; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if (GET_UINT32(*p_ErrDiscard) & errs) + RETURN_ERROR(MAJOR, E_INVALID_SELECTION, ("Selectd Errors that were configured to cause frame discard.")); + + WRITE_UINT32(*p_ErrQReg, errs); + + return E_OK; +} + +t_Error FM_PORT_SetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + int i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(poolIdp_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + for(i=0 ; i< FM_PORT_MAX_NUM_OF_EXT_POOLS ; i++) + { + tmpReg = GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i]); + if ((uint8_t)((tmpReg & BMI_EXT_BUF_POOL_ID_MASK) >> BMI_EXT_BUF_POOL_ID_SHIFT) == poolId) + { + if(enable) + tmpReg |= BMI_EXT_BUF_POOL_EN_COUNTER; + else + tmpReg &= ~BMI_EXT_BUF_POOL_EN_COUNTER; + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i], tmpReg); + break; + } + } + if (i == FM_PORT_MAX_NUM_OF_EXT_POOLS) + RETURN_ERROR(MINOR, E_INVALID_VALUE,("poolId %d is not included in this ports pools", poolId)); + + return E_OK; +} + +uint32_t FM_PORT_GetCounter(t_Handle h_FmPort, e_FmPortCounters counter) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool bmiCounter = FALSE; + volatile uint32_t *p_Reg; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(counter) + { + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM ): + /* check that counter is available for the port type */ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + return 0; + } + bmiCounter = FALSE; + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + bmiCounter = FALSE; + break; + default: /* BMI counters (or error - will be checked in BMI routine )*/ + bmiCounter = TRUE; + break; + } + + if(bmiCounter) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + if(BmiRxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + if(BmiTxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + if(BmiOhPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + break; + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Unsupported port type")); + return 0; + } + return GET_UINT32(*p_Reg); + } + else /* QMI counter */ + { + + /* check that counters are enabled */ + if(!(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & QMI_PORT_CFG_EN_COUNTERS)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + return 0; + } + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnetfc); + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndtfc); + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndfdc); + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM): + return GET_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndcc); + default: + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available")); + return 0; + } + } + + return 0; +} + +t_Error FM_PORT_ModifyCounter(t_Handle h_FmPort, e_FmPortCounters counter, uint32_t value) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool bmiCounter = FALSE; + volatile uint32_t *p_Reg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + switch(counter) + { + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM ): + /* check that counter is available for the port type */ + if((p_FmPort->portType == e_FM_PORT_TYPE_RX) || (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for Rx ports")); + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + bmiCounter = FALSE; + break; + default: /* BMI counters (or error - will be checked in BMI routine )*/ + bmiCounter = TRUE; + break; + } + + if(bmiCounter) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + if(BmiRxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + break; + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + if(BmiTxPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + if(BmiOhPortCheckAndGetCounterPtr(p_FmPort, counter, &p_Reg)) + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Unsupported port type")); + } + WRITE_UINT32(*p_Reg, value); + } + else /* QMI counter */ + { + + /* check that counters are enabled */ + if(!(GET_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnc) & QMI_PORT_CFG_EN_COUNTERS)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter was not enabled")); + + /* Set counter */ + switch(counter) + { + case(e_FM_PORT_COUNTERS_ENQ_TOTAL): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnetfc, value); + break; + case(e_FM_PORT_COUNTERS_DEQ_TOTAL): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndtfc, value); + break; + case(e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndfdc, value); + break; + case(e_FM_PORT_COUNTERS_DEQ_CONFIRM): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndcc, value); + break; + default: + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available")); + } + } + + return E_OK; +} + +uint32_t FM_PORT_GetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t extPoolReg; + uint8_t tmpPool; + uint8_t i; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, 0); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX) && (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for non-Rx ports")); + return 0; + } + + for(i=0;ip_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i]); + if (extPoolReg & BMI_EXT_BUF_POOL_VALID) + { + tmpPool = (uint8_t)((extPoolReg & BMI_EXT_BUF_POOL_ID_MASK) >> BMI_EXT_BUF_POOL_ID_SHIFT); + if(tmpPool == poolId) + { + if(extPoolReg & BMI_EXT_BUF_POOL_EN_COUNTER) + return GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i]); + else + { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not enabled")); + return 0; + } + } + } + } + REPORT_ERROR(MINOR, E_INVALID_STATE, ("Pool %d is not used", poolId)); + return 0; +} + +t_Error FM_PORT_ModifyAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, uint32_t value) +{ + t_FmPort *p_FmPort = (t_FmPort *)h_FmPort; + uint32_t extPoolReg; + uint8_t tmpPool; + uint8_t i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX) && (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not available for non-Rx ports")); + + + for(i=0;ip_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i]); + if (extPoolReg & BMI_EXT_BUF_POOL_VALID) + { + tmpPool = (uint8_t)((extPoolReg & BMI_EXT_BUF_POOL_ID_MASK) >> BMI_EXT_BUF_POOL_ID_SHIFT); + if(tmpPool == poolId) + { + if(extPoolReg & BMI_EXT_BUF_POOL_EN_COUNTER) + { + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i], value); + return E_OK; + } + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Requested counter is not enabled")); + } + } + } + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Pool %d is not used", poolId)); +} + +bool FM_PORT_IsStalled(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + bool isStalled; + + SANITY_CHECK_RETURN_VALUE(p_FmPort, E_INVALID_HANDLE, FALSE); + SANITY_CHECK_RETURN_VALUE(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE, FALSE); + + err = FmIsPortStalled(p_FmPort->h_Fm, p_FmPort->hardwarePortId, &isStalled); + if(err != E_OK) + { + REPORT_ERROR(MINOR, err, NO_MSG); + return TRUE; + } + return isStalled; +} + +t_Error FM_PORT_ReleaseStalled(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + return FmResumeStalledPort(p_FmPort->h_Fm, p_FmPort->hardwarePortId); +} + +t_Error FM_PORT_SetRxL4ChecksumVerify(t_Handle h_FmPort, bool l4Checksum) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint32_t tmpReg; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx ports only")); + + tmpReg = GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne); + if (l4Checksum) + tmpReg &= ~BMI_PORT_RFNE_FRWD_DCL4C; + else + tmpReg |= BMI_PORT_RFNE_FRWD_DCL4C; + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne, tmpReg); + + return E_OK; +} + + +/* API Run-time PCD Control unit functions */ + +t_Error FM_PORT_PcdPlcrAllocProfiles(t_Handle h_FmPort, uint16_t numOfProfiles) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + + p_FmPort->h_FmPcd = FmGetPcdHandle(p_FmPort->h_Fm); + ASSERT_COND(p_FmPort->h_FmPcd); + + if(numOfProfiles) + { + err = FmPcdPlcrAllocProfiles(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, numOfProfiles); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + } + FmPcdPortRegister(p_FmPort->h_FmPcd, h_FmPort, p_FmPort->hardwarePortId); + + return E_OK; +} + +t_Error FM_PORT_PcdPlcrFreeProfiles(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + + err = FmPcdPlcrFreeProfiles(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId); + if(err) + RETURN_ERROR(MAJOR, err,NO_MSG); + return E_OK; +} + +t_Error FM_PORT_PcdKgModifyInitialScheme (t_Handle h_FmPort, t_FmPcdKgSchemeSelect *p_FmPcdKgScheme) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiHpnia = NULL; + uint32_t tmpReg; + uint8_t relativeSchemeId; + uint8_t physicalSchemeId; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_KG , E_INVALID_STATE); + + tmpReg = (uint32_t)((p_FmPort->pcdEngines & FM_PCD_CC)? NIA_KG_CC_EN:0); + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofpne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + /* if we want to change to direct scheme, we need to check that this scheme is valid */ + if(p_FmPcdKgScheme->direct) + { + physicalSchemeId = (uint8_t)(PTR_TO_UINT(p_FmPcdKgScheme->h_DirectScheme)-1); + /* check that this scheme is bound to this port */ + if(!(p_FmPort->schemesPerPortVector & (uint32_t)(1 << (31 - (uint32_t)physicalSchemeId)))) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("called with a scheme that is not bound to this port")); + } + + relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPort->h_FmPcd, physicalSchemeId); + if(relativeSchemeId >= FM_PCD_KG_NUM_OF_SCHEMES) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_NOT_IN_RANGE, ("called with invalid Scheme ")); + } + + if(!FmPcdKgIsSchemeValidSw(p_FmPort->h_FmPcd, relativeSchemeId)) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("called with uninitialized Scheme ")); + } + + WRITE_UINT32(*p_BmiHpnia, NIA_ENG_KG | tmpReg | NIA_KG_DIRECT | (uint32_t)physicalSchemeId); + } + else /* change to indirect scheme */ + WRITE_UINT32(*p_BmiHpnia, NIA_ENG_KG | tmpReg); + RELEASE_LOCK(p_FmPort->lock); + + return E_OK; +} + +t_Error FM_PORT_PcdPlcrModifyInitialProfile (t_Handle h_FmPort, t_Handle h_Profile) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiNia; + volatile uint32_t *p_BmiHpnia; + uint32_t tmpReg; + uint16_t absoluteProfileId = (uint16_t)(PTR_TO_UINT(h_Profile)-1); + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_PLCR , E_INVALID_STATE); + + /* check relevancy of this routine - only when policer is used + directly after BMI or Parser */ + if((p_FmPort->pcdEngines & FM_PCD_KG) || (p_FmPort->pcdEngines & FM_PCD_CC)) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("relevant only when PCD support mode is e_FM_PCD_SUPPORT_PLCR_ONLY or e_FM_PCD_SUPPORT_PRS_AND_PLCR")); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfpne; + tmpReg = GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + p_BmiHpnia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofpne; + tmpReg = 0; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + if(!FmPcdPlcrIsProfileValid(p_FmPort->h_FmPcd, absoluteProfileId)) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Invalid profile")); + } + + tmpReg = (uint32_t)(NIA_ENG_PLCR | NIA_PLCR_ABSOLUTE | absoluteProfileId); + + if(p_FmPort->pcdEngines & FM_PCD_PRS) /* e_FM_PCD_SUPPORT_PRS_AND_PLCR */ + { + /* update BMI HPNIA */ + WRITE_UINT32(*p_BmiHpnia, tmpReg); + } + else /* e_FM_PCD_SUPPORT_PLCR_ONLY */ + { + /* rfne may contain FDCS bits, so first we read them. */ + tmpReg |= (GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK); + /* update BMI NIA */ + WRITE_UINT32(*p_BmiNia, tmpReg); + } + RELEASE_LOCK(p_FmPort->lock); + + return E_OK; +} + + +t_Error FM_PORT_PcdCcModifyTree (t_Handle h_FmPort, t_Handle h_CcTree) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + volatile uint32_t *p_BmiCcBase=NULL; + volatile uint32_t *p_BmiNia=NULL; + uint32_t ccTreePhysOffset; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_VALUE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + /* check that current NIA is BMI to BMI */ + if((GET_UINT32(*p_BmiNia) & ~BMI_RFNE_FDCS_MASK) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("may be called only for ports in BMI-to-BMI state.")); + +/*TODO - to take care of changes due to previous tree. Maybe in the previous tree where chnged pndn, pnen ... + it has to be returned to the default state - initially*/ + + p_FmPort->requiredAction = 0; + + if(p_FmPort->pcdEngines & FM_PCD_CC) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rccb; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiCcBase = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_occb; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid port type")); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPcdCcBindTree(p_FmPort->h_FmPcd, h_CcTree, &ccTreePhysOffset, h_FmPort); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MINOR, err, NO_MSG); + } + WRITE_UINT32(*p_BmiCcBase, ccTreePhysOffset); + + p_FmPort->ccTreeId = h_CcTree; + RELEASE_LOCK(p_FmPort->lock); + } + else + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Coarse CLassification not defined for this port.")); + + return E_OK; +} + +t_Error FM_PORT_AttachPCD(t_Handle h_FmPort) +{ + + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + /* TODO - may add here checks for: + SP (or in sw: schemes) + CPP (or in sw clsPlan) + Parser enabled and configured(?) + Tree(?) + Profile - only if direct. + Scheme - only if direct + */ + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPortAttachPCD(h_FmPort); + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_DetachPCD(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiNia=NULL; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + /* get PCD registers pointers */ + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + WRITE_UINT32(*p_BmiNia, (p_FmPort->savedBmiNia & BMI_RFNE_FDCS_MASK) | (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)); + +/*TODO - not atomic - it seems that port has to be disabled*/ + if(p_FmPort->requiredAction & UPDATE_NIA_PNEN) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_TX_RELEASE); + break; + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case(e_FM_PORT_TYPE_RX): + case(e_FM_PORT_TYPE_RX_10G): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->fmqm_pnen, NIA_ENG_BMI | NIA_BMI_AC_RELEASE); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Can not reach this stage")); + } + } + + if(p_FmPort->requiredAction & UPDATE_NIA_PNDN) + { + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_TX_10G): + case(e_FM_PORT_TYPE_TX): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_TX); + break; + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + WRITE_UINT32(p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs.fmqm_pndn, NIA_ENG_BMI | NIA_BMI_AC_FETCH); + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Can not reach this stage")); + } + } + + + if(p_FmPort->requiredAction & UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY) + if(FmSetNumOfRiscsPerPort(p_FmPort->h_Fm, p_FmPort->hardwarePortId, 2)!= E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + return E_OK; +} + +t_Error FM_PORT_SetPCD(t_Handle h_FmPort, t_FmPortPcdParams *p_PcdParams) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + uint8_t i; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independent mode ports only")); + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + p_FmPort->h_FmPcd = FmGetPcdHandle(p_FmPort->h_Fm); + ASSERT_COND(p_FmPort->h_FmPcd); + + err = SetPcd( h_FmPort, p_PcdParams); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + schemeBind.netEnvId = p_FmPort->netEnvId; + schemeBind.hardwarePortId = p_FmPort->hardwarePortId; + schemeBind.numOfSchemes = p_PcdParams->p_KgParams->numOfSchemes; + schemeBind.useClsPlan = p_FmPort->useClsPlan; + for(i = 0;ip_KgParams->h_Schemes[i])-1); + + err = FmPcdKgBindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if(err) + { + DeletePcd(p_FmPort); + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + + if ((p_FmPort->pcdEngines & FM_PCD_PRS) && (p_PcdParams->p_PrsParams->includeInPrsStatistics)) + FmPcdPrsIncludePortInStatistics(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, TRUE); + + FmPcdIncNetEnvOwners(p_FmPort->h_FmPcd, p_FmPort->netEnvId); + + err = FmPortAttachPCD(h_FmPort); + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_DeletePCD(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + + if (p_FmPort->imEn) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for non-independant mode ports only")); + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + + err = FM_PORT_DetachPCD(h_FmPort); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + + FmPcdDecNetEnvOwners(p_FmPort->h_FmPcd, p_FmPort->netEnvId); + + /* we do it anyway, instead of checking if included */ + if (FmIsMaster(p_FmPort->h_Fm) && + (p_FmPort->pcdEngines & FM_PCD_PRS)) + FmPcdPrsIncludePortInStatistics(p_FmPort->h_FmPcd, p_FmPort->hardwarePortId, FALSE); + + if(p_FmPort->pcdEngines & FM_PCD_KG) + { + /* unbind all schemes */ + p_FmPort->schemesPerPortVector = GetPortSchemeBindParams(p_FmPort, &schemeBind); + + err = FmPcdKgUnbindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if(err) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, err, NO_MSG); + } + } + + err = DeletePcd(h_FmPort); + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_PcdKgBindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + uint32_t tmpScmVec=0; + int i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_KG , E_INVALID_STATE); + + schemeBind.netEnvId = p_FmPort->netEnvId; + schemeBind.hardwarePortId = p_FmPort->hardwarePortId; + schemeBind.numOfSchemes = p_PortScheme->numOfSchemes; + schemeBind.useClsPlan = p_FmPort->useClsPlan; + for (i=0; ih_Schemes[i])-1); + /* build vector */ + tmpScmVec |= 1 << (31 - (uint32_t)schemeBind.schemesIds[i]); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPcdKgBindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if (err == E_OK) + p_FmPort->schemesPerPortVector |= tmpScmVec; + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_PcdKgUnbindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_FmPcdKgInterModuleBindPortToSchemes schemeBind; + t_Error err = E_OK; + uint32_t tmpScmVec=0; + int i; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_KG , E_INVALID_STATE); + + schemeBind.netEnvId = p_FmPort->netEnvId; + schemeBind.hardwarePortId = p_FmPort->hardwarePortId; + schemeBind.numOfSchemes = p_PortScheme->numOfSchemes; + for (i=0; ih_Schemes[i])-1); + /* build vector */ + tmpScmVec |= 1 << (31 - (uint32_t)schemeBind.schemesIds[i]); + } + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + err = FmPcdKgUnbindPortToSchemes(p_FmPort->h_FmPcd, &schemeBind); + if (err == E_OK) + p_FmPort->schemesPerPortVector &= ~tmpScmVec; + RELEASE_LOCK(p_FmPort->lock); + + return err; +} + +t_Error FM_PORT_PcdPrsModifyStartOffset (t_Handle h_FmPort, t_FmPcdPrsStart *p_FmPcdPrsStart) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + volatile uint32_t *p_BmiPrsStartOffset = NULL; + volatile uint32_t *p_BmiNia = NULL; + uint32_t tmpReg; + uint8_t hdrNum; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->pcdEngines & FM_PCD_PRS , E_INVALID_STATE); + + switch(p_FmPort->portType) + { + case(e_FM_PORT_TYPE_RX_10G): + case(e_FM_PORT_TYPE_RX): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rpso; + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfne; + tmpReg = GET_UINT32(*p_BmiNia) & BMI_RFNE_FDCS_MASK; + break; + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + p_BmiPrsStartOffset = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_opso; + p_BmiNia = &p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ofne; + tmpReg = 0; + break; + default: + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("available for Rx and offline parsing ports only")); + } + + /* check that current NIA is BMI to BMI */ + if((GET_UINT32(*p_BmiNia) & ~BMI_RFNE_FDCS_MASK) != (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("may be called only for ports in BMI-to-BMI state.")); + + if (!TRY_LOCK(p_FmPort->h_Spinlock, &p_FmPort->lock)) + return ERROR_CODE(E_BUSY); + /* set the first header */ + GET_PRS_HDR_NUM(hdrNum, p_FmPcdPrsStart->firstPrsHdr); + if ((hdrNum == ILLEGAL_HDR_NUM) || (hdrNum == NO_HDR_NUM)) + { + RELEASE_LOCK(p_FmPort->lock); + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unsupported header.")); + } + WRITE_UINT32(*p_BmiNia, (uint32_t)(NIA_ENG_PRS | (uint32_t)hdrNum | tmpReg)); + + /* set start parsing offset */ + WRITE_UINT32(*p_BmiPrsStartOffset, (uint32_t)(p_FmPcdPrsStart->parsingOffset + p_FmPort->internalBufferOffset)); + RELEASE_LOCK(p_FmPort->lock); + + return E_OK; +} + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +t_Error FM_PORT_DumpRegs(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err = E_OK; + char arr[30]; + uint8_t flag; + int i=0; + + DECLARE_DUMP; + + SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortQmiRegs, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortBmiRegs, E_INVALID_HANDLE); + + switch (p_FmPort->portType) + { + case (e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + strcpy(arr, "PORT_TYPE_OFFLINE_PARSING"); + flag = 0; + break; + case (e_FM_PORT_TYPE_OH_HOST_COMMAND): + strcpy(arr, "PORT_TYPE_HOST_COMMAND"); + flag = 0; + break; + case (e_FM_PORT_TYPE_RX): + strcpy(arr, "PORT_TYPE_RX"); + flag = 1; + break; + case (e_FM_PORT_TYPE_RX_10G): + strcpy(arr, "PORT_TYPE_RX_10G"); + flag = 1; + break; + case (e_FM_PORT_TYPE_TX): + strcpy(arr, "PORT_TYPE_TX"); + flag = 2; + break; + case (e_FM_PORT_TYPE_TX_10G): + strcpy(arr, "PORT_TYPE_TX_10G"); + flag = 2; + break; + default: + return ERROR_CODE(E_INVALID_VALUE); + } + + DUMP_TITLE(UINT_TO_PTR(p_FmPort->hardwarePortId), ("PortId for %s %d", arr, p_FmPort->portId )); + DUMP_TITLE(p_FmPort->p_FmPortBmiRegs, ("Bmi Port Regs")); + + err = FmDumpPortRegs(p_FmPort->h_Fm, p_FmPort->hardwarePortId); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + switch(flag) + { + case(0): + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocfg); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ost); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oda); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofdne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofca); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofpne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opso); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_occb); + + DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai), ("fmbm_oprai")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_PRS_RESULT_NUM_OF_WORDS) + { + DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai[i]), sizeof(uint32_t)); + } + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofqid ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oefqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofsdm ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofsem ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofene ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_orlmts); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_orlmt); + + { +#ifndef FM_NO_OP_OBSERVED_POOLS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev == 4) +#endif /* !FM_NO_OP_OBSERVED_POOLS */ + { + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi, ("fmbm_oebmpi")); + + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi[i], sizeof(uint32_t)); + } + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocgm); + } + } + + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ostc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofrc ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofdc ); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofledc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofufdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_offc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofwdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofldec); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opcp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_occn); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_otuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oduc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofuc); + break; + case(1): + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rcfg); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rst); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rda); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_reth); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfed); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_ricp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rebm); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfca); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfpne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpso); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpp); + + DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai), ("fmbm_rprai")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_PRS_RESULT_NUM_OF_WORDS) + { + DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai[i]), sizeof(uint32_t)); + } + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_refqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfsdm); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfsem); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfene); + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi, ("fmbm_ebmpi")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_EXT_POOLS) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i], sizeof(uint32_t)); + } + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt, ("fmbm_acnt")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_EXT_POOLS) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i], sizeof(uint32_t)); + } + DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm, ("fmbm_cgm")); + DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_NUM_OF_CONGESTION_GRPS/32) + { + DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[i], sizeof(uint32_t)); + } + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_mpd); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rstc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfrc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfbc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rlfc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rffc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfcd); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfldec); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rodc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpcp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rccn); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rtuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rrquc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rduc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpac); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rdbg); + break; + case(2): + + DUMP_SUBTITLE(("\n")); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcfg); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tst); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tda); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfed); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ticp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfne); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfca); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcfqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfeqid); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfene); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_trlmts); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_trlmt); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tstc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfrc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfledc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfufdc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tpc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tpcp); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tccn); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ttuc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ttcquc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tduc); + DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfuc); + break; + + default: + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid flag")); + } + + DUMP_TITLE(p_FmPort->p_FmPortQmiRegs, ("Qmi Port Regs")); + + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnc); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pns); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnts); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnen); + DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnetfc); + + if(flag !=1) + { + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndn); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndc); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndtfc); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndfdc); + DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndcc); + } + + return E_OK; +} +#endif /* (defined(DEBUG_ERRORS) && ... */ + +t_Error FM_PORT_AddCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool tmpArray[FM_PORT_NUM_OF_CONGESTION_GRPS], opPort; + int i; + uint8_t mod; + uint32_t tmpReg = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + { +#ifdef FM_NO_OP_OBSERVED_CGS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + { + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx ports only")); + } + else +#endif /* FM_NO_OP_OBSERVED_CGS */ + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx & OP ports only")); + } + + opPort = (bool)((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) ? TRUE:FALSE); + + /* to minimize memory access (groups may belong to the same regsiter, and may + be out of order), we first collect all information into a 256 booleans array, + representing each possible group. */ + + memset(&tmpArray, 0, FM_PORT_NUM_OF_CONGESTION_GRPS*sizeof(bool)); + for(i=0;inumOfCongestionGrpsToConsider;i++) + tmpArray[p_CongestionGrps->congestionGrpsToConsider[i]] = TRUE; + + for(i=0;ip_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm): + GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32]); + + /* set in the register, the bit representing the relevant congestion group. */ + if(tmpArray[i]) + tmpReg |= (0x00000001 << (uint32_t)mod); + + if (mod == 31) /* last in a 32 bunch of congestion groups - write the corresponding register */ + { + if(opPort) + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm, tmpReg); + else + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32], tmpReg); + } + } + + return E_OK; +} + +t_Error FM_PORT_RemoveCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + bool tmpArray[FM_PORT_NUM_OF_CONGESTION_GRPS], opPort; + int i; + uint8_t mod; + uint32_t tmpReg = 0; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + + { +#ifdef FM_NO_OP_OBSERVED_CGS + t_FmRevisionInfo revInfo; + + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if (revInfo.majorRev != 4) + { + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx ports only")); + } + else +#endif /* FM_NO_OP_OBSERVED_CGS */ + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_OH_OFFLINE_PARSING)) + RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Available for Rx & OP ports only")); + } + + opPort = (bool)((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) ? TRUE:FALSE); + + /* to minimize memory access (groups may belong to the same regsiter, and may + be out of order), we first collect all information into a 256 booleans array, + representing each possible group. */ + memset(&tmpArray, 0, FM_PORT_NUM_OF_CONGESTION_GRPS*sizeof(bool)); + for(i=0;inumOfCongestionGrpsToConsider;i++) + tmpArray[p_CongestionGrps->congestionGrpsToConsider[i]] = TRUE; + + for(i=0;ip_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm): + GET_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32]); + + /* set in the register, the bit representing the relevant congestion group. */ + if(tmpArray[i]) + tmpReg &= ~(0x00000001 << (uint32_t)mod); + + if (mod == 31) /* last in a 32 bunch of congestion groups - write the corresponding register */ + { + if(opPort) + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_ocgm, tmpReg); + else + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_cgm[7-i/32], tmpReg); + } + } + + return E_OK; +} + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port_im.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/Port/fm_port_im.c @@ -0,0 +1,789 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_port_im.c + + @Description FM Port Independent-Mode ... +*//***************************************************************************/ +#include "std_ext.h" +#include "string_ext.h" +#include "error_ext.h" +#include "fm_muram_ext.h" + +#include "fm_port.h" + + +#define TX_CONF_STATUS_UNSENT 0x1 + +#ifdef CORE_8BIT_ACCESS_ERRATA +#undef WRITE_UINT16 +#undef GET_UINT16 + +#define WRITE_UINT16(addr, val) \ + do{ \ + if((int)&(addr) % 4) \ + WRITE_UINT32(*(uint32_t*)(uint32_t)((uint32_t)&addr & ~0x3L), \ + ((GET_UINT32(*(uint32_t*)(uint32_t)((uint32_t)&addr & ~0x3L)) & 0xffff0000) | (uint32_t)val)); \ + else \ + WRITE_UINT32(*(uint32_t*)&addr, \ + ((GET_UINT32(*(uint32_t*)&addr) & 0x0000ffff) | (uint32_t)val<<16)); \ + }while(0); + +#define GET_UINT16(addr) (((uint32_t)&addr%4) ? \ + ((uint16_t)GET_UINT32(*(uint32_t*)(uint32_t)((uint32_t)&addr & ~0x3L))): \ + ((uint16_t)(GET_UINT32(*(uint32_t*)(uint32_t)&addr) >> 16))) +#endif /* CORE_8BIT_ACCESS_ERRATA */ + + +typedef enum e_TxConfType +{ + e_TX_CONF_TYPE_CHECK = 0 /**< check if all the buffers were touched by the muxator, no confirmation callback */ + ,e_TX_CONF_TYPE_CALLBACK = 1 /**< confirm to user all the available sent buffers */ + ,e_TX_CONF_TYPE_FLUSH = 3 /**< confirm all buffers plus the unsent one with an appropriate status */ +} e_TxConfType; + + +static void ImException(t_Handle h_FmPort, uint32_t event) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + ASSERT_COND(((event & IM_EV_RX) && FmIsMaster(p_FmPort->h_Fm)) || + !FmIsMaster(p_FmPort->h_Fm)); + + if (event & IM_EV_RX) + FmPortImRx(p_FmPort); + if ((event & IM_EV_BSY) && p_FmPort->f_Exception) + p_FmPort->f_Exception(p_FmPort->h_App, e_FM_PORT_EXCEPTION_IM_BUSY); +} + + +static t_Error TxConf(t_FmPort *p_FmPort, e_TxConfType confType) +{ + t_Error retVal = E_BUSY; + uint32_t bdStatus; + uint16_t savedStartBdId, confBdId; + + ASSERT_COND(p_FmPort); + + /* + if (confType==e_TX_CONF_TYPE_CHECK) + return (WfqEntryIsQueueEmpty(p_FmPort->im.h_WfqEntry) ? E_OK : E_BUSY); + */ + + confBdId = savedStartBdId = p_FmPort->im.currBdId; + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(confBdId)); + + /* If R bit is set, we don't enter, or we break. + we run till we get to R, or complete the loop */ + while ((!(bdStatus & BD_R_E) || (confType == e_TX_CONF_TYPE_FLUSH)) && (retVal != E_OK)) + { + if (confType & e_TX_CONF_TYPE_CALLBACK) /* if it is confirmation with user callbacks */ + BD_STATUS_AND_LENGTH_SET(BD_GET(confBdId), 0); + + /* case 1: R bit is 0 and Length is set -> confirm! */ + if ((confType & e_TX_CONF_TYPE_CALLBACK) && (bdStatus & BD_LENGTH_MASK)) + { + if (p_FmPort->im.f_TxConf) + { + if ((confType == e_TX_CONF_TYPE_FLUSH) && (bdStatus & BD_R_E)) + p_FmPort->im.f_TxConf(p_FmPort->h_App, + BdBufferGet(XX_PhysToVirt, BD_GET(confBdId)), + TX_CONF_STATUS_UNSENT, + p_FmPort->im.p_BdShadow[confBdId]); + else + p_FmPort->im.f_TxConf(p_FmPort->h_App, + BdBufferGet(XX_PhysToVirt, BD_GET(confBdId)), + 0, + p_FmPort->im.p_BdShadow[confBdId]); + } + } + /* case 2: R bit is 0 and Length is 0 -> not used yet, nop! */ + + confBdId = GetNextBdId(p_FmPort, confBdId); + if (confBdId == savedStartBdId) + retVal = E_OK; + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(confBdId)); + } + + return retVal; +} + +t_Error FmPortImEnable(t_FmPort *p_FmPort) +{ + uint32_t tmpReg = GET_UINT32(p_FmPort->im.p_FmPortImPram->mode); + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, (uint32_t)(tmpReg & ~IM_MODE_GRC_STP)); + return E_OK; +} + +t_Error FmPortImDisable(t_FmPort *p_FmPort) +{ + uint32_t tmpReg = GET_UINT32(p_FmPort->im.p_FmPortImPram->mode); + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, (uint32_t)(tmpReg | IM_MODE_GRC_STP)); + return E_OK; +} + +t_Error FmPortImRx(t_FmPort *p_FmPort) +{ + t_Handle h_CurrUserPriv, h_NewUserPriv; + uint32_t bdStatus; + volatile uint8_t buffPos; + uint16_t length; + uint16_t errors/*, reportErrors*/; + uint8_t *p_CurData, *p_Data; + uint32_t flags; + + ASSERT_COND(p_FmPort); + + flags = XX_LockIntrSpinlock(p_FmPort->h_Spinlock); + if (p_FmPort->lock) + { + XX_UnlockIntrSpinlock(p_FmPort->h_Spinlock, flags); + return E_OK; + } + p_FmPort->lock = TRUE; + XX_UnlockIntrSpinlock(p_FmPort->h_Spinlock, flags); + + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + + while (!(bdStatus & BD_R_E)) /* while there is data in the Rx BD */ + { + if ((p_Data = p_FmPort->im.rxPool.f_GetBuf(p_FmPort->im.rxPool.h_BufferPool, &h_NewUserPriv)) == NULL) + { + p_FmPort->lock = FALSE; + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Data buffer")); + } + + if (p_FmPort->im.firstBdOfFrameId == IM_ILEGAL_BD_ID) + p_FmPort->im.firstBdOfFrameId = p_FmPort->im.currBdId; + + errors = 0; + p_CurData = BdBufferGet(p_FmPort->im.rxPool.f_PhysToVirt, BD_GET(p_FmPort->im.currBdId)); + h_CurrUserPriv = p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId]; + length = (uint16_t)((bdStatus & BD_L) ? + ((bdStatus & BD_LENGTH_MASK) - p_FmPort->im.rxFrameAccumLength): + (bdStatus & BD_LENGTH_MASK)); + p_FmPort->im.rxFrameAccumLength += length; + + /* determine whether buffer is first, last, first and last (single */ + /* buffer frame) or middle (not first and not last) */ + buffPos = (uint8_t)((p_FmPort->im.currBdId == p_FmPort->im.firstBdOfFrameId) ? + ((bdStatus & BD_L) ? SINGLE_BUF : FIRST_BUF) : + ((bdStatus & BD_L) ? LAST_BUF : MIDDLE_BUF)); + + if (bdStatus & BD_L) + { + p_FmPort->im.rxFrameAccumLength = 0; + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + } + + BdBufferSet(p_FmPort->im.rxPool.f_VirtToPhys, BD_GET(p_FmPort->im.currBdId), p_Data); + + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.currBdId), BD_R_E); + + errors = (uint16_t)((bdStatus & BD_RX_ERRORS) >> 16); + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId] = h_NewUserPriv; + + p_FmPort->im.currBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.offsetOut, (uint16_t)(p_FmPort->im.currBdId<<4)); + /* Pass the buffer if one of the conditions is true: + - There are no errors + - This is a part of a larger frame ( the application has already received some buffers ) + - There is an error, but it was defined to be passed anyway. */ + if ((buffPos != SINGLE_BUF) || !errors || (errors & (uint16_t)(BD_ERROR_PASS_FRAME>>16))) + { + if (p_FmPort->im.f_RxStore(p_FmPort->h_App, + p_CurData, + length, + errors, + buffPos, + h_CurrUserPriv) == e_RX_STORE_RESPONSE_PAUSE) + break; + } + else if (p_FmPort->im.rxPool.f_PutBuf(p_FmPort->im.rxPool.h_BufferPool, + p_CurData, + h_CurrUserPriv)) + { + p_FmPort->lock = FALSE; + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Failed freeing data buffer")); + } + + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + } + p_FmPort->lock = FALSE; + return E_OK; +} + +void FmPortConfigIM (t_FmPort *p_FmPort, t_FmPortParams *p_FmPortParams) +{ + ASSERT_COND(p_FmPort); + + SANITY_CHECK_RETURN(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.h_FmMuram = p_FmPortParams->specificParams.imRxTxParams.h_FmMuram; + p_FmPort->p_FmPortDriverParam->liodnOffset = p_FmPortParams->specificParams.imRxTxParams.liodnOffset; + p_FmPort->im.dataMemId = p_FmPortParams->specificParams.imRxTxParams.dataMemId; + p_FmPort->im.dataMemAttributes = p_FmPortParams->specificParams.imRxTxParams.dataMemAttributes; + + p_FmPort->im.fwExtStructsMemId = DEFAULT_PORT_ImfwExtStructsMemId; + p_FmPort->im.fwExtStructsMemAttr = DEFAULT_PORT_ImfwExtStructsMemAttr; + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + p_FmPort->im.rxPool.h_BufferPool = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.h_BufferPool; + p_FmPort->im.rxPool.f_GetBuf = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_GetBuf; + p_FmPort->im.rxPool.f_PutBuf = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_PutBuf; + p_FmPort->im.rxPool.bufferSize = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.bufferSize; + p_FmPort->im.rxPool.f_PhysToVirt = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_PhysToVirt; + if (!p_FmPort->im.rxPool.f_PhysToVirt) + p_FmPort->im.rxPool.f_PhysToVirt = XX_PhysToVirt; + p_FmPort->im.rxPool.f_VirtToPhys = p_FmPortParams->specificParams.imRxTxParams.rxPoolParams.f_VirtToPhys; + if (!p_FmPort->im.rxPool.f_VirtToPhys) + p_FmPort->im.rxPool.f_VirtToPhys = XX_VirtToPhys; + p_FmPort->im.f_RxStore = p_FmPortParams->specificParams.imRxTxParams.f_RxStore; + + p_FmPort->im.mrblr = 0x8000; + while (p_FmPort->im.mrblr) + { + if (p_FmPort->im.rxPool.bufferSize & p_FmPort->im.mrblr) + break; + p_FmPort->im.mrblr >>= 1; + } + if (p_FmPort->im.mrblr != p_FmPort->im.rxPool.bufferSize) + DBG(WARNING, ("Max-Rx-Buffer-Length set to %d", p_FmPort->im.mrblr)); + p_FmPort->im.bdRingSize = DEFAULT_PORT_rxBdRingLength; + p_FmPort->exceptions = DEFAULT_exception; + if (FmIsMaster(p_FmPort->h_Fm)) + p_FmPort->polling = FALSE; + else + p_FmPort->polling = TRUE; + p_FmPort->fmanCtrlEventId = (uint8_t)NO_IRQ; + } + else + { + p_FmPort->im.f_TxConf = p_FmPortParams->specificParams.imRxTxParams.f_TxConf; + + p_FmPort->im.bdRingSize = DEFAULT_PORT_txBdRingLength; + } +} + +t_Error FmPortImCheckInitParameters(t_FmPort *p_FmPort) +{ + if ((p_FmPort->portType != e_FM_PORT_TYPE_RX) && + (p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX) && + (p_FmPort->portType != e_FM_PORT_TYPE_TX_10G)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG); + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + if (!POWER_OF_2(p_FmPort->im.mrblr)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("max Rx buffer length must be power of 2!!!")); + if (p_FmPort->im.mrblr < 256) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("max Rx buffer length must at least 256!!!")); + if(p_FmPort->p_FmPortDriverParam->liodnOffset & ~FM_LIODN_OFFSET_MASK) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("liodnOffset is larger than %d", FM_LIODN_OFFSET_MASK+1)); +#ifdef FM_PARTITION_ARRAY + { + t_FmRevisionInfo revInfo; + FM_GetRevision(p_FmPort->h_Fm, &revInfo); + if ((revInfo.majorRev == 1) && (revInfo.minorRev == 0)) + { + if(p_FmPort->p_FmPortDriverParam->liodnOffset >= MAX_LIODN_OFFSET) + { + p_FmPort->p_FmPortDriverParam->liodnOffset = + (uint16_t)(p_FmPort->p_FmPortDriverParam->liodnOffset & (MAX_LIODN_OFFSET-1)); + DBG(WARNING, ("liodnOffset number is out of rev1 range - MSB bits cleard.")); + } + } + } +#endif /* FM_PARTITION_ARRAY */ +/* TODO - add checks */ + } + else + { +/* TODO - add checks */ + } + + return E_OK; +} + +t_Error FmPortImInit(t_FmPort *p_FmPort) +{ + t_FmImBd *p_Bd=NULL; + t_Handle h_BufContext; + uint64_t tmpPhysBase; + uint16_t log2Num; + uint8_t *p_Data/*, *p_Tmp*/; + int i; + t_Error err; + uint16_t tmpReg16; + uint32_t tmpReg32; + + ASSERT_COND(p_FmPort); + + p_FmPort->im.p_FmPortImPram = + (t_FmPortImPram *)FM_MURAM_AllocMem(p_FmPort->im.h_FmMuram, sizeof(t_FmPortImPram), IM_PRAM_ALIGN); + if (!p_FmPort->im.p_FmPortImPram) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Parameter-RAM!!!")); + WRITE_BLOCK(p_FmPort->im.p_FmPortImPram, 0, sizeof(t_FmPortImPram)); + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + p_FmPort->im.p_BdRing = (t_FmImBd *)XX_MallocSmart((uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize), p_FmPort->im.fwExtStructsMemId, 4); + if (!p_FmPort->im.p_BdRing) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Rx BD ring!!!")); + IOMemSet32(p_FmPort->im.p_BdRing, 0, (uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + p_FmPort->im.p_BdShadow = (t_Handle *)XX_Malloc((uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + if (!p_FmPort->im.p_BdShadow) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Rx BD shadow!!!")); + memset(p_FmPort->im.p_BdShadow, 0, (uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + + /* Initialize the Rx-BD ring */ + for (i=0; iim.bdRingSize; i++) + { + p_Bd = BD_GET(i); + BD_STATUS_AND_LENGTH_SET (p_Bd, BD_R_E); + + if ((p_Data = p_FmPort->im.rxPool.f_GetBuf(p_FmPort->im.rxPool.h_BufferPool, &h_BufContext)) == NULL) + RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Data buffer")); + BdBufferSet(p_FmPort->im.rxPool.f_VirtToPhys, p_Bd, p_Data); + p_FmPort->im.p_BdShadow[i] = h_BufContext; + } + + if ((p_FmPort->im.dataMemAttributes & MEMORY_ATTR_CACHEABLE) || + (p_FmPort->im.fwExtStructsMemAttr & MEMORY_ATTR_CACHEABLE)) + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_GBL | IM_MODE_SET_BO(2)); + else + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_SET_BO(2)); + + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->rxQdPtr, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr + 0x20)); + + LOG2((uint64_t)p_FmPort->im.mrblr, log2Num); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->mrblr, log2Num); + + /* Initialize Rx QD */ + tmpPhysBase = (uint64_t)(XX_VirtToPhys(p_FmPort->im.p_BdRing)); + SET_ADDR(&p_FmPort->im.p_FmPortImPram->rxQd.bdRingBase, tmpPhysBase); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.bdRingSize, (uint16_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + /* Update the IM PRAM address in the BMI */ + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rfqid, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr)); + if (!p_FmPort->polling || p_FmPort->exceptions) + { + /* Allocate, configure and register interrupts */ + err = FmAllocFmanCtrlEventReg(p_FmPort->h_Fm, &p_FmPort->fmanCtrlEventId); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + + ASSERT_COND(!(p_FmPort->fmanCtrlEventId & ~IM_RXQD_FPMEVT_SEL_MASK)); + tmpReg16 = (uint16_t)(p_FmPort->fmanCtrlEventId & IM_RXQD_FPMEVT_SEL_MASK); + tmpReg32 = 0; + + if(p_FmPort->exceptions & IM_EV_BSY) + { + tmpReg16 |= IM_RXQD_BSYINTM; + tmpReg32 |= IM_EV_BSY; + } + if(!p_FmPort->polling) + { + tmpReg16 |= IM_RXQD_RXFINTM; + tmpReg32 |= IM_EV_RX; + } + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, tmpReg16); + + FmRegisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, ImException , (t_Handle)p_FmPort); + + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, tmpReg32); + } + else + p_FmPort->fmanCtrlEventId = (uint8_t)NO_IRQ; + } + else + { + p_FmPort->im.p_BdRing = (t_FmImBd *)XX_MallocSmart((uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize), p_FmPort->im.fwExtStructsMemId, 4); + if (!p_FmPort->im.p_BdRing) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Tx BD ring!!!")); + IOMemSet32(p_FmPort->im.p_BdRing, 0, (uint32_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + p_FmPort->im.p_BdShadow = (t_Handle *)XX_Malloc((uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + if (!p_FmPort->im.p_BdShadow) + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("Independent-Mode Rx BD shadow!!!")); + memset(p_FmPort->im.p_BdShadow, 0, (uint32_t)(sizeof(t_Handle)*p_FmPort->im.bdRingSize)); + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + + if ((p_FmPort->im.dataMemAttributes & MEMORY_ATTR_CACHEABLE) || + (p_FmPort->im.fwExtStructsMemAttr & MEMORY_ATTR_CACHEABLE)) + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_GBL | IM_MODE_SET_BO(2)); + else + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->mode, IM_MODE_SET_BO(2)); + + WRITE_UINT32(p_FmPort->im.p_FmPortImPram->txQdPtr, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr + 0x40)); + + /* Initialize Tx QD */ + tmpPhysBase = (uint64_t)(XX_VirtToPhys(p_FmPort->im.p_BdRing)); + SET_ADDR(&p_FmPort->im.p_FmPortImPram->txQd.bdRingBase, tmpPhysBase); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->txQd.bdRingSize, (uint16_t)(sizeof(t_FmImBd)*p_FmPort->im.bdRingSize)); + + /* Update the IM PRAM address in the BMI */ + WRITE_UINT32(p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tcfqid, + (uint32_t)((uint64_t)(XX_VirtToPhys(p_FmPort->im.p_FmPortImPram)) - + p_FmPort->p_FmPortDriverParam->fmMuramPhysBaseAddr)); + } + + + return E_OK; +} + +void FmPortImFree(t_FmPort *p_FmPort) +{ + uint32_t bdStatus; + uint8_t *p_CurData; + + ASSERT_COND(p_FmPort); + ASSERT_COND(p_FmPort->im.p_FmPortImPram); + + if ((p_FmPort->portType == e_FM_PORT_TYPE_RX) || + (p_FmPort->portType == e_FM_PORT_TYPE_RX_10G)) + { + if (!p_FmPort->polling || p_FmPort->exceptions) + { + /* Deallocate and unregister interrupts */ + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, 0); + + FmFreeFmanCtrlEventReg(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, 0); + + FmUnregisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + } + /* Try first clean what has received */ + FmPortImRx(p_FmPort); + + /* Now, get rid of the the empty buffer! */ + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + + while (bdStatus & BD_R_E) /* while there is data in the Rx BD */ + { + p_CurData = BdBufferGet(p_FmPort->im.rxPool.f_PhysToVirt, BD_GET(p_FmPort->im.currBdId)); + + BdBufferSet(p_FmPort->im.rxPool.f_VirtToPhys, BD_GET(p_FmPort->im.currBdId), NULL); + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.currBdId), 0); + + p_FmPort->im.rxPool.f_PutBuf(p_FmPort->im.rxPool.h_BufferPool, + p_CurData, + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId]); + + p_FmPort->im.currBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + } + } + else + TxConf(p_FmPort, e_TX_CONF_TYPE_FLUSH); + + FM_MURAM_FreeMem(p_FmPort->im.h_FmMuram, p_FmPort->im.p_FmPortImPram); + + if (p_FmPort->im.p_BdShadow) + XX_Free(p_FmPort->im.p_BdShadow); + + if (p_FmPort->im.p_BdRing) + XX_FreeSmart(p_FmPort->im.p_BdRing); +} + + +t_Error FM_PORT_ConfigIMMaxRxBufLength(t_Handle h_FmPort, uint16_t newVal) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.mrblr = newVal; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMRxBdRingLength(t_Handle h_FmPort, uint16_t newVal) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.bdRingSize = newVal; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMTxBdRingLength(t_Handle h_FmPort, uint16_t newVal) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.bdRingSize = newVal; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMFmanCtrlExternalStructsMemory(t_Handle h_FmPort, + uint8_t memId, + uint32_t memAttributes) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + p_FmPort->im.fwExtStructsMemId = memId; + p_FmPort->im.fwExtStructsMemAttr = memAttributes; + + return E_OK; +} + +t_Error FM_PORT_ConfigIMPolling(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if((p_FmPort->portType != e_FM_PORT_TYPE_RX_10G) && (p_FmPort->portType != e_FM_PORT_TYPE_RX)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Available for Rx ports only")); + + if (!FmIsMaster(p_FmPort->h_Fm)) + RETURN_ERROR(MAJOR, E_INVALID_OPERATION, ("Available on master-partition only;" + "in guest-partitions, IM is always in polling!")); + + p_FmPort->polling = TRUE; + + return E_OK; +} + +t_Error FM_PORT_SetIMExceptions(t_Handle h_FmPort, e_FmPortExceptions exception, bool enable) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + t_Error err; + uint16_t tmpReg16; + uint32_t tmpReg32; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + if(exception == e_FM_PORT_EXCEPTION_IM_BUSY) + { + if(enable) + { + p_FmPort->exceptions |= IM_EV_BSY; + if(p_FmPort->fmanCtrlEventId == (uint8_t)NO_IRQ) + { + /* Allocate, configure and register interrupts */ + err = FmAllocFmanCtrlEventReg(p_FmPort->h_Fm, &p_FmPort->fmanCtrlEventId); + if(err) + RETURN_ERROR(MAJOR, err, NO_MSG); + ASSERT_COND(!(p_FmPort->fmanCtrlEventId & ~IM_RXQD_FPMEVT_SEL_MASK)); + + FmRegisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, ImException, (t_Handle)p_FmPort); + tmpReg16 = (uint16_t)((p_FmPort->fmanCtrlEventId & IM_RXQD_FPMEVT_SEL_MASK) | IM_RXQD_BSYINTM); + tmpReg32 = IM_EV_BSY; + } + else + { + tmpReg16 = (uint16_t)(GET_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen) | IM_RXQD_BSYINTM); + tmpReg32 = FmGetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId) | IM_EV_BSY; + } + + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, tmpReg16); + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, tmpReg32); + } + else + { + p_FmPort->exceptions &= ~IM_EV_BSY; + if (!p_FmPort->exceptions && p_FmPort->polling) + { + FmFreeFmanCtrlEventReg(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + FmUnregisterFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId); + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, 0); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, 0); + p_FmPort->fmanCtrlEventId = (uint8_t)NO_IRQ; + } + else + { + tmpReg16 = (uint16_t)(GET_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen) & ~IM_RXQD_BSYINTM); + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->rxQd.gen, tmpReg16); + tmpReg32 = FmGetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId) & ~IM_EV_BSY; + FmSetFmanCtrlIntr(p_FmPort->h_Fm, p_FmPort->fmanCtrlEventId, tmpReg32); + } + } + } + else + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("Invalid exception.")); + + return E_OK; +} + +t_Error FM_PORT_ImTx( t_Handle h_FmPort, + uint8_t *p_Data, + uint16_t length, + bool lastBuffer, + t_Handle h_BufContext) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + uint16_t nextBdId; + uint32_t bdStatus, nextBdStatus; + bool firstBuffer; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + bdStatus = BD_STATUS_AND_LENGTH(BD_GET(p_FmPort->im.currBdId)); + nextBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + nextBdStatus = BD_STATUS_AND_LENGTH(BD_GET(nextBdId)); + + if (!(bdStatus & BD_R_E) && !(nextBdStatus & BD_R_E)) + { + /* Confirm the current BD - BD is available */ + if ((bdStatus & BD_LENGTH_MASK) && (p_FmPort->im.f_TxConf)) + p_FmPort->im.f_TxConf (p_FmPort->h_App, + BdBufferGet(XX_PhysToVirt, BD_GET(p_FmPort->im.currBdId)), + 0, + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId]); + + bdStatus = length; + + /* if this is the first BD of a frame */ + if (p_FmPort->im.firstBdOfFrameId == IM_ILEGAL_BD_ID) + { + firstBuffer = TRUE; + p_FmPort->im.txFirstBdStatus = (bdStatus | BD_R_E); + + if (!lastBuffer) + p_FmPort->im.firstBdOfFrameId = p_FmPort->im.currBdId; + } + else + firstBuffer = FALSE; + + BdBufferSet(XX_VirtToPhys, BD_GET(p_FmPort->im.currBdId), p_Data); + p_FmPort->im.p_BdShadow[p_FmPort->im.currBdId] = h_BufContext; + + /* deal with last */ + if (lastBuffer) + { + /* if single buffer frame */ + if (firstBuffer) + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.currBdId), p_FmPort->im.txFirstBdStatus | BD_L); + else + { + /* Set the last BD of the frame */ + BD_STATUS_AND_LENGTH_SET (BD_GET(p_FmPort->im.currBdId), (bdStatus | BD_R_E | BD_L)); + /* Set the first BD of the frame */ + BD_STATUS_AND_LENGTH_SET(BD_GET(p_FmPort->im.firstBdOfFrameId), p_FmPort->im.txFirstBdStatus); + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + } + WRITE_UINT16(p_FmPort->im.p_FmPortImPram->txQd.offsetIn, (uint16_t)(GetNextBdId(p_FmPort, p_FmPort->im.currBdId)<<4)); + } + else if (!firstBuffer) /* mid frame buffer */ + BD_STATUS_AND_LENGTH_SET (BD_GET(p_FmPort->im.currBdId), bdStatus | BD_R_E); + + p_FmPort->im.currBdId = GetNextBdId(p_FmPort, p_FmPort->im.currBdId); + } + else + { + /* Discard current frame. Return error. */ + if (p_FmPort->im.firstBdOfFrameId != IM_ILEGAL_BD_ID) + { + /* Error: No free BD */ + /* Response: Discard current frame. Return error. */ + uint16_t cleanBdId = p_FmPort->im.firstBdOfFrameId; + + ASSERT_COND(p_FmPort->im.firstBdOfFrameId != p_FmPort->im.currBdId); + + /* Since firstInFrame is not NULL, one buffer at least has already been + inserted into the BD ring. Using do-while covers the situation of a + frame spanned throughout the whole Tx BD ring (p_CleanBd is incremented + prior to testing whether or not it's equal to TxBd). */ + do + { + BD_STATUS_AND_LENGTH_SET(BD_GET(cleanBdId), 0); + /* Advance BD pointer */ + cleanBdId = GetNextBdId(p_FmPort, cleanBdId); + } while (cleanBdId != p_FmPort->im.currBdId); + + p_FmPort->im.currBdId = cleanBdId; + p_FmPort->im.firstBdOfFrameId = IM_ILEGAL_BD_ID; + } + + return ERROR_CODE(E_FULL); + } + + return E_OK; +} + +void FM_PORT_ImTxConf(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + TxConf(p_FmPort, e_TX_CONF_TYPE_CALLBACK); +} + +t_Error FM_PORT_ImRx(t_Handle h_FmPort) +{ + t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; + + SANITY_CHECK_RETURN_ERROR(p_FmPort, E_INVALID_HANDLE); + SANITY_CHECK_RETURN_ERROR(p_FmPort->imEn, E_INVALID_STATE); + SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_HANDLE); + + return FmPortImRx(p_FmPort); +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_hc.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_hc.h @@ -0,0 +1,86 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __FM_HC_H +#define __FM_HC_H + +#include "std_ext.h" +#include "error_ext.h" + + +#define __ERR_MODULE__ MODULE_FM_PCD + + +typedef struct t_FmHcParams { + t_Handle h_Fm; + t_Handle h_FmPcd; + t_FmPcdHcParams params; +} t_FmHcParams; + + +t_Handle FmHcConfigAndInit(t_FmHcParams *p_FmHcParams); +void FmHcFree(t_Handle h_FmHc); +t_Error FmHcDumpRegs(t_Handle h_FmHc); + +void FmHcTxConf(t_Handle h_FmHc, t_DpaaFD *p_Fd); + +t_Handle FmHcPcdKgSetScheme(t_Handle h_FmHc, t_FmPcdKgSchemeParams *p_Scheme); +t_Error FmHcPcdKgDeleteScheme(t_Handle h_FmHc, t_Handle h_Scheme); +t_Error FmHcPcdCcCapwapTimeoutReassm(t_Handle h_FmHc, t_FmPcdCcCapwapReassmTimeoutParams *p_CcCapwapReassmTimeoutParams ); +t_Error FmHcPcdKgSetClsPlan(t_Handle h_FmHc, t_FmPcdKgInterModuleClsPlanSet *p_Set); +t_Error FmHcPcdKgDeleteClsPlan(t_Handle h_FmHc, uint8_t clsPlanGrpId); + +t_Error FmHcPcdKgSetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t value); +uint32_t FmHcPcdKgGetSchemeCounter(t_Handle h_FmHc, t_Handle h_Scheme); + +t_Error FmHcPcdCcModifyTreeNextEngine(t_Handle h_FmHc, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); +t_Error FmHcPcdCcModifyNodeNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); +t_Error FmHcPcdCcModifyNodeMissNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); +t_Error FmHcPcdCcRemoveKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex); +t_Error FmHcPcdCcAddKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); +t_Error FmHcPcdCcModifyKeyAndNextEngine(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); +t_Error FmHcPcdCcModifyKey(t_Handle h_FmHc, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask); + +t_Handle FmHcPcdPlcrSetProfile(t_Handle h_FmHc,t_FmPcdPlcrProfileParams *p_Profile); +t_Error FmHcPcdPlcrDeleteProfile(t_Handle h_FmHc, t_Handle h_Profile); + +t_Error FmHcPcdPlcrSetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value); +uint32_t FmHcPcdPlcrGetProfileCounter(t_Handle h_FmHc, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter); + +t_Error FmHcKgWriteSp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t spReg, bool add); +t_Error FmHcKgWriteCpp(t_Handle h_FmHc, uint8_t hardwarePortId, uint32_t cppReg); + +t_Error FmHcPcdKgCcGetSetParams(t_Handle h_FmHc, t_Handle h_Scheme, uint32_t requiredAction); +t_Error FmHcPcdPlcrCcGetSetParams(t_Handle h_FmHc,uint16_t absoluteProfileId, uint32_t requiredAction); + + +#endif /* __FM_HC_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_common.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/Peripherals/FM/inc/fm_common.h @@ -0,0 +1,1173 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_common.h + + @Description FM internal structures and definitions. +*//***************************************************************************/ +#ifndef __FM_COMMON_H +#define __FM_COMMON_H + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_pcd_ext.h" +#include "fm_port_ext.h" + +#define CLS_PLAN_NUM_PER_GRP 8 + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description PCD KG scheme registers +*//***************************************************************************/ +typedef _Packed struct t_FmPcdPlcrInterModuleProfileRegs { + volatile uint32_t fmpl_pemode; /* 0x090 FMPL_PEMODE - FM Policer Profile Entry Mode*/ + volatile uint32_t fmpl_pegnia; /* 0x094 FMPL_PEGNIA - FM Policer Profile Entry GREEN Next Invoked Action*/ + volatile uint32_t fmpl_peynia; /* 0x098 FMPL_PEYNIA - FM Policer Profile Entry YELLOW Next Invoked Action*/ + volatile uint32_t fmpl_pernia; /* 0x09C FMPL_PERNIA - FM Policer Profile Entry RED Next Invoked Action*/ + volatile uint32_t fmpl_pecir; /* 0x0A0 FMPL_PECIR - FM Policer Profile Entry Committed Information Rate*/ + volatile uint32_t fmpl_pecbs; /* 0x0A4 FMPL_PECBS - FM Policer Profile Entry Committed Burst Size*/ + volatile uint32_t fmpl_pepepir_eir; /* 0x0A8 FMPL_PEPIR_EIR - FM Policer Profile Entry Peak/Excess Information Rate*/ + volatile uint32_t fmpl_pepbs_ebs; /* 0x0AC FMPL_PEPBS_EBS - FM Policer Profile Entry Peak/Excess Information Rate*/ + volatile uint32_t fmpl_pelts; /* 0x0B0 FMPL_PELTS - FM Policer Profile Entry Last TimeStamp*/ + volatile uint32_t fmpl_pects; /* 0x0B4 FMPL_PECTS - FM Policer Profile Entry Committed Token Status*/ + volatile uint32_t fmpl_pepts_ets; /* 0x0B8 FMPL_PEPTS_ETS - FM Policer Profile Entry Peak/Excess Token Status*/ + volatile uint32_t fmpl_pegpc; /* 0x0BC FMPL_PEGPC - FM Policer Profile Entry GREEN Packet Counter*/ + volatile uint32_t fmpl_peypc; /* 0x0C0 FMPL_PEYPC - FM Policer Profile Entry YELLOW Packet Counter*/ + volatile uint32_t fmpl_perpc; /* 0x0C4 FMPL_PERPC - FM Policer Profile Entry RED Packet Counter */ + volatile uint32_t fmpl_perypc; /* 0x0C8 FMPL_PERYPC - FM Policer Profile Entry Recolored YELLOW Packet Counter*/ + volatile uint32_t fmpl_perrpc; /* 0x0CC FMPL_PERRPC - FM Policer Profile Entry Recolored RED Packet Counter*/ + volatile uint32_t fmpl_res1[12]; /* 0x0D0-0x0FF Reserved */ +} _PackedType t_FmPcdPlcrInterModuleProfileRegs; + +/**************************************************************************//** + @Description PCD KG scheme registers +*//***************************************************************************/ +typedef _Packed struct t_FmPcdKgInterModuleSchemeRegs { + volatile uint32_t kgse_mode; /**< MODE */ + volatile uint32_t kgse_ekfc; /**< Extract Known Fields Command */ + volatile uint32_t kgse_ekdv; /**< Extract Known Default Value */ + volatile uint32_t kgse_bmch; /**< Bit Mask Command High */ + volatile uint32_t kgse_bmcl; /**< Bit Mask Command Low */ + volatile uint32_t kgse_fqb; /**< Frame Queue Base */ + volatile uint32_t kgse_hc; /**< Hash Command */ + volatile uint32_t kgse_ppc; /**< Policer Profile Command */ + volatile uint32_t kgse_gec[FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< Generic Extract Command */ + volatile uint32_t kgse_spc; /**< KeyGen Scheme Entry Statistic Packet Counter */ + volatile uint32_t kgse_dv0; /**< KeyGen Scheme Entry Default Value 0 */ + volatile uint32_t kgse_dv1; /**< KeyGen Scheme Entry Default Value 1 */ + volatile uint32_t kgse_ccbs; /**< KeyGen Scheme Entry Coarse Classification Bit*/ + volatile uint32_t kgse_mv; /**< KeyGen Scheme Entry Match vector */ +} _PackedType t_FmPcdKgInterModuleSchemeRegs; + +typedef _Packed struct t_FmPcdCcCapwapReassmTimeoutParams { + volatile uint32_t portIdAndCapwapReassmTbl; + volatile uint32_t fqidForTimeOutFrames; + volatile uint32_t timeoutRequestTime; +}_PackedType t_FmPcdCcCapwapReassmTimeoutParams; + + + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +typedef struct { + uint8_t baseEntry; + uint16_t numOfClsPlanEntries; + uint32_t vectors[FM_PCD_MAX_NUM_OF_CLS_PLANS]; +} t_FmPcdKgInterModuleClsPlanSet; + +/**************************************************************************//** + @Description Structure for binding a port to keygen schemes. +*//***************************************************************************/ +typedef struct t_FmPcdKgInterModuleBindPortToSchemes { + uint8_t hardwarePortId; + uint8_t netEnvId; + bool useClsPlan; /**< TRUE if this port uses the clsPlan mechanism */ + uint8_t numOfSchemes; + uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES]; +} t_FmPcdKgInterModuleBindPortToSchemes; + +typedef struct { + uint32_t nextCcNodeInfo; + t_List node; +} t_CcNodeInfo; + +typedef struct +{ + t_Handle h_CcNode; + uint16_t index; + t_List node; +}t_CcNodeInformation; +#define CC_NODE_F_OBJECT(ptr) LIST_OBJECT(ptr, t_CcNodeInformation, node) + +typedef struct +{ + t_Handle h_Manip; + t_List node; +}t_ManipInfo; +#define CC_NEXT_NODE_F_OBJECT(ptr) LIST_OBJECT(ptr, t_CcNodeInfo, node) + +typedef struct { + uint32_t type; + uint8_t prOffset; + + uint16_t dataOffset; + uint8_t poolIndex; + + uint8_t poolIdForManip; + uint8_t numOfTasks; + + uint8_t hardwarePortId; + +} t_GetCcParams; + +typedef struct { + uint32_t type; + int psoSize; + uint32_t nia; + +} t_SetCcParams; + +typedef struct { + t_GetCcParams getCcParams; + t_SetCcParams setCcParams; +} t_FmPortGetSetCcParams; + + +static __inline__ bool TRY_LOCK(t_Handle h_Spinlock, volatile bool *p_Flag) +{ + uint32_t intFlags; + if (h_Spinlock) + intFlags = XX_LockIntrSpinlock(h_Spinlock); + else + intFlags = XX_DisableAllIntr(); + if (*p_Flag) + { + if (h_Spinlock) + XX_UnlockIntrSpinlock(h_Spinlock, intFlags); + else + XX_RestoreAllIntr(intFlags); + return FALSE; + } + *p_Flag = TRUE; + if (h_Spinlock) + XX_UnlockIntrSpinlock(h_Spinlock, intFlags); + else + XX_RestoreAllIntr(intFlags); + return TRUE; +} + +#define RELEASE_LOCK(_flag) _flag = FALSE; + +/**************************************************************************//** + @Collection Defines used for manipulation CC and BMI + @{ +*//***************************************************************************/ +#define INTERNAL_CONTEXT_OFFSET 0x80000000 +#define OFFSET_OF_PR 0x40000000 +#define BUFFER_POOL_ID_FOR_MANIP 0x20000000 +#define NUM_OF_TASKS 0x10000000 +#define OFFSET_OF_DATA 0x08000000 +#define HW_PORT_ID 0x04000000 + + +#define UPDATE_NIA_PNEN 0x80000000 +#define UPDATE_PSO 0x40000000 +#define UPDATE_NIA_PNDN 0x20000000 +#define UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY 0x10000000 +/* @} */ + +/**************************************************************************//** + @Collection Defines used for manipulation CC and CC + @{ +*//***************************************************************************/ +#define UPDATE_NIA_ENQ_WITHOUT_DMA 0x80000000 +#define UPDATE_CC_WITH_TREE 0x40000000 +#define UPDATE_CC_WITH_DELETE_TREE 0x20000000 +/* @} */ + +/**************************************************************************//** + @Collection Defines used for enabling/disabling FM interrupts + @{ +*//***************************************************************************/ +typedef uint32_t t_FmBlockErrIntrEnable; + +#define ERR_INTR_EN_DMA 0x00010000 +#define ERR_INTR_EN_FPM 0x80000000 +#define ERR_INTR_EN_BMI 0x00800000 +#define ERR_INTR_EN_QMI 0x00400000 +#define ERR_INTR_EN_PRS 0x00200000 +#define ERR_INTR_EN_KG 0x00100000 +#define ERR_INTR_EN_PLCR 0x00080000 +#define ERR_INTR_EN_MURAM 0x00040000 +#define ERR_INTR_EN_IRAM 0x00020000 +#define ERR_INTR_EN_10G_MAC0 0x00008000 +#define ERR_INTR_EN_1G_MAC0 0x00004000 +#define ERR_INTR_EN_1G_MAC1 0x00002000 +#define ERR_INTR_EN_1G_MAC2 0x00001000 +#define ERR_INTR_EN_1G_MAC3 0x00000800 +#define ERR_INTR_EN_1G_MAC4 0x00000400 +#define ERR_INTR_EN_MACSEC_MAC0 0x00000200 + + +typedef uint32_t t_FmBlockIntrEnable; + +#define INTR_EN_BMI 0x80000000 +#define INTR_EN_QMI 0x40000000 +#define INTR_EN_PRS 0x20000000 +#define INTR_EN_KG 0x10000000 +#define INTR_EN_PLCR 0x08000000 +#define INTR_EN_1G_MAC0_TMR 0x00080000 +#define INTR_EN_1G_MAC1_TMR 0x00040000 +#define INTR_EN_1G_MAC2_TMR 0x00020000 +#define INTR_EN_1G_MAC3_TMR 0x00010000 +#define INTR_EN_1G_MAC4_TMR 0x00000040 +#define INTR_EN_REV0 0x00008000 +#define INTR_EN_REV1 0x00004000 +#define INTR_EN_REV2 0x00002000 +#define INTR_EN_REV3 0x00001000 +#define INTR_EN_BRK 0x00000080 +#define INTR_EN_TMR 0x01000000 +#define INTR_EN_MACSEC_MAC0 0x00000001 +/* @} */ + +#define FM_MAX_NUM_OF_PORTS (FM_MAX_NUM_OF_OH_PORTS + \ + FM_MAX_NUM_OF_1G_RX_PORTS + \ + FM_MAX_NUM_OF_10G_RX_PORTS + \ + FM_MAX_NUM_OF_1G_TX_PORTS + \ + FM_MAX_NUM_OF_10G_TX_PORTS) + +#define MODULE_NAME_SIZE 30 +#define DUMMY_PORT_ID 0 + +#define FM_LIODN_OFFSET_MASK 0x3FF + +/**************************************************************************//** + @Description NIA Description +*//***************************************************************************/ +#define NIA_ORDER_RESTOR 0x00800000 +#define NIA_ENG_FM_CTL 0x00000000 +#define NIA_ENG_PRS 0x00440000 +#define NIA_ENG_KG 0x00480000 +#define NIA_ENG_PLCR 0x004C0000 +#define NIA_ENG_BMI 0x00500000 +#define NIA_ENG_QMI_ENQ 0x00540000 +#define NIA_ENG_QMI_DEQ 0x00580000 +#define NIA_ENG_MASK 0x007C0000 + +#define NIA_FM_CTL_AC_CC 0x00000006 +#define NIA_FM_CTL_AC_HC 0x0000000C +#define NIA_FM_CTL_AC_IND_MODE_TX 0x00000008 +#define NIA_FM_CTL_AC_IND_MODE_RX 0x0000000A +#define NIA_FM_CTL_AC_FRAG 0x0000000e +#define NIA_FM_CTL_AC_PRE_FETCH 0x00000010 +#define NIA_FM_CTL_AC_POST_FETCH_PCD 0x00000012 +#define NIA_FM_CTL_AC_POST_FETCH_PCD_UDP_LEN 0x00000018 +#define NIA_FM_CTL_AC_POST_FETCH_NO_PCD 0x00000012 +#define NIA_FM_CTL_AC_FRAG_CHECK 0x00000014 +#define NIA_FM_CTL_AC_MASK 0x0000001f + +#define NIA_BMI_AC_ENQ_FRAME 0x00000002 +#define NIA_BMI_AC_TX_RELEASE 0x000002C0 +#define NIA_BMI_AC_RELEASE 0x000000C0 +#define NIA_BMI_AC_DISCARD 0x000000C1 +#define NIA_BMI_AC_TX 0x00000274 +#define NIA_BMI_AC_FETCH 0x00000208 +#define NIA_BMI_AC_MASK 0x000003FF + +#define NIA_KG_DIRECT 0x00000100 +#define NIA_KG_CC_EN 0x00000200 +#define NIA_PLCR_ABSOLUTE 0x00008000 + +#define NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA 0x00000202 + +/**************************************************************************//** + @Description Port Id defines +*//***************************************************************************/ +#define BASE_OH_PORTID 1 +#define BASE_1G_RX_PORTID 8 +#define BASE_10G_RX_PORTID 0x10 +#define BASE_1G_TX_PORTID 0x28 +#define BASE_10G_TX_PORTID 0x30 + +#define FM_PCD_PORT_OH_BASE_INDX 0 +#define FM_PCD_PORT_1G_RX_BASE_INDX (FM_PCD_PORT_OH_BASE_INDX+FM_MAX_NUM_OF_OH_PORTS) +#define FM_PCD_PORT_10G_RX_BASE_INDX (FM_PCD_PORT_1G_RX_BASE_INDX+FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_PCD_PORT_1G_TX_BASE_INDX (FM_PCD_PORT_10G_RX_BASE_INDX+FM_MAX_NUM_OF_10G_RX_PORTS) +#define FM_PCD_PORT_10G_TX_BASE_INDX (FM_PCD_PORT_1G_TX_BASE_INDX+FM_MAX_NUM_OF_1G_TX_PORTS) + +#if (FM_MAX_NUM_OF_OH_PORTS > 0) +#define CHECK_PORT_ID_OH_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_OH_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id")) +#else +#define CHECK_PORT_ID_OH_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_1G_RX_PORTS > 0) +#define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_1G_RX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id")) +#else +#define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_10G_RX_PORTS > 0) +#define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_10G_RX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id")) +#else +#define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_1G_TX_PORTS > 0) +#define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_1G_TX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id")) +#else +#define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id")) +#endif +#if (FM_MAX_NUM_OF_10G_TX_PORTS > 0) +#define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId) \ + if ((_relativePortId) >= FM_MAX_NUM_OF_10G_TX_PORTS) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id")) +#else +#define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId) \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id")) +#endif + + +#define SW_PORT_ID_TO_HW_PORT_ID(_port, _type, _relativePortId) \ +switch(_type) { \ + case(e_FM_PORT_TYPE_OH_OFFLINE_PARSING): \ + case(e_FM_PORT_TYPE_OH_HOST_COMMAND): \ + CHECK_PORT_ID_OH_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_OH_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_RX): \ + CHECK_PORT_ID_1G_RX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_1G_RX_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_RX_10G): \ + CHECK_PORT_ID_10G_RX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_10G_RX_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_TX): \ + CHECK_PORT_ID_1G_TX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_1G_TX_PORTID + (_relativePortId)); \ + break; \ + case(e_FM_PORT_TYPE_TX_10G): \ + CHECK_PORT_ID_10G_TX_PORTS(_relativePortId); \ + _port = (uint8_t)(BASE_10G_TX_PORTID + (_relativePortId)); \ + break; \ + default: \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal port type")); \ + _port = 0; \ + break; \ +} + +#define HW_PORT_ID_TO_SW_PORT_ID(_relativePortId, hardwarePortId) \ +{ if (((hardwarePortId) >= BASE_OH_PORTID) && \ + ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_OH_PORTID); \ + else if (((hardwarePortId) >= BASE_10G_TX_PORTID) && \ + ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID); \ + else if (((hardwarePortId) >= BASE_1G_TX_PORTID) && \ + ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID); \ + else if (((hardwarePortId) >= BASE_10G_RX_PORTID) && \ + ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID); \ + else if (((hardwarePortId) >= BASE_1G_RX_PORTID) && \ + ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS)) \ + _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID); \ + else { \ + _relativePortId = (uint8_t)DUMMY_PORT_ID; \ + ASSERT_COND(TRUE); \ + } \ +} + +#define HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId) \ +do { \ + if (((hardwarePortId) >= BASE_OH_PORTID) && ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_OH_PORTID+FM_PCD_PORT_OH_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_1G_RX_PORTID) && \ + ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID+FM_PCD_PORT_1G_RX_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_10G_RX_PORTID) && \ + ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID+FM_PCD_PORT_10G_RX_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_1G_TX_PORTID) && \ + ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID+FM_PCD_PORT_1G_TX_BASE_INDX); \ + else if (((hardwarePortId) >= BASE_10G_TX_PORTID) && \ + ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS)) \ + swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID+FM_PCD_PORT_10G_TX_BASE_INDX); \ + else ASSERT_COND(FALSE); \ +} while (0) + +#define SW_PORT_INDX_TO_HW_PORT_ID(hardwarePortId, swPortIndex) \ +do { \ + if (((swPortIndex) >= FM_PCD_PORT_OH_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_1G_RX_BASE_INDX)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_OH_BASE_INDX+BASE_OH_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_1G_RX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_RX_BASE_INDX)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_RX_BASE_INDX+BASE_1G_RX_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_10G_RX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_RX_BASE_INDX+BASE_10G_RX_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_1G_TX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_TX_BASE_INDX)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_TX_BASE_INDX+BASE_1G_TX_PORTID); \ + else if (((swPortIndex) >= FM_PCD_PORT_10G_TX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS)) \ + hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_TX_BASE_INDX+BASE_10G_TX_PORTID); \ + else ASSERT_COND(FALSE); \ +} while (0) + +#define BMI_FIFO_UNITS 0x100 + +typedef struct { + void (*f_Isr) (t_Handle h_Arg); + t_Handle h_SrcHandle; + uint8_t guestId; +} t_FmIntrSrc; + +#define ILLEGAL_HDR_NUM 0xFF +#define NO_HDR_NUM FM_PCD_PRS_NUM_OF_HDRS + +#define IS_PRIVATE_HEADER(hdr) (((hdr) == HEADER_TYPE_USER_DEFINED_SHIM1) || \ + ((hdr) == HEADER_TYPE_USER_DEFINED_SHIM2)) +#define IS_SPECIAL_HEADER(hdr) ((hdr) == HEADER_TYPE_MACSEC) + +#define GET_PRS_HDR_NUM(num, hdr) \ +switch(hdr) \ +{ case(HEADER_TYPE_ETH): num = 0; break; \ + case(HEADER_TYPE_LLC_SNAP): num = 1; break; \ + case(HEADER_TYPE_VLAN): num = 2; break; \ + case(HEADER_TYPE_PPPoE): num = 3; break; \ + case(HEADER_TYPE_MPLS): num = 4; break; \ + case(HEADER_TYPE_IPv4): num = 5; break; \ + case(HEADER_TYPE_IPv6): num = 6; break; \ + case(HEADER_TYPE_GRE): num = 7; break; \ + case(HEADER_TYPE_MINENCAP): num = 8; break; \ + case(HEADER_TYPE_USER_DEFINED_L3): num = 9; break; \ + case(HEADER_TYPE_TCP): num = 10; break; \ + case(HEADER_TYPE_UDP): num = 11; break; \ + case(HEADER_TYPE_IPSEC_AH): \ + case(HEADER_TYPE_IPSEC_ESP): num = 12; break; \ + case(HEADER_TYPE_SCTP): num = 13; break; \ + case(HEADER_TYPE_DCCP): num = 14; break; \ + case(HEADER_TYPE_USER_DEFINED_L4): num = 15; break; \ + case(HEADER_TYPE_USER_DEFINED_SHIM1): \ + case(HEADER_TYPE_USER_DEFINED_SHIM2): \ + case(HEADER_TYPE_MACSEC): \ + num = NO_HDR_NUM; break; \ + default: \ + REPORT_ERROR(MAJOR, E_NOT_SUPPORTED, ("Unsupported header for parser"));\ + num = ILLEGAL_HDR_NUM; break; \ +} + +/***********************************************************************/ +/* Policer defines */ +/***********************************************************************/ +#define FM_PCD_PLCR_PAR_GO 0x80000000 +#define FM_PCD_PLCR_PAR_PWSEL_MASK 0x0000FFFF +#define FM_PCD_PLCR_PAR_R 0x40000000 + +/* shifts */ +#define FM_PCD_PLCR_PAR_PNUM_SHIFT 16 + + +/***********************************************************************/ +/* Keygen defines */ +/***********************************************************************/ +/* maskes */ +#define KG_SCH_PP_SHIFT_HIGH 0x80000000 +#define KG_SCH_PP_NO_GEN 0x10000000 +#define KG_SCH_PP_SHIFT_LOW 0x0000F000 +#define KG_SCH_MODE_NIA_PLCR 0x40000000 +#define KG_SCH_GEN_EXTRACT_TYPE 0x00008000 +#define KG_SCH_BITMASK_MASK 0x000000FF +#define KG_SCH_GEN_VALID 0x80000000 +#define KG_SCH_GEN_MASK 0x00FF0000 +#define FM_PCD_KG_KGAR_ERR 0x20000000 +#define FM_PCD_KG_KGAR_SEL_CLS_PLAN_ENTRY 0x01000000 +#define FM_PCD_KG_KGAR_SEL_PORT_ENTRY 0x02000000 +#define FM_PCD_KG_KGAR_SEL_PORT_WSEL_SP 0x00008000 +#define FM_PCD_KG_KGAR_SEL_PORT_WSEL_CPP 0x00004000 +#define FM_PCD_KG_KGAR_WSEL_MASK 0x0000FF00 +#define KG_SCH_HASH_CONFIG_NO_FQID 0x80000000 +#define KG_SCH_HASH_CONFIG_SYM 0x40000000 + +#define FM_PCD_KG_KGAR_GO 0x80000000 +#define FM_PCD_KG_KGAR_READ 0x40000000 +#define FM_PCD_KG_KGAR_WRITE 0x00000000 +#define FM_PCD_KG_KGAR_SEL_SCHEME_ENTRY 0x00000000 +#define FM_PCD_KG_KGAR_SCHEME_WSEL_UPDATE_CNT 0x00008000 + + +typedef uint32_t t_KnownFieldsMasks; + +#define KG_SCH_KN_PORT_ID 0x80000000 +#define KG_SCH_KN_MACDST 0x40000000 +#define KG_SCH_KN_MACSRC 0x20000000 +#define KG_SCH_KN_TCI1 0x10000000 +#define KG_SCH_KN_TCI2 0x08000000 +#define KG_SCH_KN_ETYPE 0x04000000 +#define KG_SCH_KN_PPPSID 0x02000000 +#define KG_SCH_KN_PPPID 0x01000000 +#define KG_SCH_KN_MPLS1 0x00800000 +#define KG_SCH_KN_MPLS2 0x00400000 +#define KG_SCH_KN_MPLS_LAST 0x00200000 +#define KG_SCH_KN_IPSRC1 0x00100000 +#define KG_SCH_KN_IPDST1 0x00080000 +#define KG_SCH_KN_PTYPE1 0x00040000 +#define KG_SCH_KN_IPTOS_TC1 0x00020000 +#define KG_SCH_KN_IPV6FL1 0x00010000 +#define KG_SCH_KN_IPSRC2 0x00008000 +#define KG_SCH_KN_IPDST2 0x00004000 +#define KG_SCH_KN_PTYPE2 0x00002000 +#define KG_SCH_KN_IPTOS_TC2 0x00001000 +#define KG_SCH_KN_IPV6FL2 0x00000800 +#define KG_SCH_KN_GREPTYPE 0x00000400 +#define KG_SCH_KN_IPSEC_SPI 0x00000200 +#define KG_SCH_KN_IPSEC_NH 0x00000100 +#define KG_SCH_KN_L4PSRC 0x00000004 +#define KG_SCH_KN_L4PDST 0x00000002 +#define KG_SCH_KN_TFLG 0x00000001 + +typedef uint8_t t_GenericCodes; + +#define KG_SCH_GEN_SHIM1 0x70 +#define KG_SCH_GEN_DEFAULT 0x10 +#define KG_SCH_GEN_PARSE_RESULT_N_FQID 0x20 +#define KG_SCH_GEN_START_OF_FRM 0x40 +#define KG_SCH_GEN_SHIM2 0x71 +#define KG_SCH_GEN_IP_PID_NO_V 0x72 +#define KG_SCH_GEN_ETH 0x03 +#define KG_SCH_GEN_ETH_NO_V 0x73 +#define KG_SCH_GEN_SNAP 0x04 +#define KG_SCH_GEN_SNAP_NO_V 0x74 +#define KG_SCH_GEN_VLAN1 0x05 +#define KG_SCH_GEN_VLAN1_NO_V 0x75 +#define KG_SCH_GEN_VLAN2 0x06 +#define KG_SCH_GEN_VLAN2_NO_V 0x76 +#define KG_SCH_GEN_ETH_TYPE 0x07 +#define KG_SCH_GEN_ETH_TYPE_NO_V 0x77 +#define KG_SCH_GEN_PPP 0x08 +#define KG_SCH_GEN_PPP_NO_V 0x78 +#define KG_SCH_GEN_MPLS1 0x09 +#define KG_SCH_GEN_MPLS2 0x19 +#define KG_SCH_GEN_MPLS3 0x29 +#define KG_SCH_GEN_MPLS1_NO_V 0x79 +#define KG_SCH_GEN_MPLS_LAST 0x0a +#define KG_SCH_GEN_MPLS_LAST_NO_V 0x7a +#define KG_SCH_GEN_IPV4 0x0b +#define KG_SCH_GEN_IPV6 0x1b +#define KG_SCH_GEN_L3_NO_V 0x7b +#define KG_SCH_GEN_IPV4_TUNNELED 0x0c +#define KG_SCH_GEN_IPV6_TUNNELED 0x1c +#define KG_SCH_GEN_MIN_ENCAP 0x2c +#define KG_SCH_GEN_IP2_NO_V 0x7c +#define KG_SCH_GEN_GRE 0x0d +#define KG_SCH_GEN_GRE_NO_V 0x7d +#define KG_SCH_GEN_TCP 0x0e +#define KG_SCH_GEN_UDP 0x1e +#define KG_SCH_GEN_IPSEC_AH 0x2e +#define KG_SCH_GEN_SCTP 0x3e +#define KG_SCH_GEN_DCCP 0x4e +#define KG_SCH_GEN_IPSEC_ESP 0x6e +#define KG_SCH_GEN_L4_NO_V 0x7e +#define KG_SCH_GEN_NEXTHDR 0x7f + +/* shifts */ +#define KG_SCH_PP_SHIFT_HIGH_SHIFT 27 +#define KG_SCH_PP_SHIFT_LOW_SHIFT 12 +#define KG_SCH_PP_MASK_SHIFT 16 +#define KG_SCH_MODE_CCOBASE_SHIFT 24 +#define KG_SCH_DEF_MAC_ADDR_SHIFT 30 +#define KG_SCH_DEF_TCI_SHIFT 28 +#define KG_SCH_DEF_ENET_TYPE_SHIFT 26 +#define KG_SCH_DEF_PPP_SESSION_ID_SHIFT 24 +#define KG_SCH_DEF_PPP_PROTOCOL_ID_SHIFT 22 +#define KG_SCH_DEF_MPLS_LABEL_SHIFT 20 +#define KG_SCH_DEF_IP_ADDR_SHIFT 18 +#define KG_SCH_DEF_PROTOCOL_TYPE_SHIFT 16 +#define KG_SCH_DEF_IP_TOS_TC_SHIFT 14 +#define KG_SCH_DEF_IPV6_FLOW_LABEL_SHIFT 12 +#define KG_SCH_DEF_IPSEC_SPI_SHIFT 10 +#define KG_SCH_DEF_L4_PORT_SHIFT 8 +#define KG_SCH_DEF_TCP_FLAG_SHIFT 6 +#define KG_SCH_HASH_CONFIG_SHIFT_SHIFT 24 +#define KG_SCH_GEN_MASK_SHIFT 16 +#define KG_SCH_GEN_HT_SHIFT 8 +#define KG_SCH_GEN_SIZE_SHIFT 24 +#define KG_SCH_GEN_DEF_SHIFT 29 +#define FM_PCD_KG_KGAR_NUM_SHIFT 16 + + +/* others */ +#define NUM_OF_SW_DEFAULTS 3 +#define MAX_PP_SHIFT 15 +#define MAX_KG_SCH_SIZE 16 +#define MASK_FOR_GENERIC_BASE_ID 0x20 +#define MAX_HASH_SHIFT 40 +#define MAX_KG_SCH_FQID_BIT_OFFSET 31 +#define MAX_KG_SCH_PP_BIT_OFFSET 15 +#define MAX_DIST_FQID_SHIFT 23 + +#define GET_MASK_SEL_SHIFT(shift,i) \ +switch(i) { \ + case(0):shift = 26;break; \ + case(1):shift = 20;break; \ + case(2):shift = 10;break; \ + case(3):shift = 4;break; \ + default: \ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG);\ +} + +#define GET_MASK_OFFSET_SHIFT(shift,i) \ +switch(i) { \ + case(0):shift = 16;break; \ + case(1):shift = 0;break; \ + case(2):shift = 28;break; \ + case(3):shift = 24;break; \ + default: \ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG);\ +} + +#define GET_MASK_SHIFT(shift,i) \ +switch(i) { \ + case(0):shift = 24;break; \ + case(1):shift = 16;break; \ + case(2):shift = 8;break; \ + case(3):shift = 0;break; \ + default: \ + RETURN_ERROR(MAJOR, E_INVALID_VALUE, NO_MSG);\ +} + +#define FM_PCD_MAX_NUM_OF_OPTIONS(clsPlanEntries) ((clsPlanEntries==256)? 8:((clsPlanEntries==128)? 7: ((clsPlanEntries==64)? 6: ((clsPlanEntries==32)? 5:0)))) + +typedef struct { + uint16_t num; + uint8_t hardwarePortId; + uint16_t plcrProfilesBase; +} t_FmPortPcdInterModulePlcrParams; + +/**************************************************************************//** + @Description A structure for initializing a keygen classification plan group +*//***************************************************************************/ +typedef struct t_FmPcdKgInterModuleClsPlanGrpParams { + uint8_t netEnvId; /* IN */ + bool grpExists; /* OUT (unused in FmPcdKgBuildClsPlanGrp)*/ + uint8_t clsPlanGrpId; /* OUT */ + bool emptyClsPlanGrp; /* OUT */ + uint8_t numOfOptions; /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/ + protocolOpt_t options[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; + /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/ + uint32_t optVectors[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)]; + /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/ +} t_FmPcdKgInterModuleClsPlanGrpParams; + +typedef struct t_FmInterModulePortRxPoolsParams +{ + uint8_t numOfPools; + uint16_t secondLargestBufSize; + uint16_t largestBufSize; +} t_FmInterModulePortRxPoolsParams; + + +typedef t_Error (t_FmPortGetSetCcParamsCallback) (t_Handle h_FmPort, + t_FmPortGetSetCcParams *p_FmPortGetSetCcParams); + + +t_Handle FmPcdGetHcHandle(t_Handle h_FmPcd); +uint32_t FmPcdGetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr); +uint32_t FmPcdGetLcv(t_Handle h_FmPcd, uint32_t netEnvId, uint8_t hdrNum); +uint32_t FmPcdGetMacsecLcv(t_Handle h_FmPcd, uint32_t netEnvId); +void FmPcdIncNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId); +void FmPcdDecNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId); +void FmPcdPortRegister(t_Handle h_FmPcd, t_Handle h_FmPort, uint8_t hardwarePortId); +uint32_t FmPcdLock(t_Handle h_FmPcd); +void FmPcdUnlock(t_Handle h_FmPcd, uint32_t intFlags); +bool FmPcdNetEnvIsHdrExist(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr); +bool FmPcdIsIpFrag(t_Handle h_FmPcd, uint8_t netEnvId); + +t_Error FmPcdCcReleaseModifiedDataStructure(t_Handle h_FmPcd, t_List *h_FmPcdOldPointersLst, t_List *h_FmPcdNewPointersLst, uint16_t numOfGoodChanges, t_Handle *h_Params); +uint32_t FmPcdCcGetNodeAddrOffset(t_Handle h_FmPcd, t_Handle h_Pointer); +t_Error FmPcdCcRemoveKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPCdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_Params); +t_Error FmPcdCcModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcModifyMissNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams); +t_Error FmPcdCcModifyNextEngineParamTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams, t_List *h_OldLst, t_List *h_NewLst, t_Handle *h_AdditionalParams); +t_Error FmPcdCcModiyNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, uint8_t keyIndex,t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams,t_List *h_OldPointer, t_List *h_NewPointer,t_Handle *h_AdditionalParams); +uint32_t FmPcdCcGetNodeAddrOffsetFromNodeInfo(t_Handle h_FmPcd, t_Handle h_Pointer); +t_Error FmPcdCcTreeTryLock(t_Handle h_FmPcdCcTree); +t_Error FmPcdCcNodeTreeTryLock(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_List *p_List); +void FmPcdCcTreeReleaseLock(t_Handle h_FmPcdCcTree); +void FmPcdCcNodeTreeReleaseLock(t_List *p_List); +t_Handle FmPcdCcTreeGetSavedManipParams(t_Handle h_FmTree, uint8_t manipIndx); +void FmPcdCcTreeSetSavedManipParams(t_Handle h_FmTree, t_Handle h_SavedManipParams, uint8_t manipIndx); + +bool FmPcdKgIsSchemeValidSw(t_Handle h_FmPcd, uint8_t schemeId); +uint8_t FmPcdKgGetClsPlanGrpBase(t_Handle h_FmPcd, uint8_t clsPlanGrp); +uint16_t FmPcdKgGetClsPlanGrpSize(t_Handle h_FmPcd, uint8_t clsPlanGrp); + +t_Error FmPcdKgBuildScheme(t_Handle h_FmPcd, t_FmPcdKgSchemeParams *p_Scheme, t_FmPcdKgInterModuleSchemeRegs *p_SchemeRegs); +t_Error FmPcdKgBuildClsPlanGrp(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_Grp, t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet); +uint8_t FmPcdKgGetNumOfPartitionSchemes(t_Handle h_FmPcd); +uint8_t FmPcdKgGetPhysicalSchemeId(t_Handle h_FmPcd, uint8_t schemeId); +uint8_t FmPcdKgGetRelativeSchemeId(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgDestroyClsPlanGrp(t_Handle h_FmPcd, uint8_t grpId); +void FmPcdKgValidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId); +t_Error FmPcdKgCheckInvalidateSchemeSw(t_Handle h_FmPcd, uint8_t schemeId); +t_Error FmPcdKgBuildBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPortToSchemes, uint32_t *p_SpReg, bool add); +void FmPcdKgIncSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort); +void FmPcdKgDecSchemeOwners(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPort); +bool FmPcdKgIsDriverClsPlan(t_Handle h_FmPcd); +bool FmPcdKgHwSchemeIsValid(uint32_t schemeModeReg); +uint32_t FmPcdKgBuildCppReg(t_Handle h_FmPcd, uint8_t clsPlanGrpId); +uint32_t FmPcdKgBuildWriteSchemeActionReg(uint8_t schemeId, bool updateCounter); +uint32_t FmPcdKgBuildReadSchemeActionReg(uint8_t schemeId); +uint32_t FmPcdKgBuildWriteClsPlanBlockActionReg(uint8_t grpId); +uint32_t FmPcdKgBuildReadClsPlanBlockActionReg(uint8_t grpId); +uint32_t FmPcdKgBuildWritePortSchemeBindActionReg(uint8_t hardwarePortId); +uint32_t FmPcdKgBuildReadPortSchemeBindActionReg(uint8_t hardwarePortId); +uint32_t FmPcdKgBuildWritePortClsPlanBindActionReg(uint8_t hardwarePortId); +uint8_t FmPcdKgGetSchemeSwId(t_Handle h_FmPcd, uint8_t schemeHwId); +t_Error FmPcdKgSchemeTryLock(t_Handle h_FmPcd, uint8_t schemeId, bool intr); +void FmPcdKgReleaseSchemeLock(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgUpatePointedOwner(t_Handle h_FmPcd, uint8_t schemeId, bool add); + +t_Error FmPcdKgBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind); +t_Error FmPcdKgUnbindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind); +uint32_t FmPcdKgGetRequiredAction(t_Handle h_FmPcd, uint8_t schemeId); +uint32_t FmPcdKgGetPointedOwners(t_Handle h_FmPcd, uint8_t schemeId); +e_FmPcdDoneAction FmPcdKgGetDoneAction(t_Handle h_FmPcd, uint8_t schemeId); +e_FmPcdEngine FmPcdKgGetNextEngine(t_Handle h_FmPcd, uint8_t schemeId); +void FmPcdKgUpdateRequiredAction(t_Handle h_FmPcd, uint8_t schemeId, uint32_t requiredAction); +bool FmPcdKgIsDirectPlcr(t_Handle h_FmPcd, uint8_t schemeId); +bool FmPcdKgIsDistrOnPlcrProfile(t_Handle h_FmPcd, uint8_t schemeId); +uint16_t FmPcdKgGetRelativeProfileId(t_Handle h_FmPcd, uint8_t schemeId); + +/* FM-PCD parser API routines */ +t_Error FmPcdPrsIncludePortInStatistics(t_Handle p_FmPcd, uint8_t hardwarePortId, bool include); + +/* FM-PCD policer API routines */ +t_Error FmPcdPlcrAllocProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles); +t_Error FmPcdPlcrFreeProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId); +bool FmPcdPlcrIsProfileValid(t_Handle h_FmPcd, uint16_t absoluteProfileId); +uint16_t FmPcdPlcrGetPortProfilesBase(t_Handle h_FmPcd, uint8_t hardwarePortId); +uint16_t FmPcdPlcrGetPortNumOfProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId); +uint32_t FmPcdPlcrBuildWritePlcrActionRegs(uint16_t absoluteProfileId); +uint32_t FmPcdPlcrBuildCounterProfileReg(e_FmPcdPlcrProfileCounters counter); +uint32_t FmPcdPlcrBuildWritePlcrActionReg(uint16_t absoluteProfileId); +uint32_t FmPcdPlcrBuildReadPlcrActionReg(uint16_t absoluteProfileId); +t_Error FmPcdPlcrBuildProfile(t_Handle h_FmPcd, t_FmPcdPlcrProfileParams *p_Profile, t_FmPcdPlcrInterModuleProfileRegs *p_PlcrRegs); +t_Error FmPcdPlcrGetAbsoluteProfileId(t_Handle h_FmPcd, + e_FmPcdProfileTypeSelection profileType, + t_Handle h_FmPort, + uint16_t relativeProfile, + uint16_t *p_AbsoluteId); +void FmPcdPlcrInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId); +void FmPcdPlcrValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId); +bool FmPcdPlcrHwProfileIsValid(uint32_t profileModeReg); +t_Error FmPcdPlcrProfileTryLock(t_Handle h_FmPcd, uint16_t profileId, bool intr); +void FmPcdPlcrReleaseProfileLock(t_Handle h_FmPcd, uint16_t profileId); +uint32_t FmPcdPlcrGetRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId); +uint32_t FmPcdPlcrGetPointedOwners(t_Handle h_FmPcd, uint16_t absoluteProfileId); +void FmPcdPlcrUpatePointedOwner(t_Handle h_FmPcd, uint16_t absoluteProfileId, bool add); +uint32_t FmPcdPlcrBuildNiaProfileReg(bool green, bool yellow, bool red); +void FmPcdPlcrUpdateRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId, uint32_t requiredAction); + +/* FM-PCD Coarse-Classification API routines */ +uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode); +uint8_t FmPcdCcGetOffset(t_Handle h_CcNode); + +t_Error FmPcdManipUpdate(t_Handle h_FmPcd, t_Handle h_FmPort, t_Handle h_Manip, t_Handle h_Ad, bool validate, int level, t_Handle h_FmTree, bool modify); +t_Error FmPortGetSetCcParams(t_Handle h_FmPort, t_FmPortGetSetCcParams *p_FmPortGetSetCcParams); +uint32_t FmPcdManipGetRequiredAction (t_Handle h_Manip); +t_Error FmPcdCcBindTree(t_Handle h_FmPcd, t_Handle h_CcTree, uint32_t *p_Offset,t_Handle h_FmPort); +t_Error FmPcdCcUnbindTree(t_Handle h_FmPcd, t_Handle h_CcTree); + +t_Error FmPcdPlcrCcGetSetParams(t_Handle h_FmPcd, uint16_t profileIndx,uint32_t requiredAction); +t_Error FmPcdKgCcGetSetParams(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t requiredAction); + +uint8_t FmPortGetNetEnvId(t_Handle h_FmPort); +uint8_t FmPortGetHardwarePortId(t_Handle h_FmPort); +uint32_t FmPortGetPcdEngines(t_Handle h_FmPort); +void FmPortPcdKgSwUnbindClsPlanGrp (t_Handle h_FmPort); +t_Error FmPortAttachPCD(t_Handle h_FmPort); +t_Error FmPcdKgSetOrBindToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t netEnvId, protocolOpt_t *p_OptArray, uint8_t *p_ClsPlanGrpId, bool *p_IsEmptyClsPlanGrp); +t_Error FmPcdKgDeleteOrUnbindPortToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId); + + +/**************************************************************************//** + @Function FmRegisterIntr + + @Description Used to register an inter-module event handler to be processed by FM + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] mod The module that causes the event + @Param[in] modId Module id - if more than 1 instansiation of this + mode exists,0 otherwise. + @Param[in] intrType Interrupt type (error/normal) selection. + @Param[in] f_Isr The interrupt service routine. + @Param[in] h_Arg Argument to be passed to f_Isr. + + @Return None. +*//***************************************************************************/ +void FmRegisterIntr(t_Handle h_Fm, + e_FmEventModules mod, + uint8_t modId, + e_FmIntrType intrType, + void (*f_Isr) (t_Handle h_Arg), + t_Handle h_Arg); + +/**************************************************************************//** + @Function FmUnregisterIntr + + @Description Used to un-register an inter-module event handler that was processed by FM + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] mod The module that causes the event + @Param[in] modId Module id - if more than 1 instansiation of this + mode exists,0 otherwise. + @Param[in] intrType Interrupt type (error/normal) selection. + + @Return None. +*//***************************************************************************/ +void FmUnregisterIntr(t_Handle h_Fm, + e_FmEventModules mod, + uint8_t modId, + e_FmIntrType intrType); + +/**************************************************************************//** + @Function FmRegisterFmCtlIntr + + @Description Used to register to one of the fmCtl events in the FM module + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] eventRegId FmCtl event id (0-7). + @Param[in] f_Isr The interrupt service routine. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FmRegisterFmCtlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event)); + + +/**************************************************************************//** + @Description enum for defining MAC types +*//***************************************************************************/ +typedef enum e_FmMacType { + e_FM_MAC_10G = 0, /**< 10G MAC */ + e_FM_MAC_1G /**< 1G MAC */ +} e_FmMacType; + +/**************************************************************************//** + @Description Structure for port-FM communication during FM_PORT_Init. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. + Some fields are optional (depending on configuration) and + will be analized by the port and FM modules accordingly. +*//***************************************************************************/ +typedef struct t_FmInterModulePortInitParams { + uint8_t hardwarePortId; /**< IN. port Id */ + e_FmPortType portType; /**< IN. Port type */ + bool independentMode; /**< IN. TRUE if FM Port operates in independent mode */ + uint16_t liodnOffset; /**< IN. Port's requested resource */ + uint8_t numOfTasks; /**< IN. Port's requested resource */ + uint8_t numOfExtraTasks; /**< IN. Port's requested resource */ + uint8_t numOfOpenDmas; /**< IN. Port's requested resource */ + uint8_t numOfExtraOpenDmas; /**< IN. Port's requested resource */ + uint32_t sizeOfFifo; /**< IN. Port's requested resource */ + uint32_t extraSizeOfFifo; /**< IN. Port's requested resource */ + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ + uint16_t liodnBase; /**< IN. Irrelevant for P4080 rev 1. + LIODN base for this port, to be + used together with LIODN offset. */ + t_FmPhysAddr fmMuramPhysBaseAddr;/**< OUT. FM-MURAM physical address*/ +} t_FmInterModulePortInitParams; + +/**************************************************************************//** + @Description Structure for port-FM communication during FM_PORT_Free. +*//***************************************************************************/ +typedef struct t_FmInterModulePortFreeParams { + uint8_t hardwarePortId; /**< IN. port Id */ + e_FmPortType portType; /**< IN. Port type */ +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + uint8_t deqPipelineDepth; /**< IN. Port's requested resource */ +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ +} t_FmInterModulePortFreeParams; + +/**************************************************************************//** + @Function FmGetPcdPrsBaseAddr + + @Description Get the base address of the Parser from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return Base address. +*//***************************************************************************/ +uintptr_t FmGetPcdPrsBaseAddr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetPcdKgBaseAddr + + @Description Get the base address of the Keygen from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return Base address. +*//***************************************************************************/ +uintptr_t FmGetPcdKgBaseAddr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetPcdPlcrBaseAddr + + @Description Get the base address of the Policer from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return Base address. +*//***************************************************************************/ +uintptr_t FmGetPcdPlcrBaseAddr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetMuramHandle + + @Description Get the handle of the MURAM from the FM module + + @Param[in] h_Fm A handle to an FM Module. + + @Return MURAM module handle. +*//***************************************************************************/ +t_Handle FmGetMuramHandle(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetPhysicalMuramBase + + @Description Get the physical base address of the MURAM from the FM module + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] fmPhysAddr Physical MURAM base + + @Return Physical base address. +*//***************************************************************************/ +void FmGetPhysicalMuramBase(t_Handle h_Fm, t_FmPhysAddr *fmPhysAddr); + +/**************************************************************************//** + @Function FmGetTimeStampScale + + @Description Used internally by other modules in order to get the timeStamp + period as requested by the application. + + @Param[in] h_Fm A handle to an FM Module. + + @Return TimeStamp period in nanoseconds. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +uint32_t FmGetTimeStampScale(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmResumeStalledPort + + @Description Used internally by FM port to release a stalled port. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] hardwarePortId HW port id. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmResumeStalledPort(t_Handle h_Fm, uint8_t hardwarePortId); + +/**************************************************************************//** + @Function FmIsPortStalled + + @Description Used internally by FM port to read the port's status. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] hardwarePortId HW port id. + @Param[in] p_IsStalled A pointer to the boolean port stalled state + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmIsPortStalled(t_Handle h_Fm, uint8_t hardwarePortId, bool *p_IsStalled); + +/**************************************************************************//** + @Function FmResetMac + + @Description Used by MAC driver to reset the MAC registers + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] type MAC type. + @Param[in] macId MAC id - according to type. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmResetMac(t_Handle h_Fm, e_FmMacType type, uint8_t macId); + +/**************************************************************************//** + @Function FmGetClockFreq + + @Description Used by MAC driver to get the FM clock frequency + + @Param[in] h_Fm A handle to an FM Module. + + @Return clock-freq on success; 0 otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +uint16_t FmGetClockFreq(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetId + + @Description Used by PCD driver to read rhe FM id + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +uint8_t FmGetId(t_Handle h_Fm); + +/**************************************************************************//** + @Function FmGetSetPortParams + + @Description Used by FM-PORT driver to pass and receive parameters between + PORT and FM modules. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in,out] p_PortParams A structure of FM Port parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmGetSetPortParams(t_Handle h_Fm,t_FmInterModulePortInitParams *p_PortParams); + +/**************************************************************************//** + @Function FmFreePortParams + + @Description Used by FM-PORT driver to free port's resources within the FM. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in,out] p_PortParams A structure of FM Port parameters. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FmFreePortParams(t_Handle h_Fm,t_FmInterModulePortFreeParams *p_PortParams); + +/**************************************************************************//** + @Function FmSetPortToWorkWithOneRiscOnly + + @Description Used by FM-PORT driver to pass parameter between + PORT and FM modules for working with number of RISC.. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in,out] p_PortParams A structure of FM Port parameters. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FmSetNumOfRiscsPerPort(t_Handle h_Fm, uint8_t hardwarePortId, uint8_t numOfFmanCtrls); + + +void FmRegisterPcd(t_Handle h_Fm, t_Handle h_FmPcd); +void FmUnregisterPcd(t_Handle h_Fm); +t_Handle FmGetPcdHandle(t_Handle h_Fm); +bool FmRamsEccIsExternalCtl(t_Handle h_Fm); +t_Error FmEnableRamsEcc(t_Handle h_Fm); +t_Error FmDisableRamsEcc(t_Handle h_Fm); +void FmGetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo); +t_Error FmAllocFmanCtrlEventReg(t_Handle h_Fm, uint8_t *p_EventId); +void FmFreeFmanCtrlEventReg(t_Handle h_Fm, uint8_t eventId); +void FmSetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, uint32_t enableEvents); +uint32_t FmGetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId); +void FmRegisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event), t_Handle h_Arg); +void FmUnregisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId); +t_Error FmSetMacMaxFrame(t_Handle h_Fm, e_FmMacType type, uint8_t macId, uint16_t mtu); +bool FmIsMaster(t_Handle h_Fm); +uint8_t FmGetGuestId(t_Handle h_Fm); +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +t_Error Fm10GTxEccWorkaround(t_Handle h_Fm, uint8_t macId); +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ + +void FmMuramClear(t_Handle h_FmMuram); +t_Error FmSetNumOfOpenDmas(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfOpenDmas, + uint8_t numOfExtraOpenDmas, + bool initialConfig); +t_Error FmSetNumOfTasks(t_Handle h_Fm, + uint8_t hardwarePortId, + uint8_t numOfTasks, + uint8_t numOfExtraTasks, + bool initialConfig); +t_Error FmSetSizeOfFifo(t_Handle h_Fm, + uint8_t hardwarePortId, + e_FmPortType portType, + bool independentMode, + uint32_t *p_SizeOfFifo, + uint32_t extraSizeOfFifo, + uint8_t deqPipelineDepth, + t_FmInterModulePortRxPoolsParams *p_RxPoolsParams, + bool initialConfig); + + +#endif /* __FM_COMMON_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/Makefile @@ -0,0 +1,11 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +# +obj-y += system/ +obj-y += wrapper/ +obj-y += xx/ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/xx/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/xx/Makefile @@ -0,0 +1,12 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += fsl-ncsw-xx.o + +fsl-ncsw-xx-objs := xx_linux.o udivdi3.o stdlib.o + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/xx/xx_linux.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/xx/xx_linux.c @@ -0,0 +1,901 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File xx_linux.c + + @Description XX routines implementation for Linux. +*//***************************************************************************/ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifdef BIGPHYSAREA_ENABLE +#include +#endif /* BIGPHYSAREA_ENABLE */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "error_ext.h" +#include "std_ext.h" +#include "list_ext.h" +#include "mm_ext.h" +#include "sys_io_ext.h" +#include "xx.h" + + +#define __ERR_MODULE__ MODULE_UNKNOWN + +#ifdef BIGPHYSAREA_ENABLE +#define MAX_ALLOCATION_SIZE 128 * 1024 /* Maximum size allocated with kmalloc is 128K */ + + +/* TODO: large allocations => use big phys area */ +/****************************************************************************** + * routine: get_nr_pages + * + * description: + * calculates the number of memory pages for a given size (in bytes) + * + * arguments: + * size - the number of bytes + * + * return code: + * The number of pages + * + *****************************************************************************/ +static __inline__ uint32_t get_nr_pages (uint32_t size) +{ + return (uint32_t)((size >> PAGE_SHIFT) + (size & PAGE_SHIFT ? 1 : 0)); +} + +static bool in_big_phys_area (uint32_t addr) +{ + uint32_t base, size; + + bigphysarea_get_details (&base, &size); + return ((addr >= base) && (addr < base + size)); +} +#endif /* BIGPHYSAREA_ENABLE */ + +void * xx_Malloc(uint32_t n) +{ + void *a; + uint32_t flags; + + flags = XX_DisableAllIntr(); +#ifdef BIGPHYSAREA_ENABLE + if (n >= MAX_ALLOCATION_SIZE) + a = (void*)bigphysarea_alloc_pages(get_nr_pages(n), 0, GFP_ATOMIC); + else +#endif /* BIGPHYSAREA_ENABLE */ + a = (void *)kmalloc((uint32_t)n, GFP_ATOMIC); + if (!a) + XX_Print("No memory for XX_Malloc\n"); + XX_RestoreAllIntr(flags); + + return a; +} + +void xx_Free(void *p) +{ +#ifdef BIGPHYSAREA_ENABLE + if (in_big_phys_area ((uint32_t)p)) + bigphysarea_free_pages(p); + else +#endif /* BIGPHYSAREA_ENABLE */ + kfree(p); +} + +void XX_Exit(int status) +{ + WARN(1, "\n\nFMD: fatal error, driver can't go on!!!\n\n"); +} + +#define BUF_SIZE 512 +void XX_Print(char *str, ...) +{ + va_list args; +#ifdef CONFIG_SMP + char buf[BUF_SIZE]; +#endif /* CONFIG_SMP */ + + va_start(args, str); +#ifdef CONFIG_SMP + if (vsnprintf (buf, BUF_SIZE, str, args) >= BUF_SIZE) + printk(KERN_WARNING "Illegal string to print!\n more than %d characters.\n\tString was not printed completelly.\n", BUF_SIZE); + printk (KERN_WARNING "cpu%d/%d: %s",hard_smp_processor_id(), smp_processor_id(), buf); +#else + vprintk(str, args); +#endif /* CONFIG_SMP */ + va_end(args); +} + +void XX_Fprint(void *file, char *str, ...) +{ + va_list args; +#ifdef CONFIG_SMP + char buf[BUF_SIZE]; +#endif /* CONFIG_SMP */ + + va_start(args, str); +#ifdef CONFIG_SMP + if (vsnprintf (buf, BUF_SIZE, str, args) >= BUF_SIZE) + printk(KERN_WARNING "Illegal string to print!\n more than %d characters.\n\tString was not printed completelly.\n", BUF_SIZE); + printk (KERN_CRIT "cpu%d/%d: %s",hard_smp_processor_id(), smp_processor_id(), buf); +#else + vprintk(str, args); +#endif /* CONFIG_SMP */ + va_end(args); +} + +#ifdef DEBUG_XX_MALLOC +typedef void (*t_ffn)(void *); +typedef struct { + t_ffn f_free; + void *mem; + char *fname; + int fline; + uint32_t size; + t_List node; +} t_MemDebug; +#define MEMDBG_OBJECT(p_List) LIST_OBJECT(p_List, t_MemDebug, node) + +LIST(memDbgLst); + + +void * XX_MallocDebug(uint32_t size, char *fname, int line) +{ + void *mem; + t_MemDebug *p_MemDbg; + + p_MemDbg = (t_MemDebug *)xx_Malloc(sizeof(t_MemDebug)); + if (p_MemDbg == NULL) + return NULL; + + mem = xx_Malloc(size); + if (mem == NULL) + { + XX_Free(p_MemDbg); + return NULL; + } + + INIT_LIST(&p_MemDbg->node); + p_MemDbg->f_free = xx_Free; + p_MemDbg->mem = mem; + p_MemDbg->fname = fname; + p_MemDbg->fline = line; + p_MemDbg->size = size+sizeof(t_MemDebug); + LIST_AddToTail(&p_MemDbg->node, &memDbgLst); + + return mem; +} + +void * XX_MallocSmartDebug(uint32_t size, + int memPartitionId, + uint32_t align, + char *fname, + int line) +{ + void *mem; + t_MemDebug *p_MemDbg; + + p_MemDbg = (t_MemDebug *)XX_Malloc(sizeof(t_MemDebug)); + if (p_MemDbg == NULL) + return NULL; + + mem = xx_MallocSmart((uint32_t)size, memPartitionId, align); + if (mem == NULL) + { + XX_Free(p_MemDbg); + return NULL; + } + + INIT_LIST(&p_MemDbg->node); + p_MemDbg->f_free = xx_FreeSmart; + p_MemDbg->mem = mem; + p_MemDbg->fname = fname; + p_MemDbg->fline = line; + p_MemDbg->size = size+sizeof(t_MemDebug); + LIST_AddToTail(&p_MemDbg->node, &memDbgLst); + + return mem; +} + +static void debug_free(void *mem) +{ + t_List *p_MemDbgLh = NULL; + t_MemDebug *p_MemDbg; + bool found = FALSE; + + if (LIST_IsEmpty(&memDbgLst)) + { + REPORT_ERROR(MAJOR, E_ALREADY_FREE, ("Unbalanced free (0x%08x)", mem)); + return; + } + + LIST_FOR_EACH(p_MemDbgLh, &memDbgLst) + { + p_MemDbg = MEMDBG_OBJECT(p_MemDbgLh); + if (p_MemDbg->mem == mem) + { + found = TRUE; + break; + } + } + + if (!found) + { + REPORT_ERROR(MAJOR, E_NOT_FOUND, + ("Attempt to free unallocated address (0x%08x)",mem)); + dump_stack(); + return; + } + + LIST_Del(p_MemDbgLh); + p_MemDbg->f_free(mem); + p_MemDbg->f_free(p_MemDbg); +} + +void XX_FreeSmart(void *p) +{ + debug_free(p); +} + + +void XX_Free(void *p) +{ + debug_free(p); +} + +#else /* not DEBUG_XX_MALLOC */ +void * XX_Malloc(uint32_t size) +{ + return xx_Malloc(size); +} + +void * XX_MallocSmart(uint32_t size, int memPartitionId, uint32_t alignment) +{ + return xx_MallocSmart(size,memPartitionId, alignment); +} + +void XX_FreeSmart(void *p) +{ + xx_FreeSmart(p); +} + + +void XX_Free(void *p) +{ + xx_Free(p); +} +#endif /* not DEBUG_XX_MALLOC */ + + +#if (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) +void XX_EventById(uint32_t event, t_Handle appId, uint16_t flags, char *msg) +{ + e_Event eventCode = (e_Event)event; + + UNUSED(eventCode); + UNUSED(appId); + UNUSED(flags); + UNUSED(msg); +} +#endif /* (defined(REPORT_EVENTS) && ... */ + + +uint32_t XX_DisableAllIntr(void) +{ + unsigned long flags; + + local_irq_save(flags); + + return (uint32_t)flags; +} + +void XX_RestoreAllIntr(uint32_t flags) +{ + local_irq_restore((unsigned long)flags); +} + +t_Error XX_Call( uint32_t qid, t_Error (* f)(t_Handle), t_Handle id, t_Handle appId, uint16_t flags ) +{ + UNUSED(qid); + UNUSED(appId); + UNUSED(flags); + + return f(id); +} + +int XX_IsICacheEnable(void) +{ + return TRUE; +} + +int XX_IsDCacheEnable(void) +{ + return TRUE; +} + + +typedef struct { + t_Isr *f_Isr; + t_Handle handle; +} t_InterruptHandler; + + +t_Handle interruptHandlers[0x00010000]; + +static irqreturn_t LinuxInterruptHandler (int irq, void *dev_id) +{ + t_InterruptHandler *p_IntrHndl = (t_InterruptHandler *)dev_id; + p_IntrHndl->f_Isr(p_IntrHndl->handle); + return IRQ_HANDLED; +} + +t_Error XX_SetIntr(int irq, t_Isr *f_Isr, t_Handle handle) +{ + const char *device; + t_InterruptHandler *p_IntrHndl; + + device = GetDeviceName(irq); + if (device == NULL) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Interrupt source - %d", irq)); + + p_IntrHndl = (t_InterruptHandler *)XX_Malloc(sizeof(t_InterruptHandler)); + if (p_IntrHndl == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + p_IntrHndl->f_Isr = f_Isr; + p_IntrHndl->handle = handle; + interruptHandlers[irq] = p_IntrHndl; + + if (request_irq(GetDeviceIrqNum(irq), LinuxInterruptHandler, 0, device, p_IntrHndl) < 0) + RETURN_ERROR(MAJOR, E_BUSY, ("Can't get IRQ %s\n", device)); + disable_irq(GetDeviceIrqNum(irq)); + + return E_OK; +} + +t_Error XX_FreeIntr(int irq) +{ + t_InterruptHandler *p_IntrHndl = interruptHandlers[irq]; + free_irq(GetDeviceIrqNum(irq), p_IntrHndl); + XX_Free(p_IntrHndl); + interruptHandlers[irq] = 0; + return E_OK; +} + +t_Error XX_EnableIntr(int irq) +{ + enable_irq(GetDeviceIrqNum(irq)); + return E_OK; +} + +t_Error XX_DisableIntr(int irq) +{ + disable_irq(GetDeviceIrqNum(irq)); + return E_OK; +} + + +/*****************************************************************************/ +/* Tasklet Service Routines */ +/*****************************************************************************/ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20) +typedef struct +{ + t_Handle h_Data; + void (*f_Callback) (void *); + struct delayed_work dwork; +} t_Tasklet; + +static void GenericTaskletCallback(struct work_struct *p_Work) +{ + t_Tasklet *p_Task = container_of(p_Work, t_Tasklet, dwork.work); + + p_Task->f_Callback(p_Task->h_Data); +} +#endif /* LINUX_VERSION_CODE */ + + +t_TaskletHandle XX_InitTasklet (void (*routine)(void *), void *data) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + struct work_struct *p_Task; + p_Task = (struct work_struct *)XX_Malloc(sizeof(struct work_struct)); + INIT_WORK(p_Task, routine, data); +#else + t_Tasklet *p_Task = (t_Tasklet *)XX_Malloc(sizeof(t_Tasklet)); + p_Task->h_Data = data; + p_Task->f_Callback = routine; + INIT_DELAYED_WORK(&p_Task->dwork, GenericTaskletCallback); +#endif /* LINUX_VERSION_CODE */ + + return (t_TaskletHandle)p_Task; +} + + +void XX_FreeTasklet (t_TaskletHandle h_Tasklet) +{ + if (h_Tasklet) + XX_Free(h_Tasklet); +} + +int XX_ScheduleTask(t_TaskletHandle h_Tasklet, int immediate) +{ + int ans; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + if (immediate) + ans = schedule_work(h_Tasklet); + else + ans = schedule_delayed_work(h_Tasklet, 1); +#else + if (immediate) + ans = schedule_delayed_work(&((t_Tasklet *)h_Tasklet)->dwork, 0); + else + ans = schedule_delayed_work(&((t_Tasklet *)h_Tasklet)->dwork, HZ); +#endif /* LINUX_VERSION_CODE */ + + return ans; +} + +void XX_FlushScheduledTasks(void) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) + flush_scheduled_tasks(); +#else + flush_scheduled_work(); +#endif /* LINUX_VERSION_CODE */ +} + +int XX_TaskletIsQueued(t_TaskletHandle h_Tasklet) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + return (int)(((struct work_struct *)h_Tasklet)->pending); +#else + return (int)delayed_work_pending(&((t_Tasklet *)h_Tasklet)->dwork); +#endif /* LINUX_VERSION_CODE */ +} + +void XX_SetTaskletData(t_TaskletHandle h_Tasklet, t_Handle data) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) + ((struct tq_struct *)h_Tasklet)->data = data; +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + ((struct work_struct *)h_Tasklet)->data = data; +#else + ((t_Tasklet *)h_Tasklet)->h_Data = data; +#endif /* LINUX_VERSION_CODE */ +} + +t_Handle XX_GetTaskletData(t_TaskletHandle h_Tasklet) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) + return (t_Handle)(((struct work_struct *)h_Tasklet)->data); +#else + return ((t_Tasklet *)h_Tasklet)->h_Data; +#endif /* LINUX_VERSION_CODE */ +} + + +/*****************************************************************************/ +/* Spinlock Service Routines */ +/*****************************************************************************/ + +t_Handle XX_InitSpinlock(void) +{ + spinlock_t *p_Spinlock = (spinlock_t *)XX_Malloc(sizeof(spinlock_t)); + if (!p_Spinlock) + return NULL; + + spin_lock_init(p_Spinlock); + + return (t_Handle)p_Spinlock; +} + +void XX_FreeSpinlock(t_Handle h_Spinlock) +{ + if (h_Spinlock) + XX_Free(h_Spinlock); +} + +void XX_LockSpinlock(t_Handle h_Spinlock) +{ + spin_lock((spinlock_t *)h_Spinlock); +} + +void XX_UnlockSpinlock(t_Handle h_Spinlock) +{ + spin_unlock((spinlock_t *)h_Spinlock); +} + +uint32_t XX_LockIntrSpinlock(t_Handle h_Spinlock) +{ + unsigned long intrFlags; + spin_lock_irqsave((spinlock_t *)h_Spinlock, intrFlags); + return intrFlags; +} + +void XX_UnlockIntrSpinlock(t_Handle h_Spinlock, uint32_t intrFlags) +{ + spin_unlock_irqrestore((spinlock_t *)h_Spinlock, (unsigned long)intrFlags); +} + + +/*****************************************************************************/ +/* Timers Service Routines */ +/*****************************************************************************/ +/* The time now is in mili sec. resolution */ +uint32_t XX_CurrentTime(void) +{ + return (jiffies*1000)/HZ; +} + + +t_Handle XX_CreateTimer(void) +{ + struct timer_list *p_Timer = (struct timer_list *)XX_Malloc(sizeof(struct timer_list)); + if (p_Timer) + { + memset(p_Timer, 0, sizeof(struct timer_list)); + init_timer(p_Timer); + } + return (t_Handle)p_Timer; +} + +void XX_FreeTimer(t_Handle h_Timer) +{ + if (h_Timer) + XX_Free(h_Timer); +} + +void XX_StartTimer(t_Handle h_Timer, + uint32_t msecs, + bool periodic, + void (*f_TimerExpired)(t_Handle), + t_Handle h_Arg) +{ + int tmp_jiffies = (msecs*HZ)/1000; + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + SANITY_CHECK_RETURN((periodic == FALSE), E_NOT_SUPPORTED); + + p_Timer->function = (void (*)(unsigned long))f_TimerExpired; + p_Timer->data = (unsigned long)h_Arg; + if ((msecs*HZ)%1000) + tmp_jiffies++; + p_Timer->expires = (jiffies + tmp_jiffies); + + add_timer((struct timer_list *)h_Timer); +} + +void XX_SetTimerData(t_Handle h_Timer, t_Handle data) +{ + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + p_Timer->data = (unsigned long)data; +} + +t_Handle XX_GetTimerData(t_Handle h_Timer) +{ + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + return (t_Handle)p_Timer->data; +} + +uint32_t XX_GetExpirationTime(t_Handle h_Timer) +{ + struct timer_list *p_Timer = (struct timer_list *)h_Timer; + + return (uint32_t)p_Timer->expires; +} + +void XX_StopTimer(t_Handle h_Timer) +{ + del_timer((struct timer_list *)h_Timer); +} + +void XX_ModTimer(t_Handle h_Timer, uint32_t msecs) +{ + int tmp_jiffies = (msecs*HZ)/1000; + + if ((msecs*HZ)%1000) + tmp_jiffies++; + mod_timer((struct timer_list *)h_Timer, jiffies + tmp_jiffies); +} + +int XX_TimerIsActive(t_Handle h_Timer) +{ + return timer_pending((struct timer_list *)h_Timer); +} + +uint32_t XX_Sleep(uint32_t msecs) +{ + int tmp_jiffies = (msecs*HZ)/1000; + + if ((msecs*HZ)%1000) + tmp_jiffies++; + return schedule_timeout(tmp_jiffies); +} + +/*BEWARE!!!!! UDelay routine is BUSY WAITTING!!!!!*/ +void XX_UDelay(uint32_t usecs) +{ + udelay(usecs); +} + +/* TODO: verify that these are correct */ +#define MSG_BODY_SIZE 512 +typedef t_Error (t_MsgHandler) (t_Handle h_Mod, uint32_t msgId, uint8_t msgBody[MSG_BODY_SIZE]); +typedef void (t_MsgCompletionCB) (t_Handle h_Arg, uint8_t msgBody[MSG_BODY_SIZE]); +t_Error XX_SendMessage(char *p_DestAddr, + uint32_t msgId, + uint8_t msgBody[MSG_BODY_SIZE], + t_MsgCompletionCB *f_CompletionCB, + t_Handle h_CBArg); + +typedef struct { + char *p_Addr; + t_MsgHandler *f_MsgHandlerCB; + t_Handle h_Mod; + t_List node; +} t_MsgHndlr; +#define MSG_HNDLR_OBJECT(ptr) LIST_OBJECT(ptr, t_MsgHndlr, node) + +LIST(msgHndlrList); + +static void EnqueueMsgHndlr(t_MsgHndlr *p_MsgHndlr) +{ + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_MsgHndlr->node, &msgHndlrList); + XX_RestoreAllIntr(intFlags); +} +/* TODO: add this for multi-platform support +static t_MsgHndlr * DequeueMsgHndlr(void) +{ + t_MsgHndlr *p_MsgHndlr = NULL; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + if (!LIST_IsEmpty(&msgHndlrList)) + { + p_MsgHndlr = MSG_HNDLR_OBJECT(msgHndlrList.p_Next); + LIST_DelAndInit(&p_MsgHndlr->node); + } + XX_RestoreAllIntr(intFlags); + + return p_MsgHndlr; +} +*/ +static t_MsgHndlr * FindMsgHndlr(char *p_Addr) +{ + t_MsgHndlr *p_MsgHndlr; + t_List *p_Pos; + + LIST_FOR_EACH(p_Pos, &msgHndlrList) + { + p_MsgHndlr = MSG_HNDLR_OBJECT(p_Pos); + if (strstr(p_MsgHndlr->p_Addr, p_Addr)) + return p_MsgHndlr; + } + + return NULL; +} + +t_Error XX_RegisterMessageHandler (char *p_Addr, t_MsgHandler *f_MsgHandlerCB, t_Handle h_Mod) +{ + t_MsgHndlr *p_MsgHndlr; + uint32_t len; + + p_MsgHndlr = (t_MsgHndlr*)XX_Malloc(sizeof(t_MsgHndlr)); + if (!p_MsgHndlr) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("message handler object!!!")); + memset(p_MsgHndlr, 0, sizeof(t_MsgHndlr)); + + len = strlen(p_Addr); + p_MsgHndlr->p_Addr = (char*)XX_Malloc(len+1); + strncpy(p_MsgHndlr->p_Addr,p_Addr, (uint32_t)(len+1)); + + p_MsgHndlr->f_MsgHandlerCB = f_MsgHandlerCB; + p_MsgHndlr->h_Mod = h_Mod; + INIT_LIST(&p_MsgHndlr->node); + EnqueueMsgHndlr(p_MsgHndlr); + + return E_OK; +} + +t_Error XX_UnregisterMessageHandler (char *p_Addr) +{ + t_MsgHndlr *p_MsgHndlr = FindMsgHndlr(p_Addr); + if (!p_MsgHndlr) + RETURN_ERROR(MINOR, E_NO_DEVICE, ("message handler not found in list!!!")); + + LIST_Del(&p_MsgHndlr->node); + XX_Free(p_MsgHndlr->p_Addr); + XX_Free(p_MsgHndlr); + + return E_OK; +} + +t_Error XX_SendMessage(char *p_DestAddr, + uint32_t msgId, + uint8_t msgBody[MSG_BODY_SIZE], + t_MsgCompletionCB *f_CompletionCB, + t_Handle h_CBArg) +{ + t_Error ans; + t_MsgHndlr *p_MsgHndlr = FindMsgHndlr(p_DestAddr); + if (!p_MsgHndlr) + RETURN_ERROR(MINOR, E_NO_DEVICE, ("message handler not found in list!!!")); + + ans = p_MsgHndlr->f_MsgHandlerCB(p_MsgHndlr->h_Mod, msgId, msgBody); + + if (f_CompletionCB) + f_CompletionCB(h_CBArg, msgBody); + + return ans; +} + +t_Error XX_IpcRegisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH], + t_IpcMsgHandler *f_MsgHandler, + t_Handle h_Module, + uint32_t replyLength) +{ + UNUSED(addr);UNUSED(f_MsgHandler);UNUSED(h_Module);UNUSED(replyLength); + return E_OK; +} + +t_Error XX_IpcUnregisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH]) +{ + UNUSED(addr); + return E_OK; +} + + +t_Error XX_IpcSendMessage(t_Handle h_Session, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength, + t_IpcMsgCompletion *f_Completion, + t_Handle h_Arg) +{ + UNUSED(h_Session); UNUSED(p_Msg); UNUSED(msgLength); UNUSED(p_Reply); + UNUSED(p_ReplyLength); UNUSED(f_Completion); UNUSED(h_Arg); + return E_OK; +} + +t_Handle XX_IpcInitSession(char destAddr[XX_IPC_MAX_ADDR_NAME_LENGTH], + char srcAddr[XX_IPC_MAX_ADDR_NAME_LENGTH]) +{ + UNUSED(destAddr); UNUSED(srcAddr); + return E_OK; +} + +/*Forced to introduce due to PRINT_FMT_PARAMS define*/ +uint32_t E500_GetId(void) +{ + return smp_processor_id(); +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) +int GetDeviceIrqNum(int irq) +{ + struct device_node *iPar; + struct irq_domain *irqHost; + uint32_t hwIrq; + + /* Get the interrupt controller */ + iPar = of_find_node_by_name(NULL, "mpic"); + hwIrq = 0; + + ASSERT_COND(iPar != NULL); + /* Get the irq host */ + irqHost = irq_find_host(iPar); + of_node_put(iPar); + + /* Create irq mapping */ + return irq_create_mapping(irqHost, hwIrq); +} +#else +#error "kernel not supported!!!" +#endif /* LINUX_VERSION_CODE */ + +void * XX_PhysToVirt(physAddress_t addr) +{ + return UINT_TO_PTR(SYS_PhysToVirt((uint64_t)addr)); +} + +physAddress_t XX_VirtToPhys(void * addr) +{ + return (physAddress_t)SYS_VirtToPhys(PTR_TO_UINT(addr)); +} + +void * xx_MallocSmart(uint32_t size, int memPartitionId, uint32_t alignment) +{ + uintptr_t *returnCode, tmp; + + if (alignment < sizeof(uintptr_t)) + alignment = sizeof(uintptr_t); + size += alignment + sizeof(returnCode); + tmp = (uintptr_t)xx_Malloc(size); + if (tmp == 0) + return NULL; + returnCode = (uintptr_t*)((tmp + alignment + sizeof(returnCode)) & ~((uintptr_t)alignment - 1)); + *(returnCode - 1) = tmp; + + return (void*)returnCode; +} + +void xx_FreeSmart(void *p) +{ + xx_Free((void*)(*((uintptr_t *)(p) - 1))); +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/xx/stdlib.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/xx/stdlib.c @@ -0,0 +1,264 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*------------------------------------------------------*/ +/* */ +/* File: stdlib.c */ +/* */ +/* Description: */ +/* Standard library routines (externals) */ +/* */ +/* Modifications: */ +/* ============== */ +/* */ +/*------------------------------------------------------*/ +#include "stdlib_ext.h" +#include "stdarg_ext.h" +#include "ctype_ext.h" +#include "string_ext.h" +#include "std_ext.h" +#include "xx_ext.h" + + +#ifdef MODULE +/** + * strtoul - convert a string to an uint32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint32_t strtoul(const char *cp,char **endp,uint32_t base) +{ + uint32_t result = 0,value; + + if (!base) { + base = 10; + if (*cp == '0') { + base = 8; + cp++; + if ((*cp == 'x') && isxdigit(cp[1])) { + cp++; + base = 16; + } + } + } + while (isxdigit(*cp) && + (value = (uint32_t)(isdigit(*cp) ? *cp-'0' : toupper((uint8_t)(*cp))-'A'+10)) < base) { + result = result*base + value; + cp++; + } + if (endp) + *endp = (char *)cp; + return result; +} + +/** + * strtol - convert a string to a int32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long strtol(const char *cp,char **endp,uint32_t base) +{ + if(*cp=='-') + return (long)(-strtoul(cp+1,endp,base)); + return (long)strtoul(cp,endp,base); +} + +/** + * strtoull - convert a string to an uint64_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint64_t strtoull(const char *cp,char **endp,uint32_t base) +{ + uint64_t result = 0,value; + + if (!base) { + base = 10; + if (*cp == '0') { + base = 8; + cp++; + if ((*cp == 'x') && isxdigit(cp[1])) { + cp++; + base = 16; + } + } + } + while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) + ? toupper((uint8_t)(*cp)) : *cp)-'A'+10) < base) { + result = result*base + value; + cp++; + } + if (endp) + *endp = (char *)cp; + return result; +} + +/** + * strtoll - convert a string to a int64 + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long long strtoll(const char *cp,char **endp,uint32_t base) +{ + if(*cp=='-') + return (long long)(-strtoull(cp+1,endp,base)); + return (long long)(strtoull(cp,endp,base)); +} + +/** + * atoi - convert a string to a int + * @s: The start of the string + */ +int atoi(const char *s) +{ + int i=0; + const char **tmp_s = &s; + + while (isdigit(**tmp_s)) + i = i*10 + *((*tmp_s)++) - '0'; + return i; +} + +/** + * strlen - Find the length of a string + * @s: The string to be sized + */ +size_t strlen(const char * s) +{ + const char *sc; + + for (sc = s; *sc != '\0'; ++sc) + /* nothing */; + + return sc - s; +} + +/** + * strnlen - Find the length of a length-limited string + * @s: The string to be sized + * @count: The maximum number of bytes to search + */ +size_t strnlen(const char * s, size_t count) +{ + const char *sc; + + for (sc = s; count-- && *sc != '\0'; ++sc) + /* nothing */; + + return sc - s; +} + +/** + * strcpy - Copy a %NUL terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + */ +char * strcpy(char * dest,const char *src) +{ + char *tmp = dest; + + while ((*dest++ = *src++) != '\0') + /* nothing */; + + return tmp; +} +#endif /* MODULE */ + +/** + * strtok - Split a string into tokens + * @s: The string to be searched + * @ct: The characters to search for + * + * WARNING: strtok is deprecated, use strsep instead. + */ +char *___strtok; + +char * strtok(char * s,const char * ct) +{ + char *sbegin, *send; + + sbegin = s ? s : ___strtok; + if (!sbegin) { + return NULL; + } + sbegin += strspn(sbegin,ct); + if (*sbegin == '\0') { + ___strtok = NULL; + return( NULL ); + } + send = strpbrk( sbegin, ct); + if (send && *send != '\0') + *send++ = '\0'; + ___strtok = send; + return (sbegin); +} + + +#ifdef MODULE +/** + * strncpy - Copy a length-limited, %NUL-terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + * @count: The maximum number of bytes to copy + * + * Note that unlike userspace strncpy, this does not %NUL-pad the buffer. + * However, the result is not %NUL-terminated if the source exceeds + * @count bytes. + */ +char * strncpy(char * dest,const char *src,size_t count) +{ + char *tmp = dest; + + while (count-- && (*dest++ = *src++) != '\0') + /* nothing */; + + return tmp; +} + +/** + * vsprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @fmt: The format string to use + * @args: Arguments for the format string + * + * Call this function if you are already dealing with a va_list. + * You probably want sprintf instead. + */ +int vsprintf(char *buf, const char *fmt, va_list args) +{ + return vsnprintf(buf, INT32_MAX, fmt, args); +} +#endif /* MODULE */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/xx/udivdi3.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/xx/udivdi3.c @@ -0,0 +1,132 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include + + +#define BITS_PER_UNIT 8 +#define SI_TYPE_SIZE (sizeof (SItype) * BITS_PER_UNIT) + + +typedef unsigned int UQItype __attribute__ ((mode (QI))); +typedef int SItype __attribute__ ((mode (SI))); +typedef unsigned int USItype __attribute__ ((mode (SI))); +typedef int DItype __attribute__ ((mode (DI))); +typedef int word_type __attribute__ ((mode (__word__))); +typedef unsigned int UDItype __attribute__ ((mode (DI))); + +struct DIstruct {SItype low, high;}; + +typedef union +{ + struct DIstruct s; + DItype ll; +} DIunion; + + +/* bit divisor, dividend and result. dynamic precision */ +static __inline__ uint64_t _div64_64(uint64_t dividend, uint64_t divisor) +{ + uint32_t d = divisor; + + if (divisor > 0xffffffffULL) + { + unsigned int shift = fls(divisor >> 32); + + d = divisor >> shift; + dividend >>= shift; + } + + /* avoid 64 bit division if possible */ + if (dividend >> 32) + do_div(dividend, d); + else + dividend = (uint32_t) dividend / d; + + return dividend; +} + +UDItype __udivdi3 (UDItype n, UDItype d) +{ + return _div64_64(n, d); +} + +DItype __divdi3 (DItype n, DItype d) +{ + DItype sign = 1; + if (n<0) + { + sign *= -1; + n *= -1; + } + if (d<0) + { + sign *= -1; + d *= -1; + } + return sign*_div64_64((UDItype)n, (UDItype)d); +} + +UDItype __umoddi3 (UDItype n, UDItype d) +{ + return n-(_div64_64(n, d)*d); +} + +#ifdef MODULE +word_type __ucmpdi2 (DItype a, DItype b) +{ + DIunion au, bu; + + au.ll = a, bu.ll = b; + + if ((USItype) au.s.high < (USItype) bu.s.high) + return 0; + else if ((USItype) au.s.high > (USItype) bu.s.high) + return 2; + if ((USItype) au.s.low < (USItype) bu.s.low) + return 0; + else if ((USItype) au.s.low > (USItype) bu.s.low) + return 2; + return 1; +} +#endif /* MODULE */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/types_linux.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/types_linux.h @@ -0,0 +1,200 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __TYPES_LINUX_H__ +#define __TYPES_LINUX_H__ + +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) + #error "This kernel is probably not supported!!!" +#elif (!((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) || \ + (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) || \ + (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,30)))) + #warning "This kernel is probably not supported!!! You may need to add some fixes." +#endif /* LINUX_VERSION_CODE */ + + +typedef float float_t; /* Single precision floating point */ +typedef double double_t; /* Double precision floating point */ + + +#define _Packed +#define _PackedType __attribute__ ((packed)) + +typedef phys_addr_t physAddress_t; + +#define UINT8_MAX 0xFF +#define UINT8_MIN 0 +#define UINT16_MAX 0xFFFF +#define UINT16_MIN 0 +#define UINT32_MAX 0xFFFFFFFF +#define UINT32_MIN 0 +#define UINT64_MAX 0xFFFFFFFFFFFFFFFFLL +#define UINT64_MIN 0 +#define INT8_MAX 0x7F +#define INT8_MIN 0x80 +#define INT16_MAX 0x7FFF +#define INT16_MIN 0x8000 +#define INT32_MAX 0x7FFFFFFF +#define INT32_MIN 0x80000000 +#define INT64_MAX 0x7FFFFFFFFFFFFFFFLL +#define INT64_MIN 0x8000000000000000LL + +#define ON 1 +#define OFF 0 + +#define FALSE false +#define TRUE true + + +/************************/ +/* memory access macros */ +/************************/ +#define GET_UINT8(arg) *(volatile uint8_t *)(&(arg)) +#define GET_UINT16(arg) in_be16(&(arg))//*(volatile uint16_t*)(&(arg)) +#define GET_UINT32(arg) in_be32(&(arg))//*(volatile uint32_t*)(&(arg)) +#define GET_UINT64(arg) *(volatile uint64_t*)(&(arg)) + +#ifdef VERBOSE_WRITE +void XX_Print(char *str, ...); +#define WRITE_UINT8(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%02x\r\n", (uint32_t)&(arg), (data)); *(volatile uint8_t *)(&(arg)) = (data); } while (0) +#define WRITE_UINT16(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%04x\r\n", (uint32_t)&(arg), (data)); out_be16(&(arg), data); /* *(volatile uint16_t*)(&(arg)) = (data);*/ } while (0) +#define WRITE_UINT32(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%08x\r\n", (uint32_t)&(arg), (data)); out_be32(&(arg), data); /* *(volatile uint32_t*)(&(arg)) = (data);*/ } while (0) +#define WRITE_UINT64(arg, data) \ + do { XX_Print("ADDR: 0x%08x, VAL: 0x%016llx\r\n", (uint32_t)&(arg), (data)); *(volatile uint64_t*)(&(arg)) = (data); } while (0) + +#else /* not VERBOSE_WRITE */ +#define WRITE_UINT8(arg, data) *(volatile uint8_t *)(&(arg)) = (data) +#define WRITE_UINT16(arg, data) out_be16(&(arg), data)//*(volatile uint16_t*)(&(arg)) = (data) +#define WRITE_UINT32(arg, data) out_be32(&(arg), data)//*(volatile unsigned int *)(&(arg)) = (data) +#define WRITE_UINT64(arg, data) *(volatile uint64_t*)(&(arg)) = (data) +#endif /* not VERBOSE_WRITE */ + + +/*****************************************************************************/ +/* General stuff */ +/*****************************************************************************/ +#ifdef ARRAY_SIZE +#undef ARRAY_SIZE +#endif /* ARRAY_SIZE */ + +#ifdef MAJOR +#undef MAJOR +#endif /* MAJOR */ + +#ifdef MINOR +#undef MINOR +#endif /* MINOR */ + +#ifdef QE_SIZEOF_BD +#undef QE_SIZEOF_BD +#endif /* QE_SIZEOF_BD */ + +#ifdef BD_BUFFER_CLEAR +#undef BD_BUFFER_CLEAR +#endif /* BD_BUFFER_CLEAR */ + +#ifdef BD_BUFFER +#undef BD_BUFFER +#endif /* BD_BUFFER */ + +#ifdef BD_STATUS_AND_LENGTH_SET +#undef BD_STATUS_AND_LENGTH_SET +#endif /* BD_STATUS_AND_LENGTH_SET */ + +#ifdef BD_STATUS_AND_LENGTH +#undef BD_STATUS_AND_LENGTH +#endif /* BD_STATUS_AND_LENGTH */ + +#ifdef BD_BUFFER_ARG +#undef BD_BUFFER_ARG +#endif /* BD_BUFFER_ARG */ + +#ifdef BD_GET_NEXT +#undef BD_GET_NEXT +#endif /* BD_GET_NEXT */ + +#ifdef QE_SDEBCR_BA_MASK +#undef QE_SDEBCR_BA_MASK +#endif /* QE_SDEBCR_BA_MASK */ + +#ifdef BD_BUFFER_SET +#undef BD_BUFFER_SET +#endif /* BD_BUFFER_SET */ + +#ifdef UPGCR_PROTOCOL +#undef UPGCR_PROTOCOL +#endif /* UPGCR_PROTOCOL */ + +#ifdef UPGCR_TMS +#undef UPGCR_TMS +#endif /* UPGCR_TMS */ + +#ifdef UPGCR_RMS +#undef UPGCR_RMS +#endif /* UPGCR_RMS */ + +#ifdef UPGCR_ADDR +#undef UPGCR_ADDR +#endif /* UPGCR_ADDR */ + +#ifdef UPGCR_DIAG +#undef UPGCR_DIAG +#endif /* UPGCR_DIAG */ + +#ifdef PARAMS +#undef PARAMS +#endif /* PARAMS */ + +#ifdef NO_IRQ +#undef NO_IRQ +#endif /* NO_IRQ */ + +#define PRINT_LINE XX_Print("%s:\n %s [%d]\n",__FILE__,__FUNCTION__,__LINE__); + + +#endif /* __TYPES_LINUX_H__ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/xx/xx.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/xx/xx.h @@ -0,0 +1,50 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __XX_H +#define __XX_H + +#include "xx_ext.h" + +void * xx_Malloc(uint32_t n); +void xx_Free(void *p); + +void *xx_MallocSmart(uint32_t size, int memPartitionId, uint32_t align); +void xx_FreeSmart(void *p); + +/* never used: */ +#define GetDeviceName(irq) ((char *)NULL) + +int GetDeviceIrqNum(int irq); + + +#endif /* __XX_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/wrapper/lnxwrp_fm_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/wrapper/lnxwrp_fm_ext.h @@ -0,0 +1,162 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File lnxwrp_fm_ext.h + + @Description TODO +*//***************************************************************************/ + +#ifndef __LNXWRP_FM_EXT_H +#define __LNXWRP_FM_EXT_H + +#include "std_ext.h" +#include "sys_ext.h" +#include "fm_ext.h" +#include "fm_muram_ext.h" +#include "fm_pcd_ext.h" +#include "fm_port_ext.h" +#include "fm_mac_ext.h" +#include "fm_rtc_ext.h" + + +/**************************************************************************//** + @Group FM_LnxKern_grp Frame Manager Linux wrapper API + + @Description FM API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_LnxKern_init_grp Initialization Unit + + @Description Initialization Unit + + Initialization Flow: + Initialization of the FM Module will be carried out by the Linux + kernel according to the following sequence: + a. Calling the initialization routine with no parameters. + b. The driver will register to the Device-Tree. + c. The Linux Device-Tree will initiate a call to the driver for + initialization. + d. The driver will read the appropriate information from the Device-Tree + e. [Optional] Calling the advance initialization routines to change + driver's defaults. + f. Initialization of the device will be automatically upon using it. + + @{ +*//***************************************************************************/ + +typedef struct t_WrpFmDevSettings +{ + t_FmParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmDevSettings; + +typedef struct t_WrpFmPcdDevSettings +{ + t_FmPcdParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmPcdDevSettings; + +typedef struct t_WrpFmPortDevSettings +{ + t_FmPortParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmPortDevSettings; + +typedef struct t_WrpFmMacDevSettings +{ + t_FmMacParams param; + t_SysObjectAdvConfigEntry *advConfig; +} t_WrpFmMacDevSettings; + + +/**************************************************************************//** + @Function LNXWRP_FM_Init + + @Description Initialize the FM linux wrapper. + + @Return A handle (descriptor) of the newly created FM Linux wrapper + structure. +*//***************************************************************************/ +t_Handle LNXWRP_FM_Init(void); + +/**************************************************************************//** + @Function LNXWRP_FM_Free + + @Description Free the FM linux wrapper. + + @Param[in] h_LnxWrpFm - A handle to the FM linux wrapper. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error LNXWRP_FM_Free(t_Handle h_LnxWrpFm); + +/**************************************************************************//** + @Function LNXWRP_FM_GetMacHandle + + @Description Get the FM-MAC LLD handle from the FM linux wrapper. + + @Param[in] h_LnxWrpFm - A handle to the FM linux wrapper. + @Param[in] fmId - Index of the FM device to get the MAC handle from. + @Param[in] macId - Index of the mac handle. + + @Return A handle of the LLD compressor. +*//***************************************************************************/ +t_Handle LNXWRP_FM_GetMacHandle(t_Handle h_LnxWrpFm, uint8_t fmId, uint8_t macId); + +#ifdef CONFIG_FSL_FMAN_TEST +t_Handle LNXWRP_FM_TEST_Init(void); +t_Error LNXWRP_FM_TEST_Free(t_Handle h_FmTestLnxWrp); +#endif /* CONFIG_FSL_FMAN_TEST */ + +/** @} */ /* end of FM_LnxKern_init_grp group */ + + +/**************************************************************************//** + @Group FM_LnxKern_ctrl_grp Control Unit + + @Description Control Unit + + TODO + @{ +*//***************************************************************************/ + +#include "fsl_fman.h" + +/** @} */ /* end of FM_LnxKern_ctrl_grp group */ +/** @} */ /* end of FM_LnxKern_grp group */ + + +#endif /* __LNXWRP_FM_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman_test.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman_test.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fsl_fman_test.h + + @Description +*//***************************************************************************/ + +#ifndef __FSL_FMAN_TEST_H +#define __FSL_FMAN_TEST_H + +#include + + +#define FMT_RX_ERR_Q 0xffffffff +#define FMT_RX_DFLT_Q 0xfffffffe +#define FMT_TX_ERR_Q 0xfffffffd +#define FMT_TX_CONF_Q 0xfffffffc + + +/**************************************************************************//** + @Function is_fman_test + + @Description Check if arriving frame belong to the test + + @Param[in] mac_dev - TODO + @Param[in] queueId - TODO + @Param[in] buffer - A pointer to the buffer to check. + @Param[in] size - size of the given buffer. + + @Return true if this buffer belongs to FMan test application; false otherwise. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +bool is_fman_test (void *mac_dev, + uint32_t queueId, + uint8_t *buffer, + uint32_t size); + +/**************************************************************************//** + @Function fman_test_ip_manip + + @Description IP header manipulation + + @Param[in] mac_dev - TODO + @Param[in] data - A pointer to the data (payload) to manipulate. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +void fman_test_ip_manip (void *mac_dev, uint8_t *data); + + +#endif /* __FSL_FMAN_TEST_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/wrapper/fsl_fman.h @@ -0,0 +1,279 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fsl_fman.h + + @Description Linux internal kernel API +*//***************************************************************************/ + +#ifndef __FSL_FMAN_H +#define __FSL_FMAN_H + +#include +#include /* struct device */ +#include /* struct qman_fq */ +#include "dpaa_integration_ext.h" + +/**************************************************************************//** + @Group FM_LnxKern_grp Frame Manager Linux wrapper API + + @Description FM API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_LnxKern_ctrl_grp Control Unit + + @Description Control Unit + + Internal Kernel Control Unit API + @{ +*//***************************************************************************/ + +/*****************************************************************************/ +/* Internal Linux kernel routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Description A structure .., +*//***************************************************************************/ +struct fm; + +/**************************************************************************//** + @Description A structure .., +*//***************************************************************************/ +struct fm_port; + +typedef int (*alloc_pcd_fqids)(struct device *dev, + uint32_t num, + uint8_t alignment, + uint32_t *base_fqid); + +typedef int (*free_pcd_fqids)(struct device *dev, + uint32_t base_fqid); + +struct fm_port_pcd_param { + alloc_pcd_fqids cba; + free_pcd_fqids cbf; + struct device *dev; +}; + +/**************************************************************************//** + @Description A structure of information about each of the external + buffer pools used by the port, +*//***************************************************************************/ +struct fm_port_pool_param { + uint8_t id; /**< External buffer pool id */ + uint16_t size; /**< External buffer pool buffer size */ +}; + +/**************************************************************************//** + @Description structure for additional Rx port parameters +*//***************************************************************************/ +struct fm_port_rx_params { + uint32_t errq; /**< Error Queue Id. */ + uint32_t defq; /**< Default Queue Id. */ + uint8_t num_pools; /**< Number of pools use by this port */ + struct fm_port_pool_param pool_param[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + /**< Parameters for each pool */ + uint16_t priv_data_size; /**< Area that user may save for his own need (E.g. save the SKB) */ + bool parse_results; /**< Whether to have the parser-results in the Received buffer */ + bool hash_results; /**< Whether to have the hash-results in the Received buffer */ + bool time_stamp; /**< Whether to have the time-stamp in the Received buffer */ +}; + +/**************************************************************************//** + @Description structure for additional non-Rx port parameters +*//***************************************************************************/ +struct fm_port_non_rx_params { + uint32_t errq; /**< Error Queue Id. */ + uint32_t defq; /**< For Tx and HC - Default Confirmation queue, + 0 means no Tx confirmation for processed + frames. For OP - default Rx queue. */ + uint16_t priv_data_size; /**< Area that user may save for his own need (E.g. save the SKB) */ + bool parse_results; /**< Whether to put the parser-results in the Transmitted buffer */ + bool hash_results; /**< Whether to have the hash-results in the Received buffer */ + bool time_stamp; /**< Whether to have the time-stamp in the Received buffer */ +}; + + +/**************************************************************************//** + @Function fm_bind + + @Description Bind to a specific FM device. + + @Param[in] fm_dev - the OF handle of the FM device. + + @Return A handle of the FM device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +struct fm * fm_bind (struct device *fm_dev); + +/**************************************************************************//** + @Function fm_unbind + + @Description Un-bind from a specific FM device. + + @Param[in] fm - A handle of the FM device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +void fm_unbind(struct fm *fm); + +void * fm_get_handle(struct fm *fm); +void * fm_get_rtc_handle(struct fm *fm); +struct resource * fm_get_mem_region(struct fm *fm); + +/**************************************************************************//** + @Function fm_port_bind + + @Description Bind to a specific FM-port device (may be Rx or Tx port). + + @Param[in] fm_port_dev - the OF handle of the FM port device. + + @Return A handle of the FM port device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +struct fm_port * fm_port_bind (struct device *fm_port_dev); + +/**************************************************************************//** + @Function fm_port_unbind + + @Description Un-bind from a specific FM-port device (may be Rx or Tx port). + + @Param[in] port - A handle of the FM port device. + + @Cautions Allowed only after the port was created. +*//***************************************************************************/ +void fm_port_unbind(struct fm_port *port); + +/**************************************************************************//** + @Function fm_set_rx_port_params + + @Description Configure parameters for a specific Rx FM-port device. + + @Param[in] port - A handle of the FM port device. + @Param[in] params - Rx port parameters + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +void fm_set_rx_port_params(struct fm_port *port, struct fm_port_rx_params *params); + +/**************************************************************************//** + @Function fm_port_pcd_bind + + @Description Bind as a listener on a port PCD. + + @Param[in] port - A handle of the FM port device. + @Param[in] params - PCD port parameters + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +void fm_port_pcd_bind (struct fm_port *port, struct fm_port_pcd_param *params); + +/**************************************************************************//** + @Function fm_get_tx_port_channel + + @Description Get qman-channel number for this Tx port. + + @Param[in] port - A handle of the FM port device. + + @Return qman-channel number for this Tx port. + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +int fm_get_tx_port_channel(struct fm_port *port); + +/**************************************************************************//** + @Function fm_set_tx_port_params + + @Description Configure parameters for a specific Tx FM-port device + + @Param[in] port - A handle of the FM port device. + @Param[in] params - Tx port parameters + + @Cautions Allowed only after the port is binded. +*//***************************************************************************/ +void fm_set_tx_port_params(struct fm_port *port, struct fm_port_non_rx_params *params); + +/**************************************************************************//** + @Function fm_port_enable + + @Description Enable specific FM-port device (may be Rx or Tx port). + + @Param[in] port - A handle of the FM port device. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +int fm_port_enable (struct fm_port *port); + +/**************************************************************************//** + @Function fm_port_disable + + @Description Disable specific FM-port device (may be Rx or Tx port). + + @Param[in] port - A handle of the FM port device. + + @Cautions Allowed only the port is initialized. +*//***************************************************************************/ +void fm_port_disable(struct fm_port *port); + +void * fm_port_get_handle(struct fm_port *port); + +/**************************************************************************//** + @Description Get base address of this port. Useful for accessing + port-specific registers (i.e., not common ones). + + @Param[in] port - A handle of the FM port device. + @Param[out] base_addr - The port's base addr (virtual address). +*//***************************************************************************/ +void fm_port_get_base_addr(const struct fm_port *port, uint64_t *base_addr); + +/**************************************************************************//** + @Description Lock function required before any FMD/LLD call. +*//***************************************************************************/ +void fm_mutex_lock(void); + +/**************************************************************************//** + @Description Unlock function required after any FMD/LLD call. +*//***************************************************************************/ +void fm_mutex_unlock(void); + +/** @} */ /* end of FM_LnxKern_ctrl_grp group */ +/** @} */ /* end of FM_LnxKern_grp group */ + + +#endif /* __FSL_FMAN_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/system/sys_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/system/sys_ext.h @@ -0,0 +1,118 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __SYS_EXT_H +#define __SYS_EXT_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group sys_grp System Interfaces + + @Description Linux system programming interfaces. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group sys_gen_grp System General Interface + + @Description General definitions, structures and routines of the linux + system programming interface. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection Macros for Advanced Configuration Requests + @{ +*//***************************************************************************/ +#define SYS_MAX_ADV_CONFIG_ARGS 4 + /**< Maximum number of arguments in + an advanced configuration entry */ +/* @} */ + +/**************************************************************************//** + @Description System Object Advanced Configuration Entry + + This structure represents a single request for an advanced + configuration call on the initialized object. An array of such + requests may be contained in the settings structure of the + corresponding object. + + The maximum number of arguments is limited to #SYS_MAX_ADV_CONFIG_ARGS. +*//***************************************************************************/ +typedef struct t_SysObjectAdvConfigEntry +{ + void *p_Function; /**< Pointer to advanced configuration routine */ + + uintptr_t args[SYS_MAX_ADV_CONFIG_ARGS]; + /**< Array of arguments for the specified routine; + All arguments should be casted to uint32_t. */ +} t_SysObjectAdvConfigEntry; + + +/** @} */ /* end of sys_gen_grp */ +/** @} */ /* end of sys_grp */ + +#define PARAMS(_num, _params) ADV_CONFIG_PARAMS_##_num _params + +#define ADV_CONFIG_PARAMS_1(_type) \ + , (_type)p_Entry->args[0] + +#define SET_ADV_CONFIG_ARGS_1(_arg0) \ + p_Entry->args[0] = (uintptr_t )(_arg0); \ + +#define ARGS(_num, _params) SET_ADV_CONFIG_ARGS_##_num _params + +#define ADD_ADV_CONFIG_START(_p_Entries, _maxEntries) \ + { \ + t_SysObjectAdvConfigEntry *p_Entry; \ + t_SysObjectAdvConfigEntry *p_Entrys = (_p_Entries); \ + int i=0, max = (_maxEntries); \ + +#define ADD_ADV_CONFIG_END \ + } + +#define ADV_CONFIG_CHECK_START(_p_Entry) \ + { \ + t_SysObjectAdvConfigEntry *p_Entry = _p_Entry; \ + t_Error errCode; \ + +#define ADV_CONFIG_CHECK(_handle, _func, _params) \ + if (p_Entry->p_Function == _func) \ + { \ + errCode = _func(_handle _params); \ + } else + +#endif /* __SYS_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/inc/system/sys_io_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/inc/system/sys_io_ext.h @@ -0,0 +1,46 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __SYS_IO_EXT_H +#define __SYS_IO_EXT_H + +#include "std_ext.h" +#include "error_ext.h" + + +t_Error SYS_RegisterIoMap (uint64_t virtAddr, uint64_t physAddr, uint32_t size); +t_Error SYS_UnregisterIoMap (uint64_t virtAddr); +uint64_t SYS_PhysToVirt (uint64_t addr); +uint64_t SYS_VirtToPhys (uint64_t addr); + + +#endif /* __SYS_IO_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.c @@ -0,0 +1,1172 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_resources.c + + @Description FMD wrapper resource allocation functions. + +*/ + +#include +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ +#include +#include +#include +#include + +#include "lnxwrp_resources.h" + +extern int fsl_fman_phy_maxfrm; /* MAC file */ + +static struct device_node *match_mac_to_dpaa_port(struct device_node + *enet_mac_node) +{ + struct device_node *dpaa_node = NULL; + struct device_node *dpaa_itf = NULL; + + /* find DPAA node starting from root */ + dpaa_node = of_find_compatible_node(NULL, NULL, "fsl,dpaa"); + if (dpaa_node) { + /* for all dpaa ports check which one refers this mac node. */ + for_each_child_of_node(dpaa_node, dpaa_itf) { + struct device_node *by_handle_enet_mac_node = NULL; + const phandle *phandle_prop = NULL; + int lenp = 0; + + phandle_prop = + (typeof(phandle_prop)) + of_get_property(dpaa_itf, "fsl,fman-mac", + &lenp); + if (phandle_prop == NULL) + continue; + + if (WARN_ON(lenp != sizeof(phandle))) + return NULL; + + by_handle_enet_mac_node = + of_find_node_by_phandle(*phandle_prop); + if (unlikely(by_handle_enet_mac_node == NULL)) + return NULL; + + /* check */ + if (by_handle_enet_mac_node == enet_mac_node) { + of_node_put(by_handle_enet_mac_node); + return dpaa_itf; + } + + of_node_put(by_handle_enet_mac_node); + } + of_node_put(dpaa_node); + } + + return NULL; +} + +static struct device_node *match_fman_port_to_mac(struct device_node *fm_node, + struct device_node + *fm_port_node) +{ + struct device_node *fm_node_idx = NULL; + + /* for all enet nodes (macs) check which one refers this FMan port. */ + for_each_child_of_node(fm_node, fm_node_idx) { + if (of_device_is_compatible(fm_node_idx, "fsl,fman-1g-mac") || + of_device_is_compatible(fm_node_idx, + "fsl,fman-10g-mac")) { + struct device_node *fman_port_node_rx = NULL; + struct device_node *fman_port_node_tx = NULL; + /* RX is first */ + fman_port_node_rx = of_parse_phandle(fm_node_idx, + "fsl,port-handles", 0); + if (unlikely(fman_port_node_rx == NULL)) + continue; + /* TX is second */ + fman_port_node_tx = of_parse_phandle(fm_node_idx, + "fsl,port-handles", 1); + if (unlikely(fman_port_node_tx == NULL)) { + of_node_put(fman_port_node_rx); + continue; + } + + /* check */ + if (fman_port_node_rx == fm_port_node + || fman_port_node_tx == fm_port_node) { + of_node_put(fman_port_node_rx); + of_node_put(fman_port_node_tx); + return fm_node_idx; + } + + of_node_put(fman_port_node_rx); + of_node_put(fman_port_node_tx); + } + } + + return NULL; +} + +static bool is_fman_port_active(struct device_node *fm_node, + struct device_node *fm_port_node) +{ + struct device_node *enet_mac_node = NULL; + struct device_node *itf_node = NULL; + + /* Which MAC node refers to this FMan port. */ + enet_mac_node = match_fman_port_to_mac(fm_node, fm_port_node); + + if (unlikely(enet_mac_node == NULL)) + return false; + + /* Which dpaa port node refers this MAC node. */ + itf_node = match_mac_to_dpaa_port(enet_mac_node); + of_node_put(enet_mac_node); + + if (unlikely(!itf_node)) + return false; + + /* check if itf (DPAA ports) is available. + * if available, means that the FMan port is + * also available - return true + */ + if (!of_device_is_available(itf_node)) { + of_node_put(itf_node); + return false; + } + of_node_put(itf_node); + + return true; +} + +int fm_set_active_fman_ports(struct platform_device *of_dev, + t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + struct device_node *fm_node = NULL; + struct device_node *fm_port_node = NULL; + + memset(&p_LnxWrpFmDev->fm_active_ports_info, 0, + sizeof(struct fm_active_ports)); + + /* get FMan node */ + fm_node = of_dev->dev.of_node; + + /* for all ports which belong to this FMan, check if they are active. + * If active, set their parameters. */ + for_each_child_of_node(fm_node, fm_port_node) { + + /* OH FMan ports */ + if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-oh")) + /* all oh ports are active */ + p_LnxWrpFmDev->fm_active_ports_info.num_oh_ports++; + + if (!is_fman_port_active(fm_node, fm_port_node)) + continue; + + /* 10g TX FMan ports */ + if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-10g-tx")) + p_LnxWrpFmDev->fm_active_ports_info.num_tx10_ports++; + + /* 10g RX FMan ports */ + else if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-10g-rx")) + p_LnxWrpFmDev->fm_active_ports_info.num_rx10_ports++; + + /* 1G TX FMan ports */ + else if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-1g-tx")) + p_LnxWrpFmDev->fm_active_ports_info.num_tx_ports++; + + /* 1G RX FMan ports */ + else if (of_device_is_compatible(fm_port_node, + "fsl,fman-port-1g-rx")) + p_LnxWrpFmDev->fm_active_ports_info.num_rx_ports++; + } + + /* If performance is needed no oh port is probed + * except the one used for host command. */ +#if defined(CONFIG_FMAN_DISABLE_OH_TO_REUSE_RESOURCES) + if (p_LnxWrpFmDev->fm_active_ports_info.num_oh_ports) + p_LnxWrpFmDev->fm_active_ports_info.num_oh_ports = 1; + + printk(KERN_WARNING "FMAN(%u)-Performance mode - no OH support...\n", + p_LnxWrpFmDev->id); +#endif + + return 0; +} + +#ifdef FM_FIFO_ALLOCATION_OLD_ALG +/* BPOOL size is constant and equal w/ DPA_BP_SIZE */ +static uint32_t get_largest_buf_size(uint32_t max_rx_frame_size, uint32_t buf_size) +{ + uint32_t priv_data_size = 16; /* DPA_PRIV_DATA_SIZE */ + uint32_t hash_results_size = 16; /* DPA_HASH_RESULTS_SIZE */ + uint32_t parse_results_size = + sizeof(t_FmPrsResult); /* DPA_PARSE_RESULTS_SIZE */ + uint32_t bp_head = priv_data_size + hash_results_size + + parse_results_size; /* DPA_BP_HEAD */ + uint32_t bp_size = bp_head + max_rx_frame_size + + NET_IP_ALIGN; /* DPA_BP_SIZE */ + + return CEIL_DIV(bp_size, buf_size); +} +#endif + +/* Calculate the fifosize based on MURAM allocation, number of ports, dpde + value and s/g software support (! Kernel does not suport s/g). + + Algorithm summary: + - Calculate the the minimum fifosize required for every type of port + (TX,RX for 1G, 2.5G and 10G). + - Set TX the minimum fifosize required. + - Distribute the remaining buffers (after all TX were set) to RX ports + based on: + 1G RX = Remaining_buffers * 1/(1+2.5+10) + 2.5G RX = Remaining_buffers * 2.5/(1+2.5+10) + 10G RX = Remaining_buffers * 10/(1+2.5+10) + - if the RX is smaller than the minimum required, then set the minimum + required + - In the end distribuite the leftovers if there are any (due to + unprecise calculus) or if over allocation cat some buffers from all RX + ports w/o pass over minimum required treshold, but if there must be + pass the treshold in order to cat the over allocation ,then this + configuration can not be set - KERN_ALERT. +*/ +int fm_precalculate_fifosizes(t_LnxWrpFmDev *p_LnxWrpFmDev, int muram_fifo_size) +{ + + /* input parameters */ + struct fm_active_ports *fm_active_ports_info = NULL; + int num_1g_ports = 0; + int num_2g5_ports = 0; + int num_10g_ports = 0; + int num_oh_ports = 0; + + /* output parameters */ + struct fm_resource_settings *fm_resource_settings_info = NULL; + int oh_buff = 0; + int tx_1g_bufs = 0, rx_1g_bufs = 0; + int tx_2g5_bufs = 0, rx_2g5_bufs = 0; + int tx_10g_bufs = 0, rx_10g_bufs = 0; + int err = 0; + + /* throughput parameters: divide it by 10 when used */ + int gb1g = 10, gb2g5 = 25, gb10g = 100, gb_sum = 0; + + /* buffers parameters */ + int buf_size = 0x100; /* Buffer unit size */ + int total_no_buffers = 0; /* Calculus based on MURAM size for + fifos and buf. unit size */ + + int shared_ext_buff = 0; /* External buffers allocated - LLD + boundaries:DEFAULT_PORT_extraSizeOfFifo */ + + int min_tx_1g_2g5_bufs = 0; /* minimum TX1g buffers required + (see refman.) */ + int min_tx_10g_bufs = 0; /* minimum TX10g buffers required + (see refman.) */ + int min_rx_bufs = 0; /* minimum RX buffers required (see refman.) */ + + /* Buffer sizes calculus */ + int max_frame_size = + fsl_fman_phy_maxfrm ? fsl_fman_phy_maxfrm : + CONFIG_DPA_MAX_FRM_SIZE; + int remaining_bufs = 0; + int rx_1g_bufs_ceil = 0, rx_2g5_bufs_ceil = 0, rx_10g_bufs_ceil = 0; + int rx_2g5_max_bufs = 0, rx_10g_max_bufs = 0; + int rx_1g_used = 0, rx_1g_2g5_used = 0, rx_1g_10g_used =0, + rx_2g5_used = 0, rx_2g5_10g_used = 0, rx_1g_2g5_10g_used = 0; + + /* overflow checking */ + int tot_rx_buffs, tot_tx_buffs, tot_oh_buffs, tot_used_buffs, + leftovers = 0; + int overflow = 0; + bool loop = false; + + /* check input parameters correctness */ + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + ASSERT_COND(fm_active_ports_info != NULL); + ASSERT_COND(fm_resource_settings_info != NULL); + ASSERT_COND(fm_active_ports_info->num_tx_ports == + fm_active_ports_info->num_rx_ports); + ASSERT_COND(fm_active_ports_info->num_tx25_ports == + fm_active_ports_info->num_tx25_ports); + ASSERT_COND(fm_active_ports_info->num_tx10_ports == + fm_active_ports_info->num_tx10_ports); + ASSERT_COND(max_frame_size != 0); + ASSERT_COND(muram_fifo_size != 0); + + /* set input parameters */ + num_1g_ports = fm_active_ports_info->num_tx_ports; + num_2g5_ports = fm_active_ports_info->num_tx25_ports; + num_10g_ports = fm_active_ports_info->num_tx10_ports; + num_oh_ports = fm_active_ports_info->num_oh_ports; + + /* throughput calculus */ + gb_sum = gb1g * num_1g_ports + gb2g5 * num_2g5_ports + + gb10g * num_10g_ports; /* divide it by 10 */ + + /* Base buffer calculus */ + oh_buff = DPDE_1G + 4; /* should be: + get_largest_buf_size(max_frame_size, buf_size), + but LLD: DPDE + 4 */ + total_no_buffers = muram_fifo_size / buf_size; + + min_tx_1g_2g5_bufs = CEIL_DIV(max_frame_size, buf_size) + + DPDE_1G + 3 + 1; /* +1 to handle Jumbo Frames */ + min_tx_10g_bufs = CEIL_DIV(max_frame_size, buf_size) + + DPDE_10G + 3 + 1; /* +1 to handle Jumbo Frames */ + + { +#ifdef FM_FIFO_ALLOCATION_OLD_ALG + uint8_t fm_rev_major = 0; + fm_rev_major = + (uint8_t) ((* + ((volatile uint32_t *) + UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr + + 0x000c30c4)) & 0xff00) >> 8); + + if (fm_rev_major < 4) + min_rx_bufs = + get_largest_buf_size(max_frame_size, + buf_size) + 7; + else +#endif + min_rx_bufs = 8; + } + + shared_ext_buff = num_10g_ports ? 32 : 16; /* LLD boundaries: + DEFAULT_PORT_extraSizeOfFifo */ + + /* TX ports will have minimum required buffers + Calculus of the remaining buffers for all RX ports */ + tx_1g_bufs = num_1g_ports ? min_tx_1g_2g5_bufs : 0; + tx_2g5_bufs = num_2g5_ports ? min_tx_1g_2g5_bufs : 0; + tx_10g_bufs = num_10g_ports ? min_tx_10g_bufs : 0; + + remaining_bufs = total_no_buffers - + oh_buff * num_oh_ports - + num_1g_ports * min_tx_1g_2g5_bufs - + num_2g5_ports * min_tx_1g_2g5_bufs - + num_10g_ports * min_tx_10g_bufs - shared_ext_buff; + + if (remaining_bufs < 0) { + printk(KERN_ALERT + "This configuration will not work due to low number of" + " buffers (%u buffers)...\n", + total_no_buffers); + err = -1; + goto precalculated_fifosize_out; + } + + /* Per port buffer size calculus + . for TX ports give always minimum required + . for RX ports give whatever left scaled per port type */ + /* ------------------------------------------------------- */ + if (num_1g_ports) { + rx_1g_bufs_ceil = + (gb_sum / + 10) ? CEIL_DIV(((remaining_bufs * gb1g) / 10), + (gb_sum / 10)) : 0; + rx_1g_bufs = MAX(min_rx_bufs, rx_1g_bufs_ceil); + rx_1g_used = rx_1g_bufs - rx_1g_bufs_ceil; /* always >= 0 */ + /* distribute to 2.5g and 10g ports */ + rx_1g_2g5_used = + (num_2g5_ports + + num_10g_ports) ? CEIL_DIV(rx_1g_used * num_1g_ports * + num_2g5_ports, + num_2g5_ports + + num_10g_ports) : 0; + rx_1g_10g_used = + (num_2g5_ports + + num_10g_ports) ? CEIL_DIV(rx_1g_used * num_1g_ports * + num_10g_ports, + num_2g5_ports + + num_10g_ports) : 0; + } + + if (num_2g5_ports) { + rx_2g5_bufs_ceil = + (gb_sum / + 10) ? CEIL_DIV(((remaining_bufs * gb2g5) / 10), + (gb_sum / 10)) : 0; + rx_2g5_max_bufs = MAX(min_rx_bufs, rx_2g5_bufs_ceil); + rx_2g5_bufs = + MAX(min_rx_bufs, rx_2g5_max_bufs - rx_1g_2g5_used); + rx_2g5_used = rx_2g5_bufs - rx_2g5_bufs_ceil; /* always >= 0 */ + /* distribute to 10g ports */ + rx_2g5_10g_used = + num_10g_ports ? CEIL_DIV(rx_2g5_used * num_2g5_ports, + num_10g_ports) : 0; + } + + if (num_10g_ports) { + rx_10g_bufs_ceil = + (gb_sum / + 10) ? CEIL_DIV(((remaining_bufs * gb10g) / 10), + (gb_sum / 10)) : 0; + rx_10g_max_bufs = MAX(min_rx_bufs, rx_10g_bufs_ceil); + /* keep count of all distribution */ + rx_1g_2g5_10g_used = rx_1g_10g_used + rx_2g5_10g_used; + rx_10g_bufs = + MAX(min_rx_bufs, + rx_10g_max_bufs - rx_1g_2g5_10g_used); + } + + /* overflow-leftover calculus */ + tot_rx_buffs = rx_1g_bufs * num_1g_ports + + rx_2g5_bufs * num_2g5_ports + rx_10g_bufs * num_10g_ports; + tot_tx_buffs = tx_1g_bufs * num_1g_ports + + tx_2g5_bufs * num_2g5_ports + tx_10g_bufs * num_10g_ports; + tot_oh_buffs = oh_buff * num_oh_ports; + tot_used_buffs = + tot_oh_buffs + tot_tx_buffs + tot_rx_buffs + shared_ext_buff; + + overflow = tot_used_buffs - total_no_buffers; + /* used more than available */ + if (overflow > 0) { + loop = true; + while (overflow > 0 && loop) { + loop = false; + if (overflow && num_10g_ports + && rx_10g_bufs > min_rx_bufs) { + rx_10g_bufs--; + overflow -= num_10g_ports; + loop = true; + } + if (overflow && num_2g5_ports + && rx_2g5_bufs > min_rx_bufs) { + rx_2g5_bufs--; + overflow -= num_2g5_ports; + loop = true; + } + if (overflow && num_1g_ports + && rx_1g_bufs > min_rx_bufs) { + rx_1g_bufs--; + overflow -= num_1g_ports; + loop = true; + } + } + + if (overflow > 0) { + printk(KERN_ALERT + "This configuration will not work due to over" + " buffer allocation (%d buffers)...\n", + overflow); + err = -1; + goto precalculated_fifosize_out; + } + } + /* left a few buffers */ + else if (overflow < 0) { + leftovers = total_no_buffers - tot_used_buffs; + loop = true; + while (leftovers > 0 && loop) { + loop = false; + if (leftovers && num_1g_ports) { + rx_1g_bufs++; + leftovers -= num_1g_ports; + loop = true; + } + + if (leftovers && num_2g5_ports) { + rx_2g5_bufs++; + leftovers -= num_2g5_ports; + loop = true; + } + + if (leftovers && num_10g_ports) { + rx_10g_bufs++; + leftovers -= num_10g_ports; + loop = true; + } + } + } + + /* set fifosizes for this FMan ports */ + fm_resource_settings_info->tx1g_num_buffers = tx_1g_bufs; + fm_resource_settings_info->rx1g_num_buffers = rx_1g_bufs; + fm_resource_settings_info->tx2g5_num_buffers = tx_2g5_bufs; + fm_resource_settings_info->rx2g5_num_buffers = rx_2g5_bufs; + fm_resource_settings_info->tx10g_num_buffers = tx_10g_bufs; + fm_resource_settings_info->rx10g_num_buffers = rx_10g_bufs; + fm_resource_settings_info->oh_num_buffers = oh_buff; + fm_resource_settings_info->shared_ext_buffers = shared_ext_buff; + +precalculated_fifosize_out: + printk(KERN_INFO " FMAN(%u) Fifo size settings:\n", + p_LnxWrpFmDev->id); + printk(KERN_INFO " - Total buffers available(%u - 256B/buffer)\n", + total_no_buffers); + printk(KERN_INFO " - Total throughput(%uGbps)\n", (gb_sum / 10)); + printk(KERN_INFO " - Max frame size(%uB)\n", max_frame_size); + if (num_1g_ports) { + printk(KERN_INFO + " - 1G ports TX %u(%u bufs set (min: %u))\n", + num_1g_ports, tx_1g_bufs, min_tx_1g_2g5_bufs); + printk(KERN_INFO + " - 1G ports RX %u(%u bufs set (min: %u))\n", + num_1g_ports, rx_1g_bufs, min_rx_bufs); + } + if (num_2g5_ports) { + printk(KERN_INFO + " - 2.5G ports TX %u(%u bufs set (min: %u))\n", + num_2g5_ports, tx_2g5_bufs, min_tx_1g_2g5_bufs); + printk(KERN_INFO + " - 2.5G ports RX %u(%u bufs set (min: %u))\n", + num_2g5_ports, rx_2g5_bufs, min_rx_bufs); + } + if (num_10g_ports) { + printk(KERN_INFO + " - 10G ports TX %u(%u bufs set (min: %u))\n", + num_10g_ports, tx_10g_bufs, min_tx_10g_bufs); + printk(KERN_INFO + " - 10G ports RX %u(%u bufs set (min: %u))\n", + num_10g_ports, rx_10g_bufs, min_rx_bufs); + } + if (num_oh_ports) + printk(KERN_INFO " - OH-HC ports %u(%u)\n", num_oh_ports, + oh_buff); + printk(KERN_INFO " - Shared extra buffers(%u)\n", shared_ext_buff); + + return err; +} + +int fm_set_precalculate_fifosize(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct fm_resource_settings *fm_resource_settings_info = NULL; + struct fm_active_ports *fm_active_ports_info = NULL; + t_FmPortRsrc portRsrc; + t_Error errCode; + uint32_t buf_size = 0x100; + + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + + memset(&portRsrc, 0, sizeof(t_FmPortRsrc)); + +/* IF 1G PORT */ + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_TX) { + portRsrc.num = + fm_resource_settings_info->tx1g_num_buffers * buf_size; + portRsrc.extra = 0; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX) { + portRsrc.num = + fm_resource_settings_info->rx1g_num_buffers * buf_size; + portRsrc.extra = + fm_resource_settings_info->shared_ext_buffers * + buf_size; + } +/* IF 2.5G PORT */ + /* TODO: Not supported by LLD yet. */ + +/* IF 10G PORT */ + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) { + portRsrc.num = + fm_resource_settings_info->tx10g_num_buffers * + buf_size; + portRsrc.extra = 0; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) { + portRsrc.num = + fm_resource_settings_info->rx10g_num_buffers * + buf_size; + portRsrc.extra = + fm_resource_settings_info->shared_ext_buffers * + buf_size; + } else { /* IF OH PORT */ + portRsrc.num = + fm_resource_settings_info->oh_num_buffers * buf_size; + portRsrc.extra = 0; + } + + errCode = FM_PORT_SetSizeOfFifo(p_LnxWrpFmPortDev->h_Dev, &portRsrc); + if (errCode != E_OK) { + printk(KERN_WARNING + "FM_PORT_SetSizeOfFifo failed (errCode:0x%2x)", + errCode); + return -EIO; + } + + return 0; +} + +/* Compute FMan open DMA based on total number of open DMAs and + * number of available FMan ports. + * + * By default 10g ports are set to input parameters. The other ports + * tries to keep the proportion rx=2tx open DMAs or thresholds. + * + * If leftovers, then those will be set as shared. + * + * If after computing overflow appears, then it decrements open DMA + * for all ports w/o cross the thresholds. If the thresholds are meet + * and is still overflow, then it returns error. + */ +int fm_precalculate_open_dma(t_LnxWrpFmDev *p_LnxWrpFmDev, + int max_fm_open_dma, + int default_tx_10g_dmas, + int default_rx_10g_dmas, + int min_tx_10g_treshold, int min_rx_10g_treshold) +{ + /* input parameters */ + struct fm_active_ports *fm_active_ports_info = NULL; + int num_1g_ports = 0; + int num_2g5_ports = 0; + int num_10g_ports = 0; + int num_oh_ports = 0; + + /* output parameters */ + struct fm_resource_settings *fm_resource_settings_info = NULL; + int tx_1g_dmas = 0, rx_1g_dmas = 0; + int tx_2g5_dmas = 0, rx_2g5_dmas = 0; + int tx_10g_dmas = 0, rx_10g_dmas = 0; + int oh_dmas = 0; + int shared_ext_open_dma = 0; + int err = 0; + + /* open dma calculus */ + int remaing_dmas = 0; + int rx_tx_raport = + FM_OPENDMA_RX_TX_RAPORT; /* RX = FM_OPENDMA_RX_TX_RAPORT *TX */ + int min_tx_1_2g5_treshold = 1; + int min_rx_1_2g5_treshold = 1; + int max_open_dma_treshold = 16; /* LLD: MAX_NUM_OF_DMAS */ + int max_ext_open_dma_treshold = 8; /* LLD: MAX_NUM_OF_EXTRA_DMAS */ + + int open_dmas_computed = 0; + int weighted_remaining_ports = 0; + int overflow = 0; + bool re_loop = false; + + /* check input parameters correctness */ + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + ASSERT_COND(fm_active_ports_info != NULL); + ASSERT_COND(fm_resource_settings_info != NULL); + ASSERT_COND(fm_active_ports_info->num_tx_ports == + fm_active_ports_info->num_rx_ports); + ASSERT_COND(fm_active_ports_info->num_tx25_ports == + fm_active_ports_info->num_tx25_ports); + ASSERT_COND(fm_active_ports_info->num_tx10_ports == + fm_active_ports_info->num_tx10_ports); + ASSERT_COND(min_tx_10g_treshold <= max_open_dma_treshold); + ASSERT_COND(min_tx_10g_treshold <= max_open_dma_treshold); + + /* set input parameters */ + num_1g_ports = fm_active_ports_info->num_tx_ports; + num_2g5_ports = fm_active_ports_info->num_tx25_ports; + num_10g_ports = fm_active_ports_info->num_tx10_ports; + num_oh_ports = fm_active_ports_info->num_oh_ports; + + /* compute open DMAs per port */ + /* ------------------------------------------------------- */ + if (num_10g_ports) { + tx_10g_dmas = default_tx_10g_dmas; /* per 10G TX port */ + rx_10g_dmas = default_rx_10g_dmas; /* per 10G RX port */ + } + if (num_oh_ports) + oh_dmas = 1; /* per OH port */ + + /* should this be null? or LLD: + DEFAULT_PORT_extraNumOfOpenDmas:10g-8,else 1 */ + shared_ext_open_dma = 0; + + /* based on total number of ports set open DMAs for all other ports */ + remaing_dmas = max_fm_open_dma - + (oh_dmas * num_oh_ports) - + (tx_10g_dmas * num_10g_ports + rx_10g_dmas * num_10g_ports) - + shared_ext_open_dma; + + if (remaing_dmas < 0) { + printk(KERN_ALERT + "This configuration will not work due to low number" + " of open dmas (%u open dmas)...\n", + max_fm_open_dma); + err = -1; + goto precalculated_open_dma_out; + } + + weighted_remaining_ports = + /*tx */ num_1g_ports * rx_tx_raport + /*rx */ num_1g_ports + + /*tx */ num_2g5_ports * rx_tx_raport + /*rx */ num_2g5_ports; + + /* compute the other ports */ + if (num_1g_ports) { + tx_1g_dmas = + MAX(MIN + (ROUND_DIV + (remaing_dmas, weighted_remaining_ports), + max_open_dma_treshold), min_tx_1_2g5_treshold); + rx_1g_dmas = + MAX(MIN + (ROUND_DIV + ((remaing_dmas * rx_tx_raport), + weighted_remaining_ports), + max_open_dma_treshold), min_rx_1_2g5_treshold); + } + if (num_2g5_ports) { + tx_2g5_dmas = + MAX(MIN + (CEIL_DIV(remaing_dmas, weighted_remaining_ports), + max_open_dma_treshold), min_tx_1_2g5_treshold); + rx_2g5_dmas = + MAX(MIN + (CEIL_DIV + ((remaing_dmas * rx_tx_raport), + weighted_remaining_ports), + max_open_dma_treshold), min_rx_1_2g5_treshold); + + } + + /* Check if these settings is not exceding treshold */ + open_dmas_computed = num_1g_ports * tx_1g_dmas + + num_1g_ports * rx_1g_dmas + + num_2g5_ports * tx_2g5_dmas + + num_2g5_ports * rx_2g5_dmas + + num_10g_ports * tx_10g_dmas + + num_10g_ports * rx_10g_dmas + + num_oh_ports * oh_dmas + shared_ext_open_dma; + + /* overflow-leftover calculus */ + overflow = open_dmas_computed - max_fm_open_dma; + re_loop = true; + while (overflow > 0 && re_loop == true) { + re_loop = false; + if (num_1g_ports && overflow + && rx_1g_dmas > min_rx_1_2g5_treshold) { + rx_1g_dmas--; + overflow -= num_1g_ports; + re_loop = true; + } + if (num_2g5_ports && overflow + && rx_2g5_dmas > min_rx_1_2g5_treshold) { + rx_2g5_dmas--; + overflow -= num_2g5_ports; + re_loop = true; + } + if (num_10g_ports && overflow + && rx_10g_dmas > min_rx_10g_treshold) { + rx_10g_dmas--; + overflow -= num_10g_ports; + re_loop = true; + } + + if (num_1g_ports && overflow + && tx_1g_dmas > min_tx_1_2g5_treshold) { + tx_1g_dmas--; + overflow -= num_1g_ports; + re_loop = true; + } + if (num_2g5_ports && overflow + && tx_2g5_dmas > min_tx_1_2g5_treshold) { + tx_2g5_dmas--; + overflow -= num_2g5_ports; + re_loop = true; + } + if (num_10g_ports && overflow + && tx_10g_dmas > min_tx_10g_treshold) { + tx_10g_dmas--; + overflow -= num_10g_ports; + re_loop = true; + } + } + + if (overflow > 0) { + printk(KERN_ALERT + "This configuration will not work due to over open dma" + " allocation (%d open dmas)...\n", + overflow); + err = -1; + goto precalculated_open_dma_out; + } + + /* could remain leftovers... e.g. overflow=1, + 2ports => leftover=1 => shared=1 */ + open_dmas_computed = num_1g_ports * tx_1g_dmas + + num_1g_ports * rx_1g_dmas + + num_2g5_ports * tx_2g5_dmas + + num_2g5_ports * rx_2g5_dmas + + num_10g_ports * tx_10g_dmas + + num_10g_ports * rx_10g_dmas + + num_oh_ports * oh_dmas + shared_ext_open_dma; + + if (max_fm_open_dma - open_dmas_computed > 0) + shared_ext_open_dma = + MIN(shared_ext_open_dma + max_fm_open_dma - + open_dmas_computed, max_ext_open_dma_treshold); + + /* set open dmas */ + fm_resource_settings_info->tx_1g_dmas = tx_1g_dmas; + fm_resource_settings_info->rx_1g_dmas = rx_1g_dmas; + fm_resource_settings_info->tx_2g5_dmas = tx_2g5_dmas; + fm_resource_settings_info->rx_2g5_dmas = rx_2g5_dmas; + fm_resource_settings_info->tx_10g_dmas = tx_10g_dmas; + fm_resource_settings_info->rx_10g_dmas = rx_10g_dmas; + fm_resource_settings_info->oh_dmas = oh_dmas; + fm_resource_settings_info->shared_ext_open_dma = shared_ext_open_dma; + +precalculated_open_dma_out: + printk(KERN_INFO " FMAN(%u) open dma settings:\n", + p_LnxWrpFmDev->id); + printk(KERN_INFO " - Total open dma available(%u)\n", + max_fm_open_dma); + if (num_1g_ports) { + printk(KERN_INFO " - 1G ports TX %u(%u)\n", num_1g_ports, + tx_1g_dmas); + printk(KERN_INFO " - 1G ports RX %u(%u)\n", num_1g_ports, + rx_1g_dmas); + } + if (num_2g5_ports) { + printk(KERN_INFO " - 2.5G ports TX %u(%u)\n", num_2g5_ports, + tx_2g5_dmas); + printk(KERN_INFO " - 2.5G ports RX %u(%u)\n", num_2g5_ports, + tx_2g5_dmas); + } + if (num_10g_ports) { + printk(KERN_INFO " - 10G ports TX %u(%u)\n", num_10g_ports, + tx_10g_dmas); + printk(KERN_INFO " - 10G ports RX %u(%u)\n", num_10g_ports, + rx_10g_dmas); + } + if (num_oh_ports) + printk(KERN_INFO " - OH-HC ports %u(%u)\n", num_oh_ports, + oh_dmas); + printk(KERN_INFO " - Shared extra open dma(%u)\n", + shared_ext_open_dma ? shared_ext_open_dma : 0); + + return err; +} + +int fm_set_precalculate_open_dma(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct fm_resource_settings *fm_resource_settings_info = NULL; + t_FmPortRsrc numOfOpenDmas; + t_Error errCode; + + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + + memset(&numOfOpenDmas, 0, sizeof(t_FmPortRsrc)); + +/* IF 1G PORT */ + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_TX) + numOfOpenDmas.num = fm_resource_settings_info->tx_1g_dmas; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX) + numOfOpenDmas.num = fm_resource_settings_info->rx_1g_dmas; +/* IF 2.5G PORT*/ + /* TODO: Not supported by LLD yet. */ + +/* IF 10G PORT */ + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) + numOfOpenDmas.num = fm_resource_settings_info->tx_10g_dmas; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) + numOfOpenDmas.num = fm_resource_settings_info->rx_10g_dmas; +/* IF OH PORT */ + else + numOfOpenDmas.num = fm_resource_settings_info->oh_dmas; + + numOfOpenDmas.extra = fm_resource_settings_info->shared_ext_open_dma; + + errCode = FM_PORT_SetNumOfOpenDmas(p_LnxWrpFmPortDev->h_Dev, + &numOfOpenDmas); + if (errCode != E_OK) { + printk(KERN_WARNING + "FM_PORT_SetNumOfOpenDmas failed (errCode:0x%2x)", + errCode); + return -EIO; + } + + return 0; +} + +/* Compute FMan tnums based on available tnums and number of ports. + Set defaults (minim tresholds) and then distribute leftovers.*/ +int fm_precalculate_tnums(t_LnxWrpFmDev *p_LnxWrpFmDev, int max_fm_tnums) +{ + /* input parameters */ + struct fm_active_ports *fm_active_ports_info = NULL; + int num_1g_ports = 0; + int num_2g5_ports = 0; + int num_10g_ports = 0; + int num_oh_ports = 0; + + /* output parameters */ + struct fm_resource_settings *fm_resource_settings_info = NULL; + int tx_1g_tnums = 0, rx_1g_tnums = 0; + int tx_2g5_tnums = 0, rx_2g5_tnums = 0; + int tx_10g_tnums = 0, rx_10g_tnums = 0; + int oh_tnums = 0; + int shared_ext_tnums = 0; + int err = 0; + + /* open dma calculus */ + int default_and_treshold_rx_tx_10g_tnums = 16; /* DPDE_10g */ + int default_and_treshold_rx_tx_1g_2g5_tnums = 4; /* DPDE_1g */ + int default_and_treshold_oh_tnums = 2; /* Hell knows why */ + int max_tnums_treshold = 64; /* LLD: MAX_NUM_OF_TASKS */ + int max_ext_tnums_treshold = 8; /* LLD: MAX_NUM_OF_EXTRA_TASKS */ + int remaing_tnums = 0; + int tnums_computed = 0; + int leftovers = 0; + bool re_loop = true; + + /* check input parameters correctness */ + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_active_ports_info = &p_LnxWrpFmDev->fm_active_ports_info; + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + ASSERT_COND(fm_active_ports_info != NULL); + ASSERT_COND(fm_resource_settings_info != NULL); + ASSERT_COND(fm_active_ports_info->num_tx_ports == + fm_active_ports_info->num_rx_ports); + ASSERT_COND(fm_active_ports_info->num_tx25_ports == + fm_active_ports_info->num_tx25_ports); + ASSERT_COND(fm_active_ports_info->num_tx10_ports == + fm_active_ports_info->num_tx10_ports); + + /* set input parameters */ + num_1g_ports = fm_active_ports_info->num_tx_ports; + num_2g5_ports = fm_active_ports_info->num_tx25_ports; + num_10g_ports = fm_active_ports_info->num_tx10_ports; + num_oh_ports = fm_active_ports_info->num_oh_ports; + + /* compute FMan TNUMs per port */ + /* ------------------------------------------------------- */ + if (num_1g_ports) { + tx_1g_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + rx_1g_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + } + if (num_2g5_ports) { + tx_2g5_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + rx_2g5_tnums = default_and_treshold_rx_tx_1g_2g5_tnums; + } + if (num_10g_ports) { + tx_10g_tnums = default_and_treshold_rx_tx_10g_tnums; + rx_10g_tnums = default_and_treshold_rx_tx_10g_tnums; + } + if (num_oh_ports) + oh_tnums = default_and_treshold_oh_tnums; + + shared_ext_tnums = num_10g_ports ? + max_ext_tnums_treshold : 2; /* DEFAULT_PORT_extraNumOfTasks */ + + /* based on total number of ports set open DMAs for all other ports */ + remaing_tnums = max_fm_tnums - + (oh_tnums * num_oh_ports) - + (tx_1g_tnums * num_1g_ports + rx_1g_tnums * num_1g_ports) - + (tx_2g5_tnums * num_2g5_ports + rx_2g5_tnums * num_2g5_ports) - + (tx_10g_tnums * num_10g_ports + rx_10g_tnums * num_10g_ports) - + shared_ext_tnums; + + if (remaing_tnums < 0) { + printk(KERN_ALERT + "This configuration will not work due to low number" + " of tnums (%u tnums) and number of total ports" + " available...\n", + max_fm_tnums); + err = -1; + goto precalculated_tnums_out; + } + + leftovers = remaing_tnums; + re_loop = true; + while (leftovers > 0 && re_loop == true) { + re_loop = false; + if (num_10g_ports && (leftovers - (int) num_10g_ports) >= 0 + && (rx_10g_tnums < max_tnums_treshold)) { + rx_10g_tnums++; + leftovers -= num_10g_ports; + re_loop = true; + } + + if (num_10g_ports && (leftovers - (int) num_10g_ports) >= 0 + && (tx_10g_tnums < max_tnums_treshold)) { + tx_10g_tnums++; + leftovers -= num_10g_ports; + re_loop = true; + } + + if (num_2g5_ports && (leftovers - (int) num_2g5_ports) >= 0 + && (rx_2g5_tnums < max_tnums_treshold)) { + rx_2g5_tnums++; + leftovers -= num_2g5_ports; + re_loop = true; + } + + if (num_2g5_ports && (leftovers - (int) num_2g5_ports) >= 0 + && (tx_2g5_tnums < max_tnums_treshold)) { + tx_2g5_tnums++; + leftovers -= num_2g5_ports; + re_loop = true; + } + + if (num_1g_ports && (leftovers - (int) num_1g_ports) >= 0 + && (rx_1g_tnums < max_tnums_treshold)) { + rx_1g_tnums++; + leftovers -= num_1g_ports; + re_loop = true; + } + + if (num_1g_ports && (leftovers - (int) num_1g_ports) >= 0 + && (tx_1g_tnums < max_tnums_treshold)) { + tx_1g_tnums++; + leftovers -= num_1g_ports; + re_loop = true; + } + } + + tnums_computed = + num_1g_ports * tx_1g_tnums + + num_1g_ports * rx_1g_tnums + + num_2g5_ports * tx_2g5_tnums + + num_2g5_ports * rx_2g5_tnums + + num_10g_ports * tx_10g_tnums + + num_10g_ports * rx_10g_tnums + + num_oh_ports * oh_tnums + + shared_ext_tnums; + + if (leftovers > 0) + shared_ext_tnums = + MIN(shared_ext_tnums + max_fm_tnums - tnums_computed, + max_ext_tnums_treshold); + + ASSERT_COND((oh_tnums * num_oh_ports) + + (tx_1g_tnums * num_1g_ports + rx_1g_tnums * num_1g_ports) + + (tx_2g5_tnums * num_2g5_ports + + rx_2g5_tnums * num_2g5_ports) + + (tx_10g_tnums * num_10g_ports + + rx_10g_tnums * num_10g_ports) + shared_ext_tnums <= + max_fm_tnums); + + /* set computed tnums */ + fm_resource_settings_info->tx_1g_tnums = tx_1g_tnums; + fm_resource_settings_info->rx_1g_tnums = rx_1g_tnums; + fm_resource_settings_info->tx_2g5_tnums = tx_2g5_tnums; + fm_resource_settings_info->rx_2g5_tnums = rx_2g5_tnums; + fm_resource_settings_info->tx_10g_tnums = tx_10g_tnums; + fm_resource_settings_info->rx_10g_tnums = rx_10g_tnums; + fm_resource_settings_info->oh_tnums = oh_tnums; + fm_resource_settings_info->shared_ext_tnums = shared_ext_tnums; + +precalculated_tnums_out: + printk(KERN_INFO " FMAN(%u) Tnums settings:\n", p_LnxWrpFmDev->id); + printk(KERN_INFO " - Total Tnums available(%u)\n", max_fm_tnums); + if (num_1g_ports) { + printk(KERN_INFO " - 1G ports TX %u(%u)\n", num_1g_ports, + tx_1g_tnums); + printk(KERN_INFO " - 1G ports RX %u(%u)\n", num_1g_ports, + rx_1g_tnums); + } + if (num_2g5_ports) { + printk(KERN_INFO " - 2.5G ports TX %u(%u)\n", num_2g5_ports, + tx_2g5_tnums); + printk(KERN_INFO " - 2.5G ports RX %u(%u)\n", num_2g5_ports, + rx_2g5_tnums); + } + if (num_10g_ports) { + printk(KERN_INFO " - 10G ports TX %u(%u)\n", num_10g_ports, + tx_10g_tnums); + printk(KERN_INFO " - 10G ports RX %u(%u)\n", num_10g_ports, + rx_10g_tnums); + } + if (num_oh_ports) + printk(KERN_INFO " - OH-HC ports %u(%u)\n", num_oh_ports, + oh_tnums); + printk(KERN_INFO " - Shared extra tnums(%u)\n", shared_ext_tnums); + + return err; +} + +int fm_set_precalculate_tnums(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct fm_resource_settings *fm_resource_settings_info = NULL; + t_FmPortRsrc numOfTask; + t_Error errCode; + + ASSERT_COND(p_LnxWrpFmDev != NULL); + fm_resource_settings_info = &p_LnxWrpFmDev->fm_resource_settings_info; + + memset(&numOfTask, 0, sizeof(t_FmPortRsrc)); + +/* IF 1G PORT */ + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_TX) + numOfTask.num = fm_resource_settings_info->tx_1g_tnums; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX) + numOfTask.num = fm_resource_settings_info->rx_1g_tnums; +/* IF 2.5G PORT*/ + /* TODO: Not supported by LLD yet. */ + +/* IF 10G PORT */ + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) + numOfTask.num = fm_resource_settings_info->tx_10g_tnums; + else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) + numOfTask.num = fm_resource_settings_info->rx_10g_tnums; +/* IF OH PORT */ + else + numOfTask.num = fm_resource_settings_info->oh_dmas; + + numOfTask.extra = fm_resource_settings_info->shared_ext_tnums; + + errCode = FM_PORT_SetNumOfTasks(p_LnxWrpFmPortDev->h_Dev, &numOfTask); + if (errCode != E_OK) { + printk(KERN_WARNING + "FM_PORT_SetNumOfTasks failed (errCode:0x%2x)", + errCode); + return -EIO; + } + + return 0; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/Makefile @@ -0,0 +1,18 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +EXTRA_CFLAGS += -I$(NCSW_FM_INC) +EXTRA_CFLAGS += -I$(NET_DPA) + +obj-y += fsl-ncsw-PFM.o +obj-$(CONFIG_FSL_FMAN_TEST) += fman_test.o + +fsl-ncsw-PFM-objs := lnxwrp_fm.o lnxwrp_fm_port.o lnxwrp_ioctls_fm.o \ + lnxwrp_sysfs.o lnxwrp_sysfs_fm.o lnxwrp_sysfs_fm_port.o \ + lnxwrp_resources.o +obj-$(CONFIG_COMPAT) += lnxwrp_ioctls_fm_compat.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm_port.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm_port.c @@ -0,0 +1,1182 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_fm_port.c + + @Description FMD wrapper - FMan port functions. + +*/ + +#include +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ +#include +#include +#include +#include +#include +#include + +#include "sprint_ext.h" +#include "fm_port_ext.h" +#include "fm_ioctls.h" +#include "lnxwrp_resources.h" +#include "lnxwrp_sysfs_fm_port.h" + +/* TODO: duplicated, see lnxwrp_fm.c */ +#define ADD_ADV_CONFIG_NO_RET(_func, _param)\ +do {\ + if (i < max) {\ + p_Entry = &p_Entrys[i];\ + p_Entry->p_Function = _func;\ + _param\ + i++;\ + } else {\ + REPORT_ERROR(MAJOR, E_INVALID_VALUE,\ + ("Number of advanced-configuration entries exceeded"));\ + } \ +} while (0) + + +static volatile int hcFrmRcv/* = 0 */; +static spinlock_t lock; + +static enum qman_cb_dqrr_result qm_tx_conf_dqrr_cb(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry + *dq) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = ((t_FmTestFq *) fq)->h_Arg; + unsigned long flags; + + FM_PCD_HcTxConf(p_LnxWrpFmDev->h_PcdDev, (t_DpaaFD *)&dq->fd); + spin_lock_irqsave(&lock, flags); + hcFrmRcv--; + spin_unlock_irqrestore(&lock, flags); + + return qman_cb_dqrr_consume; +} + +static enum qman_cb_dqrr_result qm_tx_dqrr_cb(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + return qman_cb_dqrr_consume; +} + +static void qm_err_cb(struct qman_portal *portal, + struct qman_fq *fq, const struct qm_mr_entry *msg) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); +} + +static struct qman_fq *FqAlloc(t_LnxWrpFmDev * p_LnxWrpFmDev, + uint32_t fqid, + uint32_t flags, uint16_t channel, uint8_t wq) +{ + int _errno; + struct qman_fq *fq = NULL; + t_FmTestFq *p_FmtFq; + struct qm_mcc_initfq initfq; + + p_FmtFq = (t_FmTestFq *) XX_Malloc(sizeof(t_FmTestFq)); + if (!p_FmtFq) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj!!!")); + return NULL; + } + + p_FmtFq->fq_base.cb.dqrr = + (QMAN_FQ_FLAG_NO_ENQUEUE ? qm_tx_conf_dqrr_cb : + qm_tx_dqrr_cb); + p_FmtFq->fq_base.cb.ern = qm_err_cb; + p_FmtFq->fq_base.cb.dc_ern = qm_err_cb; + /* p_FmtFq->fq_base.cb.fqs = qm_err_cb; */ + /* qm_err_cb wrongly called when the FQ is parked */ + p_FmtFq->fq_base.cb.fqs = NULL; + p_FmtFq->h_Arg = (t_Handle) p_LnxWrpFmDev; + if (fqid == 0) { + flags |= QMAN_FQ_FLAG_DYNAMIC_FQID; + flags &= ~QMAN_FQ_FLAG_NO_MODIFY; + } else { + flags &= ~QMAN_FQ_FLAG_DYNAMIC_FQID; + } + + if (qman_create_fq(fqid, flags, &p_FmtFq->fq_base)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj - qman_new_fq!!!")); + XX_Free(p_FmtFq); + return NULL; + } + fq = &p_FmtFq->fq_base; + + if (!(flags & QMAN_FQ_FLAG_NO_MODIFY)) { + initfq.we_mask = QM_INITFQ_WE_DESTWQ; + initfq.fqd.dest.channel = channel; + initfq.fqd.dest.wq = wq; + + _errno = qman_init_fq(fq, QMAN_INITFQ_FLAG_SCHED, &initfq); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, + ("FQ obj - qman_init_fq!!!")); + qman_destroy_fq(fq, 0); + XX_Free(p_FmtFq); + return NULL; + } + } + + DBG(TRACE, + ("fqid %d, flags 0x%08x, channel %d, wq %d", qman_fq_fqid(fq), + flags, channel, wq)); + + return fq; +} + +static void FqFree(struct qman_fq *fq) +{ + int _errno; + + _errno = qman_retire_fq(fq, NULL); + if (unlikely(_errno < 0)) + printk(KERN_WARNING "qman_retire_fq(%u) = %d\n", qman_fq_fqid(fq), _errno); + + _errno = qman_oos_fq(fq); + if (unlikely(_errno < 0)) + printk(KERN_WARNING "qman_oos_fq(%u) = %d\n", qman_fq_fqid(fq), _errno); + + qman_destroy_fq(fq, 0); + XX_Free((t_FmTestFq *) fq); +} + +static t_Error QmEnqueueCB(t_Handle h_Arg, void *p_Fd) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *) h_Arg; + int _errno, timeout = 1000000; + unsigned long flags; + + ASSERT_COND(p_LnxWrpFmDev); + + spin_lock_irqsave(&lock, flags); + hcFrmRcv++; + spin_unlock_irqrestore(&lock, flags); + + _errno = qman_enqueue(p_LnxWrpFmDev->hc_tx_fq, (struct qm_fd *) p_Fd, + 0); + if (_errno) + RETURN_ERROR(MINOR, E_INVALID_STATE, + ("qman_enqueue() failed")); + + while (hcFrmRcv && --timeout) { + udelay(1); + cpu_relax(); + } + if (timeout == 0) { + dump_stack(); + RETURN_ERROR(MINOR, E_WRITE_FAILED, + ("timeout waiting for Tx confirmation")); + return E_WRITE_FAILED; + } + + return E_OK; +} + +static t_LnxWrpFmPortDev *ReadFmPortDevTreeNode(struct platform_device + *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + struct device_node *fm_node, *port_node; + struct resource res; + const uint32_t *uint32_prop; + int _errno = 0, lenp; +#ifdef CONFIG_FMAN_P1023 + static unsigned char have_oh_port/* = 0 */; +#endif + + port_node = of_node_get(of_dev->dev.of_node); + + /* Get the FM node */ + fm_node = of_get_parent(port_node); + if (unlikely(fm_node == NULL)) { + REPORT_ERROR(MAJOR, E_NO_DEVICE, + ("of_get_parent() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev = + dev_get_drvdata(&of_find_device_by_node(fm_node)->dev); + of_node_put(fm_node); + + /* if fm_probe() failed, no point in going further with port probing */ + if (p_LnxWrpFmDev == NULL) + return NULL; + + uint32_prop = + (uint32_t *) of_get_property(port_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + if (of_device_is_compatible(port_node, "fsl,fman-port-oh")) { + if (unlikely(*uint32_prop >= FM_MAX_NUM_OF_OH_PORTS)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + +#ifdef CONFIG_FMAN_P1023 + /* Beware, this can be done when there is only + one FMan to be initialized */ + if (!have_oh_port) { + have_oh_port = 1; /* first OP/HC port + is used for host command */ +#else + /* Here it is hardcoded the use of the OH port 1 + (with cell-index 0) */ + if (*uint32_prop == 0) { +#endif + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->hcPort; + p_LnxWrpFmPortDev->id = 0; + /* + p_LnxWrpFmPortDev->id = *uint32_prop-1; + p_LnxWrpFmPortDev->id = *uint32_prop; + */ + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_OH_HOST_COMMAND; + } else { + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->opPorts[*uint32_prop - 1]; + p_LnxWrpFmPortDev->id = *uint32_prop - 1; + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_OH_OFFLINE_PARSING; + } + p_LnxWrpFmPortDev->settings.param.portId = *uint32_prop; + + uint32_prop = + (uint32_t *) of_get_property(port_node, + "fsl,qman-channel-id", + &lenp); + if (uint32_prop == NULL) { + /* + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("missing fsl,qman-channel-id")); + */ + XX_Print("FM warning: missing fsl,qman-channel-id" + " for OH port.\n"); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmPortDev->txCh = *uint32_prop; + + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams. + qmChannel = p_LnxWrpFmPortDev->txCh; + } else if (of_device_is_compatible(port_node, "fsl,fman-port-1g-tx") || + of_device_is_compatible(port_node, "fsl,fman-port-10g-tx")) { + if (unlikely(*uint32_prop >= FM_MAX_NUM_OF_TX_PORTS)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-tx")) + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->txPorts[*uint32_prop + + FM_MAX_NUM_OF_1G_TX_PORTS]; + else + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->txPorts[*uint32_prop]; + + p_LnxWrpFmPortDev->id = *uint32_prop; + p_LnxWrpFmPortDev->settings.param.portId = + p_LnxWrpFmPortDev->id; + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-tx")) + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_TX_10G; + else + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_TX; + + uint32_prop = + (uint32_t *) of_get_property(port_node, + "fsl,qman-channel-id", + &lenp); + if (uint32_prop == NULL) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("missing fsl,qman-channel-id")); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmPortDev->txCh = *uint32_prop; + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams. + qmChannel = p_LnxWrpFmPortDev->txCh; + } else if (of_device_is_compatible(port_node, "fsl,fman-port-1g-rx") || + of_device_is_compatible(port_node, "fsl,fman-port-10g-rx")) { + if (unlikely(*uint32_prop >= FM_MAX_NUM_OF_RX_PORTS)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_get_property(%s, cell-index) failed", + port_node->full_name)); + return NULL; + } + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-rx")) + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->rxPorts[*uint32_prop + + FM_MAX_NUM_OF_1G_RX_PORTS]; + else + p_LnxWrpFmPortDev = + &p_LnxWrpFmDev->rxPorts[*uint32_prop]; + + p_LnxWrpFmPortDev->id = *uint32_prop; + p_LnxWrpFmPortDev->settings.param.portId = + p_LnxWrpFmPortDev->id; + if (of_device_is_compatible + (port_node, "fsl,fman-port-10g-rx")) + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_RX_10G; + else + p_LnxWrpFmPortDev->settings.param.portType = + e_FM_PORT_TYPE_RX; + + if (p_LnxWrpFmDev->pcdActive) + p_LnxWrpFmPortDev->defPcd = p_LnxWrpFmDev->defPcd; + } else { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal port type")); + return NULL; + } + + _errno = of_address_to_resource(port_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmPortDev->dev = &of_dev->dev; + p_LnxWrpFmPortDev->baseAddr = 0; + p_LnxWrpFmPortDev->phys_baseAddr = res.start; + p_LnxWrpFmPortDev->memSize = res.end + 1 - res.start; + p_LnxWrpFmPortDev->settings.param.h_Fm = p_LnxWrpFmDev->h_Dev; + p_LnxWrpFmPortDev->h_LnxWrpFmDev = (t_Handle) p_LnxWrpFmDev; + + of_node_put(port_node); + + p_LnxWrpFmPortDev->active = TRUE; + +#if defined(CONFIG_FMAN_DISABLE_OH_TO_REUSE_RESOURCES) + /* for performance mode no OH port available. */ + if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_OFFLINE_PARSING) + p_LnxWrpFmPortDev->active = FALSE; +#endif + + return p_LnxWrpFmPortDev; +} + +static t_Error ConfigureFmPortDev(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + struct resource *dev_res; + + if (!p_LnxWrpFmPortDev->active) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("FM port not configured!!!")); + + dev_res = + __devm_request_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, + p_LnxWrpFmPortDev->phys_baseAddr, + p_LnxWrpFmPortDev->memSize, + "fman-port-hc"); + if (unlikely(dev_res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("__devm_request_region() failed")); + p_LnxWrpFmPortDev->baseAddr = + PTR_TO_UINT(devm_ioremap + (p_LnxWrpFmDev->dev, + p_LnxWrpFmPortDev->phys_baseAddr, + p_LnxWrpFmPortDev->memSize)); + if (unlikely(p_LnxWrpFmPortDev->baseAddr == 0)) + REPORT_ERROR(MAJOR, E_INVALID_STATE, + ("devm_ioremap() failed")); + + p_LnxWrpFmPortDev->settings.param.baseAddr = + p_LnxWrpFmPortDev->baseAddr; + + return E_OK; +} + +static t_Error InitFmPort3TupleDefPcd(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + t_FmPcdNetEnvParams *p_netEnvParam = NULL; + t_FmPcdKgSchemeParams *p_schemeParam = NULL; + t_FmPortPcdParams pcdParam; + t_FmPortPcdPrsParams prsParam; + t_FmPortPcdKgParams kgParam; + uint8_t i, j; + + if (!p_LnxWrpFmDev->kgActive) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("keygen must be enabled for 3-tuple PCD!")); + + if (!p_LnxWrpFmDev->prsActive) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("parser must be enabled for 3-tuple PCD!")); + + if (p_LnxWrpFmPortDev->pcdNumOfQs < 9) + RETURN_ERROR(MINOR, E_INVALID_VALUE, + ("Need to save at least 18 queues for" + "3-tuple PCD!!!")); + + p_LnxWrpFmPortDev->totalNumOfSchemes = + p_LnxWrpFmPortDev->numOfSchemesUsed = 2; + + if (AllocSchemesForPort + (p_LnxWrpFmDev, p_LnxWrpFmPortDev->totalNumOfSchemes, + &p_LnxWrpFmPortDev->schemesBase) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, + ("No schemes for Rx or OP port for" + " 3-tuple PCD!!!")); + + p_netEnvParam = kzalloc(sizeof(*p_netEnvParam), GFP_KERNEL); + if (!p_netEnvParam) { + RETURN_ERROR(MAJOR, E_NO_MEMORY, + ("Failed to allocate p_netEnvParam")); + } + /* set netEnv */ + p_netEnvParam->numOfDistinctionUnits = 2; + p_netEnvParam->units[0].hdrs[0].hdr = + HEADER_TYPE_IPv4; /* no special options */ + p_netEnvParam->units[1].hdrs[0].hdr = HEADER_TYPE_ETH; + p_LnxWrpFmPortDev->h_DefNetEnv = + FM_PCD_SetNetEnvCharacteristics(p_LnxWrpFmDev->h_PcdDev, + p_netEnvParam); + kfree(p_netEnvParam); + if (!p_LnxWrpFmPortDev->h_DefNetEnv) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM PCD!")); + + p_schemeParam = kmalloc(sizeof(*p_schemeParam), GFP_KERNEL); + if (!p_schemeParam) { + RETURN_ERROR(MAJOR, E_NO_MEMORY, + ("Failed to allocate p_schemeParam")); + } + for (i = 0; i < p_LnxWrpFmPortDev->numOfSchemesUsed; i++) { + memset(p_schemeParam, 0, sizeof(*p_schemeParam)); + p_schemeParam->modify = FALSE; + p_schemeParam->id.relativeSchemeId = + i + p_LnxWrpFmPortDev->schemesBase; + p_schemeParam->alwaysDirect = FALSE; + p_schemeParam->netEnvParams.h_NetEnv = + p_LnxWrpFmPortDev->h_DefNetEnv; + p_schemeParam->schemeCounter.update = TRUE; + p_schemeParam->schemeCounter.value = 0; + + switch (i) { + case (0): /* catch IPv4 */ + p_schemeParam->netEnvParams.numOfDistinctionUnits = 1; + p_schemeParam->netEnvParams.unitIds[0] = 0; + p_schemeParam->baseFqid = p_LnxWrpFmPortDev->pcdBaseQ; + p_schemeParam->nextEngine = e_FM_PCD_DONE; + p_schemeParam->numOfUsedExtractedOrs = 0; + p_schemeParam->useHash = TRUE; + p_schemeParam->keyExtractAndHashParams. + numOfUsedExtracts = 3; + for (j = 0; + j < + p_schemeParam->keyExtractAndHashParams. + numOfUsedExtracts; j++) { + p_schemeParam->keyExtractAndHashParams. + extractArray[j].type = + e_FM_PCD_EXTRACT_BY_HDR; + p_schemeParam->keyExtractAndHashParams. + extractArray[j].extractByHdr.hdr = + HEADER_TYPE_IPv4; + p_schemeParam->keyExtractAndHashParams. + extractArray[j].extractByHdr. + ignoreProtocolValidation = FALSE; + p_schemeParam->keyExtractAndHashParams. + extractArray[j].extractByHdr.type = + e_FM_PCD_EXTRACT_FULL_FIELD; + } + p_schemeParam->keyExtractAndHashParams. + extractArray[0].extractByHdr.extractByHdrType. + fullField.ipv4 = NET_HEADER_FIELD_IPv4_PROTO; + p_schemeParam->keyExtractAndHashParams. + extractArray[1].extractByHdr.extractByHdrType. + fullField.ipv4 = NET_HEADER_FIELD_IPv4_SRC_IP; + p_schemeParam->keyExtractAndHashParams. + extractArray[2].extractByHdr.extractByHdrType. + fullField.ipv4 = NET_HEADER_FIELD_IPv4_DST_IP; + + if (p_schemeParam->useHash) { + p_schemeParam->keyExtractAndHashParams. + privateDflt0 = 0x01020304; + p_schemeParam->keyExtractAndHashParams. + privateDflt1 = 0x11121314; + p_schemeParam->keyExtractAndHashParams. + numOfUsedDflts = + FM_PCD_KG_NUM_OF_DEFAULT_GROUPS; + for (j = 0; + j < FM_PCD_KG_NUM_OF_DEFAULT_GROUPS; + j++) { + /* all types */ + p_schemeParam->keyExtractAndHashParams.dflts[j].type = + (e_FmPcdKgKnownFieldsDfltTypes) j; + p_schemeParam-> + keyExtractAndHashParams. + dflts[j].dfltSelect = + e_FM_PCD_KG_DFLT_GBL_0; + } + p_schemeParam->keyExtractAndHashParams. + numOfUsedMasks = 0; + p_schemeParam->keyExtractAndHashParams. + hashShift = 0; + p_schemeParam->keyExtractAndHashParams. + hashDistributionNumOfFqids = 8; + } + break; + + case (1): /* Garbage collector */ + p_schemeParam->netEnvParams.numOfDistinctionUnits = 0; + p_schemeParam->baseFqid = + p_LnxWrpFmPortDev->pcdBaseQ + 8; + break; + + default: + break; + } + + p_LnxWrpFmPortDev->h_Schemes[i] = + FM_PCD_KgSetScheme(p_LnxWrpFmDev->h_PcdDev, + p_schemeParam); + if (!p_LnxWrpFmPortDev->h_Schemes[i]) { + kfree(p_schemeParam); + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, + ("FM_PCD_KgSetScheme failed")); + } + } + kfree(p_schemeParam); + + /* initialize PCD parameters */ + memset(&pcdParam, 0, sizeof(t_FmPortPcdParams)); + pcdParam.h_NetEnv = p_LnxWrpFmPortDev->h_DefNetEnv; + pcdParam.pcdSupport = e_FM_PORT_PCD_SUPPORT_PRS_AND_KG; + + /* initialize Keygen parameters */ + memset(&prsParam, 0, sizeof(t_FmPortPcdPrsParams)); + + prsParam.parsingOffset = 0; + prsParam.firstPrsHdr = HEADER_TYPE_ETH; + pcdParam.p_PrsParams = &prsParam; + + /* initialize Parser parameters */ + memset(&kgParam, 0, sizeof(t_FmPortPcdKgParams)); + kgParam.numOfSchemes = p_LnxWrpFmPortDev->numOfSchemesUsed; + for (i = 0; i < kgParam.numOfSchemes; i++) + kgParam.h_Schemes[i] = p_LnxWrpFmPortDev->h_Schemes[i]; + + pcdParam.p_KgParams = &kgParam; + + return FM_PORT_SetPCD(p_LnxWrpFmPortDev->h_Dev, &pcdParam); +} + +static t_Error InitFmPortDev(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ +#define MY_ADV_CONFIG_CHECK_END \ + RETURN_ERROR(MAJOR, E_INVALID_SELECTION,\ + ("Advanced configuration routine"));\ + if (errCode != E_OK)\ + RETURN_ERROR(MAJOR, errCode, NO_MSG);\ + } + + int i = 0; + + if (!p_LnxWrpFmPortDev->active || p_LnxWrpFmPortDev->h_Dev) + return E_INVALID_STATE; + + p_LnxWrpFmPortDev->h_Dev = + FM_PORT_Config(&p_LnxWrpFmPortDev->settings.param); + if (p_LnxWrpFmPortDev->h_Dev == NULL) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-port")); + + if ((p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) + || (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX)) { + t_Error errCode = E_OK; + errCode = + FM_PORT_ConfigDeqHighPriority(p_LnxWrpFmPortDev->h_Dev, + TRUE); + if (errCode != E_OK) + RETURN_ERROR(MAJOR, errCode, NO_MSG); +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT + errCode = + FM_PORT_ConfigDeqPrefetchOption(p_LnxWrpFmPortDev->h_Dev, + e_FM_PORT_DEQ_FULL_PREFETCH); + if (errCode + != E_OK) + RETURN_ERROR(MAJOR, errCode, NO_MSG); +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + } + +/* Call the driver's advanced configuration routines, if requested: + Compare the function pointer of each entry to the available routines, + and invoke the matching routine with proper casting of arguments. */ + while (p_LnxWrpFmPortDev->settings.advConfig[i].p_Function + && (i < FM_MAX_NUM_OF_ADV_SETTINGS)) { + ADV_CONFIG_CHECK_START(& + (p_LnxWrpFmPortDev->settings. + advConfig[i])) + + ADV_CONFIG_CHECK(p_LnxWrpFmPortDev->h_Dev, + FM_PORT_ConfigBufferPrefixContent, + PARAMS(1, + (t_FmPortBufferPrefixContent + *))) + + MY_ADV_CONFIG_CHECK_END + /* Advance to next advanced configuration entry */ + i++; + } + + if (FM_PORT_Init(p_LnxWrpFmPortDev->h_Dev) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) + /* even if these functions return w/ error, do not crash kernel. + Do not return anything because the container function is not + linux complient (it should return -EIO). */ + fm_set_precalculate_fifosize(p_LnxWrpFmPortDev); + fm_set_precalculate_open_dma(p_LnxWrpFmPortDev); + fm_set_precalculate_tnums(p_LnxWrpFmPortDev); +#endif + +/* FMan Fifo sizes behind the scene": + * Using the following formulae (*), under a set of simplifying assumptions (.): + * . all ports are configured in Normal Mode (rather than Independent Mode) + * . the DPAA Eth driver allocates buffers of size: + * . MAXFRM + NET_IP_ALIGN + DPA_PRIV_DATA_SIZE + DPA_PARSE_RESULTS_SIZE + * + DPA_HASH_RESULTS_SIZE, i.e.: + * MAXFRM + 2 + 16 + sizeof(t_FmPrsResult) + 16, i.e.: + * MAXFRM + 66 + * . excessive buffer pools not accounted for + * + * * for Rx ports on P4080: + * . IFSZ = ceil(max(FMBM_EBMPI[PBS]) / 256) * 256 + 7 * 256 + * . no internal frame offset (FMBM_RIM[FOF] == 0) - otherwise, + * add up to 256 to the above + * + * * for Rx ports on P1023: + * . IFSZ = ceil(second_largest(FMBM_EBMPI[PBS] / 256)) * 256 + 7 * 256, + * if at least 2 bpools are configured + * . IFSZ = 8 * 256, if only a single bpool is configured + * + * * for Tx ports: + * . IFSZ = ceil(frame_size / 256) * 256 + 3 * 256 + * + FMBM_TFP[DPDE] * 256, i.e.: + * IFSZ = ceil(MAXFRM / 256) * 256 + 3 x 256 + FMBM_TFP[DPDE] * 256 + * + * * for OH ports on P4080: + * . IFSZ = ceil(frame_size / 256) * 256 + 1 * 256 + FMBM_PP[MXT] * 256 + * * for OH ports on P1023: + * . IFSZ = ceil(frame_size / 256) * 256 + 3 * 256 + FMBM_TFP[DPDE] * 256 + * * for both P4080 and P1023: + * . (conservative decisions, assuming that BMI must bring the entire + * frame, not only the frame header) + * . no internal frame offset (FMBM_OIM[FOF] == 0) - otherwise, + * add up to 256 to the above + * + * . for P4080/P5020/P3041/P2040, DPDE is: + * > 0 or 1, for 1Gb ports, HW default: 0 + * > 2..7 (recommended: 3..7) for 10Gb ports, HW default: 3 + * . for P1023, DPDE should be 1 + * + * . for P1023, MXT is in range (0..31) + * . for P4080, MXT is in range (0..63) + * + */ + + if ((p_LnxWrpFmPortDev->defPcd != e_NO_PCD) && + (InitFmPort3TupleDefPcd(p_LnxWrpFmPortDev) != E_OK)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); + + return E_OK; +} + +void fm_set_rx_port_params(struct fm_port *port, + struct fm_port_rx_params *params) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) port; + int i; + + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams.errFqid = + params->errq; + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams.dfltFqid = + params->defq; + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams.extBufPools. + numOfPoolsUsed = params->num_pools; + for (i = 0; i < params->num_pools; i++) { + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams. + extBufPools.extBufPool[i].id = + params->pool_param[i].id; + p_LnxWrpFmPortDev->settings.param.specificParams.rxParams. + extBufPools.extBufPool[i].size = + params->pool_param[i].size; + } + + p_LnxWrpFmPortDev->buffPrefixContent.privDataSize = + params->priv_data_size; + p_LnxWrpFmPortDev->buffPrefixContent.passPrsResult = + params->parse_results; + p_LnxWrpFmPortDev->buffPrefixContent.passHashResult = + params->hash_results; + p_LnxWrpFmPortDev->buffPrefixContent.passTimeStamp = + params->time_stamp; + + ADD_ADV_CONFIG_START(p_LnxWrpFmPortDev->settings.advConfig, + FM_MAX_NUM_OF_ADV_SETTINGS) + + ADD_ADV_CONFIG_NO_RET(FM_PORT_ConfigBufferPrefixContent, + ARGS(1, + (&p_LnxWrpFmPortDev-> + buffPrefixContent))); + + ADD_ADV_CONFIG_END InitFmPortDev(p_LnxWrpFmPortDev); +} +EXPORT_SYMBOL(fm_set_rx_port_params); + +void fm_set_tx_port_params(struct fm_port *port, + struct fm_port_non_rx_params *params) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) port; + + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams.errFqid = + params->errq; + p_LnxWrpFmPortDev->settings.param.specificParams.nonRxParams. + dfltFqid = params->defq; + + p_LnxWrpFmPortDev->buffPrefixContent.privDataSize = + params->priv_data_size; + p_LnxWrpFmPortDev->buffPrefixContent.passPrsResult = + params->parse_results; + p_LnxWrpFmPortDev->buffPrefixContent.passHashResult = + params->hash_results; + p_LnxWrpFmPortDev->buffPrefixContent.passTimeStamp = + params->time_stamp; + + ADD_ADV_CONFIG_START(p_LnxWrpFmPortDev->settings.advConfig, + FM_MAX_NUM_OF_ADV_SETTINGS) + + ADD_ADV_CONFIG_NO_RET(FM_PORT_ConfigBufferPrefixContent, + ARGS(1, + (&p_LnxWrpFmPortDev-> + buffPrefixContent))); + + ADD_ADV_CONFIG_END InitFmPortDev(p_LnxWrpFmPortDev); +} +EXPORT_SYMBOL(fm_set_tx_port_params); + +static void LnxwrpFmPcdDevExceptionsCb(t_Handle h_App, + e_FmPcdExceptions exception) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *) h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + DBG(INFO, ("got fm-pcd exception %d", exception)); + + /* do nothing */ + UNUSED(exception); +} + +static void LnxwrpFmPcdDevIndexedExceptionsCb(t_Handle h_App, + e_FmPcdExceptions exception, + uint16_t index) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *) h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + DBG(INFO, + ("got fm-pcd-indexed exception %d, indx %d", exception, index)); + + /* do nothing */ + UNUSED(exception); + UNUSED(index); +} + +static t_Error InitFmPcdDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + spin_lock_init(&lock); + + if (p_LnxWrpFmDev->pcdActive) { + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = &p_LnxWrpFmDev->hcPort; + t_FmPcdParams fmPcdParams; + t_Error err; + + memset(&fmPcdParams, 0, sizeof(fmPcdParams)); + fmPcdParams.h_Fm = p_LnxWrpFmDev->h_Dev; + fmPcdParams.prsSupport = p_LnxWrpFmDev->prsActive; + fmPcdParams.kgSupport = p_LnxWrpFmDev->kgActive; + fmPcdParams.plcrSupport = p_LnxWrpFmDev->plcrActive; + fmPcdParams.ccSupport = p_LnxWrpFmDev->ccActive; + fmPcdParams.numOfSchemes = FM_PCD_KG_NUM_OF_SCHEMES; + +#ifndef CONFIG_GUEST_PARTITION + fmPcdParams.f_Exception = LnxwrpFmPcdDevExceptionsCb; + if (fmPcdParams.kgSupport) + fmPcdParams.f_ExceptionId = + LnxwrpFmPcdDevIndexedExceptionsCb; + fmPcdParams.h_App = p_LnxWrpFmDev; +#endif /* !CONFIG_GUEST_PARTITION */ + +#ifdef CONFIG_MULTI_PARTITION_SUPPORT + fmPcdParams.numOfSchemes = 0; + fmPcdParams.numOfClsPlanEntries = 0; + fmPcdParams.partitionId = 0; +#endif /* CONFIG_MULTI_PARTITION_SUPPORT */ + fmPcdParams.useHostCommand = TRUE; + + p_LnxWrpFmDev->hc_tx_fq = + FqAlloc(p_LnxWrpFmDev, + 0, + QMAN_FQ_FLAG_TO_DCPORTAL, + p_LnxWrpFmPortDev->txCh, 0); + if (!p_LnxWrpFmDev->hc_tx_fq) + RETURN_ERROR(MAJOR, E_NULL_POINTER, + ("Frame queue allocation failed...")); + + p_LnxWrpFmDev->hc_tx_conf_fq = + FqAlloc(p_LnxWrpFmDev, + 0, + QMAN_FQ_FLAG_NO_ENQUEUE, + p_LnxWrpFmDev->hcCh, 7); + if (!p_LnxWrpFmDev->hc_tx_conf_fq) + RETURN_ERROR(MAJOR, E_NULL_POINTER, + ("Frame queue allocation failed...")); + + p_LnxWrpFmDev->hc_tx_err_fq = + FqAlloc(p_LnxWrpFmDev, + 0, + QMAN_FQ_FLAG_NO_ENQUEUE, + p_LnxWrpFmDev->hcCh, 7); + if (!p_LnxWrpFmDev->hc_tx_err_fq) + RETURN_ERROR(MAJOR, E_NULL_POINTER, + ("Frame queue allocation failed...")); + + fmPcdParams.hc.portBaseAddr = p_LnxWrpFmPortDev->baseAddr; + fmPcdParams.hc.portId = + p_LnxWrpFmPortDev->settings.param.portId; + fmPcdParams.hc.liodnBase = + p_LnxWrpFmPortDev->settings.param.liodnBase; + fmPcdParams.hc.errFqid = + qman_fq_fqid(p_LnxWrpFmDev->hc_tx_err_fq); + fmPcdParams.hc.confFqid = + qman_fq_fqid(p_LnxWrpFmDev->hc_tx_conf_fq); + fmPcdParams.hc.qmChannel = p_LnxWrpFmPortDev->txCh; + fmPcdParams.hc.f_QmEnqueue = QmEnqueueCB; + fmPcdParams.hc.h_QmArg = (t_Handle) p_LnxWrpFmDev; + + p_LnxWrpFmDev->h_PcdDev = FM_PCD_Config(&fmPcdParams); + if (!p_LnxWrpFmDev->h_PcdDev) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM PCD!")); + + err = + FM_PCD_ConfigPlcrNumOfSharedProfiles(p_LnxWrpFmDev->h_PcdDev, + LNXWRP_FM_NUM_OF_SHARED_PROFILES); + if (err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + err = FM_PCD_Init(p_LnxWrpFmDev->h_PcdDev); + if (err != E_OK) + RETURN_ERROR(MAJOR, err, NO_MSG); + + if (p_LnxWrpFmDev->err_irq == 0) { + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE, + FALSE); + FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, + e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC, + FALSE); + } + } + + return E_OK; +} + +void FreeFmPcdDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + + if (p_LnxWrpFmDev->h_PcdDev) + FM_PCD_Free(p_LnxWrpFmDev->h_PcdDev); + + if (p_LnxWrpFmDev->hc_tx_err_fq) + FqFree(p_LnxWrpFmDev->hc_tx_err_fq); + + if (p_LnxWrpFmDev->hc_tx_conf_fq) + FqFree(p_LnxWrpFmDev->hc_tx_conf_fq); + + if (p_LnxWrpFmDev->hc_tx_fq) + FqFree(p_LnxWrpFmDev->hc_tx_fq); +} + +static void FreeFmPortDev(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = + (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + + if (!p_LnxWrpFmPortDev->active) + return; + + if (p_LnxWrpFmPortDev->h_Dev) + FM_PORT_Free(p_LnxWrpFmPortDev->h_Dev); + + devm_iounmap(p_LnxWrpFmDev->dev, + UINT_TO_PTR(p_LnxWrpFmPortDev->baseAddr)); + __devm_release_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, + p_LnxWrpFmPortDev->phys_baseAddr, + p_LnxWrpFmPortDev->memSize); +} + +static int fm_port_probe(struct platform_device *of_dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device *dev; + + dev = &of_dev->dev; + + p_LnxWrpFmPortDev = ReadFmPortDevTreeNode(of_dev); + if (p_LnxWrpFmPortDev == NULL) + return -EIO; + /* Port can be inactive, thus will not be probed: + - in performance mode, OH ports are disabled + ... + */ + if (!p_LnxWrpFmPortDev->active) + return 0; + + if (ConfigureFmPortDev(p_LnxWrpFmPortDev) != E_OK) + return -EIO; + + dev_set_drvdata(dev, p_LnxWrpFmPortDev); + + if ((p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_HOST_COMMAND) + && + (InitFmPcdDev((t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev) + != E_OK)) + return -EIO; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + + if (p_LnxWrpFmPortDev->settings.param.portType == e_FM_PORT_TYPE_RX) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-rx%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + DEV_FM_RX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_RX_10G) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-rx%d", + p_LnxWrpFmDev->name, + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_RX_PORTS); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_RX_PORTS + + DEV_FM_RX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-tx%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + DEV_FM_TX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_TX_10G) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-tx%d", + p_LnxWrpFmDev->name, + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_TX_PORTS); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + FM_MAX_NUM_OF_1G_TX_PORTS + + DEV_FM_TX_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_HOST_COMMAND) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-oh%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + DEV_FM_OH_PORTS_MINOR_BASE; + } else if (p_LnxWrpFmPortDev->settings.param.portType == + e_FM_PORT_TYPE_OH_OFFLINE_PARSING) { + Sprint(p_LnxWrpFmPortDev->name, "%s-port-oh%d", + p_LnxWrpFmDev->name, p_LnxWrpFmPortDev->id + 1); + p_LnxWrpFmPortDev->minor = + p_LnxWrpFmPortDev->id + 1 + + DEV_FM_OH_PORTS_MINOR_BASE; + } + + device_create(p_LnxWrpFmDev->fm_class, NULL, + MKDEV(p_LnxWrpFmDev->major, p_LnxWrpFmPortDev->minor), + NULL, p_LnxWrpFmPortDev->name); + + /* create sysfs entries for stats and regs */ + + if (fm_port_sysfs_create(dev) != 0) { + FreeFmPortDev(p_LnxWrpFmPortDev); + REPORT_ERROR(MAJOR, E_INVALID_STATE, + ("Unable to create sys entry - fm port!!!")); + return -EIO; + } + +#ifdef FM_TX_INVALID_ECC_ERRATA_10GMAC_A009 + FM_DisableRamsEcc(p_LnxWrpFmDev->h_Dev); +#endif /* FM_TX_INVALID_ECC_ERRATA_10GMAC_A009 */ + + DBG(TRACE, ("%s probed", p_LnxWrpFmPortDev->name)); + + return 0; +} + +static int fm_port_remove(struct platform_device *of_dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device *dev; + + dev = &of_dev->dev; + p_LnxWrpFmPortDev = dev_get_drvdata(dev); + + fm_port_sysfs_destroy(dev); + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + device_destroy(p_LnxWrpFmDev->fm_class, + MKDEV(p_LnxWrpFmDev->major, p_LnxWrpFmPortDev->minor)); + + FreeFmPortDev(p_LnxWrpFmPortDev); + + dev_set_drvdata(dev, NULL); + + return 0; +} + +static const struct of_device_id fm_port_match[] = { + { + .compatible = "fsl,fman-port-oh"}, + { + .compatible = "fsl,fman-port-1g-rx"}, + { + .compatible = "fsl,fman-port-10g-rx"}, + { + .compatible = "fsl,fman-port-1g-tx"}, + { + .compatible = "fsl,fman-port-10g-tx"}, + {} +}; + +#ifndef MODULE +MODULE_DEVICE_TABLE(of, fm_port_match); +#endif /* !MODULE */ + +static struct platform_driver fm_port_driver = { + + .driver = { + .name = "fsl-fman-port", + .of_match_table = fm_port_match, + .owner = THIS_MODULE, + }, + .probe = fm_port_probe, + .remove = fm_port_remove +}; + + +t_Error LNXWRP_FM_Port_Init(void) +{ + /* Register to the DTB for basic FM port API */ + if (platform_driver_register(&fm_port_driver)) + return E_NO_DEVICE; + + return E_OK; +} + +void LNXWRP_FM_Port_Free(void) +{ + platform_driver_unregister(&fm_port_driver); +} + +static int __init __cold fm_port_load(void) +{ + if (LNXWRP_FM_Port_Init() != E_OK) { + printk(KERN_CRIT "Failed to init FM Ports wrapper!\n"); + return -ENODEV; + } + + printk(KERN_INFO "Freescale FM Ports module (" __DATE__ ":" __TIME__ ")\n"); + + return 0; +} + +static void __exit __cold fm_port_unload(void) +{ + LNXWRP_FM_Port_Free(); +} + +module_init(fm_port_load); +module_exit(fm_port_unload); --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm.c @@ -0,0 +1,2648 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_ioctls_fm.c + + @Author Shlomi Gridish + + @Description FM Linux wrapper functions. + +*/ + +/* Linux Headers ------------------- */ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(CONFIG_COMPAT) +#include +#endif + +#include "part_ext.h" +#include "fm_ioctls.h" +#include "fm_pcd_ioctls.h" +#include "fm_port_ioctls.h" + +#if defined(CONFIG_COMPAT) +#include "lnxwrp_ioctls_fm_compat.h" +#endif + +#include "lnxwrp_fm.h" + +#define CMP_IOC_DEFINE(def) (IOC_##def != def) + +/* fm_pcd_ioctls.h === fm_pcd_ext.h assertions */ +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_PRS_NUM_OF_HDRS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_SCHEMES) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) +#error Error: please synchronize IOC_ defines! +#endif + +/* please check for this one in fm_common.h: */ +#define FM_PCD_MAX_NUM_OF_OPTIONS(clsPlanEntries) ((clsPlanEntries==256)? 8:((clsPlanEntries==128)? 7: ((clsPlanEntries==64)? 6: ((clsPlanEntries==32)? 5:0)))) +#if (IOC_FM_PCD_MAX_NUM_OF_OPTIONS != FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)) +#error Error: please synchronize IOC_ defines! +#endif +#undef FM_PCD_MAX_NUM_OF_OPTIONS + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_GENERIC_REGS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CLS_PLANS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_EXTRACT_MASKS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_KG_NUM_OF_DEFAULT_GROUPS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_PRS_NUM_OF_LABELS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_NODES) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_TREES) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_GROUPS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_UNITS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_KEYS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_SIZE_OF_KEY) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP) +#error Error: please synchronize IOC_ defines! +#endif + +/* net_ioctls.h === net_ext.h assertions */ +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPPoE_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPPMUX_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PPPMUX_SUBFRAME_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_ETH_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPv4_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPv6_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_ICMP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IGMP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_TCP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_SCTP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_DCCP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_UDP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_UDP_ENCAP_ESP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPHC_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_SCTP_CHUNK_DATA_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_L2TPv2_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_L2TPv3_CTRL_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_L2TPv3_SESS_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_VLAN_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_LLC_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_NLPID_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_SNAP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_LLC_SNAP_ALL_FIELDS) +#warning Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_ARP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_RFC2684_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_USER_DEFINED_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_PAYLOAD_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_GRE_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_MINENCAP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPSEC_AH_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_IPSEC_ESP_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_MPLS_LABEL_STACK_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +#if CMP_IOC_DEFINE(NET_HEADER_FIELD_MACSEC_ALL_FIELDS) +#error Error: please synchronize IOC_ defines! +#endif + +/* fm_ioctls.h === fm_ext.h assertions */ +#if CMP_IOC_DEFINE(FM_MAX_NUM_OF_VALID_PORTS) +#error Error: please synchronize IOC_ defines! +#endif + +/* fm_port_ioctls.h === dpaa_integrations_ext.h assertions */ +#if CMP_IOC_DEFINE(FM_PORT_NUM_OF_CONGESTION_GRPS) +#error Error: please synchronize IOC_ defines! +#endif + +#define ASSERT_IOC_NET_ENUM(def) ASSERT_COND((unsigned long)e_IOC_NET_##def == (unsigned long)def) + +static void LnxwrpAssertions(void) +{ + /* sampling checks */ + ASSERT_IOC_NET_ENUM(HEADER_TYPE_MACSEC); + ASSERT_IOC_NET_ENUM(HEADER_TYPE_PPP); + ASSERT_IOC_NET_ENUM(MAX_HEADER_TYPE_COUNT); + ASSERT_COND((unsigned long)e_IOC_FM_PORT_TYPE_DUMMY == (unsigned long)e_FM_PORT_TYPE_DUMMY); + ASSERT_COND((unsigned long)e_IOC_FM_EX_MURAM_ECC == (unsigned long)e_FM_EX_MURAM_ECC); + ASSERT_COND((unsigned long)e_IOC_FM_COUNTERS_SEMAPHOR_SYNC_REJECT == (unsigned long)e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES == (unsigned long)e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PRS_EXCEPTION_SINGLE_ECC == (unsigned long)e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PRS == (unsigned long)e_FM_PCD_PRS); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_EXTRACT_FULL_FIELD == (unsigned long)e_FM_PCD_EXTRACT_FULL_FIELD); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_EXTRACT_FROM_FLOW_ID == (unsigned long)e_FM_PCD_EXTRACT_FROM_FLOW_ID); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO == (unsigned long)e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_KG_DFLT_ILLEGAL == (unsigned long)e_FM_PCD_KG_DFLT_ILLEGAL); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_KG_GENERIC_NOT_FROM_DATA == (unsigned long)e_FM_PCD_KG_GENERIC_NOT_FROM_DATA); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_HDR_INDEX_3 == (unsigned long)e_FM_PCD_HDR_INDEX_3); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_SHARED == (unsigned long)e_FM_PCD_PLCR_SHARED); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_RFC_4115 == (unsigned long)e_FM_PCD_PLCR_RFC_4115); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_COLOR_AWARE == (unsigned long)e_FM_PCD_PLCR_COLOR_AWARE); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_OVERRIDE == (unsigned long)e_FM_PCD_PLCR_OVERRIDE); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_FULL_FRM_LEN == (unsigned long)e_FM_PCD_PLCR_FULL_FRM_LEN); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN == (unsigned long)e_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_PACKET_MODE == (unsigned long)e_FM_PCD_PLCR_PACKET_MODE); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_DROP_FRAME == (unsigned long)e_FM_PCD_DROP_FRAME); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER == (unsigned long)e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER); + ASSERT_COND((unsigned long)e_IOC_FM_PCD_ACTION_INDEXED_LOOKUP == (unsigned long)e_FM_PCD_ACTION_INDEXED_LOOKUP); + ASSERT_COND((unsigned long)e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR == (unsigned long)e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR); +#ifdef FM_CAPWAP_SUPPORT + ASSERT_COND((unsigned long)e_IOC_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR == (unsigned long)e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR); +#endif + ASSERT_COND((unsigned long)e_IOC_FM_PORT_COUNTERS_DEQ_CONFIRM == (unsigned long)e_FM_PORT_COUNTERS_DEQ_CONFIRM); + ASSERT_COND((unsigned long)e_IOC_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8 == (unsigned long)e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8); +} + +static t_Error LnxwrpFmPcdIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned long arg, bool compat) +{ + t_Error err = E_READ_FAILED; + + /* can be moved from here */ + LnxwrpAssertions(); + + switch (cmd) + { +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_PRS_LOAD_SW_COMPAT: +#endif + case FM_PCD_IOC_PRS_LOAD_SW: + { + ioc_fm_pcd_prs_sw_params_t *param; + uint8_t *p_code; + + ASSERT_COND(sizeof(ioc_fm_pcd_prs_sw_params_t) == sizeof(t_FmPcdPrsSwParams)); + + param = (ioc_fm_pcd_prs_sw_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_prs_sw_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_prs_sw_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_prs_sw_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_prs_sw_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_prs_sw_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_prs_sw_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_fm_pcd_prs_sw(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_prs_sw_params_t *)arg, + sizeof(ioc_fm_pcd_prs_sw_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + p_code = (uint8_t *) XX_Malloc(param->size); + if (!p_code) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + if (copy_from_user(p_code, param->p_code, param->size)) { + XX_Free(p_code); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + param->p_code = p_code; + + err = FM_PCD_PrsLoadSw(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdPrsSwParams*)param); + XX_Free(p_code); + XX_Free(param); + break; + } + + case FM_PCD_IOC_ENABLE: + return FM_PCD_Enable(p_LnxWrpFmDev->h_PcdDev); + + case FM_PCD_IOC_DISABLE: + return FM_PCD_Disable(p_LnxWrpFmDev->h_PcdDev); + + case FM_PCD_IOC_FORCE_INTR: + { + int exception; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(exception, (int *) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(exception, (int *)arg)) + break; + } + + return FM_PCD_ForceIntr(p_LnxWrpFmDev->h_PcdDev, (e_FmPcdExceptions)exception); + } + + case FM_PCD_IOC_SET_EXCEPTION: + { + ioc_fm_pcd_exception_params_t *param; + + param = (ioc_fm_pcd_exception_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_exception_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_pcd_exception_params_t *)compat_ptr(arg), + sizeof(ioc_fm_pcd_exception_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_exception_params_t *)arg, + sizeof(ioc_fm_pcd_exception_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_SetException(p_LnxWrpFmDev->h_PcdDev, param->exception, param->enable); + XX_Free(param); + break; + } + + case FM_PCD_IOC_KG_SET_ADDITIONAL_DATA_AFTER_PARSING: + { + uint8_t payloadOffset; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(payloadOffset, (uint8_t*) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(payloadOffset, (uint8_t*) arg)) + break; + } + + return FM_PCD_KgSetAdditionalDataAfterParsing(p_LnxWrpFmDev->h_PcdDev, payloadOffset); + } + + case FM_PCD_IOC_KG_SET_DFLT_VALUE: + { + ioc_fm_pcd_kg_dflt_value_params_t *param; + + param = (ioc_fm_pcd_kg_dflt_value_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_kg_dflt_value_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_pcd_kg_dflt_value_params_t *)compat_ptr(arg), + sizeof(ioc_fm_pcd_kg_dflt_value_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_dflt_value_params_t *)arg, + sizeof(ioc_fm_pcd_kg_dflt_value_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_KgSetDfltValue(p_LnxWrpFmDev->h_PcdDev, param->valueId, param->value); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS_COMPAT: +#endif + case FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS: + { + ioc_fm_pcd_net_env_params_t *param; + + param = (ioc_fm_pcd_net_env_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_net_env_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_net_env_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_net_env_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_net_env_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_net_env_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_net_env_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_net_env(compat_param, param, COMPAT_US_TO_K); + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_net_env_params_t *) arg, + sizeof(ioc_fm_pcd_net_env_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + param->id = FM_PCD_SetNetEnvCharacteristics(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdNetEnvParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_net_env_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_net_env_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_net_env_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + compat_copy_fm_pcd_net_env(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_net_env_params_t *) compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_net_env_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_net_env_params_t *)arg, param, sizeof(ioc_fm_pcd_net_env_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS_COMPAT: +#endif + case FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_DeleteNetEnvCharacteristics(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_KG_SET_SCHEME_COMPAT: +#endif + case FM_PCD_IOC_KG_SET_SCHEME: + { + ioc_fm_pcd_kg_scheme_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdKgSchemeParams) + sizeof(void *) == sizeof(ioc_fm_pcd_kg_scheme_params_t)); + param = (ioc_fm_pcd_kg_scheme_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_kg_scheme_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param = NULL; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_kg_scheme_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_kg_scheme(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_scheme_params_t *)arg, + sizeof(ioc_fm_pcd_kg_scheme_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + param->id = FM_PCD_KgSetScheme(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdKgSchemeParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param = NULL; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + compat_copy_fm_pcd_kg_scheme(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_kg_scheme_params_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_kg_scheme_params_t))) + err = E_OK; + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_kg_scheme_params_t *)arg, + param, + sizeof(ioc_fm_pcd_kg_scheme_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_KG_DEL_SCHEME_COMPAT: +#endif + case FM_PCD_IOC_KG_DEL_SCHEME: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_KgDeleteScheme(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_SET_NODE_COMPAT: +#endif + case FM_PCD_IOC_CC_SET_NODE: + { + ioc_fm_pcd_cc_node_params_t *param; + uint8_t *keys; + uint8_t *masks; + int i,k; + + ASSERT_COND(sizeof(t_FmPcdCcNodeParams) + sizeof(void *) == sizeof(ioc_fm_pcd_cc_node_params_t)); + + param = (ioc_fm_pcd_cc_node_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + memset(param, 0, sizeof(ioc_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + + keys = (uint8_t *) (param + 1); + masks = keys + IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY; + memset(keys, 0, 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_params_t *)arg, sizeof(ioc_fm_pcd_cc_node_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + ASSERT_COND(param->keys_params.num_of_keys <= IOC_FM_PCD_MAX_NUM_OF_KEYS); + ASSERT_COND(param->keys_params.key_size <= IOC_FM_PCD_MAX_SIZE_OF_KEY); + + /* support for indexed lookup */ + if( !(param->extract_cc_params.type == e_IOC_FM_PCD_EXTRACT_NON_HDR && + param->extract_cc_params.extract_params.extract_non_hdr.src == e_IOC_FM_PCD_EXTRACT_FROM_HASH && + param->extract_cc_params.extract_params.extract_non_hdr.action == e_IOC_FM_PCD_ACTION_INDEXED_LOOKUP)) + { + for (i=0, k=0; + i < param->keys_params.num_of_keys; + i++, k += IOC_FM_PCD_MAX_SIZE_OF_KEY) + { + if (copy_from_user(&keys[k], + param->keys_params.key_params[i].p_key, + param->keys_params.key_size)) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + param->keys_params.key_params[i].p_key = &keys[k]; + + if (param->keys_params.key_params[i].p_mask) + { + if (copy_from_user(&masks[k], + param->keys_params.key_params[i].p_mask, + param->keys_params.key_size)) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + param->keys_params.key_params[i].p_mask = &masks[k]; + } + } + } + + param->id = FM_PCD_CcSetNode(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdCcNodeParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_params_t *compat_param; + compat_param = (ioc_compat_fm_pcd_cc_node_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_node_params_t) + + 2 * IOC_FM_PCD_MAX_NUM_OF_KEYS * IOC_FM_PCD_MAX_SIZE_OF_KEY); + + /* setup user space structure */ + compat_copy_fm_pcd_cc_node(compat_param, param, COMPAT_K_TO_US); + + compat_param->id = compat_add_ptr2id(param->id); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_cc_node_params_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_cc_node_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_cc_node_params_t *)arg, param, sizeof(ioc_fm_pcd_cc_node_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_DELETE_NODE_COMPAT: +#endif + case FM_PCD_IOC_CC_DELETE_NODE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_get_id2ptr(compat_id.obj); + compat_del_ptr2id(id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_CcDeleteNode(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_BUILD_TREE_COMPAT: +#endif + case FM_PCD_IOC_CC_BUILD_TREE: + { + ioc_fm_pcd_cc_tree_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdCcTreeParams) + sizeof(void *) == sizeof(ioc_fm_pcd_cc_tree_params_t)); + + param = (ioc_fm_pcd_cc_tree_params_t *) XX_Malloc(sizeof(ioc_fm_pcd_cc_tree_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + memset(param, 0, sizeof(ioc_fm_pcd_cc_tree_params_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_tree_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_tree_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_tree_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_tree_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_tree(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_tree_params_t *)arg, + sizeof(ioc_fm_pcd_cc_tree_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + param->id = FM_PCD_CcBuildTree(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdCcTreeParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_tree_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_tree_params_t *) XX_Malloc(sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_cc_tree_params_t)); + + compat_add_ptr2id(param->id); + param->id = (void *)(uint64_t)compat_get_ptr2id(param->id); + + compat_copy_fm_pcd_cc_tree(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_cc_tree_params_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_cc_tree_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_cc_tree_params_t *)arg, param, sizeof(ioc_fm_pcd_cc_tree_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_DELETE_TREE_COMPAT: +#endif + case FM_PCD_IOC_CC_DELETE_TREE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_get_id2ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_CcDeleteTree(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_PLCR_SET_PROFILE_COMPAT: +#endif + case FM_PCD_IOC_PLCR_SET_PROFILE: + { + ioc_fm_pcd_plcr_profile_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdPlcrProfileParams) + sizeof(void *) == sizeof(ioc_fm_pcd_plcr_profile_params_t)); + + param = (ioc_fm_pcd_plcr_profile_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_plcr_profile_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_plcr_profile_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_plcr_profile_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t))) { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_plcr_profile(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_plcr_profile_params_t *)arg, + sizeof(ioc_fm_pcd_plcr_profile_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + if (!param->modify && + (((t_FmPcdPlcrProfileParams*)param)->id.newParams.profileType != e_FM_PCD_PLCR_SHARED)) + { + t_Handle h_Port; + fm_pcd_port_params_t *port_params; + + port_params = (fm_pcd_port_params_t*) XX_Malloc(sizeof(fm_pcd_port_params_t)); + if (!port_params) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(port_params, (fm_pcd_port_params_t*)((t_FmPcdPlcrProfileParams*)param)->id.newParams.h_FmPort, + sizeof(fm_pcd_port_params_t))) + { + XX_Free(port_params); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + switch(port_params->port_type) + { + case (e_IOC_FM_PORT_TYPE_RX): + h_Port = p_LnxWrpFmDev->rxPorts[port_params->port_id].h_Dev; + break; + case (e_IOC_FM_PORT_TYPE_RX_10G): + h_Port = p_LnxWrpFmDev->rxPorts[port_params->port_id + FM_MAX_NUM_OF_1G_RX_PORTS].h_Dev; + break; + case (e_IOC_FM_PORT_TYPE_OFFLINE_PARSING): + if (port_params->port_id) + { + h_Port = p_LnxWrpFmDev->opPorts[port_params->port_id - 1].h_Dev; + break; + } + default: + XX_Free(port_params); + XX_Free(param); + RETURN_ERROR(MINOR, E_INVALID_SELECTION, NO_MSG); + } + + ((t_FmPcdPlcrProfileParams*)param)->id.newParams.h_FmPort = h_Port; + XX_Free(port_params); + } + + param->id = FM_PCD_PlcrSetProfile(p_LnxWrpFmDev->h_PcdDev, (t_FmPcdPlcrProfileParams*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_plcr_profile_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + compat_copy_fm_pcd_plcr_profile(compat_param, param, COMPAT_K_TO_US); + + if (param->id && !copy_to_user((ioc_compat_fm_pcd_plcr_profile_params_t *) compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_plcr_profile_params_t))) + err = E_OK; + + XX_Free(compat_param); + } + else +#endif + { + if (param->id && !copy_to_user((ioc_fm_pcd_plcr_profile_params_t *)arg, param, sizeof(ioc_fm_pcd_plcr_profile_params_t))) + err = E_OK; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_PLCR_DEL_PROFILE_COMPAT: +#endif + case FM_PCD_IOC_PLCR_DEL_PROFILE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PCD_PlcrDeleteProfile(p_LnxWrpFmDev->h_PcdDev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE: + { + ioc_fm_pcd_cc_tree_modify_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_next_engine_params_t) == sizeof(t_FmPcdCcNextEngineParams)); + + param = (ioc_fm_pcd_cc_tree_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_tree_modify_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_fm_pcd_cc_tree_modify_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_tree_modify_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_tree_modify_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcTreeModifyNextEngine(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->grp_indx, + param->indx, + (t_FmPcdCcNextEngineParams*)(¶m->cc_next_engine_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE: + { + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_next_engine_params_t) == sizeof(t_FmPcdCcNextEngineParams)); + + param = (ioc_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeModifyNextEngine(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + (t_FmPcdCcNextEngineParams*)(¶m->cc_next_engine_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE: + { + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_next_engine_params_t) == sizeof(t_FmPcdCcNextEngineParams)); + + param = (ioc_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_next_engine_params_t *) arg, + sizeof(ioc_fm_pcd_cc_node_modify_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeModifyMissNextEngine(p_LnxWrpFmDev->h_PcdDev, param->id, + (t_FmPcdCcNextEngineParams*)(¶m->cc_next_engine_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_REMOVE_KEY_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_REMOVE_KEY: + { + ioc_fm_pcd_cc_node_remove_key_params_t *param; + + param = (ioc_fm_pcd_cc_node_remove_key_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_remove_key_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_remove_key_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_remove_key_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_remove_key_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_remove_key_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_remove_key_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_remove_key_params_t *) arg, + sizeof(ioc_fm_pcd_cc_node_remove_key_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeRemoveKey(p_LnxWrpFmDev->h_PcdDev, param->id, param->key_indx); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_ADD_KEY_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_ADD_KEY: + { + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_key_params_t) == sizeof(t_FmPcdCcKeyParams)); + + param = (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_key_and_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeAddKey(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + param->key_size, + (t_FmPcdCcKeyParams*)(¶m->key_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE: + { + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param; + + ASSERT_COND(sizeof(ioc_fm_pcd_cc_key_params_t) == sizeof(t_FmPcdCcKeyParams)); + + param = (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t)); + if (!compat_param) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_key_and_next_engine(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + err = FM_PCD_CcNodeModifyKeyAndNextEngine(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + param->key_size, + (t_FmPcdCcKeyParams*)(¶m->key_params)); + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) + case FM_PCD_IOC_CC_NODE_MODIFY_KEY_COMPAT: +#endif + case FM_PCD_IOC_CC_NODE_MODIFY_KEY: + { + ioc_fm_pcd_cc_node_modify_key_params_t *param = NULL; + uint8_t *key = NULL; + uint8_t *mask = NULL; + + param = (ioc_fm_pcd_cc_node_modify_key_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_cc_node_modify_key_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_cc_node_modify_key_params_t *compat_param = NULL; + compat_param = (ioc_compat_fm_pcd_cc_node_modify_key_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_params_t)); + if (!param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_cc_node_modify_key_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_cc_node_modify_key_params_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + + compat_copy_fm_pcd_cc_node_modify_key(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_cc_node_modify_key_params_t *)arg, + sizeof(ioc_fm_pcd_cc_node_modify_key_params_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + } + + if (param->p_key) + { + key = (uint8_t *) XX_Malloc(sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!key) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD key")); + } + memset(key, 0, sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + + if (copy_from_user(key, param->p_key, param->key_size)) + { + XX_Free(key); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + param->p_key = key; + } + + if (param->p_mask) + { + mask = (uint8_t *) XX_Malloc(sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + if (!mask) + { + if (key) + XX_Free(key); + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD mask")); + } + memset(mask, 0, sizeof(uint8_t)*IOC_FM_PCD_MAX_SIZE_OF_KEY); + + if (copy_from_user(mask, param->p_mask, param->key_size)) + { + if (mask) + XX_Free(mask); + if (key) + XX_Free(key); + XX_Free(param); + RETURN_ERROR(MINOR, err, NO_MSG); + } + param->p_mask = mask; + } + + err = FM_PCD_CcNodeModifyKey(p_LnxWrpFmDev->h_PcdDev, + param->id, + param->key_indx, + param->key_size, + param->p_key, + param->p_mask); + if (mask) + XX_Free(mask); + if (key) + XX_Free(key); + XX_Free(param); + break; + } + + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("IOCTL cmd (0x%08x):(0x%02x:0x%02x)!", cmd, _IOC_TYPE(cmd), _IOC_NR(cmd))); + break; + } + + return err; +} + +t_Error LnxwrpFmIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned long arg, bool compat) +{ + t_Error err = E_READ_FAILED; + + DBG(TRACE, ("p_LnxWrpFmDev - 0x%08lx, cmd - 0x%08x, arg - 0x%08lx \n", (uintptr_t)p_LnxWrpFmDev, cmd, arg)); + + switch (cmd) + { + case FM_IOC_SET_PORTS_BANDWIDTH: + { + ioc_fm_port_bandwidth_params *param; + + ASSERT_COND(sizeof(t_FmPortsBandwidthParams) == sizeof(ioc_fm_port_bandwidth_params)); + + param = (ioc_fm_port_bandwidth_params*) XX_Malloc(sizeof(ioc_fm_port_bandwidth_params)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_port_bandwidth_params*)compat_ptr(arg), sizeof(ioc_fm_port_bandwidth_params))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_port_bandwidth_params*)arg, sizeof(ioc_fm_port_bandwidth_params))) + { + XX_Free(param); + return err; + } + } + + err = FM_SetPortsBandwidth(p_LnxWrpFmDev->h_Dev, (t_FmPortsBandwidthParams*) param); + XX_Free(param); + return err; + } + + case FM_IOC_GET_REVISION: + { + ioc_fm_revision_info_t *param; + + ASSERT_COND(sizeof(t_FmRevisionInfo) == sizeof(ioc_fm_revision_info_t)); + + param = (ioc_fm_revision_info_t *) XX_Malloc(sizeof(ioc_fm_revision_info_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + FM_GetRevision(p_LnxWrpFmDev->h_Dev, (t_FmRevisionInfo*)param); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_to_user((ioc_fm_revision_info_t *)compat_ptr(arg), + param, + sizeof(ioc_fm_revision_info_t))) + err = E_WRITE_FAILED; + else + err = E_OK; + } + else +#endif + { + if (copy_to_user((ioc_fm_revision_info_t *)arg, + param, + sizeof(ioc_fm_revision_info_t))) + err = E_WRITE_FAILED; + else + err = E_OK; + } + + XX_Free(param); + return err; + } + + case FM_IOC_SET_COUNTER: + { + ioc_fm_counters_params_t *param; + + param = (ioc_fm_counters_params_t *) XX_Malloc(sizeof(ioc_fm_counters_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)compat_ptr(arg), sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)arg, sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + + err = FM_ModifyCounter(p_LnxWrpFmDev->h_Dev, param->cnt, param->val); + + XX_Free(param); + return err; + } + + case FM_IOC_GET_COUNTER: + { + ioc_fm_counters_params_t *param; + + param = (ioc_fm_counters_params_t *) XX_Malloc(sizeof(ioc_fm_counters_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)compat_ptr(arg), sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_counters_params_t *)arg, sizeof(ioc_fm_counters_params_t))) + { + XX_Free(param); + return err; + } + } + + param->val = FM_GetCounter(p_LnxWrpFmDev->h_Dev, param->cnt); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_to_user((ioc_fm_counters_params_t *)compat_ptr(arg), param, sizeof(ioc_fm_counters_params_t))) + err = E_WRITE_FAILED; + } + else +#endif + { + if (copy_to_user((ioc_fm_counters_params_t *)arg, param, sizeof(ioc_fm_counters_params_t))) + err = E_WRITE_FAILED; + } + + XX_Free(param); + return err; + } + + case FM_IOC_FORCE_INTR: + { + ioc_fm_exceptions param; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(param, (ioc_fm_exceptions*) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(param, (ioc_fm_exceptions*)arg)) + break; + } + + return FM_ForceIntr(p_LnxWrpFmDev->h_Dev, (e_FmExceptions)param); + } + + default: + return LnxwrpFmPcdIOCTL(p_LnxWrpFmDev, cmd, arg, compat); + } + + RETURN_ERROR(MINOR, E_INVALID_OPERATION, ("IOCTL FM")); +} + +t_Error LnxwrpFmPortIOCTL(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev, unsigned int cmd, unsigned long arg, bool compat) +{ + t_Error err = E_READ_FAILED; + DBG(TRACE, ("p_LnxWrpFmPortDev - 0x%08lx, cmd - 0x%08x, arg - 0x%08lx", (uintptr_t)p_LnxWrpFmPortDev, cmd, arg)); + + switch (cmd) + { + case FM_PORT_IOC_DISABLE: + FM_PORT_Disable(p_LnxWrpFmPortDev->h_Dev); + return E_OK; + + case FM_PORT_IOC_ENABLE: + FM_PORT_Enable(p_LnxWrpFmPortDev->h_Dev); + return E_OK; + + case FM_PORT_IOC_SET_ERRORS_ROUTE: + { + ioc_fm_port_frame_err_select_t errs; + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(errs, (ioc_fm_port_frame_err_select_t*)compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(errs, (ioc_fm_port_frame_err_select_t*)arg)) + break; + } + + return FM_PORT_SetErrorsRoute(p_LnxWrpFmPortDev->h_Dev, (fmPortFrameErrSelect_t)errs); + } + + case FM_PORT_IOC_SET_RATE_LIMIT: + { + ioc_fm_port_rate_limit_t *param; + + ASSERT_COND(sizeof(t_FmPortRateLimit) == sizeof(ioc_fm_port_rate_limit_t)); + + param = (ioc_fm_port_rate_limit_t *) XX_Malloc(sizeof(ioc_fm_port_rate_limit_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_port_rate_limit_t *)compat_ptr(arg), sizeof(ioc_fm_port_rate_limit_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_port_rate_limit_t *)arg, sizeof(ioc_fm_port_rate_limit_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + } + + err = FM_PORT_SetRateLimit(p_LnxWrpFmPortDev->h_Dev, (t_FmPortRateLimit *)param); + + XX_Free(param); + return err; + } + + case FM_PORT_IOC_REMOVE_RATE_LIMIT: + FM_PORT_DeleteRateLimit(p_LnxWrpFmPortDev->h_Dev); + return E_OK; + + case FM_PORT_IOC_ALLOC_PCD_FQIDS: + { + ioc_fm_port_pcd_fqids_params_t *param; + + if (!p_LnxWrpFmPortDev->pcd_owner_params.cba) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("No one to listen on this PCD!!!")); + + param = (ioc_fm_port_pcd_fqids_params_t *) XX_Malloc(sizeof(ioc_fm_port_pcd_fqids_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_port_pcd_fqids_params_t *)compat_ptr(arg), + sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + return err; + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_port_pcd_fqids_params_t *)arg, + sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + return err; + } + } + + if (p_LnxWrpFmPortDev->pcd_owner_params.cba(p_LnxWrpFmPortDev->pcd_owner_params.dev, + param->num_fqids, + param->alignment, + ¶m->base_fqid)) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_INVALID_STATE, ("can't allocate fqids for PCD!!!")); + } + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_to_user((ioc_fm_port_pcd_fqids_params_t *)compat_ptr(arg), + param, sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + else +#endif + { + if (copy_to_user((ioc_fm_port_pcd_fqids_params_t *)arg, + param, sizeof(ioc_fm_port_pcd_fqids_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + + XX_Free(param); + return E_OK; + } + + case FM_PORT_IOC_FREE_PCD_FQIDS: + { + uint32_t base_fqid; + + if (!p_LnxWrpFmPortDev->pcd_owner_params.cbf) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("No one to listen on this PCD!!!")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (get_user(base_fqid, (uint32_t*) compat_ptr(arg))) + break; + } + else +#endif + { + if (get_user(base_fqid, (uint32_t*)arg)) + break; + } + + if (p_LnxWrpFmPortDev->pcd_owner_params.cbf(p_LnxWrpFmPortDev->pcd_owner_params.dev, base_fqid)) + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + + return E_OK; + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_SET_PCD_COMPAT: +#endif + case FM_PORT_IOC_SET_PCD: + { + ioc_fm_port_pcd_params_t *port_pcd_params; + ioc_fm_port_pcd_prs_params_t *port_pcd_prs_params; + ioc_fm_port_pcd_cc_params_t *port_pcd_cc_params; + ioc_fm_port_pcd_kg_params_t *port_pcd_kg_params; + ioc_fm_port_pcd_plcr_params_t *port_pcd_plcr_params; + + long copy_fail = 0; + + ASSERT_COND(sizeof(t_FmPortPcdParams) == sizeof(ioc_fm_port_pcd_params_t)); + + port_pcd_params = (ioc_fm_port_pcd_params_t *) XX_Malloc( + sizeof(ioc_fm_port_pcd_params_t) + + sizeof(ioc_fm_port_pcd_prs_params_t) + + sizeof(ioc_fm_port_pcd_cc_params_t) + + sizeof(ioc_fm_port_pcd_kg_params_t) + + sizeof(ioc_fm_port_pcd_plcr_params_t)); + if (!port_pcd_params) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + + port_pcd_prs_params = (ioc_fm_port_pcd_prs_params_t *) (port_pcd_params + 1); + port_pcd_cc_params = (ioc_fm_port_pcd_cc_params_t *) (port_pcd_prs_params + 1); + port_pcd_kg_params = (ioc_fm_port_pcd_kg_params_t *) (port_pcd_cc_params + 1); + port_pcd_plcr_params = (ioc_fm_port_pcd_plcr_params_t *) (port_pcd_kg_params + 1); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_port_pcd_params_t *compat_port_pcd_params; + ioc_fm_port_pcd_prs_params_t *same_port_pcd_prs_params; + ioc_compat_fm_port_pcd_cc_params_t *compat_port_pcd_cc_params; + ioc_compat_fm_port_pcd_kg_params_t *compat_port_pcd_kg_params; + ioc_compat_fm_port_pcd_plcr_params_t *compat_port_pcd_plcr_params; + + compat_port_pcd_params = (ioc_compat_fm_port_pcd_params_t *) XX_Malloc( + sizeof(ioc_compat_fm_port_pcd_params_t) + + sizeof(ioc_fm_port_pcd_prs_params_t) + + sizeof(ioc_compat_fm_port_pcd_cc_params_t) + + sizeof(ioc_compat_fm_port_pcd_kg_params_t) + + sizeof(ioc_compat_fm_port_pcd_plcr_params_t)); + if (!compat_port_pcd_params) + { + XX_Free(port_pcd_params); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + } + + same_port_pcd_prs_params = (ioc_fm_port_pcd_prs_params_t *) (compat_port_pcd_params + 1); + compat_port_pcd_cc_params = (ioc_compat_fm_port_pcd_cc_params_t *) (same_port_pcd_prs_params + 1); + compat_port_pcd_kg_params = (ioc_compat_fm_port_pcd_kg_params_t *) (compat_port_pcd_cc_params + 1); + compat_port_pcd_plcr_params = (ioc_compat_fm_port_pcd_plcr_params_t *) (compat_port_pcd_kg_params + 1); + + /* Pseudo-while */ + while (!(copy_fail = copy_from_user(compat_port_pcd_params, + (ioc_compat_fm_port_pcd_params_t *)compat_ptr(arg), + sizeof(ioc_compat_fm_port_pcd_params_t)))) + { + compat_copy_fm_port_pcd(compat_port_pcd_params, port_pcd_params, COMPAT_US_TO_K); + + /* the prs member is the same, no compat structure...memcpy only */ + if (port_pcd_params->p_prs_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(same_port_pcd_prs_params, + port_pcd_params->p_prs_params, + sizeof(ioc_fm_port_pcd_prs_params_t)))) + { + memcpy(port_pcd_prs_params, same_port_pcd_prs_params, sizeof(ioc_fm_port_pcd_prs_params_t)); + port_pcd_params->p_prs_params = port_pcd_prs_params; + } + else + break; + } + + if (port_pcd_params->p_cc_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(compat_port_pcd_cc_params, + port_pcd_params->p_cc_params, + sizeof(ioc_compat_fm_port_pcd_cc_params_t)))) + { + port_pcd_params->p_cc_params = port_pcd_cc_params; + port_pcd_params->p_cc_params->cc_tree_id = compat_get_id2ptr(compat_port_pcd_cc_params->cc_tree_id); + } + else + break; + } + + if (port_pcd_params->p_kg_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(compat_port_pcd_kg_params, + port_pcd_params->p_kg_params, + sizeof(ioc_compat_fm_port_pcd_kg_params_t)))) + { + compat_copy_fm_port_pcd_kg(compat_port_pcd_kg_params, port_pcd_kg_params, COMPAT_US_TO_K); + port_pcd_params->p_kg_params = port_pcd_kg_params; + } + else + break; + } + + if (port_pcd_params->p_plcr_params && !copy_fail) + { + if(!(copy_fail = copy_from_user(compat_port_pcd_plcr_params, + port_pcd_params->p_plcr_params, + sizeof(ioc_compat_fm_port_pcd_plcr_params_t)))) + { + port_pcd_params->p_plcr_params = port_pcd_plcr_params; + port_pcd_params->p_plcr_params->plcr_profile_id = compat_ptr(compat_port_pcd_plcr_params->plcr_profile_id); + } + } + + /* always run once! */ + break; + } + + XX_Free(compat_port_pcd_params); + } + else +#endif + { + /* Pseudo-while */ + while (!(copy_fail = copy_from_user(port_pcd_params, + (ioc_fm_port_pcd_params_t *)arg, + sizeof(ioc_fm_port_pcd_params_t)))) + { + if (port_pcd_params->p_prs_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_prs_params, + port_pcd_params->p_prs_params, + sizeof(ioc_fm_port_pcd_prs_params_t)))) + port_pcd_params->p_prs_params = port_pcd_prs_params; + else + break; + } + + if (port_pcd_params->p_cc_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_cc_params, + port_pcd_params->p_cc_params, + sizeof(ioc_fm_port_pcd_cc_params_t)))) + port_pcd_params->p_cc_params = port_pcd_cc_params; + else + break; + } + + if (port_pcd_params->p_kg_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_kg_params, + port_pcd_params->p_kg_params, + sizeof(ioc_fm_port_pcd_kg_params_t)))) + port_pcd_params->p_kg_params = port_pcd_kg_params; + else + break; + } + + if (port_pcd_params->p_plcr_params && !copy_fail) + { + if (!(copy_fail = copy_from_user(port_pcd_plcr_params, + port_pcd_params->p_plcr_params, + sizeof(ioc_fm_port_pcd_plcr_params_t)))) + port_pcd_params->p_plcr_params = port_pcd_plcr_params; + } + + /* always run once! */ + break; + } + } + + if (!copy_fail) + err = FM_PORT_SetPCD(p_LnxWrpFmPortDev->h_Dev, (t_FmPortPcdParams*) port_pcd_params); + else + err = E_READ_FAILED; + + XX_Free(port_pcd_params); + + return err; + } + + case FM_PORT_IOC_DELETE_PCD: + return FM_PORT_DeletePCD(p_LnxWrpFmPortDev->h_Dev); + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME_COMPAT: +#endif + case FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME: + { + ioc_fm_pcd_kg_scheme_select_t *param; + + ASSERT_COND(sizeof(t_FmPcdKgSchemeSelect) == sizeof(ioc_fm_pcd_kg_scheme_select_t)); + + param = (ioc_fm_pcd_kg_scheme_select_t *) XX_Malloc( + sizeof(ioc_fm_pcd_kg_scheme_select_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_select_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_select_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_select_t)); + if (!compat_param){ + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + } + + if (copy_from_user(compat_param, + (ioc_compat_fm_pcd_kg_scheme_select_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_kg_scheme_select_t))) + { + XX_Free(param); + XX_Free(compat_param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + + compat_copy_fm_pcd_kg_scheme_select(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_scheme_select_t *)arg, + sizeof(ioc_fm_pcd_kg_scheme_select_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_READ_FAILED, NO_MSG); + } + } + + err = FM_PORT_PcdKgModifyInitialScheme(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdKgSchemeSelect *)param); + + XX_Free(param); + return err; + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE_COMPAT: +#endif + case FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); +#if defined(CONFIG_COMPAT) + if (compat) { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PORT_PcdPlcrModifyInitialProfile(p_LnxWrpFmPortDev->h_Dev, id.obj); + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_KG_BIND_SCHEMES_COMPAT: +#endif + case FM_PORT_IOC_PCD_KG_BIND_SCHEMES: + { + ioc_fm_pcd_port_schemes_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdPortSchemesParams) == sizeof(ioc_fm_pcd_port_schemes_params_t)); + + param = (ioc_fm_pcd_port_schemes_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_port_schemes_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + + memset(¶m, 0 , sizeof(ioc_fm_pcd_port_schemes_params_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_port_schemes_params_t compat_param; + + if (copy_from_user(&compat_param, + (ioc_compat_fm_pcd_port_schemes_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_port_schemes_params_t))) + break; + + compat_copy_fm_pcd_kg_schemes_params(&compat_param, param, COMPAT_US_TO_K); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_port_schemes_params_t *) arg, + sizeof(ioc_fm_pcd_port_schemes_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + + err = FM_PORT_PcdKgBindSchemes(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdPortSchemesParams *)param); + + XX_Free(param); + return err; + } + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES_COMPAT: +#endif + case FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES: + { + ioc_fm_pcd_port_schemes_params_t *param; + + ASSERT_COND(sizeof(t_FmPcdPortSchemesParams) == sizeof(ioc_fm_pcd_port_schemes_params_t)); + + param = (ioc_fm_pcd_port_schemes_params_t *) XX_Malloc( + sizeof(ioc_fm_pcd_port_schemes_params_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + + memset(¶m, 0 , sizeof(ioc_fm_pcd_port_schemes_params_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_port_schemes_params_t compat_param; + + if (copy_from_user(&compat_param, + (ioc_compat_fm_pcd_port_schemes_params_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_port_schemes_params_t))) + break; + + compat_copy_fm_pcd_kg_schemes_params(&compat_param, param, COMPAT_US_TO_K); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_port_schemes_params_t *) arg, + sizeof(ioc_fm_pcd_port_schemes_params_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + + err = FM_PORT_PcdKgUnbindSchemes(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdPortSchemesParams *)param); + + XX_Free(param); + return err; + } + + case FM_PORT_IOC_PCD_PRS_MODIFY_START_OFFSET: + { + ioc_fm_pcd_prs_start_t *param; + + ASSERT_COND(sizeof(t_FmPcdPrsStart) == sizeof(ioc_fm_pcd_prs_start_t)); + + param = (ioc_fm_pcd_prs_start_t *) XX_Malloc(sizeof(ioc_fm_pcd_prs_start_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PORT")); + +#if defined(CONFIG_COMPAT) + if (compat) + { + if (copy_from_user(param, (ioc_fm_pcd_prs_start_t *)compat_ptr(arg), + sizeof(ioc_fm_pcd_prs_start_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_prs_start_t *)arg, + sizeof(ioc_fm_pcd_prs_start_t))) + { + XX_Free(param); + RETURN_ERROR(MAJOR, E_WRITE_FAILED, NO_MSG); + } + } + err = FM_PORT_PcdPrsModifyStartOffset(p_LnxWrpFmPortDev->h_Dev, (t_FmPcdPrsStart *)param); + + XX_Free(param); + return err; + } + + case FM_PORT_IOC_PCD_PLCR_ALLOC_PROFILES: + { + uint16_t num; + if (get_user(num, (uint16_t*) arg)) + break; + return FM_PORT_PcdPlcrAllocProfiles(p_LnxWrpFmPortDev->h_Dev, num); + } + + case FM_PORT_IOC_PCD_PLCR_FREE_PROFILES: + return FM_PORT_PcdPlcrFreeProfiles(p_LnxWrpFmPortDev->h_Dev); + + case FM_PORT_IOC_DETACH_PCD: + return FM_PORT_DetachPCD(p_LnxWrpFmPortDev->h_Dev); + + case FM_PORT_IOC_ATTACH_PCD: + return FM_PORT_AttachPCD(p_LnxWrpFmPortDev->h_Dev); + +#if defined(CONFIG_COMPAT) + case FM_PORT_IOC_PCD_CC_MODIFY_TREE_COMPAT: +#endif + case FM_PORT_IOC_PCD_CC_MODIFY_TREE: + { + ioc_fm_obj_t id; + + memset(&id, 0 , sizeof(ioc_fm_obj_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_obj_t compat_id; + + if (copy_from_user(&compat_id, (ioc_compat_fm_obj_t *) compat_ptr(arg), sizeof(ioc_compat_fm_obj_t))) + break; + + id.obj = compat_get_id2ptr(compat_id.obj); + } + else +#endif + { + if (copy_from_user(&id, (ioc_fm_obj_t *) arg, sizeof(ioc_fm_obj_t))) + break; + } + + return FM_PORT_PcdCcModifyTree(p_LnxWrpFmPortDev->h_Dev, id.obj); + } + + default: + RETURN_ERROR(MINOR, E_INVALID_SELECTION, ("IOCTL cmd (0x%08x):(0x%02x:0x%02x)!", cmd, _IOC_TYPE(cmd), _IOC_NR(cmd))); + } + + RETURN_ERROR(MINOR, E_INVALID_OPERATION, ("IOCTL port")); +} + +/*****************************************************************************/ +/* API routines for the FM Linux Device */ +/*****************************************************************************/ + +static int fm_open(struct inode *inode, struct file *file) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = NULL; + unsigned int major = imajor(inode); + unsigned int minor = iminor(inode); + struct device_node *fm_node; + static struct of_device_id fm_node_of_match[] = { + { .compatible = "fsl,fman", }, + { /* end of list */ }, + }; + + DBG(TRACE, ("Opening minor - %d - ", minor)); + + if (file->private_data != NULL) + return 0; + + /* Get all the FM nodes */ + for_each_matching_node(fm_node, fm_node_of_match) { + struct platform_device *of_dev; + + of_dev = of_find_device_by_node(fm_node); + if (unlikely(of_dev == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + return -ENXIO; + } + + p_LnxWrpFmDev = (t_LnxWrpFmDev *)fm_bind(&of_dev->dev); + if (p_LnxWrpFmDev->major == major) + break; + fm_unbind((struct fm *)p_LnxWrpFmDev); + p_LnxWrpFmDev = NULL; + } + + if (!p_LnxWrpFmDev) + return -ENODEV; + + if (minor == DEV_FM_MINOR_BASE) + file->private_data = p_LnxWrpFmDev; + else if (minor == DEV_FM_PCD_MINOR_BASE) + file->private_data = p_LnxWrpFmDev; + else { + if (minor == DEV_FM_OH_PORTS_MINOR_BASE) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->hcPort; + else if ((minor > DEV_FM_OH_PORTS_MINOR_BASE) && (minor < DEV_FM_RX_PORTS_MINOR_BASE)) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->opPorts[minor-DEV_FM_OH_PORTS_MINOR_BASE-1]; + else if ((minor >= DEV_FM_RX_PORTS_MINOR_BASE) && (minor < DEV_FM_TX_PORTS_MINOR_BASE)) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->rxPorts[minor-DEV_FM_RX_PORTS_MINOR_BASE]; + else if ((minor >= DEV_FM_TX_PORTS_MINOR_BASE) && (minor < DEV_FM_MAX_MINORS)) + p_LnxWrpFmPortDev = &p_LnxWrpFmDev->txPorts[minor-DEV_FM_TX_PORTS_MINOR_BASE]; + else + return -EINVAL; + + /* if trying to open port, check if it initialized */ + if (!p_LnxWrpFmPortDev->h_Dev) + return -ENODEV; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *)fm_port_bind(p_LnxWrpFmPortDev->dev); + file->private_data = p_LnxWrpFmPortDev; + fm_unbind((struct fm *)p_LnxWrpFmDev); + } + + if (file->private_data == NULL) + return -ENXIO; + + return 0; +} + +static int fm_close(struct inode *inode, struct file *file) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + unsigned int minor = iminor(inode); + int err = 0; + + DBG(TRACE, ("Closing minor - %d - ", minor)); + + if ((minor == DEV_FM_MINOR_BASE) || + (minor == DEV_FM_PCD_MINOR_BASE)) + { + p_LnxWrpFmDev = (t_LnxWrpFmDev*)file->private_data; + if (!p_LnxWrpFmDev) + return -ENODEV; + fm_unbind((struct fm *)p_LnxWrpFmDev); + } + else if (((minor >= DEV_FM_OH_PORTS_MINOR_BASE) && (minor < DEV_FM_RX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_RX_PORTS_MINOR_BASE) && (minor < DEV_FM_TX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_TX_PORTS_MINOR_BASE) && (minor < DEV_FM_MAX_MINORS))) + { + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)file->private_data; + if (!p_LnxWrpFmPortDev) + return -ENODEV; + fm_port_unbind((struct fm_port *)p_LnxWrpFmPortDev); + } + + return err; +} + +static int fm_ioctls(unsigned int minor, struct file *file, unsigned int cmd, unsigned long arg, bool compat) +{ + DBG(TRACE, ("IOCTL minor - %u, cmd - 0x%08x, arg - 0x%08lx \n", minor, cmd, arg)); + + if ((minor == DEV_FM_MINOR_BASE) || + (minor == DEV_FM_PCD_MINOR_BASE)) + { + t_LnxWrpFmDev *p_LnxWrpFmDev = ((t_LnxWrpFmDev*)file->private_data); + if (!p_LnxWrpFmDev) + return -ENODEV; + if (LnxwrpFmIOCTL(p_LnxWrpFmDev, cmd, arg, compat)) + return -EFAULT; + } + else if (((minor >= DEV_FM_OH_PORTS_MINOR_BASE) && (minor < DEV_FM_RX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_RX_PORTS_MINOR_BASE) && (minor < DEV_FM_TX_PORTS_MINOR_BASE)) || + ((minor >= DEV_FM_TX_PORTS_MINOR_BASE) && (minor < DEV_FM_MAX_MINORS))) + { + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = ((t_LnxWrpFmPortDev*)file->private_data); + if (!p_LnxWrpFmPortDev) + return -ENODEV; + if (LnxwrpFmPortIOCTL(p_LnxWrpFmPortDev, cmd, arg, compat)) + return -EFAULT; + } + else + { + REPORT_ERROR(MINOR, E_INVALID_VALUE, ("minor")); + return -ENODEV; + } + + return 0; +} + +#ifdef CONFIG_COMPAT +static long fm_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + long res; + + fm_mutex_lock(); + res = fm_ioctls(minor, file, cmd, arg, true); + fm_mutex_unlock(); + + return res; +} +#endif + +static long fm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + long res; + + fm_mutex_lock(); + res = fm_ioctls(minor, file, cmd, arg, false); + fm_mutex_unlock(); + + return res; +} + +/* Globals for FM character device */ +struct file_operations fm_fops = +{ + .owner = THIS_MODULE, + .unlocked_ioctl = fm_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fm_compat_ioctl, +#endif + .open = fm_open, + .release = fm_close, +}; --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.c @@ -0,0 +1,364 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_sysfs_fm_port.c + + @Description FM port sysfs related functions. + +*/ + +#include "lnxwrp_sysfs.h" +#include "lnxwrp_fm.h" + +static const struct SysfsStats_t portSysfsStats[] = { + /* RX/TX/OH common statistics */ + { + .statisticName = "port_frame", + .statisticCounter = e_FM_PORT_COUNTERS_FRAME, + }, + { + .statisticName = "port_discard_frame", + .statisticCounter = e_FM_PORT_COUNTERS_DISCARD_FRAME, + }, + { + .statisticName = "port_dealloc_buf", + .statisticCounter = e_FM_PORT_COUNTERS_DEALLOC_BUF, + }, + { + .statisticName = "port_enq_total", + .statisticCounter = e_FM_PORT_COUNTERS_ENQ_TOTAL, + }, + /* TX/OH */ + { + .statisticName = "port_length_err", + .statisticCounter = e_FM_PORT_COUNTERS_LENGTH_ERR, + }, + { + .statisticName = "port_unsupprted_format", + .statisticCounter = e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, + }, + { + .statisticName = "port_deq_total", + .statisticCounter = e_FM_PORT_COUNTERS_DEQ_TOTAL, + }, + { + .statisticName = "port_deq_from_default", + .statisticCounter = e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, + }, + { + .statisticName = "port_deq_confirm", + .statisticCounter = e_FM_PORT_COUNTERS_DEQ_CONFIRM, + }, + /* RX/OH */ + { + .statisticName = "port_rx_bad_frame", + .statisticCounter = e_FM_PORT_COUNTERS_RX_BAD_FRAME, + }, + { + .statisticName = "port_rx_large_frame", + .statisticCounter = e_FM_PORT_COUNTERS_RX_LARGE_FRAME, + }, + { + .statisticName = "port_rx_out_of_buffers_discard", + .statisticCounter = e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, + }, + { + .statisticName = "port_rx_filter_frame", + .statisticCounter = e_FM_PORT_COUNTERS_RX_FILTER_FRAME, + }, + /* TODO: Particular statistics for OH ports */ + {} +}; + +static ssize_t show_fm_port_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + t_LnxWrpFmDev *p_LnxWrpFmDev; + unsigned long flags; + int n = 0; + uint8_t counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmPortDev == NULL)) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) p_LnxWrpFmPortDev->h_LnxWrpFmDev; + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + if (!p_LnxWrpFmPortDev->h_Dev) { + n = snprintf(buf, PAGE_SIZE, "\tFM Port not configured...\n"); + return n; + } + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) & + portSysfsStats[0], NULL); + + if (counter == e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR) { + uint32_t fmRev = 0; + fmRev = 0xffff & ioread32(UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr + + 0x000c30c4)); + + if (fmRev == 0x0100) { + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "counter not available for revision 1\n"); + local_irq_restore(flags); + } + return n; + } + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, "\tFM %d Port %d counter: %d\n", + p_LnxWrpFmDev->id, + p_LnxWrpFmPortDev->id, + FM_PORT_GetCounter(p_LnxWrpFmPortDev->h_Dev, + (e_FmPortCounters) counter)); + local_irq_restore(flags); + + return n; +} + +/* FM PORT RX/TX/OH statistics */ +static DEVICE_ATTR(port_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_discard_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_dealloc_buf, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_enq_total, S_IRUGO, show_fm_port_stats, NULL); +/* FM PORT TX/OH statistics */ +static DEVICE_ATTR(port_length_err, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_unsupprted_format, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_deq_total, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_deq_from_default, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_deq_confirm, S_IRUGO, show_fm_port_stats, NULL); +/* FM PORT RX/OH statistics */ +static DEVICE_ATTR(port_rx_bad_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_rx_large_frame, S_IRUGO, show_fm_port_stats, NULL); +static DEVICE_ATTR(port_rx_out_of_buffers_discard, S_IRUGO, + show_fm_port_stats, NULL); +static DEVICE_ATTR(port_rx_filter_frame, S_IRUGO, show_fm_port_stats, NULL); + +/* FM PORT TX statistics */ +static struct attribute *fm_tx_port_dev_stats_attributes[] = { + &dev_attr_port_frame.attr, + &dev_attr_port_discard_frame.attr, + &dev_attr_port_dealloc_buf.attr, + &dev_attr_port_enq_total.attr, + &dev_attr_port_length_err.attr, + &dev_attr_port_unsupprted_format.attr, + &dev_attr_port_deq_total.attr, + &dev_attr_port_deq_from_default.attr, + &dev_attr_port_deq_confirm.attr, + NULL +}; + +static const struct attribute_group fm_tx_port_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_tx_port_dev_stats_attributes +}; + +/* FM PORT RX statistics */ +static struct attribute *fm_rx_port_dev_stats_attributes[] = { + &dev_attr_port_frame.attr, + &dev_attr_port_discard_frame.attr, + &dev_attr_port_dealloc_buf.attr, + &dev_attr_port_enq_total.attr, + &dev_attr_port_rx_bad_frame.attr, + &dev_attr_port_rx_large_frame.attr, + &dev_attr_port_rx_out_of_buffers_discard.attr, + &dev_attr_port_rx_filter_frame.attr, + NULL +}; + +static const struct attribute_group fm_rx_port_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_rx_port_dev_stats_attributes +}; + +/* TODO: add particular OH ports statistics */ +static struct attribute *fm_oh_port_dev_stats_attributes[] = { + &dev_attr_port_frame.attr, + &dev_attr_port_discard_frame.attr, + &dev_attr_port_dealloc_buf.attr, + &dev_attr_port_enq_total.attr, + /*TX*/ &dev_attr_port_length_err.attr, + &dev_attr_port_unsupprted_format.attr, + &dev_attr_port_deq_total.attr, + &dev_attr_port_deq_from_default.attr, + &dev_attr_port_deq_confirm.attr, + /*RX*/ &dev_attr_port_rx_bad_frame.attr, + &dev_attr_port_rx_large_frame.attr, + &dev_attr_port_rx_out_of_buffers_discard.attr, + /*&dev_attr_port_rx_filter_frame.attr, */ + NULL +}; + +static const struct attribute_group fm_oh_port_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_oh_port_dev_stats_attributes +}; + +static ssize_t show_fm_port_regs(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = + (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + local_irq_save(flags); + + if (!p_LnxWrpFmPortDev->h_Dev) { + n = snprintf(buf, PAGE_SIZE, "\tFM Port not configured...\n"); + return n; + } else { + n = snprintf(buf, PAGE_SIZE, + "FM port driver registers dump.\n"); + FM_PORT_DumpRegs(p_LnxWrpFmPortDev->h_Dev); + } + + local_irq_restore(flags); + + return n; +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); + + return n; +#endif +} + +static DEVICE_ATTR(fm_port_regs, 0x644, show_fm_port_regs, NULL); + +int fm_port_sysfs_create(struct device *dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev; + + if (dev == NULL) + return -EINVAL; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmPortDev == NULL)) + return -EINVAL; + + /* store to remove them when module is disabled */ + p_LnxWrpFmPortDev->dev_attr_regs = &dev_attr_fm_port_regs; + + /* Registers dump entry - in future will be moved to debugfs */ + if (device_create_file(dev, &dev_attr_fm_port_regs) != 0) + return -EIO; + + /* FM Ports statistics */ + switch (p_LnxWrpFmPortDev->settings.param.portType) { + case e_FM_PORT_TYPE_TX: + case e_FM_PORT_TYPE_TX_10G: + if (sysfs_create_group + (&dev->kobj, &fm_tx_port_dev_stats_attr_grp) != 0) + return -EIO; + break; + case e_FM_PORT_TYPE_RX: + case e_FM_PORT_TYPE_RX_10G: + if (sysfs_create_group + (&dev->kobj, &fm_rx_port_dev_stats_attr_grp) != 0) + return -EIO; + break; + case e_FM_PORT_TYPE_OH_OFFLINE_PARSING: + case e_FM_PORT_TYPE_OH_HOST_COMMAND: + if (sysfs_create_group + (&dev->kobj, &fm_oh_port_dev_stats_attr_grp) != 0) + return -EIO; + break; + case e_FM_PORT_TYPE_DUMMY: + default: + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + return -EINVAL; + break; + }; + + return 0; +} + +void fm_port_sysfs_destroy(struct device *dev) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = NULL; + + /* this function has never been tested !!! */ + + if (WARN_ON(dev == NULL)) + return; + + p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmPortDev == NULL)) + return; + + /* The name attribute will be freed also by these 2 functions? */ + switch (p_LnxWrpFmPortDev->settings.param.portType) { + case e_FM_PORT_TYPE_TX: + case e_FM_PORT_TYPE_TX_10G: + sysfs_remove_group(&dev->kobj, &fm_tx_port_dev_stats_attr_grp); + break; + case e_FM_PORT_TYPE_RX: + case e_FM_PORT_TYPE_RX_10G: + sysfs_remove_group(&dev->kobj, &fm_rx_port_dev_stats_attr_grp); + break; + case e_FM_PORT_TYPE_OH_OFFLINE_PARSING: + case e_FM_PORT_TYPE_OH_HOST_COMMAND: + sysfs_remove_group(&dev->kobj, &fm_oh_port_dev_stats_attr_grp); + break; + case e_FM_PORT_TYPE_DUMMY: + default: + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + break; + }; + + device_remove_file(dev, p_LnxWrpFmPortDev->dev_attr_regs); +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_resources.h @@ -0,0 +1,111 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_resources.h + + @Description FMD wrapper resource allocation functions. + +*/ + +#ifndef LNXWRP_RESOURCES_H_ +#define LNXWRP_RESOURCES_H_ + +#include "lnxwrp_fm.h" + +#define ROUND(X) ((2*(X)+1)/2) +#define CEIL(X) ((X)+1) +/* #define ROUND_DIV(X, Y) (((X)+(Y)/2)/(Y)) */ +#define ROUND_DIV(X, Y) ((2*(X)+(Y))/(2*(Y))) +#define CEIL_DIV(X, Y) (((X)+(Y)-1)/(Y)) + +/* used for resource calculus */ +#define DPDE_1G 2 /* DQDP 1g - from LLD: + DEFAULT_PORT_txFifoDeqPipelineDepth_1G */ +#define DPDE_10G 8 /* DQDP 10g - from LLD: + DEFAULT_PORT_txFifoDeqPipelineDepth_10G */ + +int fm_set_active_fman_ports(struct platform_device *of_dev, + t_LnxWrpFmDev *p_LnxWrpFmDev); + +/* Calculate the fifosize based on MURAM allocation, number of ports, dpde + * value and s/g software support (! Kernel does not suport s/g). + * + * Algorithm summary: + * - Calculate the the minimum fifosize required for every type of port + * (TX,RX for 1G, 2.5G and 10G). + * - Set TX the minimum fifosize required. + * - Distribute the remaining buffers (after all TX were set) to RX ports + * based on: + * 1G RX = Remaining_buffers * 1/(1+2.5+10) + * 2.5G RX = Remaining_buffers * 2.5/(1+2.5+10) + * 10G RX = Remaining_buffers * 10/(1+2.5+10) + * - if the RX is smaller than the minimum required, then set the minimum + * required + * - In the end distribuite the leftovers if there are any (due to + * unprecise calculus) or if over allocation cat some buffers from all RX + * ports w/o pass over minimum required treshold, but if there must be + * pass the treshold in order to cat the over allocation ,then this + * configuration can not be set - KERN_ALERT. +*/ +int fm_precalculate_fifosizes(t_LnxWrpFmDev *p_LnxWrpFmDev, + int muram_fifo_size); + +int fm_set_precalculate_fifosize(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev); + +/* Compute FMan open DMA based on total number of open DMAs and + * number of available fman ports. + * + * By default 10g ports are set to input parameters. The other ports + * tries to keep the proportion rx=2tx open dmas or tresholds. + * + * If leftovers, then those will be set as shared. + * + * If after computing overflow appears, then it decrements open dma + * for all ports w/o cross the tresholds. If the tresholds are meet + * and is still overflow, then it returns error. +*/ +int fm_precalculate_open_dma(t_LnxWrpFmDev *p_LnxWrpFmDev, + int max_fm_open_dma, + int default_tx_10g_dmas, + int default_rx_10g_dmas, + int min_tx_10g_treshold, int min_rx_10g_treshold); + +int fm_set_precalculate_open_dma(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev); + +/* Compute FMan tnums based on available tnums and number of ports. + * Set defaults (minim tresholds) and then distribute leftovers.*/ +int fm_precalculate_tnums(t_LnxWrpFmDev *p_LnxWrpFmDev, int max_fm_tnums); + +int fm_set_precalculate_tnums(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev); + +#endif /* LNXWRP_RESOURCES_H_ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.h @@ -0,0 +1,379 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_ioctls_fm_compat.h + + @Description FM PCD compat structures definition. + +*/ + +#ifndef __FM_COMPAT_IOCTLS_H +#define __FM_COMPAT_IOCTLS_H + +#include + +#define COMPAT_K_TO_US 0 /* copy from Kernel to User */ +#define COMPAT_US_TO_K 1 /* copy from User to Kernel */ + +#define COMPAT_COPY_K2US(dest, src, type) compat_copy_##type(src, dest, 0) +#define COMPAT_COPY_US2K(dest, src, type) compat_copy_##type(dest, src, 1) + +/* maping kernel pointers w/ UserSpace id's { */ +/* Because compat_ptr(ptr_to_compat(X)) != X, this way we cannot exchange pointers + back and forth (US - KS). compat_ptr is a cast and pointers are broken. */ +#define COMPAT_PTR2ID_ARRAY_MAX (256+1) /* first location is not used */ +#define COMPAT_PTR2ID_WATERMARK 0xface0000 +#define COMPAT_PTR2ID_WM_MASK 0xffff0000 + +void compat_del_ptr2id(void *p); +compat_uptr_t compat_add_ptr2id(void *p); +compat_uptr_t compat_get_ptr2id(void *p); +void *compat_get_id2ptr(compat_uptr_t comp); +/* } maping kernel pointers w/ UserSpace id's */ + +/* pcd compat structures { */ +typedef struct ioc_compat_fm_pcd_cc_node_remove_key_params_t { + compat_uptr_t id; + uint8_t key_indx; +} ioc_compat_fm_pcd_cc_node_remove_key_params_t; + +typedef union ioc_compat_fm_pcd_plcr_next_engine_params_u { + ioc_fm_pcd_done_action action; + compat_uptr_t p_profile; + compat_uptr_t p_direct_scheme; +} ioc_compat_fm_pcd_plcr_next_engine_params_u; + +typedef struct ioc_compat_fm_pcd_plcr_profile_params_t { + bool modify; + union { + struct { + ioc_fm_pcd_profile_type_selection profile_type; + compat_uptr_t p_port; + uint16_t relative_profile_id; + } new_params; + compat_uptr_t p_profile; + } profile_select; + ioc_fm_pcd_plcr_algorithm_selection alg_selection; + ioc_fm_pcd_plcr_color_mode color_mode; + + union { + ioc_fm_pcd_plcr_color dflt_color; + ioc_fm_pcd_plcr_color override; + } color; + + ioc_fm_pcd_plcr_non_passthrough_alg_param_t non_passthrough_alg_param; + + ioc_fm_pcd_engine next_engine_on_green; + ioc_compat_fm_pcd_plcr_next_engine_params_u params_on_green; + + ioc_fm_pcd_engine next_engine_on_yellow; + ioc_compat_fm_pcd_plcr_next_engine_params_u params_on_yellow; + + ioc_fm_pcd_engine next_engine_on_red; + ioc_compat_fm_pcd_plcr_next_engine_params_u params_on_red; + + bool trap_profile_on_flow_A; + bool trap_profile_on_flow_B; + bool trap_profile_on_flow_C; + compat_uptr_t id; +} ioc_compat_fm_pcd_plcr_profile_params_t; + +typedef struct ioc_compat_fm_obj_t { + compat_uptr_t obj; +} ioc_compat_fm_obj_t; + +typedef struct ioc_compat_fm_pcd_kg_scheme_select_t { + bool direct; + compat_uptr_t scheme_id; +} ioc_compat_fm_pcd_kg_scheme_select_t; + +typedef struct ioc_compat_fm_pcd_port_schemes_params_t { + uint8_t num_of_schemes; + compat_uptr_t schemes_ids [IOC_FM_PCD_KG_NUM_OF_SCHEMES]; +} ioc_compat_fm_pcd_port_schemes_params_t; + +typedef struct ioc_compat_fm_pcd_net_env_params_t { + uint8_t num_of_distinction_units; + ioc_fm_pcd_distinction_unit_t units[IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; /* same structure*/ + compat_uptr_t id; +} ioc_compat_fm_pcd_net_env_params_t; + +typedef struct ioc_compat_fm_pcd_prs_sw_params_t { + bool override; + uint32_t size; + uint16_t base; + compat_uptr_t p_code; + uint32_t sw_prs_data_params[IOC_FM_PCD_PRS_NUM_OF_HDRS]; + uint8_t num_of_labels; + ioc_fm_pcd_prs_label_params_t labels_table[IOC_FM_PCD_PRS_NUM_OF_LABELS]; +} ioc_compat_fm_pcd_prs_sw_params_t; + +typedef struct ioc_compat_fm_pcd_cc_next_kg_params_t { + bool override_fqid; + uint32_t new_fqid; + compat_uptr_t p_direct_scheme; +} ioc_compat_fm_pcd_cc_next_kg_params_t; + +typedef struct ioc_compat_fm_pcd_cc_next_cc_params_t { + compat_uptr_t cc_node_id; +} ioc_compat_fm_pcd_cc_next_cc_params_t; + +typedef struct ioc_compat_fm_pcd_cc_next_engine_params_t { + ioc_fm_pcd_engine next_engine; + union { + ioc_compat_fm_pcd_cc_next_cc_params_t cc_params; /**< compat structure*/ + ioc_fm_pcd_cc_next_plcr_params_t plcr_params; /**< same structure*/ + ioc_fm_pcd_cc_next_enqueue_params_t enqueue_params; /**< same structure*/ + ioc_compat_fm_pcd_cc_next_kg_params_t kg_params; /**< compat structure*/ + } params; +#ifdef FM_PCD_CC_MANIP + compat_uptr_t p_manip; +#endif +} ioc_compat_fm_pcd_cc_next_engine_params_t; + + +typedef struct ioc_compat_fm_pcd_cc_grp_params_t { + uint8_t num_of_distinction_units; /**< up to 4 */ + uint8_t unit_ids [IOC_FM_PCD_MAX_NUM_OF_CC_UNITS]; + /**< Indexes of the units as defined in + FM_PCD_SetNetEnvCharacteristics */ + ioc_compat_fm_pcd_cc_next_engine_params_t next_engine_per_entries_in_grp[IOC_FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP]; + /**< Max size is 16 - if only one group used */ +} ioc_compat_fm_pcd_cc_grp_params_t; + +typedef struct ioc_compat_fm_pcd_cc_tree_params_t { + compat_uptr_t net_env_id; + uint8_t num_of_groups; + ioc_compat_fm_pcd_cc_grp_params_t fm_pcd_cc_group_params [IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS]; + compat_uptr_t id; +} ioc_compat_fm_pcd_cc_tree_params_t; + +typedef struct ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t { + compat_uptr_t id; + uint8_t grp_indx; + uint8_t indx; + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params; +} ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t; + +typedef struct ioc_compat_fm_pcd_cc_key_params_t { + compat_uptr_t p_key; + compat_uptr_t p_mask; + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params; /**< compat structure*/ +} ioc_compat_fm_pcd_cc_key_params_t; + +typedef struct ioc_compat_keys_params_t { + uint8_t num_of_keys; + uint8_t key_size; + ioc_compat_fm_pcd_cc_key_params_t key_params[IOC_FM_PCD_MAX_NUM_OF_KEYS]; /**< compat structure*/ + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params_for_miss; /**< compat structure*/ +} ioc_compat_keys_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_params_t { + ioc_fm_pcd_extract_entry_t extract_cc_params; /**< same structure*/ + ioc_compat_keys_params_t keys_params; /**< compat structure*/ + compat_uptr_t id; +} ioc_compat_fm_pcd_cc_node_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_modify_key_params_t { + compat_uptr_t id; + uint8_t key_indx; + uint8_t key_size; + compat_uptr_t p_key; + compat_uptr_t p_mask; +} ioc_compat_fm_pcd_cc_node_modify_key_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t { + compat_uptr_t id; + uint8_t key_indx; + uint8_t key_size; + ioc_compat_fm_pcd_cc_key_params_t key_params; +} ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t; + +typedef struct ioc_compat_fm_port_pcd_plcr_params_t { + compat_uptr_t plcr_profile_id; +} ioc_compat_fm_port_pcd_plcr_params_t; + +typedef struct ioc_compat_fm_port_pcd_cc_params_t { + compat_uptr_t cc_tree_id; +} ioc_compat_fm_port_pcd_cc_params_t; + +typedef struct ioc_compat_fm_port_pcd_kg_params_t { + uint8_t num_of_schemes; + compat_uptr_t schemes_ids[IOC_FM_PCD_KG_NUM_OF_SCHEMES]; + bool direct_scheme; + compat_uptr_t direct_scheme_id; +} ioc_compat_fm_port_pcd_kg_params_t; + +typedef struct ioc_compat_fm_port_pcd_params_t { + ioc_fm_port_pcd_support pcd_support; + compat_uptr_t net_env_id; + compat_uptr_t p_prs_params; + compat_uptr_t p_cc_params; + compat_uptr_t p_kg_params; + compat_uptr_t p_plcr_params; +} ioc_compat_fm_port_pcd_params_t; + +typedef struct ioc_compat_fm_pcd_kg_cc_t { + compat_uptr_t tree_id; + uint8_t grp_id; + bool plcr_next; + bool bypass_plcr_profile_generation; + ioc_fm_pcd_kg_plcr_profile_t plcr_profile; +} ioc_compat_fm_pcd_kg_cc_t; + +typedef struct ioc_compat_fm_pcd_kg_scheme_params_t { + bool modify; + union + { + uint8_t relative_scheme_id; + compat_uptr_t scheme_id; + } scm_id; + bool always_direct; + struct + { + compat_uptr_t net_env_id; + uint8_t num_of_distinction_units; + uint8_t unit_ids[IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + } netEnvParams; + bool use_hash; + ioc_fm_pcd_kg_key_extract_and_hash_params_t key_extract_and_hash_params; + bool bypass_fqid_generation; + uint32_t base_fqid; + uint8_t numOfUsedExtractedOrs; + ioc_fm_pcd_kg_extracted_or_params_t extracted_ors[IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS]; + ioc_fm_pcd_engine next_engine; + union{ + ioc_fm_pcd_done_action done_action; + ioc_fm_pcd_kg_plcr_profile_t plcr_profile; + ioc_compat_fm_pcd_kg_cc_t cc; + } kg_next_engine_params; + ioc_fm_pcd_kg_scheme_counter_t scheme_counter; + compat_uptr_t id; +} ioc_compat_fm_pcd_kg_scheme_params_t; + +typedef struct ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t { + compat_uptr_t id; + uint8_t key_indx; + uint8_t key_size; + ioc_compat_fm_pcd_cc_next_engine_params_t cc_next_engine_params; +} ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t; +/* } pcd compat structures */ + +/* pcd compat functions { */ +void compat_copy_fm_pcd_plcr_profile( + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param, + ioc_fm_pcd_plcr_profile_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_key( + ioc_compat_fm_pcd_cc_key_params_t *compat_param, + ioc_fm_pcd_cc_key_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node_modify_key_and_next_engine( + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node_modify_next_engine( + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param, + uint8_t compat); + +void compat_fm_pcd_cc_tree_modify_next_engine( + ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_tree_modify_next_engine_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_grp( + ioc_compat_fm_pcd_cc_grp_params_t *compat_param, + ioc_fm_pcd_cc_grp_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_tree( + ioc_compat_fm_pcd_cc_tree_params_t *compat_param, + ioc_fm_pcd_cc_tree_params_t *param, + uint8_t compat); + +void compat_fm_pcd_prs_sw( + ioc_compat_fm_pcd_prs_sw_params_t *compat_param, + ioc_fm_pcd_prs_sw_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_kg_scheme( + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param, + ioc_fm_pcd_kg_scheme_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_kg_scheme_select( + ioc_compat_fm_pcd_kg_scheme_select_t *compat_param, + ioc_fm_pcd_kg_scheme_select_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_kg_schemes_params( + ioc_compat_fm_pcd_port_schemes_params_t *compat_param, + ioc_fm_pcd_port_schemes_params_t *param, + uint8_t compat); + +void compat_copy_fm_port_pcd_kg( + ioc_compat_fm_port_pcd_kg_params_t *compat_param, + ioc_fm_port_pcd_kg_params_t *param, + uint8_t compat); + +void compat_copy_fm_port_pcd( + ioc_compat_fm_port_pcd_params_t *compat_param, + ioc_fm_port_pcd_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_net_env( + ioc_compat_fm_pcd_net_env_params_t *compat_param, + ioc_fm_pcd_net_env_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node_modify_key( + ioc_compat_fm_pcd_cc_node_modify_key_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_params_t *param, + uint8_t compat); + +void compat_copy_keys( + ioc_compat_keys_params_t *compat_param, + ioc_keys_params_t *param, + uint8_t compat); + +void compat_copy_fm_pcd_cc_node( + ioc_compat_fm_pcd_cc_node_params_t *compat_param, + ioc_fm_pcd_cc_node_params_t *param, + uint8_t compat); + +/* } pcd compat functions */ +#endif --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.c @@ -0,0 +1,60 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_sysfs.c + + @Description FM wrapper sysfs related functions. + +*/ + +#include +#include "lnxwrp_sysfs.h" + +uint8_t fm_find_statistic_counter_by_name(const char *attr_name, + struct SysfsStats_t *sysfs_stats, + uint8_t *offset) +{ + int i = 0; + + while (sysfs_stats[i].statisticName != NULL) { + if (strcmp(sysfs_stats[i].statisticName, attr_name) == 0) { + if (offset != NULL) + *offset = i; + return sysfs_stats[i].statisticCounter; + } + + i++; + } + WARN(1, "FMD: Should never get here!"); + return 0; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.c @@ -0,0 +1,1202 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_fm.c + + @Author Shlomi Gridish + + @Description FM Linux wrapper functions. + +*/ + +#include +#include +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /* For struct qe_firmware */ +#include +#include /* For file access mask */ +#include + +/* NetCommSw Headers --------------- */ +#include "std_ext.h" +#include "error_ext.h" +#include "sprint_ext.h" +#include "debug_ext.h" +#include "sys_io_ext.h" + +#include "fm_ioctls.h" + +#include "lnxwrp_fm.h" +#include "lnxwrp_resources.h" +#include "lnxwrp_sysfs_fm.h" +#include "lnxwrp_sysfs_fm_port.h" + +#define PROC_PRINT(args...) offset += sprintf(buf+offset,args) + +#define ADD_ADV_CONFIG_NO_RET(_func, _param) \ + do { \ + if (ip_Function = _func; \ + _param \ + i++; \ + } \ + else \ + REPORT_ERROR(MAJOR, E_INVALID_VALUE,\ + ("Number of advanced-configuration entries exceeded"));\ + } while (0) + +static t_LnxWrpFm lnxWrpFm; + + +static irqreturn_t fm_irq(int irq, void *_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)_dev; + + if (!p_LnxWrpFmDev || !p_LnxWrpFmDev->h_Dev) + return IRQ_NONE; + + FM_EventIsr(p_LnxWrpFmDev->h_Dev); + + return IRQ_HANDLED; +} + +static irqreturn_t fm_err_irq(int irq, void *_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)_dev; + + if (!p_LnxWrpFmDev || !p_LnxWrpFmDev->h_Dev) + return IRQ_NONE; + + if (FM_ErrorIsr(p_LnxWrpFmDev->h_Dev) == E_OK) + return IRQ_HANDLED; + + return IRQ_NONE; +} + +/* used to protect FMD/LLD from concurrent calls in functions fm_mutex_lock / fm_mutex_unlock */ +static struct mutex lnxwrp_mutex; + +static t_LnxWrpFmDev * CreateFmDev(uint8_t id) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + int j; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *)XX_Malloc(sizeof(t_LnxWrpFmDev)); + if (!p_LnxWrpFmDev) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + memset(p_LnxWrpFmDev, 0, sizeof(t_LnxWrpFmDev)); + p_LnxWrpFmDev->fmDevSettings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->fmDevSettings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + p_LnxWrpFmDev->fmPcdDevSettings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->fmPcdDevSettings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + p_LnxWrpFmDev->hcPort.settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->hcPort.settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + for (j=0; jrxPorts[j].settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->rxPorts[j].settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + } + for (j=0; jtxPorts[j].settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->txPorts[j].settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + } + for (j=0; jopPorts[j].settings.advConfig = (t_SysObjectAdvConfigEntry*)XX_Malloc(FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry)); + memset(p_LnxWrpFmDev->opPorts[j].settings.advConfig, 0, (FM_MAX_NUM_OF_ADV_SETTINGS*sizeof(t_SysObjectAdvConfigEntry))); + } + + return p_LnxWrpFmDev; +} + +static void DestroyFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + int j; + + for (j=0; jopPorts[j].settings.advConfig) + XX_Free(p_LnxWrpFmDev->opPorts[j].settings.advConfig); + for (j=0; jtxPorts[j].settings.advConfig) + XX_Free(p_LnxWrpFmDev->txPorts[j].settings.advConfig); + for (j=0; jrxPorts[j].settings.advConfig) + XX_Free(p_LnxWrpFmDev->rxPorts[j].settings.advConfig); + if (p_LnxWrpFmDev->hcPort.settings.advConfig) + XX_Free(p_LnxWrpFmDev->hcPort.settings.advConfig); + if (p_LnxWrpFmDev->fmPcdDevSettings.advConfig) + XX_Free(p_LnxWrpFmDev->fmPcdDevSettings.advConfig); + if (p_LnxWrpFmDev->fmDevSettings.advConfig) + XX_Free(p_LnxWrpFmDev->fmDevSettings.advConfig); + + XX_Free(p_LnxWrpFmDev); +} + +static t_Error FillRestFmInfo(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ +#define FM_BMI_PPIDS_OFFSET 0x00080304 +#define FM_DMA_PLR_OFFSET 0x000c2060 +#define FM_FPM_IP_REV_1_OFFSET 0x000c30c4 +#define DMA_HIGH_LIODN_MASK 0x0FFF0000 +#define DMA_LOW_LIODN_MASK 0x00000FFF +#define DMA_LIODN_SHIFT 16 + +typedef _Packed struct { + uint32_t plr[32]; +} _PackedType t_Plr; + +typedef _Packed struct { + volatile uint32_t fmbm_ppid[63]; +} _PackedType t_Ppids; + + t_Plr *p_Plr; + t_Ppids *p_Ppids; + int i,j; + uint32_t fmRev; + + static const uint8_t phys1GRxPortId[] = {0x8,0x9,0xa,0xb,0xc}; + static const uint8_t phys10GRxPortId[] = {0x10}; + static const uint8_t physOhPortId[] = {0x1,0x2,0x3,0x4,0x5,0x6,0x7}; + static const uint8_t phys1GTxPortId[] = {0x28,0x29,0x2a,0x2b,0x2c}; + static const uint8_t phys10GTxPortId[] = {0x30}; + + fmRev = (uint32_t)(*((volatile uint32_t *)UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr+FM_FPM_IP_REV_1_OFFSET))); + fmRev &= 0xffff; + + p_Plr = (t_Plr *)UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr+FM_DMA_PLR_OFFSET); +#ifdef MODULE + for (i=0;iplr[i] = 0; +#endif /* MODULE */ + + for (i=0; iplr[i/2] & DMA_LOW_LIODN_MASK) : + ((p_Plr->plr[i/2] & DMA_HIGH_LIODN_MASK) >> DMA_LIODN_SHIFT)); +#ifdef FM_PARTITION_ARRAY + /* TODO: this was .liodnPerPartition[i] = liodnBase; is the index meaning the same? */ + p_LnxWrpFmDev->fmDevSettings.param.liodnBasePerPort[i] = liodnBase; +#endif /* FM_PARTITION_ARRAY */ + + if ((i >= phys1GRxPortId[0]) && + (i <= phys1GRxPortId[FM_MAX_NUM_OF_1G_RX_PORTS-1])) + { + for (j=0; jrxPorts[j].settings.param.liodnBase = liodnBase; + } + else if (FM_MAX_NUM_OF_10G_RX_PORTS && + (i >= phys10GRxPortId[0]) && + (i <= phys10GRxPortId[FM_MAX_NUM_OF_10G_RX_PORTS-1])) + { + for (j=0; jrxPorts[FM_MAX_NUM_OF_1G_RX_PORTS+j].settings.param.liodnBase = liodnBase; + } + else if ((i >= physOhPortId[0]) && + (i <= physOhPortId[FM_MAX_NUM_OF_OH_PORTS-1])) + { + for (j=0; jhcPort.settings.param.liodnBase = liodnBase; + else + p_LnxWrpFmDev->opPorts[j - 1].settings.param.liodnBase = liodnBase; + } + else if ((i >= phys1GTxPortId[0]) && + (i <= phys1GTxPortId[FM_MAX_NUM_OF_1G_TX_PORTS-1])) + { + for (j=0; jtxPorts[j].settings.param.liodnBase = liodnBase; + } + else if (FM_MAX_NUM_OF_10G_TX_PORTS && + (i >= phys10GTxPortId[0]) && + (i <= phys10GTxPortId[FM_MAX_NUM_OF_10G_TX_PORTS-1])) + { + for (j=0; jtxPorts[FM_MAX_NUM_OF_1G_TX_PORTS+j].settings.param.liodnBase = liodnBase; + } + } + + p_Ppids = (t_Ppids *)UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr+FM_BMI_PPIDS_OFFSET); + + for (i=0; irxPorts[i].settings.param.specificParams.rxParams.liodnOffset = + p_Ppids->fmbm_ppid[phys1GRxPortId[i]-1]; + + for (i=0; irxPorts[FM_MAX_NUM_OF_1G_RX_PORTS+i].settings.param.specificParams.rxParams.liodnOffset = + p_Ppids->fmbm_ppid[phys10GRxPortId[i]-1]; + +#ifdef FM_OP_PARTITION_ERRATA_FMANx8 + for (i=0; iopPorts[i-1].settings.param.specificParams.nonRxParams.opLiodnOffset = + p_Ppids->fmbm_ppid[physOhPortId[i]-1]; + } +#endif /* FM_OP_PARTITION_ERRATA_FMANx8 */ + + return E_OK; +} + +/* The default address for the Fman microcode in flash. Having a default + * allows older systems to continue functioning. 0xEF000000 is the address + * where the firmware is normally on a P4080DS. + */ +#ifdef CONFIG_PHYS_64BIT +static phys_addr_t P4080_UCAddr = 0xfef000000ull; +#else +static phys_addr_t P4080_UCAddr = 0xef000000; +#endif + + +/** + * FmanUcodeAddrParam - process the fman_ucode kernel command-line parameter + * + * This function is called when the kernel encounters a fman_ucode command- + * line parameter. This parameter contains the address of the Fman microcode + * in flash. + */ +static int FmanUcodeAddrParam(char *str) +{ + unsigned long long l; + int ret; + + ret = strict_strtoull(str, 0, &l); + if (!ret) + P4080_UCAddr = (phys_addr_t) l; + + return ret; +} +__setup("fman_ucode=", FmanUcodeAddrParam); + +/** + * FindFmanMicrocode - find the Fman microcode in memory + * + * This function returns a pointer to the QE Firmware blob that holds + * the Fman microcode. We use the QE Firmware structure because Fman microcode + * is similar to QE microcode, so there's no point in defining a new layout. + * + * Current versions of U-Boot embed the Fman firmware into the device tree, + * so we check for that first. Each Fman node in the device tree contains a + * node or a pointer to node that holds the firmware. Technically, we should + * be fetching the firmware node for the current Fman, but we don't have that + * information any more, so we assume that there is only one firmware node in + * the device tree, and that all Fmen use the same firmware. + * + * If we have an older U-Boot, then we assume that the firmware is located in + * flash at physical address 'P4080_UCAddr' + */ +static const struct qe_firmware *FindFmanMicrocode(void) +{ + static const struct qe_firmware *P4080_UCPatch; + struct device_node *np; +#ifdef FMAN_READ_MICROCODE_FROM_NOR_FLASH + unsigned long P4080_UCSize; + const struct qe_header *hdr; +#endif + + if (P4080_UCPatch) + return P4080_UCPatch; + + /* The firmware should be inside the device tree. */ + np = of_find_compatible_node(NULL, NULL, "fsl,fman-firmware"); + if (np) { + P4080_UCPatch = of_get_property(np, "fsl,firmware", NULL); + of_node_put(np); + if (P4080_UCPatch) + return P4080_UCPatch; + else + REPORT_ERROR(WARNING, E_NOT_FOUND, ("firmware node is incomplete")); + } + +#ifdef FMAN_READ_MICROCODE_FROM_NOR_FLASH + /* If not, then we have a legacy U-Boot. The firmware is in flash. */ + /* Only map enough to the get the core structure */ + P4080_UCPatch = ioremap(P4080_UCAddr, sizeof(struct qe_firmware)); + if (!P4080_UCPatch) { + REPORT_ERROR(MAJOR, E_NULL_POINTER, ("ioremap(%llx) returned NULL", (u64) P4080_UCAddr)); + return NULL; + } + /* Make sure it really is a QE Firmware blob */ + hdr = &P4080_UCPatch->header; + if (!hdr || + (hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') || + (hdr->magic[2] != 'F')) { + REPORT_ERROR(MAJOR, E_NOT_FOUND, ("data at %llx is not a Fman microcode", (u64) P4080_UCAddr)); + return NULL; + } + + /* Now we call ioremap again, this time to pick up the whole blob. We never + * iounmap() the memory because we might reset the Fman at any time. + */ + /* TODO: ionumap() should be performed when unloading the driver */ + P4080_UCSize = sizeof(u32) * P4080_UCPatch->microcode[0].count; + iounmap((void *)P4080_UCPatch); + P4080_UCPatch = ioremap(P4080_UCAddr, P4080_UCSize); + if (!P4080_UCPatch) { + REPORT_ERROR(MAJOR, E_NULL_POINTER, ("ioremap(%llx) returned NULL", (u64) P4080_UCAddr)); + return NULL; + } +#else + /* Returning NULL here forces the reuse of the IRAM content */ + P4080_UCPatch = NULL; +#endif /* FMAN_READ_MICROCODE_FROM_NOR_FLASH */ + return P4080_UCPatch; +} + +static t_LnxWrpFmDev * ReadFmDevTreeNode (struct platform_device *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device_node *fm_node, *dev_node, *dpa_node; + struct of_device_id name; + struct resource res; + const uint32_t *uint32_prop; + int _errno=0, lenp; + static struct of_device_id dpa_eth_node_of_match[] = { + { .compatible = "fsl,dpa-ethernet", }, + { /* end of list */ }, + }; + + fm_node = of_node_get(of_dev->dev.of_node); + + uint32_prop = (uint32_t *)of_get_property(fm_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) failed", fm_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + if (*uint32_prop > INTG_MAX_NUM_OF_FM) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + return NULL; + } + p_LnxWrpFmDev = CreateFmDev(*uint32_prop); + if (!p_LnxWrpFmDev) { + REPORT_ERROR(MAJOR, E_NULL_POINTER, NO_MSG); + return NULL; + } + p_LnxWrpFmDev->dev = &of_dev->dev; + p_LnxWrpFmDev->id = *uint32_prop; + + /* Get the FM interrupt */ + p_LnxWrpFmDev->irq = of_irq_to_resource(fm_node, 0, NULL); + if (unlikely(p_LnxWrpFmDev->irq == /*NO_IRQ*/0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_irq_to_resource() = %d", NO_IRQ)); + return NULL; + } + + /* Get the FM error interrupt */ + p_LnxWrpFmDev->err_irq = of_irq_to_resource(fm_node, 1, NULL); + /* TODO - un-comment it once there will be err_irq in the DTS */ +#if 0 + if (unlikely(p_LnxWrpFmDev->err_irq == /*NO_IRQ*/0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_irq_to_resource() = %d", NO_IRQ)); + return NULL; + } +#endif /* 0 */ + + /* Get the FM address */ + _errno = of_address_to_resource(fm_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev->fmBaseAddr = 0; + p_LnxWrpFmDev->fmPhysBaseAddr = res.start; + p_LnxWrpFmDev->fmMemSize = res.end + 1 - res.start; + + uint32_prop = (uint32_t *)of_get_property(fm_node, "clock-frequency", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, clock-frequency) failed", fm_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmDev->fmDevSettings.param.fmClkFreq = (*uint32_prop + 500000)/1000000; /* In MHz, rounded */ + + /* Get the MURAM base address and size */ + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("muram") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "muram"); + if (WARN_ON(strlen("fsl,fman-muram") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-muram"); + for_each_child_of_node(fm_node, dev_node) { + if (likely(of_match_node(&name, dev_node) != NULL)) { + _errno = of_address_to_resource(dev_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev->fmMuramBaseAddr = 0; + p_LnxWrpFmDev->fmMuramPhysBaseAddr = res.start; + p_LnxWrpFmDev->fmMuramMemSize = res.end + 1 - res.start; + } + } + + /* Get the RTC base address and size */ + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("rtc") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "rtc"); + if (WARN_ON(strlen("fsl,fman-rtc") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-rtc"); + for_each_child_of_node(fm_node, dev_node) { + if (likely(of_match_node(&name, dev_node) != NULL)) { + _errno = of_address_to_resource(dev_node, 0, &res); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + return NULL; + } + + p_LnxWrpFmDev->fmRtcBaseAddr = 0; + p_LnxWrpFmDev->fmRtcPhysBaseAddr = res.start; + p_LnxWrpFmDev->fmRtcMemSize = res.end + 1 - res.start; + } + } + + /* Get all PCD nodes */ + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("parser") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "parser"); + if (WARN_ON(strlen("fsl,fman-parser") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-parser"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->prsActive = TRUE; + + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("keygen") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "keygen"); + if (WARN_ON(strlen("fsl,fman-keygen") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-keygen"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->kgActive = TRUE; + + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("cc") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "cc"); + if (WARN_ON(strlen("fsl,fman-cc") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-cc"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->ccActive = TRUE; + + memset(&name, 0, sizeof(struct of_device_id)); + if (WARN_ON(strlen("policer") >= sizeof(name.name))) + return NULL; + strcpy(name.name, "policer"); + if (WARN_ON(strlen("fsl,fman-policer") >= sizeof(name.compatible))) + return NULL; + strcpy(name.compatible, "fsl,fman-policer"); + for_each_child_of_node(fm_node, dev_node) + if (likely(of_match_node(&name, dev_node) != NULL)) + p_LnxWrpFmDev->plcrActive = TRUE; + + if (p_LnxWrpFmDev->prsActive || p_LnxWrpFmDev->kgActive || + p_LnxWrpFmDev->ccActive || p_LnxWrpFmDev->plcrActive) + p_LnxWrpFmDev->pcdActive = TRUE; + + if (p_LnxWrpFmDev->pcdActive) + { + const char *str_prop = (char *)of_get_property(fm_node, "fsl,default-pcd", &lenp); + if (str_prop) { + if (strncmp(str_prop, "3-tuple", strlen("3-tuple")) == 0) + p_LnxWrpFmDev->defPcd = e_FM_PCD_3_TUPLE; + } + else + p_LnxWrpFmDev->defPcd = e_NO_PCD; + } + + of_node_put(fm_node); + + for_each_matching_node(dpa_node, dpa_eth_node_of_match) { + struct device_node *mac_node; + const phandle *phandle_prop; + + phandle_prop = (typeof(phandle_prop))of_get_property(dpa_node, "fsl,fman-mac", &lenp); + if (phandle_prop == NULL) + continue; + + if (WARN_ON(lenp != sizeof(phandle))) + return NULL; + + mac_node = of_find_node_by_phandle(*phandle_prop); + if (unlikely(mac_node == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_find_node_by_phandle() failed")); + return NULL; + } + + fm_node = of_get_parent(mac_node); + of_node_put(mac_node); + if (unlikely(fm_node == NULL)) { + REPORT_ERROR(MAJOR, E_NO_DEVICE, ("of_get_parent() = %d", _errno)); + return NULL; + } + + uint32_prop = (uint32_t *)of_get_property(fm_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + of_node_put(fm_node); + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) failed", fm_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + of_node_put(fm_node); + + if (*uint32_prop == p_LnxWrpFmDev->id) { + phandle_prop = (typeof(phandle_prop))of_get_property(dpa_node, "fsl,qman-channel", &lenp); + if (unlikely(phandle_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, fsl,qman-channel) failed", dpa_node->full_name)); + return NULL; + } + if (WARN_ON(lenp != sizeof(phandle))) + return NULL; + + dev_node = of_find_node_by_phandle(*phandle_prop); + if (unlikely(dev_node == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_find_node_by_phandle() failed")); + return NULL; + } + + uint32_prop = (typeof(uint32_prop))of_get_property(dev_node, "fsl,qman-channel-id", &lenp); + if (unlikely(uint32_prop == NULL)) { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, fsl,qman-channel-id) failed", dev_node->full_name)); + of_node_put(dev_node); + return NULL; + } + of_node_put(dev_node); + if (WARN_ON(lenp != sizeof(uint32_t))) + return NULL; + p_LnxWrpFmDev->hcCh = *uint32_prop; + break; + } + } + + p_LnxWrpFmDev->active = TRUE; + + return p_LnxWrpFmDev; +} + +static void LnxwrpFmDevExceptionsCb(t_Handle h_App, e_FmExceptions exception) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + DBG(INFO, ("got fm exception %d", exception)); + + /* do nothing */ + UNUSED(exception); +} + +static void LnxwrpFmDevBusErrorCb(t_Handle h_App, + e_FmPortType portType, + uint8_t portId, + uint64_t addr, + uint8_t tnum, + uint16_t liodn) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev *)h_App; + + ASSERT_COND(p_LnxWrpFmDev); + + /* do nothing */ + UNUSED(portType);UNUSED(portId);UNUSED(addr);UNUSED(tnum);UNUSED(liodn); +} + +static t_Error ConfigureFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + struct resource *dev_res; + int _errno; + + if (!p_LnxWrpFmDev->active) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM not configured!!!")); + +#ifndef MODULE + _errno = can_request_irq(p_LnxWrpFmDev->irq, 0); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("can_request_irq() = %d", _errno)); +#endif + _errno = devm_request_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->irq, fm_irq, 0, "fman", p_LnxWrpFmDev); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("request_irq(%d) = %d", p_LnxWrpFmDev->irq, _errno)); + + if (p_LnxWrpFmDev->err_irq != 0) { +#ifndef MODULE + _errno = can_request_irq(p_LnxWrpFmDev->err_irq, 0); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("can_request_irq() = %d", _errno)); +#endif + _errno = devm_request_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->err_irq, fm_err_irq, IRQF_SHARED, "fman-err", p_LnxWrpFmDev); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("request_irq(%d) = %d", p_LnxWrpFmDev->err_irq, _errno)); + } + + p_LnxWrpFmDev->res = devm_request_mem_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize, "fman"); + if (unlikely(p_LnxWrpFmDev->res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("request_mem_region() failed")); + + p_LnxWrpFmDev->fmBaseAddr = PTR_TO_UINT(devm_ioremap(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize)); + if (unlikely(p_LnxWrpFmDev->fmBaseAddr == 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("devm_ioremap() failed")); + + if (SYS_RegisterIoMap((uint64_t)p_LnxWrpFmDev->fmBaseAddr, (uint64_t)p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM memory map")); + + dev_res = __devm_request_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize, "fman-muram"); + if (unlikely(dev_res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("__devm_request_region() failed")); + + p_LnxWrpFmDev->fmMuramBaseAddr = PTR_TO_UINT(devm_ioremap(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize)); + if (unlikely(p_LnxWrpFmDev->fmMuramBaseAddr == 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("devm_ioremap() failed")); + + if (SYS_RegisterIoMap((uint64_t)p_LnxWrpFmDev->fmMuramBaseAddr, (uint64_t)p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM MURAM memory map")); + + if (p_LnxWrpFmDev->fmRtcPhysBaseAddr) + { + dev_res = __devm_request_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize, "fman-rtc"); + if (unlikely(dev_res == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("__devm_request_region() failed")); + + p_LnxWrpFmDev->fmRtcBaseAddr = PTR_TO_UINT(devm_ioremap(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize)); + if (unlikely(p_LnxWrpFmDev->fmRtcBaseAddr == 0)) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("devm_ioremap() failed")); + + if (SYS_RegisterIoMap((uint64_t)p_LnxWrpFmDev->fmRtcBaseAddr, (uint64_t)p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-RTC memory map")); + } + + p_LnxWrpFmDev->fmDevSettings.param.baseAddr = p_LnxWrpFmDev->fmBaseAddr; + p_LnxWrpFmDev->fmDevSettings.param.fmId = p_LnxWrpFmDev->id; + p_LnxWrpFmDev->fmDevSettings.param.irq = NO_IRQ; + p_LnxWrpFmDev->fmDevSettings.param.errIrq = NO_IRQ; + p_LnxWrpFmDev->fmDevSettings.param.f_Exception = LnxwrpFmDevExceptionsCb; + p_LnxWrpFmDev->fmDevSettings.param.f_BusError = LnxwrpFmDevBusErrorCb; + p_LnxWrpFmDev->fmDevSettings.param.h_App = p_LnxWrpFmDev; + + return FillRestFmInfo(p_LnxWrpFmDev); +} + +static t_Error InitFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + const struct qe_firmware *fw; + + if (!p_LnxWrpFmDev->active) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM not configured!!!")); + + if ((p_LnxWrpFmDev->h_MuramDev = FM_MURAM_ConfigAndInit(p_LnxWrpFmDev->fmMuramBaseAddr, p_LnxWrpFmDev->fmMuramMemSize)) == NULL) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-MURAM!")); + + /* Loading the fman-controller code */ + fw = FindFmanMicrocode(); + + if (!fw) { +#ifdef FMAN_READ_MICROCODE_FROM_NOR_FLASH + /* We already reported an error, so just return NULL*/ + return ERROR_CODE(E_NULL_POINTER); +#else + /* this forces the reuse of the current IRAM content */ + p_LnxWrpFmDev->fmDevSettings.param.firmware.size = 0; + p_LnxWrpFmDev->fmDevSettings.param.firmware.p_Code = NULL; +#endif + } else { + p_LnxWrpFmDev->fmDevSettings.param.firmware.p_Code = + (void *) fw + fw->microcode[0].code_offset; + p_LnxWrpFmDev->fmDevSettings.param.firmware.size = + sizeof(u32) * fw->microcode[0].count; + DBG(INFO, ("Loading fman-controller code version %d.%d.%d", + fw->microcode[0].major, + fw->microcode[0].minor, + fw->microcode[0].revision)); + } + + p_LnxWrpFmDev->fmDevSettings.param.h_FmMuram = p_LnxWrpFmDev->h_MuramDev; + + if ((p_LnxWrpFmDev->h_Dev = FM_Config(&p_LnxWrpFmDev->fmDevSettings.param)) == NULL) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM")); + + if (FM_ConfigMaxNumOfOpenDmas(p_LnxWrpFmDev->h_Dev,BMI_MAX_NUM_OF_DMAS) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); + + if (FM_ConfigResetOnInit(p_LnxWrpFmDev->h_Dev, TRUE) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); + +#ifdef CONFIG_FMAN_P1023 + if (FM_ConfigDmaAidOverride(p_LnxWrpFmDev->h_Dev, TRUE) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); +#endif + + /* Use the entire amount of TNUMS, maybe performance will improve... + for OPEN DMAs - are all by default = 32 and fifosize = MURAM*3/4 and + the rest of it is for PCD */ + FM_ConfigTotalNumOfTasks(p_LnxWrpFmDev->h_Dev, BMI_MAX_NUM_OF_TASKS); + +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) && defined(CONFIG_FMAN_P3040_P4080_P5020) + /* Enable 14g w/ jumbo frames following HW suggestion. */ + FM_ConfigTotalFifoSize(p_LnxWrpFmDev->h_Dev, 128*KILOBYTE); +#endif + + if (FM_Init(p_LnxWrpFmDev->h_Dev) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM")); + + if (p_LnxWrpFmDev->err_irq == 0) { + FM_SetException(p_LnxWrpFmDev->h_Dev, e_FM_EX_DMA_BUS_ERROR,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_DMA_READ_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_DMA_SYSTEM_WRITE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_DMA_FM_WRITE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_FPM_STALL_ON_TASKS , FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_FPM_DOUBLE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_IRAM_ECC,FALSE); + /* TODO: FmDisableRamsEcc assert for ramsEccOwners. + * FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_MURAM_ECC,FALSE);*/ + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_QMI_DOUBLE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_BMI_LIST_RAM_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_BMI_PIPELINE_ECC,FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_BMI_STATISTICS_RAM_ECC, FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_FPM_SINGLE_ECC, FALSE); + FM_SetException(p_LnxWrpFmDev->h_Dev,e_FM_EX_QMI_SINGLE_ECC, FALSE); + } + + if (p_LnxWrpFmDev->fmRtcBaseAddr) + { + t_FmRtcParams fmRtcParam; + + memset(&fmRtcParam, 0, sizeof(fmRtcParam)); + fmRtcParam.h_App = p_LnxWrpFmDev; + fmRtcParam.h_Fm = p_LnxWrpFmDev->h_Dev; + fmRtcParam.baseAddress = p_LnxWrpFmDev->fmRtcBaseAddr; + + if(!(p_LnxWrpFmDev->h_RtcDev = FM_RTC_Config(&fmRtcParam))) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("FM-RTC")); + + if (FM_RTC_ConfigPeriod(p_LnxWrpFmDev->h_RtcDev, 10) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-RTC")); + + if (FM_RTC_Init(p_LnxWrpFmDev->h_RtcDev) != E_OK) + RETURN_ERROR(MAJOR, E_INVALID_STATE, ("FM-RTC")); + } + + return E_OK; +} + +/* TODO: to be moved back here */ +extern void FreeFmPcdDev(t_LnxWrpFmDev *p_LnxWrpFmDev); + +static void FreeFmDev(t_LnxWrpFmDev *p_LnxWrpFmDev) +{ + if (!p_LnxWrpFmDev->active) + return; + + FreeFmPcdDev(p_LnxWrpFmDev); + + if (p_LnxWrpFmDev->h_RtcDev) + FM_RTC_Free(p_LnxWrpFmDev->h_RtcDev); + + if (p_LnxWrpFmDev->h_Dev) + FM_Free(p_LnxWrpFmDev->h_Dev); + + if (p_LnxWrpFmDev->h_MuramDev) + FM_MURAM_Free(p_LnxWrpFmDev->h_MuramDev); + + if (p_LnxWrpFmDev->fmRtcBaseAddr) + { + SYS_UnregisterIoMap(p_LnxWrpFmDev->fmRtcBaseAddr); + devm_iounmap(p_LnxWrpFmDev->dev, UINT_TO_PTR(p_LnxWrpFmDev->fmRtcBaseAddr)); + __devm_release_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmRtcPhysBaseAddr, p_LnxWrpFmDev->fmRtcMemSize); + } + SYS_UnregisterIoMap(p_LnxWrpFmDev->fmMuramBaseAddr); + devm_iounmap(p_LnxWrpFmDev->dev, UINT_TO_PTR(p_LnxWrpFmDev->fmMuramBaseAddr)); + __devm_release_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->res, p_LnxWrpFmDev->fmMuramPhysBaseAddr, p_LnxWrpFmDev->fmMuramMemSize); + SYS_UnregisterIoMap(p_LnxWrpFmDev->fmBaseAddr); + devm_iounmap(p_LnxWrpFmDev->dev, UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr)); + devm_release_mem_region(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->fmPhysBaseAddr, p_LnxWrpFmDev->fmMemSize); + if (p_LnxWrpFmDev->err_irq != 0) { + devm_free_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->err_irq, p_LnxWrpFmDev); + } + + devm_free_irq(p_LnxWrpFmDev->dev, p_LnxWrpFmDev->irq, p_LnxWrpFmDev); +} + +/* FMan character device file operations */ +extern struct file_operations fm_fops; + +static int fm_probe(struct platform_device *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + + if ((p_LnxWrpFmDev = ReadFmDevTreeNode(of_dev)) == NULL) + return -EIO; + if (ConfigureFmDev(p_LnxWrpFmDev) != E_OK) + return -EIO; + if (InitFmDev(p_LnxWrpFmDev) != E_OK) + return -EIO; + + Sprint (p_LnxWrpFmDev->name, "%s%d", DEV_FM_NAME, p_LnxWrpFmDev->id); + + /* Register to the /dev for IOCTL API */ + /* Register dynamically a new major number for the character device: */ + if ((p_LnxWrpFmDev->major = register_chrdev(0, p_LnxWrpFmDev->name, &fm_fops)) <= 0) { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Failed to allocate a major number for device \"%s\"", p_LnxWrpFmDev->name)); + return -EIO; + } + + /* Creating classes for FM */ + DBG(TRACE ,("class_create fm_class")); + p_LnxWrpFmDev->fm_class = class_create(THIS_MODULE, p_LnxWrpFmDev->name); + if (IS_ERR(p_LnxWrpFmDev->fm_class)) { + unregister_chrdev(p_LnxWrpFmDev->major, p_LnxWrpFmDev->name); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("class_create error fm_class")); + return -EIO; + } + + device_create(p_LnxWrpFmDev->fm_class, NULL, MKDEV(p_LnxWrpFmDev->major, DEV_FM_MINOR_BASE), NULL, + "fm%d", p_LnxWrpFmDev->id); + device_create(p_LnxWrpFmDev->fm_class, NULL, MKDEV(p_LnxWrpFmDev->major, DEV_FM_PCD_MINOR_BASE), NULL, + "fm%d-pcd", p_LnxWrpFmDev->id); + dev_set_drvdata(p_LnxWrpFmDev->dev, p_LnxWrpFmDev); + + /* create sysfs entries for stats and regs */ + if ( fm_sysfs_create(p_LnxWrpFmDev->dev) !=0 ) + { + FreeFmDev(p_LnxWrpFmDev); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Unable to create sysfs entry - fm!!!")); + return -EIO; + } + + DBG(TRACE, ("FM%d probed", p_LnxWrpFmDev->id)); + +#if defined(CONFIG_FMAN_RESOURCE_ALLOCATION_ALGORITHM) + /* Precalculate resources for FMAN based on number of + * FMan ports available + */ + if(fm_set_active_fman_ports(of_dev, p_LnxWrpFmDev)!= 0) + return -EIO; + +#if defined(CONFIG_FMAN_P3040_P4080_P5020) + /* 128K MURAM for p3,p4 and p5 */ + if(fm_precalculate_fifosizes( + p_LnxWrpFmDev, + 128*KILOBYTE) + != 0) + return -EIO; +#else + /* for all other platforms: MURAM Space for fifosize=3/4 * MURAM_SIZE*/ + if(fm_precalculate_fifosizes( + p_LnxWrpFmDev, + CEIL_DIV((3*FM_MURAM_SIZE-1),4)) + != 0) + return -EIO; +#endif + if(fm_precalculate_open_dma( + p_LnxWrpFmDev, + BMI_MAX_NUM_OF_DMAS, /* max open dmas:dpaa_integration_ext.h */ + FM_DEFAULT_TX10G_OPENDMA, /* default TX 10g open dmas */ + FM_DEFAULT_RX10G_OPENDMA, /* default RX 10g open dmas */ + FM_10G_OPENDMA_MIN_TRESHOLD,/* TX 10g minimum treshold */ + FM_10G_OPENDMA_MIN_TRESHOLD)/* RX 10g minimum treshold */ + != 0) + return -EIO; + if(fm_precalculate_tnums( + p_LnxWrpFmDev, + BMI_MAX_NUM_OF_TASKS) /* max TNUMS: dpa integration file. */ + != 0) + return -EIO; +#endif + + return 0; +} + +static int fm_remove(struct platform_device *of_dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev; + struct device *dev; + + dev = &of_dev->dev; + p_LnxWrpFmDev = dev_get_drvdata(dev); + + fm_sysfs_destroy(dev); + + DBG(TRACE, ("destroy fm_class")); + device_destroy(p_LnxWrpFmDev->fm_class, MKDEV(p_LnxWrpFmDev->major, DEV_FM_MINOR_BASE)); + device_destroy(p_LnxWrpFmDev->fm_class, MKDEV(p_LnxWrpFmDev->major, DEV_FM_PCD_MINOR_BASE)); + class_destroy(p_LnxWrpFmDev->fm_class); + + /* Destroy chardev */ + unregister_chrdev(p_LnxWrpFmDev->major, p_LnxWrpFmDev->name); + + FreeFmDev(p_LnxWrpFmDev); + + DestroyFmDev(p_LnxWrpFmDev); + + dev_set_drvdata(dev, NULL); + + return 0; +} + +static const struct of_device_id fm_match[] = { + { + .compatible = "fsl,fman" + }, + {} +}; +#ifndef MODULE +MODULE_DEVICE_TABLE(of, fm_match); +#endif /* !MODULE */ + +static struct platform_driver fm_driver = { + .driver = { + .name = "fsl-fman", + .of_match_table = fm_match, + .owner = THIS_MODULE, + }, + .probe = fm_probe, + .remove = fm_remove +}; + +t_Handle LNXWRP_FM_Init(void) +{ + memset(&lnxWrpFm, 0, sizeof(lnxWrpFm)); + mutex_init(&lnxwrp_mutex); + + /* Register to the DTB for basic FM API */ + platform_driver_register(&fm_driver); + + return &lnxWrpFm; +} + +t_Error LNXWRP_FM_Free(t_Handle h_LnxWrpFm) +{ + platform_driver_unregister(&fm_driver); + mutex_destroy(&lnxwrp_mutex); + + return E_OK; +} + + +struct fm * fm_bind(struct device *fm_dev) +{ + return (struct fm *)(dev_get_drvdata(get_device(fm_dev))); +} +EXPORT_SYMBOL(fm_bind); + +void fm_unbind(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + put_device(p_LnxWrpFmDev->dev); +} +EXPORT_SYMBOL(fm_unbind); + +struct resource * fm_get_mem_region(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + return p_LnxWrpFmDev->res; +} +EXPORT_SYMBOL(fm_get_mem_region); + +void * fm_get_handle(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + return (void *)p_LnxWrpFmDev->h_Dev; +} +EXPORT_SYMBOL(fm_get_handle); + +void * fm_get_rtc_handle(struct fm *fm) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = (t_LnxWrpFmDev*)fm; + + return (void *)p_LnxWrpFmDev->h_RtcDev; +} +EXPORT_SYMBOL(fm_get_rtc_handle); + +struct fm_port * fm_port_bind (struct device *fm_port_dev) +{ + return (struct fm_port *)(dev_get_drvdata(get_device(fm_port_dev))); +} +EXPORT_SYMBOL(fm_port_bind); + +void fm_port_unbind(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + put_device(p_LnxWrpFmPortDev->dev); +} +EXPORT_SYMBOL(fm_port_unbind); + +void * fm_port_get_handle(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + return (void *)p_LnxWrpFmPortDev->h_Dev; +} +EXPORT_SYMBOL(fm_port_get_handle); + +void fm_port_get_base_addr(const struct fm_port *port, uint64_t *base_addr) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *)port; + + *base_addr = p_LnxWrpFmPortDev->settings.param.baseAddr; +} +EXPORT_SYMBOL(fm_port_get_base_addr); + +void fm_port_pcd_bind (struct fm_port *port, struct fm_port_pcd_param *params) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + p_LnxWrpFmPortDev->pcd_owner_params.cba = params->cba; + p_LnxWrpFmPortDev->pcd_owner_params.cbf = params->cbf; + p_LnxWrpFmPortDev->pcd_owner_params.dev = params->dev; +} +EXPORT_SYMBOL(fm_port_pcd_bind); + +int fm_get_tx_port_channel(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + return p_LnxWrpFmPortDev->txCh; +} +EXPORT_SYMBOL(fm_get_tx_port_channel); + +int fm_port_enable (struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + FM_PORT_Enable(p_LnxWrpFmPortDev->h_Dev); + + return 0; +} +EXPORT_SYMBOL(fm_port_enable); + +void fm_port_disable(struct fm_port *port) +{ + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev*)port; + + FM_PORT_Disable(p_LnxWrpFmPortDev->h_Dev); +} +EXPORT_SYMBOL(fm_port_disable); + +void fm_mutex_lock(void) +{ + mutex_lock(&lnxwrp_mutex); +} +EXPORT_SYMBOL(fm_mutex_lock); + +void fm_mutex_unlock(void) +{ + mutex_unlock(&lnxwrp_mutex); +} +EXPORT_SYMBOL(fm_mutex_unlock); + +static t_Handle h_FmLnxWrp; + +static int __init __cold fm_load (void) +{ + if ((h_FmLnxWrp = LNXWRP_FM_Init()) == NULL) + { + printk("Failed to init FM wrapper!\n"); + return -ENODEV; + } + + printk (KERN_INFO "Freescale FM module ("__DATE__ ":"__TIME__")\n"); + + return 0; +} + +static void __exit __cold fm_unload (void) +{ + if (h_FmLnxWrp) + LNXWRP_FM_Free(h_FmLnxWrp); +} + +module_init (fm_load); +module_exit (fm_unload); --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_sysfs_fm.h + + @Description FM sysfs functions. + +*/ + +#ifndef LNXWRP_SYSFS_FM_H_ +#define LNXWRP_SYSFS_FM_H_ + +#include "lnxwrp_sysfs.h" + +int fm_sysfs_create(struct device *dev); +void fm_sysfs_destroy(struct device *dev); + +#endif /* LNXWRP_SYSFS_FM_H_ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_ioctls_fm_compat.c @@ -0,0 +1,789 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_fm_compat_ioctls.c + + @Description FM PCD compat functions + +*/ + +#if !defined(CONFIG_COMPAT) +#error "missing COMPAT layer..." +#endif + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "part_ext.h" +#include "fm_ioctls.h" +#include "fm_pcd_ioctls.h" +#include "fm_port_ioctls.h" +#include "lnxwrp_ioctls_fm_compat.h" + +/* debug dump */ +#if 0 +static void hex_dump(void * p_addr, unsigned int size) +{ + int i; + + for(i=0; i ", p);*/ + + if(!p) + return 0; + + for(k=1; k < COMPAT_PTR2ID_ARRAY_MAX; k++) + if(compat_ptr2id_array[k] == NULL) + { + compat_ptr2id_array[k] = p; + /*printk("0x%08x\n", k | COMPAT_PTR2ID_WATERMARK);*/ + return k | COMPAT_PTR2ID_WATERMARK; + } + + return 0; +} + +compat_uptr_t compat_get_ptr2id(void *p) +{ + compat_uptr_t k; + + /*printk("\ncompat_get_ptr2id(%p) -> ", p);*/ + + for(k=1; k < COMPAT_PTR2ID_ARRAY_MAX; k++) + if(compat_ptr2id_array[k] == p) { + /*printk("0x%08x\n", k | COMPAT_PTR2ID_WATERMARK);*/ + return k | COMPAT_PTR2ID_WATERMARK; + } + + return 0; +} + +void *compat_get_id2ptr(compat_uptr_t comp) +{ + + /*printk("\ncompat_get_id2ptr(0x%08x) -> ", comp);*/ + + if((COMPAT_PTR2ID_WM_MASK & comp) != COMPAT_PTR2ID_WATERMARK) { + /*printk("Error, invalid watermark!\n\n"); + dump_stack();*/ + return compat_ptr(comp); + } + + comp &= ~COMPAT_PTR2ID_WM_MASK; + + if((0 < comp) && (comp < COMPAT_PTR2ID_ARRAY_MAX) && (compat_ptr2id_array[comp] != NULL)) { + /*printk("%p\n", compat_ptr2id_array[comp]);*/ + return compat_ptr2id_array[comp]; + } + return NULL; +} +/* } maping kernel pointers w/ UserSpace id's */ + +static inline void compat_copy_fm_pcd_plcr_next_engine( + ioc_compat_fm_pcd_plcr_next_engine_params_u *compat_param, + ioc_fm_pcd_plcr_next_engine_params_u *param, + ioc_fm_pcd_engine next_engine, + uint8_t compat) +{ + switch (next_engine) + { + case e_IOC_FM_PCD_PLCR: + if (compat) + param->p_profile = compat_ptr(compat_param->p_profile); + else + compat_param->p_profile = ptr_to_compat(param->p_profile); + break; + + case e_IOC_FM_PCD_KG: + if (compat) + param->p_direct_scheme = compat_ptr(compat_param->p_direct_scheme); + else + compat_param->p_direct_scheme = ptr_to_compat(param->p_direct_scheme); + break; + + default: + if (compat) + param->action = compat_param->action; + else + compat_param->action = param->action; + } +} + +void compat_copy_fm_pcd_plcr_profile( + ioc_compat_fm_pcd_plcr_profile_params_t *compat_param, + ioc_fm_pcd_plcr_profile_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->modify = compat_param->modify; + + /* profile_select */ + if (!compat_param->modify) + { + param->profile_select.new_params.profile_type = + compat_param->profile_select.new_params.profile_type; + param->profile_select.new_params.p_port = + compat_ptr(compat_param->profile_select.new_params.p_port); + param->profile_select.new_params.relative_profile_id = + compat_param->profile_select.new_params.relative_profile_id; + } + else + param->profile_select.p_profile = + compat_ptr(compat_param->profile_select.p_profile); + + param->alg_selection = compat_param->alg_selection; + param->color_mode = compat_param->color_mode; + + /* both parameters in the union has the same size, so memcpy works */ + memcpy(¶m->color, &compat_param->color, sizeof(param->color)); + + memcpy(¶m->non_passthrough_alg_param, &compat_param->non_passthrough_alg_param, sizeof(ioc_fm_pcd_plcr_non_passthrough_alg_param_t)); + + param->next_engine_on_green = compat_param->next_engine_on_green; + param->next_engine_on_yellow = compat_param->next_engine_on_yellow; + param->next_engine_on_red = compat_param->next_engine_on_red; + + param->trap_profile_on_flow_A = compat_param->trap_profile_on_flow_A; + param->trap_profile_on_flow_B = compat_param->trap_profile_on_flow_B; + param->trap_profile_on_flow_C = compat_param->trap_profile_on_flow_C; + + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->modify = param->modify; + + /* profile_select */ + if(!param->modify){ + compat_param->profile_select.new_params.profile_type = + param->profile_select.new_params.profile_type; + compat_param->profile_select.new_params.p_port = + ptr_to_compat(param->profile_select.new_params.p_port); + compat_param->profile_select.new_params.relative_profile_id = + param->profile_select.new_params.relative_profile_id; + } + else + compat_param->profile_select.p_profile = + ptr_to_compat(param->profile_select.p_profile); + + compat_param->alg_selection = param->alg_selection; + compat_param->color_mode = param->color_mode; + + /* both parameters in the union has the same size, so memcpy works */ + memcpy(&compat_param->color, ¶m->color, sizeof(compat_param->color)); + + memcpy(&compat_param->non_passthrough_alg_param, ¶m->non_passthrough_alg_param, sizeof(ioc_fm_pcd_plcr_non_passthrough_alg_param_t)); + + compat_param->next_engine_on_green = param->next_engine_on_green; + compat_param->next_engine_on_yellow = param->next_engine_on_yellow; + compat_param->next_engine_on_red = param->next_engine_on_red; + + compat_param->trap_profile_on_flow_A = param->trap_profile_on_flow_A; + compat_param->trap_profile_on_flow_B = param->trap_profile_on_flow_B; + compat_param->trap_profile_on_flow_C = param->trap_profile_on_flow_C; + + compat_param->id = ptr_to_compat(param->id); + } + + compat_copy_fm_pcd_plcr_next_engine(&compat_param->params_on_green, + ¶m->params_on_green, param->next_engine_on_green, compat); + + compat_copy_fm_pcd_plcr_next_engine(&compat_param->params_on_yellow, + ¶m->params_on_yellow, param->next_engine_on_yellow, compat); + + compat_copy_fm_pcd_plcr_next_engine(&compat_param->params_on_red, + ¶m->params_on_red, param->next_engine_on_red, compat); +} + +static inline void compat_copy_fm_pcd_cc_next_kg( + ioc_compat_fm_pcd_cc_next_kg_params_t *compat_param, + ioc_fm_pcd_cc_next_kg_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->new_fqid = compat_param->new_fqid; + param->override_fqid = compat_param->override_fqid; + param->p_direct_scheme = compat_ptr(compat_param->p_direct_scheme); + } + else + { + compat_param->new_fqid = param->new_fqid; + compat_param->override_fqid = param->override_fqid; + compat_param->p_direct_scheme = ptr_to_compat(param->p_direct_scheme); + } +} + +static inline void compat_copy_fm_pcd_cc_next_cc( + ioc_compat_fm_pcd_cc_next_cc_params_t *compat_param, + ioc_fm_pcd_cc_next_cc_params_t *param, + uint8_t compat) +{ + if (compat) + param->cc_node_id = compat_get_id2ptr(compat_param->cc_node_id); + else + compat_param->cc_node_id = compat_get_ptr2id(param->cc_node_id); +} + +static inline void compat_copy_fm_pcd_cc_next_engine( + ioc_compat_fm_pcd_cc_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->next_engine = compat_param->next_engine; + + switch (compat_param->next_engine) + { + case e_IOC_FM_PCD_KG: + compat_copy_fm_pcd_cc_next_kg(&compat_param->params.kg_params, ¶m->params.kg_params, compat); + break; + case e_IOC_FM_PCD_CC: + compat_copy_fm_pcd_cc_next_cc(&compat_param->params.cc_params, ¶m->params.cc_params, compat); + break; + default: + memcpy(¶m->params, &compat_param->params, sizeof(param->params)); + break; + } +#ifdef FM_PCD_CC_MANIP + param->p_manip = compat_ptr(compat_param->p_manip); +#endif + } + else + { + compat_param->next_engine = param->next_engine; + + switch (compat_param->next_engine) + { + case e_IOC_FM_PCD_KG: + compat_copy_fm_pcd_cc_next_kg(&compat_param->params.kg_params, ¶m->params.kg_params, compat); + break; + case e_IOC_FM_PCD_CC: + compat_copy_fm_pcd_cc_next_cc(&compat_param->params.cc_params, ¶m->params.cc_params, compat); + break; + default: + memcpy(&compat_param->params, ¶m->params, sizeof(compat_param->params)); + break; + } + +#ifdef FM_PCD_CC_MANIP + compat_param->p_manip = ptr_to_compat(param->p_manip); +#endif + } +} + +void compat_copy_fm_pcd_cc_key( + ioc_compat_fm_pcd_cc_key_params_t *compat_param, + ioc_fm_pcd_cc_key_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->p_key = compat_ptr(compat_param->p_key); + param->p_mask = compat_ptr(compat_param->p_mask); + } + else + { + compat_param->p_key = ptr_to_compat(param->p_key); + compat_param->p_mask = ptr_to_compat(param->p_mask); + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params, + ¶m->cc_next_engine_params, + compat); +} + +void compat_copy_fm_pcd_cc_node_modify_key_and_next_engine( + ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + param->key_size = compat_param->key_indx; + compat_copy_fm_pcd_cc_key( + &compat_param->key_params, + ¶m->key_params, + compat); + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->key_indx = param->key_indx; + compat_param->key_size = param->key_indx; + compat_copy_fm_pcd_cc_key( + &compat_param->key_params, + ¶m->key_params, + compat); + } +} + +void compat_copy_fm_pcd_cc_node_modify_next_engine( + ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + param->key_size = compat_param->key_size; + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->key_indx = param->key_indx; + compat_param->key_size = param->key_size; + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params, + ¶m->cc_next_engine_params, + compat); +} + +void compat_fm_pcd_cc_tree_modify_next_engine( + ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t *compat_param, + ioc_fm_pcd_cc_tree_modify_next_engine_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->grp_indx = compat_param->grp_indx; + param->indx = compat_param->indx; + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->grp_indx = param->grp_indx; + compat_param->indx = param->indx; + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params, + ¶m->cc_next_engine_params, + compat); +} + +void compat_copy_fm_pcd_cc_grp( + ioc_compat_fm_pcd_cc_grp_params_t *compat_param, + ioc_fm_pcd_cc_grp_params_t *param, + uint8_t compat) +{ + int k; + + if (compat) + { + param->num_of_distinction_units = compat_param->num_of_distinction_units; + memcpy(param->unit_ids, compat_param->unit_ids, IOC_FM_PCD_MAX_NUM_OF_CC_UNITS); + } + else + { + compat_param->num_of_distinction_units = param->num_of_distinction_units; + memcpy(compat_param->unit_ids, param->unit_ids, IOC_FM_PCD_MAX_NUM_OF_CC_UNITS); + } + + for (k=0; k < IOC_FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP; k++) + compat_copy_fm_pcd_cc_next_engine( + &compat_param->next_engine_per_entries_in_grp[k], + ¶m->next_engine_per_entries_in_grp[k], + compat); +} + +void compat_copy_fm_pcd_cc_tree( + ioc_compat_fm_pcd_cc_tree_params_t *compat_param, + ioc_fm_pcd_cc_tree_params_t *param, + uint8_t compat) +{ + int k; + + if (compat) + { + param->net_env_id = compat_ptr(compat_param->net_env_id); + param->num_of_groups = compat_param->num_of_groups; + + for (k=0; k < IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS; k++) + compat_copy_fm_pcd_cc_grp( + &compat_param->fm_pcd_cc_group_params[k], + ¶m->fm_pcd_cc_group_params[k], + compat); + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->net_env_id = ptr_to_compat(param->net_env_id); + compat_param->num_of_groups = param->num_of_groups; + for (k=0; k < IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS; k++) + compat_copy_fm_pcd_cc_grp( + &compat_param->fm_pcd_cc_group_params[k], + ¶m->fm_pcd_cc_group_params[k], + compat); + compat_param->id = ptr_to_compat(param->id); + } +} + +void compat_fm_pcd_prs_sw( + ioc_compat_fm_pcd_prs_sw_params_t *compat_param, + ioc_fm_pcd_prs_sw_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->override = compat_param->override; + param->size = compat_param->size; + param->base = compat_param->base; + param->p_code = compat_ptr(compat_param->p_code); + memcpy(param->sw_prs_data_params,compat_param->sw_prs_data_params,IOC_FM_PCD_PRS_NUM_OF_HDRS*sizeof(uint32_t)); + param->num_of_labels = compat_param->num_of_labels; + memcpy(param->labels_table,compat_param->labels_table,IOC_FM_PCD_PRS_NUM_OF_LABELS*sizeof(ioc_fm_pcd_prs_label_params_t)); + return; + } + + WARN(1, "\n\nFMD: fatal error, feature not implemented!\n\n"); +} + +void compat_copy_fm_pcd_kg_scheme( + ioc_compat_fm_pcd_kg_scheme_params_t *compat_param, + ioc_fm_pcd_kg_scheme_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->modify = compat_param->modify; + + /* scm_id */ + if(compat_param->modify) + param->scm_id.scheme_id = compat_ptr(compat_param->scm_id.scheme_id); + else + param->scm_id.relative_scheme_id = compat_param->scm_id.relative_scheme_id; + + param->always_direct = compat_param->always_direct; + /* netEnvParams */ + param->netEnvParams.net_env_id = compat_ptr(compat_param->netEnvParams.net_env_id); + param->netEnvParams.num_of_distinction_units = compat_param->netEnvParams.num_of_distinction_units; + memcpy(param->netEnvParams.unit_ids, + compat_param->netEnvParams.unit_ids, + IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + + param->use_hash = compat_param->use_hash; + memcpy(¶m->key_extract_and_hash_params, + &compat_param->key_extract_and_hash_params, + sizeof(ioc_fm_pcd_kg_key_extract_and_hash_params_t)); + param->bypass_fqid_generation = compat_param->bypass_fqid_generation; + param->base_fqid = compat_param->base_fqid; + param->numOfUsedExtractedOrs = compat_param->numOfUsedExtractedOrs; + memcpy(param->extracted_ors, compat_param->extracted_ors, IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS * sizeof(ioc_fm_pcd_kg_extracted_or_params_t)); + param->next_engine = compat_param->next_engine; + + /* kg_next_engine_params */ + if(param->next_engine == e_IOC_FM_PCD_CC){ + param->kg_next_engine_params.cc.tree_id = compat_get_id2ptr(compat_param->kg_next_engine_params.cc.tree_id); + param->kg_next_engine_params.cc.grp_id = compat_param->kg_next_engine_params.cc.grp_id; + param->kg_next_engine_params.cc.plcr_next = compat_param->kg_next_engine_params.cc.plcr_next; + param->kg_next_engine_params.cc.bypass_plcr_profile_generation = compat_param->kg_next_engine_params.cc.bypass_plcr_profile_generation; + memcpy(¶m->kg_next_engine_params.cc.plcr_profile, + &compat_param->kg_next_engine_params.cc.plcr_profile, + sizeof(ioc_fm_pcd_kg_plcr_profile_t)); + } + else + memcpy(¶m->kg_next_engine_params, + &compat_param->kg_next_engine_params, + sizeof(param->kg_next_engine_params)); + + memcpy(¶m->scheme_counter, &compat_param->scheme_counter, sizeof(ioc_fm_pcd_kg_scheme_counter_t)); + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->modify = param->modify; + + /* scm_id */ + if(param->modify) + compat_param->scm_id.scheme_id = ptr_to_compat(param->scm_id.scheme_id); + else + compat_param->scm_id.relative_scheme_id = param->scm_id.relative_scheme_id; + + compat_param->always_direct = param->always_direct; + + /* netEnvParams */ + compat_param->netEnvParams.net_env_id = ptr_to_compat(param->netEnvParams.net_env_id); + compat_param->netEnvParams.num_of_distinction_units = param->netEnvParams.num_of_distinction_units; + memcpy(compat_param->netEnvParams.unit_ids, param->netEnvParams.unit_ids, IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + + compat_param->use_hash = param->use_hash; + memcpy(&compat_param->key_extract_and_hash_params, ¶m->key_extract_and_hash_params, sizeof(ioc_fm_pcd_kg_key_extract_and_hash_params_t)); + compat_param->bypass_fqid_generation = param->bypass_fqid_generation; + compat_param->base_fqid = param->base_fqid; + compat_param->numOfUsedExtractedOrs = param->numOfUsedExtractedOrs; + memcpy(compat_param->extracted_ors, param->extracted_ors, IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS * sizeof(ioc_fm_pcd_kg_extracted_or_params_t)); + compat_param->next_engine = param->next_engine; + + /* kg_next_engine_params */ + if(compat_param->next_engine == e_IOC_FM_PCD_CC){ + compat_param->kg_next_engine_params.cc.tree_id = compat_get_ptr2id(param->kg_next_engine_params.cc.tree_id); + compat_param->kg_next_engine_params.cc.grp_id = param->kg_next_engine_params.cc.grp_id; + compat_param->kg_next_engine_params.cc.plcr_next = param->kg_next_engine_params.cc.plcr_next; + compat_param->kg_next_engine_params.cc.bypass_plcr_profile_generation = param->kg_next_engine_params.cc.bypass_plcr_profile_generation; + memcpy(&compat_param->kg_next_engine_params.cc.plcr_profile, ¶m->kg_next_engine_params.cc.plcr_profile, sizeof(ioc_fm_pcd_kg_plcr_profile_t)); + } + else + memcpy(¶m->kg_next_engine_params, &compat_param->kg_next_engine_params, sizeof(compat_param->kg_next_engine_params)); + + memcpy(&compat_param->scheme_counter, ¶m->scheme_counter, sizeof(ioc_fm_pcd_kg_scheme_counter_t)); + compat_param->id = ptr_to_compat(param->id); + } +} + +void compat_copy_fm_pcd_kg_scheme_select( + ioc_compat_fm_pcd_kg_scheme_select_t *compat_param, + ioc_fm_pcd_kg_scheme_select_t *param, + uint8_t compat) +{ + if (compat){ + param->direct = compat_param->direct; + param->scheme_id = compat_ptr(compat_param->direct); + } + else { + printk(" %s:%u feature not implemented... \n", __func__, __LINE__); + } +} + +void compat_copy_fm_pcd_kg_schemes_params( + ioc_compat_fm_pcd_port_schemes_params_t *compat_param, + ioc_fm_pcd_port_schemes_params_t *param, + uint8_t compat) +{ + int k; + + if (compat) { + param->num_of_schemes = compat_param->num_of_schemes; + for(k=0; k < IOC_FM_PCD_KG_NUM_OF_SCHEMES; k++) + param->scheme_ids[k] = compat_ptr(compat_param->schemes_ids[k]); + } + else { + printk(" %s:%u feature not implemented... \n", __func__, __LINE__); + } +} + +void compat_copy_fm_port_pcd_kg( + ioc_compat_fm_port_pcd_kg_params_t *compat_param, + ioc_fm_port_pcd_kg_params_t *param, + uint8_t compat) +{ + if (compat){ + uint8_t k; + param->num_of_schemes = compat_param->num_of_schemes; + for(k=0;kschemes_ids[k] = compat_ptr(compat_param->schemes_ids[k]); + param->direct_scheme = compat_param->direct_scheme; + param->direct_scheme_id = compat_ptr(compat_param->direct_scheme_id); + } + else { + printk(" %s:%u feature not implemented... \n", __func__, __LINE__);; + } +} + +void compat_copy_fm_port_pcd( + ioc_compat_fm_port_pcd_params_t *compat_param, + ioc_fm_port_pcd_params_t *param, + uint8_t compat) +{ + if (compat){ + param->pcd_support = compat_param->pcd_support; + param->net_env_id = compat_ptr(compat_param->net_env_id); + param->p_prs_params = compat_ptr(compat_param->p_prs_params); /* same structure */ + param->p_cc_params = compat_ptr(compat_param->p_cc_params); + param->p_kg_params = compat_ptr(compat_param->p_kg_params); + param->p_plcr_params = compat_ptr(compat_param->p_plcr_params); + } + else { + compat_param->pcd_support = param->pcd_support; + compat_param->net_env_id = ptr_to_compat(param->net_env_id); + compat_param->p_prs_params = ptr_to_compat(param->p_prs_params); /* same structure */ + compat_param->p_cc_params = ptr_to_compat(param->p_cc_params); + compat_param->p_kg_params = ptr_to_compat(param->p_kg_params); + compat_param->p_plcr_params = ptr_to_compat(param->p_plcr_params); + } +} + +void compat_copy_fm_pcd_net_env( + ioc_compat_fm_pcd_net_env_params_t *compat_param, + ioc_fm_pcd_net_env_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->num_of_distinction_units = compat_param->num_of_distinction_units; + memcpy(param->units, compat_param->units, sizeof(ioc_fm_pcd_distinction_unit_t)*IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + param->id = compat_ptr(compat_param->id); + } + else + { + compat_param->num_of_distinction_units = param->num_of_distinction_units; + memcpy(compat_param->units, param->units, sizeof(ioc_fm_pcd_distinction_unit_t)*IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS); + compat_param->id = ptr_to_compat(param->id); + } +} + +void compat_copy_fm_pcd_cc_node_modify_key( + ioc_compat_fm_pcd_cc_node_modify_key_params_t *compat_param, + ioc_fm_pcd_cc_node_modify_key_params_t *param, + uint8_t compat) +{ + if (compat) + { + param->id = compat_ptr(compat_param->id); + param->key_indx = compat_param->key_indx; + param->key_size = compat_param->key_size; + param->p_key = (uint8_t *)compat_ptr(compat_param->p_key); + param->p_mask = (uint8_t *)compat_ptr(compat_param->p_mask); + } + else + { + compat_param->id = ptr_to_compat(param->id); + compat_param->key_indx = param->key_indx; + compat_param->key_size = param->key_size; + compat_param->p_key = ptr_to_compat((void *)param->p_key); + compat_param->p_mask = ptr_to_compat((void *)param->p_mask); + } +} + +void compat_copy_keys( + ioc_compat_keys_params_t *compat_param, + ioc_keys_params_t *param, + uint8_t compat) +{ + int k = 0; + if (compat){ + param->num_of_keys = compat_param->num_of_keys; + param->key_size = compat_param->key_size; + + for(k=0;kkey_params[k], + ¶m->key_params[k], + compat); + + } + else { + + compat_param->num_of_keys = param->num_of_keys; + compat_param->key_size = param->key_size; + + for(k=0;kkey_params[k], + ¶m->key_params[k], + compat); + } + + compat_copy_fm_pcd_cc_next_engine( + &compat_param->cc_next_engine_params_for_miss, + ¶m->cc_next_engine_params_for_miss, + compat); + +} + +void compat_copy_fm_pcd_cc_node( + ioc_compat_fm_pcd_cc_node_params_t *compat_param, + ioc_fm_pcd_cc_node_params_t *param, + uint8_t compat) +{ + if (compat) + { + /* no pointer inside, so sizeof US and KS are the same - memcpy is ok */ + memcpy(¶m->extract_cc_params, &compat_param->extract_cc_params, sizeof(ioc_fm_pcd_extract_entry_t)); + + compat_copy_keys(&compat_param->keys_params, ¶m->keys_params, compat); + + param->id = compat_get_id2ptr(compat_param->id); + } + else + { + /* no pointer inside, so sizeof US and KS are the same - memcpy is ok */ + memcpy(&compat_param->extract_cc_params, ¶m->extract_cc_params, sizeof(ioc_fm_pcd_extract_entry_t)); + + compat_copy_keys(&compat_param->keys_params, ¶m->keys_params, compat); + + compat_param->id = ptr_to_compat(param->id); + } +} + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs.h @@ -0,0 +1,67 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_sysfs.h + + @Description FM sysfs functions. + +*/ + +#ifndef LNXWRP_SYSFS_H_ +#define LNXWRP_SYSFS_H_ + +/* Linux Headers ------------------- */ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include + +struct SysfsStats_t { + const char *statisticName; + uint8_t statisticCounter; +}; + +uint8_t fm_find_statistic_counter_by_name(const char *attr_name, + struct SysfsStats_t *sysfs_stats, + uint8_t *offset); + +#endif /* LNXWRP_SYSFS_H_ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm.c @@ -0,0 +1,575 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_sysfs_fm.c + + @Description FM sysfs related functions. + +*/ + +#include "lnxwrp_sysfs.h" +#include "lnxwrp_fm.h" + +enum e_FmDmaMatchStatistics { + e_FM_DMA_COUNTERS_CMQ_NOT_EMPTY, + e_FM_DMA_COUNTERS_BUS_ERROR, + e_FM_DMA_COUNTERS_READ_BUF_ECC_ERROR, + e_FM_DMA_COUNTERS_WRITE_BUF_ECC_SYS_ERROR, + e_FM_DMA_COUNTERS_WRITE_BUF_ECC_FM_ERROR +}; + +static const struct SysfsStats_t fmSysfsStats[] = { + /* FM statistics */ + { + .statisticName = "enq_total_frame", + .statisticCounter = e_FM_COUNTERS_ENQ_TOTAL_FRAME, + }, + { + .statisticName = "deq_total_frame", + .statisticCounter = e_FM_COUNTERS_DEQ_TOTAL_FRAME, + }, + { + .statisticName = "deq_0", + .statisticCounter = e_FM_COUNTERS_DEQ_0, + }, + { + .statisticName = "deq_1", + .statisticCounter = e_FM_COUNTERS_DEQ_1, + }, + { + .statisticName = "deq_2", + .statisticCounter = e_FM_COUNTERS_DEQ_2, + }, + { + .statisticName = "deq_from_default", + .statisticCounter = e_FM_COUNTERS_DEQ_FROM_DEFAULT, + }, + { + .statisticName = "deq_from_context", + .statisticCounter = e_FM_COUNTERS_DEQ_FROM_CONTEXT, + }, + { + .statisticName = "deq_from_fd", + .statisticCounter = e_FM_COUNTERS_DEQ_FROM_FD, + }, + { + .statisticName = "deq_confirm", + .statisticCounter = e_FM_COUNTERS_DEQ_CONFIRM, + }, + /* FM:DMA statistics */ + { + .statisticName = "cmq_not_empty", + .statisticCounter = e_FM_DMA_COUNTERS_CMQ_NOT_EMPTY, + }, + { + .statisticName = "bus_error", + .statisticCounter = e_FM_DMA_COUNTERS_BUS_ERROR, + }, + { + .statisticName = "read_buf_ecc_error", + .statisticCounter = e_FM_DMA_COUNTERS_READ_BUF_ECC_ERROR, + }, + { + .statisticName = "write_buf_ecc_sys_error", + .statisticCounter = e_FM_DMA_COUNTERS_WRITE_BUF_ECC_SYS_ERROR, + }, + { + .statisticName = "write_buf_ecc_fm_error", + .statisticCounter = e_FM_DMA_COUNTERS_WRITE_BUF_ECC_FM_ERROR, + }, + /* FM:PCD statistics */ + { + .statisticName = "pcd_enq_total_frame", + .statisticCounter = e_FM_COUNTERS_ENQ_TOTAL_FRAME, + }, + { + .statisticName = "pcd_kg_total", + .statisticCounter = e_FM_PCD_KG_COUNTERS_TOTAL, + }, + { + .statisticName = "pcd_plcr_yellow", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_YELLOW, + }, + { + .statisticName = "pcd_plcr_red", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_RED, + }, + { + .statisticName = "pcd_plcr_recolored_to_red", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED, + }, + { + .statisticName = "pcd_plcr_recolored_to_yellow", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW, + }, + { + .statisticName = "pcd_plcr_total", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_TOTAL, + }, + { + .statisticName = "pcd_plcr_length_mismatch", + .statisticCounter = e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH, + }, + { + .statisticName = "pcd_prs_parse_dispatch", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH, + }, + { + .statisticName = "pcd_prs_l2_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_l3_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_l4_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_shim_parse_result_returned", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED, + }, + { + .statisticName = "pcd_prs_l2_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_l3_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_l4_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_shim_parse_result_returned_with_err", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR, + }, + { + .statisticName = "pcd_prs_soft_prs_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES, + }, + { + .statisticName = "pcd_prs_soft_prs_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_hard_prs_cycle_incl_stall_cycles", + .statisticCounter = + e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_read_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_read_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_write_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES, + }, + { + .statisticName = "pcd_prs_muram_write_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES, + }, + { + .statisticName = "pcd_prs_fpm_command_stall_cycles", + .statisticCounter = e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES, + }, + {} +}; + +/* Fm stats and regs dumps via sysfs */ +static ssize_t show_fm_dma_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + t_FmDmaStatus fmDmaStatus; + unsigned long flags = 0; + unsigned n = 0; + uint8_t counter_value = 0, counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) + &fmSysfsStats[0], NULL); + + local_irq_save(flags); + + memset(&fmDmaStatus, 0, sizeof(fmDmaStatus)); + FM_GetDmaStatus(p_LnxWrpFmDev->h_Dev, &fmDmaStatus); + + switch (counter) { + case e_FM_DMA_COUNTERS_CMQ_NOT_EMPTY: + counter_value = fmDmaStatus.cmqNotEmpty; + break; + case e_FM_DMA_COUNTERS_BUS_ERROR: + counter_value = fmDmaStatus.busError; + break; + case e_FM_DMA_COUNTERS_READ_BUF_ECC_ERROR: + counter_value = fmDmaStatus.readBufEccError; + break; + case e_FM_DMA_COUNTERS_WRITE_BUF_ECC_SYS_ERROR: + counter_value = fmDmaStatus.writeBufEccSysError; + break; + case e_FM_DMA_COUNTERS_WRITE_BUF_ECC_FM_ERROR: + counter_value = fmDmaStatus.writeBufEccFmError; + break; + default: + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, + __func__); + break; + }; + + n = snprintf(buf, PAGE_SIZE, "\tFM %u counter: %c\n", + p_LnxWrpFmDev->id, counter_value ? 'T' : 'F'); + + local_irq_restore(flags); + + return n; +} + +static ssize_t show_fm_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + unsigned long flags = 0; + unsigned n = 0, counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) + &fmSysfsStats[0], NULL); + + local_irq_save(flags); + + n = snprintf(buf, PAGE_SIZE, "\tFM %d counter: %d\n", + p_LnxWrpFmDev->id, + FM_GetCounter(p_LnxWrpFmDev->h_Dev, + (e_FmCounters) counter)); + + local_irq_restore(flags); + + return n; +} + +static ssize_t show_fm_pcd_stats(struct device *dev, + struct device_attribute *attr, char *buf) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + unsigned long flags = 0; + unsigned n = 0, counter = 0; + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + + counter = + fm_find_statistic_counter_by_name(attr->attr.name, + (struct SysfsStats_t *) + &fmSysfsStats[0], NULL); + + local_irq_save(flags); + + n = snprintf(buf, PAGE_SIZE, "\tFM %d counter: %d\n", + p_LnxWrpFmDev->id, + FM_PCD_GetCounter(p_LnxWrpFmDev->h_PcdDev, + (e_FmPcdCounters) counter)); + + local_irq_restore(flags); + + return n; +} + +/* FM */ +static DEVICE_ATTR(enq_total_frame, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_total_frame, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_0, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_1, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_2, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_from_default, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_from_context, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_from_fd, S_IRUGO, show_fm_stats, NULL); +static DEVICE_ATTR(deq_confirm, S_IRUGO, show_fm_stats, NULL); +/* FM:DMA */ +static DEVICE_ATTR(cmq_not_empty, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(bus_error, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(read_buf_ecc_error, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(write_buf_ecc_sys_error, S_IRUGO, show_fm_dma_stats, NULL); +static DEVICE_ATTR(write_buf_ecc_fm_error, S_IRUGO, show_fm_dma_stats, NULL); +/* FM:PCD */ +static DEVICE_ATTR(pcd_enq_total_frame, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_kg_total, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_yellow, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_red, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_recolored_to_red, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_plcr_recolored_to_yellow, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_plcr_total, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_plcr_length_mismatch, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_parse_dispatch, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l2_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l3_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l4_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_shim_parse_result_returned, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l2_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l3_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_l4_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_shim_parse_result_returned_with_err, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_soft_prs_cycles, S_IRUGO, show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_soft_prs_stall_cycles, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_hard_prs_cycle_incl_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_muram_read_cycles, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_muram_read_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_muram_write_cycles, S_IRUGO, show_fm_pcd_stats, + NULL); +static DEVICE_ATTR(pcd_prs_muram_write_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); +static DEVICE_ATTR(pcd_prs_fpm_command_stall_cycles, S_IRUGO, + show_fm_pcd_stats, NULL); + +static struct attribute *fm_dev_stats_attributes[] = { + &dev_attr_enq_total_frame.attr, + &dev_attr_deq_total_frame.attr, + &dev_attr_deq_0.attr, + &dev_attr_deq_1.attr, + &dev_attr_deq_2.attr, + &dev_attr_deq_from_default.attr, + &dev_attr_deq_from_context.attr, + &dev_attr_deq_from_fd.attr, + &dev_attr_deq_confirm.attr, + &dev_attr_cmq_not_empty.attr, + &dev_attr_bus_error.attr, + &dev_attr_read_buf_ecc_error.attr, + &dev_attr_write_buf_ecc_sys_error.attr, + &dev_attr_write_buf_ecc_fm_error.attr, + &dev_attr_pcd_enq_total_frame.attr, + &dev_attr_pcd_kg_total.attr, + &dev_attr_pcd_plcr_yellow.attr, + &dev_attr_pcd_plcr_red.attr, + &dev_attr_pcd_plcr_recolored_to_red.attr, + &dev_attr_pcd_plcr_recolored_to_yellow.attr, + &dev_attr_pcd_plcr_total.attr, + &dev_attr_pcd_plcr_length_mismatch.attr, + &dev_attr_pcd_prs_parse_dispatch.attr, + &dev_attr_pcd_prs_l2_parse_result_returned.attr, + &dev_attr_pcd_prs_l3_parse_result_returned.attr, + &dev_attr_pcd_prs_l4_parse_result_returned.attr, + &dev_attr_pcd_prs_shim_parse_result_returned.attr, + &dev_attr_pcd_prs_l2_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_l3_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_l4_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_shim_parse_result_returned_with_err.attr, + &dev_attr_pcd_prs_soft_prs_cycles.attr, + &dev_attr_pcd_prs_soft_prs_stall_cycles.attr, + &dev_attr_pcd_prs_hard_prs_cycle_incl_stall_cycles.attr, + &dev_attr_pcd_prs_muram_read_cycles.attr, + &dev_attr_pcd_prs_muram_read_stall_cycles.attr, + &dev_attr_pcd_prs_muram_write_cycles.attr, + &dev_attr_pcd_prs_muram_write_stall_cycles.attr, + &dev_attr_pcd_prs_fpm_command_stall_cycles.attr, + NULL +}; + +static const struct attribute_group fm_dev_stats_attr_grp = { + .name = "statistics", + .attrs = fm_dev_stats_attributes +}; + +static ssize_t show_fm_regs(struct device *dev, struct device_attribute *attr, + char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + local_irq_save(flags); + + n = snprintf(buf, PAGE_SIZE, "FM driver registers dump.\n"); + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_Dev) + return -EIO; + else + FM_DumpRegs(p_LnxWrpFmDev->h_Dev); + + local_irq_restore(flags); +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + return n; +} + +static ssize_t show_pcd_regs(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return -EINVAL; + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, "FM driver registers dump.\n"); + + if (!p_LnxWrpFmDev->active || !p_LnxWrpFmDev->h_PcdDev) + return -EIO; + else + FM_PCD_DumpRegs(p_LnxWrpFmDev->h_PcdDev); + + local_irq_restore(flags); +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); + +#endif /* (defined(DEBUG_ERRORS) && ... */ + + return n; +} + +static DEVICE_ATTR(fm_regs, S_IRUGO, show_fm_regs, NULL); +static DEVICE_ATTR(fm_pcd_regs, S_IRUGO, show_pcd_regs, NULL); + +int fm_sysfs_create(struct device *dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + + if (dev == NULL) + return -EIO; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + + /* store to remove them when module is disabled */ + p_LnxWrpFmDev->dev_attr_regs = &dev_attr_fm_regs; + p_LnxWrpFmDev->dev_pcd_attr_regs = &dev_attr_fm_pcd_regs; + + /* Create sysfs statistics group for FM module */ + if (sysfs_create_group(&dev->kobj, &fm_dev_stats_attr_grp) != 0) + return -EIO; + + /* Registers dump entry - in future will be moved to debugfs */ + if (device_create_file(dev, &dev_attr_fm_regs) != 0 || + device_create_file(dev, &dev_attr_fm_pcd_regs) != 0) + return -EIO; + + return 0; +} + +void fm_sysfs_destroy(struct device *dev) +{ + t_LnxWrpFmDev *p_LnxWrpFmDev = NULL; + + if (WARN_ON(dev == NULL)) + return; + + p_LnxWrpFmDev = (t_LnxWrpFmDev *) dev_get_drvdata(dev); + if (WARN_ON(p_LnxWrpFmDev == NULL)) + return; + + sysfs_remove_group(&dev->kobj, &fm_dev_stats_attr_grp); + device_remove_file(dev, p_LnxWrpFmDev->dev_attr_regs); + device_remove_file(dev, p_LnxWrpFmDev->dev_pcd_attr_regs); +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/fman_test.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/fman_test.c @@ -0,0 +1,1076 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File fman_test.c + + @Author Moti Bar + + @Description FM Linux test + +*/ + +/* Linux Headers ------------------- */ +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#include +#endif /* MODVERSIONS */ + +#include +#include +#include +#include +#include +#include +#include +#include /*struct qman_fq */ +#include +#include +#include /*for mixed environment */ +#include +#include + +/* NetCommSw Headers --------------- */ +#include "std_ext.h" +#include "error_ext.h" +#include "debug_ext.h" +#include "list_ext.h" +#include "fm_ext.h" + +#include "fm_test_ioctls.h" +#include "fsl_fman.h" +#include "fsl_fman_test.h" +#include "fm_port_ext.h" + + +#define __ERR_MODULE__ MODULE_FM + +#define FMT_FRM_WATERMARK 0xdeadbeefdeadbeeaLL + +#ifdef CONFIG_COMPAT +/* Define this for KS64b - US32b */ +#define FMAN_TEST_CONFIG_COMPAT +#warning Please make sure you have the right value for FMAN_TEST_CONFIG_COMPAT +#endif + +typedef struct { + ioc_fmt_buff_desc_t buff; + t_List node; +} t_FmTestFrame; + +#define FMT_FRAME_OBJECT(ptr) LIST_OBJECT(ptr, t_FmTestFrame, node) + +typedef struct t_FmTestFq { + struct qman_fq fq_base; + struct list_head list; + void *port; + bool init; +} t_FmTestFq; + +typedef struct { + bool valid; + uint8_t id; + ioc_fmt_port_type portType; + ioc_diag_mode diag; + bool echo; + bool ip_header_manip; + struct fm_port *p_TxPort; + t_Handle h_TxFmPortDev; + struct fm_port *p_RxPort; + t_Handle h_RxFmPortDev; + t_Handle h_Mac; + uint64_t fmPhysBaseAddr; + t_List rxFrmsQ; + + int numOfTxQs; + struct qman_fq *p_TxFqs[8]; +} t_FmTestPort; + +typedef struct { + int major; + t_FmTestPort ports[IOC_FMT_MAX_NUM_OF_PORTS]; + struct class *fm_test_class; +} t_FmTest; + + +static t_FmTest fmTest; + + +static t_Error Set1GMacIntLoopback(t_FmTestPort *p_FmTestPort, bool en) +{ +#define FM_1GMAC0_OFFSET 0x000e0000 +#define FM_1GMAC_CMD_CONF_CTRL_OFFSET 0x100 +#define MACCFG1_LOOPBACK 0x00000100 + + uint64_t baseAddr, regAddr; + uint32_t tmpVal; + + baseAddr = p_FmTestPort->fmPhysBaseAddr + (FM_1GMAC0_OFFSET + (p_FmTestPort->id*0x2000)); + + baseAddr = PTR_TO_UINT(ioremap(baseAddr, 0x1000)); + + regAddr = baseAddr + FM_1GMAC_CMD_CONF_CTRL_OFFSET; + tmpVal = GET_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr))); + if (en) + tmpVal |= MACCFG1_LOOPBACK; + else + tmpVal &= ~MACCFG1_LOOPBACK; + WRITE_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr)), tmpVal); + + iounmap(UINT_TO_PTR(baseAddr)); + + return E_OK; +} + +#ifndef FM_10G_MAC_NO_CTRL_LOOPBACK +static t_Error Set10GMacIntLoopback(t_FmTestPort *p_FmTestPort, bool en) +{ +#define FM_10GMAC0_OFFSET 0x000f0000 +#define FM_10GMAC_CMD_CONF_CTRL_OFFSET 0x8 +#define CMD_CFG_LOOPBACK_EN 0x00000400 + + uint64_t baseAddr, regAddr; + uint32_t tmpVal; + + baseAddr = p_FmTestPort->fmPhysBaseAddr + (FM_10GMAC0_OFFSET + ((p_FmTestPort->id-FM_MAX_NUM_OF_1G_RX_PORTS)*0x2000)); + + baseAddr = PTR_TO_UINT(ioremap(baseAddr, 0x1000)); + + regAddr = baseAddr + FM_10GMAC_CMD_CONF_CTRL_OFFSET; + tmpVal = GET_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr))); + if (en) + tmpVal |= CMD_CFG_LOOPBACK_EN; + else + tmpVal &= ~CMD_CFG_LOOPBACK_EN; + WRITE_UINT32(*((uint32_t *)UINT_TO_PTR(regAddr)), tmpVal); + + iounmap(UINT_TO_PTR(baseAddr)); + + return E_OK; +} +#endif /* !FM_10G_MAC_NO_CTRL_LOOPBACK */ + +static t_Error SetMacIntLoopback(t_FmTestPort *p_FmTestPort, bool en) +{ + + if (p_FmTestPort->portType == e_IOC_FMT_PORT_T_RXTX) + { + if (p_FmTestPort->id < FM_MAX_NUM_OF_1G_RX_PORTS) + return Set1GMacIntLoopback(p_FmTestPort, en); + else if ((p_FmTestPort->id >= FM_MAX_NUM_OF_1G_RX_PORTS) && (p_FmTestPort->id < FM_MAX_NUM_OF_1G_RX_PORTS + FM_MAX_NUM_OF_10G_RX_PORTS)) +#ifndef FM_10G_MAC_NO_CTRL_LOOPBACK + return Set10GMacIntLoopback(p_FmTestPort, en); +#else + RETURN_ERROR(MINOR, E_NOT_SUPPORTED, ("TGEC don't have internal-loopback")); +#endif /* !FM_10G_MAC_NO_CTRL_LOOPBACK */ + } + else if (p_FmTestPort->portType == e_IOC_FMT_PORT_T_OP) + return E_OK; /* no Mac loopback can be set on OH ports */ + else + RETURN_ERROR(MINOR, E_INVALID_VALUE, ("fm-port-test id!")); + RETURN_ERROR(MINOR, E_INVALID_STATE, NO_MSG); +} + +static void EnqueueFrameToRxQ(t_FmTestPort *p_FmTestPort, t_FmTestFrame *p_FmTestFrame) +{ + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_FmTestFrame->node, &p_FmTestPort->rxFrmsQ); + XX_RestoreAllIntr(intFlags); +} + +static t_FmTestFrame * DequeueFrameFromRxQ(t_FmTestPort *p_FmTestPort) +{ + t_FmTestFrame *p_FmTestFrame = NULL; + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + if (!LIST_IsEmpty(&p_FmTestPort->rxFrmsQ)) + { + p_FmTestFrame = FMT_FRAME_OBJECT(p_FmTestPort->rxFrmsQ.p_Next); + LIST_DelAndInit(&p_FmTestFrame->node); + } + XX_RestoreAllIntr(intFlags); + + return p_FmTestFrame; +} + +static enum qman_cb_dqrr_result egress_dqrr(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_dqrr_entry *dq) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); + return qman_cb_dqrr_consume; +} + +static void egress_ern(struct qman_portal *portal, + struct qman_fq *fq, + const struct qm_mr_entry *msg) +{ + WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); +} + +static struct qman_fq * FqAlloc(t_FmTestPort *p_FmTestPort, + uint32_t fqid, + uint32_t flags, + uint16_t channel, + uint8_t wq) +{ + int _errno; + struct qman_fq *fq = NULL; + t_FmTestFq *p_FmtFq; + struct qm_mcc_initfq initfq; + + p_FmtFq = (t_FmTestFq *)XX_Malloc(sizeof(t_FmTestFq)); + if (!p_FmtFq) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj!!!")); + return NULL; + } + + p_FmtFq->fq_base.cb.dqrr = egress_dqrr; + p_FmtFq->fq_base.cb.ern = p_FmtFq->fq_base.cb.dc_ern = p_FmtFq->fq_base.cb.fqs = egress_ern; + p_FmtFq->port = (void *)p_FmTestPort; + if (fqid == 0) { + flags |= QMAN_FQ_FLAG_DYNAMIC_FQID; + flags &= ~QMAN_FQ_FLAG_NO_MODIFY; + } else { + flags &= ~QMAN_FQ_FLAG_DYNAMIC_FQID; + } + + p_FmtFq->init = !(flags & QMAN_FQ_FLAG_NO_MODIFY); + + DBG(TRACE, ("fqid %d, flags 0x%08x, channel %d, wq %d",fqid,flags,channel,wq)); + + _errno = qman_create_fq(fqid, flags, &p_FmtFq->fq_base); + if (unlikely(_errno)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj - qman_new_fq!!!")); + XX_Free(p_FmtFq); + return NULL; + } + fq = &p_FmtFq->fq_base; + + if (p_FmtFq->init) { + initfq.we_mask = QM_INITFQ_WE_DESTWQ; + initfq.fqd.dest.channel = channel; + initfq.fqd.dest.wq = wq; + + _errno = qman_init_fq(fq, QMAN_INITFQ_FLAG_SCHED, &initfq); + if (unlikely(_errno < 0)) { + REPORT_ERROR(MAJOR, E_NO_MEMORY, ("FQ obj - qman_init_fq!!!")); + qman_destroy_fq(fq, 0); + XX_Free(p_FmtFq); + return NULL; + } + } + + return fq; +} + +static t_Error PortInit (t_FmTestPort *p_FmTestPort, ioc_fmt_port_param_t *p_Params) +{ + struct device_node *fm_node, *fm_port_node; + const uint32_t *uint32_prop; + int _errno=0, lenp; + uint32_t i; + static struct of_device_id fm_node_of_match[] = { + { .compatible = "fsl,fman", }, + { /* end of list */ }, + }; + + INIT_LIST(&p_FmTestPort->rxFrmsQ); + p_FmTestPort->numOfTxQs = p_Params->num_tx_queues; + p_FmTestPort->id = p_Params->fm_port_id; + p_FmTestPort->portType = p_Params->fm_port_type; + p_FmTestPort->diag = e_IOC_DIAG_MODE_NONE; + p_FmTestPort->ip_header_manip = FALSE; + + /* Get all the FM nodes */ + for_each_matching_node(fm_node, fm_node_of_match) { + + uint32_prop = (uint32_t *)of_get_property(fm_node, "cell-index", &lenp); + if (unlikely(uint32_prop == NULL)) { + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) failed", fm_node->full_name)); + } + if (WARN_ON(lenp != sizeof(uint32_t))) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("of_get_property(%s, cell-index) invalid", fm_node->full_name)); + if (*uint32_prop == p_Params->fm_id) { + struct resource res; + /* Get the FM address */ + _errno = of_address_to_resource(fm_node, 0, &res); + if (unlikely(_errno < 0)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("of_address_to_resource() = %d", _errno)); + + p_FmTestPort->fmPhysBaseAddr = res.start; + + for_each_child_of_node(fm_node, fm_port_node) { + struct platform_device *of_dev; + + uint32_prop = (uint32_t *)of_get_property(fm_port_node, "cell-index", &lenp); + if (uint32_prop == NULL) + continue; + + if (of_device_is_compatible(fm_port_node, "fsl,fman-port-oh") && + (p_FmTestPort->portType == e_IOC_FMT_PORT_T_OP)) { + if (*uint32_prop == p_FmTestPort->id) + { + of_dev = of_find_device_by_node(fm_port_node); + if (unlikely(of_dev == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + p_FmTestPort->p_TxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_TxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_TxPort); + p_FmTestPort->h_RxFmPortDev = p_FmTestPort->h_TxFmPortDev; + p_FmTestPort->h_Mac = NULL; + break; + } + } + else if ((*uint32_prop == p_FmTestPort->id) && + p_FmTestPort->portType == e_IOC_FMT_PORT_T_RXTX) { + of_dev = of_find_device_by_node(fm_port_node); + if (unlikely(of_dev == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + if(of_device_is_compatible(fm_port_node, "fsl,fman-port-1g-tx")) + { + p_FmTestPort->p_TxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_TxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_TxPort); + } + else if(of_device_is_compatible(fm_port_node, "fsl,fman-port-1g-rx")) + { + p_FmTestPort->p_RxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_RxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_RxPort); + } + else if (of_device_is_compatible(fm_port_node, "fsl,fman-1g-mac")) + p_FmTestPort->h_Mac = (typeof(p_FmTestPort->h_Mac))dev_get_drvdata(&of_dev->dev); + else + continue; + if(p_FmTestPort->h_TxFmPortDev && p_FmTestPort->h_RxFmPortDev && p_FmTestPort->h_Mac) + break; + } + else if (((*uint32_prop + FM_MAX_NUM_OF_1G_RX_PORTS )== p_FmTestPort->id) && + p_FmTestPort->portType == e_IOC_FMT_PORT_T_RXTX) { + of_dev = of_find_device_by_node(fm_port_node); + if (unlikely(of_dev == NULL)) + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("fm id!")); + if(of_device_is_compatible(fm_port_node, "fsl,fman-port-10g-tx")) + { + p_FmTestPort->p_TxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_TxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_TxPort); + } + else if(of_device_is_compatible(fm_port_node, "fsl,fman-port-10g-rx")) + { + p_FmTestPort->p_RxPort = fm_port_bind(&of_dev->dev); + p_FmTestPort->h_RxFmPortDev = (t_Handle)fm_port_get_handle(p_FmTestPort->p_RxPort); + } + else if (of_device_is_compatible(fm_port_node, "fsl,fman-10g-mac")) + p_FmTestPort->h_Mac = (typeof(p_FmTestPort->h_Mac))dev_get_drvdata(&of_dev->dev); + else + continue; + if(p_FmTestPort->h_TxFmPortDev && p_FmTestPort->h_RxFmPortDev && p_FmTestPort->h_Mac) + break; + } + } //for_each_child + } + } //for each matching node + + DBG(TRACE, ("h_TxFmPortDev - 0x%08x, h_RxFmPortDev - 0x%08x, h_Mac - 0x%08x\n", + p_FmTestPort->h_TxFmPortDev,p_FmTestPort->h_RxFmPortDev,p_FmTestPort->h_Mac)); + + if(p_FmTestPort->h_TxFmPortDev == 0 || p_FmTestPort->h_RxFmPortDev == 0) + RETURN_ERROR(MINOR, E_INVALID_ADDRESS, ("Bad pointers!")); + + //init Queues + for (i=0; inumOfTxQs; i++) { + p_FmTestPort->p_TxFqs[i] = + FqAlloc(p_FmTestPort, + 0, + QMAN_FQ_FLAG_TO_DCPORTAL, + fm_get_tx_port_channel(p_FmTestPort->p_TxPort), + i); + if (IS_ERR(p_FmTestPort->p_TxFqs[i])) + RETURN_ERROR(MAJOR, E_INVALID_HANDLE, ("Tx FQs!")); + } + + p_FmTestPort->valid = TRUE; + + return E_OK; +} + + +bool is_fman_test (void *mac_dev, + uint32_t queueId, + uint8_t *buffer, + uint32_t size) +{ + t_FmTest *p_FmTest = &fmTest; + t_FmTestPort *p_FmTestPort=NULL; + t_FmTestFrame *p_FmTestFrame; + uint32_t count=size-7; + uint64_t temp; + uint8_t *temp_buf=buffer, i; + bool fman_test_flag = false; + uint32_t dataOffset; + struct fm_port *fm_port = (struct fm_port *) mac_dev; + +#if 0 + if ((queueId == FMT_TX_CONF_Q) || (queueId == FMT_TX_ERR_Q)) + { + /* Check for the FM-test-port object existence, otherwise we make wrong frees all the time */ + for (i=0; iports[i].h_Mac) + p_FmTestPort = &p_FmTest->ports[i]; + if (!p_FmTestPort) + return false; + + if (buffer != NULL) + XX_Free(buffer); + return true; + } +#endif + + /* Get the FM-test-port object */ + for (i=0; iports[i].h_Mac && mac_dev == p_FmTest->ports[i].h_Mac) || + fm_port == p_FmTest->ports[i].p_TxPort) + { + p_FmTestPort = &p_FmTest->ports[i]; + break; + } + if (!p_FmTestPort) + return false; + + /* Check according to watermark if this frame is for FM-test */ + while(count--) + { + temp = *(uint64_t *)temp_buf; + if (temp == FMT_FRM_WATERMARK) + { + fman_test_flag = true; + break; + } + temp_buf++; + } + + if (fman_test_flag /*|| p_FmTestPort->echo*/) + { + if ((queueId == FMT_TX_CONF_Q) || (queueId == FMT_TX_ERR_Q)) + { + if (buffer != NULL) + XX_Free(buffer); + return true; + } + + DBG(TRACE, ("Port %d got FMUC frame\n", p_FmTestPort->id)); + dataOffset = FM_PORT_GetBufferDataOffset(p_FmTestPort->h_RxFmPortDev); + + p_FmTestFrame = (t_FmTestFrame *)XX_Malloc(sizeof(t_FmTestFrame)); + /* dump frame... no more space left on device */ + if(p_FmTestFrame == NULL) + return false; + + memset(p_FmTestFrame, 0, sizeof(t_FmTestFrame)); + INIT_LIST(&p_FmTestFrame->node); + + p_FmTestFrame->buff.p_data = (uint8_t *)XX_Malloc(size * sizeof(uint8_t)); + /* No more space left on device*/ + if(p_FmTestFrame->buff.p_data == NULL){ + XX_Free(p_FmTestFrame); + return false; + } + + p_FmTestFrame->buff.size = size-dataOffset; + p_FmTestFrame->buff.qid = queueId; + + memcpy(p_FmTestFrame->buff.p_data, + (uint8_t *)PTR_MOVE(buffer, dataOffset), + p_FmTestFrame->buff.size); + + memcpy(p_FmTestFrame->buff.buff_context.fm_prs_res, + FM_PORT_GetBufferPrsResult(p_FmTestPort->h_RxFmPortDev, (char*)buffer), + 32); + + EnqueueFrameToRxQ(p_FmTestPort, p_FmTestFrame); + return true; + } + + return false; +} + +void fman_test_ip_manip (void *mac_dev, uint8_t *data) +{ + t_FmTest *p_FmTest = &fmTest; + t_FmTestPort *p_FmTestPort=NULL; + struct iphdr *iph; + uint32_t *p_Data = (uint32_t *)data; + uint32_t net; + uint32_t saddr, daddr; + uint8_t i; + + /* Get the FM-test-port object */ + for (i=0; iports[i].h_Mac) + p_FmTestPort = &p_FmTest->ports[i]; + if (!p_FmTestPort || !p_FmTestPort->ip_header_manip) + return; + + iph = (struct iphdr *)p_Data; + saddr = iph->saddr; + daddr = iph->daddr; + + /* If it is ARP packet ... */ + if (*p_Data == 0x00010800) + { + saddr = *((uint32_t *)PTR_MOVE(p_Data, 14)); + daddr = *((uint32_t *)PTR_MOVE(p_Data, 24)); + } + + DBG(TRACE, + ("\nSrc IP before header-manipulation: %d.%d.%d.%d" + "\nDest IP before header-manipulation: %d.%d.%d.%d", + (int)((saddr & 0xff000000) >> 24), + (int)((saddr & 0x00ff0000) >> 16), + (int)((saddr & 0x0000ff00) >> 8), + (int)((saddr & 0x000000ff) >> 0), + (int)((daddr & 0xff000000) >> 24), + (int)((daddr & 0x00ff0000) >> 16), + (int)((daddr & 0x0000ff00) >> 8), + (int)((daddr & 0x000000ff) >> 0))); + + if ((p_FmTestPort->diag == e_IOC_DIAG_MODE_CTRL_LOOPBACK) || + (p_FmTestPort->diag == e_IOC_DIAG_MODE_CHIP_LOOPBACK) || + (p_FmTestPort->diag == e_IOC_DIAG_MODE_PHY_LOOPBACK) || + (p_FmTestPort->diag == e_IOC_DIAG_MODE_LINE_LOOPBACK)) + { + net = saddr; + saddr = daddr; + daddr = net; + } + else + { + /* We allow only up to 10 eth ports */ + net = ((daddr & 0x000000ff) % 10); + saddr = (uint32_t)((saddr & ~0x0000ff00) | (net << 8)); + daddr = (uint32_t)((daddr & ~0x0000ff00) | (net << 8)); + } + + /* If not ARP ... */ + if (*p_Data != 0x00010800) + { + iph->check = 0; + + iph->saddr = saddr; + iph->daddr = daddr; + iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); + } + else /* The packet is ARP */ + { + *((uint32_t *)PTR_MOVE(p_Data, 14)) = saddr; + *((uint32_t *)PTR_MOVE(p_Data, 24)) = daddr; + } + + DBG(TRACE, + ("\nSrc IP after header-manipulation: %d.%d.%d.%d" + "\nDest IP after header-manipulation: %d.%d.%d.%d", + (int)((saddr & 0xff000000) >> 24), + (int)((saddr & 0x00ff0000) >> 16), + (int)((saddr & 0x0000ff00) >> 8), + (int)((saddr & 0x000000ff) >> 0), + (int)((daddr & 0xff000000) >> 24), + (int)((daddr & 0x00ff0000) >> 16), + (int)((daddr & 0x0000ff00) >> 8), + (int)((daddr & 0x000000ff) >> 0))); +} + + +/*****************************************************************************/ +/* API routines for the FM Linux Device */ +/*****************************************************************************/ + +static int fm_test_open(struct inode *inode, struct file *file) +{ + t_FmTest *p_FmTest = &fmTest; + //unsigned int major = imajor(inode); + unsigned int minor = iminor(inode); + + DBG(TRACE, ("Opening minor - %d - ", minor)); + + if (file->private_data != NULL) + return 0; + + if ((minor >= DEV_FM_TEST_PORTS_MINOR_BASE) && + (minor < DEV_FM_TEST_MAX_MINORS)) + file->private_data = &p_FmTest->ports[minor]; + else + return -ENXIO; + + return 0; +} + +static int fm_test_close(struct inode *inode, struct file *file) +{ + t_FmTestPort *p_FmTestPort; + unsigned int minor = iminor(inode); + int err = 0; + + DBG(TRACE, ("Closing minor - %d - ", minor)); + + p_FmTestPort = file->private_data; + if (!p_FmTestPort) + return -ENODEV; + + p_FmTestPort->valid = FALSE; + + /* Complete!!! */ + return err; +} + +static int fm_test_ioctls(unsigned int minor, struct file *file, unsigned int cmd, unsigned long arg, bool compat) +{ + t_FmTestPort *p_FmTestPort; + + DBG(TRACE, ("IOCTL minor - %d, cmd - 0x%08x, arg - 0x%08x", minor, cmd, arg)); + + p_FmTestPort = file->private_data; + if (!p_FmTestPort) + return -ENODEV; + + switch (cmd) + { + case FMT_PORT_IOC_INIT: + { + ioc_fmt_port_param_t param; + + if (p_FmTestPort->valid) { + REPORT_ERROR(MINOR, E_INVALID_STATE, ("port is already initialized!!!")); + return -EFAULT; + } +#if defined(FMAN_TEST_CONFIG_COMPAT) + if (compat){ + if (copy_from_user(¶m, (ioc_fmt_port_param_t *)compat_ptr(arg), sizeof(ioc_fmt_port_param_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } +#endif + else{ + if (copy_from_user(¶m, (ioc_fmt_port_param_t *) arg, sizeof(ioc_fmt_port_param_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + + return PortInit(p_FmTestPort, ¶m); + } + + case FMT_PORT_IOC_SET_DIAG_MODE: + { + if (get_user(p_FmTestPort->diag, (ioc_diag_mode *)arg)) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + + if (p_FmTestPort->diag == e_IOC_DIAG_MODE_CTRL_LOOPBACK) + return SetMacIntLoopback(p_FmTestPort, TRUE); + else + return SetMacIntLoopback(p_FmTestPort, FALSE); + break; + } + + case FMT_PORT_IOC_SET_DPAECHO_MODE: + { +#if defined(FMAN_TEST_CONFIG_COMPAT) + if (compat){ + if (get_user(p_FmTestPort->echo, (int *)compat_ptr(arg))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + else +#endif + { + if (get_user(p_FmTestPort->echo, (int *)arg)) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + break; + } + + case FMT_PORT_IOC_SET_IP_HEADER_MANIP: + { +#if defined(FMAN_TEST_CONFIG_COMPAT) + if (compat){ + if (get_user(p_FmTestPort->ip_header_manip, (int *)compat_ptr(arg))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + else +#endif + { + if (get_user(p_FmTestPort->ip_header_manip, (int *)arg)) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -EFAULT; + } + } + break; + } + + default: + REPORT_ERROR(MINOR, E_INVALID_SELECTION, ("IOCTL TEST cmd (0x%08lx):(0x%02lx:0x%02lx)!", cmd, _IOC_TYPE(cmd), _IOC_NR(cmd))); + return -EFAULT; + } + + return 0; +} + +#ifdef FMAN_TEST_CONFIG_COMPAT +static long fm_test_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + + return fm_test_ioctls(minor, file, cmd, arg, true); +} +#endif + +static long fm_test_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + unsigned int minor = iminor(file->f_path.dentry->d_inode); + unsigned int res; + + fm_mutex_lock(); + res = fm_test_ioctls(minor, file, cmd, arg, false); + fm_mutex_unlock(); + + return res; +} + +#ifdef FMAN_TEST_CONFIG_COMPAT +void copy_compat_test_frame_buffer(ioc_fmt_buff_desc_t *buff, ioc_fmt_compat_buff_desc_t *compat_buff) +{ + compat_buff->qid = buff->qid; + compat_buff->p_data = ptr_to_compat(buff->p_data); + compat_buff->size = buff->size; + compat_buff->status = buff->status; + + compat_buff->buff_context.p_user_priv = ptr_to_compat(buff->buff_context.p_user_priv); + memcpy(compat_buff->buff_context.fm_prs_res,buff->buff_context.fm_prs_res,FM_PRS_MAX * sizeof(uint8_t)); + memcpy(compat_buff->buff_context.fm_time_stamp,buff->buff_context.fm_time_stamp,FM_TIME_STAMP_MAX * sizeof(uint8_t)); +} +#endif + +ssize_t fm_test_read (struct file *file, char __user *buf, size_t size, loff_t *ppos) +{ + t_FmTestPort *p_FmTestPort; + t_FmTestFrame *p_FmTestFrame; + ssize_t cnt = 0; + + p_FmTestPort = file->private_data; + if (!p_FmTestPort || !p_FmTestPort->valid) + return -ENODEV; + + p_FmTestFrame = DequeueFrameFromRxQ(p_FmTestPort); + if (!p_FmTestFrame) + return 0; + + if (!p_FmTestPort->echo) { +#ifdef FMAN_TEST_CONFIG_COMPAT + cnt = sizeof(ioc_fmt_compat_buff_desc_t); +#else + cnt = sizeof(ioc_fmt_buff_desc_t); +#endif + if (sizebuff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_NO_MEMORY, ("Illegal buffer-size!")); + return 0; + } + + /* Copy structure */ +#ifdef FMAN_TEST_CONFIG_COMPAT + { + ioc_fmt_compat_buff_desc_t compat_buff; + copy_compat_test_frame_buffer(&p_FmTestFrame->buff, &compat_buff); + + if (copy_to_user(buf, &compat_buff, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + } + + ((ioc_fmt_compat_buff_desc_t *)buf)->p_data = ptr_to_compat(buf+sizeof(ioc_fmt_compat_buff_desc_t)); + cnt += MIN(p_FmTestFrame->buff.size, size-cnt); +#else + if (copy_to_user(buf, &p_FmTestFrame->buff, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } + + ((ioc_fmt_buff_desc_t *)buf)->p_data = buf+sizeof(ioc_fmt_buff_desc_t); + cnt += MIN(p_FmTestFrame->buff.size, size-cnt); +#endif + + if (sizebuff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_NO_MEMORY, ("Illegal buffer-size!")); + return 0; + } + + /* copy frame */ +#ifdef FMAN_TEST_CONFIG_COMPAT + if (copy_to_user(buf+sizeof(ioc_fmt_compat_buff_desc_t), p_FmTestFrame->buff.p_data, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } +#else + if (copy_to_user(buf+sizeof(ioc_fmt_buff_desc_t), p_FmTestFrame->buff.p_data, cnt)) { + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return 0; + } +#endif + + XX_Free(p_FmTestFrame->buff.p_data); + XX_Free(p_FmTestFrame); + } + else { + uint8_t *p_Data = NULL; + uint32_t frameSize =0; + t_DpaaFD fd; + int _errno = 0; + + p_Data = (uint8_t *)p_FmTestFrame->buff.p_data; + frameSize = p_FmTestFrame->buff.size; + + /* paranoia ...*/ + if(!p_Data){ + XX_Free(p_FmTestFrame); + return 0; + } + + /* Set frame descriptor... */ + memset(&fd, 0, sizeof(fd)); + DPAA_FD_SET_ADDR(&fd, p_Data); + DPAA_FD_SET_OFFSET(&fd, 0); + DPAA_FD_SET_LENGTH(&fd, frameSize); + + /* Enqueue frame... */ + _errno = qman_enqueue(p_FmTestPort->p_TxFqs[0], (struct qm_fd*)&fd, 0); + if (_errno) { + XX_Free(p_FmTestFrame); + XX_Free(p_Data); + return 0; + } + + XX_Free(p_FmTestFrame); + } + + return cnt; +} + +ssize_t fm_test_write (struct file *file, const char __user *buf, size_t size, loff_t *ppos) +{ + t_FmTestPort *p_FmTestPort; + + ioc_fmt_buff_desc_t buffDesc; +#ifdef FMAN_TEST_CONFIG_COMPAT + ioc_fmt_compat_buff_desc_t compatBuffDesc; +#endif + t_DpaaFD fd; + uint8_t *p_Data; + uint32_t dataOffset; + int _errno; + + p_FmTestPort = file->private_data; + if (!p_FmTestPort || !p_FmTestPort->valid) { + REPORT_ERROR(MINOR, E_INVALID_HANDLE, NO_MSG); + return -1; + } + + /* If Compat (32B UserSpace - 64B KernelSpace) */ +#ifdef FMAN_TEST_CONFIG_COMPAT + if (copy_from_user(&compatBuffDesc, buf, sizeof(ioc_fmt_compat_buff_desc_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -1; + } + + buffDesc.qid = compatBuffDesc.qid; + buffDesc.p_data = compat_ptr(compatBuffDesc.p_data); + buffDesc.size = compatBuffDesc.size; + buffDesc.status = compatBuffDesc.status; + + buffDesc.buff_context.p_user_priv = compat_ptr(compatBuffDesc.buff_context.p_user_priv); + memcpy(buffDesc.buff_context.fm_prs_res, compatBuffDesc.buff_context.fm_prs_res, FM_PRS_MAX * sizeof(uint8_t)); + memcpy(buffDesc.buff_context.fm_time_stamp, compatBuffDesc.buff_context.fm_time_stamp, FM_TIME_STAMP_MAX * sizeof(uint8_t)); +#else + if (copy_from_user(&buffDesc, (ioc_fmt_buff_desc_t *)buf, sizeof(ioc_fmt_buff_desc_t))) { + REPORT_ERROR(MINOR, E_INVALID_STATE, NO_MSG); + return -1; + } +#endif + + dataOffset = FM_PORT_GetBufferDataOffset(p_FmTestPort->h_TxFmPortDev); + p_Data = (uint8_t*)XX_Malloc(buffDesc.size+dataOffset); + if (!p_Data) { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("data buff!")); + return -1; + } + + /* If Compat (32UserSpace - 64KernelSpace) the buffDesc.p_data is ok */ + if (copy_from_user ((uint8_t *)PTR_MOVE(p_Data, dataOffset), + buffDesc.p_data, + buffDesc.size)) { + REPORT_ERROR(MINOR, E_NO_MEMORY, ("data buff!")); + XX_Free(p_Data); + return -1; + } + + memset(&fd, 0, sizeof(fd)); + DPAA_FD_SET_ADDR(&fd, p_Data); + DPAA_FD_SET_OFFSET(&fd, dataOffset); + DPAA_FD_SET_LENGTH(&fd, buffDesc.size); + + DBG(TRACE, ("buffDesc qId %d, fqid %d, frame len %d, fq 0x%8x\n", + buffDesc.qid, qman_fq_fqid(p_FmTestPort->p_TxFqs[buffDesc.qid]), buffDesc.size, p_FmTestPort->p_TxFqs[buffDesc.qid])); + + _errno = qman_enqueue(p_FmTestPort->p_TxFqs[buffDesc.qid], (struct qm_fd*)&fd, 0); + if (_errno) { + buffDesc.status = (uint32_t)_errno; + if (copy_to_user((ioc_fmt_buff_desc_t*)buf, &buffDesc, sizeof(ioc_fmt_buff_desc_t))) { + REPORT_ERROR(MINOR, E_WRITE_FAILED, NO_MSG); + XX_Free(p_Data); + return -1; + } + } + return buffDesc.size; +} + +/* Globals for FM character device */ +static struct file_operations fm_test_fops = +{ + owner: THIS_MODULE, +#ifdef FMAN_TEST_CONFIG_COMPAT + compat_ioctl:fm_test_compat_ioctl, +#endif + unlocked_ioctl: fm_test_ioctl, + open: fm_test_open, + release: fm_test_close, + read: fm_test_read, + write: fm_test_write, +}; + +t_Handle LNXWRP_FM_TEST_Init(void) +{ + t_FmTest *p_FmTest = &fmTest; + int id; + + /* Register to the /dev for IOCTL API */ + /* Register dynamically a new major number for the character device: */ + if ((p_FmTest->major = register_chrdev(0, DEV_FM_TEST_NAME, &fm_test_fops)) <= 0) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Failed to allocate a major number for device \"%s\"", DEV_FM_TEST_NAME)); + return NULL; + } + + /* Creating class for FMan_test */ + DBG(TRACE ,("class_create fm_test_class")); + p_FmTest->fm_test_class = class_create(THIS_MODULE, DEV_FM_TEST_NAME); + if (IS_ERR(p_FmTest->fm_test_class)) { + unregister_chrdev(p_FmTest->major, DEV_FM_TEST_NAME); + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("class_create error fm_test_class")); + return NULL; + } + + for (id = 0; id < IOC_FMT_MAX_NUM_OF_PORTS; id++) + if(NULL == device_create(p_FmTest->fm_test_class, NULL, MKDEV(p_FmTest->major, DEV_FM_TEST_PORTS_MINOR_BASE + id), NULL, + DEV_FM_TEST_NAME "%d", id)) + { + REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Error creating device.\n")); + return NULL; + } + + /* Seed the QMan allocator so we'll have enough queues to run PCD with + dinamically fqid-range allocation */ + qman_release_fqid_range(0x100, 0x400); + + return p_FmTest; +} + +t_Error LNXWRP_FM_TEST_Free(t_Handle h_FmTestLnxWrp) +{ + t_FmTest *p_FmTest = (t_FmTest*)h_FmTestLnxWrp; + int id; + + DBG(TRACE, ("destroy fm_test_class")); + for (id = 0; id < IOC_FMT_MAX_NUM_OF_PORTS; id++) + device_destroy(p_FmTest->fm_test_class, MKDEV(p_FmTest->major, DEV_FM_TEST_PORTS_MINOR_BASE + id)); + class_destroy(p_FmTest->fm_test_class); + + return E_OK; +} + +static t_Handle h_FmTestLnxWrp; + +static int __init __cold fm_test_load (void) +{ + if ((h_FmTestLnxWrp = LNXWRP_FM_TEST_Init()) == NULL) + { + printk("Failed to init FM-test wrapper!\n"); + if (h_FmTestLnxWrp) + LNXWRP_FM_TEST_Free(h_FmTestLnxWrp); + return -ENODEV; + } + + printk (KERN_CRIT "Freescale FM test module ("__DATE__ ":"__TIME__")\n"); + + return 0; +} + +static void __exit __cold fm_test_unload (void) +{ + if (h_FmTestLnxWrp) + LNXWRP_FM_TEST_Free(h_FmTestLnxWrp); +} + +module_init (fm_test_load); +module_exit (fm_test_unload); --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_sysfs_fm_port.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_sysfs_fm_port.h + + @Description FM port sysfs functions. + +*/ + +#ifndef LNXWRP_SYSFS_FM_PORT_H_ +#define LNXWRP_SYSFS_FM_PORT_H_ + +#include "lnxwrp_sysfs.h" + +int fm_port_sysfs_create(struct device *dev); +void fm_port_sysfs_destroy(struct device *dev); + +#endif /* LNXWRP_SYSFS_FM_PORT_H_ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/wrapper/lnxwrp_fm.h @@ -0,0 +1,257 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + + @File lnxwrp_fm.h + + @Author Shlomi Gridish + + @Description FM Linux wrapper functions. + +*/ + +#ifndef __LNXWRP_FM_H__ +#define __LNXWRP_FM_H__ + +#include /* struct qman_fq */ + +#include "std_ext.h" +#include "error_ext.h" +#include "list_ext.h" + +#include "lnxwrp_fm_ext.h" + +#define __ERR_MODULE__ MODULE_FM + +#define FM_MAX_NUM_OF_ADV_SETTINGS 10 + +#define LNXWRP_FM_NUM_OF_SHARED_PROFILES 16 + +#if defined(CONFIG_FMAN_DISABLE_OH_TO_REUSE_RESOURCES) +#define FM_10G_OPENDMA_MIN_TRESHOLD 8 /* 10g minimum treshold if only HC is enabled and no OH port enabled */ +#define FM_OPENDMA_RX_TX_RAPORT 2 /* RX = 2*TX */ +#else +#define FM_10G_OPENDMA_MIN_TRESHOLD 7 /* 10g minimum treshold if 7 OH ports are enabled */ +#define FM_OPENDMA_RX_TX_RAPORT 1 /* RX = TX */ +#endif +#define FM_DEFAULT_TX10G_OPENDMA 8 /* default TX 10g open dmas */ +#define FM_DEFAULT_RX10G_OPENDMA 8 /* default RX 10g open dmas */ + +typedef enum { + e_NO_PCD = 0, + e_FM_PCD_3_TUPLE +} e_LnxWrpFmPortPcdDefUseCase; + + +typedef struct t_FmTestFq { + struct qman_fq fq_base; + t_Handle h_Arg; +} t_FmTestFq; + +typedef struct { + uint8_t id; /* sw port id, see SW_PORT_ID_TO_HW_PORT_ID() in fm_common.h */ + int minor; + char name[20]; + bool active; + uint64_t phys_baseAddr; + uint64_t baseAddr; /* Port's *virtual* address */ + uint32_t memSize; + t_WrpFmPortDevSettings settings; + uint8_t totalNumOfSchemes; + uint8_t schemesBase; + uint8_t numOfSchemesUsed; + uint32_t pcdBaseQ; + uint16_t pcdNumOfQs; + struct fm_port_pcd_param pcd_owner_params; + e_LnxWrpFmPortPcdDefUseCase defPcd; + t_Handle h_DefNetEnv; + t_Handle h_Schemes[FM_PCD_KG_NUM_OF_SCHEMES]; + t_FmPortBufferPrefixContent buffPrefixContent; + t_Handle h_Dev; + t_Handle h_LnxWrpFmDev; + uint16_t txCh; + struct device *dev; + struct device_attribute *dev_attr_stats; + struct device_attribute *dev_attr_regs; +} t_LnxWrpFmPortDev; + +typedef struct { + uint8_t id; + bool active; + uint64_t baseAddr; + uint32_t memSize; + t_WrpFmMacDevSettings settings; + t_Handle h_Dev; + t_Handle h_LnxWrpFmDev; +} t_LnxWrpFmMacDev; + +/* information about all active ports for an FMan. + * !Some ports may be disabled by u-boot, thus will not be available */ +struct fm_active_ports { + uint32_t num_oh_ports; + uint32_t num_tx_ports; + uint32_t num_rx_ports; + uint32_t num_tx25_ports; + uint32_t num_rx25_ports; + uint32_t num_tx10_ports; + uint32_t num_rx10_ports; +}; + +/* FMan resources precalculated at fm probe based + * on available FMan port. */ +struct fm_resource_settings { + /* buffers - fifo sizes */ + uint32_t tx1g_num_buffers; + uint32_t rx1g_num_buffers; + uint32_t tx2g5_num_buffers; /* Not supported yet by LLD */ + uint32_t rx2g5_num_buffers; /* Not supported yet by LLD */ + uint32_t tx10g_num_buffers; + uint32_t rx10g_num_buffers; + uint32_t oh_num_buffers; + uint32_t shared_ext_buffers; + + /* open DMAs */ + uint32_t tx_1g_dmas; + uint32_t rx_1g_dmas; + uint32_t tx_2g5_dmas; /* Not supported yet by LLD */ + uint32_t rx_2g5_dmas; /* Not supported yet by LLD */ + uint32_t tx_10g_dmas; + uint32_t rx_10g_dmas; + uint32_t oh_dmas; + uint32_t shared_ext_open_dma; + + /* Tnums */ + uint32_t tx_1g_tnums; + uint32_t rx_1g_tnums; + uint32_t tx_2g5_tnums; /* Not supported yet by LLD */ + uint32_t rx_2g5_tnums; /* Not supported yet by LLD */ + uint32_t tx_10g_tnums; + uint32_t rx_10g_tnums; + uint32_t oh_tnums; + uint32_t shared_ext_tnums; +}; + +typedef struct { + uint8_t id; + char name[10]; + bool active; + bool pcdActive; + bool prsActive; + bool kgActive; + bool ccActive; + bool plcrActive; + e_LnxWrpFmPortPcdDefUseCase defPcd; + uint32_t usedSchemes; + uint8_t totalNumOfSharedSchemes; + uint8_t sharedSchemesBase; + uint8_t numOfSchemesUsed; + uint8_t defNetEnvId; + uint64_t fmPhysBaseAddr; + uint64_t fmBaseAddr; + uint32_t fmMemSize; + uint64_t fmMuramPhysBaseAddr; + uint64_t fmMuramBaseAddr; + uint32_t fmMuramMemSize; + uint64_t fmRtcPhysBaseAddr; + uint64_t fmRtcBaseAddr; + uint32_t fmRtcMemSize; + int irq; + int err_irq; + t_WrpFmDevSettings fmDevSettings; + t_WrpFmPcdDevSettings fmPcdDevSettings; + t_Handle h_Dev; + uint16_t hcCh; + + t_Handle h_MuramDev; + t_Handle h_PcdDev; + t_Handle h_RtcDev; + + t_LnxWrpFmPortDev hcPort; + t_LnxWrpFmPortDev opPorts[FM_MAX_NUM_OF_OH_PORTS-1]; + t_LnxWrpFmPortDev rxPorts[FM_MAX_NUM_OF_RX_PORTS]; + t_LnxWrpFmPortDev txPorts[FM_MAX_NUM_OF_TX_PORTS]; + t_LnxWrpFmMacDev macs[FM_MAX_NUM_OF_MACS]; + struct fm_active_ports fm_active_ports_info; + struct fm_resource_settings fm_resource_settings_info; + + struct device *dev; + struct resource *res; + int major; + struct class *fm_class; + struct device_attribute *dev_attr_stats; + struct device_attribute *dev_attr_regs; + + struct device_attribute *dev_pcd_attr_stats; + struct device_attribute *dev_pcd_attr_regs; + + struct qman_fq *hc_tx_conf_fq, *hc_tx_err_fq, *hc_tx_fq; +} t_LnxWrpFmDev; + +typedef struct { + t_LnxWrpFmDev *p_FmDevs[INTG_MAX_NUM_OF_FM]; +} t_LnxWrpFm; +#define LNXWRP_FM_OBJECT(ptr) LIST_OBJECT(ptr, t_LnxWrpFm, fms[((t_LnxWrpFmDev *)ptr)->id]) + + +t_Error LnxwrpFmIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned long arg, bool compat); +t_Error LnxwrpFmPortIOCTL(t_LnxWrpFmPortDev *p_LnxWrpFmPortDev, unsigned int cmd, unsigned long arg, bool compat); + + +static __inline__ t_Error AllocSchemesForPort(t_LnxWrpFmDev *p_LnxWrpFmDev, uint8_t numSchemes, uint8_t *p_BaseSchemeNum) +{ + uint32_t schemeMask; + uint8_t i; + + if (!numSchemes) + RETURN_ERROR(MINOR, E_INVALID_VALUE, NO_MSG); + + schemeMask = 0x80000000; + *p_BaseSchemeNum = 0xff; + + for (i=0; schemeMask && numSchemes; schemeMask>>=1, i++) + if ((p_LnxWrpFmDev->usedSchemes & schemeMask) == 0) + { + p_LnxWrpFmDev->usedSchemes |= schemeMask; + numSchemes--; + if (*p_BaseSchemeNum==0xff) + *p_BaseSchemeNum = i; + } + else if (*p_BaseSchemeNum!=0xff) + RETURN_ERROR(MINOR, E_INVALID_STATE, ("Fragmentation on schemes array!!!")); + + if (numSchemes) + RETURN_ERROR(MINOR, E_FULL, ("schemes!!!")); + return E_OK; +} + + +#endif /* __LNXWRP_FM_H__ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/system/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/system/Makefile @@ -0,0 +1,10 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk +# + +obj-y += sys_io.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/src/system/sys_io.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/src/system/sys_io.c @@ -0,0 +1,171 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +#define MODVERSIONS +#endif +#ifdef MODVERSIONS +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) +#include +#else +#include +#endif /* LINUX_VERSION_CODE */ +#endif /* MODVERSIONS */ + +#include +#include + +#include + +#include "std_ext.h" +#include "error_ext.h" +#include "string_ext.h" +#include "list_ext.h" +#include "sys_io_ext.h" + + +#define __ERR_MODULE__ MODULE_UNKNOWN + + +typedef struct { + uint64_t virtAddr; + uint64_t physAddr; + uint32_t size; + t_List node; +} t_IoMap; +#define IOMAP_OBJECT(ptr) LIST_OBJECT(ptr, t_IoMap, node) + +LIST(mapsList); + + +static void EnqueueIoMap(t_IoMap *p_IoMap) +{ + uint32_t intFlags; + + intFlags = XX_DisableAllIntr(); + LIST_AddToTail(&p_IoMap->node, &mapsList); + XX_RestoreAllIntr(intFlags); +} + +static t_IoMap * FindIoMapByVirtAddr(uint64_t addr) +{ + t_IoMap *p_IoMap; + t_List *p_Pos; + + LIST_FOR_EACH(p_Pos, &mapsList) + { + p_IoMap = IOMAP_OBJECT(p_Pos); + if ((addr >= p_IoMap->virtAddr) && (addr < p_IoMap->virtAddr+p_IoMap->size)) + return p_IoMap; + } + + return NULL; +} + +static t_IoMap * FindIoMapByPhysAddr(uint64_t addr) +{ + t_IoMap *p_IoMap; + t_List *p_Pos; + + LIST_FOR_EACH(p_Pos, &mapsList) + { + p_IoMap = IOMAP_OBJECT(p_Pos); + if ((addr >= p_IoMap->physAddr) && (addr < p_IoMap->physAddr+p_IoMap->size)) + return p_IoMap; + } + + return NULL; +} + +t_Error SYS_RegisterIoMap (uint64_t virtAddr, uint64_t physAddr, uint32_t size) +{ + t_IoMap *p_IoMap; + + p_IoMap = (t_IoMap*)XX_Malloc(sizeof(t_IoMap)); + if (!p_IoMap) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("message handler object!!!")); + memset(p_IoMap, 0, sizeof(t_IoMap)); + + p_IoMap->virtAddr = virtAddr; + p_IoMap->physAddr = physAddr; + p_IoMap->size = size; + + INIT_LIST(&p_IoMap->node); + EnqueueIoMap(p_IoMap); + + return E_OK; +} + +t_Error SYS_UnregisterIoMap (uint64_t virtAddr) +{ + t_IoMap *p_IoMap = FindIoMapByVirtAddr(virtAddr); + if (!p_IoMap) + RETURN_ERROR(MINOR, E_NO_DEVICE, ("message handler not found in list!!!")); + + LIST_Del(&p_IoMap->node); + XX_Free(p_IoMap); + + return E_OK; +} + +uint64_t SYS_PhysToVirt(uint64_t addr) +{ + t_IoMap *p_IoMap = FindIoMapByPhysAddr(addr); + if (p_IoMap) + { + /* This is optimization - put the latest in the list-head - like a cache */ + if (mapsList.p_Next != &p_IoMap->node) + { + uint32_t intFlags = XX_DisableAllIntr(); + LIST_DelAndInit(&p_IoMap->node); + LIST_Add(&p_IoMap->node, &mapsList); + XX_RestoreAllIntr(intFlags); + } + return (uint64_t)(addr - p_IoMap->physAddr + p_IoMap->virtAddr); + } + return PTR_TO_UINT(phys_to_virt((unsigned long)addr)); +} + +uint64_t SYS_VirtToPhys(uint64_t addr) +{ + t_IoMap *p_IoMap; + + if (addr == 0) + return 0; + + p_IoMap = FindIoMapByVirtAddr(addr); + if (p_IoMap) + return (uint64_t)(addr - p_IoMap->virtAddr + p_IoMap->physAddr); + return (uint64_t)virt_to_phys(UINT_TO_PTR(addr)); +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/xx_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/xx_ext.h @@ -0,0 +1,881 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File xx_ext.h + + @Description Prototypes, externals and typedefs for system-supplied + (external) routines +*//***************************************************************************/ + +#ifndef __XX_EXT_H +#define __XX_EXT_H + +#include "std_ext.h" +#include "part_ext.h" + +#if defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED) +#include "xx_integration_ext.h" +#endif /* defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED) */ + + +/**************************************************************************//** + @Group xx_id XX Interface (System call hooks) + + @Description Prototypes, externals and typedefs for system-supplied + (external) routines + + @{ +*//***************************************************************************/ + +#if (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) +/**************************************************************************//** + @Function XX_EventById + + @Description Event reporting routine - executed only when REPORT_EVENTS=1. + + @Param[in] event - Event code (e_Event). + @Param[in] appId - Application identifier. + @Param[in] flags - Event flags. + @Param[in] msg - Event message. + + @Return None +*//***************************************************************************/ +void XX_EventById(uint32_t event, t_Handle appId, uint16_t flags, char *msg); + +#else /* not REPORT_EVENTS */ +#define XX_EventById(event, appId, flags, msg) +#endif /* REPORT_EVENTS */ + + + +#ifdef DEBUG_XX_MALLOC +void * XX_MallocDebug(uint32_t size, char *fname, int line); + +void * XX_MallocSmartDebug(uint32_t size, + int memPartitionId, + uint32_t alignment, + char *fname, + int line); + +#define XX_Malloc(sz) \ + XX_MallocDebug((sz), __FILE__, __LINE__) + +#define XX_MallocSmart(sz, memt, al) \ + XX_MallocSmartDebug((sz), (memt), (al), __FILE__, __LINE__) + +#else /* not DEBUG_XX_MALLOC */ +/**************************************************************************//** + @Function XX_Malloc + + @Description allocates contiguous block of memory. + + @Param[in] size - Number of bytes to allocate. + + @Return The address of the newly allocated block on success, NULL on failure. +*//***************************************************************************/ +void * XX_Malloc(uint32_t size); + +/**************************************************************************//** + @Function XX_MallocSmart + + @Description Allocates contiguous block of memory in a specified + alignment and from the specified segment. + + @Param[in] size - Number of bytes to allocate. + @Param[in] memPartitionId - Memory partition ID; The value zero must + be mapped to the default heap partition. + @Param[in] alignment - Required memory alignment (in bytes). + + @Return The address of the newly allocated block on success, NULL on failure. +*//***************************************************************************/ +void * XX_MallocSmart(uint32_t size, int memPartitionId, uint32_t alignment); +#endif /* not DEBUG_XX_MALLOC */ + +/**************************************************************************//** + @Function XX_FreeSmart + + @Description Frees the memory block pointed to by "p". + Only for memory allocated by XX_MallocSmart + + @Param[in] p_Memory - pointer to the memory block. + + @Return None. +*//***************************************************************************/ +void XX_FreeSmart(void *p_Memory); + +/**************************************************************************//** + @Function XX_Free + + @Description frees the memory block pointed to by "p". + + @Param[in] p_Memory - pointer to the memory block. + + @Return None. +*//***************************************************************************/ +void XX_Free(void *p_Memory); + +#ifndef NCSW_LINUX +/**************************************************************************//** + @Function XX_GetMemPartitionBase + + @Description This routine gets the address of a memory segment according to + the memory type. + + @Param[in] memPartitionId - Memory partition ID; The value zero must + be mapped to the default heap partition. + + @Return The address of the required memory type. +*//***************************************************************************/ +void * XX_GetMemPartitionBase(int memPartitionId); +#endif + +/**************************************************************************//** + @Function XX_Print + + @Description print a string. + + @Param[in] str - string to print. + + @Return None. +*//***************************************************************************/ +void XX_Print(char *str, ...); + +/**************************************************************************//** + @Function XX_GetChar + + @Description Get character from console. + + @Return Character is returned on success. Zero is returned otherwise. +*//***************************************************************************/ +char XX_GetChar(void); + +/**************************************************************************//** + @Function XX_SetIntr + + @Description Set an interrupt service routine for a specific interrupt source. + + @Param[in] irq - Interrupt ID (system-specific number). + @Param[in] f_Isr - Callback routine that will be called when the interrupt occurs. + @Param[in] handle - The argument for the user callback routine. + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_SetIntr(int irq, t_Isr *f_Isr, t_Handle handle); + +/**************************************************************************//** + @Function XX_FreeIntr + + @Description Free a specific interrupt and a specific callback routine. + + @Param[in] irq - Interrupt ID (system-specific number). + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_FreeIntr(int irq); + +/**************************************************************************//** + @Function XX_EnableIntr + + @Description Enable a specific interrupt. + + @Param[in] irq - Interrupt ID (system-specific number). + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_EnableIntr(int irq); + +/**************************************************************************//** + @Function XX_DisableIntr + + @Description Disable a specific interrupt. + + @Param[in] irq - Interrupt ID (system-specific number). + + @Return E_OK on success; error code otherwise.. +*//***************************************************************************/ +t_Error XX_DisableIntr(int irq); + +#if !(defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED)) +/**************************************************************************//** + @Function XX_DisableAllIntr + + @Description Disable all interrupts by masking them at the CPU. + + @Return A value that represents the interrupts state before the + operation, and should be passed to the matching + XX_RestoreAllIntr() call. +*//***************************************************************************/ +uint32_t XX_DisableAllIntr(void); + +/**************************************************************************//** + @Function XX_RestoreAllIntr + + @Description Restore previous state of interrupts level at the CPU. + + @Param[in] flags - A value that represents the interrupts state to restore, + as returned by the matching call for XX_DisableAllIntr(). + + @Return None. +*//***************************************************************************/ +void XX_RestoreAllIntr(uint32_t flags); +#endif /* !(defined(__MWERKS__) && defined(OPTIMIZED_FOR_SPEED)) */ + +/**************************************************************************//** + @Function XX_Call + + @Description Call a service in another task. + + Activate the routine "f" via the queue identified by "IntrManagerId". The + parameter to "f" is Id - the handle of the destination object + + @Param[in] intrManagerId - Queue ID. + @Param[in] f - routine pointer. + @Param[in] Id - the parameter to be passed to f(). + @Param[in] h_App - Application handle. + @Param[in] flags - Unused, + + @Return E_OK is returned on success. E_FAIL is returned otherwise (usually an operating system level failure). +*//***************************************************************************/ +t_Error XX_Call( uint32_t intrManagerId, + t_Error (* f)(t_Handle), + t_Handle Id, + t_Handle h_App, + uint16_t flags ); + +/**************************************************************************//** + @Function XX_Exit + + @Description Stop execution and report status (where it is applicable) + + @Param[in] status - exit status +*//***************************************************************************/ +void XX_Exit(int status); + +/*****************************************************************************/ +/* Tasklet Service Routines */ +/*****************************************************************************/ +typedef t_Handle t_TaskletHandle; + +/**************************************************************************//** + @Function XX_InitTasklet + + @Description Create and initialize a tasklet object. + + @Param[in] routine - A routine to be ran as a tasklet. + @Param[in] data - An argument to pass to the tasklet. + + @Return Tasklet handle is returned on success. NULL is returned otherwise. +*//***************************************************************************/ +t_TaskletHandle XX_InitTasklet (void (*routine)(void *), void *data); + +/**************************************************************************//** + @Function XX_FreeTasklet + + @Description Free a tasklet object. + + @Param[in] h_Tasklet - A handle to a tasklet to be free. + + @Return None. +*//***************************************************************************/ +void XX_FreeTasklet (t_TaskletHandle h_Tasklet); + +/**************************************************************************//** + @Function XX_ScheduleTask + + @Description Schedule a tasklet object. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + @Param[in] immediate - Indicate whether to schedule this tasklet on + the immediate queue or on the delayed one. + + @Return 0 - on success. Error code - otherwise. +*//***************************************************************************/ +int XX_ScheduleTask(t_TaskletHandle h_Tasklet, int immediate); + +/**************************************************************************//** + @Function XX_FlushScheduledTasks + + @Description Flush all tasks there are in the scheduled tasks queue. + + @Return None. +*//***************************************************************************/ +void XX_FlushScheduledTasks(void); + +/**************************************************************************//** + @Function XX_TaskletIsQueued + + @Description Check if task is queued. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + + @Return 1 - task is queued. 0 - otherwise. +*//***************************************************************************/ +int XX_TaskletIsQueued(t_TaskletHandle h_Tasklet); + +/**************************************************************************//** + @Function XX_SetTaskletData + + @Description Set data to a scheduled task. Used to change data of already + scheduled task. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + @Param[in] data - Data to be set. +*//***************************************************************************/ +void XX_SetTaskletData(t_TaskletHandle h_Tasklet, t_Handle data); + +/**************************************************************************//** + @Function XX_GetTaskletData + + @Description Get the data of scheduled task. + + @Param[in] h_Tasklet - A handle to a tasklet to be scheduled. + + @Return handle to the data of the task. +*//***************************************************************************/ +t_Handle XX_GetTaskletData(t_TaskletHandle h_Tasklet); + +/**************************************************************************//** + @Function XX_BottomHalf + + @Description Bottom half implementation, invoked by the interrupt handler. + + This routine handles all bottom-half tasklets with interrupts + enabled. + + @Return None. +*//***************************************************************************/ +void XX_BottomHalf(void); + + +/*****************************************************************************/ +/* Spinlock Service Routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Function XX_InitSpinlock + + @Description Creates a spinlock. + + @Return Spinlock handle is returned on success; NULL otherwise. +*//***************************************************************************/ +t_Handle XX_InitSpinlock(void); + +/**************************************************************************//** + @Function XX_FreeSpinlock + + @Description Frees the memory allocated for the spinlock creation. + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return None. +*//***************************************************************************/ +void XX_FreeSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_LockSpinlock + + @Description Locks a spinlock. + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return None. +*//***************************************************************************/ +void XX_LockSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_UnlockSpinlock + + @Description Unlocks a spinlock. + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return None. +*//***************************************************************************/ +void XX_UnlockSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_LockIntrSpinlock + + @Description Locks a spinlock (interrupt safe). + + @Param[in] h_Spinlock - A handle to a spinlock. + + @Return A value that represents the interrupts state before the + operation, and should be passed to the matching + XX_UnlockIntrSpinlock() call. +*//***************************************************************************/ +uint32_t XX_LockIntrSpinlock(t_Handle h_Spinlock); + +/**************************************************************************//** + @Function XX_UnlockIntrSpinlock + + @Description Unlocks a spinlock (interrupt safe). + + @Param[in] h_Spinlock - A handle to a spinlock. + @Param[in] intrFlags - A value that represents the interrupts state to + restore, as returned by the matching call for + XX_LockIntrSpinlock(). + + @Return None. +*//***************************************************************************/ +void XX_UnlockIntrSpinlock(t_Handle h_Spinlock, uint32_t intrFlags); + + +/*****************************************************************************/ +/* Timers Service Routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Function XX_CurrentTime + + @Description Returns current system time. + + @Return Current system time (in milliseconds). +*//***************************************************************************/ +uint32_t XX_CurrentTime(void); + +/**************************************************************************//** + @Function XX_CreateTimer + + @Description Creates a timer. + + @Return Timer handle is returned on success; NULL otherwise. +*//***************************************************************************/ +t_Handle XX_CreateTimer(void); + +/**************************************************************************//** + @Function XX_FreeTimer + + @Description Frees the memory allocated for the timer creation. + + @Param[in] h_Timer - A handle to a timer. + + @Return None. +*//***************************************************************************/ +void XX_FreeTimer(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_StartTimer + + @Description Starts a timer. + + The user can select to start the timer as periodic timer or as + one-shot timer. The user should provide a callback routine that + will be called when the timer expires. + + @Param[in] h_Timer - A handle to a timer. + @Param[in] msecs - Timer expiration period (in milliseconds). + @Param[in] periodic - TRUE for a periodic timer; + FALSE for a one-shot timer.. + @Param[in] f_TimerExpired - A callback routine to be called when the + timer expires. + @Param[in] h_Arg - The argument to pass in the timer-expired + callback routine. + + @Return None. +*//***************************************************************************/ +void XX_StartTimer(t_Handle h_Timer, + uint32_t msecs, + bool periodic, + void (*f_TimerExpired)(t_Handle h_Arg), + t_Handle h_Arg); + +/**************************************************************************//** + @Function XX_StopTimer + + @Description Frees the memory allocated for the timer creation. + + @Param[in] h_Timer - A handle to a timer. + + @Return None. +*//***************************************************************************/ +void XX_StopTimer(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_GetExpirationTime + + @Description Returns the time (in milliseconds) remaining until the + expiration of a timer. + + @Param[in] h_Timer - A handle to a timer. + + @Return The time left until the timer expires. +*//***************************************************************************/ +uint32_t XX_GetExpirationTime(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_ModTimer + + @Description Updates the expiration time of a timer. + + This routine adds the given time to the current system time, + and sets this value as the new expiration time of the timer. + + @Param[in] h_Timer - A handle to a timer. + @Param[in] msecs - The new interval until timer expiration + (in milliseconds). + + @Return None. +*//***************************************************************************/ +void XX_ModTimer(t_Handle h_Timer, uint32_t msecs); + +/**************************************************************************//** + @Function XX_TimerIsActive + + @Description Checks whether a timer is active (pending) or not. + + @Param[in] h_Timer - A handle to a timer. + + @Return 0 - the timer is inactive; Non-zero value - the timer is active; +*//***************************************************************************/ +int XX_TimerIsActive(t_Handle h_Timer); + +/**************************************************************************//** + @Function XX_Sleep + + @Description Non-busy wait until the desired time (in milliseconds) has passed. + + @Param[in] msecs - The requested sleep time (in milliseconds). + + @Return None. + + @Cautions This routine enables interrupts during its wait time. +*//***************************************************************************/ +uint32_t XX_Sleep(uint32_t msecs); + +/**************************************************************************//** + @Function XX_UDelay + + @Description Busy-wait until the desired time (in microseconds) has passed. + + @Param[in] usecs - The requested delay time (in microseconds). + + @Return None. + + @Cautions It is highly unrecommended to call this routine during interrupt + time, because the system time may not be updated properly during + the delay loop. The behavior of this routine during interrupt + time is unexpected. +*//***************************************************************************/ +void XX_UDelay(uint32_t usecs); + + +/*****************************************************************************/ +/* Other Service Routines */ +/*****************************************************************************/ + +/**************************************************************************//** + @Function XX_PhysToVirt + + @Description Translates a physical address to the matching virtual address. + + @Param[in] addr - The physical address to translate. + + @Return Virtual address. +*//***************************************************************************/ +void * XX_PhysToVirt(physAddress_t addr); + +/**************************************************************************//** + @Function XX_VirtToPhys + + @Description Translates a virtual address to the matching physical address. + + @Param[in] addr - The virtual address to translate. + + @Return Physical address. +*//***************************************************************************/ +physAddress_t XX_VirtToPhys(void *addr); + + +/**************************************************************************//** + @Group xx_ipc XX Inter-Partition-Communication API + + @Description The following API is to be used when working with multiple + partitions configuration. + + @{ +*//***************************************************************************/ + +#define XX_IPC_MAX_ADDR_NAME_LENGTH 16 /**< Maximum length of an endpoint name string; + The IPC service can use this constant to limit + the storage space for IPC endpoint names. */ + + +/**************************************************************************//** + @Function t_IpcMsgCompletion + + @Description Callback function used upon IPC non-blocking transaction completion + to return message buffer to the caller and to forward reply if available. + + This callback function may be attached by the source endpoint to any outgoing + IPC message to indicate a non-blocking send (see also XX_IpcSendMessage() routine). + Upon completion of an IPC transaction (consisting of a message and an optional reply), + the IPC service invokes this callback routine to return the message buffer to the sender + and to provide the received reply, if requested. + + User provides this function. Driver invokes it. + + @Param[in] h_Module - Abstract handle to the sending module - the same handle as was passed + in the XX_IpcSendMessage() function; This handle is typically used to point + to the internal data structure of the source endpoint. + @Param[in] p_Msg - Pointer to original (sent) message buffer; + The source endpoint can free (or reuse) this buffer when message + completion callback is called. + @Param[in] p_Reply - Pointer to (received) reply buffer; + This pointer is the same as was provided by the source endpoint in + XX_IpcSendMessage(). + @Param[in] replyLength - Length (in bytes) of actual data in the reply buffer. + @Param[in] status - Completion status - E_OK or failure indication, e.g. IPC transaction completion + timeout. + + @Return None + *//***************************************************************************/ +typedef void (t_IpcMsgCompletion)(t_Handle h_Module, + uint8_t *p_Msg, + uint8_t *p_Reply, + uint32_t replyLength, + t_Error status); + +/**************************************************************************//** + @Function t_IpcMsgHandler + + @Description Callback function used as IPC message handler. + + The IPC service invokes message handlers for each IPC message received. + The actual function pointer should be registered by each destination endpoint + via the XX_IpcRegisterMsgHandler() routine. + + User provides this function. Driver invokes it. + + @Param[in] h_Module - Abstract handle to the message handling module - the same handle as + was passed in the XX_IpcRegisterMsgHandler() function; this handle is + typically used to point to the internal data structure of the destination + endpoint. + @Param[in] p_Msg - Pointer to message buffer with data received from peer. + @Param[in] msgLength - Length (in bytes) of message data. + @Param[in] p_Reply - Pointer to reply buffer, to be filled by the message handler and then sent + by the IPC service; + The reply buffer is allocated by the IPC service with size equals to the + replyLength parameter provided in message handler registration (see + XX_IpcRegisterMsgHandler() function); + If replyLength was initially specified as zero during message handler registration, + the IPC service may set this pointer to NULL and assume that a reply is not needed; + The IPC service is also responsible for freeing the reply buffer after the + reply has been sent or dismissed. + @Param[in,out] p_ReplyLength - Pointer to reply length, which has a dual role in this function: + [In] equals the replyLength parameter provided in message handler + registration (see XX_IpcRegisterMsgHandler() function), and + [Out] should be updated by message handler to the actual reply length; if + this value is set to zero, the IPC service must assume that a reply should + not be sent; + Note: If p_Reply is not NULL, p_ReplyLength must not be NULL as well. + + @Return E_OK on success; Error code otherwise. + *//***************************************************************************/ +typedef t_Error (t_IpcMsgHandler)(t_Handle h_Module, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength); + +/**************************************************************************//** + @Function XX_IpcRegisterMsgHandler + + @Description IPC mailbox registration. + + This function is used for registering an IPC message handler in the IPC service. + This function is called by each destination endpoint to indicate that it is ready + to handle incoming messages. The IPC service invokes the message handler upon receiving + a message addressed to the specified destination endpoint. + + @Param[in] addr - The address name string associated with the destination endpoint; + This address must be unique across the IPC service domain to ensure + correct message routing. + @Param[in] f_MsgHandler - Pointer to the message handler callback for processing incoming + message; invoked by the IPC service upon receiving a message + addressed to the destination endpoint specified by the addr + parameter. + @Param[in] h_Module - Abstract handle to the message handling module, passed unchanged + to f_MsgHandler callback function. + @Param[in] replyLength - The maximal data length (in bytes) of any reply that the specified message handler + may generate; the IPC service provides the message handler with buffer + for reply according to the length specified here (refer also to the description + of #t_IpcMsgHandler callback function type); + This size shall be zero if the message handler never generates replies. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcRegisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH], + t_IpcMsgHandler *f_MsgHandler, + t_Handle h_Module, + uint32_t replyLength); + +/**************************************************************************//** + @Function XX_IpcUnregisterMsgHandler + + @Description Release IPC mailbox routine. + + This function is used for unregistering an IPC message handler from the IPC service. + This function is called by each destination endpoint to indicate that it is no longer + capable of handling incoming messages. + + @Param[in] addr - The address name string associated with the destination endpoint; + This address is the same as was used when the message handler was + registered via XX_IpcRegisterMsgHandler(). + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcUnregisterMsgHandler(char addr[XX_IPC_MAX_ADDR_NAME_LENGTH]); + +/**************************************************************************//** + @Function XX_IpcInitSession + + @Description This function is used for creating an IPC session between the source endpoint + and the destination endpoint. + + The actual implementation and representation of a session is left for the IPC service. + The function returns an abstract handle to the created session. This handle shall be used + by the source endpoint in subsequent calls to XX_IpcSendMessage(). + The IPC service assumes that before this function is called, no messages are sent from + the specified source endpoint to the specified destination endpoint. + + The IPC service may use a connection-oriented approach or a connectionless approach (or both) + as described below. + + @par Connection-Oriented Approach + + The IPC service may implement a session in a connection-oriented approach - when this function is called, + the IPC service should take the necessary steps to bring up a source-to-destination channel for messages + and a destination-to-source channel for replies. The returned handle should represent the internal + representation of these channels. + + @par Connectionless Approach + + The IPC service may implement a session in a connectionless approach - when this function is called, the + IPC service should not perform any particular steps, but it must store the pair of source and destination + addresses in some session representation and return it as a handle. When XX_IpcSendMessage() shall be + called, the IPC service may use this handle to provide the necessary identifiers for routing the messages + through the connectionless medium. + + @Param[in] destAddr - The address name string associated with the destination endpoint. + @Param[in] srcAddr - The address name string associated with the source endpoint. + + @Return Abstract handle to the initialized session, or NULL on error. +*//***************************************************************************/ +t_Handle XX_IpcInitSession(char destAddr[XX_IPC_MAX_ADDR_NAME_LENGTH], + char srcAddr[XX_IPC_MAX_ADDR_NAME_LENGTH]); + +/**************************************************************************//** + @Function XX_IpcFreeSession + + @Description This function is used for terminating an existing IPC session between a source endpoint + and a destination endpoint. + + The IPC service assumes that after this function is called, no messages shall be sent from + the associated source endpoint to the associated destination endpoint. + + @Param[in] h_Session - Abstract handle to the IPC session - the same handle as was originally + returned by the XX_IpcInitSession() function. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcFreeSession(t_Handle h_Session); + +/**************************************************************************//** + @Function XX_IpcSendMessage + + @Description IPC message send routine. + + This function may be used by a source endpoint to send an IPC message to a destination + endpoint. The source endpoint cannot send a message to the destination endpoint without + first initiating a session with that destination endpoint via XX_IpcInitSession() routine. + + The source endpoint must provide the buffer pointer and length of the outgoing message. + Optionally, it may also provide a buffer for an expected reply. In the latter case, the + transaction is not considered complete by the IPC service until the reply has been received. + If the source endpoint does not provide a reply buffer, the transaction is considered + complete after the message has been sent. The source endpoint must keep the message (and + optional reply) buffers valid until the transaction is complete. + + @par Non-blocking mode + + The source endpoint may request a non-blocking send by providing a non-NULL pointer to a message + completion callback function (f_Completion). Upon completion of the IPC transaction (consisting of a + message and an optional reply), the IPC service invokes this callback routine to return the message + buffer to the sender and to provide the received reply, if requested. + + @par Blocking mode + + The source endpoint may request a blocking send by setting f_Completion to NULL. The function is + expected to block until the IPC transaction is complete - either the reply has been received or (if no reply + was requested) the message has been sent. + + @Param[in] h_Session - Abstract handle to the IPC session - the same handle as was originally + returned by the XX_IpcInitSession() function. + @Param[in] p_Msg - Pointer to message buffer to send. + @Param[in] msgLength - Length (in bytes) of actual data in the message buffer. + @Param[in] p_Reply - Pointer to reply buffer - if this buffer is not NULL, the IPC service + fills this buffer with the received reply data; + In blocking mode, the reply data must be valid when the function returns; + In non-blocking mode, the reply data is valid when f_Completion is called; + If this pointer is NULL, no reply is expected. + @Param[in,out] p_ReplyLength - Pointer to reply length, which has a dual role in this function: + [In] specifies the maximal length (in bytes) of the reply buffer pointed by + p_Reply, and + [Out] in non-blocking mode this value is updated by the IPC service to the + actual reply length (in bytes). + @Param[in] f_Completion - Pointer to a completion callback to be used in non-blocking send mode; + The completion callback is invoked by the IPC service upon + completion of the IPC transaction (consisting of a message and an optional + reply); + If this pointer is NULL, the function is expected to block until the IPC + transaction is complete. + @Param[in] h_Arg - Abstract handle to the sending module; passed unchanged to the f_Completion + callback function as the first argument. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error XX_IpcSendMessage(t_Handle h_Session, + uint8_t *p_Msg, + uint32_t msgLength, + uint8_t *p_Reply, + uint32_t *p_ReplyLength, + t_IpcMsgCompletion *f_Completion, + t_Handle h_Arg); + + +/** @} */ /* end of xx_ipc group */ +/** @} */ /* end of xx_id group */ + + +#endif /* __XX_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/stdarg_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/stdarg_ext.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __STDARG_EXT_H +#define __STDARG_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include + +#else +#include + +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +#endif /* __STDARG_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/ncsw_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/ncsw_ext.h @@ -0,0 +1,430 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + /**************************************************************************//** + @File ncsw_ext.h + + @Description General NetCommSw Standard Definitions +*//***************************************************************************/ + +#ifndef __NCSW_EXT_H +#define __NCSW_EXT_H + +#include "memcpy_ext.h" + + +#define WRITE_BLOCK IOMemSet32 +#define COPY_BLOCK Mem2IOCpy32 + +#define PTR_TO_UINT(_ptr) ((uintptr_t)(_ptr)) +#define UINT_TO_PTR(_val) ((void*)(uintptr_t)(_val)) + +#define PTR_MOVE(_ptr, _offset) (void*)((uint8_t*)(_ptr) + (_offset)) + + +#define WRITE_UINT8_UINT24(arg, data08, data24) WRITE_UINT32(arg,((uint32_t)(data08)<<24)|((uint32_t)(data24)&0x00FFFFFF)) +#define WRITE_UINT24_UINT8(arg, data24, data08) WRITE_UINT32(arg,((uint32_t)(data24)<< 8)|((uint32_t)(data08)&0x000000FF)) + +/* Little-Endian access macros */ + +#define WRITE_UINT16_LE(arg, data) \ + WRITE_UINT16((arg), SwapUint16(data)) + +#define WRITE_UINT32_LE(arg, data) \ + WRITE_UINT32((arg), SwapUint32(data)) + +#define WRITE_UINT64_LE(arg, data) \ + WRITE_UINT64((arg), SwapUint64(data)) + +#define GET_UINT16_LE(arg) \ + SwapUint16(GET_UINT16(arg)) + +#define GET_UINT32_LE(arg) \ + SwapUint32(GET_UINT32(arg)) + +#define GET_UINT64_LE(arg) \ + SwapUint64(GET_UINT64(arg)) + +/* Write and Read again macros */ +#define WRITE_UINT_SYNC(size, arg, data) \ + do { \ + WRITE_UINT##size((arg), (data)); \ + CORE_MemoryBarrier(); \ + } while (0) + +#define WRITE_UINT8_SYNC(arg, data) WRITE_UINT_SYNC(8, (arg), (data)) + +#define WRITE_UINT16_SYNC(arg, data) WRITE_UINT_SYNC(16, (arg), (data)) +#define WRITE_UINT32_SYNC(arg, data) WRITE_UINT_SYNC(32, (arg), (data)) + +#define MAKE_UINT64(high32, low32) (((uint64_t)high32 << 32) | (low32)) + + +/*----------------------*/ +/* Miscellaneous macros */ +/*----------------------*/ + +#define UNUSED(X) (X=X) + +#define KILOBYTE 0x400UL /* 1024 */ +#define MEGABYTE (KILOBYTE * KILOBYTE) /* 1024*1024 */ +#define GIGABYTE (KILOBYTE * MEGABYTE) /* 1024*1024*1024 */ + +#undef NO_IRQ +#define NO_IRQ (-1) +#define NCSW_MASTER_ID (0) + +/* Macro for checking if a number is a power of 2 */ +#define POWER_OF_2(n) (!((n) & ((n)-1))) + +/* Macro for calculating log of base 2 */ +#define LOG2(num, log2Num) \ + do \ + { \ + uint64_t tmp = (num); \ + log2Num = 0; \ + while (tmp > 1) \ + { \ + log2Num++; \ + tmp >>= 1; \ + } \ + } while (0) + +#define NEXT_POWER_OF_2(_num, _nextPow) \ +do \ +{ \ + if (POWER_OF_2(_num)) \ + _nextPow = (_num); \ + else \ + { \ + uint64_t tmp = (_num); \ + _nextPow = 1; \ + while (tmp) \ + { \ + _nextPow <<= 1; \ + tmp >>= 1; \ + } \ + } \ +} while (0) + +/* Ceiling division - not the fastest way, but safer in terms of overflow */ +#define DIV_CEIL(x,y) (((x)/(y)) + ((((((x)/(y)))*(y)) == (x)) ? 0 : 1)) + +/* Round up a number to be a multiple of a second number */ +#define ROUND_UP(x,y) ((((x) + (y) - 1) / (y)) * (y)) + +/* Timing macro for converting usec units to number of ticks. */ +/* (number of usec * clock_Hz) / 1,000,000) - since */ +/* clk is in MHz units, no division needed. */ +#define USEC_TO_CLK(usec,clk) ((usec) * (clk)) +#define CYCLES_TO_USEC(cycles,clk) ((cycles) / (clk)) + +/* Timing macros for converting between nsec units and number of clocks. */ +#define NSEC_TO_CLK(nsec,clk) DIV_CEIL(((nsec) * (clk)), 1000) +#define CYCLES_TO_NSEC(cycles,clk) (((cycles) * 1000) / (clk)) + +/* Timing macros for converting between psec units and number of clocks. */ +#define PSEC_TO_CLK(psec,clk) DIV_CEIL(((psec) * (clk)), 1000000) +#define CYCLES_TO_PSEC(cycles,clk) (((cycles) * 1000000) / (clk)) + +/* Min, Max macros */ +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAX(a,b) ((a) > (b) ? (a) : (b)) +#define IN_RANGE(min,val,max) ((min)<=(val) && (val)<=(max)) + +#define ABS(a) ((a<0)?(a*-1):a) + +#if !(defined(ARRAY_SIZE)) +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#endif /* !defined(ARRAY_SIZE) */ + + +/* possible alignments */ +#define HALF_WORD_ALIGNMENT 2 +#define WORD_ALIGNMENT 4 +#define DOUBLE_WORD_ALIGNMENT 8 +#define BURST_ALIGNMENT 32 + +#define HALF_WORD_ALIGNED 0x00000001 +#define WORD_ALIGNED 0x00000003 +#define DOUBLE_WORD_ALIGNED 0x00000007 +#define BURST_ALIGNED 0x0000001f +#ifndef IS_ALIGNED +#define IS_ALIGNED(n,align) (!((uint32_t)(n) & (align - 1))) +#endif /* IS_ALIGNED */ + + +#define LAST_BUF 1 +#define FIRST_BUF 2 +#define SINGLE_BUF (LAST_BUF | FIRST_BUF) +#define MIDDLE_BUF 4 + +#define ARRAY_END -1 + +#define ILLEGAL_BASE (~0) + +#define BUF_POSITION(first, last) state[(!!(last))<<1 | !!(first)] +#define DECLARE_POSITION static uint8_t state[4] = { (uint8_t)MIDDLE_BUF, (uint8_t)FIRST_BUF, (uint8_t)LAST_BUF, (uint8_t)SINGLE_BUF }; + + +/**************************************************************************//** + @Description Timers operation mode +*//***************************************************************************/ +typedef enum e_TimerMode +{ + e_TIMER_MODE_INVALID = 0, + e_TIMER_MODE_FREE_RUN, /**< Free run - counter continues to increase + after reaching the reference value. */ + e_TIMER_MODE_PERIODIC, /**< Periodic - counter restarts counting from 0 + after reaching the reference value. */ + e_TIMER_MODE_SINGLE /**< Single (one-shot) - counter stops counting + after reaching the reference value. */ +} e_TimerMode; + + +/**************************************************************************//** + @Description Enumeration (bit flags) of communication modes (Transmit, + receive or both). +*//***************************************************************************/ +typedef enum e_CommMode +{ + e_COMM_MODE_NONE = 0, /**< No transmit/receive communication */ + e_COMM_MODE_RX = 1, /**< Only receive communication */ + e_COMM_MODE_TX = 2, /**< Only transmit communication */ + e_COMM_MODE_RX_AND_TX = 3 /**< Both transmit and receive communication */ +} e_CommMode; + +/**************************************************************************//** + @Description General Diagnostic Mode +*//***************************************************************************/ +typedef enum e_DiagMode +{ + e_DIAG_MODE_NONE = 0, /**< Normal operation; no diagnostic mode */ + e_DIAG_MODE_CTRL_LOOPBACK, /**< Loopback in the controller */ + e_DIAG_MODE_CHIP_LOOPBACK, /**< Loopback in the chip but not in the + controller; e.g. IO-pins, SerDes, etc. */ + e_DIAG_MODE_PHY_LOOPBACK, /**< Loopback in the external PHY */ + e_DIAG_MODE_EXT_LOOPBACK, /**< Loopback in the external line (beyond the PHY) */ + e_DIAG_MODE_CTRL_ECHO, /**< Echo incoming data by the controller */ + e_DIAG_MODE_PHY_ECHO /**< Echo incoming data by the PHY */ +} e_DiagMode; + +/**************************************************************************//** + @Description Possible RxStore callback responses. +*//***************************************************************************/ +typedef enum e_RxStoreResponse +{ + e_RX_STORE_RESPONSE_PAUSE /**< Pause invoking callback with received data; + in polling mode, start again invoking callback + only next time user invokes the receive routine; + in interrupt mode, start again invoking callback + only next time a receive event triggers an interrupt; + in all cases, received data that are pending are not + lost, rather, their processing is temporarily deferred; + in all cases, received data are processed in the order + in which they were received. */ + , e_RX_STORE_RESPONSE_CONTINUE /**< Continue invoking callback with received data. */ +} e_RxStoreResponse; + + +/**************************************************************************//** + @Description General Handle +*//***************************************************************************/ +typedef void * t_Handle; /**< handle, used as object's descriptor */ + +/**************************************************************************//** + @Description MUTEX type +*//***************************************************************************/ +typedef uint32_t t_Mutex; + +/**************************************************************************//** + @Description Error Code. + + The high word of the error code is the code of the software + module (driver). The low word is the error type (e_ErrorType). + To get the values from the error code, use GET_ERROR_TYPE() + and GET_ERROR_MODULE(). +*//***************************************************************************/ +typedef uint32_t t_Error; + +/**************************************************************************//** + @Description General prototype of interrupt service routine (ISR). + + @Param[in] handle - Optional handle of the module handling the interrupt. + + @Return None + *//***************************************************************************/ +typedef void (t_Isr)(t_Handle handle); + +/**************************************************************************//** + @Anchor mem_attr + + @Collection Memory Attributes + + Various attributes of memory partitions. These values may be + or'ed together to create a mask of all memory attributes. + @{ +*//***************************************************************************/ +#define MEMORY_ATTR_CACHEABLE 0x00000001 + /**< Memory is cacheable */ +#define MEMORY_ATTR_QE_2ND_BUS_ACCESS 0x00000002 + /**< Memory can be accessed by QUICC Engine + through its secondary bus interface */ + +/* @} */ + + +/**************************************************************************//** + @Function t_GetBufFunction + + @Description User callback function called by driver to get data buffer. + + User provides this function. Driver invokes it. + + @Param[in] h_BufferPool - A handle to buffer pool manager + @Param[out] p_BufContextHandle - Returns the user's private context that + should be associated with the buffer + + @Return Pointer to data buffer, NULL if error + *//***************************************************************************/ +typedef uint8_t * (t_GetBufFunction)(t_Handle h_BufferPool, + t_Handle *p_BufContextHandle); + +/**************************************************************************//** + @Function t_PutBufFunction + + @Description User callback function called by driver to return data buffer. + + User provides this function. Driver invokes it. + + @Param[in] h_BufferPool - A handle to buffer pool manager + @Param[in] p_Buffer - A pointer to buffer to return + @Param[in] h_BufContext - The user's private context associated with + the returned buffer + + @Return E_OK on success; Error code otherwise + *//***************************************************************************/ +typedef t_Error (t_PutBufFunction)(t_Handle h_BufferPool, + uint8_t *p_Buffer, + t_Handle h_BufContext); + +/**************************************************************************//** + @Function t_PhysToVirt + + @Description Translates a physical address to the matching virtual address. + + @Param[in] addr - The physical address to translate. + + @Return Virtual address. +*//***************************************************************************/ +typedef void * t_PhysToVirt(physAddress_t addr); + +/**************************************************************************//** + @Function t_VirtToPhys + + @Description Translates a virtual address to the matching physical address. + + @Param[in] addr - The virtual address to translate. + + @Return Physical address. +*//***************************************************************************/ +typedef physAddress_t t_VirtToPhys(void *addr); + +/**************************************************************************//** + @Description Buffer Pool Information Structure. +*//***************************************************************************/ +typedef struct t_BufferPoolInfo +{ + t_Handle h_BufferPool; /**< A handle to the buffer pool manager */ + t_GetBufFunction *f_GetBuf; /**< User callback to get a free buffer */ + t_PutBufFunction *f_PutBuf; /**< User callback to return a buffer */ + uint16_t bufferSize; /**< Buffer size (in bytes) */ + + t_PhysToVirt *f_PhysToVirt; /**< User callback to translate pool buffers + physical addresses to virtual addresses */ + t_VirtToPhys *f_VirtToPhys; /**< User callback to translate pool buffers + virtual addresses to physical addresses */ +} t_BufferPoolInfo; + + +/**************************************************************************//** + @Description User callback function called by driver when transmit completed. + + User provides this function. Driver invokes it. + + @Param[in] h_App - Application's handle, as was provided to the + driver by the user + @Param[in] queueId - Transmit queue ID + @Param[in] p_Data - Pointer to the data buffer + @Param[in] h_BufContext - The user's private context associated with + the given data buffer + @Param[in] status - Transmit status and errors + @Param[in] flags - Driver-dependent information + *//***************************************************************************/ +typedef void (t_TxConfFunction)(t_Handle h_App, + uint32_t queueId, + uint8_t *p_Data, + t_Handle h_BufContext, + uint16_t status, + uint32_t flags); + +/**************************************************************************//** + @Description User callback function called by driver with receive data. + + User provides this function. Driver invokes it. + + @Param[in] h_App - Application's handle, as was provided to the + driver by the user + @Param[in] queueId - Receive queue ID + @Param[in] p_Data - Pointer to the buffer with received data + @Param[in] h_BufContext - The user's private context associated with + the given data buffer + @Param[in] length - Length of received data + @Param[in] status - Receive status and errors + @Param[in] position - Position of buffer in frame + @Param[in] flags - Driver-dependent information + + @Retval e_RX_STORE_RESPONSE_CONTINUE - order the driver to continue Rx + operation for all ready data. + @Retval e_RX_STORE_RESPONSE_PAUSE - order the driver to stop Rx operation. + *//***************************************************************************/ +typedef e_RxStoreResponse (t_RxStoreFunction)(t_Handle h_App, + uint32_t queueId, + uint8_t *p_Data, + t_Handle h_BufContext, + uint32_t length, + uint16_t status, + uint8_t position, + uint32_t flags); + + +#endif /* __NCSW_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/enet_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/enet_ext.h @@ -0,0 +1,154 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File enet_ext.h + + @Description Ethernet generic definitions and enums. +*//***************************************************************************/ + +#ifndef __ENET_EXT_H +#define __ENET_EXT_H + + +#define ENET_NUM_OCTETS_PER_ADDRESS 6 /**< Number of octets (8-bit bytes) in an ethernet address */ +#define ENET_GROUP_ADDR 0x01 /**< Group address mask for ethernet addresses */ + + +/**************************************************************************//** + @Description Ethernet Address +*//***************************************************************************/ +typedef uint8_t t_EnetAddr[ENET_NUM_OCTETS_PER_ADDRESS]; + +/**************************************************************************//** + @Description Ethernet Address Type. +*//***************************************************************************/ +typedef enum e_EnetAddrType +{ + e_ENET_ADDR_TYPE_INDIVIDUAL, /**< Individual (unicast) address */ + e_ENET_ADDR_TYPE_GROUP, /**< Group (multicast) address */ + e_ENET_ADDR_TYPE_BROADCAST /**< Broadcast address */ +} e_EnetAddrType; + + +/**************************************************************************//** + @Description Ethernet MAC-PHY Interface +*//***************************************************************************/ +typedef enum e_EnetInterface +{ + e_ENET_IF_MII = 0x00010000, /**< MII interface */ + e_ENET_IF_RMII = 0x00020000, /**< RMII interface */ + e_ENET_IF_SMII = 0x00030000, /**< SMII interface */ + e_ENET_IF_GMII = 0x00040000, /**< GMII interface */ + e_ENET_IF_RGMII = 0x00050000, /**< RGMII interface */ + e_ENET_IF_TBI = 0x00060000, /**< TBI interface */ + e_ENET_IF_RTBI = 0x00070000, /**< RTBI interface */ + e_ENET_IF_SGMII = 0x00080000, /**< SGMII interface */ + e_ENET_IF_XGMII = 0x00090000, /**< XGMII interface */ + e_ENET_IF_QSGMII= 0x000a0000 /**< QSGMII interface */ +} e_EnetInterface; + +/**************************************************************************//** + @Description Ethernet Duplex Mode +*//***************************************************************************/ +typedef enum e_EnetDuplexMode +{ + e_ENET_HALF_DUPLEX, /**< Half-Duplex mode */ + e_ENET_FULL_DUPLEX /**< Full-Duplex mode */ +} e_EnetDuplexMode; + +/**************************************************************************//** + @Description Ethernet Speed (nominal data rate) +*//***************************************************************************/ +typedef enum e_EnetSpeed +{ + e_ENET_SPEED_10 = 10, /**< 10 Mbps */ + e_ENET_SPEED_100 = 100, /**< 100 Mbps */ + e_ENET_SPEED_1000 = 1000, /**< 1000 Mbps = 1 Gbps */ + e_ENET_SPEED_10000 = 10000 /**< 10000 Mbps = 10 Gbps */ +} e_EnetSpeed; + +/**************************************************************************//** + @Description Ethernet mode (combination of MAC-PHY interface and speed) +*//***************************************************************************/ +typedef enum e_EnetMode +{ + e_ENET_MODE_INVALID = 0, /**< Invalid Ethernet mode */ + e_ENET_MODE_MII_10 = (e_ENET_IF_MII | e_ENET_SPEED_10), /**< 10 Mbps MII */ + e_ENET_MODE_MII_100 = (e_ENET_IF_MII | e_ENET_SPEED_100), /**< 100 Mbps MII */ + e_ENET_MODE_RMII_10 = (e_ENET_IF_RMII | e_ENET_SPEED_10), /**< 10 Mbps RMII */ + e_ENET_MODE_RMII_100 = (e_ENET_IF_RMII | e_ENET_SPEED_100), /**< 100 Mbps RMII */ + e_ENET_MODE_SMII_10 = (e_ENET_IF_SMII | e_ENET_SPEED_10), /**< 10 Mbps SMII */ + e_ENET_MODE_SMII_100 = (e_ENET_IF_SMII | e_ENET_SPEED_100), /**< 100 Mbps SMII */ + e_ENET_MODE_GMII_1000 = (e_ENET_IF_GMII | e_ENET_SPEED_1000), /**< 1000 Mbps GMII */ + e_ENET_MODE_RGMII_10 = (e_ENET_IF_RGMII | e_ENET_SPEED_10), /**< 10 Mbps RGMII */ + e_ENET_MODE_RGMII_100 = (e_ENET_IF_RGMII | e_ENET_SPEED_100), /**< 100 Mbps RGMII */ + e_ENET_MODE_RGMII_1000 = (e_ENET_IF_RGMII | e_ENET_SPEED_1000), /**< 1000 Mbps RGMII */ + e_ENET_MODE_TBI_1000 = (e_ENET_IF_TBI | e_ENET_SPEED_1000), /**< 1000 Mbps TBI */ + e_ENET_MODE_RTBI_1000 = (e_ENET_IF_RTBI | e_ENET_SPEED_1000), /**< 1000 Mbps RTBI */ + e_ENET_MODE_SGMII_10 = (e_ENET_IF_SGMII | e_ENET_SPEED_10), /**< 10 Mbps SGMII */ + e_ENET_MODE_SGMII_100 = (e_ENET_IF_SGMII | e_ENET_SPEED_100), /**< 100 Mbps SGMII */ + e_ENET_MODE_SGMII_1000 = (e_ENET_IF_SGMII | e_ENET_SPEED_1000), /**< 1000 Mbps SGMII */ + e_ENET_MODE_XGMII_10000 = (e_ENET_IF_XGMII | e_ENET_SPEED_10000), /**< 10000 Mbps XGMII */ + e_ENET_MODE_QSGMII_1000 = (e_ENET_IF_QSGMII| e_ENET_SPEED_1000) /**< 1000 Mbps QSGMII */ +} e_EnetMode; + + +#define IS_ENET_MODE_VALID(mode) \ + (((mode) == e_ENET_MODE_MII_10 ) || \ + ((mode) == e_ENET_MODE_MII_100 ) || \ + ((mode) == e_ENET_MODE_RMII_10 ) || \ + ((mode) == e_ENET_MODE_RMII_100 ) || \ + ((mode) == e_ENET_MODE_SMII_10 ) || \ + ((mode) == e_ENET_MODE_SMII_100 ) || \ + ((mode) == e_ENET_MODE_GMII_1000 ) || \ + ((mode) == e_ENET_MODE_RGMII_10 ) || \ + ((mode) == e_ENET_MODE_RGMII_100 ) || \ + ((mode) == e_ENET_MODE_RGMII_1000 ) || \ + ((mode) == e_ENET_MODE_TBI_1000 ) || \ + ((mode) == e_ENET_MODE_RTBI_1000 ) || \ + ((mode) == e_ENET_MODE_SGMII_10 ) || \ + ((mode) == e_ENET_MODE_SGMII_100 ) || \ + ((mode) == e_ENET_MODE_SGMII_1000 ) || \ + ((mode) == e_ENET_MODE_XGMII_10000) || \ + ((mode) == e_ENET_MODE_QSGMII_1000)) + + +#define MAKE_ENET_MODE(_interface, _speed) (e_EnetMode)((_interface) | (_speed)) + +#define ENET_INTERFACE_FROM_MODE(mode) (e_EnetInterface)((mode) & 0xFFFF0000) +#define ENET_SPEED_FROM_MODE(mode) (e_EnetSpeed)((mode) & 0x0000FFFF) + + + +#endif /* __ENET_EXT_H */ + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/stdlib_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/stdlib_ext.h @@ -0,0 +1,161 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __STDLIB_EXT_H +#define __STDLIB_EXT_H + + +#if (defined(NCSW_LINUX)) && defined(__KERNEL__) +#include "stdarg_ext.h" +#include "std_ext.h" + + +/** + * strtoul - convert a string to an uint32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint32_t strtoul(const char *cp,char **endp,uint32_t base); + +/** + * strtol - convert a string to a int32_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long strtol(const char *cp,char **endp,uint32_t base); + +/** + * strtoull - convert a string to an uint64_t + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +uint64_t strtoull(const char *cp,char **endp,uint32_t base); + +/** + * strtoll - convert a string to a int64 long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ +long long strtoll(const char *cp,char **endp,uint32_t base); + +/** + * atoi - convert a character to a int + * @s: The start of the string + */ +int atoi(const char *s); + +/** + * strnlen - Find the length of a length-limited string + * @s: The string to be sized + * @count: The maximum number of bytes to search + */ +size_t strnlen(const char * s, size_t count); + +/** + * strlen - Find the length of a string + * @s: The string to be sized + */ +size_t strlen(const char * s); + +/** + * strtok - Split a string into tokens + * @s: The string to be searched + * @ct: The characters to search for + * + * WARNING: strtok is deprecated, use strsep instead. + */ +char * strtok(char * s,const char * ct); + +/** + * strncpy - Copy a length-limited, %NUL-terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + * @count: The maximum number of bytes to copy + * + * Note that unlike userspace strncpy, this does not %NUL-pad the buffer. + * However, the result is not %NUL-terminated if the source exceeds + * @count bytes. + */ +char * strncpy(char * dest,const char *src,size_t count); + +/** + * strcpy - Copy a %NUL terminated string + * @dest: Where to copy the string to + * @src: Where to copy the string from + */ +char * strcpy(char * dest,const char *src); + +/** + * vsscanf - Unformat a buffer into a list of arguments + * @buf: input buffer + * @fmt: format of buffer + * @args: arguments + */ +int vsscanf(const char * buf, const char * fmt, va_list args); + +/** + * vsnprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @size: The size of the buffer, including the trailing null space + * @fmt: The format string to use + * @args: Arguments for the format string + * + * Call this function if you are already dealing with a va_list. + * You probably want snprintf instead. + */ +int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); + +/** + * vsprintf - Format a string and place it in a buffer + * @buf: The buffer to place the result into + * @fmt: The format string to use + * @args: Arguments for the format string + * + * Call this function if you are already dealing with a va_list. + * You probably want sprintf instead. + */ +int vsprintf(char *buf, const char *fmt, va_list args); + +#else +#include +#include +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +#endif /* __STDLIB_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/types_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/types_ext.h @@ -0,0 +1,111 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + /**************************************************************************//** + @File types_ext.h + + @Description General types Standard Definitions +*//***************************************************************************/ + +#ifndef __TYPES_EXT_H +#define __TYPES_EXT_H + + +#if defined(NCSW_LINUX) +#include "types_linux.h" + +#elif defined(NCSW_LINUX_USD) +#include "types_linux_usd.h" + +#elif defined(NCSW_VXWORKS) +#include "types_vxworks.h" + +#elif defined(__MWERKS__) && defined(__GNUC__) && defined(__cplusplus) +#include "types_bb_gpp.h" + +#elif defined(__MWERKS__) && defined(__GNUC__) +#include "types_bb_gcc.h" + +#elif defined(__ghs__) +#include "types_ghs.h" + +#else +#include "types_dflt.h" +#endif /* defined (__ROCOO__) */ + + +static __inline__ void TypesChecker(void) +{ +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + _Packed struct strct { + __volatile__ int vi; + } _PackedType; +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + size_t size = 0; + bool tr = TRUE, fls = FALSE; + struct strct *p_Strct = NULL; + physAddress_t addr = 0x100; + + tr = fls; + p_Strct = p_Strct; + size++; + if (tr) size++; + + WRITE_UINT8(*((uint8_t*)((size_t)(addr))), + GET_UINT8(*((uint8_t*)((size_t)(addr))))); + + WRITE_UINT8(*((uint8_t*)((size_t)(UINT8_MAX))), + GET_UINT8(*((uint8_t*)((size_t)(UINT8_MAX))))); + WRITE_UINT16(*((uint16_t*)((size_t)(UINT16_MAX))), + GET_UINT16(*((uint16_t*)((size_t)(UINT16_MAX))))); + WRITE_UINT32(*((uint32_t*)((size_t)(UINT32_MAX))), + GET_UINT32(*((uint32_t*)((size_t)(UINT32_MAX))))); + WRITE_UINT64(*((uint64_t*)((size_t)(UINT64_MAX))), + GET_UINT64(*((uint64_t*)((size_t)(UINT64_MAX))))); + WRITE_UINT8(*((uint8_t*)((size_t)(INT8_MAX))), + GET_UINT8(*((uint8_t*)((size_t)(INT8_MIN))))); + WRITE_UINT16(*((uint16_t*)((size_t)(INT16_MAX))), + GET_UINT16(*((uint16_t*)((size_t)(INT16_MIN))))); + WRITE_UINT32(*((uint32_t*)((size_t)(INT32_MAX))), + GET_UINT32(*((uint32_t*)((size_t)(INT32_MIN))))); + WRITE_UINT64(*((uint64_t*)((size_t)(INT64_MAX))), + GET_UINT64(*((uint64_t*)((size_t)(INT64_MIN))))); +} + + +#endif /* __TYPES_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/endian_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/endian_ext.h @@ -0,0 +1,446 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File endian_ext.h + + @Description Big/little endian swapping routines. +*//***************************************************************************/ + +#ifndef __ENDIAN_EXT_H +#define __ENDIAN_EXT_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group gen_id General Drivers Utilities + + @Description General usage API. This API is intended for usage by both the + internal modules and the user's application. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group endian_id Big/Little-Endian Conversion + + @Description Routines and macros for Big/Little-Endian conversion and + general byte swapping. + + All routines and macros are expecting unsigned values as + parameters, but will generate the correct result also for + signed values. Therefore, signed/unsigned casting is allowed. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection Byte-Swap Macros + + Macros for swapping byte order. + + @Cautions The parameters of these macros are evaluated multiple times. + For calculated expressions or expressions that contain function + calls it is recommended to use the byte-swap routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Swaps the byte order of a given 16-bit value. + + @Param[in] val - The 16-bit value to swap. + + @Return The byte-swapped value.. + + @Cautions The given value is evaluated multiple times by this macro. + For calculated expressions or expressions that contain function + calls it is recommended to use the SwapUint16() routine. + + @hideinitializer +*//***************************************************************************/ +#define SWAP_UINT16(val) \ + ((uint16_t)((((val) & 0x00FF) << 8) | (((val) & 0xFF00) >> 8))) + +/**************************************************************************//** + @Description Swaps the byte order of a given 32-bit value. + + @Param[in] val - The 32-bit value to swap. + + @Return The byte-swapped value.. + + @Cautions The given value is evaluated multiple times by this macro. + For calculated expressions or expressions that contain function + calls it is recommended to use the SwapUint32() routine. + + @hideinitializer +*//***************************************************************************/ +#define SWAP_UINT32(val) \ + ((uint32_t)((((val) & 0x000000FF) << 24) | \ + (((val) & 0x0000FF00) << 8) | \ + (((val) & 0x00FF0000) >> 8) | \ + (((val) & 0xFF000000) >> 24))) + +/**************************************************************************//** + @Description Swaps the byte order of a given 64-bit value. + + @Param[in] val - The 64-bit value to swap. + + @Return The byte-swapped value.. + + @Cautions The given value is evaluated multiple times by this macro. + For calculated expressions or expressions that contain function + calls it is recommended to use the SwapUint64() routine. + + @hideinitializer +*//***************************************************************************/ +#define SWAP_UINT64(val) \ + ((uint64_t)((((val) & 0x00000000000000FFULL) << 56) | \ + (((val) & 0x000000000000FF00ULL) << 40) | \ + (((val) & 0x0000000000FF0000ULL) << 24) | \ + (((val) & 0x00000000FF000000ULL) << 8) | \ + (((val) & 0x000000FF00000000ULL) >> 8) | \ + (((val) & 0x0000FF0000000000ULL) >> 24) | \ + (((val) & 0x00FF000000000000ULL) >> 40) | \ + (((val) & 0xFF00000000000000ULL) >> 56))) + +/* @} */ + +/**************************************************************************//** + @Collection Byte-Swap Routines + + Routines for swapping the byte order of a given parameter and + returning the swapped value. + + These inline routines are safer than the byte-swap macros, + because they evaluate the parameter expression only once. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function SwapUint16 + + @Description Returns the byte-swapped value of a given 16-bit value. + + @Param[in] val - The 16-bit value. + + @Return The byte-swapped value of the parameter. +*//***************************************************************************/ +static __inline__ uint16_t SwapUint16(uint16_t val) +{ + return (uint16_t)(((val & 0x00FF) << 8) | + ((val & 0xFF00) >> 8)); +} + +/**************************************************************************//** + @Function SwapUint32 + + @Description Returns the byte-swapped value of a given 32-bit value. + + @Param[in] val - The 32-bit value. + + @Return The byte-swapped value of the parameter. +*//***************************************************************************/ +static __inline__ uint32_t SwapUint32(uint32_t val) +{ + return (uint32_t)(((val & 0x000000FF) << 24) | + ((val & 0x0000FF00) << 8) | + ((val & 0x00FF0000) >> 8) | + ((val & 0xFF000000) >> 24)); +} + +/**************************************************************************//** + @Function SwapUint64 + + @Description Returns the byte-swapped value of a given 64-bit value. + + @Param[in] val - The 64-bit value. + + @Return The byte-swapped value of the parameter. +*//***************************************************************************/ +static __inline__ uint64_t SwapUint64(uint64_t val) +{ + return (uint64_t)(((val & 0x00000000000000FFULL) << 56) | + ((val & 0x000000000000FF00ULL) << 40) | + ((val & 0x0000000000FF0000ULL) << 24) | + ((val & 0x00000000FF000000ULL) << 8) | + ((val & 0x000000FF00000000ULL) >> 8) | + ((val & 0x0000FF0000000000ULL) >> 24) | + ((val & 0x00FF000000000000ULL) >> 40) | + ((val & 0xFF00000000000000ULL) >> 56)); +} + +/* @} */ + +/**************************************************************************//** + @Collection In-place Byte-Swap-And-Set Routines + + Routines for swapping the byte order of a given variable and + setting the swapped value back to the same variable. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function SwapUint16P + + @Description Swaps the byte order of a given 16-bit variable. + + @Param[in] p_Val - Pointer to the 16-bit variable. + + @Return None. +*//***************************************************************************/ +static __inline__ void SwapUint16P(uint16_t *p_Val) +{ + *p_Val = SwapUint16(*p_Val); +} + +/**************************************************************************//** + @Function SwapUint32P + + @Description Swaps the byte order of a given 32-bit variable. + + @Param[in] p_Val - Pointer to the 32-bit variable. + + @Return None. +*//***************************************************************************/ +static __inline__ void SwapUint32P(uint32_t *p_Val) +{ + *p_Val = SwapUint32(*p_Val); +} + +/**************************************************************************//** + @Function SwapUint64P + + @Description Swaps the byte order of a given 64-bit variable. + + @Param[in] p_Val - Pointer to the 64-bit variable. + + @Return None. +*//***************************************************************************/ +static __inline__ void SwapUint64P(uint64_t *p_Val) +{ + *p_Val = SwapUint64(*p_Val); +} + +/* @} */ + + +/**************************************************************************//** + @Collection Little-Endian Conversion Macros + + These macros convert given parameters to or from Little-Endian + format. Use these macros when you want to read or write a specific + Little-Endian value in memory, without a-priori knowing the CPU + byte order. + + These macros use the byte-swap routines. For conversion of + constants in initialization structures, you may use the CONST + versions of these macros (see below), which are using the + byte-swap macros instead. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Converts a given 16-bit value from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CPU_TO_LE16(val) SwapUint16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit value from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CPU_TO_LE32(val) SwapUint32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit value from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CPU_TO_LE64(val) SwapUint64(val) + + +/**************************************************************************//** + @Description Converts a given 16-bit value from Little-Endian byte order to + CPU byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define LE16_TO_CPU(val) CPU_TO_LE16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit value from Little-Endian byte order to + CPU byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define LE32_TO_CPU(val) CPU_TO_LE32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit value from Little-Endian byte order to + CPU byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define LE64_TO_CPU(val) CPU_TO_LE64(val) + +/* @} */ + +/**************************************************************************//** + @Collection Little-Endian Constant Conversion Macros + + These macros convert given constants to or from Little-Endian + format. Use these macros when you want to read or write a specific + Little-Endian constant in memory, without a-priori knowing the + CPU byte order. + + These macros use the byte-swap macros, therefore can be used for + conversion of constants in initialization structures. + + @Cautions The parameters of these macros are evaluated multiple times. + For non-constant expressions, use the non-CONST macro versions. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Converts a given 16-bit constant from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_CPU_TO_LE16(val) SWAP_UINT16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit constant from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_CPU_TO_LE32(val) SWAP_UINT32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit constant from CPU byte order to + Little-Endian byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_CPU_TO_LE64(val) SWAP_UINT64(val) + + +/**************************************************************************//** + @Description Converts a given 16-bit constant from Little-Endian byte order + to CPU byte order. + + @Param[in] val - The 16-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_LE16_TO_CPU(val) CONST_CPU_TO_LE16(val) + +/**************************************************************************//** + @Description Converts a given 32-bit constant from Little-Endian byte order + to CPU byte order. + + @Param[in] val - The 32-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_LE32_TO_CPU(val) CONST_CPU_TO_LE32(val) + +/**************************************************************************//** + @Description Converts a given 64-bit constant from Little-Endian byte order + to CPU byte order. + + @Param[in] val - The 64-bit value to convert. + + @Return The converted value. + + @hideinitializer +*//***************************************************************************/ +#define CONST_LE64_TO_CPU(val) CONST_CPU_TO_LE64(val) + +/* @} */ + + +/** @} */ /* end of endian_id group */ +/** @} */ /* end of gen_id group */ + + +#endif /* __ENDIAN_EXT_H */ + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/ctype_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/ctype_ext.h @@ -0,0 +1,93 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __CTYPE_EXT_H +#define __CTYPE_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +/* + * NOTE! This ctype does not handle EOF like the standard C + * library is required to. + */ + +#define _U 0x01 /* upper */ +#define _L 0x02 /* lower */ +#define _D 0x04 /* digit */ +#define _C 0x08 /* cntrl */ +#define _P 0x10 /* punct */ +#define _S 0x20 /* white space (space/lf/tab) */ +#define _X 0x40 /* hex digit */ +#define _SP 0x80 /* hard space (0x20) */ + +extern unsigned char _ctype[]; + +#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) + +#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) +#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) +#define iscntrl(c) ((__ismask(c)&(_C)) != 0) +#define isdigit(c) ((__ismask(c)&(_D)) != 0) +#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) +#define islower(c) ((__ismask(c)&(_L)) != 0) +#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) +#define ispunct(c) ((__ismask(c)&(_P)) != 0) +#define isspace(c) ((__ismask(c)&(_S)) != 0) +#define isupper(c) ((__ismask(c)&(_U)) != 0) +#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) + +#define isascii(c) (((unsigned char)(c))<=0x7f) +#define toascii(c) (((unsigned char)(c))&0x7f) + +static __inline__ unsigned char __tolower(unsigned char c) +{ + if (isupper(c)) + c -= 'A'-'a'; + return c; +} + +static __inline__ unsigned char __toupper(unsigned char c) +{ + if (islower(c)) + c -= 'a'-'A'; + return c; +} + +#define tolower(c) __tolower(c) +#define toupper(c) __toupper(c) + +#else +#include +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + + +#endif /* __CTYPE_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/debug_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/debug_ext.h @@ -0,0 +1,259 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File debug_ext.h + + @Description Debug mode definitions. +*//***************************************************************************/ + +#ifndef __DEBUG_EXT_H +#define __DEBUG_EXT_H + +#include "std_ext.h" +#include "xx_ext.h" +#include "memcpy_ext.h" +#if (DEBUG_ERRORS > 0) +#include "sprint_ext.h" +#include "string_ext.h" +#endif /* DEBUG_ERRORS > 0 */ + + +#if (DEBUG_ERRORS > 0) + +/* Internally used macros */ + +#define DUMP_Print XX_Print +#define DUMP_MAX_LEVELS 6 +#define DUMP_MAX_STR 64 + + +#define _CREATE_DUMP_SUBSTR(phrase) \ + dumpTmpLevel = 0; dumpSubStr[0] = '\0'; \ + sprintf(dumpTmpStr, "%s", #phrase); \ + p_DumpToken = strtok(dumpTmpStr, (dumpIsArr[0] ? "[" : ".")); \ + while (p_DumpToken != NULL) \ + { \ + strcat(dumpSubStr, p_DumpToken); \ + if (dumpIsArr[dumpTmpLevel]) \ + { \ + strcat(dumpSubStr, dumpIdxStr[dumpTmpLevel]); \ + p_DumpToken = strtok(NULL, "."); \ + } \ + if ((p_DumpToken = strtok(NULL, (dumpIsArr[++dumpTmpLevel] ? "[" : "."))) != 0) \ + strcat(dumpSubStr, "."); \ + }\ + + +/**************************************************************************//** + @Group gen_id General Drivers Utilities + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group dump_id Memory and Registers Dump Mechanism + + @Description Macros for dumping memory mapped structures. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Declaration of dump mechanism variables. + + This macro must be declared at the beginning of each routine + which uses the dump mechanism macros, before the routine's code + starts. +*//***************************************************************************/ +#define DECLARE_DUMP \ + char dumpIdxStr[DUMP_MAX_LEVELS + 1][6] = { "", }; \ + char dumpSubStr[DUMP_MAX_STR] = ""; \ + char dumpTmpStr[DUMP_MAX_STR] = ""; \ + char *p_DumpToken = NULL; \ + int dumpArrIdx = 0, dumpArrSize = 0, dumpVarSize = 0, dumpLevel = 0, dumpTmpLevel = 0; \ + uint8_t dumpIsArr[DUMP_MAX_LEVELS + 1] = { 0 }; \ + /* Prevent warnings if not all used */ \ + UNUSED(dumpIdxStr[0][0]); \ + UNUSED(dumpSubStr[0]); \ + UNUSED(dumpTmpStr[0]); \ + UNUSED(p_DumpToken); \ + UNUSED(dumpArrIdx); \ + UNUSED(dumpArrSize); \ + UNUSED(dumpVarSize); \ + UNUSED(dumpLevel); \ + UNUSED(dumpTmpLevel); \ + UNUSED(dumpIsArr[0]); + + +/**************************************************************************//** + @Description Prints a title for a subsequent dumped structure or memory. + + The inputs for this macro are the structure/memory title and + its base addresses. +*//***************************************************************************/ +#define DUMP_TITLE(addr, msg) \ + DUMP_Print("\r\n"); DUMP_Print msg; \ + DUMP_Print(" (0x%p)\r\n" \ + "---------------------------------------------------------\r\n", \ + (addr)) + +/**************************************************************************//** + @Description Prints a subtitle for a subsequent dumped sub-structure (optional). + + The inputs for this macro are the sub-structure subtitle. + A separating line with this subtitle will be printed. +*//***************************************************************************/ +#define DUMP_SUBTITLE(subtitle) \ + DUMP_Print("----------- "); DUMP_Print subtitle; DUMP_Print("\r\n") + + +/**************************************************************************//** + @Description Dumps a memory region in 4-bytes aligned format. + + The inputs for this macro are the base addresses and size + (in bytes) of the memory region. +*//***************************************************************************/ +#define DUMP_MEMORY(addr, size) \ + MemDisp((uint8_t *)(addr), (int)(size)) + + +/**************************************************************************//** + @Description Declares a dump loop, for dumping a sub-structure array. + + The inputs for this macro are: + - idx: an index variable, for indexing the sub-structure items + inside the loop. This variable must be declared separately + in the beginning of the routine. + - cnt: the number of times to repeat the loop. This number should + equal the number of items in the sub-structures array. + + Note, that the body of the loop must be written inside brackets. +*//***************************************************************************/ +#define DUMP_SUBSTRUCT_ARRAY(idx, cnt) \ + for (idx=0, dumpIsArr[dumpLevel++] = 1; \ + (idx < cnt) && sprintf(dumpIdxStr[dumpLevel-1], "[%d]", idx); \ + idx++, ((idx < cnt) || ((dumpIsArr[--dumpLevel] = 0) == 0))) + + +/**************************************************************************//** + @Description Dumps a structure's member variable. + + The input for this macro is the full reference for the member + variable, where the structure is referenced using a pointer. + + Note, that a members array must be dumped using DUMP_ARR macro, + rather than using this macro. + + If the member variable is part of a sub-structure hierarchy, + the full hierarchy (including array indexing) must be specified. + + Examples: p_Struct->member + p_Struct->sub.member + p_Struct->sub[i].member +*//***************************************************************************/ +#define DUMP_VAR(st, phrase) \ + do { \ + void *addr = (void *)&((st)->phrase); \ + _CREATE_DUMP_SUBSTR(phrase); \ + dumpVarSize = sizeof((st)->phrase); \ + switch (dumpVarSize) \ + { \ + case 1: DUMP_Print("0x%08X: 0x%02x%14s\t%s\r\n", \ + addr, GET_UINT8(*(uint8_t*)addr), "", dumpSubStr); break; \ + case 2: DUMP_Print("0x%08X: 0x%04x%12s\t%s\r\n", \ + addr, GET_UINT16(*(uint16_t*)addr), "", dumpSubStr); break; \ + case 4: DUMP_Print("0x%08X: 0x%08x%8s\t%s\r\n", \ + addr, GET_UINT32(*(uint32_t*)addr), "", dumpSubStr); break; \ + case 8: DUMP_Print("0x%08X: 0x%016llx\t%s\r\n", \ + addr, GET_UINT64(*(uint64_t*)addr), dumpSubStr); break; \ + default: DUMP_Print("Bad size %d (" #st "->" #phrase ")\r\n", dumpVarSize); \ + } \ + } while (0) + + +/**************************************************************************//** + @Description Dumps a structure's members array. + + The input for this macro is the full reference for the members + array, where the structure is referenced using a pointer. + + If the members array is part of a sub-structure hierarchy, + the full hierarchy (including array indexing) must be specified. + + Examples: p_Struct->array + p_Struct->sub.array + p_Struct->sub[i].array +*//***************************************************************************/ +#define DUMP_ARR(st, phrase) \ + do { \ + _CREATE_DUMP_SUBSTR(phrase); \ + dumpArrSize = ARRAY_SIZE((st)->phrase); \ + dumpVarSize = sizeof((st)->phrase[0]); \ + switch (dumpVarSize) \ + { \ + case 1: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%02x%14s\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT8((st)->phrase[dumpArrIdx]), "", dumpSubStr, dumpArrIdx); \ + } break; \ + case 2: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%04x%12s\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT16((st)->phrase[dumpArrIdx]), "", dumpSubStr, dumpArrIdx); \ + } break; \ + case 4: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%08x%8s\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT32((st)->phrase[dumpArrIdx]), "", dumpSubStr, dumpArrIdx); \ + } break; \ + case 8: \ + for (dumpArrIdx=0; dumpArrIdx < dumpArrSize; dumpArrIdx++) { \ + DUMP_Print("0x%08X: 0x%016llx\t%s[%d]\r\n", \ + &((st)->phrase[dumpArrIdx]), GET_UINT64((st)->phrase[dumpArrIdx]), dumpSubStr, dumpArrIdx); \ + } break; \ + default: DUMP_Print("Bad size %d (" #st "->" #phrase "[0])\r\n", dumpVarSize); \ + } \ + } while (0) + + +#endif /* DEBUG_ERRORS > 0 */ + + +/** @} */ /* end of dump_id group */ +/** @} */ /* end of gen_id group */ + + +#endif /* __DEBUG_EXT_H */ + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/std_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/std_ext.h @@ -0,0 +1,48 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + /**************************************************************************//** + + @File std_ext.h + + @Description General Standard Definitions +*//***************************************************************************/ + +#ifndef __STD_EXT_H +#define __STD_EXT_H + + +#include "types_ext.h" +#include "ncsw_ext.h" + + +#endif /* __STD_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/string_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/string_ext.h @@ -0,0 +1,55 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __STRING_EXT_H +#define __STRING_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include +#include +extern char * strtok ( char * str, const char * delimiters ); + +#elif defined(__KERNEL__) +#include "linux/types.h" +#include "linux/posix_types.h" +#include "linux/string.h" + +#else +#include + +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +#endif /* __STRING_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/core_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/core_ext.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File core_ext.h + + @Description Generic interface to basic core operations. + + The system integrator must ensure that this interface is + mapped to a specific core implementation, by including the + appropriate header file. +*//***************************************************************************/ +#ifndef __CORE_EXT_H +#define __CORE_EXT_H + + +#ifdef NCSW_PPC_CORE +#include "ppc_ext.h" +#elif defined(NCSW_VXWORKS) +#include "core_vxw_ext.h" +#else +#error "Core is not defined!" +#endif /* NCSW_CORE */ + +#if (!defined(CORE_IS_LITTLE_ENDIAN) && !defined(CORE_IS_BIG_ENDIAN)) +#error "Must define core as little-endian or big-endian!" +#endif /* (!defined(CORE_IS_LITTLE_ENDIAN) && ... */ + + +/**************************************************************************//** + @Function CORE_GetId + + @Description Returns the core ID in the system. + + @Return Core ID. +*//***************************************************************************/ +uint32_t CORE_GetId(void); + +/**************************************************************************//** + @Function CORE_MemoryBarrier + + @Description This routine will cause the core to stop executing any commands + until all previous memory read/write commands are completely out + of the core's pipeline. + + @Return None. +*//***************************************************************************/ +void CORE_MemoryBarrier(void); + + +#endif /* __CORE_EXT_H */ + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/error_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/error_ext.h @@ -0,0 +1,553 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + @File error_ext.h + + @Description Error definitions. +*//***************************************************************************/ + +#ifndef __ERROR_EXT_H +#define __ERROR_EXT_H + +#include "std_ext.h" +#include "xx_ext.h" +#include "core_ext.h" + +/**************************************************************************//** + @Group gen_id General Drivers Utilities + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group gen_error_id Errors, Events and Debug + + @Description External routines. + + @{ +*//***************************************************************************/ + +/****************************************************************************** +The scheme below provides the bits description for error codes: + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +| Reserved (should be zero) | Module ID | + + 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 +| Error Type | +******************************************************************************/ + +#define ERROR_CODE(_err) ((((uint32_t)_err) & 0x0000FFFF) | __ERR_MODULE__) + +#define GET_ERROR_TYPE(_errcode) ((_errcode) & 0x0000FFFF) + /**< Extract module code from error code (#t_Error) */ + +#define GET_ERROR_MODULE(_errcode) ((_errcode) & 0x00FF0000) + /**< Extract error type (#e_ErrorType) from + error code (#t_Error) */ + + +/**************************************************************************//** + @Description Error Type Enumeration +*//***************************************************************************/ +typedef enum e_ErrorType /* Comments / Associated Message Strings */ +{ /* ------------------------------------------------------------ */ + E_OK = 0 /* Never use "RETURN_ERROR" with E_OK; Use "return E_OK;" */ + + /* Invalid Function Calls */ + ,E_INVALID_STATE /**< The operation is not allowed in current module state. */ + /* String: none. */ + ,E_INVALID_OPERATION /**< The operation/command is invalid (unrecognized). */ + /* String: none. */ + ,E_NOT_SUPPORTED /**< The function is not supported or not implemented. */ + /* String: none. */ + ,E_NO_DEVICE /**< The associated device is not initialized. */ + /* String: none. */ + + /* Invalid Parameters */ + ,E_INVALID_HANDLE /**< Invalid handle of module or object. */ + /* String: none, unless the function takes in more than one + handle (in this case add the handle description) */ + ,E_INVALID_ID /**< Invalid module ID (usually enumeration or index). */ + /* String: none, unless the function takes in more than one + ID (in this case add the ID description) */ + ,E_NULL_POINTER /**< Unexpected NULL pointer. */ + /* String: pointer description. */ + ,E_INVALID_VALUE /**< Invalid value. */ + /* Use for non-enumeration parameters, and + only when other error types are not suitable. + String: parameter description + "(should be )", + e.g: "Maximum Rx buffer length (should be divisible by 8)", + "Channel number (should be even)". */ + ,E_INVALID_SELECTION /**< Invalid selection or mode. */ + /* Use for enumeration values, only when other error types + are not suitable. + String: parameter description. */ + ,E_INVALID_COMM_MODE /**< Invalid communication mode. */ + /* String: none, unless the function takes in more than one + communication mode indications (in this case add + parameter description). */ + ,E_INVALID_BYTE_ORDER /**< Invalid byte order. */ + /* String: none, unless the function takes in more than one + byte order indications (in this case add parameter + description). */ + ,E_INVALID_MEMORY_TYPE /**< Invalid memory type. */ + /* String: none, unless the function takes in more than one + memory types (in this case add memory description, + e.g: "Data memory", "Buffer descriptors memory"). */ + ,E_INVALID_INTR_QUEUE /**< Invalid interrupt queue. */ + /* String: none, unless the function takes in more than one + interrupt queues (in this case add queue description, + e.g: "Rx interrupt queue", "Tx interrupt queue"). */ + ,E_INVALID_PRIORITY /**< Invalid priority. */ + /* String: none, unless the function takes in more than one + priority (in this case add priority description). */ + ,E_INVALID_CLOCK /**< Invalid clock. */ + /* String: none, unless the function takes in more than one + clocks (in this case add clock description, + e.g: "Rx clock", "Tx clock"). */ + ,E_INVALID_RATE /**< Invalid rate value. */ + /* String: none, unless the function takes in more than one + rate values (in this case add rate description). */ + ,E_INVALID_ADDRESS /**< Invalid address. */ + /* String: description of the specific violation. */ + ,E_INVALID_BUS /**< Invalid bus type. */ + /* String: none, unless the function takes in more than one + bus parameters (in this case add bus description). */ + ,E_BUS_CONFLICT /**< Bus (or memory) type conflicts with another setting. */ + /* String: description of the conflicting buses/memories. */ + ,E_CONFLICT /**< Some setting conflicts with another setting. */ + /* String: description of the conflicting settings. */ + ,E_NOT_ALIGNED /**< Non-aligned address. */ + /* String: parameter description + "(should be %d-bytes aligned)", + e.g: "Rx data buffer (should be 32-bytes aligned)". */ + ,E_NOT_IN_RANGE /**< Parameter value is out of range. */ + /* Don't use this error for enumeration parameters. + String: parameter description + "(should be %d-%d)", + e.g: "Number of pad characters (should be 0-15)". */ + + /* Frame/Buffer Errors */ + ,E_INVALID_FRAME /**< Invalid frame object (NULL handle or missing buffers). */ + /* String: none. */ + ,E_EMPTY_FRAME /**< Frame object is empty (has no buffers). */ + /* String: none. */ + ,E_EMPTY_BUFFER /**< Buffer object is empty (no data, or zero data length). */ + /* String: none. */ + + /* Resource Errors */ + ,E_NO_MEMORY /**< External memory allocation failed. */ + /* String: description of item for which allocation failed. */ + ,E_NOT_FOUND /**< Requested resource or item was not found. */ + /* Use only when the resource/item is uniquely identified. + String: none, unless the operation is not the main goal + of the function (in this case add item description). */ + ,E_NOT_AVAILABLE /**< Resource is unavailable. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_ALREADY_EXISTS /**< Requested resource or item already exists. */ + /* Use when resource duplication or sharing are not allowed. + String: none, unless the operation is not the main goal + of the function (in this case add item description). */ + ,E_FULL /**< Resource is full. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_EMPTY /**< Resource is empty. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_BUSY /**< Resource or module is busy. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add resource description). */ + ,E_ALREADY_FREE /**< Specified resource or item is already free or deleted. */ + /* String: none, unless the operation is not the main goal + of the function (in this case add item description). */ + + /* Read/Write Access Errors */ + ,E_READ_FAILED /**< Read access failed on memory/device. */ + /* String: none, or device name. */ + ,E_WRITE_FAILED /**< Write access failed on memory/device. */ + /* String: none, or device name. */ + + /* Send/Receive Failures */ + ,E_SEND_FAILED /**< Send operation failed on device. */ + /* String: none, or device name. */ + ,E_RECEIVE_FAILED /**< Receive operation failed on device. */ + /* String: none, or device name. */ + + /* Operation time-out */ + ,E_TIMEOUT /**< The operation timed out. */ + /* String: none. */ + + ,E_DUMMY_LAST /* NEVER USED */ + +} e_ErrorType; + + +/**************************************************************************//** + @Description Event Type Enumeration +*//***************************************************************************/ +typedef enum e_Event /* Comments / Associated Flags and Message Strings */ +{ /* ------------------------------------------------------------ */ + EV_NO_EVENT = 0 /**< No event; Never used. */ + + ,EV_RX_DISCARD /**< Received packet discarded (by the driver, and only for + complete packets); + Flags: error flags in case of error, zero otherwise. */ + /* String: reason for discard, e.g: "Error in frame", + "Disordered frame", "Incomplete frame", "No frame object". */ + ,EV_RX_ERROR /**< Receive error (by hardware/firmware); + Flags: usually status flags from the buffer descriptor. */ + /* String: none. */ + ,EV_TX_ERROR /**< Transmit error (by hardware/firmware); + Flags: usually status flags from the buffer descriptor. */ + /* String: none. */ + ,EV_NO_BUFFERS /**< System ran out of buffer objects; + Flags: zero. */ + /* String: none. */ + ,EV_NO_MB_FRAMES /**< System ran out of multi-buffer frame objects; + Flags: zero. */ + /* String: none. */ + ,EV_NO_SB_FRAMES /**< System ran out of single-buffer frame objects; + Flags: zero. */ + /* String: none. */ + ,EV_TX_QUEUE_FULL /**< Transmit queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_RX_QUEUE_FULL /**< Receive queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_INTR_QUEUE_FULL /**< Interrupt queue overflow; + Flags: zero. */ + /* String: none. */ + ,EV_NO_DATA_BUFFER /**< Data buffer allocation (from higher layer) failed; + Flags: zero. */ + /* String: none. */ + ,EV_OBJ_POOL_EMPTY /**< Objects pool is empty; + Flags: zero. */ + /* String: object description (name). */ + ,EV_BUS_ERROR /**< Illegal access on bus; + Flags: the address (if available) or bus identifier */ + /* String: bus/address/module description. */ + ,EV_PTP_TXTS_QUEUE_FULL /**< PTP Tx timestamps queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_PTP_RXTS_QUEUE_FULL /**< PTP Rx timestamps queue is full; + Flags: zero. */ + /* String: none. */ + ,EV_DUMMY_LAST + +} e_Event; + + +/**************************************************************************//** + @Collection Debug Levels for Errors and Events + + The level description refers to errors only. + For events, classification is done by the user. + + The TRACE, INFO and WARNING levels are allowed only when using + the DBG macro, and are not allowed when using the error macros + (RETURN_ERROR or REPORT_ERROR). + @{ +*//***************************************************************************/ +#define REPORT_LEVEL_CRITICAL 1 /**< Crasher: Incorrect flow, NULL pointers/handles. */ +#define REPORT_LEVEL_MAJOR 2 /**< Cannot proceed: Invalid operation, parameters or + configuration. */ +#define REPORT_LEVEL_MINOR 3 /**< Recoverable problem: a repeating call with the same + parameters may be successful. */ +#define REPORT_LEVEL_WARNING 4 /**< Something is not exactly right, yet it is not an error. */ +#define REPORT_LEVEL_INFO 5 /**< Messages which may be of interest to user/programmer. */ +#define REPORT_LEVEL_TRACE 6 /**< Program flow messages. */ + +#define EVENT_DISABLED 0xFF /**< Disabled event (not reported at all) */ + +/* @} */ + + + +#define NO_MSG ("") + +#ifndef DEBUG_GLOBAL_LEVEL +#define DEBUG_GLOBAL_LEVEL REPORT_LEVEL_WARNING +#endif /* DEBUG_GLOBAL_LEVEL */ + +#ifndef ERROR_GLOBAL_LEVEL +#define ERROR_GLOBAL_LEVEL DEBUG_GLOBAL_LEVEL +#endif /* ERROR_GLOBAL_LEVEL */ + +#ifndef EVENT_GLOBAL_LEVEL +#define EVENT_GLOBAL_LEVEL REPORT_LEVEL_MINOR +#endif /* EVENT_GLOBAL_LEVEL */ + +#ifdef EVENT_LOCAL_LEVEL +#define EVENT_DYNAMIC_LEVEL EVENT_LOCAL_LEVEL +#else +#define EVENT_DYNAMIC_LEVEL EVENT_GLOBAL_LEVEL +#endif /* EVENT_LOCAL_LEVEL */ + + +#ifndef DEBUG_DYNAMIC_LEVEL +#define DEBUG_USING_STATIC_LEVEL + +#ifdef DEBUG_STATIC_LEVEL +#define DEBUG_DYNAMIC_LEVEL DEBUG_STATIC_LEVEL +#else +#define DEBUG_DYNAMIC_LEVEL DEBUG_GLOBAL_LEVEL +#endif /* DEBUG_STATIC_LEVEL */ + +#else /* DEBUG_DYNAMIC_LEVEL */ +#ifdef DEBUG_STATIC_LEVEL +#error "Please use either DEBUG_STATIC_LEVEL or DEBUG_DYNAMIC_LEVEL (not both)" +#else +int DEBUG_DYNAMIC_LEVEL = DEBUG_GLOBAL_LEVEL; +#endif /* DEBUG_STATIC_LEVEL */ +#endif /* !DEBUG_DYNAMIC_LEVEL */ + + +#ifndef ERROR_DYNAMIC_LEVEL + +#ifdef ERROR_STATIC_LEVEL +#define ERROR_DYNAMIC_LEVEL ERROR_STATIC_LEVEL +#else +#define ERROR_DYNAMIC_LEVEL ERROR_GLOBAL_LEVEL +#endif /* ERROR_STATIC_LEVEL */ + +#else /* ERROR_DYNAMIC_LEVEL */ +#ifdef ERROR_STATIC_LEVEL +#error "Please use either ERROR_STATIC_LEVEL or ERROR_DYNAMIC_LEVEL (not both)" +#else +int ERROR_DYNAMIC_LEVEL = ERROR_GLOBAL_LEVEL; +#endif /* ERROR_STATIC_LEVEL */ +#endif /* !ERROR_DYNAMIC_LEVEL */ + +#define PRINT_FORMAT "[CPU%02d, %s:%d %s]" +#define PRINT_FMT_PARAMS CORE_GetId(), __FILE__, __LINE__, __FUNCTION__ + +#if (!(defined(DEBUG_ERRORS)) || (DEBUG_ERRORS == 0)) +/* No debug/error/event messages at all */ +#define DBG(_level, _vmsg) + +#define REPORT_ERROR(_level, _err, _vmsg) + +#define RETURN_ERROR(_level, _err, _vmsg) \ + return ERROR_CODE(_err) + +#if (REPORT_EVENTS > 0) + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) \ + do { \ + if (_ev##_LEVEL <= EVENT_DYNAMIC_LEVEL) { \ + XX_EventById((uint32_t)(_ev), (t_Handle)(_appId), (uint16_t)(_flg), NO_MSG); \ + } \ + } while (0) + +#else + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) + +#endif /* (REPORT_EVENTS > 0) */ + + +#else /* DEBUG_ERRORS > 0 */ + +extern const char *dbgLevelStrings[]; +extern const char *errTypeStrings[]; +extern const char *moduleStrings[]; +#if (REPORT_EVENTS > 0) +extern const char *eventStrings[]; +#endif /* (REPORT_EVENTS > 0) */ + + +#if ((defined(DEBUG_USING_STATIC_LEVEL)) && (DEBUG_DYNAMIC_LEVEL < REPORT_LEVEL_WARNING)) +/* No need for DBG macro - debug level is higher anyway */ +#define DBG(_level, _vmsg) +#else +#define DBG(_level, _vmsg) \ + do { \ + if (REPORT_LEVEL_##_level <= DEBUG_DYNAMIC_LEVEL) { \ + XX_Print("> %s (%s) " PRINT_FORMAT ": ", \ + dbgLevelStrings[REPORT_LEVEL_##_level - 1], \ + moduleStrings[__ERR_MODULE__ >> 16], \ + PRINT_FMT_PARAMS); \ + XX_Print _vmsg; \ + XX_Print("\r\n"); \ + } \ + } while (0) +#endif /* (defined(DEBUG_USING_STATIC_LEVEL) && (DEBUG_DYNAMIC_LEVEL < WARNING)) */ + + +#define REPORT_ERROR(_level, _err, _vmsg) \ + do { \ + if (REPORT_LEVEL_##_level <= ERROR_DYNAMIC_LEVEL) { \ + XX_Print("! %s %s Error " PRINT_FORMAT ": %s; ", \ + dbgLevelStrings[REPORT_LEVEL_##_level - 1], \ + moduleStrings[__ERR_MODULE__ >> 16], \ + PRINT_FMT_PARAMS, \ + errTypeStrings[(GET_ERROR_TYPE(_err) - E_OK - 1)]); \ + XX_Print _vmsg; \ + XX_Print("\r\n"); \ + } \ + } while (0) + + +#define RETURN_ERROR(_level, _err, _vmsg) \ + do { \ + REPORT_ERROR(_level, (_err), _vmsg); \ + return ERROR_CODE(_err); \ + } while (0) + + +#if (REPORT_EVENTS > 0) + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) \ + do { \ + if (_ev##_LEVEL <= EVENT_DYNAMIC_LEVEL) { \ + XX_Print("~ %s %s Event " PRINT_FORMAT ": %s (flags: 0x%04x); ", \ + dbgLevelStrings[_ev##_LEVEL - 1], \ + moduleStrings[__ERR_MODULE__ >> 16], \ + PRINT_FMT_PARAMS, \ + eventStrings[((_ev) - EV_NO_EVENT - 1)], \ + (uint16_t)(_flg)); \ + XX_Print _vmsg; \ + XX_Print("\r\n"); \ + XX_EventById((uint32_t)(_ev), (t_Handle)(_appId), (uint16_t)(_flg), NO_MSG); \ + } \ + } while (0) + +#else /* not REPORT_EVENTS */ + +#define REPORT_EVENT(_ev, _appId, _flg, _vmsg) + +#endif /* (REPORT_EVENTS > 0) */ + +#endif /* (DEBUG_ERRORS > 0) */ + + +/**************************************************************************//** + @Function ASSERT_COND + + @Description Assertion macro. + + @Param[in] _cond - The condition being checked, in positive form; + Failure of the condition triggers the assert. +*//***************************************************************************/ +#ifdef DISABLE_ASSERTIONS +#define ASSERT_COND(_cond) +#else +#define ASSERT_COND(_cond) \ + do { \ + if (!(_cond)) { \ + XX_Print("*** ASSERT_COND failed " PRINT_FORMAT "\r\n", \ + PRINT_FMT_PARAMS); \ + XX_Exit(1); \ + } \ + } while (0) +#endif /* DISABLE_ASSERTIONS */ + + +#ifdef DISABLE_INIT_PARAMETERS_CHECK + +#define CHECK_INIT_PARAMETERS(handle, f_check) +#define CHECK_INIT_PARAMETERS_RETURN_VALUE(handle, f_check, retval) + +#else + +#define CHECK_INIT_PARAMETERS(handle, f_check) \ + do { \ + t_Error err = f_check(handle); \ + if (err != E_OK) { \ + RETURN_ERROR(MAJOR, err, NO_MSG); \ + } \ + } while (0) + +#define CHECK_INIT_PARAMETERS_RETURN_VALUE(handle, f_check, retval) \ + do { \ + t_Error err = f_check(handle); \ + if (err != E_OK) { \ + REPORT_ERROR(MAJOR, err, NO_MSG); \ + return (retval); \ + } \ + } while (0) + +#endif /* DISABLE_INIT_PARAMETERS_CHECK */ + +#ifdef DISABLE_SANITY_CHECKS + +#define SANITY_CHECK_RETURN_ERROR(_cond, _err) +#define SANITY_CHECK_RETURN_VALUE(_cond, _err, retval) +#define SANITY_CHECK_RETURN(_cond, _err) +#define SANITY_CHECK_EXIT(_cond, _err) + +#else /* DISABLE_SANITY_CHECKS */ + +#define SANITY_CHECK_RETURN_ERROR(_cond, _err) \ + do { \ + if (!(_cond)) { \ + RETURN_ERROR(CRITICAL, (_err), NO_MSG); \ + } \ + } while (0) + +#define SANITY_CHECK_RETURN_VALUE(_cond, _err, retval) \ + do { \ + if (!(_cond)) { \ + REPORT_ERROR(CRITICAL, (_err), NO_MSG); \ + return (retval); \ + } \ + } while (0) + +#define SANITY_CHECK_RETURN(_cond, _err) \ + do { \ + if (!(_cond)) { \ + REPORT_ERROR(CRITICAL, (_err), NO_MSG); \ + return; \ + } \ + } while (0) + +#define SANITY_CHECK_EXIT(_cond, _err) \ + do { \ + if (!(_cond)) { \ + REPORT_ERROR(CRITICAL, (_err), NO_MSG); \ + XX_Exit(1); \ + } \ + } while (0) + +#endif /* DISABLE_SANITY_CHECKS */ + +/** @} */ /* end of Debug/error Utils group */ + +/** @} */ /* end of General Utils group */ + +#endif /* __ERROR_EXT_H */ + + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/net_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/net_ext.h @@ -0,0 +1,388 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File net_ext.h + + @Description This file contains common and general netcomm headers definitions. +*//***************************************************************************/ +#ifndef __NET_EXT_H +#define __NET_EXT_H + +#include "std_ext.h" + + +typedef uint8_t headerFieldPpp_t; + +#define NET_HEADER_FIELD_PPP_PID (1) +#define NET_HEADER_FIELD_PPP_COMPRESSED (NET_HEADER_FIELD_PPP_PID << 1) +#define NET_HEADER_FIELD_PPP_ALL_FIELDS ((NET_HEADER_FIELD_PPP_PID << 2) - 1) + + +typedef uint8_t headerFieldPppoe_t; + +#define NET_HEADER_FIELD_PPPoE_VER (1) +#define NET_HEADER_FIELD_PPPoE_TYPE (NET_HEADER_FIELD_PPPoE_VER << 1) +#define NET_HEADER_FIELD_PPPoE_CODE (NET_HEADER_FIELD_PPPoE_VER << 2) +#define NET_HEADER_FIELD_PPPoE_SID (NET_HEADER_FIELD_PPPoE_VER << 3) +#define NET_HEADER_FIELD_PPPoE_LEN (NET_HEADER_FIELD_PPPoE_VER << 4) +#define NET_HEADER_FIELD_PPPoE_SESSION (NET_HEADER_FIELD_PPPoE_VER << 5) +#define NET_HEADER_FIELD_PPPoE_PID (NET_HEADER_FIELD_PPPoE_VER << 6) +#define NET_HEADER_FIELD_PPPoE_ALL_FIELDS ((NET_HEADER_FIELD_PPPoE_VER << 7) - 1) + +#define NET_HEADER_FIELD_PPPMUX_PID (1) +#define NET_HEADER_FIELD_PPPMUX_CKSUM (NET_HEADER_FIELD_PPPMUX_PID << 1) +#define NET_HEADER_FIELD_PPPMUX_COMPRESSED (NET_HEADER_FIELD_PPPMUX_PID << 2) +#define NET_HEADER_FIELD_PPPMUX_ALL_FIELDS ((NET_HEADER_FIELD_PPPMUX_PID << 3) - 1) + +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF (1) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_LXT (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 1) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_LEN (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 2) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_PID (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 3) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_USE_PID (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 4) +#define NET_HEADER_FIELD_PPPMUX_SUBFRAME_ALL_FIELDS ((NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 5) - 1) + + +typedef uint8_t headerFieldEth_t; + +#define NET_HEADER_FIELD_ETH_DA (1) +#define NET_HEADER_FIELD_ETH_SA (NET_HEADER_FIELD_ETH_DA << 1) +#define NET_HEADER_FIELD_ETH_LENGTH (NET_HEADER_FIELD_ETH_DA << 2) +#define NET_HEADER_FIELD_ETH_TYPE (NET_HEADER_FIELD_ETH_DA << 3) +#define NET_HEADER_FIELD_ETH_FINAL_CKSUM (NET_HEADER_FIELD_ETH_DA << 4) +#define NET_HEADER_FIELD_ETH_PADDING (NET_HEADER_FIELD_ETH_DA << 5) +#define NET_HEADER_FIELD_ETH_ALL_FIELDS ((NET_HEADER_FIELD_ETH_DA << 6) - 1) + + +typedef uint16_t headerFieldIpv4_t; + +#define NET_HEADER_FIELD_IPv4_VER (1) +#define NET_HEADER_FIELD_IPv4_HDR_LEN (NET_HEADER_FIELD_IPv4_VER << 1) +#define NET_HEADER_FIELD_IPv4_TOS (NET_HEADER_FIELD_IPv4_VER << 2) +#define NET_HEADER_FIELD_IPv4_TOTAL_LEN (NET_HEADER_FIELD_IPv4_VER << 3) +#define NET_HEADER_FIELD_IPv4_ID (NET_HEADER_FIELD_IPv4_VER << 4) +#define NET_HEADER_FIELD_IPv4_FLAG_D (NET_HEADER_FIELD_IPv4_VER << 5) +#define NET_HEADER_FIELD_IPv4_FLAG_M (NET_HEADER_FIELD_IPv4_VER << 6) +#define NET_HEADER_FIELD_IPv4_OFFSET (NET_HEADER_FIELD_IPv4_VER << 7) +#define NET_HEADER_FIELD_IPv4_TTL (NET_HEADER_FIELD_IPv4_VER << 8) +#define NET_HEADER_FIELD_IPv4_PROTO (NET_HEADER_FIELD_IPv4_VER << 9) +#define NET_HEADER_FIELD_IPv4_CKSUM (NET_HEADER_FIELD_IPv4_VER << 10) +#define NET_HEADER_FIELD_IPv4_SRC_IP (NET_HEADER_FIELD_IPv4_VER << 11) +#define NET_HEADER_FIELD_IPv4_DST_IP (NET_HEADER_FIELD_IPv4_VER << 12) +#define NET_HEADER_FIELD_IPv4_OPTS (NET_HEADER_FIELD_IPv4_VER << 13) +#define NET_HEADER_FIELD_IPv4_OPTS_COUNT (NET_HEADER_FIELD_IPv4_VER << 14) +#define NET_HEADER_FIELD_IPv4_ALL_FIELDS ((NET_HEADER_FIELD_IPv4_VER << 15) - 1) + + +typedef uint8_t headerFieldIpv6_t; + +#define NET_HEADER_FIELD_IPv6_VER (1) +#define NET_HEADER_FIELD_IPv6_TC (NET_HEADER_FIELD_IPv6_VER << 1) +#define NET_HEADER_FIELD_IPv6_SRC_IP (NET_HEADER_FIELD_IPv6_VER << 2) +#define NET_HEADER_FIELD_IPv6_DST_IP (NET_HEADER_FIELD_IPv6_VER << 3) +#define NET_HEADER_FIELD_IPv6_NEXT_HDR (NET_HEADER_FIELD_IPv6_VER << 4) +#define NET_HEADER_FIELD_IPv6_FL (NET_HEADER_FIELD_IPv6_VER << 5) +#define NET_HEADER_FIELD_IPv6_HOP_LIMIT (NET_HEADER_FIELD_IPv6_VER << 6) +#define NET_HEADER_FIELD_IPv6_ALL_FIELDS ((NET_HEADER_FIELD_IPv6_VER << 7) - 1) + +#define NET_HEADER_FIELD_ICMP_TYPE (1) +#define NET_HEADER_FIELD_ICMP_CODE (NET_HEADER_FIELD_ICMP_TYPE << 1) +#define NET_HEADER_FIELD_ICMP_CKSUM (NET_HEADER_FIELD_ICMP_TYPE << 2) +#define NET_HEADER_FIELD_ICMP_ID (NET_HEADER_FIELD_ICMP_TYPE << 3) +#define NET_HEADER_FIELD_ICMP_SQ_NUM (NET_HEADER_FIELD_ICMP_TYPE << 4) +#define NET_HEADER_FIELD_ICMP_ALL_FIELDS ((NET_HEADER_FIELD_ICMP_TYPE << 5) - 1) + +#define NET_HEADER_FIELD_IGMP_VERSION (1) +#define NET_HEADER_FIELD_IGMP_TYPE (NET_HEADER_FIELD_IGMP_VERSION << 1) +#define NET_HEADER_FIELD_IGMP_CKSUM (NET_HEADER_FIELD_IGMP_VERSION << 2) +#define NET_HEADER_FIELD_IGMP_DATA (NET_HEADER_FIELD_IGMP_VERSION << 3) +#define NET_HEADER_FIELD_IGMP_ALL_FIELDS ((NET_HEADER_FIELD_IGMP_VERSION << 4) - 1) + + +typedef uint16_t headerFieldTcp_t; + +#define NET_HEADER_FIELD_TCP_PORT_SRC (1) +#define NET_HEADER_FIELD_TCP_PORT_DST (NET_HEADER_FIELD_TCP_PORT_SRC << 1) +#define NET_HEADER_FIELD_TCP_SEQ (NET_HEADER_FIELD_TCP_PORT_SRC << 2) +#define NET_HEADER_FIELD_TCP_ACK (NET_HEADER_FIELD_TCP_PORT_SRC << 3) +#define NET_HEADER_FIELD_TCP_OFFSET (NET_HEADER_FIELD_TCP_PORT_SRC << 4) +#define NET_HEADER_FIELD_TCP_FLAGS (NET_HEADER_FIELD_TCP_PORT_SRC << 5) +#define NET_HEADER_FIELD_TCP_WINDOW (NET_HEADER_FIELD_TCP_PORT_SRC << 6) +#define NET_HEADER_FIELD_TCP_CKSUM (NET_HEADER_FIELD_TCP_PORT_SRC << 7) +#define NET_HEADER_FIELD_TCP_URGPTR (NET_HEADER_FIELD_TCP_PORT_SRC << 8) +#define NET_HEADER_FIELD_TCP_OPTS (NET_HEADER_FIELD_TCP_PORT_SRC << 9) +#define NET_HEADER_FIELD_TCP_OPTS_COUNT (NET_HEADER_FIELD_TCP_PORT_SRC << 10) +#define NET_HEADER_FIELD_TCP_ALL_FIELDS ((NET_HEADER_FIELD_TCP_PORT_SRC << 11) - 1) + + +typedef uint8_t headerFieldSctp_t; + +#define NET_HEADER_FIELD_SCTP_PORT_SRC (1) +#define NET_HEADER_FIELD_SCTP_PORT_DST (NET_HEADER_FIELD_SCTP_PORT_SRC << 1) +#define NET_HEADER_FIELD_SCTP_VER_TAG (NET_HEADER_FIELD_SCTP_PORT_SRC << 2) +#define NET_HEADER_FIELD_SCTP_CKSUM (NET_HEADER_FIELD_SCTP_PORT_SRC << 3) +#define NET_HEADER_FIELD_SCTP_ALL_FIELDS ((NET_HEADER_FIELD_SCTP_PORT_SRC << 4) - 1) + + +typedef uint8_t headerFieldDccp_t; + +#define NET_HEADER_FIELD_DCCP_PORT_SRC (1) +#define NET_HEADER_FIELD_DCCP_PORT_DST (NET_HEADER_FIELD_DCCP_PORT_SRC << 1) +#define NET_HEADER_FIELD_DCCP_ALL_FIELDS ((NET_HEADER_FIELD_DCCP_PORT_SRC << 2) - 1) + + +typedef uint8_t headerFieldUdp_t; + +#define NET_HEADER_FIELD_UDP_PORT_SRC (1) +#define NET_HEADER_FIELD_UDP_PORT_DST (NET_HEADER_FIELD_UDP_PORT_SRC << 1) +#define NET_HEADER_FIELD_UDP_LEN (NET_HEADER_FIELD_UDP_PORT_SRC << 2) +#define NET_HEADER_FIELD_UDP_CKSUM (NET_HEADER_FIELD_UDP_PORT_SRC << 3) +#define NET_HEADER_FIELD_UDP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_PORT_SRC << 4) - 1) + +typedef uint8_t headerFieldUdpEncapEsp_t; + +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC (1) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 1) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 2) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 3) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 4) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 5) +#define NET_HEADER_FIELD_UDP_ENCAP_ESP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 6) - 1) + +#define NET_HEADER_FIELD_IPHC_CID (1) +#define NET_HEADER_FIELD_IPHC_CID_TYPE (NET_HEADER_FIELD_IPHC_CID << 1) +#define NET_HEADER_FIELD_IPHC_HCINDEX (NET_HEADER_FIELD_IPHC_CID << 2) +#define NET_HEADER_FIELD_IPHC_GEN (NET_HEADER_FIELD_IPHC_CID << 3) +#define NET_HEADER_FIELD_IPHC_D_BIT (NET_HEADER_FIELD_IPHC_CID << 4) +#define NET_HEADER_FIELD_IPHC_ALL_FIELDS ((NET_HEADER_FIELD_IPHC_CID << 5) - 1) + +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE (1) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_FLAGS (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 1) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_LENGTH (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 2) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_TSN (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 3) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_ID (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 4) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_SQN (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 5) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_PAYLOAD_PID (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 6) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_UNORDERED (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 7) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_BEGGINING (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 8) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_END (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 9) +#define NET_HEADER_FIELD_SCTP_CHUNK_DATA_ALL_FIELDS ((NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 10) - 1) + +#define NET_HEADER_FIELD_L2TPv2_TYPE_BIT (1) +#define NET_HEADER_FIELD_L2TPv2_LENGTH_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 1) +#define NET_HEADER_FIELD_L2TPv2_SEQUENCE_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 2) +#define NET_HEADER_FIELD_L2TPv2_OFFSET_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 3) +#define NET_HEADER_FIELD_L2TPv2_PRIORITY_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 4) +#define NET_HEADER_FIELD_L2TPv2_VERSION (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 5) +#define NET_HEADER_FIELD_L2TPv2_LEN (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 6) +#define NET_HEADER_FIELD_L2TPv2_TUNNEL_ID (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 7) +#define NET_HEADER_FIELD_L2TPv2_SESSION_ID (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 8) +#define NET_HEADER_FIELD_L2TPv2_NS (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 9) +#define NET_HEADER_FIELD_L2TPv2_NR (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 10) +#define NET_HEADER_FIELD_L2TPv2_OFFSET_SIZE (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 11) +#define NET_HEADER_FIELD_L2TPv2_FIRST_BYTE (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 12) +#define NET_HEADER_FIELD_L2TPv2_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 13) - 1) + +#define NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT (1) +#define NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH_BIT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 1) +#define NET_HEADER_FIELD_L2TPv3_CTRL_SEQUENCE_BIT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 2) +#define NET_HEADER_FIELD_L2TPv3_CTRL_VERSION (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 3) +#define NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 4) +#define NET_HEADER_FIELD_L2TPv3_CTRL_CONTROL (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 5) +#define NET_HEADER_FIELD_L2TPv3_CTRL_SENT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 6) +#define NET_HEADER_FIELD_L2TPv3_CTRL_RECV (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 7) +#define NET_HEADER_FIELD_L2TPv3_CTRL_FIRST_BYTE (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 8) +#define NET_HEADER_FIELD_L2TPv3_CTRL_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 9) - 1) + +#define NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT (1) +#define NET_HEADER_FIELD_L2TPv3_SESS_VERSION (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 1) +#define NET_HEADER_FIELD_L2TPv3_SESS_ID (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 2) +#define NET_HEADER_FIELD_L2TPv3_SESS_COOKIE (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 3) +#define NET_HEADER_FIELD_L2TPv3_SESS_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 4) - 1) + + +typedef uint8_t headerFieldVlan_t; + +#define NET_HEADER_FIELD_VLAN_VPRI (1) +#define NET_HEADER_FIELD_VLAN_CFI (NET_HEADER_FIELD_VLAN_VPRI << 1) +#define NET_HEADER_FIELD_VLAN_VID (NET_HEADER_FIELD_VLAN_VPRI << 2) +#define NET_HEADER_FIELD_VLAN_LENGTH (NET_HEADER_FIELD_VLAN_VPRI << 3) +#define NET_HEADER_FIELD_VLAN_TYPE (NET_HEADER_FIELD_VLAN_VPRI << 4) +#define NET_HEADER_FIELD_VLAN_ALL_FIELDS ((NET_HEADER_FIELD_VLAN_VPRI << 5) - 1) + +#define NET_HEADER_FIELD_VLAN_TCI (NET_HEADER_FIELD_VLAN_VPRI | \ + NET_HEADER_FIELD_VLAN_CFI | \ + NET_HEADER_FIELD_VLAN_VID) + + +typedef uint8_t headerFieldLlc_t; + +#define NET_HEADER_FIELD_LLC_DSAP (1) +#define NET_HEADER_FIELD_LLC_SSAP (NET_HEADER_FIELD_LLC_DSAP << 1) +#define NET_HEADER_FIELD_LLC_CTRL (NET_HEADER_FIELD_LLC_DSAP << 2) +#define NET_HEADER_FIELD_LLC_ALL_FIELDS ((NET_HEADER_FIELD_LLC_DSAP << 3) - 1) + +#define NET_HEADER_FIELD_NLPID_NLPID (1) +#define NET_HEADER_FIELD_NLPID_ALL_FIELDS ((NET_HEADER_FIELD_NLPID_NLPID << 1) - 1) + + +typedef uint8_t headerFieldSnap_t; + +#define NET_HEADER_FIELD_SNAP_OUI (1) +#define NET_HEADER_FIELD_SNAP_PID (NET_HEADER_FIELD_SNAP_OUI << 1) +#define NET_HEADER_FIELD_SNAP_ALL_FIELDS ((NET_HEADER_FIELD_SNAP_OUI << 2) - 1) + + +typedef uint8_t headerFieldLlcSnap_t; + +#define NET_HEADER_FIELD_LLC_SNAP_TYPE (1) +#define NET_HEADER_FIELD_LLC_SNAP_ALL_FIELDS ((NET_HEADER_FIELD_LLC_SNAP_TYPE << 1) - 1) + +#define NET_HEADER_FIELD_ARP_HTYPE (1) +#define NET_HEADER_FIELD_ARP_PTYPE (NET_HEADER_FIELD_ARP_HTYPE << 1) +#define NET_HEADER_FIELD_ARP_HLEN (NET_HEADER_FIELD_ARP_HTYPE << 2) +#define NET_HEADER_FIELD_ARP_PLEN (NET_HEADER_FIELD_ARP_HTYPE << 3) +#define NET_HEADER_FIELD_ARP_OPER (NET_HEADER_FIELD_ARP_HTYPE << 4) +#define NET_HEADER_FIELD_ARP_SHA (NET_HEADER_FIELD_ARP_HTYPE << 5) +#define NET_HEADER_FIELD_ARP_SPA (NET_HEADER_FIELD_ARP_HTYPE << 6) +#define NET_HEADER_FIELD_ARP_THA (NET_HEADER_FIELD_ARP_HTYPE << 7) +#define NET_HEADER_FIELD_ARP_TPA (NET_HEADER_FIELD_ARP_HTYPE << 8) +#define NET_HEADER_FIELD_ARP_ALL_FIELDS ((NET_HEADER_FIELD_ARP_HTYPE << 9) - 1) + +#define NET_HEADER_FIELD_RFC2684_LLC (1) +#define NET_HEADER_FIELD_RFC2684_NLPID (NET_HEADER_FIELD_RFC2684_LLC << 1) +#define NET_HEADER_FIELD_RFC2684_OUI (NET_HEADER_FIELD_RFC2684_LLC << 2) +#define NET_HEADER_FIELD_RFC2684_PID (NET_HEADER_FIELD_RFC2684_LLC << 3) +#define NET_HEADER_FIELD_RFC2684_VPN_OUI (NET_HEADER_FIELD_RFC2684_LLC << 4) +#define NET_HEADER_FIELD_RFC2684_VPN_IDX (NET_HEADER_FIELD_RFC2684_LLC << 5) +#define NET_HEADER_FIELD_RFC2684_ALL_FIELDS ((NET_HEADER_FIELD_RFC2684_LLC << 6) - 1) + +#define NET_HEADER_FIELD_USER_DEFINED_SRCPORT (1) +#define NET_HEADER_FIELD_USER_DEFINED_PCDID (NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 1) +#define NET_HEADER_FIELD_USER_DEFINED_ALL_FIELDS ((NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 2) - 1) + +#define NET_HEADER_FIELD_PAYLOAD_BUFFER (1) +#define NET_HEADER_FIELD_PAYLOAD_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 1) +#define NET_HEADER_FIELD_MAX_FRM_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 2) +#define NET_HEADER_FIELD_MIN_FRM_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 3) +#define NET_HEADER_FIELD_PAYLOAD_TYPE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 4) +#define NET_HEADER_FIELD_FRAME_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 5) +#define NET_HEADER_FIELD_PAYLOAD_ALL_FIELDS ((NET_HEADER_FIELD_PAYLOAD_BUFFER << 6) - 1) + + +typedef uint8_t headerFieldGre_t; + +#define NET_HEADER_FIELD_GRE_TYPE (1) +#define NET_HEADER_FIELD_GRE_ALL_FIELDS ((NET_HEADER_FIELD_GRE_TYPE << 1) - 1) + + +typedef uint8_t headerFieldMinencap_t; + +#define NET_HEADER_FIELD_MINENCAP_SRC_IP (1) +#define NET_HEADER_FIELD_MINENCAP_DST_IP (NET_HEADER_FIELD_MINENCAP_SRC_IP << 1) +#define NET_HEADER_FIELD_MINENCAP_TYPE (NET_HEADER_FIELD_MINENCAP_SRC_IP << 2) +#define NET_HEADER_FIELD_MINENCAP_ALL_FIELDS ((NET_HEADER_FIELD_MINENCAP_SRC_IP << 3) - 1) + + +typedef uint8_t headerFieldIpsecAh_t; + +#define NET_HEADER_FIELD_IPSEC_AH_SPI (1) +#define NET_HEADER_FIELD_IPSEC_AH_NH (NET_HEADER_FIELD_IPSEC_AH_SPI << 1) +#define NET_HEADER_FIELD_IPSEC_AH_ALL_FIELDS ((NET_HEADER_FIELD_IPSEC_AH_SPI << 2) - 1) + + +typedef uint8_t headerFieldIpsecEsp_t; + +#define NET_HEADER_FIELD_IPSEC_ESP_SPI (1) +#define NET_HEADER_FIELD_IPSEC_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_IPSEC_ESP_SPI << 1) +#define NET_HEADER_FIELD_IPSEC_ESP_ALL_FIELDS ((NET_HEADER_FIELD_IPSEC_ESP_SPI << 2) - 1) + + +typedef uint8_t headerFieldMpls_t; + +#define NET_HEADER_FIELD_MPLS_LABEL_STACK (1) +#define NET_HEADER_FIELD_MPLS_LABEL_STACK_ALL_FIELDS ((NET_HEADER_FIELD_MPLS_LABEL_STACK << 1) - 1) + + +typedef uint8_t headerFieldMacsec_t; + +#define NET_HEADER_FIELD_MACSEC_SECTAG (1) +#define NET_HEADER_FIELD_MACSEC_ALL_FIELDS ((NET_HEADER_FIELD_MACSEC_SECTAG << 1) - 1) + + +typedef enum { + HEADER_TYPE_NONE = 0, + HEADER_TYPE_PAYLOAD, + HEADER_TYPE_ETH, + HEADER_TYPE_VLAN, + HEADER_TYPE_IPv4, + HEADER_TYPE_IPv6, + HEADER_TYPE_TCP, + HEADER_TYPE_UDP, + HEADER_TYPE_IPHC, + HEADER_TYPE_SCTP, + HEADER_TYPE_SCTP_CHUNK_DATA, + HEADER_TYPE_PPPoE, + HEADER_TYPE_PPP, + HEADER_TYPE_PPPMUX, + HEADER_TYPE_PPPMUX_SUBFRAME, + HEADER_TYPE_L2TPv2, + HEADER_TYPE_L2TPv3_CTRL, + HEADER_TYPE_L2TPv3_SESS, + HEADER_TYPE_LLC, + HEADER_TYPE_LLC_SNAP, + HEADER_TYPE_NLPID, + HEADER_TYPE_SNAP, + HEADER_TYPE_MPLS, + HEADER_TYPE_IPSEC_AH, + HEADER_TYPE_IPSEC_ESP, + HEADER_TYPE_UDP_ENCAP_ESP, /* RFC 3948 */ + HEADER_TYPE_MACSEC, + HEADER_TYPE_GRE, + HEADER_TYPE_MINENCAP, + HEADER_TYPE_DCCP, + HEADER_TYPE_ICMP, + HEADER_TYPE_IGMP, + HEADER_TYPE_ARP, + HEADER_TYPE_CAPWAP, + HEADER_TYPE_CAPWAP_DTLS, + HEADER_TYPE_RFC2684, + HEADER_TYPE_USER_DEFINED_L2, + HEADER_TYPE_USER_DEFINED_L3, + HEADER_TYPE_USER_DEFINED_L4, + HEADER_TYPE_USER_DEFINED_SHIM1, + HEADER_TYPE_USER_DEFINED_SHIM2, + MAX_HEADER_TYPE_COUNT +} e_NetHeaderType; + + +#endif /* __NET_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/math_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/math_ext.h @@ -0,0 +1,98 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __MATH_EXT_H +#define __MATH_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include + +#elif defined(__MWERKS__) +#define LOW(x) ( sizeof(x)==8 ? *(1+(int32_t*)&x) : (*(int32_t*)&x)) +#define HIGH(x) (*(int32_t*)&x) +#define ULOW(x) ( sizeof(x)==8 ? *(1+(uint32_t*)&x) : (*(uint32_t*)&x)) +#define UHIGH(x) (*(uint32_t*)&x) + +static const double big = 1.0e300; + +/* Macro for checking if a number is a power of 2 */ +static __inline__ double ceil(double x) +{ + int32_t i0,i1,j0; /*- cc 020130 -*/ + uint32_t i,j; /*- cc 020130 -*/ + i0 = HIGH(x); + i1 = LOW(x); + j0 = ((i0>>20)&0x7ff)-0x3ff; + if(j0<20) { + if(j0<0) { /* raise inexact if x != 0 */ + if(big+x>0.0) {/* return 0*sign(x) if |x|<1 */ + if(i0<0) {i0=0x80000000;i1=0;} + else if((i0|i1)!=0) { i0=0x3ff00000;i1=0;} + } + } else { + i = (uint32_t)(0x000fffff)>>j0; + if(((i0&i)|i1)==0) return x; /* x is integral */ + if(big+x>0.0) { /* raise inexact flag */ + if(i0>0) i0 += (0x00100000)>>j0; + i0 &= (~i); i1=0; + } + } + } else if (j0>51) { + if(j0==0x400) return x+x; /* inf or NaN */ + else return x; /* x is integral */ + } else { + i = ((uint32_t)(0xffffffff))>>(j0-20); /*- cc 020130 -*/ + if((i1&i)==0) return x; /* x is integral */ + if(big+x>0.0) { /* raise inexact flag */ + if(i0>0) { + if(j0==20) i0+=1; + else { + j = (uint32_t)(i1 + (1<<(52-j0))); + if(j +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + + +#endif /* __MATH_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_muram_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_muram_ext.h @@ -0,0 +1,158 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_muram_ext.h + + @Description FM MURAM Application Programming Interface. +*//***************************************************************************/ +#ifndef __FM_MURAM_EXT +#define __FM_MURAM_EXT + +#include "error_ext.h" +#include "std_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_muram_grp FM MURAM + + @Description FM MURAM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_muram_init_grp FM MURAM Initialization + + @Description FM MURAM initialization API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MURAM_ConfigAndInit + + @Description Creates partition in the MURAM. + + The routine returns a handle (descriptor) to the MURAM partition. + This descriptor must be passed as first parameter to all other + FM-MURAM function calls. + + No actual initialization or configuration of FM_MURAM hardware is + done by this routine. + + @Param[in] baseAddress - Pointer to base of memory mapped FM-MURAM. + @Param[in] size - Size of the FM-MURAM partition. + + @Return Handle to FM-MURAM object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_MURAM_ConfigAndInit(uintptr_t baseAddress, uint32_t size); + +/**************************************************************************//** + @Function FM_MURAM_Free + + @Description Frees all resources that were assigned to FM-MURAM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MURAM_Free(t_Handle h_FmMuram); + +/** @} */ /* end of FM_muram_init_grp group */ + + +/**************************************************************************//** + @Group FM_muram_ctrl_grp FM MURAM Control + + @Description FM MURAM control API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MURAM_AllocMem + + @Description Allocate some memory from FM-MURAM partition. + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + @Param[in] size - size of the memory to be allocated. + @Param[in] align - Alignment of the memory. + + @Return address of the allocated memory; NULL otherwise. +*//***************************************************************************/ +void * FM_MURAM_AllocMem(t_Handle h_FmMuram, uint32_t size, uint32_t align); + +/**************************************************************************//** + @Function FM_MURAM_AllocMemForce + + @Description Allocate some specific memory from FM-MURAM partition (according + to base). + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + @Param[in] base - the desired base-address to be allocated. + @Param[in] size - size of the memory to be allocated. + + @Return address of the allocated memory; NULL otherwise. +*//***************************************************************************/ +void * FM_MURAM_AllocMemForce(t_Handle h_FmMuram, uint64_t base, uint32_t size); + +/**************************************************************************//** + @Function FM_MURAM_FreeMem + + @Description Free an allocated memory from FM-MURAM partition. + + @Param[in] h_FmMuram - FM-MURAM module descriptor. + @Param[in] ptr - A pointer to an allocated memory. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MURAM_FreeMem(t_Handle h_FmMuram, void *ptr); + +/** @} */ /* end of FM_muram_ctrl_grp group */ +/** @} */ /* end of FM_muram_grp group */ +/** @} */ /* end of FM_grp group */ + + + +#endif /* __FM_MURAM_EXT */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_ext.h @@ -0,0 +1,1347 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_ext.h + + @Description FM Application Programming Interface. +*//***************************************************************************/ +#ifndef __FM_EXT +#define __FM_EXT + +#include "error_ext.h" +#include "std_ext.h" +#include "dpaa_ext.h" + + +/**************************************************************************//** + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_lib_grp FM library + + @Description FM API functions, definitions and enums + The FM module is the main driver module and is a mandatory module + for FM driver users. Before any further module initialization, + this module must be initialized. + The FM is a "singletone" module. It is responsible of the common + HW modules: FPM, DMA, common QMI, common BMI initializations and + run-time control routines. This module must be initialized always + when working with any of the FM modules. + NOTE - We assumes that the FML will be initialize only by core No. 0! + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description enum for defining port types +*//***************************************************************************/ +typedef enum e_FmPortType { + e_FM_PORT_TYPE_OH_OFFLINE_PARSING = 0, /**< Offline parsing port (id's: 0-6, share id's with + host command, so must have exclusive id) */ + e_FM_PORT_TYPE_OH_HOST_COMMAND, /**< Host command port (id's: 0-6, share id's with + offline parsing ports, so must have exclusive id) */ + e_FM_PORT_TYPE_RX, /**< 1G Rx port (id's: 0-3) */ + e_FM_PORT_TYPE_RX_10G, /**< 10G Rx port (id's: 0) */ + e_FM_PORT_TYPE_TX, /**< 1G Tx port (id's: 0-3) */ + e_FM_PORT_TYPE_TX_10G, /**< 10G Tx port (id's: 0) */ + e_FM_PORT_TYPE_DUMMY +} e_FmPortType; + +/**************************************************************************//** + @Collection General FM defines +*//***************************************************************************/ +#define FM_MAX_NUM_OF_PARTITIONS 64 /**< Maximum number of partitions */ +#define FM_PHYS_ADDRESS_SIZE 6 /**< FM Physical address size */ +/* @} */ + + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description FM physical Address +*//***************************************************************************/ +typedef _Packed struct t_FmPhysAddr { + volatile uint8_t high; /**< High part of the physical address */ + volatile uint32_t low; /**< Low part of the physical address */ +} _PackedType t_FmPhysAddr; + +/**************************************************************************//** + @Description Parse results memory layout +*//***************************************************************************/ +typedef _Packed struct t_FmPrsResult { + volatile uint8_t lpid; /**< Logical port id */ + volatile uint8_t shimr; /**< Shim header result */ + volatile uint16_t l2r; /**< Layer 2 result */ + volatile uint16_t l3r; /**< Layer 3 result */ + volatile uint8_t l4r; /**< Layer 4 result */ + volatile uint8_t cplan; /**< Classification plan id */ + volatile uint16_t nxthdr; /**< Next Header */ + volatile uint16_t cksum; /**< Checksum */ + volatile uint32_t lcv; /**< LCV */ + volatile uint8_t shim_off[3]; /**< Shim offset */ + volatile uint8_t eth_off; /**< ETH offset */ + volatile uint8_t llc_snap_off; /**< LLC_SNAP offset */ + volatile uint8_t vlan_off[2]; /**< VLAN offset */ + volatile uint8_t etype_off; /**< ETYPE offset */ + volatile uint8_t pppoe_off; /**< PPP offset */ + volatile uint8_t mpls_off[2]; /**< MPLS offset */ + volatile uint8_t ip_off[2]; /**< IP offset */ + volatile uint8_t gre_off; /**< GRE offset */ + volatile uint8_t l4_off; /**< Layer 4 offset */ + volatile uint8_t nxthdr_off; /**< Parser end point */ +} _PackedType t_FmPrsResult; + +/**************************************************************************//** + @Collection FM Parser results +*//***************************************************************************/ +#define FM_PR_L2_VLAN_STACK 0x00000100 /**< Parse Result: VLAN stack */ +#define FM_PR_L2_ETHERNET 0x00008000 /**< Parse Result: Ethernet*/ +#define FM_PR_L2_VLAN 0x00004000 /**< Parse Result: VLAN */ +#define FM_PR_L2_LLC_SNAP 0x00002000 /**< Parse Result: LLC_SNAP */ +#define FM_PR_L2_MPLS 0x00001000 /**< Parse Result: MPLS */ +#define FM_PR_L2_PPPoE 0x00000800 /**< Parse Result: PPPoE */ +/* @} */ + +/**************************************************************************//** + @Collection FM Frame descriptor macros +*//***************************************************************************/ +#define FM_FD_CMD_FCO 0x80000000 /**< Frame queue Context Override */ +#define FM_FD_CMD_RPD 0x40000000 /**< Read Prepended Data */ +#define FM_FD_CMD_UPD 0x20000000 /**< Update Prepended Data */ +#define FM_FD_CMD_DTC 0x10000000 /**< Do L4 Checksum */ +#define FM_FD_CMD_DCL4C 0x10000000 /**< Didn't calculate L4 Checksum */ +#define FM_FD_CMD_CFQ 0x00ffffff /**< Confirmation Frame Queue */ + +#define FM_FD_TX_STATUS_ERR_MASK 0x07000000 /**< TX Error FD bits */ +#define FM_FD_RX_STATUS_ERR_MASK 0x070ee3f8 /**< RX Error FD bits */ +/* @} */ + +/**************************************************************************//** + @Description Context A +*//***************************************************************************/ +typedef _Packed struct t_FmContextA { + volatile uint32_t command; /**< ContextA Command */ + volatile uint8_t res0[4]; /**< ContextA Reserved bits */ +} _PackedType t_FmContextA; + +/**************************************************************************//** + @Description Context B +*//***************************************************************************/ +typedef uint32_t t_FmContextB; + +/**************************************************************************//** + @Collection Context A macros +*//***************************************************************************/ +#define FM_CONTEXTA_OVERRIDE_MASK 0x80000000 +#define FM_CONTEXTA_ICMD_MASK 0x40000000 +#define FM_CONTEXTA_A1_VALID_MASK 0x20000000 +#define FM_CONTEXTA_MACCMD_MASK 0x00ff0000 +#define FM_CONTEXTA_MACCMD_VALID_MASK 0x00800000 +#define FM_CONTEXTA_MACCMD_SECURED_MASK 0x00100000 +#define FM_CONTEXTA_MACCMD_SC_MASK 0x000f0000 +#define FM_CONTEXTA_A1_MASK 0x0000ffff + +#define FM_CONTEXTA_GET_OVERRIDE(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_OVERRIDE_MASK) >> (31-0)) +#define FM_CONTEXTA_GET_ICMD(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_ICMD_MASK) >> (31-1)) +#define FM_CONTEXTA_GET_A1_VALID(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_VALID_MASK) >> (31-2)) +#define FM_CONTEXTA_GET_A1(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_MASK) >> (31-31)) +#define FM_CONTEXTA_GET_MACCMD(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_MASK) >> (31-15)) +#define FM_CONTEXTA_GET_MACCMD_VALID(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_VALID_MASK) >> (31-8)) +#define FM_CONTEXTA_GET_MACCMD_SECURED(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SECURED_MASK) >> (31-11)) +#define FM_CONTEXTA_GET_MACCMD_SECURE_CHANNEL(contextA) ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SC_MASK) >> (31-15)) + +#define FM_CONTEXTA_SET_OVERRIDE(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_OVERRIDE_MASK) | (((uint32_t)(val) << (31-0)) & FM_CONTEXTA_OVERRIDE_MASK) )) +#define FM_CONTEXTA_SET_ICMD(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_ICMD_MASK) | (((val) << (31-1)) & FM_CONTEXTA_ICMD_MASK) )) +#define FM_CONTEXTA_SET_A1_VALID(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_A1_VALID_MASK) | (((val) << (31-2)) & FM_CONTEXTA_A1_VALID_MASK) )) +#define FM_CONTEXTA_SET_A1(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_A1_MASK) | (((val) << (31-31)) & FM_CONTEXTA_A1_MASK) )) +#define FM_CONTEXTA_SET_MACCMD(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_MASK) | (((val) << (31-15)) & FM_CONTEXTA_MACCMD_MASK) )) +#define FM_CONTEXTA_SET_MACCMD_VALID(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_VALID_MASK) | (((val) << (31-8)) & FM_CONTEXTA_MACCMD_VALID_MASK) )) +#define FM_CONTEXTA_SET_MACCMD_SECURED(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_SECURED_MASK) | (((val) << (31-11)) & FM_CONTEXTA_MACCMD_SECURED_MASK) )) +#define FM_CONTEXTA_SET_MACCMD_SECURE_CHANNEL(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_SC_MASK) | (((val) << (31-15)) & FM_CONTEXTA_MACCMD_SC_MASK) )) +/* @} */ + +/**************************************************************************//** + @Collection Context B macros +*//***************************************************************************/ +#define FM_CONTEXTB_FQID_MASK 0x00ffffff + +#define FM_CONTEXTB_GET_FQID(contextB) (*((t_FmContextB *)contextB) & FM_CONTEXTB_FQID_MASK) +#define FM_CONTEXTB_SET_FQID(contextB,val) (*((t_FmContextB *)contextB) = ((*((t_FmContextB *)contextB) & ~FM_CONTEXTB_FQID_MASK) | ((val) & FM_CONTEXTB_FQID_MASK))) +/* @} */ + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + + +/**************************************************************************//** + @Description FM Exceptions +*//***************************************************************************/ +typedef enum e_FmExceptions { + e_FM_EX_DMA_BUS_ERROR, /**< DMA bus error. */ + e_FM_EX_DMA_READ_ECC, /**< Read Buffer ECC error */ + e_FM_EX_DMA_SYSTEM_WRITE_ECC, /**< Write Buffer ECC error on system side */ + e_FM_EX_DMA_FM_WRITE_ECC, /**< Write Buffer ECC error on FM side */ + e_FM_EX_FPM_STALL_ON_TASKS, /**< Stall of tasks on FPM */ + e_FM_EX_FPM_SINGLE_ECC, /**< Single ECC on FPM. */ + e_FM_EX_FPM_DOUBLE_ECC, /**< Double ECC error on FPM ram access */ + e_FM_EX_QMI_SINGLE_ECC, /**< Single ECC on QMI. */ + e_FM_EX_QMI_DOUBLE_ECC, /**< Double bit ECC occurred on QMI */ + e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,/**< Dequeu from unknown port id */ + e_FM_EX_BMI_LIST_RAM_ECC, /**< Linked List RAM ECC error */ + e_FM_EX_BMI_PIPELINE_ECC, /**< Pipeline Table ECC Error */ + e_FM_EX_BMI_STATISTICS_RAM_ECC, /**< Statistics Count RAM ECC Error Enable */ + e_FM_EX_BMI_DISPATCH_RAM_ECC, /**< Dispatch RAM ECC Error Enable */ + e_FM_EX_IRAM_ECC, /**< Double bit ECC occurred on IRAM*/ + e_FM_EX_MURAM_ECC /**< Double bit ECC occurred on MURAM*/ +} e_FmExceptions; + +/**************************************************************************//** + @Group FM_init_grp FM Initialization Unit + + @Description FM Initialization Unit + + Initialization Flow + Initialization of the FM Module will be carried out by the application + according to the following sequence: + a. Calling the configuration routine with basic parameters. + b. Calling the advance initialization routines to change driver's defaults. + c. Calling the initialization routine. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function t_FmExceptionsCallback + + @Description Exceptions user callback routine, will be called upon an + exception passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. +*//***************************************************************************/ +typedef void (t_FmExceptionsCallback) (t_Handle h_App, + e_FmExceptions exception); + +/**************************************************************************//** + @Function t_FmBusErrorCallback + + @Description Bus error user callback routine, will be called upon a + bus error, passing parameters describing the errors and the owner. + + @Param[in] h_App - User's application descriptor. + @Param[in] portType - Port type (e_FmPortType) + @Param[in] portId - Port id - relative to type. + @Param[in] addr - Address that caused the error + @Param[in] tnum - Owner of error + @Param[in] liodn - Logical IO device number +*//***************************************************************************/ +typedef void (t_FmBusErrorCallback) (t_Handle h_App, + e_FmPortType portType, + uint8_t portId, + uint64_t addr, + uint8_t tnum, + uint16_t liodn); + +/**************************************************************************//** + @Description structure for defining Ucode patch for loading. +*//***************************************************************************/ +typedef struct t_FmPcdFirmwareParams { + uint32_t size; /**< Size of uCode */ + uint32_t *p_Code; /**< A pointer to the uCode */ +} t_FmPcdFirmwareParams; + +/**************************************************************************//** + @Description structure representing FM initialization parameters +*//***************************************************************************/ +#define FM_SIZE_OF_LIODN_TABLE 64 +typedef struct t_FmParams { + uint8_t fmId; /**< Index of the FM */ + + uint8_t guestId; /**< FM Partition Id */ + + uintptr_t baseAddr; /**< Relevant when guestId = NCSW_MASSTER_ID only. + A pointer to base of memory mapped FM registers (virtual); + NOTE that this should include ALL common regs of the FM including + the PCD regs area. */ + t_Handle h_FmMuram; /**< Relevant when guestId = NCSW_MASSTER_ID only. + A handle of an initialized MURAM object, + to be used by the FM */ + uint16_t fmClkFreq; /**< Relevant when guestId = NCSW_MASSTER_ID only. + In Mhz */ +#ifdef FM_PARTITION_ARRAY + uint16_t liodnBasePerPort[FM_SIZE_OF_LIODN_TABLE]; + /**< Relevant when guestId = NCSW_MASSTER_ID only. + For each partition, LIODN should be configured here. */ +#endif /* FM_PARTITION_ARRAY */ + t_FmExceptionsCallback *f_Exception; /**< Relevant when guestId = NCSW_MASSTER_ID only. + An application callback routine to + handle exceptions.*/ + t_FmBusErrorCallback *f_BusError; /**< Relevant when guestId = NCSW_MASSTER_ID only. + An application callback routine to + handle exceptions.*/ + t_Handle h_App; /**< Relevant when guestId = NCSW_MASSTER_ID only. + A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ + int irq; /**< Relevant when guestId = NCSW_MASSTER_ID only. + FM interrupt source for normal events */ + int errIrq; /**< Relevant when guestId = NCSW_MASSTER_ID only. + FM interrupt source for errors */ + t_FmPcdFirmwareParams firmware; /**< Relevant when guestId = NCSW_MASSTER_ID only. + Ucode */ +} t_FmParams; + + +/**************************************************************************//** + @Function FM_Config + + @Description Creates descriptor for the FM module. + + The routine returns a handle (descriptor) to the FM object. + This descriptor must be passed as first parameter to all other + FM function calls. + + No actual initialization or configuration of FM hardware is + done by this routine. + + @Param[in] p_FmParams - A pointer to data structure of parameters + + @Return Handle to FM object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_Config(t_FmParams *p_FmParams); + +/**************************************************************************//** + @Function FM_Init + + @Description Initializes the FM module + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Init(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_Fm - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_Free(t_Handle h_Fm); + + +/**************************************************************************//** + @Group FM_advanced_init_grp FM Advanced Configuration Unit + + @Description Configuration functions used to change default values; + Note: Advanced init routines are not available for guest partition. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description DMA debug mode +*//***************************************************************************/ +typedef enum e_FmDmaDbgCntMode { + e_FM_DMA_DBG_NO_CNT = 0, /**< No counting */ + e_FM_DMA_DBG_CNT_DONE, /**< Count DONE commands */ + e_FM_DMA_DBG_CNT_COMM_Q_EM, /**< count command queue emergency signals */ + e_FM_DMA_DBG_CNT_INT_READ_EM, /**< Count Internal Read buffer emergency signal */ + e_FM_DMA_DBG_CNT_INT_WRITE_EM, /**< Count Internal Write buffer emergency signal */ + e_FM_DMA_DBG_CNT_FPM_WAIT, /**< Count FPM WAIT signal */ + e_FM_DMA_DBG_CNT_SIGLE_BIT_ECC, /**< Single bit ECC errors. */ + e_FM_DMA_DBG_CNT_RAW_WAR_PROT /**< Number of times there was a need for RAW & WAR protection. */ +} e_FmDmaDbgCntMode; + +/**************************************************************************//** + @Description DMA Cache Override +*//***************************************************************************/ +typedef enum e_FmDmaCacheOverride { + e_FM_DMA_NO_CACHE_OR = 0, /**< No override of the Cache field */ + e_FM_DMA_NO_STASH_DATA, /**< Data should not be stashed in system level cache */ + e_FM_DMA_MAY_STASH_DATA, /**< Data may be stashed in system level cache */ + e_FM_DMA_STASH_DATA /**< Data should be stashed in system level cache */ +} e_FmDmaCacheOverride; + +/**************************************************************************//** + @Description DMA External Bus Priority +*//***************************************************************************/ +typedef enum e_FmDmaExtBusPri { + e_FM_DMA_EXT_BUS_NORMAL = 0, /**< Normal priority */ + e_FM_DMA_EXT_BUS_EBS, /**< AXI extended bus service priority */ + e_FM_DMA_EXT_BUS_SOS, /**< AXI sos priority */ + e_FM_DMA_EXT_BUS_EBS_AND_SOS /**< AXI ebs + sos priority */ +} e_FmDmaExtBusPri; + +/**************************************************************************//** + @Description enum for choosing the field that will be output on AID +*//***************************************************************************/ +typedef enum e_FmDmaAidMode { + e_FM_DMA_AID_OUT_PORT_ID = 0, /**< 4 LSB of PORT_ID */ + e_FM_DMA_AID_OUT_TNUM /**< 4 LSB of TNUM */ +} e_FmDmaAidMode; + +/**************************************************************************//** + @Description FPM Catasrophic error behaviour +*//***************************************************************************/ +typedef enum e_FmCatastrophicErr { + e_FM_CATASTROPHIC_ERR_STALL_PORT = 0, /**< Port_ID is stalled (only reset can release it) */ + e_FM_CATASTROPHIC_ERR_STALL_TASK /**< Only errornous task is stalled */ +} e_FmCatastrophicErr; + +/**************************************************************************//** + @Description FPM DMA error behaviour +*//***************************************************************************/ +typedef enum e_FmDmaErr { + e_FM_DMA_ERR_CATASTROPHIC = 0, /**< Dma error is treated as a catastrophic error */ + e_FM_DMA_ERR_REPORT /**< Dma error is just reported */ +} e_FmDmaErr; + +/**************************************************************************//** + @Description DMA Emergency level by BMI emergency signal +*//***************************************************************************/ +typedef enum e_FmDmaEmergencyLevel { + e_FM_DMA_EM_EBS = 0, /**< EBS emergency */ + e_FM_DMA_EM_SOS /**< SOS emergency */ +} e_FmDmaEmergencyLevel; + +/**************************************************************************//** + @Collection DMA emergency options +*//***************************************************************************/ +typedef uint32_t fmEmergencyBus_t; /**< DMA emergency options */ + +#define FM_DMA_MURAM_READ_EMERGENCY 0x00800000 /**< Enable emergency for MURAM1 */ +#define FM_DMA_MURAM_WRITE_EMERGENCY 0x00400000 /**< Enable emergency for MURAM2 */ +#define FM_DMA_EXT_BUS_EMERGENCY 0x00100000 /**< Enable emergency for external bus */ +/* @} */ + +/**************************************************************************//** + @Description A structure for defining DMA emergency level +*//***************************************************************************/ +typedef struct t_FmDmaEmergency { + fmEmergencyBus_t emergencyBusSelect; /**< An OR of the busses where emergency + should be enabled */ + e_FmDmaEmergencyLevel emergencyLevel; /**< EBS/SOS */ +} t_FmDmaEmergency; + +/**************************************************************************//** + @Description structure for defining FM threshold +*//***************************************************************************/ +typedef struct t_FmThresholds { + uint8_t dispLimit; /**< The number of times a frames may + be passed in the FM before assumed to + be looping. */ + uint8_t prsDispTh; /**< This is the number pf packets that may be + queued in the parser dispatch queue*/ + uint8_t plcrDispTh; /**< This is the number pf packets that may be + queued in the policer dispatch queue*/ + uint8_t kgDispTh; /**< This is the number pf packets that may be + queued in the keygen dispatch queue*/ + uint8_t bmiDispTh; /**< This is the number pf packets that may be + queued in the BMI dispatch queue*/ + uint8_t qmiEnqDispTh; /**< This is the number pf packets that may be + queued in the QMI enqueue dispatch queue*/ + uint8_t qmiDeqDispTh; /**< This is the number pf packets that may be + queued in the QMI dequeue dispatch queue*/ + uint8_t fmCtl1DispTh; /**< This is the number pf packets that may be + queued in fmCtl1 dispatch queue*/ + uint8_t fmCtl2DispTh; /**< This is the number pf packets that may be + queued in fmCtl2 dispatch queue*/ +} t_FmThresholds; + + +/**************************************************************************//** + @Description structure for defining DMA thresholds +*//***************************************************************************/ +typedef struct t_FmDmaThresholds { + uint8_t assertEmergency; /**< When this value is reached, + assert emergency (Threshold)*/ + uint8_t clearEmergency; /**< After emergency is asserted, it is held + until this value is reached (Hystheresis) */ +} t_FmDmaThresholds; + + +/**************************************************************************//** + @Function FM_ConfigResetOnInit + + @Description Tell the driver whether to reset the FM before initialization or + not. It changes the default configuration [FALSE]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable When TRUE, FM will be reset before any initialization. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigResetOnInit(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigTotalNumOfTasks + + @Description Change the total number of tasks from its default + configuration [BMI_MAX_NUM_OF_TASKS] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] totalNumOfTasks The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigTotalNumOfTasks(t_Handle h_Fm, uint8_t totalNumOfTasks); + +/**************************************************************************//** + @Function FM_ConfigTotalFifoSize + + @Description Change the total Fifo size from its default + configuration [BMI_MAX_FIFO_SIZE] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] totalFifoSize The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigTotalFifoSize(t_Handle h_Fm, uint32_t totalFifoSize); + +/**************************************************************************//** + @Function FM_ConfigMaxNumOfOpenDmas + + @Description Change the maximum allowed open DMA's for this FM from its default + configuration [BMI_MAX_NUM_OF_DMAS] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] maxNumOfOpenDmas The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigMaxNumOfOpenDmas(t_Handle h_Fm, uint8_t maxNumOfOpenDmas); + +/**************************************************************************//** + @Function FM_ConfigThresholds + + @Description Calling this routine changes the internal driver data base + from its default FM threshold configuration: + dispLimit: [0] + prsDispTh: [16] + plcrDispTh: [16] + kgDispTh: [16] + bmiDispTh: [16] + qmiEnqDispTh: [16] + qmiDeqDispTh: [16] + fmCtl1DispTh: [16] + fmCtl2DispTh: [16] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmThresholds A structure of threshold parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigThresholds(t_Handle h_Fm, t_FmThresholds *p_FmThresholds); + + /**************************************************************************//** + @Function FM_ConfigDmaCacheOverride + + @Description Calling this routine changes the internal driver data base + from its default configuration of cache override mode [e_FM_DMA_NO_CACHE_OR] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] cacheOverride The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaCacheOverride(t_Handle h_Fm, e_FmDmaCacheOverride cacheOverride); + +/**************************************************************************//** + @Function FM_ConfigDmaAidOverride + + @Description Calling this routine changes the internal driver data base + from its default configuration of aid override mode [TRUE] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] aidOverride The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaAidOverride(t_Handle h_Fm, bool aidOverride); + +/**************************************************************************//** + @Function FM_ConfigDmaAidMode + + @Description Calling this routine changes the internal driver data base + from its default configuration of aid mode [e_FM_DMA_AID_OUT_TNUM] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] aidMode The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaAidMode(t_Handle h_Fm, e_FmDmaAidMode aidMode); + +/**************************************************************************//** + @Function FM_ConfigDmaAxiDbgNumOfBeats + + @Description Calling this routine changes the internal driver data base + from its default configuration of axi debug [1] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] axiDbgNumOfBeats The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaAxiDbgNumOfBeats(t_Handle h_Fm, uint8_t axiDbgNumOfBeats); + +/**************************************************************************//** + @Function FM_ConfigDmaCamNumOfEntries + + @Description Calling this routine changes the internal driver data base + from its default configuration of number of CAM entries [32] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] numOfEntries The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaCamNumOfEntries(t_Handle h_Fm, uint8_t numOfEntries); + +/**************************************************************************//** + @Function FM_ConfigDmaWatchdog + + @Description Calling this routine changes the internal driver data base + from its default watchdog configuration, which is disabled + [0]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] watchDogValue The selected new value - in microseconds. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaWatchdog(t_Handle h_Fm, uint32_t watchDogValue); + +/**************************************************************************//** + @Function FM_ConfigDmaWriteBufThresholds + + @Description Calling this routine changes the internal driver data base + from its default configuration of DMA write buffer threshold + assertEmergency: [DMA_THRESH_MAX_BUF] + clearEmergency: [DMA_THRESH_MAX_BUF] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmDmaThresholds A structure of thresholds to define emergency behavior - + When 'assertEmergency' value is reached, emergency is asserted, + then it is held until 'clearEmergency' value is reached. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaWriteBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds); + + /**************************************************************************//** + @Function FM_ConfigDmaCommQThresholds + + @Description Calling this routine changes the internal driver data base + from its default configuration of DMA command queue threshold + assertEmergency: [DMA_THRESH_MAX_COMMQ] + clearEmergency: [DMA_THRESH_MAX_COMMQ] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmDmaThresholds A structure of thresholds to define emergency behavior - + When 'assertEmergency' value is reached, emergency is asserted, + then it is held until 'clearEmergency' value is reached.. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaCommQThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds); + +/**************************************************************************//** + @Function FM_ConfigDmaReadBufThresholds + + @Description Calling this routine changes the internal driver data base + from its default configuration of DMA read buffer threshold + assertEmergency: [DMA_THRESH_MAX_BUF] + clearEmergency: [DMA_THRESH_MAX_BUF] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_FmDmaThresholds A structure of thresholds to define emergency behavior - + When 'assertEmergency' value is reached, emergency is asserted, + then it is held until 'clearEmergency' value is reached.. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaReadBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds); + +/**************************************************************************//** + @Function FM_ConfigDmaSosEmergencyThreshold + + @Description Calling this routine changes the internal driver data base + from its default dma SOS emergency configuration [0] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] dmaSosEmergency The selected new value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaSosEmergencyThreshold(t_Handle h_Fm, uint32_t dmaSosEmergency); + +/**************************************************************************//** + @Function FM_ConfigEnableCounters + + @Description Calling this routine changes the internal driver data base + from its default counters configuration where counters are disabled. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigEnableCounters(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ConfigDmaDbgCounter + + @Description Calling this routine changes the internal driver data base + from its default DMA debug counters configuration [e_FM_DMA_DBG_NO_CNT] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] fmDmaDbgCntMode An enum selecting the debug counter mode. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaDbgCounter(t_Handle h_Fm, e_FmDmaDbgCntMode fmDmaDbgCntMode); + +/**************************************************************************//** + @Function FM_ConfigDmaStopOnBusErr + + @Description Calling this routine changes the internal driver data base + from its default selection of bus error behavior [FALSE] + + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] stop TRUE to stop on bus error, FALSE to continue. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). + Only if bus error is enabled. +*//***************************************************************************/ +t_Error FM_ConfigDmaStopOnBusErr(t_Handle h_Fm, bool stop); + +/**************************************************************************//** + @Function FM_ConfigDmaEmergency + + @Description Calling this routine changes the internal driver data base + from its default selection of DMA emergency where's it's disabled. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_Emergency An OR mask of all required options. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaEmergency(t_Handle h_Fm, t_FmDmaEmergency *p_Emergency); + +/**************************************************************************//** + @Function FM_ConfigDmaEmergencySmoother + + @Description sets the minimum amount of DATA beats transferred on the AXI + READ and WRITE ports before lowering the emergency level. + By default smother is disabled. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] emergencyCnt emergency switching counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaEmergencySmoother(t_Handle h_Fm, uint32_t emergencyCnt); + +/**************************************************************************//** + @Function FM_ConfigDmaErr + + @Description Calling this routine changes the internal driver data base + from its default DMA error treatment [e_FM_DMA_ERR_CATASTROPHIC] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] dmaErr The selected new choice. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigDmaErr(t_Handle h_Fm, e_FmDmaErr dmaErr); + +/**************************************************************************//** + @Function FM_ConfigCatastrophicErr + + @Description Calling this routine changes the internal driver data base + from its default behavior on catastrophic error [e_FM_CATASTROPHIC_ERR_STALL_PORT] + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] catastrophicErr The selected new choice. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigCatastrophicErr(t_Handle h_Fm, e_FmCatastrophicErr catastrophicErr); + +/**************************************************************************//** + @Function FM_ConfigEnableMuramTestMode + + @Description Calling this routine changes the internal driver data base + from its default selection of test mode where it's disabled. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigEnableMuramTestMode(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ConfigEnableIramTestMode + + @Description Calling this routine changes the internal driver data base + from its default selection of test mode where it's disabled. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigEnableIramTestMode(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ConfigHaltOnExternalActivation + + @Description Calling this routine changes the internal driver data base + from its default selection of FM behaviour on external halt + activation [FALSE]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable TRUE to enable halt on external halt + activation. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigHaltOnExternalActivation(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigHaltOnUnrecoverableEccError + + @Description Calling this routine changes the internal driver data base + from its default selection of FM behaviour on unrecoverable + Ecc error [FALSE]. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable TRUE to enable halt on unrecoverable Ecc error + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigHaltOnUnrecoverableEccError(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigException + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + By default all exceptions are enabled. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigException(t_Handle h_Fm, e_FmExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_ConfigExternalEccRamsEnable + + @Description Calling this routine changes the internal driver data base + from its default [FALSE]. + When this option is enabled Rams ECC enable is not effected + by the FPM RCR bit, but by a JTAG. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] enable TRUE to enable this option. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigExternalEccRamsEnable(t_Handle h_Fm, bool enable); + +/**************************************************************************//** + @Function FM_ConfigTnumAgingPeriod + + @Description Calling this routine changes the internal driver data base + from its default configuration for aging of dequeue TNUM's + in the QMI.[0] + Note that this functionality is not available in all chips. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] tnumAgingPeriod Tnum Aging Period in microseconds. + Note that period is recalculated in units of + 64 FM clocks. Driver will pick the closest + possible period. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_ConfigTnumAgingPeriod(t_Handle h_Fm, uint16_t tnumAgingPeriod); + +/** @} */ /* end of FM_advanced_init_grp group */ +/** @} */ /* end of FM_init_grp group */ + + +/**************************************************************************//** + @Group FM_runtime_control_grp FM Runtime Control Unit + + @Description FM Runtime control unit API functions, definitions and enums. + The FM driver provides a set of control routines for each module. + These routines may only be called after the module was fully + initialized (both configuration and initialization routines were + called). They are typically used to get information from hardware + (status, counters/statistics, revision etc.), to modify a current + state or to force/enable a required action. Run-time control may + be called whenever necessary and as many times as needed. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General FM defines. +*//***************************************************************************/ +#define FM_MAX_NUM_OF_VALID_PORTS (FM_MAX_NUM_OF_OH_PORTS + \ + FM_MAX_NUM_OF_1G_RX_PORTS + \ + FM_MAX_NUM_OF_10G_RX_PORTS + \ + FM_MAX_NUM_OF_1G_TX_PORTS + \ + FM_MAX_NUM_OF_10G_TX_PORTS) +/* @} */ + +/**************************************************************************//** + @Description Structure for Port bandwidth requirement. Port is identified + by type and relative id. +*//***************************************************************************/ +typedef struct t_FmPortBandwidth { + e_FmPortType type; /**< FM port type */ + uint8_t relativePortId; /**< Type relative port id */ + uint8_t bandwidth; /**< bandwidth - (in term of percents) */ +} t_FmPortBandwidth; + +/**************************************************************************//** + @Description A Structure containing an array of Port bandwidth requirements. + The user should state the ports requiring bandwidth in terms of + percentage - i.e. all port's bandwidths in the array must add + up to 100. +*//***************************************************************************/ +typedef struct t_FmPortsBandwidthParams { + uint8_t numOfPorts; /**< num of ports listed in the array below */ + t_FmPortBandwidth portsBandwidths[FM_MAX_NUM_OF_VALID_PORTS]; + /**< for each port, it's bandwidth (all port's + bandwidths must add up to 100.*/ +} t_FmPortsBandwidthParams; + +/**************************************************************************//** + @Description DMA Emergency control on MURAM +*//***************************************************************************/ +typedef enum e_FmDmaMuramPort { + e_FM_DMA_MURAM_PORT_WRITE, /**< MURAM write port */ + e_FM_DMA_MURAM_PORT_READ /**< MURAM read port */ +} e_FmDmaMuramPort; + +/**************************************************************************//** + @Description enum for defining FM counters +*//***************************************************************************/ +typedef enum e_FmCounters { + e_FM_COUNTERS_ENQ_TOTAL_FRAME = 0, /**< QMI total enqueued frames counter */ + e_FM_COUNTERS_DEQ_TOTAL_FRAME, /**< QMI total dequeued frames counter */ + e_FM_COUNTERS_DEQ_0, /**< QMI 0 frames from QMan counter */ + e_FM_COUNTERS_DEQ_1, /**< QMI 1 frames from QMan counter */ + e_FM_COUNTERS_DEQ_2, /**< QMI 2 frames from QMan counter */ + e_FM_COUNTERS_DEQ_3, /**< QMI 3 frames from QMan counter */ + e_FM_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI dequeue from default queue counter */ + e_FM_COUNTERS_DEQ_FROM_CONTEXT, /**< QMI dequeue from FQ context counter */ + e_FM_COUNTERS_DEQ_FROM_FD, /**< QMI dequeue from FD command field counter */ + e_FM_COUNTERS_DEQ_CONFIRM, /**< QMI dequeue confirm counter */ + e_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT, /**< DMA semaphor reject due to full entry counter */ + e_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT, /**< DMA semaphor reject due to full CAM queue counter */ + e_FM_COUNTERS_SEMAPHOR_SYNC_REJECT /**< DMA semaphor reject due to sync counter */ +} e_FmCounters; + +/**************************************************************************//** + @Description structure for returning revision information +*//***************************************************************************/ +typedef struct t_FmRevisionInfo { + uint8_t majorRev; /**< Major revision */ + uint8_t minorRev; /**< Minor revision */ +} t_FmRevisionInfo; + +/**************************************************************************//** + @Description struct for defining DMA status +*//***************************************************************************/ +typedef struct t_FmDmaStatus { + bool cmqNotEmpty; /**< Command queue is not empty */ + bool busError; /**< Bus error occurred */ + bool readBufEccError; /**< Double ECC error on buffer Read */ + bool writeBufEccSysError; /**< Double ECC error on buffer write from system side */ + bool writeBufEccFmError; /**< Double ECC error on buffer write from FM side */ +} t_FmDmaStatus; + + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_DumpRegs + + @Description Dumps all FM registers + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; + + @Cautions Allowed only FM_Init(). +*//***************************************************************************/ +t_Error FM_DumpRegs(t_Handle h_Fm); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/**************************************************************************//** + @Function FM_SetException + + @Description Calling this routine enables/disables the specified exception. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_SetException(t_Handle h_Fm, e_FmExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_SetPortsBandwidth + + @Description Sets relative weights between ports when accessing common resources. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] p_PortsBandwidth A structure of ports bandwidths in percentage, i.e. + total must equal 100. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_SetPortsBandwidth(t_Handle h_Fm, t_FmPortsBandwidthParams *p_PortsBandwidth); + +/**************************************************************************//** + @Function FM_EnableRamsEcc + + @Description Enables ECC mechanism for all the different FM RAM's; E.g. IRAM, + MURAM, Parser, Keygen, Policer, etc. + Note: + If FM_ConfigExternalEccRamsEnable was called to enable external + setting of ECC, this routine effects IRAM ECC only. + This routine is also called by the driver if an ECC exception is + enabled. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_EnableRamsEcc(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_DisableRamsEcc + + @Description Disables ECC mechanism for all the different FM RAM's; E.g. IRAM, + MURAM, Parser, Keygen, Policer, etc. + Note: + If FM_ConfigExternalEccRamsEnable was called to enable external + setting of ECC, this routine effects IRAM ECC only. + In opposed to FM_EnableRamsEcc, this routine must be called + explicitly to disable all Rams ECC. + Note: Not available for guest partition. + + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Config() and before FM_Init(). +*//***************************************************************************/ +t_Error FM_DisableRamsEcc(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_GetRevision + + @Description Returns the FM revision + + @Param[in] h_Fm A handle to an FM Module. + @Param[out] p_FmRevisionInfo A structure of revision information parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_GetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo); + +/**************************************************************************//** + @Function FM_GetCounter + + @Description Reads one of the FM counters. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] counter The requested counter. + + @Return Counter's current value. + + @Cautions Allowed only following FM_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_GetCounter(t_Handle h_Fm, e_FmCounters counter); + +/**************************************************************************//** + @Function FM_ModifyCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] counter The requested counter. + @Param[in] val The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_ModifyCounter(t_Handle h_Fm, e_FmCounters counter, uint32_t val); + +/**************************************************************************//** + @Function FM_Resume + + @Description Release FM after halt FM command or after unrecoverable ECC error. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +void FM_Resume(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_SetDmaEmergency + + @Description Manual emergency set + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] muramPort MURAM direction select. + @Param[in] enable TRUE to manually enable emergency, FALSE to disable. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FM_SetDmaEmergency(t_Handle h_Fm, e_FmDmaMuramPort muramPort, bool enable); + +/**************************************************************************//** + @Function FM_SetDmaExtBusPri + + @Description Manual emergency set + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] pri External bus priority select + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FM_SetDmaExtBusPri(t_Handle h_Fm, e_FmDmaExtBusPri pri); + +/**************************************************************************//** + @Function FM_ForceIntr + + @Description Causes an interrupt event on the requested source. + Note: Not available for guest partition. + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] exception An exception to be forced. + + @Return E_OK on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_ForceIntr (t_Handle h_Fm, e_FmExceptions exception); + +/**************************************************************************//** + @Function FM_GetDmaStatus + + @Description Reads the DMA current status + + @Param[in] h_Fm A handle to an FM Module. + @Param[out] p_FmDmaStatus A structure of DMA status parameters. + + @Return None + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +void FM_GetDmaStatus(t_Handle h_Fm, t_FmDmaStatus *p_FmDmaStatus); + +/**************************************************************************//** + @Function FM_GetPcdHandle + + @Description Used by FMC in order to get PCD handle + + @Param[in] h_Fm A handle to an FM Module. + + @Return A handle to the PCD module, NULL if uninitialized. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Handle FM_GetPcdHandle(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_ErrorIsr + Note: Not available for guest partition. + + @Description FM interrupt-service-routine for errors. + + @Param[in] h_Fm A handle to an FM Module. + + @Return E_OK on success; E_EMPTY if no errors found in register, other + error code otherwise. + + @Cautions Allowed only following FM_Init(). + This routine should NOT be called from guest-partition + (i.e. guestId != NCSW_MASTER_ID) +*//***************************************************************************/ +t_Error FM_ErrorIsr(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_EventIsr + Note: Not available for guest partition. + + @Description FM interrupt-service-routine for normal events. + + @Param[in] h_Fm A handle to an FM Module. + + @Cautions Allowed only following FM_Init(). + This routine should NOT be called from guest-partition + (i.e. guestId != NCSW_MASTER_ID) +*//***************************************************************************/ +void FM_EventIsr(t_Handle h_Fm); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FmDumpPortRegs + + @Description Dumps FM port registers which are part of FM common registers + + @Param[in] h_Fm A handle to an FM Module. + @Param[in] hardwarePortId HW port id. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only FM_Init(). +*//***************************************************************************/ +t_Error FmDumpPortRegs(t_Handle h_Fm,uint8_t hardwarePortId); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + +/** @} */ /* end of FM_runtime_control_grp group */ +/** @} */ /* end of FM_lib_grp group */ +/** @} */ /* end of FM_grp group */ + +#endif /* __FM_EXT */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/mii_acc_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/mii_acc_ext.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef __MII_ACC_EXT_H +#define __MII_ACC_EXT_H + + +/**************************************************************************//** + @Function MII_ReadPhyReg + + @Description This routine is called to read a specified PHY + register value. + + @Param[in] h_MiiAccess - Handle to MII configuration access registers + @Param[in] phyAddr - PHY address (0-31). + @Param[in] reg - PHY register to read + @Param[out] p_Data - Gets the register value. + + @Return Always zero (success). +*//***************************************************************************/ +int MII_ReadPhyReg(t_Handle h_MiiAccess, + uint8_t phyAddr, + uint8_t reg, + uint16_t *p_Data); + +/**************************************************************************//** + @Function MII_WritePhyReg + + @Description This routine is called to write data to a specified PHY + register. + + @Param[in] h_MiiAccess - Handle to MII configuration access registers + @Param[in] phyAddr - PHY address (0-31). + @Param[in] reg - PHY register to write + @Param[in] data - Data to write in register. + + @Return Always zero (success). +*//***************************************************************************/ +int MII_WritePhyReg(t_Handle h_MiiAccess, + uint8_t phyAddr, + uint8_t reg, + uint16_t data); + + +#endif /* __MII_ACC_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_pcd_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_pcd_ext.h @@ -0,0 +1,2160 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_pcd_ext.h + + @Description FM PCD ... +*//***************************************************************************/ +#ifndef __FM_PCD_EXT +#define __FM_PCD_EXT + +#include "std_ext.h" +#include "net_ext.h" +#include "list_ext.h" +#include "fm_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_PCD_grp FM PCD + + @Description FM PCD API functions, definitions and enums + + The FM PCD module is responsible for the initialization of all + global classifying FM modules. This includes the parser general and + common registers, the key generator global and common registers, + and the Policer global and common registers. + In addition, the FM PCD SW module will initialize all required + key generator schemes, coarse classification flows, and Policer + profiles. When An FM module is configured to work with one of these + entities, it will register to it using the FM PORT API. The PCD + module will manage the PCD resources - i.e. resource management of + Keygen schemes, etc. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General PCD defines +*//***************************************************************************/ +typedef uint32_t fmPcdEngines_t; /**< options as defined below: */ + +#define FM_PCD_NONE 0 /**< No PCD Engine indicated */ +#define FM_PCD_PRS 0x80000000 /**< Parser indicated */ +#define FM_PCD_KG 0x40000000 /**< Keygen indicated */ +#define FM_PCD_CC 0x20000000 /**< Coarse classification indicated */ +#define FM_PCD_PLCR 0x10000000 /**< Policer indicated */ +#define FM_PCD_MANIP 0x08000000 /**< Manipulation indicated */ + +#define FM_PCD_MAX_NUM_OF_PRIVATE_HDRS 2 /**< Number of units/headers saved for user */ + +#define FM_PCD_PRS_NUM_OF_HDRS 16 /**< Number of headers supported by HW parser */ +#define FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS (32 - FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) + /**< number of distinction units is limited by + register size (32), - reserved bits for + private headers. */ + +#define FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS 4 /**< Maximum number of interchangeable headers in a distinction unit */ +#define FM_PCD_KG_NUM_OF_GENERIC_REGS 8 /**< Total number of generic KG registers */ +#define FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY 35 /**< Max number allowed on any configuration. + For reason of HW implementation, in most + cases less than this will be allowed. The + driver will return error in initialization + time if resource is overused. */ +#define FM_PCD_KG_NUM_OF_EXTRACT_MASKS 4 /**< Total number of masks allowed on KG extractions. */ +#define FM_PCD_KG_NUM_OF_DEFAULT_GROUPS 16 /**< Number of default value logical groups */ + +#define FM_PCD_PRS_NUM_OF_LABELS 32 /**< Max number of SW parser label */ +#define FM_PCD_SW_PRS_SIZE 0x00000800 /**< Total size of sw parser area */ +#define FM_PCD_PRS_SW_OFFSET 0x00000040 /**< Size of illegal addresses at the beginning + of the SW parser area */ +#define FM_PCD_PRS_SW_PATCHES_SIZE 0x00000200 /**< Number of bytes saved for patches */ +#define FM_PCD_PRS_SW_TAIL_SIZE 4 /**< Number of bytes that must be cleared at + the end of the SW parser area */ +#define FM_SW_PRS_MAX_IMAGE_SIZE (FM_PCD_SW_PRS_SIZE-FM_PCD_PRS_SW_OFFSET-FM_PCD_PRS_SW_TAIL_SIZE-FM_PCD_PRS_SW_PATCHES_SIZE) + /**< Max possible size of SW parser code */ + +#define FM_PCD_MAX_MANIP_INSRT_TEMPLATE_SIZE 128 /**< Max possible size of insertion template for + insert manipulation*/ +/* @} */ + + +/**************************************************************************//** + @Group FM_PCD_init_grp FM PCD Initialization Unit + + @Description FM PCD Initialization Unit + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description PCD counters +*//***************************************************************************/ +typedef enum e_FmPcdCounters { + e_FM_PCD_KG_COUNTERS_TOTAL, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_YELLOW, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_RED, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_TOTAL, /**< Policer counter */ + e_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH, /**< Policer counter */ + e_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES, /**< Parser counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES, /**< MURAM counter */ + e_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES /**< FPM counter */ +} e_FmPcdCounters; + +/**************************************************************************//** + @Description PCD interrupts +*//***************************************************************************/ +typedef enum e_FmPcdExceptions { + e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC, /**< Keygen ECC error */ + e_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC, /**< Read Buffer ECC error */ + e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, /**< Write Buffer ECC error on system side */ + e_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR, /**< Write Buffer ECC error on FM side */ + e_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE, /**< Self init complete */ + e_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE, /**< Atomic action complete */ + e_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC, /**< Parser ECC error */ + e_FM_PCD_PRS_EXCEPTION_SINGLE_ECC /**< Parser single ECC */ +} e_FmPcdExceptions; + + +/**************************************************************************//** + @Description Exceptions user callback routine, will be called upon an + exception passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. + *//***************************************************************************/ +typedef void (t_FmPcdExceptionCallback) (t_Handle h_App, e_FmPcdExceptions exception); + +/**************************************************************************//** + @Description Exceptions user callback routine, will be called upon an exception + passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. + @Param[in] index - id of the relevant source (may be scheme or profile id). + *//***************************************************************************/ +typedef void (t_FmPcdIdExceptionCallback) ( t_Handle h_App, + e_FmPcdExceptions exception, + uint16_t index); + +/**************************************************************************//** + @Description A callback for enqueuing frame onto a QM queue. + + @Param[in] h_App - User's application descriptor. + @Param[in] p_Fd - Frame descriptor for the frame. + + @Return E_OK on success; Error code otherwise. + *//***************************************************************************/ +typedef t_Error (t_FmPcdQmEnqueueCallback) (t_Handle h_QmArg, void *p_Fd); + +/**************************************************************************//** + @Description A structure for Host-Command + When using Host command for PCD functionalities, a dedicated port + must be used. If this routine is called for a PCD in a single partition + environment, or it is the Master partition in a Multi partition + environment, The port will be initialized by the PCD driver + initialization routine. + *//***************************************************************************/ +typedef struct t_FmPcdHcParams { + uintptr_t portBaseAddr; /**< Host-Command Port Virtual Address of + memory mapped registers.*/ + uint8_t portId; /**< Host-Command Port Id (0-6 relative + to Host-Command/Offline parsing ports) */ + uint16_t liodnBase; /**< Irrelevant for P4080 rev 1. LIODN base for this port, to be + used together with LIODN offset. */ + uint32_t errFqid; /**< Host-Command Port Error Queue Id. */ + uint32_t confFqid; /**< Host-Command Port Confirmation queue Id. */ + uint32_t qmChannel; /**< Host-Command port - QM-channel dedicated to + this port will be used by the FM for dequeue. */ + t_FmPcdQmEnqueueCallback *f_QmEnqueue; /**< Call back routine for enqueuing a frame to the QM */ + t_Handle h_QmArg; /**< A handle of the QM module */ +} t_FmPcdHcParams; + +/**************************************************************************//** + @Description The main structure for PCD initialization + *//***************************************************************************/ +typedef struct t_FmPcdParams { + bool prsSupport; /**< TRUE if Parser will be used for any + of the FM ports */ + bool ccSupport; /**< TRUE if Coarse Classification will be used for any + of the FM ports */ + bool kgSupport; /**< TRUE if Keygen will be used for any + of the FM ports */ + bool plcrSupport; /**< TRUE if Policer will be used for any + of the FM ports */ + t_Handle h_Fm; /**< A handle to the FM module */ + uint8_t numOfSchemes; /**< Number of schemes dedicated to this partition. */ + bool useHostCommand; /**< Optional for single partition, Mandatory for Multi partition */ + t_FmPcdHcParams hc; /**< Relevant only if useHostCommand=TRUE. + Host Command parameters. */ + + t_FmPcdExceptionCallback *f_Exception; /**< Relevant for master (or single) partition only: Callback routine + to be called of PCD exception */ + t_FmPcdIdExceptionCallback *f_ExceptionId; /**< Relevant for master (or single) partition only: Callback routine + to be used for a single scheme and + profile exceptions */ + t_Handle h_App; /**< Relevant for master (or single) partition only: A handle to an + application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmPcdParams; + + +/**************************************************************************//** + @Function FM_PCD_Config + + @Description Basic configuration of the PCD module. + Creates descriptor for the FM PCD module. + + @Param[in] p_FmPcdParams A structure of parameters for the initialization of PCD. + + @Return A handle to the initialized module. +*//***************************************************************************/ +t_Handle FM_PCD_Config(t_FmPcdParams *p_FmPcdParams); + +/**************************************************************************//** + @Function FM_PCD_Init + + @Description Initialization of the PCD module. + + @Param[in] h_FmPcd - FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_Init(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_Free + + @Description Frees all resources that were assigned to FM module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPcd - FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_Free(t_Handle h_FmPcd); + +/**************************************************************************//** + @Group FM_PCD_advanced_init_grp FM PCD Advanced Configuration Unit + + @Description Configuration functions used to change default values. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_PCD_ConfigPlcrNumOfSharedProfiles + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + [4]. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] numOfSharedPlcrProfiles Number of profiles to + be shared between ports on this partition + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_ConfigPlcrNumOfSharedProfiles(t_Handle h_FmPcd, uint16_t numOfSharedPlcrProfiles); + +/**************************************************************************//** + @Function FM_PCD_ConfigException + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + By default all exceptions are enabled. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ConfigException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ConfigPlcrAutoRefreshMode + + @Description Calling this routine changes the internal driver data base + from its default selection of exceptions enablement. + By default autorefresh is enabled. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] enable TRUE to enable, FALSE to disable + + @Return E_OK on success; Error code otherwise. + + @Cautions Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ConfigPlcrAutoRefreshMode(t_Handle h_FmPcd, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ConfigPrsMaxCycleLimit + + @Description Calling this routine changes the internal data structure for + the maximum parsing time from its default value + [0]. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] value 0 to disable the mechanism, or new + maximum parsing time. + + @Return E_OK on success; Error code otherwise. + + @Cautions Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ConfigPrsMaxCycleLimit(t_Handle h_FmPcd,uint16_t value); + +/** @} */ /* end of FM_PCD_advanced_init_grp group */ +/** @} */ /* end of FM_PCD_init_grp group */ + + +/**************************************************************************//** + @Group FM_PCD_Runtime_grp FM PCD Runtime Unit + + @Description FM PCD Runtime Unit + + The runtime control allows creation of PCD infrastructure modules + such as Network Environment Characteristics, Classification Plan + Groups and Coarse Classification Trees. + It also allows on-the-fly initialization, modification and removal + of PCD modules such as Keygen schemes, coarse classification nodes + and Policer profiles. + + + In order to explain the programming model of the PCD driver interface + a few terms should be explained, and will be used below. + * Distinction Header - One of the 16 protocols supported by the FM parser, + or one of the shim headers (1 or 2). May be a header with a special + option (see below). + * Interchangeable Headers Group- This is a group of Headers recognized + by either one of them. For example, if in a specific context the user + chooses to treat IPv4 and IPV6 in the same way, they may create an + interchangeable Headers Unit consisting of these 2 headers. + * A Distinction Unit - a Distinction Header or an Interchangeable Headers + Group. + * Header with special option - applies to ethernet, mpls, vlan, ipv4 and + ipv6, includes multicast, broadcast and other protocol specific options. + In terms of hardware it relates to the options available in the classification + plan. + * Network Environment Characteristics - a set of Distinction Units that define + the total recognizable header selection for a certain environment. This is + NOT the list of all headers that will ever appear in a flow, but rather + everything that needs distinction in a flow, where distinction is made by keygen + schemes and coarse classification action descriptors. + + The PCD runtime modules initialization is done in stages. The first stage after + initializing the PCD module itself is to establish a Network Flows Environment + Definition. The application may choose to establish one or more such environments. + Later, when needed, the application will have to state, for some of its modules, + to which single environment it belongs. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure for sw parser labels + *//***************************************************************************/ +typedef struct t_FmPcdPrsLabelParams { + uint32_t instructionOffset; /**< SW parser label instruction offset (2 bytes + resolution), relative to Parser RAM. */ + e_NetHeaderType hdr; /**< The existance of this header will envoke + the sw parser code. */ + uint8_t indexPerHdr; /**< Normally 0, if more than one sw parser + attachments for the same header, use this + index to distinguish between them. */ +} t_FmPcdPrsLabelParams; + +/**************************************************************************//** + @Description A structure for sw parser + *//***************************************************************************/ +typedef struct t_FmPcdPrsSwParams { + bool override; /**< FALSE to invoke a check that nothing else + was loaded to this address, including + internal patches. + TRUE to override any existing code.*/ + uint32_t size; /**< SW parser code size */ + uint16_t base; /**< SW parser base (in instruction counts! + must be larger than 0x20)*/ + uint8_t *p_Code; /**< SW parser code */ + uint32_t swPrsDataParams[FM_PCD_PRS_NUM_OF_HDRS]; + /**< SW parser data (parameters) */ + uint8_t numOfLabels; /**< Number of labels for SW parser. */ + t_FmPcdPrsLabelParams labelsTable[FM_PCD_PRS_NUM_OF_LABELS]; + /**< SW parser labels table, containing + numOfLabels entries */ +} t_FmPcdPrsSwParams; + + +/**************************************************************************//** + @Function FM_PCD_Enable + + @Description This routine should be called after PCD is initialized for enabling all + PCD engines according to their existing configuration. + + @Param[in] h_FmPcd FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. +*//***************************************************************************/ +t_Error FM_PCD_Enable(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_Disable + + @Description This routine may be called when PCD is enabled in order to + disable all PCD engines. It may be called + only when none of the ports in the system are using the PCD. + + @Param[in] h_FmPcd FM PCD module descriptor. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is enabled. +*//***************************************************************************/ +t_Error FM_PCD_Disable(t_Handle h_FmPcd); + + +/**************************************************************************//** + @Function FM_PCD_GetCounter + + @Description Reads one of the FM PCD counters. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] counter The requested counter. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PCD_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_PCD_GetCounter(t_Handle h_FmPcd, e_FmPcdCounters counter); + +/**************************************************************************//** +@Function FM_PCD_PrsLoadSw + +@Description This routine may be called in order to load software parsing code. + + +@Param[in] h_FmPcd FM PCD module descriptor. +@Param[in] p_SwPrs A pointer to a structure of software + parser parameters, including the software + parser image. + +@Return E_OK on success; Error code otherwise. + +@Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_PrsLoadSw(t_Handle h_FmPcd, t_FmPcdPrsSwParams *p_SwPrs); + +/**************************************************************************//** + @Function FM_PCD_KgSetDfltValue + + @Description Calling this routine sets a global default value to be used + by the keygen when parser does not recognize a required + field/header. + By default default values are 0. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] valueId 0,1 - one of 2 global default values. + @Param[in] value The requested default value. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_KgSetDfltValue(t_Handle h_FmPcd, uint8_t valueId, uint32_t value); + +/**************************************************************************//** + @Function FM_PCD_KgSetAdditionalDataAfterParsing + + @Description Calling this routine allows the keygen to access data past + the parser finishing point. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] payloadOffset the number of bytes beyond the parser location. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init() and when PCD is disabled. + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_KgSetAdditionalDataAfterParsing(t_Handle h_FmPcd, uint8_t payloadOffset); + +/**************************************************************************//** + @Function FM_PCD_SetException + + @Description Calling this routine enables/disables PCD interrupts. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_SetException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ModifyCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] counter The requested counter. + @Param[in] value The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ModifyCounter(t_Handle h_FmPcd, e_FmPcdCounters counter, uint32_t value); + +/**************************************************************************//** + @Function FM_PCD_SetPlcrStatistics + + @Description This routine may be used to enable/disable policer statistics + counter. By default the statistics is enabled. + + @Param[in] h_FmPcd FM PCD module descriptor + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_SetPlcrStatistics(t_Handle h_FmPcd, bool enable); + +/**************************************************************************//** + @Function FM_PCD_SetPrsStatistics + + @Description Defines whether to gather parser statistics including all ports. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return None + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +void FM_PCD_SetPrsStatistics(t_Handle h_FmPcd, bool enable); + +/**************************************************************************//** + @Function FM_PCD_ForceIntr + + @Description Causes an interrupt event on the requested source. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] exception An exception to be forced. + + @Return E_OK on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following FM_PCD_Init(). + Not available for guest partition. +*//***************************************************************************/ +t_Error FM_PCD_ForceIntr (t_Handle h_FmPcd, e_FmPcdExceptions exception); + +/**************************************************************************//** + @Function FM_PCD_HcTxConf + + @Description This routine should be called to confirm frames that were + received on the HC confirmation queue. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] p_Fd Frame descriptor of the received frame. + + @Cautions Allowed only following FM_PCD_Init(). Allowed only if 'useHostCommand' + option was selected in the initialization. +*//***************************************************************************/ +void FM_PCD_HcTxConf(t_Handle h_FmPcd, t_DpaaFD *p_Fd); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_PCD_DumpRegs + + @Description Dumps all PCD registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_DumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_KgDumpRegs + + @Description Dumps all PCD KG registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_KgDumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_PlcrDumpRegs + + @Description Dumps all PCD Plcr registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrDumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_PlcrProfileDumpRegs + + @Description Dumps all PCD Plcr registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to a profile. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrProfileDumpRegs(t_Handle h_FmPcd, t_Handle h_Profile); + +/**************************************************************************//** + @Function FM_PCD_PrsDumpRegs + + @Description Dumps all PCD Prs registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PrsDumpRegs(t_Handle h_FmPcd); + +/**************************************************************************//** + @Function FM_PCD_HcDumpRegs + + @Description Dumps HC Port registers + + @Param[in] h_FmPcd A handle to an FM PCD Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_HcDumpRegs(t_Handle h_FmPcd); +#endif /* (defined(DEBUG_ERRORS) && ... */ + + + +/**************************************************************************//** + @Group FM_PCD_Runtime_tree_buildgrp FM PCD Tree building Unit + + @Description FM PCD Runtime Unit + + This group contains routines for setting, deleting and modifying + PCD resources, for defining the total PCD tree. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection Definitions of coarse classification + parameters as required by keygen (when coarse classification + is the next engine after this scheme). +*//***************************************************************************/ +#define FM_PCD_MAX_NUM_OF_CC_NODES 255 +#define FM_PCD_MAX_NUM_OF_CC_TREES 8 +#define FM_PCD_MAX_NUM_OF_CC_GROUPS 16 +#define FM_PCD_MAX_NUM_OF_CC_UNITS 4 +#define FM_PCD_MAX_NUM_OF_KEYS 256 +#define FM_PCD_MAX_SIZE_OF_KEY 56 +#define FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP 16 +/* @} */ + +/**************************************************************************//** + @Collection A set of definitions to allow protocol + special option description. +*//***************************************************************************/ +typedef uint32_t protocolOpt_t; /**< A general type to define a protocol option. */ + +typedef protocolOpt_t ethProtocolOpt_t; /**< Ethernet protocol options. */ +#define ETH_BROADCAST 0x80000000 /**< Ethernet Broadcast. */ +#define ETH_MULTICAST 0x40000000 /**< Ethernet Multicast. */ + +typedef protocolOpt_t vlanProtocolOpt_t; /**< Vlan protocol options. */ +#define VLAN_STACKED 0x20000000 /**< Vlan Stacked. */ + +typedef protocolOpt_t mplsProtocolOpt_t; /**< MPLS protocol options. */ +#define MPLS_STACKED 0x10000000 /**< MPLS Stacked. */ + +typedef protocolOpt_t ipv4ProtocolOpt_t; /**< IPv4 protocol options. */ +#define IPV4_BROADCAST_1 0x08000000 /**< IPv4 Broadcast. */ +#define IPV4_MULTICAST_1 0x04000000 /**< IPv4 Multicast. */ +#define IPV4_UNICAST_2 0x02000000 /**< Tunneled IPv4 - Unicast. */ +#define IPV4_MULTICAST_BROADCAST_2 0x01000000 /**< Tunneled IPv4 - Broadcast/Multicast. */ + +typedef protocolOpt_t ipv6ProtocolOpt_t; /**< IPv6 protocol options. */ +#define IPV6_MULTICAST_1 0x00800000 /**< IPv6 Multicast. */ +#define IPV6_UNICAST_2 0x00400000 /**< Tunneled IPv6 - Unicast. */ +#define IPV6_MULTICAST_2 0x00200000 /**< Tunneled IPv6 - Multicast. */ +/* @} */ + +/**************************************************************************//** + @Description A type used for returning the order of the key extraction. + each value in this array represents the index of the extraction + command as defined by the user in the initialization extraction array. + The valid size of this array is the user define number of extractions + required (also marked by the second '0' in this array). +*//***************************************************************************/ +typedef uint8_t t_FmPcdKgKeyOrder [FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; + +/**************************************************************************//** + @Description All PCD engines +*//***************************************************************************/ +typedef enum e_FmPcdEngine { + e_FM_PCD_INVALID = 0, /**< Invalid PCD engine indicated*/ + e_FM_PCD_DONE, /**< No PCD Engine indicated */ + e_FM_PCD_KG, /**< Keygen indicated */ + e_FM_PCD_CC, /**< Coarse classification indicated */ + e_FM_PCD_PLCR, /**< Policer indicated */ + e_FM_PCD_PRS /**< Parser indicated */ +} e_FmPcdEngine; + +/**************************************************************************//** + @Description An enum for selecting extraction by header types +*//***************************************************************************/ +typedef enum e_FmPcdExtractByHdrType { + e_FM_PCD_EXTRACT_FROM_HDR, /**< Extract bytes from header */ + e_FM_PCD_EXTRACT_FROM_FIELD, /**< Extract bytes from header field */ + e_FM_PCD_EXTRACT_FULL_FIELD /**< Extract a full field */ +} e_FmPcdExtractByHdrType; + +/**************************************************************************//** + @Description An enum for selecting extraction source + (when it is not the header) +*//***************************************************************************/ +typedef enum e_FmPcdExtractFrom { + e_FM_PCD_EXTRACT_FROM_FRAME_START, /**< KG & CC: Extract from beginning of frame */ + e_FM_PCD_EXTRACT_FROM_DFLT_VALUE, /**< KG only: Extract from a default value */ + e_FM_PCD_EXTRACT_FROM_CURR_END_OF_PARSE, /**< KG only: Extract from the point where parsing had finished */ + e_FM_PCD_EXTRACT_FROM_KEY, /**< CC only: Field where saved KEY */ + e_FM_PCD_EXTRACT_FROM_HASH, /**< CC only: Field where saved HASH */ + e_FM_PCD_EXTRACT_FROM_PARSE_RESULT, /**< KG & CC: Extract from the parser result */ + e_FM_PCD_EXTRACT_FROM_ENQ_FQID, /**< KG & CC: Extract from enqueue FQID */ + e_FM_PCD_EXTRACT_FROM_FLOW_ID /**< CC only: Field where saved Dequeue FQID */ +} e_FmPcdExtractFrom; + +/**************************************************************************//** + @Description An enum for selecting extraction type +*//***************************************************************************/ +typedef enum e_FmPcdExtractType { + e_FM_PCD_EXTRACT_BY_HDR, /**< Extract according to header */ + e_FM_PCD_EXTRACT_NON_HDR, /**< Extract from data that is not the header */ + e_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO /**< Extract private info as specified by user */ +} e_FmPcdExtractType; + +/**************************************************************************//** + @Description An enum for selecting a default +*//***************************************************************************/ +typedef enum e_FmPcdKgExtractDfltSelect { + e_FM_PCD_KG_DFLT_GBL_0, /**< Default selection is KG register 0 */ + e_FM_PCD_KG_DFLT_GBL_1, /**< Default selection is KG register 1 */ + e_FM_PCD_KG_DFLT_PRIVATE_0, /**< Default selection is a per scheme register 0 */ + e_FM_PCD_KG_DFLT_PRIVATE_1, /**< Default selection is a per scheme register 1 */ + e_FM_PCD_KG_DFLT_ILLEGAL /**< Illegal selection */ +} e_FmPcdKgExtractDfltSelect; + +/**************************************************************************//** + @Description An enum defining all default groups - + each group shares a default value, one of 4 user + initialized values. +*//***************************************************************************/ +typedef enum e_FmPcdKgKnownFieldsDfltTypes { + e_FM_PCD_KG_MAC_ADDR, /**< MAC Address */ + e_FM_PCD_KG_TCI, /**< TCI field */ + e_FM_PCD_KG_ENET_TYPE, /**< ENET Type */ + e_FM_PCD_KG_PPP_SESSION_ID, /**< PPP Session id */ + e_FM_PCD_KG_PPP_PROTOCOL_ID, /**< PPP Protocol id */ + e_FM_PCD_KG_MPLS_LABEL, /**< MPLS label */ + e_FM_PCD_KG_IP_ADDR, /**< IP addr */ + e_FM_PCD_KG_PROTOCOL_TYPE, /**< Protocol type */ + e_FM_PCD_KG_IP_TOS_TC, /**< TOS or TC */ + e_FM_PCD_KG_IPV6_FLOW_LABEL, /**< IPV6 flow label */ + e_FM_PCD_KG_IPSEC_SPI, /**< IPSEC SPI */ + e_FM_PCD_KG_L4_PORT, /**< L4 Port */ + e_FM_PCD_KG_TCP_FLAG, /**< TCP Flag */ + e_FM_PCD_KG_GENERIC_FROM_DATA, /**< grouping implemented by sw, + any data extraction that is not the full + field described above */ + e_FM_PCD_KG_GENERIC_FROM_DATA_NO_V, /**< grouping implemented by sw, + any data extraction without validation */ + e_FM_PCD_KG_GENERIC_NOT_FROM_DATA /**< grouping implemented by sw, + extraction from parser result or + direct use of default value */ +} e_FmPcdKgKnownFieldsDfltTypes; + +/**************************************************************************//** + @Description enum for defining header index when headers may repeat +*//***************************************************************************/ +typedef enum e_FmPcdHdrIndex { + e_FM_PCD_HDR_INDEX_NONE = 0, /**< used when multiple headers not used, also + to specify regular IP (not tunneled). */ + e_FM_PCD_HDR_INDEX_1, /**< may be used for VLAN, MPLS, tunneled IP */ + e_FM_PCD_HDR_INDEX_2, /**< may be used for MPLS, tunneled IP */ + e_FM_PCD_HDR_INDEX_3, /**< may be used for MPLS */ + e_FM_PCD_HDR_INDEX_LAST = 0xFF /**< may be used for VLAN, MPLS */ +} e_FmPcdHdrIndex; + +/**************************************************************************//** + @Description A structure for selcting the policer profile functional type +*//***************************************************************************/ +typedef enum e_FmPcdProfileTypeSelection { + e_FM_PCD_PLCR_PORT_PRIVATE, /**< Port dedicated profile */ + e_FM_PCD_PLCR_SHARED /**< Shared profile (shared within partition) */ +} e_FmPcdProfileTypeSelection; + +/**************************************************************************//** + @Description A structure for selcting the policer profile algorithem +*//***************************************************************************/ +typedef enum e_FmPcdPlcrAlgorithmSelection { + e_FM_PCD_PLCR_PASS_THROUGH, /**< Policer pass through */ + e_FM_PCD_PLCR_RFC_2698, /**< Policer algorythm RFC 2698 */ + e_FM_PCD_PLCR_RFC_4115 /**< Policer algorythm RFC 4115 */ +} e_FmPcdPlcrAlgorithmSelection; + +/**************************************************************************//** + @Description A structure for selcting the policer profile color mode +*//***************************************************************************/ +typedef enum e_FmPcdPlcrColorMode { + e_FM_PCD_PLCR_COLOR_BLIND, /**< Color blind */ + e_FM_PCD_PLCR_COLOR_AWARE /**< Color aware */ +} e_FmPcdPlcrColorMode; + +/**************************************************************************//** + @Description A structure for selcting the policer profile color functional mode +*//***************************************************************************/ +typedef enum e_FmPcdPlcrColor { + e_FM_PCD_PLCR_GREEN, /**< Green */ + e_FM_PCD_PLCR_YELLOW, /**< Yellow */ + e_FM_PCD_PLCR_RED, /**< Red */ + e_FM_PCD_PLCR_OVERRIDE /**< Color override */ +} e_FmPcdPlcrColor; + +/**************************************************************************//** + @Description A structure for selcting the policer profile packet frame length selector +*//***************************************************************************/ +typedef enum e_FmPcdPlcrFrameLengthSelect { + e_FM_PCD_PLCR_L2_FRM_LEN, /**< L2 frame length */ + e_FM_PCD_PLCR_L3_FRM_LEN, /**< L3 frame length */ + e_FM_PCD_PLCR_L4_FRM_LEN, /**< L4 frame length */ + e_FM_PCD_PLCR_FULL_FRM_LEN /**< Full frame length */ +} e_FmPcdPlcrFrameLengthSelect; + +/**************************************************************************//** + @Description An enum for selecting rollback frame +*//***************************************************************************/ +typedef enum e_FmPcdPlcrRollBackFrameSelect { + e_FM_PCD_PLCR_ROLLBACK_L2_FRM_LEN, /**< Rollback L2 frame length */ + e_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN /**< Rollback Full frame length */ +} e_FmPcdPlcrRollBackFrameSelect; + +/**************************************************************************//** + @Description A structure for selcting the policer profile packet or byte mode +*//***************************************************************************/ +typedef enum e_FmPcdPlcrRateMode { + e_FM_PCD_PLCR_BYTE_MODE, /**< Byte mode */ + e_FM_PCD_PLCR_PACKET_MODE /**< Packet mode */ +} e_FmPcdPlcrRateMode; + +/**************************************************************************//** + @Description An enum for defining action of frame +*//***************************************************************************/ +typedef enum e_FmPcdDoneAction { + e_FM_PCD_ENQ_FRAME = 0, /**< Enqueue frame */ + e_FM_PCD_DROP_FRAME /**< Drop frame */ +} e_FmPcdDoneAction; + +/**************************************************************************//** + @Description A structure for selecting the policer counter +*//***************************************************************************/ +typedef enum e_FmPcdPlcrProfileCounters { + e_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER, /**< Green packets counter */ + e_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER, /**< Yellow packets counter */ + e_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER, /**< Red packets counter */ + e_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER, /**< Recolored yellow packets counter */ + e_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER /**< Recolored red packets counter */ +} e_FmPcdPlcrProfileCounters; + +/**************************************************************************//** + @Description A structure for selecting action +*//***************************************************************************/ +typedef enum e_FmPcdAction { + e_FM_PCD_ACTION_NONE, /**< NONE */ + e_FM_PCD_ACTION_EXACT_MATCH, /**< Exact match on the selected extraction*/ + e_FM_PCD_ACTION_INDEXED_LOOKUP /**< Indexed lookup on the selected extraction*/ +} e_FmPcdAction; + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Description An enum for selecting type of insert manipulation +*//***************************************************************************/ +typedef enum e_FmPcdManipInsrtType { + e_FM_PCD_MANIP_INSRT_NONE = 0, /**< No insertion */ + e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_INT_FRAME_HDR, /**< Insert internal frame header to start of frame */ + e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_TEMPLATE /**< Insert template to start of frame*/ +} e_FmPcdManipInsrtType; + +/**************************************************************************//** + @Description An enum for selecting type of remove manipulation +*//***************************************************************************/ +typedef enum e_FmPcdManipRmvParamsType { + e_FM_PCD_MANIP_RMV_NONE = 0, /**< No remove */ + e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_TILL_SPECIFIC_LOCATION, /**< Remove from start of frame till (excluding) specified indication */ + e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_INCLUDE_SPECIFIC_LOCATION, /**< Remove from start of frame till (including) specified indication */ + e_FM_PCD_MANIP_RMV_INT_FRAME_HDR /**< Remove internal frame header to start of frame */ +} e_FmPcdManipRmvParamsType; + +/**************************************************************************//** + @Description An enum for selecting type of location +*//***************************************************************************/ +typedef enum e_FmPcdManipLocateType { + e_FM_PCD_MANIP_LOC_BY_HDR = 0, /**< Locate according to header */ + e_FM_PCD_MANIP_LOC_NON_HDR /**< Locate from data that is not the header */ +} e_FmPcdManipLocateType; + +/**************************************************************************//** + @Description An enum for selecting type of Timeout mode +*//***************************************************************************/ +typedef enum e_FmPcdManipReassemTimeOutMode { + e_FM_PCD_MANIP_TIME_OUT_BETWEEN_FRAMES, /**< limits the time of the reassm process from the first frag to the last */ + e_FM_PCD_MANIP_TIME_OUT_BETWEEN_FRAG /**< limits the time of receiving the fragment */ +} e_FmPcdManipReassemTimeOutMode; + +/**************************************************************************//** + @Description An enum for selecting type of WaysNumber mode +*//***************************************************************************/ +typedef enum e_FmPcdManipReassemWaysNumber { + e_FM_PCD_MANIP_ONE_WAY_HASH = 1, /**< -------------- */ + e_FM_PCD_MANIP_TWO_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_THREE_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_FOUR_WAYS_HASH, /**< four ways hash */ + e_FM_PCD_MANIP_FIVE_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_SIX_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_SEVEN_WAYS_HASH, /**< -------------- */ + e_FM_PCD_MANIP_EIGHT_WAYS_HASH /**< eight ways hash*/ +} e_FmPcdManipReassemWaysNumber; + +/**************************************************************************//** + @Description An enum for selecting type of statistics mode +*//***************************************************************************/ +typedef enum e_FmPcdStatsType { + e_FM_PCD_STATS_PER_FLOWID = 0 /**< type where flowId used as index for getting statistics */ +} e_FmPcdStatsType; + +#endif /* FM_CAPWAP_SUPPORT */ + + +/**************************************************************************//** + @Description A Union of protocol dependent special options +*//***************************************************************************/ +typedef union u_FmPcdHdrProtocolOpt { + ethProtocolOpt_t ethOpt; /**< Ethernet options */ + vlanProtocolOpt_t vlanOpt; /**< Vlan options */ + mplsProtocolOpt_t mplsOpt; /**< MPLS options */ + ipv4ProtocolOpt_t ipv4Opt; /**< IPv4 options */ + ipv6ProtocolOpt_t ipv6Opt; /**< IPv6 options */ +} u_FmPcdHdrProtocolOpt; + +/**************************************************************************//** + @Description A union holding all known protocol fields +*//***************************************************************************/ +typedef union t_FmPcdFields { + headerFieldEth_t eth; /**< eth */ + headerFieldVlan_t vlan; /**< vlan */ + headerFieldLlcSnap_t llcSnap; /**< llcSnap */ + headerFieldPppoe_t pppoe; /**< pppoe */ + headerFieldMpls_t mpls; /**< mpls */ + headerFieldIpv4_t ipv4; /**< ipv4 */ + headerFieldIpv6_t ipv6; /**< ipv6 */ + headerFieldUdp_t udp; /**< udp */ + headerFieldTcp_t tcp; /**< tcp */ + headerFieldSctp_t sctp; /**< sctp */ + headerFieldDccp_t dccp; /**< dccp */ + headerFieldGre_t gre; /**< gre */ + headerFieldMinencap_t minencap; /**< minencap */ + headerFieldIpsecAh_t ipsecAh; /**< ipsecAh */ + headerFieldIpsecEsp_t ipsecEsp; /**< ipsecEsp */ + headerFieldUdpEncapEsp_t udpEncapEsp; /**< udpEncapEsp */ +} t_FmPcdFields; + +/**************************************************************************//** + @Description structure for defining header extraction for key generation +*//***************************************************************************/ +typedef struct t_FmPcdFromHdr { + uint8_t size; /**< Size in byte */ + uint8_t offset; /**< Byte offset */ +} t_FmPcdFromHdr; + +/**************************************************************************//** + @Description structure for defining field extraction for key generation +*//***************************************************************************/ +typedef struct t_FmPcdFromField { + t_FmPcdFields field; /**< Field selection */ + uint8_t size; /**< Size in byte */ + uint8_t offset; /**< Byte offset */ +} t_FmPcdFromField; + +/**************************************************************************//** + @Description A structure of parameters used to define a single network + environment unit. + A unit should be defined if it will later be used by one or + more PCD engines to distinguich between flows. +*//***************************************************************************/ +typedef struct t_FmPcdDistinctionUnit { + struct { + e_NetHeaderType hdr; /**< One of the headers supported by the FM */ + u_FmPcdHdrProtocolOpt opt; /**< only one option !! */ + } hdrs[FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS]; +} t_FmPcdDistinctionUnit; + +/**************************************************************************//** + @Description A structure of parameters used to define the different + units supported by a specific PCD Network Environment + Characteristics module. Each unit represent + a protocol or a group of protocols that may be used later + by the different PCD engined to distinguich between flows. +*//***************************************************************************/ +typedef struct t_FmPcdNetEnvParams { + uint8_t numOfDistinctionUnits; /**< Number of different units to be identified */ + t_FmPcdDistinctionUnit units[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; /**< An array of numOfDistinctionUnits of the + different units to be identified */ +} t_FmPcdNetEnvParams; + +/**************************************************************************//** + @Description structure for defining a single extraction action + when creating a key +*//***************************************************************************/ +typedef struct t_FmPcdExtractEntry { + e_FmPcdExtractType type; /**< Extraction type select */ + union { + struct { + e_NetHeaderType hdr; /**< Header selection */ + bool ignoreProtocolValidation; + /**< Ignore protocol validation */ + e_FmPcdHdrIndex hdrIndex; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared.*/ + e_FmPcdExtractByHdrType type; /**< Header extraction type select */ + union { + t_FmPcdFromHdr fromHdr; /**< Extract bytes from header parameters */ + t_FmPcdFromField fromField; /**< Extract bytes from field parameters*/ + t_FmPcdFields fullField; /**< Extract full filed parameters*/ + } extractByHdrType; + } extractByHdr; /**< used when type = e_FM_PCD_KG_EXTRACT_BY_HDR */ + struct { + e_FmPcdExtractFrom src; /**< Non-header extraction source */ + e_FmPcdAction action; /**< Relevant for CC Only */ + uint16_t icIndxMask; /**< Relevant only for CC where + action=e_FM_PCD_ACTION_INDEXED_LOOKUP */ + uint8_t offset; /**< Byte offset */ + uint8_t size; /**< Size in byte */ + } extractNonHdr; /**< used when type = e_FM_PCD_KG_EXTRACT_NON_HDR */ + }; +} t_FmPcdExtractEntry; + +/**************************************************************************//** + @Description A structure for defining masks for each extracted + field in the key. +*//***************************************************************************/ +typedef struct t_FmPcdKgExtractMask { + uint8_t extractArrayIndex; /**< Index in the extraction array, as initialized by user */ + uint8_t offset; /**< Byte offset */ + uint8_t mask; /**< A byte mask (selected bits will be used) */ +} t_FmPcdKgExtractMask; + +/**************************************************************************//** + @Description A structure for defining default selection per groups + of fields +*//***************************************************************************/ +typedef struct t_FmPcdKgExtractDflt { + e_FmPcdKgKnownFieldsDfltTypes type; /**< Default type select*/ + e_FmPcdKgExtractDfltSelect dfltSelect; /**< Default register select */ +} t_FmPcdKgExtractDflt; + +/**************************************************************************//** + @Description A structure for defining all parameters needed for + generation a key and using a hash function +*//***************************************************************************/ +typedef struct t_FmPcdKgKeyExtractAndHashParams { + uint32_t privateDflt0; /**< Scheme default register 0 */ + uint32_t privateDflt1; /**< Scheme default register 1 */ + uint8_t numOfUsedExtracts; /**< defines the valid size of the following array */ + t_FmPcdExtractEntry extractArray [FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; /**< An array of extractions definition. */ + uint8_t numOfUsedDflts; /**< defines the valid size of the following array */ + t_FmPcdKgExtractDflt dflts[FM_PCD_KG_NUM_OF_DEFAULT_GROUPS]; + /**< For each extraction used in this scheme, specify the required + default register to be used when header is not found. + types not specified in this array will get undefined value. */ + uint8_t numOfUsedMasks; /**< defines the valid size of the following array */ + t_FmPcdKgExtractMask masks[FM_PCD_KG_NUM_OF_EXTRACT_MASKS]; + uint8_t hashShift; /**< hash result right shift. Select the 24 bits out of the 64 hash + result. 0 means using the 24 LSB's, otherwise use the + 24 LSB's after shifting right.*/ + uint32_t hashDistributionNumOfFqids; /**< must be > 1 and a power of 2. Represents the range + of queues for the key and hash functionality */ + uint8_t hashDistributionFqidsShift; /**< selects the FQID bits that will be effected by the hash */ + bool symmetricHash; /**< TRUE to generate the same hash for frames with swapped source and + destination fields on all layers; If TRUE, driver will check that for + all layers, if SRC extraction is selected, DST extraction must also be + selected, and vice versa. */ +} t_FmPcdKgKeyExtractAndHashParams; + +/**************************************************************************//** + @Description A structure of parameters for defining a single + Fqid mask (extracted OR). +*//***************************************************************************/ +typedef struct t_FmPcdKgExtractedOrParams { + e_FmPcdExtractType type; /**< Extraction type select */ + union { + struct { /**< used when type = e_FM_PCD_KG_EXTRACT_BY_HDR */ + e_NetHeaderType hdr; + e_FmPcdHdrIndex hdrIndex; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared.*/ + bool ignoreProtocolValidation; + /**< continue extraction even if protocol is not recognized */ + } extractByHdr; + e_FmPcdExtractFrom src; /**< used when type = e_FM_PCD_KG_EXTRACT_NON_HDR */ + }; + uint8_t extractionOffset; /**< Offset for extraction (in bytes). */ + e_FmPcdKgExtractDfltSelect dfltValue; /**< Select register from which extraction is taken if + field not found */ + uint8_t mask; /**< Extraction mask (specified bits are used) */ + uint8_t bitOffsetInFqid; /**< 0-31, Selects which bits of the 24 FQID bits to effect using + the extracted byte; Assume byte is placed as the 8 MSB's in + a 32 bit word where the lower bits + are the FQID; i.e if bitOffsetInFqid=1 than its LSB + will effect the FQID MSB, if bitOffsetInFqid=24 than the + extracted byte will effect the 8 LSB's of the FQID, + if bitOffsetInFqid=31 than the byte's MSB will effect + the FQID's LSB; 0 means - no effect on FQID; + Note that one, and only one of + bitOffsetInFqid or bitOffsetInPlcrProfile must be set (i.e, + extracted byte must effect either FQID or Policer profile).*/ + uint8_t bitOffsetInPlcrProfile; + /**< 0-15, Selects which bits of the 8 policer profile id bits to + effect using the extracted byte; Assume byte is placed + as the 8 MSB's in a 16 bit word where the lower bits + are the policer profile id; i.e if bitOffsetInPlcrProfile=1 + than its LSB will effect the profile MSB, if bitOffsetInFqid=8 + than the extracted byte will effect the whole policer profile id, + if bitOffsetInFqid=15 than the byte's MSB will effect + the Policer Profile id's LSB; + 0 means - no effect on policer profile; Note that one, and only one of + bitOffsetInFqid or bitOffsetInPlcrProfile must be set (i.e, + extracted byte must effect either FQID or Policer profile).*/ +} t_FmPcdKgExtractedOrParams; + +/**************************************************************************//** + @Description A structure for configuring scheme counter +*//***************************************************************************/ +typedef struct t_FmPcdKgSchemeCounter { + bool update; /**< FALSE to keep the current counter state + and continue from that point, TRUE to update/reset + the counter when the scheme is written. */ + uint32_t value; /**< If update=TRUE, this value will be written into the + counter. clear this field to reset the counter. */ +} t_FmPcdKgSchemeCounter; + +/**************************************************************************//** + @Description A structure for defining policer profile + parameters as required by keygen (when policer + is the next engine after this scheme). +*//***************************************************************************/ +typedef struct t_FmPcdKgPlcrProfile { + bool sharedProfile; /**< TRUE if this profile is shared between ports + (i.e. managed by master partition) May not be TRUE + if profile is after Coarse Classification*/ + bool direct; /**< if TRUE, directRelativeProfileId only selects the profile + id, if FALSE fqidOffsetRelativeProfileIdBase is used + together with fqidOffsetShift and numOfProfiles + parameters, to define a range of profiles from + which the keygen result will determine the + destination policer profile. */ + union { + uint16_t directRelativeProfileId; /**< Used if 'direct' is TRUE, to select policer profile. + This parameter should + indicate the policer profile offset within the port's + policer profiles or SHARED window. */ + struct { + uint8_t fqidOffsetShift; /**< shift of KG results without the qid base */ + uint8_t fqidOffsetRelativeProfileIdBase; + /**< OR of KG results without the qid base + This parameter should indicate the policer profile + offset within the port's policer profiles window or + SHARED window depends on sharedProfile */ + uint8_t numOfProfiles; /**< Range of profiles starting at base */ + } indirectProfile; + } profileSelect; +} t_FmPcdKgPlcrProfile; + +/**************************************************************************//** + @Description A structure for CC parameters if CC is the next engine after KG +*//***************************************************************************/ +typedef struct t_FmPcdKgCc { + t_Handle h_CcTree; /**< A handle to a CC Tree */ + uint8_t grpId; /**< CC group id within the CC tree */ + bool plcrNext; /**< TRUE if after CC, in case of data frame, + policing is required. */ + bool bypassPlcrProfileGeneration; + /**< TRUE to bypass keygen policer profile + generation (profile selected is the one selected at + port initialization). */ + t_FmPcdKgPlcrProfile plcrProfile; /**< only if plcrNext=TRUE and bypassPlcrProfileGeneration=FALSE */ +} t_FmPcdKgCc; + +/**************************************************************************//** + @Description A structure for initializing a keygen single scheme +*//***************************************************************************/ +typedef struct t_FmPcdKgSchemeParams { + bool modify; /**< TRUE to change an existing scheme */ + union + { + uint8_t relativeSchemeId; /**< if modify=FALSE:Partition relative scheme id */ + t_Handle h_Scheme; /**< if modify=TRUE: a handle of the existing scheme */ + }id; + bool alwaysDirect; /**< This scheme is reached only directly, i.e. no need for match vector. Keygen will ignore + it when matching */ + struct { /**< HL Relevant only if alwaysDirect = FALSE */ + t_Handle h_NetEnv; /**< A handle to the Network environment as returned + by FM_PCD_SetNetEnvCharacteristics() */ + uint8_t numOfDistinctionUnits; /**< Number of netenv units listed in unitIds array */ + uint8_t unitIds[FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + /**< Indexes as passed to SetNetEnvCharacteristics array*/ + } netEnvParams; + bool useHash; /**< use the KG Hash functionality */ + t_FmPcdKgKeyExtractAndHashParams keyExtractAndHashParams; + /**< used only if useHash = TRUE */ + bool bypassFqidGeneration; /**< Normally - FALSE, TRUE to avoid FQID update in the IC; + In such a case FQID after KG will be the default FQID + defined for the relevant port, or the FQID defined by CC + in cases where CC was the previous engine. */ + uint32_t baseFqid; /**< Base FQID; Relevant only if bypassFqidGeneration = FALSE; + If hash is used and an even distribution is expected + according to hashDistributionNumOfFqids, baseFqid must be aligned to + hashDistributionNumOfFqids. */ + uint8_t numOfUsedExtractedOrs; /**< Number of Fqid masks listed in extractedOrs array*/ + t_FmPcdKgExtractedOrParams extractedOrs[FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< IN: FM_PCD_KG_NUM_OF_GENERIC_REGS + registers are shared between qidMasks + functionality and some of the extraction + actions; Normally only some will be used + for qidMask. Driver will return error if + resource is full at initialization time. */ + e_FmPcdEngine nextEngine; /**< may be BMI, PLCR or CC */ + union { /**< depends on nextEngine */ + e_FmPcdDoneAction doneAction; /**< Used when next engine is BMI (done) */ + t_FmPcdKgPlcrProfile plcrProfile; /**< Used when next engine is PLCR */ + t_FmPcdKgCc cc; /**< Used when next engine is CC */ + } kgNextEngineParams; + t_FmPcdKgSchemeCounter schemeCounter; /**< A structure of parameters for updating + the scheme counter */ +} t_FmPcdKgSchemeParams; + +/**************************************************************************//** + @Description A structure for defining CC params when CC is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextCcParams { + t_Handle h_CcNode; /**< A handle of the next CC node */ +} t_FmPcdCcNextCcParams; + +/**************************************************************************//** + @Description A structure for defining PLCR params when PLCR is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextPlcrParams { + bool overrideParams; /**< TRUE if CC override previously decided parameters*/ + bool sharedProfile; /**< Relevant only if overrideParams=TRUE: + TRUE if this profile is shared between ports */ + uint16_t newRelativeProfileId; /**< Relevant only if overrideParams=TRUE: + (otherwise profile id is taken from keygen); + This parameter should indicate the policer + profile offset within the port's + policer profiles or from SHARED window.*/ + uint32_t newFqid; /**< Relevant only if overrideParams=TRUE: + FQID for enqueuing the frame; + In earlier chips if policer next engine is KEYGEN, + this parameter can be 0, because the KEYGEN + always decides the enqueue FQID.*/ + bool statisticsEn; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} t_FmPcdCcNextPlcrParams; + +/**************************************************************************//** + @Description A structure for defining enqueue params when BMI is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextEnqueueParams { + + e_FmPcdDoneAction action; /**< Action - when next engine is BMI (done) */ + bool overrideFqid; /**< TRUE if CC override previously decided Fqid(by Keygen), + relevant if action = e_FM_PCD_ENQ_FRAME */ + uint32_t newFqid; /**< Valid if overrideFqid=TRUE, FQID for enqueuing the frame + (otherwise FQID is taken from keygen), + relevant if action = e_FM_PCD_ENQ_FRAME*/ + bool statisticsEn; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} t_FmPcdCcNextEnqueueParams; + +/**************************************************************************//** + @Description A structure for defining KG params when KG is the + next engine after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextKgParams { + bool overrideFqid; /**< TRUE if CC override previously decided Fqid (by keygen), + Note - this parameters irrelevant for earlier chips*/ + uint32_t newFqid; /**< Valid if overrideFqid=TRUE, FQID for enqueuing the frame + (otherwise FQID is taken from keygen), + Note - this parameters irrelevant for earlier chips*/ + t_Handle h_DirectScheme; /**< Direct scheme handle to go to. */ + bool statisticsEn; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} t_FmPcdCcNextKgParams; + +/**************************************************************************//** + @Description A structure for defining next engine params after a CC node. +*//***************************************************************************/ +typedef struct t_FmPcdCcNextEngineParams { + e_FmPcdEngine nextEngine; /**< User has to initialize parameters + according to nextEngine definition */ + union { + t_FmPcdCcNextCcParams ccParams; /**< Parameters in case next engine is CC */ + t_FmPcdCcNextPlcrParams plcrParams; /**< Parameters in case next engine is PLCR */ + t_FmPcdCcNextEnqueueParams enqueueParams; /**< Parameters in case next engine is BMI */ + t_FmPcdCcNextKgParams kgParams; /**< Parameters in case next engine is KG */ + } params; +#if defined(FM_CAPWAP_SUPPORT) + t_Handle h_Manip; /**< Handler to headerManip. + Relevant if next engine of the type result + (e_FM_PCD_PLCR, e_FM_PCD_KG, e_FM_PCD_DONE) */ +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ +} t_FmPcdCcNextEngineParams; + +/**************************************************************************//** + @Description A structure for defining a single CC Key parameters +*//***************************************************************************/ +typedef struct t_FmPcdCcKeyParams { + uint8_t *p_Key; /**< pointer to the key of the size defined in keySize*/ + uint8_t *p_Mask; /**< pointer to the Mask per key of the size defined + in keySize. p_Key and p_Mask (if defined) has to be + of the same size defined in the keySize */ + t_FmPcdCcNextEngineParams ccNextEngineParams; + /**< parameters for the next for the defined Key in + the p_Key */ +} t_FmPcdCcKeyParams; + +/**************************************************************************//** + @Description A structure for defining CC Keys parameters +*//***************************************************************************/ +typedef struct t_KeysParams { + uint8_t numOfKeys; /**< Number Of relevant Keys */ + uint8_t keySize; /**< size of the key - in the case of the extraction of + the type FULL_FIELD keySize has to be as standard size of the relevant + key. In the another type of extraction keySize has to be as size of extraction. + In the case of action = e_FM_PCD_ACTION_INDEXED_LOOKUP the size of keySize has to be 2*/ + t_FmPcdCcKeyParams keyParams[FM_PCD_MAX_NUM_OF_KEYS]; + /**< it's array with numOfKeys entries each entry in + the array of the type t_FmPcdCcKeyParams */ + t_FmPcdCcNextEngineParams ccNextEngineParamsForMiss; + /**< parameters for the next step of + unfound (or undefined) key . Not relevant in the case + of action = e_FM_PCD_ACTION_INDEXED_LOOKUP*/ +} t_KeysParams; + +/**************************************************************************//** + @Description A structure for defining the CC node params +*//***************************************************************************/ +typedef struct t_FmPcdCcNodeParams { + t_FmPcdExtractEntry extractCcParams; /**< params which defines extraction parameters */ + t_KeysParams keysParams; /**< params which defines Keys parameters of the + extraction defined in extractCcParams */ +} t_FmPcdCcNodeParams; + +/**************************************************************************//** + @Description A structure for defining each CC tree group in term of + NetEnv units and the action to be taken in each case. + the unitIds list must be in order from lower to higher indexes. + + t_FmPcdCcNextEngineParams is a list of 2^numOfDistinctionUnits + structures where each defines the next action to be taken for + each units combination. for example: + numOfDistinctionUnits = 2 + unitIds = {1,3} + p_NextEnginePerEntriesInGrp[0] = t_FmPcdCcNextEngineParams for the case that + unit 1 - not found; unit 3 - not found; + p_NextEnginePerEntriesInGrp[1] = t_FmPcdCcNextEngineParams for the case that + unit 1 - not found; unit 3 - found; + p_NextEnginePerEntriesInGrp[2] = t_FmPcdCcNextEngineParams for the case that + unit 1 - found; unit 3 - not found; + p_NextEnginePerEntriesInGrp[3] = t_FmPcdCcNextEngineParams for the case that + unit 1 - found; unit 3 - found; +*//***************************************************************************/ +typedef struct t_FmPcdCcGrpParams { + uint8_t numOfDistinctionUnits; /**< up to 4 */ + uint8_t unitIds[FM_PCD_MAX_NUM_OF_CC_UNITS]; + /**< Indexes of the units as defined in + FM_PCD_SetNetEnvCharacteristics() */ + t_FmPcdCcNextEngineParams nextEnginePerEntriesInGrp[FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP]; + /**< Max size is 16 - if only one group used */ +} t_FmPcdCcGrpParams; + +/**************************************************************************//** + @Description A structure for defining the CC tree groups +*//***************************************************************************/ +typedef struct t_FmPcdCcTreeParams { + t_Handle h_NetEnv; /**< A handle to the Network environment as returned + by FM_PCD_SetNetEnvCharacteristics() */ + uint8_t numOfGrps; /**< Number of CC groups within the CC tree */ + t_FmPcdCcGrpParams ccGrpParams[FM_PCD_MAX_NUM_OF_CC_GROUPS]; /**< Parameters for each group. */ +} t_FmPcdCcTreeParams; + +/**************************************************************************//** + @Description A structure for defining parameters for byte rate +*//***************************************************************************/ +typedef struct t_FmPcdPlcrByteRateModeParams { + e_FmPcdPlcrFrameLengthSelect frameLengthSelection; /**< Frame length selection */ + e_FmPcdPlcrRollBackFrameSelect rollBackFrameSelection; /**< relevant option only e_FM_PCD_PLCR_L2_FRM_LEN, + e_FM_PCD_PLCR_FULL_FRM_LEN */ +} t_FmPcdPlcrByteRateModeParams; + +/**************************************************************************//** + @Description A structure for selcting the policer profile RFC-2698 or + RFC-4115 parameters +*//***************************************************************************/ +typedef struct t_FmPcdPlcrNonPassthroughAlgParams { + e_FmPcdPlcrRateMode rateMode; /**< Byte / Packet */ + t_FmPcdPlcrByteRateModeParams byteModeParams; /**< Valid for Byte NULL for Packet */ + uint32_t comittedInfoRate; /**< KBits/Sec or Packets/Sec */ + uint32_t comittedBurstSize; /**< Bytes/Packets */ + uint32_t peakOrAccessiveInfoRate; /**< KBits/Sec or Packets/Sec */ + uint32_t peakOrAccessiveBurstSize; /**< Bytes/Packets */ +} t_FmPcdPlcrNonPassthroughAlgParams; + +/**************************************************************************//** + @Description A union for defining Policer next engine parameters +*//***************************************************************************/ +typedef union u_FmPcdPlcrNextEngineParams { + e_FmPcdDoneAction action; /**< Action - when next engine is BMI (done) */ + t_Handle h_Profile; /**< Policer profile handle - used when next engine + is PLCR, must be a SHARED profile */ + t_Handle h_DirectScheme; /**< Direct scheme select - when next engine is Keygen */ +} u_FmPcdPlcrNextEngineParams; + +/**************************************************************************//** + @Description A structure for selecting the policer profile entry parameters +*//***************************************************************************/ +typedef struct t_FmPcdPlcrProfileParams { + bool modify; /**< TRUE to change an existing profile */ + union { + struct { + e_FmPcdProfileTypeSelection profileType; /**< Type of policer profile */ + t_Handle h_FmPort; /**< Relevant for per-port profiles only */ + uint16_t relativeProfileId; /**< Profile id - relative to shared group or to port */ + } newParams; /**< use it when modify=FALSE */ + t_Handle h_Profile; /**< A handle to a profile - use it when modify=TRUE */ + } id; + e_FmPcdPlcrAlgorithmSelection algSelection; /**< Profile Algorithm PASS_THROUGH, RFC_2698, RFC_4115 */ + e_FmPcdPlcrColorMode colorMode; /**< COLOR_BLIND, COLOR_AWARE */ + + union { + e_FmPcdPlcrColor dfltColor; /**< For Color-Blind Pass-Through mode. the policer will re-color + any incoming packet with the default value. */ + e_FmPcdPlcrColor override; /**< For Color-Aware modes. The profile response to a + pre-color value of 2'b11. */ + } color; + + t_FmPcdPlcrNonPassthroughAlgParams nonPassthroughAlgParams; /**< RFC2698 or RFC4115 params */ + + e_FmPcdEngine nextEngineOnGreen; /**< Green next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnGreen; /**< Green next engine params */ + + e_FmPcdEngine nextEngineOnYellow; /**< Yellow next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnYellow; /**< Yellow next engine params */ + + e_FmPcdEngine nextEngineOnRed; /**< Red next engine type */ + u_FmPcdPlcrNextEngineParams paramsOnRed; /**< Red next engine params */ + + bool trapProfileOnFlowA; /**< Trap on flow A */ + bool trapProfileOnFlowB; /**< Trap on flow B */ + bool trapProfileOnFlowC; /**< Trap on flow C */ +} t_FmPcdPlcrProfileParams; + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Description A structure for selecting the location of manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipLocationParams { + e_FmPcdManipLocateType type; /**< location of manipulation type select */ + struct { /**< used when type = e_FM_PCD_MANIP_BY_HDR */ + e_NetHeaderType hdr; /**< Header selection */ + e_FmPcdHdrIndex hdrIndex; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared. */ + bool byField; /**< TRUE if the location of manipulation is according to some field in the specific header*/ + t_FmPcdFields fullField; /**< Relevant only when byField = TRUE: Extract field */ + } manipByHdr; +} t_FmPcdManipLocationParams; + +/**************************************************************************//** + @Description structure for defining insert manipulation + of the type e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_TEMPLATE +*//***************************************************************************/ +typedef struct t_FmPcdManipInsrtByTemplateParams { + uint8_t size; /**< size of insert template to the start of the frame. */ + uint8_t hdrTemplate[FM_PCD_MAX_MANIP_INSRT_TEMPLATE_SIZE]; + /**< array of the insertion template. */ + + bool modifyOuterIp; /**< TRUE if user want to modify some fields in outer IP. */ + struct { + uint16_t ipOuterOffset; /**< offset of outer IP in the insert template, relevant if modifyOuterIp = TRUE.*/ + uint16_t dscpEcn; /**< value of dscpEcn in IP outer, relevant if modifyOuterIp = TRUE. + in IPV4 dscpEcn only byte - it has to be adjusted to the right*/ + bool udpPresent; /**< TRUE if UDP is present in the insert template, relevant if modifyOuterIp = TRUE.*/ + uint8_t udpOffset; /**< offset in the insert template of UDP, relevant if modifyOuterIp = TRUE and udpPresent=TRUE.*/ + uint8_t ipIdentGenId; /**< Used by FMan-CTRL to calculate IP-identification field,relevant if modifyOuterIp = TRUE.*/ + bool recalculateLength; /**< TRUE if recalculate length has to be performed due to the engines in the path which can change the frame later, relevant if modifyOuterIp = TRUE.*/ + struct { + uint8_t blockSize; /**< The CAAM block-size; Used by FMan-CTRL to calculate the IP-total-len field.*/ + uint8_t extraBytesAddedAlignedToBlockSize; /**< Used by FMan-CTRL to calculate the IP-total-len field and UDP length*/ + uint8_t extraBytesAddedNotAlignedToBlockSize;/**< Used by FMan-CTRL to calculate the IP-total-len field and UDP length.*/ + } recalculateLengthParams; /**< recalculate length parameters - relevant if modifyOuterIp = TRUE and recalculateLength = TRUE */ + } modifyOuterIpParams; /**< Outer IP modification parameters - ignored if modifyOuterIp is FALSE */ + + bool modifyOuterVlan; /**< TRUE if user wants to modify vpri field in the outer VLAN header*/ + struct { + uint8_t vpri; /**< value of vpri, relevant if modifyOuterVlan = TRUE + vpri only 3 bits, it has to be adjusted to the right*/ + } modifyOuterVlanParams; +} t_FmPcdManipInsrtByTemplateParams; +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +#ifdef FM_CAPWAP_SUPPORT +/**************************************************************************//** + @Description structure for defining CAPWAP fragmentation +*//***************************************************************************/ +typedef struct t_CapwapFragmentationParams { + uint16_t sizeForFragmentation; /**< if length of the frame is greater than this value, CAPWAP fragmentation will be executed.*/ + bool headerOptionsCompr; /**< TRUE - first fragment include the CAPWAP header options field, + and all other fragments exclude the CAPWAP options field, + FALSE - all fragments include CAPWAP header options field. */ +} t_CapwapFragmentationParams; + +/**************************************************************************//** + @Description structure for defining CAPWAP Re-assembly +*//***************************************************************************/ +typedef struct t_CapwapReassemblyParams { + uint16_t maxNumFramesInProcess; /**< Number of frames which can be processed by Reassembly in the same time. + It has to be power of 2. + In the case numOfFramesPerHashEntry == e_FM_PCD_MANIP_FOUR_WAYS_HASH, + maxNumFramesInProcess has to be in the range of 4 - 512, + In the case numOfFramesPerHashEntry == e_FM_PCD_MANIP_EIGHT_WAYS_HASH, + maxNumFramesInProcess has to be in the range of 8 - 2048 */ + bool haltOnDuplicationFrag; /**< In the case of TRUE, Reassembly process halted due to duplicated fragment, + and all processed fragments passed for enqueue with error indication. + In the case of FALSE, only duplicated fragment passed for enqueue with error indication */ + + e_FmPcdManipReassemTimeOutMode timeOutMode; /**< Expiration delay initialized by Reassembly process */ + uint32_t fqidForTimeOutFrames; /**< Fqid in which time out frames will enqueue during Time Out Process */ + uint32_t timeoutRoutineRequestTime; + /**< Represents the time interval in microseconds between consecutive + timeout routine requests It has to be power of 2. */ + uint32_t timeoutThresholdForReassmProcess; + /**< Represents the time interval in microseconds which defines + if opened frame (at least one fragment was processed but not all the fragments)is found as too old*/ + + e_FmPcdManipReassemWaysNumber numOfFramesPerHashEntry;/**< Number of frames per hash entry needed for reassembly process */ +} t_CapwapReassemblyParams; +#endif /* FM_CAPWAP_SUPPORT */ + + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Description structure for defining fragmentation/reassembly +*//***************************************************************************/ +typedef struct t_FmPcdManipFragOrReasmParams { + bool frag; /**< TRUE if using the structure for fragmentation, + otherwise this structure is used for reassembly */ + uint8_t extBufPoolIndx; /**< Index of the buffer pool ID which was configured for port + and can be used for manipulation; + NOTE: This field is relevant only for CAPWAP fragmentation + and reassembly */ + e_NetHeaderType hdr; /**< Header selection */ + union { +#ifdef FM_CAPWAP_SUPPORT + t_CapwapFragmentationParams capwapFragParams; /**< Structure for CAPWAP fragmentation, relevant if frag = TRUE, hdr = HEADER_TYPE_CAPWAP */ + t_CapwapReassemblyParams capwapReasmParams; /**< Structure for CAPWAP reassembly, relevant if frag = FALSE, hdr = HEADER_TYPE_CAPWAP */ +#endif /* FM_CAPWAP_SUPPORT */ + }; +} t_FmPcdManipFragOrReasmParams; + +/**************************************************************************//** + @Description structure for defining insert manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipInsrtParams { + e_FmPcdManipInsrtType type; /**< Type of insert manipulation */ + union { + t_FmPcdManipInsrtByTemplateParams insrtByTemplateParams; + /**< parameters for insert manipulation, relevant if + type = e_FM_PCD_MANIP_INSRT_TO_START_OF_FRAME_TEMPLATE */ + }; +} t_FmPcdManipInsrtParams; + +/**************************************************************************//** + @Description structure for defining remove manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipRmvParams { + e_FmPcdManipRmvParamsType type; /**< Type of remove manipulation */ + t_FmPcdManipLocationParams rmvSpecificLocationParams; + /**< Specified location of remove manipulation; + This params should be initialized in cases: + - e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_TILL_SPECIFIC_LOCATION + - e_FM_PCD_MANIP_RMV_FROM_START_OF_FRAME_INCLUDE_SPECIFIC_LOCATION */ +} t_FmPcdManipRmvParams; + +/**************************************************************************//** + @Description structure for defining manipulation +*//***************************************************************************/ +typedef struct t_FmPcdManipParams { + bool rmv; /**< TRUE, if defined remove manipulation */ + t_FmPcdManipRmvParams rmvParams; /**< Parameters for remove manipulation, relevant if rmv = TRUE */ + + bool insrt; /**< TRUE, if defined insert manipulation */ + t_FmPcdManipInsrtParams insrtParams; /**< Parameters for insert manipulation, relevant if insrt = TRUE */ + + bool fragOrReasm; /**< TRUE, if defined fragmentation/reassembly manipulation */ + t_FmPcdManipFragOrReasmParams fragOrReasmParams; /**< Parameters for fragmentation/reassembly manipulation, relevant if fragOrReasm = TRUE */ + + /**< General parameters */ + bool treatFdStatusFieldsAsErrors; + /**< Set to TRUE when the port that is using this manip is chained + to SEC (i.e. the traffic was forwarded from SEC) */ +} t_FmPcdManipParams; + +/**************************************************************************//** + @Description structure for defining statistics node +*//***************************************************************************/ +typedef struct t_FmPcdStatsParams { + e_FmPcdStatsType type; /**< type of statistics node */ +} t_FmPcdStatsParams; +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +/**************************************************************************//** + @Function FM_PCD_SetNetEnvCharacteristics + + @Description Define a set of Network Environment Characteristics. + When setting an environment it is important to understand its + application. It is not meant to describe the flows that will run + on the ports using this environment, but what the user means TO DO + with the PCD mechanisms in order to parse-classify-distribute those + frames. + By specifying a distinction unit, the user means it would use that option + for distinction between frames at either a keygen scheme keygen or a coarse + classification action descriptor. Using interchangeable headers to define a + unit means that the user is indifferent to which of the interchangeable + headers is present in the frame, and they want the distinction to be based + on the presence of either one of them. + Depending on context, there are limitations to the use of environments. A + port using the PCD functionality is bound to an environment. Some or even + all ports may share an environment but also an environment per port is + possible. When initializing a scheme, a classification plan group (see below), + or a coarse classification tree, one of the initialized environments must be + stated and related to. When a port is bound to a scheme, a classification + plan group, or a coarse classification tree, it MUST be bound to the same + environment. + The different PCD modules, may relate (for flows definition) ONLY on + distinction units as defined by their environment. When initializing a + scheme for example, it may not choose to select IPV4 as a match for + recognizing flows unless it was defined in the relating environment. In + fact, to guide the user through the configuration of the PCD, each module's + characterization in terms of flows is not done using protocol names, but using + environment indexes. + In terms of HW implementation, the list of distinction units sets the LCV vectors + and later used for match vector, classification plan vectors and coarse classification + indexing. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_NetEnvParams A structure of parameters for the initialization of + the network environment. + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_SetNetEnvCharacteristics(t_Handle h_FmPcd, t_FmPcdNetEnvParams *p_NetEnvParams); + +/**************************************************************************//** + @Function FM_PCD_DeleteNetEnvCharacteristics + + @Description Deletes a set of Network Environment Characteristics. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] h_NetEnv A handle to the Network environment. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PCD_DeleteNetEnvCharacteristics(t_Handle h_FmPcd, t_Handle h_NetEnv); + +/**************************************************************************//** + @Function FM_PCD_KgSetScheme + + @Description Initializing or modifying and enabling a scheme for the keygen. + This routine should be called for adding or modifying a scheme. + When a scheme needs modifying, the API requires that it will be + rewritten. In such a case 'modify' should be TRUE. If the + routine is called for a valid scheme and 'modify' is FALSE, + it will return error. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in,out] p_Scheme A structure of parameters for defining the scheme + + @Return A handle to the initialized scheme on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_KgSetScheme (t_Handle h_FmPcd, + t_FmPcdKgSchemeParams *p_Scheme); + +/**************************************************************************//** + @Function FM_PCD_KgDeleteScheme + + @Description Deleting an initialized scheme. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSetScheme + + @Return E_OK on success; Error code otherwise. + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_KgDeleteScheme(t_Handle h_FmPcd, t_Handle h_Scheme); + +/**************************************************************************//** + @Function FM_PCD_KgGetSchemeCounter + + @Description Reads scheme packet counter. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSetScheme. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +uint32_t FM_PCD_KgGetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme); + +/**************************************************************************//** + @Function FM_PCD_KgSetSchemeCounter + + @Description Writes scheme packet counter. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSetScheme. + @Param[in] value New scheme counter value - typically '0' for + resetting the counter. + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_KgSetSchemeCounter(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t value); + +/**************************************************************************//** + @Function FM_PCD_CcBuildTree + + @Description This routine must be called to define a complete coarse + classification tree. This is the way to define coarse + classification to a certain flow - the keygen schemes + may point only to trees defined in this way. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_FmPcdCcTreeParams A structure of parameters to define the tree. + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_CcBuildTree (t_Handle h_FmPcd, + t_FmPcdCcTreeParams *p_FmPcdCcTreeParams); + +/**************************************************************************//** + @Function FM_PCD_CcDeleteTree + + @Description Deleting an built tree. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcTree A handle to a CC tree. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_CcDeleteTree(t_Handle h_FmPcd, t_Handle h_CcTree); + +/**************************************************************************//** + @Function FM_PCD_CcSetNode + + @Description This routine should be called for each CC (coarse classification) + node. The whole CC tree should be built bottom up so that each + node points to already defined nodes. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_CcNodeParam A structure of parameters defining the CC node + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_CcSetNode(t_Handle h_FmPcd, + t_FmPcdCcNodeParams *p_CcNodeParam); + +/**************************************************************************//** + @Function FM_PCD_CcDeleteNode + + @Description Deleting an built node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to a CC node. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_CcDeleteNode(t_Handle h_FmPcd, t_Handle h_CcNode); + +/**************************************************************************//** + @Function FM_PCD_CcTreeModifyNextEngine + + @Description Modify the Next Engine Parameters in the entry of the tree. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcTree A handle to the tree + @Param[in] grpId A Group index in the tree + @Param[in] index Entry index in the group defined by grpId + @Param[in] p_FmPcdCcNextEngineParams A structure for defining new next engine params + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcBuildTree(). +*//***************************************************************************/ +t_Error FM_PCD_CcTreeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyNextEngine + + @Description Modify the Next Engine Parameters in the relevant key entry of the node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for Next Engine Params modifications + @Param[in] p_FmPcdCcNextEngineParams A structure for defining new next engine params + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode(). +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyMissNextEngine + + @Description Modify the Next Engine Parameters of the Miss key case of the node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] p_FmPcdCcNextEngineParams A structure for defining new next engine params + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode(). +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyMissNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeRemoveKey + + @Description Remove the key (include Next Engine Parameters of this key) defined by the index of the relevant node . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for removing + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeRemoveKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex); + +/**************************************************************************//** + @Function FM_PCD_CcNodeAddKey + + @Description Add the key(include Next Engine Parameters of this key)in the index defined by the keyIndex . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + @Param[in] keySize Key size of added key + @Param[in] p_KeyParams A pointer to the parameters includes new key with Next Engine Parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyKeyAndNextEngine + + @Description Modify the key and Next Engine Parameters of this key in the index defined by the keyIndex . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + @Param[in] keySize Key size of added key + @Param[in] p_KeyParams A pointer to the parameters includes modified key and modified Next Engine Parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_KeyParams); + +/**************************************************************************//** + @Function FM_PCD_CcNodeModifyKey + + @Description Modify the key in the index defined by the keyIndex . + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + @Param[in] keySize Key size of added key + @Param[in] p_Key A pointer to the new key + @Param[in] p_Mask A pointer to the new mask if relevant, otherwise pointer to NULL + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +t_Error FM_PCD_CcNodeModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask); + +/**************************************************************************//** + @Function FM_PCD_CcNodeGetKeyCounter + + @Description This routine may be used to get a counter of specific key in a CC + Node; This counter reflects how many frames passed that were matched + this key. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_CcNode A handle to the node + @Param[in] keyIndex Key index for adding + + @Return The specific key counter. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +uint32_t FM_PCD_CcNodeGetKeyCounter(t_Handle h_FmPcd, t_Handle h_CcNode, uint8_t keyIndex); + +/**************************************************************************//** + @Function FM_PCD_PlcrSetProfile + + @Description Sets a profile entry in the policer profile table. + The routine overrides any existing value. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] p_Profile A structure of parameters for defining a + policer profile entry. + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_PlcrSetProfile(t_Handle h_FmPcd, + t_FmPcdPlcrProfileParams *p_Profile); + +/**************************************************************************//** + @Function FM_PCD_PlcrDeleteProfile + + @Description Delete a profile entry in the policer profile table. + The routine set entry to invalid. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to the profile. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrDeleteProfile(t_Handle h_FmPcd, t_Handle h_Profile); + +/**************************************************************************//** + @Function FM_PCD_PlcrGetProfileCounter + + @Description Sets an entry in the classification plan. + The routine overrides any existing value. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to the profile. + @Param[in] counter Counter selector. + + @Return specific counter value. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +uint32_t FM_PCD_PlcrGetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter); + +/**************************************************************************//** + @Function FM_PCD_PlcrSetProfileCounter + + @Description Sets an entry in the classification plan. + The routine overrides any existing value. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_Profile A handle to the profile. + @Param[in] counter Counter selector. + @Param[in] value value to set counter with. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_PlcrSetProfileCounter(t_Handle h_FmPcd, t_Handle h_Profile, e_FmPcdPlcrProfileCounters counter, uint32_t value); + +#if defined(FM_CAPWAP_SUPPORT) +/**************************************************************************//** + @Function FM_PCD_ManipSetNode + + @Description This routine should be called for defining a manipulation + node. A manipulation node must be defined before the CC node + that precedes it. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_FmPcdManipParams A structure of parameters defining the manipulation + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_ManipSetNode(t_Handle h_FmPcd, t_FmPcdManipParams *p_FmPcdManipParams); + +/**************************************************************************//** + @Function FM_PCD_ManipDeleteNode + + @Description Delete an existing manip node. + + @Param[in] h_FmPcd A handle to an FM PCD Module. + @Param[in] h_HdrManipNode A handle to a Manip node. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Error FM_PCD_ManipDeleteNode(t_Handle h_FmPcd, t_Handle h_HdrManipNode); +#endif /* defined(FM_CAPWAP_SUPPORT) || ... */ + + +#ifdef FM_CAPWAP_SUPPORT +/**************************************************************************//** + @Function FM_PCD_StatisticsSetNode + + @Description This routine should be called for defining a statistics + node. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] p_FmPcdstatsParams A structure of parameters defining the statistics + + @Return A handle to the initialized object on success; NULL code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +t_Handle FM_PCD_StatisticsSetNode(t_Handle h_FmPcd, t_FmPcdStatsParams *p_FmPcdstatsParams); +#endif /* FM_CAPWAP_SUPPORT */ + +/** @} */ /* end of FM_PCD_Runtime_tree_buildgrp group */ +/** @} */ /* end of FM_PCD_Runtime_grp group */ +/** @} */ /* end of FM_PCD_grp group */ +/** @} */ /* end of FM_grp group */ + + + +#endif /* __FM_PCD_EXT */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_rtc_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_rtc_ext.h @@ -0,0 +1,592 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_rtc_ext.h + + @Description External definitions and API for FM RTC IEEE1588 Timer Module. + + @Cautions None. +*//***************************************************************************/ + +#ifndef __FM_RTC_EXT_H__ +#define __FM_RTC_EXT_H__ + + +#include "error_ext.h" +#include "std_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group fm_rtc_grp FM RTC + + @Description FM RTC functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group fm_rtc_init_grp FM RTC Initialization Unit + + @Description FM RTC initialization API. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description FM RTC Alarm Polarity Options. +*//***************************************************************************/ +typedef enum e_FmRtcAlarmPolarity +{ + e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH, /**< Active-high output polarity */ + e_FM_RTC_ALARM_POLARITY_ACTIVE_LOW /**< Active-low output polarity */ +} e_FmRtcAlarmPolarity; + +/**************************************************************************//** + @Description FM RTC Trigger Polarity Options. +*//***************************************************************************/ +typedef enum e_FmRtcTriggerPolarity +{ + e_FM_RTC_TRIGGER_ON_RISING_EDGE, /**< Trigger on rising edge */ + e_FM_RTC_TRIGGER_ON_FALLING_EDGE /**< Trigger on falling edge */ +} e_FmRtcTriggerPolarity; + +/**************************************************************************//** + @Description IEEE1588 Timer Module FM RTC Optional Clock Sources. +*//***************************************************************************/ +typedef enum e_FmSrcClock +{ + e_FM_RTC_SOURCE_CLOCK_EXTERNAL, /**< external high precision timer reference clock */ + e_FM_RTC_SOURCE_CLOCK_SYSTEM, /**< MAC system clock */ + e_FM_RTC_SOURCE_CLOCK_OSCILATOR /**< RTC clock oscilator */ +}e_FmSrcClk; + +/**************************************************************************//** + @Description FM RTC configuration parameters structure. + + This structure should be passed to FM_RTC_Config(). +*//***************************************************************************/ +typedef struct t_FmRtcParams +{ + t_Handle h_Fm; /**< FM Handle*/ + uintptr_t baseAddress; /**< Base address of FM RTC registers */ + t_Handle h_App; /**< A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmRtcParams; + + +/**************************************************************************//** + @Function FM_RTC_Config + + @Description Configures the FM RTC module according to user's parameters. + + The driver assigns default values to some FM RTC parameters. + These parameters can be overwritten using the advanced + configuration routines. + + @Param[in] p_FmRtcParam - FM RTC configuration parameters. + + @Return Handle to the new FM RTC object; NULL pointer on failure. + + @Cautions None +*//***************************************************************************/ +t_Handle FM_RTC_Config(t_FmRtcParams *p_FmRtcParam); + +/**************************************************************************//** + @Function FM_RTC_Init + + @Description Initializes the FM RTC driver and hardware. + + @Param[in] h_FmRtc - Handle to FM RTC object. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_Init(t_Handle h_FmRtc); + +/**************************************************************************//** + @Function FM_RTC_Free + + @Description Frees the FM RTC object and all allocated resources. + + @Param[in] h_FmRtc - Handle to FM RTC object. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_Free(t_Handle h_FmRtc); + + +/**************************************************************************//** + @Group fm_rtc_adv_config_grp FM RTC Advanced Configuration Unit + + @Description FM RTC advanced configuration functions. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_RTC_ConfigPeriod + + @Description Configures the period of the timestamp if different than + default [1000]. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] period - Period in nano-seconds. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigPeriod(t_Handle h_FmRtc, uint32_t period); + +/**************************************************************************//** + @Function FM_RTC_ConfigSourceClock + + @Description Configures the source clock of the RTC. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] srcClk - Source clock selection. + @Param[in] freqInMhz - the source-clock frequency (in MHz). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigSourceClock(t_Handle h_FmRtc, + e_FmSrcClk srcClk, + uint32_t freqInMhz); + +/**************************************************************************//** + @Function FM_RTC_ConfigPulseRealignment + + @Description Configures the RTC to automatic FIPER pulse realignment in + response to timer adjustments [FALSE] + + In this mode, the RTC clock is identical to the source clock. + This feature can be useful when the system contains an external + RTC with inherent frequency compensation. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] enable - TRUE to enable automatic realignment. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigPulseRealignment(t_Handle h_FmRtc, bool enable); + +/**************************************************************************//** + @Function FM_RTC_ConfigFrequencyBypass + + @Description Configures the RTC to bypass the frequency compensation + mechanism. [FALSE] + + In this mode, the RTC clock is identical to the source clock. + This feature can be useful when the system contains an external + RTC with inherent frequency compensation. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] enabled - TRUE to bypass frequency compensation; + FALSE otherwise. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigFrequencyBypass(t_Handle h_FmRtc, bool enabled); + +/**************************************************************************//** + @Function FM_RTC_ConfigInvertedInputClockPhase + + @Description Configures the RTC to invert the source clock phase on input. + [FALSE] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] inverted - TRUE to invert the source clock phase on input. + FALSE otherwise. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigInvertedInputClockPhase(t_Handle h_FmRtc, bool inverted); + +/**************************************************************************//** + @Function FM_RTC_ConfigInvertedOutputClockPhase + + @Description Configures the RTC to invert the output clock phase. + [FALSE] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] inverted - TRUE to invert the output clock phase. + FALSE otherwise. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigInvertedOutputClockPhase(t_Handle h_FmRtc, bool inverted); + +/**************************************************************************//** + @Function FM_RTC_ConfigOutputClockDivisor + + @Description Configures the divisor for generating the output clock from + the RTC clock. [0x00000002] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] divisor - Divisor for generation of the output clock. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigOutputClockDivisor(t_Handle h_FmRtc, uint16_t divisor); + +/**************************************************************************//** + @Function FM_RTC_ConfigAlarmPolarity + + @Description Configures the polarity (active-high/active-low) of a specific + alarm signal. [e_FM_RTC_ALARM_POLARITY_ACTIVE_HIGH] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] alarmId - Alarm ID. + @Param[in] alarmPolarity - Alarm polarity. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigAlarmPolarity(t_Handle h_FmRtc, + uint8_t alarmId, + e_FmRtcAlarmPolarity alarmPolarity); + +/**************************************************************************//** + @Function FM_RTC_ConfigExternalTriggerPolarity + + @Description Configures the polarity (rising/falling edge) of a specific + external trigger signal. [e_FM_RTC_TRIGGER_ON_FALLING_EDGE] + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] triggerId - Trigger ID. + @Param[in] triggerPolarity - Trigger polarity. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously created using FM_RTC_Config(). +*//***************************************************************************/ +t_Error FM_RTC_ConfigExternalTriggerPolarity(t_Handle h_FmRtc, + uint8_t triggerId, + e_FmRtcTriggerPolarity triggerPolarity); + +/** @} */ /* end of fm_rtc_adv_config_grp */ +/** @} */ /* end of fm_rtc_init_grp */ + + +/**************************************************************************//** + @Group fm_rtc_control_grp FM RTC Control Unit + + @Description FM RTC runtime control API. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function t_FmRtcExceptionsCallback + + @Description Exceptions user callback routine, used for RTC different mechanisms. + + @Param[in] h_App - User's application descriptor. + @Param[in] id - source id. +*//***************************************************************************/ +typedef void (t_FmRtcExceptionsCallback) ( t_Handle h_App, uint8_t id); + +/**************************************************************************//** + @Description FM RTC alarm parameters. +*//***************************************************************************/ +typedef struct t_FmRtcAlarmParams { + uint8_t alarmId; /**< 0 or 1 */ + uint64_t alarmTime; /**< In nanoseconds, the time when the alarm + should go off - must be a multiple of + the RTC period */ + t_FmRtcExceptionsCallback *f_AlarmCallback; /**< This routine will be called when RTC + reaches alarmTime */ + bool clearOnExpiration; /**< TRUE to turn off the alarm once expired. */ +} t_FmRtcAlarmParams; + +/**************************************************************************//** + @Description FM RTC Periodic Pulse parameters. +*//***************************************************************************/ +typedef struct t_FmRtcPeriodicPulseParams { + uint8_t periodicPulseId; /**< 0 or 1 */ + uint64_t periodicPulsePeriod; /**< In Nanoseconds. Must be + a multiple of the RTC period */ + t_FmRtcExceptionsCallback *f_PeriodicPulseCallback; /**< This routine will be called every + periodicPulsePeriod. */ +} t_FmRtcPeriodicPulseParams; + +/**************************************************************************//** + @Description FM RTC Periodic Pulse parameters. +*//***************************************************************************/ +typedef struct t_FmRtcExternalTriggerParams { + uint8_t externalTriggerId; /**< 0 or 1 */ + bool usePulseAsInput; /**< Use the pulse interrupt instead of + an external signal */ + t_FmRtcExceptionsCallback *f_ExternalTriggerCallback; /**< This routine will be called every + periodicPulsePeriod. */ +} t_FmRtcExternalTriggerParams; + + +/**************************************************************************//** + @Function FM_RTC_Enable + + @Description Enable the RTC (time count is started). + + The user can select to resume the time count from previous + point, or to restart the time count. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] resetClock - Restart the time count from zero. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_Enable(t_Handle h_FmRtc, bool resetClock); + +/**************************************************************************//** + @Function FM_RTC_Disable + + @Description Disables the RTC (time count is stopped). + + @Param[in] h_FmRtc - Handle to FM RTC object. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_Disable(t_Handle h_FmRtc); + +/**************************************************************************//** + @Function FM_RTC_SetClockOffset + + @Description Sets the clock offset (usually relative to another clock). + + The user can pass a negative offset value. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] offset - New clock offset (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetClockOffset(t_Handle h_FmRtc, int64_t offset); + +/**************************************************************************//** + @Function FM_RTC_SetAlarm + + @Description Schedules an alarm event to a given RTC time. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] p_FmRtcAlarmParams - Alarm parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). + Must be called only prior to FM_RTC_Enable(). +*//***************************************************************************/ +t_Error FM_RTC_SetAlarm(t_Handle h_FmRtc, t_FmRtcAlarmParams *p_FmRtcAlarmParams); + +/**************************************************************************//** + @Function FM_RTC_SetPeriodicPulse + + @Description Sets a periodic pulse. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] p_FmRtcPeriodicPulseParams - Periodic pulse parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). + Must be called only prior to FM_RTC_Enable(). +*//***************************************************************************/ +t_Error FM_RTC_SetPeriodicPulse(t_Handle h_FmRtc, t_FmRtcPeriodicPulseParams *p_FmRtcPeriodicPulseParams); + +/**************************************************************************//** + @Function FM_RTC_ClearPeriodicPulse + + @Description Clears a periodic pulse. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] periodicPulseId - Periodic pulse id. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_ClearPeriodicPulse(t_Handle h_FmRtc, uint8_t periodicPulseId); + +/**************************************************************************//** + @Function FM_RTC_SetExternalTrigger + + @Description Sets an external trigger indication and define a callback + routine to be called on such event. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] p_FmRtcExternalTriggerParams - External Trigger parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetExternalTrigger(t_Handle h_FmRtc, t_FmRtcExternalTriggerParams *p_FmRtcExternalTriggerParams); + +/**************************************************************************//** + @Function FM_RTC_ClearExternalTrigger + + @Description Clears external trigger indication. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] id - External Trigger id. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_ClearExternalTrigger(t_Handle h_FmRtc, uint8_t id); + +/**************************************************************************//** + @Function FM_RTC_GetExternalTriggerTimeStamp + + @Description Reads the External Trigger TimeStamp. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] triggerId - External Trigger id. + @Param[out] p_TimeStamp - External Trigger timestamp (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_GetExternalTriggerTimeStamp(t_Handle h_FmRtc, + uint8_t triggerId, + uint64_t *p_TimeStamp); + +/**************************************************************************//** + @Function FM_RTC_GetCurrentTime + + @Description Returns the current RTC time. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[out] p_Ts - returned time stamp (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_GetCurrentTime(t_Handle h_FmRtc, uint64_t *p_Ts); + +/**************************************************************************//** + @Function FM_RTC_SetCurrentTime + + @Description Sets the current RTC time. + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] ts - The new time stamp (in nanoseconds). + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetCurrentTime(t_Handle h_FmRtc, uint64_t ts); + +/**************************************************************************//** + @Function FM_RTC_GetFreqCompensation + + @Description TODO + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[out] p_Compensation - A pointer to the returned value of compensation. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_GetFreqCompensation(t_Handle h_FmRtc, uint32_t *p_Compensation); + +/**************************************************************************//** + @Function FM_RTC_SetFreqCompensation + + @Description TODO + + @Param[in] h_FmRtc - Handle to FM RTC object. + @Param[in] freqCompensation - the new desired compensation value to be set. + + @Return E_OK on success; Error code otherwise. + + @Cautions h_FmRtc must have been previously initialized using FM_RTC_Init(). +*//***************************************************************************/ +t_Error FM_RTC_SetFreqCompensation(t_Handle h_FmRtc, uint32_t freqCompensation); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_RTC_DumpRegs + + @Description Dumps all FM registers + + @Param[in] h_FmRtc A handle to an FM RTC Module. + + @Return E_OK on success; + + @Cautions Allowed only FM_Init(). +*//***************************************************************************/ +t_Error FM_RTC_DumpRegs(t_Handle h_FmRtc); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/** @} */ /* end of fm_rtc_control_grp */ +/** @} */ /* end of fm_rtc_grp */ +/** @} */ /* end of FM_grp group */ + + +#endif /* __FM_RTC_EXT_H__ */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/dpaa_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/dpaa_ext.h @@ -0,0 +1,206 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File dpaa_ext.h + + @Description DPAA Application Programming Interface. +*//***************************************************************************/ +#ifndef __DPAA_EXT_H +#define __DPAA_EXT_H + +#include "std_ext.h" +#include "error_ext.h" + + +/**************************************************************************//** + @Group DPAA_grp Data Path Acceleration Architecture API + + @Description DPAA API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(push,1) +#endif /* defined(__MWERKS__) && ... */ +#define MEM_MAP_START + +/**************************************************************************//** + @Description Frame descriptor +*//***************************************************************************/ +typedef _Packed struct t_DpaaFD { + volatile uint32_t id; /**< FD id */ + volatile uint32_t addrl; /**< Data Address */ + volatile uint32_t length; /**< Frame length */ + volatile uint32_t status; /**< FD status */ +} _PackedType t_DpaaFD; + +/**************************************************************************//** + @Description enum for defining frame format +*//***************************************************************************/ +typedef enum e_DpaaFDFormatType { + e_DPAA_FD_FORMAT_TYPE_SHORT_SBSF = 0x0, /**< Simple frame Single buffer; Offset and + small length (9b OFFSET, 20b LENGTH) */ + e_DPAA_FD_FORMAT_TYPE_LONG_SBSF = 0x2, /**< Simple frame, single buffer; big length + (29b LENGTH ,No OFFSET) */ + e_DPAA_FD_FORMAT_TYPE_SHORT_MBSF = 0x4, /**< Simple frame, Scatter Gather table; Offset + and small length (9b OFFSET, 20b LENGTH) */ + e_DPAA_FD_FORMAT_TYPE_LONG_MBSF = 0x6, /**< Simple frame, Scatter Gather table; + big length (29b LENGTH ,No OFFSET) */ + e_DPAA_FD_FORMAT_TYPE_COMPOUND = 0x1, /**< Compound Frame (29b CONGESTION-WEIGHT + No LENGTH or OFFSET) */ + e_DPAA_FD_FORMAT_TYPE_DUMMY +} e_DpaaFDFormatType; + +/**************************************************************************//** + @Collection Frame descriptor macros +*//***************************************************************************/ +#define DPAA_FD_DD_MASK 0xc0000000 /**< FD DD field mask */ +#define DPAA_FD_PID_MASK 0x3f000000 /**< FD PID field mask */ +#define DPAA_FD_ELIODN_MASK 0x0000f000 /**< FD ELIODN field mask */ +#define DPAA_FD_BPID_MASK 0x00ff0000 /**< FD BPID field mask */ +#define DPAA_FD_ADDRH_MASK 0x000000ff /**< FD ADDRH field mask */ +#define DPAA_FD_ADDRL_MASK 0xffffffff /**< FD ADDRL field mask */ +#define DPAA_FD_FORMAT_MASK 0xe0000000 /**< FD FORMAT field mask */ +#define DPAA_FD_OFFSET_MASK 0x1ff00000 /**< FD OFFSET field mask */ +#define DPAA_FD_LENGTH_MASK 0x000fffff /**< FD LENGTH field mask */ + +#define DPAA_FD_GET_DD(fd) ((((t_DpaaFD *)fd)->id & DPAA_FD_DD_MASK) >> (31-1)) /**< Macro to get FD DD field */ +#define DPAA_FD_GET_PID(fd) (((((t_DpaaFD *)fd)->id & DPAA_FD_PID_MASK) >> (31-7)) | \ + ((((t_DpaaFD *)fd)->id & DPAA_FD_ELIODN_MASK) >> (31-19-6))) /**< Macro to get FD PID field */ +#define DPAA_FD_GET_BPID(fd) ((((t_DpaaFD *)fd)->id & DPAA_FD_BPID_MASK) >> (31-15)) /**< Macro to get FD BPID field */ +#define DPAA_FD_GET_ADDRH(fd) (((t_DpaaFD *)fd)->id & DPAA_FD_ADDRH_MASK) /**< Macro to get FD ADDRH field */ +#define DPAA_FD_GET_ADDRL(fd) ((t_DpaaFD *)fd)->addrl /**< Macro to get FD ADDRL field */ +#define DPAA_FD_GET_PHYS_ADDR(fd) ((physAddress_t)(((uint64_t)DPAA_FD_GET_ADDRH(fd) << 32) | (uint64_t)DPAA_FD_GET_ADDRL(fd))) /**< Macro to get FD ADDR field */ +#define DPAA_FD_GET_FORMAT(fd) ((((t_DpaaFD *)fd)->length & DPAA_FD_FORMAT_MASK) >> (31-2)) /**< Macro to get FD FORMAT field */ +#define DPAA_FD_GET_OFFSET(fd) ((((t_DpaaFD *)fd)->length & DPAA_FD_OFFSET_MASK) >> (31-11)) /**< Macro to get FD OFFSET field */ +#define DPAA_FD_GET_LENGTH(fd) (((t_DpaaFD *)fd)->length & DPAA_FD_LENGTH_MASK) /**< Macro to get FD LENGTH field */ +#define DPAA_FD_GET_STATUS(fd) ((t_DpaaFD *)fd)->status /**< Macro to get FD STATUS field */ +#define DPAA_FD_GET_ADDR(fd) XX_PhysToVirt(DPAA_FD_GET_PHYS_ADDR(fd)) + +#define DPAA_FD_SET_DD(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~DPAA_FD_DD_MASK) | (((val) << (31-1)) & DPAA_FD_DD_MASK ))) /**< Macro to set FD DD field */ + /**< Macro to set FD PID field or LIODN offset*/ +#define DPAA_FD_SET_PID(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~(DPAA_FD_PID_MASK|DPAA_FD_ELIODN_MASK)) | ((((val) << (31-7)) & DPAA_FD_PID_MASK) | ((((val)>>6) << (31-19)) & DPAA_FD_ELIODN_MASK)))) +#define DPAA_FD_SET_BPID(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~DPAA_FD_BPID_MASK) | (((val) << (31-15)) & DPAA_FD_BPID_MASK))) /**< Macro to set FD BPID field */ +#define DPAA_FD_SET_ADDRH(fd,val) (((t_DpaaFD *)fd)->id = ((((t_DpaaFD *)fd)->id & ~DPAA_FD_ADDRH_MASK) | ((val) & DPAA_FD_ADDRH_MASK))) /**< Macro to set FD ADDRH field */ +#define DPAA_FD_SET_ADDRL(fd,val) ((t_DpaaFD *)fd)->addrl = (val) /**< Macro to set FD ADDRL field */ +#define DPAA_FD_SET_ADDR(fd,val) \ +do { \ + uint64_t physAddr = (uint64_t)(XX_VirtToPhys(val)); \ + DPAA_FD_SET_ADDRH(fd, ((uint32_t)(physAddr >> 32))); \ + DPAA_FD_SET_ADDRL(fd, (uint32_t)physAddr); \ +} while (0) /**< Macro to set FD ADDR field */ +#define DPAA_FD_SET_FORMAT(fd,val) (((t_DpaaFD *)fd)->length = ((((t_DpaaFD *)fd)->length & ~DPAA_FD_FORMAT_MASK) | (((val) << (31-2))& DPAA_FD_FORMAT_MASK))) /**< Macro to set FD FORMAT field */ +#define DPAA_FD_SET_OFFSET(fd,val) (((t_DpaaFD *)fd)->length = ((((t_DpaaFD *)fd)->length & ~DPAA_FD_OFFSET_MASK) | (((val) << (31-11))& DPAA_FD_OFFSET_MASK) )) /**< Macro to set FD OFFSET field */ +#define DPAA_FD_SET_LENGTH(fd,val) (((t_DpaaFD *)fd)->length = (((t_DpaaFD *)fd)->length & ~DPAA_FD_LENGTH_MASK) | ((val) & DPAA_FD_LENGTH_MASK)) /**< Macro to set FD LENGTH field */ +#define DPAA_FD_SET_STATUS(fd,val) ((t_DpaaFD *)fd)->status = (val) /**< Macro to set FD STATUS field */ +/* @} */ + +/**************************************************************************//** + @Description Frame Scatter/Gather Table Entry +*//***************************************************************************/ +typedef _Packed struct t_DpaaSGTE { + volatile uint32_t addrh; /**< Buffer Address high */ + volatile uint32_t addrl; /**< Buffer Address low */ + volatile uint32_t length; /**< Buffer length */ + volatile uint32_t offset; /**< SGTE offset */ +} _PackedType t_DpaaSGTE; + +#define DPAA_NUM_OF_SG_TABLE_ENTRY 16 + +/**************************************************************************//** + @Description Frame Scatter/Gather Table +*//***************************************************************************/ +typedef _Packed struct t_DpaaSGT { + t_DpaaSGTE tableEntry[DPAA_NUM_OF_SG_TABLE_ENTRY]; + /**< structure that hold the information about + a single S/G entry. */ +} _PackedType t_DpaaSGT; + +/**************************************************************************//** + @Description Compound Frame Table +*//***************************************************************************/ +typedef _Packed struct t_DpaaCompTbl { + t_DpaaSGTE outputBuffInfo; /**< structure that holds the information about + the compound-frame output buffer; + NOTE: this may point to a S/G table */ + t_DpaaSGTE inputBuffInfo; /**< structure that holds the information about + the compound-frame input buffer; + NOTE: this may point to a S/G table */ +} _PackedType t_DpaaCompTbl; + +/**************************************************************************//** + @Collection Frame Scatter/Gather Table Entry macros +*//***************************************************************************/ +#define DPAA_SGTE_ADDRH_MASK 0x000000ff /**< SGTE ADDRH field mask */ +#define DPAA_SGTE_ADDRL_MASK 0xffffffff /**< SGTE ADDRL field mask */ +#define DPAA_SGTE_E_MASK 0x80000000 /**< SGTE Extension field mask */ +#define DPAA_SGTE_F_MASK 0x40000000 /**< SGTE Final field mask */ +#define DPAA_SGTE_LENGTH_MASK 0x3fffffff /**< SGTE LENGTH field mask */ +#define DPAA_SGTE_BPID_MASK 0x00ff0000 /**< SGTE BPID field mask */ +#define DPAA_SGTE_OFFSET_MASK 0x00001fff /**< SGTE OFFSET field mask */ + +#define DPAA_SGTE_GET_ADDRH(sgte) (((t_DpaaSGTE *)sgte)->addrh & DPAA_SGTE_ADDRH_MASK) /**< Macro to get SGTE ADDRH field */ +#define DPAA_SGTE_GET_ADDRL(sgte) ((t_DpaaSGTE *)sgte)->addrl /**< Macro to get SGTE ADDRL field */ +#define DPAA_SGTE_GET_PHYS_ADDR(sgte) ((physAddress_t)(((uint64_t)DPAA_SGTE_GET_ADDRH(sgte) << 32) | (uint64_t)DPAA_SGTE_GET_ADDRL(sgte))) /**< Macro to get FD ADDR field */ +#define DPAA_SGTE_GET_EXTENSION(sgte) ((((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_E_MASK) >> (31-0)) /**< Macro to get SGTE EXTENSION field */ +#define DPAA_SGTE_GET_FINAL(sgte) ((((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_F_MASK) >> (31-1)) /**< Macro to get SGTE FINAL field */ +#define DPAA_SGTE_GET_LENGTH(sgte) (((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_LENGTH_MASK) /**< Macro to get SGTE LENGTH field */ +#define DPAA_SGTE_GET_BPID(sgte) ((((t_DpaaSGTE *)sgte)->offset & DPAA_SGTE_BPID_MASK) >> (31-15)) /**< Macro to get SGTE BPID field */ +#define DPAA_SGTE_GET_OFFSET(sgte) (((t_DpaaSGTE *)sgte)->offset & DPAA_SGTE_OFFSET_MASK) /**< Macro to get SGTE OFFSET field */ +#define DPAA_SGTE_GET_ADDR(sgte) XX_PhysToVirt(DPAA_SGTE_GET_PHYS_ADDR(sgte)) + +#define DPAA_SGTE_SET_ADDRH(sgte,val) (((t_DpaaSGTE *)sgte)->addrh = ((((t_DpaaSGTE *)sgte)->addrh & ~DPAA_SGTE_ADDRH_MASK) | ((val) & DPAA_SGTE_ADDRH_MASK))) /**< Macro to set SGTE ADDRH field */ +#define DPAA_SGTE_SET_ADDRL(sgte,val) ((t_DpaaSGTE *)sgte)->addrl = (val) /**< Macro to set SGTE ADDRL field */ +#define DPAA_SGTE_SET_ADDR(sgte,val) \ +do { \ + uint64_t physAddr = (uint64_t)(XX_VirtToPhys(val)); \ + DPAA_SGTE_SET_ADDRH(sgte, ((uint32_t)(physAddr >> 32))); \ + DPAA_SGTE_SET_ADDRL(sgte, (uint32_t)physAddr); \ +} while (0) /**< Macro to set SGTE ADDR field */ +#define DPAA_SGTE_SET_EXTENSION(sgte,val) (((t_DpaaSGTE *)sgte)->length = ((((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_E_MASK) | (((val) << (31-0))& DPAA_SGTE_E_MASK))) /**< Macro to set SGTE EXTENSION field */ +#define DPAA_SGTE_SET_FINAL(sgte,val) (((t_DpaaSGTE *)sgte)->length = ((((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_F_MASK) | (((val) << (31-1))& DPAA_SGTE_F_MASK))) /**< Macro to set SGTE FINAL field */ +#define DPAA_SGTE_SET_LENGTH(sgte,val) (((t_DpaaSGTE *)sgte)->length = (((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_LENGTH_MASK) | ((val) & DPAA_SGTE_LENGTH_MASK)) /**< Macro to set SGTE LENGTH field */ +#define DPAA_SGTE_SET_BPID(sgte,val) (((t_DpaaSGTE *)sgte)->offset = ((((t_DpaaSGTE *)sgte)->offset & ~DPAA_SGTE_BPID_MASK) | (((val) << (31-15))& DPAA_SGTE_BPID_MASK))) /**< Macro to set SGTE BPID field */ +#define DPAA_SGTE_SET_OFFSET(sgte,val) (((t_DpaaSGTE *)sgte)->offset = ((((t_DpaaSGTE *)sgte)->offset & ~DPAA_SGTE_OFFSET_MASK) | (((val) << (31-31))& DPAA_SGTE_OFFSET_MASK) )) /**< Macro to set SGTE OFFSET field */ +/* @} */ + +#define MEM_MAP_END +#if defined(__MWERKS__) && !defined(__GNUC__) +#pragma pack(pop) +#endif /* defined(__MWERKS__) && ... */ + +/** @} */ /* end of DPAA_grp group */ + + +#endif /* __DPAA_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_port_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_port_ext.h @@ -0,0 +1,2196 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_port_ext.h + + @Description FM-Port Application Programming Interface. +*//***************************************************************************/ +#ifndef __FM_PORT_EXT +#define __FM_PORT_EXT + +#include "error_ext.h" +#include "std_ext.h" +#include "fm_pcd_ext.h" +#include "fm_ext.h" +#include "net_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_PORT_grp FM Port + + @Description FM Port API + + The FM uses a general module called "port" to represent a Tx port + (MAC), an Rx port (MAC), offline parsing flow or host command + flow. There may be up to 17 (may change) ports in an FM - 5 Tx + ports (4 for the 1G MACs, 1 for the 10G MAC), 5 Rx Ports, and 7 + Host command/Offline parsing ports. The SW driver manages these + ports as sub-modules of the FM, i.e. after an FM is initialized, + its ports may be initialized and operated upon. + + The port is initialized aware of its type, but other functions on + a port may be indifferent to its type. When necessary, the driver + verifies coherency and returns error if applicable. + + On initialization, user specifies the port type and it's index + (relative to the port's type). Host command and Offline parsing + ports share the same id range, I.e user may not initialized host + command port 0 and offline parsing port 0. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description An enum for defining port PCD modes. + This enum defines the superset of PCD engines support - i.e. not + all engines have to be used, but all have to be enabled. The real + flow of a specific frame depends on the PCD configuration and the + frame headers and payload. +*//***************************************************************************/ +typedef enum e_FmPortPcdSupport { + e_FM_PORT_PCD_SUPPORT_NONE = 0, /**< BMI to BMI, PCD is not used */ + e_FM_PORT_PCD_SUPPORT_PRS_ONLY, /**< Use only Parser */ + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY, /**< Use only Policer */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR, /**< Use Parser and Policer */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG, /**< Use Parser and Keygen */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC, /**< Use Parser, Keygen and Coarse Classification */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR, + /**< Use all PCD engines */ + e_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR /**< Use Parser, Keygen and Policer */ +#ifdef FM_CAPWAP_SUPPORT + , + e_FM_PORT_PCD_SUPPORT_CC_ONLY, /**< Use only Coarse Classification */ + e_FM_PORT_PCD_SUPPORT_CC_AND_KG, /**< Use Coarse Classification,and Keygen */ + e_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR /**< Use Coarse Classification, Keygen and Policer */ +#endif /* FM_CAPWAP_SUPPORT */ +} e_FmPortPcdSupport; + +/**************************************************************************//** + @Description Port interrupts +*//***************************************************************************/ +typedef enum e_FmPortExceptions { + e_FM_PORT_EXCEPTION_IM_BUSY /**< Independent-Mode Rx-BUSY */ +} e_FmPortExceptions; + + +/**************************************************************************//** + @Collection General FM Port defines +*//***************************************************************************/ +#define FM_PORT_PRS_RESULT_NUM_OF_WORDS 8 /**< Number of 4 bytes words in parser result */ +/* @} */ + +/**************************************************************************//** + @Collection FM Frame error +*//***************************************************************************/ +typedef uint32_t fmPortFrameErrSelect_t; /**< typedef for defining Frame Descriptor errors */ + +#define FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT 0x04000000 /**< Offline parsing only! Unsupported Format */ +#define FM_PORT_FRM_ERR_LENGTH 0x02000000 /**< Offline parsing only! Length Error */ +#define FM_PORT_FRM_ERR_DMA 0x01000000 /**< DMA Data error */ +#ifdef FM_CAPWAP_SUPPORT +#define FM_PORT_FRM_ERR_NON_FM 0x00400000 /**< non Frame-Manager error; probably come from SEC that + was chained to FM */ +#endif /* FM_CAPWAP_SUPPORT */ +#define FM_PORT_FRM_ERR_PHYSICAL 0x00080000 /**< Rx FIFO overflow, FCS error, code error, running disparity + error (SGMII and TBI modes), FIFO parity error. PHY + Sequence error, PHY error control character detected. */ +#define FM_PORT_FRM_ERR_SIZE 0x00040000 /**< Frame too long OR Frame size exceeds max_length_frame */ +#define FM_PORT_FRM_ERR_CLS_DISCARD 0x00020000 /**< classification discard */ +#define FM_PORT_FRM_ERR_EXTRACTION 0x00008000 /**< Extract Out of Frame */ +#define FM_PORT_FRM_ERR_NO_SCHEME 0x00004000 /**< No Scheme Selected */ +#define FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW 0x00002000 /**< Keysize Overflow */ +#define FM_PORT_FRM_ERR_COLOR_YELLOW 0x00000400 /**< Frame color is yellow */ +#define FM_PORT_FRM_ERR_COLOR_RED 0x00000800 /**< Frame color is red */ +#define FM_PORT_FRM_ERR_ILL_PLCR 0x00000200 /**< Illegal Policer Profile selected */ +#define FM_PORT_FRM_ERR_PLCR_FRAME_LEN 0x00000100 /**< Policer frame length error */ +#define FM_PORT_FRM_ERR_PRS_TIMEOUT 0x00000080 /**< Parser Time out Exceed */ +#define FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT 0x00000040 /**< Invalid Soft Parser instruction */ +#define FM_PORT_FRM_ERR_PRS_HDR_ERR 0x00000020 /**< Header error was identified during parsing */ +#define FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED 0x00000008 /**< Frame parsed beyind 256 first bytes */ +#define FM_PORT_FRM_ERR_PROCESS_TIMEOUT 0x00000001 /**< FPM Frame Processing Timeout Exceeded */ +/* @} */ + + + +/**************************************************************************//** + @Group FM_PORT_init_grp FM Port Initialization Unit + + @Description FM Port Initialization Unit + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Exceptions user callback routine, will be called upon an + exception passing the exception identification. + + @Param[in] h_App - User's application descriptor. + @Param[in] exception - The exception. + *//***************************************************************************/ +typedef void (t_FmPortExceptionCallback) (t_Handle h_App, e_FmPortExceptions exception); + +/**************************************************************************//** + @Description User callback function called by driver with received data. + + User provides this function. Driver invokes it. + + @Param[in] h_App Application's handle originally specified to + the API Config function + @Param[in] p_Data A pointer to data received + @Param[in] length length of received data + @Param[in] status receive status and errors + @Param[in] position position of buffer in frame + @Param[in] h_BufContext A handle of the user acossiated with this buffer + + @Retval e_RX_STORE_RESPONSE_CONTINUE - order the driver to continue Rx + operation for all ready data. + @Retval e_RX_STORE_RESPONSE_PAUSE - order the driver to stop Rx operation. +*//***************************************************************************/ +typedef e_RxStoreResponse (t_FmPortImRxStoreCallback) (t_Handle h_App, + uint8_t *p_Data, + uint16_t length, + uint16_t status, + uint8_t position, + t_Handle h_BufContext); + +/**************************************************************************//** + @Description User callback function called by driver when transmit completed. + + User provides this function. Driver invokes it. + + @Param[in] h_App Application's handle originally specified to + the API Config function + @Param[in] p_Data A pointer to data received + @Param[in] status transmit status and errors + @Param[in] lastBuffer is last buffer in frame + @Param[in] h_BufContext A handle of the user acossiated with this buffer + *//***************************************************************************/ +typedef void (t_FmPortImTxConfCallback) (t_Handle h_App, + uint8_t *p_Data, + uint16_t status, + t_Handle h_BufContext); + +/**************************************************************************//** + @Description A structure of information about each of the external + buffer pools used by the port, +*//***************************************************************************/ +typedef struct t_FmPortExtPoolParams { + uint8_t id; /**< External buffer pool id */ + uint16_t size; /**< External buffer pool buffer size */ +} t_FmPortExtPoolParams; + +/**************************************************************************//** + @Description A structure for informing the driver about the external + buffer pools allocated in the BM and used by this port. +*//***************************************************************************/ +typedef struct t_FmPortExtPools { + uint8_t numOfPoolsUsed; /**< Number of pools use by this port */ + t_FmPortExtPoolParams extBufPool[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + /**< Parameters for each port */ +} t_FmPortExtPools; + +/**************************************************************************//** + @Description structure for additional Rx port parameters +*//***************************************************************************/ +typedef struct t_FmPortRxParams { + uint32_t errFqid; /**< Error Queue Id. */ + uint32_t dfltFqid; /**< Default Queue Id. */ + uint16_t liodnOffset; /**< Port's LIODN offset. */ + t_FmPortExtPools extBufPools; /**< Which external buffer pools are used + (up to FM_PORT_MAX_NUM_OF_EXT_POOLS), and their sizes. */ +} t_FmPortRxParams; + +/**************************************************************************//** + @Description structure for additional non-Rx port parameters +*//***************************************************************************/ +typedef struct t_FmPortNonRxParams { + uint32_t errFqid; /**< Error Queue Id. */ + uint32_t dfltFqid; /**< For Tx and HC - Default Confirmation queue, + 0 means no Tx confirmation for processed + frames. For OP - default Rx queue. */ + uint32_t qmChannel; /**< QM-channel dedicated to this port; will be used + by the FM for dequeue. */ +#ifdef FM_OP_PARTITION_ERRATA_FMANx8 + uint16_t opLiodnOffset; /**< For Offline Parsing ports only. Port's LIODN offset. */ +#endif /* FM_OP_PARTITION_ERRATA_FMANx8 */ +} t_FmPortNonRxParams; + +/**************************************************************************//** + @Description structure for additional Rx port parameters +*//***************************************************************************/ +typedef struct t_FmPortImRxTxParams { + t_Handle h_FmMuram; /**< A handle of the FM-MURAM partition */ + uint16_t liodnOffset; /**< For Rx ports only. Port's LIODN Offset. */ + uint8_t dataMemId; /**< Memory partition ID for data buffers */ + uint32_t dataMemAttributes; /**< Memory attributes for data buffers */ + t_BufferPoolInfo rxPoolParams; /**< For Rx ports only. */ + t_FmPortImRxStoreCallback *f_RxStore; /**< For Rx ports only. */ + t_FmPortImTxConfCallback *f_TxConf; /**< For Tx ports only. */ +} t_FmPortImRxTxParams; + +/**************************************************************************//** + @Description Union for additional parameters depending on port type +*//***************************************************************************/ +typedef union u_FmPortSpecificParams { + t_FmPortImRxTxParams imRxTxParams; /**< Rx/Tx Independent-Mode port parameter structure */ + t_FmPortRxParams rxParams; /**< Rx port parameters structure */ + t_FmPortNonRxParams nonRxParams; /**< Non-Rx port parameters structure */ +} u_FmPortSpecificParams; + +/**************************************************************************//** + @Description structure representing FM initialization parameters +*//***************************************************************************/ +typedef struct t_FmPortParams { + uintptr_t baseAddr; /**< Virtual Address of memory mapped FM Port registers.*/ + t_Handle h_Fm; /**< A handle to the FM object this port related to */ + e_FmPortType portType; /**< Port type */ + uint8_t portId; /**< Port Id - relative to type */ + bool independentModeEnable; + /**< This port is Independent-Mode - Used for Rx/Tx ports only! */ + uint16_t liodnBase; /**< Irrelevant for P4080 rev 1. LIODN base for this port, to be + used together with LIODN offset. */ + u_FmPortSpecificParams specificParams; /**< Additional parameters depending on port + type. */ + + t_FmPortExceptionCallback *f_Exception; /**< Callback routine to be called of PCD exception */ + t_Handle h_App; /**< A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmPortParams; + + +/**************************************************************************//** + @Function FM_PORT_Config + + @Description Creates descriptor for the FM PORT module. + + The routine returns a handle (descriptor) to the FM PORT object. + This descriptor must be passed as first parameter to all other + FM PORT function calls. + + No actual initialization or configuration of FM hardware is + done by this routine. + + @Param[in] p_FmPortParams - Pointer to data structure of parameters + + @Retval Handle to FM object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_PORT_Config(t_FmPortParams *p_FmPortParams); + +/**************************************************************************//** + @Function FM_PORT_Init + + @Description Initializes the FM PORT module + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Init(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_Free + + @Description Frees all resources that were assigned to FM PORT module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_Free(t_Handle h_FmPort); + + +/**************************************************************************//** + @Group FM_PORT_advanced_init_grp FM Port Advanced Configuration Unit + + @Description Configuration functions used to change default values. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description enum for defining QM frame dequeue +*//***************************************************************************/ +typedef enum e_FmPortDeqType { + e_FM_PORT_DEQ_TYPE1, /**< Dequeue from the SP channel - with priority precedence, + and Intra-Class Scheduling respected. */ + e_FM_PORT_DEQ_TYPE2, /**< Dequeue from the SP channel - with active FQ precedence, + and Intra-Class Scheduling respected. */ + e_FM_PORT_DEQ_TYPE3 /**< Dequeue from the SP channel - with active FQ precedence, + and override Intra-Class Scheduling */ +} e_FmPortDeqType; + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +/**************************************************************************//** + @Description enum for defining QM frame dequeue +*//***************************************************************************/ +typedef enum e_FmPortDeqPrefetchOption { + e_FM_PORT_DEQ_NO_PREFETCH, /**< QMI preforms a dequeue action for a single frame + only when a dedicated portID Tnum is waiting. */ + e_FM_PORT_DEQ_PARTIAL_PREFETCH, /**< QMI preforms a dequeue action for 3 frames when + one dedicated portId tnum is waiting. */ + e_FM_PORT_DEQ_FULL_PREFETCH /**< QMI preforms a dequeue action for 3 frames when + no dedicated portId tnums are waiting. */ + +} e_FmPortDeqPrefetchOption; +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +/**************************************************************************//** + @Description enum for defining port DMA swap mode +*//***************************************************************************/ +typedef enum e_FmPortDmaSwap { + e_FM_PORT_DMA_NO_SWP, /**< No swap, transfer data as is.*/ + e_FM_PORT_DMA_SWP_PPC_LE, /**< The transferred data should be swapped + in PowerPc Little Endian mode. */ + e_FM_PORT_DMA_SWP_BE /**< The transferred data should be swapped + in Big Endian mode */ +} e_FmPortDmaSwap; + +/**************************************************************************//** + @Description enum for defining port DMA cache attributes +*//***************************************************************************/ +typedef enum e_FmPortDmaCache { + e_FM_PORT_DMA_NO_STASH = 0, /**< Cacheable, no Allocate (No Stashing) */ + e_FM_PORT_DMA_STASH = 1 /**< Cacheable and Allocate (Stashing on) */ +} e_FmPortDmaCache; + +/**************************************************************************//** + @Description enum for defining port default color +*//***************************************************************************/ +typedef enum e_FmPortColor { + e_FM_PORT_COLOR_GREEN, /**< Default port color is green */ + e_FM_PORT_COLOR_YELLOW, /**< Default port color is yellow */ + e_FM_PORT_COLOR_RED, /**< Default port color is red */ + e_FM_PORT_COLOR_OVERRIDE /**< Ignore color */ +} e_FmPortColor; + +/**************************************************************************//** + @Description struct for defining Dual Tx rate limiting scale +*//***************************************************************************/ +typedef enum e_FmPortDualRateLimiterScaleDown { + e_FM_PORT_DUAL_RATE_LIMITER_NONE = 0, /**< Use only single rate limiter */ + e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_2, /**< Divide high rate limiter by 2 */ + e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_4, /**< Divide high rate limiter by 4 */ + e_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8 /**< Divide high rate limiter by 8 */ +} e_FmPortDualRateLimiterScaleDown; + + +/**************************************************************************//** + @Description struct for defining FM port resources +*//***************************************************************************/ +typedef struct t_FmPortRsrc { + uint32_t num; /**< Committed required resource */ + uint32_t extra; /**< Extra (not committed) required resource */ +} t_FmPortRsrc; + +/**************************************************************************//** + @Description struct for defining pool depletion criteria +*//***************************************************************************/ +typedef struct t_FmPortBufPoolDepletion { + bool numberOfPoolsModeEnable; /**< select mode in which pause frames will be sent after + a number of pools are depleted */ + uint8_t numOfPools; /**< the minimum number of depleted pools that will + invoke pause frames transmission. */ + bool poolsToConsider[BM_MAX_NUM_OF_POOLS]; + /**< For each pool, TRUE if it should be considered for + depletion (Note - this pool must be used by this port!) */ + bool singlePoolModeEnable; /**< select mode in which pause frames will be sent after + a single of pools are depleted */ + bool poolsToConsiderForSingleMode[BM_MAX_NUM_OF_POOLS]; + /**< For each pool, TRUE if it should be considered for + depletion (Note - this pool must be used by this port!) */ +} t_FmPortBufPoolDepletion; + +/**************************************************************************//** + @Description struct for defining observed pool depletion +*//***************************************************************************/ +typedef struct t_FmPortObservedBufPoolDepletion { + t_FmPortBufPoolDepletion poolDepletionParams;/**< parameters to define pool depletion */ + t_FmPortExtPools poolsParams; /**< Which external buffer pools are observed + (up to FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS), + and their sizes. */ +} t_FmPortObservedBufPoolDepletion; + +/**************************************************************************//** + @Description struct for defining Tx rate limiting +*//***************************************************************************/ +typedef struct t_FmPortRateLimit { + uint16_t maxBurstSize; /**< in kBytes for Tx ports, in frames + for offline parsing ports. (note that + for early chips burst size is + rounded up to a multiply of 1000 frames).*/ + uint32_t rateLimit; /**< in Kb/sec for Tx ports, in frame/sec for + offline parsing ports. Rate limit refers to + data rate (rather than line rate). */ + e_FmPortDualRateLimiterScaleDown rateLimitDivider; /**< For offline parsing ports only. Not-valid + for some earlier chip revisions */ +} t_FmPortRateLimit; + +/**************************************************************************//** + @Description struct for defining define the parameters of + the Rx port performance counters +*//***************************************************************************/ +typedef struct t_FmPortPerformanceCnt { + uint8_t taskCompVal; /**< Task compare value */ + uint8_t queueCompVal; /**< Rx queue/Tx confirm queue compare + value (unused for H/O) */ + uint8_t dmaCompVal; /**< Dma compare value */ + uint32_t fifoCompVal; /**< Fifo compare value (in bytes) */ +} t_FmPortPerformanceCnt; + +/**************************************************************************//** + @Description struct for defining buffer content. +*//***************************************************************************/ +typedef struct t_FmPortBufferPrefixContent { + uint16_t privDataSize; /**< Number of bytes to be left at the beginning + of the external buffer */ + bool passPrsResult; /**< TRUE to pass the parse result to/from the FM */ + bool passTimeStamp; /**< TRUE to pass the timeStamp to/from the FM */ + bool passHashResult; /**< TRUE to pass the KG hash result to/from the FM */ + bool passAllOtherPCDInfo;/**< Add all other Internal-Context information: + AD, hash-result, key, etc. */ + uint16_t dataAlign; /**< 0 to use driver's default alignment, other value + for selecting a data alignment (must be a + power of 2) */ +#ifdef DEBUG + bool passDebugInfo; /**< Debug-information */ +#endif /* DEBUG */ +#ifdef FM_CAPWAP_SUPPORT + uint8_t manipExtraSpace; /**< Maximum extra size needed (insertion-size minus removal-size) */ +#endif /* FM_CAPWAP_SUPPORT */ +} t_FmPortBufferPrefixContent; + +/**************************************************************************//** + @Description struct for defining backup Bm Pools. +*//***************************************************************************/ +typedef struct t_FmPortBackupBmPools { + uint8_t numOfBackupPools; /**< Number of BM backup pools - + must be smaller than the total number of + pools defined for the specified port.*/ + uint8_t poolIds[FM_PORT_MAX_NUM_OF_EXT_POOLS]; + /**< numOfBackupPools pool id's, specifying which + pools should be used only as backup. Pool + id's specified here must be a subset of the + pools used by the specified port.*/ +} t_FmPortBackupBmPools; + + +/**************************************************************************//** + @Function FM_PORT_ConfigDeqHighPriority + + @Description Calling this routine changes the dequeue priority in the + internal driver data base from its default configuration + [TRUE] + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] highPri TRUE to select high priority, FALSE for normal operation. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqHighPriority(t_Handle h_FmPort, bool highPri); + +/**************************************************************************//** + @Function FM_PORT_ConfigDeqType + + @Description Calling this routine changes the dequeue type parameter in the + internal driver data base from its default configuration + [e_FM_PORT_DEQ_TYPE1]. + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqType According to QM definition. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqType(t_Handle h_FmPort, e_FmPortDeqType deqType); + +#ifdef FM_QMI_DEQ_OPTIONS_SUPPORT +/**************************************************************************//** + @Function FM_PORT_ConfigDeqPrefetchOption + + @Description Calling this routine changes the dequeue prefetch option parameter in the + internal driver data base from its default configuration + [e_FM_PORT_DEQ_FULL_PREFETCH] + Note: Available for some chips only + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqPrefetchOption New option + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqPrefetchOption(t_Handle h_FmPort, e_FmPortDeqPrefetchOption deqPrefetchOption); +#endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */ + +/**************************************************************************//** + @Function FM_PORT_ConfigDeqByteCnt + + @Description Calling this routine changes the dequeue byte count parameter in + the internal driver data base from its default configuration [2000]. + + May be used for Non-Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqByteCnt New byte count + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDeqByteCnt(t_Handle h_FmPort, uint16_t deqByteCnt); + +/**************************************************************************//** + @Function FM_PORT_ConfigTxFifoMinFillLevel + + @Description Calling this routine changes the fifo minimum + fill level parameter in the internal driver data base + from its default configuration [0] + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] minFillLevel New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigTxFifoMinFillLevel(t_Handle h_FmPort, uint32_t minFillLevel); + +/**************************************************************************//** + @Function FM_PORT_ConfigTxFifoDeqPipelineDepth + + @Description Calling this routine changes the fifo dequeue + pipeline depth parameter in the internal driver data base + + from its default configuration: 1G ports: [2], + 10G port: [8] + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] deqPipelineDepth New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigTxFifoDeqPipelineDepth(t_Handle h_FmPort, uint8_t deqPipelineDepth); + +/**************************************************************************//** + @Function FM_PORT_ConfigTxFifoLowComfLevel + + @Description Calling this routine changes the fifo low comfort level + parameter in internal driver data base + from its default configuration [5] + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fifoLowComfLevel New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigTxFifoLowComfLevel(t_Handle h_FmPort, uint32_t fifoLowComfLevel); + +/**************************************************************************//** + @Function FM_PORT_ConfigRxFifoThreshold + + @Description Calling this routine changes the threshold of the FIFO + fill level parameter in the internal driver data base + from its default configuration [BMI_MAX_FIFO_SIZE] + + If the total number of buffers which are + currently in use and associated with the + specific RX port exceed this threshold, the + BMI will signal the MAC to send a pause frame + over the link. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fifoThreshold New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigRxFifoThreshold(t_Handle h_FmPort, uint32_t fifoThreshold); + +/**************************************************************************//** + @Function FM_PORT_ConfigRxFifoPriElevationLevel + + @Description Calling this routine changes the priority elevation level + parameter in the internal driver data base from its default + configuration [BMI_MAX_FIFO_SIZE] + + If the total number of buffers which are currently in use and + associated with the specific RX port exceed the amount specified + in priElevationLevel, BMI will signal the main FM's DMA to + elevate the FM priority on the system bus. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] priElevationLevel New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigRxFifoPriElevationLevel(t_Handle h_FmPort, uint32_t priElevationLevel); + +/**************************************************************************//** + @Function FM_PORT_ConfigBufferPrefixContent + + @Description Defines the structure, size and content of the application buffer. + The prefix will + In Tx ports, if 'passPrsResult', the application + should set a value to their offsets in the prefix of + the FM will save the first 'privDataSize', than, + depending on 'passPrsResult' and 'passTimeStamp', copy parse result + and timeStamp, and the packet itself (in this order), to the + application buffer, and to offset. + Calling this routine changes the buffer margins definitions + in the internal driver data base from its default + configuration: Data size: [0] + Pass Parser result: [FALSE]. + Pass timestamp: [FALSE]. + + May be used for all ports + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in,out] p_FmPortBufferPrefixContent A structure of parameters describing the + structure of the buffer. + Out parameter: Start margin - offset + of data from start of external buffer. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigBufferPrefixContent(t_Handle h_FmPort, t_FmPortBufferPrefixContent *p_FmPortBufferPrefixContent); + + +/**************************************************************************//** + @Function FM_PORT_ConfigCheksumLastBytesIgnore + + @Description Calling this routine changes the number of checksum bytes to ignore + parameter in the internal driver data base from its default configuration + [0] + + May be used by Tx & Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] cheksumLastBytesIgnore New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigCheksumLastBytesIgnore(t_Handle h_FmPort, uint8_t cheksumLastBytesIgnore); + +/**************************************************************************//** + @Function FM_PORT_ConfigCutBytesFromEnd + + @Description Calling this routine changes the number of bytes to cut from a + frame's end parameter in the internal driver data base + from its default configuration [4] + Note that if the result of (frame length before chop - cutBytesFromEnd) is + less than 14 bytes, the chop operation is not executed. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] cutBytesFromEnd New value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigCutBytesFromEnd(t_Handle h_FmPort, uint8_t cutBytesFromEnd); + +/**************************************************************************//** + @Function FM_PORT_ConfigPoolDepletion + + @Description Calling this routine enables pause frame generation depending on the + depletion status of BM pools. It also defines the conditions to activate + this functionality. By default, this functionality is disabled. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_BufPoolDepletion A structure of pool depletion parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigPoolDepletion(t_Handle h_FmPort, t_FmPortBufPoolDepletion *p_BufPoolDepletion); + +/**************************************************************************//** + @Function FM_PORT_ConfigObservedPoolDepletion + + @Description Calling this routine enables a mechanism to stop port enqueue + depending on the depletion status of selected BM pools. + It also defines the conditions to activate + this functionality. By default, this functionality is disabled. + + Note: Available for some chips only + + May be used for Offline Parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortObservedBufPoolDepletion A structure of parameters for pool depletion. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigObservedPoolDepletion(t_Handle h_FmPort, t_FmPortObservedBufPoolDepletion *p_FmPortObservedBufPoolDepletion); + +/**************************************************************************//** + @Function FM_PORT_ConfigExtBufPools + + @Description This routine should be called for offline parsing ports + that internally use BM buffer pools. In such cases, e.g. for fragmentation and + re-assembly, the FM needs new BM buffers. By calling this routine the user + specifies the BM buffer pools that should be used. + + Note: Available for some chips only + + May be used for Offline Parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortExtPools A structure of parameters for the external pools. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigExtBufPools(t_Handle h_FmPort, t_FmPortExtPools *p_FmPortExtPools); + +/**************************************************************************//** + @Function FM_PORT_ConfigBackupPools + + @Description Calling this routine allows the configuration of some of the BM pools + defined for this port as backup pools. + A pool configured to be a backup pool will be used only if all other + enabled non-backup pools are depleted. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortBackupBmPools An array of pool id's. All pools specified here will + be defined as backup pools. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigBackupPools(t_Handle h_FmPort, t_FmPortBackupBmPools *p_FmPortBackupBmPools); + +/**************************************************************************//** + @Function FM_PORT_ConfigFrmDiscardOverride + + @Description Calling this routine changes the error frames destination parameter + in the internal driver data base from its default configuration: + override = [FALSE] + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] override TRUE to override dicarding of error frames and + enqueueing them to error queue. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigFrmDiscardOverride(t_Handle h_FmPort, bool override); + +/**************************************************************************//** + @Function FM_PORT_ConfigErrorsToDiscard + + @Description Calling this routine changes the behaviour on error parameter + in the internal driver data base from its default configuration: + [FM_PORT_FRM_ERR_CLS_DISCARD]. + If a requested error was previously defined as "ErrorsToEnqueue" it's + definition will change and the frame will be discarded. + Errors that were not defined either as "ErrorsToEnqueue" nor as + "ErrorsToDiscard", will be forwarded to CPU. + + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] errs A list of errors to discard + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigErrorsToDiscard(t_Handle h_FmPort, fmPortFrameErrSelect_t errs); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaSwapData + + @Description Calling this routine changes the DMA swap data aparameter + in the internal driver data base from its default + configuration [e_FM_PORT_DMA_NO_SWP] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] swapData New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaSwapData(t_Handle h_FmPort, e_FmPortDmaSwap swapData); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaIcCacheAttr + + @Description Calling this routine changes the internal context cache + attribute parameter in the internal driver data base + from its default configuration [e_FM_PORT_DMA_NO_STASH] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] intContextCacheAttr New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaIcCacheAttr(t_Handle h_FmPort, e_FmPortDmaCache intContextCacheAttr); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaHdrAttr + + @Description Calling this routine changes the header cache + attribute parameter in the internal driver data base + from its default configuration [e_FM_PORT_DMA_NO_STASH] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] headerCacheAttr New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaHdrAttr(t_Handle h_FmPort, e_FmPortDmaCache headerCacheAttr); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaScatterGatherAttr + + @Description Calling this routine changes the scatter gather cache + attribute parameter in the internal driver data base + from its default configuration [e_FM_PORT_DMA_NO_STASH] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] scatterGatherCacheAttr New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaScatterGatherAttr(t_Handle h_FmPort, e_FmPortDmaCache scatterGatherCacheAttr); + +/**************************************************************************//** + @Function FM_PORT_ConfigDmaWriteOptimize + + @Description Calling this routine changes the write optimization + parameter in the internal driver data base + from its default configuration: optimize = [TRUE] + + May be used for non-Tx port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] optimize TRUE to enable optimization, FALSE for normal operation + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDmaWriteOptimize(t_Handle h_FmPort, bool optimize); + +/**************************************************************************//** + @Function FM_PORT_ConfigDfltColor + + @Description Calling this routine changes the internal default color parameter + in the internal driver data base + from its default configuration [e_FM_PORT_COLOR_GREEN] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] color New selection + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDfltColor(t_Handle h_FmPort, e_FmPortColor color); + +/**************************************************************************//** + @Function FM_PORT_ConfigSyncReq + + @Description Calling this routine changes the synchronization attribute parameter + in the internal driver data base from its default configuration: + syncReq = [TRUE] + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] syncReq TRUE to request synchronization, FALSE otherwize. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigSyncReq(t_Handle h_FmPort, bool syncReq); + +/**************************************************************************//** + @Function FM_PORT_ConfigForwardReuseIntContext + + @Description This routine is relevant for Rx ports that are routed to offline + parsing. It changes the internal context reuse option + in the internal driver data base from its default configuration: + reuse = [FALSE] + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] reuse TRUE to reuse internal context on frames + forwarded to offline parsing. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigForwardReuseIntContext(t_Handle h_FmPort, bool reuse); + +/**************************************************************************//** + @Function FM_PORT_ConfigDontReleaseTxBufToBM + + @Description This routine should be called if no Tx confirmation + is done, and yet buffers should not be released to the BM. + Normally, buffers are returned using the Tx confirmation + process. When Tx confirmation is not used (defFqid=0), + buffers are typically released to the BM. This routine + may be called to avoid this behavior and not release the + buffers. + + May be used for Tx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ConfigDontReleaseTxBufToBM(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMMaxRxBufLength + + @Description Changes the maximum receive buffer length from its default + configuration: Closest rounded down power of 2 value of the + data buffer size. + + The maximum receive buffer length directly affects the structure + of received frames (single- or multi-buffered) and the performance + of both the FM and the driver. + + The selection between single- or multi-buffered frames should be + done according to the characteristics of the specific application. + The recommended mode is to use a single data buffer per packet, + as this mode provides the best performance. However, the user can + select to use multiple data buffers per packet. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] newVal Maximum receive buffer length (in bytes). + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMMaxRxBufLength(t_Handle h_FmPort, uint16_t newVal); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMRxBdRingLength + + @Description Changes the receive BD ring length from its default + configuration:[128] + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] newVal The desired BD ring length. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMRxBdRingLength(t_Handle h_FmPort, uint16_t newVal); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMTxBdRingLength + + @Description Changes the transmit BD ring length from its default + configuration:[16] + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] newVal The desired BD ring length. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMTxBdRingLength(t_Handle h_FmPort, uint16_t newVal); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMFmanCtrlExternalStructsMemory + + @Description Configures memory partition and attributes for FMan-Controller + data structures (e.g. BD rings). + Calling this routine changes the internal driver data base + from its default configuration + [0 , MEMORY_ATTR_CACHEABLE]. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] memId Memory partition ID. + @Param[in] memAttributes Memory attributes mask (a combination of MEMORY_ATTR_x flags). + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMFmanCtrlExternalStructsMemory(t_Handle h_FmPort, + uint8_t memId, + uint32_t memAttributes); + +/**************************************************************************//** + @Function FM_PORT_ConfigIMPolling + + @Description Changes the Rx flow from interrupt driven (default) to polling. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). + This routine is to be used only if Independent-Mode is enabled. +*//***************************************************************************/ +t_Error FM_PORT_ConfigIMPolling(t_Handle h_FmPort); + +/** @} */ /* end of FM_PORT_advanced_init_grp group */ +/** @} */ /* end of FM_PORT_init_grp group */ + + +/**************************************************************************//** + @Group FM_PORT_runtime_control_grp FM Port Runtime Control Unit + + @Description FM Port Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description enum for defining FM Port counters +*//***************************************************************************/ +typedef enum e_FmPortCounters { + e_FM_PORT_COUNTERS_CYCLE, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_TASK_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_QUEUE_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_DMA_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_FIFO_UTIL, /**< BMI performance counter */ + e_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION, /**< BMI Rx only performance counter */ + e_FM_PORT_COUNTERS_FRAME, /**< BMI statistics counter */ + e_FM_PORT_COUNTERS_DISCARD_FRAME, /**< BMI statistics counter */ + e_FM_PORT_COUNTERS_DEALLOC_BUF, /**< BMI deallocate buffer statistics counter */ + e_FM_PORT_COUNTERS_RX_BAD_FRAME, /**< BMI Rx only statistics counter */ + e_FM_PORT_COUNTERS_RX_LARGE_FRAME, /**< BMI Rx only statistics counter */ + e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, /**< BMI Rx only statistics counter */ + e_FM_PORT_COUNTERS_RX_FILTER_FRAME, /**< BMI Rx & OP only statistics counter */ + e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR, /**< BMI Rx, OP & HC only statistics counter */ + e_FM_PORT_COUNTERS_WRED_DISCARD, /**< BMI OP & HC only statistics counter */ + e_FM_PORT_COUNTERS_LENGTH_ERR, /**< BMI non-Rx statistics counter */ + e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, /**< BMI non-Rx statistics counter */ + e_FM_PORT_COUNTERS_DEQ_TOTAL, /**< QMI counter */ + e_FM_PORT_COUNTERS_ENQ_TOTAL, /**< QMI counter */ + e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI counter */ + e_FM_PORT_COUNTERS_DEQ_CONFIRM /**< QMI counter */ +} e_FmPortCounters; + +/**************************************************************************//** + @Description Structure for Port id parameters. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. +*//***************************************************************************/ +typedef struct t_FmPortCongestionGrps { + uint16_t numOfCongestionGrpsToConsider; /**< The number of required congestion groups + to define the size of the following array */ + uint8_t congestionGrpsToConsider[FM_PORT_NUM_OF_CONGESTION_GRPS]; + /**< An array of 'numOfCongestionGrpsToConsider' + describing the groups */ +} t_FmPortCongestionGrps; + + + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_PORT_DumpRegs + + @Description Dump all regs. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_DumpRegs(t_Handle h_FmPort); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/**************************************************************************//** + @Function FM_PORT_GetBufferDataOffset + + @Description Relevant for Rx ports. + Returns the data offset from the beginning of the data buffer + + @Param[in] h_FmPort - FM PORT module descriptor + + @Return data offset. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint32_t FM_PORT_GetBufferDataOffset(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_GetBufferICInfo + + @Description Returns the Internal Context offset from the beginning of the data buffer + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return Internal context info pointer on success, NULL if 'allOtherInfo' was not + configured for this port. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint8_t * FM_PORT_GetBufferICInfo(t_Handle h_FmPort, char *p_Data); + +#ifdef DEBUG +/**************************************************************************//** + @Function FM_PORT_GetBufferDebugInfo + + @Description Returns the debug info offset from the beginning of the data buffer + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return Debug info pointer on success, NULL if 'passDebugInfo' was not + configured for this port. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint8_t * FM_PORT_GetBufferDebugInfo(t_Handle h_FmPort, char *p_Data); +#endif /* DEBUG */ + +/**************************************************************************//** + @Function FM_PORT_GetBufferPrsResult + + @Description Returns the pointer to the parse result in the data buffer. + In Rx ports this is relevant after reception, if parse + result is configured to be part of the data passed to the + application. For non Rx ports it may be used to get the pointer + of the area in the buffer where parse result should be + initialized - if so configured. + See FM_PORT_ConfigBufferPrefixContent for data buffer prefix + configuration. + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return Parse result pointer on success, NULL if parse result was not + configured for this port. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_FmPrsResult * FM_PORT_GetBufferPrsResult(t_Handle h_FmPort, char *p_Data); + +/**************************************************************************//** + @Function FM_PORT_GetBufferTimeStamp + + @Description Returns the time stamp in the data buffer. + Relevant for Rx ports for getting the buffer time stamp. + See FM_PORT_ConfigBufferPrefixContent for data buffer prefix + configuration. + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return A pointer to the hash result on success, NULL otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint64_t * FM_PORT_GetBufferTimeStamp(t_Handle h_FmPort, char *p_Data); + +/**************************************************************************//** + @Function FM_PORT_GetBufferHashResult + + @Description Given a data buffer, on the condition that hash result was defined + as a part of the buffer content (see FM_PORT_ConfigBufferPrefixContent) + this routine will return the pointer to the hash result location in the + buffer prefix. + + @Param[in] h_FmPort - FM PORT module descriptor + @Param[in] p_Data - A pointer to the data buffer. + + @Return A pointer to the hash result on success, NULL otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +uint8_t * FM_PORT_GetBufferHashResult(t_Handle h_FmPort, char *p_Data); + +/**************************************************************************//** + @Function FM_PORT_Disable + + @Description Gracefully disable an FM port. The port will not start new tasks after all + tasks associated with the port are terminated. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + This is a blocking routine, it returns after port is + gracefully stopped, i.e. the port will not except new frames, + but it will finish all frames or tasks which were already began +*//***************************************************************************/ +t_Error FM_PORT_Disable(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_Enable + + @Description A runtime routine provided to allow disable/enable of port. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_Enable(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetRateLimit + + @Description Calling this routine enables rate limit algorithm. + By default, this functionality is disabled. + Note that rate-limit mechanism uses the FM time stamp. + The selected rate limit specified here would be + rounded DOWN to the nearest 16M. + + May be used for Tx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_RateLimit A structure of rate limit parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetRateLimit(t_Handle h_FmPort, t_FmPortRateLimit *p_RateLimit); + +/**************************************************************************//** + @Function FM_PORT_DeleteRateLimit + + @Description Calling this routine disables and clears rate limit + initialization. + + May be used for Tx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_DeleteRateLimit(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetStatisticsCounters + + @Description Calling this routine enables/disables port's statistics counters. + By default, counters are enabled. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetStatisticsCounters(t_Handle h_FmPort, bool enable); + +/**************************************************************************//** + @Function FM_PORT_SetFrameQueueCounters + + @Description Calling this routine enables/disables port's enqueue/dequeue counters. + By default, counters are enabled. + + May be used for all ports + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetFrameQueueCounters(t_Handle h_FmPort, bool enable); + +/**************************************************************************//** + @Function FM_PORT_SetPerformanceCounters + + @Description Calling this routine enables/disables port's performance counters. + By default, counters are enabled. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetPerformanceCounters(t_Handle h_FmPort, bool enable); + +/**************************************************************************//** + @Function FM_PORT_SetPerformanceCounters + + @Description Calling this routine defines port's performance + counters parameters. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortPerformanceCnt A pointer to a structure of performance + counters parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetPerformanceCountersParams(t_Handle h_FmPort, t_FmPortPerformanceCnt *p_FmPortPerformanceCnt); + +/**************************************************************************//** + @Function FM_PORT_AnalyzePerformanceParams + + @Description User may call this routine to so the driver will analyze if the + basic performance parameters are correct and also the driver may + suggest of improvments; The basic parameters are FIFO sizes, number + of DMAs and number of TNUMs for the port. + + May be used for all port types + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_AnalyzePerformanceParams(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetNumOfOpenDmas + + @Description Calling this routine updates the number of open DMA requested for + this port. + + + May be used for all port types. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_NumOfOpenDmas A structure of resource requested parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetNumOfOpenDmas(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfOpenDmas); + +/**************************************************************************//** + @Function FM_PORT_SetNumOfTasks + + @Description Calling this routine updates the number of tasks requested for + this port. + + May be used for all port types. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_NumOfTasks A structure of resource requested parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetNumOfTasks(t_Handle h_FmPort, t_FmPortRsrc *p_NumOfTasks); + +/**************************************************************************//** + @Function FM_PORT_SetSizeOfFifo + + @Description Calling this routine updates the Fifo size resource requested for + this port. + + May be used for all port types - note that only Rx has 'extra' + fifo size. For other ports 'extra' field must be disabled. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_SizeOfFifo A structure of resource requested parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetSizeOfFifo(t_Handle h_FmPort, t_FmPortRsrc *p_SizeOfFifo); + +/**************************************************************************//** + @Function FM_PORT_SetAllocBufCounter + + @Description Calling this routine enables/disables BM pool allocate + buffer counters. + By default, counters are enabled. + + May be used for Rx ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] poolId BM pool id. + @Param[in] enable TRUE to enable, FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, bool enable); + +/**************************************************************************//** + @Function FM_PORT_GetCounter + + @Description Reads one of the FM PORT counters. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fmPortCounter The requested counter. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PORT_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_PORT_GetCounter(t_Handle h_FmPort, e_FmPortCounters fmPortCounter); + +/**************************************************************************//** + @Function FM_PORT_ModifyCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] fmPortCounter The requested counter. + @Param[in] value The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ModifyCounter(t_Handle h_FmPort, e_FmPortCounters fmPortCounter, uint32_t value); + +/**************************************************************************//** + @Function FM_PORT_GetAllocBufCounter + + @Description Reads one of the FM PORT buffer counters. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] poolId The requested pool. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PORT_Init(). + Note that it is user's responsibility to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +uint32_t FM_PORT_GetAllocBufCounter(t_Handle h_FmPort, uint8_t poolId); + +/**************************************************************************//** + @Function FM_PORT_ModifyAllocBufCounter + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] poolId The requested pool. + @Param[in] value The requested value to be written into the counter. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ModifyAllocBufCounter(t_Handle h_FmPort, uint8_t poolId, uint32_t value); + +/**************************************************************************//** + @Function FM_PORT_AddCongestionGrps + + @Description This routine effects the corresponding Tx port. + It should be called in order to enable pause + frame transmission in case of congestion in one or more + of the congestion groups relevant to this port. + Each call to this routine may add one or more congestion + groups to be considered relevant to this port. + + May be used for Rx, or RX+OP ports only (depending on chip) + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_CongestionGrps A pointer to an array of congestion groups + id's to consider. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_AddCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps); + +/**************************************************************************//** + @Function FM_PORT_RemoveCongestionGrps + + @Description This routine effects the corresponding Tx port. It should be + called when congestion groups were + defined for this port and are no longer relevant, or pause + frames transmitting is not required on their behalf. + Each call to this routine may remove one or more congestion + groups to be considered relevant to this port. + + May be used for Rx, or RX+OP ports only (depending on chip) + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_CongestionGrps A pointer to an array of congestion groups + id's to consider. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_RemoveCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps); + +/**************************************************************************//** + @Function FM_PORT_IsStalled + + @Description A routine for checking whether the specified port is stalled. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return TRUE if port is stalled, FALSE otherwize + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +bool FM_PORT_IsStalled(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_ReleaseStalled + + @Description This routine may be called in case the port was stalled and may + now be released. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_ReleaseStalled(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_SetRxL4ChecksumVerify + + @Description This routine is relevant for Rx ports (1G and 10G). The routine + set/clear the L3/L4 checksum verification (on RX side). + Note that this takes affect only if hw-parser is enabled! + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] l4Checksum boolean indicates whether to do L3/L4 checksum + on frames or not. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetRxL4ChecksumVerify(t_Handle h_FmPort, bool l4Checksum); + +/**************************************************************************//** + @Function FM_PORT_SetErrorsRoute + + @Description Errors selected for this routine will cause a frame with that error + to be enqueued to error queue. + Errors not selected for this routine will cause a frame with that error + to be enqueued to the one of the other port queues. + By default all errors are defined to be enqueued to error queue. + Errors that were configured to be discarded (at initialization) + may not be selected here. + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] errs A list of errors to enqueue to error queue + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetErrorsRoute(t_Handle h_FmPort, fmPortFrameErrSelect_t errs); + +/**************************************************************************//** + @Function FM_PORT_SetIMExceptions + + @Description Calling this routine enables/disables FM PORT interrupts. + Note: Not available for guest partition. + + @Param[in] h_FmPort FM PORT module descriptor. + @Param[in] exception The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetIMExceptions(t_Handle h_FmPort, e_FmPortExceptions exception, bool enable); + + + +/**************************************************************************//** + @Group FM_PORT_pcd_runtime_control_grp FM Port PCD Runtime Control Unit + + @Description FM Port PCD Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure defining the KG scheme after the parser. + This is relevant only to change scheme selection mode - from + direct to indirect and vice versa, or when the scheme is selected directly, + to select the scheme id. + +*//***************************************************************************/ +typedef struct t_FmPcdKgSchemeSelect { + bool direct; /**< TRUE to use 'h_Scheme' directly, FALSE to use LCV.*/ + t_Handle h_DirectScheme; /**< Relevant for 'direct'=TRUE only. + 'h_DirectScheme' selects the scheme after parser. */ +} t_FmPcdKgSchemeSelect; + +/**************************************************************************//** + @Description A structure of scheme parameters +*//***************************************************************************/ +typedef struct t_FmPcdPortSchemesParams { + uint8_t numOfSchemes; /**< Number of schemes for port to be bound to. */ + t_Handle h_Schemes[FM_PCD_KG_NUM_OF_SCHEMES]; /**< Array of 'numOfSchemes' schemes for the + port to be bound to */ +} t_FmPcdPortSchemesParams; + +/**************************************************************************//** + @Description Union for defining port protocol parameters for parser +*//***************************************************************************/ +typedef union u_FmPcdHdrPrsOpts { + /* MPLS */ + struct { + bool labelInterpretationEnable; /**< When this bit is set, the last MPLS label will be + interpreted as described in HW spec table. When the bit + is cleared, the parser will advance to MPLS next parse */ + e_NetHeaderType nextParse; /**< must be equal or higher than IPv4 */ + } mplsPrsOptions; + /* VLAN */ + struct { + uint16_t tagProtocolId1; /**< User defined Tag Protocol Identifier, to be recognized + on VLAN TAG on top of 0x8100 and 0x88A8 */ + uint16_t tagProtocolId2; /**< User defined Tag Protocol Identifier, to be recognized + on VLAN TAG on top of 0x8100 and 0x88A8 */ + } vlanPrsOptions; + /* PPP */ + struct{ + bool enableMTUCheck; /**< Check validity of MTU according to RFC2516 */ + } pppoePrsOptions; + + /* IPV6 */ + struct{ + bool routingHdrDisable; /**< Disable routing header */ + } ipv6PrsOptions; + + /* UDP */ + struct{ + bool padIgnoreChecksum; /**< TRUE to ignore pad in checksum */ + } udpPrsOptions; + + /* TCP */ + struct { + bool padIgnoreChecksum; /**< TRUE to ignore pad in checksum */ + } tcpPrsOptions; +} u_FmPcdHdrPrsOpts; + +/**************************************************************************//** + @Description A structure for defining each header for the parser +*//***************************************************************************/ +typedef struct t_FmPcdPrsAdditionalHdrParams { + e_NetHeaderType hdr; /**< Selected header */ + bool errDisable; /**< TRUE to disable error indication */ + bool swPrsEnable; /**< Enable jump to SW parser when this + header is recognized by the HW parser. */ + uint8_t indexPerHdr; /**< Normally 0, if more than one sw parser + attachments exists for the same header, + (in the main sw parser code) use this + index to distinguish between them. */ + bool usePrsOpts; /**< TRUE to use parser options. */ + u_FmPcdHdrPrsOpts prsOpts; /**< A union according to header type, + defining the parser options selected.*/ +} t_FmPcdPrsAdditionalHdrParams; + +/**************************************************************************//** + @Description struct for defining port PCD parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdPrsParams { + uint8_t prsResultPrivateInfo; /**< The private info provides a method of inserting + port information into the parser result. This information + may be extracted by Keygen and be used for frames + distribution when a per-port distinction is required, + it may also be used as a port logical id for analyzing + incoming frames. */ + uint8_t parsingOffset; /**< Number of bytes from beginning of packet to start parsing */ + e_NetHeaderType firstPrsHdr; /**< The type of the first header expected at 'parsingOffset' */ + bool includeInPrsStatistics; /**< TRUE to include this port in the parser statistics; + NOTE: this field is not valid when the FN is in "guest" mode. */ + uint8_t numOfHdrsWithAdditionalParams; /**< Normally 0, some headers may get + special parameters */ + t_FmPcdPrsAdditionalHdrParams additionalParams[FM_PCD_PRS_NUM_OF_HDRS]; + /**< 'numOfHdrsWithAdditionalParams' structures + of additional parameters + for each header that requires them */ + bool setVlanTpid1; /**< TRUE to configure user selection of Ethertype to + indicate a VLAN tag (in addition to the TPID values + 0x8100 and 0x88A8). */ + uint16_t vlanTpid1; /**< extra tag to use if setVlanTpid1=TRUE. */ + bool setVlanTpid2; /**< TRUE to configure user selection of Ethertype to + indicate a VLAN tag (in addition to the TPID values + 0x8100 and 0x88A8). */ + uint16_t vlanTpid2; /**< extra tag to use if setVlanTpid1=TRUE. */ +} t_FmPortPcdPrsParams; + +/**************************************************************************//** + @Description struct for defining coarse alassification parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdCcParams { + t_Handle h_CcTree; /**< A handle to a CC tree */ +} t_FmPortPcdCcParams; + +/**************************************************************************//** + @Description struct for defining keygen parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdKgParams { + uint8_t numOfSchemes; /**< Number of schemes for port to be bound to. */ + t_Handle h_Schemes[FM_PCD_KG_NUM_OF_SCHEMES]; + /**< Array of 'numOfSchemes' schemes handles for the + port to be bound to */ + bool directScheme; /**< TRUE for going from parser to a specific scheme, + regardless of parser result */ + t_Handle h_DirectScheme; /**< relevant only if direct == TRUE, Scheme handle, + as returned by FM_PCD_KgSetScheme */ +} t_FmPortPcdKgParams; + +/**************************************************************************//** + @Description struct for defining policer parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdPlcrParams { + t_Handle h_Profile; /**< Selected profile handle; Relevant for one of + following cases: + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY or + e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR were selected, + or if any flow uses a KG scheme were policer + profile is not generated + (bypassPlcrProfileGeneration selected) */ +} t_FmPortPcdPlcrParams; + +/**************************************************************************//** + @Description struct for defining port PCD parameters +*//***************************************************************************/ +typedef struct t_FmPortPcdParams { + e_FmPortPcdSupport pcdSupport; /**< Relevant for Rx and offline ports only. + Describes the active PCD engines for this port. */ + t_Handle h_NetEnv; /**< HL Unused in PLCR only mode */ + t_FmPortPcdPrsParams *p_PrsParams; /**< Parser parameters for this port */ + t_FmPortPcdCcParams *p_CcParams; /**< Coarse classification parameters for this port */ + t_FmPortPcdKgParams *p_KgParams; /**< Keygen parameters for this port */ + t_FmPortPcdPlcrParams *p_PlcrParams; /**< Policer parameters for this port */ +} t_FmPortPcdParams; + +/**************************************************************************//** + @Description A structure for defining the Parser starting point +*//***************************************************************************/ +typedef struct t_FmPcdPrsStart { + uint8_t parsingOffset; /**< Number of bytes from beginning of packet to + start parsing */ + e_NetHeaderType firstPrsHdr; /**< The type of the first header axpected at + 'parsingOffset' */ +} t_FmPcdPrsStart; + + +/**************************************************************************//** + @Function FM_PORT_SetPCD + + @Description Calling this routine defines the port's PCD configuration. + It changes it from its default configuration which is PCD + disabled (BMI to BMI) and configures it according to the passed + parameters. + + May be used for Rx and offline parsing ports only + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPortPcd A Structure of parameters defining the port's PCD + configuration. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_SetPCD(t_Handle h_FmPort, t_FmPortPcdParams *p_FmPortPcd); + +/**************************************************************************//** + @Function FM_PORT_DeletePCD + + @Description Calling this routine releases the port's PCD configuration. + The port returns to its default configuration which is PCD + disabled (BMI to BMI) and all PCD configuration is removed. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_DeletePCD(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_AttachPCD + + @Description This routine may be called after FM_PORT_DetachPCD was called, + to return to the originally configured PCD support flow. + The couple of routines are used to allow PCD configuration changes + that demand that PCD will not be used while changes take place. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +t_Error FM_PORT_AttachPCD(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_DetachPCD + + @Description Calling this routine detaches the port from its PCD functionality. + The port returns to its default flow which is BMI to BMI. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_AttachPCD(). +*//***************************************************************************/ +t_Error FM_PORT_DetachPCD(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_PcdPlcrAllocProfiles + + @Description This routine may be called only for ports that use the Policer in + order to allocate private policer profiles. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] numOfProfiles The number of required policer profiles + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PCD_Init(), and before FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPlcrAllocProfiles(t_Handle h_FmPort, uint16_t numOfProfiles); + +/**************************************************************************//** + @Function FM_PORT_PcdPlcrFreeProfiles + + @Description This routine should be called for freeing private policer profiles. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PCD_Init(), and before FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPlcrFreeProfiles(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_PcdKgModifyInitialScheme + + @Description This routine may be called only for ports that use the keygen in + order to change the initial scheme frame should be routed to. + The change may be of a scheme id (in case of direct mode), + from direct to indirect, or from indirect to direct - specifying the scheme id. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPcdKgScheme A structure of parameters for defining whether + a scheme is direct/indirect, and if direct - scheme id. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdKgModifyInitialScheme (t_Handle h_FmPort, t_FmPcdKgSchemeSelect *p_FmPcdKgScheme); + +/**************************************************************************//** + @Function FM_PORT_PcdPlcrModifyInitialProfile + + @Description This routine may be called for ports with flows + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY or e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR + only, to change the initial Policer profile frame should be + routed to. The change may be of a profile and/or absolute/direct + mode selection. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] h_Profile Policer profile handle + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPlcrModifyInitialProfile (t_Handle h_FmPort, t_Handle h_Profile); + +/**************************************************************************//** + @Function FM_PORT_PcdCcModifyTree + + @Description This routine may be called for ports that use coarse classification tree + if the user wishes to replace the tree. The routine may not be called while port + receives packets using the PCD functionalities, therefor port must be first detached + from the PCD, only than the routine may be called, and than port be attached to PCD again. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] h_CcTree A CC tree that was already built. The tree id as returned from + the BuildTree routine. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(), FM_PORT_SetPCD() and FM_PORT_DetachPCD() +*//***************************************************************************/ +t_Error FM_PORT_PcdCcModifyTree (t_Handle h_FmPort, t_Handle h_CcTree); + +/**************************************************************************//** + @Function FM_PORT_PcdKgBindSchemes + + @Description These routines may be called for adding more schemes for the + port to be bound to. The selected schemes are not added, + just this specific port starts using them. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_PortScheme A structure defining the list of schemes to be added. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdKgBindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme); + +/**************************************************************************//** + @Function FM_PORT_PcdKgUnbindSchemes + + @Description These routines may be called for adding more schemes for the + port to be bound to. The selected schemes are not removed or invalidated, + just this specific port stops using them. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_PortScheme A structure defining the list of schemes to be added. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PORT_SetPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdKgUnbindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *p_PortScheme); + +/**************************************************************************//** + @Function FM_PORT_PcdPrsModifyStartOffset + + @Description Runtime change of the parser start offset within the header. + The routine may not be called while port + receives packets using the PCD functionalities, therefore port must be first detached + from the PCD, only than the routine may be called, and than port be attached to PCD again. + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_FmPcdPrsStart A structure of parameters for defining the + start point for the parser. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(), FM_PORT_SetPCD() and FM_PORT_DetatchPCD(). +*//***************************************************************************/ +t_Error FM_PORT_PcdPrsModifyStartOffset (t_Handle h_FmPort, t_FmPcdPrsStart *p_FmPcdPrsStart); + +/** @} */ /* end of FM_PORT_pcd_runtime_control_grp group */ +/** @} */ /* end of FM_PORT_runtime_control_grp group */ + + +/**************************************************************************//** + @Group FM_PORT_runtime_data_grp FM Port Runtime Data-path Unit + + @Description FM Port Runtime data unit API functions, definitions and enums. + This API is valid only if working in Independent-Mode. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_PORT_ImTx + + @Description Tx function, called to transmit a data buffer on the port. + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[in] p_Data A pointer to an LCP data buffer. + @Param[in] length Size of data for transmission. + @Param[in] lastBuffer Buffer position - TRUE for the last buffer + of a frame, including a single buffer frame + @Param[in] h_BufContext A handle of the user acossiated with this buffer + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + NOTE - This routine can be used only when working in + Independent-Mode mode. +*//***************************************************************************/ +t_Error FM_PORT_ImTx( t_Handle h_FmPort, + uint8_t *p_Data, + uint16_t length, + bool lastBuffer, + t_Handle h_BufContext); + +/**************************************************************************//** + @Function FM_PORT_ImTxConf + + @Description Tx port confirmation routine, optional, may be called to verify + transmission of all frames. The procedure performed by this + routine will be performed automatically on next buffer transmission, + but if desired, calling this routine will invoke this action on + demand. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Cautions Allowed only following FM_PORT_Init(). + NOTE - This routine can be used only when working in + Independent-Mode mode. +*//***************************************************************************/ +void FM_PORT_ImTxConf(t_Handle h_FmPort); + +/**************************************************************************//** + @Function FM_PORT_ImRx + + @Description Rx function, may be called to poll for received buffers. + Normally, Rx process is invoked by the driver on Rx interrupt. + Alternatively, this routine may be called on demand. + + @Param[in] h_FmPort A handle to a FM Port module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + NOTE - This routine can be used only when working in + Independent-Mode mode. +*//***************************************************************************/ +t_Error FM_PORT_ImRx(t_Handle h_FmPort); + +/** @} */ /* end of FM_PORT_runtime_data_grp group */ +/** @} */ /* end of FM_PORT_grp group */ +/** @} */ /* end of FM_grp group */ + + + + +#endif /* __FM_PORT_EXT */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_mac_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/fm_mac_ext.h @@ -0,0 +1,713 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_mac_ext.h + + @Description FM MAC ... +*//***************************************************************************/ +#ifndef __FM_MAC_EXT_H +#define __FM_MAC_EXT_H + +#include "std_ext.h" +#include "enet_ext.h" + + +/**************************************************************************//** + + @Group FM_grp Frame Manager API + + @Description FM API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group FM_mac_grp FM MAC + + @Description FM MAC API functions, definitions and enums + + @{ +*//***************************************************************************/ + + +/**************************************************************************//** + @Description FM MAC Exceptions +*//***************************************************************************/ +typedef enum e_FmMacExceptions { + e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO = 0 + ,e_FM_MAC_EX_10G_MDIO_CMD_CMPL + ,e_FM_MAC_EX_10G_REM_FAULT + ,e_FM_MAC_EX_10G_LOC_FAULT + ,e_FM_MAC_EX_10G_1TX_ECC_ER + ,e_FM_MAC_EX_10G_TX_FIFO_UNFL + ,e_FM_MAC_EX_10G_TX_FIFO_OVFL + ,e_FM_MAC_EX_10G_TX_ER + ,e_FM_MAC_EX_10G_RX_FIFO_OVFL + ,e_FM_MAC_EX_10G_RX_ECC_ER + ,e_FM_MAC_EX_10G_RX_JAB_FRM + ,e_FM_MAC_EX_10G_RX_OVRSZ_FRM + ,e_FM_MAC_EX_10G_RX_RUNT_FRM + ,e_FM_MAC_EX_10G_RX_FRAG_FRM + ,e_FM_MAC_EX_10G_RX_LEN_ER + ,e_FM_MAC_EX_10G_RX_CRC_ER + ,e_FM_MAC_EX_10G_RX_ALIGN_ER + ,e_FM_MAC_EX_1G_BAB_RX + ,e_FM_MAC_EX_1G_RX_CTL + ,e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET + ,e_FM_MAC_EX_1G_BAB_TX + ,e_FM_MAC_EX_1G_TX_CTL + ,e_FM_MAC_EX_1G_TX_ERR + ,e_FM_MAC_EX_1G_LATE_COL + ,e_FM_MAC_EX_1G_COL_RET_LMT + ,e_FM_MAC_EX_1G_TX_FIFO_UNDRN + ,e_FM_MAC_EX_1G_MAG_PCKT + ,e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET + ,e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET + ,e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET + ,e_FM_MAC_EX_1G_TX_DATA_ERR + ,e_FM_MAC_EX_1G_RX_DATA_ERR + ,e_FM_MAC_EX_1G_1588_TS_RX_ERR + ,e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL +} e_FmMacExceptions; + +/**************************************************************************//** + @Description TM MAC statistics level +*//***************************************************************************/ +typedef enum e_FmMacStatisticsLevel { + e_FM_MAC_NONE_STATISTICS = 0, /**< No statistics */ + e_FM_MAC_PARTIAL_STATISTICS, /**< Only error counters are available. Optimized for performance */ + e_FM_MAC_FULL_STATISTICS /**< All counters available. Not optimized for performance */ +} e_FmMacStatisticsLevel; + + +/**************************************************************************//** + @Function t_FmMacExceptionCallback + + @Description Fm Mac Exception Callback from FM MAC to the user + + @Param[in] h_App - Handle to the upper layer handler + + @Param[in] exceptions - The exception that occurred + + + @Return void. +*//***************************************************************************/ +typedef void (t_FmMacExceptionCallback)(t_Handle h_App, e_FmMacExceptions exceptions); + + +/**************************************************************************//** + @Description TM MAC statistics rfc3635 +*//***************************************************************************/ +typedef struct t_FmMacStatistics { +/* RMON */ + uint64_t eStatPkts64; /**< r-10G tr-DT 64 byte frame counter */ + uint64_t eStatPkts65to127; /**< r-10G 65 to 127 byte frame counter */ + uint64_t eStatPkts128to255; /**< r-10G 128 to 255 byte frame counter */ + uint64_t eStatPkts256to511; /**< r-10G 256 to 511 byte frame counter */ + uint64_t eStatPkts512to1023; /**< r-10G 512 to 1023 byte frame counter */ + uint64_t eStatPkts1024to1518; /**< r-10G 1024 to 1518 byte frame counter */ + uint64_t eStatPkts1519to1522; /**< r-10G 1519 to 1522 byte good frame count */ +/* */ + uint64_t eStatFragments; /**< Total number of packets that were less than 64 octets long with a wrong CRC.*/ + uint64_t eStatJabbers; /**< Total number of packets longer than valid maximum length octets */ + uint64_t eStatsDropEvents; /**< number of dropped packets due to internal errors of the MAC Client. */ + uint64_t eStatCRCAlignErrors; /**< Incremented when frames of correct length but with CRC error are received.*/ + uint64_t eStatUndersizePkts; /**< Total number of packets that were less than 64 octets long with a good CRC.*/ + uint64_t eStatOversizePkts; /**< T,B.D*/ +/* Pause */ + uint64_t teStatPause; /**< Pause MAC Control received */ + uint64_t reStatPause; /**< Pause MAC Control sent */ + +/* MIB II */ + uint64_t ifInOctets; /**< Total number of byte received. */ + uint64_t ifInPkts; /**< Total number of packets received.*/ + uint64_t ifInMcastPkts; /**< Total number of multicast frame received*/ + uint64_t ifInBcastPkts; /**< Total number of broadcast frame received */ + uint64_t ifInDiscards; /**< Frames received, but discarded due to problems within the MAC RX. */ + uint64_t ifInErrors; /**< Number of frames received with error: + - FIFO Overflow Error + - CRC Error + - Frame Too Long Error + - Alignment Error + - The dedicated Error Code (0xfe, not a code error) was received */ + uint64_t ifOutOctets; /**< Total number of byte sent. */ + uint64_t ifOutPkts; /**< Total number of packets sent .*/ + uint64_t ifOutMcastPkts; /**< Total number of multicast frame sent */ + uint64_t ifOutBcastPkts; /**< Total number of multicast frame sent */ + uint64_t ifOutDiscards; /**< Frames received, but discarded due to problems within the MAC TX N/A!.*/ + uint64_t ifOutErrors; /**< Number of frames transmitted with error: + - FIFO Overflow Error + - FIFO Underflow Error + - Other */ +} t_FmMacStatistics; + + +/**************************************************************************//** + @Group FM_mac_init_grp Initialization Unit + + @Description FM MAC Initialization Unit + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description FM MAC config input +*//***************************************************************************/ +typedef struct t_FmMacParams { + uintptr_t baseAddr; /**< Base of memory mapped FM MAC registers */ + t_EnetAddr addr; /**< MAC address of device; First octet is sent first */ + uint8_t macId; /**< MAC ID <10G 0> */ + e_EnetMode enetMode; /**< Ethernet operation mode (MAC-PHY interface and speed) */ + t_Handle h_Fm; /**< A handle to the FM object this port related to */ + int mdioIrq; /**< MDIO exceptions interrupt source - not valid for all + MACs; MUST be set to 'NO_IRQ' for MACs that don't have + mdio-irq, or for polling */ + t_FmMacExceptionCallback *f_Event; /**< MDIO Events Callback Routine */ + t_FmMacExceptionCallback *f_Exception; /**< Exception Callback Routine */ + t_Handle h_App; /**< A handle to an application layer object; This handle will + be passed by the driver upon calling the above callbacks */ +} t_FmMacParams; + + +/**************************************************************************//** + @Function FM_MAC_Config + + @Description Creates descriptor for the FM MAC module. + + The routine returns a handle (descriptor) to the FM MAC object. + This descriptor must be passed as first parameter to all other + FM MAC function calls. + + No actual initialization or configuration of FM MAC hardware is + done by this routine. + + @Param[in] p_FmMacParam - Pointer to data structure of parameters + + @Retval Handle to FM MAC object, or NULL for Failure. +*//***************************************************************************/ +t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam); + +/**************************************************************************//** + @Function FM_MAC_Init + + @Description Initializes the FM MAC module + + @Param[in] h_FmMac - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MAC_Init (t_Handle h_FmMac); + +/**************************************************************************//** + @Function FM_Free + + @Description Frees all resources that were assigned to FM MAC module. + + Calling this routine invalidates the descriptor. + + @Param[in] h_FmMac - FM module descriptor + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MAC_Free (t_Handle h_FmMac); + + +/**************************************************************************//** + @Group FM_mac_advanced_init_grp Advanced Configuration Unit + + @Description Configuration functions used to change default values. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MAC_ConfigResetOnInit + + @Description Tell the driver whether to reset the FM MAC before initialization or + not. It changes the default configuration [FALSE]. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable When TRUE, FM will be reset before any initialization. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigLoopback + + @Description Enable/Disable internal loopback mode + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigMaxFrameLength + + @Description Setup maximum Frame Length + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] newVal MAX Frame length + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal); + +/**************************************************************************//** + @Function FM_MAC_ConfigWan + + @Description ENABLE WAN mode in 10G MAC + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigPadAndCrc + + @Description Config PAD and CRC mode + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigHalfDuplex + + @Description Config Half Duplex Mode + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigLengthCheck + + @Description Configure thef frame length checking. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] enable TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_ConfigException + + @Description Change Exception selection from default + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] ex Type of the desired exceptions + @Param[in] enable TRUE to enable the specified exception, FALSE to disable it. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Config() and before FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ConfigException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable); + +#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac); +#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ +/** @} */ /* end of FM_mac_advanced_init_grp group */ +/** @} */ /* end of FM_mac_init_grp group */ + + +/**************************************************************************//** + @Group FM_mac_runtime_control_grp Runtime Control Unit + + @Description FM MAC Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function FM_MAC_Enable + + @Description Enable the MAC + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] mode Mode of operation (RX, TX, Both) + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode); + +/**************************************************************************//** + @Function FM_MAC_Disable + + @Description DISABLE the MAC + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] mode Define what part to Disable (RX, TX or BOTH) + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode); + +/**************************************************************************//** + @Function FM_MAC_Enable1588TimeStamp + + @Description Enables the TSU operation. + + @Param[in] h_Fm - Handle to the PTP as returned from the FM_MAC_PtpConfig. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Enable1588TimeStamp(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_MAC_Disable1588TimeStamp + + @Description Disables the TSU operation. + + @Param[in] h_Fm - Handle to the PTP as returned from the FM_MAC_PtpConfig. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_Disable1588TimeStamp(t_Handle h_Fm); + +/**************************************************************************//** + @Function FM_MAC_SetTxAutoPauseFrames + + @Description Enable/Disable transmition of Pause-Frames. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] pauseTime Pause quanta value used with transmitted pause frames. + Each quanta represents a 512 bit-times; Note that '0' + as an input here will be used as disabling the + transmission of the pause-frames. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime); + +/**************************************************************************//** + @Function FM_MAC_SetRxIgnorePauseFrames + + @Description Enable/Disable ignoring of Pause-Frames. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] en boolean indicates whether to ignore the incoming pause + frames or not. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en); + +/**************************************************************************//** + @Function FM_MAC_ResetCounters + + @Description reset all statistics counters + + @Param[in] h_FmMac A handle to a FM MAC Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ResetCounters (t_Handle h_FmMac); + +/**************************************************************************//** + @Function FM_MAC_SetException + + @Description Enable/Disable a specific Exception + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] ex Type of the desired exceptions + @Param[in] enable TRUE to enable the specified exception, FALSE to disable it. + + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable); + +/**************************************************************************//** + @Function FM_MAC_SetStatistics + + @Description Define Statistics level. + Where applicable, the routine also enables the MIB counters + overflow interrupt in order to keep counters accurate + and account for overflows. + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] statisticsLevel Full statistics level provides all standard counters but may + reduce performance. Partial statistics provides only special + event counters (errors etc.). If selected, regular counters (such as + byte/packet) will be invalid and will return -1. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel); + +/**************************************************************************//** + @Function FM_MAC_GetStatistics + + @Description get all statistics counters + + @Param[in] h_FmMac A handle to a FM MAC Module. + @Param[in] p_Statistics Staructure with statistics + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics); + +/**************************************************************************//** + @Function FM_MAC_ModifyMacAddr + + @Description Replace the main MAC Address + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - Ethernet Mac address + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_AddHashMacAddr + + @Description Add an Address to the hash table. This is for filter purpose only. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - Ethernet Mac address + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). It is a filter only address. + @Cautions Some address need to be filterd out in upper FM blocks. +*//***************************************************************************/ +t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_RemoveHashMacAddr + + @Description Delete an Address to the hash table. This is for filter purpose only. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - Ethernet Mac address + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_AddExactMatchMacAddr + + @Description Add a unicast or multicast mac address for exact-match filtering + (8 on dTSEC, 2 for 10G-MAC) + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - MAC Address to ADD + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_RemovelExactMatchMacAddr + + @Description Remove a uni cast or multi cast mac address. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] p_EnetAddr - MAC Address to remove + + @Return E_OK on success; Error code otherwise.. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr); + +/**************************************************************************//** + @Function FM_MAC_SetPromiscuous + + @Description Enable/Disable MAC Promiscuous mode for ALL mac addresses. + + @Param[in] h_FmMac - A handle to a FM MAC Module. + @Param[in] enable - TRUE to enable or FALSE to disable. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool enable); + +/**************************************************************************//** + @Function FM_MAC_AdjustLink + + @Description Adjusts the Ethernet link with new speed/duplex setup. + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] speed - Ethernet speed. + @Param[in] fullDuplex - TRUE for Full-Duplex mode; + FALSE for Half-Duplex mode. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex); + +/**************************************************************************//** + @Function FM_MAC_GetId + + @Description Return the MAC ID + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[out] p_MacId - MAC ID of device + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *p_MacId); + +/**************************************************************************//** + @Function FM_MAC_GetVesrion + + @Description Return Mac HW chip version + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[out] p_MacVresion - Mac version as defined by the chip + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *p_MacVresion); + +/**************************************************************************//** + @Function FM_MAC_MII_WritePhyReg + + @Description Write data into Phy Register + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] phyAddr - Phy Address on the MII bus + @Param[in] reg - Register Number. + @Param[in] data - Data to write. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data); + +/**************************************************************************//** + @Function FM_MAC_MII_ReadPhyReg + + @Description Read data from Phy Register + + @Param[in] h_FmMac - A handle to a FM Module. + @Param[in] phyAddr - Phy Address on the MII bus + @Param[in] reg - Register Number. + @Param[out] p_Data - Data from PHY. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data); + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) +/**************************************************************************//** + @Function FM_MAC_DumpRegs + + @Description Dump internal registers + + @Param[in] h_FmMac - A handle to a FM Module. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only after FM_MAC_Init(). +*//***************************************************************************/ +t_Error FM_MAC_DumpRegs(t_Handle h_FmMac); +#endif /* (defined(DEBUG_ERRORS) && ... */ + +/** @} */ /* end of FM_mac_runtime_control_grp group */ +/** @} */ /* end of FM_mac_grp group */ +/** @} */ /* end of FM_grp group */ + + + +#endif /* __FM_MAC_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/Peripherals/crc_mac_addr_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/Peripherals/crc_mac_addr_ext.h @@ -0,0 +1,363 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*------------------------------------------------------*/ +/* */ +/* File: crc_mac_addr_ext.h */ +/* */ +/* Description: */ +/* Define a macro that calculate the crc value of */ +/* an Ethernet MAC address (48 bitd address */ +/*------------------------------------------------------*/ + +#ifndef __crc_mac_addr_ext_h +#define __crc_mac_addr_ext_h + +#include "std_ext.h" + + +static uint32_t crc_table[256] = +{ + 0x00000000, + 0x77073096, + 0xee0e612c, + 0x990951ba, + 0x076dc419, + 0x706af48f, + 0xe963a535, + 0x9e6495a3, + 0x0edb8832, + 0x79dcb8a4, + 0xe0d5e91e, + 0x97d2d988, + 0x09b64c2b, + 0x7eb17cbd, + 0xe7b82d07, + 0x90bf1d91, + 0x1db71064, + 0x6ab020f2, + 0xf3b97148, + 0x84be41de, + 0x1adad47d, + 0x6ddde4eb, + 0xf4d4b551, + 0x83d385c7, + 0x136c9856, + 0x646ba8c0, + 0xfd62f97a, + 0x8a65c9ec, + 0x14015c4f, + 0x63066cd9, + 0xfa0f3d63, + 0x8d080df5, + 0x3b6e20c8, + 0x4c69105e, + 0xd56041e4, + 0xa2677172, + 0x3c03e4d1, + 0x4b04d447, + 0xd20d85fd, + 0xa50ab56b, + 0x35b5a8fa, + 0x42b2986c, + 0xdbbbc9d6, + 0xacbcf940, + 0x32d86ce3, + 0x45df5c75, + 0xdcd60dcf, + 0xabd13d59, + 0x26d930ac, + 0x51de003a, + 0xc8d75180, + 0xbfd06116, + 0x21b4f4b5, + 0x56b3c423, + 0xcfba9599, + 0xb8bda50f, + 0x2802b89e, + 0x5f058808, + 0xc60cd9b2, + 0xb10be924, + 0x2f6f7c87, + 0x58684c11, + 0xc1611dab, + 0xb6662d3d, + 0x76dc4190, + 0x01db7106, + 0x98d220bc, + 0xefd5102a, + 0x71b18589, + 0x06b6b51f, + 0x9fbfe4a5, + 0xe8b8d433, + 0x7807c9a2, + 0x0f00f934, + 0x9609a88e, + 0xe10e9818, + 0x7f6a0dbb, + 0x086d3d2d, + 0x91646c97, + 0xe6635c01, + 0x6b6b51f4, + 0x1c6c6162, + 0x856530d8, + 0xf262004e, + 0x6c0695ed, + 0x1b01a57b, + 0x8208f4c1, + 0xf50fc457, + 0x65b0d9c6, + 0x12b7e950, + 0x8bbeb8ea, + 0xfcb9887c, + 0x62dd1ddf, + 0x15da2d49, + 0x8cd37cf3, + 0xfbd44c65, + 0x4db26158, + 0x3ab551ce, + 0xa3bc0074, + 0xd4bb30e2, + 0x4adfa541, + 0x3dd895d7, + 0xa4d1c46d, + 0xd3d6f4fb, + 0x4369e96a, + 0x346ed9fc, + 0xad678846, + 0xda60b8d0, + 0x44042d73, + 0x33031de5, + 0xaa0a4c5f, + 0xdd0d7cc9, + 0x5005713c, + 0x270241aa, + 0xbe0b1010, + 0xc90c2086, + 0x5768b525, + 0x206f85b3, + 0xb966d409, + 0xce61e49f, + 0x5edef90e, + 0x29d9c998, + 0xb0d09822, + 0xc7d7a8b4, + 0x59b33d17, + 0x2eb40d81, + 0xb7bd5c3b, + 0xc0ba6cad, + 0xedb88320, + 0x9abfb3b6, + 0x03b6e20c, + 0x74b1d29a, + 0xead54739, + 0x9dd277af, + 0x04db2615, + 0x73dc1683, + 0xe3630b12, + 0x94643b84, + 0x0d6d6a3e, + 0x7a6a5aa8, + 0xe40ecf0b, + 0x9309ff9d, + 0x0a00ae27, + 0x7d079eb1, + 0xf00f9344, + 0x8708a3d2, + 0x1e01f268, + 0x6906c2fe, + 0xf762575d, + 0x806567cb, + 0x196c3671, + 0x6e6b06e7, + 0xfed41b76, + 0x89d32be0, + 0x10da7a5a, + 0x67dd4acc, + 0xf9b9df6f, + 0x8ebeeff9, + 0x17b7be43, + 0x60b08ed5, + 0xd6d6a3e8, + 0xa1d1937e, + 0x38d8c2c4, + 0x4fdff252, + 0xd1bb67f1, + 0xa6bc5767, + 0x3fb506dd, + 0x48b2364b, + 0xd80d2bda, + 0xaf0a1b4c, + 0x36034af6, + 0x41047a60, + 0xdf60efc3, + 0xa867df55, + 0x316e8eef, + 0x4669be79, + 0xcb61b38c, + 0xbc66831a, + 0x256fd2a0, + 0x5268e236, + 0xcc0c7795, + 0xbb0b4703, + 0x220216b9, + 0x5505262f, + 0xc5ba3bbe, + 0xb2bd0b28, + 0x2bb45a92, + 0x5cb36a04, + 0xc2d7ffa7, + 0xb5d0cf31, + 0x2cd99e8b, + 0x5bdeae1d, + 0x9b64c2b0, + 0xec63f226, + 0x756aa39c, + 0x026d930a, + 0x9c0906a9, + 0xeb0e363f, + 0x72076785, + 0x05005713, + 0x95bf4a82, + 0xe2b87a14, + 0x7bb12bae, + 0x0cb61b38, + 0x92d28e9b, + 0xe5d5be0d, + 0x7cdcefb7, + 0x0bdbdf21, + 0x86d3d2d4, + 0xf1d4e242, + 0x68ddb3f8, + 0x1fda836e, + 0x81be16cd, + 0xf6b9265b, + 0x6fb077e1, + 0x18b74777, + 0x88085ae6, + 0xff0f6a70, + 0x66063bca, + 0x11010b5c, + 0x8f659eff, + 0xf862ae69, + 0x616bffd3, + 0x166ccf45, + 0xa00ae278, + 0xd70dd2ee, + 0x4e048354, + 0x3903b3c2, + 0xa7672661, + 0xd06016f7, + 0x4969474d, + 0x3e6e77db, + 0xaed16a4a, + 0xd9d65adc, + 0x40df0b66, + 0x37d83bf0, + 0xa9bcae53, + 0xdebb9ec5, + 0x47b2cf7f, + 0x30b5ffe9, + 0xbdbdf21c, + 0xcabac28a, + 0x53b39330, + 0x24b4a3a6, + 0xbad03605, + 0xcdd70693, + 0x54de5729, + 0x23d967bf, + 0xb3667a2e, + 0xc4614ab8, + 0x5d681b02, + 0x2a6f2b94, + 0xb40bbe37, + 0xc30c8ea1, + 0x5a05df1b, + 0x2d02ef8d +}; + + +#define GET_MAC_ADDR_CRC(addr, crc) \ +{ \ + uint32_t i; \ + uint8_t data; \ + \ + /* CRC calculation */ \ + crc = 0xffffffff; \ + for (i=0; i < 6; i++) \ + { \ + data = (uint8_t)(addr >> ((5-i)*8)); \ + crc = crc^data; \ + crc = crc_table[crc&0xff] ^ (crc>>8); \ + } \ +} \ + +/* Define a macro for getting the mirrored value of */ +/* a byte size number. (0x11010011 --> 0x11001011) */ +/* Sometimes the mirrored value of the CRC is required */ +static __inline__ uint8_t GetMirror(uint8_t n) +{ + uint8_t mirror[16] = + { + 0x00, + 0x08, + 0x04, + 0x0c, + 0x02, + 0x0a, + 0x06, + 0x0e, + 0x01, + 0x09, + 0x05, + 0x0d, + 0x03, + 0x0b, + 0x07, + 0x0f + }; + return ((uint8_t)(((mirror[n & 0x0f] << 4) | (mirror[n >> 4])))); +} + +static __inline__ uint32_t GetMirror32(uint32_t n) +{ + return (((uint32_t)GetMirror((uint8_t)(n))<<24) | + ((uint32_t)GetMirror((uint8_t)(n>>8))<<16) | + ((uint32_t)GetMirror((uint8_t)(n>>16))<<8) | + ((uint32_t)GetMirror((uint8_t)(n>>24)))); +} + +#define MIRROR GetMirror +#define MIRROR_32 GetMirror32 + + +#endif /* __crc_mac_addr_ext_h */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/cores/e500v2_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/cores/e500v2_ext.h @@ -0,0 +1,413 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File e500v2_ext.h + + @Description E500 external definitions prototypes + This file is not included by the E500 + source file as it is an assembly file. It is used + only for prototypes exposure, for inclusion + by user and other modules. +*//***************************************************************************/ + +#ifndef __E500V2_EXT_H +#define __E500V2_EXT_H + +#include "std_ext.h" + + +/* Layer 1 Cache Manipulations + *============================== + * Should not be called directly by the user. + */ +void L1DCache_Invalidate (void); +void L1ICache_Invalidate(void); +void L1DCache_Enable(void); +void L1ICache_Enable(void); +void L1DCache_Disable(void); +void L1ICache_Disable(void); +void L1DCache_Flush(void); +void L1ICache_Flush(void); +/* + * + */ +uint32_t L1DCache_LineLock(uint32_t addr); +uint32_t L1ICache_LineLock(uint32_t addr); +void L1Cache_BroadCastEnable(void); +void L1Cache_BroadCastDisable(void); + + +#define CORE_DCacheEnable E500_DCacheEnable +#define CORE_ICacheEnable E500_ICacheEnable +#define CORE_DCacheDisable E500_DCacheDisable +#define CORE_ICacheDisable E500_ICacheDisable +#define CORE_GetId E500_GetId +#define CORE_TestAndSet E500_TestAndSet +#define CORE_MemoryBarrier E500_MemoryBarrier +#define CORE_InstructionSync E500_InstructionSync + +#define CORE_SetDozeMode E500_SetDozeMode +#define CORE_SetNapMode E500_SetNapMode +#define CORE_SetSleepMode E500_SetSleepMode +#define CORE_SetJogMode E500_SetJogMode +#define CORE_SetDeepSleepMode E500_SetDeepSleepMode + +#define CORE_RecoverDozeMode E500_RecoverDozeMode +#define CORE_RecoverNapMode E500_RecoverNapMode +#define CORE_RecoverSleepMode E500_RecoverSleepMode +#define CORE_RecoverJogMode E500_RecoverJogMode + +void E500_SetDozeMode(void); +void E500_SetNapMode(void); +void E500_SetSleepMode(void); +void E500_SetJogMode(void); +t_Error E500_SetDeepSleepMode(uint32_t bptrAddress); + +void E500_RecoverDozeMode(void); +void E500_RecoverNapMode(void); +void E500_RecoverSleepMode(void); +void E500_RecoverJogMode(void); + + +/**************************************************************************//** + @Group E500_id E500 Application Programming Interface + + @Description E500 API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group E500_init_grp E500 Initialization Unit + + @Description E500 initialization unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + + +/**************************************************************************//** + @Function E500_DCacheEnable + + @Description Enables the data cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void E500_DCacheEnable(void); + +/**************************************************************************//** + @Function E500_ICacheEnable + + @Description Enables the instruction cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void E500_ICacheEnable(void); + +/**************************************************************************//** + @Function E500_DCacheDisable + + @Description Disables the data cache. + + @Return None. +*//***************************************************************************/ +void E500_DCacheDisable(void); + +/**************************************************************************//** + @Function E500_ICacheDisable + + @Description Disables the instruction cache. + + @Return None. +*//***************************************************************************/ +void E500_ICacheDisable(void); + +/**************************************************************************//** + @Function E500_DCacheFlush + + @Description Flushes the data cache + + @Return None. +*//***************************************************************************/ +void E500_DCacheFlush(void); + +/**************************************************************************//** + @Function E500_ICacheFlush + + @Description Flushes the instruction cache. + + @Return None. +*//***************************************************************************/ +void E500_ICacheFlush(void); + +/**************************************************************************//** + @Function E500_DCacheSetStashId + + @Description Set Stash Id for data cache + + @Param[in] stashId the stash id to be set. + + @Return None. +*//***************************************************************************/ +void E500_DCacheSetStashId(uint8_t stashId); + +/**************************************************************************//** + @Description E500mc L2 Cache Operation Mode +*//***************************************************************************/ +typedef enum e_E500mcL2CacheMode +{ + e_L2_CACHE_MODE_DATA_ONLY = 0x00000001, /**< Cache data only */ + e_L2_CACHE_MODE_INST_ONLY = 0x00000002, /**< Cache instructions only */ + e_L2_CACHE_MODE_DATA_AND_INST = 0x00000003 /**< Cache data and instructions */ +} e_E500mcL2CacheMode; + +/**************************************************************************//** + @Function E500_L2CacheEnable + + @Description Enables the cache for memory pages that are not cache inhibited. + + @param[in] mode - L2 cache mode: data only, instruction only or instruction and data. + + @Return None. + + @Cautions This routine must be call only ONCE for both caches. I.e. it is + not possible to call this routine for i-cache and than to call + again for d-cache; The second call will override the first one. +*//***************************************************************************/ +void E500_L2CacheEnable(e_E500mcL2CacheMode mode); + +/**************************************************************************//** + @Function E500_L2CacheDisable + + @Description Disables the cache (data instruction or both). + + @Return None. + +*//***************************************************************************/ +void E500_L2CacheDisable(void); + +/**************************************************************************//** + @Function E500_L2CacheFlush + + @Description Flushes the cache. + + @Return None. +*//***************************************************************************/ +void E500_L2CacheFlush(void); + +/**************************************************************************//** + @Function E500_L2SetStashId + + @Description Set Stash Id + + @Param[in] stashId the stash id to be set. + + @Return None. +*//***************************************************************************/ +void E500_L2SetStashId(uint8_t stashId); + +/**************************************************************************//** + @Function E500_AddressBusStreamingEnable + + @Description Enables address bus streaming on the CCB. + + This setting, along with the ECM streaming configuration + parameters, enables address bus streaming on the CCB. + + @Return None. +*//***************************************************************************/ +void E500_AddressBusStreamingEnable(void); + +/**************************************************************************//** + @Function E500_AddressBusStreamingDisable + + @Description Disables address bus streaming on the CCB. + + @Return None. +*//***************************************************************************/ +void E500_AddressBusStreamingDisable(void); + +/**************************************************************************//** + @Function E500_AddressBroadcastEnable + + @Description Enables address broadcast. + + The e500 broadcasts cache management instructions (dcbst, dcblc + (CT = 1), icblc (CT = 1), dcbf, dcbi, mbar, msync, tlbsync, icbi) + based on ABE. ABE must be set to allow management of external + L2 caches. + + @Return None. +*//***************************************************************************/ +void E500_AddressBroadcastEnable(void); + +/**************************************************************************//** + @Function E500_AddressBroadcastDisable + + @Description Disables address broadcast. + + The e500 broadcasts cache management instructions (dcbst, dcblc + (CT = 1), icblc (CT = 1), dcbf, dcbi, mbar, msync, tlbsync, icbi) + based on ABE. ABE must be set to allow management of external + L2 caches. + + @Return None. +*//***************************************************************************/ +void E500_AddressBroadcastDisable(void); + +/**************************************************************************//** + @Function E500_IsTaskletSupported + + @Description Checks if tasklets are supported by the e500 interrupt handler. + + @Retval TRUE - Tasklets are supported. + @Retval FALSE - Tasklets are not supported. +*//***************************************************************************/ +bool E500_IsTaskletSupported(void); + +void E500_EnableTimeBase(void); +void E500_DisableTimeBase(void); + +uint64_t E500_GetTimeBaseTime(void); + +void E500_GenericIntrInit(void); + +t_Error E500_SetIntr(int ppcIntrSrc, + void (* Isr)(t_Handle handle), + t_Handle handle); + +t_Error E500_ClearIntr(int ppcIntrSrc); + +/**************************************************************************//** + @Function E500_GenericIntrHandler + + @Description This is the general e500 interrupt handler. + + It is called by the main assembly interrupt handler + when an exception occurs and no other function has been + assigned to this exception. + + @Param intrEntry - (In) The exception interrupt vector entry. +*//***************************************************************************/ +void E500_GenericIntrHandler(uint32_t intrEntry); + +/**************************************************************************//** + @Function CriticalIntr + + @Description This is the specific critical e500 interrupt handler. + + It is called by the main assembly interrupt handler + when an critical interrupt. + + @Param intrEntry - (In) The exception interrupt vector entry. +*//***************************************************************************/ +void CriticalIntr(uint32_t intrEntry); + + +/**************************************************************************//** + @Function E500_GetId + + @Description Returns the core ID in the system. + + @Return Core ID. +*//***************************************************************************/ +uint32_t E500_GetId(void); + +/**************************************************************************//** + @Function E500_TestAndSet + + @Description This routine tries to atomically test-and-set an integer + in memory to a non-zero value. + + The memory will be set only if it is tested as zero, in which + case the routine returns the new non-zero value; otherwise the + routine returns zero. + + @Param[in] p - pointer to a volatile int in memory, on which test-and-set + operation should be made. + + @Retval Zero - Operation failed - memory was already set. + @Retval Non-zero - Operation succeeded - memory has been set. +*//***************************************************************************/ +int E500_TestAndSet(volatile int *p); + +/**************************************************************************//** + @Function E500_MemoryBarrier + + @Description This routine will cause the core to stop executing any commands + until all previous memory read/write commands are completely out + of the core's pipeline. + + @Return None. +*//***************************************************************************/ +static __inline__ void E500_MemoryBarrier(void) +{ +#ifdef CORE_E500MC + __asm__ ("mbar 1"); +#else + /**** ERRATA WORK AROUND START ****/ + /* ERRATA num: CPU1 */ + /* Description: "mbar MO = 1" instruction fails to order caching-inhibited + guarded loads and stores. */ + + /* "msync" instruction is used instead */ + + __asm__ ("msync"); + + /**** ERRATA WORK AROUND END ****/ +#endif +} + +/**************************************************************************//** + @Function E500_InstructionSync + + @Description This routine will cause the core to wait for previous instructions + (including any interrupts they generate) to complete before the + synchronization command executes, which purges all instructions + from the processor's pipeline and refetches the next instruction. + + @Return None. +*//***************************************************************************/ +static __inline__ void E500_InstructionSync(void) +{ + __asm__ ("isync"); +} + + +/** @} */ /* end of E500_init_grp group */ +/** @} */ /* end of E500_grp group */ + + +#endif /* __E500V2_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/cores/ppc_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/cores/ppc_ext.h @@ -0,0 +1,130 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File ppc_ext.h + + @Description Core API for PowerPC cores + + These routines must be implemented by each specific PowerPC + core driver. +*//***************************************************************************/ +#ifndef __PPC_EXT_H +#define __PPC_EXT_H + +#include "part_ext.h" + + +#define CORE_IS_BIG_ENDIAN + + +/**************************************************************************//** + @Function CORE_TestAndSet + + @Description This routine tries to atomically test-and-set an integer + in memory to a non-zero value. + + The memory will be set only if it is tested as zero, in which + case the routine returns the new non-zero value; otherwise the + routine returns zero. + + @Param[in] p - pointer to a volatile int in memory, on which test-and-set + operation should be made. + + @Retval Zero - Operation failed - memory was already set. + @Retval Non-zero - Operation succeeded - memory has been set. +*//***************************************************************************/ +int CORE_TestAndSet(volatile int *p); + +/**************************************************************************//** + @Function CORE_InstructionSync + + @Description This routine will cause the core to wait for previous instructions + (including any interrupts they generate) to complete before the + synchronization command executes, which purges all instructions + from the processor's pipeline and refetches the next instruction. + + @Return None. +*//***************************************************************************/ +void CORE_InstructionSync(void); + +/**************************************************************************//** + @Function CORE_DCacheEnable + + @Description Enables the data cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void CORE_DCacheEnable(void); + +/**************************************************************************//** + @Function CORE_ICacheEnable + + @Description Enables the instruction cache for memory pages that are + not cache inhibited. + + @Return None. +*//***************************************************************************/ +void CORE_ICacheEnable(void); + +/**************************************************************************//** + @Function CORE_DCacheDisable + + @Description Disables the data cache. + + @Return None. +*//***************************************************************************/ +void CORE_DCacheDisable(void); + +/**************************************************************************//** + @Function CORE_ICacheDisable + + @Description Disables the instruction cache. + + @Return None. +*//***************************************************************************/ +void CORE_ICacheDisable(void); + + + + +#if defined(CORE_E300) +#include "e300_ext.h" +#elif defined(CORE_E500V2) || defined(CORE_E500MC) +#include "e500v2_ext.h" +#else +#error "Core not defined!" +#endif + + +#endif /* __PPC_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_integration_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_integration_ext.h @@ -0,0 +1,659 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + + @File part_integration_ext.h + + @Description P1023 external definitions and structures. +*//***************************************************************************/ +#ifndef __PART_INTEGRATION_EXT_H +#define __PART_INTEGRATION_EXT_H + +#include "std_ext.h" +#ifndef NCSW_LINUX +#include "ddr_std_ext.h" +#endif +#include "dpaa_integration_ext.h" + + +/**************************************************************************//** + @Group 1023_chip_id P1023 Application Programming Interface + + @Description P1023 Chip functions,definitions and enums. + + @{ +*//***************************************************************************/ + +#define INTG_MAX_NUM_OF_CORES 1 + + +/**************************************************************************//** + @Description Module types. +*//***************************************************************************/ +typedef enum e_ModuleId +{ + e_MODULE_ID_LAW, /**< Local Access module */ + e_MODULE_ID_ECM, /**< e500 Coherency Module */ + e_MODULE_ID_DDR, /**< DDR memory controller */ + e_MODULE_ID_I2C_1, /**< I2C 1 */ + e_MODULE_ID_I2C_2, /**< I2C 1 */ + e_MODULE_ID_DUART_1, /**< DUART module 1 */ + e_MODULE_ID_DUART_2, /**< DUART module 2 */ + e_MODULE_ID_LBC, /**< Local bus memory controller module */ + e_MODULE_ID_PCIE_1, /**< PCI Express 1 controller module */ + e_MODULE_ID_PCIE_ATMU_1, /**< PCI 1 ATMU Window */ + e_MODULE_ID_PCIE_2, /**< PCI Express 2 controller module */ + e_MODULE_ID_PCIE_ATMU_2, /**< PCI 2 ATMU Window */ + e_MODULE_ID_PCIE_3, /**< PCI Express 3 controller module */ + e_MODULE_ID_PCIE_ATMU_3, /**< PCI 3 ATMU Window */ + e_MODULE_ID_MSI, /**< MSI registers */ + e_MODULE_ID_L2_SRAM, /**< L2/SRAM Memory-Mapped controller module */ + e_MODULE_ID_DMA_1, /**< DMA controller 1 */ + e_MODULE_ID_DMA_2, /**< DMA controller 2 */ + e_MODULE_ID_EPIC, /**< Programmable interrupt controller */ + e_MODULE_ID_ESPI, /**< ESPI module */ + e_MODULE_ID_GPIO, /**< General Purpose I/O */ + e_MODULE_ID_SEC_GEN, /**< SEC 4.0 General registers */ + e_MODULE_ID_SEC_QI, /**< SEC 4.0 QI registers */ + e_MODULE_ID_SEC_JQ0, /**< SEC 4.0 JQ-0 registers */ + e_MODULE_ID_SEC_JQ1, /**< SEC 4.0 JQ-1 registers */ + e_MODULE_ID_SEC_JQ2, /**< SEC 4.0 JQ-2 registers */ + e_MODULE_ID_SEC_JQ3, /**< SEC 4.0 JQ-3 registers */ + e_MODULE_ID_SEC_RTIC, /**< SEC 4.0 RTIC registers */ + e_MODULE_ID_SEC_DECO0_CCB0, /**< SEC 4.0 DECO-0/CCB-0 registers */ + e_MODULE_ID_SEC_DECO1_CCB1, /**< SEC 4.0 DECO-1/CCB-1 registers */ + e_MODULE_ID_SEC_DECO2_CCB2, /**< SEC 4.0 DECO-2/CCB-2 registers */ + e_MODULE_ID_SEC_DECO3_CCB3, /**< SEC 4.0 DECO-3/CCB-3 registers */ + e_MODULE_ID_SEC_DECO4_CCB4, /**< SEC 4.0 DECO-4/CCB-4 registers */ + e_MODULE_ID_USB_DR_1, /**< USB 2.0 module 1 */ + e_MODULE_ID_USB_DR_2, /**< USB 2.0 module 2 */ + e_MODULE_ID_ETSEC_MII_MNG, /**< MII MNG registers */ + e_MODULE_ID_ETSEC_1, /**< ETSEC module 1 */ + e_MODULE_ID_ETSEC_2, /**< ETSEC module 2 */ + e_MODULE_ID_GUTS, /**< Serial DMA */ + e_MODULE_ID_PM, /**< Performance Monitor module */ + e_MODULE_ID_QM, /**< Queue manager module */ + e_MODULE_ID_BM, /**< Buffer manager module */ + e_MODULE_ID_QM_CE_PORTAL, + e_MODULE_ID_QM_CI_PORTAL, + e_MODULE_ID_BM_CE_PORTAL, + e_MODULE_ID_BM_CI_PORTAL, + e_MODULE_ID_FM, /**< Frame manager #1 module */ + e_MODULE_ID_FM_RTC, /**< FM Real-Time-Clock */ + e_MODULE_ID_FM_MURAM, /**< FM Multi-User-RAM */ + e_MODULE_ID_FM_BMI, /**< FM BMI block */ + e_MODULE_ID_FM_QMI, /**< FM QMI block */ + e_MODULE_ID_FM_PRS, /**< FM parser block */ + e_MODULE_ID_FM_PORT_HO0, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO1, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO2, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO3, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_HO4, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM_PORT_1GRx0, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM_PORT_1GRx1, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM_PORT_1GTx0, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM_PORT_1GTx1, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM_PLCR, /**< FM Policer */ + e_MODULE_ID_FM_KG, /**< FM Keygen */ + e_MODULE_ID_FM_DMA, /**< FM DMA */ + e_MODULE_ID_FM_FPM, /**< FM FPM */ + e_MODULE_ID_FM_IRAM, /**< FM Instruction-RAM */ + e_MODULE_ID_FM_1GMDIO0, /**< FM 1G MDIO MAC 0*/ + e_MODULE_ID_FM_1GMDIO1, /**< FM 1G MDIO MAC 1*/ + e_MODULE_ID_FM_PRS_IRAM, /**< FM SW-parser Instruction-RAM */ + e_MODULE_ID_FM_RISC0, /**< FM risc #0 */ + e_MODULE_ID_FM_RISC1, /**< FM risc #1 */ + e_MODULE_ID_FM_1GMAC0, /**< FM 1G MAC #0 */ + e_MODULE_ID_FM_1GMAC1, /**< FM 1G MAC #1 */ + e_MODULE_ID_FM_MACSEC, /**< FM MACSEC */ + + e_MODULE_ID_DUMMY_LAST +} e_ModuleId; + +#define NUM_OF_MODULES e_MODULE_ID_DUMMY_LAST + + +#define P1023_OFFSET_LAW 0x00000C08 +#define P1023_OFFSET_ECM 0x00001000 +#define P1023_OFFSET_DDR 0x00002000 +#define P1023_OFFSET_I2C1 0x00003000 +#define P1023_OFFSET_I2C2 0x00003100 +#define P1023_OFFSET_DUART1 0x00004500 +#define P1023_OFFSET_DUART2 0x00004600 +#define P1023_OFFSET_LBC 0x00005000 +#define P1023_OFFSET_ESPI 0x00007000 +#define P1023_OFFSET_PCIE2 0x00009000 +#define P1023_OFFSET_PCIE2_ATMU 0x00009C00 +#define P1023_OFFSET_PCIE1 0x0000A000 +#define P1023_OFFSET_PCIE1_ATMU 0x0000AC00 +#define P1023_OFFSET_PCIE3 0x0000B000 +#define P1023_OFFSET_PCIE3_ATMU 0x0000BC00 +#define P1023_OFFSET_DMA2 0x0000C100 +#define P1023_OFFSET_GPIO 0x0000F000 +#define P1023_OFFSET_L2_SRAM 0x00020000 +#define P1023_OFFSET_DMA1 0x00021100 +#define P1023_OFFSET_USB1 0x00022000 +#define P1023_OFFSET_SEC_GEN 0x00030000 +#define P1023_OFFSET_SEC_JQ0 0x00031000 +#define P1023_OFFSET_SEC_JQ1 0x00032000 +#define P1023_OFFSET_SEC_JQ2 0x00033000 +#define P1023_OFFSET_SEC_JQ3 0x00034000 +#define P1023_OFFSET_SEC_RTIC 0x00036000 +#define P1023_OFFSET_SEC_QI 0x00037000 +#define P1023_OFFSET_SEC_DECO0_CCB0 0x00038000 +#define P1023_OFFSET_SEC_DECO1_CCB1 0x00039000 +#define P1023_OFFSET_SEC_DECO2_CCB2 0x0003a000 +#define P1023_OFFSET_SEC_DECO3_CCB3 0x0003b000 +#define P1023_OFFSET_SEC_DECO4_CCB4 0x0003c000 +#define P1023_OFFSET_PIC 0x00040000 +#define P1023_OFFSET_MSI 0x00041600 +#define P1023_OFFSET_AXI 0x00081000 +#define P1023_OFFSET_QM 0x00088000 +#define P1023_OFFSET_BM 0x0008A000 +#define P1022_OFFSET_PM 0x000E1000 + +#define P1023_OFFSET_GUTIL 0x000E0000 +#define P1023_OFFSET_PM 0x000E1000 +#define P1023_OFFSET_DEBUG 0x000E2000 +#define P1023_OFFSET_SERDES 0x000E3000 +#define P1023_OFFSET_ROM 0x000F0000 +#define P1023_OFFSET_FM 0x00100000 + +#define P1023_OFFSET_FM_MURAM (P1023_OFFSET_FM + 0x00000000) +#define P1023_OFFSET_FM_BMI (P1023_OFFSET_FM + 0x00080000) +#define P1023_OFFSET_FM_QMI (P1023_OFFSET_FM + 0x00080400) +#define P1023_OFFSET_FM_PRS (P1023_OFFSET_FM + 0x00080800) +#define P1023_OFFSET_FM_PORT_HO0 (P1023_OFFSET_FM + 0x00081000) +#define P1023_OFFSET_FM_PORT_HO1 (P1023_OFFSET_FM + 0x00082000) +#define P1023_OFFSET_FM_PORT_HO2 (P1023_OFFSET_FM + 0x00083000) +#define P1023_OFFSET_FM_PORT_HO3 (P1023_OFFSET_FM + 0x00084000) +#define P1023_OFFSET_FM_PORT_HO4 (P1023_OFFSET_FM + 0x00085000) +#define P1023_OFFSET_FM_PORT_1GRX0 (P1023_OFFSET_FM + 0x00088000) +#define P1023_OFFSET_FM_PORT_1GRX1 (P1023_OFFSET_FM + 0x00089000) +#define P1023_OFFSET_FM_PORT_1GTX0 (P1023_OFFSET_FM + 0x000A8000) +#define P1023_OFFSET_FM_PORT_1GTX1 (P1023_OFFSET_FM + 0x000A9000) +#define P1023_OFFSET_FM_PLCR (P1023_OFFSET_FM + 0x000C0000) +#define P1023_OFFSET_FM_KG (P1023_OFFSET_FM + 0x000C1000) +#define P1023_OFFSET_FM_DMA (P1023_OFFSET_FM + 0x000C2000) +#define P1023_OFFSET_FM_FPM (P1023_OFFSET_FM + 0x000C3000) +#define P1023_OFFSET_FM_IRAM (P1023_OFFSET_FM + 0x000C4000) +#define P1023_OFFSET_FM_PRS_IRAM (P1023_OFFSET_FM + 0x000C7000) +#define P1023_OFFSET_FM_RISC0 (P1023_OFFSET_FM + 0x000D0000) +#define P1023_OFFSET_FM_RISC1 (P1023_OFFSET_FM + 0x000D0400) +#define P1023_OFFSET_FM_MACSEC (P1023_OFFSET_FM + 0x000D8000) +#define P1023_OFFSET_FM_1GMAC0 (P1023_OFFSET_FM + 0x000E0000) +#define P1023_OFFSET_FM_1GMDIO0 (P1023_OFFSET_FM + 0x000E1120) +#define P1023_OFFSET_FM_1GMAC1 (P1023_OFFSET_FM + 0x000E2000) +#define P1023_OFFSET_FM_1GMDIO1 (P1023_OFFSET_FM + 0x000E3000) +#define P1023_OFFSET_FM_RTC (P1023_OFFSET_FM + 0x000FE000) + +/* Offsets relative to QM or BM portals base */ +#define P1023_OFFSET_PORTALS_CE_AREA 0x00000000 /* cache enabled area */ +#define P1023_OFFSET_PORTALS_CI_AREA 0x00100000 /* cache inhibited area */ + +#define P1023_OFFSET_PORTALS_CE(portal) (P1023_OFFSET_PORTALS_CE_AREA + 0x4000 * (portal)) +#define P1023_OFFSET_PORTALS_CI(portal) (P1023_OFFSET_PORTALS_CI_AREA + 0x1000 * (portal)) + +/**************************************************************************//** + @Description Transaction source ID (for memory controllers error reporting). +*//***************************************************************************/ +typedef enum e_TransSrc +{ + e_TRANS_SRC_PCIE_2 = 0x01, /**< PCIe port 2 */ + e_TRANS_SRC_PCIE_1 = 0x02, /**< PCIe port 1 */ + e_TRANS_SRC_PCIE_3 = 0x03, /**< PCIe port 3 */ + e_TRANS_SRC_LBC = 0x04, /**< Enhanced local bus */ + e_TRANS_SRC_DPAA_SW_PORTALS = 0x0E, /**< DPAA software portals or SRAM */ + e_TRANS_SRC_DDR = 0x0F, /**< DDR controller */ + e_TRANS_SRC_CORE_INS_FETCH = 0x10, /**< Processor (instruction) */ + e_TRANS_SRC_CORE_DATA = 0x11, /**< Processor (data) */ + e_TRANS_SRC_DMA = 0x15 /**< DMA */ +} e_TransSrc; + +/**************************************************************************//** + @Description Local Access Window Target interface ID +*//***************************************************************************/ +typedef enum e_P1023LawTargetId +{ + e_P1023_LAW_TARGET_PCIE_2 = 0x01, /**< PCI Express 2 target interface */ + e_P1023_LAW_TARGET_PCIE_1 = 0x02, /**< PCI Express 1 target interface */ + e_P1023_LAW_TARGET_PCIE_3 = 0x03, /**< PCI Express 3 target interface */ + e_P1023_LAW_TARGET_LBC = 0x04, /**< Local bus target interface */ + e_P1023_LAW_TARGET_QM_PORTALS = 0x0E, /**< Queue Manager Portals */ + e_P1023_LAW_TARGET_BM_PORTALS = 0x0E, /**< Buffer Manager Portals */ + e_P1023_LAW_TARGET_SRAM = 0x0E, /**< SRAM scratchpad */ + e_P1023_LAW_TARGET_DDR = 0x0F, /**< DDR target interface */ + e_P1023_LAW_TARGET_NONE = 0xFF /**< Invalid target interface */ +} e_P1023LawTargetId; + + +/**************************************************************************//** + @Group 1023_init_grp P1023 Initialization Unit + + @Description P1023 initialization unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description Part ID and revision number +*//***************************************************************************/ +typedef enum e_P1023DeviceName +{ + e_P1023_REV_INVALID = 0x00000000, /**< Invalid revision */ + e_SC1023_REV_1_0 = (int)0x80FC0010, /**< SC1023 rev 1.0 */ + e_SC1023_REV_1_1 = (int)0x80FC0011, /**< SC1023 rev 1.1 */ + e_P1023_REV_1_0 = (int)0x80FE0010, /**< P1023 rev 1.0 with security */ + e_P1023_REV_1_1 = (int)0x80FE0011, /**< P1023 rev 1.1 with security */ + e_P1023_REV_1_0_NO_SEC = (int)0x80F60010, /**< P1023 rev 1.0 without security */ + e_P1023_REV_1_1_NO_SEC = (int)0x80F60011 /**< P1023 rev 1.1 without security */ +} e_P1023DeviceName; + +/**************************************************************************//** + @Description structure representing P1023 initialization parameters +*//***************************************************************************/ +typedef struct t_P1023Params +{ + uintptr_t ccsrBaseAddress; /**< CCSR base address (virtual) */ + uintptr_t bmPortalsBaseAddress; /**< Portals base address (virtual) */ + uintptr_t qmPortalsBaseAddress; /**< Portals base address (virtual) */ +} t_P1023Params; + +/**************************************************************************//** + @Function P1023_ConfigAndInit + + @Description General initiation of the chip registers. + + @Param[in] p_P1023Params - A pointer to data structure of parameters + + @Return A handle to the P1023 data structure. +*//***************************************************************************/ +t_Handle P1023_ConfigAndInit(t_P1023Params *p_P1023Params); + +/**************************************************************************//** + @Function P1023_Free + + @Description Free all resources. + + @Param h_P1023 - (In) The handle of the initialized P1023 object. + + @Return E_OK on success; Other value otherwise. +*//***************************************************************************/ +t_Error P1023_Free(t_Handle h_P1023); + +/**************************************************************************//** + @Function P1023_GetRevInfo + + @Description This routine enables access to chip and revision information. + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Part ID and revision. +*//***************************************************************************/ +e_P1023DeviceName P1023_GetRevInfo(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetE500Factor + + @Description Returns E500 core clock multiplication factor. + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[in] coreId - Id of the requested core. + @Param[out] p_E500MulFactor - Returns E500 to CCB multification factor. + @Param[out] p_E500DivFactor - Returns E500 to CCB division factor. + + @Return E_OK on success; Other value otherwise. +* +*//***************************************************************************/ +t_Error P1023_GetE500Factor(uintptr_t gutilBase, + uint32_t coreId, + uint32_t *p_E500MulFactor, + uint32_t *p_E500DivFactor); + +/**************************************************************************//** + @Function P1023_GetFmFactor + + @Description returns FM multiplication factors. (This value is returned using + two parameters to avoid using float parameter). + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[out] p_FmMulFactor - returns E500 to CCB multification factor. + @Param[out] p_FmDivFactor - returns E500 to CCB division factor. + + @Return E_OK on success; Other value otherwise. +*//***************************************************************************/ +t_Error P1023_GetFmFactor(uintptr_t gutilBase, uint32_t *p_FmMulFactor, uint32_t *p_FmDivFactor); + +/**************************************************************************//** + @Function P1023_GetCcbFactor + + @Description returns system multiplication factor. + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return System multiplication factor. +*//***************************************************************************/ +uint32_t P1023_GetCcbFactor(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetDdrFactor + + @Description returns the multiplication factor of the clock in for the DDR clock . + Note: assumes the ddr_in_clk is identical to the sys_in_clk + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param p_DdrMulFactor - returns DDR in clk multification factor. + @Param p_DdrDivFactor - returns DDR division factor. + + @Return E_OK on success; Other value otherwise.. +*//***************************************************************************/ +t_Error P1023_GetDdrFactor( uintptr_t gutilBase, + uint32_t *p_DdrMulFactor, + uint32_t *p_DdrDivFactor); + + +/**************************************************************************//** + @Function P1023_GetDdrType + + @Description returns the multiplication factor of the clock in for the DDR clock . + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param p_DdrType - (Out) returns DDR type DDR1/DDR2/DDR3. + + @Return E_OK on success; Other value otherwise. +*//***************************************************************************/ +#ifndef NCSW_LINUX +t_Error P1023_GetDdrType(uintptr_t gutilBase, e_DdrType *p_DdrType ); +#endif + + +/** @} */ /* end of 1023_init_grp group */ +/** @} */ /* end of 1023_grp group */ + +#define CORE_E500V2 + +/***************************************************************************** + INTEGRATION-SPECIFIC MODULE CODES +******************************************************************************/ +#define MODULE_UNKNOWN 0x00000000 +#define MODULE_MEM 0x00010000 +#define MODULE_MM 0x00020000 +#define MODULE_CORE 0x00030000 +#define MODULE_P1023 0x00040000 +#define MODULE_MII 0x00050000 +#define MODULE_PM 0x00060000 +#define MODULE_MMU 0x00070000 +#define MODULE_PIC 0x00080000 +#define MODULE_L2_CACHE 0x00090000 +#define MODULE_DUART 0x000a0000 +#define MODULE_SERDES 0x000b0000 +#define MODULE_PIO 0x000c0000 +#define MODULE_QM 0x000d0000 +#define MODULE_BM 0x000e0000 +#define MODULE_SEC 0x000f0000 +#define MODULE_FM 0x00100000 +#define MODULE_FM_MURAM 0x00110000 +#define MODULE_FM_PCD 0x00120000 +#define MODULE_FM_RTC 0x00130000 +#define MODULE_FM_MAC 0x00140000 +#define MODULE_FM_PORT 0x00150000 +#define MODULE_FM_MACSEC 0x00160000 +#define MODULE_FM_MACSEC_SECY 0x00170000 +#define MODULE_ECM 0x00180000 +#define MODULE_DMA 0x00190000 +#define MODULE_DDR 0x001a0000 +#define MODULE_LAW 0x001b0000 +#define MODULE_LBC 0x001c0000 +#define MODULE_I2C 0x001d0000 +#define MODULE_ESPI 0x001e0000 +#define MODULE_PCI 0x001f0000 +#define MODULE_DPA 0x00200000 +#define MODULE_USB 0x00210000 + +/***************************************************************************** + LBC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +/**************************************************************************//** + @Group lbc_exception_grp LBC Exception Unit + + @Description LBC Exception unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Anchor lbc_exbm + + @Collection LBC Errors Bit Mask + + These errors are reported through the exceptions callback.. + The values can be or'ed in any combination in the errors mask + parameter of the errors report structure. + + These errors can also be passed as a bit-mask to + LBC_EnableErrorChecking() or LBC_DisableErrorChecking(), + for enabling or disabling error checking. + @{ +*//***************************************************************************/ +#define LBC_ERR_BUS_MONITOR 0x80000000 /**< Bus monitor error */ +#define LBC_ERR_PARITY_ECC 0x20000000 /**< Parity error for GPCM/UPM */ +#define LBC_ERR_WRITE_PROTECT 0x04000000 /**< Write protection error */ +#define LBC_ERR_CHIP_SELECT 0x00080000 /**< Unrecognized chip select */ + +#define LBC_ERR_ALL (LBC_ERR_BUS_MONITOR | LBC_ERR_PARITY_ECC | \ + LBC_ERR_WRITE_PROTECT | LBC_ERR_CHIP_SELECT) + /**< All possible errors */ +/* @} */ +/** @} */ /* end of lbc_exception_grp group */ + +#define LBC_NUM_OF_BANKS 2 +#define LBC_MAX_CS_SIZE 0x0000000100000000LL +#define LBC_ATOMIC_OPERATION_SUPPORT +#define LBC_PARITY_SUPPORT +#define LBC_ADDRESS_SHIFT_SUPPORT +#define LBC_ADDRESS_HOLD_TIME_CTRL +#define LBC_HIGH_CLK_DIVIDERS +#define LBC_FCM_AVAILABLE + + +/***************************************************************************** + LAW INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define LAW_ARCH_CCB +#define LAW_NUM_OF_WINDOWS 12 +#define LAW_MIN_WINDOW_SIZE 0x0000000000001000LL /**< 4KB */ +#define LAW_MAX_WINDOW_SIZE 0x0000001000000000LL /**< 32GB */ + + +/***************************************************************************** + SPI INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define SPI_NUM_OF_CONTROLLERS 1 + +/***************************************************************************** + PCI/PCIe INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ + +#define PCI_MAX_INBOUND_WINDOWS_NUM 4 +#define PCI_MAX_OUTBOUND_WINDOWS_NUM 5 + +/**************************************************************************//** + @Description Target interface of an inbound window +*//***************************************************************************/ +typedef enum e_PciTargetInterface +{ + e_PCI_TARGET_PCIE_2 = 0x1, /**< PCI Express target interface 2 */ + e_PCI_TARGET_PCIE_1 = 0x2, /**< PCI Express target interface 1 */ + e_PCI_TARGET_PCIE_3 = 0x3, /**< PCI Express target interface 3 */ + e_PCI_TARGET_LOCAL_MEMORY = 0xF /**< Local Memory (DDR SDRAM, Local Bus, SRAM) target interface */ + +} e_PciTargetInterface; + +/***************************************************************************** + DDR INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define DDR_NUM_OF_VALID_CS 2 + +/***************************************************************************** + SEC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define SEC_ERRATA_STAT_REGS_UNUSABLE + +/***************************************************************************** + DMA INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define DMA_NUM_OF_CONTROLLERS 1 + + + + +/***************************************************************************** + 1588 INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define PTP_V2 + +/**************************************************************************//** + @Function P1023_GetMuxControlReg + + @Description Returns the value of PMUXCR (Alternate Function Signal Multiplex + Control Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Value of PMUXCR +*//***************************************************************************/ +uint32_t P1023_GetMuxControlReg(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_SetMuxControlReg + + @Description Sets the value of PMUXCR (Alternate Function Signal Multiplex + Control Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[in] val - the new value for PMUXCR. + + @Return None +*//***************************************************************************/ +void P1023_SetMuxControlReg(uintptr_t gutilBase, uint32_t val); + +/**************************************************************************//** + @Function P1023_GetPowerMngClkDisableReg + + @Description Returns the value of PMCDR (Power Management Clock Disable Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Value of PMCDR +*//***************************************************************************/ +uint32_t P1023_GetPowerMngClkDisableReg(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_SetPowerMngClkDisableReg + + @Description Sets the value of PMCDR ((Power Management Clock Disable Register)) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + @Param[in] val - the new value for PMCDR. + + @Return None +*//***************************************************************************/ +void P1023_SetPowerMngClkDisableReg(uintptr_t gutilBase, uint32_t val); + +/**************************************************************************//** + @Function P1023_GetDeviceDisableStatusRegister + + @Description Returns the value of DEVDISR (Device Disable Register) + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return Value of DEVDISR +*//***************************************************************************/ +uint32_t P1023_GetDeviceDisableStatusRegister(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetPorDeviceStatusRegister + + @Description Returns the value of POR Device Status Register + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return POR Device Status Register +*//***************************************************************************/ +uint32_t P1023_GetPorDeviceStatusRegister(uintptr_t gutilBase); + +/**************************************************************************//** + @Function P1023_GetPorBootModeStatusRegister + + @Description Returns the value of POR Boot Mode Status Register + + @Param[in] gutilBase - Base address of P1023 GUTIL registers. + + @Return POR Boot Mode Status Register value +*//***************************************************************************/ +uint32_t P1023_GetPorBootModeStatusRegister(uintptr_t gutilBase); + + +#define PORDEVSR_SGMII1_DIS 0x10000000 +#define PORDEVSR_SGMII2_DIS 0x08000000 +#define PORDEVSR_ECP1 0x02000000 +#define PORDEVSR_IO_SEL 0x00780000 +#define PORDEVSR_IO_SEL_SHIFT 19 +#define PORBMSR_HA 0x00070000 +#define PORBMSR_HA_SHIFT 16 + +#define DEVDISR_QM_BM 0x80000000 +#define DEVDISR_FM 0x40000000 +#define DEVDISR_PCIE1 0x20000000 +#define DEVDISR_MAC_SEC 0x10000000 +#define DEVDISR_ELBC 0x08000000 +#define DEVDISR_PCIE2 0x04000000 +#define DEVDISR_PCIE3 0x02000000 +#define DEVDISR_CAAM 0x01000000 +#define DEVDISR_USB0 0x00800000 +#define DEVDISR_1588 0x00020000 +#define DEVDISR_CORE0 0x00008000 +#define DEVDISR_TB0 0x00004000 +#define DEVDISR_CORE1 0x00002000 +#define DEVDISR_TB1 0x00001000 +#define DEVDISR_DMA1 0x00000400 +#define DEVDISR_DMA2 0x00000200 +#define DEVDISR_DDR 0x00000010 +#define DEVDISR_TSEC1 0x00000080 +#define DEVDISR_TSEC2 0x00000040 +#define DEVDISR_SPI 0x00000008 +#define DEVDISR_I2C 0x00000004 +#define DEVDISR_DUART 0x00000002 + + +#endif /* __PART_INTEGRATION_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/integrations/P1023/part_ext.h @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File part_ext.h + + @Description Definitions for the part (integration) module. +*//***************************************************************************/ + +#ifndef __PART_EXT_H +#define __PART_EXT_H + +#include "std_ext.h" +#include "part_integration_ext.h" + + +#if !(defined(MPC8306) || \ + defined(MPC8309) || \ + defined(MPC834x) || \ + defined(MPC836x) || \ + defined(MPC832x) || \ + defined(MPC837x) || \ + defined(MPC8568) || \ + defined(MPC8569) || \ + defined(P1020) || \ + defined(P1021) || \ + defined(P1022) || \ + defined(P1023) || \ + defined(P2020) || \ + defined(P3041) || \ + defined(P4080) || \ + defined(P5020) || \ + defined(MSC814x)) +#error "unable to proceed without chip-definition" +#endif + + +/**************************************************************************//* + @Description Part data structure - must be contained in any integration + data structure. +*//***************************************************************************/ +typedef struct t_Part +{ + uint64_t (* f_GetModuleBase)(t_Handle h_Part, e_ModuleId moduleId); + /**< Returns the address of the module's memory map base. */ + e_ModuleId (* f_GetModuleIdByBase)(t_Handle h_Part, uint64_t baseAddress); + /**< Returns the module's ID according to its memory map base. */ +} t_Part; + + +#endif /* __PART_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P1023/dpaa_integration_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/integrations/P1023/dpaa_integration_ext.h @@ -0,0 +1,328 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + + @File dpaa_integration_ext.h + + @Description P1023 FM external definitions and structures. +*//***************************************************************************/ +#ifndef __DPAA_INTEGRATION_EXT_H +#define __DPAA_INTEGRATION_EXT_H + +#include "std_ext.h" + + +typedef enum e_DpaaSwPortal { + e_DPAA_SWPORTAL0 = 0, + e_DPAA_SWPORTAL1, + e_DPAA_SWPORTAL2 +} e_DpaaSwPortal; + +typedef enum { + e_DPAA_DCPORTAL0 = 0, + e_DPAA_DCPORTAL1, + e_DPAA_DCPORTAL2, + e_DPAA_DCPORTAL3 +} e_DpaaDcPortal; + +#define DPAA_MAX_NUM_OF_SW_PORTALS 3 +#define DPAA_MAX_NUM_OF_DC_PORTALS 3 + +/***************************************************************************** + QMAN INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define QM_MAX_NUM_OF_POOL_CHANNELS 3 +#define QM_MAX_NUM_OF_WQ 8 +#define QM_MAX_NUM_OF_SWP_AS 2 +#define QM_MAX_NUM_OF_CGS 64 +#define QM_MAX_NUM_OF_FQIDS (16*MEGABYTE) + +typedef enum { + e_QM_FQ_CHANNEL_SWPORTAL0 = 0, + e_QM_FQ_CHANNEL_SWPORTAL1, + e_QM_FQ_CHANNEL_SWPORTAL2, + + e_QM_FQ_CHANNEL_POOL1 = 0x21, + e_QM_FQ_CHANNEL_POOL2, + e_QM_FQ_CHANNEL_POOL3, + + e_QM_FQ_CHANNEL_FMAN0_SP0 = 0x40, + e_QM_FQ_CHANNEL_FMAN0_SP1, + e_QM_FQ_CHANNEL_FMAN0_SP2, + e_QM_FQ_CHANNEL_FMAN0_SP3, + e_QM_FQ_CHANNEL_FMAN0_SP4, + e_QM_FQ_CHANNEL_FMAN0_SP5, + e_QM_FQ_CHANNEL_FMAN0_SP6, + + + e_QM_FQ_CHANNEL_CAAM = 0x80 +} e_QmFQChannel; + +/***************************************************************************** + BMAN INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define BM_MAX_NUM_OF_POOLS 8 + +/***************************************************************************** + FM INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define INTG_MAX_NUM_OF_FM 1 + +/* Ports defines */ +#define FM_MAX_NUM_OF_1G_RX_PORTS 2 +#define FM_MAX_NUM_OF_10G_RX_PORTS 0 +#define FM_MAX_NUM_OF_RX_PORTS (FM_MAX_NUM_OF_10G_RX_PORTS+FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_1G_TX_PORTS 2 +#define FM_MAX_NUM_OF_10G_TX_PORTS 0 +#define FM_MAX_NUM_OF_TX_PORTS (FM_MAX_NUM_OF_10G_TX_PORTS+FM_MAX_NUM_OF_1G_TX_PORTS) +#define FM_MAX_NUM_OF_OH_PORTS 5 +#define FM_MAX_NUM_OF_1G_MACS (FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_10G_MACS (FM_MAX_NUM_OF_10G_RX_PORTS) +#define FM_MAX_NUM_OF_MACS (FM_MAX_NUM_OF_1G_MACS+FM_MAX_NUM_OF_10G_MACS) +#define FM_MAX_NUM_OF_MACSECS 1 + +#if 0 +#define FM_MACSEC_SUPPORT +#define FM_CAPWAP_SUPPORT +#endif + +#define FM_LOW_END_RESTRICTION /* prevents the use of TX port 1 with OP port 0 */ + +#define FM_PORT_MAX_NUM_OF_EXT_POOLS 4 /**< Number of external BM pools per Rx port */ +#define FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS 2 /**< Number of Offline parsing port external BM pools per Rx port */ +#define FM_PORT_NUM_OF_CONGESTION_GRPS 32 /**< Total number of congestion groups in QM */ +#define FM_MAX_NUM_OF_SUB_PORTALS 7 + +/* Rams defines */ +#define FM_MURAM_SIZE (64*KILOBYTE) +#define FM_IRAM_SIZE (32*KILOBYTE) + +/* PCD defines */ +#define FM_PCD_PLCR_NUM_ENTRIES 32 /**< Total number of policer profiles */ +#define FM_PCD_KG_NUM_OF_SCHEMES 16 /**< Total number of KG schemes */ +#define FM_PCD_MAX_NUM_OF_CLS_PLANS 128 /**< Number of classification plan entries. */ + +/* RTC defines */ +#define FM_RTC_NUM_OF_ALARMS 2 +#define FM_RTC_NUM_OF_PERIODIC_PULSES 2 +#define FM_RTC_NUM_OF_EXT_TRIGGERS 2 + +/* QMI defines */ +#define QMI_MAX_NUM_OF_TNUMS 15 +#define MAX_QMI_DEQ_SUBPORTAL 7 + +/* FPM defines */ +#define FM_NUM_OF_FMAN_CTRL_EVENT_REGS 4 + +/* DMA defines */ +#define DMA_THRESH_MAX_COMMQ 15 +#define DMA_THRESH_MAX_BUF 7 + +/* BMI defines */ +#define BMI_MAX_NUM_OF_TASKS 64 +#define BMI_MAX_NUM_OF_DMAS 16 +#define BMI_MAX_FIFO_SIZE (FM_MURAM_SIZE) +#define PORT_MAX_WEIGHT 4 + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmEventModules{ + e_FM_MOD_PRS, /**< Parser event */ + e_FM_MOD_KG, /**< Keygen event */ + e_FM_MOD_PLCR, /**< Policer event */ + e_FM_MOD_10G_MAC, /**< 10G MAC error event */ + e_FM_MOD_1G_MAC, /**< 1G MAC error event */ + e_FM_MOD_TMR, /**< Timer event */ + e_FM_MOD_1G_MAC_TMR, /**< 1G MAC Timer event */ + e_FM_MOD_FMAN_CTRL, /**< FMAN Controller Timer event */ + e_FM_MOD_MACSEC, + e_FM_MOD_DUMMY_LAST +} e_FmEventModules; + +/**************************************************************************//** + @Description Enum for interrupts types +*//***************************************************************************/ +typedef enum e_FmIntrType { + e_FM_INTR_TYPE_ERR, + e_FM_INTR_TYPE_NORMAL +} e_FmIntrType; + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmInterModuleEvent { + e_FM_EV_PRS, /**< Parser event */ + e_FM_EV_ERR_PRS, /**< Parser error event */ + e_FM_EV_KG, /**< Keygen event */ + e_FM_EV_ERR_KG, /**< Keygen error event */ + e_FM_EV_PLCR, /**< Policer event */ + e_FM_EV_ERR_PLCR, /**< Policer error event */ + e_FM_EV_ERR_10G_MAC0, /**< 10G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC0, /**< 1G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC1, /**< 1G MAC 1 error event */ + e_FM_EV_ERR_1G_MAC2, /**< 1G MAC 2 error event */ + e_FM_EV_ERR_1G_MAC3, /**< 1G MAC 3 error event */ + e_FM_EV_ERR_MACSEC_MAC0, /**< MACSEC MAC 0 error event */ + e_FM_EV_TMR, /**< Timer event */ + e_FM_EV_1G_MAC0_TMR, /**< 1G MAC 0 Timer event */ + e_FM_EV_1G_MAC1_TMR, /**< 1G MAC 1 Timer event */ + e_FM_EV_1G_MAC2_TMR, /**< 1G MAC 2 Timer event */ + e_FM_EV_1G_MAC3_TMR, /**< 1G MAC 3 Timer event */ + e_FM_EV_MACSEC_MAC0, /**< MACSEC MAC 0 event */ + e_FM_EV_FMAN_CTRL_0, /**< Fman controller event 0 */ + e_FM_EV_FMAN_CTRL_1, /**< Fman controller event 1 */ + e_FM_EV_FMAN_CTRL_2, /**< Fman controller event 2 */ + e_FM_EV_FMAN_CTRL_3, /**< Fman controller event 3 */ + e_FM_EV_DUMMY_LAST +} e_FmInterModuleEvent; + +#define GET_FM_MODULE_EVENT(mod, id, intrType, event) \ + switch(mod){ \ + case e_FM_MOD_PRS: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PRS:e_FM_EV_PRS; \ + break; \ + case e_FM_MOD_KG: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_KG:e_FM_EV_DUMMY_LAST; \ + break; \ + case e_FM_MOD_PLCR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PLCR:e_FM_EV_PLCR; \ + break; \ + case e_FM_MOD_1G_MAC: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC0:e_FM_EV_DUMMY_LAST; break; \ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC1:e_FM_EV_DUMMY_LAST; break; \ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC2:e_FM_EV_DUMMY_LAST; break; \ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC3:e_FM_EV_DUMMY_LAST; break; \ + } \ + break; \ + case e_FM_MOD_TMR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_TMR; \ + break; \ + case e_FM_MOD_1G_MAC_TMR: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC0_TMR; break; \ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC1_TMR; break; \ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC2_TMR; break; \ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST:e_FM_EV_1G_MAC3_TMR; break; \ + } \ + break; \ + case e_FM_MOD_MACSEC: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_MACSEC_MAC0:e_FM_EV_MACSEC_MAC0; break; \ + } \ + break; \ + case e_FM_MOD_FMAN_CTRL: \ + if (intrType == e_FM_INTR_TYPE_ERR) event = e_FM_EV_DUMMY_LAST; \ + else switch(id){ \ + case(0): event = e_FM_EV_FMAN_CTRL_0; break; \ + case(1): event = e_FM_EV_FMAN_CTRL_1; break; \ + case(2): event = e_FM_EV_FMAN_CTRL_2; break; \ + case(3): event = e_FM_EV_FMAN_CTRL_3; break; \ + } \ + break; \ + default:event = e_FM_EV_DUMMY_LAST; \ + break;} + +/***************************************************************************** + FM MACSEC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define NUM_OF_RX_SC 16 +#define NUM_OF_TX_SC 16 + +#define NUM_OF_SA_PER_RX_SC 2 +#define NUM_OF_SA_PER_TX_SC 2 + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ + +typedef enum e_FmMacsecEventModules{ + e_FM_MACSEC_MOD_SC_TX, + e_FM_MACSEC_MOD_DUMMY_LAST +} e_FmMacsecEventModules; + +typedef enum e_FmMacsecInterModuleEvent { + e_FM_MACSEC_EV_SC_TX, + e_FM_MACSEC_EV_ERR_SC_TX, + e_FM_MACSEC_EV_DUMMY_LAST +} e_FmMacsecInterModuleEvent; + +#define NUM_OF_INTER_MODULE_EVENTS (NUM_OF_TX_SC * 2) + +#define GET_MACSEC_MODULE_EVENT(mod, id, intrType, event) \ + switch(mod){ \ + case e_FM_MACSEC_MOD_SC_TX: \ + event = (intrType == e_FM_INTR_TYPE_ERR) ? \ + e_FM_MACSEC_EV_ERR_SC_TX: \ + e_FM_MACSEC_EV_SC_TX; \ + event += (uint8_t)(2 * id);break; \ + break; \ + default:event = e_FM_MACSEC_EV_DUMMY_LAST; \ + break;} + + +/* 1023 unique features */ +#define FM_QMI_NO_ECC_EXCEPTIONS +#define FM_CSI_CFED_LIMIT +#define FM_PEDANTIC_DMA + +/* FM erratas */ +#define FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_RX_PREAM_4_ERRATA_DTSEC_A001 FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_MAGIC_PACKET_UNRECOGNIZED_ERRATA_DTSEC2 /* No implementation, Out of LLD scope */ + +#define FM_IM_TX_SYNC_SKIP_TNUM_ERRATA_FMAN_A001 /* Implemented by ucode */ +#define FM_HC_DEF_FQID_ONLY_ERRATA_FMAN_A003 /* Implemented by ucode */ +#define FM_IM_TX_SHARED_TNUM_ERRATA_FMAN4 /* Implemented by ucode */ +#define FM_IM_GS_DEADLOCK_ERRATA_FMAN5 /* Implemented by ucode */ +#define FM_IM_DEQ_PIPELINE_DEPTH_ERRATA_FMAN10 /* Implemented by ucode */ +#define FM_CC_GEN6_MISSMATCH_ERRATA_FMAN12 /* Implemented by ucode */ +#define FM_CC_CHANGE_SHARED_TNUM_ERRATA_FMAN13 /* Implemented by ucode */ +#define FM_IM_LARGE_MRBLR_ERRATA_FMAN15 /* Implemented by ucode */ + +/* #define FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 */ + +/* ??? */ +#define FM_GRS_ERRATA_DTSEC_A002 +#define FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 +#define FM_GTS_ERRATA_DTSEC_A004 +#define FM_TX_LOCKUP_ERRATA_DTSEC6 + +#define FM_LOCKUP_ALIGNMENT_ERRATA_FMAN_SW004 + +#endif /* __FM_INTEGRATION_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_integration_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_integration_ext.h @@ -0,0 +1,331 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + + @File part_integration_ext.h + + @Description P3040/P4080/P5020 external definitions and structures. +*//***************************************************************************/ +#ifndef __PART_INTEGRATION_EXT_H +#define __PART_INTEGRATION_EXT_H + +#include "std_ext.h" +#include "dpaa_integration_ext.h" + + +/**************************************************************************//** + @Group P3040/P4080/P5020_chip_id P5020 Application Programming Interface + + @Description P3040/P4080/P5020 Chip functions,definitions and enums. + + @{ +*//***************************************************************************/ + +#define CORE_E500MC + +#define INTG_MAX_NUM_OF_CORES 1 + + +/**************************************************************************//** + @Description Module types. +*//***************************************************************************/ +typedef enum e_ModuleId +{ + e_MODULE_ID_DUART_1 = 0, + e_MODULE_ID_DUART_2, + e_MODULE_ID_DUART_3, + e_MODULE_ID_DUART_4, + e_MODULE_ID_LAW, + e_MODULE_ID_LBC, + e_MODULE_ID_PAMU, + e_MODULE_ID_QM, /**< Queue manager module */ + e_MODULE_ID_BM, /**< Buffer manager module */ + e_MODULE_ID_QM_CE_PORTAL_0, + e_MODULE_ID_QM_CI_PORTAL_0, + e_MODULE_ID_QM_CE_PORTAL_1, + e_MODULE_ID_QM_CI_PORTAL_1, + e_MODULE_ID_QM_CE_PORTAL_2, + e_MODULE_ID_QM_CI_PORTAL_2, + e_MODULE_ID_QM_CE_PORTAL_3, + e_MODULE_ID_QM_CI_PORTAL_3, + e_MODULE_ID_QM_CE_PORTAL_4, + e_MODULE_ID_QM_CI_PORTAL_4, + e_MODULE_ID_QM_CE_PORTAL_5, + e_MODULE_ID_QM_CI_PORTAL_5, + e_MODULE_ID_QM_CE_PORTAL_6, + e_MODULE_ID_QM_CI_PORTAL_6, + e_MODULE_ID_QM_CE_PORTAL_7, + e_MODULE_ID_QM_CI_PORTAL_7, + e_MODULE_ID_QM_CE_PORTAL_8, + e_MODULE_ID_QM_CI_PORTAL_8, + e_MODULE_ID_QM_CE_PORTAL_9, + e_MODULE_ID_QM_CI_PORTAL_9, + e_MODULE_ID_BM_CE_PORTAL_0, + e_MODULE_ID_BM_CI_PORTAL_0, + e_MODULE_ID_BM_CE_PORTAL_1, + e_MODULE_ID_BM_CI_PORTAL_1, + e_MODULE_ID_BM_CE_PORTAL_2, + e_MODULE_ID_BM_CI_PORTAL_2, + e_MODULE_ID_BM_CE_PORTAL_3, + e_MODULE_ID_BM_CI_PORTAL_3, + e_MODULE_ID_BM_CE_PORTAL_4, + e_MODULE_ID_BM_CI_PORTAL_4, + e_MODULE_ID_BM_CE_PORTAL_5, + e_MODULE_ID_BM_CI_PORTAL_5, + e_MODULE_ID_BM_CE_PORTAL_6, + e_MODULE_ID_BM_CI_PORTAL_6, + e_MODULE_ID_BM_CE_PORTAL_7, + e_MODULE_ID_BM_CI_PORTAL_7, + e_MODULE_ID_BM_CE_PORTAL_8, + e_MODULE_ID_BM_CI_PORTAL_8, + e_MODULE_ID_BM_CE_PORTAL_9, + e_MODULE_ID_BM_CI_PORTAL_9, + e_MODULE_ID_FM1, /**< Frame manager #1 module */ + e_MODULE_ID_FM1_RTC, /**< FM Real-Time-Clock */ + e_MODULE_ID_FM1_MURAM, /**< FM Multi-User-RAM */ + e_MODULE_ID_FM1_BMI, /**< FM BMI block */ + e_MODULE_ID_FM1_QMI, /**< FM QMI block */ + e_MODULE_ID_FM1_PRS, /**< FM parser block */ + e_MODULE_ID_FM1_PORT_HO0, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO1, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO2, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO3, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO4, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO5, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_HO6, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM1_PORT_1GRx0, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx1, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx2, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx3, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GRx4, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_10GRx0, /**< FM Rx 10G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx0, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx1, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx2, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx3, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_1GTx4, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM1_PORT_10GTx0, /**< FM Tx 10G MAC port block */ + e_MODULE_ID_FM1_PLCR, /**< FM Policer */ + e_MODULE_ID_FM1_KG, /**< FM Keygen */ + e_MODULE_ID_FM1_DMA, /**< FM DMA */ + e_MODULE_ID_FM1_FPM, /**< FM FPM */ + e_MODULE_ID_FM1_IRAM, /**< FM Instruction-RAM */ + e_MODULE_ID_FM1_1GMDIO0, /**< FM 1G MDIO MAC 0*/ + e_MODULE_ID_FM1_1GMDIO1, /**< FM 1G MDIO MAC 1*/ + e_MODULE_ID_FM1_1GMDIO2, /**< FM 1G MDIO MAC 2*/ + e_MODULE_ID_FM1_1GMDIO3, /**< FM 1G MDIO MAC 3*/ + e_MODULE_ID_FM1_10GMDIO, /**< FM 10G MDIO */ + e_MODULE_ID_FM1_PRS_IRAM, /**< FM SW-parser Instruction-RAM */ + e_MODULE_ID_FM1_1GMAC0, /**< FM 1G MAC #0 */ + e_MODULE_ID_FM1_1GMAC1, /**< FM 1G MAC #1 */ + e_MODULE_ID_FM1_1GMAC2, /**< FM 1G MAC #2 */ + e_MODULE_ID_FM1_1GMAC3, /**< FM 1G MAC #3 */ + e_MODULE_ID_FM1_10GMAC0, /**< FM 10G MAC #0 */ + + e_MODULE_ID_FM2, /**< Frame manager #2 module */ + e_MODULE_ID_FM2_RTC, /**< FM Real-Time-Clock */ + e_MODULE_ID_FM2_MURAM, /**< FM Multi-User-RAM */ + e_MODULE_ID_FM2_BMI, /**< FM BMI block */ + e_MODULE_ID_FM2_QMI, /**< FM QMI block */ + e_MODULE_ID_FM2_PRS, /**< FM parser block */ + e_MODULE_ID_FM2_PORT_HO0, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO1, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO2, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO3, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO4, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO5, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_HO6, /**< FM Host-command/offline-parsing port block */ + e_MODULE_ID_FM2_PORT_1GRx0, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GRx1, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GRx2, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GRx3, /**< FM Rx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_10GRx0, /**< FM Rx 10G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx0, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx1, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx2, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_1GTx3, /**< FM Tx 1G MAC port block */ + e_MODULE_ID_FM2_PORT_10GTx0, /**< FM Tx 10G MAC port block */ + e_MODULE_ID_FM2_PLCR, /**< FM Policer */ + e_MODULE_ID_FM2_KG, /**< FM Keygen */ + e_MODULE_ID_FM2_DMA, /**< FM DMA */ + e_MODULE_ID_FM2_FPM, /**< FM FPM */ + e_MODULE_ID_FM2_IRAM, /**< FM Instruction-RAM */ + e_MODULE_ID_FM2_1GMDIO0, /**< FM 1G MDIO MAC 0*/ + e_MODULE_ID_FM2_1GMDIO1, /**< FM 1G MDIO MAC 1*/ + e_MODULE_ID_FM2_1GMDIO2, /**< FM 1G MDIO MAC 2*/ + e_MODULE_ID_FM2_1GMDIO3, /**< FM 1G MDIO MAC 3*/ + e_MODULE_ID_FM2_10GMDIO, /**< FM 10G MDIO */ + e_MODULE_ID_FM2_PRS_IRAM, /**< FM SW-parser Instruction-RAM */ + e_MODULE_ID_FM2_1GMAC0, /**< FM 1G MAC #0 */ + e_MODULE_ID_FM2_1GMAC1, /**< FM 1G MAC #1 */ + e_MODULE_ID_FM2_1GMAC2, /**< FM 1G MAC #2 */ + e_MODULE_ID_FM2_1GMAC3, /**< FM 1G MAC #3 */ + e_MODULE_ID_FM2_10GMAC0, /**< FM 10G MAC #0 */ + + e_MODULE_ID_SEC_GEN, /**< SEC 4.0 General registers */ + e_MODULE_ID_SEC_QI, /**< SEC 4.0 QI registers */ + e_MODULE_ID_SEC_JQ0, /**< SEC 4.0 JQ-0 registers */ + e_MODULE_ID_SEC_JQ1, /**< SEC 4.0 JQ-1 registers */ + e_MODULE_ID_SEC_JQ2, /**< SEC 4.0 JQ-2 registers */ + e_MODULE_ID_SEC_JQ3, /**< SEC 4.0 JQ-3 registers */ + e_MODULE_ID_SEC_RTIC, /**< SEC 4.0 RTIC registers */ + e_MODULE_ID_SEC_DECO0_CCB0, /**< SEC 4.0 DECO-0/CCB-0 registers */ + e_MODULE_ID_SEC_DECO1_CCB1, /**< SEC 4.0 DECO-1/CCB-1 registers */ + e_MODULE_ID_SEC_DECO2_CCB2, /**< SEC 4.0 DECO-2/CCB-2 registers */ + e_MODULE_ID_SEC_DECO3_CCB3, /**< SEC 4.0 DECO-3/CCB-3 registers */ + e_MODULE_ID_SEC_DECO4_CCB4, /**< SEC 4.0 DECO-4/CCB-4 registers */ + + e_MODULE_ID_MPIC, /**< MPIC */ + e_MODULE_ID_GPIO, /**< GPIO */ + e_MODULE_ID_SERDES, /**< SERDES */ + e_MODULE_ID_CPC_1, /**< CoreNet-Platform-Cache 1 */ + e_MODULE_ID_CPC_2, /**< CoreNet-Platform-Cache 2 */ + + e_MODULE_ID_SRIO_PORTS, /**< RapidIO controller */ + e_MODULE_ID_SRIO_MU, /**< RapidIO messaging unit module */ + + e_MODULE_ID_DUMMY_LAST +} e_ModuleId; + +#define NUM_OF_MODULES e_MODULE_ID_DUMMY_LAST + + +/***************************************************************************** + INTEGRATION-SPECIFIC MODULE CODES +******************************************************************************/ +#define MODULE_UNKNOWN 0x00000000 +#define MODULE_MEM 0x00010000 +#define MODULE_MM 0x00020000 +#define MODULE_CORE 0x00030000 +#define MODULE_CHIP 0x00040000 +#define MODULE_PLTFRM 0x00050000 +#define MODULE_PM 0x00060000 +#define MODULE_MMU 0x00070000 +#define MODULE_PIC 0x00080000 +#define MODULE_CPC 0x00090000 +#define MODULE_DUART 0x000a0000 +#define MODULE_SERDES 0x000b0000 +#define MODULE_PIO 0x000c0000 +#define MODULE_QM 0x000d0000 +#define MODULE_BM 0x000e0000 +#define MODULE_SEC 0x000f0000 +#define MODULE_LAW 0x00100000 +#define MODULE_LBC 0x00110000 +#define MODULE_PAMU 0x00120000 +#define MODULE_FM 0x00130000 +#define MODULE_FM_MURAM 0x00140000 +#define MODULE_FM_PCD 0x00150000 +#define MODULE_FM_RTC 0x00160000 +#define MODULE_FM_MAC 0x00170000 +#define MODULE_FM_PORT 0x00180000 +#define MODULE_DPA 0x00190000 +#define MODULE_SRIO 0x00200000 +#define MODULE_DMA 0x00100000 + +/***************************************************************************** + PAMU INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define PAMU_NUM_OF_PARTITIONS 5 + +#define PAMU_PICS_AVICS_ERRATA_PAMU3 + +/***************************************************************************** + LAW INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define LAW_NUM_OF_WINDOWS 32 +#define LAW_MIN_WINDOW_SIZE 0x0000000000001000LL /**< 4KB */ +#define LAW_MAX_WINDOW_SIZE 0x0000002000000000LL /**< 64GB */ + + +/***************************************************************************** + LBC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +/**************************************************************************//** + @Group lbc_exception_grp LBC Exception Unit + + @Description LBC Exception unit API functions, definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Anchor lbc_exbm + + @Collection LBC Errors Bit Mask + + These errors are reported through the exceptions callback.. + The values can be or'ed in any combination in the errors mask + parameter of the errors report structure. + + These errors can also be passed as a bit-mask to + LBC_EnableErrorChecking() or LBC_DisableErrorChecking(), + for enabling or disabling error checking. + @{ +*//***************************************************************************/ +#define LBC_ERR_BUS_MONITOR 0x80000000 /**< Bus monitor error */ +#define LBC_ERR_PARITY_ECC 0x20000000 /**< Parity error for GPCM/UPM */ +#define LBC_ERR_WRITE_PROTECT 0x04000000 /**< Write protection error */ +#define LBC_ERR_ATOMIC_WRITE 0x00800000 /**< Atomic write error */ +#define LBC_ERR_ATOMIC_READ 0x00400000 /**< Atomic read error */ +#define LBC_ERR_CHIP_SELECT 0x00080000 /**< Unrecognized chip select */ + +#define LBC_ERR_ALL (LBC_ERR_BUS_MONITOR | LBC_ERR_PARITY_ECC | \ + LBC_ERR_WRITE_PROTECT | LBC_ERR_ATOMIC_WRITE | \ + LBC_ERR_ATOMIC_READ | LBC_ERR_CHIP_SELECT) + /**< All possible errors */ +/* @} */ +/** @} */ /* end of lbc_exception_grp group */ + +#define LBC_INCORRECT_ERROR_REPORT_ERRATA + +#define LBC_NUM_OF_BANKS 8 +#define LBC_MAX_CS_SIZE 0x0000000100000000LL +#define LBC_ATOMIC_OPERATION_SUPPORT +#define LBC_PARITY_SUPPORT +#define LBC_ADDRESS_HOLD_TIME_CTRL +#define LBC_HIGH_CLK_DIVIDERS +#define LBC_FCM_AVAILABLE + +/***************************************************************************** + GPIO INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define GPIO_NUM_OF_PORTS 1 /**< Number of ports in GPIO module; + Each port contains up to 32 i/O pins. */ + +#define GPIO_VALID_PIN_MASKS \ + { /* Port A */ 0xFFFFFFFF } + +#define GPIO_VALID_INTR_MASKS \ + { /* Port A */ 0xFFFFFFFF } + +#endif /* __PART_INTEGRATION_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/part_ext.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File part_ext.h + + @Description Definitions for the part (integration) module. +*//***************************************************************************/ + +#ifndef __PART_EXT_H +#define __PART_EXT_H + +#include "std_ext.h" +#include "part_integration_ext.h" + + +#if !(defined(MPC8306) || \ + defined(MPC8309) || \ + defined(MPC834x) || \ + defined(MPC836x) || \ + defined(MPC832x) || \ + defined(MPC837x) || \ + defined(MPC8568) || \ + defined(MPC8569) || \ + defined(P1020) || \ + defined(P1021) || \ + defined(P1022) || \ + defined(P1023) || \ + defined(P2020) || \ + defined(P2040) || \ + defined(P3041) || \ + defined(P4080) || \ + defined(SC4080) || \ + defined(P5020) || \ + defined(MSC814x)) +#error "unable to proceed without chip-definition" +#endif /* !(defined(MPC834x) || ... */ + + +/**************************************************************************//* + @Description Part data structure - must be contained in any integration + data structure. +*//***************************************************************************/ +typedef struct t_Part +{ + uintptr_t (* f_GetModuleBase)(t_Handle h_Part, e_ModuleId moduleId); + /**< Returns the address of the module's memory map base. */ + e_ModuleId (* f_GetModuleIdByBase)(t_Handle h_Part, uintptr_t baseAddress); + /**< Returns the module's ID according to its memory map base. */ +} t_Part; + + +#endif /* __PART_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/dpaa_integration_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/integrations/P3040_P4080_P5020/dpaa_integration_ext.h @@ -0,0 +1,452 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + + @File dpaa_integration_ext.h + + @Description P4080 FM external definitions and structures. +*//***************************************************************************/ +#ifndef __DPAA_INTEGRATION_EXT_H +#define __DPAA_INTEGRATION_EXT_H + +#include "std_ext.h" + + +typedef enum { + e_DPAA_SWPORTAL0 = 0, + e_DPAA_SWPORTAL1, + e_DPAA_SWPORTAL2, + e_DPAA_SWPORTAL3, + e_DPAA_SWPORTAL4, + e_DPAA_SWPORTAL5, + e_DPAA_SWPORTAL6, + e_DPAA_SWPORTAL7, + e_DPAA_SWPORTAL8, + e_DPAA_SWPORTAL9, + e_DPAA_SWPORTAL_DUMMY_LAST +} e_DpaaSwPortal; + +typedef enum { + e_DPAA_DCPORTAL0 = 0, + e_DPAA_DCPORTAL1, + e_DPAA_DCPORTAL2, + e_DPAA_DCPORTAL3, + e_DPAA_DCPORTAL4, + e_DPAA_DCPORTAL_DUMMY_LAST +} e_DpaaDcPortal; + +#define DPAA_MAX_NUM_OF_SW_PORTALS e_DPAA_SWPORTAL_DUMMY_LAST +#define DPAA_MAX_NUM_OF_DC_PORTALS e_DPAA_DCPORTAL_DUMMY_LAST + +/***************************************************************************** + QMan INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define QMAN_PM_DCP_COUNTERS_ERRATA_QMAN1 +#define QMAN_FQD_AVOID_BLK_ERRATA_QMAN2 +#define QMAN_DBG_TRC_EV_ERRATA_QMAN3 +#define QMAN_WQ_CS_CFG_ERRATA_QMAN4 +#define QMAN_SFDR_LEAK_ERRATA_QMAN5 +#define QMAN_FQ_TD_THRESH_ERRATA_QMAN6 +#define QMAN_FQ_INIT_ON_PARKED_ERRATA_QMAN7 +#define QMAN_NESN_ORR_ERRATA_QMAN8 +#define QMAN_ERN_REJ_CODE6_ERRATA_QMAN9 +#define QMAN_ERN_MOULTI_CORE_ERRATA_QMAN10 +#define QMAN_PERFMON_FOR_DCP_FQD_ERRATA_QMAN11 + +#define QM_MAX_NUM_OF_POOL_CHANNELS 15 +#define QM_MAX_NUM_OF_WQ 8 +#define QM_MAX_NUM_OF_SWP_AS 4 +#define QM_MAX_NUM_OF_CGS 256 +#define QM_MAX_NUM_OF_FQIDS (16*MEGABYTE) + +/**************************************************************************//** + @Description Work Queue Channel assignments in QMan. +*//***************************************************************************/ +typedef enum +{ + e_QM_FQ_CHANNEL_SWPORTAL0 = 0, /**< Dedicated channels serviced by software portals 0 to 9 */ + e_QM_FQ_CHANNEL_SWPORTAL1, + e_QM_FQ_CHANNEL_SWPORTAL2, + e_QM_FQ_CHANNEL_SWPORTAL3, + e_QM_FQ_CHANNEL_SWPORTAL4, + e_QM_FQ_CHANNEL_SWPORTAL5, + e_QM_FQ_CHANNEL_SWPORTAL6, + e_QM_FQ_CHANNEL_SWPORTAL7, + e_QM_FQ_CHANNEL_SWPORTAL8, + e_QM_FQ_CHANNEL_SWPORTAL9, + + e_QM_FQ_CHANNEL_POOL1 = 0x21, /**< Pool channels that can be serviced by any of the software portals */ + e_QM_FQ_CHANNEL_POOL2, + e_QM_FQ_CHANNEL_POOL3, + e_QM_FQ_CHANNEL_POOL4, + e_QM_FQ_CHANNEL_POOL5, + e_QM_FQ_CHANNEL_POOL6, + e_QM_FQ_CHANNEL_POOL7, + e_QM_FQ_CHANNEL_POOL8, + e_QM_FQ_CHANNEL_POOL9, + e_QM_FQ_CHANNEL_POOL10, + e_QM_FQ_CHANNEL_POOL11, + e_QM_FQ_CHANNEL_POOL12, + e_QM_FQ_CHANNEL_POOL13, + e_QM_FQ_CHANNEL_POOL14, + e_QM_FQ_CHANNEL_POOL15, + + e_QM_FQ_CHANNEL_FMAN0_SP0 = 0x40, /**< Dedicated channels serviced by Direct Connect Portal 0: + connected to FMan 0; assigned in incrementing order to + each sub-portal (SP) in the portal */ + e_QM_FQ_CHANNEL_FMAN0_SP1, + e_QM_FQ_CHANNEL_FMAN0_SP2, + e_QM_FQ_CHANNEL_FMAN0_SP3, + e_QM_FQ_CHANNEL_FMAN0_SP4, + e_QM_FQ_CHANNEL_FMAN0_SP5, + e_QM_FQ_CHANNEL_FMAN0_SP6, + e_QM_FQ_CHANNEL_FMAN0_SP7, + e_QM_FQ_CHANNEL_FMAN0_SP8, + e_QM_FQ_CHANNEL_FMAN0_SP9, + e_QM_FQ_CHANNEL_FMAN0_SP10, + e_QM_FQ_CHANNEL_FMAN0_SP11, + + e_QM_FQ_CHANNEL_FMAN1_SP0 = 0x60, + e_QM_FQ_CHANNEL_FMAN1_SP1, + e_QM_FQ_CHANNEL_FMAN1_SP2, + e_QM_FQ_CHANNEL_FMAN1_SP3, + e_QM_FQ_CHANNEL_FMAN1_SP4, + e_QM_FQ_CHANNEL_FMAN1_SP5, + e_QM_FQ_CHANNEL_FMAN1_SP6, + e_QM_FQ_CHANNEL_FMAN1_SP7, + e_QM_FQ_CHANNEL_FMAN1_SP8, + e_QM_FQ_CHANNEL_FMAN1_SP9, + e_QM_FQ_CHANNEL_FMAN1_SP10, + e_QM_FQ_CHANNEL_FMAN1_SP11, + + e_QM_FQ_CHANNEL_CAAM = 0x80, /**< Dedicated channel serviced by Direct Connect Portal 2: + connected to SEC 4.x */ + + e_QM_FQ_CHANNEL_PME = 0xA0, /**< Dedicated channel serviced by Direct Connect Portal 3: + connected to PME */ +} e_QmFQChannel; + +/* p4080-rev1 unique features */ +#define QM_CGS_NO_FRAME_MODE + +/***************************************************************************** + BMan INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define BM_MAX_NUM_OF_POOLS 64 + +/***************************************************************************** + SEC INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +/* SEC erratas */ +#ifdef UNDER_CONSTRUCTION_IPSEC +#define SEC_IPV6_UDP_CHECKSUM_UPDATE +#define SEC_UDP_LENGTH_UPDATE +#endif /* UNDER_CONSTRUCTION_IPSEC */ + +/***************************************************************************** + FM INTEGRATION-SPECIFIC DEFINITIONS +******************************************************************************/ +#define INTG_MAX_NUM_OF_FM 2 + +/* Ports defines */ +#define FM_MAX_NUM_OF_1G_RX_PORTS 5 +#define FM_MAX_NUM_OF_10G_RX_PORTS 1 +#define FM_MAX_NUM_OF_RX_PORTS (FM_MAX_NUM_OF_10G_RX_PORTS+FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_1G_TX_PORTS 5 +#define FM_MAX_NUM_OF_10G_TX_PORTS 1 +#define FM_MAX_NUM_OF_TX_PORTS (FM_MAX_NUM_OF_10G_TX_PORTS+FM_MAX_NUM_OF_1G_TX_PORTS) +#define FM_MAX_NUM_OF_OH_PORTS 7 +#define FM_MAX_NUM_OF_1G_MACS (FM_MAX_NUM_OF_1G_RX_PORTS) +#define FM_MAX_NUM_OF_10G_MACS (FM_MAX_NUM_OF_10G_RX_PORTS) +#define FM_MAX_NUM_OF_MACS (FM_MAX_NUM_OF_1G_MACS+FM_MAX_NUM_OF_10G_MACS) + + +#define FM_PORT_MAX_NUM_OF_EXT_POOLS 8 /**< Number of external BM pools per Rx port */ +#define FM_PORT_NUM_OF_CONGESTION_GRPS 256 /**< Total number of congestion groups in QM */ +#define FM_MAX_NUM_OF_SUB_PORTALS 12 +#define FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS 0 + +/* RAMs defines */ +#define FM_MURAM_SIZE (160 * KILOBYTE) +#define FM_IRAM_SIZE ( 64 * KILOBYTE) + +/* PCD defines */ +#define FM_PCD_PLCR_NUM_ENTRIES 256 /**< Total number of policer profiles */ +#define FM_PCD_KG_NUM_OF_SCHEMES 32 /**< Total number of KG schemes */ +#define FM_PCD_MAX_NUM_OF_CLS_PLANS 256 /**< Number of classification plan entries. */ + +/* RTC defines */ +#define FM_RTC_NUM_OF_ALARMS 2 /**< RTC number of alarms */ +#define FM_RTC_NUM_OF_PERIODIC_PULSES 2 /**< RTC number of periodic pulses */ +#define FM_RTC_NUM_OF_EXT_TRIGGERS 2 /**< RTC number of external triggers */ + +/* QMI defines */ +#define QMI_MAX_NUM_OF_TNUMS 64 +#define MAX_QMI_DEQ_SUBPORTAL 12 +#define QMI_DEF_TNUMS_THRESH 48 + +/* FPM defines */ +#define FM_NUM_OF_FMAN_CTRL_EVENT_REGS 4 + +/* DMA defines */ +#define DMA_THRESH_MAX_COMMQ 31 +#define DMA_THRESH_MAX_BUF 127 + +/* BMI defines */ +#define BMI_MAX_NUM_OF_TASKS 128 +#define BMI_MAX_NUM_OF_DMAS 32 +#define BMI_MAX_FIFO_SIZE (FM_MURAM_SIZE) +#define PORT_MAX_WEIGHT 16 + +#ifdef UNDER_CONSTRUCTION_FRAG_REASSEMBLY +/* Reassembly defines */ +#define FM_MAX_NUM_OF_REASSEMBLY_PORTS 4 +#endif /* UNDER_CONSTRUCTION_FRAG_REASSEMBLY */ + + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmEventModules{ + e_FM_MOD_PRS, /**< Parser event */ + e_FM_MOD_KG, /**< Keygen event */ + e_FM_MOD_PLCR, /**< Policer event */ + e_FM_MOD_10G_MAC, /**< 10G MAC error event */ + e_FM_MOD_1G_MAC, /**< 1G MAC error event */ + e_FM_MOD_TMR, /**< Timer event */ + e_FM_MOD_1G_MAC_TMR, /**< 1G MAC timer event */ + e_FM_MOD_FMAN_CTRL, /**< FMAN Controller timer event */ + e_FM_MOD_DUMMY_LAST +} e_FmEventModules; + +/**************************************************************************//** + @Description Enum for interrupts types +*//***************************************************************************/ +typedef enum e_FmIntrType { + e_FM_INTR_TYPE_ERR, + e_FM_INTR_TYPE_NORMAL +} e_FmIntrType; + +/**************************************************************************//** + @Description Enum for inter-module interrupts registration +*//***************************************************************************/ +typedef enum e_FmInterModuleEvent { + e_FM_EV_PRS, /**< Parser event */ + e_FM_EV_ERR_PRS, /**< Parser error event */ + e_FM_EV_KG, /**< Keygen event */ + e_FM_EV_ERR_KG, /**< Keygen error event */ + e_FM_EV_PLCR, /**< Policer event */ + e_FM_EV_ERR_PLCR, /**< Policer error event */ + e_FM_EV_ERR_10G_MAC0, /**< 10G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC0, /**< 1G MAC 0 error event */ + e_FM_EV_ERR_1G_MAC1, /**< 1G MAC 1 error event */ + e_FM_EV_ERR_1G_MAC2, /**< 1G MAC 2 error event */ + e_FM_EV_ERR_1G_MAC3, /**< 1G MAC 3 error event */ + e_FM_EV_ERR_1G_MAC4, /**< 1G MAC 4 error event */ + e_FM_EV_TMR, /**< Timer event */ + e_FM_EV_1G_MAC1, /**< 1G MAC 1 event */ + e_FM_EV_1G_MAC2, /**< 1G MAC 2 event */ + e_FM_EV_1G_MAC3, /**< 1G MAC 3 event */ + e_FM_EV_1G_MAC4, /**< 1G MAC 3 event */ + e_FM_EV_1G_MAC0_TMR, /**< 1G MAC 0 Timer event */ + e_FM_EV_1G_MAC1_TMR, /**< 1G MAC 1 Timer event */ + e_FM_EV_1G_MAC2_TMR, /**< 1G MAC 2 Timer event */ + e_FM_EV_1G_MAC3_TMR, /**< 1G MAC 3 Timer event */ + e_FM_EV_1G_MAC4_TMR, /**< 1G MAC 4 Timer event */ + e_FM_EV_FMAN_CTRL_0, /**< Fman controller event 0 */ + e_FM_EV_FMAN_CTRL_1, /**< Fman controller event 1 */ + e_FM_EV_FMAN_CTRL_2, /**< Fman controller event 2 */ + e_FM_EV_FMAN_CTRL_3, /**< Fman controller event 3 */ + e_FM_EV_DUMMY_LAST +} e_FmInterModuleEvent; + +#define GET_FM_MODULE_EVENT(mod, id, intrType, event) \ + switch(mod){ \ + case e_FM_MOD_PRS: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PRS : e_FM_EV_PRS; \ + break; \ + case e_FM_MOD_KG: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_KG : e_FM_EV_DUMMY_LAST; \ + break; \ + case e_FM_MOD_PLCR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PLCR : e_FM_EV_PLCR; \ + break; \ + case e_FM_MOD_10G_MAC: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_10G_MAC0 : e_FM_EV_DUMMY_LAST;\ + break; \ + case e_FM_MOD_1G_MAC: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC0 : e_FM_EV_DUMMY_LAST; break; \ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC1 : e_FM_EV_DUMMY_LAST; break; \ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC2 : e_FM_EV_DUMMY_LAST; break; \ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC3 : e_FM_EV_DUMMY_LAST; break; \ + case(4): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_1G_MAC4 : e_FM_EV_DUMMY_LAST; break; \ + } \ + break; \ + case e_FM_MOD_TMR: \ + if (id) event = e_FM_EV_DUMMY_LAST; \ + else event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_TMR; \ + break; \ + case e_FM_MOD_1G_MAC_TMR: \ + switch(id){ \ + case(0): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC0_TMR; break;\ + case(1): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC1_TMR; break;\ + case(2): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC2_TMR; break;\ + case(3): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC3_TMR; break;\ + case(4): event = (intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_1G_MAC4_TMR; break;\ + } \ + break; \ + case e_FM_MOD_FMAN_CTRL: \ + if (intrType == e_FM_INTR_TYPE_ERR) event = e_FM_EV_DUMMY_LAST; \ + else switch(id){ \ + case(0): event = e_FM_EV_FMAN_CTRL_0; break; \ + case(1): event = e_FM_EV_FMAN_CTRL_1; break; \ + case(2): event = e_FM_EV_FMAN_CTRL_2; break; \ + case(3): event = e_FM_EV_FMAN_CTRL_3; break; \ + } \ + break; \ + default: event = e_FM_EV_DUMMY_LAST; \ + break;} + +#define FM_CHECK_PORT_RESTRICTIONS(__validPorts, __newPortIndx) TRUE + +/* p4080-rev1 unique features */ +#define FM_PARTITION_ARRAY +#define FM_PPPOE_NO_MTU_CHECK + +/* p4080 unique features */ +#ifdef UNDER_CONSTRUCTION_IPSEC +#define FM_ETH_TYPE_FIX +#define FM_DISABLE_SEC_ERRORS +#endif /* UNDER_CONSTRUCTION_IPSEC */ +#define FM_QMI_DEQ_OPTIONS_SUPPORT +#define FM_NO_DISPATCH_RAM_ECC +#define FM_FIFO_ALLOCATION_OLD_ALG +#define FM_NO_WATCHDOG +#define FM_NO_TNUM_AGING +#define FM_NO_TGEC_LOOPBACK +#define FM_KG_NO_BYPASS_FQID_GEN +#define FM_KG_NO_BYPASS_PLCR_PROFILE_GEN +#define FM_NO_BACKUP_POOLS +#define FM_NO_OP_OBSERVED_POOLS +#define FM_NO_ADVANCED_RATE_LIMITER +#define FM_NO_OP_OBSERVED_CGS + +/* FM erratas */ +#define FM_SINGLE_MDIO_ERRATA_GEN8 /* implemented in platform */ +#define FM_HALT_SIG_ERRATA_GEN12 + +#define FM_10G_MDIO_HOLD_ERRATA_XAUI3 /* implemented in platform */ +#define FM_10G_PCS_ALIGNMENT_ERRATA_XAUI4 /* implemented in platform */ + +#define FM_IEEE_BAD_TS_ERRATA_IEEE1588_A001 /* No implementation, Out of LLD scope */ + +#define FM_FALSE_RDRP_ERRATA_10GMAC_A001 /* No implementation, Out of LLD scope */ +#define FM_RX_EXTRA_BYTES_ERRATA_10GMAC_A002 /* No implementation, Out of LLD scope */ +#define FM_TX_PAUSE_ON_ENABLE_ERRATA_10GMAC_A003 /* No implementation, Out of LLD scope */ +#define FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 +#define FM_TX_SHORT_FRAME_BAD_TS_ERRATA_10GMAC_A006 /* No implementation, Out of LLD scope */ +#define FM_TX_FIFO_CORRUPTION_ERRATA_10GMAC_A007 +#define FM_ECC_HALT_NO_SYNC_ERRATA_10GMAC_A008 + +#define FM_TX_INVALID_ECC_ERRATA_10GMAC_A009 + +#define FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_RX_PREAM_4_ERRATA_DTSEC_A001 FM_NO_RX_PREAM_ERRATA_DTSECx1 +#define FM_GRS_ERRATA_DTSEC_A002 +#define FM_BAD_TX_TS_IN_B_2_B_ERRATA_DTSEC_A003 +#define FM_GTS_ERRATA_DTSEC_A004 +#define FM_PAUSE_BLOCK_ERRATA_DTSEC_A006 /* do nothing */ +#define FM_RESERVED_ACCESS_TO_DISABLED_DEV_ERRATA_DTSEC_A0011 /* do nothing */ +#define FM_GTS_AFTER_MAC_ABORTED_FRAME_ERRATA_DTSEC_A0012 FM_GTS_ERRATA_DTSEC_A004 + +#define FM_SHORT_PAUSE_TIME_ERRATA_DTSEC1 +#define FM_MAGIC_PACKET_UNRECOGNIZED_ERRATA_DTSEC2 /* No implementation, Out of LLD scope */ +#define FM_10_100_SGMII_NO_TS_ERRATA_DTSEC3 +#define FM_TX_LOCKUP_ERRATA_DTSEC6 + +#define FM_IM_TX_SYNC_SKIP_TNUM_ERRATA_FMAN_A001 /* Implemented by ucode */ +#define FM_RX_PIPELINE_OF_DATA_CORRUPTION_ERRATA_FMAN_A002 /* No implementation, Out of LLD scope */ +#define FM_HC_DEF_FQID_ONLY_ERRATA_FMAN_A003 /* Implemented by ucode */ + +#define FM_1588_SRC_CLK_ERRATA_FMAN1 +#define FM_NO_RUNNING_SUM_FOR_DBG_N_SWPRS_ERRATA_FMAN2 /* No implementation, Out of LLD scope */ +#define FM_IM_TX_SHARED_TNUM_ERRATA_FMAN4 /* Implemented by ucode */ +#define FM_IM_GS_DEADLOCK_ERRATA_FMAN5 /* Implemented by ucode */ +#define FM_PORT_SYNC_ERRATA_FMAN6 +#define FM_RAM_LIST_ERR_IRQ_ERRATA_FMAN8 +#define FM_BMI_PIPELINE_ERR_IRQ_ERRATA_FMAN9 +#define FM_IM_DEQ_PIPELINE_DEPTH_ERRATA_FMAN10 /* Implemented by ucode */ +#define FM_CC_GEN6_MISSMATCH_ERRATA_FMAN12 /* Implemented by ucode */ +#define FM_CC_CHANGE_SHARED_TNUM_ERRATA_FMAN13 /* Implemented by ucode */ +#define FM_IM_LARGE_MRBLR_ERRATA_FMAN15 /* Implemented by ucode */ +#define FM_RESET_ERRATA_FMAN16 /* No implementation, Out of LLD scope */ +#define FM_IPV4_HDRLEN0_ERRATA_FMAN17 /* No implementation, Out of LLD scope */ +#define FM_INCORRECT_CS_ERRATA_FMAN18 +#define FM_ILLEGAL_FRM_LEN_ERRATA_FMAN20 /* No implementation, Out of LLD scope */ +#define FM_OP_PORT_QMAN_REJECT_ERRATA_FMAN21 + +#define FM_PRS_L4_SHELL_ERRATA_FMANb +#define FM_BMI_TO_RISC_ENQ_ERRATA_FMANc +#define FM_INVALID_SWPRS_DATA_ERRATA_FMANd /* No implementation, Out of LLD scope */ +//#define FM_PRS_L4_NO_CLEAR_ERRATA_FMANe /* No implementation, No patch yet */ +//#define FM_PRS_MPLS_ERROR_ERRATA_FMANf /* No implementation, No patch yet */ +#define FM_PORT_COUNTERS_ERRATA_FMANg +#define FM_BAD_RX_FD_ERRATA_FMANh /* No implementation, Out of LLD scope */ +//#define FM_PRS_MPLS_SSA_ERRATA_FMANj /* No implementation, No patch yet */ +//#define FM_PRS_INITIAL_PLANID_ERRATA_FMANk /* No implementation, No patch yet */ + + +#define FM_OP_PARTITION_ERRATA_FMANx8 +#define FM_PORT_DISABLED_ERRATA_FMANx9 +#define FM_TX_PORT_IM_OR_ERRATA_FMANx11 /* Implemented by ucode */ +#define FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 +#define FM_PORT_OTF_CHANGES_ERRATA_FMANx12 FM_PORT_EXCESSIVE_BUDGET_ERRATA_FMANx16 +#define FM_SOFT_RESET_ERRATA_FMANx15 /* No implementation, Out of LLD scope */ + +#define FM_UCODE_NOT_RESET_ERRATA_BUGZILLA6173 + +#define FM_PRS_MEM_ERRATA_FMAN_SW003 +#define FM_LEN_CHECK_ERRATA_FMAN_SW002 +#define FM_10G_REM_N_LCL_FLT_EX_ERRATA_10GMAC001 + +#ifdef UNDER_CONSTRUCTION_IPSEC +#define FM_NO_COPY_CTXA_CTXB_ERRATA_FMAN_SW001 +#endif /* UNDER_CONSTRUCTION_IPSEC */ + + +#endif /* __DPAA_INTEGRATION_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/etc/sprint_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/etc/sprint_ext.h @@ -0,0 +1,125 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + + @File sprint_ext.h + + @Description Debug routines (externals). + +*//***************************************************************************/ + +#ifndef __SPRINT_EXT_H +#define __SPRINT_EXT_H + + +#if defined(NCSW_LINUX) && defined(__KERNEL__) +#include + +#elif defined(NCSW_LINUX_USD) +#include +#include "stdarg_ext.h" +#include "std_ext.h" + +extern int vsscanf(const char *, const char *, va_list); + +#elif defined(NCSW_VXWORKS) +#include "private/stdioP.h" + +#else +#include +#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ + +#include "std_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group sprint_id Sprint + + @Description Sprint & Sscan module functions,definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function Sprint + + @Description Format a string and place it in a buffer. + + @Param[in] buff - The buffer to place the result into. + @Param[in] str - The format string to use. + @Param[in] ... - Arguments for the format string. + + @Return Number of bytes formatted. +*//***************************************************************************/ +int Sprint(char *buff, const char *str, ...); + +/**************************************************************************//** + @Function Snprint + + @Description Format a string and place it in a buffer. + + @Param[in] buf - The buffer to place the result into. + @Param[in] size - The size of the buffer, including the trailing null space. + @Param[in] fmt - The format string to use. + @Param[in] ... - Arguments for the format string. + + @Return Number of bytes formatted. +*//***************************************************************************/ +int Snprint(char * buf, uint32_t size, const char *fmt, ...); + +/**************************************************************************//** + @Function Sscan + + @Description Unformat a buffer into a list of arguments. + + @Param[in] buf - input buffer. + @Param[in] fmt - formatting of buffer. + @Param[out] ... - resulting arguments. + + @Return Number of bytes unformatted. +*//***************************************************************************/ +int Sscan(const char * buf, const char * fmt, ...); + +/** @} */ /* end of sprint_id group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __SPRINT_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/etc/mm_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/etc/mm_ext.h @@ -0,0 +1,300 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + /**************************************************************************//** + + @File mm_ext.h + + @Description Memory Manager Application Programming Interface +*//***************************************************************************/ +#ifndef __MM_EXT +#define __MM_EXT + +#include "std_ext.h" + +#define MM_MAX_ALIGNMENT 20 /* Alignments from 2 to 128 are available + where maximum alignment defined as + MM_MAX_ALIGNMENT power of 2 */ + +#define MM_MAX_NAME_LEN 32 + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group mm_grp Flexible Memory Manager + + @Description Flexible Memory Manager module functions,definitions and enums. + (All of the following functions,definitions and enums can be found in mm_ext.h) + + @{ +*//***************************************************************************/ + + +/**************************************************************************//** + @Function MM_Init + + @Description Initializes a new MM object. + + It initializes a new memory block consisting of base address + and size of the available memory by calling to MemBlock_Init + routine. It is also initializes a new free block for each + by calling FreeBlock_Init routine, which is pointed to + the almost all memory started from the required alignment + from the base address and to the end of the memory. + The handle to the new MM object is returned via "MM" + argument (passed by reference). + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the MM. + @Param[in] size - Size of the MM. + + @Return E_OK is returned on success. E_NOMEMORY is returned if the new MM object or a new free block can not be initialized. +*//***************************************************************************/ +t_Error MM_Init(t_Handle *h_MM, uint64_t base, uint64_t size); + +/**************************************************************************//** + @Function MM_Get + + @Description Allocates a block of memory according to the given size and the alignment. + + The Alignment argument tells from which + free list allocate a block of memory. 2^alignment indicates + the alignment that the base address of the allocated block + should have. So, the only values 1, 2, 4, 8, 16, 32 and 64 + are available for the alignment argument. + The routine passes through the specific free list of free + blocks and seeks for a first block that have anough memory + that is required (best fit). + After the block is found and data is allocated, it calls + the internal MM_CutFree routine to update all free lists + do not include a just allocated block. Of course, each + free list contains a free blocks with the same alignment. + It is also creates a busy block that holds + information about an allocated block. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] size - Size of the MM. + @Param[in] alignment - Index as a power of two defines a required + alignment (in bytes); Should be 1, 2, 4, 8, 16, 32 or 64 + @Param[in] name - The name that specifies an allocated block. + + @Return base address of an allocated block ILLEGAL_BASE if can't allocate a block +*//***************************************************************************/ +uint64_t MM_Get(t_Handle h_MM, uint64_t size, uint64_t alignment, char *name); + +/**************************************************************************//** + @Function MM_GetBase + + @Description Gets the base address of the required MM objects. + + @Param[in] h_MM - Handle to the MM object. + + @Return base address of the block. +*//***************************************************************************/ +uint64_t MM_GetBase(t_Handle h_MM); + +/**************************************************************************//** + @Function MM_GetForce + + @Description Force memory allocation. + + It means to allocate a block of memory of the given + size from the given base address. + The routine checks if the required block can be allocated + (that is it is free) and then, calls the internal MM_CutFree + routine to update all free lists do not include that block. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the MM. + @Param[in] size - Size of the MM. + @Param[in] name - Name that specifies an allocated block. + + @Return base address of an allocated block, ILLEGAL_BASE if can't allocate a block. +*//***************************************************************************/ +uint64_t MM_GetForce(t_Handle h_MM, uint64_t base, uint64_t size, char *name); + +/**************************************************************************//** + @Function MM_GetForceMin + + @Description Allocates a block of memory according to the given size, the alignment and minimum base address. + + The Alignment argument tells from which + free list allocate a block of memory. 2^alignment indicates + the alignment that the base address of the allocated block + should have. So, the only values 1, 2, 4, 8, 16, 32 and 64 + are available for the alignment argument. + The minimum baser address forces the location of the block + to be from a given address onward. + The routine passes through the specific free list of free + blocks and seeks for the first base address equal or smaller + than the required minimum address and end address larger than + than the required base + its size - i.e. that may contain + the required block. + After the block is found and data is allocated, it calls + the internal MM_CutFree routine to update all free lists + do not include a just allocated block. Of course, each + free list contains a free blocks with the same alignment. + It is also creates a busy block that holds + information about an allocated block. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] size - Size of the MM. + @Param[in] alignment - Index as a power of two defines a required + alignment (in bytes); Should be 1, 2, 4, 8, 16, 32 or 64 + @Param[in] min - The minimum base address of the block. + @Param[in] name - Name that specifies an allocated block. + + @Return base address of an allocated block,ILLEGAL_BASE if can't allocate a block. +*//***************************************************************************/ +uint64_t MM_GetForceMin(t_Handle h_MM, + uint64_t size, + uint64_t alignment, + uint64_t min, + char *name); + +/**************************************************************************//** + @Function MM_Put + + @Description Puts a block of memory of the given base address back to the memory. + + It checks if there is a busy block with the + given base address. If not, it returns 0, that + means can't free a block. Otherwise, it gets parameters of + the busy block and after it updates lists of free blocks, + removes that busy block from the list by calling to MM_CutBusy + routine. + After that it calls to MM_AddFree routine to add a new free + block to the free lists. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the MM. + + @Return The size of bytes released, 0 if failed. +*//***************************************************************************/ +uint64_t MM_Put(t_Handle h_MM, uint64_t base); + +/**************************************************************************//** + @Function MM_PutForce + + @Description Releases a block of memory of the required size from the required base address. + + First, it calls to MM_CutBusy routine + to cut a free block from the busy list. And then, calls to + MM_AddFree routine to add the free block to the free lists. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of of a block to free. + @Param[in] size - Size of a block to free. + + @Return The number of bytes released, 0 on failure. +*//***************************************************************************/ +uint64_t MM_PutForce(t_Handle h_MM, uint64_t base, uint64_t size); + +/**************************************************************************//** + @Function MM_Add + + @Description Adds a new memory block for memory allocation. + + When a new memory block is initialized and added to the + memory list, it calls to MM_AddFree routine to add the + new free block to the free lists. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] base - Base address of the memory block. + @Param[in] size - Size of the memory block. + + @Return E_OK on success, otherwise returns an error code. +*//***************************************************************************/ +t_Error MM_Add(t_Handle h_MM, uint64_t base, uint64_t size); + +/**************************************************************************//** + @Function MM_Dump + + @Description Prints results of free and busy lists into the file. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] buff - A pointer to a buffer +*//***************************************************************************/ +void MM_Dump(t_Handle h_MM, void *buff); + +/**************************************************************************//** + @Function MM_Free + + @Description Releases memory allocated for MM object. + + @Param[in] h_MM - Handle of the MM object. +*//***************************************************************************/ +void MM_Free(t_Handle h_MM); + +/**************************************************************************//** + @Function MM_GetMemBlock + + @Description Returns base address of the memory block specified by the index. + + If index is 0, returns base address + of the first memory block, 1 - returns base address + of the second memory block, etc. + Note, those memory blocks are allocated by the + application before MM_Init or MM_Add and have to + be released by the application before or after invoking + the MM_Free routine. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] index - Index of the memory block. + + @Return valid base address or ILLEGAL_BASE if no memory block specified by the index. +*//***************************************************************************/ +uint64_t MM_GetMemBlock(t_Handle h_MM, int index); + +/**************************************************************************//** + @Function MM_InRange + + @Description Checks if a specific address is in the memory range of the passed MM object. + + @Param[in] h_MM - Handle to the MM object. + @Param[in] addr - The address to be checked. + + @Return TRUE if the address is in the address range of the block, FALSE otherwise. +*//***************************************************************************/ +bool MM_InRange(t_Handle h_MM, uint64_t addr); + + +/** @} */ /* end of mm_grp group */ +/** @} */ /* end of etc_id group */ + +#endif /* __MM_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/etc/list_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/etc/list_ext.h @@ -0,0 +1,357 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File list_ext.h + + @Description External prototypes for list.c +*//***************************************************************************/ + +#ifndef __LIST_EXT_H +#define __LIST_EXT_H + + +#include "std_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group list_id List + + @Description List module functions,definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description List structure. +*//***************************************************************************/ +typedef struct List +{ + struct List *p_Next; /**< A pointer to the next list object */ + struct List *p_Prev; /**< A pointer to the previous list object */ +} t_List; + + +/**************************************************************************//** + @Function LIST_FIRST/LIST_LAST/LIST_NEXT/LIST_PREV + + @Description Macro to get first/last/next/previous entry in a list. + + @Param[in] p_List - A pointer to a list. +*//***************************************************************************/ +#define LIST_FIRST(p_List) (p_List)->p_Next +#define LIST_LAST(p_List) (p_List)->p_Prev +#define LIST_NEXT LIST_FIRST +#define LIST_PREV LIST_LAST + + +/**************************************************************************//** + @Function LIST_INIT + + @Description Macro for initialization of a list struct. + + @Param[in] lst - The t_List object to initialize. +*//***************************************************************************/ +#define LIST_INIT(lst) {&(lst), &(lst)} + + +/**************************************************************************//** + @Function LIST + + @Description Macro to declare of a list. + + @Param[in] listName - The list object name. +*//***************************************************************************/ +#define LIST(listName) t_List listName = LIST_INIT(listName) + + +/**************************************************************************//** + @Function INIT_LIST + + @Description Macro to initialize a list pointer. + + @Param[in] p_List - The list pointer. +*//***************************************************************************/ +#define INIT_LIST(p_List) LIST_FIRST(p_List) = LIST_LAST(p_List) = (p_List) + + +/**************************************************************************//** + @Function LIST_OBJECT + + @Description Macro to get the struct (object) for this entry. + + @Param[in] type - The type of the struct (object) this list is embedded in. + @Param[in] member - The name of the t_List object within the struct. + + @Return The structure pointer for this entry. +*//***************************************************************************/ +#define MEMBER_OFFSET(type, member) (PTR_TO_UINT(&((type *)0)->member)) +#define LIST_OBJECT(p_List, type, member) \ + ((type *)((char *)(p_List)-MEMBER_OFFSET(type, member))) + + +/**************************************************************************//** + @Function LIST_FOR_EACH + + @Description Macro to iterate over a list. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] p_Head - A pointer to the head for your list pointer. + + @Cautions You can't delete items with this routine. + For deletion use LIST_FOR_EACH_SAFE(). +*//***************************************************************************/ +#define LIST_FOR_EACH(p_Pos, p_Head) \ + for (p_Pos = LIST_FIRST(p_Head); p_Pos != (p_Head); p_Pos = LIST_NEXT(p_Pos)) + + +/**************************************************************************//** + @Function LIST_FOR_EACH_SAFE + + @Description Macro to iterate over a list safe against removal of list entry. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] p_Tmp - Another pointer to a list to use as temporary storage. + @Param[in] p_Head - A pointer to the head for your list pointer. +*//***************************************************************************/ +#define LIST_FOR_EACH_SAFE(p_Pos, p_Tmp, p_Head) \ + for (p_Pos = LIST_FIRST(p_Head), p_Tmp = LIST_FIRST(p_Pos); \ + p_Pos != (p_Head); \ + p_Pos = p_Tmp, p_Tmp = LIST_NEXT(p_Pos)) + + +/**************************************************************************//** + @Function LIST_FOR_EACH_OBJECT_SAFE + + @Description Macro to iterate over list of given type safely. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] p_Tmp - Another pointer to a list to use as temporary storage. + @Param[in] type - The type of the struct this is embedded in. + @Param[in] p_Head - A pointer to the head for your list pointer. + @Param[in] member - The name of the list_struct within the struct. + + @Cautions You can't delete items with this routine. + For deletion use LIST_FOR_EACH_SAFE(). +*//***************************************************************************/ +#define LIST_FOR_EACH_OBJECT_SAFE(p_Pos, p_Tmp, p_Head, type, member) \ + for (p_Pos = LIST_OBJECT(LIST_FIRST(p_Head), type, member), \ + p_Tmp = LIST_OBJECT(LIST_FIRST(&p_Pos->member), type, member); \ + &p_Pos->member != (p_Head); \ + p_Pos = p_Tmp, \ + p_Tmp = LIST_OBJECT(LIST_FIRST(&p_Pos->member), type, member)) + +/**************************************************************************//** + @Function LIST_FOR_EACH_OBJECT + + @Description Macro to iterate over list of given type. + + @Param[in] p_Pos - A pointer to a list to use as a loop counter. + @Param[in] type - The type of the struct this is embedded in. + @Param[in] p_Head - A pointer to the head for your list pointer. + @Param[in] member - The name of the list_struct within the struct. + + @Cautions You can't delete items with this routine. + For deletion use LIST_FOR_EACH_SAFE(). +*//***************************************************************************/ +#define LIST_FOR_EACH_OBJECT(p_Pos, type, p_Head, member) \ + for (p_Pos = LIST_OBJECT(LIST_FIRST(p_Head), type, member); \ + &p_Pos->member != (p_Head); \ + p_Pos = LIST_OBJECT(LIST_FIRST(&(p_Pos->member)), type, member)) + + +/**************************************************************************//** + @Function LIST_Add + + @Description Add a new entry to a list. + + Insert a new entry after the specified head. + This is good for implementing stacks. + + @Param[in] p_New - A pointer to a new list entry to be added. + @Param[in] p_Head - A pointer to a list head to add it after. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_Add(t_List *p_New, t_List *p_Head) +{ + LIST_PREV(LIST_NEXT(p_Head)) = p_New; + LIST_NEXT(p_New) = LIST_NEXT(p_Head); + LIST_PREV(p_New) = p_Head; + LIST_NEXT(p_Head) = p_New; +} + + +/**************************************************************************//** + @Function LIST_AddToTail + + @Description Add a new entry to a list. + + Insert a new entry before the specified head. + This is useful for implementing queues. + + @Param[in] p_New - A pointer to a new list entry to be added. + @Param[in] p_Head - A pointer to a list head to add it after. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_AddToTail(t_List *p_New, t_List *p_Head) +{ + LIST_NEXT(LIST_PREV(p_Head)) = p_New; + LIST_PREV(p_New) = LIST_PREV(p_Head); + LIST_NEXT(p_New) = p_Head; + LIST_PREV(p_Head) = p_New; +} + + +/**************************************************************************//** + @Function LIST_Del + + @Description Deletes entry from a list. + + @Param[in] p_Entry - A pointer to the element to delete from the list. + + @Return none. + + @Cautions LIST_IsEmpty() on entry does not return true after this, + the entry is in an undefined state. +*//***************************************************************************/ +static __inline__ void LIST_Del(t_List *p_Entry) +{ + LIST_PREV(LIST_NEXT(p_Entry)) = LIST_PREV(p_Entry); + LIST_NEXT(LIST_PREV(p_Entry)) = LIST_NEXT(p_Entry); +} + + +/**************************************************************************//** + @Function LIST_DelAndInit + + @Description Deletes entry from list and reinitialize it. + + @Param[in] p_Entry - A pointer to the element to delete from the list. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_DelAndInit(t_List *p_Entry) +{ + LIST_Del(p_Entry); + INIT_LIST(p_Entry); +} + + +/**************************************************************************//** + @Function LIST_Move + + @Description Delete from one list and add as another's head. + + @Param[in] p_Entry - A pointer to the list entry to move. + @Param[in] p_Head - A pointer to the list head that will precede our entry. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_Move(t_List *p_Entry, t_List *p_Head) +{ + LIST_Del(p_Entry); + LIST_Add(p_Entry, p_Head); +} + + +/**************************************************************************//** + @Function LIST_MoveToTail + + @Description Delete from one list and add as another's tail. + + @Param[in] p_Entry - A pointer to the entry to move. + @Param[in] p_Head - A pointer to the list head that will follow our entry. + + @Return none. +*//***************************************************************************/ +static __inline__ void LIST_MoveToTail(t_List *p_Entry, t_List *p_Head) +{ + LIST_Del(p_Entry); + LIST_AddToTail(p_Entry, p_Head); +} + + +/**************************************************************************//** + @Function LIST_IsEmpty + + @Description Tests whether a list is empty. + + @Param[in] p_List - A pointer to the list to test. + + @Return 1 if the list is empty, 0 otherwise. +*//***************************************************************************/ +static __inline__ int LIST_IsEmpty(t_List *p_List) +{ + return (LIST_FIRST(p_List) == p_List); +} + + +/**************************************************************************//** + @Function LIST_Append + + @Description Join two lists. + + @Param[in] p_NewList - A pointer to the new list to add. + @Param[in] p_Head - A pointer to the place to add it in the first list. + + @Return none. +*//***************************************************************************/ +void LIST_Append(t_List *p_NewList, t_List *p_Head); + + +/**************************************************************************//** + @Function LIST_NumOfObjs + + @Description Counts number of objects in the list + + @Param[in] p_List - A pointer to the list which objects are to be counted. + + @Return Number of objects in the list. +*//***************************************************************************/ +int LIST_NumOfObjs(t_List *p_List); + +/** @} */ /* end of list_id group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __LIST_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/etc/mem_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/etc/mem_ext.h @@ -0,0 +1,317 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File mem_ext.h + + @Description External prototypes for the memory manager object +*//***************************************************************************/ + +#ifndef __MEM_EXT_H +#define __MEM_EXT_H + +#include "std_ext.h" +#include "part_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group mem_id Slab Memory Manager + + @Description Slab Memory Manager module functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/* Each block is of the following structure: + * + * + * +-----------+----------+---------------------------+-----------+-----------+ + * | Alignment | Prefix | Data | Postfix | Alignment | + * | field | field | field | field | Padding | + * | | | | | | + * +-----------+----------+---------------------------+-----------+-----------+ + * and at the beginning of all bytes, an additional optional padding might reside + * to ensure that the first blocks data field is aligned as requested. + */ + + +#define MEM_MAX_NAME_LENGTH 8 + +/**************************************************************************//* + @Description Memory Segment structure +*//***************************************************************************/ + +typedef struct +{ + char name[MEM_MAX_NAME_LENGTH]; + /* The segment's name */ + uint8_t **p_Bases; /* Base addresses of the segments */ + uint8_t **p_BlocksStack; /* Array of pointers to blocks */ + t_Handle h_Spinlock; + uint16_t dataSize; /* Size of each data block */ + uint16_t prefixSize; /* How many bytes to reserve before the data */ + uint16_t postfixSize; /* How many bytes to reserve after the data */ + uint16_t alignment; /* Requested alignment for the data field */ + int allocOwner; /* Memory allocation owner */ + uint32_t getFailures; /* Number of times get failed */ + uint32_t num; /* Number of blocks in segment */ + uint32_t current; /* Current block */ + bool consecutiveMem; /* Allocate consecutive data blocks memory */ +#ifdef DEBUG_MEM_LEAKS + void *p_MemDbg; /* MEM debug database (MEM leaks detection) */ + uint32_t blockOffset; + uint32_t blockSize; +#endif /* DEBUG_MEM_LEAKS */ +} t_MemorySegment; + + + +/**************************************************************************//** + @Function MEM_Init + + @Description Create a new memory segment. + + @Param[in] name - Name of memory partition. + @Param[in] p_Handle - Handle to new segment is returned through here. + @Param[in] num - Number of blocks in new segment. + @Param[in] dataSize - Size of blocks in segment. + @Param[in] prefixSize - How many bytes to allocate before the data. + @Param[in] postfixSize - How many bytes to allocate after the data. + @Param[in] alignment - Requested alignment for data field (in bytes). + + @Return E_OK - success, E_NO_MEMORY - out of memory. +*//***************************************************************************/ +t_Error MEM_Init(char name[], + t_Handle *p_Handle, + uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment); + +/**************************************************************************//** + @Function MEM_InitSmart + + @Description Create a new memory segment. + + @Param[in] name - Name of memory partition. + @Param[in] p_Handle - Handle to new segment is returned through here. + @Param[in] num - Number of blocks in new segment. + @Param[in] dataSize - Size of blocks in segment. + @Param[in] prefixSize - How many bytes to allocate before the data. + @Param[in] postfixSize - How many bytes to allocate after the data. + @Param[in] alignment - Requested alignment for data field (in bytes). + @Param[in] memPartitionId - Memory partition ID for allocation. + @Param[in] consecutiveMem - Whether to allocate the memory blocks + continuously or not. + + @Return E_OK - success, E_NO_MEMORY - out of memory. +*//***************************************************************************/ +t_Error MEM_InitSmart(char name[], + t_Handle *p_Handle, + uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment, + uint8_t memPartitionId, + bool consecutiveMem); + +/**************************************************************************//** + @Function MEM_InitByAddress + + @Description Create a new memory segment with a specified base address. + + @Param[in] name - Name of memory partition. + @Param[in] p_Handle - Handle to new segment is returned through here. + @Param[in] num - Number of blocks in new segment. + @Param[in] dataSize - Size of blocks in segment. + @Param[in] prefixSize - How many bytes to allocate before the data. + @Param[in] postfixSize - How many bytes to allocate after the data. + @Param[in] alignment - Requested alignment for data field (in bytes). + @Param[in] address - The required base address. + + @Return E_OK - success, E_NO_MEMORY - out of memory. + *//***************************************************************************/ +t_Error MEM_InitByAddress(char name[], + t_Handle *p_Handle, + uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment, + uint8_t *address); + +/**************************************************************************//** + @Function MEM_Free + + @Description Free a specific memory segment. + + @Param[in] h_Mem - Handle to memory segment. + + @Return None. +*//***************************************************************************/ +void MEM_Free(t_Handle h_Mem); + +/**************************************************************************//** + @Function MEM_Get + + @Description Get a block of memory from a segment. + + @Param[in] h_Mem - Handle to memory segment. + + @Return Pointer to new memory block on success,0 otherwise. +*//***************************************************************************/ +void * MEM_Get(t_Handle h_Mem); + +/**************************************************************************//** + @Function MEM_GetN + + @Description Get up to N blocks of memory from a segment. + + The blocks are assumed to be of a fixed size (one size per segment). + + @Param[in] h_Mem - Handle to memory segment. + @Param[in] num - Number of blocks to allocate. + @Param[out] array - Array of at least num pointers to which the addresses + of the allocated blocks are written. + + @Return The number of blocks actually allocated. + + @Cautions Interrupts are disabled for all of the allocation loop. + Although this loop is very short for each block (several machine + instructions), you should not allocate a very large number + of blocks via this routine. +*//***************************************************************************/ +uint16_t MEM_GetN(t_Handle h_Mem, uint32_t num, void *array[]); + +/**************************************************************************//** + @Function MEM_Put + + @Description Put a block of memory back to a segment. + + @Param[in] h_Mem - Handle to memory segment. + @Param[in] p_Block - The block to return. + + @Return Pointer to new memory block on success,0 otherwise. +*//***************************************************************************/ +t_Error MEM_Put(t_Handle h_Mem, void *p_Block); + +/**************************************************************************//** + @Function MEM_ComputePartitionSize + + @Description calculate a tight upper boundary of the size of a partition with + given attributes. + + The returned value is suitable if one wants to use MEM_InitByAddress(). + + @Param[in] num - The number of blocks in the segment. + @Param[in] dataSize - Size of block to get. + @Param[in] prefixSize - The prefix size + @Param postfixSize - The postfix size + @Param[in] alignment - The requested alignment value (in bytes) + + @Return The memory block size a segment with the given attributes needs. +*//***************************************************************************/ +uint32_t MEM_ComputePartitionSize(uint32_t num, + uint16_t dataSize, + uint16_t prefixSize, + uint16_t postfixSize, + uint16_t alignment); + +#ifdef DEBUG_MEM_LEAKS +#if !(defined(__MWERKS__) && (__dest_os == __ppc_eabi)) +#error "Memory-Leaks-Debug option is supported only for freescale CodeWarrior" +#endif /* !(defined(__MWERKS__) && ... */ + +/**************************************************************************//** + @Function MEM_CheckLeaks + + @Description Report MEM object leaks. + + This routine is automatically called by the MEM_Free() routine, + but it can also be invoked while the MEM object is alive. + + @Param[in] h_Mem - Handle to memory segment. + + @Return None. +*//***************************************************************************/ +void MEM_CheckLeaks(t_Handle h_Mem); + +#else /* not DEBUG_MEM_LEAKS */ +#define MEM_CheckLeaks(h_Mem) +#endif /* not DEBUG_MEM_LEAKS */ + +/**************************************************************************//** + @Description Get base of MEM +*//***************************************************************************/ +#define MEM_GetBase(h_Mem) ((t_MemorySegment *)(h_Mem))->p_Bases[0] + +/**************************************************************************//** + @Description Get size of MEM block +*//***************************************************************************/ +#define MEM_GetSize(h_Mem) ((t_MemorySegment *)(h_Mem))->dataSize + +/**************************************************************************//** + @Description Get prefix size of MEM block +*//***************************************************************************/ +#define MEM_GetPrefixSize(h_Mem) ((t_MemorySegment *)(h_Mem))->prefixSize + +/**************************************************************************//** + @Description Get postfix size of MEM block +*//***************************************************************************/ +#define MEM_GetPostfixSize(h_Mem) ((t_MemorySegment *)(h_Mem))->postfixSize + +/**************************************************************************//** + @Description Get alignment of MEM block (in bytes) +*//***************************************************************************/ +#define MEM_GetAlignment(h_Mem) ((t_MemorySegment *)(h_Mem))->alignment + +/**************************************************************************//** + @Description Get the number of blocks in the segment +*//***************************************************************************/ +#define MEM_GetNumOfBlocks(h_Mem) ((t_MemorySegment *)(h_Mem))->num + +/** @} */ /* end of MEM group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __MEM_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/inc/etc/memcpy_ext.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/inc/etc/memcpy_ext.h @@ -0,0 +1,173 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File memcpy_ext.h + + @Description Efficient functions for copying and setting blocks of memory. +*//***************************************************************************/ + +#ifndef __MEMCPY_EXT_H +#define __MEMCPY_EXT_H + +#include "std_ext.h" + + +/**************************************************************************//** + @Group etc_id Utility Library Application Programming Interface + + @Description External routines. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group mem_cpy Memory Copy + + @Description Memory Copy module functions,definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Function MemCpy32 + + @Description Copies one memory buffer into another one in 4-byte chunks! + Which should be more efficient than byte by byte. + + For large buffers (over 60 bytes) this function is about 4 times + more efficient than the trivial memory copy. For short buffers + it is reduced to the trivial copy and may be a bit worse. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] pSrc - The address of the source buffer. + @Param[in] size - The number of bytes that will be copied from pSrc to pDst. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non-null parameters as source & destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void * MemCpy32(void* pDst,void* pSrc, uint32_t size); +void * IO2IOCpy32(void* pDst,void* pSrc, uint32_t size); +void * IO2MemCpy32(void* pDst,void* pSrc, uint32_t size); +void * Mem2IOCpy32(void* pDst,void* pSrc, uint32_t size); + +/**************************************************************************//** + @Function MemCpy64 + + @Description Copies one memory buffer into another one in 8-byte chunks! + Which should be more efficient than byte by byte. + + For large buffers (over 60 bytes) this function is about 8 times + more efficient than the trivial memory copy. For short buffers + it is reduced to the trivial copy and may be a bit worse. + + Some testing suggests that MemCpy32() preforms better than + MemCpy64() over small buffers. On average they break even at + 100 byte buffers. For buffers larger than that MemCpy64 is + superior. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] pSrc - The address of the source buffer. + @Param[in] size - The number of bytes that will be copied from pSrc to pDst. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameters as source & destination and size + that actually fits into their buffer. + + Do not use under Linux. +*//***************************************************************************/ +void * MemCpy64(void* pDst,void* pSrc, uint32_t size); + +/**************************************************************************//** + @Function MemSet32 + + @Description Sets all bytes of a memory buffer to a specific value, in + 4-byte chunks. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] val - Value to set destination bytes to. + @Param[in] size - The number of bytes that will be set to val. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameter as destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void * MemSet32(void* pDst, uint8_t val, uint32_t size); +void * IOMemSet32(void* pDst, uint8_t val, uint32_t size); + +/**************************************************************************//** + @Function MemSet64 + + @Description Sets all bytes of a memory buffer to a specific value, in + 8-byte chunks. + + @Param[in] pDst - The address of the destination buffer. + @Param[in] val - Value to set destination bytes to. + @Param[in] size - The number of bytes that will be set to val. + + @Return pDst (the address of the destination buffer). + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameter as destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void * MemSet64(void* pDst, uint8_t val, uint32_t size); + +/**************************************************************************//** + @Function MemDisp + + @Description Displays a block of memory in chunks of 32 bits. + + @Param[in] addr - The address of the memory to display. + @Param[in] size - The number of bytes that will be displayed. + + @Return None. + + @Cautions There is no parameter or boundary checking! It is up to the user + to supply non null parameter as destination and size + that actually fits into the destination buffer. +*//***************************************************************************/ +void MemDisp(uint8_t *addr, int size); + +/** @} */ /* end of mem_cpy group */ +/** @} */ /* end of etc_id group */ + + +#endif /* __MEMCPY_EXT_H */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/integrations/P1023/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/integrations/P1023/Makefile @@ -0,0 +1,9 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += module_strings.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/integrations/P1023/module_strings.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/integrations/P1023/module_strings.c @@ -0,0 +1,71 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* Module names for debug messages */ +const char *moduleStrings[] = +{ + "" /* MODULE_UNKNOWN */ + ,"MEM" /* MODULE_ */ + ,"MM" /* MODULE_MM */ + ,"CORE" /* MODULE_CORE */ + ,"P1023" /* MODULE_P1023 */ + ,"MII" /* MODULE_MII */ + ,"PM" /* MODULE_PM */ + ,"MMU" /* MODULE_MMU */ + ,"PIC" /* MODULE_PIC */ + ,"L2 cache" /* MODULE_L2_CACHE */ + ,"DUART" /* MODULE_DUART */ + ,"SerDes" /* MODULE_SERDES */ + ,"PIO" /* MODULE_PIO */ + ,"QM" /* MODULE_QM */ + ,"BM" /* MODULE_BM */ + ,"SEC" /* MODULE_SEC */ + ,"FM" /* MODULE_FM */ + ,"FM-MURAM" /* MODULE_FM_MURAM */ + ,"FM-PCD" /* MODULE_FM_PCD */ + ,"FM-RTC" /* MODULE_FM_RTC */ + ,"FM-MAC" /* MODULE_FM_MAC */ + ,"FM-Port" /* MODULE_FM_PORT */ + ,"FM-MACSEC" /* MODULE_FM_MACSEC */ + ,"FM-MACSEC-SecY" /* MODULE_FM_MACSEC_SECY */ + ,"ECM" /* MODULE_ECM */ + ,"DMA" /* MODULE_DMA */ + ,"DDR" /* MODULE_DDR */ + ,"LAW" /* MODULE_LAW */ + ,"LBC" /* MODULE_LBC */ + ,"I2C" /* MODULE_I2C */ + ,"ESPI" /* MODULE_ESPI */ + ,"PCI" /* MODULE_PCI */ + ,"DPA" /* MODULE_DPA */ + ,"USB" /* MODULE_USB */ +}; --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/Makefile @@ -0,0 +1,9 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += module_strings.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/module_strings.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/integrations/P3040_P4080_P5020/module_strings.c @@ -0,0 +1,62 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* Module names for debug messages */ +const char *moduleStrings[] = +{ + "???" /* MODULE_UNKNOWN */ + ,"MEM" /* MODULE_ */ + ,"MM" /* MODULE_MM */ + ,"CORE" /* MODULE_CORE */ + ,"P4080" /* MODULE_P4080 */ + ,"P4080-Platform" /* MODULE_P4080_PLTFRM */ + ,"PM" /* MODULE_PM */ + ,"MMU" /* MODULE_MMU */ + ,"PIC" /* MODULE_PIC */ + ,"L3 cache (CPC)" /* MODULE_CPC */ + ,"DUART" /* MODULE_DUART */ + ,"SerDes" /* MODULE_SERDES */ + ,"PIO" /* MODULE_PIO */ + ,"QM" /* MODULE_QM */ + ,"BM" /* MODULE_BM */ + ,"SEC" /* MODULE_SEC */ + ,"LAW" /* MODULE_LAW */ + ,"LBC" /* MODULE_LBC */ + ,"PAMU" /* MODULE_PAMU */ + ,"FM" /* MODULE_FM */ + ,"FM-MURAM" /* MODULE_FM_MURAM */ + ,"FM-PCD" /* MODULE_FM_PCD */ + ,"FM-RTC" /* MODULE_FM_RTC */ + ,"FM-MAC" /* MODULE_FM_MAC */ + ,"FM-Port" /* MODULE_FM_PORT */ + ,"DPA" /* MODULE_DPA */ +}; --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/Makefile +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/Makefile @@ -0,0 +1,11 @@ +# +# Makefile for the Freescale Ethernet controllers +# +EXTRA_CFLAGS += -DVERSION=\"\" +# +#Include netcomm SW specific definitions +include $(srctree)/drivers/net/dpa/NetCommSw/ncsw_config.mk + +obj-y += fsl-ncsw-etc.o + +fsl-ncsw-etc-objs := mm.o memcpy.o sprint.o list.o error.o --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/list.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/list.c @@ -0,0 +1,70 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + + @File list.c + + @Description Implementation of list. +*//***************************************************************************/ +#include "std_ext.h" +#include "list_ext.h" + + +void LIST_Append(t_List *p_NewList, t_List *p_Head) +{ + t_List *p_First = LIST_FIRST(p_NewList); + + if (p_First != p_NewList) + { + t_List *p_Last = LIST_LAST(p_NewList); + t_List *p_Cur = LIST_NEXT(p_Head); + + LIST_PREV(p_First) = p_Head; + LIST_FIRST(p_Head) = p_First; + LIST_NEXT(p_Last) = p_Cur; + LIST_LAST(p_Cur) = p_Last; + } +} + + +int LIST_NumOfObjs(t_List *p_List) +{ + t_List *p_Tmp; + int numOfObjs = 0; + + if (!LIST_IsEmpty(p_List)) + LIST_FOR_EACH(p_Tmp, p_List) + numOfObjs++; + + return numOfObjs; +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/mm.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/mm.c @@ -0,0 +1,1109 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "string_ext.h" +#include "error_ext.h" +#include "std_ext.h" +#include "sprint_ext.h" +#include "part_ext.h" +#include "xx_ext.h" + +#include "mm.h" + + + + +/********************************************************************** + * MM internal routines set * + **********************************************************************/ + +/**************************************************************** + * Routine: CreateBusyBlock + * + * Description: + * Initializes a new busy block of "size" bytes and started + * rom "base" address. Each busy block has a name that + * specified the purpose of the memory allocation. + * + * Arguments: + * base - base address of the busy block + * size - size of the busy block + * name - name that specified the busy block + * + * Return value: + * A pointer to new created structure returned on success; + * Otherwise, NULL. + ****************************************************************/ +static t_BusyBlock * CreateBusyBlock(uint64_t base, uint64_t size, char *name) +{ + t_BusyBlock *p_BusyBlock; + uint32_t n; + + p_BusyBlock = (t_BusyBlock *)XX_Malloc(sizeof(t_BusyBlock)); + if ( !p_BusyBlock ) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + p_BusyBlock->base = base; + p_BusyBlock->end = base + size; + + n = strlen(name); + if (n >= MM_MAX_NAME_LEN) + n = MM_MAX_NAME_LEN - 1; + strncpy(p_BusyBlock->name, name, MM_MAX_NAME_LEN-1); + p_BusyBlock->name[n] = '\0'; + p_BusyBlock->p_Next = 0; + + return p_BusyBlock; +} + +/**************************************************************** + * Routine: CreateNewBlock + * + * Description: + * Initializes a new memory block of "size" bytes and started + * from "base" address. + * + * Arguments: + * base - base address of the memory block + * size - size of the memory block + * + * Return value: + * A pointer to new created structure returned on success; + * Otherwise, NULL. + ****************************************************************/ +static t_MemBlock * CreateNewBlock(uint64_t base, uint64_t size) +{ + t_MemBlock *p_MemBlock; + + p_MemBlock = (t_MemBlock *)XX_Malloc(sizeof(t_MemBlock)); + if ( !p_MemBlock ) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + p_MemBlock->base = base; + p_MemBlock->end = base+size; + p_MemBlock->p_Next = 0; + + return p_MemBlock; +} + +/**************************************************************** + * Routine: CreateFreeBlock + * + * Description: + * Initializes a new free block of of "size" bytes and + * started from "base" address. + * + * Arguments: + * base - base address of the free block + * size - size of the free block + * + * Return value: + * A pointer to new created structure returned on success; + * Otherwise, NULL. + ****************************************************************/ +static t_FreeBlock * CreateFreeBlock(uint64_t base, uint64_t size) +{ + t_FreeBlock *p_FreeBlock; + + p_FreeBlock = (t_FreeBlock *)XX_Malloc(sizeof(t_FreeBlock)); + if ( !p_FreeBlock ) + { + REPORT_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + return NULL; + } + + p_FreeBlock->base = base; + p_FreeBlock->end = base + size; + p_FreeBlock->p_Next = 0; + + return p_FreeBlock; +} + +/**************************************************************** + * Routine: AddFree + * + * Description: + * Adds a new free block to the free lists. It updates each + * free list to include a new free block. + * Note, that all free block in each free list are ordered + * by their base address. + * + * Arguments: + * p_MM - pointer to the MM object + * base - base address of a given free block + * end - end address of a given free block + * + * Return value: + * + * + ****************************************************************/ +static t_Error AddFree(t_MM *p_MM, uint64_t base, uint64_t end) +{ + t_FreeBlock *p_PrevB, *p_CurrB, *p_NewB; + uint64_t alignment; + uint64_t alignBase; + int i; + + /* Updates free lists to include a just released block */ + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + p_PrevB = p_NewB = 0; + p_CurrB = p_MM->freeBlocks[i]; + + alignment = (uint64_t)(0x1 << i); + alignBase = MAKE_ALIGNED(base, alignment); + + /* Goes to the next free list if there is no block to free */ + if (alignBase >= end) + continue; + + /* Looks for a free block that should be updated */ + while ( p_CurrB ) + { + if ( alignBase <= p_CurrB->end ) + { + if ( end > p_CurrB->end ) + { + t_FreeBlock *p_NextB; + while ( p_CurrB->p_Next && end > p_CurrB->p_Next->end ) + { + p_NextB = p_CurrB->p_Next; + p_CurrB->p_Next = p_CurrB->p_Next->p_Next; + XX_Free(p_NextB); + } + + p_NextB = p_CurrB->p_Next; + if ( !p_NextB || (p_NextB && end < p_NextB->base) ) + { + p_CurrB->end = end; + } + else + { + p_CurrB->end = p_NextB->end; + p_CurrB->p_Next = p_NextB->p_Next; + XX_Free(p_NextB); + } + } + else if ( (end < p_CurrB->base) && ((end-alignBase) >= alignment) ) + { + if ((p_NewB = CreateFreeBlock(alignBase, end-alignBase)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + + p_NewB->p_Next = p_CurrB; + if (p_PrevB) + p_PrevB->p_Next = p_NewB; + else + p_MM->freeBlocks[i] = p_NewB; + break; + } + + if ((alignBase < p_CurrB->base) && (end >= p_CurrB->base)) + { + p_CurrB->base = alignBase; + } + + /* if size of the free block is less then alignment + * deletes that free block from the free list. */ + if ( (p_CurrB->end - p_CurrB->base) < alignment) + { + if ( p_PrevB ) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->freeBlocks[i] = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + break; + } + else + { + p_PrevB = p_CurrB; + p_CurrB = p_CurrB->p_Next; + } + } + + /* If no free block found to be updated, insert a new free block + * to the end of the free list. + */ + if ( !p_CurrB && ((((uint64_t)(end-base)) & ((uint64_t)(alignment-1))) == 0) ) + { + if ((p_NewB = CreateFreeBlock(alignBase, end-base)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + + if (p_PrevB) + p_PrevB->p_Next = p_NewB; + else + p_MM->freeBlocks[i] = p_NewB; + } + + /* Update boundaries of the new free block */ + if ((alignment == 1) && !p_NewB) + { + if ( p_CurrB && base > p_CurrB->base ) + base = p_CurrB->base; + if ( p_CurrB && end < p_CurrB->end ) + end = p_CurrB->end; + } + } + + return (E_OK); +} + +/**************************************************************** + * Routine: CutFree + * + * Description: + * Cuts a free block from holdBase to holdEnd from the free lists. + * That is, it updates all free lists of the MM object do + * not include a block of memory from holdBase to holdEnd. + * For each free lists it seek for a free block that holds + * either holdBase or holdEnd. If such block is found it updates it. + * + * Arguments: + * p_MM - pointer to the MM object + * holdBase - base address of the allocated block + * holdEnd - end address of the allocated block + * + * Return value: + * E_OK is returned on success, + * otherwise returns an error code. + * + ****************************************************************/ +static t_Error CutFree(t_MM *p_MM, uint64_t holdBase, uint64_t holdEnd) +{ + t_FreeBlock *p_PrevB, *p_CurrB, *p_NewB; + uint64_t alignBase, base, end; + uint64_t alignment; + int i; + + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + p_PrevB = p_NewB = 0; + p_CurrB = p_MM->freeBlocks[i]; + + alignment = (uint64_t)(0x1 << i); + alignBase = MAKE_ALIGNED(holdEnd, alignment); + + while ( p_CurrB ) + { + base = p_CurrB->base; + end = p_CurrB->end; + + if ( (holdBase <= base) && (holdEnd <= end) && (holdEnd > base) ) + { + if ( alignBase >= end || + (alignBase < end && ((end-alignBase) < alignment)) ) + { + if (p_PrevB) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->freeBlocks[i] = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + else + { + p_CurrB->base = alignBase; + } + break; + } + else if ( (holdBase > base) && (holdEnd <= end) ) + { + if ( (holdBase-base) >= alignment ) + { + if ( (alignBase < end) && ((end-alignBase) >= alignment) ) + { + if ((p_NewB = CreateFreeBlock(alignBase, end-alignBase)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + p_NewB->p_Next = p_CurrB->p_Next; + p_CurrB->p_Next = p_NewB; + } + p_CurrB->end = holdBase; + } + else if ( (alignBase < end) && ((end-alignBase) >= alignment) ) + { + p_CurrB->base = alignBase; + } + else + { + if (p_PrevB) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->freeBlocks[i] = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + break; + } + else + { + p_PrevB = p_CurrB; + p_CurrB = p_CurrB->p_Next; + } + } + } + + return (E_OK); +} + +/**************************************************************** + * Routine: AddBusy + * + * Description: + * Adds a new busy block to the list of busy blocks. Note, + * that all busy blocks are ordered by their base address in + * the busy list. + * + * Arguments: + * MM - handler to the MM object + * p_NewBusyB - pointer to the a busy block + * + * Return value: + * None. + * + ****************************************************************/ +static void AddBusy(t_MM *p_MM, t_BusyBlock *p_NewBusyB) +{ + t_BusyBlock *p_CurrBusyB, *p_PrevBusyB; + + /* finds a place of a new busy block in the list of busy blocks */ + p_PrevBusyB = 0; + p_CurrBusyB = p_MM->busyBlocks; + + while ( p_CurrBusyB && p_NewBusyB->base > p_CurrBusyB->base ) + { + p_PrevBusyB = p_CurrBusyB; + p_CurrBusyB = p_CurrBusyB->p_Next; + } + + /* insert the new busy block into the list of busy blocks */ + if ( p_CurrBusyB ) + p_NewBusyB->p_Next = p_CurrBusyB; + if ( p_PrevBusyB ) + p_PrevBusyB->p_Next = p_NewBusyB; + else + p_MM->busyBlocks = p_NewBusyB; +} + +/**************************************************************** + * Routine: CutBusy + * + * Description: + * Cuts a block from base to end from the list of busy blocks. + * This is done by updating the list of busy blocks do not + * include a given block, that block is going to be free. If a + * given block is a part of some other busy block, so that + * busy block is updated. If there are number of busy blocks + * included in the given block, so all that blocks are removed + * from the busy list and the end blocks are updated. + * If the given block devides some block into two parts, a new + * busy block is added to the busy list. + * + * Arguments: + * p_MM - pointer to the MM object + * base - base address of a given busy block + * end - end address of a given busy block + * + * Return value: + * E_OK on success, E_NOMEMORY otherwise. + * + ****************************************************************/ +static t_Error CutBusy(t_MM *p_MM, uint64_t base, uint64_t end) +{ + t_BusyBlock *p_CurrB, *p_PrevB, *p_NewB; + + p_CurrB = p_MM->busyBlocks; + p_PrevB = p_NewB = 0; + + while ( p_CurrB ) + { + if ( base < p_CurrB->end ) + { + if ( end > p_CurrB->end ) + { + t_BusyBlock *p_NextB; + while ( p_CurrB->p_Next && end >= p_CurrB->p_Next->end ) + { + p_NextB = p_CurrB->p_Next; + p_CurrB->p_Next = p_CurrB->p_Next->p_Next; + XX_Free(p_NextB); + } + + p_NextB = p_CurrB->p_Next; + if ( p_NextB && end > p_NextB->base ) + { + p_NextB->base = end; + } + } + + if ( base <= p_CurrB->base ) + { + if ( end < p_CurrB->end && end > p_CurrB->base ) + { + p_CurrB->base = end; + } + else if ( end >= p_CurrB->end ) + { + if ( p_PrevB ) + p_PrevB->p_Next = p_CurrB->p_Next; + else + p_MM->busyBlocks = p_CurrB->p_Next; + XX_Free(p_CurrB); + } + } + else + { + if ( end < p_CurrB->end && end > p_CurrB->base ) + { + if ((p_NewB = CreateBusyBlock(end, + p_CurrB->end-end, + p_CurrB->name)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + p_NewB->p_Next = p_CurrB->p_Next; + p_CurrB->p_Next = p_NewB; + } + p_CurrB->end = base; + } + break; + } + else + { + p_PrevB = p_CurrB; + p_CurrB = p_CurrB->p_Next; + } + } + + return (E_OK); +} + +/**************************************************************** + * Routine: MmGetGreaterAlignment + * + * Description: + * Allocates a block of memory according to the given size + * and the alignment. That routine is called from the MM_Get + * routine if the required alignment is greater then MM_MAX_ALIGNMENT. + * In that case, it goes over free blocks of 64 byte align list + * and checks if it has the required size of bytes of the required + * alignment. If no blocks found returns ILLEGAL_BASE. + * After the block is found and data is allocated, it calls + * the internal CutFree routine to update all free lists + * do not include a just allocated block. Of course, each + * free list contains a free blocks with the same alignment. + * It is also creates a busy block that holds + * information about an allocated block. + * + * Arguments: + * MM - handle to the MM object + * size - size of the MM + * alignment - index as a power of two defines + * a required alignment that is greater then 64. + * name - the name that specifies an allocated block. + * + * Return value: + * base address of an allocated block. + * ILLEGAL_BASE if can't allocate a block + * + ****************************************************************/ +static uint64_t MmGetGreaterAlignment(t_MM *p_MM, uint64_t size, uint64_t alignment, char* name) +{ + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint64_t holdBase, holdEnd, alignBase = 0; + + /* goes over free blocks of the 64 byte alignment list + and look for a block of the suitable size and + base address according to the alignment. */ + p_FreeB = p_MM->freeBlocks[MM_MAX_ALIGNMENT]; + + while ( p_FreeB ) + { + alignBase = MAKE_ALIGNED(p_FreeB->base, alignment); + + /* the block is found if the aligned base inside the block + * and has the anough size. */ + if ( alignBase >= p_FreeB->base && + alignBase < p_FreeB->end && + size <= (p_FreeB->end - alignBase) ) + break; + else + p_FreeB = p_FreeB->p_Next; + } + + /* If such block isn't found */ + if ( !p_FreeB ) + return (uint64_t)(ILLEGAL_BASE); + + holdBase = alignBase; + holdEnd = alignBase + size; + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(holdBase, size, name)) == NULL) + return (uint64_t)(ILLEGAL_BASE); + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree ( p_MM, holdBase, holdEnd ) != E_OK ) + return (uint64_t)(ILLEGAL_BASE); + + /* insert the new busy block into the list of busy blocks */ + AddBusy ( p_MM, p_NewBusyB ); + + return (holdBase); +} + + +/********************************************************************** + * MM API routines set * + **********************************************************************/ + +/*****************************************************************************/ +t_Error MM_Init(t_Handle *h_MM, uint64_t base, uint64_t size) +{ + t_MM *p_MM; + uint64_t newBase, newSize; + int i; + + if (!size) + { + RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("Size (should be positive)")); + } + + /* Initializes a new MM object */ + p_MM = (t_MM *)XX_Malloc(sizeof(t_MM)); + if (!p_MM) + { + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + } + + p_MM->h_Spinlock = XX_InitSpinlock(); + if (!p_MM->h_Spinlock) + { + XX_Free(p_MM); + RETURN_ERROR(MAJOR, E_NO_MEMORY, ("MM spinlock!")); + } + + /* initializes a new memory block */ + if ((p_MM->memBlocks = CreateNewBlock(base, size)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + + /* A busy list is empty */ + p_MM->busyBlocks = 0; + + /*Initializes a new free block for each free list*/ + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + newBase = MAKE_ALIGNED( base, (0x1 << i) ); + newSize = size - (newBase - base); + + if ((p_MM->freeBlocks[i] = CreateFreeBlock(newBase, newSize)) == NULL) + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + } + + *h_MM = p_MM; + + return (E_OK); +} + +/*****************************************************************************/ +void MM_Free(t_Handle h_MM) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_MemBlock *p_MemBlock; + t_BusyBlock *p_BusyBlock; + t_FreeBlock *p_FreeBlock; + void *p_Block; + int i; + + ASSERT_COND(p_MM); + + /* release memory allocated for busy blocks */ + p_BusyBlock = p_MM->busyBlocks; + while ( p_BusyBlock ) + { + p_Block = p_BusyBlock; + p_BusyBlock = p_BusyBlock->p_Next; + XX_Free(p_Block); + } + + /* release memory allocated for free blocks */ + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + p_FreeBlock = p_MM->freeBlocks[i]; + while ( p_FreeBlock ) + { + p_Block = p_FreeBlock; + p_FreeBlock = p_FreeBlock->p_Next; + XX_Free(p_Block); + } + } + + /* release memory allocated for memory blocks */ + p_MemBlock = p_MM->memBlocks; + while ( p_MemBlock ) + { + p_Block = p_MemBlock; + p_MemBlock = p_MemBlock->p_Next; + XX_Free(p_Block); + } + + if (p_MM->h_Spinlock) + XX_FreeSpinlock(p_MM->h_Spinlock); + + /* release memory allocated for MM object itself */ + XX_Free(p_MM); +} + +/*****************************************************************************/ +uint64_t MM_Get(t_Handle h_MM, uint64_t size, uint64_t alignment, char* name) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint64_t holdBase, holdEnd, j, i = 0; + uint32_t intFlags; + + SANITY_CHECK_RETURN_VALUE(p_MM, E_INVALID_HANDLE, (uint64_t)ILLEGAL_BASE); + + /* checks that alignment value is greater then zero */ + if (alignment == 0) + { + alignment = 1; + } + + j = alignment; + + /* checks if alignment is a power of two, if it correct and if the + required size is multiple of the given alignment. */ + while ((j & 0x1) == 0) + { + i++; + j = j >> 1; + } + + /* if the given alignment isn't power of two, returns an error */ + if (j != 1) + { + REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("alignment (should be power of 2)")); + return (uint64_t)ILLEGAL_BASE; + } + + if (i > MM_MAX_ALIGNMENT) + { + return (MmGetGreaterAlignment(p_MM, size, alignment, name)); + } + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + /* look for a block of the size greater or equal to the required size. */ + p_FreeB = p_MM->freeBlocks[i]; + while ( p_FreeB && (p_FreeB->end - p_FreeB->base) < size ) + p_FreeB = p_FreeB->p_Next; + + /* If such block is found */ + if ( !p_FreeB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + holdBase = p_FreeB->base; + holdEnd = holdBase + size; + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(holdBase, size, name)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree ( p_MM, holdBase, holdEnd ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* insert the new busy block into the list of busy blocks */ + AddBusy ( p_MM, p_NewBusyB ); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (holdBase); +} + +/*****************************************************************************/ +uint64_t MM_GetForce(t_Handle h_MM, uint64_t base, uint64_t size, char* name) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint32_t intFlags; + bool blockIsFree = FALSE; + + ASSERT_COND(p_MM); + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_FreeB = p_MM->freeBlocks[0]; /* The biggest free blocks are in the + free list with alignment 1 */ + + while ( p_FreeB ) + { + if ( base >= p_FreeB->base && (base+size) <= p_FreeB->end ) + { + blockIsFree = TRUE; + break; + } + else + p_FreeB = p_FreeB->p_Next; + } + + if ( !blockIsFree ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(base, size, name)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree ( p_MM, base, base+size ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* insert the new busy block into the list of busy blocks */ + AddBusy ( p_MM, p_NewBusyB ); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (base); +} + +/*****************************************************************************/ +uint64_t MM_GetForceMin(t_Handle h_MM, uint64_t size, uint64_t alignment, uint64_t min, char* name) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_NewBusyB; + uint64_t holdBase, holdEnd, j = alignment, i=0; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + /* checks if alignment is a power of two, if it correct and if the + required size is multiple of the given alignment. */ + while ((j & 0x1) == 0) + { + i++; + j = j >> 1; + } + + if ( (j != 1) || (i > MM_MAX_ALIGNMENT) ) + { + return (uint64_t)(ILLEGAL_BASE); + } + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_FreeB = p_MM->freeBlocks[i]; + + /* look for the first block that contains the minimum + base address. If the whole required size may be fit + into it, use that block, otherwise look for the next + block of size greater or equal to the required size. */ + while ( p_FreeB && (min >= p_FreeB->end)) + p_FreeB = p_FreeB->p_Next; + + /* If such block is found */ + if ( !p_FreeB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* if this block is large enough, use this block */ + holdBase = ( min <= p_FreeB->base ) ? p_FreeB->base : min; + if ((holdBase + size) <= p_FreeB->end ) + { + holdEnd = holdBase + size; + } + else + { + p_FreeB = p_FreeB->p_Next; + while ( p_FreeB && ((p_FreeB->end - p_FreeB->base) < size) ) + p_FreeB = p_FreeB->p_Next; + + /* If such block is found */ + if ( !p_FreeB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + holdBase = p_FreeB->base; + holdEnd = holdBase + size; + } + + /* init a new busy block */ + if ((p_NewBusyB = CreateBusyBlock(holdBase, size, name)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* calls Update routine to update a lists of free blocks */ + if ( CutFree( p_MM, holdBase, holdEnd ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(ILLEGAL_BASE); + } + + /* insert the new busy block into the list of busy blocks */ + AddBusy( p_MM, p_NewBusyB ); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (holdBase); +} + +/*****************************************************************************/ +uint64_t MM_Put(t_Handle h_MM, uint64_t base) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_BusyBlock *p_BusyB, *p_PrevBusyB; + uint64_t size; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + /* Look for a busy block that have the given base value. + * That block will be returned back to the memory. + */ + p_PrevBusyB = 0; + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_BusyB = p_MM->busyBlocks; + while ( p_BusyB && base != p_BusyB->base ) + { + p_PrevBusyB = p_BusyB; + p_BusyB = p_BusyB->p_Next; + } + + if ( !p_BusyB ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + + if ( AddFree( p_MM, p_BusyB->base, p_BusyB->end ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + + /* removes a busy block form the list of busy blocks */ + if ( p_PrevBusyB ) + p_PrevBusyB->p_Next = p_BusyB->p_Next; + else + p_MM->busyBlocks = p_BusyB->p_Next; + + size = p_BusyB->end - p_BusyB->base; + + XX_Free(p_BusyB); + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (size); +} + +/*****************************************************************************/ +uint64_t MM_PutForce(t_Handle h_MM, uint64_t base, uint64_t size) +{ + t_MM *p_MM = (t_MM *)h_MM; + uint64_t end = base + size; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + if ( CutBusy( p_MM, base, end ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + + if ( AddFree ( p_MM, base, end ) != E_OK ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + return (uint64_t)(0); + } + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (size); +} + +/*****************************************************************************/ +t_Error MM_Add(t_Handle h_MM, uint64_t base, uint64_t size) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_MemBlock *p_MemB, *p_NewMemB; + t_Error errCode; + uint32_t intFlags; + + ASSERT_COND(p_MM); + + /* find a last block in the list of memory blocks to insert a new + * memory block + */ + intFlags = XX_LockIntrSpinlock(p_MM->h_Spinlock); + p_MemB = p_MM->memBlocks; + while ( p_MemB->p_Next ) + { + if ( base >= p_MemB->base && base < p_MemB->end ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + } + p_MemB = p_MemB->p_Next; + } + /* check for a last memory block */ + if ( base >= p_MemB->base && base < p_MemB->end ) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + RETURN_ERROR(MAJOR, E_ALREADY_EXISTS, NO_MSG); + } + + /* create a new memory block */ + if ((p_NewMemB = CreateNewBlock(base, size)) == NULL) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + RETURN_ERROR(MAJOR, E_NO_MEMORY, NO_MSG); + } + + /* append a new memory block to the end of the list of memory blocks */ + p_MemB->p_Next = p_NewMemB; + + /* add a new free block to the free lists */ + errCode = AddFree(p_MM, base, base+size); + if (errCode) + { + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + p_MemB->p_Next = 0; + XX_Free(p_NewMemB); + return ((t_Error)errCode); + } + XX_UnlockIntrSpinlock(p_MM->h_Spinlock, intFlags); + + return (E_OK); +} + +/*****************************************************************************/ +uint64_t MM_GetMemBlock(t_Handle h_MM, int index) +{ + t_MM *p_MM = (t_MM*)h_MM; + t_MemBlock *p_MemBlock; + int i; + + ASSERT_COND(p_MM); + + p_MemBlock = p_MM->memBlocks; + for (i=0; i < index; i++) + p_MemBlock = p_MemBlock->p_Next; + + if ( p_MemBlock ) + return (p_MemBlock->base); + else + return (uint64_t)ILLEGAL_BASE; +} + +/*****************************************************************************/ +uint64_t MM_GetBase(t_Handle h_MM) +{ + t_MM *p_MM = (t_MM*)h_MM; + t_MemBlock *p_MemBlock; + + ASSERT_COND(p_MM); + + p_MemBlock = p_MM->memBlocks; + return p_MemBlock->base; +} + +/*****************************************************************************/ +bool MM_InRange(t_Handle h_MM, uint64_t addr) +{ + t_MM *p_MM = (t_MM*)h_MM; + t_MemBlock *p_MemBlock; + + ASSERT_COND(p_MM); + + p_MemBlock = p_MM->memBlocks; + + if ((addr >= p_MemBlock->base) && (addr < p_MemBlock->end)) + return TRUE; + else + return FALSE; +} + +/*****************************************************************************/ +void MM_Dump(t_Handle h_MM, void *buff) +{ + t_MM *p_MM = (t_MM *)h_MM; + t_FreeBlock *p_FreeB; + t_BusyBlock *p_BusyB; + int i; + + p_BusyB = p_MM->busyBlocks; + Sprint(buff, "List of busy blocks:\n"); + while (p_BusyB) + { + Sprint(buff, "\t0x%p: (%s: b=0x%lx, e=0x%lx)\n", + p_BusyB, p_BusyB->name, p_BusyB->base, p_BusyB->end ); + p_BusyB = p_BusyB->p_Next; + } + + Sprint(buff, "\nLists of free blocks according to alignment:\n"); + for (i=0; i <= MM_MAX_ALIGNMENT; i++) + { + Sprint(buff, "%d alignment:\n", (0x1 << i)); + p_FreeB = p_MM->freeBlocks[i]; + while (p_FreeB) + { + Sprint(buff, "\t0x%p: (b=0x%lx, e=0x%lx)\n", + p_FreeB, p_FreeB->base, p_FreeB->end); + p_FreeB = p_FreeB->p_Next; + } + Sprint(buff, "\n"); + } +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/memcpy.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/memcpy.c @@ -0,0 +1,665 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include "std_ext.h" +#include "xx_ext.h" +#include "memcpy_ext.h" + + +#ifdef CORE_8BIT_ACCESS_ERRATA +static void MY_MY_WRITE_UINT8(uint8_t *addr, uint8_t val) +{ + uint32_t newAddr, newVal; + newAddr = (uint32_t)addr & ~0x3L; + switch ((uint32_t)addr%4) + { + case (0): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x00ffffff) | (((uint32_t)val)<<24); + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + case (1): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xff00ffff) | (((uint32_t)val)<<16); + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + case (2): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xffff00ff) | (((uint32_t)val)<<8); + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + case (3): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xffffff00) | val; + WRITE_UINT32(*(uint32_t*)newAddr, newVal); + break; + } +} + +static uint8_t MY_MY_GET_UINT8(uint8_t *addr) +{ + uint32_t newAddr, newVal=0; + newAddr = (uint32_t)addr & ~0x3L; + switch ((uint32_t)addr%4) + { + case (0): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0xff000000)>>24; + break; + case (1): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x00ff0000)>>16; + break; + case (2): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x0000ff00)>>8; + break; + case (3): + newVal = GET_UINT32(*(uint32_t*)newAddr); + newVal = (newVal & 0x000000ff); + break; + } + + return (uint8_t)newVal; +} + +#define MY_WRITE_UINT8(addr,val) MY_MY_WRITE_UINT8(&addr,val) +#define MY_GET_UINT8(addr) MY_MY_GET_UINT8(&addr) +#else +#define MY_WRITE_UINT8 WRITE_UINT8 +#define MY_GET_UINT8 GET_UINT8 +#endif /* CORE_8BIT_ACCESS_ERRATA */ + + +void * MemCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + *p_Dst32++ = *p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = *p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = *p_Src32; + *p_Dst32 = (lastWord << leftAlign) | (currWord >> rightAlign); + lastWord = currWord; + p_Src32++; + p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + *p_Dst8++ = *p_Src8++; + + return pDst; +} + +void * IO2IOCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, MY_GET_UINT8(*p_Src8)); + p_Dst8++;p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, MY_GET_UINT8(*p_Src8)); + p_Dst8++;p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + WRITE_UINT32(*p_Dst32, GET_UINT32(*p_Src32)); + p_Dst32++;p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = GET_UINT32(*p_Src32); + p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = GET_UINT32(*p_Src32); + WRITE_UINT32(*p_Dst32, (lastWord << leftAlign) | (currWord >> rightAlign)); + lastWord = currWord; + p_Src32++;p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + { + MY_WRITE_UINT8(*p_Dst8, MY_GET_UINT8(*p_Src8)); + p_Dst8++;p_Src8++; + } + + return pDst; +} + +void * Mem2IOCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, *p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, *p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + WRITE_UINT32(*p_Dst32, *p_Src32); + p_Dst32++;p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = *p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = *p_Src32; + WRITE_UINT32(*p_Dst32, (lastWord << leftAlign) | (currWord >> rightAlign)); + lastWord = currWord; + p_Src32++;p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + { + MY_WRITE_UINT8(*p_Dst8, *p_Src8); + p_Dst8++;p_Src8++; + } + + return pDst; +} + +void * IO2MemCpy32(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint32_t lastWord; + uint32_t currWord; + uint32_t *p_Src32; + uint32_t *p_Dst32; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessary to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 3) && size) /* (pSrc mod 4) > 0 and size > 0 */ + { + *p_Dst8 = MY_GET_UINT8(*p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + *p_Dst8 = MY_GET_UINT8(*p_Src8); + p_Dst8++;p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 3) << 3); /* leftAlign = (pSrc mod 4)*8 */ + rightAlign = 32 - leftAlign; + + if (leftAlign == 0) + { + /* source is also aligned */ + p_Src32 = (uint32_t*)(p_Src8); + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + *p_Dst32 = GET_UINT32(*p_Src32); + p_Dst32++;p_Src32++; + size -= 4; + } + p_Src8 = (uint8_t*)(p_Src32); + p_Dst8 = (uint8_t*)(p_Dst32); + } + else + { + /* source is not aligned (destination is aligned)*/ + p_Src32 = (uint32_t*)(p_Src8 - (leftAlign >> 3)); + p_Dst32 = (uint32_t*)(p_Dst8); + lastWord = GET_UINT32(*p_Src32); + p_Src32++; + while(size >> 3) /* size >= 8 */ + { + currWord = GET_UINT32(*p_Src32); + *p_Dst32 = (lastWord << leftAlign) | (currWord >> rightAlign); + lastWord = currWord; + p_Src32++;p_Dst32++; + size -= 4; + } + p_Dst8 = (uint8_t*)(p_Dst32); + p_Src8 = (uint8_t*)(p_Src32) - 4 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + { + *p_Dst8 = MY_GET_UINT8(*p_Src8); + p_Dst8++;p_Src8++; + } + + return pDst; +} + +void * MemCpy64(void* pDst,void* pSrc, uint32_t size) +{ + uint32_t leftAlign; + uint32_t rightAlign; + uint64_t lastWord; + uint64_t currWord; + uint64_t *pSrc64; + uint64_t *pDst64; + uint8_t *p_Src8; + uint8_t *p_Dst8; + + p_Src8 = (uint8_t*)(pSrc); + p_Dst8 = (uint8_t*)(pDst); + /* first copy byte by byte till the source first alignment + * this step is necessarily to ensure we do not even try to access + * data which is before the source buffer, hence it is not ours. + */ + while((PTR_TO_UINT(p_Src8) & 7) && size) /* (pSrc mod 8) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* align destination (possibly disaligning source)*/ + while((PTR_TO_UINT(p_Dst8) & 7) && size) /* (pDst mod 8) > 0 and size > 0 */ + { + *p_Dst8++ = *p_Src8++; + size--; + } + + /* dest is aligned and source is not necessarily aligned */ + leftAlign = (uint32_t)((PTR_TO_UINT(p_Src8) & 7) << 3); /* leftAlign = (pSrc mod 8)*8 */ + rightAlign = 64 - leftAlign; + + + if (leftAlign == 0) + { + /* source is also aligned */ + pSrc64 = (uint64_t*)(p_Src8); + pDst64 = (uint64_t*)(p_Dst8); + while (size >> 3) /* size >= 8 */ + { + *pDst64++ = *pSrc64++; + size -= 8; + } + p_Src8 = (uint8_t*)(pSrc64); + p_Dst8 = (uint8_t*)(pDst64); + } + else + { + /* source is not aligned (destination is aligned)*/ + pSrc64 = (uint64_t*)(p_Src8 - (leftAlign >> 3)); + pDst64 = (uint64_t*)(p_Dst8); + lastWord = *pSrc64++; + while(size >> 4) /* size >= 16 */ + { + currWord = *pSrc64; + *pDst64 = (lastWord << leftAlign) | (currWord >> rightAlign); + lastWord = currWord; + pSrc64++; + pDst64++; + size -= 8; + } + p_Dst8 = (uint8_t*)(pDst64); + p_Src8 = (uint8_t*)(pSrc64) - 8 + (leftAlign >> 3); + } + + /* complete the left overs */ + while (size--) + *p_Dst8++ = *p_Src8++; + + return pDst; +} + +void * MemSet32(void* pDst, uint8_t val, uint32_t size) +{ + uint32_t val32; + uint32_t *p_Dst32; + uint8_t *p_Dst8; + + p_Dst8 = (uint8_t*)(pDst); + + /* generate four 8-bit val's in 32-bit container */ + val32 = (uint32_t) val; + val32 |= (val32 << 8); + val32 |= (val32 << 16); + + /* align destination to 32 */ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + *p_Dst8++ = val; + size--; + } + + /* 32-bit chunks */ + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + *p_Dst32++ = val32; + size -= 4; + } + + /* complete the leftovers */ + p_Dst8 = (uint8_t*)(p_Dst32); + while (size--) + *p_Dst8++ = val; + + return pDst; +} + +void * IOMemSet32(void* pDst, uint8_t val, uint32_t size) +{ + uint32_t val32; + uint32_t *p_Dst32; + uint8_t *p_Dst8; + + p_Dst8 = (uint8_t*)(pDst); + + /* generate four 8-bit val's in 32-bit container */ + val32 = (uint32_t) val; + val32 |= (val32 << 8); + val32 |= (val32 << 16); + + /* align destination to 32 */ + while((PTR_TO_UINT(p_Dst8) & 3) && size) /* (pDst mod 4) > 0 and size > 0 */ + { + MY_WRITE_UINT8(*p_Dst8, val); + p_Dst8++; + size--; + } + + /* 32-bit chunks */ + p_Dst32 = (uint32_t*)(p_Dst8); + while (size >> 2) /* size >= 4 */ + { + WRITE_UINT32(*p_Dst32, val32); + p_Dst32++; + size -= 4; + } + + /* complete the leftovers */ + p_Dst8 = (uint8_t*)(p_Dst32); + while (size--) + { + MY_WRITE_UINT8(*p_Dst8, val); + p_Dst8++; + } + + return pDst; +} + +void * MemSet64(void* pDst, uint8_t val, uint32_t size) +{ + uint64_t val64; + uint64_t *pDst64; + uint8_t *p_Dst8; + + p_Dst8 = (uint8_t*)(pDst); + + /* generate four 8-bit val's in 32-bit container */ + val64 = (uint64_t) val; + val64 |= (val64 << 8); + val64 |= (val64 << 16); + val64 |= (val64 << 24); + val64 |= (val64 << 32); + + /* align destination to 64 */ + while((PTR_TO_UINT(p_Dst8) & 7) && size) /* (pDst mod 8) > 0 and size > 0 */ + { + *p_Dst8++ = val; + size--; + } + + /* 64-bit chunks */ + pDst64 = (uint64_t*)(p_Dst8); + while (size >> 4) /* size >= 8 */ + { + *pDst64++ = val64; + size -= 8; + } + + /* complete the leftovers */ + p_Dst8 = (uint8_t*)(pDst64); + while (size--) + *p_Dst8++ = val; + + return pDst; +} + +void MemDisp(uint8_t *p, int size) +{ + uint32_t space = (uint32_t)(PTR_TO_UINT(p) & 0x3); + uint8_t *p_Limit; + + if (space) + { + p_Limit = (p - space + 4); + + XX_Print("0x%08X: ", (p - space)); + + while (space--) + { + XX_Print("--"); + } + while (size && (p < p_Limit)) + { + XX_Print("%02x", *(uint8_t*)p); + size--; + p++; + } + + XX_Print(" "); + p_Limit += 12; + + while ((size > 3) && (p < p_Limit)) + { + XX_Print("%08x ", *(uint32_t*)p); + size -= 4; + p += 4; + } + XX_Print("\r\n"); + } + + while (size > 15) + { + XX_Print("0x%08X: %08x %08x %08x %08x\r\n", + p, *(uint32_t *)p, *(uint32_t *)(p + 4), + *(uint32_t *)(p + 8), *(uint32_t *)(p + 12)); + size -= 16; + p += 16; + } + + if (size) + { + XX_Print("0x%08X: ", p); + + while (size > 3) + { + XX_Print("%08x ", *(uint32_t *)p); + size -= 4; + p += 4; + } + while (size) + { + XX_Print("%02x", *(uint8_t *)p); + size--; + p++; + } + + XX_Print("\r\n"); + } +} --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/error.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/error.c @@ -0,0 +1,118 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + + @File error.c + + @Description General errors and events reporting utilities. +*//***************************************************************************/ + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + +const char *dbgLevelStrings[] = +{ + "CRITICAL" + ,"MAJOR" + ,"MINOR" + ,"WARNING" + ,"INFO" + ,"TRACE" +}; + +const char *errTypeStrings[] = +{ + "Invalid State" /* E_INVALID_STATE */ + ,"Invalid Operation" /* E_INVALID_OPERATION */ + ,"Unsupported Operation" /* E_NOT_SUPPORTED */ + ,"No Device" /* E_NO_DEVICE */ + ,"Invalid Handle" /* E_INVALID_HANDLE */ + ,"Invalid ID" /* E_INVALID_ID */ + ,"Unexpected NULL Pointer" /* E_NULL_POINTER */ + ,"Invalid Value" /* E_INVALID_VALUE */ + ,"Invalid Selection" /* E_INVALID_SELECTION */ + ,"Invalid Communication Mode" /* E_INVALID_COMM_MODE */ + ,"Invalid Byte Order" /* E_INVALID_BYTE_ORDER */ + ,"Invalid Memory Type" /* E_INVALID_MEMORY_TYPE */ + ,"Invalid Interrupt Queue" /* E_INVALID_INTR_QUEUE */ + ,"Invalid Priority" /* E_INVALID_PRIORITY */ + ,"Invalid Clock" /* E_INVALID_CLOCK */ + ,"Invalid Rate" /* E_INVALID_RATE */ + ,"Invalid Address" /* E_INVALID_ADDRESS */ + ,"Invalid Bus" /* E_INVALID_BUS */ + ,"Conflict In Bus Selection" /* E_BUS_CONFLICT */ + ,"Conflict In Settings" /* E_CONFLICT */ + ,"Incorrect Alignment" /* E_NOT_ALIGNED */ + ,"Value Out Of Range" /* E_NOT_IN_RANGE */ + ,"Invalid Frame" /* E_INVALID_FRAME */ + ,"Frame Is Empty" /* E_EMPTY_FRAME */ + ,"Buffer Is Empty" /* E_EMPTY_BUFFER */ + ,"Memory Allocation Failed" /* E_NO_MEMORY */ + ,"Resource Not Found" /* E_NOT_FOUND */ + ,"Resource Is Unavailable" /* E_NOT_AVAILABLE */ + ,"Resource Already Exists" /* E_ALREADY_EXISTS */ + ,"Resource Is Full" /* E_FULL */ + ,"Resource Is Empty" /* E_EMPTY */ + ,"Resource Is Busy" /* E_BUSY */ + ,"Resource Already Free" /* E_ALREADY_FREE */ + ,"Read Access Failed" /* E_READ_FAILED */ + ,"Write Access Failed" /* E_WRITE_FAILED */ + ,"Send Operation Failed" /* E_SEND_FAILED */ + ,"Receive Operation Failed" /* E_RECEIVE_FAILED */ + ,"Operation Timed Out" /* E_TIMEOUT */ +}; + + +#if (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) + +const char *eventStrings[] = +{ + "Rx Discard" /* EV_RX_DISCARD */ + ,"Rx Error" /* EV_RX_ERROR */ + ,"Tx Error" /* EV_TX_ERROR */ + ,"No Buffer Objects" /* EV_NO_BUFFERS */ + ,"No MB-Frame Objects" /* EV_NO_MB_FRAMES */ + ,"No SB-Frame Objects" /* EV_NO_SB_FRAMES */ + ,"Tx Queue Is Full" /* EV_TX_QUEUE_FULL */ + ,"Rx Queue Is Full" /* EV_RX_QUEUE_FULL */ + ,"Interrupts Queue Is Full" /* EV_INTR_QUEUE_FULL */ + ,"Data Buffer Is Unavailable" /* EV_NO_DATA_BUFFER */ + ,"Objects Pool Is Empty" /* EV_OBJ_POOL_EMPTY */ + ,"Illegal bus access" /* EV_BUS_ERROR */ + ,"PTP Tx Timestamps Queue Is Full" /* EV_PTP_TXTS_QUEUE_FULL */ + ,"PTP Rx Timestamps Queue Is Full" /* EV_PTP_RXTS_QUEUE_FULL */ +}; + +#endif /* (defined(REPORT_EVENTS) && (REPORT_EVENTS > 0)) */ + +#endif /* (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) */ + --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/sprint.c +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/sprint.c @@ -0,0 +1,81 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*------------------------------------------------------*/ +/* File: sprint.c */ +/* */ +/* Description: */ +/* Debug routines (externals) */ +/*------------------------------------------------------*/ +#include "string_ext.h" +#include "stdlib_ext.h" +#include "ctype_ext.h" +#include "stdarg_ext.h" +#include "sprint_ext.h" +#include "std_ext.h" +#include "xx_ext.h" + + +int Sprint(char * buf, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i=vsprintf(buf,fmt,args); + va_end(args); + return i; +} + +int Snprint(char * buf, uint32_t size, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i=vsnprintf(buf,size,fmt,args); + va_end(args); + return i; +} + +#ifndef NCSW_VXWORKS +int Sscan(const char * buf, const char * fmt, ...) +{ + va_list args; + int i; + + va_start(args,fmt); + i = vsscanf(buf,fmt,args); + va_end(args); + return i; +} +#endif /* NCSW_VXWORKS */ --- linux-ppc-3.8.0.orig/drivers/net/dpa/NetCommSw/etc/mm.h +++ linux-ppc-3.8.0/drivers/net/dpa/NetCommSw/etc/mm.h @@ -0,0 +1,101 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************** + * + * File: mm.h + * + * + * Description: + * MM (Memory Management) object definitions. + * It also includes definitions of the Free Block, Busy Block + * and Memory Block structures used by the MM object. + * + ****************************************************************/ + +#ifndef __MM_H +#define __MM_H + + +#include "mm_ext.h" + +#define __ERR_MODULE__ MODULE_MM + + +#define MAKE_ALIGNED(addr, align) \ + (((uint64_t)(addr) + ((align) - 1)) & (~(((uint64_t)align) - 1))) + + +/* t_MemBlock data stucutre defines parameters of the Memory Block */ +typedef struct t_MemBlock +{ + struct t_MemBlock *p_Next; /* Pointer to the next memory block */ + + uint64_t base; /* Base address of the memory block */ + uint64_t end; /* End address of the memory block */ +} t_MemBlock; + + +/* t_FreeBlock data stucutre defines parameters of the Free Block */ +typedef struct t_FreeBlock +{ + struct t_FreeBlock *p_Next; /* Pointer to the next free block */ + + uint64_t base; /* Base address of the block */ + uint64_t end; /* End address of the block */ +} t_FreeBlock; + + +/* t_BusyBlock data stucutre defines parameters of the Busy Block */ +typedef struct t_BusyBlock +{ + struct t_BusyBlock *p_Next; /* Pointer to the next free block */ + + uint64_t base; /* Base address of the block */ + uint64_t end; /* End address of the block */ + char name[MM_MAX_NAME_LEN]; /* That block of memory was allocated for + something specified by the Name */ +} t_BusyBlock; + + +/* t_MM data structure defines parameters of the MM object */ +typedef struct t_MM +{ + t_MemBlock *memBlocks; /* List of memory blocks (Memory list) */ + t_BusyBlock *busyBlocks; /* List of busy blocks (Busy list) */ + t_FreeBlock *freeBlocks[MM_MAX_ALIGNMENT + 1]; + /* Alignment lists of free blocks (Free lists) */ + t_Handle h_Spinlock; +} t_MM; + + +#endif /* __MM_H */ --- linux-ppc-3.8.0.orig/drivers/net/xen-netback/netback.c +++ linux-ppc-3.8.0/drivers/net/xen-netback/netback.c @@ -47,11 +47,33 @@ #include #include +/* + * This is the maximum slots a skb can have. If a guest sends a skb + * which exceeds this limit it is considered malicious. + */ +#define FATAL_SKB_SLOTS_DEFAULT 20 +static unsigned int fatal_skb_slots = FATAL_SKB_SLOTS_DEFAULT; +module_param(fatal_skb_slots, uint, 0444); + +/* + * To avoid confusion, we define XEN_NETBK_LEGACY_SLOTS_MAX indicating + * the maximum slots a valid packet can use. Now this value is defined + * to be XEN_NETIF_NR_SLOTS_MIN, which is supposed to be supported by + * all backend. + */ +#define XEN_NETBK_LEGACY_SLOTS_MAX XEN_NETIF_NR_SLOTS_MIN + +typedef unsigned int pending_ring_idx_t; +#define INVALID_PENDING_RING_IDX (~0U) + struct pending_tx_info { - struct xen_netif_tx_request req; + struct xen_netif_tx_request req; /* coalesced tx request */ struct xenvif *vif; + pending_ring_idx_t head; /* head != INVALID_PENDING_RING_IDX + * if it is head of one or more tx + * reqs + */ }; -typedef unsigned int pending_ring_idx_t; struct netbk_rx_meta { int id; @@ -102,7 +124,11 @@ atomic_t netfront_count; struct pending_tx_info pending_tx_info[MAX_PENDING_REQS]; - struct gnttab_copy tx_copy_ops[MAX_PENDING_REQS]; + /* Coalescing tx requests before copying makes number of grant + * copy ops greater or equal to number of slots required. In + * worst case a tx request consumes 2 gnttab_copy. + */ + struct gnttab_copy tx_copy_ops[2*MAX_PENDING_REQS]; u16 pending_ring[MAX_PENDING_REQS]; @@ -118,6 +144,16 @@ static struct xen_netbk *xen_netbk; static int xen_netbk_group_nr; +/* + * If head != INVALID_PENDING_RING_IDX, it means this tx request is head of + * one or more merged tx requests, otherwise it is the continuation of + * previous tx request. + */ +static inline int pending_tx_is_head(struct xen_netbk *netbk, RING_IDX idx) +{ + return netbk->pending_tx_info[idx].head != INVALID_PENDING_RING_IDX; +} + void xen_netbk_add_xenvif(struct xenvif *vif) { int i; @@ -250,6 +286,7 @@ { int max = DIV_ROUND_UP(vif->dev->mtu, PAGE_SIZE); + /* XXX FIXME: RX path dependent on MAX_SKB_FRAGS */ if (vif->can_sg || vif->gso || vif->gso_prefix) max += MAX_SKB_FRAGS + 1; /* extra_info + frags */ @@ -657,6 +694,7 @@ __skb_queue_tail(&rxq, skb); /* Filled the batch queue? */ + /* XXX FIXME: RX path dependent on MAX_SKB_FRAGS */ if (count + MAX_SKB_FRAGS >= XEN_NETIF_RX_RING_SIZE) break; } @@ -902,47 +940,99 @@ int work_to_do) { RING_IDX cons = vif->tx.req_cons; - int frags = 0; + int slots = 0; + int drop_err = 0; + int more_data; if (!(first->flags & XEN_NETTXF_more_data)) return 0; do { - if (frags >= work_to_do) { - netdev_err(vif->dev, "Need more frags\n"); + struct xen_netif_tx_request dropped_tx = { 0 }; + + if (slots >= work_to_do) { + netdev_err(vif->dev, + "Asked for %d slots but exceeds this limit\n", + work_to_do); netbk_fatal_tx_err(vif); - return -frags; + return -ENODATA; } - if (unlikely(frags >= MAX_SKB_FRAGS)) { - netdev_err(vif->dev, "Too many frags\n"); + /* This guest is really using too many slots and + * considered malicious. + */ + if (unlikely(slots >= fatal_skb_slots)) { + netdev_err(vif->dev, + "Malicious frontend using %d slots, threshold %u\n", + slots, fatal_skb_slots); netbk_fatal_tx_err(vif); - return -frags; + return -E2BIG; + } + + /* Xen network protocol had implicit dependency on + * MAX_SKB_FRAGS. XEN_NETBK_LEGACY_SLOTS_MAX is set to + * the historical MAX_SKB_FRAGS value 18 to honor the + * same behavior as before. Any packet using more than + * 18 slots but less than fatal_skb_slots slots is + * dropped + */ + if (!drop_err && slots >= XEN_NETBK_LEGACY_SLOTS_MAX) { + if (net_ratelimit()) + netdev_dbg(vif->dev, + "Too many slots (%d) exceeding limit (%d), dropping packet\n", + slots, XEN_NETBK_LEGACY_SLOTS_MAX); + drop_err = -E2BIG; } - memcpy(txp, RING_GET_REQUEST(&vif->tx, cons + frags), + if (drop_err) + txp = &dropped_tx; + + memcpy(txp, RING_GET_REQUEST(&vif->tx, cons + slots), sizeof(*txp)); - if (txp->size > first->size) { - netdev_err(vif->dev, "Frag is bigger than frame.\n"); - netbk_fatal_tx_err(vif); - return -frags; + + /* If the guest submitted a frame >= 64 KiB then + * first->size overflowed and following slots will + * appear to be larger than the frame. + * + * This cannot be fatal error as there are buggy + * frontends that do this. + * + * Consume all slots and drop the packet. + */ + if (!drop_err && txp->size > first->size) { + if (net_ratelimit()) + netdev_dbg(vif->dev, + "Invalid tx request, slot size %u > remaining size %u\n", + txp->size, first->size); + drop_err = -EIO; } first->size -= txp->size; - frags++; + slots++; if (unlikely((txp->offset + txp->size) > PAGE_SIZE)) { - netdev_err(vif->dev, "txp->offset: %x, size: %u\n", + netdev_err(vif->dev, "Cross page boundary, txp->offset: %x, size: %u\n", txp->offset, txp->size); netbk_fatal_tx_err(vif); - return -frags; + return -EINVAL; } - } while ((txp++)->flags & XEN_NETTXF_more_data); - return frags; + + more_data = txp->flags & XEN_NETTXF_more_data; + + if (!drop_err) + txp++; + + } while (more_data); + + if (drop_err) { + netbk_tx_err(vif, first, cons + slots); + return drop_err; + } + + return slots; } static struct page *xen_netbk_alloc_page(struct xen_netbk *netbk, - struct sk_buff *skb, u16 pending_idx) { struct page *page; @@ -963,48 +1053,114 @@ struct skb_shared_info *shinfo = skb_shinfo(skb); skb_frag_t *frags = shinfo->frags; u16 pending_idx = *((u16 *)skb->data); - int i, start; + u16 head_idx = 0; + int slot, start; + struct page *page; + pending_ring_idx_t index, start_idx = 0; + uint16_t dst_offset; + unsigned int nr_slots; + struct pending_tx_info *first = NULL; + + /* At this point shinfo->nr_frags is in fact the number of + * slots, which can be as large as XEN_NETBK_LEGACY_SLOTS_MAX. + */ + nr_slots = shinfo->nr_frags; /* 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 < shinfo->nr_frags; i++, txp++) { - struct page *page; - pending_ring_idx_t index; + /* Coalesce tx requests, at this point the packet passed in + * should be <= 64K. Any packets larger than 64K have been + * handled in netbk_count_requests(). + */ + for (shinfo->nr_frags = slot = start; slot < nr_slots; + shinfo->nr_frags++) { struct pending_tx_info *pending_tx_info = netbk->pending_tx_info; - index = pending_index(netbk->pending_cons++); - pending_idx = netbk->pending_ring[index]; - page = xen_netbk_alloc_page(netbk, skb, pending_idx); + page = alloc_page(GFP_KERNEL|__GFP_COLD); if (!page) goto err; - gop->source.u.ref = txp->gref; - gop->source.domid = vif->domid; - gop->source.offset = txp->offset; - - gop->dest.u.gmfn = virt_to_mfn(page_address(page)); - gop->dest.domid = DOMID_SELF; - gop->dest.offset = txp->offset; + dst_offset = 0; + first = NULL; + while (dst_offset < PAGE_SIZE && slot < nr_slots) { + gop->flags = GNTCOPY_source_gref; + + gop->source.u.ref = txp->gref; + gop->source.domid = vif->domid; + gop->source.offset = txp->offset; + + gop->dest.domid = DOMID_SELF; + + gop->dest.offset = dst_offset; + gop->dest.u.gmfn = virt_to_mfn(page_address(page)); + + if (dst_offset + txp->size > PAGE_SIZE) { + /* This page can only merge a portion + * of tx request. Do not increment any + * pointer / counter here. The txp + * will be dealt with in future + * rounds, eventually hitting the + * `else` branch. + */ + gop->len = PAGE_SIZE - dst_offset; + txp->offset += gop->len; + txp->size -= gop->len; + dst_offset += gop->len; /* quit loop */ + } else { + /* This tx request can be merged in the page */ + gop->len = txp->size; + dst_offset += gop->len; + + index = pending_index(netbk->pending_cons++); + + pending_idx = netbk->pending_ring[index]; + + memcpy(&pending_tx_info[pending_idx].req, txp, + sizeof(*txp)); + xenvif_get(vif); + + pending_tx_info[pending_idx].vif = vif; + + /* Poison these fields, corresponding + * fields for head tx req will be set + * to correct values after the loop. + */ + netbk->mmap_pages[pending_idx] = (void *)(~0UL); + pending_tx_info[pending_idx].head = + INVALID_PENDING_RING_IDX; + + if (!first) { + first = &pending_tx_info[pending_idx]; + start_idx = index; + head_idx = pending_idx; + } - gop->len = txp->size; - gop->flags = GNTCOPY_source_gref; + txp++; + slot++; + } - gop++; + gop++; + } - memcpy(&pending_tx_info[pending_idx].req, txp, sizeof(*txp)); - xenvif_get(vif); - pending_tx_info[pending_idx].vif = vif; - frag_set_pending_idx(&frags[i], pending_idx); + first->req.offset = 0; + first->req.size = dst_offset; + first->head = start_idx; + set_page_ext(page, netbk, head_idx); + netbk->mmap_pages[head_idx] = page; + frag_set_pending_idx(&frags[shinfo->nr_frags], head_idx); } + BUG_ON(shinfo->nr_frags > MAX_SKB_FRAGS); + return gop; err: /* Unwind, freeing all pages and sending error responses. */ - while (i-- > start) { - xen_netbk_idx_release(netbk, frag_get_pending_idx(&frags[i]), - XEN_NETIF_RSP_ERROR); + while (shinfo->nr_frags-- > start) { + xen_netbk_idx_release(netbk, + frag_get_pending_idx(&frags[shinfo->nr_frags]), + XEN_NETIF_RSP_ERROR); } /* The head too, if necessary. */ if (start) @@ -1020,8 +1176,10 @@ struct gnttab_copy *gop = *gopp; u16 pending_idx = *((u16 *)skb->data); struct skb_shared_info *shinfo = skb_shinfo(skb); + struct pending_tx_info *tx_info; int nr_frags = shinfo->nr_frags; int i, err, start; + u16 peek; /* peek into next tx request */ /* Check status of header. */ err = gop->status; @@ -1033,11 +1191,20 @@ for (i = start; i < nr_frags; i++) { int j, newerr; + pending_ring_idx_t head; pending_idx = frag_get_pending_idx(&shinfo->frags[i]); + tx_info = &netbk->pending_tx_info[pending_idx]; + head = tx_info->head; /* Check error status: if okay then remember grant handle. */ - newerr = (++gop)->status; + do { + newerr = (++gop)->status; + if (newerr) + break; + peek = netbk->pending_ring[pending_index(++head)]; + } while (!pending_tx_is_head(netbk, peek)); + if (likely(!newerr)) { /* Had a previous error? Invalidate this fragment. */ if (unlikely(err)) @@ -1262,11 +1429,12 @@ struct sk_buff *skb; int ret; - while (((nr_pending_reqs(netbk) + MAX_SKB_FRAGS) < MAX_PENDING_REQS) && + while ((nr_pending_reqs(netbk) + XEN_NETBK_LEGACY_SLOTS_MAX + < MAX_PENDING_REQS) && !list_empty(&netbk->net_schedule_list)) { struct xenvif *vif; struct xen_netif_tx_request txreq; - struct xen_netif_tx_request txfrags[MAX_SKB_FRAGS]; + struct xen_netif_tx_request txfrags[XEN_NETBK_LEGACY_SLOTS_MAX]; struct page *page; struct xen_netif_extra_info extras[XEN_NETIF_EXTRA_TYPE_MAX-1]; u16 pending_idx; @@ -1354,7 +1522,7 @@ pending_idx = netbk->pending_ring[index]; data_len = (txreq.size > PKT_PROT_LEN && - ret < MAX_SKB_FRAGS) ? + ret < XEN_NETBK_LEGACY_SLOTS_MAX) ? PKT_PROT_LEN : txreq.size; skb = alloc_skb(data_len + NET_SKB_PAD + NET_IP_ALIGN, @@ -1381,7 +1549,7 @@ } /* XXX could copy straight to head */ - page = xen_netbk_alloc_page(netbk, skb, pending_idx); + page = xen_netbk_alloc_page(netbk, pending_idx); if (!page) { kfree_skb(skb); netbk_tx_err(vif, &txreq, idx); @@ -1404,6 +1572,7 @@ memcpy(&netbk->pending_tx_info[pending_idx].req, &txreq, sizeof(txreq)); netbk->pending_tx_info[pending_idx].vif = vif; + netbk->pending_tx_info[pending_idx].head = index; *((u16 *)skb->data) = pending_idx; __skb_put(skb, data_len); @@ -1531,7 +1700,10 @@ { struct xenvif *vif; struct pending_tx_info *pending_tx_info; - pending_ring_idx_t index; + pending_ring_idx_t head; + u16 peek; /* peek into next tx request */ + + BUG_ON(netbk->mmap_pages[pending_idx] == (void *)(~0UL)); /* Already complete? */ if (netbk->mmap_pages[pending_idx] == NULL) @@ -1540,19 +1712,40 @@ pending_tx_info = &netbk->pending_tx_info[pending_idx]; vif = pending_tx_info->vif; + head = pending_tx_info->head; + + BUG_ON(!pending_tx_is_head(netbk, head)); + BUG_ON(netbk->pending_ring[pending_index(head)] != pending_idx); - make_tx_response(vif, &pending_tx_info->req, status); + do { + pending_ring_idx_t index; + pending_ring_idx_t idx = pending_index(head); + u16 info_idx = netbk->pending_ring[idx]; - index = pending_index(netbk->pending_prod++); - netbk->pending_ring[index] = pending_idx; + pending_tx_info = &netbk->pending_tx_info[info_idx]; + make_tx_response(vif, &pending_tx_info->req, status); - xenvif_put(vif); + /* Setting any number other than + * INVALID_PENDING_RING_IDX indicates this slot is + * starting a new packet / ending a previous packet. + */ + pending_tx_info->head = 0; + + index = pending_index(netbk->pending_prod++); + netbk->pending_ring[index] = netbk->pending_ring[info_idx]; + + xenvif_put(vif); + + peek = netbk->pending_ring[pending_index(++head)]; + + } while (!pending_tx_is_head(netbk, peek)); netbk->mmap_pages[pending_idx]->mapping = 0; put_page(netbk->mmap_pages[pending_idx]); netbk->mmap_pages[pending_idx] = NULL; } + static void make_tx_response(struct xenvif *vif, struct xen_netif_tx_request *txp, s8 st) @@ -1605,8 +1798,9 @@ static inline int tx_work_todo(struct xen_netbk *netbk) { - if (((nr_pending_reqs(netbk) + MAX_SKB_FRAGS) < MAX_PENDING_REQS) && - !list_empty(&netbk->net_schedule_list)) + if ((nr_pending_reqs(netbk) + XEN_NETBK_LEGACY_SLOTS_MAX + < MAX_PENDING_REQS) && + !list_empty(&netbk->net_schedule_list)) return 1; return 0; @@ -1689,6 +1883,13 @@ if (!xen_domain()) return -ENODEV; + if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) { + printk(KERN_INFO + "xen-netback: fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n", + fatal_skb_slots, XEN_NETBK_LEGACY_SLOTS_MAX); + fatal_skb_slots = XEN_NETBK_LEGACY_SLOTS_MAX; + } + xen_netbk_group_nr = num_online_cpus(); xen_netbk = vzalloc(sizeof(struct xen_netbk) * xen_netbk_group_nr); if (!xen_netbk) --- linux-ppc-3.8.0.orig/drivers/net/xen-netback/interface.c +++ linux-ppc-3.8.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); } @@ -363,8 +364,6 @@ 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-ppc-3.8.0.orig/drivers/net/usb/qmi_wwan.c +++ linux-ppc-3.8.0/drivers/net/usb/qmi_wwan.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -52,6 +53,93 @@ struct usb_interface *data; }; +/* default ethernet address used by the modem */ +static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3}; + +/* Make up an ethernet header if the packet doesn't have one. + * + * A firmware bug common among several devices cause them to send raw + * IP packets under some circumstances. There is no way for the + * driver/host to know when this will happen. And even when the bug + * hits, some packets will still arrive with an intact header. + * + * The supported devices are only capably of sending IPv4, IPv6 and + * ARP packets on a point-to-point link. Any packet with an ethernet + * header will have either our address or a broadcast/multicast + * address as destination. ARP packets will always have a header. + * + * This means that this function will reliably add the appropriate + * header iff necessary, provided our hardware address does not start + * with 4 or 6. + * + * Another common firmware bug results in all packets being addressed + * to 00:a0:c6:00:00:00 despite the host address being different. + * This function will also fixup such packets. + */ +static int qmi_wwan_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +{ + __be16 proto; + + /* usbnet rx_complete guarantees that skb->len is at least + * hard_header_len, so we can inspect the dest address without + * checking skb->len + */ + switch (skb->data[0] & 0xf0) { + case 0x40: + proto = htons(ETH_P_IP); + break; + case 0x60: + proto = htons(ETH_P_IPV6); + break; + case 0x00: + if (is_multicast_ether_addr(skb->data)) + return 1; + /* possibly bogus destination - rewrite just in case */ + skb_reset_mac_header(skb); + goto fix_dest; + default: + /* pass along other packets without modifications */ + return 1; + } + if (skb_headroom(skb) < ETH_HLEN) + return 0; + skb_push(skb, ETH_HLEN); + skb_reset_mac_header(skb); + eth_hdr(skb)->h_proto = proto; + memset(eth_hdr(skb)->h_source, 0, ETH_ALEN); +fix_dest: + memcpy(eth_hdr(skb)->h_dest, dev->net->dev_addr, ETH_ALEN); + return 1; +} + +/* very simplistic detection of IPv4 or IPv6 headers */ +static bool possibly_iphdr(const char *data) +{ + return (data[0] & 0xd0) == 0x40; +} + +/* disallow addresses which may be confused with IP headers */ +static int qmi_wwan_mac_addr(struct net_device *dev, void *p) +{ + struct sockaddr *addr = p; + + if (!is_valid_ether_addr(addr->sa_data) || + possibly_iphdr(addr->sa_data)) + return -EADDRNOTAVAIL; + memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); + return 0; +} + +static const struct net_device_ops qmi_wwan_netdev_ops = { + .ndo_open = usbnet_open, + .ndo_stop = usbnet_stop, + .ndo_start_xmit = usbnet_start_xmit, + .ndo_tx_timeout = usbnet_tx_timeout, + .ndo_change_mtu = usbnet_change_mtu, + .ndo_set_mac_address = qmi_wwan_mac_addr, + .ndo_validate_addr = eth_validate_addr, +}; + /* using a counter to merge subdriver requests with our own into a combined state */ static int qmi_wwan_manage_power(struct usbnet *dev, int on) { @@ -139,16 +227,9 @@ BUILD_BUG_ON((sizeof(((struct usbnet *)0)->data) < sizeof(struct qmi_wwan_state))); - /* control and data is shared? */ - if (intf->cur_altsetting->desc.bNumEndpoints == 3) { - info->control = intf; - info->data = intf; - goto shared; - } - - /* else require a single interrupt status endpoint on control intf */ - if (intf->cur_altsetting->desc.bNumEndpoints != 1) - goto err; + /* set up initial state */ + info->control = intf; + info->data = intf; /* and a number of CDC descriptors */ while (len > 3) { @@ -207,25 +288,14 @@ buf += h->bLength; } - /* did we find all the required ones? */ - if (!(found & (1 << USB_CDC_HEADER_TYPE)) || - !(found & (1 << USB_CDC_UNION_TYPE))) { - dev_err(&intf->dev, "CDC functional descriptors missing\n"); - goto err; - } - - /* verify CDC Union */ - if (desc->bInterfaceNumber != cdc_union->bMasterInterface0) { - dev_err(&intf->dev, "bogus CDC Union: master=%u\n", cdc_union->bMasterInterface0); - goto err; - } - - /* need to save these for unbind */ - info->control = intf; - info->data = usb_ifnum_to_if(dev->udev, cdc_union->bSlaveInterface0); - if (!info->data) { - dev_err(&intf->dev, "bogus CDC Union: slave=%u\n", cdc_union->bSlaveInterface0); - goto err; + /* Use separate control and data interfaces if we found a CDC Union */ + if (cdc_union) { + info->data = usb_ifnum_to_if(dev->udev, cdc_union->bSlaveInterface0); + if (desc->bInterfaceNumber != cdc_union->bMasterInterface0 || !info->data) { + dev_err(&intf->dev, "bogus CDC Union: master=%u, slave=%u\n", + cdc_union->bMasterInterface0, cdc_union->bSlaveInterface0); + goto err; + } } /* errors aren't fatal - we can live with the dynamic address */ @@ -235,17 +305,30 @@ } /* claim data interface and set it up */ - status = usb_driver_claim_interface(driver, info->data, dev); - if (status < 0) - goto err; + if (info->control != info->data) { + status = usb_driver_claim_interface(driver, info->data, dev); + if (status < 0) + goto err; + } -shared: status = qmi_wwan_register_subdriver(dev); if (status < 0 && info->control != info->data) { usb_set_intfdata(info->data, NULL); usb_driver_release_interface(driver, info->data); } + /* Never use the same address on both ends of the link, even + * if the buggy firmware told us to. + */ + if (!compare_ether_addr(dev->net->dev_addr, default_modem_addr)) + eth_hw_addr_random(dev->net); + + /* make MAC addr easily distinguishable from an IP header */ + if (possibly_iphdr(dev->net->dev_addr)) { + dev->net->dev_addr[0] |= 0x02; /* set local assignment bit */ + dev->net->dev_addr[0] &= 0xbf; /* clear "IP" bit */ + } + dev->net->netdev_ops = &qmi_wwan_netdev_ops; err: return status; } @@ -324,6 +407,7 @@ .bind = qmi_wwan_bind, .unbind = qmi_wwan_unbind, .manage_power = qmi_wwan_manage_power, + .rx_fixup = qmi_wwan_rx_fixup, }; #define HUAWEI_VENDOR_ID 0x12D1 @@ -407,6 +491,20 @@ USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Dell Wireless 5804 (Novatel E371) */ + USB_DEVICE_AND_INTERFACE_INFO(0x413C, 0x819b, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* ADU960S */ + USB_DEVICE_AND_INTERFACE_INFO(0x16d5, 0x650a, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&qmi_wwan_info, }, --- linux-ppc-3.8.0.orig/drivers/net/usb/smsc75xx.c +++ linux-ppc-3.8.0/drivers/net/usb/smsc75xx.c @@ -45,7 +45,6 @@ #define EEPROM_MAC_OFFSET (0x01) #define DEFAULT_TX_CSUM_ENABLE (true) #define DEFAULT_RX_CSUM_ENABLE (true) -#define DEFAULT_TSO_ENABLE (true) #define SMSC75XX_INTERNAL_PHY_ID (1) #define SMSC75XX_TX_OVERHEAD (8) #define MAX_RX_FIFO_SIZE (20 * 1024) @@ -914,8 +913,12 @@ static int smsc75xx_change_mtu(struct net_device *netdev, int new_mtu) { struct usbnet *dev = netdev_priv(netdev); + int ret; + + if (new_mtu > MAX_SINGLE_PACKET_SIZE) + return -EINVAL; - int ret = smsc75xx_set_rx_max_frame_length(dev, new_mtu); + ret = smsc75xx_set_rx_max_frame_length(dev, new_mtu + ETH_HLEN); if (ret < 0) { netdev_warn(dev->net, "Failed to set mac rx frame length\n"); return ret; @@ -1324,7 +1327,7 @@ netif_dbg(dev, ifup, dev->net, "FCT_TX_CTL set to 0x%08x\n", buf); - ret = smsc75xx_set_rx_max_frame_length(dev, 1514); + ret = smsc75xx_set_rx_max_frame_length(dev, dev->net->mtu + ETH_HLEN); if (ret < 0) { netdev_warn(dev->net, "Failed to set max rx frame length\n"); return ret; @@ -1408,17 +1411,14 @@ INIT_WORK(&pdata->set_multicast, smsc75xx_deferred_multicast_write); - if (DEFAULT_TX_CSUM_ENABLE) { + if (DEFAULT_TX_CSUM_ENABLE) dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; - if (DEFAULT_TSO_ENABLE) - dev->net->features |= NETIF_F_SG | - NETIF_F_TSO | NETIF_F_TSO6; - } + if (DEFAULT_RX_CSUM_ENABLE) dev->net->features |= NETIF_F_RXCSUM; dev->net->hw_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | - NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_RXCSUM; + NETIF_F_RXCSUM; ret = smsc75xx_wait_ready(dev, 0); if (ret < 0) { @@ -2136,8 +2136,8 @@ else if (rx_cmd_a & (RX_CMD_A_LONG | RX_CMD_A_RUNT)) dev->net->stats.rx_frame_errors++; } else { - /* ETH_FRAME_LEN + 4(CRC) + 2(COE) + 4(Vlan) */ - if (unlikely(size > (ETH_FRAME_LEN + 12))) { + /* MAX_SINGLE_PACKET_SIZE + 4(CRC) + 2(COE) + 4(Vlan) */ + if (unlikely(size > (MAX_SINGLE_PACKET_SIZE + ETH_HLEN + 12))) { netif_dbg(dev, rx_err, dev->net, "size err rx_cmd_a=0x%08x\n", rx_cmd_a); @@ -2194,8 +2194,6 @@ { u32 tx_cmd_a, tx_cmd_b; - skb_linearize(skb); - if (skb_headroom(skb) < SMSC75XX_TX_OVERHEAD) { struct sk_buff *skb2 = skb_copy_expand(skb, SMSC75XX_TX_OVERHEAD, 0, flags); --- linux-ppc-3.8.0.orig/drivers/net/usb/smsc95xx.c +++ linux-ppc-3.8.0/drivers/net/usb/smsc95xx.c @@ -1340,6 +1340,8 @@ ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); if (ret < 0) netdev_warn(dev->net, "Error reading PM_CTRL\n"); + else + ret = 0; return ret; } @@ -1392,6 +1394,8 @@ ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); if (ret < 0) netdev_warn(dev->net, "Error writing PM_CTRL\n"); + else + ret = 0; return ret; } @@ -1413,6 +1417,8 @@ ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); if (ret < 0) netdev_warn(dev->net, "Error writing PM_CTRL\n"); + else + ret = 0; return ret; } --- linux-ppc-3.8.0.orig/drivers/net/usb/cdc_mbim.c +++ linux-ppc-3.8.0/drivers/net/usb/cdc_mbim.c @@ -68,18 +68,9 @@ struct cdc_ncm_ctx *ctx; struct usb_driver *subdriver = ERR_PTR(-ENODEV); int ret = -ENODEV; - u8 data_altsetting = CDC_NCM_DATA_ALTSETTING_NCM; + u8 data_altsetting = cdc_ncm_select_altsetting(dev, intf); struct cdc_mbim_state *info = (void *)&dev->data; - /* see if interface supports MBIM alternate setting */ - if (intf->num_altsetting == 2) { - if (!cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting)) - usb_set_interface(dev->udev, - intf->cur_altsetting->desc.bInterfaceNumber, - CDC_NCM_COMM_ALTSETTING_MBIM); - data_altsetting = CDC_NCM_DATA_ALTSETTING_MBIM; - } - /* Probably NCM, defer for cdc_ncm_bind */ if (!cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting)) goto err; @@ -143,7 +134,7 @@ goto error; if (skb) { - if (skb->len <= sizeof(ETH_HLEN)) + if (skb->len <= ETH_HLEN) goto error; /* mapping VLANs to MBIM sessions: --- linux-ppc-3.8.0.orig/drivers/net/usb/cdc_ncm.c +++ linux-ppc-3.8.0/drivers/net/usb/cdc_ncm.c @@ -55,6 +55,14 @@ #define DRIVER_VERSION "14-Mar-2012" +#if IS_ENABLED(CONFIG_USB_NET_CDC_MBIM) +static bool prefer_mbim = true; +#else +static bool prefer_mbim; +#endif +module_param(prefer_mbim, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(prefer_mbim, "Prefer MBIM setting on dual NCM/MBIM functions"); + static void cdc_ncm_txpath_bh(unsigned long param); static void cdc_ncm_tx_timeout_start(struct cdc_ncm_ctx *ctx); static enum hrtimer_restart cdc_ncm_tx_timer_cb(struct hrtimer *hr_timer); @@ -550,9 +558,12 @@ } EXPORT_SYMBOL_GPL(cdc_ncm_unbind); -static int cdc_ncm_bind(struct usbnet *dev, struct usb_interface *intf) +/* Select the MBIM altsetting iff it is preferred and available, + * returning the number of the corresponding data interface altsetting + */ +u8 cdc_ncm_select_altsetting(struct usbnet *dev, struct usb_interface *intf) { - int ret; + struct usb_host_interface *alt; /* The MBIM spec defines a NCM compatible default altsetting, * which we may have matched: @@ -568,18 +579,27 @@ * endpoint descriptors, shall be constructed according to * the rules given in section 6 (USB Device Model) of this * specification." - * - * Do not bind to such interfaces, allowing cdc_mbim to handle - * them */ -#if IS_ENABLED(CONFIG_USB_NET_CDC_MBIM) - if ((intf->num_altsetting == 2) && - !usb_set_interface(dev->udev, - intf->cur_altsetting->desc.bInterfaceNumber, - CDC_NCM_COMM_ALTSETTING_MBIM) && - cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting)) + if (prefer_mbim && intf->num_altsetting == 2) { + alt = usb_altnum_to_altsetting(intf, CDC_NCM_COMM_ALTSETTING_MBIM); + if (alt && cdc_ncm_comm_intf_is_mbim(alt) && + !usb_set_interface(dev->udev, + intf->cur_altsetting->desc.bInterfaceNumber, + CDC_NCM_COMM_ALTSETTING_MBIM)) + return CDC_NCM_DATA_ALTSETTING_MBIM; + } + return CDC_NCM_DATA_ALTSETTING_NCM; +} +EXPORT_SYMBOL_GPL(cdc_ncm_select_altsetting); + +static int cdc_ncm_bind(struct usbnet *dev, struct usb_interface *intf) +{ + int ret; + + /* MBIM backwards compatible function? */ + cdc_ncm_select_altsetting(dev, intf); + if (cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting)) return -ENODEV; -#endif /* NCM data altsetting is always 1 */ ret = cdc_ncm_bind_common(dev, intf, 1); --- linux-ppc-3.8.0.orig/drivers/net/usb/cdc_ether.c +++ linux-ppc-3.8.0/drivers/net/usb/cdc_ether.c @@ -615,6 +615,20 @@ .driver_info = 0, }, +/* Dell Wireless 5804 (Novatel E371) - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x819b, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + +/* AnyDATA ADU960S - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(0x16d5, 0x650a, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + /* * WHITELIST!!! * --- linux-ppc-3.8.0.orig/drivers/net/phy/phy.c +++ linux-ppc-3.8.0/drivers/net/phy/phy.c @@ -6,7 +6,7 @@ * * Author: Andy Fleming * - * Copyright (c) 2004 Freescale Semiconductor, Inc. + * Copyright (c) 2004,2011 Freescale Semiconductor, Inc. * Copyright (c) 2006, 2007 Maciej W. Rozycki * * This program is free software; you can redistribute it and/or modify it @@ -481,6 +481,10 @@ idx = phy_find_valid(idx, phydev->supported); + /* Avoid reaching an invalid speed and duplex combination */ + if (!(settings[idx].setting & phydev->supported)) + return; + phydev->speed = settings[idx].speed; phydev->duplex = settings[idx].duplex; @@ -869,6 +873,8 @@ if (0 == phydev->link_timeout--) { phy_force_reduction(phydev); needs_aneg = 1; + phydev->link_timeout = + PHY_FORCE_TIMEOUT; } } @@ -1092,7 +1098,7 @@ adv = mmd_eee_adv_to_ethtool_adv_t(eee_adv); lp = mmd_eee_adv_to_ethtool_adv_t(eee_lp); idx = phy_find_setting(phydev->speed, phydev->duplex); - if ((lp & adv & settings[idx].setting)) + if (!(lp & adv & settings[idx].setting)) goto eee_exit; if (clk_stop_enable) { --- linux-ppc-3.8.0.orig/drivers/net/phy/phy_device.c +++ linux-ppc-3.8.0/drivers/net/phy/phy_device.c @@ -6,7 +6,7 @@ * * Author: Andy Fleming * - * Copyright (c) 2004 Freescale Semiconductor, Inc. + * Copyright (c) 2004, 2011 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -60,9 +60,6 @@ static LIST_HEAD(phy_fixup_list); static DEFINE_MUTEX(phy_fixup_lock); -static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, - u32 flags, phy_interface_t interface); - /* * Creates a new phy_fixup and adds it to the list * @bus_id: A string which matches phydev->dev.bus_id (or PHY_ANY_ID) @@ -524,8 +521,8 @@ * the attaching device, and given a callback for link status * change. The phy_device is returned to the attaching driver. */ -static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, - u32 flags, phy_interface_t interface) +int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, + u32 flags, phy_interface_t interface) { struct device *d = &phydev->dev; int err; @@ -571,6 +568,7 @@ return err; } +EXPORT_SYMBOL(phy_attach_direct); /** * phy_attach - attach a network device to a particular PHY device @@ -697,7 +695,7 @@ * to the values in phydev. Assumes that the values are valid. * Please see phy_sanitize_settings(). */ -static int genphy_setup_forced(struct phy_device *phydev) +int genphy_setup_forced(struct phy_device *phydev) { int err; int ctl = 0; @@ -716,6 +714,7 @@ return err; } +EXPORT_SYMBOL(genphy_setup_forced); /** @@ -867,6 +866,16 @@ lpa &= adv; + err = phy_read(phydev, MII_BMSR); + + if (err < 0) + return err; + + /* if the link changed while reading speed and duplex + * abort the speed and duplex update */ + if (((err & BMSR_LSTATUS) == 0) != (phydev->link == 0)) + return 0; + phydev->speed = SPEED_10; phydev->duplex = DUPLEX_HALF; phydev->pause = phydev->asym_pause = 0; --- linux-ppc-3.8.0.orig/drivers/net/phy/vitesse.c +++ linux-ppc-3.8.0/drivers/net/phy/vitesse.c @@ -3,7 +3,7 @@ * * Author: Kriston Carson * - * Copyright (c) 2005, 2009 Freescale Semiconductor, Inc. + * Copyright (c) 2005, 2009, 2011 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -45,6 +45,10 @@ /* Vitesse Auxiliary Control/Status Register */ #define MII_VSC8244_AUX_CONSTAT 0x1c +#define MII_VSC82X4_EXT_PAGE_16E 0x10 +#define MII_VSC82X4_EXT_PAGE_17E 0x11 +#define MII_VSC82X4_EXT_PAGE_18E 0x12 +#define MII_VSC82X4_EXT_PAGE_ACCESS 0x1f #define MII_VSC8244_AUXCONSTAT_INIT 0x0000 #define MII_VSC8244_AUXCONSTAT_DUPLEX 0x0020 #define MII_VSC8244_AUXCONSTAT_SPEED 0x0018 @@ -54,6 +58,7 @@ #define MII_VSC8221_AUXCONSTAT_INIT 0x0004 /* need to set this bit? */ #define MII_VSC8221_AUXCONSTAT_RESERVED 0x0004 +#define PHY_ID_VSC8234 0x000fc620 #define PHY_ID_VSC8244 0x000fc6c0 #define PHY_ID_VSC8221 0x000fc550 @@ -119,7 +124,8 @@ if (phydev->interrupts == PHY_INTERRUPT_ENABLED) err = phy_write(phydev, MII_VSC8244_IMASK, - phydev->drv->phy_id == PHY_ID_VSC8244 ? + ((phydev->drv->phy_id == PHY_ID_VSC8234) || + (phydev->drv->phy_id == PHY_ID_VSC8244)) ? MII_VSC8244_IMASK_MASK : MII_VSC8221_IMASK_MASK); else { @@ -150,6 +156,65 @@ Options are 802.3Z SerDes or SGMII */ } +/* vsc82x4_config_autocross_enable - Enable auto MDI/MDI-X for forced links + * @phydev: target phy_device struct + * + * Enable auto MDI/MDI-X when in 10/100 forced link speeds by writing + * special values in the VSC8234/VSC8244 extended reserved registers + * + */ +static int vsc82x4_config_autocross_enable(struct phy_device *phydev) +{ + int ret; + + if (phydev->autoneg == AUTONEG_ENABLE || phydev->speed > SPEED_100) + return 0; + + /* map extended registers set 0x10 - 0x1e */ + ret = phy_write(phydev, MII_VSC82X4_EXT_PAGE_ACCESS, 0x52b5); + if (ret >= 0) + ret = phy_write(phydev, MII_VSC82X4_EXT_PAGE_18E, 0x0012); + if (ret >= 0) + ret = phy_write(phydev, MII_VSC82X4_EXT_PAGE_17E, 0x2803); + if (ret >= 0) + ret = phy_write(phydev, MII_VSC82X4_EXT_PAGE_16E, 0x87fa); + /* map standard registers set 0x10 - 0x1e */ + if (ret >= 0) + ret = phy_write(phydev, MII_VSC82X4_EXT_PAGE_ACCESS, 0x0000); + else + phy_write(phydev, MII_VSC82X4_EXT_PAGE_ACCESS, 0x0000); + + return ret; +} + +/** + * vsc82x4_config_aneg - restart auto-negotiation or write BMCR + * @phydev: target phy_device struct + * + * Description: If auto-negotiation is enabled, we configure the + * advertising, and then restart auto-negotiation. If it is not + * enabled, then we write the BMCR and also start the auto + * MDI/MDI-X feature + * + */ +static int vsc82x4_config_aneg(struct phy_device *phydev) +{ + int ret; + + /* Enable auto MDI/MDI-X when in 10/100 forced link speeds by + * writing special values in the VSC8234 extended reserved registers */ + if (phydev->autoneg != AUTONEG_ENABLE && phydev->speed <= SPEED_100) { + ret = genphy_setup_forced(phydev); + + if (ret < 0) /* error */ + return ret; + + return vsc82x4_config_autocross_enable(phydev); + } + + return genphy_config_aneg(phydev); +} + /* Vitesse 824x */ static struct phy_driver vsc82xx_driver[] = { { @@ -159,7 +224,20 @@ .features = PHY_GBIT_FEATURES, .flags = PHY_HAS_INTERRUPT, .config_init = &vsc824x_config_init, - .config_aneg = &genphy_config_aneg, + .config_aneg = &vsc82x4_config_aneg, + .read_status = &genphy_read_status, + .ack_interrupt = &vsc824x_ack_interrupt, + .config_intr = &vsc82xx_config_intr, + .driver = { .owner = THIS_MODULE,}, +}, { + /* Vitesse 8234 */ + .phy_id = PHY_ID_VSC8234, + .phy_id_mask = 0x000ffff0, + .name = "Vitesse VSC8234", + .features = PHY_GBIT_FEATURES, + .flags = PHY_HAS_INTERRUPT, + .config_init = &vsc824x_config_init, + .config_aneg = &vsc82x4_config_aneg, .read_status = &genphy_read_status, .ack_interrupt = &vsc824x_ack_interrupt, .config_intr = &vsc82xx_config_intr, --- linux-ppc-3.8.0.orig/drivers/net/phy/fixed.c +++ linux-ppc-3.8.0/drivers/net/phy/fixed.c @@ -5,6 +5,7 @@ * Anton Vorontsov * * Copyright (c) 2006-2007 MontaVista Software, Inc. + * Copyright 2009 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -17,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -55,6 +57,9 @@ bmcr |= BMCR_FULLDPLX; switch (fp->status.speed) { + case 10000: + fp->regs[MDIO_STAT2] = MDIO_STAT2_DEVPRST_VAL; + break; case 1000: bmsr |= BMSR_ESTATEN; bmcr |= BMCR_SPEED1000; @@ -75,6 +80,9 @@ } } else { switch (fp->status.speed) { + case 10000: + fp->regs[MDIO_STAT2] = MDIO_STAT2_DEVPRST_VAL; + break; case 1000: bmsr |= BMSR_ESTATEN; bmcr |= BMCR_SPEED1000; --- linux-ppc-3.8.0.orig/drivers/net/team/team_mode_roundrobin.c +++ linux-ppc-3.8.0/drivers/net/team/team_mode_roundrobin.c @@ -52,6 +52,8 @@ port_index = rr_priv(team)->sent_packets++ % team->en_port_count; port = team_get_port_by_index_rcu(team, port_index); + if (unlikely(!port)) + goto drop; port = __get_first_port_up(team, port); if (unlikely(!port)) goto drop; --- linux-ppc-3.8.0.orig/drivers/net/team/team.c +++ linux-ppc-3.8.0/drivers/net/team/team.c @@ -1076,8 +1076,8 @@ } port->index = -1; - team_port_enable(team, port); list_add_tail_rcu(&port->list, &team->port_list); + team_port_enable(team, port); __team_compute_features(team); __team_port_change_port_added(port, !!netif_carrier_ok(port_dev)); __team_options_change_check(team); @@ -1139,6 +1139,8 @@ netdev_set_master(port_dev, NULL); team_port_disable_netpoll(port); vlan_vids_del_by_dev(port_dev, dev); + dev_uc_unsync(port_dev, dev); + dev_mc_unsync(port_dev, dev); dev_close(port_dev); team_port_leave(team, port); team_port_set_orig_dev_addr(port); --- linux-ppc-3.8.0.orig/drivers/net/wan/dlci.c +++ linux-ppc-3.8.0/drivers/net/wan/dlci.c @@ -384,21 +384,37 @@ struct frad_local *flp; struct net_device *master, *slave; int err; + bool found = false; + + rtnl_lock(); /* validate slave device */ master = __dev_get_by_name(&init_net, dlci->devname); - if (!master) - return -ENODEV; + if (!master) { + err = -ENODEV; + goto out; + } + + list_for_each_entry(dlp, &dlci_devs, list) { + if (dlp->master == master) { + found = true; + break; + } + } + if (!found) { + err = -ENODEV; + goto out; + } if (netif_running(master)) { - return -EBUSY; + err = -EBUSY; + goto out; } dlp = netdev_priv(master); slave = dlp->slave; flp = netdev_priv(slave); - rtnl_lock(); err = (*flp->deassoc)(slave, master); if (!err) { list_del(&dlp->list); @@ -407,8 +423,8 @@ dev_put(slave); } +out: rtnl_unlock(); - return err; } --- linux-ppc-3.8.0.orig/drivers/crypto/talitos.c +++ linux-ppc-3.8.0/drivers/crypto/talitos.c @@ -38,7 +38,6 @@ #include #include #include -#include #include #include @@ -1974,11 +1973,7 @@ }; static struct talitos_alg_template driver_algs[] = { - /* - * AEAD algorithms. These use a single-pass ipsec_esp descriptor. - * authencesn(*,*) is also registered, although not present - * explicitly here. - */ + /* AEAD algorithms. These use a single-pass ipsec_esp descriptor */ { .type = CRYPTO_ALG_TYPE_AEAD, .alg.crypto = { .cra_name = "authenc(hmac(sha1),cbc(aes))", @@ -2820,9 +2815,7 @@ if (hw_supports(dev, driver_algs[i].desc_hdr_template)) { struct talitos_crypto_alg *t_alg; char *name = NULL; - bool authenc = false; -authencesn: t_alg = talitos_alg_alloc(dev, &driver_algs[i]); if (IS_ERR(t_alg)) { err = PTR_ERR(t_alg); @@ -2837,8 +2830,6 @@ err = crypto_register_alg( &t_alg->algt.alg.crypto); name = t_alg->algt.alg.crypto.cra_driver_name; - authenc = authenc ? !authenc : - !(bool)memcmp(name, "authenc", 7); break; case CRYPTO_ALG_TYPE_AHASH: err = crypto_register_ahash( @@ -2851,25 +2842,8 @@ dev_err(dev, "%s alg registration failed\n", name); kfree(t_alg); - } else { + } else list_add_tail(&t_alg->entry, &priv->alg_list); - if (authenc) { - struct crypto_alg *alg = - &driver_algs[i].alg.crypto; - - name = alg->cra_name; - memmove(name + 10, name + 7, - strlen(name) - 7); - memcpy(name + 7, "esn", 3); - - name = alg->cra_driver_name; - memmove(name + 10, name + 7, - strlen(name) - 7); - memcpy(name + 7, "esn", 3); - - goto authencesn; - } - } } } if (!list_empty(&priv->alg_list)) --- linux-ppc-3.8.0.orig/drivers/crypto/omap-sham.c +++ linux-ppc-3.8.0/drivers/crypto/omap-sham.c @@ -38,7 +38,10 @@ #include #include + +#ifdef CONFIG_ARCH_OMAP1 #include +#endif #define SHA_REG_DIGEST(x) (0x00 + ((x) * 0x04)) #define SHA_REG_DIN(x) (0x1C + ((x) * 0x04)) --- linux-ppc-3.8.0.orig/drivers/crypto/caam/caamalg.c +++ linux-ppc-3.8.0/drivers/crypto/caam/caamalg.c @@ -1154,7 +1154,7 @@ dst_nents = sg_count(req->dst, req->cryptlen, &dst_chained); sgc = dma_map_sg_chained(jrdev, req->assoc, assoc_nents ? : 1, - DMA_BIDIRECTIONAL, assoc_chained); + DMA_TO_DEVICE, assoc_chained); if (likely(req->src == req->dst)) { sgc = dma_map_sg_chained(jrdev, req->src, src_nents ? : 1, DMA_BIDIRECTIONAL, src_chained); @@ -1336,7 +1336,7 @@ dst_nents = sg_count(req->dst, req->cryptlen, &dst_chained); sgc = dma_map_sg_chained(jrdev, req->assoc, assoc_nents ? : 1, - DMA_BIDIRECTIONAL, assoc_chained); + DMA_TO_DEVICE, assoc_chained); if (likely(req->src == req->dst)) { sgc = dma_map_sg_chained(jrdev, req->src, src_nents ? : 1, DMA_BIDIRECTIONAL, src_chained); @@ -1650,11 +1650,7 @@ }; static struct caam_alg_template driver_algs[] = { - /* - * single-pass ipsec_esp descriptor - * authencesn(*,*) is also registered, although not present - * explicitly here. - */ + /* single-pass ipsec_esp descriptor */ { .name = "authenc(hmac(md5),cbc(aes))", .driver_name = "authenc-hmac-md5-cbc-aes-caam", @@ -2217,9 +2213,7 @@ for (i = 0; i < ARRAY_SIZE(driver_algs); i++) { /* TODO: check if h/w supports alg */ struct caam_crypto_alg *t_alg; - bool done = false; -authencesn: t_alg = caam_alg_alloc(ctrldev, &driver_algs[i]); if (IS_ERR(t_alg)) { err = PTR_ERR(t_alg); @@ -2233,25 +2227,8 @@ dev_warn(ctrldev, "%s alg registration failed\n", t_alg->crypto_alg.cra_driver_name); kfree(t_alg); - } else { + } else list_add_tail(&t_alg->entry, &priv->alg_list); - if (driver_algs[i].type == CRYPTO_ALG_TYPE_AEAD && - !memcmp(driver_algs[i].name, "authenc", 7) && - !done) { - char *name; - - name = driver_algs[i].name; - memmove(name + 10, name + 7, strlen(name) - 7); - memcpy(name + 7, "esn", 3); - - name = driver_algs[i].driver_name; - memmove(name + 10, name + 7, strlen(name) - 7); - memcpy(name + 7, "esn", 3); - - done = true; - goto authencesn; - } - } } if (!list_empty(&priv->alg_list)) dev_info(ctrldev, "%s algorithms registered in /proc/crypto\n", --- linux-ppc-3.8.0.orig/drivers/crypto/caam/compat.h +++ linux-ppc-3.8.0/drivers/crypto/caam/compat.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #include --- linux-ppc-3.8.0.orig/drivers/crypto/ux500/cryp/cryp_core.c +++ linux-ppc-3.8.0/drivers/crypto/ux500/cryp/cryp_core.c @@ -1750,7 +1750,7 @@ .shutdown = ux500_cryp_shutdown, .driver = { .owner = THIS_MODULE, - .name = "cryp1" + .name = "cryp1", .pm = &ux500_cryp_pm, } }; --- linux-ppc-3.8.0.orig/drivers/edac/edac_mc_sysfs.c +++ linux-ppc-3.8.0/drivers/edac/edac_mc_sysfs.c @@ -330,17 +330,17 @@ }; /* possible dynamic channel ce_count attribute files */ -DEVICE_CHANNEL(ch0_ce_count, S_IRUGO | S_IWUSR, +DEVICE_CHANNEL(ch0_ce_count, S_IRUGO, channel_ce_count_show, NULL, 0); -DEVICE_CHANNEL(ch1_ce_count, S_IRUGO | S_IWUSR, +DEVICE_CHANNEL(ch1_ce_count, S_IRUGO, channel_ce_count_show, NULL, 1); -DEVICE_CHANNEL(ch2_ce_count, S_IRUGO | S_IWUSR, +DEVICE_CHANNEL(ch2_ce_count, S_IRUGO, channel_ce_count_show, NULL, 2); -DEVICE_CHANNEL(ch3_ce_count, S_IRUGO | S_IWUSR, +DEVICE_CHANNEL(ch3_ce_count, S_IRUGO, channel_ce_count_show, NULL, 3); -DEVICE_CHANNEL(ch4_ce_count, S_IRUGO | S_IWUSR, +DEVICE_CHANNEL(ch4_ce_count, S_IRUGO, channel_ce_count_show, NULL, 4); -DEVICE_CHANNEL(ch5_ce_count, S_IRUGO | S_IWUSR, +DEVICE_CHANNEL(ch5_ce_count, S_IRUGO, channel_ce_count_show, NULL, 5); /* Total possible dynamic ce_count attribute file table */ --- linux-ppc-3.8.0.orig/drivers/cpuidle/cpuidle-calxeda.c +++ linux-ppc-3.8.0/drivers/cpuidle/cpuidle-calxeda.c @@ -141,6 +141,7 @@ dev = per_cpu_ptr(calxeda_idle_cpuidle_devices, cpu_id); dev->cpu = cpu_id; dev->state_count = drv->state_count; + dev->states_usage[1].disable = 1; ret = cpuidle_register_device(dev); if (ret) { --- linux-ppc-3.8.0.orig/drivers/cpuidle/governors/menu.c +++ linux-ppc-3.8.0/drivers/cpuidle/governors/menu.c @@ -28,13 +28,6 @@ #define MAX_INTERESTING 50000 #define STDDEV_THRESH 400 -/* 60 * 60 > STDDEV_THRESH * INTERVALS = 400 * 8 */ -#define MAX_DEVIATION 60 - -static DEFINE_PER_CPU(struct hrtimer, menu_hrtimer); -static DEFINE_PER_CPU(int, hrtimer_status); -/* menu hrtimer mode */ -enum {MENU_HRTIMER_STOP, MENU_HRTIMER_REPEAT, MENU_HRTIMER_GENERAL}; /* * Concepts and ideas behind the menu governor @@ -116,13 +109,6 @@ * */ -/* - * The C-state residency is so long that is is worthwhile to exit - * from the shallow C-state and re-enter into a deeper C-state. - */ -static unsigned int perfect_cstate_ms __read_mostly = 30; -module_param(perfect_cstate_ms, uint, 0000); - struct menu_device { int last_state_idx; int needs_update; @@ -205,40 +191,6 @@ return div_u64(dividend + (divisor / 2), divisor); } -/* Cancel the hrtimer if it is not triggered yet */ -void menu_hrtimer_cancel(void) -{ - int cpu = smp_processor_id(); - struct hrtimer *hrtmr = &per_cpu(menu_hrtimer, cpu); - - /* The timer is still not time out*/ - if (per_cpu(hrtimer_status, cpu)) { - hrtimer_cancel(hrtmr); - per_cpu(hrtimer_status, cpu) = MENU_HRTIMER_STOP; - } -} -EXPORT_SYMBOL_GPL(menu_hrtimer_cancel); - -/* Call back for hrtimer is triggered */ -static enum hrtimer_restart menu_hrtimer_notify(struct hrtimer *hrtimer) -{ - int cpu = smp_processor_id(); - struct menu_device *data = &per_cpu(menu_devices, cpu); - - /* In general case, the expected residency is much larger than - * deepest C-state target residency, but prediction logic still - * predicts a small predicted residency, so the prediction - * history is totally broken if the timer is triggered. - * So reset the correction factor. - */ - if (per_cpu(hrtimer_status, cpu) == MENU_HRTIMER_GENERAL) - data->correction_factor[data->bucket] = RESOLUTION * DECAY; - - per_cpu(hrtimer_status, cpu) = MENU_HRTIMER_STOP; - - return HRTIMER_NORESTART; -} - /* * Try detecting repeating patterns by keeping track of the last 8 * intervals, and checking if the standard deviation of that set @@ -315,9 +267,6 @@ int i; int multiplier; struct timespec t; - int repeat = 0, low_predicted = 0; - int cpu = smp_processor_id(); - struct hrtimer *hrtmr = &per_cpu(menu_hrtimer, cpu); if (data->needs_update) { menu_update(drv, dev); @@ -352,7 +301,7 @@ data->predicted_us = div_round64(data->expected_us * data->correction_factor[data->bucket], RESOLUTION * DECAY); - repeat = get_typical_interval(data); + get_typical_interval(data); /* * We want to default to C1 (hlt), not to busy polling @@ -373,10 +322,8 @@ if (s->disabled || su->disable) continue; - if (s->target_residency > data->predicted_us) { - low_predicted = 1; + if (s->target_residency > data->predicted_us) continue; - } if (s->exit_latency > latency_req) continue; if (s->exit_latency * multiplier > data->predicted_us) @@ -386,44 +333,6 @@ data->exit_us = s->exit_latency; } - /* not deepest C-state chosen for low predicted residency */ - if (low_predicted) { - unsigned int timer_us = 0; - unsigned int perfect_us = 0; - - /* - * Set a timer to detect whether this sleep is much - * longer than repeat mode predicted. If the timer - * triggers, the code will evaluate whether to put - * the CPU into a deeper C-state. - * The timer is cancelled on CPU wakeup. - */ - timer_us = 2 * (data->predicted_us + MAX_DEVIATION); - - perfect_us = perfect_cstate_ms * 1000; - - if (repeat && (4 * timer_us < data->expected_us)) { - RCU_NONIDLE(hrtimer_start(hrtmr, - ns_to_ktime(1000 * timer_us), - HRTIMER_MODE_REL_PINNED)); - /* In repeat case, menu hrtimer is started */ - per_cpu(hrtimer_status, cpu) = MENU_HRTIMER_REPEAT; - } else if (perfect_us < data->expected_us) { - /* - * The next timer is long. This could be because - * we did not make a useful prediction. - * In that case, it makes sense to re-enter - * into a deeper C-state after some time. - */ - RCU_NONIDLE(hrtimer_start(hrtmr, - ns_to_ktime(1000 * timer_us), - HRTIMER_MODE_REL_PINNED)); - /* In general case, menu hrtimer is started */ - per_cpu(hrtimer_status, cpu) = MENU_HRTIMER_GENERAL; - } - - } - return data->last_state_idx; } @@ -514,9 +423,6 @@ struct cpuidle_device *dev) { struct menu_device *data = &per_cpu(menu_devices, dev->cpu); - struct hrtimer *t = &per_cpu(menu_hrtimer, dev->cpu); - hrtimer_init(t, CLOCK_MONOTONIC, HRTIMER_MODE_REL); - t->function = menu_hrtimer_notify; memset(data, 0, sizeof(struct menu_device)); --- linux-ppc-3.8.0.orig/drivers/md/raid10.c +++ linux-ppc-3.8.0/drivers/md/raid10.c @@ -475,7 +475,17 @@ sector_t first_bad; int bad_sectors; - set_bit(R10BIO_Uptodate, &r10_bio->state); + /* + * Do not set R10BIO_Uptodate if the current device is + * rebuilding or Faulty. This is because we cannot use + * such device for properly reading the data back (we could + * potentially use it, if the current write would have felt + * before rdev->recovery_offset, but for simplicity we don't + * check this here. + */ + if (test_bit(In_sync, &rdev->flags) && + !test_bit(Faulty, &rdev->flags)) + set_bit(R10BIO_Uptodate, &r10_bio->state); /* Maybe we can clear some bad blocks. */ if (is_badblock(rdev, @@ -1009,17 +1019,17 @@ wake_up(&conf->wait_barrier); } -static void freeze_array(struct r10conf *conf) +static void freeze_array(struct r10conf *conf, int extra) { /* stop syncio and normal IO and wait for everything to * go quiet. * We increment barrier and nr_waiting, and then - * wait until nr_pending match nr_queued+1 + * wait until nr_pending match nr_queued+extra * This is called in the context of one normal IO request * that has failed. Thus any sync request that might be pending * will be blocked by nr_pending, and we need to wait for * pending IO requests to complete or be queued for re-try. - * Thus the number queued (nr_queued) plus this request (1) + * Thus the number queued (nr_queued) plus this request (extra) * must match the number of pending IOs (nr_pending) before * we continue. */ @@ -1027,7 +1037,7 @@ conf->barrier++; conf->nr_waiting++; wait_event_lock_irq_cmd(conf->wait_barrier, - conf->nr_pending == conf->nr_queued+1, + conf->nr_pending == conf->nr_queued+extra, conf->resync_lock, flush_pending_writes(conf)); @@ -1073,6 +1083,7 @@ bio_list_merge(&conf->pending_bio_list, &plug->pending); conf->pending_count += plug->pending_cnt; spin_unlock_irq(&conf->device_lock); + wake_up(&conf->wait_barrier); md_wakeup_thread(mddev->thread); kfree(plug); return; @@ -1086,7 +1097,12 @@ while (bio) { /* submit pending writes */ struct bio *next = bio->bi_next; bio->bi_next = NULL; - generic_make_request(bio); + if (unlikely((bio->bi_rw & REQ_DISCARD) && + !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) + /* Just ignore it */ + bio_endio(bio, 0); + else + generic_make_request(bio); bio = next; } kfree(plug); @@ -1105,6 +1121,7 @@ const unsigned long do_fua = (bio->bi_rw & REQ_FUA); const unsigned long do_discard = (bio->bi_rw & (REQ_DISCARD | REQ_SECURE)); + const unsigned long do_same = (bio->bi_rw & REQ_WRITE_SAME); unsigned long flags; struct md_rdev *blocked_rdev; struct blk_plug_cb *cb; @@ -1460,7 +1477,8 @@ rdev)); mbio->bi_bdev = rdev->bdev; mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync | do_fua | do_discard; + mbio->bi_rw = + WRITE | do_sync | do_fua | do_discard | do_same; mbio->bi_private = r10_bio; atomic_inc(&r10_bio->remaining); @@ -1502,7 +1520,8 @@ r10_bio, rdev)); mbio->bi_bdev = rdev->bdev; mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync | do_fua | do_discard; + mbio->bi_rw = + WRITE | do_sync | do_fua | do_discard | do_same; mbio->bi_private = r10_bio; atomic_inc(&r10_bio->remaining); @@ -1784,8 +1803,8 @@ * we wait for all outstanding requests to complete. */ synchronize_sched(); - raise_barrier(conf, 0); - lower_barrier(conf); + freeze_array(conf, 0); + unfreeze_array(conf); clear_bit(Unmerged, &rdev->flags); } md_integrity_add_rdev(rdev, mddev); @@ -2202,12 +2221,18 @@ d = r10_bio->devs[1].devnum; wbio = r10_bio->devs[1].bio; wbio2 = r10_bio->devs[1].repl_bio; + /* Need to test wbio2->bi_end_io before we call + * generic_make_request as if the former is NULL, + * the latter is free to free wbio2. + */ + if (wbio2 && !wbio2->bi_end_io) + wbio2 = NULL; if (wbio->bi_end_io) { atomic_inc(&conf->mirrors[d].rdev->nr_pending); md_sync_acct(conf->mirrors[d].rdev->bdev, wbio->bi_size >> 9); generic_make_request(wbio); } - if (wbio2 && wbio2->bi_end_io) { + if (wbio2) { atomic_inc(&conf->mirrors[d].replacement->nr_pending); md_sync_acct(conf->mirrors[d].replacement->bdev, wbio2->bi_size >> 9); @@ -2581,7 +2606,7 @@ r10_bio->devs[slot].bio = NULL; if (mddev->ro == 0) { - freeze_array(conf); + freeze_array(conf, 1); fix_read_error(conf, mddev, r10_bio); unfreeze_array(conf); } else @@ -3482,7 +3507,7 @@ /* FIXME calc properly */ conf->mirrors = kzalloc(sizeof(struct raid10_info)*(mddev->raid_disks + - max(0,mddev->delta_disks)), + max(0,-mddev->delta_disks)), GFP_KERNEL); if (!conf->mirrors) goto out; @@ -3569,6 +3594,7 @@ if (mddev->queue) { blk_queue_max_discard_sectors(mddev->queue, mddev->chunk_sectors); + blk_queue_max_write_same_sectors(mddev->queue, 0); blk_queue_io_min(mddev->queue, chunk_size); if (conf->geo.raid_disks % conf->geo.near_copies) blk_queue_io_opt(mddev->queue, chunk_size * conf->geo.raid_disks); @@ -3640,7 +3666,7 @@ conf->geo.far_offset == 0) goto out_free_conf; if (conf->prev.far_copies != 1 && - conf->geo.far_offset == 0) + conf->prev.far_offset == 0) goto out_free_conf; } --- linux-ppc-3.8.0.orig/drivers/md/dm-thin.c +++ linux-ppc-3.8.0/drivers/md/dm-thin.c @@ -2299,8 +2299,8 @@ * / * / */ -static int pool_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void pool_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { int r; unsigned sz = 0; @@ -2326,32 +2326,41 @@ if (!(status_flags & DM_STATUS_NOFLUSH_FLAG) && !dm_suspended(ti)) (void) commit_or_fallback(pool); - r = dm_pool_get_metadata_transaction_id(pool->pmd, - &transaction_id); - if (r) - return r; - - r = dm_pool_get_free_metadata_block_count(pool->pmd, - &nr_free_blocks_metadata); - if (r) - return r; + r = dm_pool_get_metadata_transaction_id(pool->pmd, &transaction_id); + if (r) { + DMERR("dm_pool_get_metadata_transaction_id returned %d", r); + goto err; + } + + r = dm_pool_get_free_metadata_block_count(pool->pmd, &nr_free_blocks_metadata); + if (r) { + DMERR("dm_pool_get_free_metadata_block_count returned %d", r); + goto err; + } r = dm_pool_get_metadata_dev_size(pool->pmd, &nr_blocks_metadata); - if (r) - return r; + if (r) { + DMERR("dm_pool_get_metadata_dev_size returned %d", r); + goto err; + } - r = dm_pool_get_free_block_count(pool->pmd, - &nr_free_blocks_data); - if (r) - return r; + r = dm_pool_get_free_block_count(pool->pmd, &nr_free_blocks_data); + if (r) { + DMERR("dm_pool_get_free_block_count returned %d", r); + goto err; + } r = dm_pool_get_data_dev_size(pool->pmd, &nr_blocks_data); - if (r) - return r; + if (r) { + DMERR("dm_pool_get_data_dev_size returned %d", r); + goto err; + } r = dm_pool_get_metadata_snap(pool->pmd, &held_root); - if (r) - return r; + if (r) { + DMERR("dm_pool_get_metadata_snap returned %d", r); + goto err; + } DMEMIT("%llu %llu/%llu %llu/%llu ", (unsigned long long)transaction_id, @@ -2388,8 +2397,10 @@ emit_flags(&pt->requested_pf, result, sz, maxlen); break; } + return; - return 0; +err: + DMEMIT("Error"); } static int pool_iterate_devices(struct dm_target *ti, @@ -2468,7 +2479,7 @@ .name = "thin-pool", .features = DM_TARGET_SINGLETON | DM_TARGET_ALWAYS_WRITEABLE | DM_TARGET_IMMUTABLE, - .version = {1, 6, 0}, + .version = {1, 7, 0}, .module = THIS_MODULE, .ctr = pool_ctr, .dtr = pool_dtr, @@ -2676,8 +2687,8 @@ /* * */ -static int thin_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void thin_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { int r; ssize_t sz = 0; @@ -2687,7 +2698,7 @@ if (get_pool_mode(tc->pool) == PM_FAIL) { DMEMIT("Fail"); - return 0; + return; } if (!tc->td) @@ -2696,12 +2707,16 @@ switch (type) { case STATUSTYPE_INFO: r = dm_thin_get_mapped_count(tc->td, &mapped); - if (r) - return r; + if (r) { + DMERR("dm_thin_get_mapped_count returned %d", r); + goto err; + } r = dm_thin_get_highest_mapped_block(tc->td, &highest); - if (r < 0) - return r; + if (r < 0) { + DMERR("dm_thin_get_highest_mapped_block returned %d", r); + goto err; + } DMEMIT("%llu ", mapped * tc->pool->sectors_per_block); if (r) @@ -2721,7 +2736,10 @@ } } - return 0; + return; + +err: + DMEMIT("Error"); } static int thin_iterate_devices(struct dm_target *ti, @@ -2748,7 +2766,7 @@ static struct target_type thin_target = { .name = "thin", - .version = {1, 7, 0}, + .version = {1, 8, 0}, .module = THIS_MODULE, .ctr = thin_ctr, .dtr = thin_dtr, --- linux-ppc-3.8.0.orig/drivers/md/dm-raid.c +++ linux-ppc-3.8.0/drivers/md/dm-raid.c @@ -1201,8 +1201,8 @@ return DM_MAPIO_SUBMITTED; } -static int raid_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void raid_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct raid_set *rs = ti->private; unsigned raid_param_cnt = 1; /* at least 1 for chunksize */ @@ -1344,8 +1344,6 @@ DMEMIT(" -"); } } - - return 0; } static int raid_iterate_devices(struct dm_target *ti, iterate_devices_callout_fn fn, void *data) @@ -1405,7 +1403,7 @@ static struct target_type raid_target = { .name = "raid", - .version = {1, 4, 1}, + .version = {1, 4, 2}, .module = THIS_MODULE, .ctr = raid_ctr, .dtr = raid_dtr, --- linux-ppc-3.8.0.orig/drivers/md/raid5.c +++ linux-ppc-3.8.0/drivers/md/raid5.c @@ -674,9 +674,11 @@ bi->bi_next = NULL; if (rrdev) set_bit(R5_DOUBLE_LOCKED, &sh->dev[i].flags); - trace_block_bio_remap(bdev_get_queue(bi->bi_bdev), - bi, disk_devt(conf->mddev->gendisk), - sh->dev[i].sector); + + if (conf->mddev->gendisk) + trace_block_bio_remap(bdev_get_queue(bi->bi_bdev), + bi, disk_devt(conf->mddev->gendisk), + sh->dev[i].sector); generic_make_request(bi); } if (rrdev) { @@ -704,9 +706,10 @@ rbi->bi_io_vec[0].bv_offset = 0; rbi->bi_size = STRIPE_SIZE; rbi->bi_next = NULL; - trace_block_bio_remap(bdev_get_queue(rbi->bi_bdev), - rbi, disk_devt(conf->mddev->gendisk), - sh->dev[i].sector); + if (conf->mddev->gendisk) + trace_block_bio_remap(bdev_get_queue(rbi->bi_bdev), + rbi, disk_devt(conf->mddev->gendisk), + sh->dev[i].sector); generic_make_request(rbi); } if (!rdev && !rrdev) { @@ -2319,17 +2322,6 @@ int level = conf->level; if (rcw) { - /* if we are not expanding this is a proper write request, and - * there will be bios with new data to be drained into the - * stripe cache - */ - if (!expand) { - sh->reconstruct_state = reconstruct_state_drain_run; - set_bit(STRIPE_OP_BIODRAIN, &s->ops_request); - } else - sh->reconstruct_state = reconstruct_state_run; - - set_bit(STRIPE_OP_RECONSTRUCT, &s->ops_request); for (i = disks; i--; ) { struct r5dev *dev = &sh->dev[i]; @@ -2342,6 +2334,21 @@ s->locked++; } } + /* if we are not expanding this is a proper write request, and + * there will be bios with new data to be drained into the + * stripe cache + */ + if (!expand) { + if (!s->locked) + /* False alarm, nothing to do */ + return; + sh->reconstruct_state = reconstruct_state_drain_run; + set_bit(STRIPE_OP_BIODRAIN, &s->ops_request); + } else + sh->reconstruct_state = reconstruct_state_run; + + set_bit(STRIPE_OP_RECONSTRUCT, &s->ops_request); + if (s->locked + conf->max_degraded == disks) if (!test_and_set_bit(STRIPE_FULL_WRITE, &sh->state)) atomic_inc(&conf->pending_full_writes); @@ -2350,11 +2357,6 @@ BUG_ON(!(test_bit(R5_UPTODATE, &sh->dev[pd_idx].flags) || test_bit(R5_Wantcompute, &sh->dev[pd_idx].flags))); - sh->reconstruct_state = reconstruct_state_prexor_drain_run; - set_bit(STRIPE_OP_PREXOR, &s->ops_request); - set_bit(STRIPE_OP_BIODRAIN, &s->ops_request); - set_bit(STRIPE_OP_RECONSTRUCT, &s->ops_request); - for (i = disks; i--; ) { struct r5dev *dev = &sh->dev[i]; if (i == pd_idx) @@ -2369,6 +2371,13 @@ s->locked++; } } + if (!s->locked) + /* False alarm - nothing to do */ + return; + sh->reconstruct_state = reconstruct_state_prexor_drain_run; + set_bit(STRIPE_OP_PREXOR, &s->ops_request); + set_bit(STRIPE_OP_BIODRAIN, &s->ops_request); + set_bit(STRIPE_OP_RECONSTRUCT, &s->ops_request); } /* keep the parity disk(s) locked while asynchronous operations @@ -2603,6 +2612,8 @@ int i; clear_bit(STRIPE_SYNCING, &sh->state); + if (test_and_clear_bit(R5_Overlap, &sh->dev[sh->pd_idx].flags)) + wake_up(&conf->wait_for_overlap); s->syncing = 0; s->replacing = 0; /* There is nothing more to do for sync/check/repair. @@ -2776,6 +2787,7 @@ { int i; struct r5dev *dev; + int discard_pending = 0; for (i = disks; i--; ) if (sh->dev[i].written) { @@ -2804,9 +2816,23 @@ STRIPE_SECTORS, !test_bit(STRIPE_DEGRADED, &sh->state), 0); - } - } else if (test_bit(R5_Discard, &sh->dev[i].flags)) - clear_bit(R5_Discard, &sh->dev[i].flags); + } else if (test_bit(R5_Discard, &dev->flags)) + discard_pending = 1; + } + if (!discard_pending && + test_bit(R5_Discard, &sh->dev[sh->pd_idx].flags)) { + clear_bit(R5_Discard, &sh->dev[sh->pd_idx].flags); + clear_bit(R5_UPTODATE, &sh->dev[sh->pd_idx].flags); + if (sh->qd_idx >= 0) { + clear_bit(R5_Discard, &sh->dev[sh->qd_idx].flags); + clear_bit(R5_UPTODATE, &sh->dev[sh->qd_idx].flags); + } + /* now that discard is done we can proceed with any sync */ + clear_bit(STRIPE_DISCARD, &sh->state); + if (test_bit(STRIPE_SYNC_REQUESTED, &sh->state)) + set_bit(STRIPE_HANDLE, &sh->state); + + } if (test_and_clear_bit(STRIPE_FULL_WRITE, &sh->state)) if (atomic_dec_and_test(&conf->pending_full_writes)) @@ -2865,8 +2891,10 @@ set_bit(STRIPE_HANDLE, &sh->state); if (rmw < rcw && rmw > 0) { /* prefer read-modify-write, but need to get some data */ - blk_add_trace_msg(conf->mddev->queue, "raid5 rmw %llu %d", - (unsigned long long)sh->sector, rmw); + if (conf->mddev->queue) + blk_add_trace_msg(conf->mddev->queue, + "raid5 rmw %llu %d", + (unsigned long long)sh->sector, rmw); for (i = disks; i--; ) { struct r5dev *dev = &sh->dev[i]; if ((dev->towrite || i == sh->pd_idx) && @@ -2916,7 +2944,7 @@ } } } - if (rcw) + if (rcw && conf->mddev->queue) blk_add_trace_msg(conf->mddev->queue, "raid5 rcw %llu %d %d %d", (unsigned long long)sh->sector, rcw, qread, test_bit(STRIPE_DELAYED, &sh->state)); @@ -3456,9 +3484,16 @@ return; } - if (test_and_clear_bit(STRIPE_SYNC_REQUESTED, &sh->state)) { - set_bit(STRIPE_SYNCING, &sh->state); - clear_bit(STRIPE_INSYNC, &sh->state); + if (test_bit(STRIPE_SYNC_REQUESTED, &sh->state)) { + spin_lock(&sh->stripe_lock); + /* Cannot process 'sync' concurrently with 'discard' */ + if (!test_bit(STRIPE_DISCARD, &sh->state) && + test_and_clear_bit(STRIPE_SYNC_REQUESTED, &sh->state)) { + set_bit(STRIPE_SYNCING, &sh->state); + clear_bit(STRIPE_INSYNC, &sh->state); + clear_bit(STRIPE_REPLACED, &sh->state); + } + spin_unlock(&sh->stripe_lock); } clear_bit(STRIPE_DELAYED, &sh->state); @@ -3602,22 +3637,28 @@ handle_parity_checks5(conf, sh, &s, disks); } - if (s.replacing && s.locked == 0 - && !test_bit(STRIPE_INSYNC, &sh->state)) { + if ((s.replacing || s.syncing) && s.locked == 0 + && !test_bit(STRIPE_COMPUTE_RUN, &sh->state) + && !test_bit(STRIPE_REPLACED, &sh->state)) { /* Write out to replacement devices where possible */ for (i = 0; i < conf->raid_disks; i++) - if (test_bit(R5_UPTODATE, &sh->dev[i].flags) && - test_bit(R5_NeedReplace, &sh->dev[i].flags)) { + if (test_bit(R5_NeedReplace, &sh->dev[i].flags)) { + WARN_ON(!test_bit(R5_UPTODATE, &sh->dev[i].flags)); set_bit(R5_WantReplace, &sh->dev[i].flags); set_bit(R5_LOCKED, &sh->dev[i].flags); s.locked++; } - set_bit(STRIPE_INSYNC, &sh->state); + if (s.replacing) + set_bit(STRIPE_INSYNC, &sh->state); + set_bit(STRIPE_REPLACED, &sh->state); } if ((s.syncing || s.replacing) && s.locked == 0 && + !test_bit(STRIPE_COMPUTE_RUN, &sh->state) && test_bit(STRIPE_INSYNC, &sh->state)) { md_done_sync(conf->mddev, STRIPE_SECTORS, 1); clear_bit(STRIPE_SYNCING, &sh->state); + if (test_and_clear_bit(R5_Overlap, &sh->dev[sh->pd_idx].flags)) + wake_up(&conf->wait_for_overlap); } /* If the failed drives are just a ReadError, then we might need @@ -4023,9 +4064,10 @@ atomic_inc(&conf->active_aligned_reads); spin_unlock_irq(&conf->device_lock); - trace_block_bio_remap(bdev_get_queue(align_bi->bi_bdev), - align_bi, disk_devt(mddev->gendisk), - raid_bio->bi_sector); + if (mddev->gendisk) + trace_block_bio_remap(bdev_get_queue(align_bi->bi_bdev), + align_bi, disk_devt(mddev->gendisk), + raid_bio->bi_sector); generic_make_request(align_bi); return 1; } else { @@ -4119,7 +4161,8 @@ } spin_unlock_irq(&conf->device_lock); } - trace_block_unplug(mddev->queue, cnt, !from_schedule); + if (mddev->queue) + trace_block_unplug(mddev->queue, cnt, !from_schedule); kfree(cb); } @@ -4182,6 +4225,13 @@ sh = get_active_stripe(conf, logical_sector, 0, 0, 0); prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE); + set_bit(R5_Overlap, &sh->dev[sh->pd_idx].flags); + if (test_bit(STRIPE_SYNCING, &sh->state)) { + release_stripe(sh); + schedule(); + goto again; + } + clear_bit(R5_Overlap, &sh->dev[sh->pd_idx].flags); spin_lock_irq(&sh->stripe_lock); for (d = 0; d < conf->raid_disks; d++) { if (d == sh->pd_idx || d == sh->qd_idx) @@ -4194,6 +4244,7 @@ goto again; } } + set_bit(STRIPE_DISCARD, &sh->state); finish_wait(&conf->wait_for_overlap, &w); for (d = 0; d < conf->raid_disks; d++) { if (d == sh->pd_idx || d == sh->qd_idx) @@ -5448,7 +5499,7 @@ if (mddev->major_version == 0 && mddev->minor_version > 90) rdev->recovery_offset = reshape_offset; - + if (rdev->recovery_offset < reshape_offset) { /* We need to check old and new layout */ if (!only_parity(rdev->raid_disk, @@ -5571,6 +5622,8 @@ */ mddev->queue->limits.discard_zeroes_data = 0; + blk_queue_max_write_same_sectors(mddev->queue, 0); + rdev_for_each(rdev, mddev) { disk_stack_limits(mddev->gendisk, rdev->bdev, rdev->data_offset << 9); --- linux-ppc-3.8.0.orig/drivers/md/dm.c +++ linux-ppc-3.8.0/drivers/md/dm.c @@ -404,10 +404,12 @@ unsigned int cmd, unsigned long arg) { struct mapped_device *md = bdev->bd_disk->private_data; - struct dm_table *map = dm_get_live_table(md); + struct dm_table *map; struct dm_target *tgt; int r = -ENOTTY; +retry: + map = dm_get_live_table(md); if (!map || !dm_table_get_size(map)) goto out; @@ -428,6 +430,11 @@ out: dm_table_put(map); + if (r == -ENOTCONN) { + msleep(10); + goto retry; + } + return r; } @@ -1973,15 +1980,27 @@ { struct dm_md_mempools *p = dm_table_get_md_mempools(t); - if (md->io_pool && (md->tio_pool || dm_table_get_type(t) == DM_TYPE_BIO_BASED) && md->bs) { - /* - * The md already has necessary mempools. Reload just the - * bioset because front_pad may have changed because - * a different table was loaded. - */ - bioset_free(md->bs); - md->bs = p->bs; - p->bs = NULL; + if (md->io_pool && md->bs) { + /* The md already has necessary mempools. */ + if (dm_table_get_type(t) == DM_TYPE_BIO_BASED) { + /* + * Reload bioset because front_pad may have changed + * because a different table was loaded. + */ + bioset_free(md->bs); + md->bs = p->bs; + p->bs = NULL; + } else if (dm_table_get_type(t) == DM_TYPE_REQUEST_BASED) { + BUG_ON(!md->tio_pool); + /* + * There's no need to reload with request-based dm + * because the size of front_pad doesn't change. + * Note for future: If you are to reload bioset, + * prep-ed requests in the queue may refer + * to bio from the old bioset, so you must walk + * through the queue to unprep. + */ + } goto out; } @@ -2421,7 +2440,7 @@ */ struct dm_table *dm_swap_table(struct mapped_device *md, struct dm_table *table) { - struct dm_table *live_map, *map = ERR_PTR(-EINVAL); + struct dm_table *live_map = NULL, *map = ERR_PTR(-EINVAL); struct queue_limits limits; int r; @@ -2444,10 +2463,12 @@ dm_table_put(live_map); } - r = dm_calculate_queue_limits(table, &limits); - if (r) { - map = ERR_PTR(r); - goto out; + if (!live_map) { + r = dm_calculate_queue_limits(table, &limits); + if (r) { + map = ERR_PTR(r); + goto out; + } } map = __bind(md, table, &limits); @@ -2700,6 +2721,7 @@ { return md->disk; } +EXPORT_SYMBOL_GPL(dm_disk); struct kobject *dm_kobject(struct mapped_device *md) { --- linux-ppc-3.8.0.orig/drivers/md/raid5.h +++ linux-ppc-3.8.0/drivers/md/raid5.h @@ -310,6 +310,7 @@ STRIPE_SYNC_REQUESTED, STRIPE_SYNCING, STRIPE_INSYNC, + STRIPE_REPLACED, STRIPE_PREREAD_ACTIVE, STRIPE_DELAYED, STRIPE_DEGRADED, @@ -323,6 +324,7 @@ STRIPE_COMPUTE_RUN, STRIPE_OPS_REQ_PENDING, STRIPE_ON_UNPLUG_LIST, + STRIPE_DISCARD, }; /* --- linux-ppc-3.8.0.orig/drivers/md/dm-flakey.c +++ linux-ppc-3.8.0/drivers/md/dm-flakey.c @@ -337,8 +337,8 @@ return error; } -static int flakey_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void flakey_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { unsigned sz = 0; struct flakey_c *fc = ti->private; @@ -368,7 +368,6 @@ break; } - return 0; } static int flakey_ioctl(struct dm_target *ti, unsigned int cmd, unsigned long arg) @@ -411,7 +410,7 @@ static struct target_type flakey_target = { .name = "flakey", - .version = {1, 3, 0}, + .version = {1, 3, 1}, .module = THIS_MODULE, .ctr = flakey_ctr, .dtr = flakey_dtr, --- linux-ppc-3.8.0.orig/drivers/md/dm-bufio.c +++ linux-ppc-3.8.0/drivers/md/dm-bufio.c @@ -319,6 +319,9 @@ static void *alloc_buffer_data(struct dm_bufio_client *c, gfp_t gfp_mask, enum data_mode *data_mode) { + unsigned noio_flag; + void *ptr; + if (c->block_size <= DM_BUFIO_BLOCK_SIZE_SLAB_LIMIT) { *data_mode = DATA_MODE_SLAB; return kmem_cache_alloc(DM_BUFIO_CACHE(c), gfp_mask); @@ -332,7 +335,26 @@ } *data_mode = DATA_MODE_VMALLOC; - return __vmalloc(c->block_size, gfp_mask, PAGE_KERNEL); + + /* + * __vmalloc allocates the data pages and auxiliary structures with + * gfp_flags that were specified, but pagetables are always allocated + * with GFP_KERNEL, no matter what was specified as gfp_mask. + * + * Consequently, we must set per-process flag PF_MEMALLOC_NOIO so that + * all allocations done by this process (including pagetables) are done + * as if GFP_NOIO was specified. + */ + + if (gfp_mask & __GFP_NORETRY) + noio_flag = memalloc_noio_save(); + + ptr = __vmalloc(c->block_size, gfp_mask, PAGE_KERNEL); + + if (gfp_mask & __GFP_NORETRY) + memalloc_noio_restore(noio_flag); + + return ptr; } /* @@ -1026,6 +1048,8 @@ { struct blk_plug plug; + BUG_ON(dm_bufio_in_request()); + blk_start_plug(&plug); dm_bufio_lock(c); --- linux-ppc-3.8.0.orig/drivers/md/dm-crypt.c +++ linux-ppc-3.8.0/drivers/md/dm-crypt.c @@ -1234,20 +1234,6 @@ return 0; } -/* - * Encode key into its hex representation - */ -static void crypt_encode_key(char *hex, u8 *key, unsigned int size) -{ - unsigned int i; - - for (i = 0; i < size; i++) { - sprintf(hex, "%02x", *key); - hex += 2; - key++; - } -} - static void crypt_free_tfms(struct crypt_config *cc) { unsigned i; @@ -1717,11 +1703,11 @@ return DM_MAPIO_SUBMITTED; } -static int crypt_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void crypt_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct crypt_config *cc = ti->private; - unsigned int sz = 0; + unsigned i, sz = 0; switch (type) { case STATUSTYPE_INFO: @@ -1731,17 +1717,11 @@ case STATUSTYPE_TABLE: DMEMIT("%s ", cc->cipher_string); - if (cc->key_size > 0) { - if ((maxlen - sz) < ((cc->key_size << 1) + 1)) - return -ENOMEM; - - crypt_encode_key(result + sz, cc->key, cc->key_size); - sz += cc->key_size << 1; - } else { - if (sz >= maxlen) - return -ENOMEM; - result[sz++] = '-'; - } + if (cc->key_size > 0) + for (i = 0; i < cc->key_size; i++) + DMEMIT("%02x", cc->key[i]); + else + DMEMIT("-"); DMEMIT(" %llu %s %llu", (unsigned long long)cc->iv_offset, cc->dev->name, (unsigned long long)cc->start); @@ -1751,7 +1731,6 @@ break; } - return 0; } static void crypt_postsuspend(struct dm_target *ti) @@ -1843,9 +1822,15 @@ return fn(ti, cc->dev, cc->start, ti->len, data); } +static void crypt_io_hints(struct dm_target *ti, + struct queue_limits *limits) +{ + limits->max_write_same_sectors = 0; +} + static struct target_type crypt_target = { .name = "crypt", - .version = {1, 12, 0}, + .version = {1, 12, 1}, .module = THIS_MODULE, .ctr = crypt_ctr, .dtr = crypt_dtr, @@ -1857,6 +1842,7 @@ .message = crypt_message, .merge = crypt_merge, .iterate_devices = crypt_iterate_devices, + .io_hints = crypt_io_hints, }; static int __init dm_crypt_init(void) --- linux-ppc-3.8.0.orig/drivers/md/dm-mpath.c +++ linux-ppc-3.8.0/drivers/md/dm-mpath.c @@ -1378,8 +1378,8 @@ * [priority selector-name num_ps_args [ps_args]* * num_paths num_selector_args [path_dev [selector_args]* ]+ ]+ */ -static int multipath_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void multipath_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { int sz = 0; unsigned long flags; @@ -1485,8 +1485,6 @@ } spin_unlock_irqrestore(&m->lock, flags); - - return 0; } static int multipath_message(struct dm_target *ti, unsigned argc, char **argv) @@ -1562,7 +1560,6 @@ unsigned long flags; int r; -again: bdev = NULL; mode = 0; r = 0; @@ -1580,7 +1577,7 @@ } if ((pgpath && m->queue_io) || (!pgpath && m->queue_if_no_path)) - r = -EAGAIN; + r = -ENOTCONN; else if (!bdev) r = -EIO; @@ -1592,11 +1589,8 @@ if (!r && ti->len != i_size_read(bdev->bd_inode) >> SECTOR_SHIFT) r = scsi_verify_blk_ioctl(NULL, cmd); - if (r == -EAGAIN && !fatal_signal_pending(current)) { + if (r == -ENOTCONN && !fatal_signal_pending(current)) queue_work(kmultipathd, &m->process_queued_ios); - msleep(10); - goto again; - } return r ? : __blkdev_driver_ioctl(bdev, mode, cmd, arg); } @@ -1695,7 +1689,7 @@ *---------------------------------------------------------------*/ static struct target_type multipath_target = { .name = "multipath", - .version = {1, 5, 0}, + .version = {1, 5, 1}, .module = THIS_MODULE, .ctr = multipath_ctr, .dtr = multipath_dtr, --- linux-ppc-3.8.0.orig/drivers/md/dm-table.c +++ linux-ppc-3.8.0/drivers/md/dm-table.c @@ -1443,7 +1443,7 @@ return false; if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, device_not_write_same_capable, NULL)) + ti->type->iterate_devices(ti, device_not_write_same_capable, NULL)) return false; } --- linux-ppc-3.8.0.orig/drivers/md/dm-raid1.c +++ linux-ppc-3.8.0/drivers/md/dm-raid1.c @@ -1347,8 +1347,8 @@ } -static int mirror_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void mirror_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { unsigned int m, sz = 0; struct mirror_set *ms = (struct mirror_set *) ti->private; @@ -1383,8 +1383,6 @@ if (ms->features & DM_RAID1_HANDLE_ERRORS) DMEMIT(" 1 handle_errors"); } - - return 0; } static int mirror_iterate_devices(struct dm_target *ti, @@ -1403,7 +1401,7 @@ static struct target_type mirror_target = { .name = "mirror", - .version = {1, 13, 1}, + .version = {1, 13, 2}, .module = THIS_MODULE, .ctr = mirror_ctr, .dtr = mirror_dtr, --- linux-ppc-3.8.0.orig/drivers/md/md.c +++ linux-ppc-3.8.0/drivers/md/md.c @@ -307,6 +307,10 @@ bio_io_error(bio); return; } + if (mddev->ro == 1 && unlikely(rw == WRITE)) { + bio_endio(bio, bio_sectors(bio) == 0 ? 0 : -EROFS); + return; + } smp_rmb(); /* Ensure implications of 'active' are visible */ rcu_read_lock(); if (mddev->suspended) { @@ -1560,8 +1564,8 @@ sector, count, 1) == 0) return -EINVAL; } - } else if (sb->bblog_offset == 0) - rdev->badblocks.shift = -1; + } else if (sb->bblog_offset != 0) + rdev->badblocks.shift = 0; if (!refdev) { ret = 1; @@ -2994,6 +2998,9 @@ } else if (!sectors) sectors = (i_size_read(rdev->bdev->bd_inode) >> 9) - rdev->data_offset; + if (!my_mddev->pers->resize) + /* Cannot change size for RAID0 or Linear etc */ + return -EINVAL; } if (sectors < my_mddev->dev_sectors) return -EINVAL; /* component must fit device */ @@ -3214,7 +3221,7 @@ * be used - I wonder if that matters */ rdev->badblocks.count = 0; - rdev->badblocks.shift = 0; + rdev->badblocks.shift = -1; /* disabled until explicitly enabled */ rdev->badblocks.page = kmalloc(PAGE_SIZE, GFP_KERNEL); seqlock_init(&rdev->badblocks.lock); if (rdev->badblocks.page == NULL) @@ -3286,9 +3293,6 @@ goto abort_free; } } - if (super_format == -1) - /* hot-add for 0.90, or non-persistent: so no badblocks */ - rdev->badblocks.shift = -1; return rdev; --- linux-ppc-3.8.0.orig/drivers/md/raid0.c +++ linux-ppc-3.8.0/drivers/md/raid0.c @@ -289,7 +289,7 @@ kfree(conf->strip_zone); kfree(conf->devlist); kfree(conf); - *private_conf = NULL; + *private_conf = ERR_PTR(err); return err; } @@ -411,7 +411,8 @@ "%s does not support generic reshape\n", __func__); rdev_for_each(rdev, mddev) - array_sectors += rdev->sectors; + array_sectors += (rdev->sectors & + ~(sector_t)(mddev->chunk_sectors-1)); return array_sectors; } --- linux-ppc-3.8.0.orig/drivers/md/dm-verity.c +++ linux-ppc-3.8.0/drivers/md/dm-verity.c @@ -93,6 +93,13 @@ */ }; +struct dm_verity_prefetch_work { + struct work_struct work; + struct dm_verity *v; + sector_t block; + unsigned n_blocks; +}; + static struct shash_desc *io_hash_desc(struct dm_verity *v, struct dm_verity_io *io) { return (struct shash_desc *)(io + 1); @@ -424,15 +431,18 @@ * The root buffer is not prefetched, it is assumed that it will be cached * all the time. */ -static void verity_prefetch_io(struct dm_verity *v, struct dm_verity_io *io) +static void verity_prefetch_io(struct work_struct *work) { + struct dm_verity_prefetch_work *pw = + container_of(work, struct dm_verity_prefetch_work, work); + struct dm_verity *v = pw->v; int i; for (i = v->levels - 2; i >= 0; i--) { sector_t hash_block_start; sector_t hash_block_end; - verity_hash_at_level(v, io->block, i, &hash_block_start, NULL); - verity_hash_at_level(v, io->block + io->n_blocks - 1, i, &hash_block_end, NULL); + verity_hash_at_level(v, pw->block, i, &hash_block_start, NULL); + verity_hash_at_level(v, pw->block + pw->n_blocks - 1, i, &hash_block_end, NULL); if (!i) { unsigned cluster = ACCESS_ONCE(dm_verity_prefetch_cluster); @@ -452,6 +462,25 @@ dm_bufio_prefetch(v->bufio, hash_block_start, hash_block_end - hash_block_start + 1); } + + kfree(pw); +} + +static void verity_submit_prefetch(struct dm_verity *v, struct dm_verity_io *io) +{ + struct dm_verity_prefetch_work *pw; + + pw = kmalloc(sizeof(struct dm_verity_prefetch_work), + GFP_NOIO | __GFP_NORETRY | __GFP_NOMEMALLOC | __GFP_NOWARN); + + if (!pw) + return; + + INIT_WORK(&pw->work, verity_prefetch_io); + pw->v = v; + pw->block = io->block; + pw->n_blocks = io->n_blocks; + queue_work(v->verify_wq, &pw->work); } /* @@ -498,7 +527,7 @@ memcpy(io->io_vec, bio_iovec(bio), io->io_vec_size * sizeof(struct bio_vec)); - verity_prefetch_io(v, io); + verity_submit_prefetch(v, io); generic_make_request(bio); @@ -508,8 +537,8 @@ /* * Status: V (valid) or C (corruption found) */ -static int verity_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void verity_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct dm_verity *v = ti->private; unsigned sz = 0; @@ -540,8 +569,6 @@ DMEMIT("%02x", v->salt[x]); break; } - - return 0; } static int verity_ioctl(struct dm_target *ti, unsigned cmd, @@ -804,9 +831,8 @@ for (i = v->levels - 1; i >= 0; i--) { sector_t s; v->hash_level_block[i] = hash_position; - s = verity_position_at_level(v, v->data_blocks, i); - s = (s >> v->hash_per_block_bits) + - !!(s & ((1 << v->hash_per_block_bits) - 1)); + s = (v->data_blocks + ((sector_t)1 << ((i + 1) * v->hash_per_block_bits)) - 1) + >> ((i + 1) * v->hash_per_block_bits); if (hash_position + s < hash_position) { ti->error = "Hash device offset overflow"; r = -E2BIG; @@ -860,7 +886,7 @@ static struct target_type verity_target = { .name = "verity", - .version = {1, 1, 0}, + .version = {1, 2, 0}, .module = THIS_MODULE, .ctr = verity_ctr, .dtr = verity_dtr, --- linux-ppc-3.8.0.orig/drivers/md/dm-delay.c +++ linux-ppc-3.8.0/drivers/md/dm-delay.c @@ -293,8 +293,8 @@ return delay_bio(dc, dc->read_delay, bio); } -static int delay_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void delay_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct delay_c *dc = ti->private; int sz = 0; @@ -314,8 +314,6 @@ dc->write_delay); break; } - - return 0; } static int delay_iterate_devices(struct dm_target *ti, @@ -337,7 +335,7 @@ static struct target_type delay_target = { .name = "delay", - .version = {1, 2, 0}, + .version = {1, 2, 1}, .module = THIS_MODULE, .ctr = delay_ctr, .dtr = delay_dtr, --- linux-ppc-3.8.0.orig/drivers/md/dm-snap.c +++ linux-ppc-3.8.0/drivers/md/dm-snap.c @@ -1119,6 +1119,7 @@ s->pending_pool = mempool_create_slab_pool(MIN_IOS, pending_cache); if (!s->pending_pool) { ti->error = "Could not allocate mempool for pending exceptions"; + r = -ENOMEM; goto bad_pending_pool; } @@ -1837,8 +1838,8 @@ start_merge(s); } -static int snapshot_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void snapshot_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { unsigned sz = 0; struct dm_snapshot *snap = ti->private; @@ -1884,8 +1885,6 @@ maxlen - sz); break; } - - return 0; } static int snapshot_iterate_devices(struct dm_target *ti, @@ -2139,8 +2138,8 @@ ti->max_io_len = get_origin_minimum_chunksize(dev->bdev); } -static int origin_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void origin_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct dm_dev *dev = ti->private; @@ -2153,8 +2152,6 @@ snprintf(result, maxlen, "%s", dev->name); break; } - - return 0; } static int origin_merge(struct dm_target *ti, struct bvec_merge_data *bvm, @@ -2181,7 +2178,7 @@ static struct target_type origin_target = { .name = "snapshot-origin", - .version = {1, 8, 0}, + .version = {1, 8, 1}, .module = THIS_MODULE, .ctr = origin_ctr, .dtr = origin_dtr, @@ -2194,7 +2191,7 @@ static struct target_type snapshot_target = { .name = "snapshot", - .version = {1, 11, 0}, + .version = {1, 11, 1}, .module = THIS_MODULE, .ctr = snapshot_ctr, .dtr = snapshot_dtr, @@ -2307,3 +2304,5 @@ MODULE_DESCRIPTION(DM_NAME " snapshot target"); MODULE_AUTHOR("Joe Thornber"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("dm-snapshot-origin"); +MODULE_ALIAS("dm-snapshot-merge"); --- linux-ppc-3.8.0.orig/drivers/md/dm-stripe.c +++ linux-ppc-3.8.0/drivers/md/dm-stripe.c @@ -94,7 +94,7 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv) { struct stripe_c *sc; - sector_t width; + sector_t width, tmp_len; uint32_t stripes; uint32_t chunk_size; int r; @@ -116,15 +116,16 @@ } width = ti->len; - if (sector_div(width, chunk_size)) { + if (sector_div(width, stripes)) { ti->error = "Target length not divisible by " - "chunk size"; + "number of stripes"; return -EINVAL; } - if (sector_div(width, stripes)) { + tmp_len = width; + if (sector_div(tmp_len, chunk_size)) { ti->error = "Target length not divisible by " - "number of stripes"; + "chunk size"; return -EINVAL; } @@ -312,8 +313,8 @@ * */ -static int stripe_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void stripe_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct stripe_c *sc = (struct stripe_c *) ti->private; char buffer[sc->stripes + 1]; @@ -340,7 +341,6 @@ (unsigned long long)sc->stripe[i].physical_start); break; } - return 0; } static int stripe_end_io(struct dm_target *ti, struct bio *bio, int error) @@ -428,7 +428,7 @@ static struct target_type stripe_target = { .name = "striped", - .version = {1, 5, 0}, + .version = {1, 5, 1}, .module = THIS_MODULE, .ctr = stripe_ctr, .dtr = stripe_dtr, --- linux-ppc-3.8.0.orig/drivers/md/dm-ioctl.c +++ linux-ppc-3.8.0/drivers/md/dm-ioctl.c @@ -1067,6 +1067,7 @@ num_targets = dm_table_get_num_targets(table); for (i = 0; i < num_targets; i++) { struct dm_target *ti = dm_table_get_target(table, i); + size_t l; remaining = len - (outptr - outbuf); if (remaining <= sizeof(struct dm_target_spec)) { @@ -1093,14 +1094,17 @@ if (ti->type->status) { if (param->flags & DM_NOFLUSH_FLAG) status_flags |= DM_STATUS_NOFLUSH_FLAG; - if (ti->type->status(ti, type, status_flags, outptr, remaining)) { - param->flags |= DM_BUFFER_FULL_FLAG; - break; - } + ti->type->status(ti, type, status_flags, outptr, remaining); } else outptr[0] = '\0'; - outptr += strlen(outptr) + 1; + l = strlen(outptr) + 1; + if (l == remaining) { + param->flags |= DM_BUFFER_FULL_FLAG; + break; + } + + outptr += l; used = param->data_start + (outptr - outbuf); outptr = align_ptr(outptr); @@ -1581,7 +1585,10 @@ dmi = kmalloc(tmp.data_size, GFP_NOIO | __GFP_NORETRY | __GFP_NOMEMALLOC | __GFP_NOWARN); if (!dmi) { + unsigned noio_flag; + noio_flag = memalloc_noio_save(); dmi = __vmalloc(tmp.data_size, GFP_NOIO | __GFP_REPEAT | __GFP_HIGH, PAGE_KERNEL); + memalloc_noio_restore(noio_flag); *param_flags |= DM_PARAMS_VMALLOC; } --- linux-ppc-3.8.0.orig/drivers/md/dm-linear.c +++ linux-ppc-3.8.0/drivers/md/dm-linear.c @@ -95,8 +95,8 @@ return DM_MAPIO_REMAPPED; } -static int linear_status(struct dm_target *ti, status_type_t type, - unsigned status_flags, char *result, unsigned maxlen) +static void linear_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) { struct linear_c *lc = (struct linear_c *) ti->private; @@ -110,7 +110,6 @@ (unsigned long long)lc->start); break; } - return 0; } static int linear_ioctl(struct dm_target *ti, unsigned int cmd, @@ -155,7 +154,7 @@ static struct target_type linear_target = { .name = "linear", - .version = {1, 2, 0}, + .version = {1, 2, 1}, .module = THIS_MODULE, .ctr = linear_ctr, .dtr = linear_dtr, --- linux-ppc-3.8.0.orig/drivers/md/raid1.c +++ linux-ppc-3.8.0/drivers/md/raid1.c @@ -427,7 +427,17 @@ r1_bio->bios[mirror] = NULL; to_put = bio; - set_bit(R1BIO_Uptodate, &r1_bio->state); + /* + * Do not set R1BIO_Uptodate if the current device is + * rebuilding or Faulty. This is because we cannot use + * such device for properly reading the data back (we could + * potentially use it, if the current write would have felt + * before rdev->recovery_offset, but for simplicity we don't + * check this here. + */ + if (test_bit(In_sync, &conf->mirrors[mirror].rdev->flags) && + !test_bit(Faulty, &conf->mirrors[mirror].rdev->flags)) + set_bit(R1BIO_Uptodate, &r1_bio->state); /* Maybe we can clear some bad blocks. */ if (is_badblock(conf->mirrors[mirror].rdev, @@ -880,17 +890,17 @@ wake_up(&conf->wait_barrier); } -static void freeze_array(struct r1conf *conf) +static void freeze_array(struct r1conf *conf, int extra) { /* stop syncio and normal IO and wait for everything to * go quite. * We increment barrier and nr_waiting, and then - * wait until nr_pending match nr_queued+1 + * wait until nr_pending match nr_queued+extra * This is called in the context of one normal IO request * that has failed. Thus any sync request that might be pending * will be blocked by nr_pending, and we need to wait for * pending IO requests to complete or be queued for re-try. - * Thus the number queued (nr_queued) plus this request (1) + * Thus the number queued (nr_queued) plus this request (extra) * must match the number of pending IOs (nr_pending) before * we continue. */ @@ -898,7 +908,7 @@ conf->barrier++; conf->nr_waiting++; wait_event_lock_irq_cmd(conf->wait_barrier, - conf->nr_pending == conf->nr_queued+1, + conf->nr_pending == conf->nr_queued+extra, conf->resync_lock, flush_pending_writes(conf)); spin_unlock_irq(&conf->resync_lock); @@ -967,6 +977,7 @@ bio_list_merge(&conf->pending_bio_list, &plug->pending); conf->pending_count += plug->pending_cnt; spin_unlock_irq(&conf->device_lock); + wake_up(&conf->wait_barrier); md_wakeup_thread(mddev->thread); kfree(plug); return; @@ -980,7 +991,12 @@ while (bio) { /* submit pending writes */ struct bio *next = bio->bi_next; bio->bi_next = NULL; - generic_make_request(bio); + if (unlikely((bio->bi_rw & REQ_DISCARD) && + !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) + /* Just ignore it */ + bio_endio(bio, 0); + else + generic_make_request(bio); bio = next; } kfree(plug); @@ -1000,6 +1016,7 @@ const unsigned long do_flush_fua = (bio->bi_rw & (REQ_FLUSH | REQ_FUA)); const unsigned long do_discard = (bio->bi_rw & (REQ_DISCARD | REQ_SECURE)); + const unsigned long do_same = (bio->bi_rw & REQ_WRITE_SAME); struct md_rdev *blocked_rdev; struct blk_plug_cb *cb; struct raid1_plug_cb *plug = NULL; @@ -1289,7 +1306,7 @@ * know the original bi_idx, so we just free * them all */ - __bio_for_each_segment(bvec, mbio, j, 0) + bio_for_each_segment_all(bvec, mbio, j) bvec->bv_page = r1_bio->behind_bvecs[j].bv_page; if (test_bit(WriteMostly, &conf->mirrors[i].rdev->flags)) atomic_inc(&r1_bio->behind_remaining); @@ -1301,7 +1318,8 @@ conf->mirrors[i].rdev->data_offset); mbio->bi_bdev = conf->mirrors[i].rdev->bdev; mbio->bi_end_io = raid1_end_write_request; - mbio->bi_rw = WRITE | do_flush_fua | do_sync | do_discard; + mbio->bi_rw = + WRITE | do_flush_fua | do_sync | do_discard | do_same; mbio->bi_private = r1_bio; atomic_inc(&r1_bio->remaining); @@ -1550,8 +1568,8 @@ * we wait for all outstanding requests to complete. */ synchronize_sched(); - raise_barrier(conf); - lower_barrier(conf); + freeze_array(conf, 0); + unfreeze_array(conf); clear_bit(Unmerged, &rdev->flags); } md_integrity_add_rdev(rdev, mddev); @@ -1601,11 +1619,11 @@ */ struct md_rdev *repl = conf->mirrors[conf->raid_disks + number].rdev; - raise_barrier(conf); + freeze_array(conf, 0); clear_bit(Replacement, &repl->flags); p->rdev = repl; conf->mirrors[conf->raid_disks + number].rdev = NULL; - lower_barrier(conf); + unfreeze_array(conf); clear_bit(WantReplacement, &rdev->flags); } else clear_bit(WantReplacement, &rdev->flags); @@ -2222,7 +2240,7 @@ * frozen */ if (mddev->ro == 0) { - freeze_array(conf); + freeze_array(conf, 1); fix_read_error(conf, r1_bio->read_disk, r1_bio->sector, r1_bio->sectors); unfreeze_array(conf); @@ -2818,6 +2836,9 @@ if (IS_ERR(conf)) return PTR_ERR(conf); + if (mddev->queue) + blk_queue_max_write_same_sectors(mddev->queue, 0); + rdev_for_each(rdev, mddev) { if (!mddev->gendisk) continue; @@ -2998,7 +3019,7 @@ return -ENOMEM; } - raise_barrier(conf); + freeze_array(conf, 0); /* ok, everything is stopped */ oldpool = conf->r1bio_pool; @@ -3029,7 +3050,7 @@ conf->raid_disks = mddev->raid_disks = raid_disks; mddev->delta_disks = 0; - lower_barrier(conf); + unfreeze_array(conf); set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); md_wakeup_thread(mddev->thread); --- linux-ppc-3.8.0.orig/drivers/md/persistent-data/dm-btree-remove.c +++ linux-ppc-3.8.0/drivers/md/persistent-data/dm-btree-remove.c @@ -139,15 +139,8 @@ struct btree_node *n; }; -static struct dm_btree_value_type le64_type = { - .context = NULL, - .size = sizeof(__le64), - .inc = NULL, - .dec = NULL, - .equal = NULL -}; - -static int init_child(struct dm_btree_info *info, struct btree_node *parent, +static int init_child(struct dm_btree_info *info, struct dm_btree_value_type *vt, + struct btree_node *parent, unsigned index, struct child *result) { int r, inc; @@ -164,7 +157,7 @@ result->n = dm_block_data(result->block); if (inc) - inc_children(info->tm, result->n, &le64_type); + inc_children(info->tm, result->n, vt); *((__le64 *) value_ptr(parent, index)) = cpu_to_le64(dm_block_location(result->block)); @@ -236,7 +229,7 @@ } static int rebalance2(struct shadow_spine *s, struct dm_btree_info *info, - unsigned left_index) + struct dm_btree_value_type *vt, unsigned left_index) { int r; struct btree_node *parent; @@ -244,11 +237,11 @@ parent = dm_block_data(shadow_current(s)); - r = init_child(info, parent, left_index, &left); + r = init_child(info, vt, parent, left_index, &left); if (r) return r; - r = init_child(info, parent, left_index + 1, &right); + r = init_child(info, vt, parent, left_index + 1, &right); if (r) { exit_child(info, &left); return r; @@ -368,7 +361,7 @@ } static int rebalance3(struct shadow_spine *s, struct dm_btree_info *info, - unsigned left_index) + struct dm_btree_value_type *vt, unsigned left_index) { int r; struct btree_node *parent = dm_block_data(shadow_current(s)); @@ -377,17 +370,17 @@ /* * FIXME: fill out an array? */ - r = init_child(info, parent, left_index, &left); + r = init_child(info, vt, parent, left_index, &left); if (r) return r; - r = init_child(info, parent, left_index + 1, ¢er); + r = init_child(info, vt, parent, left_index + 1, ¢er); if (r) { exit_child(info, &left); return r; } - r = init_child(info, parent, left_index + 2, &right); + r = init_child(info, vt, parent, left_index + 2, &right); if (r) { exit_child(info, &left); exit_child(info, ¢er); @@ -434,7 +427,8 @@ } static int rebalance_children(struct shadow_spine *s, - struct dm_btree_info *info, uint64_t key) + struct dm_btree_info *info, + struct dm_btree_value_type *vt, uint64_t key) { int i, r, has_left_sibling, has_right_sibling; uint32_t child_entries; @@ -472,13 +466,13 @@ has_right_sibling = i < (le32_to_cpu(n->header.nr_entries) - 1); if (!has_left_sibling) - r = rebalance2(s, info, i); + r = rebalance2(s, info, vt, i); else if (!has_right_sibling) - r = rebalance2(s, info, i - 1); + r = rebalance2(s, info, vt, i - 1); else - r = rebalance3(s, info, i - 1); + r = rebalance3(s, info, vt, i - 1); return r; } @@ -529,7 +523,7 @@ if (le32_to_cpu(n->header.flags) & LEAF_NODE) return do_leaf(n, key, index); - r = rebalance_children(s, info, key); + r = rebalance_children(s, info, vt, key); if (r) break; @@ -550,6 +544,14 @@ return r; } +static struct dm_btree_value_type le64_type = { + .context = NULL, + .size = sizeof(__le64), + .inc = NULL, + .dec = NULL, + .equal = NULL +}; + int dm_btree_remove(struct dm_btree_info *info, dm_block_t root, uint64_t *keys, dm_block_t *new_root) { --- linux-ppc-3.8.0.orig/drivers/eisa/pci_eisa.c +++ linux-ppc-3.8.0/drivers/eisa/pci_eisa.c @@ -19,10 +19,10 @@ /* There is only *one* pci_eisa device per machine, right ? */ static struct eisa_root_device pci_eisa_root; -static int __init pci_eisa_init(struct pci_dev *pdev, - const struct pci_device_id *ent) +static int __init pci_eisa_init(struct pci_dev *pdev) { - int rc; + int rc, i; + struct resource *res, *bus_res = NULL; if ((rc = pci_enable_device (pdev))) { printk (KERN_ERR "pci_eisa : Could not enable device %s\n", @@ -30,9 +30,30 @@ return rc; } + /* + * The Intel 82375 PCI-EISA bridge is a subtractive-decode PCI + * device, so the resources available on EISA are the same as those + * available on the 82375 bus. This works the same as a PCI-PCI + * bridge in subtractive-decode mode (see pci_read_bridge_bases()). + * We assume other PCI-EISA bridges are similar. + * + * eisa_root_register() can only deal with a single io port resource, + * so we use the first valid io port resource. + */ + pci_bus_for_each_resource(pdev->bus, res, i) + if (res && (res->flags & IORESOURCE_IO)) { + bus_res = res; + break; + } + + if (!bus_res) { + dev_err(&pdev->dev, "No resources available\n"); + return -1; + } + pci_eisa_root.dev = &pdev->dev; - pci_eisa_root.res = pdev->bus->resource[0]; - pci_eisa_root.bus_base_addr = pdev->bus->resource[0]->start; + pci_eisa_root.res = bus_res; + pci_eisa_root.bus_base_addr = bus_res->start; pci_eisa_root.slots = EISA_MAX_SLOTS; pci_eisa_root.dma_mask = pdev->dma_mask; dev_set_drvdata(pci_eisa_root.dev, &pci_eisa_root); @@ -45,22 +66,26 @@ return 0; } -static struct pci_device_id pci_eisa_pci_tbl[] = { - { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, - PCI_CLASS_BRIDGE_EISA << 8, 0xffff00, 0 }, - { 0, } -}; - -static struct pci_driver __refdata pci_eisa_driver = { - .name = "pci_eisa", - .id_table = pci_eisa_pci_tbl, - .probe = pci_eisa_init, -}; - -static int __init pci_eisa_init_module (void) +/* + * We have to call pci_eisa_init_early() before pnpacpi_init()/isapnp_init(). + * Otherwise pnp resource will get enabled early and could prevent eisa + * to be initialized. + * Also need to make sure pci_eisa_init_early() is called after + * x86/pci_subsys_init(). + * So need to use subsys_initcall_sync with it. + */ +static int __init pci_eisa_init_early(void) { - return pci_register_driver (&pci_eisa_driver); -} + struct pci_dev *dev = NULL; + int ret; + + for_each_pci_dev(dev) + if ((dev->class >> 8) == PCI_CLASS_BRIDGE_EISA) { + ret = pci_eisa_init(dev); + if (ret) + return ret; + } -device_initcall(pci_eisa_init_module); -MODULE_DEVICE_TABLE(pci, pci_eisa_pci_tbl); + return 0; +} +subsys_initcall_sync(pci_eisa_init_early); --- linux-ppc-3.8.0.orig/drivers/s390/char/sclp_cmd.c +++ linux-ppc-3.8.0/drivers/s390/char/sclp_cmd.c @@ -567,6 +567,8 @@ add_memory_merged(0); } +#define MEM_SCT_SIZE (1UL << SECTION_SIZE_BITS) + static void __init insert_increment(u16 rn, int standby, int assigned) { struct memory_increment *incr, *new_incr; @@ -579,7 +581,7 @@ new_incr->rn = rn; new_incr->standby = standby; if (!standby) - new_incr->usecount = 1; + new_incr->usecount = rzm > MEM_SCT_SIZE ? rzm/MEM_SCT_SIZE : 1; last_rn = 0; prev = &sclp_mem_list; list_for_each_entry(incr, &sclp_mem_list, list) { --- linux-ppc-3.8.0.orig/drivers/s390/scsi/zfcp_fsf.c +++ linux-ppc-3.8.0/drivers/s390/scsi/zfcp_fsf.c @@ -3,7 +3,7 @@ * * Implementation of FSF commands. * - * Copyright IBM Corp. 2002, 2010 + * Copyright IBM Corp. 2002, 2013 */ #define KMSG_COMPONENT "zfcp" @@ -483,12 +483,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) = - 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; adapter->timer_ticks = bottom->timer_interval & ZFCP_FSF_TIMER_INT_MASK; adapter->stat_read_buf_num = max(bottom->status_read_buf_num, (u16)FSF_STATUS_READS_RECOM); @@ -496,6 +492,19 @@ if (fc_host_permanent_port_name(shost) == -1) fc_host_permanent_port_name(shost) = fc_host_port_name(shost); + zfcp_scsi_set_prot(adapter); + + /* no error return above here, otherwise must fix call chains */ + /* do not evaluate invalid fields */ + if (req->qtcb->header.fsf_status == FSF_EXCHANGE_CONFIG_DATA_INCOMPLETE) + return 0; + + fc_host_port_id(shost) = ntoh24(bottom->s_id); + fc_host_speed(shost) = + zfcp_fsf_convert_portspeed(bottom->fc_link_speed); + + adapter->hydra_version = bottom->adapter_type; + switch (bottom->fc_topology) { case FSF_TOPO_P2P: adapter->peer_d_id = ntoh24(bottom->peer_d_id); @@ -517,8 +526,6 @@ return -EIO; } - zfcp_scsi_set_prot(adapter); - return 0; } @@ -563,8 +570,14 @@ fc_host_port_type(shost) = FC_PORTTYPE_UNKNOWN; adapter->hydra_version = 0; + /* avoids adapter shutdown to be able to recognize + * events such as LINK UP */ + atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, + &adapter->status); zfcp_fsf_link_down_info_eval(req, &qtcb->header.fsf_status_qual.link_down_info); + if (zfcp_fsf_exchange_config_evaluate(req)) + return; break; default: zfcp_erp_adapter_shutdown(adapter, 0, "fsecdh3"); --- linux-ppc-3.8.0.orig/drivers/s390/scsi/zfcp_aux.c +++ linux-ppc-3.8.0/drivers/s390/scsi/zfcp_aux.c @@ -3,7 +3,7 @@ * * Module interface and handling of zfcp data structures. * - * Copyright IBM Corp. 2002, 2010 + * Copyright IBM Corp. 2002, 2013 */ /* @@ -23,6 +23,7 @@ * Christof Schmitt * Martin Petermann * Sven Schuetz + * Steffen Maier */ #define KMSG_COMPONENT "zfcp" @@ -415,6 +416,8 @@ adapter->dma_parms.max_segment_size = ZFCP_QDIO_SBALE_LEN; adapter->ccw_device->dev.dma_parms = &adapter->dma_parms; + adapter->stat_read_buf_num = FSF_STATUS_READS_RECOM; + if (!zfcp_scsi_adapter_register(adapter)) return adapter; --- linux-ppc-3.8.0.orig/drivers/s390/scsi/zfcp_qdio.c +++ linux-ppc-3.8.0/drivers/s390/scsi/zfcp_qdio.c @@ -224,11 +224,9 @@ static int zfcp_qdio_sbal_check(struct zfcp_qdio *qdio) { - spin_lock_irq(&qdio->req_q_lock); if (atomic_read(&qdio->req_q_free) || !(atomic_read(&qdio->adapter->status) & ZFCP_STATUS_ADAPTER_QDIOUP)) return 1; - spin_unlock_irq(&qdio->req_q_lock); return 0; } @@ -246,9 +244,8 @@ { long ret; - spin_unlock_irq(&qdio->req_q_lock); - ret = wait_event_interruptible_timeout(qdio->req_q_wq, - zfcp_qdio_sbal_check(qdio), 5 * HZ); + ret = wait_event_interruptible_lock_irq_timeout(qdio->req_q_wq, + zfcp_qdio_sbal_check(qdio), qdio->req_q_lock, 5 * HZ); if (!(atomic_read(&qdio->adapter->status) & ZFCP_STATUS_ADAPTER_QDIOUP)) return -EIO; @@ -262,7 +259,6 @@ zfcp_erp_adapter_reopen(qdio->adapter, 0, "qdsbg_1"); } - spin_lock_irq(&qdio->req_q_lock); return -EIO; } --- linux-ppc-3.8.0.orig/drivers/s390/scsi/zfcp_scsi.c +++ linux-ppc-3.8.0/drivers/s390/scsi/zfcp_scsi.c @@ -3,7 +3,7 @@ * * Interface to Linux SCSI midlayer. * - * Copyright IBM Corp. 2002, 2010 + * Copyright IBM Corp. 2002, 2013 */ #define KMSG_COMPONENT "zfcp" @@ -311,8 +311,12 @@ .proc_name = "zfcp", .can_queue = 4096, .this_id = -1, - .sg_tablesize = 1, /* adjusted later */ - .max_sectors = 8, /* adjusted later */ + .sg_tablesize = (((QDIO_MAX_ELEMENTS_PER_BUFFER - 1) + * ZFCP_QDIO_MAX_SBALS_PER_REQ) - 2), + /* GCD, adjusted later */ + .max_sectors = (((QDIO_MAX_ELEMENTS_PER_BUFFER - 1) + * ZFCP_QDIO_MAX_SBALS_PER_REQ) - 2) * 8, + /* GCD, adjusted later */ .dma_boundary = ZFCP_QDIO_SBALE_LEN - 1, .cmd_per_lun = 1, .use_clustering = 1, --- linux-ppc-3.8.0.orig/drivers/s390/scsi/zfcp_erp.c +++ linux-ppc-3.8.0/drivers/s390/scsi/zfcp_erp.c @@ -102,10 +102,13 @@ if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_INUSE) zfcp_erp_action_dismiss(&port->erp_action); - else - shost_for_each_device(sdev, port->adapter->scsi_host) + else { + spin_lock(port->adapter->scsi_host->host_lock); + __shost_for_each_device(sdev, port->adapter->scsi_host) if (sdev_to_zfcp(sdev)->port == port) zfcp_erp_action_dismiss_lun(sdev); + spin_unlock(port->adapter->scsi_host->host_lock); + } } static void zfcp_erp_action_dismiss_adapter(struct zfcp_adapter *adapter) @@ -592,9 +595,11 @@ { struct scsi_device *sdev; - shost_for_each_device(sdev, port->adapter->scsi_host) + spin_lock(port->adapter->scsi_host->host_lock); + __shost_for_each_device(sdev, port->adapter->scsi_host) if (sdev_to_zfcp(sdev)->port == port) _zfcp_erp_lun_reopen(sdev, clear, id, 0); + spin_unlock(port->adapter->scsi_host->host_lock); } static void zfcp_erp_strategy_followup_failed(struct zfcp_erp_action *act) @@ -1435,8 +1440,10 @@ atomic_set_mask(common_mask, &port->status); read_unlock_irqrestore(&adapter->port_list_lock, flags); - shost_for_each_device(sdev, adapter->scsi_host) + spin_lock_irqsave(adapter->scsi_host->host_lock, flags); + __shost_for_each_device(sdev, adapter->scsi_host) atomic_set_mask(common_mask, &sdev_to_zfcp(sdev)->status); + spin_unlock_irqrestore(adapter->scsi_host->host_lock, flags); } /** @@ -1470,11 +1477,13 @@ } read_unlock_irqrestore(&adapter->port_list_lock, flags); - shost_for_each_device(sdev, adapter->scsi_host) { + spin_lock_irqsave(adapter->scsi_host->host_lock, flags); + __shost_for_each_device(sdev, adapter->scsi_host) { atomic_clear_mask(common_mask, &sdev_to_zfcp(sdev)->status); if (clear_counter) atomic_set(&sdev_to_zfcp(sdev)->erp_counter, 0); } + spin_unlock_irqrestore(adapter->scsi_host->host_lock, flags); } /** @@ -1488,16 +1497,19 @@ { struct scsi_device *sdev; u32 common_mask = mask & ZFCP_COMMON_FLAGS; + unsigned long flags; atomic_set_mask(mask, &port->status); if (!common_mask) return; - shost_for_each_device(sdev, port->adapter->scsi_host) + spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags); + __shost_for_each_device(sdev, port->adapter->scsi_host) if (sdev_to_zfcp(sdev)->port == port) atomic_set_mask(common_mask, &sdev_to_zfcp(sdev)->status); + spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags); } /** @@ -1512,6 +1524,7 @@ struct scsi_device *sdev; u32 common_mask = mask & ZFCP_COMMON_FLAGS; u32 clear_counter = mask & ZFCP_STATUS_COMMON_ERP_FAILED; + unsigned long flags; atomic_clear_mask(mask, &port->status); @@ -1521,13 +1534,15 @@ if (clear_counter) atomic_set(&port->erp_counter, 0); - shost_for_each_device(sdev, port->adapter->scsi_host) + spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags); + __shost_for_each_device(sdev, port->adapter->scsi_host) if (sdev_to_zfcp(sdev)->port == port) { atomic_clear_mask(common_mask, &sdev_to_zfcp(sdev)->status); if (clear_counter) atomic_set(&sdev_to_zfcp(sdev)->erp_counter, 0); } + spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags); } /** --- linux-ppc-3.8.0.orig/drivers/s390/kvm/kvm_virtio.c +++ linux-ppc-3.8.0/drivers/s390/kvm/kvm_virtio.c @@ -422,6 +422,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 */ @@ -432,21 +452,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-ppc-3.8.0.orig/drivers/rapidio/devices/tsi721.c +++ linux-ppc-3.8.0/drivers/rapidio/devices/tsi721.c @@ -471,6 +471,10 @@ u32 intval; u32 ch_inte; + /* For MSI mode disable all device-level interrupts */ + if (priv->flags & TSI721_USING_MSI) + iowrite32(0, priv->regs + TSI721_DEV_INTE); + dev_int = ioread32(priv->regs + TSI721_DEV_INT); if (!dev_int) return IRQ_NONE; @@ -560,6 +564,14 @@ } } #endif + + /* For MSI mode re-enable device-level interrupts */ + if (priv->flags & TSI721_USING_MSI) { + dev_int = TSI721_DEV_INT_SR2PC_CH | TSI721_DEV_INT_SRIO | + TSI721_DEV_INT_SMSG_CH | TSI721_DEV_INT_BDMA_CH; + iowrite32(dev_int, priv->regs + TSI721_DEV_INTE); + } + return IRQ_HANDLED; } --- linux-ppc-3.8.0.orig/drivers/media/pci/cx18/cx18-alsa-pcm.h +++ linux-ppc-3.8.0/drivers/media/pci/cx18/cx18-alsa-pcm.h @@ -20,7 +20,7 @@ * 02111-1307 USA */ -int __init snd_cx18_pcm_create(struct snd_cx18_card *cxsc); +int snd_cx18_pcm_create(struct snd_cx18_card *cxsc); /* Used by cx18-mailbox to announce the PCM data to the module */ void cx18_alsa_announce_pcm_data(struct snd_cx18_card *card, u8 *pcm_data, --- linux-ppc-3.8.0.orig/drivers/media/pci/cx18/cx18-alsa-main.c +++ linux-ppc-3.8.0/drivers/media/pci/cx18/cx18-alsa-main.c @@ -197,7 +197,7 @@ return ret; } -static int __init cx18_alsa_load(struct cx18 *cx) +static int cx18_alsa_load(struct cx18 *cx) { struct v4l2_device *v4l2_dev = &cx->v4l2_dev; struct cx18_stream *s; --- linux-ppc-3.8.0.orig/drivers/media/pci/ivtv/ivtv-alsa-pcm.h +++ linux-ppc-3.8.0/drivers/media/pci/ivtv/ivtv-alsa-pcm.h @@ -20,4 +20,4 @@ * 02111-1307 USA */ -int __init snd_ivtv_pcm_create(struct snd_ivtv_card *itvsc); +int snd_ivtv_pcm_create(struct snd_ivtv_card *itvsc); --- linux-ppc-3.8.0.orig/drivers/media/pci/ivtv/ivtv-alsa-main.c +++ linux-ppc-3.8.0/drivers/media/pci/ivtv/ivtv-alsa-main.c @@ -205,7 +205,7 @@ return ret; } -static int __init ivtv_alsa_load(struct ivtv *itv) +static int ivtv_alsa_load(struct ivtv *itv) { struct v4l2_device *v4l2_dev = &itv->v4l2_dev; struct ivtv_stream *s; --- linux-ppc-3.8.0.orig/drivers/media/pci/bt8xx/bttv-driver.c +++ linux-ppc-3.8.0/drivers/media/pci/bt8xx/bttv-driver.c @@ -250,17 +250,19 @@ vdelay start of active video in 2 * field lines relative to trailing edge of /VRESET pulse (VDELAY register). sheight height of active video in 2 * field lines. + extraheight Added to sheight for cropcap.bounds.height only videostart0 ITU-R frame line number of the line corresponding to vdelay in the first field. */ #define CROPCAP(minhdelayx1, hdelayx1, swidth, totalwidth, sqwidth, \ - vdelay, sheight, videostart0) \ + vdelay, sheight, extraheight, videostart0) \ .cropcap.bounds.left = minhdelayx1, \ /* * 2 because vertically we count field lines times two, */ \ /* e.g. 23 * 2 to 23 * 2 + 576 in PAL-BGHI defrect. */ \ .cropcap.bounds.top = (videostart0) * 2 - (vdelay) + MIN_VDELAY, \ /* 4 is a safety margin at the end of the line. */ \ .cropcap.bounds.width = (totalwidth) - (minhdelayx1) - 4, \ - .cropcap.bounds.height = (sheight) + (vdelay) - MIN_VDELAY, \ + .cropcap.bounds.height = (sheight) + (extraheight) + (vdelay) - \ + MIN_VDELAY, \ .cropcap.defrect.left = hdelayx1, \ .cropcap.defrect.top = (videostart0) * 2, \ .cropcap.defrect.width = swidth, \ @@ -301,9 +303,10 @@ /* totalwidth */ 1135, /* sqwidth */ 944, /* vdelay */ 0x20, - /* bt878 (and bt848?) can capture another - line below active video. */ - /* sheight */ (576 + 2) + 0x20 - 2, + /* sheight */ 576, + /* bt878 (and bt848?) can capture another + line below active video. */ + /* extraheight */ 2, /* videostart0 */ 23) },{ .v4l2_id = V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_KR, @@ -330,6 +333,7 @@ /* sqwidth */ 780, /* vdelay */ 0x1a, /* sheight */ 480, + /* extraheight */ 0, /* videostart0 */ 23) },{ .v4l2_id = V4L2_STD_SECAM, @@ -355,6 +359,7 @@ /* sqwidth */ 944, /* vdelay */ 0x20, /* sheight */ 576, + /* extraheight */ 0, /* videostart0 */ 23) },{ .v4l2_id = V4L2_STD_PAL_Nc, @@ -380,6 +385,7 @@ /* sqwidth */ 780, /* vdelay */ 0x1a, /* sheight */ 576, + /* extraheight */ 0, /* videostart0 */ 23) },{ .v4l2_id = V4L2_STD_PAL_M, @@ -405,6 +411,7 @@ /* sqwidth */ 780, /* vdelay */ 0x1a, /* sheight */ 480, + /* extraheight */ 0, /* videostart0 */ 23) },{ .v4l2_id = V4L2_STD_PAL_N, @@ -430,6 +437,7 @@ /* sqwidth */ 944, /* vdelay */ 0x20, /* sheight */ 576, + /* extraheight */ 0, /* videostart0 */ 23) },{ .v4l2_id = V4L2_STD_NTSC_M_JP, @@ -455,6 +463,7 @@ /* sqwidth */ 780, /* vdelay */ 0x16, /* sheight */ 480, + /* extraheight */ 0, /* videostart0 */ 23) },{ /* that one hopefully works with the strange timing @@ -484,6 +493,7 @@ /* sqwidth */ 944, /* vdelay */ 0x1a, /* sheight */ 480, + /* extraheight */ 0, /* videostart0 */ 23) } }; --- linux-ppc-3.8.0.orig/drivers/media/pci/saa7134/saa7134-alsa.c +++ linux-ppc-3.8.0/drivers/media/pci/saa7134/saa7134-alsa.c @@ -172,7 +172,9 @@ dprintk("irq: overrun [full=%d/%d] - Blocks in %d\n",dev->dmasound.read_count, dev->dmasound.bufsize, dev->dmasound.blocks); spin_unlock(&dev->slock); + snd_pcm_stream_lock(dev->dmasound.substream); snd_pcm_stop(dev->dmasound.substream,SNDRV_PCM_STATE_XRUN); + snd_pcm_stream_unlock(dev->dmasound.substream); return; } --- linux-ppc-3.8.0.orig/drivers/media/platform/davinci/vpss.c +++ linux-ppc-3.8.0/drivers/media/platform/davinci/vpss.c @@ -25,7 +25,6 @@ #include #include #include -#include #include MODULE_LICENSE("GPL"); --- linux-ppc-3.8.0.orig/drivers/media/platform/omap/omap_vout.c +++ linux-ppc-3.8.0/drivers/media/platform/omap/omap_vout.c @@ -205,19 +205,21 @@ struct vm_area_struct *vma; struct mm_struct *mm = current->mm; - vma = find_vma(mm, virtp); /* For kernel direct-mapped memory, take the easy way */ - if (virtp >= PAGE_OFFSET) { - physp = virt_to_phys((void *) virtp); - } else if (vma && (vma->vm_flags & VM_IO) && vma->vm_pgoff) { + if (virtp >= PAGE_OFFSET) + return virt_to_phys((void *) virtp); + + down_read(¤t->mm->mmap_sem); + vma = find_vma(mm, virtp); + if (vma && (vma->vm_flags & VM_IO) && vma->vm_pgoff) { /* this will catch, kernel-allocated, mmaped-to-usermode addresses */ physp = (vma->vm_pgoff << PAGE_SHIFT) + (virtp - vma->vm_start); + up_read(¤t->mm->mmap_sem); } else { /* otherwise, use get_user_pages() for general userland pages */ int res, nr_pages = 1; struct page *pages; - down_read(¤t->mm->mmap_sem); res = get_user_pages(current, current->mm, virtp, nr_pages, 1, 0, &pages, NULL); --- linux-ppc-3.8.0.orig/drivers/media/rc/rc-main.c +++ linux-ppc-3.8.0/drivers/media/rc/rc-main.c @@ -789,8 +789,10 @@ } else if (dev->raw) { enabled = dev->raw->enabled_protocols; allowed = ir_raw_get_allowed_protocols(); - } else + } else { + mutex_unlock(&dev->lock); return -ENODEV; + } IR_dprintk(1, "allowed - 0x%llx, enabled - 0x%llx\n", (long long)allowed, --- linux-ppc-3.8.0.orig/drivers/media/rc/Kconfig +++ linux-ppc-3.8.0/drivers/media/rc/Kconfig @@ -291,7 +291,7 @@ config IR_RX51 tristate "Nokia N900 IR transmitter diode" - depends on OMAP_DM_TIMER && LIRC + depends on OMAP_DM_TIMER && LIRC && !ARCH_MULTIPLATFORM ---help--- Say Y or M here if you want to enable support for the IR transmitter diode built in the Nokia N900 (RX51) device. --- linux-ppc-3.8.0.orig/drivers/media/v4l2-core/v4l2-device.c +++ linux-ppc-3.8.0/drivers/media/v4l2-core/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, NULL); - 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-ppc-3.8.0.orig/drivers/media/dvb-core/dmxdev.c +++ linux-ppc-3.8.0/drivers/media/dvb-core/dmxdev.c @@ -377,10 +377,8 @@ ret = dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer2, buffer2_len); } - if (ret < 0) { - dvb_ringbuffer_flush(&dmxdevfilter->buffer); + if (ret < 0) dmxdevfilter->buffer.error = ret; - } if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) dmxdevfilter->state = DMXDEV_STATE_DONE; spin_unlock(&dmxdevfilter->dev->lock); @@ -416,10 +414,8 @@ ret = dvb_dmxdev_buffer_write(buffer, buffer1, buffer1_len); if (ret == buffer1_len) ret = dvb_dmxdev_buffer_write(buffer, buffer2, buffer2_len); - if (ret < 0) { - dvb_ringbuffer_flush(buffer); + if (ret < 0) buffer->error = ret; - } spin_unlock(&dmxdevfilter->dev->lock); wake_up(&buffer->queue); return 0; --- linux-ppc-3.8.0.orig/drivers/media/usb/uvc/uvc_driver.c +++ linux-ppc-3.8.0/drivers/media/usb/uvc/uvc_driver.c @@ -2163,6 +2163,33 @@ .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_QUIRK_PROBE_DEF }, + /* Dell Studio Hybrid 140g (OmniVision webcam) */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x05a9, + .idProduct = 0x264a, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_QUIRK_PROBE_DEF }, + /* Dell SP2008WFP Monitor */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x05a9, + .idProduct = 0x2641, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_QUIRK_PROBE_DEF }, + /* Alienware X51*/ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x05a9, + .idProduct = 0x2643, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_QUIRK_PROBE_DEF }, /* Apple Built-In iSight */ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, --- linux-ppc-3.8.0.orig/drivers/pwm/pwm-spear.c +++ linux-ppc-3.8.0/drivers/pwm/pwm-spear.c @@ -143,7 +143,7 @@ u32 val; rc = clk_enable(pc->clk); - if (!rc) + if (rc) return rc; val = spear_pwm_readl(pc, pwm->hwpwm, PWMCR); @@ -209,12 +209,12 @@ pc->chip.npwm = NUM_PWM; ret = clk_prepare(pc->clk); - if (!ret) + if (ret) return ret; if (of_device_is_compatible(np, "st,spear1340-pwm")) { ret = clk_enable(pc->clk); - if (!ret) { + if (ret) { clk_unprepare(pc->clk); return ret; } --- linux-ppc-3.8.0.orig/drivers/spi/Makefile +++ linux-ppc-3.8.0/drivers/spi/Makefile @@ -47,7 +47,10 @@ obj-$(CONFIG_SPI_ORION) += spi-orion.o obj-$(CONFIG_SPI_PL022) += spi-pl022.o obj-$(CONFIG_SPI_PPC4xx) += spi-ppc4xx.o -obj-$(CONFIG_SPI_PXA2XX) += spi-pxa2xx.o +spi-pxa2xx-platform-objs := spi-pxa2xx.o +spi-pxa2xx-platform-$(CONFIG_SPI_PXA2XX_PXADMA) += spi-pxa2xx-pxadma.o +spi-pxa2xx-platform-$(CONFIG_SPI_PXA2XX_DMA) += spi-pxa2xx-dma.o +obj-$(CONFIG_SPI_PXA2XX) += spi-pxa2xx-platform.o obj-$(CONFIG_SPI_PXA2XX_PCI) += spi-pxa2xx-pci.o obj-$(CONFIG_SPI_RSPI) += spi-rspi.o obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o --- linux-ppc-3.8.0.orig/drivers/spi/spi-pxa2xx.c +++ linux-ppc-3.8.0/drivers/spi/spi-pxa2xx.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2005 Stephen Street / StreetFire Sound Labs + * Copyright (C) 2013, Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,17 +25,20 @@ #include #include #include -#include #include #include #include #include #include +#include +#include +#include #include #include #include +#include "spi-pxa2xx.h" MODULE_AUTHOR("Stephen Street"); MODULE_DESCRIPTION("PXA2xx SSP SPI Controller"); @@ -45,12 +49,6 @@ #define TIMOUT_DFLT 1000 -#define DMA_INT_MASK (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR) -#define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK) -#define IS_DMA_ALIGNED(x) ((((u32)(x)) & 0x07) == 0) -#define MAX_DMA_LEN 8191 -#define DMA_ALIGNMENT 8 - /* * for testing SSCR1 changes that require SSP restart, basically * everything except the service and interrupt enables, the pxa270 developer @@ -65,115 +63,97 @@ | SSCR1_RFT | SSCR1_TFT | SSCR1_MWDS \ | SSCR1_SPH | SSCR1_SPO | SSCR1_LBM) -#define DEFINE_SSP_REG(reg, off) \ -static inline u32 read_##reg(void const __iomem *p) \ -{ return __raw_readl(p + (off)); } \ -\ -static inline void write_##reg(u32 v, void __iomem *p) \ -{ __raw_writel(v, p + (off)); } - -DEFINE_SSP_REG(SSCR0, 0x00) -DEFINE_SSP_REG(SSCR1, 0x04) -DEFINE_SSP_REG(SSSR, 0x08) -DEFINE_SSP_REG(SSITR, 0x0c) -DEFINE_SSP_REG(SSDR, 0x10) -DEFINE_SSP_REG(SSTO, 0x28) -DEFINE_SSP_REG(SSPSP, 0x2c) - -#define START_STATE ((void*)0) -#define RUNNING_STATE ((void*)1) -#define DONE_STATE ((void*)2) -#define ERROR_STATE ((void*)-1) - -#define QUEUE_RUNNING 0 -#define QUEUE_STOPPED 1 - -struct driver_data { - /* Driver model hookup */ - struct platform_device *pdev; +#define LPSS_RX_THRESH_DFLT 64 +#define LPSS_TX_LOTHRESH_DFLT 160 +#define LPSS_TX_HITHRESH_DFLT 224 + +/* Offset from drv_data->lpss_base */ +#define SPI_CS_CONTROL 0x18 +#define SPI_CS_CONTROL_SW_MODE BIT(0) +#define SPI_CS_CONTROL_CS_HIGH BIT(1) - /* SSP Info */ - struct ssp_device *ssp; +static bool is_lpss_ssp(const struct driver_data *drv_data) +{ + return drv_data->ssp_type == LPSS_SSP; +} - /* SPI framework hookup */ - enum pxa_ssp_type ssp_type; - struct spi_master *master; +/* + * Read and write LPSS SSP private registers. Caller must first check that + * is_lpss_ssp() returns true before these can be called. + */ +static u32 __lpss_ssp_read_priv(struct driver_data *drv_data, unsigned offset) +{ + WARN_ON(!drv_data->lpss_base); + return readl(drv_data->lpss_base + offset); +} - /* PXA hookup */ - struct pxa2xx_spi_master *master_info; +static void __lpss_ssp_write_priv(struct driver_data *drv_data, + unsigned offset, u32 value) +{ + WARN_ON(!drv_data->lpss_base); + writel(value, drv_data->lpss_base + offset); +} - /* DMA setup stuff */ - int rx_channel; - int tx_channel; - u32 *null_dma_buf; - - /* SSP register addresses */ - void __iomem *ioaddr; - u32 ssdr_physical; - - /* SSP masks*/ - u32 dma_cr1; - u32 int_cr1; - u32 clear_sr; - u32 mask_sr; - - /* Driver message queue */ - struct workqueue_struct *workqueue; - struct work_struct pump_messages; - spinlock_t lock; - struct list_head queue; - int busy; - int run; - - /* Message Transfer pump */ - struct tasklet_struct pump_transfers; - - /* Current message transfer state info */ - struct spi_message* cur_msg; - struct spi_transfer* cur_transfer; - struct chip_data *cur_chip; - size_t len; - void *tx; - void *tx_end; - void *rx; - void *rx_end; - int dma_mapped; - dma_addr_t rx_dma; - dma_addr_t tx_dma; - size_t rx_map_len; - size_t tx_map_len; - u8 n_bytes; - u32 dma_width; - int (*write)(struct driver_data *drv_data); - int (*read)(struct driver_data *drv_data); - irqreturn_t (*transfer_handler)(struct driver_data *drv_data); - void (*cs_control)(u32 command); -}; +/* + * lpss_ssp_setup - perform LPSS SSP specific setup + * @drv_data: pointer to the driver private data + * + * Perform LPSS SSP specific setup. This function must be called first if + * one is going to use LPSS SSP private registers. + */ +static void lpss_ssp_setup(struct driver_data *drv_data) +{ + unsigned offset = 0x400; + u32 value, orig; -struct chip_data { - u32 cr0; - u32 cr1; - u32 psp; - u32 timeout; - u8 n_bytes; - u32 dma_width; - u32 dma_burst_size; - u32 threshold; - u32 dma_threshold; - u8 enable_dma; - u8 bits_per_word; - u32 speed_hz; - union { - int gpio_cs; - unsigned int frm; - }; - int gpio_cs_inverted; - int (*write)(struct driver_data *drv_data); - int (*read)(struct driver_data *drv_data); - void (*cs_control)(u32 command); -}; + if (!is_lpss_ssp(drv_data)) + return; + + /* + * Perform auto-detection of the LPSS SSP private registers. They + * can be either at 1k or 2k offset from the base address. + */ + orig = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); + + value = orig | SPI_CS_CONTROL_SW_MODE; + writel(value, drv_data->ioaddr + offset + SPI_CS_CONTROL); + value = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); + if (value != (orig | SPI_CS_CONTROL_SW_MODE)) { + offset = 0x800; + goto detection_done; + } + + value &= ~SPI_CS_CONTROL_SW_MODE; + writel(value, drv_data->ioaddr + offset + SPI_CS_CONTROL); + value = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); + if (value != orig) { + offset = 0x800; + goto detection_done; + } + +detection_done: + /* Now set the LPSS base */ + drv_data->lpss_base = drv_data->ioaddr + offset; -static void pump_messages(struct work_struct *work); + /* Enable software chip select control */ + value = SPI_CS_CONTROL_SW_MODE | SPI_CS_CONTROL_CS_HIGH; + __lpss_ssp_write_priv(drv_data, SPI_CS_CONTROL, value); +} + +static void lpss_ssp_cs_control(struct driver_data *drv_data, bool enable) +{ + u32 value; + + if (!is_lpss_ssp(drv_data)) + return; + + value = __lpss_ssp_read_priv(drv_data, SPI_CS_CONTROL); + if (enable) + value &= ~SPI_CS_CONTROL_CS_HIGH; + else + value |= SPI_CS_CONTROL_CS_HIGH; + __lpss_ssp_write_priv(drv_data, SPI_CS_CONTROL, value); +} static void cs_assert(struct driver_data *drv_data) { @@ -189,8 +169,12 @@ return; } - if (gpio_is_valid(chip->gpio_cs)) + if (gpio_is_valid(chip->gpio_cs)) { gpio_set_value(chip->gpio_cs, chip->gpio_cs_inverted); + return; + } + + lpss_ssp_cs_control(drv_data, true); } static void cs_deassert(struct driver_data *drv_data) @@ -205,30 +189,15 @@ return; } - if (gpio_is_valid(chip->gpio_cs)) + if (gpio_is_valid(chip->gpio_cs)) { gpio_set_value(chip->gpio_cs, !chip->gpio_cs_inverted); -} - -static void write_SSSR_CS(struct driver_data *drv_data, u32 val) -{ - void __iomem *reg = drv_data->ioaddr; - - if (drv_data->ssp_type == CE4100_SSP) - val |= read_SSSR(reg) & SSSR_ALT_FRM_MASK; + return; + } - write_SSSR(val, reg); + lpss_ssp_cs_control(drv_data, false); } -static int pxa25x_ssp_comp(struct driver_data *drv_data) -{ - if (drv_data->ssp_type == PXA25x_SSP) - return 1; - if (drv_data->ssp_type == CE4100_SSP) - return 1; - return 0; -} - -static int flush(struct driver_data *drv_data) +int pxa2xx_spi_flush(struct driver_data *drv_data) { unsigned long limit = loops_per_jiffy << 1; @@ -354,7 +323,7 @@ return drv_data->rx == drv_data->rx_end; } -static void *next_transfer(struct driver_data *drv_data) +void *pxa2xx_spi_next_transfer(struct driver_data *drv_data) { struct spi_message *msg = drv_data->cur_msg; struct spi_transfer *trans = drv_data->cur_transfer; @@ -370,89 +339,15 @@ return DONE_STATE; } -static int map_dma_buffers(struct driver_data *drv_data) -{ - struct spi_message *msg = drv_data->cur_msg; - struct device *dev = &msg->spi->dev; - - if (!drv_data->cur_chip->enable_dma) - return 0; - - if (msg->is_dma_mapped) - return drv_data->rx_dma && drv_data->tx_dma; - - if (!IS_DMA_ALIGNED(drv_data->rx) || !IS_DMA_ALIGNED(drv_data->tx)) - return 0; - - /* Modify setup if rx buffer is null */ - if (drv_data->rx == NULL) { - *drv_data->null_dma_buf = 0; - drv_data->rx = drv_data->null_dma_buf; - drv_data->rx_map_len = 4; - } else - drv_data->rx_map_len = drv_data->len; - - - /* Modify setup if tx buffer is null */ - if (drv_data->tx == NULL) { - *drv_data->null_dma_buf = 0; - drv_data->tx = drv_data->null_dma_buf; - drv_data->tx_map_len = 4; - } else - drv_data->tx_map_len = drv_data->len; - - /* Stream map the tx buffer. Always do DMA_TO_DEVICE first - * so we flush the cache *before* invalidating it, in case - * the tx and rx buffers overlap. - */ - drv_data->tx_dma = dma_map_single(dev, drv_data->tx, - drv_data->tx_map_len, DMA_TO_DEVICE); - if (dma_mapping_error(dev, drv_data->tx_dma)) - return 0; - - /* Stream map the rx buffer */ - drv_data->rx_dma = dma_map_single(dev, drv_data->rx, - drv_data->rx_map_len, DMA_FROM_DEVICE); - if (dma_mapping_error(dev, drv_data->rx_dma)) { - dma_unmap_single(dev, drv_data->tx_dma, - drv_data->tx_map_len, DMA_TO_DEVICE); - return 0; - } - - return 1; -} - -static void unmap_dma_buffers(struct driver_data *drv_data) -{ - struct device *dev; - - if (!drv_data->dma_mapped) - return; - - if (!drv_data->cur_msg->is_dma_mapped) { - dev = &drv_data->cur_msg->spi->dev; - dma_unmap_single(dev, drv_data->rx_dma, - drv_data->rx_map_len, DMA_FROM_DEVICE); - dma_unmap_single(dev, drv_data->tx_dma, - drv_data->tx_map_len, DMA_TO_DEVICE); - } - - drv_data->dma_mapped = 0; -} - /* caller already set message->status; dma and pio irqs are blocked */ static void giveback(struct driver_data *drv_data) { struct spi_transfer* last_transfer; - unsigned long flags; struct spi_message *msg; - spin_lock_irqsave(&drv_data->lock, flags); msg = drv_data->cur_msg; drv_data->cur_msg = NULL; drv_data->cur_transfer = NULL; - queue_work(drv_data->workqueue, &drv_data->pump_messages); - spin_unlock_irqrestore(&drv_data->lock, flags); last_transfer = list_entry(msg->transfers.prev, struct spi_transfer, @@ -481,13 +376,7 @@ */ /* get a pointer to the next message, if any */ - spin_lock_irqsave(&drv_data->lock, flags); - if (list_empty(&drv_data->queue)) - next_msg = NULL; - else - next_msg = list_entry(drv_data->queue.next, - struct spi_message, queue); - spin_unlock_irqrestore(&drv_data->lock, flags); + next_msg = spi_get_next_queued_message(drv_data->master); /* see if the next and current messages point * to the same chip @@ -498,168 +387,10 @@ cs_deassert(drv_data); } - msg->state = NULL; - if (msg->complete) - msg->complete(msg->context); - + spi_finalize_current_message(drv_data->master); drv_data->cur_chip = NULL; } -static int wait_ssp_rx_stall(void const __iomem *ioaddr) -{ - unsigned long limit = loops_per_jiffy << 1; - - while ((read_SSSR(ioaddr) & SSSR_BSY) && --limit) - cpu_relax(); - - return limit; -} - -static int wait_dma_channel_stop(int channel) -{ - unsigned long limit = loops_per_jiffy << 1; - - while (!(DCSR(channel) & DCSR_STOPSTATE) && --limit) - cpu_relax(); - - return limit; -} - -static void dma_error_stop(struct driver_data *drv_data, const char *msg) -{ - void __iomem *reg = drv_data->ioaddr; - - /* Stop and reset */ - DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL; - DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL; - write_SSSR_CS(drv_data, drv_data->clear_sr); - write_SSCR1(read_SSCR1(reg) & ~drv_data->dma_cr1, reg); - if (!pxa25x_ssp_comp(drv_data)) - write_SSTO(0, reg); - flush(drv_data); - write_SSCR0(read_SSCR0(reg) & ~SSCR0_SSE, reg); - - unmap_dma_buffers(drv_data); - - dev_err(&drv_data->pdev->dev, "%s\n", msg); - - drv_data->cur_msg->state = ERROR_STATE; - tasklet_schedule(&drv_data->pump_transfers); -} - -static void dma_transfer_complete(struct driver_data *drv_data) -{ - void __iomem *reg = drv_data->ioaddr; - struct spi_message *msg = drv_data->cur_msg; - - /* Clear and disable interrupts on SSP and DMA channels*/ - write_SSCR1(read_SSCR1(reg) & ~drv_data->dma_cr1, reg); - write_SSSR_CS(drv_data, drv_data->clear_sr); - DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL; - DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL; - - if (wait_dma_channel_stop(drv_data->rx_channel) == 0) - dev_err(&drv_data->pdev->dev, - "dma_handler: dma rx channel stop failed\n"); - - if (wait_ssp_rx_stall(drv_data->ioaddr) == 0) - dev_err(&drv_data->pdev->dev, - "dma_transfer: ssp rx stall failed\n"); - - unmap_dma_buffers(drv_data); - - /* update the buffer pointer for the amount completed in dma */ - drv_data->rx += drv_data->len - - (DCMD(drv_data->rx_channel) & DCMD_LENGTH); - - /* read trailing data from fifo, it does not matter how many - * bytes are in the fifo just read until buffer is full - * or fifo is empty, which ever occurs first */ - drv_data->read(drv_data); - - /* return count of what was actually read */ - msg->actual_length += drv_data->len - - (drv_data->rx_end - drv_data->rx); - - /* Transfer delays and chip select release are - * handled in pump_transfers or giveback - */ - - /* Move to next transfer */ - msg->state = next_transfer(drv_data); - - /* Schedule transfer tasklet */ - tasklet_schedule(&drv_data->pump_transfers); -} - -static void dma_handler(int channel, void *data) -{ - struct driver_data *drv_data = data; - u32 irq_status = DCSR(channel) & DMA_INT_MASK; - - if (irq_status & DCSR_BUSERR) { - - if (channel == drv_data->tx_channel) - dma_error_stop(drv_data, - "dma_handler: " - "bad bus address on tx channel"); - else - dma_error_stop(drv_data, - "dma_handler: " - "bad bus address on rx channel"); - return; - } - - /* PXA255x_SSP has no timeout interrupt, wait for tailing bytes */ - if ((channel == drv_data->tx_channel) - && (irq_status & DCSR_ENDINTR) - && (drv_data->ssp_type == PXA25x_SSP)) { - - /* Wait for rx to stall */ - if (wait_ssp_rx_stall(drv_data->ioaddr) == 0) - dev_err(&drv_data->pdev->dev, - "dma_handler: ssp rx stall failed\n"); - - /* finish this transfer, start the next */ - dma_transfer_complete(drv_data); - } -} - -static irqreturn_t dma_transfer(struct driver_data *drv_data) -{ - u32 irq_status; - void __iomem *reg = drv_data->ioaddr; - - irq_status = read_SSSR(reg) & drv_data->mask_sr; - if (irq_status & SSSR_ROR) { - dma_error_stop(drv_data, "dma_transfer: fifo overrun"); - return IRQ_HANDLED; - } - - /* Check for false positive timeout */ - if ((irq_status & SSSR_TINT) - && (DCSR(drv_data->tx_channel) & DCSR_RUN)) { - write_SSSR(SSSR_TINT, reg); - return IRQ_HANDLED; - } - - if (irq_status & SSSR_TINT || drv_data->rx == drv_data->rx_end) { - - /* Clear and disable timeout interrupt, do the rest in - * dma_transfer_complete */ - if (!pxa25x_ssp_comp(drv_data)) - write_SSTO(0, reg); - - /* finish this transfer, start the next */ - dma_transfer_complete(drv_data); - - return IRQ_HANDLED; - } - - /* Opps problem detected */ - return IRQ_NONE; -} - static void reset_sccr1(struct driver_data *drv_data) { void __iomem *reg = drv_data->ioaddr; @@ -681,7 +412,7 @@ reset_sccr1(drv_data); if (!pxa25x_ssp_comp(drv_data)) write_SSTO(0, reg); - flush(drv_data); + pxa2xx_spi_flush(drv_data); write_SSCR0(read_SSCR0(reg) & ~SSCR0_SSE, reg); dev_err(&drv_data->pdev->dev, "%s\n", msg); @@ -709,7 +440,7 @@ */ /* Move to next transfer */ - drv_data->cur_msg->state = next_transfer(drv_data); + drv_data->cur_msg->state = pxa2xx_spi_next_transfer(drv_data); /* Schedule transfer tasklet */ tasklet_schedule(&drv_data->pump_transfers); @@ -789,10 +520,20 @@ { struct driver_data *drv_data = dev_id; void __iomem *reg = drv_data->ioaddr; - u32 sccr1_reg = read_SSCR1(reg); + u32 sccr1_reg; u32 mask = drv_data->mask_sr; u32 status; + /* + * The IRQ might be shared with other peripherals so we must first + * check that are we RPM suspended or not. If we are we assume that + * the IRQ was not for us (we shouldn't be RPM suspended when the + * interrupt is enabled). + */ + if (pm_runtime_suspended(&drv_data->pdev->dev)) + return IRQ_NONE; + + sccr1_reg = read_SSCR1(reg); status = read_SSSR(reg); /* Ignore possible writes if we don't need to write */ @@ -820,106 +561,12 @@ return drv_data->transfer_handler(drv_data); } -static int set_dma_burst_and_threshold(struct chip_data *chip, - struct spi_device *spi, - u8 bits_per_word, u32 *burst_code, - u32 *threshold) -{ - struct pxa2xx_spi_chip *chip_info = - (struct pxa2xx_spi_chip *)spi->controller_data; - int bytes_per_word; - int burst_bytes; - int thresh_words; - int req_burst_size; - int retval = 0; - - /* Set the threshold (in registers) to equal the same amount of data - * as represented by burst size (in bytes). The computation below - * is (burst_size rounded up to nearest 8 byte, word or long word) - * divided by (bytes/register); the tx threshold is the inverse of - * the rx, so that there will always be enough data in the rx fifo - * to satisfy a burst, and there will always be enough space in the - * tx fifo to accept a burst (a tx burst will overwrite the fifo if - * there is not enough space), there must always remain enough empty - * space in the rx fifo for any data loaded to the tx fifo. - * Whenever burst_size (in bytes) equals bits/word, the fifo threshold - * will be 8, or half the fifo; - * The threshold can only be set to 2, 4 or 8, but not 16, because - * to burst 16 to the tx fifo, the fifo would have to be empty; - * however, the minimum fifo trigger level is 1, and the tx will - * request service when the fifo is at this level, with only 15 spaces. - */ - - /* find bytes/word */ - if (bits_per_word <= 8) - bytes_per_word = 1; - else if (bits_per_word <= 16) - bytes_per_word = 2; - else - bytes_per_word = 4; - - /* use struct pxa2xx_spi_chip->dma_burst_size if available */ - if (chip_info) - req_burst_size = chip_info->dma_burst_size; - else { - switch (chip->dma_burst_size) { - default: - /* if the default burst size is not set, - * do it now */ - chip->dma_burst_size = DCMD_BURST8; - case DCMD_BURST8: - req_burst_size = 8; - break; - case DCMD_BURST16: - req_burst_size = 16; - break; - case DCMD_BURST32: - req_burst_size = 32; - break; - } - } - if (req_burst_size <= 8) { - *burst_code = DCMD_BURST8; - burst_bytes = 8; - } else if (req_burst_size <= 16) { - if (bytes_per_word == 1) { - /* don't burst more than 1/2 the fifo */ - *burst_code = DCMD_BURST8; - burst_bytes = 8; - retval = 1; - } else { - *burst_code = DCMD_BURST16; - burst_bytes = 16; - } - } else { - if (bytes_per_word == 1) { - /* don't burst more than 1/2 the fifo */ - *burst_code = DCMD_BURST8; - burst_bytes = 8; - retval = 1; - } else if (bytes_per_word == 2) { - /* don't burst more than 1/2 the fifo */ - *burst_code = DCMD_BURST16; - burst_bytes = 16; - retval = 1; - } else { - *burst_code = DCMD_BURST32; - burst_bytes = 32; - } - } - - thresh_words = burst_bytes / bytes_per_word; - - /* thresh_words will be between 2 and 8 */ - *threshold = (SSCR1_RxTresh(thresh_words) & SSCR1_RFT) - | (SSCR1_TxTresh(16-thresh_words) & SSCR1_TFT); - - return retval; -} - -static unsigned int ssp_get_clk_div(struct ssp_device *ssp, int rate) +static unsigned int ssp_get_clk_div(struct driver_data *drv_data, int rate) { - unsigned long ssp_clk = clk_get_rate(ssp->clk); + unsigned long ssp_clk = drv_data->max_clk_rate; + const struct ssp_device *ssp = drv_data->ssp; + + rate = min_t(int, ssp_clk, rate); if (ssp->type == PXA25x_SSP || ssp->type == CE4100_SSP) return ((ssp_clk / (2 * rate) - 1) & 0xff) << 8; @@ -934,7 +581,6 @@ struct spi_transfer *transfer = NULL; struct spi_transfer *previous = NULL; struct chip_data *chip = NULL; - struct ssp_device *ssp = drv_data->ssp; void __iomem *reg = drv_data->ioaddr; u32 clk_div = 0; u8 bits = 0; @@ -976,8 +622,8 @@ cs_deassert(drv_data); } - /* Check for transfers that need multiple DMA segments */ - if (transfer->len > MAX_DMA_LEN && chip->enable_dma) { + /* Check if we can DMA this transfer */ + if (!pxa2xx_spi_dma_is_possible(transfer->len) && chip->enable_dma) { /* reject already-mapped transfers; PIO won't always work */ if (message->is_dma_mapped @@ -1000,21 +646,20 @@ } /* Setup the transfer state based on the type of transfer */ - if (flush(drv_data) == 0) { + if (pxa2xx_spi_flush(drv_data) == 0) { dev_err(&drv_data->pdev->dev, "pump_transfers: flush failed\n"); message->status = -EIO; giveback(drv_data); return; } drv_data->n_bytes = chip->n_bytes; - drv_data->dma_width = chip->dma_width; drv_data->tx = (void *)transfer->tx_buf; drv_data->tx_end = drv_data->tx + transfer->len; drv_data->rx = transfer->rx_buf; drv_data->rx_end = drv_data->rx + transfer->len; drv_data->rx_dma = transfer->rx_dma; drv_data->tx_dma = transfer->tx_dma; - drv_data->len = transfer->len & DCMD_LENGTH; + drv_data->len = transfer->len; drv_data->write = drv_data->tx ? chip->write : null_writer; drv_data->read = drv_data->rx ? chip->read : null_reader; @@ -1031,25 +676,22 @@ if (transfer->bits_per_word) bits = transfer->bits_per_word; - clk_div = ssp_get_clk_div(ssp, speed); + clk_div = ssp_get_clk_div(drv_data, speed); if (bits <= 8) { drv_data->n_bytes = 1; - drv_data->dma_width = DCMD_WIDTH1; drv_data->read = drv_data->read != null_reader ? u8_reader : null_reader; drv_data->write = drv_data->write != null_writer ? u8_writer : null_writer; } else if (bits <= 16) { drv_data->n_bytes = 2; - drv_data->dma_width = DCMD_WIDTH2; drv_data->read = drv_data->read != null_reader ? u16_reader : null_reader; drv_data->write = drv_data->write != null_writer ? u16_writer : null_writer; } else if (bits <= 32) { drv_data->n_bytes = 4; - drv_data->dma_width = DCMD_WIDTH4; drv_data->read = drv_data->read != null_reader ? u32_reader : null_reader; drv_data->write = drv_data->write != null_writer ? @@ -1058,7 +700,8 @@ /* if bits/word is changed in dma mode, then must check the * thresholds and burst also */ if (chip->enable_dma) { - if (set_dma_burst_and_threshold(chip, message->spi, + if (pxa2xx_spi_set_dma_burst_and_threshold(chip, + message->spi, bits, &dma_burst, &dma_thresh)) if (printk_ratelimit()) @@ -1077,70 +720,21 @@ message->state = RUNNING_STATE; - /* Try to map dma buffer and do a dma transfer if successful, but - * only if the length is non-zero and less than MAX_DMA_LEN. - * - * Zero-length non-descriptor DMA is illegal on PXA2xx; force use - * of PIO instead. Care is needed above because the transfer may - * have have been passed with buffers that are already dma mapped. - * A zero-length transfer in PIO mode will not try to write/read - * to/from the buffers - * - * REVISIT large transfers are exactly where we most want to be - * using DMA. If this happens much, split those transfers into - * multiple DMA segments rather than forcing PIO. - */ drv_data->dma_mapped = 0; - if (drv_data->len > 0 && drv_data->len <= MAX_DMA_LEN) - drv_data->dma_mapped = map_dma_buffers(drv_data); + if (pxa2xx_spi_dma_is_possible(drv_data->len)) + drv_data->dma_mapped = pxa2xx_spi_map_dma_buffers(drv_data); if (drv_data->dma_mapped) { /* Ensure we have the correct interrupt handler */ - drv_data->transfer_handler = dma_transfer; + drv_data->transfer_handler = pxa2xx_spi_dma_transfer; - /* Setup rx DMA Channel */ - DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL; - DSADR(drv_data->rx_channel) = drv_data->ssdr_physical; - DTADR(drv_data->rx_channel) = drv_data->rx_dma; - if (drv_data->rx == drv_data->null_dma_buf) - /* No target address increment */ - DCMD(drv_data->rx_channel) = DCMD_FLOWSRC - | drv_data->dma_width - | dma_burst - | drv_data->len; - else - DCMD(drv_data->rx_channel) = DCMD_INCTRGADDR - | DCMD_FLOWSRC - | drv_data->dma_width - | dma_burst - | drv_data->len; - - /* Setup tx DMA Channel */ - DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL; - DSADR(drv_data->tx_channel) = drv_data->tx_dma; - DTADR(drv_data->tx_channel) = drv_data->ssdr_physical; - if (drv_data->tx == drv_data->null_dma_buf) - /* No source address increment */ - DCMD(drv_data->tx_channel) = DCMD_FLOWTRG - | drv_data->dma_width - | dma_burst - | drv_data->len; - else - DCMD(drv_data->tx_channel) = DCMD_INCSRCADDR - | DCMD_FLOWTRG - | drv_data->dma_width - | dma_burst - | drv_data->len; - - /* Enable dma end irqs on SSP to detect end of transfer */ - if (drv_data->ssp_type == PXA25x_SSP) - DCMD(drv_data->tx_channel) |= DCMD_ENDIRQEN; + pxa2xx_spi_dma_prepare(drv_data, dma_burst); /* Clear status and start DMA engine */ cr1 = chip->cr1 | dma_thresh | drv_data->dma_cr1; write_SSSR(drv_data->clear_sr, reg); - DCSR(drv_data->rx_channel) |= DCSR_RUN; - DCSR(drv_data->tx_channel) |= DCSR_RUN; + + pxa2xx_spi_dma_start(drv_data); } else { /* Ensure we have the correct interrupt handler */ drv_data->transfer_handler = interrupt_transfer; @@ -1150,6 +744,13 @@ write_SSSR_CS(drv_data, drv_data->clear_sr); } + if (is_lpss_ssp(drv_data)) { + if ((read_SSIRF(reg) & 0xff) != chip->lpss_rx_threshold) + write_SSIRF(chip->lpss_rx_threshold, reg); + if ((read_SSITF(reg) & 0xffff) != chip->lpss_tx_threshold) + write_SSITF(chip->lpss_tx_threshold, reg); + } + /* see if we need to reload the config registers */ if ((read_SSCR0(reg) != cr0) || (read_SSCR1(reg) & SSCR1_CHANGE_MASK) != @@ -1176,31 +777,12 @@ write_SSCR1(cr1, reg); } -static void pump_messages(struct work_struct *work) +static int pxa2xx_spi_transfer_one_message(struct spi_master *master, + struct spi_message *msg) { - struct driver_data *drv_data = - container_of(work, struct driver_data, pump_messages); - unsigned long flags; - - /* Lock queue and check for queue work */ - spin_lock_irqsave(&drv_data->lock, flags); - if (list_empty(&drv_data->queue) || drv_data->run == QUEUE_STOPPED) { - drv_data->busy = 0; - spin_unlock_irqrestore(&drv_data->lock, flags); - return; - } - - /* Make sure we are not already running a message */ - if (drv_data->cur_msg) { - spin_unlock_irqrestore(&drv_data->lock, flags); - return; - } - - /* Extract head of queue */ - drv_data->cur_msg = list_entry(drv_data->queue.next, - struct spi_message, queue); - list_del_init(&drv_data->cur_msg->queue); + struct driver_data *drv_data = spi_master_get_devdata(master); + drv_data->cur_msg = msg; /* Initial message state*/ drv_data->cur_msg->state = START_STATE; drv_data->cur_transfer = list_entry(drv_data->cur_msg->transfers.next, @@ -1213,34 +795,27 @@ /* Mark as busy and launch transfers */ tasklet_schedule(&drv_data->pump_transfers); - - drv_data->busy = 1; - spin_unlock_irqrestore(&drv_data->lock, flags); + return 0; } -static int transfer(struct spi_device *spi, struct spi_message *msg) +static int pxa2xx_spi_prepare_transfer(struct spi_master *master) { - struct driver_data *drv_data = spi_master_get_devdata(spi->master); - unsigned long flags; + struct driver_data *drv_data = spi_master_get_devdata(master); - spin_lock_irqsave(&drv_data->lock, flags); - - if (drv_data->run == QUEUE_STOPPED) { - spin_unlock_irqrestore(&drv_data->lock, flags); - return -ESHUTDOWN; - } - - msg->actual_length = 0; - msg->status = -EINPROGRESS; - msg->state = START_STATE; - - list_add_tail(&msg->queue, &drv_data->queue); + pm_runtime_get_sync(&drv_data->pdev->dev); + return 0; +} - if (drv_data->run == QUEUE_RUNNING && !drv_data->busy) - queue_work(drv_data->workqueue, &drv_data->pump_messages); +static int pxa2xx_spi_unprepare_transfer(struct spi_master *master) +{ + struct driver_data *drv_data = spi_master_get_devdata(master); - spin_unlock_irqrestore(&drv_data->lock, flags); + /* Disable the SSP now */ + write_SSCR0(read_SSCR0(drv_data->ioaddr) & ~SSCR0_SSE, + drv_data->ioaddr); + pm_runtime_mark_last_busy(&drv_data->pdev->dev); + pm_runtime_put_autosuspend(&drv_data->pdev->dev); return 0; } @@ -1287,10 +862,18 @@ struct pxa2xx_spi_chip *chip_info = NULL; struct chip_data *chip; struct driver_data *drv_data = spi_master_get_devdata(spi->master); - struct ssp_device *ssp = drv_data->ssp; unsigned int clk_div; - uint tx_thres = TX_THRESH_DFLT; - uint rx_thres = RX_THRESH_DFLT; + uint tx_thres, tx_hi_thres, rx_thres; + + if (is_lpss_ssp(drv_data)) { + tx_thres = LPSS_TX_LOTHRESH_DFLT; + tx_hi_thres = LPSS_TX_HITHRESH_DFLT; + rx_thres = LPSS_RX_THRESH_DFLT; + } else { + tx_thres = TX_THRESH_DFLT; + tx_hi_thres = 0; + rx_thres = RX_THRESH_DFLT; + } if (!pxa25x_ssp_comp(drv_data) && (spi->bits_per_word < 4 || spi->bits_per_word > 32)) { @@ -1330,8 +913,6 @@ chip->gpio_cs = -1; chip->enable_dma = 0; chip->timeout = TIMOUT_DFLT; - chip->dma_burst_size = drv_data->master_info->enable_dma ? - DCMD_BURST8 : 0; } /* protocol drivers may change the chip settings, so... @@ -1345,23 +926,37 @@ chip->timeout = chip_info->timeout; if (chip_info->tx_threshold) tx_thres = chip_info->tx_threshold; + if (chip_info->tx_hi_threshold) + tx_hi_thres = chip_info->tx_hi_threshold; if (chip_info->rx_threshold) rx_thres = chip_info->rx_threshold; chip->enable_dma = drv_data->master_info->enable_dma; chip->dma_threshold = 0; if (chip_info->enable_loopback) chip->cr1 = SSCR1_LBM; + } else if (ACPI_HANDLE(&spi->dev)) { + /* + * Slave devices enumerated from ACPI namespace don't + * usually have chip_info but we still might want to use + * DMA with them. + */ + chip->enable_dma = drv_data->master_info->enable_dma; } chip->threshold = (SSCR1_RxTresh(rx_thres) & SSCR1_RFT) | (SSCR1_TxTresh(tx_thres) & SSCR1_TFT); + chip->lpss_rx_threshold = SSIRF_RxThresh(rx_thres); + chip->lpss_tx_threshold = SSITF_TxLoThresh(tx_thres) + | SSITF_TxHiThresh(tx_hi_thres); + /* set dma burst and threshold outside of chip_info path so that if * chip_info goes away after setting chip->enable_dma, the * burst and threshold can still respond to changes in bits_per_word */ if (chip->enable_dma) { /* set up legal burst and threshold for dma */ - if (set_dma_burst_and_threshold(chip, spi, spi->bits_per_word, + if (pxa2xx_spi_set_dma_burst_and_threshold(chip, spi, + spi->bits_per_word, &chip->dma_burst_size, &chip->dma_threshold)) { dev_warn(&spi->dev, "in setup: DMA burst size reduced " @@ -1369,7 +964,7 @@ } } - clk_div = ssp_get_clk_div(ssp, spi->max_speed_hz); + clk_div = ssp_get_clk_div(drv_data, spi->max_speed_hz); chip->speed_hz = spi->max_speed_hz; chip->cr0 = clk_div @@ -1382,32 +977,32 @@ chip->cr1 |= (((spi->mode & SPI_CPHA) != 0) ? SSCR1_SPH : 0) | (((spi->mode & SPI_CPOL) != 0) ? SSCR1_SPO : 0); + if (spi->mode & SPI_LOOP) + chip->cr1 |= SSCR1_LBM; + /* NOTE: PXA25x_SSP _could_ use external clocking ... */ if (!pxa25x_ssp_comp(drv_data)) dev_dbg(&spi->dev, "%ld Hz actual, %s\n", - clk_get_rate(ssp->clk) + drv_data->max_clk_rate / (1 + ((chip->cr0 & SSCR0_SCR(0xfff)) >> 8)), chip->enable_dma ? "DMA" : "PIO"); else dev_dbg(&spi->dev, "%ld Hz actual, %s\n", - clk_get_rate(ssp->clk) / 2 + drv_data->max_clk_rate / 2 / (1 + ((chip->cr0 & SSCR0_SCR(0x0ff)) >> 8)), chip->enable_dma ? "DMA" : "PIO"); if (spi->bits_per_word <= 8) { chip->n_bytes = 1; - chip->dma_width = DCMD_WIDTH1; chip->read = u8_reader; chip->write = u8_writer; } else if (spi->bits_per_word <= 16) { chip->n_bytes = 2; - chip->dma_width = DCMD_WIDTH2; chip->read = u16_reader; chip->write = u16_writer; } else if (spi->bits_per_word <= 32) { chip->cr0 |= SSCR0_EDSS; chip->n_bytes = 4; - chip->dma_width = DCMD_WIDTH4; chip->read = u32_reader; chip->write = u32_writer; } else { @@ -1438,93 +1033,98 @@ kfree(chip); } -static int init_queue(struct driver_data *drv_data) +#ifdef CONFIG_ACPI +static int pxa2xx_spi_acpi_add_dma(struct acpi_resource *res, void *data) { - INIT_LIST_HEAD(&drv_data->queue); - spin_lock_init(&drv_data->lock); + struct pxa2xx_spi_master *pdata = data; - drv_data->run = QUEUE_STOPPED; - drv_data->busy = 0; + if (res->type == ACPI_RESOURCE_TYPE_FIXED_DMA) { + const struct acpi_resource_fixed_dma *dma; - tasklet_init(&drv_data->pump_transfers, - pump_transfers, (unsigned long)drv_data); - - INIT_WORK(&drv_data->pump_messages, pump_messages); - drv_data->workqueue = create_singlethread_workqueue( - dev_name(drv_data->master->dev.parent)); - if (drv_data->workqueue == NULL) - return -EBUSY; + dma = &res->data.fixed_dma; + if (pdata->tx_slave_id < 0) { + pdata->tx_slave_id = dma->request_lines; + pdata->tx_chan_id = dma->channels; + } else if (pdata->rx_slave_id < 0) { + pdata->rx_slave_id = dma->request_lines; + pdata->rx_chan_id = dma->channels; + } + } - return 0; + /* Tell the ACPI core to skip this resource */ + return 1; } -static int start_queue(struct driver_data *drv_data) +static struct pxa2xx_spi_master * +pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev) { - unsigned long flags; + struct pxa2xx_spi_master *pdata; + struct list_head resource_list; + struct acpi_device *adev; + struct ssp_device *ssp; + struct resource *res; + int devid; - spin_lock_irqsave(&drv_data->lock, flags); + if (!ACPI_HANDLE(&pdev->dev) || + acpi_bus_get_device(ACPI_HANDLE(&pdev->dev), &adev)) + return NULL; - if (drv_data->run == QUEUE_RUNNING || drv_data->busy) { - spin_unlock_irqrestore(&drv_data->lock, flags); - return -EBUSY; + pdata = devm_kzalloc(&pdev->dev, sizeof(*ssp), GFP_KERNEL); + if (!pdata) { + dev_err(&pdev->dev, + "failed to allocate memory for platform data\n"); + return NULL; } - drv_data->run = QUEUE_RUNNING; - drv_data->cur_msg = NULL; - drv_data->cur_transfer = NULL; - drv_data->cur_chip = NULL; - spin_unlock_irqrestore(&drv_data->lock, flags); + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) + return NULL; - queue_work(drv_data->workqueue, &drv_data->pump_messages); + ssp = &pdata->ssp; - return 0; -} + ssp->phys_base = res->start; + ssp->mmio_base = devm_request_and_ioremap(&pdev->dev, res); + if (!ssp->mmio_base) { + dev_err(&pdev->dev, "failed to ioremap mmio_base\n"); + return NULL; + } -static int stop_queue(struct driver_data *drv_data) -{ - unsigned long flags; - unsigned limit = 500; - int status = 0; + ssp->clk = devm_clk_get(&pdev->dev, NULL); + ssp->irq = platform_get_irq(pdev, 0); + ssp->type = LPSS_SSP; + ssp->pdev = pdev; - spin_lock_irqsave(&drv_data->lock, flags); + ssp->port_id = -1; + if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0, &devid)) + ssp->port_id = devid; - /* This is a bit lame, but is optimized for the common execution path. - * A wait_queue on the drv_data->busy could be used, but then the common - * execution path (pump_messages) would be required to call wake_up or - * friends on every SPI message. Do this instead */ - drv_data->run = QUEUE_STOPPED; - while ((!list_empty(&drv_data->queue) || drv_data->busy) && limit--) { - spin_unlock_irqrestore(&drv_data->lock, flags); - msleep(10); - spin_lock_irqsave(&drv_data->lock, flags); - } + pdata->num_chipselect = 1; + pdata->rx_slave_id = -1; + pdata->tx_slave_id = -1; - if (!list_empty(&drv_data->queue) || drv_data->busy) - status = -EBUSY; + INIT_LIST_HEAD(&resource_list); + acpi_dev_get_resources(adev, &resource_list, pxa2xx_spi_acpi_add_dma, + pdata); + acpi_dev_free_resource_list(&resource_list); - spin_unlock_irqrestore(&drv_data->lock, flags); + pdata->enable_dma = pdata->rx_slave_id >= 0 && pdata->tx_slave_id >= 0; - return status; + return pdata; } -static int destroy_queue(struct driver_data *drv_data) +static struct acpi_device_id pxa2xx_spi_acpi_match[] = { + { "INT33C0", 0 }, + { "INT33C1", 0 }, + { }, +}; +MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match); +#else +static inline struct pxa2xx_spi_master * +pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev) { - int status; - - status = stop_queue(drv_data); - /* we are unloading the module or failing to load (only two calls - * to this routine), and neither call can handle a return value. - * However, destroy_workqueue calls flush_workqueue, and that will - * block until all work is done. If the reason that stop_queue - * timed out is that the work will never finish, then it does no - * good to call destroy_workqueue, so return anyway. */ - if (status != 0) - return status; - - destroy_workqueue(drv_data->workqueue); - - return 0; + return NULL; } +#endif static int pxa2xx_spi_probe(struct platform_device *pdev) { @@ -1535,11 +1135,21 @@ struct ssp_device *ssp; int status; - platform_info = dev->platform_data; + platform_info = dev_get_platdata(dev); + if (!platform_info) { + platform_info = pxa2xx_spi_acpi_get_pdata(pdev); + if (!platform_info) { + dev_err(&pdev->dev, "missing platform data\n"); + return -ENODEV; + } + } ssp = pxa_ssp_request(pdev->id, pdev->name); - if (ssp == NULL) { - dev_err(&pdev->dev, "failed to request SSP%d\n", pdev->id); + if (!ssp) + ssp = &platform_info->ssp; + + if (!ssp->mmio_base) { + dev_err(&pdev->dev, "failed to get ssp\n"); return -ENODEV; } @@ -1558,19 +1168,21 @@ master->dev.parent = &pdev->dev; master->dev.of_node = pdev->dev.of_node; + ACPI_HANDLE_SET(&master->dev, ACPI_HANDLE(&pdev->dev)); /* the spi->mode bits understood by this driver: */ - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; + master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LOOP; - master->bus_num = pdev->id; + master->bus_num = ssp->port_id; master->num_chipselect = platform_info->num_chipselect; master->dma_alignment = DMA_ALIGNMENT; master->cleanup = cleanup; master->setup = setup; - master->transfer = transfer; + master->transfer_one_message = pxa2xx_spi_transfer_one_message; + master->prepare_transfer_hardware = pxa2xx_spi_prepare_transfer; + master->unprepare_transfer_hardware = pxa2xx_spi_unprepare_transfer; drv_data->ssp_type = ssp->type; - drv_data->null_dma_buf = (u32 *)ALIGN((u32)(drv_data + - sizeof(struct driver_data)), 8); + drv_data->null_dma_buf = (u32 *)PTR_ALIGN(&drv_data[1], DMA_ALIGNMENT); drv_data->ioaddr = ssp->mmio_base; drv_data->ssdr_physical = ssp->phys_base + SSDR; @@ -1581,7 +1193,7 @@ drv_data->mask_sr = SSSR_RFS | SSSR_TFS | SSSR_ROR; } else { drv_data->int_cr1 = SSCR1_TIE | SSCR1_RIE | SSCR1_TINTE; - drv_data->dma_cr1 = SSCR1_TSRE | SSCR1_RSRE | SSCR1_TINTE; + drv_data->dma_cr1 = DEFAULT_DMA_CR1; drv_data->clear_sr = SSSR_ROR | SSSR_TINT; drv_data->mask_sr = SSSR_TINT | SSSR_RFS | SSSR_TFS | SSSR_ROR; } @@ -1597,35 +1209,17 @@ drv_data->tx_channel = -1; drv_data->rx_channel = -1; if (platform_info->enable_dma) { - - /* Get two DMA channels (rx and tx) */ - drv_data->rx_channel = pxa_request_dma("pxa2xx_spi_ssp_rx", - DMA_PRIO_HIGH, - dma_handler, - drv_data); - if (drv_data->rx_channel < 0) { - dev_err(dev, "problem (%d) requesting rx channel\n", - drv_data->rx_channel); - status = -ENODEV; - goto out_error_irq_alloc; - } - drv_data->tx_channel = pxa_request_dma("pxa2xx_spi_ssp_tx", - DMA_PRIO_MEDIUM, - dma_handler, - drv_data); - if (drv_data->tx_channel < 0) { - dev_err(dev, "problem (%d) requesting tx channel\n", - drv_data->tx_channel); - status = -ENODEV; - goto out_error_dma_alloc; + status = pxa2xx_spi_dma_setup(drv_data); + if (status) { + dev_warn(dev, "failed to setup DMA, using PIO\n"); + platform_info->enable_dma = false; } - - DRCMR(ssp->drcmr_rx) = DRCMR_MAPVLD | drv_data->rx_channel; - DRCMR(ssp->drcmr_tx) = DRCMR_MAPVLD | drv_data->tx_channel; } /* Enable SOC clock */ - clk_enable(ssp->clk); + clk_prepare_enable(ssp->clk); + + drv_data->max_clk_rate = clk_get_rate(ssp->clk); /* Load default SSP configuration */ write_SSCR0(0, drv_data->ioaddr); @@ -1640,41 +1234,29 @@ write_SSTO(0, drv_data->ioaddr); write_SSPSP(0, drv_data->ioaddr); - /* Initial and start queue */ - status = init_queue(drv_data); - if (status != 0) { - dev_err(&pdev->dev, "problem initializing queue\n"); - goto out_error_clock_enabled; - } - status = start_queue(drv_data); - if (status != 0) { - dev_err(&pdev->dev, "problem starting queue\n"); - goto out_error_clock_enabled; - } + lpss_ssp_setup(drv_data); + + tasklet_init(&drv_data->pump_transfers, pump_transfers, + (unsigned long)drv_data); /* Register with the SPI framework */ platform_set_drvdata(pdev, drv_data); status = spi_register_master(master); if (status != 0) { dev_err(&pdev->dev, "problem registering spi master\n"); - goto out_error_queue_alloc; + goto out_error_clock_enabled; } - return status; + pm_runtime_set_autosuspend_delay(&pdev->dev, 50); + pm_runtime_use_autosuspend(&pdev->dev); + pm_runtime_set_active(&pdev->dev); + pm_runtime_enable(&pdev->dev); -out_error_queue_alloc: - destroy_queue(drv_data); + return status; out_error_clock_enabled: - clk_disable(ssp->clk); - -out_error_dma_alloc: - if (drv_data->tx_channel != -1) - pxa_free_dma(drv_data->tx_channel); - if (drv_data->rx_channel != -1) - pxa_free_dma(drv_data->rx_channel); - -out_error_irq_alloc: + clk_disable_unprepare(ssp->clk); + pxa2xx_spi_dma_release(drv_data); free_irq(ssp->irq, drv_data); out_error_master_alloc: @@ -1687,37 +1269,23 @@ { struct driver_data *drv_data = platform_get_drvdata(pdev); struct ssp_device *ssp; - int status = 0; if (!drv_data) return 0; ssp = drv_data->ssp; - /* Remove the queue */ - status = destroy_queue(drv_data); - if (status != 0) - /* the kernel does not check the return status of this - * this routine (mod->exit, within the kernel). Therefore - * nothing is gained by returning from here, the module is - * going away regardless, and we should not leave any more - * resources allocated than necessary. We cannot free the - * message memory in drv_data->queue, but we can release the - * resources below. I think the kernel should honor -EBUSY - * returns but... */ - dev_err(&pdev->dev, "pxa2xx_spi_remove: workqueue will not " - "complete, message memory not freed\n"); + pm_runtime_get_sync(&pdev->dev); /* Disable the SSP at the peripheral and SOC level */ write_SSCR0(0, drv_data->ioaddr); - clk_disable(ssp->clk); + clk_disable_unprepare(ssp->clk); /* Release DMA */ - if (drv_data->master_info->enable_dma) { - DRCMR(ssp->drcmr_rx) = 0; - DRCMR(ssp->drcmr_tx) = 0; - pxa_free_dma(drv_data->tx_channel); - pxa_free_dma(drv_data->rx_channel); - } + if (drv_data->master_info->enable_dma) + pxa2xx_spi_dma_release(drv_data); + + pm_runtime_put_noidle(&pdev->dev); + pm_runtime_disable(&pdev->dev); /* Release IRQ */ free_irq(ssp->irq, drv_data); @@ -1749,11 +1317,11 @@ struct ssp_device *ssp = drv_data->ssp; int status = 0; - status = stop_queue(drv_data); + status = spi_master_suspend(drv_data->master); if (status != 0) return status; write_SSCR0(0, drv_data->ioaddr); - clk_disable(ssp->clk); + clk_disable_unprepare(ssp->clk); return 0; } @@ -1764,18 +1332,13 @@ struct ssp_device *ssp = drv_data->ssp; int status = 0; - if (drv_data->rx_channel != -1) - DRCMR(drv_data->ssp->drcmr_rx) = - DRCMR_MAPVLD | drv_data->rx_channel; - if (drv_data->tx_channel != -1) - DRCMR(drv_data->ssp->drcmr_tx) = - DRCMR_MAPVLD | drv_data->tx_channel; + pxa2xx_spi_dma_resume(drv_data); /* Enable the SSP clock */ - clk_enable(ssp->clk); + clk_prepare_enable(ssp->clk); /* Start the queue running */ - status = start_queue(drv_data); + status = spi_master_resume(drv_data->master); if (status != 0) { dev_err(dev, "problem starting queue (%d)\n", status); return status; @@ -1783,20 +1346,38 @@ return 0; } +#endif + +#ifdef CONFIG_PM_RUNTIME +static int pxa2xx_spi_runtime_suspend(struct device *dev) +{ + struct driver_data *drv_data = dev_get_drvdata(dev); + + clk_disable_unprepare(drv_data->ssp->clk); + return 0; +} + +static int pxa2xx_spi_runtime_resume(struct device *dev) +{ + struct driver_data *drv_data = dev_get_drvdata(dev); + + clk_prepare_enable(drv_data->ssp->clk); + return 0; +} +#endif static const struct dev_pm_ops pxa2xx_spi_pm_ops = { - .suspend = pxa2xx_spi_suspend, - .resume = pxa2xx_spi_resume, + SET_SYSTEM_SLEEP_PM_OPS(pxa2xx_spi_suspend, pxa2xx_spi_resume) + SET_RUNTIME_PM_OPS(pxa2xx_spi_runtime_suspend, + pxa2xx_spi_runtime_resume, NULL) }; -#endif static struct platform_driver driver = { .driver = { .name = "pxa2xx-spi", .owner = THIS_MODULE, -#ifdef CONFIG_PM .pm = &pxa2xx_spi_pm_ops, -#endif + .acpi_match_table = ACPI_PTR(pxa2xx_spi_acpi_match), }, .probe = pxa2xx_spi_probe, .remove = pxa2xx_spi_remove, --- linux-ppc-3.8.0.orig/drivers/spi/spi-pxa2xx-pxadma.c +++ linux-ppc-3.8.0/drivers/spi/spi-pxa2xx-pxadma.c @@ -0,0 +1,490 @@ +/* + * PXA2xx SPI private DMA support. + * + * Copyright (C) 2005 Stephen Street / StreetFire Sound Labs + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "spi-pxa2xx.h" + +#define DMA_INT_MASK (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR) +#define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK) + +bool pxa2xx_spi_dma_is_possible(size_t len) +{ + /* Try to map dma buffer and do a dma transfer if successful, but + * only if the length is non-zero and less than MAX_DMA_LEN. + * + * Zero-length non-descriptor DMA is illegal on PXA2xx; force use + * of PIO instead. Care is needed above because the transfer may + * have have been passed with buffers that are already dma mapped. + * A zero-length transfer in PIO mode will not try to write/read + * to/from the buffers + * + * REVISIT large transfers are exactly where we most want to be + * using DMA. If this happens much, split those transfers into + * multiple DMA segments rather than forcing PIO. + */ + return len > 0 && len <= MAX_DMA_LEN; +} + +int pxa2xx_spi_map_dma_buffers(struct driver_data *drv_data) +{ + struct spi_message *msg = drv_data->cur_msg; + struct device *dev = &msg->spi->dev; + + if (!drv_data->cur_chip->enable_dma) + return 0; + + if (msg->is_dma_mapped) + return drv_data->rx_dma && drv_data->tx_dma; + + if (!IS_DMA_ALIGNED(drv_data->rx) || !IS_DMA_ALIGNED(drv_data->tx)) + return 0; + + /* Modify setup if rx buffer is null */ + if (drv_data->rx == NULL) { + *drv_data->null_dma_buf = 0; + drv_data->rx = drv_data->null_dma_buf; + drv_data->rx_map_len = 4; + } else + drv_data->rx_map_len = drv_data->len; + + + /* Modify setup if tx buffer is null */ + if (drv_data->tx == NULL) { + *drv_data->null_dma_buf = 0; + drv_data->tx = drv_data->null_dma_buf; + drv_data->tx_map_len = 4; + } else + drv_data->tx_map_len = drv_data->len; + + /* Stream map the tx buffer. Always do DMA_TO_DEVICE first + * so we flush the cache *before* invalidating it, in case + * the tx and rx buffers overlap. + */ + drv_data->tx_dma = dma_map_single(dev, drv_data->tx, + drv_data->tx_map_len, DMA_TO_DEVICE); + if (dma_mapping_error(dev, drv_data->tx_dma)) + return 0; + + /* Stream map the rx buffer */ + drv_data->rx_dma = dma_map_single(dev, drv_data->rx, + drv_data->rx_map_len, DMA_FROM_DEVICE); + if (dma_mapping_error(dev, drv_data->rx_dma)) { + dma_unmap_single(dev, drv_data->tx_dma, + drv_data->tx_map_len, DMA_TO_DEVICE); + return 0; + } + + return 1; +} + +static void pxa2xx_spi_unmap_dma_buffers(struct driver_data *drv_data) +{ + struct device *dev; + + if (!drv_data->dma_mapped) + return; + + if (!drv_data->cur_msg->is_dma_mapped) { + dev = &drv_data->cur_msg->spi->dev; + dma_unmap_single(dev, drv_data->rx_dma, + drv_data->rx_map_len, DMA_FROM_DEVICE); + dma_unmap_single(dev, drv_data->tx_dma, + drv_data->tx_map_len, DMA_TO_DEVICE); + } + + drv_data->dma_mapped = 0; +} + +static int wait_ssp_rx_stall(void const __iomem *ioaddr) +{ + unsigned long limit = loops_per_jiffy << 1; + + while ((read_SSSR(ioaddr) & SSSR_BSY) && --limit) + cpu_relax(); + + return limit; +} + +static int wait_dma_channel_stop(int channel) +{ + unsigned long limit = loops_per_jiffy << 1; + + while (!(DCSR(channel) & DCSR_STOPSTATE) && --limit) + cpu_relax(); + + return limit; +} + +static void pxa2xx_spi_dma_error_stop(struct driver_data *drv_data, + const char *msg) +{ + void __iomem *reg = drv_data->ioaddr; + + /* Stop and reset */ + DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL; + DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL; + write_SSSR_CS(drv_data, drv_data->clear_sr); + write_SSCR1(read_SSCR1(reg) & ~drv_data->dma_cr1, reg); + if (!pxa25x_ssp_comp(drv_data)) + write_SSTO(0, reg); + pxa2xx_spi_flush(drv_data); + write_SSCR0(read_SSCR0(reg) & ~SSCR0_SSE, reg); + + pxa2xx_spi_unmap_dma_buffers(drv_data); + + dev_err(&drv_data->pdev->dev, "%s\n", msg); + + drv_data->cur_msg->state = ERROR_STATE; + tasklet_schedule(&drv_data->pump_transfers); +} + +static void pxa2xx_spi_dma_transfer_complete(struct driver_data *drv_data) +{ + void __iomem *reg = drv_data->ioaddr; + struct spi_message *msg = drv_data->cur_msg; + + /* Clear and disable interrupts on SSP and DMA channels*/ + write_SSCR1(read_SSCR1(reg) & ~drv_data->dma_cr1, reg); + write_SSSR_CS(drv_data, drv_data->clear_sr); + DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL; + DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL; + + if (wait_dma_channel_stop(drv_data->rx_channel) == 0) + dev_err(&drv_data->pdev->dev, + "dma_handler: dma rx channel stop failed\n"); + + if (wait_ssp_rx_stall(drv_data->ioaddr) == 0) + dev_err(&drv_data->pdev->dev, + "dma_transfer: ssp rx stall failed\n"); + + pxa2xx_spi_unmap_dma_buffers(drv_data); + + /* update the buffer pointer for the amount completed in dma */ + drv_data->rx += drv_data->len - + (DCMD(drv_data->rx_channel) & DCMD_LENGTH); + + /* read trailing data from fifo, it does not matter how many + * bytes are in the fifo just read until buffer is full + * or fifo is empty, which ever occurs first */ + drv_data->read(drv_data); + + /* return count of what was actually read */ + msg->actual_length += drv_data->len - + (drv_data->rx_end - drv_data->rx); + + /* Transfer delays and chip select release are + * handled in pump_transfers or giveback + */ + + /* Move to next transfer */ + msg->state = pxa2xx_spi_next_transfer(drv_data); + + /* Schedule transfer tasklet */ + tasklet_schedule(&drv_data->pump_transfers); +} + +void pxa2xx_spi_dma_handler(int channel, void *data) +{ + struct driver_data *drv_data = data; + u32 irq_status = DCSR(channel) & DMA_INT_MASK; + + if (irq_status & DCSR_BUSERR) { + + if (channel == drv_data->tx_channel) + pxa2xx_spi_dma_error_stop(drv_data, + "dma_handler: bad bus address on tx channel"); + else + pxa2xx_spi_dma_error_stop(drv_data, + "dma_handler: bad bus address on rx channel"); + return; + } + + /* PXA255x_SSP has no timeout interrupt, wait for tailing bytes */ + if ((channel == drv_data->tx_channel) + && (irq_status & DCSR_ENDINTR) + && (drv_data->ssp_type == PXA25x_SSP)) { + + /* Wait for rx to stall */ + if (wait_ssp_rx_stall(drv_data->ioaddr) == 0) + dev_err(&drv_data->pdev->dev, + "dma_handler: ssp rx stall failed\n"); + + /* finish this transfer, start the next */ + pxa2xx_spi_dma_transfer_complete(drv_data); + } +} + +irqreturn_t pxa2xx_spi_dma_transfer(struct driver_data *drv_data) +{ + u32 irq_status; + void __iomem *reg = drv_data->ioaddr; + + irq_status = read_SSSR(reg) & drv_data->mask_sr; + if (irq_status & SSSR_ROR) { + pxa2xx_spi_dma_error_stop(drv_data, + "dma_transfer: fifo overrun"); + return IRQ_HANDLED; + } + + /* Check for false positive timeout */ + if ((irq_status & SSSR_TINT) + && (DCSR(drv_data->tx_channel) & DCSR_RUN)) { + write_SSSR(SSSR_TINT, reg); + return IRQ_HANDLED; + } + + if (irq_status & SSSR_TINT || drv_data->rx == drv_data->rx_end) { + + /* Clear and disable timeout interrupt, do the rest in + * dma_transfer_complete */ + if (!pxa25x_ssp_comp(drv_data)) + write_SSTO(0, reg); + + /* finish this transfer, start the next */ + pxa2xx_spi_dma_transfer_complete(drv_data); + + return IRQ_HANDLED; + } + + /* Opps problem detected */ + return IRQ_NONE; +} + +int pxa2xx_spi_dma_prepare(struct driver_data *drv_data, u32 dma_burst) +{ + u32 dma_width; + + switch (drv_data->n_bytes) { + case 1: + dma_width = DCMD_WIDTH1; + break; + case 2: + dma_width = DCMD_WIDTH2; + break; + default: + dma_width = DCMD_WIDTH4; + break; + } + + /* Setup rx DMA Channel */ + DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL; + DSADR(drv_data->rx_channel) = drv_data->ssdr_physical; + DTADR(drv_data->rx_channel) = drv_data->rx_dma; + if (drv_data->rx == drv_data->null_dma_buf) + /* No target address increment */ + DCMD(drv_data->rx_channel) = DCMD_FLOWSRC + | dma_width + | dma_burst + | drv_data->len; + else + DCMD(drv_data->rx_channel) = DCMD_INCTRGADDR + | DCMD_FLOWSRC + | dma_width + | dma_burst + | drv_data->len; + + /* Setup tx DMA Channel */ + DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL; + DSADR(drv_data->tx_channel) = drv_data->tx_dma; + DTADR(drv_data->tx_channel) = drv_data->ssdr_physical; + if (drv_data->tx == drv_data->null_dma_buf) + /* No source address increment */ + DCMD(drv_data->tx_channel) = DCMD_FLOWTRG + | dma_width + | dma_burst + | drv_data->len; + else + DCMD(drv_data->tx_channel) = DCMD_INCSRCADDR + | DCMD_FLOWTRG + | dma_width + | dma_burst + | drv_data->len; + + /* Enable dma end irqs on SSP to detect end of transfer */ + if (drv_data->ssp_type == PXA25x_SSP) + DCMD(drv_data->tx_channel) |= DCMD_ENDIRQEN; + + return 0; +} + +void pxa2xx_spi_dma_start(struct driver_data *drv_data) +{ + DCSR(drv_data->rx_channel) |= DCSR_RUN; + DCSR(drv_data->tx_channel) |= DCSR_RUN; +} + +int pxa2xx_spi_dma_setup(struct driver_data *drv_data) +{ + struct device *dev = &drv_data->pdev->dev; + struct ssp_device *ssp = drv_data->ssp; + + /* Get two DMA channels (rx and tx) */ + drv_data->rx_channel = pxa_request_dma("pxa2xx_spi_ssp_rx", + DMA_PRIO_HIGH, + pxa2xx_spi_dma_handler, + drv_data); + if (drv_data->rx_channel < 0) { + dev_err(dev, "problem (%d) requesting rx channel\n", + drv_data->rx_channel); + return -ENODEV; + } + drv_data->tx_channel = pxa_request_dma("pxa2xx_spi_ssp_tx", + DMA_PRIO_MEDIUM, + pxa2xx_spi_dma_handler, + drv_data); + if (drv_data->tx_channel < 0) { + dev_err(dev, "problem (%d) requesting tx channel\n", + drv_data->tx_channel); + pxa_free_dma(drv_data->rx_channel); + return -ENODEV; + } + + DRCMR(ssp->drcmr_rx) = DRCMR_MAPVLD | drv_data->rx_channel; + DRCMR(ssp->drcmr_tx) = DRCMR_MAPVLD | drv_data->tx_channel; + + return 0; +} + +void pxa2xx_spi_dma_release(struct driver_data *drv_data) +{ + struct ssp_device *ssp = drv_data->ssp; + + DRCMR(ssp->drcmr_rx) = 0; + DRCMR(ssp->drcmr_tx) = 0; + + if (drv_data->tx_channel != 0) + pxa_free_dma(drv_data->tx_channel); + if (drv_data->rx_channel != 0) + pxa_free_dma(drv_data->rx_channel); +} + +void pxa2xx_spi_dma_resume(struct driver_data *drv_data) +{ + if (drv_data->rx_channel != -1) + DRCMR(drv_data->ssp->drcmr_rx) = + DRCMR_MAPVLD | drv_data->rx_channel; + if (drv_data->tx_channel != -1) + DRCMR(drv_data->ssp->drcmr_tx) = + DRCMR_MAPVLD | drv_data->tx_channel; +} + +int pxa2xx_spi_set_dma_burst_and_threshold(struct chip_data *chip, + struct spi_device *spi, + u8 bits_per_word, u32 *burst_code, + u32 *threshold) +{ + struct pxa2xx_spi_chip *chip_info = + (struct pxa2xx_spi_chip *)spi->controller_data; + int bytes_per_word; + int burst_bytes; + int thresh_words; + int req_burst_size; + int retval = 0; + + /* Set the threshold (in registers) to equal the same amount of data + * as represented by burst size (in bytes). The computation below + * is (burst_size rounded up to nearest 8 byte, word or long word) + * divided by (bytes/register); the tx threshold is the inverse of + * the rx, so that there will always be enough data in the rx fifo + * to satisfy a burst, and there will always be enough space in the + * tx fifo to accept a burst (a tx burst will overwrite the fifo if + * there is not enough space), there must always remain enough empty + * space in the rx fifo for any data loaded to the tx fifo. + * Whenever burst_size (in bytes) equals bits/word, the fifo threshold + * will be 8, or half the fifo; + * The threshold can only be set to 2, 4 or 8, but not 16, because + * to burst 16 to the tx fifo, the fifo would have to be empty; + * however, the minimum fifo trigger level is 1, and the tx will + * request service when the fifo is at this level, with only 15 spaces. + */ + + /* find bytes/word */ + if (bits_per_word <= 8) + bytes_per_word = 1; + else if (bits_per_word <= 16) + bytes_per_word = 2; + else + bytes_per_word = 4; + + /* use struct pxa2xx_spi_chip->dma_burst_size if available */ + if (chip_info) + req_burst_size = chip_info->dma_burst_size; + else { + switch (chip->dma_burst_size) { + default: + /* if the default burst size is not set, + * do it now */ + chip->dma_burst_size = DCMD_BURST8; + case DCMD_BURST8: + req_burst_size = 8; + break; + case DCMD_BURST16: + req_burst_size = 16; + break; + case DCMD_BURST32: + req_burst_size = 32; + break; + } + } + if (req_burst_size <= 8) { + *burst_code = DCMD_BURST8; + burst_bytes = 8; + } else if (req_burst_size <= 16) { + if (bytes_per_word == 1) { + /* don't burst more than 1/2 the fifo */ + *burst_code = DCMD_BURST8; + burst_bytes = 8; + retval = 1; + } else { + *burst_code = DCMD_BURST16; + burst_bytes = 16; + } + } else { + if (bytes_per_word == 1) { + /* don't burst more than 1/2 the fifo */ + *burst_code = DCMD_BURST8; + burst_bytes = 8; + retval = 1; + } else if (bytes_per_word == 2) { + /* don't burst more than 1/2 the fifo */ + *burst_code = DCMD_BURST16; + burst_bytes = 16; + retval = 1; + } else { + *burst_code = DCMD_BURST32; + burst_bytes = 32; + } + } + + thresh_words = burst_bytes / bytes_per_word; + + /* thresh_words will be between 2 and 8 */ + *threshold = (SSCR1_RxTresh(thresh_words) & SSCR1_RFT) + | (SSCR1_TxTresh(16-thresh_words) & SSCR1_TFT); + + return retval; +} --- linux-ppc-3.8.0.orig/drivers/spi/spi-pxa2xx-pci.c +++ linux-ppc-3.8.0/drivers/spi/spi-pxa2xx-pci.c @@ -8,147 +8,58 @@ #include #include -struct ce4100_info { - struct ssp_device ssp; - struct platform_device *spi_pdev; -}; - -static DEFINE_MUTEX(ssp_lock); -static LIST_HEAD(ssp_list); - -struct ssp_device *pxa_ssp_request(int port, const char *label) -{ - struct ssp_device *ssp = NULL; - - mutex_lock(&ssp_lock); - - list_for_each_entry(ssp, &ssp_list, node) { - if (ssp->port_id == port && ssp->use_count == 0) { - ssp->use_count++; - ssp->label = label; - break; - } - } - - mutex_unlock(&ssp_lock); - - if (&ssp->node == &ssp_list) - return NULL; - - return ssp; -} -EXPORT_SYMBOL_GPL(pxa_ssp_request); - -void pxa_ssp_free(struct ssp_device *ssp) -{ - mutex_lock(&ssp_lock); - if (ssp->use_count) { - ssp->use_count--; - ssp->label = NULL; - } else - dev_err(&ssp->pdev->dev, "device already free\n"); - mutex_unlock(&ssp_lock); -} -EXPORT_SYMBOL_GPL(pxa_ssp_free); - static int ce4100_spi_probe(struct pci_dev *dev, const struct pci_device_id *ent) { + struct platform_device_info pi; int ret; - resource_size_t phys_beg; - resource_size_t phys_len; - struct ce4100_info *spi_info; struct platform_device *pdev; struct pxa2xx_spi_master spi_pdata; struct ssp_device *ssp; - ret = pci_enable_device(dev); + ret = pcim_enable_device(dev); if (ret) return ret; - phys_beg = pci_resource_start(dev, 0); - phys_len = pci_resource_len(dev, 0); - - if (!request_mem_region(phys_beg, phys_len, - "CE4100 SPI")) { - dev_err(&dev->dev, "Can't request register space.\n"); - ret = -EBUSY; + ret = pcim_iomap_regions(dev, 1 << 0, "PXA2xx SPI"); + if (!ret) return ret; - } - pdev = platform_device_alloc("pxa2xx-spi", dev->devfn); - spi_info = kzalloc(sizeof(*spi_info), GFP_KERNEL); - if (!pdev || !spi_info ) { - ret = -ENOMEM; - goto err_nomem; - } memset(&spi_pdata, 0, sizeof(spi_pdata)); spi_pdata.num_chipselect = dev->devfn; - ret = platform_device_add_data(pdev, &spi_pdata, sizeof(spi_pdata)); - if (ret) - goto err_nomem; - - pdev->dev.parent = &dev->dev; - pdev->dev.of_node = dev->dev.of_node; - ssp = &spi_info->ssp; + ssp = &spi_pdata.ssp; ssp->phys_base = pci_resource_start(dev, 0); - ssp->mmio_base = ioremap(phys_beg, phys_len); + ssp->mmio_base = pcim_iomap_table(dev)[0]; if (!ssp->mmio_base) { - dev_err(&pdev->dev, "failed to ioremap() registers\n"); - ret = -EIO; - goto err_nomem; + dev_err(&dev->dev, "failed to ioremap() registers\n"); + return -EIO; } ssp->irq = dev->irq; - ssp->port_id = pdev->id; + ssp->port_id = dev->devfn; ssp->type = PXA25x_SSP; - mutex_lock(&ssp_lock); - list_add(&ssp->node, &ssp_list); - mutex_unlock(&ssp_lock); - - pci_set_drvdata(dev, spi_info); + memset(&pi, 0, sizeof(pi)); + pi.parent = &dev->dev; + pi.name = "pxa2xx-spi"; + pi.id = ssp->port_id; + pi.data = &spi_pdata; + pi.size_data = sizeof(spi_pdata); + + pdev = platform_device_register_full(&pi); + if (!pdev) + return -ENOMEM; - ret = platform_device_add(pdev); - if (ret) - goto err_dev_add; + pci_set_drvdata(dev, pdev); - return ret; - -err_dev_add: - pci_set_drvdata(dev, NULL); - mutex_lock(&ssp_lock); - list_del(&ssp->node); - mutex_unlock(&ssp_lock); - iounmap(ssp->mmio_base); - -err_nomem: - release_mem_region(phys_beg, phys_len); - platform_device_put(pdev); - kfree(spi_info); - return ret; + return 0; } static void ce4100_spi_remove(struct pci_dev *dev) { - struct ce4100_info *spi_info; - struct ssp_device *ssp; + struct platform_device *pdev = pci_get_drvdata(dev); - spi_info = pci_get_drvdata(dev); - ssp = &spi_info->ssp; - platform_device_unregister(spi_info->spi_pdev); - - iounmap(ssp->mmio_base); - release_mem_region(pci_resource_start(dev, 0), - pci_resource_len(dev, 0)); - - mutex_lock(&ssp_lock); - list_del(&ssp->node); - mutex_unlock(&ssp_lock); - - pci_set_drvdata(dev, NULL); - pci_disable_device(dev); - kfree(spi_info); + platform_device_unregister(pdev); } static DEFINE_PCI_DEVICE_TABLE(ce4100_spi_devices) = { --- linux-ppc-3.8.0.orig/drivers/spi/spi-pxa2xx-dma.c +++ linux-ppc-3.8.0/drivers/spi/spi-pxa2xx-dma.c @@ -0,0 +1,392 @@ +/* + * PXA2xx SPI DMA engine support. + * + * Copyright (C) 2013, Intel Corporation + * Author: Mika Westerberg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "spi-pxa2xx.h" + +static int pxa2xx_spi_map_dma_buffer(struct driver_data *drv_data, + enum dma_data_direction dir) +{ + int i, nents, len = drv_data->len; + struct scatterlist *sg; + struct device *dmadev; + struct sg_table *sgt; + void *buf, *pbuf; + + /* + * Some DMA controllers have problems transferring buffers that are + * not multiple of 4 bytes. So we truncate the transfer so that it + * is suitable for such controllers, and handle the trailing bytes + * manually after the DMA completes. + * + * REVISIT: It would be better if this information could be + * retrieved directly from the DMA device in a similar way than + * ->copy_align etc. is done. + */ + len = ALIGN(drv_data->len, 4); + + if (dir == DMA_TO_DEVICE) { + dmadev = drv_data->tx_chan->device->dev; + sgt = &drv_data->tx_sgt; + buf = drv_data->tx; + drv_data->tx_map_len = len; + } else { + dmadev = drv_data->rx_chan->device->dev; + sgt = &drv_data->rx_sgt; + buf = drv_data->rx; + drv_data->rx_map_len = len; + } + + nents = DIV_ROUND_UP(len, SZ_2K); + if (nents != sgt->nents) { + int ret; + + sg_free_table(sgt); + ret = sg_alloc_table(sgt, nents, GFP_KERNEL); + if (ret) + return ret; + } + + pbuf = buf; + for_each_sg(sgt->sgl, sg, sgt->nents, i) { + size_t bytes = min_t(size_t, len, SZ_2K); + + if (buf) + sg_set_buf(sg, pbuf, bytes); + else + sg_set_buf(sg, drv_data->dummy, bytes); + + pbuf += bytes; + len -= bytes; + } + + nents = dma_map_sg(dmadev, sgt->sgl, sgt->nents, dir); + if (!nents) + return -ENOMEM; + + return nents; +} + +static void pxa2xx_spi_unmap_dma_buffer(struct driver_data *drv_data, + enum dma_data_direction dir) +{ + struct device *dmadev; + struct sg_table *sgt; + + if (dir == DMA_TO_DEVICE) { + dmadev = drv_data->tx_chan->device->dev; + sgt = &drv_data->tx_sgt; + } else { + dmadev = drv_data->rx_chan->device->dev; + sgt = &drv_data->rx_sgt; + } + + dma_unmap_sg(dmadev, sgt->sgl, sgt->nents, dir); +} + +static void pxa2xx_spi_unmap_dma_buffers(struct driver_data *drv_data) +{ + if (!drv_data->dma_mapped) + return; + + pxa2xx_spi_unmap_dma_buffer(drv_data, DMA_FROM_DEVICE); + pxa2xx_spi_unmap_dma_buffer(drv_data, DMA_TO_DEVICE); + + drv_data->dma_mapped = 0; +} + +static void pxa2xx_spi_dma_transfer_complete(struct driver_data *drv_data, + bool error) +{ + struct spi_message *msg = drv_data->cur_msg; + + /* + * It is possible that one CPU is handling ROR interrupt and other + * just gets DMA completion. Calling pump_transfers() twice for the + * same transfer leads to problems thus we prevent concurrent calls + * by using ->dma_running. + */ + if (atomic_dec_and_test(&drv_data->dma_running)) { + void __iomem *reg = drv_data->ioaddr; + + /* + * If the other CPU is still handling the ROR interrupt we + * might not know about the error yet. So we re-check the + * ROR bit here before we clear the status register. + */ + if (!error) { + u32 status = read_SSSR(reg) & drv_data->mask_sr; + error = status & SSSR_ROR; + } + + /* Clear status & disable interrupts */ + write_SSCR1(read_SSCR1(reg) & ~drv_data->dma_cr1, reg); + write_SSSR_CS(drv_data, drv_data->clear_sr); + if (!pxa25x_ssp_comp(drv_data)) + write_SSTO(0, reg); + + if (!error) { + pxa2xx_spi_unmap_dma_buffers(drv_data); + + /* Handle the last bytes of unaligned transfer */ + drv_data->tx += drv_data->tx_map_len; + drv_data->write(drv_data); + + drv_data->rx += drv_data->rx_map_len; + drv_data->read(drv_data); + + msg->actual_length += drv_data->len; + msg->state = pxa2xx_spi_next_transfer(drv_data); + } else { + /* In case we got an error we disable the SSP now */ + write_SSCR0(read_SSCR0(reg) & ~SSCR0_SSE, reg); + + msg->state = ERROR_STATE; + } + + tasklet_schedule(&drv_data->pump_transfers); + } +} + +static void pxa2xx_spi_dma_callback(void *data) +{ + pxa2xx_spi_dma_transfer_complete(data, false); +} + +static struct dma_async_tx_descriptor * +pxa2xx_spi_dma_prepare_one(struct driver_data *drv_data, + enum dma_transfer_direction dir) +{ + struct pxa2xx_spi_master *pdata = drv_data->master_info; + struct chip_data *chip = drv_data->cur_chip; + enum dma_slave_buswidth width; + struct dma_slave_config cfg; + struct dma_chan *chan; + struct sg_table *sgt; + int nents, ret; + + switch (drv_data->n_bytes) { + case 1: + width = DMA_SLAVE_BUSWIDTH_1_BYTE; + break; + case 2: + width = DMA_SLAVE_BUSWIDTH_2_BYTES; + break; + default: + width = DMA_SLAVE_BUSWIDTH_4_BYTES; + break; + } + + memset(&cfg, 0, sizeof(cfg)); + cfg.direction = dir; + + if (dir == DMA_MEM_TO_DEV) { + cfg.dst_addr = drv_data->ssdr_physical; + cfg.dst_addr_width = width; + cfg.dst_maxburst = chip->dma_burst_size; + cfg.slave_id = pdata->tx_slave_id; + + sgt = &drv_data->tx_sgt; + nents = drv_data->tx_nents; + chan = drv_data->tx_chan; + } else { + cfg.src_addr = drv_data->ssdr_physical; + cfg.src_addr_width = width; + cfg.src_maxburst = chip->dma_burst_size; + cfg.slave_id = pdata->rx_slave_id; + + sgt = &drv_data->rx_sgt; + nents = drv_data->rx_nents; + chan = drv_data->rx_chan; + } + + ret = dmaengine_slave_config(chan, &cfg); + if (ret) { + dev_warn(&drv_data->pdev->dev, "DMA slave config failed\n"); + return NULL; + } + + return dmaengine_prep_slave_sg(chan, sgt->sgl, nents, dir, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK); +} + +static bool pxa2xx_spi_dma_filter(struct dma_chan *chan, void *param) +{ + const struct pxa2xx_spi_master *pdata = param; + + return chan->chan_id == pdata->tx_chan_id || + chan->chan_id == pdata->rx_chan_id; +} + +bool pxa2xx_spi_dma_is_possible(size_t len) +{ + return len <= MAX_DMA_LEN; +} + +int pxa2xx_spi_map_dma_buffers(struct driver_data *drv_data) +{ + const struct chip_data *chip = drv_data->cur_chip; + int ret; + + if (!chip->enable_dma) + return 0; + + /* Don't bother with DMA if we can't do even a single burst */ + if (drv_data->len < chip->dma_burst_size) + return 0; + + ret = pxa2xx_spi_map_dma_buffer(drv_data, DMA_TO_DEVICE); + if (ret <= 0) { + dev_warn(&drv_data->pdev->dev, "failed to DMA map TX\n"); + return 0; + } + + drv_data->tx_nents = ret; + + ret = pxa2xx_spi_map_dma_buffer(drv_data, DMA_FROM_DEVICE); + if (ret <= 0) { + pxa2xx_spi_unmap_dma_buffer(drv_data, DMA_TO_DEVICE); + dev_warn(&drv_data->pdev->dev, "failed to DMA map RX\n"); + return 0; + } + + drv_data->rx_nents = ret; + return 1; +} + +irqreturn_t pxa2xx_spi_dma_transfer(struct driver_data *drv_data) +{ + u32 status; + + status = read_SSSR(drv_data->ioaddr) & drv_data->mask_sr; + if (status & SSSR_ROR) { + dev_err(&drv_data->pdev->dev, "FIFO overrun\n"); + + dmaengine_terminate_all(drv_data->rx_chan); + dmaengine_terminate_all(drv_data->tx_chan); + + pxa2xx_spi_dma_transfer_complete(drv_data, true); + return IRQ_HANDLED; + } + + return IRQ_NONE; +} + +int pxa2xx_spi_dma_prepare(struct driver_data *drv_data, u32 dma_burst) +{ + struct dma_async_tx_descriptor *tx_desc, *rx_desc; + + tx_desc = pxa2xx_spi_dma_prepare_one(drv_data, DMA_MEM_TO_DEV); + if (!tx_desc) { + dev_err(&drv_data->pdev->dev, + "failed to get DMA TX descriptor\n"); + return -EBUSY; + } + + rx_desc = pxa2xx_spi_dma_prepare_one(drv_data, DMA_DEV_TO_MEM); + if (!rx_desc) { + dev_err(&drv_data->pdev->dev, + "failed to get DMA RX descriptor\n"); + return -EBUSY; + } + + /* We are ready when RX completes */ + rx_desc->callback = pxa2xx_spi_dma_callback; + rx_desc->callback_param = drv_data; + + dmaengine_submit(rx_desc); + dmaengine_submit(tx_desc); + return 0; +} + +void pxa2xx_spi_dma_start(struct driver_data *drv_data) +{ + dma_async_issue_pending(drv_data->rx_chan); + dma_async_issue_pending(drv_data->tx_chan); + + atomic_set(&drv_data->dma_running, 1); +} + +int pxa2xx_spi_dma_setup(struct driver_data *drv_data) +{ + struct pxa2xx_spi_master *pdata = drv_data->master_info; + dma_cap_mask_t mask; + + dma_cap_zero(mask); + dma_cap_set(DMA_SLAVE, mask); + + drv_data->dummy = devm_kzalloc(&drv_data->pdev->dev, SZ_2K, GFP_KERNEL); + if (!drv_data->dummy) + return -ENOMEM; + + drv_data->tx_chan = dma_request_channel(mask, pxa2xx_spi_dma_filter, + pdata); + if (!drv_data->tx_chan) + return -ENODEV; + + drv_data->rx_chan = dma_request_channel(mask, pxa2xx_spi_dma_filter, + pdata); + if (!drv_data->rx_chan) { + dma_release_channel(drv_data->tx_chan); + drv_data->tx_chan = NULL; + return -ENODEV; + } + + return 0; +} + +void pxa2xx_spi_dma_release(struct driver_data *drv_data) +{ + if (drv_data->rx_chan) { + dmaengine_terminate_all(drv_data->rx_chan); + dma_release_channel(drv_data->rx_chan); + sg_free_table(&drv_data->rx_sgt); + drv_data->rx_chan = NULL; + } + if (drv_data->tx_chan) { + dmaengine_terminate_all(drv_data->tx_chan); + dma_release_channel(drv_data->tx_chan); + sg_free_table(&drv_data->tx_sgt); + drv_data->tx_chan = NULL; + } +} + +void pxa2xx_spi_dma_resume(struct driver_data *drv_data) +{ +} + +int pxa2xx_spi_set_dma_burst_and_threshold(struct chip_data *chip, + struct spi_device *spi, + u8 bits_per_word, u32 *burst_code, + u32 *threshold) +{ + struct pxa2xx_spi_chip *chip_info = spi->controller_data; + + /* + * If the DMA burst size is given in chip_info we use that, + * otherwise we use the default. Also we use the default FIFO + * thresholds for now. + */ + *burst_code = chip_info ? chip_info->dma_burst_size : 16; + *threshold = SSCR1_RxTresh(RX_THRESH_DFLT) + | SSCR1_TxTresh(TX_THRESH_DFLT); + + return 0; +} --- linux-ppc-3.8.0.orig/drivers/spi/spi-davinci.c +++ linux-ppc-3.8.0/drivers/spi/spi-davinci.c @@ -608,7 +608,7 @@ else buf = (void *)t->tx_buf; t->tx_dma = dma_map_single(&spi->dev, buf, - t->len, DMA_FROM_DEVICE); + t->len, DMA_TO_DEVICE); if (!t->tx_dma) { ret = -EFAULT; goto err_tx_map; --- linux-ppc-3.8.0.orig/drivers/spi/spi-s3c64xx.c +++ linux-ppc-3.8.0/drivers/spi/spi-s3c64xx.c @@ -997,25 +997,30 @@ { struct s3c64xx_spi_driver_data *sdd = data; struct spi_master *spi = sdd->master; - unsigned int val; - - val = readl(sdd->regs + S3C64XX_SPI_PENDING_CLR); - - val &= S3C64XX_SPI_PND_RX_OVERRUN_CLR | - S3C64XX_SPI_PND_RX_UNDERRUN_CLR | - S3C64XX_SPI_PND_TX_OVERRUN_CLR | - S3C64XX_SPI_PND_TX_UNDERRUN_CLR; + unsigned int val, clr = 0; - writel(val, sdd->regs + S3C64XX_SPI_PENDING_CLR); + val = readl(sdd->regs + S3C64XX_SPI_STATUS); - if (val & S3C64XX_SPI_PND_RX_OVERRUN_CLR) + if (val & S3C64XX_SPI_ST_RX_OVERRUN_ERR) { + clr = S3C64XX_SPI_PND_RX_OVERRUN_CLR; dev_err(&spi->dev, "RX overrun\n"); - if (val & S3C64XX_SPI_PND_RX_UNDERRUN_CLR) + } + if (val & S3C64XX_SPI_ST_RX_UNDERRUN_ERR) { + clr |= S3C64XX_SPI_PND_RX_UNDERRUN_CLR; dev_err(&spi->dev, "RX underrun\n"); - if (val & S3C64XX_SPI_PND_TX_OVERRUN_CLR) + } + if (val & S3C64XX_SPI_ST_TX_OVERRUN_ERR) { + clr |= S3C64XX_SPI_PND_TX_OVERRUN_CLR; dev_err(&spi->dev, "TX overrun\n"); - if (val & S3C64XX_SPI_PND_TX_UNDERRUN_CLR) + } + if (val & S3C64XX_SPI_ST_TX_UNDERRUN_ERR) { + clr |= S3C64XX_SPI_PND_TX_UNDERRUN_CLR; dev_err(&spi->dev, "TX underrun\n"); + } + + /* Clear the pending irq by setting and then clearing it */ + writel(clr, sdd->regs + S3C64XX_SPI_PENDING_CLR); + writel(0, sdd->regs + S3C64XX_SPI_PENDING_CLR); return IRQ_HANDLED; } @@ -1039,9 +1044,13 @@ writel(0, regs + S3C64XX_SPI_MODE_CFG); writel(0, regs + S3C64XX_SPI_PACKET_CNT); - /* Clear any irq pending bits */ - writel(readl(regs + S3C64XX_SPI_PENDING_CLR), - regs + S3C64XX_SPI_PENDING_CLR); + /* Clear any irq pending bits, should set and clear the bits */ + val = S3C64XX_SPI_PND_RX_OVERRUN_CLR | + S3C64XX_SPI_PND_RX_UNDERRUN_CLR | + S3C64XX_SPI_PND_TX_OVERRUN_CLR | + S3C64XX_SPI_PND_TX_UNDERRUN_CLR; + writel(val, regs + S3C64XX_SPI_PENDING_CLR); + writel(0, regs + S3C64XX_SPI_PENDING_CLR); writel(0, regs + S3C64XX_SPI_SWAP_CFG); --- linux-ppc-3.8.0.orig/drivers/spi/Kconfig +++ linux-ppc-3.8.0/drivers/spi/Kconfig @@ -297,9 +297,20 @@ help This selects a driver for the PPC4xx SPI Controller. +config SPI_PXA2XX_PXADMA + bool "PXA2xx SSP legacy PXA DMA API support" + depends on SPI_PXA2XX && ARCH_PXA + help + Enable PXA private legacy DMA API support. Note that this is + deprecated in favor of generic DMA engine API. + +config SPI_PXA2XX_DMA + def_bool y + depends on SPI_PXA2XX && !SPI_PXA2XX_PXADMA + config SPI_PXA2XX tristate "PXA2xx SSP SPI master" - depends on (ARCH_PXA || (X86_32 && PCI)) && EXPERIMENTAL + depends on ARCH_PXA || PCI || ACPI select PXA_SSP if ARCH_PXA help This enables using a PXA2xx or Sodaville SSP port as a SPI master @@ -307,7 +318,7 @@ additional documentation can be found a Documentation/spi/pxa2xx. config SPI_PXA2XX_PCI - def_bool SPI_PXA2XX && X86_32 && PCI + def_tristate SPI_PXA2XX && PCI config SPI_RSPI tristate "Renesas RSPI controller" --- linux-ppc-3.8.0.orig/drivers/spi/spi-pxa2xx.h +++ linux-ppc-3.8.0/drivers/spi/spi-pxa2xx.h @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2005 Stephen Street / StreetFire Sound Labs + * Copyright (C) 2013, Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef SPI_PXA2XX_H +#define SPI_PXA2XX_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct driver_data { + /* Driver model hookup */ + struct platform_device *pdev; + + /* SSP Info */ + struct ssp_device *ssp; + + /* SPI framework hookup */ + enum pxa_ssp_type ssp_type; + struct spi_master *master; + + /* PXA hookup */ + struct pxa2xx_spi_master *master_info; + + /* PXA private DMA setup stuff */ + int rx_channel; + int tx_channel; + u32 *null_dma_buf; + + /* SSP register addresses */ + void __iomem *ioaddr; + u32 ssdr_physical; + + /* SSP masks*/ + u32 dma_cr1; + u32 int_cr1; + u32 clear_sr; + u32 mask_sr; + + /* Maximun clock rate */ + unsigned long max_clk_rate; + + /* Message Transfer pump */ + struct tasklet_struct pump_transfers; + + /* DMA engine support */ + struct dma_chan *rx_chan; + struct dma_chan *tx_chan; + struct sg_table rx_sgt; + struct sg_table tx_sgt; + int rx_nents; + int tx_nents; + void *dummy; + atomic_t dma_running; + + /* Current message transfer state info */ + struct spi_message *cur_msg; + struct spi_transfer *cur_transfer; + struct chip_data *cur_chip; + size_t len; + void *tx; + void *tx_end; + void *rx; + void *rx_end; + int dma_mapped; + dma_addr_t rx_dma; + dma_addr_t tx_dma; + size_t rx_map_len; + size_t tx_map_len; + u8 n_bytes; + int (*write)(struct driver_data *drv_data); + int (*read)(struct driver_data *drv_data); + irqreturn_t (*transfer_handler)(struct driver_data *drv_data); + void (*cs_control)(u32 command); + + void __iomem *lpss_base; +}; + +struct chip_data { + u32 cr0; + u32 cr1; + u32 psp; + u32 timeout; + u8 n_bytes; + u32 dma_burst_size; + u32 threshold; + u32 dma_threshold; + u16 lpss_rx_threshold; + u16 lpss_tx_threshold; + u8 enable_dma; + u8 bits_per_word; + u32 speed_hz; + union { + int gpio_cs; + unsigned int frm; + }; + int gpio_cs_inverted; + int (*write)(struct driver_data *drv_data); + int (*read)(struct driver_data *drv_data); + void (*cs_control)(u32 command); +}; + +#define DEFINE_SSP_REG(reg, off) \ +static inline u32 read_##reg(void const __iomem *p) \ +{ return __raw_readl(p + (off)); } \ +\ +static inline void write_##reg(u32 v, void __iomem *p) \ +{ __raw_writel(v, p + (off)); } + +DEFINE_SSP_REG(SSCR0, 0x00) +DEFINE_SSP_REG(SSCR1, 0x04) +DEFINE_SSP_REG(SSSR, 0x08) +DEFINE_SSP_REG(SSITR, 0x0c) +DEFINE_SSP_REG(SSDR, 0x10) +DEFINE_SSP_REG(SSTO, 0x28) +DEFINE_SSP_REG(SSPSP, 0x2c) +DEFINE_SSP_REG(SSITF, SSITF) +DEFINE_SSP_REG(SSIRF, SSIRF) + +#define START_STATE ((void *)0) +#define RUNNING_STATE ((void *)1) +#define DONE_STATE ((void *)2) +#define ERROR_STATE ((void *)-1) + +#define IS_DMA_ALIGNED(x) IS_ALIGNED((unsigned long)(x), DMA_ALIGNMENT) +#define DMA_ALIGNMENT 8 + +static inline int pxa25x_ssp_comp(struct driver_data *drv_data) +{ + if (drv_data->ssp_type == PXA25x_SSP) + return 1; + if (drv_data->ssp_type == CE4100_SSP) + return 1; + return 0; +} + +static inline void write_SSSR_CS(struct driver_data *drv_data, u32 val) +{ + void __iomem *reg = drv_data->ioaddr; + + if (drv_data->ssp_type == CE4100_SSP) + val |= read_SSSR(reg) & SSSR_ALT_FRM_MASK; + + write_SSSR(val, reg); +} + +extern int pxa2xx_spi_flush(struct driver_data *drv_data); +extern void *pxa2xx_spi_next_transfer(struct driver_data *drv_data); + +/* + * Select the right DMA implementation. + */ +#if defined(CONFIG_SPI_PXA2XX_PXADMA) +#define SPI_PXA2XX_USE_DMA 1 +#define MAX_DMA_LEN 8191 +#define DEFAULT_DMA_CR1 (SSCR1_TSRE | SSCR1_RSRE | SSCR1_TINTE) +#elif defined(CONFIG_SPI_PXA2XX_DMA) +#define SPI_PXA2XX_USE_DMA 1 +#define MAX_DMA_LEN SZ_64K +#define DEFAULT_DMA_CR1 (SSCR1_TSRE | SSCR1_RSRE | SSCR1_TRAIL) +#else +#undef SPI_PXA2XX_USE_DMA +#define MAX_DMA_LEN 0 +#define DEFAULT_DMA_CR1 0 +#endif + +#ifdef SPI_PXA2XX_USE_DMA +extern bool pxa2xx_spi_dma_is_possible(size_t len); +extern int pxa2xx_spi_map_dma_buffers(struct driver_data *drv_data); +extern irqreturn_t pxa2xx_spi_dma_transfer(struct driver_data *drv_data); +extern int pxa2xx_spi_dma_prepare(struct driver_data *drv_data, u32 dma_burst); +extern void pxa2xx_spi_dma_start(struct driver_data *drv_data); +extern int pxa2xx_spi_dma_setup(struct driver_data *drv_data); +extern void pxa2xx_spi_dma_release(struct driver_data *drv_data); +extern void pxa2xx_spi_dma_resume(struct driver_data *drv_data); +extern int pxa2xx_spi_set_dma_burst_and_threshold(struct chip_data *chip, + struct spi_device *spi, + u8 bits_per_word, + u32 *burst_code, + u32 *threshold); +#else +static inline bool pxa2xx_spi_dma_is_possible(size_t len) { return false; } +static inline int pxa2xx_spi_map_dma_buffers(struct driver_data *drv_data) +{ + return 0; +} +#define pxa2xx_spi_dma_transfer NULL +static inline void pxa2xx_spi_dma_prepare(struct driver_data *drv_data, + u32 dma_burst) {} +static inline void pxa2xx_spi_dma_start(struct driver_data *drv_data) {} +static inline int pxa2xx_spi_dma_setup(struct driver_data *drv_data) +{ + return 0; +} +static inline void pxa2xx_spi_dma_release(struct driver_data *drv_data) {} +static inline void pxa2xx_spi_dma_resume(struct driver_data *drv_data) {} +static inline int pxa2xx_spi_set_dma_burst_and_threshold(struct chip_data *chip, + struct spi_device *spi, + u8 bits_per_word, + u32 *burst_code, + u32 *threshold) +{ + return -ENODEV; +} +#endif + +#endif /* SPI_PXA2XX_H */ --- linux-ppc-3.8.0.orig/drivers/spi/spi-mpc512x-psc.c +++ linux-ppc-3.8.0/drivers/spi/spi-mpc512x-psc.c @@ -164,7 +164,7 @@ for (i = count; i > 0; i--) { data = tx_buf ? *tx_buf++ : 0; - if (len == EOFBYTE) + if (len == EOFBYTE && t->cs_change) setbits32(&fifo->txcmd, MPC512x_PSC_FIFO_EOF); out_8(&fifo->txdata_8, data); len--; --- linux-ppc-3.8.0.orig/drivers/infiniband/hw/cxgb4/qp.c +++ linux-ppc-3.8.0/drivers/infiniband/hw/cxgb4/qp.c @@ -100,6 +100,16 @@ return 0; } +static int alloc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq, int user) +{ + int ret = -ENOSYS; + if (user) + ret = alloc_oc_sq(rdev, sq); + if (ret) + ret = alloc_host_sq(rdev, sq); + return ret; +} + static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq, struct c4iw_dev_ucontext *uctx) { @@ -168,18 +178,9 @@ goto free_sw_rq; } - if (user) { - ret = alloc_oc_sq(rdev, &wq->sq); - if (ret) - goto free_hwaddr; - - ret = alloc_host_sq(rdev, &wq->sq); - if (ret) - goto free_sq; - } else - ret = alloc_host_sq(rdev, &wq->sq); - if (ret) - goto free_hwaddr; + ret = alloc_sq(rdev, &wq->sq, user); + if (ret) + goto free_hwaddr; memset(wq->sq.queue, 0, wq->sq.memsize); dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr); --- linux-ppc-3.8.0.orig/drivers/infiniband/ulp/srp/ib_srp.h +++ linux-ppc-3.8.0/drivers/infiniband/ulp/srp/ib_srp.h @@ -140,6 +140,7 @@ unsigned int cmd_sg_cnt; unsigned int indirect_size; bool allow_ext_sg; + bool transport_offline; /* Everything above this point is used in the hot path of * command processing. Try to keep them packed into cachelines. --- linux-ppc-3.8.0.orig/drivers/infiniband/ulp/srp/ib_srp.c +++ linux-ppc-3.8.0/drivers/infiniband/ulp/srp/ib_srp.c @@ -700,23 +700,24 @@ struct Scsi_Host *shost = target->scsi_host; int i, ret; - if (target->state != SRP_TARGET_LIVE) - return -EAGAIN; - scsi_target_block(&shost->shost_gendev); srp_disconnect_target(target); /* - * Now get a new local CM ID so that we avoid confusing the - * target in case things are really fouled up. + * Now get a new local CM ID so that we avoid confusing the target in + * case things are really fouled up. Doing so also ensures that all CM + * callbacks will have finished before a new QP is allocated. */ ret = srp_new_cm_id(target); - if (ret) - goto unblock; - - ret = srp_create_target_ib(target); - if (ret) - goto unblock; + /* + * Whether or not creating a new CM ID succeeded, create a new + * QP. This guarantees that all completion callback function + * invocations have finished before request resetting starts. + */ + if (ret == 0) + ret = srp_create_target_ib(target); + else + srp_create_target_ib(target); for (i = 0; i < SRP_CMD_SQ_SIZE; ++i) { struct srp_request *req = &target->req_ring[i]; @@ -728,11 +729,12 @@ for (i = 0; i < SRP_SQ_SIZE; ++i) list_add(&target->tx_ring[i]->list, &target->free_tx); - ret = srp_connect_target(target); + if (ret == 0) + ret = srp_connect_target(target); -unblock: scsi_target_unblock(&shost->shost_gendev, ret == 0 ? SDEV_RUNNING : SDEV_TRANSPORT_OFFLINE); + target->transport_offline = !!ret; if (ret) goto err; @@ -1352,6 +1354,12 @@ unsigned long flags; int len; + if (unlikely(target->transport_offline)) { + scmnd->result = DID_NO_CONNECT << 16; + scmnd->scsi_done(scmnd); + return 0; + } + spin_lock_irqsave(&target->lock, flags); iu = __srp_get_tx_iu(target, SRP_IU_CMD); if (!iu) @@ -1695,6 +1703,9 @@ struct srp_iu *iu; struct srp_tsk_mgmt *tsk_mgmt; + if (!target->connected || target->qp_in_error) + return -1; + init_completion(&target->tsk_mgmt_done); spin_lock_irq(&target->lock); @@ -1736,7 +1747,7 @@ shost_printk(KERN_ERR, target->scsi_host, "SRP abort called\n"); - if (!req || target->qp_in_error || !srp_claim_req(target, req, scmnd)) + if (!req || !srp_claim_req(target, req, scmnd)) return FAILED; srp_send_tsk_mgmt(target, req->index, scmnd->device->lun, SRP_TSK_ABORT_TASK); @@ -1754,8 +1765,6 @@ shost_printk(KERN_ERR, target->scsi_host, "SRP reset_device called\n"); - if (target->qp_in_error) - return FAILED; if (srp_send_tsk_mgmt(target, SRP_TAG_NO_REQ, scmnd->device->lun, SRP_TSK_LUN_RESET)) return FAILED; @@ -1972,7 +1981,6 @@ spin_unlock(&host->target_lock); target->state = SRP_TARGET_LIVE; - target->connected = false; scsi_scan_target(&target->scsi_host->shost_gendev, 0, target->scsi_id, SCAN_WILD_CARD, 0); --- linux-ppc-3.8.0.orig/drivers/infiniband/ulp/srpt/ib_srpt.c +++ linux-ppc-3.8.0/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -2227,6 +2227,27 @@ } /** + * srpt_shutdown_session() - Whether or not a session may be shut down. + */ +static int srpt_shutdown_session(struct se_session *se_sess) +{ + struct srpt_rdma_ch *ch = se_sess->fabric_sess_ptr; + unsigned long flags; + + spin_lock_irqsave(&ch->spinlock, flags); + if (ch->in_shutdown) { + spin_unlock_irqrestore(&ch->spinlock, flags); + return true; + } + + ch->in_shutdown = true; + target_sess_cmd_list_set_waiting(se_sess); + spin_unlock_irqrestore(&ch->spinlock, flags); + + return true; +} + +/** * srpt_drain_channel() - Drain a channel by resetting the IB queue pair. * @cm_id: Pointer to the CM ID of the channel to be drained. * @@ -2264,6 +2285,9 @@ spin_unlock_irq(&sdev->spinlock); if (do_reset) { + if (ch->sess) + srpt_shutdown_session(ch->sess); + ret = srpt_ch_qp_err(ch); if (ret < 0) printk(KERN_ERR "Setting queue pair in error state" @@ -3467,14 +3491,6 @@ } /** - * srpt_shutdown_session() - Whether or not a session may be shut down. - */ -static int srpt_shutdown_session(struct se_session *se_sess) -{ - return true; -} - -/** * srpt_close_session() - Forcibly close a session. * * Callback function invoked by the TCM core to clean up sessions associated --- linux-ppc-3.8.0.orig/drivers/infiniband/ulp/srpt/ib_srpt.h +++ linux-ppc-3.8.0/drivers/infiniband/ulp/srpt/ib_srpt.h @@ -325,6 +325,7 @@ u8 sess_name[36]; struct work_struct release_work; struct completion *release_done; + bool in_shutdown; }; /** --- linux-ppc-3.8.0.orig/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ linux-ppc-3.8.0/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -758,9 +758,13 @@ if (++priv->tx_outstanding == ipoib_sendq_size) { ipoib_dbg(priv, "TX ring 0x%x full, stopping kernel net queue\n", tx->qp->qp_num); - if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP)) - ipoib_warn(priv, "request notify on send CQ failed\n"); netif_stop_queue(dev); + rc = ib_req_notify_cq(priv->send_cq, + IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); + if (rc < 0) + ipoib_warn(priv, "request notify on send CQ failed\n"); + else if (rc) + ipoib_send_comp_handler(priv->send_cq, dev); } } } --- linux-ppc-3.8.0.orig/drivers/gpio/Makefile +++ linux-ppc-3.8.0/drivers/gpio/Makefile @@ -31,6 +31,7 @@ obj-$(CONFIG_ARCH_KS8695) += gpio-ks8695.o obj-$(CONFIG_GPIO_LANGWELL) += gpio-langwell.o obj-$(CONFIG_ARCH_LPC32XX) += gpio-lpc32xx.o +obj-$(CONFIG_GPIO_LYNXPOINT) += gpio-lynxpoint.o obj-$(CONFIG_GPIO_MAX730X) += gpio-max730x.o obj-$(CONFIG_GPIO_MAX7300) += gpio-max7300.o obj-$(CONFIG_GPIO_MAX7301) += gpio-max7301.o --- linux-ppc-3.8.0.orig/drivers/gpio/gpiolib-of.c +++ linux-ppc-3.8.0/drivers/gpio/gpiolib-of.c @@ -228,7 +228,7 @@ if (!np) return; - do { + for (;; index++) { ret = of_parse_phandle_with_args(np, "gpio-ranges", "#gpio-range-cells", index, &pinspec); if (ret) @@ -257,8 +257,7 @@ if (ret) break; - - } while (index++); + } } #else --- linux-ppc-3.8.0.orig/drivers/gpio/gpio-em.c +++ linux-ppc-3.8.0/drivers/gpio/gpio-em.c @@ -299,8 +299,9 @@ irq_chip->irq_set_type = em_gio_irq_set_type; irq_chip->flags = IRQCHIP_SKIP_SET_WAKE; - p->irq_domain = irq_domain_add_linear(pdev->dev.of_node, + p->irq_domain = irq_domain_add_simple(pdev->dev.of_node, pdata->number_of_pins, + pdata->irq_base, &em_gio_irq_domain_ops, p); if (!p->irq_domain) { ret = -ENXIO; --- linux-ppc-3.8.0.orig/drivers/gpio/gpio-mvebu.c +++ linux-ppc-3.8.0/drivers/gpio/gpio-mvebu.c @@ -41,6 +41,7 @@ #include #include #include +#include #include /* @@ -495,6 +496,7 @@ struct resource *res; struct irq_chip_generic *gc; struct irq_chip_type *ct; + struct clk *clk; unsigned int ngpios; int soc_variant; int i, cpu, id; @@ -528,6 +530,11 @@ return id; } + clk = devm_clk_get(&pdev->dev, NULL); + /* Not all SoCs require a clock.*/ + if (!IS_ERR(clk)) + clk_prepare_enable(clk); + mvchip->soc_variant = soc_variant; mvchip->chip.label = dev_name(&pdev->dev); mvchip->chip.dev = &pdev->dev; --- linux-ppc-3.8.0.orig/drivers/gpio/gpio-stmpe.c +++ linux-ppc-3.8.0/drivers/gpio/gpio-stmpe.c @@ -307,11 +307,15 @@ .xlate = irq_domain_xlate_twocell, }; -static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio) +static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio, + struct device_node *np) { - int base = stmpe_gpio->irq_base; + int base = 0; - stmpe_gpio->domain = irq_domain_add_simple(NULL, + if (!np) + base = stmpe_gpio->irq_base; + + stmpe_gpio->domain = irq_domain_add_simple(np, stmpe_gpio->chip.ngpio, base, &stmpe_gpio_irq_simple_ops, stmpe_gpio); if (!stmpe_gpio->domain) { @@ -346,6 +350,9 @@ stmpe_gpio->chip = template_chip; stmpe_gpio->chip.ngpio = stmpe->num_gpios; stmpe_gpio->chip.dev = &pdev->dev; +#ifdef CONFIG_OF + stmpe_gpio->chip.of_node = np; +#endif stmpe_gpio->chip.base = pdata ? pdata->gpio_base : -1; if (pdata) @@ -366,7 +373,7 @@ goto out_free; if (irq >= 0) { - ret = stmpe_gpio_irq_init(stmpe_gpio); + ret = stmpe_gpio_irq_init(stmpe_gpio, np); if (ret) goto out_disable; --- linux-ppc-3.8.0.orig/drivers/gpio/gpio-lynxpoint.c +++ linux-ppc-3.8.0/drivers/gpio/gpio-lynxpoint.c @@ -0,0 +1,469 @@ +/* + * GPIO controller driver for Intel Lynxpoint PCH chipset> + * Copyright (c) 2012, Intel Corporation. + * + * Author: Mathias Nyman + * + * 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, write to the Free Software Foundation, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* LynxPoint chipset has support for 94 gpio pins */ + +#define LP_NUM_GPIO 94 + +/* Bitmapped register offsets */ +#define LP_ACPI_OWNED 0x00 /* Bitmap, set by bios, 0: pin reserved for ACPI */ +#define LP_GC 0x7C /* set APIC IRQ to IRQ14 or IRQ15 for all pins */ +#define LP_INT_STAT 0x80 +#define LP_INT_ENABLE 0x90 + +/* Each pin has two 32 bit config registers, starting at 0x100 */ +#define LP_CONFIG1 0x100 +#define LP_CONFIG2 0x104 + +/* LP_CONFIG1 reg bits */ +#define OUT_LVL_BIT BIT(31) +#define IN_LVL_BIT BIT(30) +#define TRIG_SEL_BIT BIT(4) /* 0: Edge, 1: Level */ +#define INT_INV_BIT BIT(3) /* Invert interrupt triggering */ +#define DIR_BIT BIT(2) /* 0: Output, 1: Input */ +#define USE_SEL_BIT BIT(0) /* 0: Native, 1: GPIO */ + +/* LP_CONFIG2 reg bits */ +#define GPINDIS_BIT BIT(2) /* disable input sensing */ +#define GPIWP_BIT (BIT(0) | BIT(1)) /* weak pull options */ + +struct lp_gpio { + struct gpio_chip chip; + struct irq_domain *domain; + struct platform_device *pdev; + spinlock_t lock; + unsigned long reg_base; +}; + +/* + * Lynxpoint gpios are controlled through both bitmapped registers and + * per gpio specific registers. The bitmapped registers are in chunks of + * 3 x 32bit registers to cover all 94 gpios + * + * per gpio specific registers consist of two 32bit registers per gpio + * (LP_CONFIG1 and LP_CONFIG2), with 94 gpios there's a total of + * 188 config registes. + * + * A simplified view of the register layout look like this: + * + * LP_ACPI_OWNED[31:0] gpio ownerships for gpios 0-31 (bitmapped registers) + * LP_ACPI_OWNED[63:32] gpio ownerships for gpios 32-63 + * LP_ACPI_OWNED[94:64] gpio ownerships for gpios 63-94 + * ... + * LP_INT_ENABLE[31:0] ... + * LP_INT_ENABLE[63:31] ... + * LP_INT_ENABLE[94:64] ... + * LP0_CONFIG1 (gpio 0) config1 reg for gpio 0 (per gpio registers) + * LP0_CONFIG2 (gpio 0) config2 reg for gpio 0 + * LP1_CONFIG1 (gpio 1) config1 reg for gpio 1 + * LP1_CONFIG2 (gpio 1) config2 reg for gpio 1 + * LP2_CONFIG1 (gpio 2) ... + * LP2_CONFIG2 (gpio 2) ... + * ... + * LP94_CONFIG1 (gpio 94) ... + * LP94_CONFIG2 (gpio 94) ... + */ + +static unsigned long lp_gpio_reg(struct gpio_chip *chip, unsigned offset, + int reg) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + int reg_offset; + + if (reg == LP_CONFIG1 || reg == LP_CONFIG2) + /* per gpio specific config registers */ + reg_offset = offset * 8; + else + /* bitmapped registers */ + reg_offset = (offset / 32) * 4; + + return lg->reg_base + reg + reg_offset; +} + +static int lp_gpio_request(struct gpio_chip *chip, unsigned offset) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1); + unsigned long conf2 = lp_gpio_reg(chip, offset, LP_CONFIG2); + unsigned long acpi_use = lp_gpio_reg(chip, offset, LP_ACPI_OWNED); + + pm_runtime_get(&lg->pdev->dev); /* should we put if failed */ + + /* Fail if BIOS reserved pin for ACPI use */ + if (!(inl(acpi_use) & BIT(offset % 32))) { + dev_err(&lg->pdev->dev, "gpio %d reserved for ACPI\n", offset); + return -EBUSY; + } + /* Fail if pin is in alternate function mode (not GPIO mode) */ + if (!(inl(reg) & USE_SEL_BIT)) + return -ENODEV; + + /* enable input sensing */ + outl(inl(conf2) & ~GPINDIS_BIT, conf2); + + + return 0; +} + +static void lp_gpio_free(struct gpio_chip *chip, unsigned offset) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + unsigned long conf2 = lp_gpio_reg(chip, offset, LP_CONFIG2); + + /* disable input sensing */ + outl(inl(conf2) | GPINDIS_BIT, conf2); + + pm_runtime_put(&lg->pdev->dev); +} + +static int lp_irq_type(struct irq_data *d, unsigned type) +{ + struct lp_gpio *lg = irq_data_get_irq_chip_data(d); + u32 hwirq = irqd_to_hwirq(d); + unsigned long flags; + u32 value; + unsigned long reg = lp_gpio_reg(&lg->chip, hwirq, LP_CONFIG1); + + if (hwirq >= lg->chip.ngpio) + return -EINVAL; + + spin_lock_irqsave(&lg->lock, flags); + value = inl(reg); + + /* set both TRIG_SEL and INV bits to 0 for rising edge */ + if (type & IRQ_TYPE_EDGE_RISING) + value &= ~(TRIG_SEL_BIT | INT_INV_BIT); + + /* TRIG_SEL bit 0, INV bit 1 for falling edge */ + if (type & IRQ_TYPE_EDGE_FALLING) + value = (value | INT_INV_BIT) & ~TRIG_SEL_BIT; + + /* TRIG_SEL bit 1, INV bit 0 for level low */ + if (type & IRQ_TYPE_LEVEL_LOW) + value = (value | TRIG_SEL_BIT) & ~INT_INV_BIT; + + /* TRIG_SEL bit 1, INV bit 1 for level high */ + if (type & IRQ_TYPE_LEVEL_HIGH) + value |= TRIG_SEL_BIT | INT_INV_BIT; + + outl(value, reg); + spin_unlock_irqrestore(&lg->lock, flags); + + return 0; +} + +static int lp_gpio_get(struct gpio_chip *chip, unsigned offset) +{ + unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1); + return inl(reg) & IN_LVL_BIT; +} + +static void lp_gpio_set(struct gpio_chip *chip, unsigned offset, int value) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1); + unsigned long flags; + + spin_lock_irqsave(&lg->lock, flags); + + if (value) + outl(inl(reg) | OUT_LVL_BIT, reg); + else + outl(inl(reg) & ~OUT_LVL_BIT, reg); + + spin_unlock_irqrestore(&lg->lock, flags); +} + +static int lp_gpio_direction_input(struct gpio_chip *chip, unsigned offset) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1); + unsigned long flags; + + spin_lock_irqsave(&lg->lock, flags); + outl(inl(reg) | DIR_BIT, reg); + spin_unlock_irqrestore(&lg->lock, flags); + + return 0; +} + +static int lp_gpio_direction_output(struct gpio_chip *chip, + unsigned offset, int value) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1); + unsigned long flags; + + lp_gpio_set(chip, offset, value); + + spin_lock_irqsave(&lg->lock, flags); + outl(inl(reg) & ~DIR_BIT, reg); + spin_unlock_irqrestore(&lg->lock, flags); + + return 0; +} + +static int lp_gpio_to_irq(struct gpio_chip *chip, unsigned offset) +{ + struct lp_gpio *lg = container_of(chip, struct lp_gpio, chip); + return irq_create_mapping(lg->domain, offset); +} + +static void lp_gpio_irq_handler(unsigned irq, struct irq_desc *desc) +{ + struct irq_data *data = irq_desc_get_irq_data(desc); + struct lp_gpio *lg = irq_data_get_irq_handler_data(data); + struct irq_chip *chip = irq_data_get_irq_chip(data); + u32 base, pin, mask; + unsigned long reg, pending; + unsigned virq; + + /* check from GPIO controller which pin triggered the interrupt */ + for (base = 0; base < lg->chip.ngpio; base += 32) { + reg = lp_gpio_reg(&lg->chip, base, LP_INT_STAT); + + while ((pending = inl(reg))) { + pin = __ffs(pending); + mask = BIT(pin); + /* Clear before handling so we don't lose an edge */ + outl(mask, reg); + virq = irq_find_mapping(lg->domain, base + pin); + generic_handle_irq(virq); + } + } + chip->irq_eoi(data); +} + +static void lp_irq_unmask(struct irq_data *d) +{ +} + +static void lp_irq_mask(struct irq_data *d) +{ +} + +static void lp_irq_enable(struct irq_data *d) +{ + struct lp_gpio *lg = irq_data_get_irq_chip_data(d); + u32 hwirq = irqd_to_hwirq(d); + unsigned long reg = lp_gpio_reg(&lg->chip, hwirq, LP_INT_ENABLE); + unsigned long flags; + + spin_lock_irqsave(&lg->lock, flags); + outl(inl(reg) | BIT(hwirq % 32), reg); + spin_unlock_irqrestore(&lg->lock, flags); +} + +static void lp_irq_disable(struct irq_data *d) +{ + struct lp_gpio *lg = irq_data_get_irq_chip_data(d); + u32 hwirq = irqd_to_hwirq(d); + unsigned long reg = lp_gpio_reg(&lg->chip, hwirq, LP_INT_ENABLE); + unsigned long flags; + + spin_lock_irqsave(&lg->lock, flags); + outl(inl(reg) & ~BIT(hwirq % 32), reg); + spin_unlock_irqrestore(&lg->lock, flags); +} + +static struct irq_chip lp_irqchip = { + .name = "LP-GPIO", + .irq_mask = lp_irq_mask, + .irq_unmask = lp_irq_unmask, + .irq_enable = lp_irq_enable, + .irq_disable = lp_irq_disable, + .irq_set_type = lp_irq_type, + .flags = IRQCHIP_SKIP_SET_WAKE, +}; + +static void lp_gpio_irq_init_hw(struct lp_gpio *lg) +{ + unsigned long reg; + unsigned base; + + for (base = 0; base < lg->chip.ngpio; base += 32) { + /* disable gpio pin interrupts */ + reg = lp_gpio_reg(&lg->chip, base, LP_INT_ENABLE); + outl(0, reg); + /* Clear interrupt status register */ + reg = lp_gpio_reg(&lg->chip, base, LP_INT_STAT); + outl(0xffffffff, reg); + } +} + +static int lp_gpio_irq_map(struct irq_domain *d, unsigned int virq, + irq_hw_number_t hw) +{ + struct lp_gpio *lg = d->host_data; + + irq_set_chip_and_handler_name(virq, &lp_irqchip, handle_simple_irq, + "demux"); + irq_set_chip_data(virq, lg); + irq_set_irq_type(virq, IRQ_TYPE_NONE); + + return 0; +} + +static const struct irq_domain_ops lp_gpio_irq_ops = { + .map = lp_gpio_irq_map, +}; + +static int lp_gpio_probe(struct platform_device *pdev) +{ + struct lp_gpio *lg; + struct gpio_chip *gc; + struct resource *io_rc, *irq_rc; + struct device *dev = &pdev->dev; + unsigned long reg_len; + unsigned hwirq; + int ret = -ENODEV; + + lg = devm_kzalloc(dev, sizeof(struct lp_gpio), GFP_KERNEL); + if (!lg) { + dev_err(dev, "can't allocate lp_gpio chip data\n"); + return -ENOMEM; + } + + lg->pdev = pdev; + platform_set_drvdata(pdev, lg); + + io_rc = platform_get_resource(pdev, IORESOURCE_IO, 0); + irq_rc = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + + if (!io_rc) { + dev_err(dev, "missing IO resources\n"); + return -EINVAL; + } + + lg->reg_base = io_rc->start; + reg_len = resource_size(io_rc); + + if (!devm_request_region(dev, lg->reg_base, reg_len, "lp-gpio")) { + dev_err(dev, "failed requesting IO region 0x%x\n", + (unsigned int)lg->reg_base); + return -EBUSY; + } + + spin_lock_init(&lg->lock); + + gc = &lg->chip; + gc->label = dev_name(dev); + gc->owner = THIS_MODULE; + gc->request = lp_gpio_request; + gc->free = lp_gpio_free; + gc->direction_input = lp_gpio_direction_input; + gc->direction_output = lp_gpio_direction_output; + gc->get = lp_gpio_get; + gc->set = lp_gpio_set; + gc->base = -1; + gc->ngpio = LP_NUM_GPIO; + gc->can_sleep = 0; + gc->dev = dev; + + /* set up interrupts */ + if (irq_rc && irq_rc->start) { + hwirq = irq_rc->start; + gc->to_irq = lp_gpio_to_irq; + + lg->domain = irq_domain_add_linear(NULL, LP_NUM_GPIO, + &lp_gpio_irq_ops, lg); + if (!lg->domain) + return -ENXIO; + + lp_gpio_irq_init_hw(lg); + + irq_set_handler_data(hwirq, lg); + irq_set_chained_handler(hwirq, lp_gpio_irq_handler); + } + + ret = gpiochip_add(gc); + if (ret) { + dev_err(dev, "failed adding lp-gpio chip\n"); + return ret; + } + pm_runtime_enable(dev); + + return 0; +} + +static int lp_gpio_runtime_suspend(struct device *dev) +{ + return 0; +} + +static int lp_gpio_runtime_resume(struct device *dev) +{ + return 0; +} + +static const struct dev_pm_ops lp_gpio_pm_ops = { + .runtime_suspend = lp_gpio_runtime_suspend, + .runtime_resume = lp_gpio_runtime_resume, +}; + +static const struct acpi_device_id lynxpoint_gpio_acpi_match[] = { + { "INT33C7", 0 }, + { } +}; +MODULE_DEVICE_TABLE(acpi, lynxpoint_gpio_acpi_match); + +static int lp_gpio_remove(struct platform_device *pdev) +{ + struct lp_gpio *lg = platform_get_drvdata(pdev); + int err; + err = gpiochip_remove(&lg->chip); + if (err) + dev_warn(&pdev->dev, "failed to remove gpio_chip.\n"); + platform_set_drvdata(pdev, NULL); + return 0; +} + +static struct platform_driver lp_gpio_driver = { + .probe = lp_gpio_probe, + .remove = lp_gpio_remove, + .driver = { + .name = "lp_gpio", + .owner = THIS_MODULE, + .pm = &lp_gpio_pm_ops, + .acpi_match_table = ACPI_PTR(lynxpoint_gpio_acpi_match), + }, +}; + +static int __init lp_gpio_init(void) +{ + return platform_driver_register(&lp_gpio_driver); +} + +subsys_initcall(lp_gpio_init); --- linux-ppc-3.8.0.orig/drivers/gpio/Kconfig +++ linux-ppc-3.8.0/drivers/gpio/Kconfig @@ -298,6 +298,14 @@ and write pin state) for GPIO implemented in a number of GE single board computers. +config GPIO_LYNXPOINT + bool "Intel Lynxpoint GPIO support" + depends on ACPI + select IRQ_DOMAIN + help + driver for GPIO functionality on Intel Lynxpoint PCH chipset + Requires ACPI device enumeration code to set up a platform device. + comment "I2C GPIO expanders:" config GPIO_ARIZONA --- linux-ppc-3.8.0.orig/drivers/ssb/driver_chipcommon_pmu.c +++ linux-ppc-3.8.0/drivers/ssb/driver_chipcommon_pmu.c @@ -675,3 +675,32 @@ return 0; } } + +void ssb_pmu_spuravoid_pllupdate(struct ssb_chipcommon *cc, int spuravoid) +{ + u32 pmu_ctl = 0; + + switch (cc->dev->bus->chip_id) { + case 0x4322: + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL0, 0x11100070); + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL1, 0x1014140a); + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL5, 0x88888854); + if (spuravoid == 1) + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL2, 0x05201828); + else + ssb_chipco_pll_write(cc, SSB_PMU1_PLLCTL2, 0x05001828); + pmu_ctl = SSB_CHIPCO_PMU_CTL_PLL_UPD; + break; + case 43222: + /* TODO: BCM43222 requires updating PLLs too */ + return; + default: + ssb_printk(KERN_ERR PFX + "Unknown spuravoidance settings for chip 0x%04X, not changing PLL\n", + cc->dev->bus->chip_id); + return; + } + + chipco_set32(cc, SSB_CHIPCO_PMU_CTL, pmu_ctl); +} +EXPORT_SYMBOL_GPL(ssb_pmu_spuravoid_pllupdate); --- linux-ppc-3.8.0.orig/drivers/pnp/isapnp/core.c +++ linux-ppc-3.8.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,16 @@ return 0; } +static void __init async_isapnp_init(void *unused, async_cookie_t cookie) +{ + (void)real_isapnp_init(); +} + +static int __init isapnp_init(void) +{ + async_schedule(async_isapnp_init, NULL); + return 0; +} device_initcall(isapnp_init); /* format is: noisapnp */ --- linux-ppc-3.8.0.orig/drivers/rtc/rtc-twl.c +++ linux-ppc-3.8.0/drivers/rtc/rtc-twl.c @@ -523,6 +523,7 @@ } platform_set_drvdata(pdev, rtc); + device_init_wakeup(&pdev->dev, 1); return 0; out2: --- linux-ppc-3.8.0.orig/drivers/rtc/rtc-rv3029c2.c +++ linux-ppc-3.8.0/drivers/rtc/rtc-rv3029c2.c @@ -310,7 +310,7 @@ dev_dbg(&client->dev, "alarm IRQ armed\n"); } else { /* disable AIE irq */ - ret = rv3029c2_rtc_i2c_alarm_set_irq(client, 1); + ret = rv3029c2_rtc_i2c_alarm_set_irq(client, 0); if (ret) return ret; --- linux-ppc-3.8.0.orig/drivers/rtc/rtc-pcf2123.c +++ linux-ppc-3.8.0/drivers/rtc/rtc-pcf2123.c @@ -265,6 +265,7 @@ if (!(rxbuf[0] & 0x20)) { dev_err(&spi->dev, "chip not found\n"); + ret = -ENODEV; goto kfree_exit; } --- linux-ppc-3.8.0.orig/drivers/rtc/rtc-at91rm9200.c +++ linux-ppc-3.8.0/drivers/rtc/rtc-at91rm9200.c @@ -298,7 +298,7 @@ if (ret) { printk(KERN_ERR "at91_rtc: IRQ %d already in use.\n", irq); - return ret; + goto err_unmap; } /* cpu init code should really have flagged this device as @@ -310,13 +310,20 @@ rtc = rtc_device_register(pdev->name, &pdev->dev, &at91_rtc_ops, THIS_MODULE); if (IS_ERR(rtc)) { - free_irq(irq, pdev); - return PTR_ERR(rtc); + ret = PTR_ERR(rtc); + goto err_free_irq; } platform_set_drvdata(pdev, rtc); printk(KERN_INFO "AT91 Real Time Clock driver.\n"); return 0; + +err_free_irq: + free_irq(irq, pdev); +err_unmap: + iounmap(at91_rtc_regs); + + return ret; } /* @@ -333,6 +340,7 @@ free_irq(irq, pdev); rtc_device_unregister(rtc); + iounmap(at91_rtc_regs); platform_set_drvdata(pdev, NULL); return 0; --- linux-ppc-3.8.0.orig/drivers/rtc/rtc-mv.c +++ linux-ppc-3.8.0/drivers/rtc/rtc-mv.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -41,6 +42,7 @@ struct rtc_device *rtc; void __iomem *ioaddr; int irq; + struct clk *clk; }; static int mv_rtc_set_time(struct device *dev, struct rtc_time *tm) @@ -221,6 +223,7 @@ struct rtc_plat_data *pdata; resource_size_t size; u32 rtc_time; + int ret = 0; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) @@ -239,11 +242,17 @@ if (!pdata->ioaddr) return -ENOMEM; + pdata->clk = devm_clk_get(&pdev->dev, NULL); + /* Not all SoCs require a clock.*/ + if (!IS_ERR(pdata->clk)) + clk_prepare_enable(pdata->clk); + /* make sure the 24 hours mode is enabled */ rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS); if (rtc_time & RTC_HOURS_12H_MODE) { dev_err(&pdev->dev, "24 Hours mode not supported.\n"); - return -EINVAL; + ret = -EINVAL; + goto out; } /* make sure it is actually functional */ @@ -252,7 +261,8 @@ rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS); if (rtc_time == 0x01000000) { dev_err(&pdev->dev, "internal RTC not ticking\n"); - return -ENODEV; + ret = -ENODEV; + goto out; } } @@ -268,8 +278,10 @@ } else pdata->rtc = rtc_device_register(pdev->name, &pdev->dev, &mv_rtc_ops, THIS_MODULE); - if (IS_ERR(pdata->rtc)) - return PTR_ERR(pdata->rtc); + if (IS_ERR(pdata->rtc)) { + ret = PTR_ERR(pdata->rtc); + goto out; + } if (pdata->irq >= 0) { writel(0, pdata->ioaddr + RTC_ALARM_INTERRUPT_MASK_REG_OFFS); @@ -282,6 +294,11 @@ } return 0; +out: + if (!IS_ERR(pdata->clk)) + clk_disable_unprepare(pdata->clk); + + return ret; } static int __exit mv_rtc_remove(struct platform_device *pdev) @@ -292,6 +309,9 @@ device_init_wakeup(&pdev->dev, 0); rtc_device_unregister(pdata->rtc); + if (!IS_ERR(pdata->clk)) + clk_disable_unprepare(pdata->clk); + return 0; } --- linux-ppc-3.8.0.orig/drivers/rtc/rtc-cmos.c +++ linux-ppc-3.8.0/drivers/rtc/rtc-cmos.c @@ -805,9 +805,8 @@ mask = RTC_IRQMASK; tmp &= ~mask; CMOS_WRITE(tmp, RTC_CONTROL); + hpet_mask_rtc_irq_bit(mask); - /* shut down hpet emulation - we don't need it for alarm */ - hpet_mask_rtc_irq_bit(RTC_PIE|RTC_AIE|RTC_UIE); cmos_checkintr(cmos, tmp); } spin_unlock_irq(&rtc_lock); @@ -872,6 +871,7 @@ rtc_update_irq(cmos->rtc, 1, mask); tmp &= ~RTC_AIE; hpet_mask_rtc_irq_bit(RTC_AIE); + hpet_rtc_timer_init(); } while (mask & RTC_AIE); spin_unlock_irq(&rtc_lock); } --- linux-ppc-3.8.0.orig/drivers/connector/cn_proc.c +++ linux-ppc-3.8.0/drivers/connector/cn_proc.c @@ -313,6 +313,12 @@ (task_active_pid_ns(current) != &init_pid_ns)) return; + /* Can only change if privileged. */ + if (!capable(CAP_NET_ADMIN)) { + err = EPERM; + goto out; + } + mc_op = (enum proc_cn_mcast_op *)msg->data; switch (*mc_op) { case PROC_CN_MCAST_LISTEN: @@ -325,6 +331,8 @@ err = EINVAL; break; } + +out: cn_proc_ack(err, msg->seq, msg->ack); } --- linux-ppc-3.8.0.orig/drivers/of/fdt.c +++ linux-ppc-3.8.0/drivers/of/fdt.c @@ -392,6 +392,8 @@ mem = (unsigned long) dt_alloc(size + 4, __alignof__(struct device_node)); + memset((void *)mem, 0, size); + ((__be32 *)mem)[size / 4] = cpu_to_be32(0xdeadbeef); pr_debug(" unflattening %lx...\n", mem); --- linux-ppc-3.8.0.orig/drivers/of/of_mdio.c +++ linux-ppc-3.8.0/drivers/of/of_mdio.c @@ -198,3 +198,17 @@ return IS_ERR(phy) ? NULL : phy; } EXPORT_SYMBOL(of_phy_connect_fixed_link); + +/* XXX add comment */ +struct phy_device *of_phy_attach(struct net_device *dev, + struct device_node *phy_np, u32 flags, + phy_interface_t iface) +{ + struct phy_device *phy = of_phy_find_device(phy_np); + + if (!phy) + return NULL; + + return phy_attach_direct(dev, phy, flags, iface) ? NULL : phy; +} +EXPORT_SYMBOL(of_phy_attach); --- linux-ppc-3.8.0.orig/drivers/watchdog/watchdog_dev.c +++ linux-ppc-3.8.0/drivers/watchdog/watchdog_dev.c @@ -524,6 +524,7 @@ int err, devno; if (watchdog->id == 0) { + old_wdd = watchdog; watchdog_miscdev.parent = watchdog->parent; err = misc_register(&watchdog_miscdev); if (err != 0) { @@ -532,9 +533,9 @@ if (err == -EBUSY) pr_err("%s: a legacy watchdog module is probably present.\n", watchdog->info->identity); + old_wdd = NULL; return err; } - old_wdd = watchdog; } /* Fill in the data structures */ --- linux-ppc-3.8.0.orig/drivers/watchdog/sp5100_tco.c +++ linux-ppc-3.8.0/drivers/watchdog/sp5100_tco.c @@ -40,13 +40,12 @@ #include "sp5100_tco.h" /* Module and version information */ -#define TCO_VERSION "0.03" +#define TCO_VERSION "0.05" #define TCO_MODULE_NAME "SP5100 TCO timer" #define TCO_DRIVER_NAME TCO_MODULE_NAME ", v" TCO_VERSION /* internal variables */ static u32 tcobase_phys; -static u32 resbase_phys; static u32 tco_wdt_fired; static void __iomem *tcobase; static unsigned int pm_iobase; @@ -54,10 +53,6 @@ static unsigned long timer_alive; static char tco_expect_close; static struct pci_dev *sp5100_tco_pci; -static struct resource wdt_res = { - .name = "Watchdog Timer", - .flags = IORESOURCE_MEM, -}; /* the watchdog platform device */ static struct platform_device *sp5100_tco_platform_device; @@ -75,12 +70,6 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started." " (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); -static unsigned int force_addr; -module_param(force_addr, uint, 0); -MODULE_PARM_DESC(force_addr, "Force the use of specified MMIO address." - " ONLY USE THIS PARAMETER IF YOU REALLY KNOW" - " WHAT YOU ARE DOING (default=none)"); - /* * Some TCO specific functions */ @@ -176,39 +165,6 @@ } } -static void tco_timer_disable(void) -{ - int val; - - if (sp5100_tco_pci->revision >= 0x40) { - /* For SB800 or later */ - /* Enable watchdog decode bit and Disable watchdog timer */ - outb(SB800_PM_WATCHDOG_CONTROL, SB800_IO_PM_INDEX_REG); - val = inb(SB800_IO_PM_DATA_REG); - val |= SB800_PCI_WATCHDOG_DECODE_EN; - val |= SB800_PM_WATCHDOG_DISABLE; - outb(val, SB800_IO_PM_DATA_REG); - } else { - /* For SP5100 or SB7x0 */ - /* Enable watchdog decode bit */ - pci_read_config_dword(sp5100_tco_pci, - SP5100_PCI_WATCHDOG_MISC_REG, - &val); - - val |= SP5100_PCI_WATCHDOG_DECODE_EN; - - pci_write_config_dword(sp5100_tco_pci, - SP5100_PCI_WATCHDOG_MISC_REG, - val); - - /* Disable Watchdog timer */ - outb(SP5100_PM_WATCHDOG_CONTROL, SP5100_IO_PM_INDEX_REG); - val = inb(SP5100_IO_PM_DATA_REG); - val |= SP5100_PM_WATCHDOG_DISABLE; - outb(val, SP5100_IO_PM_DATA_REG); - } -} - /* * /dev/watchdog handling */ @@ -459,74 +415,8 @@ } else pr_debug("SBResource_MMIO is disabled(0x%04x)\n", val); - /* - * Lastly re-programming the watchdog timer MMIO address, - * This method is a last resort... - * - * Before re-programming, to ensure that the watchdog timer - * is disabled, disable the watchdog timer. - */ - tco_timer_disable(); - - if (force_addr) { - /* - * Force the use of watchdog timer MMIO address, and aligned to - * 8byte boundary. - */ - force_addr &= ~0x7; - val = force_addr; - - pr_info("Force the use of 0x%04x as MMIO address\n", val); - } else { - /* - * Get empty slot into the resource tree for watchdog timer. - */ - if (allocate_resource(&iomem_resource, - &wdt_res, - SP5100_WDT_MEM_MAP_SIZE, - 0xf0000000, - 0xfffffff8, - 0x8, - NULL, - NULL)) { - pr_err("MMIO allocation failed\n"); - goto unreg_region; - } - - val = resbase_phys = wdt_res.start; - pr_debug("Got 0x%04x from resource tree\n", val); - } - - /* Restore to the low three bits, if chipset is SB8x0(or later) */ - if (sp5100_tco_pci->revision >= 0x40) { - u8 reserved_bit; - reserved_bit = inb(base_addr) & 0x7; - val |= (u32)reserved_bit; - } - - /* Re-programming the watchdog timer base address */ - outb(base_addr+0, index_reg); - /* Low three bits of BASE are reserved */ - outb((val >> 0) & 0xf8, data_reg); - outb(base_addr+1, index_reg); - outb((val >> 8) & 0xff, data_reg); - outb(base_addr+2, index_reg); - outb((val >> 16) & 0xff, data_reg); - outb(base_addr+3, index_reg); - outb((val >> 24) & 0xff, data_reg); - - /* - * Clear unnecessary the low three bits, - * if chipset is SB8x0(or later) - */ - if (sp5100_tco_pci->revision >= 0x40) - val &= ~0x7; - - if (!request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE, - dev_name)) { - pr_err("MMIO address 0x%04x already in use\n", val); - goto unreg_resource; - } + pr_notice("failed to find MMIO address, giving up.\n"); + goto unreg_region; setup_wdt: tcobase_phys = val; @@ -566,9 +456,6 @@ unreg_mem_region: release_mem_region(tcobase_phys, SP5100_WDT_MEM_MAP_SIZE); -unreg_resource: - if (resbase_phys) - release_resource(&wdt_res); unreg_region: release_region(pm_iobase, SP5100_PM_IOPORTS_SIZE); exit: @@ -578,7 +465,6 @@ static int sp5100_tco_init(struct platform_device *dev) { int ret; - char addr_str[16]; /* * Check whether or not the hardware watchdog is there. If found, then @@ -610,23 +496,14 @@ clear_bit(0, &timer_alive); /* Show module parameters */ - if (force_addr == tcobase_phys) - /* The force_addr is vaild */ - sprintf(addr_str, "0x%04x", force_addr); - else - strcpy(addr_str, "none"); - - pr_info("initialized (0x%p). heartbeat=%d sec (nowayout=%d, " - "force_addr=%s)\n", - tcobase, heartbeat, nowayout, addr_str); + pr_info("initialized (0x%p). heartbeat=%d sec (nowayout=%d)\n", + tcobase, heartbeat, nowayout); return 0; exit: iounmap(tcobase); release_mem_region(tcobase_phys, SP5100_WDT_MEM_MAP_SIZE); - if (resbase_phys) - release_resource(&wdt_res); release_region(pm_iobase, SP5100_PM_IOPORTS_SIZE); return ret; } @@ -641,8 +518,6 @@ misc_deregister(&sp5100_tco_miscdev); iounmap(tcobase); release_mem_region(tcobase_phys, SP5100_WDT_MEM_MAP_SIZE); - if (resbase_phys) - release_resource(&wdt_res); release_region(pm_iobase, SP5100_PM_IOPORTS_SIZE); } --- linux-ppc-3.8.0.orig/drivers/watchdog/sp5100_tco.h +++ linux-ppc-3.8.0/drivers/watchdog/sp5100_tco.h @@ -57,7 +57,7 @@ #define SB800_PM_WATCHDOG_DISABLE (1 << 2) #define SB800_PM_WATCHDOG_SECOND_RES (3 << 0) #define SB800_ACPI_MMIO_DECODE_EN (1 << 0) -#define SB800_ACPI_MMIO_SEL (1 << 2) +#define SB800_ACPI_MMIO_SEL (1 << 1) #define SB800_PM_WDT_MMIO_OFFSET 0xB00 --- linux-ppc-3.8.0.orig/drivers/watchdog/Kconfig +++ linux-ppc-3.8.0/drivers/watchdog/Kconfig @@ -79,6 +79,7 @@ config DA9055_WATCHDOG tristate "Dialog Semiconductor DA9055 Watchdog" depends on MFD_DA9055 + select WATCHDOG_CORE help If you say yes here you get support for watchdog on the Dialog Semiconductor DA9055 PMIC. --- linux-ppc-3.8.0.orig/drivers/usb/host/ehci-timer.c +++ linux-ppc-3.8.0/drivers/usb/host/ehci-timer.c @@ -113,15 +113,14 @@ if (want != actual) { - /* Poll again later */ - ehci_enable_event(ehci, EHCI_HRTIMER_POLL_ASS, true); - ++ehci->ASS_poll_count; - return; + /* Poll again later, but give up after about 20 ms */ + if (ehci->ASS_poll_count++ < 20) { + ehci_enable_event(ehci, EHCI_HRTIMER_POLL_ASS, true); + return; + } + ehci_dbg(ehci, "Waited too long for the async schedule status (%x/%x), giving up\n", + want, actual); } - - if (ehci->ASS_poll_count > 20) - ehci_dbg(ehci, "ASS poll count reached %d\n", - ehci->ASS_poll_count); ehci->ASS_poll_count = 0; /* The status is up-to-date; restart or stop the schedule as needed */ @@ -160,14 +159,14 @@ if (want != actual) { - /* Poll again later */ - ehci_enable_event(ehci, EHCI_HRTIMER_POLL_PSS, true); - return; + /* Poll again later, but give up after about 20 ms */ + if (ehci->PSS_poll_count++ < 20) { + ehci_enable_event(ehci, EHCI_HRTIMER_POLL_PSS, true); + return; + } + ehci_dbg(ehci, "Waited too long for the periodic schedule status (%x/%x), giving up\n", + want, actual); } - - if (ehci->PSS_poll_count > 20) - ehci_dbg(ehci, "PSS poll count reached %d\n", - ehci->PSS_poll_count); ehci->PSS_poll_count = 0; /* The status is up-to-date; restart or stop the schedule as needed */ @@ -305,7 +304,7 @@ * (a) SMP races against real IAA firing and retriggering, and * (b) clean HC shutdown, when IAA watchdog was pending. */ - if (ehci->async_iaa) { + if (1) { u32 cmd, status; /* If we get here, IAA is *REALLY* late. It's barely --- linux-ppc-3.8.0.orig/drivers/usb/host/xhci.h +++ linux-ppc-3.8.0/drivers/usb/host/xhci.h @@ -206,8 +206,8 @@ /* bits 12:31 are reserved (and should be preserved on writes). */ /* IMAN - Interrupt Management Register */ -#define IMAN_IP (1 << 1) -#define IMAN_IE (1 << 0) +#define IMAN_IE (1 << 1) +#define IMAN_IP (1 << 0) /* USBSTS - USB status - status bitmasks */ /* HC not running - set to 1 when run/stop bit is cleared. */ @@ -972,6 +972,10 @@ __le32 flags; }; +/* Transfer event TRB length bit mask */ +/* bits 0:23 */ +#define EVENT_TRB_LEN(p) ((p) & 0xffffff) + /** Transfer Event bit fields **/ #define TRB_TO_EP_ID(p) (((p) >> 16) & 0x1f) @@ -1848,4 +1852,7 @@ struct xhci_slot_ctx *xhci_get_slot_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx); struct xhci_ep_ctx *xhci_get_ep_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx, unsigned int ep_index); +/* xHCI quirks */ +bool xhci_compliance_mode_recovery_timer_quirk_check(void); + #endif /* __LINUX_XHCI_HCD_H */ --- linux-ppc-3.8.0.orig/drivers/usb/host/ohci-hcd.c +++ linux-ppc-3.8.0/drivers/usb/host/ohci-hcd.c @@ -233,14 +233,14 @@ urb->start_frame = frame; } } else if (ed->type == PIPE_ISOCHRONOUS) { - u16 next = ohci_frame_no(ohci) + 2; + u16 next = ohci_frame_no(ohci) + 1; u16 frame = ed->last_iso + ed->interval; /* Behind the scheduling threshold? */ if (unlikely(tick_before(frame, next))) { /* USB_ISO_ASAP: Round up to the first available slot */ - if (urb->transfer_flags & URB_ISO_ASAP) + if (urb->transfer_flags & URB_ISO_ASAP) { frame += (next - frame + ed->interval - 1) & -ed->interval; @@ -248,21 +248,25 @@ * Not ASAP: Use the next slot in the stream. If * the entire URB falls before the threshold, fail. */ - else if (tick_before(frame + ed->interval * + } else { + if (tick_before(frame + ed->interval * (urb->number_of_packets - 1), next)) { - retval = -EXDEV; - usb_hcd_unlink_urb_from_ep(hcd, urb); - goto fail; - } + retval = -EXDEV; + usb_hcd_unlink_urb_from_ep(hcd, urb); + goto fail; + } - /* - * Some OHCI hardware doesn't handle late TDs - * correctly. After retiring them it proceeds to - * the next ED instead of the next TD. Therefore - * we have to omit the late TDs entirely. - */ - urb_priv->td_cnt = DIV_ROUND_UP(next - frame, - ed->interval); + /* + * Some OHCI hardware doesn't handle late TDs + * correctly. After retiring them it proceeds + * to the next ED instead of the next TD. + * Therefore we have to omit the late TDs + * entirely. + */ + urb_priv->td_cnt = DIV_ROUND_UP( + (u16) (next - frame), + ed->interval); + } } urb->start_frame = frame; } --- linux-ppc-3.8.0.orig/drivers/usb/host/ehci-sched.c +++ linux-ppc-3.8.0/drivers/usb/host/ehci-sched.c @@ -213,7 +213,7 @@ } static const unsigned char -max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 125, 25 }; +max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 30, 0 }; /* carryover low/fullspeed bandwidth that crosses uframe boundries */ static inline void carryover_tt_bandwidth(unsigned short tt_usecs[8]) @@ -1214,6 +1214,7 @@ memset (itd, 0, sizeof *itd); itd->itd_dma = itd_dma; + itd->frame = 9999; /* an invalid value */ list_add (&itd->itd_list, &sched->td_list); } spin_unlock_irqrestore (&ehci->lock, flags); @@ -1393,21 +1394,20 @@ /* Behind the scheduling threshold? */ if (unlikely(start < next)) { + unsigned now2 = (now - base) & (mod - 1); /* USB_ISO_ASAP: Round up to the first available slot */ if (urb->transfer_flags & URB_ISO_ASAP) start += (next - start + period - 1) & -period; /* - * Not ASAP: Use the next slot in the stream. If - * the entire URB falls before the threshold, fail. + * Not ASAP: Use the next slot in the stream, + * no matter what. */ - else if (start + span - period < next) { - ehci_dbg(ehci, "iso urb late %p (%u+%u < %u)\n", + else if (start + span - period < now2) { + ehci_dbg(ehci, "iso underrun %p (%u+%u < %u)\n", urb, start + base, - span - period, next + base); - status = -EXDEV; - goto fail; + span - period, now2 + base); } } @@ -1915,6 +1915,7 @@ memset (sitd, 0, sizeof *sitd); sitd->sitd_dma = sitd_dma; + sitd->frame = 9999; /* an invalid value */ list_add (&sitd->sitd_list, &iso_sched->td_list); } --- linux-ppc-3.8.0.orig/drivers/usb/host/xhci-ring.c +++ linux-ppc-3.8.0/drivers/usb/host/xhci-ring.c @@ -434,7 +434,7 @@ /* A ring has pending URBs if its TD list is not empty */ if (!(ep->ep_state & EP_HAS_STREAMS)) { - if (!(list_empty(&ep->ring->td_list))) + if (ep->ring && !(list_empty(&ep->ring->td_list))) xhci_ring_ep_doorbell(xhci, slot_id, ep_index, 0); return; } @@ -2027,8 +2027,8 @@ if (event_trb != ep_ring->dequeue && event_trb != td->last_trb) td->urb->actual_length = - td->urb->transfer_buffer_length - - TRB_LEN(le32_to_cpu(event->transfer_len)); + td->urb->transfer_buffer_length - + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); else td->urb->actual_length = 0; @@ -2060,7 +2060,7 @@ /* Maybe the event was for the data stage? */ td->urb->actual_length = td->urb->transfer_buffer_length - - TRB_LEN(le32_to_cpu(event->transfer_len)); + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); xhci_dbg(xhci, "Waiting for status " "stage event\n"); return 0; @@ -2096,7 +2096,7 @@ /* handle completion code */ switch (trb_comp_code) { case COMP_SUCCESS: - if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) { + if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) { frame->status = 0; break; } @@ -2141,7 +2141,7 @@ len += TRB_LEN(le32_to_cpu(cur_trb->generic.field[2])); } len += TRB_LEN(le32_to_cpu(cur_trb->generic.field[2])) - - TRB_LEN(le32_to_cpu(event->transfer_len)); + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); if (trb_comp_code != COMP_STOP_INVAL) { frame->actual_length = len; @@ -2199,7 +2199,7 @@ case COMP_SUCCESS: /* Double check that the HW transferred everything. */ if (event_trb != td->last_trb || - TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) { + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) { xhci_warn(xhci, "WARN Successful completion " "on short TX\n"); if (td->urb->transfer_flags & URB_SHORT_NOT_OK) @@ -2227,18 +2227,18 @@ "%d bytes untransferred\n", td->urb->ep->desc.bEndpointAddress, td->urb->transfer_buffer_length, - TRB_LEN(le32_to_cpu(event->transfer_len))); + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len))); /* Fast path - was this the last TRB in the TD for this URB? */ if (event_trb == td->last_trb) { - if (TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) { + if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) { td->urb->actual_length = td->urb->transfer_buffer_length - - TRB_LEN(le32_to_cpu(event->transfer_len)); + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); if (td->urb->transfer_buffer_length < td->urb->actual_length) { xhci_warn(xhci, "HC gave bad length " "of %d bytes left\n", - TRB_LEN(le32_to_cpu(event->transfer_len))); + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len))); td->urb->actual_length = 0; if (td->urb->transfer_flags & URB_SHORT_NOT_OK) *status = -EREMOTEIO; @@ -2280,7 +2280,7 @@ if (trb_comp_code != COMP_STOP_INVAL) td->urb->actual_length += TRB_LEN(le32_to_cpu(cur_trb->generic.field[2])) - - TRB_LEN(le32_to_cpu(event->transfer_len)); + EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)); } return finish_td(xhci, td, event_trb, event, ep, status, false); @@ -2368,7 +2368,7 @@ * transfer type */ case COMP_SUCCESS: - if (TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) + if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) == 0) break; if (xhci->quirks & XHCI_TRUST_TX_LENGTH) trb_comp_code = COMP_SHORT_TX; @@ -2461,14 +2461,21 @@ * TD list. */ if (list_empty(&ep_ring->td_list)) { - xhci_warn(xhci, "WARN Event TRB for slot %d ep %d " - "with no TDs queued?\n", - TRB_TO_SLOT_ID(le32_to_cpu(event->flags)), - ep_index); - xhci_dbg(xhci, "Event TRB with TRB type ID %u\n", - (le32_to_cpu(event->flags) & - TRB_TYPE_BITMASK)>>10); - xhci_print_trb_offsets(xhci, (union xhci_trb *) event); + /* + * A stopped endpoint may generate an extra completion + * event if the device was suspended. Don't print + * warnings. + */ + if (!(trb_comp_code == COMP_STOP || + trb_comp_code == COMP_STOP_INVAL)) { + xhci_warn(xhci, "WARN Event TRB for slot %d ep %d with no TDs queued?\n", + TRB_TO_SLOT_ID(le32_to_cpu(event->flags)), + ep_index); + xhci_dbg(xhci, "Event TRB with TRB type ID %u\n", + (le32_to_cpu(event->flags) & + TRB_TYPE_BITMASK)>>10); + xhci_print_trb_offsets(xhci, (union xhci_trb *) event); + } if (ep->skip) { ep->skip = false; xhci_dbg(xhci, "td_list is empty while skip " --- linux-ppc-3.8.0.orig/drivers/usb/host/xhci-pci.c +++ linux-ppc-3.8.0/drivers/usb/host/xhci-pci.c @@ -93,7 +93,6 @@ } if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) { - xhci->quirks |= XHCI_SPURIOUS_SUCCESS; xhci->quirks |= XHCI_EP_LIMIT_QUIRK; xhci->limit_active_eps = 64; xhci->quirks |= XHCI_SW_BW_CHECKING; @@ -221,6 +220,14 @@ static int xhci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup) { struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct pci_dev *pdev = to_pci_dev(hcd->self.controller); + + /* + * Systems with the TI redriver that loses port status change events + * need to have the registers polled during D3, so avoid D3cold. + */ + if (xhci_compliance_mode_recovery_timer_quirk_check()) + pdev->no_d3cold = true; return xhci_suspend(xhci); } --- linux-ppc-3.8.0.orig/drivers/usb/host/ehci-q.c +++ linux-ppc-3.8.0/drivers/usb/host/ehci-q.c @@ -135,7 +135,7 @@ * qtd is updated in qh_completions(). Update the QH * overlay here. */ - if (cpu_to_hc32(ehci, qtd->qtd_dma) == qh->hw->hw_current) { + if (qh->hw->hw_token & ACTIVE_BIT(ehci)) { qh->hw->hw_qtd_next = qtd->hw_next; qtd = NULL; } @@ -449,11 +449,19 @@ else if (last_status == -EINPROGRESS && !urb->unlinked) continue; - /* qh unlinked; token in overlay may be most current */ - if (state == QH_STATE_IDLE - && cpu_to_hc32(ehci, qtd->qtd_dma) - == hw->hw_current) { + /* + * If this was the active qtd when the qh was unlinked + * and the overlay's token is active, then the overlay + * hasn't been written back to the qtd yet so use its + * token instead of the qtd's. After the qtd is + * processed and removed, the overlay won't be valid + * any more. + */ + if (state == QH_STATE_IDLE && + qh->qtd_list.next == &qtd->qtd_list && + (hw->hw_token & ACTIVE_BIT(ehci))) { token = hc32_to_cpu(ehci, hw->hw_token); + hw->hw_token &= ~ACTIVE_BIT(ehci); /* An unlink may leave an incomplete * async transaction in the TT buffer. @@ -1170,7 +1178,7 @@ struct ehci_qh *prev; /* Add to the end of the list of QHs waiting for the next IAAD */ - qh->qh_state = QH_STATE_UNLINK; + qh->qh_state = QH_STATE_UNLINK_WAIT; if (ehci->async_unlink) ehci->async_unlink_last->unlink_next = qh; else @@ -1213,9 +1221,19 @@ /* Do only the first waiting QH (nVidia bug?) */ qh = ehci->async_unlink; - ehci->async_iaa = qh; - ehci->async_unlink = qh->unlink_next; - qh->unlink_next = NULL; + + /* + * Intel (?) bug: The HC can write back the overlay region + * even after the IAA interrupt occurs. In self-defense, + * always go through two IAA cycles for each QH. + */ + if (qh->qh_state == QH_STATE_UNLINK_WAIT) { + qh->qh_state = QH_STATE_UNLINK; + } else { + ehci->async_iaa = qh; + ehci->async_unlink = qh->unlink_next; + qh->unlink_next = NULL; + } /* Make sure the unlinks are all visible to the hardware */ wmb(); @@ -1298,6 +1316,19 @@ } } +/* The root hub is suspended; unlink all the async QHs */ +static void unlink_empty_async_suspended(struct ehci_hcd *ehci) +{ + struct ehci_qh *qh; + + while (ehci->async->qh_next.qh) { + qh = ehci->async->qh_next.qh; + WARN_ON(!list_empty(&qh->qtd_list)); + single_unlink_async(ehci, qh); + } + start_iaa_cycle(ehci, false); +} + /* makes sure the async qh will become idle */ /* caller must own ehci->lock */ --- linux-ppc-3.8.0.orig/drivers/usb/host/xhci.c +++ linux-ppc-3.8.0/drivers/usb/host/xhci.c @@ -350,7 +350,7 @@ * generate interrupts. Don't even try to enable MSI. */ if (xhci->quirks & XHCI_BROKEN_MSI) - return 0; + goto legacy_irq; /* unregister the legacy interrupt */ if (hcd->irq) @@ -371,6 +371,7 @@ return -EINVAL; } + legacy_irq: /* fall back to legacy interrupt*/ ret = request_irq(pdev->irq, &usb_hcd_irq, IRQF_SHARED, hcd->irq_descr, hcd); @@ -465,7 +466,7 @@ * Systems: * Vendor: Hewlett-Packard -> System Models: Z420, Z620 and Z820 */ -static bool compliance_mode_recovery_timer_quirk_check(void) +bool xhci_compliance_mode_recovery_timer_quirk_check(void) { const char *dmi_product_name, *dmi_sys_vendor; @@ -516,7 +517,7 @@ xhci_dbg(xhci, "Finished xhci_init\n"); /* Initializing Compliance Mode Recovery Data If Needed */ - if (compliance_mode_recovery_timer_quirk_check()) { + if (xhci_compliance_mode_recovery_timer_quirk_check()) { xhci->quirks |= XHCI_COMP_MODE_QUIRK; compliance_mode_recovery_timer_init(xhci); } @@ -951,6 +952,7 @@ struct usb_hcd *hcd = xhci_to_hcd(xhci); struct usb_hcd *secondary_hcd; int retval = 0; + bool comp_timer_running = false; /* Wait a bit if either of the roothubs need to settle from the * transition into bus suspend. @@ -988,6 +990,13 @@ /* If restore operation fails, re-initialize the HC during resume */ if ((temp & STS_SRE) || hibernated) { + + 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"); + } + /* Let the USB core know _both_ roothubs lost power. */ usb_root_hub_lost_power(xhci->main_hcd->self.root_hub); usb_root_hub_lost_power(xhci->shared_hcd->self.root_hub); @@ -1030,6 +1039,8 @@ retval = xhci_init(hcd->primary_hcd); if (retval) return retval; + comp_timer_running = true; + xhci_dbg(xhci, "Start the primary HCD\n"); retval = xhci_run(hcd->primary_hcd); if (!retval) { @@ -1071,7 +1082,7 @@ * 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) + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running) compliance_mode_recovery_timer_init(xhci); /* Re-enable port polling. */ @@ -1156,9 +1167,6 @@ } xhci = hcd_to_xhci(hcd); - if (xhci->xhc_state & XHCI_STATE_HALTED) - return -ENODEV; - if (check_virt_dev) { if (!udev->slot_id || !xhci->devs[udev->slot_id]) { printk(KERN_DEBUG "xHCI %s called with unaddressed " @@ -1174,6 +1182,9 @@ } } + if (xhci->xhc_state & XHCI_STATE_HALTED) + return -ENODEV; + return 1; } @@ -4660,6 +4671,13 @@ get_quirks(dev, xhci); + /* In xhci controllers which follow xhci 1.0 spec gives a spurious + * success event after a short transfer. This quirk will ignore such + * spurious event. + */ + if (xhci->hci_version > 0x96) + xhci->quirks |= XHCI_SPURIOUS_SUCCESS; + /* Make sure the HC is halted. */ retval = xhci_halt(xhci); if (retval) --- linux-ppc-3.8.0.orig/drivers/usb/host/ehci-omap.c +++ linux-ppc-3.8.0/drivers/usb/host/ehci-omap.c @@ -288,7 +288,6 @@ { 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); @@ -298,13 +297,6 @@ 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; } @@ -372,7 +364,7 @@ .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-ppc-3.8.0.orig/drivers/usb/host/ehci-hub.c +++ linux-ppc-3.8.0/drivers/usb/host/ehci-hub.c @@ -328,7 +328,7 @@ ehci->rh_state = EHCI_RH_SUSPENDED; end_unlink_async(ehci); - unlink_empty_async(ehci); + unlink_empty_async_suspended(ehci); ehci_handle_intr_unlinks(ehci); end_free_itds(ehci); @@ -856,6 +856,7 @@ ehci->reset_done[wIndex] = jiffies + msecs_to_jiffies(20); usb_hcd_start_port_resume(&hcd->self, wIndex); + set_bit(wIndex, &ehci->resuming_ports); /* check the port again */ mod_timer(&ehci_to_hcd(ehci)->rh_timer, ehci->reset_done[wIndex]); --- linux-ppc-3.8.0.orig/drivers/usb/host/xhci-plat.c +++ linux-ppc-3.8.0/drivers/usb/host/xhci-plat.c @@ -179,6 +179,7 @@ usb_remove_hcd(hcd); iounmap(hcd->regs); + release_mem_region(hcd->rsrc_start, hcd->rsrc_len); usb_put_hcd(hcd); kfree(xhci); --- linux-ppc-3.8.0.orig/drivers/usb/host/ehci-hcd.c +++ linux-ppc-3.8.0/drivers/usb/host/ehci-hcd.c @@ -302,6 +302,7 @@ static void end_unlink_async(struct ehci_hcd *ehci); static void unlink_empty_async(struct ehci_hcd *ehci); +static void unlink_empty_async_suspended(struct ehci_hcd *ehci); static void ehci_work(struct ehci_hcd *ehci); static void start_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh); static void end_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh); @@ -669,9 +670,6 @@ if (retval) return retval; - if (ehci_is_TDI(ehci)) - tdi_reset(ehci); - ehci_reset(ehci); return 0; @@ -748,11 +746,9 @@ /* guard against (alleged) silicon errata */ if (cmd & CMD_IAAD) ehci_dbg(ehci, "IAA with IAAD still set?\n"); - if (ehci->async_iaa) { + if (ehci->async_iaa) COUNT(ehci->stats.iaa); - end_unlink_async(ehci); - } else - ehci_dbg(ehci, "IAA with nothing unlinked?\n"); + end_unlink_async(ehci); } /* remote wakeup [4.3.1] */ --- linux-ppc-3.8.0.orig/drivers/usb/host/uhci-q.c +++ linux-ppc-3.8.0/drivers/usb/host/uhci-q.c @@ -1287,7 +1287,7 @@ return -EINVAL; /* Can't change the period */ } else { - next = uhci->frame_number + 2; + next = uhci->frame_number + 1; /* Find the next unused frame */ if (list_empty(&qh->queue)) { --- linux-ppc-3.8.0.orig/drivers/usb/host/uhci-hub.c +++ linux-ppc-3.8.0/drivers/usb/host/uhci-hub.c @@ -225,7 +225,8 @@ /* auto-stop if nothing connected for 1 second */ if (any_ports_active(uhci)) uhci->rh_state = UHCI_RH_RUNNING; - else if (time_after_eq(jiffies, uhci->auto_stop_time)) + else if (time_after_eq(jiffies, uhci->auto_stop_time) && + !uhci->wait_for_hp) suspend_rh(uhci, UHCI_RH_AUTO_STOPPED); break; --- linux-ppc-3.8.0.orig/drivers/usb/host/xhci-mem.c +++ linux-ppc-3.8.0/drivers/usb/host/xhci-mem.c @@ -369,6 +369,10 @@ ctx->size += CTX_SIZE(xhci->hcc_params); ctx->bytes = dma_pool_alloc(xhci->device_pool, flags, &ctx->dma); + if (!ctx->bytes) { + kfree(ctx); + return NULL; + } memset(ctx->bytes, 0, ctx->size); return ctx; } @@ -1443,15 +1447,17 @@ ep_ctx->ep_info2 |= cpu_to_le32(xhci_get_endpoint_type(udev, ep)); /* Set the max packet size and max burst */ + max_packet = GET_MAX_PACKET(usb_endpoint_maxp(&ep->desc)); + max_burst = 0; switch (udev->speed) { case USB_SPEED_SUPER: - max_packet = usb_endpoint_maxp(&ep->desc); - ep_ctx->ep_info2 |= cpu_to_le32(MAX_PACKET(max_packet)); /* dig out max burst from ep companion desc */ - max_packet = ep->ss_ep_comp.bMaxBurst; - ep_ctx->ep_info2 |= cpu_to_le32(MAX_BURST(max_packet)); + max_burst = ep->ss_ep_comp.bMaxBurst; break; case USB_SPEED_HIGH: + /* Some devices get this wrong */ + if (usb_endpoint_xfer_bulk(&ep->desc)) + max_packet = 512; /* bits 11:12 specify the number of additional transaction * opportunities per microframe (USB 2.0, section 9.6.6) */ @@ -1459,17 +1465,16 @@ usb_endpoint_xfer_int(&ep->desc)) { max_burst = (usb_endpoint_maxp(&ep->desc) & 0x1800) >> 11; - ep_ctx->ep_info2 |= cpu_to_le32(MAX_BURST(max_burst)); } - /* Fall through */ + break; case USB_SPEED_FULL: case USB_SPEED_LOW: - max_packet = GET_MAX_PACKET(usb_endpoint_maxp(&ep->desc)); - ep_ctx->ep_info2 |= cpu_to_le32(MAX_PACKET(max_packet)); break; default: BUG(); } + ep_ctx->ep_info2 |= cpu_to_le32(MAX_PACKET(max_packet) | + MAX_BURST(max_burst)); max_esit_payload = xhci_get_max_esit_payload(xhci, udev, ep); ep_ctx->tx_info = cpu_to_le32(MAX_ESIT_PAYLOAD_FOR_EP(max_esit_payload)); @@ -1846,6 +1851,9 @@ } spin_unlock_irqrestore(&xhci->lock, flags); + if (!xhci->rh_bw) + goto no_bw; + num_ports = HCS_MAX_PORTS(xhci->hcs_params1); for (i = 0; i < num_ports; i++) { struct xhci_interval_bw_table *bwt = &xhci->rh_bw[i].bw_table; @@ -1864,6 +1872,7 @@ } } +no_bw: xhci->num_usb2_ports = 0; xhci->num_usb3_ports = 0; xhci->num_active_eps = 0; @@ -2275,6 +2284,9 @@ u32 page_size, temp; int i; + INIT_LIST_HEAD(&xhci->lpm_failed_devs); + INIT_LIST_HEAD(&xhci->cancel_cmd_list); + page_size = xhci_readl(xhci, &xhci->op_regs->page_size); xhci_dbg(xhci, "Supported page size register = 0x%x\n", page_size); for (i = 0; i < 16; i++) { @@ -2353,7 +2365,6 @@ 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); @@ -2464,8 +2475,6 @@ if (xhci_setup_port_arrays(xhci, flags)) goto fail; - INIT_LIST_HEAD(&xhci->lpm_failed_devs); - /* Enable USB 3.0 device notifications for function remote wake, which * is necessary for allowing USB 3.0 devices to do remote wakeup from * U3 (device suspend). --- linux-ppc-3.8.0.orig/drivers/usb/dwc3/gadget.c +++ linux-ppc-3.8.0/drivers/usb/dwc3/gadget.c @@ -256,6 +256,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; @@ -754,21 +755,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); @@ -1091,7 +1089,10 @@ * notion of current microframe. */ if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) { - dwc3_stop_active_transfer(dwc, dep->number); + if (list_empty(&dep->req_queued)) { + dwc3_stop_active_transfer(dwc, dep->number); + dep->flags = DWC3_EP_ENABLED; + } return 0; } @@ -1117,16 +1118,6 @@ dep->name); } - /* - * 3. Missed ISOC Handling. We need to start isoc transfer on the saved - * uframe number. - */ - if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && - (dep->flags & DWC3_EP_MISSED_ISOC)) { - __dwc3_gadget_start_isoc(dwc, dep, dep->current_uf); - dep->flags &= ~DWC3_EP_MISSED_ISOC; - } - return 0; } @@ -1544,6 +1535,7 @@ __dwc3_gadget_ep_disable(dwc->eps[0]); err0: + dwc->gadget_driver = NULL; spin_unlock_irqrestore(&dwc->lock, flags); return ret; @@ -1637,10 +1629,20 @@ for (epnum = 0; epnum < DWC3_ENDPOINTS_NUM; epnum++) { dep = dwc->eps[epnum]; - dwc3_free_trb_pool(dep); - if (epnum != 0 && epnum != 1) + /* + * Physical endpoints 0 and 1 are special; they form the + * bi-directional USB endpoint 0. + * + * For those two physical endpoints, we don't allocate a TRB + * pool nor do we add them the endpoints list. Due to that, we + * shouldn't do these two operations otherwise we would end up + * with all sorts of bugs when removing dwc3.ko. + */ + if (epnum != 0 && epnum != 1) { + dwc3_free_trb_pool(dep); list_del(&dep->endpoint.ep_list); + } kfree(dep); } @@ -1689,14 +1691,29 @@ if (trb_status == DWC3_TRBSTS_MISSED_ISOC) { dev_dbg(dwc->dev, "incomplete IN transfer %s\n", dep->name); - dep->current_uf = event->parameters & - ~(dep->interval - 1); + /* + * If missed isoc occurred and there is + * no request queued then issue END + * TRANSFER, so that core generates + * next xfernotready and we will issue + * a fresh START TRANSFER. + * If there are still queued request + * then wait, do not issue either END + * or UPDATE TRANSFER, just attach next + * request in request_list during + * giveback.If any future queued request + * is successfully transferred then we + * will issue UPDATE TRANSFER for all + * request in the request_list. + */ dep->flags |= DWC3_EP_MISSED_ISOC; } else { dev_err(dwc->dev, "incomplete IN transfer %s\n", dep->name); status = -ECONNRESET; } + } else { + dep->flags &= ~DWC3_EP_MISSED_ISOC; } } else { if (count && (event->status & DEPEVT_STATUS_SHORT)) @@ -1723,6 +1740,23 @@ break; } while (1); + if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && + list_empty(&dep->req_queued)) { + if (list_empty(&dep->request_list)) { + /* + * If there is no entry in request list then do + * not issue END TRANSFER now. Just set PENDING + * flag, so that END TRANSFER is issued when an + * entry is added into request list. + */ + dep->flags = DWC3_EP_PENDING_REQUEST; + } else { + dwc3_stop_active_transfer(dwc, dep->number); + dep->flags = DWC3_EP_ENABLED; + } + return 1; + } + if ((event->status & DEPEVT_STATUS_IOC) && (trb->ctrl & DWC3_TRB_CTRL_IOC)) return 0; @@ -2157,6 +2191,26 @@ break; } + /* Enable USB2 LPM Capability */ + + if ((dwc->revision > DWC3_REVISION_194A) + && (speed != DWC3_DCFG_SUPERSPEED)) { + reg = dwc3_readl(dwc->regs, DWC3_DCFG); + reg |= DWC3_DCFG_LPM_CAP; + dwc3_writel(dwc->regs, DWC3_DCFG, reg); + + reg = dwc3_readl(dwc->regs, DWC3_DCTL); + reg &= ~(DWC3_DCTL_HIRD_THRES_MASK | DWC3_DCTL_L1_HIBER_EN); + + /* + * TODO: This should be configurable. For now using + * maximum allowed HIRD threshold value of 0b1100 + */ + reg |= DWC3_DCTL_HIRD_THRES(12); + + dwc3_writel(dwc->regs, DWC3_DCTL, reg); + } + /* Recent versions support automatic phy suspend and don't need this */ if (dwc->revision < DWC3_REVISION_194A) { /* Suspend unneeded PHY */ @@ -2463,20 +2517,8 @@ DWC3_DEVTEN_DISCONNEVTEN); dwc3_writel(dwc->regs, DWC3_DEVTEN, reg); - /* Enable USB2 LPM and automatic phy suspend only on recent versions */ + /* automatic phy suspend only on recent versions */ if (dwc->revision >= DWC3_REVISION_194A) { - reg = dwc3_readl(dwc->regs, DWC3_DCFG); - reg |= DWC3_DCFG_LPM_CAP; - dwc3_writel(dwc->regs, DWC3_DCFG, reg); - - reg = dwc3_readl(dwc->regs, DWC3_DCTL); - reg &= ~(DWC3_DCTL_HIRD_THRES_MASK | DWC3_DCTL_L1_HIBER_EN); - - /* TODO: This should be configurable */ - reg |= DWC3_DCTL_HIRD_THRES(28); - - dwc3_writel(dwc->regs, DWC3_DCTL, reg); - dwc3_gadget_usb2_phy_suspend(dwc, false); dwc3_gadget_usb3_phy_suspend(dwc, false); } --- linux-ppc-3.8.0.orig/drivers/usb/dwc3/core.h +++ linux-ppc-3.8.0/drivers/usb/dwc3/core.h @@ -405,7 +405,6 @@ * @number: endpoint number (1 - 15) * @type: set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK * @resource_index: Resource transfer index - * @current_uf: Current uf received through last event parameter * @interval: the intervall on which the ISOC transfer is started * @name: a human readable name e.g. ep1out-bulk * @direction: true for TX, false for RX @@ -439,7 +438,6 @@ u8 number; u8 type; u8 resource_index; - u16 current_uf; u32 interval; char name[20]; @@ -732,8 +730,8 @@ struct dwc3_event_type { u32 is_devspec:1; - u32 type:6; - u32 reserved8_31:25; + u32 type:7; + u32 reserved8_31:24; } __packed; #define DWC3_DEPEVT_XFERCOMPLETE 0x01 --- linux-ppc-3.8.0.orig/drivers/usb/dwc3/dwc3-pci.c +++ linux-ppc-3.8.0/drivers/usb/dwc3/dwc3-pci.c @@ -198,9 +198,9 @@ { struct dwc3_pci *glue = pci_get_drvdata(pci); + platform_device_unregister(glue->dwc3); platform_device_unregister(glue->usb2_phy); platform_device_unregister(glue->usb3_phy); - platform_device_unregister(glue->dwc3); pci_set_drvdata(pci, NULL); pci_disable_device(pci); } --- linux-ppc-3.8.0.orig/drivers/usb/dwc3/core.c +++ linux-ppc-3.8.0/drivers/usb/dwc3/core.c @@ -575,6 +575,7 @@ break; } + dwc3_free_event_buffers(dwc); dwc3_core_exit(dwc); return 0; --- linux-ppc-3.8.0.orig/drivers/usb/misc/appledisplay.c +++ linux-ppc-3.8.0/drivers/usb/misc/appledisplay.c @@ -63,6 +63,7 @@ { APPLEDISPLAY_DEVICE(0x9219) }, { APPLEDISPLAY_DEVICE(0x921c) }, { APPLEDISPLAY_DEVICE(0x921d) }, + { APPLEDISPLAY_DEVICE(0x9236) }, /* Terminating entry */ { } --- linux-ppc-3.8.0.orig/drivers/usb/misc/adutux.c +++ linux-ppc-3.8.0/drivers/usb/misc/adutux.c @@ -829,7 +829,7 @@ /* let the user know what node this device is now attached to */ dev_info(&interface->dev, "ADU%d %s now attached to /dev/usb/adutux%d\n", - udev->descriptor.idProduct, dev->serial_number, + le16_to_cpu(udev->descriptor.idProduct), dev->serial_number, (dev->minor - ADU_MINOR_BASE)); exit: dbg(2," %s : leave, return value %p (dev)", __func__, dev); --- linux-ppc-3.8.0.orig/drivers/usb/misc/sisusbvga/sisusb.c +++ linux-ppc-3.8.0/drivers/usb/misc/sisusbvga/sisusb.c @@ -3247,6 +3247,7 @@ { USB_DEVICE(0x0711, 0x0903) }, { USB_DEVICE(0x0711, 0x0918) }, { USB_DEVICE(0x0711, 0x0920) }, + { USB_DEVICE(0x0711, 0x0950) }, { USB_DEVICE(0x182d, 0x021c) }, { USB_DEVICE(0x182d, 0x0269) }, { } --- linux-ppc-3.8.0.orig/drivers/usb/gadget/g_ffs.c +++ linux-ppc-3.8.0/drivers/usb/gadget/g_ffs.c @@ -357,7 +357,7 @@ goto error; gfs_dev_desc.iProduct = gfs_strings[USB_GADGET_PRODUCT_IDX].id; - for (i = func_num; --i; ) { + for (i = func_num; i--; ) { ret = functionfs_bind(ffs_tab[i].ffs_data, cdev); if (unlikely(ret < 0)) { while (++i < func_num) @@ -413,7 +413,7 @@ gether_cleanup(); gfs_ether_setup = false; - for (i = func_num; --i; ) + for (i = func_num; i--; ) if (ffs_tab[i].ffs_data) functionfs_unbind(ffs_tab[i].ffs_data); --- linux-ppc-3.8.0.orig/drivers/usb/gadget/f_mass_storage.c +++ linux-ppc-3.8.0/drivers/usb/gadget/f_mass_storage.c @@ -427,6 +427,7 @@ /* Caller must hold fsg->lock */ static void wakeup_thread(struct fsg_common *common) { + smp_wmb(); /* ensure the write of bh->state is complete */ /* Tell the main thread that something has happened */ common->thread_wakeup_needed = 1; if (common->thread_task) @@ -646,6 +647,7 @@ } __set_current_state(TASK_RUNNING); common->thread_wakeup_needed = 0; + smp_rmb(); /* ensure the latest bh->state is visible */ return rc; } --- linux-ppc-3.8.0.orig/drivers/usb/gadget/udc-core.c +++ linux-ppc-3.8.0/drivers/usb/gadget/udc-core.c @@ -265,7 +265,7 @@ usb_gadget_disconnect(udc->gadget); udc->driver->disconnect(udc->gadget); udc->driver->unbind(udc->gadget); - usb_gadget_udc_stop(udc->gadget, udc->driver); + usb_gadget_udc_stop(udc->gadget, NULL); } else { usb_gadget_stop(udc->gadget, udc->driver); } --- linux-ppc-3.8.0.orig/drivers/usb/musb/omap2430.c +++ linux-ppc-3.8.0/drivers/usb/musb/omap2430.c @@ -369,7 +369,7 @@ musb->xceiv = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); if (IS_ERR_OR_NULL(musb->xceiv)) { pr_err("HS USB OTG: no transceiver configured\n"); - return -ENODEV; + return -EPROBE_DEFER; } musb->isr = omap2430_musb_interrupt; --- linux-ppc-3.8.0.orig/drivers/usb/musb/davinci.c +++ linux-ppc-3.8.0/drivers/usb/musb/davinci.c @@ -380,11 +380,14 @@ { void __iomem *tibase = musb->ctrl_base; u32 revision; + int ret = -ENODEV; usb_nop_xceiv_register(); musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); - if (IS_ERR_OR_NULL(musb->xceiv)) + if (IS_ERR_OR_NULL(musb->xceiv)) { + ret = -EPROBE_DEFER; goto unregister; + } musb->mregs += DAVINCI_BASE_OFFSET; @@ -438,7 +441,7 @@ usb_put_phy(musb->xceiv); unregister: usb_nop_xceiv_unregister(); - return -ENODEV; + return ret; } static int davinci_musb_exit(struct musb *musb) --- linux-ppc-3.8.0.orig/drivers/usb/musb/musb_host.h +++ linux-ppc-3.8.0/drivers/usb/musb/musb_host.h @@ -74,6 +74,7 @@ u16 frame; /* for periodic schedule */ unsigned iso_idx; /* in urb->iso_frame_desc[] */ struct sg_mapping_iter sg_miter; /* for highmem in PIO mode */ + bool use_sg; /* to track urb using sglist */ }; /* map from control or bulk queue head to the first qh on that ring */ --- linux-ppc-3.8.0.orig/drivers/usb/musb/musb_core.c +++ linux-ppc-3.8.0/drivers/usb/musb/musb_core.c @@ -1993,6 +1993,7 @@ musb_platform_exit(musb); fail1: + pm_runtime_disable(musb->controller); dev_err(musb->controller, "musb_init_controller failed with status %d\n", status); --- linux-ppc-3.8.0.orig/drivers/usb/musb/ux500.c +++ linux-ppc-3.8.0/drivers/usb/musb/ux500.c @@ -61,7 +61,7 @@ musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); if (IS_ERR_OR_NULL(musb->xceiv)) { pr_err("HS USB OTG: no transceiver configured\n"); - return -ENODEV; + return -EPROBE_DEFER; } musb->isr = ux500_musb_interrupt; @@ -108,7 +108,7 @@ goto err3; } - ret = clk_enable(clk); + ret = clk_prepare_enable(clk); if (ret) { dev_err(&pdev->dev, "failed to enable clock\n"); goto err4; @@ -148,7 +148,7 @@ return 0; err5: - clk_disable(clk); + clk_disable_unprepare(clk); err4: clk_put(clk); @@ -168,7 +168,7 @@ struct ux500_glue *glue = platform_get_drvdata(pdev); platform_device_unregister(glue->musb); - clk_disable(glue->clk); + clk_disable_unprepare(glue->clk); clk_put(glue->clk); kfree(glue); @@ -182,7 +182,7 @@ struct musb *musb = glue_to_musb(glue); usb_phy_set_suspend(musb->xceiv, 1); - clk_disable(glue->clk); + clk_disable_unprepare(glue->clk); return 0; } @@ -193,7 +193,7 @@ struct musb *musb = glue_to_musb(glue); int ret; - ret = clk_enable(glue->clk); + ret = clk_prepare_enable(glue->clk); if (ret) { dev_err(dev, "failed to enable clock\n"); return ret; --- linux-ppc-3.8.0.orig/drivers/usb/musb/musb_host.c +++ linux-ppc-3.8.0/drivers/usb/musb/musb_host.c @@ -1212,7 +1212,6 @@ void __iomem *mbase = musb->mregs; struct dma_channel *dma; bool transfer_pending = false; - static bool use_sg; musb_ep_select(mbase, epnum); tx_csr = musb_readw(epio, MUSB_TXCSR); @@ -1443,9 +1442,9 @@ * NULL. */ if (!urb->transfer_buffer) - use_sg = true; + qh->use_sg = true; - if (use_sg) { + if (qh->use_sg) { /* sg_miter_start is already done in musb_ep_program */ if (!sg_miter_next(&qh->sg_miter)) { dev_err(musb->controller, "error: sg list empty\n"); @@ -1464,9 +1463,9 @@ qh->segsize = length; - if (use_sg) { + if (qh->use_sg) { if (offset + length >= urb->transfer_buffer_length) - use_sg = false; + qh->use_sg = false; } musb_ep_select(mbase, epnum); @@ -1532,7 +1531,6 @@ bool done = false; u32 status; struct dma_channel *dma; - static bool use_sg; unsigned int sg_flags = SG_MITER_ATOMIC | SG_MITER_TO_SG; musb_ep_select(mbase, epnum); @@ -1858,12 +1856,12 @@ * NULL. */ if (!urb->transfer_buffer) { - use_sg = true; + qh->use_sg = true; sg_miter_start(&qh->sg_miter, urb->sg, 1, sg_flags); } - if (use_sg) { + if (qh->use_sg) { if (!sg_miter_next(&qh->sg_miter)) { dev_err(musb->controller, "error: sg list empty\n"); sg_miter_stop(&qh->sg_miter); @@ -1893,8 +1891,8 @@ urb->actual_length += xfer_len; qh->offset += xfer_len; if (done) { - if (use_sg) - use_sg = false; + if (qh->use_sg) + qh->use_sg = false; if (urb->status == -EINPROGRESS) urb->status = status; --- linux-ppc-3.8.0.orig/drivers/usb/musb/musb_dsps.c +++ linux-ppc-3.8.0/drivers/usb/musb/musb_dsps.c @@ -419,7 +419,7 @@ usb_nop_xceiv_register(); musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); if (IS_ERR_OR_NULL(musb->xceiv)) - return -ENODEV; + return -EPROBE_DEFER; /* Returns zero if e.g. not clocked */ rev = dsps_readl(reg_base, wrp->revision); --- linux-ppc-3.8.0.orig/drivers/usb/musb/da8xx.c +++ linux-ppc-3.8.0/drivers/usb/musb/da8xx.c @@ -327,7 +327,7 @@ u8 devctl = musb_readb(mregs, MUSB_DEVCTL); int err; - err = musb->int_usb & USB_INTR_VBUSERROR; + err = musb->int_usb & MUSB_INTR_VBUSERROR; if (err) { /* * The Mentor core doesn't debounce VBUS as needed @@ -410,6 +410,7 @@ { void __iomem *reg_base = musb->ctrl_base; u32 rev; + int ret = -ENODEV; musb->mregs += DA8XX_MENTOR_CORE_OFFSET; @@ -420,8 +421,10 @@ usb_nop_xceiv_register(); musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); - if (IS_ERR_OR_NULL(musb->xceiv)) + if (IS_ERR_OR_NULL(musb->xceiv)) { + ret = -EPROBE_DEFER; goto fail; + } setup_timer(&otg_workaround, otg_timer, (unsigned long)musb); @@ -441,7 +444,7 @@ musb->isr = da8xx_musb_interrupt; return 0; fail: - return -ENODEV; + return ret; } static int da8xx_musb_exit(struct musb *musb) --- linux-ppc-3.8.0.orig/drivers/usb/musb/am35x.c +++ linux-ppc-3.8.0/drivers/usb/musb/am35x.c @@ -365,7 +365,7 @@ usb_nop_xceiv_register(); musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); if (IS_ERR_OR_NULL(musb->xceiv)) - return -ENODEV; + return -EPROBE_DEFER; setup_timer(&otg_workaround, otg_timer, (unsigned long) musb); --- linux-ppc-3.8.0.orig/drivers/usb/musb/tusb6010.c +++ linux-ppc-3.8.0/drivers/usb/musb/tusb6010.c @@ -1069,7 +1069,7 @@ usb_nop_xceiv_register(); musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); if (IS_ERR_OR_NULL(musb->xceiv)) - return -ENODEV; + return -EPROBE_DEFER; pdev = to_platform_device(musb->controller); --- linux-ppc-3.8.0.orig/drivers/usb/musb/blackfin.c +++ linux-ppc-3.8.0/drivers/usb/musb/blackfin.c @@ -406,7 +406,7 @@ musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); if (IS_ERR_OR_NULL(musb->xceiv)) { gpio_free(musb->config->gpio_vrsel); - return -ENODEV; + return -EPROBE_DEFER; } bfin_musb_reg_init(musb); --- linux-ppc-3.8.0.orig/drivers/usb/core/Makefile +++ linux-ppc-3.8.0/drivers/usb/core/Makefile @@ -7,6 +7,7 @@ usbcore-y := usb.o hub.o hcd.o urb.o message.o driver.o usbcore-y += config.o file.o buffer.o sysfs.o endpoint.o usbcore-y += devio.o notify.o generic.o quirks.o devices.o +usbcore-y += port.o usbcore-$(CONFIG_PCI) += hcd-pci.o usbcore-$(CONFIG_ACPI) += usb-acpi.o --- linux-ppc-3.8.0.orig/drivers/usb/core/hcd.c +++ linux-ppc-3.8.0/drivers/usb/core/hcd.c @@ -620,6 +620,10 @@ status = hcd->driver->hub_control (hcd, typeReq, wValue, wIndex, tbuf, wLength); + + if (typeReq == GetHubDescriptor) + usb_hub_adjust_deviceremovable(hcd->self.root_hub, + (struct usb_hub_descriptor *)tbuf); break; error: /* "protocol stall" on error */ @@ -2550,7 +2554,6 @@ } /* starting here, usbcore will pay attention to this root hub */ - rhdev->bus_mA = min(500u, hcd->power_budget); if ((retval = register_root_hub(hcd)) != 0) goto err_register_root_hub; --- linux-ppc-3.8.0.orig/drivers/usb/core/message.c +++ linux-ppc-3.8.0/drivers/usb/core/message.c @@ -1751,7 +1751,7 @@ } } - i = dev->bus_mA - cp->desc.bMaxPower * 2; + i = dev->bus_mA - usb_get_max_power(dev, cp); if (i < 0) dev_warn(&dev->dev, "new config #%d exceeds power " "limit by %dmA\n", --- linux-ppc-3.8.0.orig/drivers/usb/core/sysfs.c +++ linux-ppc-3.8.0/drivers/usb/core/sysfs.c @@ -17,7 +17,7 @@ #include "usb.h" /* Active configuration fields */ -#define usb_actconfig_show(field, multiplier, format_string) \ +#define usb_actconfig_show(field, format_string) \ static ssize_t show_##field(struct device *dev, \ struct device_attribute *attr, char *buf) \ { \ @@ -28,18 +28,31 @@ actconfig = udev->actconfig; \ if (actconfig) \ return sprintf(buf, format_string, \ - actconfig->desc.field * multiplier); \ + actconfig->desc.field); \ else \ return 0; \ } \ -#define usb_actconfig_attr(field, multiplier, format_string) \ -usb_actconfig_show(field, multiplier, format_string) \ -static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); - -usb_actconfig_attr(bNumInterfaces, 1, "%2d\n") -usb_actconfig_attr(bmAttributes, 1, "%2x\n") -usb_actconfig_attr(bMaxPower, 2, "%3dmA\n") +#define usb_actconfig_attr(field, format_string) \ + usb_actconfig_show(field, format_string) \ + static DEVICE_ATTR(field, S_IRUGO, show_##field, NULL); + +usb_actconfig_attr(bNumInterfaces, "%2d\n") +usb_actconfig_attr(bmAttributes, "%2x\n") + +static ssize_t show_bMaxPower(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_device *udev; + struct usb_host_config *actconfig; + + udev = to_usb_device(dev); + actconfig = udev->actconfig; + if (!actconfig) + return 0; + return sprintf(buf, "%dmA\n", usb_get_max_power(udev, actconfig)); +} +static DEVICE_ATTR(bMaxPower, S_IRUGO, show_bMaxPower, NULL); static ssize_t show_configuration_string(struct device *dev, struct device_attribute *attr, char *buf) @@ -56,7 +69,7 @@ static DEVICE_ATTR(configuration, S_IRUGO, show_configuration_string, NULL); /* configuration value is always present, and r/w */ -usb_actconfig_show(bConfigurationValue, 1, "%u\n"); +usb_actconfig_show(bConfigurationValue, "%u\n"); static ssize_t set_bConfigurationValue(struct device *dev, struct device_attribute *attr, --- linux-ppc-3.8.0.orig/drivers/usb/core/hub.h +++ linux-ppc-3.8.0/drivers/usb/core/hub.h @@ -0,0 +1,122 @@ +/* + * usb hub driver head file + * + * Copyright (C) 1999 Linus Torvalds + * Copyright (C) 1999 Johannes Erdfelt + * Copyright (C) 1999 Gregory P. Smith + * Copyright (C) 2001 Brad Hards (bhards@bigpond.net.au) + * Copyright (C) 2012 Intel Corp (tianyu.lan@intel.com) + * + * move struct usb_hub to this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#include +#include +#include +#include "usb.h" + +struct usb_hub { + struct device *intfdev; /* the "interface" device */ + struct usb_device *hdev; + struct kref kref; + struct urb *urb; /* for interrupt polling pipe */ + + /* buffer for urb ... with extra space in case of babble */ + u8 (*buffer)[8]; + union { + struct usb_hub_status hub; + struct usb_port_status port; + } *status; /* buffer for status reports */ + struct mutex status_mutex; /* for the status buffer */ + + int error; /* last reported error */ + int nerrors; /* track consecutive errors */ + + struct list_head event_list; /* hubs w/data or errs ready */ + unsigned long event_bits[1]; /* status change bitmask */ + unsigned long change_bits[1]; /* ports with logical connect + status change */ + unsigned long busy_bits[1]; /* ports being reset or + resumed */ + unsigned long removed_bits[1]; /* ports with a "removed" + device present */ + unsigned long wakeup_bits[1]; /* ports that have signaled + remote wakeup */ +#if USB_MAXCHILDREN > 31 /* 8*sizeof(unsigned long) - 1 */ +#error event_bits[] is too short! +#endif + + struct usb_hub_descriptor *descriptor; /* class descriptor */ + struct usb_tt tt; /* Transaction Translator */ + + unsigned mA_per_port; /* current for each child */ + + unsigned limited_power:1; + unsigned quiescing:1; + unsigned disconnected:1; + + unsigned quirk_check_port_auto_suspend:1; + + unsigned has_indicators:1; + u8 indicator[USB_MAXCHILDREN]; + struct delayed_work leds; + struct delayed_work init_work; + struct usb_port **ports; +}; + +/** + * struct usb port - kernel's representation of a usb port + * @child: usb device attatched to the port + * @dev: generic device interface + * @port_owner: port's owner + * @connect_type: port's connect type + * @portnum: port index num based one + * @power_is_on: port's power state + * @did_runtime_put: port has done pm_runtime_put(). + */ +struct usb_port { + struct usb_device *child; + struct device dev; + struct dev_state *port_owner; + enum usb_port_connect_type connect_type; + u8 portnum; + unsigned power_is_on:1; + unsigned did_runtime_put:1; +}; + +#define to_usb_port(_dev) \ + container_of(_dev, struct usb_port, dev) + +extern int usb_hub_create_port_device(struct usb_hub *hub, + int port1); +extern void usb_hub_remove_port_device(struct usb_hub *hub, + int port1); +extern int usb_hub_set_port_power(struct usb_device *hdev, + int port1, bool set); +extern struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev); +extern int hub_port_debounce(struct usb_hub *hub, int port1, + bool must_be_connected); +extern int usb_clear_port_feature(struct usb_device *hdev, + int port1, int feature); + +static inline int hub_port_debounce_be_connected(struct usb_hub *hub, + int port1) +{ + return hub_port_debounce(hub, port1, true); +} + +static inline int hub_port_debounce_be_stable(struct usb_hub *hub, + int port1) +{ + return hub_port_debounce(hub, port1, false); +} + --- linux-ppc-3.8.0.orig/drivers/usb/core/devices.c +++ linux-ppc-3.8.0/drivers/usb/core/devices.c @@ -316,17 +316,23 @@ */ static char *usb_dump_config_descriptor(char *start, char *end, const struct usb_config_descriptor *desc, - int active) + int active, int speed) { + int mul; + if (start > end) return start; + if (speed == USB_SPEED_SUPER) + mul = 8; + else + mul = 2; start += sprintf(start, format_config, /* mark active/actual/current cfg. */ active ? '*' : ' ', desc->bNumInterfaces, desc->bConfigurationValue, desc->bmAttributes, - desc->bMaxPower * 2); + desc->bMaxPower * mul); return start; } @@ -342,7 +348,8 @@ if (!config) /* getting these some in 2.3.7; none in 2.3.6 */ return start + sprintf(start, "(null Cfg. desc.)\n"); - start = usb_dump_config_descriptor(start, end, &config->desc, active); + start = usb_dump_config_descriptor(start, end, &config->desc, active, + speed); for (i = 0; i < USB_MAXIADS; i++) { if (config->intf_assoc[i] == NULL) break; --- linux-ppc-3.8.0.orig/drivers/usb/core/devio.c +++ linux-ppc-3.8.0/drivers/usb/core/devio.c @@ -738,6 +738,8 @@ index &= 0xff; switch (requesttype & USB_RECIP_MASK) { case USB_RECIP_ENDPOINT: + if ((index & ~USB_DIR_IN) == 0) + return 0; ret = findintfep(ps->dev, index); if (ret >= 0) ret = checkintf(ps, ret); --- linux-ppc-3.8.0.orig/drivers/usb/core/hub.c +++ linux-ppc-3.8.0/drivers/usb/core/hub.c @@ -26,11 +26,12 @@ #include #include #include +#include #include #include -#include "usb.h" +#include "hub.h" /* if we are in debug mode, always announce new devices */ #ifdef DEBUG @@ -42,62 +43,6 @@ #define USB_VENDOR_GENESYS_LOGIC 0x05e3 #define HUB_QUIRK_CHECK_PORT_AUTOSUSPEND 0x01 -struct usb_port { - struct usb_device *child; - struct device dev; - struct dev_state *port_owner; - enum usb_port_connect_type connect_type; -}; - -struct usb_hub { - struct device *intfdev; /* the "interface" device */ - struct usb_device *hdev; - struct kref kref; - struct urb *urb; /* for interrupt polling pipe */ - - /* buffer for urb ... with extra space in case of babble */ - char (*buffer)[8]; - union { - struct usb_hub_status hub; - struct usb_port_status port; - } *status; /* buffer for status reports */ - struct mutex status_mutex; /* for the status buffer */ - - int error; /* last reported error */ - int nerrors; /* track consecutive errors */ - - struct list_head event_list; /* hubs w/data or errs ready */ - unsigned long event_bits[1]; /* status change bitmask */ - unsigned long change_bits[1]; /* ports with logical connect - status change */ - unsigned long busy_bits[1]; /* ports being reset or - resumed */ - unsigned long removed_bits[1]; /* ports with a "removed" - device present */ - unsigned long wakeup_bits[1]; /* ports that have signaled - remote wakeup */ -#if USB_MAXCHILDREN > 31 /* 8*sizeof(unsigned long) - 1 */ -#error event_bits[] is too short! -#endif - - struct usb_hub_descriptor *descriptor; /* class descriptor */ - struct usb_tt tt; /* Transaction Translator */ - - unsigned mA_per_port; /* current for each child */ - - unsigned limited_power:1; - unsigned quiescing:1; - unsigned disconnected:1; - - unsigned quirk_check_port_auto_suspend:1; - - unsigned has_indicators:1; - u8 indicator[USB_MAXCHILDREN]; - struct delayed_work leds; - struct delayed_work init_work; - struct usb_port **ports; -}; - static inline int hub_is_superspeed(struct usb_device *hdev) { return (hdev->descriptor.bDeviceProtocol == USB_HUB_PR_SS); @@ -164,13 +109,10 @@ DECLARE_RWSEM(ehci_cf_port_reset_rwsem); EXPORT_SYMBOL_GPL(ehci_cf_port_reset_rwsem); -#define HUB_DEBOUNCE_TIMEOUT 1500 +#define HUB_DEBOUNCE_TIMEOUT 2000 #define HUB_DEBOUNCE_STEP 25 #define HUB_DEBOUNCE_STABLE 100 -#define to_usb_port(_dev) \ - container_of(_dev, struct usb_port, dev) - static int usb_reset_and_verify_device(struct usb_device *udev); static inline char *portspeed(struct usb_hub *hub, int portstatus) @@ -186,7 +128,7 @@ } /* Note that hdev or one of its children must be locked! */ -static struct usb_hub *hdev_to_hub(struct usb_device *hdev) +struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev) { if (!hdev || !hdev->actconfig || !hdev->maxchild) return NULL; @@ -360,7 +302,7 @@ if (!udev->lpm_capable || udev->speed != USB_SPEED_SUPER) return; - hub = hdev_to_hub(udev->parent); + hub = usb_hub_to_struct_hub(udev->parent); /* It doesn't take time to transition the roothub into U0, since it * doesn't have an upstream link. */ @@ -452,7 +394,7 @@ /* * USB 2.0 spec Section 11.24.2.2 */ -static int clear_port_feature(struct usb_device *hdev, int port1, int feature) +int usb_clear_port_feature(struct usb_device *hdev, int port1, int feature) { return usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), USB_REQ_CLEAR_FEATURE, USB_RT_PORT, feature, port1, @@ -645,7 +587,7 @@ void usb_kick_khubd(struct usb_device *hdev) { - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); if (hub) kick_khubd(hub); @@ -667,7 +609,7 @@ if (!hdev) return; - hub = hdev_to_hub(hdev); + hub = usb_hub_to_struct_hub(hdev); if (hub) { set_bit(portnum, hub->wakeup_bits); kick_khubd(hub); @@ -725,6 +667,15 @@ static inline int hub_clear_tt_buffer (struct usb_device *hdev, u16 devinfo, u16 tt) { + /* Need to clear both directions for control ep */ + if (((devinfo >> 11) & USB_ENDPOINT_XFERTYPE_MASK) == + USB_ENDPOINT_XFER_CONTROL) { + int status = usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + HUB_CLEAR_TT_BUFFER, USB_RT_PORT, + devinfo ^ 0x8000, tt, NULL, 0, 1000); + if (status) + return status; + } return usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), HUB_CLEAR_TT_BUFFER, USB_RT_PORT, devinfo, tt, NULL, 0, 1000); @@ -774,6 +725,32 @@ } /** + * usb_hub_set_port_power - control hub port's power state + * @hdev: target hub + * @port1: port index + * @set: expected status + * + * call this function to control port's power via setting or + * clearing the port's PORT_POWER feature. + */ +int usb_hub_set_port_power(struct usb_device *hdev, int port1, + bool set) +{ + int ret; + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); + struct usb_port *port_dev = hub->ports[port1 - 1]; + + if (set) + ret = set_port_feature(hdev, port1, USB_PORT_FEAT_POWER); + else + ret = usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_POWER); + + if (!ret) + port_dev->power_is_on = set; + return ret; +} + +/** * usb_hub_clear_tt_buffer - clear control/bulk TT state in high speed hub * @urb: an URB associated with the failed or incomplete split transaction * @@ -849,7 +826,11 @@ dev_dbg(hub->intfdev, "trying to enable port power on " "non-switchable hub\n"); for (port1 = 1; port1 <= hub->descriptor->bNbrPorts; port1++) - set_port_feature(hub->hdev, port1, USB_PORT_FEAT_POWER); + if (hub->ports[port1 - 1]->power_is_on) + set_port_feature(hub->hdev, port1, USB_PORT_FEAT_POWER); + else + usb_clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_POWER); /* Wait at least 100 msec for power to become stable */ delay = max(pgood_delay, (unsigned) 100); @@ -943,7 +924,7 @@ if (hub_is_superspeed(hub->hdev)) ret = hub_usb3_port_disable(hub, port1); else - ret = clear_port_feature(hdev, port1, + ret = usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_ENABLE); } if (ret) @@ -992,7 +973,7 @@ if (!udev->parent) /* Can't remove a root hub */ return -EINVAL; - hub = hdev_to_hub(udev->parent); + hub = usb_hub_to_struct_hub(udev->parent); intf = to_usb_interface(hub->intfdev); usb_autopm_get_interface(intf); @@ -1124,7 +1105,7 @@ * Do not disable USB3 protocol ports. */ if (!hub_is_superspeed(hdev)) { - clear_port_feature(hdev, port1, + usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_ENABLE); portstatus &= ~USB_PORT_STAT_ENABLE; } else { @@ -1136,18 +1117,18 @@ /* Clear status-change flags; we'll debounce later */ if (portchange & USB_PORT_STAT_C_CONNECTION) { need_debounce_delay = true; - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_CONNECTION); } if (portchange & USB_PORT_STAT_C_ENABLE) { need_debounce_delay = true; - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_ENABLE); } if ((portchange & USB_PORT_STAT_C_BH_RESET) && hub_is_superspeed(hub->hdev)) { need_debounce_delay = true; - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_BH_PORT_RESET); } /* We can forget about a "removed" device when there's a @@ -1181,10 +1162,16 @@ set_bit(port1, hub->change_bits); } else if (udev->persist_enabled) { + struct usb_port *port_dev = hub->ports[port1 - 1]; + #ifdef CONFIG_PM udev->reset_resume = 1; #endif - set_bit(port1, hub->change_bits); + /* Don't set the change_bits when the device + * was powered off. + */ + if (port_dev->power_is_on) + set_bit(port1, hub->change_bits); } else { /* The power session is gone; tell khubd */ @@ -1294,52 +1281,6 @@ return 0; } -static void usb_port_device_release(struct device *dev) -{ - struct usb_port *port_dev = to_usb_port(dev); - - kfree(port_dev); -} - -static void usb_hub_remove_port_device(struct usb_hub *hub, - int port1) -{ - device_unregister(&hub->ports[port1 - 1]->dev); -} - -struct device_type usb_port_device_type = { - .name = "usb_port", - .release = usb_port_device_release, -}; - -static int usb_hub_create_port_device(struct usb_hub *hub, - int port1) -{ - struct usb_port *port_dev = NULL; - int retval; - - port_dev = kzalloc(sizeof(*port_dev), GFP_KERNEL); - if (!port_dev) { - retval = -ENOMEM; - goto exit; - } - - hub->ports[port1 - 1] = port_dev; - port_dev->dev.parent = hub->intfdev; - port_dev->dev.type = &usb_port_device_type; - dev_set_name(&port_dev->dev, "port%d", port1); - - retval = device_register(&port_dev->dev); - if (retval) - goto error_register; - return 0; - -error_register: - put_device(&port_dev->dev); -exit: - return retval; -} - static int hub_configure(struct usb_hub *hub, struct usb_endpoint_descriptor *endpoint) { @@ -1351,6 +1292,8 @@ unsigned int pipe; int maxp, ret, i; char *message = "out of memory"; + unsigned unit_load; + unsigned full_load; hub->buffer = kmalloc(sizeof(*hub->buffer), GFP_KERNEL); if (!hub->buffer) { @@ -1397,6 +1340,13 @@ } wHubCharacteristics = le16_to_cpu(hub->descriptor->wHubCharacteristics); + if (hub_is_superspeed(hdev)) { + unit_load = 150; + full_load = 900; + } else { + unit_load = 100; + full_load = 500; + } /* FIXME for USB 3.0, skip for now */ if ((wHubCharacteristics & HUB_CHAR_COMPOUND) && @@ -1516,40 +1466,44 @@ goto fail; } le16_to_cpus(&hubstatus); + hcd = bus_to_hcd(hdev->bus); if (hdev == hdev->bus->root_hub) { - if (hdev->bus_mA == 0 || hdev->bus_mA >= 500) - hub->mA_per_port = 500; + if (hcd->power_budget > 0) + hdev->bus_mA = hcd->power_budget; + else + hdev->bus_mA = full_load * hdev->maxchild; + if (hdev->bus_mA >= full_load) + hub->mA_per_port = full_load; else { hub->mA_per_port = hdev->bus_mA; hub->limited_power = 1; } } else if ((hubstatus & (1 << USB_DEVICE_SELF_POWERED)) == 0) { + int remaining = hdev->bus_mA - + hub->descriptor->bHubContrCurrent; + dev_dbg(hub_dev, "hub controller current requirement: %dmA\n", hub->descriptor->bHubContrCurrent); hub->limited_power = 1; - if (hdev->maxchild > 0) { - int remaining = hdev->bus_mA - - hub->descriptor->bHubContrCurrent; - if (remaining < hdev->maxchild * 100) - dev_warn(hub_dev, + if (remaining < hdev->maxchild * unit_load) + dev_warn(hub_dev, "insufficient power available " "to use all downstream ports\n"); - hub->mA_per_port = 100; /* 7.2.1.1 */ - } + hub->mA_per_port = unit_load; /* 7.2.1 */ + } else { /* Self-powered external hub */ /* FIXME: What about battery-powered external hubs that * provide less current per port? */ - hub->mA_per_port = 500; + hub->mA_per_port = full_load; } - if (hub->mA_per_port < 500) + if (hub->mA_per_port < full_load) dev_dbg(hub_dev, "%umA bus power budget for each child\n", hub->mA_per_port); /* Update the HCD's internal representation of this hub before khubd * starts getting port status changes for devices under the hub. */ - hcd = bus_to_hcd(hdev->bus); if (hcd->driver->update_hub_device) { ret = hcd->driver->update_hub_device(hcd, hdev, &hub->tt, GFP_KERNEL); @@ -1605,6 +1559,8 @@ dev_err(hub->intfdev, "couldn't create port%d device.\n", i + 1); + usb_hub_adjust_deviceremovable(hdev, hub->descriptor); + hub_activate(hub, HUB_INIT); return 0; @@ -1659,6 +1615,7 @@ kfree(hub->status); kfree(hub->buffer); + pm_suspend_ignore_children(&intf->dev, false); kref_put(&hub->kref, hub_release); } @@ -1761,6 +1718,7 @@ usb_set_intfdata (intf, hub); intf->needs_remote_wakeup = 1; + pm_suspend_ignore_children(&intf->dev, true); if (hdev->speed == USB_SPEED_HIGH) highspeed_hubs++; @@ -1779,7 +1737,7 @@ hub_ioctl(struct usb_interface *intf, unsigned int code, void *user_data) { struct usb_device *hdev = interface_to_usbdev (intf); - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); /* assert ifno == 0 (part of hub spec) */ switch (code) { @@ -1825,7 +1783,7 @@ /* This assumes that devices not managed by the hub driver * will always have maxchild equal to 0. */ - *ppowner = &(hdev_to_hub(hdev)->ports[port1 - 1]->port_owner); + *ppowner = &(usb_hub_to_struct_hub(hdev)->ports[port1 - 1]->port_owner); return 0; } @@ -1862,7 +1820,7 @@ void usb_hub_release_all_ports(struct usb_device *hdev, struct dev_state *owner) { - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); int n; for (n = 0; n < hdev->maxchild; n++) { @@ -1879,13 +1837,13 @@ if (udev->state == USB_STATE_NOTATTACHED || !udev->parent) return false; - hub = hdev_to_hub(udev->parent); + hub = usb_hub_to_struct_hub(udev->parent); return !!hub->ports[udev->portnum - 1]->port_owner; } static void recursively_mark_NOTATTACHED(struct usb_device *udev) { - struct usb_hub *hub = hdev_to_hub(udev); + struct usb_hub *hub = usb_hub_to_struct_hub(udev); int i; for (i = 0; i < udev->maxchild; ++i) { @@ -2054,7 +2012,7 @@ void usb_disconnect(struct usb_device **pdev) { struct usb_device *udev = *pdev; - struct usb_hub *hub = hdev_to_hub(udev); + struct usb_hub *hub = usb_hub_to_struct_hub(udev); int i; /* mark the device as inactive, so any further urb submissions for @@ -2081,6 +2039,19 @@ usb_disable_device(udev, 0); usb_hcd_synchronize_unlinks(udev); + if (udev->parent) { + struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent); + struct usb_port *port_dev = hub->ports[udev->portnum - 1]; + + sysfs_remove_link(&udev->dev.kobj, "port"); + sysfs_remove_link(&port_dev->dev.kobj, "device"); + + if (!port_dev->did_runtime_put) + pm_runtime_put(&port_dev->dev); + else + port_dev->did_runtime_put = false; + } + usb_remove_ep_devs(&udev->ep0); usb_unlock_device(udev); @@ -2267,7 +2238,7 @@ if (!hdev) return; - hub = hdev_to_hub(udev->parent); + hub = usb_hub_to_struct_hub(udev->parent); wHubCharacteristics = le16_to_cpu(hub->descriptor->wHubCharacteristics); @@ -2373,6 +2344,26 @@ goto fail; } + /* Create link files between child device and usb port device. */ + if (udev->parent) { + struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent); + struct usb_port *port_dev = hub->ports[udev->portnum - 1]; + + err = sysfs_create_link(&udev->dev.kobj, + &port_dev->dev.kobj, "port"); + if (err) + goto fail; + + err = sysfs_create_link(&port_dev->dev.kobj, + &udev->dev.kobj, "device"); + if (err) { + sysfs_remove_link(&udev->dev.kobj, "port"); + goto fail; + } + + pm_runtime_get_sync(&port_dev->dev); + } + (void) usb_create_ep_devs(&udev->dev, &udev->ep0, udev); usb_mark_last_busy(udev); pm_runtime_put_sync_autosuspend(&udev->dev); @@ -2535,77 +2526,9 @@ 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. - */ - if (!warm) { - /* - * Some buggy devices can cause an NEC host controller - * to transition to the "Error" state after a hot port - * reset. This will show up as the port state in - * "Inactive", and the port may also report a - * disconnect. Forcing a warm port reset seems to make - * the device work. - * - * See https://bugzilla.kernel.org/show_bug.cgi?id=41752 - */ - if (hub_port_warm_reset_required(hub, portstatus)) { - int ret; - - if ((portchange & USB_PORT_STAT_C_CONNECTION)) - clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_CONNECTION); - if (portchange & USB_PORT_STAT_C_LINK_STATE) - clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_PORT_LINK_STATE); - if (portchange & USB_PORT_STAT_C_RESET) - clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_RESET); - dev_dbg(hub->intfdev, "hot reset failed, warm reset port %d\n", - port1); - ret = hub_port_reset(hub, port1, - udev, HUB_BH_RESET_TIME, - true); - if ((portchange & USB_PORT_STAT_C_CONNECTION)) - clear_port_feature(hub->hdev, port1, - USB_PORT_FEAT_C_CONNECTION); - return ret; - } - /* Device went away? */ - if (!(portstatus & USB_PORT_STAT_CONNECTION)) - return -ENOTCONN; - - /* bomb out completely if the connection bounced */ - if ((portchange & USB_PORT_STAT_C_CONNECTION)) - return -ENOTCONN; - - if ((portstatus & USB_PORT_STAT_ENABLE)) { - if (hub_is_wusb(hub)) - udev->speed = USB_SPEED_WIRELESS; - else if (hub_is_superspeed(hub->hdev)) - udev->speed = USB_SPEED_SUPER; - else if (portstatus & USB_PORT_STAT_HIGH_SPEED) - udev->speed = USB_SPEED_HIGH; - else if (portstatus & USB_PORT_STAT_LOW_SPEED) - udev->speed = USB_SPEED_LOW; - else - udev->speed = USB_SPEED_FULL; - return 0; - } - } else { - if (!(portstatus & USB_PORT_STAT_CONNECTION) || - hub_port_warm_reset_required(hub, - portstatus)) - return -ENOTCONN; - - return 0; - } + if (!(portstatus & USB_PORT_STAT_RESET)) + break; -delay: /* switch to the long delay after two short delay failures */ if (delay_time >= 2 * HUB_SHORT_RESET_TIME) delay = HUB_LONG_RESET_TIME; @@ -2615,20 +2538,54 @@ port1, warm ? "warm " : "", delay); } - return -EBUSY; + if ((portstatus & USB_PORT_STAT_RESET)) + return -EBUSY; + + if (hub_port_warm_reset_required(hub, portstatus)) + return -ENOTCONN; + + /* Device went away? */ + if (!(portstatus & USB_PORT_STAT_CONNECTION)) + return -ENOTCONN; + + /* bomb out completely if the connection bounced. A USB 3.0 + * connection may bounce if multiple warm resets were issued, + * but the device may have successfully re-connected. Ignore it. + */ + if (!hub_is_superspeed(hub->hdev) && + (portchange & USB_PORT_STAT_C_CONNECTION)) + return -ENOTCONN; + + if (!(portstatus & USB_PORT_STAT_ENABLE)) + return -EBUSY; + + if (!udev) + return 0; + + if (hub_is_wusb(hub)) + udev->speed = USB_SPEED_WIRELESS; + else if (hub_is_superspeed(hub->hdev)) + udev->speed = USB_SPEED_SUPER; + else if (portstatus & USB_PORT_STAT_HIGH_SPEED) + udev->speed = USB_SPEED_HIGH; + else if (portstatus & USB_PORT_STAT_LOW_SPEED) + udev->speed = USB_SPEED_LOW; + else + udev->speed = USB_SPEED_FULL; + return 0; } static void hub_port_finish_reset(struct usb_hub *hub, int port1, - struct usb_device *udev, int *status, bool warm) + struct usb_device *udev, int *status) { switch (*status) { case 0: - if (!warm) { - struct usb_hcd *hcd; - /* TRSTRCY = 10 ms; plus some extra */ - msleep(10 + 40); + /* TRSTRCY = 10 ms; plus some extra */ + msleep(10 + 40); + if (udev) { + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + update_devnum(udev, 0); - hcd = bus_to_hcd(udev->bus); /* The xHC may think the device is already reset, * so ignore the status. */ @@ -2638,16 +2595,17 @@ /* FALL THROUGH */ case -ENOTCONN: case -ENODEV: - clear_port_feature(hub->hdev, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_RESET); - /* FIXME need disconnect() for NOTATTACHED device */ if (hub_is_superspeed(hub->hdev)) { - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_BH_PORT_RESET); - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_PORT_LINK_STATE); + usb_clear_port_feature(hub->hdev, port1, + USB_PORT_FEAT_C_CONNECTION); } - if (!warm) + if (udev) usb_set_device_state(udev, *status ? USB_STATE_NOTATTACHED : USB_STATE_DEFAULT); @@ -2660,18 +2618,30 @@ struct usb_device *udev, unsigned int delay, bool warm) { int i, status; + u16 portchange, portstatus; - if (!warm) { - /* Block EHCI CF initialization during the port reset. - * Some companion controllers don't like it when they mix. - */ - down_read(&ehci_cf_port_reset_rwsem); - } else { - if (!hub_is_superspeed(hub->hdev)) { + if (!hub_is_superspeed(hub->hdev)) { + if (warm) { dev_err(hub->intfdev, "only USB3 hub support " "warm reset\n"); return -EINVAL; } + /* Block EHCI CF initialization during the port reset. + * Some companion controllers don't like it when they mix. + */ + down_read(&ehci_cf_port_reset_rwsem); + } else if (!warm) { + /* + * If the caller hasn't explicitly requested a warm reset, + * double check and see if one is needed. + */ + status = hub_port_status(hub, port1, + &portstatus, &portchange); + if (status < 0) + goto done; + + if (hub_port_warm_reset_required(hub, portstatus)) + warm = true; } /* Reset the port */ @@ -2692,10 +2662,33 @@ status); } - /* return on disconnect or reset */ + /* Check for disconnect or reset */ if (status == 0 || status == -ENOTCONN || status == -ENODEV) { - hub_port_finish_reset(hub, port1, udev, &status, warm); - goto done; + hub_port_finish_reset(hub, port1, udev, &status); + + if (!hub_is_superspeed(hub->hdev)) + goto done; + + /* + * If a USB 3.0 device migrates from reset to an error + * state, re-issue the warm reset. + */ + if (hub_port_status(hub, port1, + &portstatus, &portchange) < 0) + goto done; + + if (!hub_port_warm_reset_required(hub, portstatus)) + goto done; + + /* + * If the port is in SS.Inactive or Compliance Mode, the + * hot or warm reset failed. Try another warm reset. + */ + if (!warm) { + dev_dbg(hub->intfdev, "hot reset failed, warm reset port %d\n", + port1); + warm = true; + } } dev_dbg (hub->intfdev, @@ -2709,7 +2702,7 @@ port1); done: - if (!warm) + if (!hub_is_superspeed(hub->hdev)) up_read(&ehci_cf_port_reset_rwsem); return status; @@ -2783,10 +2776,10 @@ /* Late port handoff can set status-change bits */ if (portchange & USB_PORT_STAT_C_CONNECTION) - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_CONNECTION); if (portchange & USB_PORT_STAT_C_ENABLE) - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_ENABLE); } @@ -2904,7 +2897,9 @@ */ int usb_port_suspend(struct usb_device *udev, pm_message_t msg) { - struct usb_hub *hub = hdev_to_hub(udev->parent); + struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent); + struct usb_port *port_dev = hub->ports[udev->portnum - 1]; + enum pm_qos_flags_status pm_qos_stat; int port1 = udev->portnum; int status; @@ -2962,9 +2957,7 @@ /* see 7.1.7.6 */ if (hub_is_superspeed(hub->hdev)) - status = set_port_feature(hub->hdev, - port1 | (USB_SS_PORT_LS_U3 << 3), - USB_PORT_FEAT_LINK_STATE); + status = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_U3); else status = set_port_feature(hub->hdev, port1, USB_PORT_FEAT_SUSPEND); @@ -3006,6 +2999,21 @@ udev->port_is_suspended = 1; msleep(10); } + + /* + * Check whether current status meets the requirement of + * usb port power off mechanism + */ + pm_qos_stat = dev_pm_qos_flags(&port_dev->dev, + PM_QOS_FLAG_NO_POWER_OFF); + if (!udev->do_remote_wakeup + && pm_qos_stat != PM_QOS_FLAGS_ALL + && udev->persist_enabled + && !status) { + pm_runtime_put_sync(&port_dev->dev); + port_dev->did_runtime_put = true; + } + usb_mark_last_busy(hub->hdev); return status; } @@ -3141,11 +3149,22 @@ */ int usb_port_resume(struct usb_device *udev, pm_message_t msg) { - struct usb_hub *hub = hdev_to_hub(udev->parent); + struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent); + struct usb_port *port_dev = hub->ports[udev->portnum - 1]; int port1 = udev->portnum; int status; u16 portchange, portstatus; + if (port_dev->did_runtime_put) { + status = pm_runtime_get_sync(&port_dev->dev); + port_dev->did_runtime_put = false; + if (status < 0) { + dev_dbg(&udev->dev, "can't resume usb port, status %d\n", + status); + return status; + } + } + /* Skip the initial Clear-Suspend step for a remote wakeup */ status = hub_port_status(hub, port1, &portstatus, &portchange); if (status == 0 && !port_is_suspended(hub, portstatus)) @@ -3157,11 +3176,9 @@ /* see 7.1.7.7; affects power usage, but not budgeting */ if (hub_is_superspeed(hub->hdev)) - status = set_port_feature(hub->hdev, - port1 | (USB_SS_PORT_LS_U0 << 3), - USB_PORT_FEAT_LINK_STATE); + status = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_U0); else - status = clear_port_feature(hub->hdev, + status = usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_SUSPEND); if (status) { dev_dbg(hub->intfdev, "can't resume port %d, status %d\n", @@ -3187,11 +3204,11 @@ udev->port_is_suspended = 0; if (hub_is_superspeed(hub->hdev)) { if (portchange & USB_PORT_STAT_C_LINK_STATE) - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_PORT_LINK_STATE); } else { if (portchange & USB_PORT_STAT_C_SUSPEND) - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_SUSPEND); } } @@ -3247,7 +3264,7 @@ int usb_port_resume(struct usb_device *udev, pm_message_t msg) { - struct usb_hub *hub = hdev_to_hub(udev->parent); + struct usb_hub *hub = usb_hub_to_struct_hub(udev->parent); int port1 = udev->portnum; int status; u16 portchange, portstatus; @@ -3826,7 +3843,7 @@ * every 25ms for transient disconnects. When the port status has been * unchanged for 100ms it returns the port status. */ -static int hub_port_debounce(struct usb_hub *hub, int port1) +int hub_port_debounce(struct usb_hub *hub, int port1, bool must_be_connected) { int ret; int total_time, stable_time = 0; @@ -3840,7 +3857,9 @@ if (!(portchange & USB_PORT_STAT_C_CONNECTION) && (portstatus & USB_PORT_STAT_CONNECTION) == connection) { - stable_time += HUB_DEBOUNCE_STEP; + if (!must_be_connected || + (connection == USB_PORT_STAT_CONNECTION)) + stable_time += HUB_DEBOUNCE_STEP; if (stable_time >= HUB_DEBOUNCE_STABLE) break; } else { @@ -3849,7 +3868,7 @@ } if (portchange & USB_PORT_STAT_C_CONNECTION) { - clear_port_feature(hub->hdev, port1, + usb_clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_CONNECTION); } @@ -4246,16 +4265,23 @@ for (port1 = 1; port1 <= hdev->maxchild; ++port1) { struct usb_device *udev = hub->ports[port1 - 1]->child; int delta; + unsigned unit_load; if (!udev) continue; + if (hub_is_superspeed(udev)) + unit_load = 150; + else + unit_load = 100; - /* Unconfigured devices may not use more than 100mA, - * or 8mA for OTG ports */ + /* + * Unconfigured devices may not use more than one unit load, + * or 8mA for OTG ports + */ if (udev->actconfig) - delta = udev->actconfig->desc.bMaxPower * 2; + delta = usb_get_max_power(udev, udev->actconfig); else if (port1 != udev->bus->otg_port || hdev->parent) - delta = 100; + delta = unit_load; else delta = 8; if (delta > hub->mA_per_port) @@ -4290,6 +4316,7 @@ le16_to_cpu(hub->descriptor->wHubCharacteristics); struct usb_device *udev; int status, i; + unsigned unit_load; dev_dbg (hub_dev, "port %d, status %04x, change %04x, %s\n", @@ -4353,7 +4380,7 @@ if (portchange & (USB_PORT_STAT_C_CONNECTION | USB_PORT_STAT_C_ENABLE)) { - status = hub_port_debounce(hub, port1); + status = hub_port_debounce_be_stable(hub, port1); if (status < 0) { if (printk_ratelimit()) dev_err(hub_dev, "connect-debounce failed, " @@ -4379,6 +4406,10 @@ goto done; return; } + if (hub_is_superspeed(hub->hdev)) + unit_load = 150; + else + unit_load = 100; for (i = 0; i < SET_CONFIG_TRIES; i++) { @@ -4426,7 +4457,7 @@ * on the parent. */ if (udev->descriptor.bDeviceClass == USB_CLASS_HUB - && udev->bus_mA <= 100) { + && udev->bus_mA <= unit_load) { u16 devstat; status = usb_get_status(udev, USB_RECIP_DEVICE, 0, @@ -4528,7 +4559,7 @@ if (!hub_is_superspeed(hdev)) { if (!(portchange & USB_PORT_STAT_C_SUSPEND)) return 0; - clear_port_feature(hdev, port, USB_PORT_FEAT_C_SUSPEND); + usb_clear_port_feature(hdev, port, USB_PORT_FEAT_C_SUSPEND); } else { if (!udev || udev->state != USB_STATE_SUSPENDED || (portstatus & USB_PORT_STAT_LINK_STATE) != @@ -4656,7 +4687,7 @@ continue; if (portchange & USB_PORT_STAT_C_CONNECTION) { - clear_port_feature(hdev, i, + usb_clear_port_feature(hdev, i, USB_PORT_FEAT_C_CONNECTION); connect_change = 1; } @@ -4667,7 +4698,7 @@ "port %d enable change, " "status %08x\n", i, portstatus); - clear_port_feature(hdev, i, + usb_clear_port_feature(hdev, i, USB_PORT_FEAT_C_ENABLE); /* @@ -4698,7 +4729,7 @@ dev_dbg(hub_dev, "over-current change on port " "%d\n", i); - clear_port_feature(hdev, i, + usb_clear_port_feature(hdev, i, USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ hub_power_on(hub, true); @@ -4712,7 +4743,7 @@ dev_dbg (hub_dev, "reset change on port %d\n", i); - clear_port_feature(hdev, i, + usb_clear_port_feature(hdev, i, USB_PORT_FEAT_C_RESET); } if ((portchange & USB_PORT_STAT_C_BH_RESET) && @@ -4720,18 +4751,18 @@ dev_dbg(hub_dev, "warm reset change on port %d\n", i); - clear_port_feature(hdev, i, + usb_clear_port_feature(hdev, i, USB_PORT_FEAT_C_BH_PORT_RESET); } if (portchange & USB_PORT_STAT_C_LINK_STATE) { - clear_port_feature(hub->hdev, i, + usb_clear_port_feature(hub->hdev, i, USB_PORT_FEAT_C_PORT_LINK_STATE); } if (portchange & USB_PORT_STAT_C_CONFIG_ERROR) { dev_warn(hub_dev, "config error on port %d\n", i); - clear_port_feature(hub->hdev, i, + usb_clear_port_feature(hub->hdev, i, USB_PORT_FEAT_C_PORT_CONFIG_ERROR); } @@ -4740,12 +4771,21 @@ */ if (hub_port_warm_reset_required(hub, portstatus)) { int status; + struct usb_device *udev = + hub->ports[i - 1]->child; dev_dbg(hub_dev, "warm reset port %d\n", i); - status = hub_port_reset(hub, i, NULL, - HUB_BH_RESET_TIME, true); - if (status < 0) - hub_port_disable(hub, i, 1); + if (!udev) { + status = hub_port_reset(hub, i, + NULL, HUB_BH_RESET_TIME, + true); + if (status < 0) + hub_port_disable(hub, i, 1); + } else { + usb_lock_device(udev); + status = usb_reset_device(udev); + usb_unlock_device(udev); + } connect_change = 0; } @@ -5006,7 +5046,7 @@ dev_dbg(&udev->dev, "%s for root hub!\n", __func__); return -EISDIR; } - parent_hub = hdev_to_hub(parent_hdev); + parent_hub = usb_hub_to_struct_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 @@ -5262,7 +5302,7 @@ struct usb_device *usb_hub_find_child(struct usb_device *hdev, int port1) { - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); if (port1 < 1 || port1 > hdev->maxchild) return NULL; @@ -5279,7 +5319,7 @@ void usb_set_hub_port_connect_type(struct usb_device *hdev, int port1, enum usb_port_connect_type type) { - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); hub->ports[port1 - 1]->connect_type = type; } @@ -5295,11 +5335,52 @@ enum usb_port_connect_type usb_get_hub_port_connect_type(struct usb_device *hdev, int port1) { - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); return hub->ports[port1 - 1]->connect_type; } +void usb_hub_adjust_deviceremovable(struct usb_device *hdev, + struct usb_hub_descriptor *desc) +{ + enum usb_port_connect_type connect_type; + int i; + + if (!hub_is_superspeed(hdev)) { + for (i = 1; i <= hdev->maxchild; i++) { + connect_type = usb_get_hub_port_connect_type(hdev, i); + + if (connect_type == USB_PORT_CONNECT_TYPE_HARD_WIRED) { + u8 mask = 1 << (i%8); + + if (!(desc->u.hs.DeviceRemovable[i/8] & mask)) { + dev_dbg(&hdev->dev, "usb port%d's DeviceRemovable is changed to 1 according to platform information.\n", + i); + desc->u.hs.DeviceRemovable[i/8] |= mask; + } + } + } + } else { + u16 port_removable = le16_to_cpu(desc->u.ss.DeviceRemovable); + + for (i = 1; i <= hdev->maxchild; i++) { + connect_type = usb_get_hub_port_connect_type(hdev, i); + + if (connect_type == USB_PORT_CONNECT_TYPE_HARD_WIRED) { + u16 mask = 1 << i; + + if (!(port_removable & mask)) { + dev_dbg(&hdev->dev, "usb port%d's DeviceRemovable is changed to 1 according to platform information.\n", + i); + port_removable |= mask; + } + } + } + + desc->u.ss.DeviceRemovable = cpu_to_le16(port_removable); + } +} + #ifdef CONFIG_ACPI /** * usb_get_hub_port_acpi_handle - Get the usb port's acpi handle @@ -5312,7 +5393,7 @@ acpi_handle usb_get_hub_port_acpi_handle(struct usb_device *hdev, int port1) { - struct usb_hub *hub = hdev_to_hub(hdev); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); return DEVICE_ACPI_HANDLE(&hub->ports[port1 - 1]->dev); } --- linux-ppc-3.8.0.orig/drivers/usb/core/hcd-pci.c +++ linux-ppc-3.8.0/drivers/usb/core/hcd-pci.c @@ -173,6 +173,7 @@ struct hc_driver *driver; struct usb_hcd *hcd; int retval; + int hcd_irq = 0; if (usb_disabled()) return -ENODEV; @@ -187,15 +188,19 @@ return -ENODEV; dev->current_state = PCI_D0; - /* The xHCI driver supports MSI and MSI-X, - * so don't fail if the BIOS doesn't provide a legacy IRQ. + /* + * The xHCI driver has its own irq management + * make sure irq setup is not touched for xhci in generic hcd code */ - if (!dev->irq && (driver->flags & HCD_MASK) != HCD_USB3) { - dev_err(&dev->dev, - "Found HC with no IRQ. Check BIOS/PCI %s setup!\n", - pci_name(dev)); - retval = -ENODEV; - goto disable_pci; + if ((driver->flags & HCD_MASK) != HCD_USB3) { + if (!dev->irq) { + dev_err(&dev->dev, + "Found HC with no IRQ. Check BIOS/PCI %s setup!\n", + pci_name(dev)); + retval = -ENODEV; + goto disable_pci; + } + hcd_irq = dev->irq; } hcd = usb_create_hcd(driver, &dev->dev, pci_name(dev)); @@ -245,7 +250,7 @@ pci_set_master(dev); - retval = usb_add_hcd(hcd, dev->irq, IRQF_SHARED); + retval = usb_add_hcd(hcd, hcd_irq, IRQF_SHARED); if (retval != 0) goto unmap_registers; set_hs_companion(dev, hcd); --- linux-ppc-3.8.0.orig/drivers/usb/core/quirks.c +++ linux-ppc-3.8.0/drivers/usb/core/quirks.c @@ -78,6 +78,12 @@ { USB_DEVICE(0x04d8, 0x000c), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* CarrolTouch 4000U */ + { USB_DEVICE(0x04e7, 0x0009), .driver_info = USB_QUIRK_RESET_RESUME }, + + /* CarrolTouch 4500U */ + { USB_DEVICE(0x04e7, 0x0030), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Samsung Android phone modem - ID conflict with SPH-I500 */ { USB_DEVICE(0x04e8, 0x6601), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, @@ -88,6 +94,9 @@ /* Edirol SD-20 */ { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Alcor Micro Corp. Hub */ + { USB_DEVICE(0x058f, 0x9254), .driver_info = USB_QUIRK_RESET_RESUME }, + /* appletouch */ { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME }, --- linux-ppc-3.8.0.orig/drivers/usb/core/usb.h +++ linux-ppc-3.8.0/drivers/usb/core/usb.h @@ -1,6 +1,7 @@ #include #include +struct usb_hub_descriptor; struct dev_state; /* Functions local to drivers/usb/core/ */ @@ -38,6 +39,15 @@ extern int usb_set_configuration(struct usb_device *dev, int configuration); extern int usb_choose_configuration(struct usb_device *udev); +static inline unsigned usb_get_max_power(struct usb_device *udev, + struct usb_host_config *c) +{ + /* SuperSpeed power is in 8 mA units; others are in 2 mA units */ + unsigned mul = (udev->speed == USB_SPEED_SUPER ? 8 : 2); + + return c->desc.bMaxPower * mul; +} + extern void usb_kick_khubd(struct usb_device *dev); extern int usb_match_one_id_intf(struct usb_device *dev, struct usb_host_interface *intf, @@ -173,6 +183,8 @@ usb_get_hub_port_connect_type(struct usb_device *hdev, int port1); extern void usb_set_hub_port_connect_type(struct usb_device *hdev, int port1, enum usb_port_connect_type type); +extern void usb_hub_adjust_deviceremovable(struct usb_device *hdev, + struct usb_hub_descriptor *desc); #ifdef CONFIG_ACPI extern int usb_acpi_register(void); --- linux-ppc-3.8.0.orig/drivers/usb/core/port.c +++ linux-ppc-3.8.0/drivers/usb/core/port.c @@ -0,0 +1,202 @@ +/* + * usb port device code + * + * Copyright (C) 2012 Intel Corp + * + * Author: Lan Tianyu + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + */ + +#include +#include + +#include "hub.h" + +static const struct attribute_group *port_dev_group[]; + +static ssize_t show_port_connect_type(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_port *port_dev = to_usb_port(dev); + char *result; + + switch (port_dev->connect_type) { + case USB_PORT_CONNECT_TYPE_HOT_PLUG: + result = "hotplug"; + break; + case USB_PORT_CONNECT_TYPE_HARD_WIRED: + result = "hardwired"; + break; + case USB_PORT_NOT_USED: + result = "not used"; + break; + default: + result = "unknown"; + break; + } + + return sprintf(buf, "%s\n", result); +} +static DEVICE_ATTR(connect_type, S_IRUGO, show_port_connect_type, + NULL); + +static struct attribute *port_dev_attrs[] = { + &dev_attr_connect_type.attr, + NULL, +}; + +static struct attribute_group port_dev_attr_grp = { + .attrs = port_dev_attrs, +}; + +static const struct attribute_group *port_dev_group[] = { + &port_dev_attr_grp, + NULL, +}; + +static void usb_port_device_release(struct device *dev) +{ + struct usb_port *port_dev = to_usb_port(dev); + + dev_pm_qos_hide_flags(dev); + kfree(port_dev); +} + +#ifdef CONFIG_USB_SUSPEND +static int usb_port_runtime_resume(struct device *dev) +{ + struct usb_port *port_dev = to_usb_port(dev); + struct usb_device *hdev = to_usb_device(dev->parent->parent); + struct usb_interface *intf = to_usb_interface(dev->parent); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); + int port1 = port_dev->portnum; + int retval; + + if (!hub) + return -EINVAL; + + usb_autopm_get_interface(intf); + set_bit(port1, hub->busy_bits); + + retval = usb_hub_set_port_power(hdev, port1, true); + if (port_dev->child && !retval) { + /* + * Wait for usb hub port to be reconnected in order to make + * the resume procedure successful. + */ + retval = hub_port_debounce_be_connected(hub, port1); + if (retval < 0) { + dev_dbg(&port_dev->dev, "can't get reconnection after setting port power on, status %d\n", + retval); + goto out; + } + usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); + + /* Set return value to 0 if debounce successful */ + retval = 0; + } + +out: + clear_bit(port1, hub->busy_bits); + usb_autopm_put_interface(intf); + return retval; +} + +static int usb_port_runtime_suspend(struct device *dev) +{ + struct usb_port *port_dev = to_usb_port(dev); + struct usb_device *hdev = to_usb_device(dev->parent->parent); + struct usb_interface *intf = to_usb_interface(dev->parent); + struct usb_hub *hub = usb_hub_to_struct_hub(hdev); + int port1 = port_dev->portnum; + int retval; + + if (!hub) + return -EINVAL; + + if (dev_pm_qos_flags(&port_dev->dev, PM_QOS_FLAG_NO_POWER_OFF) + == PM_QOS_FLAGS_ALL) + return -EAGAIN; + + usb_autopm_get_interface(intf); + set_bit(port1, hub->busy_bits); + retval = usb_hub_set_port_power(hdev, port1, false); + usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION); + usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); + clear_bit(port1, hub->busy_bits); + usb_autopm_put_interface(intf); + return retval; +} +#endif + +static const struct dev_pm_ops usb_port_pm_ops = { +#ifdef CONFIG_USB_SUSPEND + .runtime_suspend = usb_port_runtime_suspend, + .runtime_resume = usb_port_runtime_resume, + .runtime_idle = pm_generic_runtime_idle, +#endif +}; + +struct device_type usb_port_device_type = { + .name = "usb_port", + .release = usb_port_device_release, + .pm = &usb_port_pm_ops, +}; + +int usb_hub_create_port_device(struct usb_hub *hub, int port1) +{ + struct usb_port *port_dev = NULL; + int retval; + + port_dev = kzalloc(sizeof(*port_dev), GFP_KERNEL); + if (!port_dev) { + retval = -ENOMEM; + goto exit; + } + + hub->ports[port1 - 1] = port_dev; + port_dev->portnum = port1; + port_dev->power_is_on = true; + port_dev->dev.parent = hub->intfdev; + port_dev->dev.groups = port_dev_group; + port_dev->dev.type = &usb_port_device_type; + dev_set_name(&port_dev->dev, "port%d", port1); + + retval = device_register(&port_dev->dev); + if (retval) + goto error_register; + + pm_runtime_set_active(&port_dev->dev); + + /* It would be dangerous if user space couldn't + * prevent usb device from being powered off. So don't + * enable port runtime pm if failed to expose port's pm qos. + */ + if (!dev_pm_qos_expose_flags(&port_dev->dev, + PM_QOS_FLAG_NO_POWER_OFF)) + pm_runtime_enable(&port_dev->dev); + + device_enable_async_suspend(&port_dev->dev); + return 0; + +error_register: + put_device(&port_dev->dev); +exit: + return retval; +} + +void usb_hub_remove_port_device(struct usb_hub *hub, + int port1) +{ + device_unregister(&hub->ports[port1 - 1]->dev); +} + --- linux-ppc-3.8.0.orig/drivers/usb/core/generic.c +++ linux-ppc-3.8.0/drivers/usb/core/generic.c @@ -100,7 +100,7 @@ */ /* Rule out configs that draw too much bus current */ - if (c->desc.bMaxPower * 2 > udev->bus_mA) { + if (usb_get_max_power(udev, c) > udev->bus_mA) { insufficient_power++; continue; } --- linux-ppc-3.8.0.orig/drivers/usb/class/cdc-acm.c +++ linux-ppc-3.8.0/drivers/usb/class/cdc-acm.c @@ -600,7 +600,6 @@ dev_dbg(&acm->control->dev, "%s\n", __func__); - tty_unregister_device(acm_tty_driver, acm->minor); acm_release_minor(acm); usb_put_intf(acm->control); kfree(acm->country_codes); @@ -1418,6 +1417,8 @@ stop_data_traffic(acm); + tty_unregister_device(acm_tty_driver, acm->minor); + usb_free_urb(acm->ctrlurb); for (i = 0; i < ACM_NW; i++) usb_free_urb(acm->wb[i].urb); --- linux-ppc-3.8.0.orig/drivers/usb/class/cdc-wdm.c +++ linux-ppc-3.8.0/drivers/usb/class/cdc-wdm.c @@ -56,6 +56,7 @@ #define WDM_RESPONDING 7 #define WDM_SUSPENDING 8 #define WDM_RESETTING 9 +#define WDM_OVERFLOW 10 #define WDM_MAX 16 @@ -155,6 +156,7 @@ { struct wdm_device *desc = urb->context; int status = urb->status; + int length = urb->actual_length; spin_lock(&desc->iuspin); clear_bit(WDM_RESPONDING, &desc->flags); @@ -185,9 +187,17 @@ } desc->rerr = status; - desc->reslength = urb->actual_length; - memmove(desc->ubuf + desc->length, desc->inbuf, desc->reslength); - desc->length += desc->reslength; + if (length + desc->length > desc->wMaxCommand) { + /* The buffer would overflow */ + set_bit(WDM_OVERFLOW, &desc->flags); + } else { + /* we may already be in overflow */ + if (!test_bit(WDM_OVERFLOW, &desc->flags)) { + memmove(desc->ubuf + desc->length, desc->inbuf, length); + desc->length += length; + desc->reslength = length; + } + } skip_error: wake_up(&desc->wait); @@ -435,6 +445,11 @@ rv = -ENODEV; goto err; } + if (test_bit(WDM_OVERFLOW, &desc->flags)) { + clear_bit(WDM_OVERFLOW, &desc->flags); + rv = -ENOBUFS; + goto err; + } i++; if (file->f_flags & O_NONBLOCK) { if (!test_bit(WDM_READ, &desc->flags)) { @@ -478,6 +493,7 @@ spin_unlock_irq(&desc->iuspin); goto retry; } + if (!desc->reslength) { /* zero length read */ dev_dbg(&desc->intf->dev, "%s: zero length - clearing WDM_READ\n", __func__); clear_bit(WDM_READ, &desc->flags); @@ -1004,6 +1020,7 @@ struct wdm_device *desc = wdm_find_device(intf); int rv; + clear_bit(WDM_OVERFLOW, &desc->flags); clear_bit(WDM_RESETTING, &desc->flags); rv = recover_from_urb_loss(desc); mutex_unlock(&desc->wlock); --- linux-ppc-3.8.0.orig/drivers/usb/serial/whiteheat.c +++ linux-ppc-3.8.0/drivers/usb/serial/whiteheat.c @@ -649,7 +649,7 @@ struct whiteheat_port_settings port_settings; unsigned int cflag = tty->termios.c_cflag; - port_settings.port = port->number + 1; + port_settings.port = port->number - port->serial->minor + 1; /* get the byte size */ switch (cflag & CSIZE) { --- linux-ppc-3.8.0.orig/drivers/usb/serial/ftdi_sio_ids.h +++ linux-ppc-3.8.0/drivers/usb/serial/ftdi_sio_ids.h @@ -74,6 +74,7 @@ #define FTDI_OPENDCC_THROTTLE_PID 0xBFDA #define FTDI_OPENDCC_GATEWAY_PID 0xBFDB #define FTDI_OPENDCC_GBM_PID 0xBFDC +#define FTDI_OPENDCC_GBM_BOOST_PID 0xBFDD /* NZR SEM 16+ USB (http://www.nzr.de) */ #define FTDI_NZR_SEM_USB_PID 0xC1E0 /* NZR SEM-LOG16+ */ @@ -584,6 +585,13 @@ #define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */ /* + * Mitsubishi Electric Corp. (http://www.meau.com) + * Submitted by Konstantin Holoborodko + */ +#define MITSUBISHI_VID 0x06D3 +#define MITSUBISHI_FXUSB_PID 0x0284 /* USB/RS422 converters: FX-USB-AW/-BD */ + +/* * Definitions for B&B Electronics products. */ #define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */ @@ -764,6 +772,8 @@ */ #define NEWPORT_VID 0x104D #define NEWPORT_AGILIS_PID 0x3000 +#define NEWPORT_CONEX_CC_PID 0x3002 +#define NEWPORT_CONEX_AGP_PID 0x3006 /* Interbiometrics USB I/O Board */ /* Developed for Interbiometrics by Rudolf Gugler */ @@ -805,11 +815,35 @@ /* * RT Systems programming cables for various ham radios */ -#define RTSYSTEMS_VID 0x2100 /* Vendor ID */ -#define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */ -#define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */ -#define RTSYSTEMS_RTS01_PID 0x9e57 /* USB-RTS01 Radio Cable */ - +#define RTSYSTEMS_VID 0x2100 /* Vendor ID */ +#define RTSYSTEMS_USB_S03_PID 0x9001 /* RTS-03 USB to Serial Adapter */ +#define RTSYSTEMS_USB_59_PID 0x9e50 /* USB-59 USB to 8 pin plug */ +#define RTSYSTEMS_USB_57A_PID 0x9e51 /* USB-57A USB to 4pin 3.5mm plug */ +#define RTSYSTEMS_USB_57B_PID 0x9e52 /* USB-57B USB to extended 4pin 3.5mm plug */ +#define RTSYSTEMS_USB_29A_PID 0x9e53 /* USB-29A USB to 3.5mm stereo plug */ +#define RTSYSTEMS_USB_29B_PID 0x9e54 /* USB-29B USB to 6 pin mini din */ +#define RTSYSTEMS_USB_29F_PID 0x9e55 /* USB-29F USB to 6 pin modular plug */ +#define RTSYSTEMS_USB_62B_PID 0x9e56 /* USB-62B USB to 8 pin mini din plug*/ +#define RTSYSTEMS_USB_S01_PID 0x9e57 /* USB-RTS01 USB to 3.5 mm stereo plug*/ +#define RTSYSTEMS_USB_63_PID 0x9e58 /* USB-63 USB to 9 pin female*/ +#define RTSYSTEMS_USB_29C_PID 0x9e59 /* USB-29C USB to 4 pin modular plug*/ +#define RTSYSTEMS_USB_81B_PID 0x9e5A /* USB-81 USB to 8 pin mini din plug*/ +#define RTSYSTEMS_USB_82B_PID 0x9e5B /* USB-82 USB to 2.5 mm stereo plug*/ +#define RTSYSTEMS_USB_K5D_PID 0x9e5C /* USB-K5D USB to 8 pin modular plug*/ +#define RTSYSTEMS_USB_K4Y_PID 0x9e5D /* USB-K4Y USB to 2.5/3.5 mm plugs*/ +#define RTSYSTEMS_USB_K5G_PID 0x9e5E /* USB-K5G USB to 8 pin modular plug*/ +#define RTSYSTEMS_USB_S05_PID 0x9e5F /* USB-RTS05 USB to 2.5 mm stereo plug*/ +#define RTSYSTEMS_USB_60_PID 0x9e60 /* USB-60 USB to 6 pin din*/ +#define RTSYSTEMS_USB_61_PID 0x9e61 /* USB-61 USB to 6 pin mini din*/ +#define RTSYSTEMS_USB_62_PID 0x9e62 /* USB-62 USB to 8 pin mini din*/ +#define RTSYSTEMS_USB_63B_PID 0x9e63 /* USB-63 USB to 9 pin female*/ +#define RTSYSTEMS_USB_64_PID 0x9e64 /* USB-64 USB to 9 pin male*/ +#define RTSYSTEMS_USB_65_PID 0x9e65 /* USB-65 USB to 9 pin female null modem*/ +#define RTSYSTEMS_USB_92_PID 0x9e66 /* USB-92 USB to 12 pin plug*/ +#define RTSYSTEMS_USB_92D_PID 0x9e67 /* USB-92D USB to 12 pin plug data*/ +#define RTSYSTEMS_USB_W5R_PID 0x9e68 /* USB-W5R USB to 8 pin modular plug*/ +#define RTSYSTEMS_USB_A5R_PID 0x9e69 /* USB-A5R USB to 8 pin modular plug*/ +#define RTSYSTEMS_USB_PW1_PID 0x9e6A /* USB-PW1 USB to 8 pin modular plug*/ /* * Physik Instrumente @@ -1143,7 +1177,8 @@ * STMicroelectonics */ #define ST_VID 0x0483 -#define ST_STMCLT1030_PID 0x3747 /* ST Micro Connect Lite STMCLT1030 */ +#define ST_STMCLT_2232_PID 0x3746 +#define ST_STMCLT_4232_PID 0x3747 /* * Papouch products (http://www.papouch.com/) --- linux-ppc-3.8.0.orig/drivers/usb/serial/usb-serial.c +++ linux-ppc-3.8.0/drivers/usb/serial/usb-serial.c @@ -151,6 +151,7 @@ } } + usb_put_intf(serial->interface); usb_put_dev(serial->dev); kfree(serial); } @@ -614,7 +615,7 @@ } serial->dev = usb_get_dev(dev); serial->type = driver; - serial->interface = interface; + serial->interface = usb_get_intf(interface); kref_init(&serial->kref); mutex_init(&serial->disc_mutex); serial->minor = SERIAL_TTY_NO_MINOR; @@ -688,10 +689,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 = { @@ -886,6 +897,7 @@ port->port.ops = &serial_port_ops; port->serial = serial; spin_lock_init(&port->lock); + init_waitqueue_head(&port->delta_msr_wait); /* Keep this for private driver use for the moment but should probably go away */ INIT_WORK(&port->work, usb_serial_port_work); --- linux-ppc-3.8.0.orig/drivers/usb/serial/oti6858.c +++ linux-ppc-3.8.0/drivers/usb/serial/oti6858.c @@ -188,7 +188,6 @@ u8 setup_done; struct delayed_work delayed_setup_work; - wait_queue_head_t intr_wait; struct usb_serial_port *port; /* USB port with which associated */ }; @@ -339,7 +338,6 @@ return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->intr_wait); priv->port = port; INIT_DELAYED_WORK(&priv->delayed_setup_work, setup_line); INIT_DELAYED_WORK(&priv->delayed_write_work, send_data); @@ -664,11 +662,15 @@ spin_unlock_irqrestore(&priv->lock, flags); while (1) { - wait_event_interruptible(priv->intr_wait, + wait_event_interruptible(port->delta_msr_wait, + port->serial->disconnected || priv->status.pin_state != prev); if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->lock, flags); status = priv->status.pin_state & PIN_MASK; spin_unlock_irqrestore(&priv->lock, flags); @@ -763,7 +765,7 @@ if (!priv->transient) { if (xs->pin_state != priv->status.pin_state) - wake_up_interruptible(&priv->intr_wait); + wake_up_interruptible(&port->delta_msr_wait); memcpy(&priv->status, xs, OTI6858_CTRL_PKT_SIZE); } --- linux-ppc-3.8.0.orig/drivers/usb/serial/io_ti.c +++ linux-ppc-3.8.0/drivers/usb/serial/io_ti.c @@ -87,9 +87,6 @@ int close_pending; int lsr_event; struct async_icount icount; - wait_queue_head_t delta_msr_wait; /* for handling sleeping while - waiting for msr change to - happen */ struct edgeport_serial *edge_serial; struct usb_serial_port *port; __u8 bUartMode; /* Port type, 0: RS232, etc. */ @@ -1518,7 +1515,7 @@ icount->dcd++; if (msr & EDGEPORT_MSR_DELTA_RI) icount->rng++; - wake_up_interruptible(&edge_port->delta_msr_wait); + wake_up_interruptible(&edge_port->port->delta_msr_wait); } /* Save the new modem status */ @@ -1821,7 +1818,6 @@ dev = port->serial->dev; memset(&(edge_port->icount), 0x00, sizeof(edge_port->icount)); - init_waitqueue_head(&edge_port->delta_msr_wait); /* turn off loopback */ status = ti_do_config(edge_port, UMPC_SET_CLR_LOOPBACK, 0); @@ -2488,10 +2484,14 @@ dev_dbg(&port->dev, "%s - TIOCMIWAIT\n", __func__); cprev = edge_port->icount; while (1) { - interruptible_sleep_on(&edge_port->delta_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + cnow = edge_port->icount; if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr && cnow.dcd == cprev.dcd && cnow.cts == cprev.cts) @@ -2702,6 +2702,7 @@ .set_termios = edge_set_termios, .tiocmget = edge_tiocmget, .tiocmset = edge_tiocmset, + .get_icount = edge_get_icount, .write = edge_write, .write_room = edge_write_room, .chars_in_buffer = edge_chars_in_buffer, --- linux-ppc-3.8.0.orig/drivers/usb/serial/keyspan.c +++ linux-ppc-3.8.0/drivers/usb/serial/keyspan.c @@ -1604,7 +1604,7 @@ d_details = s_priv->device_details; device_port = port->number - port->serial->minor; - outcont_urb = d_details->outcont_endpoints[port->number]; + outcont_urb = d_details->outcont_endpoints[device_port]; this_urb = p_priv->outcont_urb; dev_dbg(&port->dev, "%s - endpoint %d\n", __func__, usb_pipeendpoint(this_urb->pipe)); @@ -2370,7 +2370,7 @@ if (d_details == NULL) { dev_err(&serial->dev->dev, "%s - unknown product id %x\n", __func__, le16_to_cpu(serial->dev->descriptor.idProduct)); - return 1; + return -ENODEV; } /* Setup private data for serial driver */ --- linux-ppc-3.8.0.orig/drivers/usb/serial/mct_u232.c +++ linux-ppc-3.8.0/drivers/usb/serial/mct_u232.c @@ -114,8 +114,6 @@ unsigned char last_msr; /* Modem Status Register */ unsigned int rx_flags; /* Throttling flags */ struct async_icount icount; - wait_queue_head_t msr_wait; /* for handling sleeping while waiting - for msr change to happen */ }; #define THROTTLED 0x01 @@ -409,7 +407,6 @@ return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->msr_wait); usb_set_serial_port_data(port, priv); @@ -499,19 +496,15 @@ 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, 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) @@ -610,7 +603,7 @@ tty_kref_put(tty); } #endif - wake_up_interruptible(&priv->msr_wait); + wake_up_interruptible(&port->delta_msr_wait); spin_unlock_irqrestore(&priv->lock, flags); exit: retval = usb_submit_urb(urb, GFP_ATOMIC); @@ -819,13 +812,17 @@ cprev = mct_u232_port->icount; spin_unlock_irqrestore(&mct_u232_port->lock, flags); for ( ; ; ) { - prepare_to_wait(&mct_u232_port->msr_wait, + prepare_to_wait(&port->delta_msr_wait, &wait, TASK_INTERRUPTIBLE); schedule(); - finish_wait(&mct_u232_port->msr_wait, &wait); + finish_wait(&port->delta_msr_wait, &wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&mct_u232_port->lock, flags); cnow = mct_u232_port->icount; spin_unlock_irqrestore(&mct_u232_port->lock, flags); --- linux-ppc-3.8.0.orig/drivers/usb/serial/iuu_phoenix.c +++ linux-ppc-3.8.0/drivers/usb/serial/iuu_phoenix.c @@ -289,7 +289,7 @@ usb_bulk_msg(serial->dev, usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress), buf, - count, &actual, HZ * 1); + count, &actual, 1000); if (status != IUU_OPERATION_OK) dev_dbg(&port->dev, "%s - error = %2x\n", __func__, status); @@ -309,7 +309,7 @@ usb_bulk_msg(serial->dev, usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress), buf, - count, &actual, HZ * 1); + count, &actual, 1000); if (status != IUU_OPERATION_OK) dev_dbg(&port->dev, "%s - error = %2x\n", __func__, status); --- linux-ppc-3.8.0.orig/drivers/usb/serial/mos7840.c +++ linux-ppc-3.8.0/drivers/usb/serial/mos7840.c @@ -183,7 +183,10 @@ #define LED_ON_MS 500 #define LED_OFF_MS 500 -static int device_type; +enum mos7840_flag { + MOS7840_FLAG_CTRL_BUSY, + MOS7840_FLAG_LED_BUSY, +}; static const struct usb_device_id id_table[] = { {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)}, @@ -219,7 +222,6 @@ char open; char open_ports; 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; struct async_icount icount; struct usb_serial_port *port; /* loop back to the owner of this object */ @@ -241,9 +243,12 @@ /* For device(s) with LED indicator */ bool has_led; - bool led_flag; struct timer_list led_timer1; /* Timer for LED on */ struct timer_list led_timer2; /* Timer for LED off */ + struct urb *led_urb; + struct usb_ctrlrequest *led_dr; + + unsigned long flags; }; /* @@ -423,6 +428,9 @@ icount->rng++; smp_wmb(); } + + mos7840_port->delta_msr_cond = 1; + wake_up_interruptible(&port->port->delta_msr_wait); } } @@ -485,10 +493,10 @@ case -ESHUTDOWN: /* this urb is terminated, clean up */ dev_dbg(dev, "%s - urb shutting down with status: %d\n", __func__, status); - return; + goto out; default: dev_dbg(dev, "%s - nonzero urb status received: %d\n", __func__, status); - return; + goto out; } dev_dbg(dev, "%s urb buffer size is %d\n", __func__, urb->actual_length); @@ -501,6 +509,8 @@ mos7840_handle_new_msr(mos7840_port, regval); else if (mos7840_port->MsrLsr == 1) mos7840_handle_new_lsr(mos7840_port, regval); +out: + clear_bit_unlock(MOS7840_FLAG_CTRL_BUSY, &mos7840_port->flags); } static int mos7840_get_reg(struct moschip_port *mcs, __u16 Wval, __u16 reg, @@ -511,6 +521,9 @@ unsigned char *buffer = mcs->ctrl_buf; int ret; + if (test_and_set_bit_lock(MOS7840_FLAG_CTRL_BUSY, &mcs->flags)) + return -EBUSY; + dr->bRequestType = MCS_RD_RTYPE; dr->bRequest = MCS_RDREQ; dr->wValue = cpu_to_le16(Wval); /* 0 */ @@ -522,6 +535,9 @@ mos7840_control_callback, mcs); mcs->control_urb->transfer_buffer_length = 2; ret = usb_submit_urb(mcs->control_urb, GFP_ATOMIC); + if (ret) + clear_bit_unlock(MOS7840_FLAG_CTRL_BUSY, &mcs->flags); + return ret; } @@ -548,7 +564,7 @@ __u16 reg) { struct usb_device *dev = mcs->port->serial->dev; - struct usb_ctrlrequest *dr = mcs->dr; + struct usb_ctrlrequest *dr = mcs->led_dr; dr->bRequestType = MCS_WR_RTYPE; dr->bRequest = MCS_WRREQ; @@ -556,10 +572,10 @@ dr->wIndex = cpu_to_le16(reg); dr->wLength = cpu_to_le16(0); - usb_fill_control_urb(mcs->control_urb, dev, usb_sndctrlpipe(dev, 0), + usb_fill_control_urb(mcs->led_urb, dev, usb_sndctrlpipe(dev, 0), (unsigned char *)dr, NULL, 0, mos7840_set_led_callback, NULL); - usb_submit_urb(mcs->control_urb, GFP_ATOMIC); + usb_submit_urb(mcs->led_urb, GFP_ATOMIC); } static void mos7840_set_led_sync(struct usb_serial_port *port, __u16 reg, @@ -585,7 +601,19 @@ { struct moschip_port *mcs = (struct moschip_port *) arg; - mcs->led_flag = false; + clear_bit_unlock(MOS7840_FLAG_LED_BUSY, &mcs->flags); +} + +static void mos7840_led_activity(struct usb_serial_port *port) +{ + struct moschip_port *mos7840_port = usb_get_serial_port_data(port); + + if (test_and_set_bit_lock(MOS7840_FLAG_LED_BUSY, &mos7840_port->flags)) + return; + + mos7840_set_led_async(mos7840_port, 0x0301, MODEM_CONTROL_REGISTER); + mod_timer(&mos7840_port->led_timer1, + jiffies + msecs_to_jiffies(LED_ON_MS)); } /***************************************************************************** @@ -790,14 +818,8 @@ return; } - /* Turn on LED */ - if (mos7840_port->has_led && !mos7840_port->led_flag) { - mos7840_port->led_flag = true; - mos7840_set_led_async(mos7840_port, 0x0301, - MODEM_CONTROL_REGISTER); - mod_timer(&mos7840_port->led_timer1, - jiffies + msecs_to_jiffies(LED_ON_MS)); - } + if (mos7840_port->has_led) + mos7840_led_activity(port); mos7840_port->read_urb_busy = true; retval = usb_submit_urb(mos7840_port->read_urb, GFP_ATOMIC); @@ -851,18 +873,6 @@ /************************************************************************/ /* D R I V E R T T Y I N T E R F A C E F U N C T I O N S */ /************************************************************************/ -#ifdef MCSSerialProbe -static int mos7840_serial_probe(struct usb_serial *serial, - const struct usb_device_id *id) -{ - - /*need to implement the mode_reg reading and updating\ - structures usb_serial_ device_type\ - (i.e num_ports, num_bulkin,bulkout etc) */ - /* Also we can update the changes attach */ - return 1; -} -#endif /***************************************************************************** * mos7840_open @@ -940,20 +950,20 @@ status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data); if (status < 0) { dev_dbg(&port->dev, "Reading Spreg failed\n"); - return -1; + goto err; } Data |= 0x80; status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); if (status < 0) { dev_dbg(&port->dev, "writing Spreg failed\n"); - return -1; + goto err; } Data &= ~0x80; status = mos7840_set_reg_sync(port, mos7840_port->SpRegOffset, Data); if (status < 0) { dev_dbg(&port->dev, "writing Spreg failed\n"); - return -1; + goto err; } /* End of block to be checked */ @@ -962,7 +972,7 @@ &Data); if (status < 0) { dev_dbg(&port->dev, "Reading Controlreg failed\n"); - return -1; + goto err; } Data |= 0x08; /* Driver done bit */ Data |= 0x20; /* rx_disable */ @@ -970,7 +980,7 @@ mos7840_port->ControlRegOffset, Data); if (status < 0) { dev_dbg(&port->dev, "writing Controlreg failed\n"); - return -1; + goto err; } /* do register settings here */ /* Set all regs to the device default values. */ @@ -981,21 +991,21 @@ status = mos7840_set_uart_reg(port, INTERRUPT_ENABLE_REGISTER, Data); if (status < 0) { dev_dbg(&port->dev, "disabling interrupts failed\n"); - return -1; + goto err; } /* Set FIFO_CONTROL_REGISTER to the default value */ Data = 0x00; status = mos7840_set_uart_reg(port, FIFO_CONTROL_REGISTER, Data); if (status < 0) { dev_dbg(&port->dev, "Writing FIFO_CONTROL_REGISTER failed\n"); - return -1; + goto err; } Data = 0xcf; status = mos7840_set_uart_reg(port, FIFO_CONTROL_REGISTER, Data); if (status < 0) { dev_dbg(&port->dev, "Writing FIFO_CONTROL_REGISTER failed\n"); - return -1; + goto err; } Data = 0x03; @@ -1131,7 +1141,6 @@ /* initialize our wait queues */ init_waitqueue_head(&mos7840_port->wait_chase); - init_waitqueue_head(&mos7840_port->delta_msr_wait); /* initialize our icount structure */ memset(&(mos7840_port->icount), 0x00, sizeof(mos7840_port->icount)); @@ -1146,6 +1155,15 @@ mos7840_port->icount.rx = 0; return 0; +err: + for (j = 0; j < NUM_URBS; ++j) { + urb = mos7840_port->write_urb_pool[j]; + if (!urb) + continue; + kfree(urb->transfer_buffer); + usb_free_urb(urb); + } + return status; } /***************************************************************************** @@ -1507,13 +1525,8 @@ data1 = urb->transfer_buffer; dev_dbg(&port->dev, "bulkout endpoint is %d\n", port->bulk_out_endpointAddress); - /* Turn on LED */ - if (mos7840_port->has_led && !mos7840_port->led_flag) { - mos7840_port->led_flag = true; - mos7840_set_led_sync(port, MODEM_CONTROL_REGISTER, 0x0301); - mod_timer(&mos7840_port->led_timer1, - jiffies + msecs_to_jiffies(LED_ON_MS)); - } + if (mos7840_port->has_led) + mos7840_led_activity(port); /* send it down the pipe */ status = usb_submit_urb(urb, GFP_ATOMIC); @@ -2021,8 +2034,6 @@ mos7840_port->read_urb_busy = false; } } - wake_up(&mos7840_port->delta_msr_wait); - mos7840_port->delta_msr_cond = 1; dev_dbg(&port->dev, "%s - mos7840_port->shadowLCR is End %x\n", __func__, mos7840_port->shadowLCR); } @@ -2223,13 +2234,18 @@ while (1) { /* interruptible_sleep_on(&mos7840_port->delta_msr_wait); */ mos7840_port->delta_msr_cond = 0; - wait_event_interruptible(mos7840_port->delta_msr_wait, - (mos7840_port-> + wait_event_interruptible(port->delta_msr_wait, + (port->serial->disconnected || + mos7840_port-> delta_msr_cond == 1)); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + cnow = mos7840_port->icount; smp_rmb(); if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr && @@ -2255,13 +2271,21 @@ static int mos7810_check(struct usb_serial *serial) { int i, pass_count = 0; + u8 *buf; __u16 data = 0, mcr_data = 0; __u16 test_pattern = 0x55AA; + int res; + + buf = kmalloc(VENDOR_READ_LENGTH, GFP_KERNEL); + if (!buf) + return 0; /* failed to identify 7810 */ /* Store MCR setting */ - usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), + res = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), MCS_RDREQ, MCS_RD_RTYPE, 0x0300, MODEM_CONTROL_REGISTER, - &mcr_data, VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT); + buf, VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT); + if (res == VENDOR_READ_LENGTH) + mcr_data = *buf; for (i = 0; i < 16; i++) { /* Send the 1-bit test pattern out to MCS7810 test pin */ @@ -2271,9 +2295,12 @@ MODEM_CONTROL_REGISTER, NULL, 0, MOS_WDR_TIMEOUT); /* Read the test pattern back */ - usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), - MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, &data, - VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT); + res = usb_control_msg(serial->dev, + usb_rcvctrlpipe(serial->dev, 0), MCS_RDREQ, + MCS_RD_RTYPE, 0, GPIO_REGISTER, buf, + VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT); + if (res == VENDOR_READ_LENGTH) + data = *buf; /* If this is a MCS7810 device, both test patterns must match */ if (((test_pattern >> i) ^ (~data >> 1)) & 0x0001) @@ -2287,38 +2314,56 @@ MCS_WR_RTYPE, 0x0300 | mcr_data, MODEM_CONTROL_REGISTER, NULL, 0, MOS_WDR_TIMEOUT); + kfree(buf); + if (pass_count == 16) return 1; return 0; } -static int mos7840_calc_num_ports(struct usb_serial *serial) +static int mos7840_probe(struct usb_serial *serial, + const struct usb_device_id *id) { - __u16 data = 0x00; - int mos7840_num_ports; + u16 product = le16_to_cpu(serial->dev->descriptor.idProduct); + u8 *buf; + int device_type; + + if (product == MOSCHIP_DEVICE_ID_7810 || + product == MOSCHIP_DEVICE_ID_7820) { + device_type = product; + goto out; + } + + buf = kzalloc(VENDOR_READ_LENGTH, GFP_KERNEL); + if (!buf) + return -ENOMEM; usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), - MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, &data, - VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT); + MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, buf, + VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT); - if (serial->dev->descriptor.idProduct == MOSCHIP_DEVICE_ID_7810 || - serial->dev->descriptor.idProduct == MOSCHIP_DEVICE_ID_7820) { - device_type = serial->dev->descriptor.idProduct; - } else { - /* For a MCS7840 device GPIO0 must be set to 1 */ - if ((data & 0x01) == 1) - device_type = MOSCHIP_DEVICE_ID_7840; - else if (mos7810_check(serial)) - device_type = MOSCHIP_DEVICE_ID_7810; - else - device_type = MOSCHIP_DEVICE_ID_7820; - } + /* For a MCS7840 device GPIO0 must be set to 1 */ + if (buf[0] & 0x01) + device_type = MOSCHIP_DEVICE_ID_7840; + else if (mos7810_check(serial)) + device_type = MOSCHIP_DEVICE_ID_7810; + else + device_type = MOSCHIP_DEVICE_ID_7820; + + kfree(buf); +out: + usb_set_serial_data(serial, (void *)(unsigned long)device_type); + + return 0; +} + +static int mos7840_calc_num_ports(struct usb_serial *serial) +{ + int device_type = (unsigned long)usb_get_serial_data(serial); + int mos7840_num_ports; mos7840_num_ports = (device_type >> 4) & 0x000F; - serial->num_bulk_in = mos7840_num_ports; - serial->num_bulk_out = mos7840_num_ports; - serial->num_ports = mos7840_num_ports; return mos7840_num_ports; } @@ -2326,6 +2371,7 @@ static int mos7840_port_probe(struct usb_serial_port *port) { struct usb_serial *serial = port->serial; + int device_type = (unsigned long)usb_get_serial_data(serial); struct moschip_port *mos7840_port; int status; int pnum; @@ -2503,6 +2549,14 @@ if (device_type == MOSCHIP_DEVICE_ID_7810) { mos7840_port->has_led = true; + mos7840_port->led_urb = usb_alloc_urb(0, GFP_KERNEL); + mos7840_port->led_dr = kmalloc(sizeof(*mos7840_port->led_dr), + GFP_KERNEL); + if (!mos7840_port->led_urb || !mos7840_port->led_dr) { + status = -ENOMEM; + goto error; + } + init_timer(&mos7840_port->led_timer1); mos7840_port->led_timer1.function = mos7840_led_off; mos7840_port->led_timer1.expires = @@ -2515,8 +2569,6 @@ jiffies + msecs_to_jiffies(LED_OFF_MS); mos7840_port->led_timer2.data = (unsigned long)mos7840_port; - mos7840_port->led_flag = false; - /* Turn off LED */ mos7840_set_led_sync(port, MODEM_CONTROL_REGISTER, 0x0300); } @@ -2538,6 +2590,8 @@ } return 0; error: + kfree(mos7840_port->led_dr); + usb_free_urb(mos7840_port->led_urb); kfree(mos7840_port->dr); kfree(mos7840_port->ctrl_buf); usb_free_urb(mos7840_port->control_urb); @@ -2558,6 +2612,10 @@ del_timer_sync(&mos7840_port->led_timer1); del_timer_sync(&mos7840_port->led_timer2); + + usb_kill_urb(mos7840_port->led_urb); + usb_free_urb(mos7840_port->led_urb); + kfree(mos7840_port->led_dr); } usb_kill_urb(mos7840_port->control_urb); usb_free_urb(mos7840_port->control_urb); @@ -2584,9 +2642,7 @@ .throttle = mos7840_throttle, .unthrottle = mos7840_unthrottle, .calc_num_ports = mos7840_calc_num_ports, -#ifdef MCSSerialProbe - .probe = mos7840_serial_probe, -#endif + .probe = mos7840_probe, .ioctl = mos7840_ioctl, .set_termios = mos7840_set_termios, .break_ctl = mos7840_break, --- linux-ppc-3.8.0.orig/drivers/usb/serial/ch341.c +++ linux-ppc-3.8.0/drivers/usb/serial/ch341.c @@ -80,7 +80,6 @@ struct ch341_private { spinlock_t lock; /* access lock */ - wait_queue_head_t delta_msr_wait; /* wait queue for modem status */ unsigned baud_rate; /* set baud rate */ u8 line_control; /* set line control value RTS/DTR */ u8 line_status; /* active status of modem control inputs */ @@ -252,7 +251,6 @@ return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); priv->baud_rate = DEFAULT_BAUD_RATE; priv->line_control = CH341_BIT_RTS | CH341_BIT_DTR; @@ -298,7 +296,7 @@ priv->line_control &= ~(CH341_BIT_RTS | CH341_BIT_DTR); spin_unlock_irqrestore(&priv->lock, flags); ch341_set_handshake(port->serial->dev, priv->line_control); - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); } static void ch341_close(struct usb_serial_port *port) @@ -491,7 +489,7 @@ tty_kref_put(tty); } - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); } exit: @@ -517,11 +515,14 @@ spin_unlock_irqrestore(&priv->lock, flags); while (!multi_change) { - interruptible_sleep_on(&priv->delta_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->lock, flags); status = priv->line_status; multi_change = priv->multi_status_change; --- linux-ppc-3.8.0.orig/drivers/usb/serial/f81232.c +++ linux-ppc-3.8.0/drivers/usb/serial/f81232.c @@ -47,7 +47,6 @@ struct f81232_private { spinlock_t lock; - wait_queue_head_t delta_msr_wait; u8 line_control; u8 line_status; }; @@ -112,7 +111,7 @@ line_status = priv->line_status; priv->line_status &= ~UART_STATE_TRANSIENT_MASK; spin_unlock_irqrestore(&priv->lock, flags); - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); if (!urb->actual_length) return; @@ -171,11 +170,12 @@ /* FIXME - Stubbed out for now */ /* Don't change anything if nothing has changed */ - if (!tty_termios_hw_change(&tty->termios, old_termios)) + if (old_termios && !tty_termios_hw_change(&tty->termios, old_termios)) return; /* Do the real work here... */ - tty_termios_copy_hw(&tty->termios, old_termios); + if (old_termios) + tty_termios_copy_hw(&tty->termios, old_termios); } static int f81232_tiocmget(struct tty_struct *tty) @@ -193,12 +193,11 @@ static int f81232_open(struct tty_struct *tty, struct usb_serial_port *port) { - struct ktermios tmp_termios; int result; /* Setup termios */ if (tty) - f81232_set_termios(tty, port, &tmp_termios); + f81232_set_termios(tty, port, NULL); result = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (result) { @@ -261,11 +260,14 @@ spin_unlock_irqrestore(&priv->lock, flags); while (1) { - interruptible_sleep_on(&priv->delta_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->lock, flags); status = priv->line_status; spin_unlock_irqrestore(&priv->lock, flags); @@ -327,7 +329,6 @@ return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); usb_set_serial_port_data(port, priv); --- linux-ppc-3.8.0.orig/drivers/usb/serial/zte_ev.c +++ linux-ppc-3.8.0/drivers/usb/serial/zte_ev.c @@ -41,9 +41,6 @@ int len; unsigned char *buf; - if (port->number != 0) - return -ENODEV; - buf = kmalloc(MAX_SETUP_DATA_SIZE, GFP_KERNEL); if (!buf) return -ENOMEM; @@ -53,7 +50,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x22, 0x21, 0x0001, 0x0000, NULL, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); dev_dbg(dev, "result = %d\n", result); /* send 2st cmd and recieve data */ @@ -65,7 +62,7 @@ result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x21, 0xa1, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 3 cmd */ @@ -84,7 +81,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x20, 0x21, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 4 cmd */ @@ -95,7 +92,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x22, 0x21, 0x0003, 0x0000, NULL, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); dev_dbg(dev, "result = %d\n", result); /* send 5 cmd */ @@ -107,7 +104,7 @@ result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x21, 0xa1, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 6 cmd */ @@ -126,7 +123,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x20, 0x21, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); kfree(buf); @@ -166,9 +163,6 @@ int len; unsigned char *buf; - if (port->number != 0) - return; - buf = kmalloc(MAX_SETUP_DATA_SIZE, GFP_KERNEL); if (!buf) return; @@ -178,7 +172,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x22, 0x21, 0x0002, 0x0000, NULL, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); dev_dbg(dev, "result = %d\n", result); /* send 2st ctl cmd(CTL 21 22 03 00 00 00 00 00 ) */ @@ -186,7 +180,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x22, 0x21, 0x0003, 0x0000, NULL, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); dev_dbg(dev, "result = %d\n", result); /* send 3st cmd and recieve data */ @@ -198,7 +192,7 @@ result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x21, 0xa1, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 4 cmd */ @@ -217,7 +211,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x20, 0x21, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 5 cmd */ @@ -228,7 +222,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x22, 0x21, 0x0003, 0x0000, NULL, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); dev_dbg(dev, "result = %d\n", result); /* send 6 cmd */ @@ -240,7 +234,7 @@ result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x21, 0xa1, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 7 cmd */ @@ -259,7 +253,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x20, 0x21, 0x0000, 0x0000, buf, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); debug_data(dev, __func__, len, buf, result); /* send 8 cmd */ @@ -270,7 +264,7 @@ result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x22, 0x21, 0x0003, 0x0000, NULL, len, - HZ * USB_CTRL_GET_TIMEOUT); + USB_CTRL_GET_TIMEOUT); dev_dbg(dev, "result = %d\n", result); kfree(buf); @@ -279,11 +273,29 @@ } static const struct usb_device_id id_table[] = { - { USB_DEVICE(0x19d2, 0xffff) }, /* AC8700 */ - { USB_DEVICE(0x19d2, 0xfffe) }, - { USB_DEVICE(0x19d2, 0xfffd) }, /* MG880 */ + /* AC8710, AC8710T */ + { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffff, 0xff, 0xff, 0xff) }, + /* AC8700 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfffe, 0xff, 0xff, 0xff) }, + /* MG880 */ + { USB_DEVICE(0x19d2, 0xfffd) }, + { USB_DEVICE(0x19d2, 0xfffc) }, + { USB_DEVICE(0x19d2, 0xfffb) }, + /* AC2726, AC8710_V3 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfff1, 0xff, 0xff, 0xff) }, + { USB_DEVICE(0x19d2, 0xfff6) }, + { USB_DEVICE(0x19d2, 0xfff7) }, + { USB_DEVICE(0x19d2, 0xfff8) }, + { USB_DEVICE(0x19d2, 0xfff9) }, + { USB_DEVICE(0x19d2, 0xffee) }, + /* AC2716, MC2716 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffed, 0xff, 0xff, 0xff) }, + /* AD3812 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffeb, 0xff, 0xff, 0xff) }, + { USB_DEVICE(0x19d2, 0xffec) }, { USB_DEVICE(0x05C6, 0x3197) }, { USB_DEVICE(0x05C6, 0x6000) }, + { USB_DEVICE(0x05C6, 0x9008) }, { }, }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-ppc-3.8.0.orig/drivers/usb/serial/usb_wwan.c +++ linux-ppc-3.8.0/drivers/usb/serial/usb_wwan.c @@ -38,7 +38,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; @@ -48,12 +47,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); @@ -298,18 +296,18 @@ dev_dbg(dev, "%s: empty read urb received\n", __func__); tty_kref_put(tty); } - - /* Resubmit urb so we continue receiving */ - err = usb_submit_urb(urb, GFP_ATOMIC); - if (err) { - if (err != -EPERM) { - dev_err(dev, "%s: resubmit read urb failed. (%d)\n", __func__, err); - /* busy also in error unless we are killed */ - usb_mark_last_busy(port->serial->dev); - } - } else { + } + /* Resubmit urb so we continue receiving */ + err = usb_submit_urb(urb, GFP_ATOMIC); + if (err) { + if (err != -EPERM) { + dev_err(dev, "%s: resubmit read urb failed. (%d)\n", + __func__, err); + /* busy also in error unless we are killed */ usb_mark_last_busy(port->serial->dev); } + } else { + usb_mark_last_busy(port->serial->dev); } } --- linux-ppc-3.8.0.orig/drivers/usb/serial/ssu100.c +++ linux-ppc-3.8.0/drivers/usb/serial/ssu100.c @@ -61,7 +61,6 @@ spinlock_t status_lock; u8 shadowLSR; u8 shadowMSR; - wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */ struct async_icount icount; }; @@ -355,8 +354,9 @@ spin_unlock_irqrestore(&priv->status_lock, flags); while (1) { - wait_event_interruptible(priv->delta_msr_wait, - ((priv->icount.rng != prev.rng) || + wait_event_interruptible(port->delta_msr_wait, + (port->serial->disconnected || + (priv->icount.rng != prev.rng) || (priv->icount.dsr != prev.dsr) || (priv->icount.dcd != prev.dcd) || (priv->icount.cts != prev.cts))); @@ -364,6 +364,9 @@ if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->status_lock, flags); cur = priv->icount; spin_unlock_irqrestore(&priv->status_lock, flags); @@ -445,7 +448,6 @@ return -ENOMEM; spin_lock_init(&priv->status_lock); - init_waitqueue_head(&priv->delta_msr_wait); usb_set_serial_port_data(port, priv); @@ -506,19 +508,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) @@ -540,7 +539,7 @@ priv->icount.dcd++; if (msr & UART_MSR_TERI) priv->icount.rng++; - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); } } --- linux-ppc-3.8.0.orig/drivers/usb/serial/quatech2.c +++ linux-ppc-3.8.0/drivers/usb/serial/quatech2.c @@ -128,7 +128,6 @@ u8 shadowLSR; u8 shadowMSR; - wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */ struct async_icount icount; struct usb_serial_port *port; @@ -506,8 +505,9 @@ spin_unlock_irqrestore(&priv->lock, flags); while (1) { - wait_event_interruptible(priv->delta_msr_wait, - ((priv->icount.rng != prev.rng) || + wait_event_interruptible(port->delta_msr_wait, + (port->serial->disconnected || + (priv->icount.rng != prev.rng) || (priv->icount.dsr != prev.dsr) || (priv->icount.dcd != prev.dcd) || (priv->icount.cts != prev.cts))); @@ -515,6 +515,9 @@ if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->lock, flags); cur = priv->icount; spin_unlock_irqrestore(&priv->lock, flags); @@ -841,7 +844,6 @@ spin_lock_init(&port_priv->lock); spin_lock_init(&port_priv->urb_lock); - init_waitqueue_head(&port_priv->delta_msr_wait); port_priv->port = port; port_priv->write_urb = usb_alloc_urb(0, GFP_KERNEL); @@ -945,19 +947,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) @@ -986,7 +986,7 @@ if (newMSR & UART_MSR_TERI) port_priv->icount.rng++; - wake_up_interruptible(&port_priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); } } --- linux-ppc-3.8.0.orig/drivers/usb/serial/spcp8x5.c +++ linux-ppc-3.8.0/drivers/usb/serial/spcp8x5.c @@ -149,7 +149,6 @@ struct spcp8x5_private { spinlock_t lock; enum spcp8x5_type type; - wait_queue_head_t delta_msr_wait; u8 line_control; u8 line_status; }; @@ -179,7 +178,6 @@ return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); priv->type = type; usb_set_serial_port_data(port , priv); @@ -316,7 +314,6 @@ struct spcp8x5_private *priv = usb_get_serial_port_data(port); unsigned long flags; unsigned int cflag = tty->termios.c_cflag; - unsigned int old_cflag = old_termios->c_cflag; unsigned short uartdata; unsigned char buf[2] = {0, 0}; int baud; @@ -325,15 +322,15 @@ /* check that they really want us to change something */ - if (!tty_termios_hw_change(&tty->termios, old_termios)) + if (old_termios && !tty_termios_hw_change(&tty->termios, old_termios)) return; /* set DTR/RTS active */ spin_lock_irqsave(&priv->lock, flags); control = priv->line_control; - if ((old_cflag & CBAUD) == B0) { + if (old_termios && (old_termios->c_cflag & CBAUD) == B0) { priv->line_control |= MCR_DTR; - if (!(old_cflag & CRTSCTS)) + if (!(old_termios->c_cflag & CRTSCTS)) priv->line_control |= MCR_RTS; } if (control != priv->line_control) { @@ -423,7 +420,6 @@ * status of the device. */ static int spcp8x5_open(struct tty_struct *tty, struct usb_serial_port *port) { - struct ktermios tmp_termios; struct usb_serial *serial = port->serial; struct spcp8x5_private *priv = usb_get_serial_port_data(port); int ret; @@ -444,7 +440,7 @@ /* Setup termios */ if (tty) - spcp8x5_set_termios(tty, port, &tmp_termios); + spcp8x5_set_termios(tty, port, NULL); spcp8x5_get_msr(serial->dev, &status, priv->type); @@ -476,7 +472,7 @@ priv->line_status &= ~UART_STATE_TRANSIENT_MASK; spin_unlock_irqrestore(&priv->lock, flags); /* wake up the wait for termios */ - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); if (!urb->actual_length) return; @@ -526,12 +522,15 @@ while (1) { /* wake up in bulk read */ - interruptible_sleep_on(&priv->delta_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->lock, flags); status = priv->line_status; spin_unlock_irqrestore(&priv->lock, flags); --- linux-ppc-3.8.0.orig/drivers/usb/serial/cypress_m8.h +++ linux-ppc-3.8.0/drivers/usb/serial/cypress_m8.h @@ -24,6 +24,10 @@ #define VENDOR_ID_CYPRESS 0x04b4 #define PRODUCT_ID_CYPHIDCOM 0x5500 +/* FRWD Dongle - a GPS sports watch */ +#define VENDOR_ID_FRWD 0x6737 +#define PRODUCT_ID_CYPHIDCOM_FRWD 0x0001 + /* Powercom UPS, chip CY7C63723 */ #define VENDOR_ID_POWERCOM 0x0d9f #define PRODUCT_ID_UPS 0x0002 --- linux-ppc-3.8.0.orig/drivers/usb/serial/option.c +++ linux-ppc-3.8.0/drivers/usb/serial/option.c @@ -159,8 +159,6 @@ #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 #define NOVATELWIRELESS_PRODUCT_MC551 0xB001 @@ -196,6 +194,7 @@ #define DELL_PRODUCT_5800_MINICARD_VZW 0x8195 /* Novatel E362 */ #define DELL_PRODUCT_5800_V2_MINICARD_VZW 0x8196 /* Novatel E362 */ +#define DELL_PRODUCT_5804_MINICARD_ATT 0x819b /* Novatel E371 */ #define KYOCERA_VENDOR_ID 0x0c88 #define KYOCERA_PRODUCT_KPC650 0x17da @@ -249,13 +248,7 @@ #define ZTE_PRODUCT_MF622 0x0001 #define ZTE_PRODUCT_MF628 0x0015 #define ZTE_PRODUCT_MF626 0x0031 -#define ZTE_PRODUCT_CDMA_TECH 0xfffe -#define ZTE_PRODUCT_AC8710 0xfff1 -#define ZTE_PRODUCT_AC2726 0xfff5 -#define ZTE_PRODUCT_AC8710T 0xffff #define ZTE_PRODUCT_MC2718 0xffe8 -#define ZTE_PRODUCT_AD3812 0xffeb -#define ZTE_PRODUCT_MC2716 0xffed #define BENQ_VENDOR_ID 0x04a5 #define BENQ_PRODUCT_H10 0x4068 @@ -341,21 +334,19 @@ #define CINTERION_PRODUCT_EU3_E 0x0051 #define CINTERION_PRODUCT_EU3_P 0x0052 #define CINTERION_PRODUCT_PH8 0x0053 +#define CINTERION_PRODUCT_AHXX 0x0055 +#define CINTERION_PRODUCT_PLXX 0x0060 /* Olivetti products */ #define OLIVETTI_VENDOR_ID 0x0b3c #define OLIVETTI_PRODUCT_OLICARD100 0xc000 +#define OLIVETTI_PRODUCT_OLICARD145 0xc003 +#define OLIVETTI_PRODUCT_OLICARD200 0xc005 /* Celot products */ #define CELOT_VENDOR_ID 0x211f #define CELOT_PRODUCT_CT680M 0x6801 -/* ONDA Communication vendor id */ -#define ONDA_VENDOR_ID 0x1ee8 - -/* ONDA MT825UP HSDPA 14.2 modem */ -#define ONDA_MT825UP 0x000b - /* Samsung products */ #define SAMSUNG_VENDOR_ID 0x04e8 #define SAMSUNG_PRODUCT_GT_B3730 0x6889 @@ -448,7 +439,8 @@ /* Hyundai Petatel Inc. products */ #define PETATEL_VENDOR_ID 0x1ff4 -#define PETATEL_PRODUCT_NP10T 0x600e +#define PETATEL_PRODUCT_NP10T_600A 0x600a +#define PETATEL_PRODUCT_NP10T_600E 0x600e /* TP-LINK Incorporated products */ #define TPLINK_VENDOR_ID 0x2357 @@ -479,6 +471,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 = { @@ -490,18 +483,10 @@ .reserved = BIT(4), }; -static const struct option_blacklist_info zte_ad3812_z_blacklist = { - .sendsetup = BIT(0) | BIT(1) | BIT(2), -}; - static const struct option_blacklist_info zte_mc2718_z_blacklist = { .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4), }; -static const struct option_blacklist_info zte_mc2716_z_blacklist = { - .sendsetup = BIT(1) | BIT(2) | BIT(3), -}; - static const struct option_blacklist_info huawei_cdc12_blacklist = { .reserved = BIT(1) | BIT(2), }; @@ -575,12 +560,21 @@ { 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(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, 0x1c1f, 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, 0x14ac, 0xff, 0xff, 0xff), /* Huawei E1820 */ + .driver_info = (kernel_ulong_t) &net_intf1_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist }, { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0xff, 0xff) }, @@ -730,8 +724,6 @@ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC547) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED) }, - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1) }, - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1_M) }, { 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) }, @@ -760,6 +752,7 @@ { 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_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5804_MINICARD_ATT, 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) }, @@ -784,8 +777,8 @@ { USB_DEVICE_INTERFACE_CLASS(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_1012, 0xff) }, { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) }, { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, - { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) }, @@ -821,7 +814,8 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0018, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0020, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0021, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, @@ -955,6 +949,8 @@ .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, 0x0412, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { 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), @@ -1184,16 +1180,9 @@ { 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) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) }, + /* NOTE: most ZTE CDMA devices should be driven by zte_ev, not option */ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff), - .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff), - .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist }, { USB_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) }, @@ -1215,7 +1204,14 @@ { 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) }, + { 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) }, @@ -1246,6 +1242,9 @@ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_E) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX) }, + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) }, @@ -1254,8 +1253,9 @@ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200) }, { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ - { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) }, @@ -1327,10 +1327,21 @@ { 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(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) }, + { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) }, { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE(CHANGHONG_VENDOR_ID, CHANGHONG_PRODUCT_CH690) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x02, 0x01) }, /* D-Link DWM-156 (variant) */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x00, 0x00) }, /* D-Link DWM-156 (variant) */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); --- linux-ppc-3.8.0.orig/drivers/usb/serial/qcaux.c +++ linux-ppc-3.8.0/drivers/usb/serial/qcaux.c @@ -69,6 +69,7 @@ { 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 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1fac, 0x0151, 0xff, 0xff, 0xff) }, { }, }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-ppc-3.8.0.orig/drivers/usb/serial/io_edgeport.c +++ linux-ppc-3.8.0/drivers/usb/serial/io_edgeport.c @@ -110,7 +110,6 @@ wait_queue_head_t wait_chase; /* for handling sleeping while waiting for chase to finish */ wait_queue_head_t wait_open; /* for handling sleeping while waiting for open to finish */ wait_queue_head_t wait_command; /* for handling sleeping while waiting for command to finish */ - wait_queue_head_t delta_msr_wait; /* for handling sleeping while waiting for msr change to happen */ struct async_icount icount; struct usb_serial_port *port; /* loop back to the owner of this object */ @@ -884,7 +883,6 @@ /* initialize our wait queues */ init_waitqueue_head(&edge_port->wait_open); init_waitqueue_head(&edge_port->wait_chase); - init_waitqueue_head(&edge_port->delta_msr_wait); init_waitqueue_head(&edge_port->wait_command); /* initialize our icount structure */ @@ -1669,13 +1667,17 @@ dev_dbg(&port->dev, "%s (%d) TIOCMIWAIT\n", __func__, port->number); cprev = edge_port->icount; while (1) { - prepare_to_wait(&edge_port->delta_msr_wait, + prepare_to_wait(&port->delta_msr_wait, &wait, TASK_INTERRUPTIBLE); schedule(); - finish_wait(&edge_port->delta_msr_wait, &wait); + finish_wait(&port->delta_msr_wait, &wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + cnow = edge_port->icount; if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr && cnow.dcd == cprev.dcd && cnow.cts == cprev.cts) @@ -2055,7 +2057,7 @@ icount->dcd++; if (newMsr & EDGEPORT_MSR_DELTA_RI) icount->rng++; - wake_up_interruptible(&edge_port->delta_msr_wait); + wake_up_interruptible(&edge_port->port->delta_msr_wait); } /* Save the new modem status */ --- linux-ppc-3.8.0.orig/drivers/usb/serial/ftdi_sio.c +++ linux-ppc-3.8.0/drivers/usb/serial/ftdi_sio.c @@ -69,9 +69,7 @@ int flags; /* some ASYNC_xxxx flags are supported */ unsigned long last_dtr_rts; /* saved modem control outputs */ struct async_icount icount; - wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */ char prev_status; /* Used for TIOCMIWAIT */ - bool dev_gone; /* Used to abort TIOCMIWAIT */ char transmit_empty; /* If transmitter is empty or not */ __u16 interface; /* FT2232C, FT2232H or FT4232H port interface (0 for FT232/245) */ @@ -191,7 +189,10 @@ { 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(FTDI_VID, FTDI_OPENDCC_GBM_BOOST_PID) }, { USB_DEVICE(NEWPORT_VID, NEWPORT_AGILIS_PID) }, + { USB_DEVICE(NEWPORT_VID, NEWPORT_CONEX_CC_PID) }, + { USB_DEVICE(NEWPORT_VID, NEWPORT_CONEX_AGP_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) }, @@ -642,6 +643,7 @@ { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, { USB_DEVICE(ACTON_VID, ACTON_SPECTRAPRO_PID) }, { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) }, + { USB_DEVICE(MITSUBISHI_VID, MITSUBISHI_FXUSB_PID) }, { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) }, { USB_DEVICE(BANDB_VID, BANDB_USO9ML2_PID) }, @@ -735,9 +737,34 @@ { USB_DEVICE(FTDI_VID, FTDI_NDI_AURORA_SCU_PID), .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk }, { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) }, - { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_SERIAL_VX7_PID) }, - { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_CT29B_PID) }, - { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_RTS01_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_S03_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_59_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_57A_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_57B_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_29A_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_29B_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_29F_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_62B_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_S01_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_63_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_29C_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_81B_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_82B_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_K5D_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_K4Y_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_K5G_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_S05_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_60_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_61_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_62_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_63B_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_64_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_65_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_92_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_92D_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_W5R_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_A5R_PID) }, + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_USB_PW1_PID) }, { USB_DEVICE(FTDI_VID, FTDI_MAXSTREAM_PID) }, { USB_DEVICE(FTDI_VID, FTDI_PHI_FISCO_PID) }, { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) }, @@ -871,7 +898,9 @@ { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) }, { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, - { USB_DEVICE(ST_VID, ST_STMCLT1030_PID), + { USB_DEVICE(ST_VID, ST_STMCLT_2232_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, + { USB_DEVICE(ST_VID, ST_STMCLT_4232_PID), .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk }, { USB_DEVICE(FTDI_VID, FTDI_RF_R106) }, { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID), @@ -1691,10 +1720,8 @@ kref_init(&priv->kref); mutex_init(&priv->cfg_lock); - init_waitqueue_head(&priv->delta_msr_wait); priv->flags = ASYNC_LOW_LATENCY; - priv->dev_gone = false; if (quirk && quirk->port_probe) quirk->port_probe(priv); @@ -1795,20 +1822,24 @@ } /* - * First and second port on STMCLiteadaptors is reserved for JTAG interface - * and the forth port for pio + * First two ports on JTAG adaptors using an FT4232 such as STMicroelectronics's + * ST Micro Connect Lite are reserved for JTAG or other non-UART interfaces and + * can be accessed from userspace. + * The next two ports are enabled as UARTs by default, where port 2 is + * a conventional RS-232 UART. */ static int ftdi_stmclite_probe(struct usb_serial *serial) { struct usb_device *udev = serial->dev; struct usb_interface *interface = serial->interface; - if (interface == udev->actconfig->interface[2]) - return 0; - - dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n"); + if (interface == udev->actconfig->interface[0] || + interface == udev->actconfig->interface[1]) { + dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n"); + return -ENODEV; + } - return -ENODEV; + return 0; } /* @@ -1840,8 +1871,7 @@ { struct ftdi_private *priv = usb_get_serial_port_data(port); - priv->dev_gone = true; - wake_up_interruptible_all(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); remove_sysfs_attrs(port); @@ -1886,24 +1916,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); } /* @@ -1992,7 +2020,7 @@ if (diff_status & FTDI_RS0_RLSD) priv->icount.dcd++; - wake_up_interruptible_all(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); priv->prev_status = status; } @@ -2449,11 +2477,15 @@ */ case TIOCMIWAIT: cprev = priv->icount; - while (!priv->dev_gone) { - interruptible_sleep_on(&priv->delta_msr_wait); + for (;;) { + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + cnow = priv->icount; if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) || ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) || @@ -2463,8 +2495,6 @@ } cprev = cnow; } - return -EIO; - break; case TIOCSERGETLSR: return get_lsr_info(port, (struct serial_struct __user *)arg); break; --- linux-ppc-3.8.0.orig/drivers/usb/serial/cypress_m8.c +++ linux-ppc-3.8.0/drivers/usb/serial/cypress_m8.c @@ -65,6 +65,7 @@ static const struct usb_device_id id_table_cyphidcomrs232[] = { { USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) }, { USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) }, + { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) }, { } /* Terminating entry */ }; @@ -78,6 +79,7 @@ { USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB_LT20) }, { USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) }, { USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) }, + { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) }, { USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) }, { } /* Terminating entry */ }; @@ -111,7 +113,6 @@ int baud_rate; /* stores current baud rate in integer form */ int isthrottled; /* if throttled, discard reads */ - wait_queue_head_t delta_msr_wait; /* used for TIOCMIWAIT */ char prev_status, diff_status; /* used for TIOCMIWAIT */ /* we pass a pointer to this as the argument sent to cypress_set_termios old_termios */ @@ -231,6 +232,12 @@ * Cypress serial helper functions *****************************************************************************/ +/* FRWD Dongle hidcom needs to skip reset and speed checks */ +static inline bool is_frwd(struct usb_device *dev) +{ + return ((le16_to_cpu(dev->descriptor.idVendor) == VENDOR_ID_FRWD) && + (le16_to_cpu(dev->descriptor.idProduct) == PRODUCT_ID_CYPHIDCOM_FRWD)); +} static int analyze_baud_rate(struct usb_serial_port *port, speed_t new_rate) { @@ -240,6 +247,10 @@ if (unstable_bauds) return new_rate; + /* FRWD Dongle uses 115200 bps */ + if (is_frwd(port->serial->dev)) + return new_rate; + /* * The general purpose firmware for the Cypress M8 allows for * a maximum speed of 57600bps (I have no idea whether DeLorme @@ -449,9 +460,12 @@ kfree(priv); return -ENOMEM; } - init_waitqueue_head(&priv->delta_msr_wait); - usb_reset_configuration(serial->dev); + /* Skip reset for FRWD device. It is a workaound: + device hangs if it receives SET_CONFIGURE in Configured + state. */ + if (!is_frwd(serial->dev)) + usb_reset_configuration(serial->dev); priv->cmd_ctrl = 0; priv->line_control = 0; @@ -868,12 +882,16 @@ switch (cmd) { /* This code comes from drivers/char/serial.c and ftdi_sio.c */ case TIOCMIWAIT: - while (priv != NULL) { - interruptible_sleep_on(&priv->delta_msr_wait); + for (;;) { + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; - else { + + if (port->serial->disconnected) + return -EIO; + + { char diff = priv->diff_status; if (diff == 0) return -EIO; /* no change => error */ @@ -1187,7 +1205,7 @@ if (priv->current_status != priv->prev_status) { priv->diff_status |= priv->current_status ^ priv->prev_status; - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); priv->prev_status = priv->current_status; } spin_unlock_irqrestore(&priv->lock, flags); --- linux-ppc-3.8.0.orig/drivers/usb/serial/mos7720.c +++ linux-ppc-3.8.0/drivers/usb/serial/mos7720.c @@ -40,7 +40,7 @@ #define DRIVER_DESC "Moschip USB Serial Driver" /* default urb timeout */ -#define MOS_WDR_TIMEOUT (HZ * 5) +#define MOS_WDR_TIMEOUT 5000 #define MOS_MAX_PORT 0x02 #define MOS_WRITE 0x0E @@ -91,6 +91,7 @@ struct list_head urblist_entry; struct kref ref_count; struct urb *urb; + struct usb_ctrlrequest *setup; }; enum mos7715_pp_modes { @@ -228,11 +229,22 @@ __u8 requesttype = (__u8)0xc0; __u16 index = get_reg_index(reg); __u16 value = get_reg_value(reg, serial_portnum); - int status = usb_control_msg(usbdev, pipe, request, requesttype, value, - index, data, 1, MOS_WDR_TIMEOUT); - if (status < 0) + u8 *buf; + int status; + + buf = kmalloc(1, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + status = usb_control_msg(usbdev, pipe, request, requesttype, value, + index, buf, 1, MOS_WDR_TIMEOUT); + if (status == 1) + *data = *buf; + else if (status < 0) dev_err(&usbdev->dev, "mos7720: usb_control_msg() failed: %d", status); + kfree(buf); + return status; } @@ -261,6 +273,7 @@ struct mos7715_parport *mos_parport = urbtrack->mos_parport; usb_free_urb(urbtrack->urb); + kfree(urbtrack->setup); kfree(urbtrack); kref_put(&mos_parport->ref_count, destroy_mos_parport); } @@ -345,7 +358,6 @@ struct urbtracker *urbtrack; int ret_val; unsigned long flags; - struct usb_ctrlrequest setup; struct usb_serial *serial = mos_parport->serial; struct usb_device *usbdev = serial->dev; @@ -363,14 +375,20 @@ kfree(urbtrack); return -ENOMEM; } - setup.bRequestType = (__u8)0x40; - setup.bRequest = (__u8)0x0e; - setup.wValue = get_reg_value(reg, dummy); - setup.wIndex = get_reg_index(reg); - setup.wLength = 0; + urbtrack->setup = kmalloc(sizeof(*urbtrack->setup), GFP_KERNEL); + if (!urbtrack->setup) { + usb_free_urb(urbtrack->urb); + kfree(urbtrack); + return -ENOMEM; + } + urbtrack->setup->bRequestType = (__u8)0x40; + urbtrack->setup->bRequest = (__u8)0x0e; + urbtrack->setup->wValue = get_reg_value(reg, dummy); + urbtrack->setup->wIndex = get_reg_index(reg); + urbtrack->setup->wLength = 0; usb_fill_control_urb(urbtrack->urb, usbdev, usb_sndctrlpipe(usbdev, 0), - (unsigned char *)&setup, + (unsigned char *)urbtrack->setup, NULL, 0, async_complete, urbtrack); kref_init(&urbtrack->ref_count); INIT_LIST_HEAD(&urbtrack->urblist_entry); @@ -1636,7 +1654,7 @@ mos7720_port->shadowMCR |= (UART_MCR_XONANY); /* To set hardware flow control to the specified * * serial port, in SP1/2_CONTROL_REG */ - if (port->number) + if (port_number) write_mos_reg(serial, dummy, SP_CONTROL_REG, 0x01); else write_mos_reg(serial, dummy, SP_CONTROL_REG, 0x02); @@ -1995,7 +2013,7 @@ /* setting configuration feature to one */ usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), - (__u8)0x03, 0x00, 0x01, 0x00, NULL, 0x00, 5*HZ); + (__u8)0x03, 0x00, 0x01, 0x00, NULL, 0x00, 5000); /* start the interrupt urb */ ret_val = usb_submit_urb(serial->port[0]->interrupt_in_urb, GFP_KERNEL); @@ -2038,7 +2056,7 @@ /* wait for synchronous usb calls to return */ if (mos_parport->msg_pending) wait_for_completion_timeout(&mos_parport->syncmsg_compl, - MOS_WDR_TIMEOUT); + msecs_to_jiffies(MOS_WDR_TIMEOUT)); parport_remove_port(mos_parport->pp); usb_set_serial_data(serial, NULL); --- linux-ppc-3.8.0.orig/drivers/usb/serial/ark3116.c +++ linux-ppc-3.8.0/drivers/usb/serial/ark3116.c @@ -43,7 +43,7 @@ #define DRIVER_NAME "ark3116" /* usb timeout of 1 second */ -#define ARK_TIMEOUT (1*HZ) +#define ARK_TIMEOUT 1000 static const struct usb_device_id id_table[] = { { USB_DEVICE(0x6547, 0x0232) }, @@ -62,7 +62,6 @@ } struct ark3116_private { - wait_queue_head_t delta_msr_wait; struct async_icount icount; int irda; /* 1 for irda device */ @@ -146,7 +145,6 @@ if (!priv) return -ENOMEM; - init_waitqueue_head(&priv->delta_msr_wait); mutex_init(&priv->hw_lock); spin_lock_init(&priv->status_lock); @@ -456,10 +454,14 @@ case TIOCMIWAIT: for (;;) { struct async_icount prev = priv->icount; - interruptible_sleep_on(&priv->delta_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + if ((prev.rng == priv->icount.rng) && (prev.dsr == priv->icount.dsr) && (prev.dcd == priv->icount.dcd) && @@ -580,7 +582,7 @@ priv->icount.dcd++; if (msr & UART_MSR_TERI) priv->icount.rng++; - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); } } --- linux-ppc-3.8.0.orig/drivers/usb/serial/qcserial.c +++ linux-ppc-3.8.0/drivers/usb/serial/qcserial.c @@ -35,7 +35,13 @@ {DEVICE_G1K(0x04da, 0x250c)}, /* Panasonic Gobi QDL device */ {DEVICE_G1K(0x413c, 0x8172)}, /* Dell Gobi Modem device */ {DEVICE_G1K(0x413c, 0x8171)}, /* Dell Gobi QDL device */ - {DEVICE_G1K(0x1410, 0xa001)}, /* Novatel Gobi Modem device */ + {DEVICE_G1K(0x1410, 0xa001)}, /* Novatel/Verizon USB-1000 */ + {DEVICE_G1K(0x1410, 0xa002)}, /* Novatel Gobi Modem device */ + {DEVICE_G1K(0x1410, 0xa003)}, /* Novatel Gobi Modem device */ + {DEVICE_G1K(0x1410, 0xa004)}, /* Novatel Gobi Modem device */ + {DEVICE_G1K(0x1410, 0xa005)}, /* Novatel Gobi Modem device */ + {DEVICE_G1K(0x1410, 0xa006)}, /* Novatel Gobi Modem device */ + {DEVICE_G1K(0x1410, 0xa007)}, /* Novatel Gobi Modem device */ {DEVICE_G1K(0x1410, 0xa008)}, /* Novatel Gobi QDL device */ {DEVICE_G1K(0x0b05, 0x1776)}, /* Asus Gobi Modem device */ {DEVICE_G1K(0x0b05, 0x1774)}, /* Asus Gobi QDL device */ @@ -118,6 +124,7 @@ {USB_DEVICE(0x1199, 0x901b)}, /* Sierra Wireless MC7770 */ {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */ {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */ + {USB_DEVICE(0x0AF0, 0x8120)}, /* Option GTM681W */ /* non Gobi Qualcomm serial devices */ {USB_DEVICE_INTERFACE_NUMBER(0x0f3d, 0x68a2, 0)}, /* Sierra Wireless MC7700 Device Management */ @@ -197,12 +204,15 @@ if (is_gobi1k) { /* Gobi 1K USB layout: - * 0: serial port (doesn't respond) + * 0: DM/DIAG (use libqcdm from ModemManager for communication) * 1: serial port (doesn't respond) * 2: AT-capable modem port * 3: QMI/net */ - if (ifnum == 2) + if (ifnum == 0) { + dev_dbg(dev, "Gobi 1K DM/DIAG interface found\n"); + altsetting = 1; + } else if (ifnum == 2) dev_dbg(dev, "Modem port found\n"); else altsetting = -1; --- linux-ppc-3.8.0.orig/drivers/usb/serial/ti_usb_3410_5052.c +++ linux-ppc-3.8.0/drivers/usb/serial/ti_usb_3410_5052.c @@ -74,7 +74,6 @@ int tp_flags; int tp_closing_wait;/* in .01 secs */ struct async_icount tp_icount; - wait_queue_head_t tp_msr_wait; /* wait for msr change */ wait_queue_head_t tp_write_wait; struct ti_device *tp_tdev; struct usb_serial_port *tp_port; @@ -179,7 +178,8 @@ { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) }, { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) }, - { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) }, + { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_STEREO_PLUG_ID) }, + { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_STRIP_PORT_ID) }, { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) }, }; @@ -373,7 +373,7 @@ usb_set_serial_data(serial, tdev); /* determine device type */ - if (usb_match_id(serial->interface, ti_id_table_3410)) + if (serial->type == &ti_1port_device) tdev->td_is_3410 = 1; dev_dbg(&dev->dev, "%s - device type is %s\n", __func__, tdev->td_is_3410 ? "3410" : "5052"); @@ -432,7 +432,6 @@ else tport->tp_uart_base_addr = TI_UART2_BASE_ADDR; tport->tp_closing_wait = closing_wait; - init_waitqueue_head(&tport->tp_msr_wait); init_waitqueue_head(&tport->tp_write_wait); if (kfifo_alloc(&tport->write_fifo, TI_WRITE_BUF_SIZE, GFP_KERNEL)) { kfree(tport); @@ -784,9 +783,13 @@ dev_dbg(&port->dev, "%s - TIOCMIWAIT\n", __func__); cprev = tport->tp_icount; while (1) { - interruptible_sleep_on(&tport->tp_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); if (signal_pending(current)) return -ERESTARTSYS; + + if (port->serial->disconnected) + return -EIO; + cnow = tport->tp_icount; if (cnow.rng == cprev.rng && cnow.dsr == cprev.dsr && cnow.dcd == cprev.dcd && cnow.cts == cprev.cts) @@ -1400,7 +1403,7 @@ icount->dcd++; if (msr & TI_MSR_DELTA_RI) icount->rng++; - wake_up_interruptible(&tport->tp_msr_wait); + wake_up_interruptible(&tport->tp_port->delta_msr_wait); spin_unlock_irqrestore(&tport->tp_lock, flags); } @@ -1624,14 +1627,15 @@ char buf[32]; /* try ID specific firmware first, then try generic firmware */ - sprintf(buf, "ti_usb-v%04x-p%04x.fw", dev->descriptor.idVendor, - dev->descriptor.idProduct); + sprintf(buf, "ti_usb-v%04x-p%04x.fw", + le16_to_cpu(dev->descriptor.idVendor), + le16_to_cpu(dev->descriptor.idProduct)); status = request_firmware(&fw_p, buf, &dev->dev); if (status != 0) { buf[0] = '\0'; - if (dev->descriptor.idVendor == MTS_VENDOR_ID) { - switch (dev->descriptor.idProduct) { + if (le16_to_cpu(dev->descriptor.idVendor) == MTS_VENDOR_ID) { + switch (le16_to_cpu(dev->descriptor.idProduct)) { case MTS_CDMA_PRODUCT_ID: strcpy(buf, "mts_cdma.fw"); break; --- linux-ppc-3.8.0.orig/drivers/usb/serial/cp210x.c +++ linux-ppc-3.8.0/drivers/usb/serial/cp210x.c @@ -53,6 +53,7 @@ { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ { USB_DEVICE(0x0489, 0xE003) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ { USB_DEVICE(0x0745, 0x1000) }, /* CipherLab USB CCD Barcode Scanner 1000 */ + { USB_DEVICE(0x0846, 0x1100) }, /* NetGear Managed Switch M4100 series, M5300 series, M7100 series */ { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */ { USB_DEVICE(0x08FD, 0x000A) }, /* Digianswer A/S , ZigBee/802.15.4 MAC Device */ { USB_DEVICE(0x0BED, 0x1100) }, /* MEI (TM) Cashflow-SC Bill/Voucher Acceptor */ @@ -85,6 +86,7 @@ { USB_DEVICE(0x10C4, 0x813F) }, /* Tams Master Easy Control */ { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */ { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */ + { USB_DEVICE(0x2405, 0x0003) }, /* West Mountain Radio RIGblaster Advantage */ { USB_DEVICE(0x10C4, 0x8156) }, /* B&G H3000 link cable */ { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */ { USB_DEVICE(0x10C4, 0x815F) }, /* Timewave HamLinkUSB */ @@ -117,6 +119,8 @@ { 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, 0x88A4) }, /* MMB Networks ZigBee USB Device */ + { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */ @@ -147,9 +151,29 @@ { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */ { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */ { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */ + { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */ { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */ { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */ { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */ + { USB_DEVICE(0x1FB9, 0x0100) }, /* Lake Shore Model 121 Current Source */ + { USB_DEVICE(0x1FB9, 0x0200) }, /* Lake Shore Model 218A Temperature Monitor */ + { USB_DEVICE(0x1FB9, 0x0201) }, /* Lake Shore Model 219 Temperature Monitor */ + { USB_DEVICE(0x1FB9, 0x0202) }, /* Lake Shore Model 233 Temperature Transmitter */ + { USB_DEVICE(0x1FB9, 0x0203) }, /* Lake Shore Model 235 Temperature Transmitter */ + { USB_DEVICE(0x1FB9, 0x0300) }, /* Lake Shore Model 335 Temperature Controller */ + { USB_DEVICE(0x1FB9, 0x0301) }, /* Lake Shore Model 336 Temperature Controller */ + { USB_DEVICE(0x1FB9, 0x0302) }, /* Lake Shore Model 350 Temperature Controller */ + { USB_DEVICE(0x1FB9, 0x0303) }, /* Lake Shore Model 371 AC Bridge */ + { USB_DEVICE(0x1FB9, 0x0400) }, /* Lake Shore Model 411 Handheld Gaussmeter */ + { USB_DEVICE(0x1FB9, 0x0401) }, /* Lake Shore Model 425 Gaussmeter */ + { USB_DEVICE(0x1FB9, 0x0402) }, /* Lake Shore Model 455A Gaussmeter */ + { USB_DEVICE(0x1FB9, 0x0403) }, /* Lake Shore Model 475A Gaussmeter */ + { USB_DEVICE(0x1FB9, 0x0404) }, /* Lake Shore Model 465 Three Axis Gaussmeter */ + { USB_DEVICE(0x1FB9, 0x0600) }, /* Lake Shore Model 625A Superconducting MPS */ + { USB_DEVICE(0x1FB9, 0x0601) }, /* Lake Shore Model 642A Magnet Power Supply */ + { USB_DEVICE(0x1FB9, 0x0602) }, /* Lake Shore Model 648 Magnet Power Supply */ + { USB_DEVICE(0x1FB9, 0x0700) }, /* Lake Shore Model 737 VSM Controller */ + { USB_DEVICE(0x1FB9, 0x0701) }, /* Lake Shore Model 776 Hall Matrix */ { USB_DEVICE(0x3195, 0xF190) }, /* Link Instruments MSO-19 */ { USB_DEVICE(0x3195, 0xF280) }, /* Link Instruments MSO-28 */ { USB_DEVICE(0x3195, 0xF281) }, /* Link Instruments MSO-28 */ --- linux-ppc-3.8.0.orig/drivers/usb/serial/visor.c +++ linux-ppc-3.8.0/drivers/usb/serial/visor.c @@ -566,10 +566,19 @@ */ #define COPY_PORT(dest, src) \ do { \ + int i; \ + \ + for (i = 0; i < ARRAY_SIZE(src->read_urbs); ++i) { \ + dest->read_urbs[i] = src->read_urbs[i]; \ + dest->read_urbs[i]->context = dest; \ + dest->bulk_in_buffers[i] = src->bulk_in_buffers[i]; \ + } \ dest->read_urb = src->read_urb; \ dest->bulk_in_endpointAddress = src->bulk_in_endpointAddress;\ dest->bulk_in_buffer = src->bulk_in_buffer; \ + dest->bulk_in_size = src->bulk_in_size; \ dest->interrupt_in_urb = src->interrupt_in_urb; \ + dest->interrupt_in_urb->context = dest; \ dest->interrupt_in_endpointAddress = \ src->interrupt_in_endpointAddress;\ dest->interrupt_in_buffer = src->interrupt_in_buffer; \ --- linux-ppc-3.8.0.orig/drivers/usb/serial/garmin_gps.c +++ linux-ppc-3.8.0/drivers/usb/serial/garmin_gps.c @@ -959,10 +959,7 @@ if (!serial) return; - mutex_lock(&port->serial->disc_mutex); - - if (!port->serial->disconnected) - garmin_clear(garmin_data_p); + garmin_clear(garmin_data_p); /* shutdown our urbs */ usb_kill_urb(port->read_urb); @@ -971,8 +968,6 @@ /* keep reset state so we know that we must start a new session */ if (garmin_data_p->state != STATE_RESET) garmin_data_p->state = STATE_DISCONNECTED; - - mutex_unlock(&port->serial->disc_mutex); } --- linux-ppc-3.8.0.orig/drivers/usb/serial/sierra.c +++ linux-ppc-3.8.0/drivers/usb/serial/sierra.c @@ -861,19 +861,13 @@ 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) --- linux-ppc-3.8.0.orig/drivers/usb/serial/pl2303.c +++ linux-ppc-3.8.0/drivers/usb/serial/pl2303.c @@ -139,7 +139,6 @@ struct pl2303_private { spinlock_t lock; - wait_queue_head_t delta_msr_wait; u8 line_control; u8 line_status; }; @@ -233,7 +232,6 @@ return -ENOMEM; spin_lock_init(&priv->lock); - init_waitqueue_head(&priv->delta_msr_wait); usb_set_serial_port_data(port, priv); @@ -285,7 +283,7 @@ serial settings even to the same values as before. Thus we actually need to filter in this specific case */ - if (!tty_termios_hw_change(&tty->termios, old_termios)) + if (old_termios && !tty_termios_hw_change(&tty->termios, old_termios)) return; cflag = tty->termios.c_cflag; @@ -294,7 +292,8 @@ if (!buf) { dev_err(&port->dev, "%s - out of memory.\n", __func__); /* Report back no change occurred */ - tty->termios = *old_termios; + if (old_termios) + tty->termios = *old_termios; return; } @@ -434,7 +433,7 @@ control = priv->line_control; if ((cflag & CBAUD) == B0) priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS); - else if ((old_termios->c_cflag & CBAUD) == B0) + else if (old_termios && (old_termios->c_cflag & CBAUD) == B0) priv->line_control |= (CONTROL_DTR | CONTROL_RTS); if (control != priv->line_control) { control = priv->line_control; @@ -493,7 +492,6 @@ static int pl2303_open(struct tty_struct *tty, struct usb_serial_port *port) { - struct ktermios tmp_termios; struct usb_serial *serial = port->serial; struct pl2303_serial_private *spriv = usb_get_serial_data(serial); int result; @@ -509,7 +507,7 @@ /* Setup termios */ if (tty) - pl2303_set_termios(tty, port, &tmp_termios); + pl2303_set_termios(tty, port, NULL); result = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (result) { @@ -607,11 +605,14 @@ spin_unlock_irqrestore(&priv->lock, flags); while (1) { - interruptible_sleep_on(&priv->delta_msr_wait); + interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) return -ERESTARTSYS; + if (port->serial->disconnected) + return -EIO; + spin_lock_irqsave(&priv->lock, flags); status = priv->line_status; spin_unlock_irqrestore(&priv->lock, flags); @@ -719,7 +720,7 @@ spin_unlock_irqrestore(&priv->lock, flags); if (priv->line_status & UART_BREAK_ERROR) usb_serial_handle_break(port); - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); tty = tty_port_tty_get(&port->port); if (!tty) @@ -784,7 +785,7 @@ line_status = priv->line_status; priv->line_status &= ~UART_STATE_TRANSIENT_MASK; spin_unlock_irqrestore(&priv->lock, flags); - wake_up_interruptible(&priv->delta_msr_wait); + wake_up_interruptible(&port->delta_msr_wait); if (!urb->actual_length) return; --- linux-ppc-3.8.0.orig/drivers/usb/serial/ti_usb_3410_5052.h +++ linux-ppc-3.8.0/drivers/usb/serial/ti_usb_3410_5052.h @@ -52,7 +52,9 @@ /* Abbott Diabetics vendor and product ids */ #define ABBOTT_VENDOR_ID 0x1a61 -#define ABBOTT_PRODUCT_ID 0x3410 +#define ABBOTT_STEREO_PLUG_ID 0x3410 +#define ABBOTT_PRODUCT_ID ABBOTT_STEREO_PLUG_ID +#define ABBOTT_STRIP_PORT_ID 0x3420 /* Commands */ #define TI_GET_VERSION 0x01 --- linux-ppc-3.8.0.orig/drivers/usb/atm/cxacru.c +++ linux-ppc-3.8.0/drivers/usb/atm/cxacru.c @@ -686,7 +686,8 @@ { int ret, len; __le32 *buf; - int offb, offd; + int offb; + unsigned int offd; const int stride = CMD_PACKET_SIZE / (4 * 2) - 1; int buflen = ((size - 1) / stride + 1 + size * 2) * 4; --- linux-ppc-3.8.0.orig/drivers/usb/chipidea/udc.c +++ linux-ppc-3.8.0/drivers/usb/chipidea/udc.c @@ -461,6 +461,8 @@ mReq->ptr->page[i] = (mReq->req.dma + i * CI13XXX_PAGE_SIZE) & ~TD_RESERVED_MASK; + wmb(); + if (!list_empty(&mEp->qh.queue)) { struct ci13xxx_req *mReqPrev; int n = hw_ep_bit(mEp->num, mEp->dir); @@ -561,6 +563,12 @@ struct ci13xxx_req *mReq = \ list_entry(mEp->qh.queue.next, struct ci13xxx_req, queue); + + if (mReq->zptr) { + dma_pool_free(mEp->td_pool, mReq->zptr, mReq->zdma); + mReq->zptr = NULL; + } + list_del_init(&mReq->queue); mReq->req.status = -ESHUTDOWN; --- linux-ppc-3.8.0.orig/drivers/usb/chipidea/udc.h +++ linux-ppc-3.8.0/drivers/usb/chipidea/udc.h @@ -40,7 +40,7 @@ #define TD_CURR_OFFSET (0x0FFFUL << 0) #define TD_FRAME_NUM (0x07FFUL << 0) #define TD_RESERVED_MASK (0x0FFFUL << 0) -} __attribute__ ((packed)); +} __attribute__ ((packed, aligned(4))); /* DMA layout of queue heads */ struct ci13xxx_qh { @@ -57,7 +57,7 @@ /* 9 */ u32 RESERVED; struct usb_ctrlrequest setup; -} __attribute__ ((packed)); +} __attribute__ ((packed, aligned(4))); /** * struct ci13xxx_req - usb request representation --- linux-ppc-3.8.0.orig/drivers/usb/chipidea/Kconfig +++ linux-ppc-3.8.0/drivers/usb/chipidea/Kconfig @@ -20,7 +20,7 @@ config USB_CHIPIDEA_HOST bool "ChipIdea host controller" depends on USB=y || USB=USB_CHIPIDEA - depends on USB_EHCI_HCD + depends on USB_EHCI_HCD=y select USB_EHCI_ROOT_HUB_TT help Say Y here to enable host controller functionality of the --- linux-ppc-3.8.0.orig/drivers/usb/storage/initializers.h +++ linux-ppc-3.8.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 usb dongles in multi-port mode */ -int usb_stor_huawei_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); --- linux-ppc-3.8.0.orig/drivers/usb/storage/initializers.c +++ linux-ppc-3.8.0/drivers/usb/storage/initializers.c @@ -92,8 +92,8 @@ return 0; } -/* This places the HUAWEI usb dongles in multi-port mode */ -static int usb_stor_huawei_feature_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) { int result; @@ -104,75 +104,3 @@ 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 = 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 (us->pusb_dev->descriptor.idProduct >= 0x1446) - result = usb_stor_huawei_scsi_init(us); - else - result = usb_stor_huawei_feature_init(us); - } - return result; -} --- linux-ppc-3.8.0.orig/drivers/usb/storage/cypress_atacb.c +++ linux-ppc-3.8.0/drivers/usb/storage/cypress_atacb.c @@ -248,14 +248,26 @@ { struct us_data *us; int result; + struct usb_device *device; result = usb_stor_probe1(&us, intf, id, (id - cypress_usb_ids) + cypress_unusual_dev_list); if (result) return result; - us->protocol_name = "Transparent SCSI with Cypress ATACB"; - us->proto_handler = cypress_atacb_passthrough; + /* Among CY7C68300 chips, the A revision does not support Cypress ATACB + * Filter out this revision from EEPROM default descriptor values + */ + device = interface_to_usbdev(intf); + if (device->descriptor.iManufacturer != 0x38 || + device->descriptor.iProduct != 0x4e || + device->descriptor.iSerialNumber != 0x64) { + us->protocol_name = "Transparent SCSI with Cypress ATACB"; + us->proto_handler = cypress_atacb_passthrough; + } else { + us->protocol_name = "Transparent SCSI"; + us->proto_handler = usb_stor_transparent_scsi_command; + } result = usb_stor_probe2(us); return result; --- linux-ppc-3.8.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-ppc-3.8.0/drivers/usb/storage/unusual_devs.h @@ -488,6 +488,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_MAX_SECTORS_64 | US_FL_BULK_IGNORE_TAG), +/* Added by Dmitry Artamonow */ +UNUSUAL_DEV( 0x04e8, 0x5136, 0x0000, 0x9999, + "Samsung", + "YP-Z3", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_MAX_SECTORS_64), + /* Entry and supporting patch by Theodore Kilgore . * Device uses standards-violating 32-byte Bulk Command Block Wrappers and * reports itself as "Proprietary SCSI Bulk." Cf. device entry 0x084d:0x0011. @@ -650,6 +657,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_FIX_INQUIRY ), +/* Submitted by Ren Bigcren */ +UNUSUAL_DEV( 0x054c, 0x02a5, 0x0100, 0x0100, + "Sony Corp.", + "MicroVault Flash Drive", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_READ_CAPACITY_16 ), + /* floppy reports multiple luns */ UNUSUAL_DEV( 0x055d, 0x2020, 0x0000, 0x0210, "SAMSUNG", @@ -1169,6 +1183,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 @@ -1527,10 +1548,335 @@ /* Reported by fangxiaozhi * This brings the HUAWEI data card devices into multi-port mode */ -UNUSUAL_VENDOR_INTF(0x12d1, 0x08, 0x06, 0x50, +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, "HUAWEI MOBILE", "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_init, + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, 0), /* Reported by Vilius Bilinkevicius mmio_base + MMIO_STATUS_OFFSET); + spin_lock_irqsave(&iommu->lock, flags); + /* enable event interrupts again */ + do { + /* + * Workaround for Erratum ERBT1312 + * Clearing the EVT_INT bit may race in the hardware, so read + * it again and make sure it was really cleared + */ + status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET); + writel(MMIO_STATUS_EVT_INT_MASK, + iommu->mmio_base + MMIO_STATUS_OFFSET); + } while (status & MMIO_STATUS_EVT_INT_MASK); + head = readl(iommu->mmio_base + MMIO_EVT_HEAD_OFFSET); tail = readl(iommu->mmio_base + MMIO_EVT_TAIL_OFFSET); @@ -741,16 +756,25 @@ static void iommu_poll_ppr_log(struct amd_iommu *iommu) { unsigned long flags; - u32 head, tail; + u32 head, tail, status; if (iommu->ppr_log == NULL) return; - /* enable ppr interrupts again */ - writel(MMIO_STATUS_PPR_INT_MASK, iommu->mmio_base + MMIO_STATUS_OFFSET); - spin_lock_irqsave(&iommu->lock, flags); + /* enable ppr interrupts again */ + do { + /* + * Workaround for Erratum ERBT1312 + * Clearing the PPR_INT bit may race in the hardware, so read + * it again and make sure it was really cleared + */ + status = readl(iommu->mmio_base + MMIO_STATUS_OFFSET); + writel(MMIO_STATUS_PPR_INT_MASK, + iommu->mmio_base + MMIO_STATUS_OFFSET); + } while (status & MMIO_STATUS_PPR_INT_MASK); + head = readl(iommu->mmio_base + MMIO_PPR_HEAD_OFFSET); tail = readl(iommu->mmio_base + MMIO_PPR_TAIL_OFFSET); @@ -1484,6 +1508,10 @@ /* Large PTE found which maps this address */ unmap_size = PTE_PAGE_SIZE(*pte); + + /* Only unmap from the first pte in the page */ + if ((unmap_size - 1) & bus_addr) + break; count = PAGE_SIZE_PTE_COUNT(unmap_size); for (i = 0; i < count; i++) pte[i] = 0ULL; @@ -1493,7 +1521,7 @@ unmapped += unmap_size; } - BUG_ON(!is_power_of_2(unmapped)); + BUG_ON(unmapped && !is_power_of_2(unmapped)); return unmapped; } @@ -2466,18 +2494,16 @@ /* allocate a protection domain if a device is added */ dma_domain = find_protection_domain(devid); - if (dma_domain) - goto out; - dma_domain = dma_ops_domain_alloc(); - if (!dma_domain) - goto out; - dma_domain->target_dev = devid; - - spin_lock_irqsave(&iommu_pd_list_lock, flags); - list_add_tail(&dma_domain->list, &iommu_pd_list); - spin_unlock_irqrestore(&iommu_pd_list_lock, flags); - - dev_data = get_dev_data(dev); + if (!dma_domain) { + dma_domain = dma_ops_domain_alloc(); + if (!dma_domain) + goto out; + dma_domain->target_dev = devid; + + spin_lock_irqsave(&iommu_pd_list_lock, flags); + list_add_tail(&dma_domain->list, &iommu_pd_list); + spin_unlock_irqrestore(&iommu_pd_list_lock, flags); + } dev->archdata.dma_ops = &amd_iommu_dma_ops; @@ -3950,6 +3976,9 @@ if (!table) goto out; + /* Initialize table spin-lock */ + spin_lock_init(&table->lock); + if (ioapic) /* Keep the first 32 indexes free for IOAPIC interrupts */ table->min_index = 32; --- linux-ppc-3.8.0.orig/drivers/iommu/amd_iommu_types.h +++ linux-ppc-3.8.0/drivers/iommu/amd_iommu_types.h @@ -99,6 +99,7 @@ #define PASID_MASK 0x000fffff /* MMIO status bits */ +#define MMIO_STATUS_EVT_INT_MASK (1 << 1) #define MMIO_STATUS_COM_WAIT_INT_MASK (1 << 2) #define MMIO_STATUS_PPR_INT_MASK (1 << 6) --- linux-ppc-3.8.0.orig/drivers/iommu/irq_remapping.h +++ linux-ppc-3.8.0/drivers/iommu/irq_remapping.h @@ -32,6 +32,7 @@ struct msi_msg; extern int disable_irq_remap; +extern int irq_remap_broken; extern int disable_sourceid_checking; extern int no_x2apic_optout; @@ -88,6 +89,7 @@ #define irq_remapping_enabled 0 #define disable_irq_remap 1 +#define irq_remap_broken 0 #endif /* CONFIG_IRQ_REMAP */ --- linux-ppc-3.8.0.orig/drivers/clk/clk.c +++ linux-ppc-3.8.0/drivers/clk/clk.c @@ -263,6 +263,7 @@ { return !clk ? NULL : clk->name; } +EXPORT_SYMBOL_GPL(__clk_get_name); inline struct clk_hw *__clk_get_hw(struct clk *clk) { @@ -1633,6 +1634,7 @@ /* XXX the notifier code should handle this better */ if (!cn->notifier_head.head) { srcu_cleanup_notifier_head(&cn->notifier_head); + list_del(&cn->node); kfree(cn); } --- linux-ppc-3.8.0.orig/drivers/clk/clk-highbank.c +++ linux-ppc-3.8.0/drivers/clk/clk-highbank.c @@ -182,8 +182,10 @@ reg |= HB_PLL_EXT_ENA; reg &= ~HB_PLL_EXT_BYPASS; } else { + writel(reg | HB_PLL_EXT_BYPASS, hbclk->reg); reg &= ~HB_PLL_DIVQ_MASK; reg |= divq << HB_PLL_DIVQ_SHIFT; + writel(reg | HB_PLL_EXT_BYPASS, hbclk->reg); } writel(reg, hbclk->reg); --- linux-ppc-3.8.0.orig/drivers/regulator/palmas-regulator.c +++ linux-ppc-3.8.0/drivers/regulator/palmas-regulator.c @@ -679,7 +679,7 @@ pmic->desc[id].vsel_mask = SMPS10_VSEL; pmic->desc[id].enable_reg = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, - PALMAS_SMPS10_STATUS); + PALMAS_SMPS10_CTRL); pmic->desc[id].enable_mask = SMPS10_BOOST_EN; pmic->desc[id].min_uV = 3750000; pmic->desc[id].uV_step = 1250000; --- linux-ppc-3.8.0.orig/drivers/regulator/core.c +++ linux-ppc-3.8.0/drivers/regulator/core.c @@ -200,8 +200,8 @@ } if (*min_uV > *max_uV) { - dev_err(regulator->dev, "Restricting voltage, %u-%uuV\n", - regulator->min_uV, regulator->max_uV); + rdev_err(rdev, "Restricting voltage, %u-%uuV\n", + *min_uV, *max_uV); return -EINVAL; } @@ -3032,9 +3032,13 @@ return 0; err: - pr_err("Failed to enable %s: %d\n", consumers[i].supply, ret); - while (--i >= 0) - regulator_disable(consumers[i].consumer); + for (i = 0; i < num_consumers; i++) { + if (consumers[i].ret < 0) + pr_err("Failed to enable %s: %d\n", consumers[i].supply, + consumers[i].ret); + else + regulator_disable(consumers[i].consumer); + } return ret; } --- linux-ppc-3.8.0.orig/drivers/tty/n_tty.c +++ linux-ppc-3.8.0/drivers/tty/n_tty.c @@ -1587,6 +1587,14 @@ ldata->real_raw = 0; } n_tty_set_room(tty); + /* + * Fix tty hang when I_IXON(tty) is cleared, but the tty + * been stopped by STOP_CHAR(tty) before it. + */ + if (!I_IXON(tty) && old && (old->c_iflag & IXON) && !tty->flow_stopped) { + start_tty(tty); + } + /* The termios change make the tty ready for I/O */ wake_up_interruptible(&tty->write_wait); wake_up_interruptible(&tty->read_wait); --- linux-ppc-3.8.0.orig/drivers/tty/tty_io.c +++ linux-ppc-3.8.0/drivers/tty/tty_io.c @@ -941,6 +941,14 @@ EXPORT_SYMBOL(start_tty); +/* We limit tty time update visibility to every 8 seconds or so. */ +static void tty_update_time(struct timespec *time) +{ + unsigned long sec = get_seconds() & ~7; + if ((long)(sec - time->tv_sec) > 0) + time->tv_sec = sec; +} + /** * tty_read - read method for tty device files * @file: pointer to tty file @@ -977,8 +985,10 @@ else i = -EIO; tty_ldisc_deref(ld); + if (i > 0) - inode->i_atime = current_fs_time(inode->i_sb); + tty_update_time(&inode->i_atime); + return i; } @@ -1081,7 +1091,7 @@ } if (written) { struct inode *inode = file->f_path.dentry->d_inode; - inode->i_mtime = current_fs_time(inode->i_sb); + tty_update_time(&inode->i_mtime); ret = written; } out: --- linux-ppc-3.8.0.orig/drivers/tty/n_gsm.c +++ linux-ppc-3.8.0/drivers/tty/n_gsm.c @@ -1689,6 +1689,8 @@ tty_port_put(&dlci->port); } +static void gsm_destroy_network(struct gsm_dlci *dlci); + /** * gsm_dlci_release - release DLCI * @dlci: DLCI to destroy @@ -1702,9 +1704,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); tty_vhangup(tty); + tty_lock(tty); + tty_port_tty_set(&dlci->port, NULL); tty_kref_put(tty); } + dlci->state = DLCI_CLOSED; dlci_put(dlci); } @@ -2947,6 +2959,8 @@ if (dlci == NULL) return; + if (dlci->state == DLCI_CLOSED) + return; mutex_lock(&dlci->mutex); gsm_destroy_network(dlci); mutex_unlock(&dlci->mutex); @@ -2965,6 +2979,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); } @@ -2972,9 +2988,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; @@ -2983,18 +3002,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 @@ -3013,6 +3038,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; } @@ -3022,6 +3049,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; @@ -3040,6 +3069,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))) @@ -3066,6 +3097,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 @@ -3077,6 +3111,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; @@ -3087,6 +3123,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; @@ -3098,6 +3136,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-ppc-3.8.0.orig/drivers/tty/pty.c +++ linux-ppc-3.8.0/drivers/tty/pty.c @@ -47,7 +47,6 @@ /* Review - krefs on tty_link ?? */ if (!tty->link) return; - tty->link->packet = 0; set_bit(TTY_OTHER_CLOSED, &tty->link->flags); wake_up_interruptible(&tty->link->read_wait); wake_up_interruptible(&tty->link->write_wait); @@ -676,6 +675,9 @@ nonseekable_open(inode, filp); + /* We refuse fsnotify events on ptmx, since it's a shared resource */ + filp->f_mode |= FMODE_NONOTIFY; + retval = tty_alloc_file(filp); if (retval) return retval; --- linux-ppc-3.8.0.orig/drivers/tty/tty_ioctl.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/tty/tty_buffer.c +++ linux-ppc-3.8.0/drivers/tty/tty_buffer.c @@ -473,7 +473,7 @@ struct tty_ldisc *disc; tty = port->itty; - if (WARN_RATELIMIT(tty == NULL, "tty is NULL\n")) + if (tty == NULL) return; disc = tty_ldisc_ref(tty); --- linux-ppc-3.8.0.orig/drivers/tty/tty_ldisc.c +++ linux-ppc-3.8.0/drivers/tty/tty_ldisc.c @@ -934,17 +934,17 @@ * race with the set_ldisc code path. */ - tty_lock_pair(tty, o_tty); tty_ldisc_halt(tty); - tty_ldisc_flush_works(tty); - if (o_tty) { + if (o_tty) tty_ldisc_halt(o_tty); + + tty_ldisc_flush_works(tty); + if (o_tty) tty_ldisc_flush_works(o_tty); - } + tty_lock_pair(tty, o_tty); /* This will need doing differently if we need to lock */ tty_ldisc_kill(tty); - if (o_tty) tty_ldisc_kill(o_tty); --- linux-ppc-3.8.0.orig/drivers/tty/vt/vc_screen.c +++ linux-ppc-3.8.0/drivers/tty/vt/vc_screen.c @@ -93,7 +93,7 @@ static struct vcs_poll_data * vcs_poll_data_get(struct file *file) { - struct vcs_poll_data *poll = file->private_data; + struct vcs_poll_data *poll = file->private_data, *kill = NULL; if (poll) return poll; @@ -122,10 +122,12 @@ file->private_data = poll; } else { /* someone else raced ahead of us */ - vcs_poll_data_free(poll); + kill = poll; poll = file->private_data; } spin_unlock(&file->f_lock); + if (kill) + vcs_poll_data_free(kill); return poll; } --- linux-ppc-3.8.0.orig/drivers/tty/vt/vt.c +++ linux-ppc-3.8.0/drivers/tty/vt/vt.c @@ -539,7 +539,7 @@ { unsigned short *p = (unsigned short *) vc->vc_pos; - scr_memmovew(p + nr, p, (vc->vc_cols - vc->vc_x) * 2); + scr_memmovew(p + nr, p, (vc->vc_cols - vc->vc_x - nr) * 2); scr_memsetw(p, vc->vc_video_erase_char, nr * 2); vc->vc_need_wrap = 0; if (DO_UPDATE(vc)) @@ -638,7 +638,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; @@ -2987,7 +2987,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; @@ -2998,7 +2998,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++) { @@ -3083,11 +3083,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) { @@ -3124,6 +3135,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; @@ -3132,7 +3155,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++) { @@ -3145,10 +3168,8 @@ } } - if (retval) { - console_unlock(); + if (retval) goto err; - } retval = -ENODEV; @@ -3164,15 +3185,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); @@ -3199,15 +3216,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) { @@ -3492,28 +3508,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]; @@ -3566,10 +3572,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); /** @@ -3585,9 +3610,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)) @@ -3613,27 +3647,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-ppc-3.8.0.orig/drivers/tty/serial/imx.c +++ linux-ppc-3.8.0/drivers/tty/serial/imx.c @@ -1213,8 +1213,14 @@ struct imx_port_ucrs old_ucr; unsigned int ucr1; unsigned long flags; + int locked = 1; - spin_lock_irqsave(&sport->port.lock, flags); + 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 @@ -1241,7 +1247,8 @@ imx_port_ucrs_restore(&sport->port, &old_ucr); - spin_unlock_irqrestore(&sport->port.lock, flags); + if (locked) + spin_unlock_irqrestore(&sport->port.lock, flags); } /* --- linux-ppc-3.8.0.orig/drivers/tty/serial/of_serial.c +++ linux-ppc-3.8.0/drivers/tty/serial/of_serial.c @@ -240,6 +240,12 @@ { .compatible = "ns16850", .data = (void *)PORT_16850, }, { .compatible = "nvidia,tegra20-uart", .data = (void *)PORT_TEGRA, }, { .compatible = "nxp,lpc3220-uart", .data = (void *)PORT_LPC3220, }, + { .compatible = "altr,16550-FIFO32", + .data = (void *)PORT_ALTR_16550_F32, }, + { .compatible = "altr,16550-FIFO64", + .data = (void *)PORT_ALTR_16550_F64, }, + { .compatible = "altr,16550-FIFO128", + .data = (void *)PORT_ALTR_16550_F128, }, #ifdef CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL { .compatible = "ibm,qpace-nwp-serial", .data = (void *)PORT_NWPSERIAL, }, --- linux-ppc-3.8.0.orig/drivers/tty/serial/sunsu.c +++ linux-ppc-3.8.0/drivers/tty/serial/sunsu.c @@ -974,6 +974,7 @@ #define UART_NR 4 static struct uart_sunsu_port sunsu_ports[UART_NR]; +static int nr_inst; /* Number of already registered ports */ #ifdef CONFIG_SERIO @@ -1343,13 +1344,8 @@ printk("Console: ttyS%d (SU)\n", (sunsu_reg.minor - 64) + co->index); - /* - * Check whether an invalid uart number has been specified, and - * if so, search for the first available port that does have - * console support. - */ - if (co->index >= UART_NR) - co->index = 0; + if (co->index > nr_inst) + return -ENODEV; port = &sunsu_ports[co->index].port; /* @@ -1414,7 +1410,6 @@ static int su_probe(struct platform_device *op) { - static int inst; struct device_node *dp = op->dev.of_node; struct uart_sunsu_port *up; struct resource *rp; @@ -1424,16 +1419,16 @@ type = su_get_type(dp); if (type == SU_PORT_PORT) { - if (inst >= UART_NR) + if (nr_inst >= UART_NR) return -EINVAL; - up = &sunsu_ports[inst]; + up = &sunsu_ports[nr_inst]; } else { up = kzalloc(sizeof(*up), GFP_KERNEL); if (!up) return -ENOMEM; } - up->port.line = inst; + up->port.line = nr_inst; spin_lock_init(&up->port.lock); @@ -1467,6 +1462,8 @@ } dev_set_drvdata(&op->dev, up); + nr_inst++; + return 0; } @@ -1494,7 +1491,7 @@ dev_set_drvdata(&op->dev, up); - inst++; + nr_inst++; return 0; --- linux-ppc-3.8.0.orig/drivers/tty/serial/serial_core.c +++ linux-ppc-3.8.0/drivers/tty/serial/serial_core.c @@ -1940,6 +1940,8 @@ mutex_unlock(&port->mutex); return 0; } + put_device(tty_dev); + if (console_suspend_enabled || !uart_console(uport)) uport->suspended = 1; @@ -2005,9 +2007,11 @@ disable_irq_wake(uport->irq); uport->irq_wake = 0; } + put_device(tty_dev); mutex_unlock(&port->mutex); return 0; } + put_device(tty_dev); uport->suspended = 0; /* --- linux-ppc-3.8.0.orig/drivers/tty/serial/atmel_serial.c +++ linux-ppc-3.8.0/drivers/tty/serial/atmel_serial.c @@ -158,7 +158,7 @@ }; static struct atmel_uart_port atmel_ports[ATMEL_MAX_UART]; -static unsigned long atmel_ports_in_use; +static DECLARE_BITMAP(atmel_ports_in_use, ATMEL_MAX_UART); #ifdef SUPPORT_SYSRQ static struct console atmel_console; @@ -1768,15 +1768,14 @@ if (ret < 0) /* port id not found in platform data nor device-tree aliases: * auto-enumerate it */ - ret = find_first_zero_bit(&atmel_ports_in_use, - sizeof(atmel_ports_in_use)); + ret = find_first_zero_bit(atmel_ports_in_use, ATMEL_MAX_UART); - if (ret > ATMEL_MAX_UART) { + if (ret >= ATMEL_MAX_UART) { ret = -ENODEV; goto err; } - if (test_and_set_bit(ret, &atmel_ports_in_use)) { + if (test_and_set_bit(ret, atmel_ports_in_use)) { /* port already in use */ ret = -EBUSY; goto err; @@ -1856,7 +1855,7 @@ /* "port" is allocated statically, so we shouldn't free it */ - clear_bit(port->line, &atmel_ports_in_use); + clear_bit(port->line, atmel_ports_in_use); clk_put(atmel_port->clk); --- linux-ppc-3.8.0.orig/drivers/tty/serial/pch_uart.c +++ linux-ppc-3.8.0/drivers/tty/serial/pch_uart.c @@ -214,6 +214,7 @@ #define FRI2_64_UARTCLK 64000000 /* 64.0000 MHz */ #define FRI2_48_UARTCLK 48000000 /* 48.0000 MHz */ #define NTC1_UARTCLK 64000000 /* 64.0000 MHz */ +#define MINNOW_UARTCLK 50000000 /* 50.0000 MHz */ struct pch_uart_buffer { unsigned char *buf; @@ -395,6 +396,10 @@ strstr(cmp, "nanoETXexpress-TT"))) return NTC1_UARTCLK; + cmp = dmi_get_system_info(DMI_BOARD_NAME); + if (cmp && strstr(cmp, "MinnowBoard")) + return MINNOW_UARTCLK; + return DEFAULT_UARTCLK; } --- linux-ppc-3.8.0.orig/drivers/tty/serial/arc_uart.c +++ linux-ppc-3.8.0/drivers/tty/serial/arc_uart.c @@ -741,6 +741,6 @@ module_exit(arc_serial_exit); MODULE_LICENSE("GPL"); -MODULE_ALIAS("plat-arcfpga/uart"); +MODULE_ALIAS("platform:" DRIVER_NAME); MODULE_AUTHOR("Vineet Gupta"); MODULE_DESCRIPTION("ARC(Synopsys) On-Chip(fpga) serial driver"); --- linux-ppc-3.8.0.orig/drivers/tty/serial/Kconfig +++ linux-ppc-3.8.0/drivers/tty/serial/Kconfig @@ -209,14 +209,14 @@ config SERIAL_SAMSUNG_UARTS_4 bool depends on PLAT_SAMSUNG - default y if !(CPU_S3C2410 || SERIAL_S3C2412 || CPU_S3C2440 || CPU_S3C2442) + default y if !(CPU_S3C2410 || CPU_S3C2412 || CPU_S3C2440 || CPU_S3C2442) help Internal node for the common case of 4 Samsung compatible UARTs config SERIAL_SAMSUNG_UARTS int depends on PLAT_SAMSUNG - default 6 if ARCH_S5P6450 + default 6 if CPU_S5P6450 default 4 if SERIAL_SAMSUNG_UARTS_4 || CPU_S3C2416 default 3 help --- linux-ppc-3.8.0.orig/drivers/tty/serial/mxs-auart.c +++ linux-ppc-3.8.0/drivers/tty/serial/mxs-auart.c @@ -710,11 +710,18 @@ static irqreturn_t mxs_auart_irq_handle(int irq, void *context) { - u32 istatus, istat; + u32 istat; struct mxs_auart_port *s = context; u32 stat = readl(s->port.membase + AUART_STAT); - istatus = istat = readl(s->port.membase + AUART_INTR); + istat = readl(s->port.membase + AUART_INTR); + + /* ack irq */ + writel(istat & (AUART_INTR_RTIS + | AUART_INTR_TXIS + | AUART_INTR_RXIS + | AUART_INTR_CTSMIS), + s->port.membase + AUART_INTR_CLR); if (istat & AUART_INTR_CTSMIS) { uart_handle_cts_change(&s->port, stat & AUART_STAT_CTS); @@ -734,12 +741,6 @@ istat &= ~AUART_INTR_TXIS; } - writel(istatus & (AUART_INTR_RTIS - | AUART_INTR_TXIS - | AUART_INTR_RXIS - | AUART_INTR_CTSMIS), - s->port.membase + AUART_INTR_CLR); - return IRQ_HANDLED; } @@ -882,9 +883,9 @@ struct mxs_auart_port *s; struct uart_port *port; unsigned int old_ctrl0, old_ctrl2; - unsigned int to = 1000; + unsigned int to = 20000; - if (co->index > MXS_AUART_PORTS || co->index < 0) + if (co->index >= MXS_AUART_PORTS || co->index < 0) return; s = auart_port[co->index]; @@ -903,18 +904,23 @@ uart_console_write(port, str, count, mxs_auart_console_putchar); - /* - * Finally, wait for transmitter to become empty - * and restore the TCR - */ + /* Finally, wait for transmitter to become empty ... */ while (readl(port->membase + AUART_STAT) & AUART_STAT_BUSY) { + udelay(1); if (!to--) break; - udelay(1); } - writel(old_ctrl0, port->membase + AUART_CTRL0); - writel(old_ctrl2, port->membase + AUART_CTRL2); + /* + * ... and restore the TCR if we waited long enough for the transmitter + * to be idle. This might keep the transmitter enabled although it is + * unused, but that is better than to disable it while it is still + * transmitting. + */ + if (!(readl(port->membase + AUART_STAT) & AUART_STAT_BUSY)) { + writel(old_ctrl0, port->membase + AUART_CTRL0); + writel(old_ctrl2, port->membase + AUART_CTRL2); + } clk_disable(s->clk); } --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/Makefile +++ linux-ppc-3.8.0/drivers/tty/serial/8250/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_SERIAL_8250) += 8250_core.o 8250_core-y := 8250.o 8250_core-$(CONFIG_SERIAL_8250_PNP) += 8250_pnp.o +8250_core-$(CONFIG_SERIAL_8250_DMA) += 8250_dma.o obj-$(CONFIG_SERIAL_8250_GSC) += 8250_gsc.o obj-$(CONFIG_SERIAL_8250_PCI) += 8250_pci.o obj-$(CONFIG_SERIAL_8250_HP300) += 8250_hp300.o --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/8250.c +++ linux-ppc-3.8.0/drivers/tty/serial/8250/8250.c @@ -239,13 +239,6 @@ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, .flags = UART_CAP_FIFO | UART_CAP_UUE | UART_CAP_RTOIE, }, - [PORT_RM9000] = { - .name = "RM9000", - .fifo_size = 16, - .tx_loadsz = 16, - .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, - .flags = UART_CAP_FIFO, - }, [PORT_OCTEON] = { .name = "OCTEON", .fifo_size = 64, @@ -308,7 +301,28 @@ }, [PORT_8250_CIR] = { .name = "CIR port" - } + }, + [PORT_ALTR_16550_F32] = { + .name = "Altera 16550 FIFO32", + .fifo_size = 32, + .tx_loadsz = 32, + .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, + .flags = UART_CAP_FIFO | UART_CAP_AFE, + }, + [PORT_ALTR_16550_F64] = { + .name = "Altera 16550 FIFO64", + .fifo_size = 64, + .tx_loadsz = 64, + .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, + .flags = UART_CAP_FIFO | UART_CAP_AFE, + }, + [PORT_ALTR_16550_F128] = { + .name = "Altera 16550 FIFO128", + .fifo_size = 128, + .tx_loadsz = 128, + .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, + .flags = UART_CAP_FIFO | UART_CAP_AFE, + }, }; /* Uart divisor latch read */ @@ -370,56 +384,6 @@ #endif -#ifdef CONFIG_SERIAL_8250_RM9K - -static const u8 - regmap_in[8] = { - [UART_RX] = 0x00, - [UART_IER] = 0x0c, - [UART_IIR] = 0x14, - [UART_LCR] = 0x1c, - [UART_MCR] = 0x20, - [UART_LSR] = 0x24, - [UART_MSR] = 0x28, - [UART_SCR] = 0x2c - }, - regmap_out[8] = { - [UART_TX] = 0x04, - [UART_IER] = 0x0c, - [UART_FCR] = 0x18, - [UART_LCR] = 0x1c, - [UART_MCR] = 0x20, - [UART_LSR] = 0x24, - [UART_MSR] = 0x28, - [UART_SCR] = 0x2c - }; - -static unsigned int rm9k_serial_in(struct uart_port *p, int offset) -{ - offset = regmap_in[offset] << p->regshift; - return readl(p->membase + offset); -} - -static void rm9k_serial_out(struct uart_port *p, int offset, int value) -{ - offset = regmap_out[offset] << p->regshift; - writel(value, p->membase + offset); -} - -static int rm9k_serial_dl_read(struct uart_8250_port *up) -{ - return ((__raw_readl(up->port.membase + 0x10) << 8) | - (__raw_readl(up->port.membase + 0x08) & 0xff)) & 0xffff; -} - -static void rm9k_serial_dl_write(struct uart_8250_port *up, int value) -{ - __raw_writel(value, up->port.membase + 0x08); - __raw_writel(value >> 8, up->port.membase + 0x10); -} - -#endif - static unsigned int hub6_serial_in(struct uart_port *p, int offset) { offset = offset << p->regshift; @@ -497,15 +461,6 @@ p->serial_out = mem32_serial_out; break; -#ifdef CONFIG_SERIAL_8250_RM9K - case UPIO_RM9000: - p->serial_in = rm9k_serial_in; - p->serial_out = rm9k_serial_out; - up->dl_read = rm9k_serial_dl_read; - up->dl_write = rm9k_serial_dl_write; - break; -#endif - #ifdef CONFIG_MIPS_ALCHEMY case UPIO_AU: p->serial_in = au_serial_in; @@ -1341,7 +1296,9 @@ struct uart_8250_port *up = container_of(port, struct uart_8250_port, port); - if (!(up->ier & UART_IER_THRI)) { + if (up->dma && !serial8250_tx_dma(up)) { + return; + } else if (!(up->ier & UART_IER_THRI)) { up->ier |= UART_IER_THRI; serial_port_out(port, UART_IER, up->ier); @@ -1349,9 +1306,7 @@ unsigned char lsr; lsr = serial_in(up, UART_LSR); up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS; - if ((port->type == PORT_RM9000) ? - (lsr & UART_LSR_THRE) : - (lsr & UART_LSR_TEMT)) + if (lsr & UART_LSR_TEMT) serial8250_tx_chars(up); } } @@ -1547,6 +1502,7 @@ unsigned long flags; struct uart_8250_port *up = container_of(port, struct uart_8250_port, port); + int dma_err = 0; if (iir & UART_IIR_NO_INT) return 0; @@ -1557,8 +1513,13 @@ DEBUG_INTR("status = %x...", status); - if (status & (UART_LSR_DR | UART_LSR_BI)) - status = serial8250_rx_chars(up, status); + if (status & (UART_LSR_DR | UART_LSR_BI)) { + if (up->dma) + dma_err = serial8250_rx_dma(up, iir); + + if (!up->dma || dma_err) + status = serial8250_rx_chars(up, status); + } serial8250_modem_status(up); if (status & UART_LSR_THRE) serial8250_tx_chars(up); @@ -1991,9 +1952,12 @@ if (port->type == PORT_8250_CIR) return -ENODEV; - port->fifosize = uart_config[up->port.type].fifo_size; - up->tx_loadsz = uart_config[up->port.type].tx_loadsz; - up->capabilities = uart_config[up->port.type].flags; + if (!port->fifosize) + port->fifosize = uart_config[port->type].fifo_size; + if (!up->tx_loadsz) + up->tx_loadsz = uart_config[port->type].tx_loadsz; + if (!up->capabilities) + up->capabilities = uart_config[port->type].flags; up->mcr = 0; if (port->iotype != up->cur_iotype) @@ -2198,6 +2162,18 @@ up->msr_saved_flags = 0; /* + * Request DMA channels for both RX and TX. + */ + if (up->dma) { + retval = serial8250_request_dma(up); + if (retval) { + pr_warn_ratelimited("ttyS%d - failed to request DMA\n", + serial_index(port)); + up->dma = NULL; + } + } + + /* * Finally, enable interrupts. Note: Modem status interrupts * are set via set_termios(), which will be occurring imminently * anyway, so we don't enable them here. @@ -2230,6 +2206,9 @@ up->ier = 0; serial_port_out(port, UART_IER, 0); + if (up->dma) + serial8250_release_dma(up); + spin_lock_irqsave(&port->lock, flags); if (port->flags & UPF_FOURPORT) { /* reset interrupts on the AST Fourport board */ @@ -2826,9 +2805,12 @@ serial8250_init_fixed_type_port(struct uart_8250_port *up, unsigned int type) { up->port.type = type; - up->port.fifosize = uart_config[type].fifo_size; - up->capabilities = uart_config[type].flags; - up->tx_loadsz = uart_config[type].tx_loadsz; + if (!up->port.fifosize) + up->port.fifosize = uart_config[type].fifo_size; + if (!up->tx_loadsz) + up->tx_loadsz = uart_config[type].tx_loadsz; + if (!up->capabilities) + up->capabilities = uart_config[type].flags; } static void __init @@ -3262,6 +3244,10 @@ uart->bugs = up->bugs; uart->port.mapbase = up->port.mapbase; uart->port.private_data = up->port.private_data; + uart->port.fifosize = up->port.fifosize; + uart->tx_loadsz = up->tx_loadsz; + uart->capabilities = up->capabilities; + if (up->port.dev) uart->port.dev = up->port.dev; @@ -3287,6 +3273,8 @@ uart->dl_read = up->dl_read; if (up->dl_write) uart->dl_write = up->dl_write; + if (up->dma) + uart->dma = up->dma; if (serial8250_isa_config != NULL) serial8250_isa_config(0, &uart->port, @@ -3430,3 +3418,32 @@ MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA"); #endif MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR); + +#ifndef MODULE +/* This module was renamed to 8250_core in 3.7. Keep the old "8250" name + * working as well for the module options so we don't break people. We + * need to keep the names identical and the convenient macros will happily + * refuse to let us do that by failing the build with redefinition errors + * of global variables. So we stick them inside a dummy function to avoid + * those conflicts. The options still get parsed, and the redefined + * MODULE_PARAM_PREFIX lets us keep the "8250." syntax alive. + * + * This is hacky. I'm sorry. + */ +static void __used s8250_options(void) +{ +#undef MODULE_PARAM_PREFIX +#define MODULE_PARAM_PREFIX "8250." + + module_param_cb(share_irqs, ¶m_ops_uint, &share_irqs, 0644); + module_param_cb(nr_uarts, ¶m_ops_uint, &nr_uarts, 0644); + module_param_cb(skip_txen_test, ¶m_ops_uint, &skip_txen_test, 0644); +#ifdef CONFIG_SERIAL_8250_RSA + __module_param_call(MODULE_PARAM_PREFIX, probe_rsa, + ¶m_array_ops, .arr = &__param_arr_probe_rsa, + 0444, -1); +#endif +} +#else +MODULE_ALIAS("8250"); +#endif --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/8250_pci.c +++ linux-ppc-3.8.0/drivers/tty/serial/8250/8250_pci.c @@ -1040,6 +1040,253 @@ return pci_default_setup(priv, board, port, idx); } +/* Quatech devices have their own extra interface features */ + +struct quatech_feature { + u16 devid; + bool amcc; +}; + +#define QPCR_TEST_FOR1 0x3F +#define QPCR_TEST_GET1 0x00 +#define QPCR_TEST_FOR2 0x40 +#define QPCR_TEST_GET2 0x40 +#define QPCR_TEST_FOR3 0x80 +#define QPCR_TEST_GET3 0x40 +#define QPCR_TEST_FOR4 0xC0 +#define QPCR_TEST_GET4 0x80 + +#define QOPR_CLOCK_X1 0x0000 +#define QOPR_CLOCK_X2 0x0001 +#define QOPR_CLOCK_X4 0x0002 +#define QOPR_CLOCK_X8 0x0003 +#define QOPR_CLOCK_RATE_MASK 0x0003 + + +static struct quatech_feature quatech_cards[] = { + { PCI_DEVICE_ID_QUATECH_QSC100, 1 }, + { PCI_DEVICE_ID_QUATECH_DSC100, 1 }, + { PCI_DEVICE_ID_QUATECH_DSC100E, 0 }, + { PCI_DEVICE_ID_QUATECH_DSC200, 1 }, + { PCI_DEVICE_ID_QUATECH_DSC200E, 0 }, + { PCI_DEVICE_ID_QUATECH_ESC100D, 1 }, + { PCI_DEVICE_ID_QUATECH_ESC100M, 1 }, + { PCI_DEVICE_ID_QUATECH_QSCP100, 1 }, + { PCI_DEVICE_ID_QUATECH_DSCP100, 1 }, + { PCI_DEVICE_ID_QUATECH_QSCP200, 1 }, + { PCI_DEVICE_ID_QUATECH_DSCP200, 1 }, + { PCI_DEVICE_ID_QUATECH_ESCLP100, 0 }, + { PCI_DEVICE_ID_QUATECH_QSCLP100, 0 }, + { PCI_DEVICE_ID_QUATECH_DSCLP100, 0 }, + { PCI_DEVICE_ID_QUATECH_SSCLP100, 0 }, + { PCI_DEVICE_ID_QUATECH_QSCLP200, 0 }, + { PCI_DEVICE_ID_QUATECH_DSCLP200, 0 }, + { PCI_DEVICE_ID_QUATECH_SSCLP200, 0 }, + { PCI_DEVICE_ID_QUATECH_SPPXP_100, 0 }, + { 0, } +}; + +static int pci_quatech_amcc(u16 devid) +{ + struct quatech_feature *qf = &quatech_cards[0]; + while (qf->devid) { + if (qf->devid == devid) + return qf->amcc; + qf++; + } + pr_err("quatech: unknown port type '0x%04X'.\n", devid); + return 0; +}; + +static int pci_quatech_rqopr(struct uart_8250_port *port) +{ + unsigned long base = port->port.iobase; + u8 LCR, val; + + LCR = inb(base + UART_LCR); + outb(0xBF, base + UART_LCR); + val = inb(base + UART_SCR); + outb(LCR, base + UART_LCR); + return val; +} + +static void pci_quatech_wqopr(struct uart_8250_port *port, u8 qopr) +{ + unsigned long base = port->port.iobase; + u8 LCR, val; + + LCR = inb(base + UART_LCR); + outb(0xBF, base + UART_LCR); + val = inb(base + UART_SCR); + outb(qopr, base + UART_SCR); + outb(LCR, base + UART_LCR); +} + +static int pci_quatech_rqmcr(struct uart_8250_port *port) +{ + unsigned long base = port->port.iobase; + u8 LCR, val, qmcr; + + LCR = inb(base + UART_LCR); + outb(0xBF, base + UART_LCR); + val = inb(base + UART_SCR); + outb(val | 0x10, base + UART_SCR); + qmcr = inb(base + UART_MCR); + outb(val, base + UART_SCR); + outb(LCR, base + UART_LCR); + + return qmcr; +} + +static void pci_quatech_wqmcr(struct uart_8250_port *port, u8 qmcr) +{ + unsigned long base = port->port.iobase; + u8 LCR, val; + + LCR = inb(base + UART_LCR); + outb(0xBF, base + UART_LCR); + val = inb(base + UART_SCR); + outb(val | 0x10, base + UART_SCR); + outb(qmcr, base + UART_MCR); + outb(val, base + UART_SCR); + outb(LCR, base + UART_LCR); +} + +static int pci_quatech_has_qmcr(struct uart_8250_port *port) +{ + unsigned long base = port->port.iobase; + u8 LCR, val; + + LCR = inb(base + UART_LCR); + outb(0xBF, base + UART_LCR); + val = inb(base + UART_SCR); + if (val & 0x20) { + outb(0x80, UART_LCR); + if (!(inb(UART_SCR) & 0x20)) { + outb(LCR, base + UART_LCR); + return 1; + } + } + return 0; +} + +static int pci_quatech_test(struct uart_8250_port *port) +{ + u8 reg; + u8 qopr = pci_quatech_rqopr(port); + pci_quatech_wqopr(port, qopr & QPCR_TEST_FOR1); + reg = pci_quatech_rqopr(port) & 0xC0; + if (reg != QPCR_TEST_GET1) + return -EINVAL; + pci_quatech_wqopr(port, (qopr & QPCR_TEST_FOR1)|QPCR_TEST_FOR2); + reg = pci_quatech_rqopr(port) & 0xC0; + if (reg != QPCR_TEST_GET2) + return -EINVAL; + pci_quatech_wqopr(port, (qopr & QPCR_TEST_FOR1)|QPCR_TEST_FOR3); + reg = pci_quatech_rqopr(port) & 0xC0; + if (reg != QPCR_TEST_GET3) + return -EINVAL; + pci_quatech_wqopr(port, (qopr & QPCR_TEST_FOR1)|QPCR_TEST_FOR4); + reg = pci_quatech_rqopr(port) & 0xC0; + if (reg != QPCR_TEST_GET4) + return -EINVAL; + + pci_quatech_wqopr(port, qopr); + return 0; +} + +static int pci_quatech_clock(struct uart_8250_port *port) +{ + u8 qopr, reg, set; + unsigned long clock; + + if (pci_quatech_test(port) < 0) + return 1843200; + + qopr = pci_quatech_rqopr(port); + + pci_quatech_wqopr(port, qopr & ~QOPR_CLOCK_X8); + reg = pci_quatech_rqopr(port); + if (reg & QOPR_CLOCK_X8) { + clock = 1843200; + goto out; + } + pci_quatech_wqopr(port, qopr | QOPR_CLOCK_X8); + reg = pci_quatech_rqopr(port); + if (!(reg & QOPR_CLOCK_X8)) { + clock = 1843200; + goto out; + } + reg &= QOPR_CLOCK_X8; + if (reg == QOPR_CLOCK_X2) { + clock = 3685400; + set = QOPR_CLOCK_X2; + } else if (reg == QOPR_CLOCK_X4) { + clock = 7372800; + set = QOPR_CLOCK_X4; + } else if (reg == QOPR_CLOCK_X8) { + clock = 14745600; + set = QOPR_CLOCK_X8; + } else { + clock = 1843200; + set = QOPR_CLOCK_X1; + } + qopr &= ~QOPR_CLOCK_RATE_MASK; + qopr |= set; + +out: + pci_quatech_wqopr(port, qopr); + return clock; +} + +static int pci_quatech_rs422(struct uart_8250_port *port) +{ + u8 qmcr; + int rs422 = 0; + + if (!pci_quatech_has_qmcr(port)) + return 0; + qmcr = pci_quatech_rqmcr(port); + pci_quatech_wqmcr(port, 0xFF); + if (pci_quatech_rqmcr(port)) + rs422 = 1; + pci_quatech_wqmcr(port, qmcr); + return rs422; +} + +static int pci_quatech_init(struct pci_dev *dev) +{ + if (pci_quatech_amcc(dev->device)) { + unsigned long base = pci_resource_start(dev, 0); + if (base) { + u32 tmp; + outl(inl(base + 0x38), base + 0x38); + tmp = inl(base + 0x3c); + outl(tmp | 0x01000000, base + 0x3c); + outl(tmp, base + 0x3c); + } + } + return 0; +} + +static int pci_quatech_setup(struct serial_private *priv, + const struct pciserial_board *board, + struct uart_8250_port *port, int idx) +{ + /* Needed by pci_quatech calls below */ + port->port.iobase = pci_resource_start(priv->dev, FL_GET_BASE(board->flags)); + /* Set up the clocking */ + port->port.uartclk = pci_quatech_clock(port); + /* For now just warn about RS422 */ + if (pci_quatech_rs422(port)) + pr_warn("quatech: software control of RS422 features not currently supported.\n"); + return pci_default_setup(priv, board, port, idx); +} + +static void pci_quatech_exit(struct pci_dev *dev) +{ +} + static int pci_default_setup(struct serial_private *priv, const struct pciserial_board *board, struct uart_8250_port *port, int idx) @@ -1321,6 +1568,7 @@ /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 +#define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 /* * Master list of serial port init/setup/exit quirks. @@ -1541,6 +1789,16 @@ .setup = pci_ni8430_setup, .exit = pci_ni8430_exit, }, + /* Quatech */ + { + .vendor = PCI_VENDOR_ID_QUATECH, + .device = PCI_ANY_ID, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .init = pci_quatech_init, + .setup = pci_quatech_setup, + .exit = pci_quatech_exit, + }, /* * Panacom */ @@ -1592,15 +1850,6 @@ }, { .vendor = PCI_VENDOR_ID_PLX, - .device = PCI_DEVICE_ID_PLX_9050, - .subvendor = PCI_VENDOR_ID_PLX, - .subdevice = PCI_SUBDEVICE_ID_UNKNOWN_0x1584, - .init = pci_plx9050_init, - .setup = pci_default_setup, - .exit = pci_plx9050_exit, - }, - { - .vendor = PCI_VENDOR_ID_PLX, .device = PCI_DEVICE_ID_PLX_ROMULUS, .subvendor = PCI_VENDOR_ID_PLX, .subdevice = PCI_DEVICE_ID_PLX_ROMULUS, @@ -3456,7 +3705,12 @@ { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, PCI_VENDOR_ID_PLX, PCI_SUBDEVICE_ID_UNKNOWN_0x1584, 0, 0, - pbn_b0_4_115200 }, + pbn_b2_4_115200 }, + /* Unknown card - subdevice 0x1588 */ + { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, + PCI_VENDOR_ID_PLX, + PCI_SUBDEVICE_ID_UNKNOWN_0x1588, 0, 0, + pbn_b2_8_115200 }, { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, PCI_SUBVENDOR_ID_KEYSPAN, PCI_SUBDEVICE_ID_KEYSPAN_SX2, 0, 0, @@ -3506,18 +3760,70 @@ { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_ROMULUS, 0x10b5, 0x106a, 0, 0, pbn_plx_romulus }, + /* + * Quatech cards. These actually have configurable clocks but for + * now we just use the default. + * + * 100 series are RS232, 200 series RS422, + */ { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_QSC100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b1_4_115200 }, { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSC100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b1_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSC100E, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSC200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b1_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSC200E, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_QSC200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b1_4_115200 }, { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_ESC100D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b1_8_115200 }, { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_ESC100M, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b1_8_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_QSCP100, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b1_4_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSCP100, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b1_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_QSCP200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b1_4_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSCP200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b1_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_QSCLP100, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_4_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSCLP100, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_SSCLP100, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_1_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_QSCLP200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_4_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_DSCLP200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_2_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_SSCLP200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b2_1_115200 }, + { PCI_VENDOR_ID_QUATECH, PCI_DEVICE_ID_QUATECH_ESCLP100, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b0_8_115200 }, + { PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_OXSEMI_16PCI954, PCI_VENDOR_ID_SPECIALIX, PCI_SUBDEVICE_ID_SPECIALIX_SPEED4, 0, 0, --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/8250_dw.c +++ linux-ppc-3.8.0/drivers/tty/serial/8250/8250_dw.c @@ -2,6 +2,7 @@ * Synopsys DesignWare 8250 driver. * * Copyright 2011 Picochip, Jamie Iles. + * Copyright 2013 Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +25,34 @@ #include #include #include +#include + +#include "8250.h" + +/* Offsets for the DesignWare specific registers */ +#define DW_UART_USR 0x1f /* UART Status Register */ +#define DW_UART_CPR 0xf4 /* Component Parameter Register */ +#define DW_UART_UCV 0xf8 /* UART Component Version */ + +/* Intel Low Power Subsystem specific */ +#define LPSS_PRV_CLOCK_PARAMS 0x800 + +/* Component Parameter Register bits */ +#define DW_UART_CPR_ABP_DATA_WIDTH (3 << 0) +#define DW_UART_CPR_AFCE_MODE (1 << 4) +#define DW_UART_CPR_THRE_MODE (1 << 5) +#define DW_UART_CPR_SIR_MODE (1 << 6) +#define DW_UART_CPR_SIR_LP_MODE (1 << 7) +#define DW_UART_CPR_ADDITIONAL_FEATURES (1 << 8) +#define DW_UART_CPR_FIFO_ACCESS (1 << 9) +#define DW_UART_CPR_FIFO_STAT (1 << 10) +#define DW_UART_CPR_SHADOW (1 << 11) +#define DW_UART_CPR_ENCODED_PARMS (1 << 12) +#define DW_UART_CPR_DMA_EXTRA (1 << 13) +#define DW_UART_CPR_FIFO_MODE (0xff << 16) +/* Helper for fifo size calculation */ +#define DW_UART_CPR_FIFO_SIZE(a) (((a >> 16) & 0xff) * 16) + struct dw8250_data { int last_lcr; @@ -66,9 +95,6 @@ return readl(p->membase + offset); } -/* Offset for the DesignWare's UART Status Register. */ -#define UART_USR 0x1f - static int dw8250_handle_irq(struct uart_port *p) { struct dw8250_data *d = p->private_data; @@ -78,7 +104,7 @@ return 1; } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) { /* Clear the USR and write the LCR again. */ - (void)p->serial_in(p, UART_USR); + (void)p->serial_in(p, DW_UART_USR); p->serial_out(p, UART_LCR, d->last_lcr); return 1; @@ -87,61 +113,208 @@ return 0; } +static int dw8250_probe_of(struct uart_port *p) +{ + struct device_node *np = p->dev->of_node; + u32 val; + + if (!of_property_read_u32(np, "reg-io-width", &val)) { + switch (val) { + case 1: + break; + case 4: + p->iotype = UPIO_MEM32; + p->serial_in = dw8250_serial_in32; + p->serial_out = dw8250_serial_out32; + break; + default: + dev_err(p->dev, "unsupported reg-io-width (%u)\n", val); + return -EINVAL; + } + } + + if (!of_property_read_u32(np, "reg-shift", &val)) + p->regshift = val; + + if (of_property_read_u32(np, "clock-frequency", &val)) { + dev_err(p->dev, "no clock-frequency property set\n"); + return -EINVAL; + } + p->uartclk = val; + + return 0; +} + +#ifdef CONFIG_ACPI +static bool dw8250_acpi_dma_filter(struct dma_chan *chan, void *parm) +{ + return chan->chan_id == *(int *)parm; +} + +static acpi_status +dw8250_acpi_walk_resource(struct acpi_resource *res, void *data) +{ + struct uart_port *p = data; + struct uart_8250_port *port; + struct uart_8250_dma *dma; + struct acpi_resource_fixed_dma *fixed_dma; + struct dma_slave_config *slave; + + port = container_of(p, struct uart_8250_port, port); + + switch (res->type) { + case ACPI_RESOURCE_TYPE_FIXED_DMA: + fixed_dma = &res->data.fixed_dma; + + /* TX comes first */ + if (!port->dma) { + dma = devm_kzalloc(p->dev, sizeof(*dma), GFP_KERNEL); + if (!dma) + return AE_NO_MEMORY; + + port->dma = dma; + slave = &dma->txconf; + + slave->direction = DMA_MEM_TO_DEV; + slave->dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; + slave->slave_id = fixed_dma->request_lines; + + dma->tx_chan_id = fixed_dma->channels; + dma->tx_param = &dma->tx_chan_id; + dma->fn = dw8250_acpi_dma_filter; + } else { + dma = port->dma; + slave = &dma->rxconf; + + slave->direction = DMA_DEV_TO_MEM; + slave->src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; + slave->slave_id = fixed_dma->request_lines; + + dma->rx_chan_id = fixed_dma->channels; + dma->rx_param = &dma->rx_chan_id; + } + + break; + } + + return AE_OK; +} + +static int dw8250_probe_acpi(struct uart_port *p) +{ + const struct acpi_device_id *id; + acpi_status status; + u32 reg; + + id = acpi_match_device(p->dev->driver->acpi_match_table, p->dev); + if (!id) + return -ENODEV; + + p->iotype = UPIO_MEM32; + p->serial_in = dw8250_serial_in32; + p->serial_out = dw8250_serial_out32; + p->regshift = 2; + p->uartclk = (unsigned int)id->driver_data; + + status = acpi_walk_resources(ACPI_HANDLE(p->dev), METHOD_NAME__CRS, + dw8250_acpi_walk_resource, p); + if (ACPI_FAILURE(status)) { + dev_err_ratelimited(p->dev, "%s failed \"%s\"\n", __func__, + acpi_format_exception(status)); + return -ENODEV; + } + + /* Fix Haswell issue where the clocks do not get enabled */ + if (!strcmp(id->id, "INT33C4") || !strcmp(id->id, "INT33C5")) { + reg = readl(p->membase + LPSS_PRV_CLOCK_PARAMS); + writel(reg | 1, p->membase + LPSS_PRV_CLOCK_PARAMS); + } + + return 0; +} +#else +static inline int dw8250_probe_acpi(struct uart_port *p) +{ + return -ENODEV; +} +#endif /* CONFIG_ACPI */ + +static void dw8250_setup_port(struct uart_8250_port *up) +{ + struct uart_port *p = &up->port; + u32 reg = readl(p->membase + DW_UART_UCV); + + /* + * If the Component Version Register returns zero, we know that + * ADDITIONAL_FEATURES are not enabled. No need to go any further. + */ + if (!reg) + return; + + dev_dbg_ratelimited(p->dev, "Designware UART version %c.%c%c\n", + (reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff); + + reg = readl(p->membase + DW_UART_CPR); + if (!reg) + return; + + /* Select the type based on fifo */ + if (reg & DW_UART_CPR_FIFO_MODE) { + p->type = PORT_16550A; + p->flags |= UPF_FIXED_TYPE; + p->fifosize = DW_UART_CPR_FIFO_SIZE(reg); + up->tx_loadsz = p->fifosize; + } +} + static int dw8250_probe(struct platform_device *pdev) { struct uart_8250_port uart = {}; struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); struct resource *irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - struct device_node *np = pdev->dev.of_node; - u32 val; struct dw8250_data *data; + int err; if (!regs || !irq) { dev_err(&pdev->dev, "no registers/irq defined\n"); return -EINVAL; } - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); - if (!data) - return -ENOMEM; - uart.port.private_data = data; - spin_lock_init(&uart.port.lock); uart.port.mapbase = regs->start; uart.port.irq = irq->start; uart.port.handle_irq = dw8250_handle_irq; uart.port.type = PORT_8250; - uart.port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | - UPF_FIXED_PORT | UPF_FIXED_TYPE; + uart.port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_FIXED_PORT; uart.port.dev = &pdev->dev; + uart.port.membase = ioremap(regs->start, resource_size(regs)); + if (!uart.port.membase) + return -ENOMEM; + uart.port.iotype = UPIO_MEM; uart.port.serial_in = dw8250_serial_in; uart.port.serial_out = dw8250_serial_out; - if (!of_property_read_u32(np, "reg-io-width", &val)) { - switch (val) { - case 1: - break; - case 4: - uart.port.iotype = UPIO_MEM32; - uart.port.serial_in = dw8250_serial_in32; - uart.port.serial_out = dw8250_serial_out32; - break; - default: - dev_err(&pdev->dev, "unsupported reg-io-width (%u)\n", - val); - return -EINVAL; - } + + if (pdev->dev.of_node) { + err = dw8250_probe_of(&uart.port); + if (err) + return err; + } else if (ACPI_HANDLE(&pdev->dev)) { + err = dw8250_probe_acpi(&uart.port); + if (err) + return err; + } else { + return -ENODEV; } - if (!of_property_read_u32(np, "reg-shift", &val)) - uart.port.regshift = val; + dw8250_setup_port(&uart); - if (of_property_read_u32(np, "clock-frequency", &val)) { - dev_err(&pdev->dev, "no clock-frequency property set\n"); - return -EINVAL; - } - uart.port.uartclk = val; + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + uart.port.private_data = data; data->line = serial8250_register_8250_port(&uart); if (data->line < 0) @@ -184,17 +357,25 @@ #define dw8250_resume NULL #endif /* CONFIG_PM */ -static const struct of_device_id dw8250_match[] = { +static const struct of_device_id dw8250_of_match[] = { { .compatible = "snps,dw-apb-uart" }, { /* Sentinel */ } }; -MODULE_DEVICE_TABLE(of, dw8250_match); +MODULE_DEVICE_TABLE(of, dw8250_of_match); + +static const struct acpi_device_id dw8250_acpi_match[] = { + { "INT33C4", 100000000 }, + { "INT33C5", 100000000 }, + { }, +}; +MODULE_DEVICE_TABLE(acpi, dw8250_acpi_match); static struct platform_driver dw8250_platform_driver = { .driver = { .name = "dw-apb-uart", .owner = THIS_MODULE, - .of_match_table = dw8250_match, + .of_match_table = dw8250_of_match, + .acpi_match_table = ACPI_PTR(dw8250_acpi_match), }, .probe = dw8250_probe, .remove = dw8250_remove, --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/8250.h +++ linux-ppc-3.8.0/drivers/tty/serial/8250/8250.h @@ -12,6 +12,35 @@ */ #include +#include + +struct uart_8250_dma { + dma_filter_fn fn; + void *rx_param; + void *tx_param; + + int rx_chan_id; + int tx_chan_id; + + struct dma_slave_config rxconf; + struct dma_slave_config txconf; + + struct dma_chan *rxchan; + struct dma_chan *txchan; + + dma_addr_t rx_addr; + dma_addr_t tx_addr; + + dma_cookie_t rx_cookie; + dma_cookie_t tx_cookie; + + void *rx_buf; + + size_t rx_size; + size_t tx_size; + + unsigned char tx_running:1; +}; struct old_serial_port { unsigned int uart; @@ -143,3 +172,24 @@ return 0; } #endif + +#ifdef CONFIG_SERIAL_8250_DMA +extern int serial8250_tx_dma(struct uart_8250_port *); +extern int serial8250_rx_dma(struct uart_8250_port *, unsigned int iir); +extern int serial8250_request_dma(struct uart_8250_port *); +extern void serial8250_release_dma(struct uart_8250_port *); +#else +static inline int serial8250_tx_dma(struct uart_8250_port *p) +{ + return -1; +} +static inline int serial8250_rx_dma(struct uart_8250_port *p, unsigned int iir) +{ + return -1; +} +static inline int serial8250_request_dma(struct uart_8250_port *p) +{ + return -1; +} +static inline void serial8250_release_dma(struct uart_8250_port *p) { } +#endif --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/8250_dma.c +++ linux-ppc-3.8.0/drivers/tty/serial/8250/8250_dma.c @@ -0,0 +1,213 @@ +/* + * 8250_dma.c - DMA Engine API support for 8250.c + * + * Copyright (C) 2013 Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ +#include +#include +#include +#include + +#include "8250.h" + +static void __dma_tx_complete(void *param) +{ + struct uart_8250_port *p = param; + struct uart_8250_dma *dma = p->dma; + struct circ_buf *xmit = &p->port.state->xmit; + + dma->tx_running = 0; + + dma_sync_single_for_cpu(dma->txchan->device->dev, dma->tx_addr, + UART_XMIT_SIZE, DMA_TO_DEVICE); + + xmit->tail += dma->tx_size; + xmit->tail &= UART_XMIT_SIZE - 1; + p->port.icount.tx += dma->tx_size; + + if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) + uart_write_wakeup(&p->port); + + if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) { + serial8250_tx_dma(p); + uart_write_wakeup(&p->port); + } +} + +static void __dma_rx_complete(void *param) +{ + struct uart_8250_port *p = param; + struct uart_8250_dma *dma = p->dma; + struct tty_struct *tty = p->port.state->port.tty; + struct dma_tx_state state; + + dma_sync_single_for_cpu(dma->rxchan->device->dev, dma->rx_addr, + dma->rx_size, DMA_FROM_DEVICE); + + dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state); + dmaengine_terminate_all(dma->rxchan); + + tty_insert_flip_string(tty, dma->rx_buf, dma->rx_size - state.residue); + p->port.icount.rx += dma->rx_size - state.residue; + + tty_flip_buffer_push(tty); +} + +int serial8250_tx_dma(struct uart_8250_port *p) +{ + struct uart_8250_dma *dma = p->dma; + struct circ_buf *xmit = &p->port.state->xmit; + struct dma_async_tx_descriptor *desc; + + if (dma->tx_running) { + uart_write_wakeup(&p->port); + return -EBUSY; + } + + dma->tx_size = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); + + desc = dmaengine_prep_slave_single(dma->txchan, + dma->tx_addr + xmit->tail, + dma->tx_size, DMA_MEM_TO_DEV, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + if (!desc) + return -EBUSY; + + dma->tx_running = 1; + + desc->callback = __dma_tx_complete; + desc->callback_param = p; + + dma->tx_cookie = dmaengine_submit(desc); + + dma_sync_single_for_device(dma->txchan->device->dev, dma->tx_addr, + UART_XMIT_SIZE, DMA_TO_DEVICE); + + dma_async_issue_pending(dma->txchan); + + return 0; +} +EXPORT_SYMBOL_GPL(serial8250_tx_dma); + +int serial8250_rx_dma(struct uart_8250_port *p, unsigned int iir) +{ + struct uart_8250_dma *dma = p->dma; + struct dma_async_tx_descriptor *desc; + struct dma_tx_state state; + int dma_status; + + /* + * If RCVR FIFO trigger level was not reached, complete the transfer and + * let 8250.c copy the remaining data. + */ + if ((iir & 0x3f) == UART_IIR_RX_TIMEOUT) { + dma_status = dmaengine_tx_status(dma->rxchan, dma->rx_cookie, + &state); + if (dma_status == DMA_IN_PROGRESS) { + dmaengine_pause(dma->rxchan); + __dma_rx_complete(p); + } + return -ETIMEDOUT; + } + + desc = dmaengine_prep_slave_single(dma->rxchan, dma->rx_addr, + dma->rx_size, DMA_DEV_TO_MEM, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + if (!desc) + return -EBUSY; + + desc->callback = __dma_rx_complete; + desc->callback_param = p; + + dma->rx_cookie = dmaengine_submit(desc); + + dma_sync_single_for_device(dma->rxchan->device->dev, dma->rx_addr, + dma->rx_size, DMA_FROM_DEVICE); + + dma_async_issue_pending(dma->rxchan); + + return 0; +} +EXPORT_SYMBOL_GPL(serial8250_rx_dma); + +int serial8250_request_dma(struct uart_8250_port *p) +{ + struct uart_8250_dma *dma = p->dma; + dma_cap_mask_t mask; + + dma->rxconf.src_addr = p->port.mapbase + UART_RX; + dma->txconf.dst_addr = p->port.mapbase + UART_TX; + + dma_cap_zero(mask); + dma_cap_set(DMA_SLAVE, mask); + + /* Get a channel for RX */ + dma->rxchan = dma_request_channel(mask, dma->fn, dma->rx_param); + if (!dma->rxchan) + return -ENODEV; + + dmaengine_slave_config(dma->rxchan, &dma->rxconf); + + /* Get a channel for TX */ + dma->txchan = dma_request_channel(mask, dma->fn, dma->tx_param); + if (!dma->txchan) { + dma_release_channel(dma->rxchan); + return -ENODEV; + } + + dmaengine_slave_config(dma->txchan, &dma->txconf); + + /* RX buffer */ + if (!dma->rx_size) + dma->rx_size = PAGE_SIZE; + + dma->rx_buf = dma_alloc_coherent(dma->rxchan->device->dev, dma->rx_size, + &dma->rx_addr, GFP_KERNEL); + if (!dma->rx_buf) { + dma_release_channel(dma->rxchan); + dma_release_channel(dma->txchan); + return -ENOMEM; + } + + /* TX buffer */ + dma->tx_addr = dma_map_single(dma->txchan->device->dev, + p->port.state->xmit.buf, + UART_XMIT_SIZE, + DMA_TO_DEVICE); + + dev_dbg_ratelimited(p->port.dev, "got both dma channels\n"); + + return 0; +} +EXPORT_SYMBOL_GPL(serial8250_request_dma); + +void serial8250_release_dma(struct uart_8250_port *p) +{ + struct uart_8250_dma *dma = p->dma; + + if (!dma) + return; + + /* Release RX resources */ + dmaengine_terminate_all(dma->rxchan); + dma_free_coherent(dma->rxchan->device->dev, dma->rx_size, dma->rx_buf, + dma->rx_addr); + dma_release_channel(dma->rxchan); + dma->rxchan = NULL; + + /* Release TX resources */ + dmaengine_terminate_all(dma->txchan); + dma_unmap_single(dma->txchan->device->dev, dma->tx_addr, + UART_XMIT_SIZE, DMA_TO_DEVICE); + dma_release_channel(dma->txchan); + dma->txchan = NULL; + dma->tx_running = 0; + + dev_dbg_ratelimited(p->port.dev, "dma channels released\n"); +} +EXPORT_SYMBOL_GPL(serial8250_release_dma); --- linux-ppc-3.8.0.orig/drivers/tty/serial/8250/Kconfig +++ linux-ppc-3.8.0/drivers/tty/serial/8250/Kconfig @@ -84,6 +84,14 @@ depends on SERIAL_8250 && GSC default SERIAL_8250 +config SERIAL_8250_DMA + bool "DMA support for 16550 compatible UART controllers" if EXPERT + depends on SERIAL_8250 && DMADEVICES=y + default SERIAL_8250 + help + This builds DMA support that can be used with 8250/16650 + compatible UART controllers that support DMA signaling. + config SERIAL_8250_PCI tristate "8250/16550 PCI device support" if EXPERT depends on SERIAL_8250 && PCI @@ -249,15 +257,6 @@ system, say Y to this option. The driver can handle 1, 2, or 3 port cards. If unsure, say N. -config SERIAL_8250_RM9K - bool "Support for MIPS RM9xxx integrated serial port" - depends on SERIAL_8250 != n && SERIAL_RM9000 - select SERIAL_8250_SHARE_IRQ - help - Selecting this option will add support for the integrated serial - port hardware found on MIPS RM9122 and similar processors. - If unsure, say N. - config SERIAL_8250_FSL bool depends on SERIAL_8250_CONSOLE && PPC_UDBG_16550 @@ -265,7 +264,7 @@ config SERIAL_8250_DW tristate "Support for Synopsys DesignWare 8250 quirks" - depends on SERIAL_8250 && OF + depends on SERIAL_8250 help Selecting this option will enable handling of the extra features present in the Synopsys DesignWare APB UART. --- linux-ppc-3.8.0.orig/drivers/vhost/vhost.c +++ linux-ppc-3.8.0/drivers/vhost/vhost.c @@ -1581,5 +1581,10 @@ { kref_put(&ubufs->kref, vhost_zerocopy_done_signal); wait_event(ubufs->wait, !atomic_read(&ubufs->kref.refcount)); +} + +void vhost_ubuf_put_wait_and_free(struct vhost_ubuf_ref *ubufs) +{ + vhost_ubuf_put_and_wait(ubufs); kfree(ubufs); } --- linux-ppc-3.8.0.orig/drivers/vhost/vhost.h +++ linux-ppc-3.8.0/drivers/vhost/vhost.h @@ -63,6 +63,7 @@ struct vhost_ubuf_ref *vhost_ubuf_alloc(struct vhost_virtqueue *, bool zcopy); void vhost_ubuf_put(struct vhost_ubuf_ref *); void vhost_ubuf_put_and_wait(struct vhost_ubuf_ref *); +void vhost_ubuf_put_wait_and_free(struct vhost_ubuf_ref *); struct ubuf_info; --- linux-ppc-3.8.0.orig/drivers/vhost/net.c +++ linux-ppc-3.8.0/drivers/vhost/net.c @@ -339,7 +339,8 @@ msg.msg_controllen = 0; ubufs = NULL; } else { - struct ubuf_info *ubuf = &vq->ubuf_info[head]; + struct ubuf_info *ubuf; + ubuf = vq->ubuf_info + vq->upend_idx; vq->heads[vq->upend_idx].len = VHOST_DMA_IN_PROGRESS; @@ -352,7 +353,8 @@ kref_get(&ubufs->kref); } vq->upend_idx = (vq->upend_idx + 1) % UIO_MAXIOV; - } + } else + msg.msg_control = NULL; /* TODO: Check specific error and bomb out unless ENOBUFS? */ err = sock->ops->sendmsg(NULL, sock, &msg, len); if (unlikely(err < 0)) { @@ -855,7 +857,7 @@ mutex_unlock(&vq->mutex); if (oldubufs) { - vhost_ubuf_put_and_wait(oldubufs); + vhost_ubuf_put_wait_and_free(oldubufs); mutex_lock(&vq->mutex); vhost_zerocopy_signal_used(n, vq); mutex_unlock(&vq->mutex); @@ -873,7 +875,7 @@ rcu_assign_pointer(vq->private_data, oldsock); vhost_net_enable_vq(n, vq); if (ubufs) - vhost_ubuf_put_and_wait(ubufs); + vhost_ubuf_put_wait_and_free(ubufs); err_ubufs: fput(sock->file); err_vq: --- linux-ppc-3.8.0.orig/drivers/power/charger-manager.c +++ linux-ppc-3.8.0/drivers/power/charger-manager.c @@ -450,7 +450,7 @@ strncpy(env_str, event, UEVENT_BUF_SIZE); kobject_uevent(&cm->dev->kobj, KOBJ_CHANGE); - dev_info(cm->dev, event); + dev_info(cm->dev, "%s", event); } /** --- linux-ppc-3.8.0.orig/drivers/power/abx500_chargalg.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/drivers/power/ab8500_btemp.c +++ linux-ppc-3.8.0/drivers/power/ab8500_btemp.c @@ -1123,7 +1123,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-ppc-3.8.0.orig/drivers/power/bq27x00_battery.c +++ linux-ppc-3.8.0/drivers/power/bq27x00_battery.c @@ -448,7 +448,6 @@ cache.temperature = bq27x00_battery_read_temperature(di); if (!is_bq27425) cache.cycle_count = bq27x00_battery_read_cyct(di); - cache.cycle_count = bq27x00_battery_read_cyct(di); cache.power_avg = bq27x00_battery_read_pwr_avg(di, BQ27x00_POWER_AVG); @@ -696,7 +695,6 @@ int ret; di->bat.type = POWER_SUPPLY_TYPE_BATTERY; - di->chip = BQ27425; if (di->chip == BQ27425) { di->bat.properties = bq27425_battery_props; di->bat.num_properties = ARRAY_SIZE(bq27425_battery_props); --- linux-ppc-3.8.0.orig/drivers/mailbox/Makefile +++ linux-ppc-3.8.0/drivers/mailbox/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_PL320_MBOX) += pl320-ipc.o --- linux-ppc-3.8.0.orig/drivers/mailbox/pl320-ipc.c +++ linux-ppc-3.8.0/drivers/mailbox/pl320-ipc.c @@ -0,0 +1,198 @@ +/* + * Copyright 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 +#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_TX_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_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]; +} + +/* blocking implmentation from the A9 side, not usuable in interrupts! */ +int pl320_ipc_transmit(u32 *data) +{ + int ret; + + mutex_lock(&ipc_m1_lock); + + init_completion(&ipc_completion); + __ipc_send(IPC_TX_MBOX, data); + ret = wait_for_completion_timeout(&ipc_completion, + msecs_to_jiffies(1000)); + if (ret == 0) { + ret = -ETIMEDOUT; + goto out; + } + + ret = __ipc_rcv(IPC_TX_MBOX, data); +out: + mutex_unlock(&ipc_m1_lock); + return ret; +} +EXPORT_SYMBOL_GPL(pl320_ipc_transmit); + +static 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_TX_MBOX)) { + __raw_writel(0, ipc_base + IPCMxSEND(IPC_TX_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); +} +EXPORT_SYMBOL_GPL(pl320_ipc_register_notifier); + +int pl320_ipc_unregister_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_unregister(&ipc_notifier, nb); +} +EXPORT_SYMBOL_GPL(pl320_ipc_unregister_notifier); + +static int 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_TX_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 slow mailbox */ + __raw_writel(CHAN_MASK(A9_SOURCE), + ipc_base + IPCMxSOURCE(IPC_TX_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE), + ipc_base + IPCMxDSET(IPC_TX_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE), + ipc_base + IPCMxMSET(IPC_TX_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); --- linux-ppc-3.8.0.orig/drivers/mailbox/Kconfig +++ linux-ppc-3.8.0/drivers/mailbox/Kconfig @@ -0,0 +1,19 @@ +menuconfig MAILBOX + bool "Mailbox Hardware Support" + help + Mailbox is a framework to control hardware communication between + on-chip processors through queued messages and interrupt driven + signals. Say Y if your platform supports hardware mailboxes. + +if MAILBOX +config PL320_MBOX + bool "ARM PL320 Mailbox" + depends on ARM_AMBA + help + An implementation of the ARM PL320 Interprocessor Communication + Mailbox (IPCM), tailored for the Calxeda Highbank. It is used to + send short messages between Highbank's A9 cores and the EnergyCore + Management Engine, primarily for cpufreq. Say Y here if you want + to use the PL320 IPCM support. + +endif --- linux-ppc-3.8.0.orig/drivers/pps/pps.c +++ linux-ppc-3.8.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); @@ -332,6 +337,7 @@ 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, @@ -352,11 +358,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-ppc-3.8.0.orig/drivers/pps/clients/pps-ldisc.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/kernel/cgroup.c +++ linux-ppc-3.8.0/kernel/cgroup.c @@ -162,6 +162,9 @@ struct list_head node; struct dentry *dentry; struct cftype *type; + + /* file xattrs */ + struct simple_xattrs xattrs; }; /* @@ -426,12 +429,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); } @@ -900,13 +911,12 @@ } else { struct cfent *cfe = __d_cfe(dentry); struct cgroup *cgrp = dentry->d_parent->d_fsdata; - struct cftype *cft = cfe->type; WARN_ONCE(!list_empty(&cfe->node) && cgrp != &cgrp->root->top_cgroup, "cfe still linked for %s\n", cfe->type->name); + simple_xattrs_free(&cfe->xattrs); kfree(cfe); - simple_xattrs_free(&cft->xattrs); } iput(inode); } @@ -2058,7 +2068,7 @@ if (!group) return -ENOMEM; /* pre-allocate to guarantee space while iterating in rcu read-side. */ - retval = flex_array_prealloc(group, 0, group_size - 1, GFP_KERNEL); + retval = flex_array_prealloc(group, 0, group_size, GFP_KERNEL); if (retval) goto out_free_group_list; @@ -2545,7 +2555,7 @@ if (S_ISDIR(dentry->d_inode->i_mode)) return &__d_cgrp(dentry)->xattrs; else - return &__d_cft(dentry)->xattrs; + return &__d_cfe(dentry)->xattrs; } static inline int xattr_enabled(struct dentry *dentry) @@ -2721,8 +2731,6 @@ umode_t mode; char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 }; - simple_xattrs_init(&cft->xattrs); - if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) { strcpy(name, subsys->name); strcat(name, "."); @@ -2747,6 +2755,7 @@ cfe->type = (void *)cft; cfe->dentry = dentry; dentry->d_fsdata = cfe; + simple_xattrs_init(&cfe->xattrs); list_add_tail(&cfe->node, &parent->files); cfe = NULL; } @@ -2804,13 +2813,17 @@ { LIST_HEAD(pending); struct cgroup *cgrp, *n; + struct super_block *sb = ss->root->sb; /* %NULL @cfts indicates abort and don't bother if @ss isn't attached */ - if (cfts && ss->root != &rootnode) { + if (cfts && ss->root != &rootnode && + atomic_inc_not_zero(&sb->s_active)) { list_for_each_entry(cgrp, &ss->root->allcg_list, allcg_node) { dget(cgrp->dentry); list_add_tail(&cgrp->cft_q_node, &pending); } + } else { + sb = NULL; } mutex_unlock(&cgroup_mutex); @@ -2833,6 +2846,9 @@ dput(cgrp->dentry); } + if (sb) + deactivate_super(sb); + mutex_unlock(&cgroup_cft_mutex); } @@ -2992,11 +3008,8 @@ WARN_ON_ONCE(!rcu_read_lock_held()); /* if first iteration, pretend we just visited @cgroup */ - if (!pos) { - if (list_empty(&cgroup->children)) - return NULL; + if (!pos) pos = cgroup; - } /* visit the first child if exists */ next = list_first_or_null_rcu(&pos->children, struct cgroup, sibling); @@ -3004,14 +3017,14 @@ return next; /* no child, visit my or the closest ancestor's next sibling */ - do { + while (pos != cgroup) { next = list_entry_rcu(pos->sibling.next, struct cgroup, sibling); if (&next->sibling != &pos->parent->children) return next; pos = pos->parent; - } while (pos != cgroup); + } return NULL; } @@ -3742,6 +3755,23 @@ } /* + * When dput() is called asynchronously, if umount has been done and + * then deactivate_super() in cgroup_free_fn() kills the superblock, + * there's a small window that vfs will see the root dentry with non-zero + * refcnt and trigger BUG(). + * + * That's why we hold a reference before dput() and drop it right after. + */ +static void cgroup_dput(struct cgroup *cgrp) +{ + struct super_block *sb = cgrp->root->sb; + + atomic_inc(&sb->s_active); + dput(cgrp->dentry); + deactivate_super(sb); +} + +/* * Unregister event and free resources. * * Gets called from workqueue. @@ -3756,7 +3786,7 @@ eventfd_ctx_put(event->eventfd); kfree(event); - dput(cgrp->dentry); + cgroup_dput(cgrp); } /* @@ -4018,12 +4048,8 @@ { struct cgroup_subsys_state *css = container_of(work, struct cgroup_subsys_state, dput_work); - struct dentry *dentry = css->cgroup->dentry; - struct super_block *sb = dentry->d_sb; - atomic_inc(&sb->s_active); - dput(dentry); - deactivate_super(sb); + cgroup_dput(css->cgroup); } static void init_cgroup_css(struct cgroup_subsys_state *css, --- linux-ppc-3.8.0.orig/kernel/rcutree_trace.c +++ linux-ppc-3.8.0/kernel/rcutree_trace.c @@ -97,7 +97,7 @@ .open = rcubarrier_open, .read = seq_read, .llseek = no_llseek, - .release = seq_release, + .release = single_release, }; #ifdef CONFIG_RCU_BOOST @@ -208,7 +208,7 @@ .open = rcuexp_open, .read = seq_read, .llseek = no_llseek, - .release = seq_release, + .release = single_release, }; #ifdef CONFIG_RCU_BOOST @@ -308,7 +308,7 @@ .open = rcuhier_open, .read = seq_read, .llseek = no_llseek, - .release = seq_release, + .release = single_release, }; static void show_one_rcugp(struct seq_file *m, struct rcu_state *rsp) @@ -350,7 +350,7 @@ .open = rcugp_open, .read = seq_read, .llseek = no_llseek, - .release = seq_release, + .release = single_release, }; static void print_one_rcu_pending(struct seq_file *m, struct rcu_data *rdp) --- linux-ppc-3.8.0.orig/kernel/Makefile +++ linux-ppc-3.8.0/kernel/Makefile @@ -185,7 +185,7 @@ openssl req -new -nodes -utf8 $(sign_key_with_hash) -days 36500 -batch \ -x509 -config x509.genkey \ -outform DER -out signing_key.x509 \ - -keyout signing_key.priv + -keyout signing_key.priv 2>&1 @echo "###" @echo "### Key pair generated." @echo "###" --- linux-ppc-3.8.0.orig/kernel/workqueue.c +++ linux-ppc-3.8.0/kernel/workqueue.c @@ -138,6 +138,7 @@ }; struct work_struct *current_work; /* L: work being processed */ + work_func_t current_func; /* L: current_work's fn */ struct cpu_workqueue_struct *current_cwq; /* L: current_work's cwq */ struct list_head scheduled; /* L: scheduled works */ struct task_struct *task; /* I: worker task */ @@ -910,7 +911,8 @@ struct hlist_node *tmp; hlist_for_each_entry(worker, tmp, bwh, hentry) - if (worker->current_work == work) + if (worker->current_work == work && + worker->current_func == work->func) return worker; return NULL; } @@ -920,9 +922,27 @@ * @gcwq: gcwq of interest * @work: work to find worker for * - * Find a worker which is executing @work on @gcwq. This function is - * identical to __find_worker_executing_work() except that this - * function calculates @bwh itself. + * Find a worker which is executing @work on @gcwq by searching + * @gcwq->busy_hash which is keyed by the address of @work. For a worker + * to match, its current execution should match the address of @work and + * its work function. This is to avoid unwanted dependency between + * unrelated work executions through a work item being recycled while still + * being executed. + * + * This is a bit tricky. A work item may be freed once its execution + * starts and nothing prevents the freed area from being recycled for + * another work item. If the same work item address ends up being reused + * before the original execution finishes, workqueue will identify the + * recycled work item as currently executing and make it wait until the + * current execution finishes, introducing an unwanted dependency. + * + * This function checks the work item address, work function and workqueue + * to avoid false positives. Note that this isn't complete as one may + * construct a work function which can introduce dependency onto itself + * through a recycled work item. Well, if somebody wants to shoot oneself + * in the foot that badly, there's only so much we can do, and if such + * deadlock actually occurs, it should be easy to locate the culprit work + * function. * * CONTEXT: * spin_lock_irq(gcwq->lock). @@ -1352,7 +1372,7 @@ /* should have been called from irqsafe timer with irq already off */ __queue_work(dwork->cpu, cwq->wq, &dwork->work); } -EXPORT_SYMBOL_GPL(delayed_work_timer_fn); +EXPORT_SYMBOL(delayed_work_timer_fn); static void __queue_delayed_work(int cpu, struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay) @@ -2168,7 +2188,6 @@ struct global_cwq *gcwq = pool->gcwq; struct hlist_head *bwh = busy_worker_head(gcwq, work); bool cpu_intensive = cwq->wq->flags & WQ_CPU_INTENSIVE; - work_func_t f = work->func; int work_color; struct worker *collision; #ifdef CONFIG_LOCKDEP @@ -2208,6 +2227,7 @@ debug_work_deactivate(work); hlist_add_head(&worker->hentry, bwh); worker->current_work = work; + worker->current_func = work->func; worker->current_cwq = cwq; work_color = get_work_color(work); @@ -2240,7 +2260,7 @@ lock_map_acquire_read(&cwq->wq->lockdep_map); lock_map_acquire(&lockdep_map); trace_workqueue_execute_start(work); - f(work); + worker->current_func(work); /* * While we must be careful to not use "work" after this, the trace * point will only record its address. @@ -2252,7 +2272,8 @@ if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { pr_err("BUG: workqueue leaked lock or atomic: %s/0x%08x/%d\n" " last function: %pf\n", - current->comm, preempt_count(), task_pid_nr(current), f); + current->comm, preempt_count(), task_pid_nr(current), + worker->current_func); debug_show_held_locks(current); dump_stack(); } @@ -2266,6 +2287,7 @@ /* we're done with it, release */ hlist_del_init(&worker->hentry); worker->current_work = NULL; + worker->current_func = NULL; worker->current_cwq = NULL; cwq_dec_nr_in_flight(cwq, work_color); } --- linux-ppc-3.8.0.orig/kernel/posix-timers.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/kernel/cpuset.c +++ linux-ppc-3.8.0/kernel/cpuset.c @@ -2511,8 +2511,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-ppc-3.8.0.orig/kernel/sys.c +++ linux-ppc-3.8.0/kernel/sys.c @@ -323,7 +323,6 @@ system_state = SYSTEM_RESTART; usermodehelper_disable(); device_shutdown(); - syscore_shutdown(); } /** @@ -357,6 +356,29 @@ } EXPORT_SYMBOL(unregister_reboot_notifier); +/* Add backwards compatibility for stable trees. */ +#ifndef PF_NO_SETAFFINITY +#define PF_NO_SETAFFINITY PF_THREAD_BOUND +#endif + +static void migrate_to_reboot_cpu(void) +{ + /* The boot cpu is always logical cpu 0 */ + int cpu = 0; + + cpu_hotplug_disable(); + + /* Make certain the cpu I'm about to reboot on is online */ + if (!cpu_online(cpu)) + cpu = cpumask_first(cpu_online_mask); + + /* Prevent races with other tasks migrating this task */ + current->flags |= PF_NO_SETAFFINITY; + + /* Make certain I only run on the appropriate processor */ + set_cpus_allowed_ptr(current, cpumask_of(cpu)); +} + /** * kernel_restart - reboot the system * @cmd: pointer to buffer containing command to execute for restart @@ -368,7 +390,8 @@ void kernel_restart(char *cmd) { kernel_restart_prepare(cmd); - disable_nonboot_cpus(); + migrate_to_reboot_cpu(); + syscore_shutdown(); if (!cmd) printk(KERN_EMERG "Restarting system.\n"); else @@ -394,6 +417,7 @@ void kernel_halt(void) { kernel_shutdown_prepare(SYSTEM_HALT); + migrate_to_reboot_cpu(); syscore_shutdown(); printk(KERN_EMERG "System halted.\n"); kmsg_dump(KMSG_DUMP_HALT); @@ -412,7 +436,7 @@ kernel_shutdown_prepare(SYSTEM_POWER_OFF); if (pm_power_off_prepare) pm_power_off_prepare(); - disable_nonboot_cpus(); + migrate_to_reboot_cpu(); syscore_shutdown(); printk(KERN_EMERG "Power down.\n"); kmsg_dump(KMSG_DUMP_POWEROFF); --- linux-ppc-3.8.0.orig/kernel/params.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/kernel/module.c +++ linux-ppc-3.8.0/kernel/module.c @@ -2930,7 +2930,6 @@ { /* Module within temporary copy. */ struct module *mod; - Elf_Shdr *pcpusec; int err; mod = setup_load_info(info, flags); @@ -2945,17 +2944,10 @@ err = module_frob_arch_sections(info->hdr, info->sechdrs, info->secstrings, mod); if (err < 0) - goto out; + return ERR_PTR(err); - pcpusec = &info->sechdrs[info->index.pcpu]; - if (pcpusec->sh_size) { - /* We have a special allocation for this section. */ - err = percpu_modalloc(mod, - pcpusec->sh_size, pcpusec->sh_addralign); - if (err) - goto out; - pcpusec->sh_flags &= ~(unsigned long)SHF_ALLOC; - } + /* We will do a special allocation for per-cpu sections later. */ + info->sechdrs[info->index.pcpu].sh_flags &= ~(unsigned long)SHF_ALLOC; /* Determine total sizes, and put offsets in sh_entsize. For now this is done generically; there doesn't appear to be any @@ -2966,17 +2958,22 @@ /* Allocate and move to the final place */ err = move_module(mod, info); if (err) - goto free_percpu; + return ERR_PTR(err); /* Module has been copied to its final place now: return it. */ mod = (void *)info->sechdrs[info->index.mod].sh_addr; kmemleak_load_module(mod, info); return mod; +} -free_percpu: - percpu_modfree(mod); -out: - return ERR_PTR(err); +static int alloc_module_percpu(struct module *mod, struct load_info *info) +{ + Elf_Shdr *pcpusec = &info->sechdrs[info->index.pcpu]; + if (!pcpusec->sh_size) + return 0; + + /* We have a special allocation for this section. */ + return percpu_modalloc(mod, pcpusec->sh_size, pcpusec->sh_addralign); } /* mod is no longer valid after this! */ @@ -3196,6 +3193,11 @@ add_taint_module(mod, TAINT_FORCED_MODULE); #endif + /* To avoid stressing percpu allocator, do this once we're unique. */ + err = alloc_module_percpu(mod, info); + if (err) + goto unlink_mod; + /* Now module is in final location, initialize linked lists, etc. */ err = module_unload_init(mod); if (err) --- linux-ppc-3.8.0.orig/kernel/kmod.c +++ linux-ppc-3.8.0/kernel/kmod.c @@ -561,6 +561,11 @@ int retval = 0; helper_lock(); + if (!sub_info->path) { + retval = -EINVAL; + goto out; + } + if (sub_info->path[0] == '\0') goto out; --- linux-ppc-3.8.0.orig/kernel/futex.c +++ linux-ppc-3.8.0/kernel/futex.c @@ -60,6 +60,7 @@ #include #include #include +#include #include @@ -363,7 +364,7 @@ } else { key->both.offset |= FUT_OFF_INODE; /* inode-based key */ key->shared.inode = page_head->mapping->host; - key->shared.pgoff = page_head->index; + key->shared.pgoff = basepage_index(page); } get_futex_key_refs(key); @@ -2471,8 +2472,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-ppc-3.8.0.orig/kernel/capability.c +++ linux-ppc-3.8.0/kernel/capability.c @@ -393,6 +393,30 @@ EXPORT_SYMBOL(ns_capable); /** + * file_ns_capable - Determine if the file's opener had a capability in effect + * @file: The file we want to check + * @ns: The usernamespace we want the capability in + * @cap: The capability to be tested for + * + * Return true if task that opened the file had a capability in effect + * when the file was opened. + * + * This does not set PF_SUPERPRIV because the caller may not + * actually be privileged. + */ +bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap) +{ + if (WARN_ON_ONCE(!cap_valid(cap))) + return false; + + if (security_capable(file->f_cred, ns, cap) == 0) + return true; + + return false; +} +EXPORT_SYMBOL(file_ns_capable); + +/** * capable - Determine if the current task has a superior capability in effect * @cap: The capability to be tested for * --- linux-ppc-3.8.0.orig/kernel/printk.c +++ linux-ppc-3.8.0/kernel/printk.c @@ -362,6 +362,53 @@ log_next_seq++; } +#ifdef CONFIG_SECURITY_DMESG_RESTRICT +int dmesg_restrict = 1; +#else +int dmesg_restrict; +#endif + +static int syslog_action_restricted(int type) +{ + if (dmesg_restrict) + return 1; + /* + * Unless restricted, we allow "read all" and "get buffer size" + * for everybody. + */ + return type != SYSLOG_ACTION_READ_ALL && + type != SYSLOG_ACTION_SIZE_BUFFER; +} + +static int check_syslog_permissions(int type, bool from_file) +{ + /* + * If this is from /proc/kmsg and we've already opened it, then we've + * already done the capabilities checks at open time. + */ + if (from_file && type != SYSLOG_ACTION_OPEN) + return 0; + + if (syslog_action_restricted(type)) { + if (capable(CAP_SYSLOG)) + return 0; + /* + * For historical reasons, accept CAP_SYS_ADMIN too, with + * a warning. + */ + if (capable(CAP_SYS_ADMIN)) { + pr_warn_once("%s (%d): Attempt to access syslog with " + "CAP_SYS_ADMIN but no CAP_SYSLOG " + "(deprecated).\n", + current->comm, task_pid_nr(current)); + return 0; + } + return -EPERM; + } + return security_syslog(type); +} + + /* /dev/kmsg - userspace message inject/listen interface */ struct devkmsg_user { u64 seq; @@ -618,7 +665,8 @@ if ((file->f_flags & O_ACCMODE) == O_WRONLY) return 0; - err = security_syslog(SYSLOG_ACTION_READ_ALL); + err = check_syslog_permissions(SYSLOG_ACTION_READ_ALL, + SYSLOG_FROM_READER); if (err) return err; @@ -811,45 +859,6 @@ } #endif -#ifdef CONFIG_SECURITY_DMESG_RESTRICT -int dmesg_restrict = 1; -#else -int dmesg_restrict; -#endif - -static int syslog_action_restricted(int type) -{ - if (dmesg_restrict) - return 1; - /* Unless restricted, we allow "read all" and "get buffer size" for everybody */ - return type != SYSLOG_ACTION_READ_ALL && type != SYSLOG_ACTION_SIZE_BUFFER; -} - -static int check_syslog_permissions(int type, bool from_file) -{ - /* - * If this is from /proc/kmsg and we've already opened it, then we've - * already done the capabilities checks at open time. - */ - if (from_file && type != SYSLOG_ACTION_OPEN) - return 0; - - if (syslog_action_restricted(type)) { - if (capable(CAP_SYSLOG)) - return 0; - /* For historical reasons, accept CAP_SYS_ADMIN too, with a warning */ - if (capable(CAP_SYS_ADMIN)) { - printk_once(KERN_WARNING "%s (%d): " - "Attempt to access syslog with CAP_SYS_ADMIN " - "but no CAP_SYSLOG (deprecated).\n", - current->comm, task_pid_nr(current)); - return 0; - } - return -EPERM; - } - return 0; -} - #if defined(CONFIG_PRINTK_TIME) static bool printk_time = 1; #else @@ -1247,7 +1256,7 @@ SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) { - return do_syslog(type, buf, len, SYSLOG_FROM_CALL); + return do_syslog(type, buf, len, SYSLOG_FROM_READER); } /* @@ -1358,9 +1367,9 @@ } } logbuf_cpu = UINT_MAX; + raw_spin_unlock(&logbuf_lock); if (wake) up(&console_sem); - raw_spin_unlock(&logbuf_lock); return retval; } --- linux-ppc-3.8.0.orig/kernel/audit_tree.c +++ linux-ppc-3.8.0/kernel/audit_tree.c @@ -617,9 +617,9 @@ } spin_unlock(&hash_lock); trim_marked(tree); - put_tree(tree); drop_collected_mounts(root_mnt); skip_it: + put_tree(tree); mutex_lock(&audit_filter_mutex); } list_del(&cursor); --- linux-ppc-3.8.0.orig/kernel/hrtimer.c +++ linux-ppc-3.8.0/kernel/hrtimer.c @@ -61,6 +61,7 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) = { + .lock = __RAW_SPIN_LOCK_UNLOCKED(hrtimer_bases.lock), .clock_base = { { @@ -297,6 +298,10 @@ } else { unsigned long rem = do_div(nsec, NSEC_PER_SEC); + /* Make sure nsec fits into long */ + if (unlikely(nsec > KTIME_SEC_MAX)) + return (ktime_t){ .tv64 = KTIME_MAX }; + tmp = ktime_set((long)nsec, rem); } @@ -640,21 +645,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 +728,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 +987,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); @@ -1307,6 +1312,8 @@ expires = ktime_sub(hrtimer_get_expires(timer), base->offset); + if (expires.tv64 < 0) + expires.tv64 = KTIME_MAX; if (expires.tv64 < expires_next.tv64) expires_next = expires; break; @@ -1640,8 +1647,6 @@ struct hrtimer_cpu_base *cpu_base = &per_cpu(hrtimer_bases, cpu); int i; - raw_spin_lock_init(&cpu_base->lock); - for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { cpu_base->clock_base[i].cpu_base = cpu_base; timerqueue_init_head(&cpu_base->clock_base[i].active); --- linux-ppc-3.8.0.orig/kernel/futex_compat.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/kernel/pid_namespace.c +++ linux-ppc-3.8.0/kernel/pid_namespace.c @@ -181,6 +181,7 @@ int nr; int rc; struct task_struct *task, *me = current; + int init_pids = thread_group_leader(me) ? 1 : 2; /* Don't allow any more processes into the pid namespace */ disable_pid_allocation(pid_ns); @@ -230,7 +231,7 @@ */ for (;;) { set_current_state(TASK_UNINTERRUPTIBLE); - if (pid_ns->nr_hashed == 1) + if (pid_ns->nr_hashed == init_pids) break; schedule(); } --- linux-ppc-3.8.0.orig/kernel/audit.c +++ linux-ppc-3.8.0/kernel/audit.c @@ -1107,7 +1107,7 @@ static void wait_for_auditd(unsigned long sleep_time) { DECLARE_WAITQUEUE(wait, current); - set_current_state(TASK_INTERRUPTIBLE); + set_current_state(TASK_UNINTERRUPTIBLE); add_wait_queue(&audit_backlog_wait, &wait); if (audit_backlog_limit && --- linux-ppc-3.8.0.orig/kernel/signal.c +++ linux-ppc-3.8.0/kernel/signal.c @@ -485,6 +485,9 @@ if (force_default || ka->sa.sa_handler != SIG_IGN) ka->sa.sa_handler = SIG_DFL; ka->sa.sa_flags = 0; +#ifdef __ARCH_HAS_SA_RESTORER + ka->sa.sa_restorer = NULL; +#endif sigemptyset(&ka->sa.sa_mask); ka++; } @@ -2877,7 +2880,7 @@ static int do_tkill(pid_t tgid, pid_t pid, int sig) { - struct siginfo info; + struct siginfo info = {}; info.si_signo = sig; info.si_errno = 0; --- linux-ppc-3.8.0.orig/kernel/user.c +++ linux-ppc-3.8.0/kernel/user.c @@ -53,6 +53,8 @@ .owner = GLOBAL_ROOT_UID, .group = GLOBAL_ROOT_GID, .proc_inum = PROC_USER_INIT_INO, + .may_mount_sysfs = true, + .may_mount_proc = true, }; EXPORT_SYMBOL_GPL(init_user_ns); --- linux-ppc-3.8.0.orig/kernel/kthread.c +++ linux-ppc-3.8.0/kernel/kthread.c @@ -124,12 +124,12 @@ static void __kthread_parkme(struct kthread *self) { - __set_current_state(TASK_INTERRUPTIBLE); + __set_current_state(TASK_PARKED); while (test_bit(KTHREAD_SHOULD_PARK, &self->flags)) { if (!test_and_set_bit(KTHREAD_IS_PARKED, &self->flags)) complete(&self->parked); schedule(); - __set_current_state(TASK_INTERRUPTIBLE); + __set_current_state(TASK_PARKED); } clear_bit(KTHREAD_IS_PARKED, &self->flags); __set_current_state(TASK_RUNNING); @@ -256,8 +256,13 @@ } EXPORT_SYMBOL(kthread_create_on_node); -static void __kthread_bind(struct task_struct *p, unsigned int cpu) +static void __kthread_bind(struct task_struct *p, unsigned int cpu, long state) { + /* Must have done schedule() in kthread() before we set_task_cpu */ + if (!wait_task_inactive(p, state)) { + WARN_ON(1); + return; + } /* It's safe because the task is inactive. */ do_set_cpus_allowed(p, cpumask_of(cpu)); p->flags |= PF_THREAD_BOUND; @@ -274,12 +279,7 @@ */ void kthread_bind(struct task_struct *p, unsigned int cpu) { - /* Must have done schedule() in kthread() before we set_task_cpu */ - if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE)) { - WARN_ON(1); - return; - } - __kthread_bind(p, cpu); + __kthread_bind(p, cpu, TASK_UNINTERRUPTIBLE); } EXPORT_SYMBOL(kthread_bind); @@ -324,6 +324,22 @@ return NULL; } +static void __kthread_unpark(struct task_struct *k, struct kthread *kthread) +{ + clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags); + /* + * We clear the IS_PARKED bit here as we don't wait + * until the task has left the park code. So if we'd + * park before that happens we'd see the IS_PARKED bit + * which might be about to be cleared. + */ + if (test_and_clear_bit(KTHREAD_IS_PARKED, &kthread->flags)) { + if (test_bit(KTHREAD_IS_PER_CPU, &kthread->flags)) + __kthread_bind(k, kthread->cpu, TASK_PARKED); + wake_up_state(k, TASK_PARKED); + } +} + /** * kthread_unpark - unpark a thread created by kthread_create(). * @k: thread created by kthread_create(). @@ -336,20 +352,8 @@ { struct kthread *kthread = task_get_live_kthread(k); - if (kthread) { - clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags); - /* - * We clear the IS_PARKED bit here as we don't wait - * until the task has left the park code. So if we'd - * park before that happens we'd see the IS_PARKED bit - * which might be about to be cleared. - */ - if (test_and_clear_bit(KTHREAD_IS_PARKED, &kthread->flags)) { - if (test_bit(KTHREAD_IS_PER_CPU, &kthread->flags)) - __kthread_bind(k, kthread->cpu); - wake_up_process(k); - } - } + if (kthread) + __kthread_unpark(k, kthread); put_task_struct(k); } @@ -407,7 +411,7 @@ trace_sched_kthread_stop(k); if (kthread) { set_bit(KTHREAD_SHOULD_STOP, &kthread->flags); - clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags); + __kthread_unpark(k, kthread); wake_up_process(k); wait_for_completion(&kthread->exited); } --- linux-ppc-3.8.0.orig/kernel/user_namespace.c +++ linux-ppc-3.8.0/kernel/user_namespace.c @@ -21,10 +21,12 @@ #include #include #include +#include static struct kmem_cache *user_ns_cachep __read_mostly; -static bool new_idmap_permitted(struct user_namespace *ns, int cap_setid, +static bool new_idmap_permitted(const struct file *file, + struct user_namespace *ns, int cap_setid, struct uid_gid_map *map); static void set_cred_user_ns(struct cred *cred, struct user_namespace *user_ns) @@ -60,6 +62,18 @@ kgid_t group = new->egid; int ret; + if (parent_ns->level > 32) + return -EUSERS; + + /* + * Verify that we can not violate the policy of which files + * may be accessed that is specified by the root directory, + * by verifing that the root directory is at the root of the + * mount namespace which allows all files to be accessed. + */ + if (current_chrooted()) + return -EPERM; + /* The creator needs a mapping in the parent user namespace * or else we won't be able to reasonably tell userspace who * created a user_namespace. @@ -81,27 +95,35 @@ kref_init(&ns->kref); /* Leave the new->user_ns reference with the new user namespace. */ ns->parent = parent_ns; + ns->level = parent_ns->level + 1; ns->owner = owner; ns->group = group; set_cred_user_ns(new, ns); + update_mnt_policy(ns); + return 0; } int unshare_userns(unsigned long unshare_flags, struct cred **new_cred) { struct cred *cred; + int err = -ENOMEM; if (!(unshare_flags & CLONE_NEWUSER)) return 0; cred = prepare_creds(); - if (!cred) - return -ENOMEM; + if (cred) { + err = create_user_ns(cred); + if (err) + put_cred(cred); + else + *new_cred = cred; + } - *new_cred = cred; - return create_user_ns(cred); + return err; } void free_user_ns(struct kref *kref) @@ -563,10 +585,10 @@ if (map->nr_extents != 0) goto out; - /* Require the appropriate privilege CAP_SETUID or CAP_SETGID - * over the user namespace in order to set the id mapping. + /* + * Adjusting namespace settings requires capabilities on the target. */ - if (cap_valid(cap_setid) && !ns_capable(ns, cap_setid)) + if (cap_valid(cap_setid) && !file_ns_capable(file, ns, CAP_SYS_ADMIN)) goto out; /* Get a buffer */ @@ -654,7 +676,7 @@ ret = -EPERM; /* Validate the user is allowed to use user id's mapped to. */ - if (!new_idmap_permitted(ns, cap_setid, &new_map)) + if (!new_idmap_permitted(file, ns, cap_setid, &new_map)) goto out; /* Map the lower ids from the parent user namespace to the @@ -741,7 +763,8 @@ &ns->projid_map, &ns->parent->projid_map); } -static bool new_idmap_permitted(struct user_namespace *ns, int cap_setid, +static bool new_idmap_permitted(const struct file *file, + struct user_namespace *ns, int cap_setid, struct uid_gid_map *new_map) { /* Allow mapping to your own filesystem ids */ @@ -749,12 +772,12 @@ u32 id = new_map->extent[0].lower_first; if (cap_setid == CAP_SETUID) { kuid_t uid = make_kuid(ns->parent, id); - if (uid_eq(uid, current_fsuid())) + if (uid_eq(uid, file->f_cred->fsuid)) return true; } else if (cap_setid == CAP_SETGID) { kgid_t gid = make_kgid(ns->parent, id); - if (gid_eq(gid, current_fsgid())) + if (gid_eq(gid, file->f_cred->fsgid)) return true; } } @@ -765,8 +788,10 @@ /* Allow the specified ids if we have the appropriate capability * (CAP_SETUID or CAP_SETGID) over the parent user namespace. + * And the opener of the id file also had the approprpiate capability. */ - if (ns_capable(ns->parent, cap_setid)) + if (ns_capable(ns->parent, cap_setid) && + file_ns_capable(file, ns->parent, cap_setid)) return true; return false; @@ -803,6 +828,9 @@ if (atomic_read(¤t->mm->mm_users) > 1) return -EINVAL; + if (current->fs->users != 1) + return -EINVAL; + if (!ns_capable(user_ns, CAP_SYS_ADMIN)) return -EPERM; --- linux-ppc-3.8.0.orig/kernel/posix-cpu-timers.c +++ linux-ppc-3.8.0/kernel/posix-cpu-timers.c @@ -1401,8 +1401,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; } @@ -1420,9 +1422,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-ppc-3.8.0.orig/kernel/cpu.c +++ linux-ppc-3.8.0/kernel/cpu.c @@ -133,6 +133,27 @@ mutex_unlock(&cpu_hotplug.lock); } +/* + * Wait for currently running CPU hotplug operations to complete (if any) and + * disable future CPU hotplug (from sysfs). The 'cpu_add_remove_lock' protects + * the 'cpu_hotplug_disabled' flag. The same lock is also acquired by the + * hotplug path before performing hotplug operations. So acquiring that lock + * guarantees mutual exclusion from any currently running hotplug operations. + */ +void cpu_hotplug_disable(void) +{ + cpu_maps_update_begin(); + cpu_hotplug_disabled = 1; + cpu_maps_update_done(); +} + +void cpu_hotplug_enable(void) +{ + cpu_maps_update_begin(); + cpu_hotplug_disabled = 0; + cpu_maps_update_done(); +} + #else /* #if CONFIG_HOTPLUG_CPU */ static void cpu_hotplug_begin(void) {} static void cpu_hotplug_done(void) {} @@ -537,36 +558,6 @@ core_initcall(alloc_frozen_cpus); /* - * Prevent regular CPU hotplug from racing with the freezer, by disabling CPU - * hotplug when tasks are about to be frozen. Also, don't allow the freezer - * to continue until any currently running CPU hotplug operation gets - * completed. - * To modify the 'cpu_hotplug_disabled' flag, we need to acquire the - * 'cpu_add_remove_lock'. And this same lock is also taken by the regular - * CPU hotplug path and released only after it is complete. Thus, we - * (and hence the freezer) will block here until any currently running CPU - * hotplug operation gets completed. - */ -void cpu_hotplug_disable_before_freeze(void) -{ - cpu_maps_update_begin(); - cpu_hotplug_disabled = 1; - cpu_maps_update_done(); -} - - -/* - * When tasks have been thawed, re-enable regular CPU hotplug (which had been - * disabled while beginning to freeze tasks). - */ -void cpu_hotplug_enable_after_thaw(void) -{ - cpu_maps_update_begin(); - cpu_hotplug_disabled = 0; - cpu_maps_update_done(); -} - -/* * When callbacks for CPU hotplug notifications are being executed, we must * ensure that the state of the system with respect to the tasks being frozen * or not, as reported by the notification, remains unchanged *throughout the @@ -585,12 +576,12 @@ case PM_SUSPEND_PREPARE: case PM_HIBERNATION_PREPARE: - cpu_hotplug_disable_before_freeze(); + cpu_hotplug_disable(); break; case PM_POST_SUSPEND: case PM_POST_HIBERNATION: - cpu_hotplug_enable_after_thaw(); + cpu_hotplug_enable(); break; default: --- linux-ppc-3.8.0.orig/kernel/fork.c +++ linux-ppc-3.8.0/kernel/fork.c @@ -1141,6 +1141,9 @@ if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS)) return ERR_PTR(-EINVAL); + if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) + return ERR_PTR(-EINVAL); + /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. @@ -1661,6 +1664,12 @@ int __user *, parent_tidptr, int __user *, child_tidptr, int, tls_val) +#elif defined(CONFIG_CLONE_BACKWARDS3) +SYSCALL_DEFINE6(clone, unsigned long, clone_flags, unsigned long, newsp, + int, stack_size, + int __user *, parent_tidptr, + int __user *, child_tidptr, + int, tls_val) #else SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, int __user *, parent_tidptr, @@ -1801,7 +1810,7 @@ * If unsharing a user namespace must also unshare the thread. */ if (unshare_flags & CLONE_NEWUSER) - unshare_flags |= CLONE_THREAD; + unshare_flags |= CLONE_THREAD | CLONE_FS; /* * If unsharing a pid namespace must also unshare the thread. */ --- linux-ppc-3.8.0.orig/kernel/timeconst.pl +++ linux-ppc-3.8.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-ppc-3.8.0.orig/kernel/timer.c +++ linux-ppc-3.8.0/kernel/timer.c @@ -147,9 +147,11 @@ /* now that we have rounded, subtract the extra skew again */ j -= cpu * 3; - if (j <= jiffies) /* rounding ate our timeout entirely; */ - return original; - return j; + /* + * Make sure j is still in the future. Otherwise return the + * unmodified value. + */ + return time_is_after_jiffies(j) ? j : original; } /** @@ -1678,12 +1680,12 @@ boot_done = 1; base = &boot_tvec_bases; } + spin_lock_init(&base->lock); tvec_base_done[cpu] = 1; } else { base = per_cpu(tvec_bases, cpu); } - spin_lock_init(&base->lock); for (j = 0; j < TVN_SIZE; j++) { INIT_LIST_HEAD(base->tv5.vec + j); --- linux-ppc-3.8.0.orig/kernel/sysctl_binary.c +++ linux-ppc-3.8.0/kernel/sysctl_binary.c @@ -1194,9 +1194,10 @@ /* Convert the decnet address to binary */ result = -EIO; - nodep = strchr(buf, '.') + 1; + nodep = strchr(buf, '.'); if (!nodep) goto out; + ++nodep; area = simple_strtoul(buf, NULL, 10); node = simple_strtoul(nodep, NULL, 10); --- linux-ppc-3.8.0.orig/kernel/events/hw_breakpoint.c +++ linux-ppc-3.8.0/kernel/events/hw_breakpoint.c @@ -120,7 +120,7 @@ list_for_each_entry(iter, &bp_task_head, hw.bp_list) { if (iter->hw.bp_target == tsk && find_slot_idx(iter) == type && - cpu == iter->cpu) + (iter->cpu < 0 || cpu == iter->cpu)) count += hw_breakpoint_weight(iter); } @@ -149,7 +149,7 @@ return; } - for_each_online_cpu(cpu) { + for_each_possible_cpu(cpu) { unsigned int nr; nr = per_cpu(nr_cpu_bp_pinned[type], cpu); @@ -235,7 +235,7 @@ if (cpu >= 0) { toggle_bp_task_slot(bp, cpu, enable, type, weight); } else { - for_each_online_cpu(cpu) + for_each_possible_cpu(cpu) toggle_bp_task_slot(bp, cpu, enable, type, weight); } --- linux-ppc-3.8.0.orig/kernel/events/core.c +++ linux-ppc-3.8.0/kernel/events/core.c @@ -729,8 +729,18 @@ { struct perf_event_context *ctx; - rcu_read_lock(); retry: + /* + * One of the few rules of preemptible RCU is that one cannot do + * rcu_read_unlock() while holding a scheduler (or nested) lock when + * part of the read side critical section was preemptible -- see + * rcu_read_unlock_special(). + * + * Since ctx->lock nests under rq->lock we must ensure the entire read + * side critical section is non-preemptible. + */ + preempt_disable(); + rcu_read_lock(); ctx = rcu_dereference(task->perf_event_ctxp[ctxn]); if (ctx) { /* @@ -746,6 +756,8 @@ raw_spin_lock_irqsave(&ctx->lock, *flags); if (ctx != rcu_dereference(task->perf_event_ctxp[ctxn])) { raw_spin_unlock_irqrestore(&ctx->lock, *flags); + rcu_read_unlock(); + preempt_enable(); goto retry; } @@ -755,6 +767,7 @@ } } rcu_read_unlock(); + preempt_enable(); return ctx; } @@ -1723,7 +1736,16 @@ struct perf_cpu_context *cpuctx = __get_cpu_context(ctx); int err; - if (WARN_ON_ONCE(!ctx->is_active)) + /* + * There's a time window between 'ctx->is_active' check + * in perf_event_enable function and this place having: + * - IRQs on + * - ctx->lock unlocked + * + * where the task could be killed and 'ctx' deactivated + * by perf_event_exit_task. + */ + if (!ctx->is_active) return -EINVAL; raw_spin_lock(&ctx->lock); @@ -5328,7 +5350,7 @@ static int perf_swevent_init(struct perf_event *event) { - int event_id = event->attr.config; + u64 event_id = event->attr.config; if (event->attr.type != PERF_TYPE_SOFTWARE) return -ENOENT; @@ -5988,6 +6010,7 @@ if (pmu->pmu_cpu_context) goto got_cpu_context; + ret = -ENOMEM; pmu->pmu_cpu_context = alloc_percpu(struct perf_cpu_context); if (!pmu->pmu_cpu_context) goto free_dev; @@ -7136,7 +7159,7 @@ * child. */ - child_ctx = alloc_perf_context(event->pmu, child); + child_ctx = alloc_perf_context(parent_ctx->pmu, child); if (!child_ctx) return -ENOMEM; --- linux-ppc-3.8.0.orig/kernel/irq/manage.c +++ linux-ppc-3.8.0/kernel/irq/manage.c @@ -554,9 +554,9 @@ return 0; if (irq_settings_can_request(desc)) { - if (desc->action) - if (irqflags & desc->action->flags & IRQF_SHARED) - canrequest =1; + if (!desc->action || + irqflags & desc->action->flags & IRQF_SHARED) + canrequest = 1; } irq_put_desc_unlock(desc, flags); return canrequest; --- linux-ppc-3.8.0.orig/kernel/irq/spurious.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/kernel/sched/clock.c +++ linux-ppc-3.8.0/kernel/sched/clock.c @@ -176,10 +176,36 @@ u64 this_clock, remote_clock; u64 *ptr, old_val, val; +#if BITS_PER_LONG != 64 +again: + /* + * Careful here: The local and the remote clock values need to + * be read out atomic as we need to compare the values and + * then update either the local or the remote side. So the + * cmpxchg64 below only protects one readout. + * + * We must reread via sched_clock_local() in the retry case on + * 32bit as an NMI could use sched_clock_local() via the + * tracer and hit between the readout of + * the low32bit and the high 32bit portion. + */ + this_clock = sched_clock_local(my_scd); + /* + * We must enforce atomic readout on 32bit, otherwise the + * update on the remote cpu can hit inbetween the readout of + * the low32bit and the high 32bit portion. + */ + remote_clock = cmpxchg64(&scd->clock, 0, 0); +#else + /* + * On 64bit the read of [my]scd->clock is atomic versus the + * update, so we can avoid the above 32bit dance. + */ sched_clock_local(my_scd); again: this_clock = my_scd->clock; remote_clock = scd->clock; +#endif /* * Use the opportunity that we have both locks --- linux-ppc-3.8.0.orig/kernel/sched/fair.c +++ linux-ppc-3.8.0/kernel/sched/fair.c @@ -1964,6 +1964,7 @@ */ update_entity_load_avg(curr, 1); update_cfs_rq_blocked_load(cfs_rq, 1); + update_cfs_shares(cfs_rq); #ifdef CONFIG_SCHED_HRTICK /* --- linux-ppc-3.8.0.orig/kernel/sched/core.c +++ linux-ppc-3.8.0/kernel/sched/core.c @@ -1488,8 +1488,10 @@ { struct rq *rq = task_rq(p); - BUG_ON(rq != this_rq()); - BUG_ON(p == current); + if (WARN_ON_ONCE(rq != this_rq()) || + WARN_ON_ONCE(p == current)) + return; + lockdep_assert_held(&rq->lock); if (!raw_spin_trylock(&p->pi_lock)) { @@ -4948,7 +4950,7 @@ } static int min_load_idx = 0; -static int max_load_idx = CPU_LOAD_IDX_MAX; +static int max_load_idx = CPU_LOAD_IDX_MAX-1; static void set_table_entry(struct ctl_table *entry, --- linux-ppc-3.8.0.orig/kernel/trace/trace_stack.c +++ linux-ppc-3.8.0/kernel/trace/trace_stack.c @@ -20,13 +20,24 @@ #define STACK_TRACE_ENTRIES 500 +#ifdef CC_USING_FENTRY +# define fentry 1 +#else +# define fentry 0 +#endif + static unsigned long stack_dump_trace[STACK_TRACE_ENTRIES+1] = { [0 ... (STACK_TRACE_ENTRIES)] = ULONG_MAX }; static unsigned stack_dump_index[STACK_TRACE_ENTRIES]; +/* + * Reserve one entry for the passed in ip. This will allow + * us to remove most or all of the stack size overhead + * added by the stack tracer itself. + */ static struct stack_trace max_stack_trace = { - .max_entries = STACK_TRACE_ENTRIES, - .entries = stack_dump_trace, + .max_entries = STACK_TRACE_ENTRIES - 1, + .entries = &stack_dump_trace[1], }; static unsigned long max_stack_size; @@ -39,25 +50,34 @@ int stack_tracer_enabled; static int last_stack_tracer_enabled; -static inline void check_stack(void) +static inline void +check_stack(unsigned long ip, unsigned long *stack) { unsigned long this_size, flags; unsigned long *p, *top, *start; + static int tracer_frame; + int frame_size = ACCESS_ONCE(tracer_frame); int i; - this_size = ((unsigned long)&this_size) & (THREAD_SIZE-1); + this_size = ((unsigned long)stack) & (THREAD_SIZE-1); this_size = THREAD_SIZE - this_size; + /* Remove the frame of the tracer */ + this_size -= frame_size; if (this_size <= max_stack_size) return; /* we do not handle interrupt stacks yet */ - if (!object_is_on_stack(&this_size)) + if (!object_is_on_stack(stack)) return; local_irq_save(flags); arch_spin_lock(&max_stack_lock); + /* In case another CPU set the tracer_frame on us */ + if (unlikely(!frame_size)) + this_size -= tracer_frame; + /* a race could have already updated it */ if (this_size <= max_stack_size) goto out; @@ -70,10 +90,18 @@ save_stack_trace(&max_stack_trace); /* + * Add the passed in ip from the function tracer. + * Searching for this on the stack will skip over + * most of the overhead from the stack tracer itself. + */ + stack_dump_trace[0] = ip; + max_stack_trace.nr_entries++; + + /* * Now find where in the stack these are. */ i = 0; - start = &this_size; + start = stack; top = (unsigned long *) (((unsigned long)start & ~(THREAD_SIZE-1)) + THREAD_SIZE); @@ -97,6 +125,18 @@ found = 1; /* Start the search from here */ start = p + 1; + /* + * We do not want to show the overhead + * of the stack tracer stack in the + * max stack. If we haven't figured + * out what that is, then figure it out + * now. + */ + if (unlikely(!tracer_frame) && i == 1) { + tracer_frame = (p - stack) * + sizeof(unsigned long); + max_stack_size -= tracer_frame; + } } } @@ -113,6 +153,7 @@ stack_trace_call(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *op, struct pt_regs *pt_regs) { + unsigned long stack; int cpu; preempt_disable_notrace(); @@ -122,7 +163,26 @@ if (per_cpu(trace_active, cpu)++ != 0) goto out; - check_stack(); + /* + * When fentry is used, the traced function does not get + * its stack frame set up, and we lose the parent. + * The ip is pretty useless because the function tracer + * was called before that function set up its stack frame. + * In this case, we use the parent ip. + * + * By adding the return address of either the parent ip + * or the current ip we can disregard most of the stack usage + * caused by the stack tracer itself. + * + * The function tracer always reports the address of where the + * mcount call was, but the stack will hold the return address. + */ + if (fentry) + ip = parent_ip; + else + ip += MCOUNT_INSN_SIZE; + + check_stack(ip, &stack); out: per_cpu(trace_active, cpu)--; @@ -322,7 +382,7 @@ .open = stack_trace_filter_open, .read = seq_read, .write = ftrace_filter_write, - .llseek = ftrace_regex_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_regex_release, }; @@ -371,6 +431,8 @@ struct dentry *d_tracer; d_tracer = tracing_init_dentry(); + if (!d_tracer) + return 0; trace_create_file("stack_max_size", 0644, d_tracer, &max_stack_size, &stack_max_size_fops); --- linux-ppc-3.8.0.orig/kernel/trace/trace_sched_wakeup.c +++ linux-ppc-3.8.0/kernel/trace/trace_sched_wakeup.c @@ -36,7 +36,7 @@ static int wakeup_graph_entry(struct ftrace_graph_ent *trace); static void wakeup_graph_return(struct ftrace_graph_ret *trace); -static int save_lat_flag; +static int save_flags; #define TRACE_DISPLAY_GRAPH 1 @@ -540,8 +540,11 @@ static int __wakeup_tracer_init(struct trace_array *tr) { - save_lat_flag = trace_flags & TRACE_ITER_LATENCY_FMT; - trace_flags |= TRACE_ITER_LATENCY_FMT; + save_flags = trace_flags; + + /* non overwrite screws up the latency tracers */ + set_tracer_flag(TRACE_ITER_OVERWRITE, 1); + set_tracer_flag(TRACE_ITER_LATENCY_FMT, 1); tracing_max_latency = 0; wakeup_trace = tr; @@ -563,12 +566,15 @@ static void wakeup_tracer_reset(struct trace_array *tr) { + int lat_flag = save_flags & TRACE_ITER_LATENCY_FMT; + int overwrite_flag = save_flags & TRACE_ITER_OVERWRITE; + stop_wakeup_tracer(tr); /* make sure we put back any tasks we are tracing */ wakeup_reset(tr); - if (!save_lat_flag) - trace_flags &= ~TRACE_ITER_LATENCY_FMT; + set_tracer_flag(TRACE_ITER_LATENCY_FMT, lat_flag); + set_tracer_flag(TRACE_ITER_OVERWRITE, overwrite_flag); } static void wakeup_tracer_start(struct trace_array *tr) @@ -594,6 +600,7 @@ .print_line = wakeup_print_line, .flags = &tracer_flags, .set_flag = wakeup_set_flag, + .flag_changed = trace_keep_overwrite, #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_wakeup, #endif @@ -615,6 +622,7 @@ .print_line = wakeup_print_line, .flags = &tracer_flags, .set_flag = wakeup_set_flag, + .flag_changed = trace_keep_overwrite, #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_wakeup, #endif --- linux-ppc-3.8.0.orig/kernel/trace/trace.c +++ linux-ppc-3.8.0/kernel/trace/trace.c @@ -682,7 +682,15 @@ memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN); max_data->pid = tsk->pid; - max_data->uid = task_uid(tsk); + /* + * If tsk == current, then use current_uid(), as that does not use + * RCU. The irq tracer can be called out of RCU scope. + */ + if (tsk == current) + max_data->uid = current_uid(); + else + max_data->uid = task_uid(tsk); + max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO; max_data->policy = tsk->policy; max_data->rt_priority = tsk->rt_priority; @@ -703,7 +711,7 @@ void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) { - struct ring_buffer *buf = tr->buffer; + struct ring_buffer *buf; if (trace_stop_count) return; @@ -715,6 +723,7 @@ } arch_spin_lock(&ftrace_max_lock); + buf = tr->buffer; tr->buffer = max_tr.buffer; max_tr.buffer = buf; @@ -2835,11 +2844,25 @@ return -EINVAL; } -static void set_tracer_flags(unsigned int mask, int enabled) +/* Some tracers require overwrite to stay enabled */ +int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) +{ + if (tracer->enabled && (mask & TRACE_ITER_OVERWRITE) && !set) + return -1; + + return 0; +} + +int set_tracer_flag(unsigned int mask, int enabled) { /* do nothing if flag is already set */ if (!!(trace_flags & mask) == !!enabled) - return; + return 0; + + /* Give the tracer a chance to approve the change */ + if (current_trace->flag_changed) + if (current_trace->flag_changed(current_trace, mask, !!enabled)) + return -EINVAL; if (enabled) trace_flags |= mask; @@ -2849,18 +2872,24 @@ if (mask == TRACE_ITER_RECORD_CMD) trace_event_enable_cmd_record(enabled); - if (mask == TRACE_ITER_OVERWRITE) + if (mask == TRACE_ITER_OVERWRITE) { ring_buffer_change_overwrite(global_trace.buffer, enabled); +#ifdef CONFIG_TRACER_MAX_TRACE + ring_buffer_change_overwrite(max_tr.buffer, enabled); +#endif + } if (mask == TRACE_ITER_PRINTK) trace_printk_start_stop_comm(enabled); + + return 0; } static int trace_set_options(char *option) { char *cmp; int neg = 0; - int ret = 0; + int ret = -ENODEV; int i; cmp = strstrip(option); @@ -2870,19 +2899,20 @@ cmp += 2; } + mutex_lock(&trace_types_lock); + for (i = 0; trace_options[i]; i++) { if (strcmp(cmp, trace_options[i]) == 0) { - set_tracer_flags(1 << i, !neg); + ret = set_tracer_flag(1 << i, !neg); break; } } /* If no option could be set, test the specific tracer options */ - if (!trace_options[i]) { - mutex_lock(&trace_types_lock); + if (!trace_options[i]) ret = set_tracer_option(current_trace, cmp, neg); - mutex_unlock(&trace_types_lock); - } + + mutex_unlock(&trace_types_lock); return ret; } @@ -2892,6 +2922,7 @@ size_t cnt, loff_t *ppos) { char buf[64]; + int ret; if (cnt >= sizeof(buf)) return -EINVAL; @@ -2901,7 +2932,9 @@ buf[cnt] = 0; - trace_set_options(buf); + ret = trace_set_options(buf); + if (ret < 0) + return ret; *ppos += cnt; @@ -3207,6 +3240,9 @@ goto out; trace_branch_disable(); + + current_trace->enabled = false; + if (current_trace && current_trace->reset) current_trace->reset(tr); if (current_trace && current_trace->use_max_tr) { @@ -3238,6 +3274,7 @@ } current_trace = t; + current_trace->enabled = true; trace_branch_enable(tr); out: mutex_unlock(&trace_types_lock); @@ -4640,7 +4677,13 @@ if (val != 0 && val != 1) return -EINVAL; - set_tracer_flags(1 << index, val); + + mutex_lock(&trace_types_lock); + ret = set_tracer_flag(1 << index, val); + mutex_unlock(&trace_types_lock); + + if (ret < 0) + return ret; *ppos += cnt; @@ -4850,6 +4893,8 @@ trace_access_lock_init(); d_tracer = tracing_init_dentry(); + if (!d_tracer) + return 0; trace_create_file("trace_options", 0644, d_tracer, NULL, &tracing_iter_fops); @@ -4983,36 +5028,32 @@ iter->cpu_file = TRACE_PIPE_ALL_CPU; } -static void -__ftrace_dump(bool disable_tracing, enum ftrace_dump_mode oops_dump_mode) +void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { - static arch_spinlock_t ftrace_dump_lock = - (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED; /* use static because iter can be a bit big for the stack */ static struct trace_iterator iter; + static atomic_t dump_running; unsigned int old_userobj; - static int dump_ran; unsigned long flags; int cnt = 0, cpu; - /* only one dump */ - local_irq_save(flags); - arch_spin_lock(&ftrace_dump_lock); - if (dump_ran) - goto out; - - dump_ran = 1; + /* Only allow one dump user at a time. */ + if (atomic_inc_return(&dump_running) != 1) { + atomic_dec(&dump_running); + return; + } + /* + * Always turn off tracing when we dump. + * We don't need to show trace output of what happens + * between multiple crashes. + * + * If the user does a sysrq-z, then they can re-enable + * tracing with echo 1 > tracing_on. + */ tracing_off(); - /* Did function tracer already get disabled? */ - if (ftrace_is_dead()) { - printk("# WARNING: FUNCTION TRACING IS CORRUPTED\n"); - printk("# MAY BE MISSING FUNCTION EVENTS\n"); - } - - if (disable_tracing) - ftrace_kill(); + local_irq_save(flags); trace_init_global_iter(&iter); @@ -5045,6 +5086,12 @@ printk(KERN_TRACE "Dumping ftrace buffer:\n"); + /* Did function tracer already get disabled? */ + if (ftrace_is_dead()) { + printk("# WARNING: FUNCTION TRACING IS CORRUPTED\n"); + printk("# MAY BE MISSING FUNCTION EVENTS\n"); + } + /* * We need to stop all tracing on all CPUS to read the * the next buffer. This is a bit expensive, but is @@ -5084,26 +5131,14 @@ printk(KERN_TRACE "---------------------------------\n"); out_enable: - /* Re-enable tracing if requested */ - if (!disable_tracing) { - trace_flags |= old_userobj; + trace_flags |= old_userobj; - for_each_tracing_cpu(cpu) { - atomic_dec(&iter.tr->data[cpu]->disabled); - } - tracing_on(); + for_each_tracing_cpu(cpu) { + atomic_dec(&iter.tr->data[cpu]->disabled); } - - out: - arch_spin_unlock(&ftrace_dump_lock); + atomic_dec(&dump_running); local_irq_restore(flags); } - -/* By default: disable tracing after the dump */ -void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) -{ - __ftrace_dump(true, oops_dump_mode); -} EXPORT_SYMBOL_GPL(ftrace_dump); __init static int tracer_alloc_buffers(void) --- linux-ppc-3.8.0.orig/kernel/trace/trace_uprobe.c +++ linux-ppc-3.8.0/kernel/trace/trace_uprobe.c @@ -244,8 +244,10 @@ return -EINVAL; } arg = strchr(argv[1], ':'); - if (!arg) + if (!arg) { + ret = -EINVAL; goto fail_address_parse; + } *arg++ = '\0'; filename = argv[1]; --- linux-ppc-3.8.0.orig/kernel/trace/trace_irqsoff.c +++ linux-ppc-3.8.0/kernel/trace/trace_irqsoff.c @@ -32,7 +32,7 @@ static int trace_type __read_mostly; -static int save_lat_flag; +static int save_flags; static void stop_irqsoff_tracer(struct trace_array *tr, int graph); static int start_irqsoff_tracer(struct trace_array *tr, int graph); @@ -558,8 +558,11 @@ static void __irqsoff_tracer_init(struct trace_array *tr) { - save_lat_flag = trace_flags & TRACE_ITER_LATENCY_FMT; - trace_flags |= TRACE_ITER_LATENCY_FMT; + save_flags = trace_flags; + + /* non overwrite screws up the latency tracers */ + set_tracer_flag(TRACE_ITER_OVERWRITE, 1); + set_tracer_flag(TRACE_ITER_LATENCY_FMT, 1); tracing_max_latency = 0; irqsoff_trace = tr; @@ -573,10 +576,13 @@ static void irqsoff_tracer_reset(struct trace_array *tr) { + int lat_flag = save_flags & TRACE_ITER_LATENCY_FMT; + int overwrite_flag = save_flags & TRACE_ITER_OVERWRITE; + stop_irqsoff_tracer(tr, is_graph()); - if (!save_lat_flag) - trace_flags &= ~TRACE_ITER_LATENCY_FMT; + set_tracer_flag(TRACE_ITER_LATENCY_FMT, lat_flag); + set_tracer_flag(TRACE_ITER_OVERWRITE, overwrite_flag); } static void irqsoff_tracer_start(struct trace_array *tr) @@ -609,6 +615,7 @@ .print_line = irqsoff_print_line, .flags = &tracer_flags, .set_flag = irqsoff_set_flag, + .flag_changed = trace_keep_overwrite, #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_irqsoff, #endif @@ -642,6 +649,7 @@ .print_line = irqsoff_print_line, .flags = &tracer_flags, .set_flag = irqsoff_set_flag, + .flag_changed = trace_keep_overwrite, #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_preemptoff, #endif @@ -677,6 +685,7 @@ .print_line = irqsoff_print_line, .flags = &tracer_flags, .set_flag = irqsoff_set_flag, + .flag_changed = trace_keep_overwrite, #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_preemptirqsoff, #endif --- linux-ppc-3.8.0.orig/kernel/trace/ftrace.c +++ linux-ppc-3.8.0/kernel/trace/ftrace.c @@ -650,7 +650,7 @@ pages = DIV_ROUND_UP(functions, PROFILES_PER_PAGE); - for (i = 0; i < pages; i++) { + for (i = 1; i < pages; i++) { pg->next = (void *)get_zeroed_page(GFP_KERNEL); if (!pg->next) goto out_free; @@ -668,7 +668,6 @@ free_page(tmp); } - free_page((unsigned long)stat->pages); stat->pages = NULL; stat->start = NULL; @@ -1028,6 +1027,19 @@ static struct pid * const ftrace_swapper_pid = &init_struct_pid; +loff_t +ftrace_filter_lseek(struct file *file, loff_t offset, int whence) +{ + loff_t ret; + + if (file->f_mode & FMODE_READ) + ret = seq_lseek(file, offset, whence); + else + file->f_pos = ret = 1; + + return ret; +} + #ifdef CONFIG_DYNAMIC_FTRACE #ifndef CONFIG_FTRACE_MCOUNT_RECORD @@ -2590,7 +2602,7 @@ * routine, you can use ftrace_filter_write() for the write * routine if @flag has FTRACE_ITER_FILTER set, or * ftrace_notrace_write() if @flag has FTRACE_ITER_NOTRACE set. - * ftrace_regex_lseek() should be used as the lseek routine, and + * ftrace_filter_lseek() should be used as the lseek routine, and * release must call ftrace_regex_release(). */ int @@ -2674,19 +2686,6 @@ inode, file); } -loff_t -ftrace_regex_lseek(struct file *file, loff_t offset, int whence) -{ - loff_t ret; - - if (file->f_mode & FMODE_READ) - ret = seq_lseek(file, offset, whence); - else - file->f_pos = ret = 1; - - return ret; -} - static int ftrace_match(char *str, char *regex, int len, int type) { int matched = 0; @@ -3082,8 +3081,8 @@ continue; } - hlist_del(&entry->node); - call_rcu(&entry->rcu, ftrace_free_entry_rcu); + hlist_del_rcu(&entry->node); + call_rcu_sched(&entry->rcu, ftrace_free_entry_rcu); } } __disable_ftrace_function_probe(); @@ -3549,7 +3548,7 @@ .open = ftrace_filter_open, .read = seq_read, .write = ftrace_filter_write, - .llseek = ftrace_regex_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_regex_release, }; @@ -3557,7 +3556,7 @@ .open = ftrace_notrace_open, .read = seq_read, .write = ftrace_notrace_write, - .llseek = ftrace_regex_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_regex_release, }; @@ -3715,7 +3714,8 @@ if (fail) return -EINVAL; - ftrace_graph_filter_enabled = 1; + ftrace_graph_filter_enabled = !!(*idx); + return 0; } @@ -3762,8 +3762,8 @@ .open = ftrace_graph_open, .read = seq_read, .write = ftrace_graph_write, + .llseek = ftrace_filter_lseek, .release = ftrace_graph_release, - .llseek = seq_lseek, }; #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ @@ -3970,37 +3970,51 @@ 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, +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[]; extern unsigned long __stop_mcount_loc[]; @@ -4032,9 +4046,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(); @@ -4403,7 +4421,7 @@ .open = ftrace_pid_open, .write = ftrace_pid_write, .read = seq_read, - .llseek = seq_lseek, + .llseek = ftrace_filter_lseek, .release = ftrace_pid_release, }; @@ -4519,12 +4537,8 @@ ftrace_startup_sysctl(); /* we are starting ftrace again */ - if (ftrace_ops_list != &ftrace_list_end) { - if (ftrace_ops_list->next == &ftrace_list_end) - ftrace_trace_function = ftrace_ops_list->func; - else - ftrace_trace_function = ftrace_ops_list_func; - } + if (ftrace_ops_list != &ftrace_list_end) + update_ftrace_function(); } else { /* stopping ftrace calls (just send to ftrace_stub) */ --- linux-ppc-3.8.0.orig/kernel/trace/trace_stat.c +++ linux-ppc-3.8.0/kernel/trace/trace_stat.c @@ -307,6 +307,8 @@ struct dentry *d_tracing; d_tracing = tracing_init_dentry(); + if (!d_tracing) + return 0; stat_dir = debugfs_create_dir("trace_stat", d_tracing); if (!stat_dir) --- linux-ppc-3.8.0.orig/kernel/trace/trace_selftest.c +++ linux-ppc-3.8.0/kernel/trace/trace_selftest.c @@ -452,7 +452,6 @@ char *func_name; int len; int ret; - int cnt; /* The previous test PASSED */ pr_cont("PASSED\n"); @@ -510,19 +509,10 @@ unregister_ftrace_function(&test_recsafe_probe); - /* - * If arch supports all ftrace features, and no other task - * was on the list, we should be fine. - */ - if (!ftrace_nr_registered_ops() && !FTRACE_FORCE_LIST_FUNC) - cnt = 2; /* Should have recursed */ - else - cnt = 1; - ret = -1; - if (trace_selftest_recursion_cnt != cnt) { - pr_cont("*callback not called expected %d times (%d)* ", - cnt, trace_selftest_recursion_cnt); + if (trace_selftest_recursion_cnt != 2) { + pr_cont("*callback not called expected 2 times (%d)* ", + trace_selftest_recursion_cnt); goto out; } @@ -712,8 +702,6 @@ /* Maximum number of functions to trace before diagnosing a hang */ #define GRAPH_MAX_FUNC_TEST 100000000 -static void -__ftrace_dump(bool disable_tracing, enum ftrace_dump_mode oops_dump_mode); static unsigned int graph_hang_thresh; /* Wrap the real function entry probe to avoid possible hanging */ @@ -723,8 +711,11 @@ if (unlikely(++graph_hang_thresh > GRAPH_MAX_FUNC_TEST)) { ftrace_graph_stop(); printk(KERN_WARNING "BUG: Function graph tracer hang!\n"); - if (ftrace_dump_on_oops) - __ftrace_dump(false, DUMP_ALL); + if (ftrace_dump_on_oops) { + ftrace_dump(DUMP_ALL); + /* ftrace_dump() disables tracing */ + tracing_on(); + } return 0; } --- linux-ppc-3.8.0.orig/kernel/trace/trace.h +++ linux-ppc-3.8.0/kernel/trace/trace.h @@ -283,10 +283,14 @@ enum print_line_t (*print_line)(struct trace_iterator *iter); /* If you handled the flag setting, return 0 */ int (*set_flag)(u32 old_flags, u32 bit, int set); + /* Return 0 if OK with change, else return non-zero */ + int (*flag_changed)(struct tracer *tracer, + u32 mask, int set); struct tracer *next; struct tracer_flags *flags; bool print_max; bool use_max_tr; + bool enabled; }; @@ -835,6 +839,8 @@ void trace_printk_init_buffers(void); void trace_printk_start_comm(void); +int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set); +int set_tracer_flag(unsigned int mask, int enabled); #undef FTRACE_ENTRY #define FTRACE_ENTRY(call, struct_name, id, tstruct, print, filter) \ --- linux-ppc-3.8.0.orig/kernel/trace/trace_events_filter.c +++ linux-ppc-3.8.0/kernel/trace/trace_events_filter.c @@ -777,7 +777,11 @@ static void __free_preds(struct event_filter *filter) { + int i; + if (filter->preds) { + for (i = 0; i < filter->n_preds; i++) + kfree(filter->preds[i].ops); kfree(filter->preds); filter->preds = NULL; } --- linux-ppc-3.8.0.orig/kernel/trace/Kconfig +++ linux-ppc-3.8.0/kernel/trace/Kconfig @@ -416,24 +416,28 @@ def_bool n config DYNAMIC_FTRACE - bool "enable/disable ftrace tracepoints dynamically" + bool "enable/disable function tracing dynamically" depends on FUNCTION_TRACER depends on HAVE_DYNAMIC_FTRACE default y help - This option will modify all the calls to ftrace dynamically - (will patch them out of the binary image and replace them - with a No-Op instruction) as they are called. A table is - created to dynamically enable them again. + This option will modify all the calls to function tracing + dynamically (will patch them out of the binary image and + replace them with a No-Op instruction) on boot up. During + compile time, a table is made of all the locations that ftrace + can function trace, and this table is linked into the kernel + image. When this is enabled, functions can be individually + enabled, and the functions not enabled will not affect + performance of the system. + + See the files in /sys/kernel/debug/tracing: + available_filter_functions + set_ftrace_filter + set_ftrace_notrace This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but otherwise has native performance as long as no tracing is active. - The changes to the code are done by a kernel thread that - wakes up once a second and checks to see if any ftrace calls - were made. If so, it runs stop_machine (stops all CPUS) - and modifies the code to jump over the call to ftrace. - config FUNCTION_PROFILER bool "Kernel function profiler" depends on FUNCTION_TRACER --- linux-ppc-3.8.0.orig/kernel/time/tick-broadcast.c +++ linux-ppc-3.8.0/kernel/time/tick-broadcast.c @@ -66,12 +66,17 @@ */ int tick_check_broadcast_device(struct clock_event_device *dev) { - if ((tick_broadcast_device.evtdev && + struct clock_event_device *cur = tick_broadcast_device.evtdev; + + if ((dev->features & CLOCK_EVT_FEAT_DUMMY) || + (tick_broadcast_device.evtdev && tick_broadcast_device.evtdev->rating >= dev->rating) || (dev->features & CLOCK_EVT_FEAT_C3STOP)) return 0; clockevents_exchange_device(tick_broadcast_device.evtdev, dev); + if (cur) + cur->event_handler = clockevents_handle_noop; tick_broadcast_device.evtdev = dev; if (!cpumask_empty(tick_get_broadcast_mask())) tick_broadcast_start_periodic(dev); @@ -395,7 +400,15 @@ if (cpumask_test_cpu(cpu, to_cpumask(tick_broadcast_oneshot_mask))) { struct tick_device *td = &per_cpu(tick_cpu_device, cpu); - clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_ONESHOT); + /* + * We might be in the middle of switching over from + * periodic to oneshot. If the CPU has not yet + * switched over, leave the device alone. + */ + if (td->mode == TICKDEV_MODE_ONESHOT) { + clockevents_set_mode(td->evtdev, + CLOCK_EVT_MODE_ONESHOT); + } } } --- linux-ppc-3.8.0.orig/kernel/time/tick-common.c +++ linux-ppc-3.8.0/kernel/time/tick-common.c @@ -323,6 +323,7 @@ */ dev->mode = CLOCK_EVT_MODE_UNUSED; clockevents_exchange_device(dev, NULL); + dev->event_handler = clockevents_handle_noop; td->evtdev = NULL; } raw_spin_unlock_irqrestore(&tick_device_lock, flags); --- linux-ppc-3.8.0.orig/kernel/time/tick-sched.c +++ linux-ppc-3.8.0/kernel/time/tick-sched.c @@ -564,14 +564,17 @@ */ void tick_nohz_irq_exit(void) { + unsigned long flags; struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched); if (!ts->inidle) return; - /* Cancel the timer because CPU already waken up from the C-states*/ - menu_hrtimer_cancel(); + local_irq_save(flags); + __tick_nohz_idle_enter(ts); + + local_irq_restore(flags); } /** @@ -666,8 +669,6 @@ ts->inidle = 0; - /* Cancel the timer because CPU already waken up from the C-states*/ - menu_hrtimer_cancel(); if (ts->idle_active || ts->tick_stopped) now = ktime_get(); @@ -898,7 +899,7 @@ hrtimer_cancel(&ts->sched_timer); # endif - ts->nohz_mode = NOHZ_MODE_INACTIVE; + memset(ts, 0, sizeof(*ts)); } #endif --- linux-ppc-3.8.0.orig/kernel/power/autosleep.c +++ linux-ppc-3.8.0/kernel/power/autosleep.c @@ -32,7 +32,8 @@ mutex_lock(&autosleep_lock); - if (!pm_save_wakeup_count(initial_count)) { + if (!pm_save_wakeup_count(initial_count) || + system_state != SYSTEM_RUNNING) { mutex_unlock(&autosleep_lock); goto out; } --- linux-ppc-3.8.0.orig/include/uapi/linux/if_pppox.h +++ linux-ppc-3.8.0/include/uapi/linux/if_pppox.h @@ -135,11 +135,11 @@ struct pppoe_hdr { #if defined(__LITTLE_ENDIAN_BITFIELD) - __u8 ver : 4; __u8 type : 4; + __u8 ver : 4; #elif defined(__BIG_ENDIAN_BITFIELD) - __u8 type : 4; __u8 ver : 4; + __u8 type : 4; #else #error "Please fix " #endif --- linux-ppc-3.8.0.orig/include/uapi/linux/virtio_console.h +++ linux-ppc-3.8.0/include/uapi/linux/virtio_console.h @@ -39,7 +39,7 @@ #define VIRTIO_CONSOLE_F_SIZE 0 /* Does host provide console size? */ #define VIRTIO_CONSOLE_F_MULTIPORT 1 /* Does host provide multiple ports? */ -#define VIRTIO_CONSOLE_BAD_ID (~(u32)0) +#define VIRTIO_CONSOLE_BAD_ID (~(__u32)0) struct virtio_console_config { /* colums of the screens */ --- linux-ppc-3.8.0.orig/include/uapi/linux/packet_diag.h +++ linux-ppc-3.8.0/include/uapi/linux/packet_diag.h @@ -33,9 +33,11 @@ PACKET_DIAG_TX_RING, PACKET_DIAG_FANOUT, - PACKET_DIAG_MAX, + __PACKET_DIAG_MAX, }; +#define PACKET_DIAG_MAX (__PACKET_DIAG_MAX - 1) + struct packet_diag_info { __u32 pdi_index; __u32 pdi_version; --- linux-ppc-3.8.0.orig/include/uapi/linux/if_cablemodem.h +++ linux-ppc-3.8.0/include/uapi/linux/if_cablemodem.h @@ -12,11 +12,11 @@ */ /* some useful defines for sb1000.c e cmconfig.c - fv */ -#define SIOCGCMSTATS SIOCDEVPRIVATE+0 /* get cable modem stats */ -#define SIOCGCMFIRMWARE SIOCDEVPRIVATE+1 /* get cm firmware version */ -#define SIOCGCMFREQUENCY SIOCDEVPRIVATE+2 /* get cable modem frequency */ -#define SIOCSCMFREQUENCY SIOCDEVPRIVATE+3 /* set cable modem frequency */ -#define SIOCGCMPIDS SIOCDEVPRIVATE+4 /* get cable modem PIDs */ -#define SIOCSCMPIDS SIOCDEVPRIVATE+5 /* set cable modem PIDs */ +#define SIOCGCMSTATS (SIOCDEVPRIVATE+0) /* get cable modem stats */ +#define SIOCGCMFIRMWARE (SIOCDEVPRIVATE+1) /* get cm firmware version */ +#define SIOCGCMFREQUENCY (SIOCDEVPRIVATE+2) /* get cable modem frequency */ +#define SIOCSCMFREQUENCY (SIOCDEVPRIVATE+3) /* set cable modem frequency */ +#define SIOCGCMPIDS (SIOCDEVPRIVATE+4) /* get cable modem PIDs */ +#define SIOCSCMPIDS (SIOCDEVPRIVATE+5) /* set cable modem PIDs */ #endif --- linux-ppc-3.8.0.orig/include/uapi/linux/cdrom.h +++ linux-ppc-3.8.0/include/uapi/linux/cdrom.h @@ -908,5 +908,39 @@ __be16 desc_length; }; +/* removable medium feature descriptor */ +struct rm_feature_desc { + __be16 feature_code; +#if defined(__BIG_ENDIAN_BITFIELD) + __u8 reserved1:2; + __u8 feature_version:4; + __u8 persistent:1; + __u8 curr:1; +#elif defined(__LITTLE_ENDIAN_BITFIELD) + __u8 curr:1; + __u8 persistent:1; + __u8 feature_version:4; + __u8 reserved1:2; +#endif + __u8 add_len; +#if defined(__BIG_ENDIAN_BITFIELD) + __u8 mech_type:3; + __u8 load:1; + __u8 eject:1; + __u8 pvnt_jmpr:1; + __u8 dbml:1; + __u8 lock:1; +#elif defined(__LITTLE_ENDIAN_BITFIELD) + __u8 lock:1; + __u8 dbml:1; + __u8 pvnt_jmpr:1; + __u8 eject:1; + __u8 load:1; + __u8 mech_type:3; +#endif + __u8 reserved2; + __u8 reserved3; + __u8 reserved4; +}; #endif /* _UAPI_LINUX_CDROM_H */ --- linux-ppc-3.8.0.orig/include/uapi/linux/serial_core.h +++ linux-ppc-3.8.0/include/uapi/linux/serial_core.h @@ -50,8 +50,11 @@ #define PORT_LPC3220 22 /* NXP LPC32xx SoC "Standard" UART */ #define PORT_8250_CIR 23 /* CIR infrared port, has its own driver */ #define PORT_XR17V35X 24 /* Exar XR17V35x UARTs */ -#define PORT_BRCM_TRUMANAGE 24 -#define PORT_MAX_8250 25 /* max port ID */ +#define PORT_BRCM_TRUMANAGE 25 +#define PORT_ALTR_16550_F32 26 /* Altera 16550 UART with 32 FIFOs */ +#define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */ +#define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */ +#define PORT_MAX_8250 28 /* max port ID */ /* * ARM specific type numbers. These are not currently guaranteed --- linux-ppc-3.8.0.orig/include/uapi/linux/unix_diag.h +++ linux-ppc-3.8.0/include/uapi/linux/unix_diag.h @@ -39,9 +39,11 @@ UNIX_DIAG_MEMINFO, UNIX_DIAG_SHUTDOWN, - UNIX_DIAG_MAX, + __UNIX_DIAG_MAX, }; +#define UNIX_DIAG_MAX (__UNIX_DIAG_MAX - 1) + struct unix_diag_vfs { __u32 udiag_vfs_ino; __u32 udiag_vfs_dev; --- linux-ppc-3.8.0.orig/include/uapi/linux/virtio_net.h +++ linux-ppc-3.8.0/include/uapi/linux/virtio_net.h @@ -185,7 +185,7 @@ * specified. */ struct virtio_net_ctrl_mq { - u16 virtqueue_pairs; + __u16 virtqueue_pairs; }; #define VIRTIO_NET_CTRL_MQ 4 --- linux-ppc-3.8.0.orig/include/uapi/linux/firewire-cdev.h +++ linux-ppc-3.8.0/include/uapi/linux/firewire-cdev.h @@ -215,8 +215,8 @@ * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets * without the interrupt bit set that the kernel's internal buffer for @header - * is about to overflow. (In the last case, kernels with ABI version < 5 drop - * header data up to the next interrupt packet.) + * is about to overflow. (In the last case, ABI versions < 5 drop header data + * up to the next interrupt packet.) * * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): * --- linux-ppc-3.8.0.orig/include/uapi/linux/usb/audio.h +++ linux-ppc-3.8.0/include/uapi/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-ppc-3.8.0.orig/include/uapi/asm-generic/signal.h +++ linux-ppc-3.8.0/include/uapi/asm-generic/signal.h @@ -93,6 +93,10 @@ #include +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif + struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; --- linux-ppc-3.8.0.orig/include/scsi/scsi_device.h +++ linux-ppc-3.8.0/include/scsi/scsi_device.h @@ -157,10 +157,11 @@ unsigned no_read_capacity_16:1; /* Avoid READ_CAPACITY_16 cmds */ unsigned try_rc_10_first:1; /* Try READ_CAPACACITY_10 first */ unsigned is_visible:1; /* is the device visible in sysfs */ - unsigned can_power_off:1; /* Device supports runtime power off */ unsigned wce_default_on:1; /* Cache is ON by default */ unsigned no_dif:1; /* T10 PI (DIF) should be disabled */ + atomic_t disk_events_disable_depth; /* disable depth for disk events */ + DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */ struct list_head event_list; /* asserted events */ struct work_struct event_work; @@ -397,6 +398,8 @@ int data_direction, void *buffer, unsigned bufflen, struct scsi_sense_hdr *, int timeout, int retries, int *resid); +extern void sdev_disable_disk_events(struct scsi_device *sdev); +extern void sdev_enable_disk_events(struct scsi_device *sdev); #ifdef CONFIG_PM_RUNTIME extern int scsi_autopm_get_device(struct scsi_device *); --- linux-ppc-3.8.0.orig/include/video/atmel_lcdc.h +++ linux-ppc-3.8.0/include/video/atmel_lcdc.h @@ -62,6 +62,7 @@ void (*atmel_lcdfb_power_control)(int on); struct fb_monspecs *default_monspecs; u32 pseudo_palette[16]; + bool have_intensity_bit; }; #define ATMEL_LCDC_DMABADDR1 0x00 --- linux-ppc-3.8.0.orig/include/xen/interface/physdev.h +++ linux-ppc-3.8.0/include/xen/interface/physdev.h @@ -251,6 +251,12 @@ #define PHYSDEVOP_pci_device_remove 26 #define PHYSDEVOP_restore_msi_ext 27 +/* + * Dom0 should use these two to announce MMIO resources assigned to + * MSI-X capable devices won't (prepare) or may (release) change. + */ +#define PHYSDEVOP_prepare_msix 30 +#define PHYSDEVOP_release_msix 31 struct physdev_pci_device { /* IN */ uint16_t seg; --- linux-ppc-3.8.0.orig/include/xen/interface/io/blkif.h +++ linux-ppc-3.8.0/include/xen/interface/io/blkif.h @@ -138,11 +138,21 @@ uint8_t _pad3; } __attribute__((__packed__)); +struct blkif_request_other { + uint8_t _pad1; + blkif_vdev_t _pad2; /* only for read/write requests */ +#ifdef CONFIG_X86_64 + uint32_t _pad3; /* offsetof(blkif_req..,u.other.id)==8*/ +#endif + uint64_t id; /* private guest value, echoed in resp */ +} __attribute__((__packed__)); + struct blkif_request { uint8_t operation; /* BLKIF_OP_??? */ union { struct blkif_request_rw rw; struct blkif_request_discard discard; + struct blkif_request_other other; } u; } __attribute__((__packed__)); --- linux-ppc-3.8.0.orig/include/xen/interface/io/netif.h +++ linux-ppc-3.8.0/include/xen/interface/io/netif.h @@ -13,6 +13,24 @@ #include /* + * Older implementation of Xen network frontend / backend has an + * implicit dependency on the MAX_SKB_FRAGS as the maximum number of + * ring slots a skb can use. Netfront / netback may not work as + * expected when frontend and backend have different MAX_SKB_FRAGS. + * + * A better approach is to add mechanism for netfront / netback to + * negotiate this value. However we cannot fix all possible + * frontends, so we need to define a value which states the minimum + * slots backend must support. + * + * The minimum value derives from older Linux kernel's MAX_SKB_FRAGS + * (18), which is proved to work with most frontends. Any new backend + * which doesn't negotiate with frontend should expect frontend to + * send a valid packet using slots up to this value. + */ +#define XEN_NETIF_NR_SLOTS_MIN 18 + +/* * Notifications after enqueuing any type of message should be conditional on * the appropriate req_event or rsp_event field in the shared ring. * If the client sends notification for rx requests then it should specify @@ -47,6 +65,7 @@ #define _XEN_NETTXF_extra_info (3) #define XEN_NETTXF_extra_info (1U<<_XEN_NETTXF_extra_info) +#define XEN_NETIF_MAX_TX_SIZE 0xFFFF struct xen_netif_tx_request { grant_ref_t gref; /* Reference to buffer page */ uint16_t offset; /* Offset within buffer page */ --- linux-ppc-3.8.0.orig/include/net/icmp.h +++ linux-ppc-3.8.0/include/net/icmp.h @@ -41,6 +41,7 @@ extern void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info); extern int icmp_rcv(struct sk_buff *skb); +extern void icmp_err(struct sk_buff *, u32 info); extern int icmp_init(void); extern void icmp_out_count(struct net *net, unsigned char type); --- linux-ppc-3.8.0.orig/include/net/inet_frag.h +++ linux-ppc-3.8.0/include/net/inet_frag.h @@ -35,6 +35,13 @@ #define INETFRAGS_HASHSZ 64 +/* averaged: + * max_depth = default ipfrag_high_thresh / INETFRAGS_HASHSZ / + * rounded up (SKB_TRUELEN(0) + sizeof(struct ipq or + * struct frag_queue)) + */ +#define INETFRAGS_MAXDEPTH 128 + struct inet_frags { struct hlist_head hash[INETFRAGS_HASHSZ]; rwlock_t lock; @@ -65,6 +72,8 @@ struct inet_frag_queue *inet_frag_find(struct netns_frags *nf, struct inet_frags *f, void *key, unsigned int hash) __releases(&f->lock); +void inet_frag_maybe_warn_overflow(struct inet_frag_queue *q, + const char *prefix); static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f) { --- linux-ppc-3.8.0.orig/include/net/dst.h +++ linux-ppc-3.8.0/include/net/dst.h @@ -36,13 +36,9 @@ struct net_device *dev; struct dst_ops *ops; unsigned long _metrics; - union { - unsigned long expires; - /* point to where the dst_entry copied from */ - struct dst_entry *from; - }; + unsigned long expires; struct dst_entry *path; - void *__pad0; + struct dst_entry *from; #ifdef CONFIG_XFRM struct xfrm_state *xfrm; #else --- linux-ppc-3.8.0.orig/include/net/sock.h +++ linux-ppc-3.8.0/include/net/sock.h @@ -862,6 +862,18 @@ struct raw_hashinfo; struct module; +/* + * caches using SLAB_DESTROY_BY_RCU should let .next pointer from nulls nodes + * un-modified. Special care is taken when initializing object to zero. + */ +static inline void sk_prot_clear_nulls(struct sock *sk, int size) +{ + if (offsetof(struct sock, sk_node.next) != 0) + memset(sk, 0, offsetof(struct sock, sk_node.next)); + memset(&sk->sk_node.pprev, 0, + size - offsetof(struct sock, sk_node.pprev)); +} + /* Networking protocol blocks we attach to sockets. * socket layer -> transport layer interface * transport -> network interface is defined by struct inet_proto @@ -1037,7 +1049,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-ppc-3.8.0.orig/include/net/addrconf.h +++ linux-ppc-3.8.0/include/net/addrconf.h @@ -61,7 +61,7 @@ extern int ipv6_chk_addr(struct net *net, const struct in6_addr *addr, - struct net_device *dev, + const struct net_device *dev, int strict); #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) @@ -82,6 +82,9 @@ const struct in6_addr *daddr, unsigned int srcprefs, struct in6_addr *saddr); +extern int __ipv6_get_lladdr(struct inet6_dev *idev, + struct in6_addr *addr, + unsigned char banned_flags); extern int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr, unsigned char banned_flags); --- linux-ppc-3.8.0.orig/include/net/scm.h +++ linux-ppc-3.8.0/include/net/scm.h @@ -56,8 +56,8 @@ scm->pid = get_pid(pid); scm->cred = cred ? get_cred(cred) : NULL; scm->creds.pid = pid_vnr(pid); - scm->creds.uid = cred ? cred->euid : INVALID_UID; - scm->creds.gid = cred ? cred->egid : INVALID_GID; + scm->creds.uid = cred ? cred->uid : INVALID_UID; + scm->creds.gid = cred ? cred->gid : INVALID_GID; } static __inline__ void scm_destroy_cred(struct scm_cookie *scm) --- linux-ppc-3.8.0.orig/include/net/inet_sock.h +++ linux-ppc-3.8.0/include/net/inet_sock.h @@ -203,6 +203,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-ppc-3.8.0.orig/include/net/ipv6.h +++ linux-ppc-3.8.0/include/net/ipv6.h @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -473,6 +474,17 @@ #endif } +/* 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-ppc-3.8.0.orig/include/net/udp.h +++ linux-ppc-3.8.0/include/net/udp.h @@ -181,6 +181,7 @@ extern void udp_err(struct sk_buff *, u32); extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len); +extern int udp_push_pending_frames(struct sock *sk); extern void udp_flush_pending_frames(struct sock *sk); extern int udp_rcv(struct sk_buff *skb); extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); --- linux-ppc-3.8.0.orig/include/net/tcp.h +++ linux-ppc-3.8.0/include/net/tcp.h @@ -1045,6 +1045,7 @@ if (sysctl_tcp_low_latency || !tp->ucopy.task) return false; + skb_dst_force(skb); __skb_queue_tail(&tp->ucopy.prequeue, skb); tp->ucopy.memory += skb->truesize; if (tp->ucopy.memory > sk->sk_rcvbuf) { --- linux-ppc-3.8.0.orig/include/net/ndisc.h +++ linux-ppc-3.8.0/include/net/ndisc.h @@ -119,7 +119,7 @@ * if RFC 3831 IPv6-over-Fibre Channel is ever implemented it may * also need a pad of 2. */ -static int ndisc_addr_option_pad(unsigned short type) +static inline int ndisc_addr_option_pad(unsigned short type) { switch (type) { case ARPHRD_INFINIBAND: return 2; --- linux-ppc-3.8.0.orig/include/net/inet6_hashtables.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/net/ip_fib.h +++ linux-ppc-3.8.0/include/net/ip_fib.h @@ -152,18 +152,16 @@ }; #ifdef CONFIG_IP_ROUTE_MULTIPATH - #define FIB_RES_NH(res) ((res).fi->fib_nh[(res).nh_sel]) - -#define FIB_TABLE_HASHSZ 2 - #else /* CONFIG_IP_ROUTE_MULTIPATH */ - #define FIB_RES_NH(res) ((res).fi->fib_nh[0]) +#endif /* CONFIG_IP_ROUTE_MULTIPATH */ +#ifdef CONFIG_IP_MULTIPLE_TABLES #define FIB_TABLE_HASHSZ 256 - -#endif /* CONFIG_IP_ROUTE_MULTIPATH */ +#else +#define FIB_TABLE_HASHSZ 2 +#endif extern __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh); --- linux-ppc-3.8.0.orig/include/net/ip6_fib.h +++ linux-ppc-3.8.0/include/net/ip6_fib.h @@ -166,50 +166,35 @@ static inline void rt6_clean_expires(struct rt6_info *rt) { - if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) - dst_release(rt->dst.from); - rt->rt6i_flags &= ~RTF_EXPIRES; - rt->dst.from = NULL; } static inline void rt6_set_expires(struct rt6_info *rt, unsigned long expires) { - if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) - dst_release(rt->dst.from); - - rt->rt6i_flags |= RTF_EXPIRES; rt->dst.expires = expires; + rt->rt6i_flags |= RTF_EXPIRES; } -static inline void rt6_update_expires(struct rt6_info *rt, int timeout) +static inline void rt6_update_expires(struct rt6_info *rt0, int timeout) { - if (!(rt->rt6i_flags & RTF_EXPIRES)) { - if (rt->dst.from) - dst_release(rt->dst.from); - /* dst_set_expires relies on expires == 0 - * if it has not been set previously. - */ - rt->dst.expires = 0; - } + struct rt6_info *rt; - dst_set_expires(&rt->dst, timeout); - rt->rt6i_flags |= RTF_EXPIRES; + for (rt = rt0; rt && !(rt->rt6i_flags & RTF_EXPIRES); + rt = (struct rt6_info *)rt->dst.from); + if (rt && rt != rt0) + rt0->dst.expires = rt->dst.expires; + + dst_set_expires(&rt0->dst, timeout); + rt0->rt6i_flags |= RTF_EXPIRES; } static inline void rt6_set_from(struct rt6_info *rt, struct rt6_info *from) { struct dst_entry *new = (struct dst_entry *) from; - if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) { - if (new == rt->dst.from) - return; - dst_release(rt->dst.from); - } - rt->rt6i_flags &= ~RTF_EXPIRES; - rt->dst.from = new; dst_hold(new); + rt->dst.from = new; } static inline void ip6_rt_put(struct rt6_info *rt) --- linux-ppc-3.8.0.orig/include/net/nfc/hci.h +++ linux-ppc-3.8.0/include/net/nfc/hci.h @@ -57,8 +57,8 @@ int (*tm_send)(struct nfc_hci_dev *hdev, struct sk_buff *skb); int (*check_presence)(struct nfc_hci_dev *hdev, struct nfc_target *target); - void (*event_received)(struct nfc_hci_dev *hdev, u8 gate, u8 event, - struct sk_buff *skb); + int (*event_received)(struct nfc_hci_dev *hdev, u8 gate, u8 event, + struct sk_buff *skb); }; /* Pipes */ @@ -82,11 +82,23 @@ #define NFC_HCI_MAX_GATES 256 +/* + * These values can be specified by a driver to indicate it requires some + * adaptation of the HCI standard. + * + * NFC_HCI_QUIRK_SHORT_CLEAR - send HCI_ADM_CLEAR_ALL_PIPE cmd with no params + */ +enum { + NFC_HCI_QUIRK_SHORT_CLEAR = 0, +}; + struct nfc_hci_dev { struct nfc_dev *ndev; u32 max_data_link_payload; + bool shutting_down; + struct mutex msg_tx_mutex; struct list_head msg_tx_queue; @@ -129,11 +141,14 @@ u8 *gb; size_t gb_len; + + unsigned long quirks; }; /* hci device allocation */ struct nfc_hci_dev *nfc_hci_allocate_device(struct nfc_hci_ops *ops, struct nfc_hci_init_data *init_data, + unsigned long quirks, u32 protocols, const char *llc_name, int tx_headroom, --- linux-ppc-3.8.0.orig/include/net/nfc/nfc.h +++ linux-ppc-3.8.0/include/net/nfc/nfc.h @@ -115,6 +115,8 @@ struct timer_list check_pres_timer; struct work_struct check_pres_work; + bool shutting_down; + struct nfc_ops *ops; }; #define to_nfc_dev(_dev) container_of(_dev, struct nfc_dev, dev) --- linux-ppc-3.8.0.orig/include/net/bluetooth/hci_core.h +++ linux-ppc-3.8.0/include/net/bluetooth/hci_core.h @@ -288,6 +288,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); }; #define HCI_PHY_HANDLE(handle) (handle & 0xff) @@ -1060,6 +1061,7 @@ int mgmt_control(struct sock *sk, struct msghdr *msg, size_t len); int mgmt_index_added(struct hci_dev *hdev); int mgmt_index_removed(struct hci_dev *hdev); +int mgmt_set_powered_failed(struct hci_dev *hdev, int err); int mgmt_powered(struct hci_dev *hdev, u8 powered); int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable); int mgmt_connectable(struct hci_dev *hdev, u8 connectable); --- linux-ppc-3.8.0.orig/include/net/bluetooth/mgmt.h +++ linux-ppc-3.8.0/include/net/bluetooth/mgmt.h @@ -42,6 +42,7 @@ #define MGMT_STATUS_NOT_POWERED 0x0f #define MGMT_STATUS_CANCELLED 0x10 #define MGMT_STATUS_INVALID_INDEX 0x11 +#define MGMT_STATUS_RFKILLED 0x12 struct mgmt_hdr { __le16 opcode; --- linux-ppc-3.8.0.orig/include/linux/dynamic_debug.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/linux/syslog.h +++ linux-ppc-3.8.0/include/linux/syslog.h @@ -44,8 +44,8 @@ /* Return size of the log buffer */ #define SYSLOG_ACTION_SIZE_BUFFER 10 -#define SYSLOG_FROM_CALL 0 -#define SYSLOG_FROM_FILE 1 +#define SYSLOG_FROM_READER 0 +#define SYSLOG_FROM_PROC 1 int do_syslog(int type, char __user *buf, int count, bool from_file); --- linux-ppc-3.8.0.orig/include/linux/splice.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/linux/fsl_pme.h +++ linux-ppc-3.8.0/include/linux/fsl_pme.h @@ -0,0 +1,795 @@ +/* Copyright 2009-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FSL_PME_H +#define FSL_PME_H + +/* pme_fd_res_status() returns this enum */ +enum pme_status { + pme_status_ok = 0x00, + pme_status_kes_ccl = 0x40, /* KES Confidence Collision Limit */ + pme_status_kes_cme = 0x41, /* KES Confidence Mask Error */ + pme_status_dxe_ire = 0x48, /* DXE Invalid Repeat Error */ + pme_status_dxe_tlse = 0x49, /* DXE Test Line Syntax Error */ + pme_status_dxe_ile = 0x4b, /* DXE Instruction Limit Error */ + pme_status_dxe_pdsrsore = 0x4c, /* DXE PDSR Space Out Range Error */ + pme_status_dxe_soe = 0x4d, /* DXE Stack Overflow Error */ + pme_status_dxe_alse = 0x4e, /* DXE Alternate Link Same Error */ + pme_status_dxe_slse = 0x4f, /* DXE Subsequent Link Same Error */ + pme_status_dxe_slre = 0x50, /* DXE Subsequent Link Reverse Error */ + pme_status_dxe_itlb = 0x51, /* DXE Invalid Test Line Branch */ + pme_status_dxe_cle = 0x52, /* DXE Compare Limit Exceeded */ + pme_status_dxe_mle = 0x53, /* DXE Match Limit Exceeded */ + pme_status_sre_irhbni = 0x59, /* SRE Invalid Reaction Head Block */ + /* Number Instructions */ + pme_status_sre_rl = 0x5a, /* SRE Reaction Limit */ + pme_status_sre_pdsrsore = 0x5b, /* SRE PDSR Space Out Range Error */ + pme_status_sre_score = 0x5c, /* SRE Session Context Out Range Error */ + pme_status_sre_ctore = 0x5d, /* SRE Context Table Out Range Error */ + pme_status_sre_il = 0x5e, /* SRE Instruction Limit */ + pme_status_sre_iij = 0x5f, /* SRE Invalid Instruction Jump */ + pme_status_sre_ise = 0x60, /* SRE Instruction Syntax Error */ + pme_status_pmfa_pmtcce = 0x80, /* PMFA PCTCC Error */ + pme_status_pmfa_fcwe = 0x90, /* PMFA Flow Context Write Command Error */ + pme_status_pmfa_fcre = 0x91, /* PMFA Flow Context Read Command Error */ + pme_status_pmfa_ume = 0x93, /* PMFA Unrecognized Mode Error */ + pme_status_pmfa_uce = 0x94, /* PMFA Unrecognized Command Error */ + pme_status_pmfa_ufe = 0x95, /* PMFA Unrecognized Frame Error */ + pme_status_sre_csmre = 0xc0, /* SRE Context System Memory Read Error */ + pme_status_sre_ismre = 0xc1, /* SRE Instruction System Memory Read */ + /* Error */ + pme_status_dxe_smre = 0xc2, /* DXE System Memory Read Error */ + pme_status_pmfa_pmtccsmre = 0xc4, /* PMFA PMTCC System Memory Read */ + /* Error */ + pme_status_pmfa_csmre = 0xc5, /* PMFA Context System Memory Read */ + /* Error */ + pme_status_pmfa_dsmre = 0xc6, /* PMFA Data System Memory Read Error */ + pme_status_kes_cmecce = 0xd2, /* KES Confidence Memory ECC Error */ + pme_status_kes_2btmecce = 0xd4, /*KES 2-Byte Trigger Memory ECC Error */ + pme_status_kes_vltmecce = 0xd5, /*KES Variable Length Trigger Memory */ + /* ECC Error */ + pme_status_pmfa_cmecce = 0xd7, /* PMFA Confidence Memory ECC Error */ + pme_status_pmfa_2btmecce = 0xd9, /* PMFA 2-Byte Trigger Memory ECC */ + /* Error */ + pme_status_pmfa_vltmecce = 0xda, /* PMFA Variable Length Trigger */ + /* Memory ECC Error */ + pme_status_dxe_iemce = 0xdb, /* DXE Internal Examination Memory */ + /* Collision Error */ + pme_status_dxe_iemecce = 0xdc, /* DXE Internal Examination Memory */ + /* ECC Error */ + pme_status_dxe_icmecce = 0xdd, /* DXE Internal Context Memory ECC */ + /* Error */ + pme_status_sre_ctsmwe = 0xe0, /* SRE Context Table System Memory */ + /* Write Error */ + pme_status_pmfa_pmtccsmwe = 0xe7, /* PMFA PMTCC System Memory Write */ + /* Error */ + pme_status_pmfa_csmwe = 0xe8, /* PMFA Context System Memory Write */ + /* Error */ + pme_status_pmfa_dsmwe = 0xe9, /* PMFA Data System Memory Write Error */ +}; + +/* pme_fd_res_flags() returns these flags */ +#define PME_STATUS_UNRELIABLE 0x80 +#define PME_STATUS_TRUNCATED 0x10 +#define PME_STATUS_MASK 0x90 + +/**************/ +/* USER SPACE */ +/**************/ + +#define PME_IOCTL_MAGIC 'p' + +/* Wrapper for a pointer and size. */ +struct pme_buffer { + void __user *data; + size_t size; +}; + +/***************/ +/* SCAN DEVICE */ +/***************/ +/* The /dev/pme_scan device creates a file-descriptor that uses scheduled FQs + * serviced by PME's datapath portal. This can only be used for scanning. */ +#define PME_DEV_SCAN_NODE "pme_scan" +#define PME_DEV_SCAN_PATH "/dev/" PME_DEV_SCAN_NODE + +/* ioctls for 'scan' device */ +#define PMEIO_SETSCAN _IOW(PME_IOCTL_MAGIC, 0x06, struct pme_scan_params) +#define PMEIO_GETSCAN _IOR(PME_IOCTL_MAGIC, 0x07, struct pme_scan_params) +#define PMEIO_RESETSEQ _IO(PME_IOCTL_MAGIC, 0x08) +#define PMEIO_RESETRES _IO(PME_IOCTL_MAGIC, 0x09) +#define PMEIO_SCAN_W1 _IOW(PME_IOCTL_MAGIC, 0x0a, struct pme_scan_cmd) +#define PMEIO_SCAN_Wn _IOWR(PME_IOCTL_MAGIC, 0x0b, struct pme_scan_cmds) +#define PMEIO_SCAN_R1 _IOR(PME_IOCTL_MAGIC, 0x0c, struct pme_scan_result) +#define PMEIO_SCAN_Rn _IOWR(PME_IOCTL_MAGIC, 0x0d, struct pme_scan_results) +#define PMEIO_SCAN _IOWR(PME_IOCTL_MAGIC, 0x0e, struct pme_scan) +/* The release_bufs ioctl takes as parameter a (void *) */ +#define PMEIO_RELEASE_BUFS _IOW(PME_IOCTL_MAGIC, 0x0f, void *) + +/* Parameters for PMEIO_SETSCAN and PMEIO_GETSCAN ioctl()s. This doesn't cover + * "sequence" fields ('soc' and 'seqnum'), they can only be influenced by flags + * passed to scan operations, or by PMEIO_RESETSEQ ioctl()s. */ +struct pme_scan_params { + __u32 flags; /* PME_SCAN_PARAMS_*** bitmask */ + struct pme_scan_params_residue { + __u8 enable; /* boolean, residue enable */ + __u8 length; /* read-only for GETSCAN, ignored for SETSCAN */ + } residue; + struct pme_scan_params_sre { + __u32 sessionid; /* 27-bit */ + __u8 verbose; /* 0-3 */ + __u8 esee; /* boolean, End Of Sui Event Enable */ + } sre; + struct pme_scan_params_dxe { + __u16 clim; /* compare limit */ + __u16 mlim; /* match limit */ + } dxe; + struct pme_scan_params_pattern { + __u8 set; + __u16 subset; + } pattern; +}; +#define PME_SCAN_PARAMS_RESIDUE 0x00000001 +#define PME_SCAN_PARAMS_SRE 0x00000002 +#define PME_SCAN_PARAMS_DXE 0x00000004 +#define PME_SCAN_PARAMS_PATTERN 0x00000008 + +/* argument to PMEIO_SCAN_W1 ioctl */ +struct pme_scan_cmd { + __u32 flags; /* PME_SCAN_CMD_*** bitmask */ + void *opaque; /* value carried through in the pme_scan_result */ + struct pme_buffer input; + struct pme_buffer output; /* ignored for 'RES_BMAN' output */ +}; + +#define PME_SCAN_CMD_RES_BMAN 0x00000001 /* use Bman for output */ +#define PME_SCAN_CMD_STARTRESET 0x00000002 +#define PME_SCAN_CMD_END 0x00000004 + +/* argument to PMEIO_SCAN_Wn ioctl + * 'num' indicates how many 'cmds' are present on input and is updated on the + * response to indicate how many were sent. */ +struct pme_scan_cmds { + unsigned num; + struct pme_scan_cmd __user *cmds; +}; + +/* argument to PMEIO_SCAN_R1 ioctl. The ioctl doesn't read any of these + * fields, they are only written to. If the output comes from BMAN buffer + * then 'flags' will have PME_SCAN_RESULT_BMAN set. */ +struct pme_scan_result { + __u8 flags; /* PME_SCAN_RESULT_*** bitmask */ + enum pme_status status; + struct pme_buffer output; + void *opaque; /* value carried from the pme_scan_cmd */ +}; +#define PME_SCAN_RESULT_UNRELIABLE PME_STATUS_UNRELIABLE +#define PME_SCAN_RESULT_TRUNCATED PME_STATUS_TRUNCATED +#define PME_SCAN_RESULT_BMAN 0x01 + +/* argument to PMEIO_SCAN_Rn ioctl. + * 'num' indicates how many 'cmds' are present on input and is updated on the + * response to indicate how many were retrieved. */ +struct pme_scan_results { + unsigned num; + struct pme_scan_result *results; +}; + +/* argument to PMEIO_SCANWR ioctl. */ +struct pme_scan { + struct pme_scan_cmd cmd; + struct pme_scan_result result; +}; + +/*************/ +/* DB DEVICE */ +/*************/ +/* The /dev/pme_db device creates a file-descriptor that uses parked FQs + * serviced by the PME's EFQC (Exclusive Frame Queue Control) mechanism. This is + * usually for PMTCC commands for programming the database, though can also be + * used for high-priority scanning. This device would typically require root + * perms. The EFQC exclusivity is reference-counted, so by default is asserted + * on-demand and released when processing quiesces for the context, but + * exclusivity can be maintained across inter-frame gaps using the INC and DEC + * ioctls, which provide supplementary increments and decrements of the + * reference count. */ +#define PME_DEV_DB_NODE "pme_db" +#define PME_DEV_DB_PATH "/dev/" PME_DEV_DB_NODE + +/* ioctls for 'db' device */ +#define PMEIO_EXL_INC _IO(PME_IOCTL_MAGIC, 0x00) +#define PMEIO_EXL_DEC _IO(PME_IOCTL_MAGIC, 0x01) +#define PMEIO_EXL_GET _IOR(PME_IOCTL_MAGIC, 0x02, int) +#define PMEIO_PMTCC _IOWR(PME_IOCTL_MAGIC, 0x03, struct pme_db) +#define PMEIO_SRE_RESET _IOR(PME_IOCTL_MAGIC, 0x04, struct pme_db_sre_reset) +#define PMEIO_NOP _IO(PME_IOCTL_MAGIC, 0x05) + +/* Database structures */ +#define PME_DB_RESULT_UNRELIABLE PME_STATUS_UNRELIABLE +#define PME_DB_RESULT_TRUNCATED PME_STATUS_TRUNCATED + +struct pme_db { + struct pme_buffer input; + struct pme_buffer output; + __u8 flags; /* PME_DB_RESULT_*** bitmask */ + enum pme_status status; +}; + +/* This is related to the sre_reset ioctl */ +#define PME_SRE_RULE_VECTOR_SIZE 8 +struct pme_db_sre_reset { + __u32 rule_vector[PME_SRE_RULE_VECTOR_SIZE]; + __u32 rule_index; + __u16 rule_increment; + __u32 rule_repetitions; + __u16 rule_reset_interval; + __u8 rule_reset_priority; +}; + +/****************/ +/* KERNEL SPACE */ +/****************/ + +#ifdef __KERNEL__ + +#include +#include + +/* "struct pme_hw_flow" represents a flow-context resource for h/w, whereas + * "struct pme_flow" (below) is the s/w type used to provide (and receive) + * parameters to(/from) the h/w resource. */ +struct pme_hw_flow; + +/* "struct pme_hw_residue" represents a residue resource for h/w. */ +struct pme_hw_residue; + +/* This is the pme_flow structure type, used for querying or updating a PME flow + * context */ +struct pme_flow { + u8 sos:1; + u8 __reserved1:1; + u8 srvm:2; + u8 esee:1; + u8 __reserved2:3; + u8 ren:1; + u8 rlen:7; + /* Sequence Number (48-bit) */ + u16 seqnum_hi; + u32 seqnum_lo; + u32 __reserved3; + u32 sessionid:27; + u32 __reserved4:5; + u16 __reserved5; + /* Residue pointer (48-bit), ignored if ren==0 */ + u16 rptr_hi; + u32 rptr_lo; + u16 clim; + u16 mlim; + u32 __reserved6; +} __packed; +static inline u64 pme_flow_seqnum_get64(const struct pme_flow *p) +{ + return ((u64)p->seqnum_hi << 32) | (u64)p->seqnum_lo; +} +static inline u64 pme_flow_rptr_get64(const struct pme_flow *p) +{ + return ((u64)p->rptr_hi << 32) | (u64)p->rptr_lo; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +#define pme_flow_seqnum_set64(p, v) \ + do { \ + struct pme_flow *__p931 = (p); \ + __p931->seqnum_hi = upper_32_bits(v); \ + __p931->seqnum_lo = lower_32_bits(v); \ + } while (0) +#define pme_flow_rptr_set64(p, v) \ + do { \ + struct pme_flow *__p931 = (p); \ + __p931->rptr_hi = upper_32_bits(v); \ + __p931->rptr_lo = lower_32_bits(v); \ + } while (0) + +/* pme_ctx_ctrl_update_flow(), pme_fd_cmd_fcw() and pme_scan_params::flags + * use these; */ +#define PME_CMD_FCW_RES 0x80 /* "Residue": ren, rlen */ +#define PME_CMD_FCW_SEQ 0x40 /* "Sequence": sos, sequnum */ +#define PME_CMD_FCW_SRE 0x20 /* "Stateful Rule": srvm, esee, sessionid */ +#define PME_CMD_FCW_DXE 0x10 /* "Data Examination": clim, mlim */ +#define PME_CMD_FCW_ALL 0xf0 + +/* pme_ctx_scan() and pme_fd_cmd_scan() use these; */ +#define PME_CMD_SCAN_SRVM(n) ((n) << 3) /* n in [0..3] */ +#define PME_CMD_SCAN_FLUSH 0x04 +#define PME_CMD_SCAN_SR 0x02 /* aka "Start of Flow or Reset */ +#define PME_CMD_SCAN_E 0x01 /* aka "End of Flow */ + +/***********************/ +/* low-level functions */ +/***********************/ + +/* (De)Allocate PME hardware resources */ +struct pme_hw_residue *pme_hw_residue_new(void); +void pme_hw_residue_free(struct pme_hw_residue *); +struct pme_hw_flow *pme_hw_flow_new(void); +void pme_hw_flow_free(struct pme_hw_flow *); + +/* Initialise a flow context to known default values */ +void pme_sw_flow_init(struct pme_flow *); + +/* Fill in an "Initialise FQ" management command for a PME input FQ. NB, the + * caller is responsible for setting the following fields, they will not be set + * by the API; + * - initfq->fqid, the frame queue to be initialised + * - initfq->count, should most likely be zero. A count of 0 initialises 1 FQ, + * a count of 1 initialises 2 FQs, etc/ + * The 'qos' parameter indicates which workqueue in the PME channel the + * FQ should schedule to for regular scanning (0..7). If 'flow' is non-NULL the + * FQ is configured for Flow Mode, otherwise it is configured for Direct Action + * Mode. 'bpid' is the buffer pool ID to use when Bman-based output is + * produced, and 'rfqid' is the frame queue ID to enqueue output frames to. + * Following this api, when calling qm_mc_commit(), use QM_MCC_VERB_INITFQ_SCHED + * for regular PMEscanning or QM_MCC_VERB_INITFQ_PARK for exclusive PME + * processing (usually PMTCC).*/ +void pme_initfq(struct qm_mcc_initfq *initfq, struct pme_hw_flow *flow, u8 qos, + u8 rbpid, u32 rfqid); + +/* Given a dequeued frame from PME, return status/flags */ +static inline enum pme_status pme_fd_res_status(const struct qm_fd *fd) +{ + return (enum pme_status)(fd->status >> 24); +} +static inline u8 pme_fd_res_flags(const struct qm_fd *fd) +{ + return (fd->status >> 16) & PME_STATUS_MASK; +} + +/* Fill in a frame descriptor for a NOP command. */ +void pme_fd_cmd_nop(struct qm_fd *fd); + +/* Fill in a frame descriptor for a Flow Context Write command. NB, the caller + * is responsible for setting all the relevant fields in 'flow', only the + * following fields are set by the API; + * - flow->rptr_hi + * - flow->rptr_lo + * The fields in 'flow' are divided into 4 groups, 'flags' indicates which of + * them should be written to the h/w flow context using PME_CMD_FCW_*** defines. + * 'residue' should be non-NULL iff flow->ren is non-zero and PME_CMD_FCW_RES is + * set. */ +void pme_fd_cmd_fcw(struct qm_fd *fd, u8 flags, struct pme_flow *flow, + struct pme_hw_residue *residue); + +/* Fill in a frame descriptor for a Flow Context Read command. */ +void pme_fd_cmd_fcr(struct qm_fd *fd, struct pme_flow *flow); + +/* Modify a frame descriptor for a PMTCC command (only modifies 'cmd' field) */ +void pme_fd_cmd_pmtcc(struct qm_fd *fd); + +/* Modify a frame descriptor for a Scan command (only modifies 'cmd' field). + * 'flags' are chosen from PME_CMD_SCAN_*** symbols. NB, the use of the + * intermediary representation (and PME_SCAN_ARGS) improves performance - ie. + * if the scan params are essentially constant, this compacts them for storage + * into the same format used in the interface to h/w. So it reduces parameter + * passing, stack-use, and encoding time. */ +#define PME_SCAN_ARGS(flags, set, subset) \ +({ \ + u8 __flags461 = (flags); \ + u8 __set461 = (set); \ + u16 __subset461 = (subset); \ + u32 __res461 = ((u32)__flags461 << 24) | \ + ((u32)__set461 << 16) | \ + (u32)__subset461; \ + __res461; \ +}) +void pme_fd_cmd_scan(struct qm_fd *fd, u32 args); + +/* convert pointer to physical address for use by PME */ +dma_addr_t pme_map(void *ptr); +int pme_map_error(dma_addr_t dma_addr); + +enum pme_cmd_type { + pme_cmd_nop = 0x7, + pme_cmd_flow_read = 0x5, /* aka FCR */ + pme_cmd_flow_write = 0x4, /* aka FCW */ + pme_cmd_pmtcc = 0x1, + pme_cmd_scan = 0 +}; + +/************************/ +/* high-level functions */ +/************************/ + +/* predeclaration of a private structure" */ +struct pme_ctx; +struct pme_nostash; + +/* Calls to pme_ctx_scan() and pme_ctx_pmtcc() provide these, and they are + * provided back in the completion callback. You can embed this within a larger + * structure in order to maintain per-command data of your own. The fields are + * owned by the driver until the callback is invoked, so for example do not link + * this token into a list while the command is in-flight! */ +struct pme_ctx_token { + u32 blob[4]; + struct list_head node; + enum pme_cmd_type cmd_type:8; + u8 is_disable_flush; +}; + +struct pme_ctx_ctrl_token { + void (*cb)(struct pme_ctx *, const struct qm_fd *, + struct pme_ctx_ctrl_token *); + void (*ern_cb)(struct pme_ctx *, const struct qm_mr_entry *, + struct pme_ctx_ctrl_token *); + /* don't touch the rest */ + struct pme_hw_flow *internal_flow_ptr; + struct pme_flow *usr_flow_ptr; + struct pme_ctx_token base_token; +}; + +/* Scan results invoke a user-provided callback of this type */ +typedef void (*pme_scan_cb)(struct pme_ctx *, const struct qm_fd *, + struct pme_ctx_token *); +/* Enqueue rejections may happen before order-restoration or after (eg. if due + * to congestion or tail-drop). Use * 'rc' code of the 'mr_entry' to + * determine. */ +typedef void (*pme_scan_ern_cb)(struct pme_ctx *, const struct qm_mr_entry *, + struct pme_ctx_token *); + +/* PME "association" - ie. connects two frame-queues, with or without a PME flow + * (if not, direct action mode), and manages mux/demux of scans and flow-context + * updates. To allow state used by your callback to be stashed, as well as + * optimising the PME driver and the Qman driver beneath it, embed this + * structure as the first field in your own context structure. */ +struct pme_ctx { + struct qman_fq fq; + /* IMPORTANT: Set (only) these two fields prior to calling * + * pme_ctx_init(). 'ern_cb' can be NULL if you know you will not + * receive enqueue rejections. */ + pme_scan_cb cb; + pme_scan_ern_cb ern_cb; + /* These fields should not be manipulated directly. Also the structure + * may change and/or grow, so avoid making any alignment or size + * assumptions. */ + atomic_t refs; + volatile u32 flags; + spinlock_t lock; + wait_queue_head_t queue; + struct list_head tokens; + /* TODO: the following "slow-path" values should be bundled into a + * secondary structure so that sizeof(struct pme_ctx) is minimised (for + * stashing of caller-side fast-path state). */ + struct pme_hw_flow *hw_flow; + struct pme_hw_residue *hw_residue; + struct qm_fqd_stashing stashing; + struct qm_fd update_fd; + struct pme_nostash *us_data; +}; + +/* Flags for pme_ctx_init() */ +#define PME_CTX_FLAG_LOCKED 0x00000001 /* use QMAN_FQ_FLAG_LOCKED */ +#define PME_CTX_FLAG_EXCLUSIVE 0x00000002 /* unscheduled, exclusive mode */ +#define PME_CTX_FLAG_PMTCC 0x00000004 /* PMTCC rather than scanning */ +#define PME_CTX_FLAG_DIRECT 0x00000008 /* Direct Action mode (not Flow) */ +#define PME_CTX_FLAG_LOCAL 0x00000020 /* Ignore dest, use cpu portal */ + +/* Flags for operations */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT +#define PME_CTX_OP_WAIT QMAN_ENQUEUE_FLAG_WAIT +#define PME_CTX_OP_WAIT_INT QMAN_ENQUEUE_FLAG_WAIT_INT +#endif +#define PME_CTX_OP_RESETRESLEN 0x00000001 /* no en/disable, just set len */ +/* Note that pme_ctx_ctrl_update_flow() also uses PME_CMD_FCW flags, so they + * mustn't conflict with PME_CTX_OP_***. + * Also, the above are defined to match QMAN_ENQUEUE values for optimisation + * purposes (ie. fast-path operations that don't _WAIT will not incur PME->QMAN + * flag conversion overheads). */ + +/** + * pme_ctx_init - Initialise a PME context + * @ctx: the context structure to initialise + * @flags: bit-mask of PME_CTX_FLAG_*** options + * @bpid: buffer pool ID used for any Bman-generated output + * @qosin: workqueue priority on the PME channel (0-7) + * @qosout: workqueue priority on the result channel (0-7) + * @dest: channel to receive results from PME + * @stashing: desired dequeue stashing behaviour + * + * This creates and initialises a PME context, composed of two FQs, an optional + * flow-context, and scheduling parameters for the datapath. The ctx->cb and + * ctx->pool fields must have been initialised prior to calling this api. The + * initialised context is left 'disabled', meaning that the FQ towards PME is + * Parked and no operations are possible. If PME_CTX_INIT_EXCLUSIVE is specified + * in @flags, then the input FQ is not scheduled, otherwise enabling the context + * will schedule the FQ to PME. Exclusive access is only available if the driver + * is built with control functionality and if the operating system has access to + * PME's CCSR map. @qosin applies if EXCLUSIVE is not set, and indicates which + * of the PME's 8 prioritised workqueues the FQ should schedule to. @dest + * indicates the channel that should receive results from PME, unless + * PME_CTX_FLAG_LOCAL is set in which case this parameter is ignored and the + * dedicated portal channel for the current cpu will be used instead. @qosout + * indicates which of the 8 prioritised workqueus the FQ should schedule to on + * the s/w portal. @stashing configures whether FQ context, frame data, and/or + * frame annotation should be stashed into cpu cache when dequeuing output, and + * if so, how many cachelines. For the FQ context part, set the number of + * cachelines to cover; 1. sizeof(struct qman_fq_base), to accelerate only Qman + * driver processing, 2. sizeof(struct pme_ctx), to accelerate Qman and PME + * driver processing, or 3. sizeof(), where is the + * caller's structure of which the pme_ctx is the first member - this will allow + * callbacks to operate on state which has a high probability of already being + * in-cache. + * Returns 0 on success. + */ +int pme_ctx_init(struct pme_ctx *ctx, u32 flags, u32 bpid, u8 qosin, + u8 qosout, enum qm_channel dest, + const struct qm_fqd_stashing *stashing); + +/* Cleanup allocated resources */ +void pme_ctx_finish(struct pme_ctx *ctx); + +/* enable a context */ +int pme_ctx_enable(struct pme_ctx *ctx); + +/* disable a context + * If it returns zero, the context is disabled. + * If it returns +1, the context is disabling and the token's completion + * callback will be invoked when disabling is complete. + * Returns -EBUSY on error, in which case the context remains enabled. + * If the PME_CTX_OP_WAIT flag is specified, it should only fail if + * PME_CTX_OP_WAIT_INT is also specified and a signal is pending. */ +int pme_ctx_disable(struct pme_ctx *ctx, u32 flags, + struct pme_ctx_ctrl_token *token); + +/* query whether a context is disabled. Returns > 0 if the ctx is disabled. */ +int pme_ctx_is_disabled(struct pme_ctx *ctx); + +/* query whether a context is in an error state. */ +int pme_ctx_is_dead(struct pme_ctx *ctx); + +/* A pre-condition for the following APIs is the ctx must be disabled + * dest maybe ignored if the flags parameter indicated LOCAL during the + * corresponding pme_ctx_init. + */ +int pme_ctx_reconfigure_tx(struct pme_ctx *ctx, u32 bpid, u8 qosin); +int pme_ctx_reconfigure_rx(struct pme_ctx *ctx, u8 qosout, + enum qm_channel dest, const struct qm_fqd_stashing *stashing); + +/* Precondition: pme_ctx must be enabled + * if PME_CTX_OP_WAIT is specified, it'll wait (if it has to) to start the ctrl + * command but never waits for it to complete. The callback serves that purpose. + * NB: 'params' may be modified by this call. For instance if + * PME_CTX_OP_RESETRESLEN was specified and residue is enabled, then the + * params->ren will be set to 1 (in order not to disabled residue). + * NB: _update() will overwrite the 'params->rptr_[hi/low]' fields since the + * residue resource is managed by this layer. + */ +int pme_ctx_ctrl_update_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token); +int pme_ctx_ctrl_read_flow(struct pme_ctx *ctx, u32 flags, + struct pme_flow *params, struct pme_ctx_ctrl_token *token); +int pme_ctx_ctrl_nop(struct pme_ctx *ctx, u32 flags, + struct pme_ctx_ctrl_token *token); + +/* if PME_CTX_OP_WAIT is specified, it'll wait (if it has to) to start the scan + * but never waits for it to complete. The scan callback serves that purpose. + * 'fd' is modified by both these calls, but only the 'cmd' field. The 'args' + * parameters is produced by the PME_SCAN_ARGS() inline function. */ +int pme_ctx_scan(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, u32 args, + struct pme_ctx_token *token); +int pme_ctx_pmtcc(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, + struct pme_ctx_token *token); + +/* This is extends pme_ctx_scan() to provide ORP support. 'orp_fq' represents + * the FQD that is used as the ORP and 'seqnum' is the sequence number to use + * for order restoration, these are usually the FQ the frame was dequeued from + * and the sequence number of that dequeued frame (respectively). */ +int pme_ctx_scan_orp(struct pme_ctx *ctx, u32 flags, struct qm_fd *fd, u32 args, + struct pme_ctx_token *token, struct qman_fq *orp_fq, u16 seqnum); + +/* Precondition: must be PME_CTX_FLAG_EXCLUSIVE */ +int pme_ctx_exclusive_inc(struct pme_ctx *ctx, u32 flags); +void pme_ctx_exclusive_dec(struct pme_ctx *ctx); + +/* Does pme have access to ccsr */ +int pme2_have_control(void); + +/**************************/ +/* control-plane only API */ +/**************************/ +#ifdef CONFIG_FSL_PME2_CTRL + +/* Attributes for pme_reg_[set|get]() */ +enum pme_attr { + pme_attr_efqc_int, + pme_attr_sw_db, + pme_attr_dmcr, + pme_attr_smcr, + pme_attr_famcr, + pme_attr_kvlts, + pme_attr_max_chain_length, + pme_attr_pattern_range_counter_idx, + pme_attr_pattern_range_counter_mask, + pme_attr_max_allowed_test_line_per_pattern, + pme_attr_max_pdsr_index, + pme_attr_max_pattern_matches_per_sui, + pme_attr_max_pattern_evaluations_per_sui, + pme_attr_report_length_limit, + pme_attr_end_of_simple_sui_report, + pme_attr_aim, + pme_attr_sre_context_size, + pme_attr_sre_rule_num, + pme_attr_sre_session_ctx_num, + pme_attr_end_of_sui_reaction_ptr, + pme_attr_sre_pscl, + pme_attr_sre_max_block_num, + pme_attr_sre_max_instruction_limit, + pme_attr_sre_max_index_size, + pme_attr_sre_max_offset_ctrl, + pme_attr_src_id, + pme_attr_liodnr, + pme_attr_rev1, + pme_attr_rev2, + pme_attr_srrv0, + pme_attr_srrv1, + pme_attr_srrv2, + pme_attr_srrv3, + pme_attr_srrv4, + pme_attr_srrv5, + pme_attr_srrv6, + pme_attr_srrv7, + pme_attr_srrfi, + pme_attr_srri, + pme_attr_srrwc, + pme_attr_srrr, + pme_attr_trunci, + pme_attr_rbc, + pme_attr_tbt0ecc1ec, + pme_attr_tbt1ecc1ec, + pme_attr_vlt0ecc1ec, + pme_attr_vlt1ecc1ec, + pme_attr_cmecc1ec, + pme_attr_dxcmecc1ec, + pme_attr_dxemecc1ec, + pme_attr_stnib, + pme_attr_stnis, + pme_attr_stnth1, + pme_attr_stnth2, + pme_attr_stnthv, + pme_attr_stnths, + pme_attr_stnch, + pme_attr_stnpm, + pme_attr_stns1m, + pme_attr_stnpmr, + pme_attr_stndsr, + pme_attr_stnesr, + pme_attr_stns1r, + pme_attr_stnob, + pme_attr_mia_byc, + pme_attr_mia_blc, + pme_attr_isr, + pme_attr_tbt0ecc1th, + pme_attr_tbt1ecc1th, + pme_attr_vlt0ecc1th, + pme_attr_vlt1ecc1th, + pme_attr_cmecc1th, + pme_attr_dxcmecc1th, + pme_attr_dxemecc1th, + pme_attr_esr, + pme_attr_ecr0, + pme_attr_ecr1, + pme_attr_pmstat, + pme_attr_pmtr, + pme_attr_pehd, + pme_attr_ecc1bes, + pme_attr_ecc2bes, + pme_attr_eccaddr, + pme_attr_ecccode, + pme_attr_miace, + pme_attr_miacr, + pme_attr_cdcr, + pme_attr_faconf, + pme_attr_ier, + pme_attr_isdr, + pme_attr_iir, + pme_attr_pdsrbah, + pme_attr_pdsrbal, + pme_attr_scbarh, + pme_attr_scbarl, + pme_attr_bsc_first, /* create 64-wide space for bsc */ + pme_attr_bsc_last = pme_attr_bsc_first + 63, +}; + +#define pme_attr_bsc(n) (pme_attr_bsc_first + (n)) +/* Get/set driver attributes */ +int pme_attr_set(enum pme_attr attr, u32 val); +int pme_attr_get(enum pme_attr attr, u32 *val); +int pme_stat_get(enum pme_attr stat, u64 *value, int reset); +#endif /* defined(CONFIG_FSL_PME2_CTRL) */ + +#ifdef CONFIG_COMPAT +#include + +struct compat_pme_buffer { + compat_uptr_t data; + compat_size_t size; +}; + +struct compat_pme_scan_cmd { + __u32 flags; /* PME_SCAN_CMD_*** bitmask */ + compat_uptr_t opaque; + struct compat_pme_buffer input; + struct compat_pme_buffer output; +}; +#define PMEIO_SCAN_W132 _IOW(PME_IOCTL_MAGIC, 0x0a, struct compat_pme_scan_cmd) + +struct compat_pme_scan_cmds { + compat_uint_t num; + compat_uptr_t cmds; +}; +#define PMEIO_SCAN_Wn32 _IOWR(PME_IOCTL_MAGIC, 0x0b, \ + struct compat_pme_scan_cmds) + + +struct compat_pme_scan_result { + __u8 flags; /* PME_SCAN_RESULT_*** bitmask */ + enum pme_status status; + struct compat_pme_buffer output; + compat_uptr_t opaque; /* value carried from the pme_scan_cmd */ +}; +#define PMEIO_SCAN_R132 _IOR(PME_IOCTL_MAGIC, 0x0c, \ + struct compat_pme_scan_result) + + +struct compat_pme_scan_results { + compat_uint_t num; + compat_uptr_t results; +}; +#define PMEIO_SCAN_Rn32 _IOWR(PME_IOCTL_MAGIC, 0x0d, \ + struct compat_pme_scan_results) + + +struct compat_pme_scan { + struct compat_pme_scan_cmd cmd; + struct compat_pme_scan_result result; +}; +#define PMEIO_SCAN32 _IOWR(PME_IOCTL_MAGIC, 0x0e, struct compat_pme_scan) + +struct compat_pme_db { + struct compat_pme_buffer input; + struct compat_pme_buffer output; + __u8 flags; /* PME_DB_RESULT_*** bitmask */ + enum pme_status status; +}; +#define PMEIO_PMTCC32 _IOWR(PME_IOCTL_MAGIC, 0x03, struct compat_pme_db) + +#endif /* CONFIG_COMPAT */ + +#endif /* __KERNEL__ */ + +#endif /* FSL_PME_H */ --- linux-ppc-3.8.0.orig/include/linux/syscalls.h +++ linux-ppc-3.8.0/include/linux/syscalls.h @@ -839,9 +839,14 @@ asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, int, int __user *); #else +#ifdef CONFIG_CLONE_BACKWARDS3 +asmlinkage long sys_clone(unsigned long, unsigned long, int, int __user *, + int __user *, int); +#else asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, int __user *, int); #endif +#endif asmlinkage long sys_execve(const char __user *filename, const char __user *const __user *argv, --- linux-ppc-3.8.0.orig/include/linux/rmap.h +++ linux-ppc-3.8.0/include/linux/rmap.h @@ -123,7 +123,7 @@ down_write(&anon_vma->root->rwsem); } -static inline void anon_vma_unlock(struct anon_vma *anon_vma) +static inline void anon_vma_unlock_write(struct anon_vma *anon_vma) { up_write(&anon_vma->root->rwsem); } --- linux-ppc-3.8.0.orig/include/linux/Kbuild +++ linux-ppc-3.8.0/include/linux/Kbuild @@ -0,0 +1 @@ +header-y += fmd/ --- linux-ppc-3.8.0.orig/include/linux/tick.h +++ linux-ppc-3.8.0/include/linux/tick.h @@ -142,10 +142,4 @@ static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; } # endif /* !NO_HZ */ -# ifdef CONFIG_CPU_IDLE_GOV_MENU -extern void menu_hrtimer_cancel(void); -# else -static inline void menu_hrtimer_cancel(void) {} -# endif /* CONFIG_CPU_IDLE_GOV_MENU */ - #endif --- linux-ppc-3.8.0.orig/include/linux/serial_8250.h +++ linux-ppc-3.8.0/include/linux/serial_8250.h @@ -59,6 +59,8 @@ PLAT8250_DEV_SM501, }; +struct uart_8250_dma; + /* * This should be used by drivers which want to register * their own 8250 ports without registering their own @@ -91,6 +93,8 @@ #define MSR_SAVE_FLAGS UART_MSR_ANY_DELTA unsigned char msr_saved_flags; + struct uart_8250_dma *dma; + /* 8250 specific callbacks */ int (*dl_read)(struct uart_8250_port *); void (*dl_write)(struct uart_8250_port *, int); --- linux-ppc-3.8.0.orig/include/linux/kref.h +++ linux-ppc-3.8.0/include/linux/kref.h @@ -19,6 +19,7 @@ #include #include #include +#include struct kref { atomic_t refcount; @@ -95,6 +96,38 @@ return kref_sub(kref, 1, release); } +/** + * kref_put_spinlock_irqsave - decrement refcount for object. + * @kref: object. + * @release: pointer to the function that will clean up the object when the + * last reference to the object is released. + * This pointer is required, and it is not acceptable to pass kfree + * in as this function. + * @lock: lock to take in release case + * + * Behaves identical to kref_put with one exception. If the reference count + * drops to zero, the lock will be taken atomically wrt dropping the reference + * count. The release function has to call spin_unlock() without _irqrestore. + */ +static inline int kref_put_spinlock_irqsave(struct kref *kref, + void (*release)(struct kref *kref), + spinlock_t *lock) +{ + unsigned long flags; + + WARN_ON(release == NULL); + if (atomic_add_unless(&kref->refcount, -1, 1)) + return 0; + spin_lock_irqsave(lock, flags); + if (atomic_dec_and_test(&kref->refcount)) { + release(kref); + local_irq_restore(flags); + return 1; + } + spin_unlock_irqrestore(lock, flags); + return 0; +} + static inline int kref_put_mutex(struct kref *kref, void (*release)(struct kref *kref), struct mutex *lock) --- linux-ppc-3.8.0.orig/include/linux/firewire.h +++ linux-ppc-3.8.0/include/linux/firewire.h @@ -434,6 +434,7 @@ int type; int channel; int speed; + bool drop_overflow_headers; size_t header_size; union { fw_iso_callback_t sc; --- linux-ppc-3.8.0.orig/include/linux/socket.h +++ linux-ppc-3.8.0/include/linux/socket.h @@ -319,6 +319,9 @@ struct timespec; +/* The __sys_...msg variants allow MSG_CMSG_COMPAT */ +extern long __sys_recvmsg(int fd, struct msghdr __user *msg, unsigned flags); +extern long __sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags); extern int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); extern int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg, --- linux-ppc-3.8.0.orig/include/linux/page-flags.h +++ linux-ppc-3.8.0/include/linux/page-flags.h @@ -109,6 +109,7 @@ #ifdef CONFIG_TRANSPARENT_HUGEPAGE PG_compound_lock, #endif + PG_readaheadunused, /* user oriented readahead as yet unused*/ __NR_PAGEFLAGS, /* Filesystems */ @@ -232,6 +233,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 --- linux-ppc-3.8.0.orig/include/linux/fs.h +++ linux-ppc-3.8.0/include/linux/fs.h @@ -244,6 +244,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 * @@ -1320,6 +1326,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 */ @@ -1573,6 +1584,7 @@ int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode, int *opened); + int (*dentry_open)(struct dentry *, struct file *, const struct cred *); } ____cacheline_aligned; ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, @@ -2005,6 +2017,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 int vfs_open(const struct path *, struct file *, const struct cred *); extern struct file * dentry_open(const struct path *, int, const struct cred *); extern int filp_close(struct file *, fl_owner_t id); @@ -2210,6 +2223,7 @@ #endif extern int notify_change(struct dentry *, struct iattr *); extern int inode_permission(struct inode *, int); +extern int __inode_permission(struct inode *, int); extern int generic_permission(struct inode *, int); static inline bool execute_ok(struct inode *inode) @@ -2551,6 +2565,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-ppc-3.8.0.orig/include/linux/netdevice.h +++ linux-ppc-3.8.0/include/linux/netdevice.h @@ -208,9 +208,9 @@ #define NETDEV_HW_ADDR_T_SLAVE 3 #define NETDEV_HW_ADDR_T_UNICAST 4 #define NETDEV_HW_ADDR_T_MULTICAST 5 - bool synced; bool global_use; int refcount; + int synced; struct rcu_head rcu_head; }; @@ -1277,6 +1277,7 @@ struct pcpu_lstats __percpu *lstats; /* loopback stats */ struct pcpu_tstats __percpu *tstats; /* tunnel stats */ struct pcpu_dstats __percpu *dstats; /* dummy stats */ + struct pcpu_vstats __percpu *vstats; /* veth stats */ }; /* GARP */ struct garp_port __rcu *garp_port; --- linux-ppc-3.8.0.orig/include/linux/kvm_host.h +++ linux-ppc-3.8.0/include/linux/kvm_host.h @@ -511,7 +511,7 @@ int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, void *data, unsigned long len); int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, - gpa_t gpa); + gpa_t gpa, unsigned long len); int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len); int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len); struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn); --- linux-ppc-3.8.0.orig/include/linux/capability.h +++ linux-ppc-3.8.0/include/linux/capability.h @@ -35,6 +35,7 @@ #define _KERNEL_CAP_T_SIZE (sizeof(kernel_cap_t)) +struct file; struct inode; struct dentry; struct user_namespace; @@ -211,6 +212,7 @@ extern bool ns_capable(struct user_namespace *ns, int cap); extern bool nsown_capable(int cap); extern bool inode_capable(const struct inode *inode, int cap); +extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap); /* audit system wants to get cap info from files as well */ extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); --- linux-ppc-3.8.0.orig/include/linux/bio.h +++ linux-ppc-3.8.0/include/linux/bio.h @@ -136,16 +136,27 @@ #define bio_io_error(bio) bio_endio((bio), -EIO) /* - * drivers should not use the __ version unless they _really_ want to - * run through the entire bio and not just pending pieces + * drivers should not use the __ version unless they _really_ know what + * they're doing */ #define __bio_for_each_segment(bvl, bio, i, start_idx) \ for (bvl = bio_iovec_idx((bio), (start_idx)), i = (start_idx); \ i < (bio)->bi_vcnt; \ bvl++, i++) +/* + * drivers should _never_ use the all version - the bio may have been split + * before it got to the driver and the driver won't own all of it + */ +#define bio_for_each_segment_all(bvl, bio, i) \ + for (i = 0; \ + bvl = bio_iovec_idx((bio), (i)), i < (bio)->bi_vcnt; \ + i++) + #define bio_for_each_segment(bvl, bio, i) \ - __bio_for_each_segment(bvl, bio, i, (bio)->bi_idx) + for (i = (bio)->bi_idx; \ + bvl = bio_iovec_idx((bio), (i)), i < (bio)->bi_vcnt; \ + i++) /* * get a reference to a bio, so it won't disappear. the intended use is --- linux-ppc-3.8.0.orig/include/linux/cpu.h +++ linux-ppc-3.8.0/include/linux/cpu.h @@ -175,6 +175,8 @@ extern void get_online_cpus(void); extern void put_online_cpus(void); +extern void cpu_hotplug_disable(void); +extern void cpu_hotplug_enable(void); #define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri) #define register_hotcpu_notifier(nb) register_cpu_notifier(nb) #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) @@ -198,6 +200,8 @@ #define get_online_cpus() do { } while (0) #define put_online_cpus() do { } while (0) +#define cpu_hotplug_disable() do { } while (0) +#define cpu_hotplug_enable() do { } while (0) #define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) /* These aren't inline functions due to a GCC bug. */ #define register_hotcpu_notifier(nb) ({ (void)(nb); 0; }) --- linux-ppc-3.8.0.orig/include/linux/pxa2xx_ssp.h +++ linux-ppc-3.8.0/include/linux/pxa2xx_ssp.h @@ -155,6 +155,14 @@ #define SSACD_ACDS(x) ((x) << 0) /* Audio clock divider select */ #define SSACD_SCDX8 (1 << 7) /* SYSCLK division ratio select */ +/* LPSS SSP */ +#define SSITF 0x44 /* TX FIFO trigger level */ +#define SSITF_TxLoThresh(x) (((x) - 1) << 8) +#define SSITF_TxHiThresh(x) ((x) - 1) + +#define SSIRF 0x48 /* RX FIFO trigger level */ +#define SSIRF_RxThresh(x) ((x) - 1) + enum pxa_ssp_type { SSP_UNDEFINED = 0, PXA25x_SSP, /* pxa 210, 250, 255, 26x */ @@ -164,6 +172,7 @@ PXA168_SSP, PXA910_SSP, CE4100_SSP, + LPSS_SSP, }; struct ssp_device { @@ -206,6 +215,15 @@ return __raw_readl(dev->mmio_base + reg); } +#ifdef CONFIG_ARCH_PXA struct ssp_device *pxa_ssp_request(int port, const char *label); void pxa_ssp_free(struct ssp_device *); +#else +static inline struct ssp_device *pxa_ssp_request(int port, const char *label) +{ + return NULL; +} +static inline void pxa_ssp_free(struct ssp_device *ssp) {} +#endif + #endif --- linux-ppc-3.8.0.orig/include/linux/pci_ids.h +++ linux-ppc-3.8.0/include/linux/pci_ids.h @@ -1604,6 +1604,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 @@ -1868,8 +1869,23 @@ #define PCI_VENDOR_ID_QUATECH 0x135C #define PCI_DEVICE_ID_QUATECH_QSC100 0x0010 #define PCI_DEVICE_ID_QUATECH_DSC100 0x0020 +#define PCI_DEVICE_ID_QUATECH_DSC200 0x0030 +#define PCI_DEVICE_ID_QUATECH_QSC200 0x0040 #define PCI_DEVICE_ID_QUATECH_ESC100D 0x0050 #define PCI_DEVICE_ID_QUATECH_ESC100M 0x0060 +#define PCI_DEVICE_ID_QUATECH_QSCP100 0x0120 +#define PCI_DEVICE_ID_QUATECH_DSCP100 0x0130 +#define PCI_DEVICE_ID_QUATECH_QSCP200 0x0140 +#define PCI_DEVICE_ID_QUATECH_DSCP200 0x0150 +#define PCI_DEVICE_ID_QUATECH_QSCLP100 0x0170 +#define PCI_DEVICE_ID_QUATECH_DSCLP100 0x0180 +#define PCI_DEVICE_ID_QUATECH_DSC100E 0x0181 +#define PCI_DEVICE_ID_QUATECH_SSCLP100 0x0190 +#define PCI_DEVICE_ID_QUATECH_QSCLP200 0x01A0 +#define PCI_DEVICE_ID_QUATECH_DSCLP200 0x01B0 +#define PCI_DEVICE_ID_QUATECH_DSC200E 0x01B1 +#define PCI_DEVICE_ID_QUATECH_SSCLP200 0x01C0 +#define PCI_DEVICE_ID_QUATECH_ESCLP100 0x01E0 #define PCI_DEVICE_ID_QUATECH_SPPXP_100 0x0278 #define PCI_VENDOR_ID_SEALEVEL 0x135e --- linux-ppc-3.8.0.orig/include/linux/ftrace.h +++ linux-ppc-3.8.0/include/linux/ftrace.h @@ -394,7 +394,6 @@ size_t cnt, loff_t *ppos); ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf, size_t cnt, loff_t *ppos); -loff_t ftrace_regex_lseek(struct file *file, loff_t offset, int whence); int ftrace_regex_release(struct inode *inode, struct file *file); void __init @@ -567,6 +566,8 @@ ftrace_regex_release(struct inode *inode, struct file *file) { return -ENODEV; } #endif /* CONFIG_DYNAMIC_FTRACE */ +loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int whence); + /* totally disable ftrace - can not re-enable after this */ void ftrace_kill(void); --- linux-ppc-3.8.0.orig/include/linux/phy.h +++ linux-ppc-3.8.0/include/linux/phy.h @@ -6,7 +6,7 @@ * * Author: Andy Fleming * - * Copyright (c) 2004 Freescale Semiconductor, Inc. + * Copyright (c) 2004, 2011 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -64,6 +64,7 @@ PHY_INTERFACE_MODE_RGMII_TXID, PHY_INTERFACE_MODE_RTBI, PHY_INTERFACE_MODE_SMII, + PHY_INTERFACE_MODE_XGMII, } phy_interface_t; @@ -507,6 +508,8 @@ int phy_init_hw(struct phy_device *phydev); struct phy_device * phy_attach(struct net_device *dev, const char *bus_id, u32 flags, phy_interface_t interface); +int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, + u32 flags, phy_interface_t interface); struct phy_device *phy_find_first(struct mii_bus *bus); int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, void (*handler)(struct net_device *), u32 flags, @@ -526,6 +529,7 @@ return phydev->drv->read_status(phydev); } +int genphy_setup_forced(struct phy_device *phydev); int genphy_restart_aneg(struct phy_device *phydev); int genphy_config_aneg(struct phy_device *phydev); int genphy_update_link(struct phy_device *phydev); --- linux-ppc-3.8.0.orig/include/linux/vt_kern.h +++ linux-ppc-3.8.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) @@ -130,6 +131,8 @@ int vt_waitactive(int n); void change_console(struct vc_data *new_vc); void reset_vc(struct vc_data *vc); +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-ppc-3.8.0.orig/include/linux/netdev_features.h +++ linux-ppc-3.8.0/include/linux/netdev_features.h @@ -56,6 +56,7 @@ NETIF_F_LOOPBACK_BIT, /* Enable loopback */ NETIF_F_RXFCS_BIT, /* Append FCS to skb pkt data */ NETIF_F_RXALL_BIT, /* Receive errored frames too */ + NETIF_F_HW_QDISC_BIT, /* Supports hardware Qdisc */ /* * Add your fresh new feature above and remember to update @@ -80,6 +81,7 @@ #define NETIF_F_GSO_ROBUST __NETIF_F(GSO_ROBUST) #define NETIF_F_HIGHDMA __NETIF_F(HIGHDMA) #define NETIF_F_HW_CSUM __NETIF_F(HW_CSUM) +#define NETIF_F_HW_QDISC __NETIF_F(HW_QDISC) #define NETIF_F_HW_VLAN_FILTER __NETIF_F(HW_VLAN_FILTER) #define NETIF_F_HW_VLAN_RX __NETIF_F(HW_VLAN_RX) #define NETIF_F_HW_VLAN_TX __NETIF_F(HW_VLAN_TX) --- linux-ppc-3.8.0.orig/include/linux/fs_struct.h +++ linux-ppc-3.8.0/include/linux/fs_struct.h @@ -50,4 +50,6 @@ spin_unlock(&fs->lock); } +extern bool current_chrooted(void); + #endif /* _LINUX_FS_STRUCT_H */ --- linux-ppc-3.8.0.orig/include/linux/sched.h +++ linux-ppc-3.8.0/include/linux/sched.h @@ -51,6 +51,7 @@ #include #include #include +#include #include @@ -163,9 +164,10 @@ #define TASK_DEAD 64 #define TASK_WAKEKILL 128 #define TASK_WAKING 256 -#define TASK_STATE_MAX 512 +#define TASK_PARKED 512 +#define TASK_STATE_MAX 1024 -#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKW" +#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP" extern char ___assert_task_state[1 - 2*!!( sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; @@ -1815,6 +1817,7 @@ #define PF_FROZEN 0x00010000 /* frozen for system suspend */ #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ #define PF_KSWAPD 0x00040000 /* I am kswapd */ +#define PF_MEMALLOC_NOIO 0x00080000 /* Allocating memory without IO involved */ #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ @@ -1852,6 +1855,26 @@ #define tsk_used_math(p) ((p)->flags & PF_USED_MATH) #define used_math() tsk_used_math(current) +/* __GFP_IO isn't allowed if PF_MEMALLOC_NOIO is set in current->flags */ +static inline gfp_t memalloc_noio_flags(gfp_t flags) +{ + if (unlikely(current->flags & PF_MEMALLOC_NOIO)) + flags &= ~__GFP_IO; + return flags; +} + +static inline unsigned int memalloc_noio_save(void) +{ + unsigned int flags = current->flags & PF_MEMALLOC_NOIO; + current->flags |= PF_MEMALLOC_NOIO; + return flags; +} + +static inline void memalloc_noio_restore(unsigned int flags) +{ + current->flags = (current->flags & ~PF_MEMALLOC_NOIO) | flags; +} + /* * task->jobctl flags */ @@ -2485,27 +2508,18 @@ * * Lock the threadgroup @tsk belongs to. No new task is allowed to enter * and member tasks aren't allowed to exit (as indicated by PF_EXITING) or - * perform exec. This is useful for cases where the threadgroup needs to - * stay stable across blockable operations. + * change ->group_leader/pid. This is useful for cases where the threadgroup + * needs to stay stable across blockable operations. * * fork and exit paths explicitly call threadgroup_change_{begin|end}() for * synchronization. While held, no new task will be added to threadgroup * and no existing live task will have its PF_EXITING set. * - * During exec, a task goes and puts its thread group through unusual - * changes. After de-threading, exclusive access is assumed to resources - * which are usually shared by tasks in the same group - e.g. sighand may - * be replaced with a new one. Also, the exec'ing task takes over group - * leader role including its pid. Exclude these changes while locked by - * grabbing cred_guard_mutex which is used to synchronize exec path. + * de_thread() does threadgroup_change_{begin|end}() when a non-leader + * sub-thread becomes a new leader. */ static inline void threadgroup_lock(struct task_struct *tsk) { - /* - * exec uses exit for de-threading nesting group_rwsem inside - * cred_guard_mutex. Grab cred_guard_mutex first. - */ - mutex_lock(&tsk->signal->cred_guard_mutex); down_write(&tsk->signal->group_rwsem); } @@ -2518,7 +2532,6 @@ static inline void threadgroup_unlock(struct task_struct *tsk) { up_write(&tsk->signal->group_rwsem); - mutex_unlock(&tsk->signal->cred_guard_mutex); } #else static inline void threadgroup_change_begin(struct task_struct *tsk) {} --- linux-ppc-3.8.0.orig/include/linux/nbd.h +++ linux-ppc-3.8.0/include/linux/nbd.h @@ -41,6 +41,7 @@ u64 bytesize; pid_t pid; /* pid of nbd-client, if attached */ int xmit_timeout; + int disconnect; /* a disconnect has been requested by user */ }; #endif --- linux-ppc-3.8.0.orig/include/linux/moduleparam.h +++ linux-ppc-3.8.0/include/linux/moduleparam.h @@ -318,8 +318,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-ppc-3.8.0.orig/include/linux/netfilter_ipv6.h +++ linux-ppc-3.8.0/include/linux/netfilter_ipv6.h @@ -17,6 +17,22 @@ extern int ipv6_netfilter_init(void); extern void ipv6_netfilter_fini(void); + +/* + * Hook functions for ipv6 to allow xt_* modules to be built-in even + * if IPv6 is a module. + */ +struct nf_ipv6_ops { + int (*chk_addr)(struct net *net, const struct in6_addr *addr, + const struct net_device *dev, int strict); +}; + +extern const struct nf_ipv6_ops __rcu *nf_ipv6_ops; +static inline const struct nf_ipv6_ops *nf_get_ipv6_ops(void) +{ + return rcu_dereference(nf_ipv6_ops); +} + #else /* CONFIG_NETFILTER */ static inline int ipv6_netfilter_init(void) { return 0; } static inline void ipv6_netfilter_fini(void) { return; } --- linux-ppc-3.8.0.orig/include/linux/if_vlan.h +++ linux-ppc-3.8.0/include/linux/if_vlan.h @@ -331,7 +331,7 @@ struct vlan_hdr *vhdr) { __be16 proto; - unsigned char *rawp; + unsigned short *rawp; /* * Was a VLAN packet, grab the encapsulated protocol, which the layer @@ -344,8 +344,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-ppc-3.8.0.orig/include/linux/pps_kernel.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/linux/user_namespace.h +++ linux-ppc-3.8.0/include/linux/user_namespace.h @@ -23,9 +23,12 @@ struct uid_gid_map projid_map; struct kref kref; struct user_namespace *parent; + int level; kuid_t owner; kgid_t group; unsigned int proc_inum; + bool may_mount_sysfs; + bool may_mount_proc; }; extern struct user_namespace init_user_ns; @@ -82,4 +85,6 @@ #endif +void update_mnt_policy(struct user_namespace *userns); + #endif /* _LINUX_USER_H */ --- linux-ppc-3.8.0.orig/include/linux/wait.h +++ linux-ppc-3.8.0/include/linux/wait.h @@ -217,6 +217,8 @@ if (!ret) \ break; \ } \ + if (!ret && (condition)) \ + ret = 1; \ finish_wait(&wq, &__wait); \ } while (0) @@ -233,8 +235,9 @@ * wake_up() has to be called after changing any variable that could * change the result of the wait condition. * - * The function returns 0 if the @timeout elapsed, and the remaining - * jiffies if the condition evaluated to true before the timeout elapsed. + * The function returns 0 if the @timeout elapsed, or the remaining + * jiffies (at least 1) if the @condition evaluated to %true before + * the @timeout elapsed. */ #define wait_event_timeout(wq, condition, timeout) \ ({ \ @@ -302,6 +305,8 @@ ret = -ERESTARTSYS; \ break; \ } \ + if (!ret && (condition)) \ + ret = 1; \ finish_wait(&wq, &__wait); \ } while (0) @@ -318,9 +323,10 @@ * wake_up() has to be called after changing any variable that could * change the result of the wait condition. * - * The function returns 0 if the @timeout elapsed, -ERESTARTSYS if it - * was interrupted by a signal, and the remaining jiffies otherwise - * if the condition evaluated to true before the timeout elapsed. + * Returns: + * 0 if the @timeout elapsed, -%ERESTARTSYS if it was interrupted by + * a signal, or the remaining jiffies (at least 1) if the @condition + * evaluated to %true before the @timeout elapsed. */ #define wait_event_interruptible_timeout(wq, condition, timeout) \ ({ \ @@ -713,6 +719,63 @@ __ret; \ }) +#define __wait_event_interruptible_lock_irq_timeout(wq, condition, \ + lock, ret) \ +do { \ + DEFINE_WAIT(__wait); \ + \ + for (;;) { \ + prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ + if (condition) \ + break; \ + if (signal_pending(current)) { \ + ret = -ERESTARTSYS; \ + break; \ + } \ + spin_unlock_irq(&lock); \ + ret = schedule_timeout(ret); \ + spin_lock_irq(&lock); \ + if (!ret) \ + break; \ + } \ + finish_wait(&wq, &__wait); \ +} while (0) + +/** + * wait_event_interruptible_lock_irq_timeout - sleep until a condition gets true or a timeout elapses. + * The condition is checked under the lock. This is expected + * to be called with the lock taken. + * @wq: the waitqueue to wait on + * @condition: a C expression for the event to wait for + * @lock: a locked spinlock_t, which will be released before schedule() + * and reacquired afterwards. + * @timeout: timeout, in jiffies + * + * The process is put to sleep (TASK_INTERRUPTIBLE) until the + * @condition evaluates to true or signal is received. The @condition is + * checked each time the waitqueue @wq is woken up. + * + * wake_up() has to be called after changing any variable that could + * change the result of the wait condition. + * + * This is supposed to be called while holding the lock. The lock is + * dropped before going to sleep and is reacquired afterwards. + * + * The function returns 0 if the @timeout elapsed, -ERESTARTSYS if it + * was interrupted by a signal, and the remaining jiffies otherwise + * if the condition evaluated to true before the timeout elapsed. + */ +#define wait_event_interruptible_lock_irq_timeout(wq, condition, lock, \ + timeout) \ +({ \ + int __ret = timeout; \ + \ + if (!(condition)) \ + __wait_event_interruptible_lock_irq_timeout( \ + wq, condition, lock, __ret); \ + __ret; \ +}) + /* * These are the old interfaces to sleep waiting for an event. --- linux-ppc-3.8.0.orig/include/linux/swapops.h +++ linux-ppc-3.8.0/include/linux/swapops.h @@ -137,6 +137,7 @@ extern void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, unsigned long address); +extern void migration_entry_wait_huge(struct mm_struct *mm, pte_t *pte); #else #define make_migration_entry(page, write) swp_entry(0, 0) @@ -148,6 +149,8 @@ static inline void make_migration_entry_read(swp_entry_t *entryp) { } static inline void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, unsigned long address) { } +static inline void migration_entry_wait_huge(struct mm_struct *mm, + pte_t *pte) { } static inline int is_write_migration_entry(swp_entry_t entry) { return 0; --- linux-ppc-3.8.0.orig/include/linux/pstore.h +++ linux-ppc-3.8.0/include/linux/pstore.h @@ -68,12 +68,18 @@ #ifdef CONFIG_PSTORE extern int pstore_register(struct pstore_info *); +extern bool pstore_cannot_block_path(enum kmsg_dump_reason reason); #else static inline int pstore_register(struct pstore_info *psi) { return -ENODEV; } +static inline bool +pstore_cannot_block_path(enum kmsg_dump_reason reason) +{ + return false; +} #endif #endif /*_LINUX_PSTORE_H*/ --- linux-ppc-3.8.0.orig/include/linux/skbuff.h +++ linux-ppc-3.8.0/include/linux/skbuff.h @@ -491,7 +491,7 @@ union { __u32 mark; __u32 dropcount; - __u32 avail_size; + __u32 reserved_tailroom; }; sk_buff_data_t inner_transport_header; @@ -1269,11 +1269,13 @@ * do not lose pfmemalloc information as the pages would not be * allocated using __GFP_MEMALLOC. */ - if (page->pfmemalloc && !page->mapping) - skb->pfmemalloc = true; frag->page.p = page; frag->page_offset = off; skb_frag_size_set(frag, size); + + page = compound_head(page); + if (page->pfmemalloc && !page->mapping) + skb->pfmemalloc = true; } /** @@ -1428,7 +1430,10 @@ */ static inline int skb_availroom(const struct sk_buff *skb) { - return skb_is_nonlinear(skb) ? 0 : skb->avail_size - skb->len; + if (skb_is_nonlinear(skb)) + return 0; + + return skb->end - skb->tail - skb->reserved_tailroom; } /** @@ -2592,6 +2597,13 @@ #endif } +static inline void nf_reset_trace(struct sk_buff *skb) +{ +#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) + skb->nf_trace = 0; +#endif +} + /* Note: This doesn't put any conntrack and bridge info in dst. */ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src) { --- linux-ppc-3.8.0.orig/include/linux/fsl_qman.h +++ linux-ppc-3.8.0/include/linux/fsl_qman.h @@ -0,0 +1,1761 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FSL_QMAN_H +#define FSL_QMAN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Last updated for v00.800 of the BG */ + +/* Hardware constants */ +enum qm_channel { + qm_channel_swportal0 = 0, qm_channel_swportal1, qm_channel_swportal2, + qm_channel_swportal3, qm_channel_swportal4, qm_channel_swportal5, + qm_channel_swportal6, qm_channel_swportal7, qm_channel_swportal8, + qm_channel_swportal9, + qm_channel_pool1 = 0x21, qm_channel_pool2, qm_channel_pool3, + qm_channel_pool4, qm_channel_pool5, qm_channel_pool6, + qm_channel_pool7, qm_channel_pool8, qm_channel_pool9, + qm_channel_pool10, qm_channel_pool11, qm_channel_pool12, + qm_channel_pool13, qm_channel_pool14, qm_channel_pool15, + qm_channel_fman0_sp0 = 0x40, qm_channel_fman0_sp1, qm_channel_fman0_sp2, + qm_channel_fman0_sp3, qm_channel_fman0_sp4, qm_channel_fman0_sp5, + qm_channel_fman0_sp6, qm_channel_fman0_sp7, qm_channel_fman0_sp8, + qm_channel_fman0_sp9, qm_channel_fman0_sp10, qm_channel_fman0_sp11, + qm_channel_fman1_sp0 = 0x60, qm_channel_fman1_sp1, qm_channel_fman1_sp2, + qm_channel_fman1_sp3, qm_channel_fman1_sp4, qm_channel_fman1_sp5, + qm_channel_fman1_sp6, qm_channel_fman1_sp7, qm_channel_fman1_sp8, + qm_channel_fman1_sp9, qm_channel_fman1_sp10, qm_channel_fman1_sp11, + qm_channel_caam = 0x80, + qm_channel_pme = 0xa0, +}; +enum qm_dc_portal { + qm_dc_portal_fman0 = 0, + qm_dc_portal_fman1 = 1, + qm_dc_portal_caam = 2, + qm_dc_portal_pme = 3 +}; + +/* Portal processing (interrupt) sources */ +#define QM_PIRQ_CSCI 0x00100000 /* Congestion State Change */ +#define QM_PIRQ_EQCI 0x00080000 /* Enqueue Command Committed */ +#define QM_PIRQ_EQRI 0x00040000 /* EQCR Ring (below threshold) */ +#define QM_PIRQ_DQRI 0x00020000 /* DQRR Ring (non-empty) */ +#define QM_PIRQ_MRI 0x00010000 /* MR Ring (non-empty) */ +/* This mask contains all the interrupt sources that need handling except DQRI, + * ie. that if present should trigger slow-path processing. */ +#define QM_PIRQ_SLOW (QM_PIRQ_CSCI | QM_PIRQ_EQCI | QM_PIRQ_EQRI | \ + QM_PIRQ_MRI) + + +/* ------------------------ */ +/* --- FQ allocator API --- */ + +/* Flags to qm_fq_free_flags() */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT +#define QM_FQ_FREE_WAIT 0x00000001 /* wait if RCR is full */ +#define QM_FQ_FREE_WAIT_INT 0x00000002 /* if wait, interruptible? */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC +#define QM_FQ_FREE_WAIT_SYNC 0x00000004 /* if wait, until consumed? */ +#endif +#endif + +/* Allocate an unused FQID from the FQ allocator, returns zero for failure */ +u32 qm_fq_new(void); +/* Release a FQID back to the FQ allocator */ +int qm_fq_free_flags(u32 fqid, u32 flags); +#ifdef CONFIG_FSL_DPA_CAN_WAIT +static inline void qm_fq_free(u32 fqid) +{ + if (qm_fq_free_flags(fqid, QM_FQ_FREE_WAIT)) + BUG(); +} +#else +#define qm_fq_free(fqid) qm_fq_free_flags(fqid, 0) +#endif + +/* For qman_static_dequeue_*** APIs */ +#define QM_SDQCR_CHANNELS_POOL_MASK 0x00007fff +/* for n in [1,15] */ +#define QM_SDQCR_CHANNELS_POOL(n) (0x00008000 >> (n)) +/* for conversion from n of type "enum qm_channel" */ +#define QM_SDQCR_CHANNELS_POOL_CONV(c) \ + QM_SDQCR_CHANNELS_POOL((c) + 1 - qm_channel_pool1) + +/* For qman_volatile_dequeue(); Choose one PRECEDENCE. EXACT is optional. Use + * NUMFRAMES(n) (6-bit) or NUMFRAMES_TILLEMPTY to fill in the frame-count. Use + * FQID(n) to fill in the frame queue ID. */ +#define QM_VDQCR_PRECEDENCE_VDQCR 0x0 +#define QM_VDQCR_PRECEDENCE_SDQCR 0x80000000 +#define QM_VDQCR_EXACT 0x40000000 +#define QM_VDQCR_NUMFRAMES_MASK 0x3f000000 +#define QM_VDQCR_NUMFRAMES_SET(n) (((n) & 0x3f) << 24) +#define QM_VDQCR_NUMFRAMES_GET(n) (((n) >> 24) & 0x3f) +#define QM_VDQCR_NUMFRAMES_TILLEMPTY QM_VDQCR_NUMFRAMES_SET(0) + + +/* ------------------------------------------------------- */ +/* --- Qman data structures (and associated constants) --- */ + +/* Represents s/w corenet portal mapped data structures */ +struct qm_eqcr_entry; /* EQCR (EnQueue Command Ring) entries */ +struct qm_dqrr_entry; /* DQRR (DeQueue Response Ring) entries */ +struct qm_mr_entry; /* MR (Message Ring) entries */ +struct qm_mc_command; /* MC (Management Command) command */ +struct qm_mc_result; /* MC result */ + +/* See David Lapp's "Frame formats" document, "dpateam", Jan 07, 2008 */ +#define QM_FD_FORMAT_SG 0x4 +#define QM_FD_FORMAT_LONG 0x2 +#define QM_FD_FORMAT_COMPOUND 0x1 +enum qm_fd_format { + /* 'contig' implies a contiguous buffer, whereas 'sg' implies a + * scatter-gather table. 'big' implies a 29-bit length with no offset + * field, otherwise length is 20-bit and offset is 9-bit. 'compound' + * implies a s/g-like table, where each entry itself represents a frame + * (contiguous or scatter-gather) and the 29-bit "length" is + * interpreted purely for congestion calculations, ie. a "congestion + * weight". */ + qm_fd_contig = 0, + qm_fd_contig_big = QM_FD_FORMAT_LONG, + qm_fd_sg = QM_FD_FORMAT_SG, + qm_fd_sg_big = QM_FD_FORMAT_SG | QM_FD_FORMAT_LONG, + qm_fd_compound = QM_FD_FORMAT_COMPOUND +}; + +/* Capitalised versions are un-typed but can be used in static expressions */ +#define QM_FD_CONTIG 0 +#define QM_FD_CONTIG_BIG QM_FD_FORMAT_LONG +#define QM_FD_SG QM_FD_FORMAT_SG +#define QM_FD_SG_BIG (QM_FD_FORMAT_SG | QM_FD_FORMAT_LONG) +#define QM_FD_COMPOUND QM_FD_FORMAT_COMPOUND + +/* See 1.5.1.1: "Frame Descriptor (FD)" */ +struct qm_fd { + union { + struct { + u8 dd:2; /* dynamic debug */ + u8 liodn_offset:6; + u8 bpid:8; /* Buffer Pool ID */ + u8 eliodn_offset:4; + u8 __reserved:4; + u8 addr_hi; /* high 8-bits of 40-bit address */ + u32 addr_lo; /* low 32-bits of 40-bit address */ + }; + struct { + u64 __notaddress:24; + /* More efficient address accessor */ + u64 addr:40; + }; + u64 opaque_addr; + }; + /* The 'format' field indicates the interpretation of the remaining 29 + * bits of the 32-bit word. For packing reasons, it is duplicated in the + * other union elements. Note, union'd structs are difficult to use with + * static initialisation under gcc, in which case use the "opaque" form + * with one of the macros. */ + union { + /* For easier/faster copying of this part of the fd (eg. from a + * DQRR entry to an EQCR entry) copy 'opaque' */ + u32 opaque; + /* If 'format' is _contig or _sg, 20b length and 9b offset */ + struct { + enum qm_fd_format format:3; + u16 offset:9; + u32 length20:20; + }; + /* If 'format' is _contig_big or _sg_big, 29b length */ + struct { + enum qm_fd_format _format1:3; + u32 length29:29; + }; + /* If 'format' is _compound, 29b "congestion weight" */ + struct { + enum qm_fd_format _format2:3; + u32 cong_weight:29; + }; + }; + union { + u32 cmd; + u32 status; + }; +} __attribute__((aligned(8))); +#define QM_FD_DD_NULL 0x00 +#define QM_FD_PID_MASK 0x3f +static inline u64 qm_fd_addr_get64(const struct qm_fd *fd) +{ + return fd->addr; +} + +static inline dma_addr_t qm_fd_addr(const struct qm_fd *fd) +{ + return (dma_addr_t)fd->addr; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +#define qm_fd_addr_set64(fd, v) \ + do { \ + struct qm_fd *__fd931 = (fd); \ + __fd931->addr = v; \ + } while (0) + +/* For static initialisation of FDs (which is complicated by the use of unions + * in "struct qm_fd"), use the following macros. Note that; + * - 'dd', 'pid' and 'bpid' are ignored because there's no static initialisation + * use-case), + * - use capitalised QM_FD_*** formats for static initialisation. + */ +#define QM_FD_FMT_20(cmd, addr_hi, addr_lo, fmt, off, len) \ + { 0, 0, 0, 0, 0, addr_hi, addr_lo, \ + { (((fmt)&0x7) << 29) | (((off)&0x1ff) << 20) | ((len)&0xfffff) }, \ + { cmd } } +#define QM_FD_FMT_29(cmd, addr_hi, addr_lo, fmt, len) \ + { 0, 0, 0, 0, 0, addr_hi, addr_lo, \ + { (((fmt)&0x7) << 29) | ((len)&0x1fffffff) }, \ + { cmd } } + +/* See 2.2.1.3 Multi-Core Datapath Acceleration Architecture */ +struct qm_sg_entry { + union { + struct { + u8 __reserved1[3]; + u8 addr_hi; /* high 8-bits of 40-bit address */ + u32 addr_lo; /* low 32-bits of 40-bit address */ + }; + struct { + u64 __notaddress:24; + u64 addr:40; + }; + }; + u32 extension:1; /* Extension bit */ + u32 final:1; /* Final bit */ + u32 length:30; + u8 __reserved2; + u8 bpid; + u16 __reserved3:3; + u16 offset:13; +} __packed; +static inline u64 qm_sg_entry_get64(const struct qm_sg_entry *sg) +{ + return sg->addr; +} +static inline dma_addr_t qm_sg_addr(const struct qm_sg_entry *sg) +{ + return (dma_addr_t)sg->addr; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +#define qm_sg_entry_set64(sg, v) \ + do { \ + struct qm_sg_entry *__sg931 = (sg); \ + __sg931->addr = v; \ + } while (0) + +/* See 1.5.8.1: "Enqueue Command" */ +struct qm_eqcr_entry { + u8 __dont_write_directly__verb; + u8 dca; + u16 seqnum; + u32 orp; /* 24-bit */ + u32 fqid; /* 24-bit */ + u32 tag; + struct qm_fd fd; + u8 __reserved3[32]; +} __packed; +#define QM_EQCR_VERB_VBIT 0x80 +#define QM_EQCR_VERB_CMD_MASK 0x61 /* but only one value; */ +#define QM_EQCR_VERB_CMD_ENQUEUE 0x01 +#define QM_EQCR_VERB_COLOUR_MASK 0x18 /* 4 possible values; */ +#define QM_EQCR_VERB_COLOUR_GREEN 0x00 +#define QM_EQCR_VERB_COLOUR_YELLOW 0x08 +#define QM_EQCR_VERB_COLOUR_RED 0x10 +#define QM_EQCR_VERB_COLOUR_OVERRIDE 0x18 +#define QM_EQCR_VERB_INTERRUPT 0x04 /* on command consumption */ +#define QM_EQCR_VERB_ORP 0x02 /* enable order restoration */ +#define QM_EQCR_DCA_ENABLE 0x80 +#define QM_EQCR_DCA_PARK 0x40 +#define QM_EQCR_DCA_IDXMASK 0x0f /* "DQRR::idx" goes here */ +#define QM_EQCR_SEQNUM_NESN 0x8000 /* Advance NESN */ +#define QM_EQCR_SEQNUM_NLIS 0x4000 /* More fragments to come */ +#define QM_EQCR_SEQNUM_SEQMASK 0x3fff /* sequence number goes here */ +#define QM_EQCR_FQID_NULL 0 /* eg. for an ORP seqnum hole */ + +/* See 1.5.8.2: "Frame Dequeue Response" */ +struct qm_dqrr_entry { + u8 verb; + u8 stat; + u16 seqnum; /* 15-bit */ + u8 tok; + u8 __reserved2[3]; + u32 fqid; /* 24-bit */ + u32 contextB; + struct qm_fd fd; + u8 __reserved4[32]; +}; +#define QM_DQRR_VERB_VBIT 0x80 +#define QM_DQRR_VERB_MASK 0x7f /* where the verb contains; */ +#define QM_DQRR_VERB_FRAME_DEQUEUE 0x60 /* "this format" */ +#define QM_DQRR_STAT_FQ_EMPTY 0x80 /* FQ empty */ +#define QM_DQRR_STAT_FQ_HELDACTIVE 0x40 /* FQ held active */ +#define QM_DQRR_STAT_FQ_FORCEELIGIBLE 0x20 /* FQ was force-eligible'd */ +#define QM_DQRR_STAT_FD_VALID 0x10 /* has a non-NULL FD */ +#define QM_DQRR_STAT_UNSCHEDULED 0x02 /* Unscheduled dequeue */ +#define QM_DQRR_STAT_DQCR_EXPIRED 0x01 /* VDQCR or PDQCR expired*/ + +/* See 1.5.8.3: "ERN Message Response" */ +/* See 1.5.8.4: "FQ State Change Notification" */ +struct qm_mr_entry { + u8 verb; + union { + struct { + u8 dca; + u16 seqnum; + u8 rc; /* Rejection Code */ + u32 orp:24; + u32 fqid; /* 24-bit */ + u32 tag; + struct qm_fd fd; + } __packed ern; + struct { + u8 colour:2; /* See QM_MR_DCERN_COLOUR_* */ + u8 __reserved1:4; + enum qm_dc_portal portal:2; + u16 __reserved2; + u8 rc; /* Rejection Code */ + u32 __reserved3:24; + u32 fqid; /* 24-bit */ + u32 tag; + struct qm_fd fd; + } __packed dcern; + struct { + u8 fqs; /* Frame Queue Status */ + u8 __reserved1[6]; + u32 fqid; /* 24-bit */ + u32 contextB; + u8 __reserved2[16]; + } __packed fq; /* FQRN/FQRNI/FQRL/FQPN */ + }; + u8 __reserved2[32]; +} __packed; +#define QM_MR_VERB_VBIT 0x80 +/* The "ern" VERB bits match QM_EQCR_VERB_*** so aren't reproduced here. ERNs + * originating from direct-connect portals ("dcern") use 0x20 as a verb which + * would be invalid as a s/w enqueue verb. A s/w ERN can be distinguished from + * the other MR types by noting if the 0x20 bit is unset. */ +#define QM_MR_VERB_TYPE_MASK 0x27 +#define QM_MR_VERB_DC_ERN 0x20 +#define QM_MR_VERB_FQRN 0x21 +#define QM_MR_VERB_FQRNI 0x22 +#define QM_MR_VERB_FQRL 0x23 +#define QM_MR_VERB_FQPN 0x24 +#define QM_MR_RC_MASK 0xf0 /* contains one of; */ +#define QM_MR_RC_CGR_TAILDROP 0x00 +#define QM_MR_RC_WRED 0x10 +#define QM_MR_RC_ERROR 0x20 +#define QM_MR_RC_ORPWINDOW_EARLY 0x30 +#define QM_MR_RC_ORPWINDOW_LATE 0x40 +#define QM_MR_RC_FQ_TAILDROP 0x50 +#define QM_MR_RC_ORPWINDOW_RETIRED 0x60 +#define QM_MR_FQS_ORLPRESENT 0x02 /* ORL fragments to come */ +#define QM_MR_FQS_NOTEMPTY 0x01 /* FQ has enqueued frames */ +#define QM_MR_DCERN_COLOUR_GREEN 0x00 +#define QM_MR_DCERN_COLOUR_YELLOW 0x01 +#define QM_MR_DCERN_COLOUR_RED 0x02 +#define QM_MR_DCERN_COLOUR_OVERRIDE 0x03 + +/* An identical structure of FQD fields is present in the "Init FQ" command and + * the "Query FQ" result, it's suctioned out into the "struct qm_fqd" type. + * Within that, the 'stashing' and 'taildrop' pieces are also factored out, the + * latter has two inlines to assist with converting to/from the mant+exp + * representation. */ +struct qm_fqd_stashing { + /* See QM_STASHING_EXCL_<...> */ + u8 exclusive; + u8 __reserved1:2; + /* Numbers of cachelines */ + u8 annotation_cl:2; + u8 data_cl:2; + u8 context_cl:2; +} __packed; +struct qm_fqd_taildrop { + u16 __reserved1:3; + u16 mant:8; + u16 exp:5; +} __packed; +struct qm_fqd_oac { + /* See QM_OAC_<...> */ + u8 oac:2; /* "Overhead Accounting Control" */ + u8 __reserved1:6; + /* Two's-complement value (-128 to +127) */ + signed char oal; /* "Overhead Accounting Length" */ +} __packed; +struct qm_fqd { + union { + u8 orpc; + struct { + u8 __reserved1:2; + u8 orprws:3; + u8 oa:1; + u8 olws:2; + } __packed; + }; + u8 cgid; + u16 fq_ctrl; /* See QM_FQCTRL_<...> */ + union { + u16 dest_wq; + struct { + u16 channel:13; /* enum qm_channel */ + u16 wq:3; + } __packed dest; + }; + u16 __reserved2:1; + u16 ics_cred:15; + /* For "Initialize Frame Queue" commands, the write-enable mask + * determines whether 'td' or 'oac_init' is observed. For query + * commands, this field is always 'td', and 'oac_query' (below) reflects + * the Overhead ACcounting values. */ + union { + struct qm_fqd_taildrop td; + struct qm_fqd_oac oac_init; + }; + u32 context_b; + union { + /* Treat it as 64-bit opaque */ + u64 opaque; + struct { + u32 hi; + u32 lo; + }; + /* Treat it as s/w portal stashing config */ + /* See 1.5.6.7.1: "FQD Context_A field used for [...] */ + struct { + struct qm_fqd_stashing stashing; + /* 48-bit address of FQ context to + * stash, must be cacheline-aligned */ + u16 context_hi; + u32 context_lo; + } __packed; + } context_a; + struct qm_fqd_oac oac_query; +} __packed; +/* 64-bit converters for context_hi/lo */ +static inline u64 qm_fqd_stashing_get64(const struct qm_fqd *fqd) +{ + return ((u64)fqd->context_a.context_hi << 32) | + (u64)fqd->context_a.context_lo; +} +static inline dma_addr_t qm_fqd_stashing_addr(const struct qm_fqd *fqd) +{ + return (dma_addr_t)qm_fqd_stashing_get64(fqd); +} +static inline u64 qm_fqd_context_a_get64(const struct qm_fqd *fqd) +{ + return ((u64)fqd->context_a.hi << 32) | + (u64)fqd->context_a.lo; +} +/* Macro, so we compile better when 'v' isn't necessarily 64-bit */ +#define qm_fqd_stashing_set64(fqd, v) \ + do { \ + struct qm_fqd *__fqd931 = (fqd); \ + __fqd931->context_a.context_hi = upper_32_bits(v); \ + __fqd931->context_a.context_lo = lower_32_bits(v); \ + } while (0) +#define qm_fqd_context_a_set64(fqd, v) \ + do { \ + struct qm_fqd *__fqd931 = (fqd); \ + __fqd931->context_a.hi = upper_32_bits(v); \ + __fqd931->context_a.lo = lower_32_bits(v); \ + } while (0) +/* convert a threshold value into mant+exp representation */ +static inline int qm_fqd_taildrop_set(struct qm_fqd_taildrop *td, u32 val, + int roundup) +{ + u32 e = 0; + int oddbit = 0; + if (val > 0xe0000000) + return -ERANGE; + while (val > 0xff) { + oddbit = val & 1; + val >>= 1; + e++; + if (roundup && oddbit) + val++; + } + td->exp = e; + td->mant = val; + return 0; +} +/* and the other direction */ +static inline u32 qm_fqd_taildrop_get(const struct qm_fqd_taildrop *td) +{ + return (u32)td->mant << td->exp; +} + +/* See 1.5.2.2: "Frame Queue Descriptor (FQD)" */ +/* Frame Queue Descriptor (FQD) field 'fq_ctrl' uses these constants */ +#define QM_FQCTRL_MASK 0x07ff /* 'fq_ctrl' flags; */ +#define QM_FQCTRL_CGE 0x0400 /* Congestion Group Enable */ +#define QM_FQCTRL_TDE 0x0200 /* Tail-Drop Enable */ +#define QM_FQCTRL_ORP 0x0100 /* ORP Enable */ +#define QM_FQCTRL_CTXASTASHING 0x0080 /* Context-A stashing */ +#define QM_FQCTRL_CPCSTASH 0x0040 /* CPC Stash Enable */ +#define QM_FQCTRL_FORCESFDR 0x0008 /* High-priority SFDRs */ +#define QM_FQCTRL_AVOIDBLOCK 0x0004 /* Don't block active */ +#define QM_FQCTRL_HOLDACTIVE 0x0002 /* Hold active in portal */ +#define QM_FQCTRL_PREFERINCACHE 0x0001 /* Aggressively cache FQD */ +#define QM_FQCTRL_LOCKINCACHE QM_FQCTRL_PREFERINCACHE /* older naming */ + +/* See 1.5.6.7.1: "FQD Context_A field used for [...] */ +/* Frame Queue Descriptor (FQD) field 'CONTEXT_A' uses these constants */ +#define QM_STASHING_EXCL_ANNOTATION 0x04 +#define QM_STASHING_EXCL_DATA 0x02 +#define QM_STASHING_EXCL_CTX 0x01 + +/* See 1.5.5.3: "Intra Class Scheduling" */ +/* FQD field 'OAC' (Overhead ACcounting) uses these constants */ +#define QM_OAC_ICS 0x2 /* Accounting for Intra-Class Scheduling */ +#define QM_OAC_CG 0x1 /* Accounting for Congestion Groups */ + +/* See 1.5.8.4: "FQ State Change Notification" */ +/* This struct represents the 32-bit "WR_PARM_[GYR]" parameters in CGR fields + * and associated commands/responses. The WRED parameters are calculated from + * these fields as follows; + * MaxTH = MA * (2 ^ Mn) + * Slope = SA / (2 ^ Sn) + * MaxP = 4 * (Pn + 1) + */ +struct qm_cgr_wr_parm { + union { + u32 word; + struct { + u32 MA:8; + u32 Mn:5; + u32 SA:7; /* must be between 64-127 */ + u32 Sn:6; + u32 Pn:6; + } __packed; + }; +} __packed; +/* This struct represents the 13-bit "CS_THRES" CGR field. In the corresponding + * management commands, this is padded to a 16-bit structure field, so that's + * how we represent it here. The congestion state threshold is calculated from + * these fields as follows; + * CS threshold = TA * (2 ^ Tn) + */ +struct qm_cgr_cs_thres { + u16 __reserved:3; + u16 TA:8; + u16 Tn:5; +} __packed; +/* This identical structure of CGR fields is present in the "Init/Modify CGR" + * commands and the "Query CGR" result. It's suctioned out here into its own + * struct. */ +struct __qm_mc_cgr { + struct qm_cgr_wr_parm wr_parm_g; + struct qm_cgr_wr_parm wr_parm_y; + struct qm_cgr_wr_parm wr_parm_r; + u8 wr_en_g; /* boolean, use QM_CGR_EN */ + u8 wr_en_y; /* boolean, use QM_CGR_EN */ + u8 wr_en_r; /* boolean, use QM_CGR_EN */ + u8 cscn_en; /* boolean, use QM_CGR_EN */ + u32 cscn_targ; /* use QM_CGR_TARG_* */ + u8 cstd_en; /* boolean, use QM_CGR_EN */ + u8 cs; /* boolean, only used in query response */ + struct qm_cgr_cs_thres cs_thres; /* use qm_cgr_cs_thres_set64() */ + u8 mode; /* QMAN_CGR_MODE_FRAME not supported in rev1.0 */ +} __packed; +#define QM_CGR_EN 0x01 /* For wr_en_*, cscn_en, cstd_en */ +#define QM_CGR_TARG_PORTAL(n) (0x80000000 >> (n)) /* s/w portal, 0-9 */ +#define QM_CGR_TARG_FMAN0 0x00200000 /* direct-connect portal: fman0 */ +#define QM_CGR_TARG_FMAN1 0x00100000 /* : fman1 */ +/* Convert CGR thresholds to/from "cs_thres" format */ +static inline u64 qm_cgr_cs_thres_get64(const struct qm_cgr_cs_thres *th) +{ + return (u64)th->TA << th->Tn; +} +static inline int qm_cgr_cs_thres_set64(struct qm_cgr_cs_thres *th, u64 val, + int roundup) +{ + u32 e = 0; + int oddbit = 0; + while (val > 0xff) { + oddbit = val & 1; + val >>= 1; + e++; + if (roundup && oddbit) + val++; + } + th->Tn = e; + th->TA = val; + return 0; +} + +/* See 1.5.8.5.1: "Initialize FQ" */ +/* See 1.5.8.5.2: "Query FQ" */ +/* See 1.5.8.5.3: "Query FQ Non-Programmable Fields" */ +/* See 1.5.8.5.4: "Alter FQ State Commands " */ +/* See 1.5.8.6.1: "Initialize/Modify CGR" */ +/* See 1.5.8.6.2: "CGR Test Write" */ +/* See 1.5.8.6.3: "Query CGR" */ +/* See 1.5.8.6.4: "Query Congestion Group State" */ +struct qm_mcc_initfq { + u8 __reserved1; + u16 we_mask; /* Write Enable Mask */ + u32 fqid; /* 24-bit */ + u16 count; /* Initialises 'count+1' FQDs */ + struct qm_fqd fqd; /* the FQD fields go here */ + u8 __reserved3[30]; +} __packed; +struct qm_mcc_queryfq { + u8 __reserved1[3]; + u32 fqid; /* 24-bit */ + u8 __reserved2[56]; +} __packed; +struct qm_mcc_queryfq_np { + u8 __reserved1[3]; + u32 fqid; /* 24-bit */ + u8 __reserved2[56]; +} __packed; +struct qm_mcc_alterfq { + u8 __reserved1[3]; + u32 fqid; /* 24-bit */ + u8 __reserved2[56]; +} __packed; +struct qm_mcc_initcgr { + u8 __reserved1; + u16 we_mask; /* Write Enable Mask */ + struct __qm_mc_cgr cgr; /* CGR fields */ + u8 __reserved2[2]; + u8 cgid; + u8 __reserved4[32]; +} __packed; +struct qm_mcc_cgrtestwrite { + u8 __reserved1[2]; + u8 i_bcnt_hi:8;/* high 8-bits of 40-bit "Instant" */ + u32 i_bcnt_lo; /* low 32-bits of 40-bit */ + u8 __reserved2[23]; + u8 cgid; + u8 __reserved3[32]; +} __packed; +struct qm_mcc_querycgr { + u8 __reserved1[30]; + u8 cgid; + u8 __reserved2[32]; +} __packed; +struct qm_mcc_querycongestion { + u8 __reserved[63]; +} __packed; +struct qm_mcc_querywq { + u8 __reserved; + /* select channel if verb != QUERYWQ_DEDICATED */ + union { + u16 channel_wq; /* ignores wq (3 lsbits) */ + struct { + u16 id:13; /* enum qm_channel */ + u16 __reserved1:3; + } __packed channel; + }; + u8 __reserved2[60]; +} __packed; +struct qm_mc_command { + u8 __dont_write_directly__verb; + union { + struct qm_mcc_initfq initfq; + struct qm_mcc_queryfq queryfq; + struct qm_mcc_queryfq_np queryfq_np; + struct qm_mcc_alterfq alterfq; + struct qm_mcc_initcgr initcgr; + struct qm_mcc_cgrtestwrite cgrtestwrite; + struct qm_mcc_querycgr querycgr; + struct qm_mcc_querycongestion querycongestion; + struct qm_mcc_querywq querywq; + }; +} __packed; +#define QM_MCC_VERB_VBIT 0x80 +#define QM_MCC_VERB_MASK 0x7f /* where the verb contains; */ +#define QM_MCC_VERB_INITFQ_PARKED 0x40 +#define QM_MCC_VERB_INITFQ_SCHED 0x41 +#define QM_MCC_VERB_QUERYFQ 0x44 +#define QM_MCC_VERB_QUERYFQ_NP 0x45 /* "non-programmable" fields */ +#define QM_MCC_VERB_QUERYWQ 0x46 +#define QM_MCC_VERB_QUERYWQ_DEDICATED 0x47 +#define QM_MCC_VERB_ALTER_SCHED 0x48 /* Schedule FQ */ +#define QM_MCC_VERB_ALTER_FE 0x49 /* Force Eligible FQ */ +#define QM_MCC_VERB_ALTER_RETIRE 0x4a /* Retire FQ */ +#define QM_MCC_VERB_ALTER_OOS 0x4b /* Take FQ out of service */ +#define QM_MCC_VERB_INITCGR 0x50 +#define QM_MCC_VERB_MODIFYCGR 0x51 +#define QM_MCC_VERB_CGRTESTWRITE 0x52 +#define QM_MCC_VERB_QUERYCGR 0x58 +#define QM_MCC_VERB_QUERYCONGESTION 0x59 +/* INITFQ-specific flags */ +#define QM_INITFQ_WE_MASK 0x01ff /* 'Write Enable' flags; */ +#define QM_INITFQ_WE_OAC 0x0100 +#define QM_INITFQ_WE_ORPC 0x0080 +#define QM_INITFQ_WE_CGID 0x0040 +#define QM_INITFQ_WE_FQCTRL 0x0020 +#define QM_INITFQ_WE_DESTWQ 0x0010 +#define QM_INITFQ_WE_ICSCRED 0x0008 +#define QM_INITFQ_WE_TDTHRESH 0x0004 +#define QM_INITFQ_WE_CONTEXTB 0x0002 +#define QM_INITFQ_WE_CONTEXTA 0x0001 +/* INITCGR/MODIFYCGR-specific flags */ +#define QM_CGR_WE_MASK 0x07ff /* 'Write Enable Mask'; */ +#define QM_CGR_WE_WR_PARM_G 0x0400 +#define QM_CGR_WE_WR_PARM_Y 0x0200 +#define QM_CGR_WE_WR_PARM_R 0x0100 +#define QM_CGR_WE_WR_EN_G 0x0080 +#define QM_CGR_WE_WR_EN_Y 0x0040 +#define QM_CGR_WE_WR_EN_R 0x0020 +#define QM_CGR_WE_CSCN_EN 0x0010 +#define QM_CGR_WE_CSCN_TARG 0x0008 +#define QM_CGR_WE_CSTD_EN 0x0004 +#define QM_CGR_WE_CS_THRES 0x0002 +#define QM_CGR_WE_MODE 0x0001 + +/* See 1.5.8.5.1: "Initialize FQ" */ +/* See 1.5.8.5.2: "Query FQ" */ +/* See 1.5.8.5.3: "Query FQ Non-Programmable Fields" */ +/* See 1.5.8.5.4: "Alter FQ State Commands " */ +/* See 1.5.8.6.1: "Initialize/Modify CGR" */ +/* See 1.5.8.6.2: "CGR Test Write" */ +/* See 1.5.8.6.3: "Query CGR" */ +/* See 1.5.8.6.4: "Query Congestion Group State" */ +struct qm_mcr_initfq { + u8 __reserved1[62]; +} __packed; +struct qm_mcr_queryfq { + u8 __reserved1[8]; + struct qm_fqd fqd; /* the FQD fields are here */ + u8 __reserved2[30]; +} __packed; +struct qm_mcr_queryfq_np { + u8 __reserved1; + u8 state; /* QM_MCR_NP_STATE_*** */ + u8 __reserved2; + u32 fqd_link:24; + u16 __reserved3:2; + u16 odp_seq:14; + u16 __reserved4:2; + u16 orp_nesn:14; + u16 __reserved5:1; + u16 orp_ea_hseq:15; + u16 __reserved6:1; + u16 orp_ea_tseq:15; + u8 __reserved7; + u32 orp_ea_hptr:24; + u8 __reserved8; + u32 orp_ea_tptr:24; + u8 __reserved9; + u32 pfdr_hptr:24; + u8 __reserved10; + u32 pfdr_tptr:24; + u8 __reserved11[5]; + u8 __reserved12:7; + u8 is:1; + u16 ics_surp; + u32 byte_cnt; + u8 __reserved13; + u32 frm_cnt:24; + u32 __reserved14; + u16 ra1_sfdr; /* QM_MCR_NP_RA1_*** */ + u16 ra2_sfdr; /* QM_MCR_NP_RA2_*** */ + u16 __reserved15; + u16 od1_sfdr; /* QM_MCR_NP_OD1_*** */ + u16 od2_sfdr; /* QM_MCR_NP_OD2_*** */ + u16 od3_sfdr; /* QM_MCR_NP_OD3_*** */ +} __packed; +struct qm_mcr_alterfq { + u8 fqs; /* Frame Queue Status */ + u8 __reserved1[61]; +} __packed; +struct qm_mcr_initcgr { + u8 __reserved1[62]; +} __packed; +struct qm_mcr_cgrtestwrite { + u16 __reserved1; + struct __qm_mc_cgr cgr; /* CGR fields */ + u8 __reserved2[3]; + u32 __reserved3:24; + u32 i_bcnt_hi:8;/* high 8-bits of 40-bit "Instant" */ + u32 i_bcnt_lo; /* low 32-bits of 40-bit */ + u32 __reserved4:24; + u32 a_bcnt_hi:8;/* high 8-bits of 40-bit "Average" */ + u32 a_bcnt_lo; /* low 32-bits of 40-bit */ + u16 lgt; /* Last Group Tick */ + u16 wr_prob_g; + u16 wr_prob_y; + u16 wr_prob_r; + u8 __reserved5[8]; +} __packed; +struct qm_mcr_querycgr { + u16 __reserved1; + struct __qm_mc_cgr cgr; /* CGR fields */ + u8 __reserved2[3]; + u32 __reserved3:24; + u32 i_bcnt_hi:8;/* high 8-bits of 40-bit "Instant" */ + u32 i_bcnt_lo; /* low 32-bits of 40-bit */ + u32 __reserved4:24; + u32 a_bcnt_hi:8;/* high 8-bits of 40-bit "Average" */ + u32 a_bcnt_lo; /* low 32-bits of 40-bit */ + u8 __reserved5[16]; +} __packed; +static inline u64 qm_mcr_querycgr_i_get64(const struct qm_mcr_querycgr *q) +{ + return ((u64)q->i_bcnt_hi << 32) | (u64)q->i_bcnt_lo; +} +static inline u64 qm_mcr_querycgr_a_get64(const struct qm_mcr_querycgr *q) +{ + return ((u64)q->a_bcnt_hi << 32) | (u64)q->a_bcnt_lo; +} +static inline u64 qm_mcr_cgrtestwrite_i_get64( + const struct qm_mcr_cgrtestwrite *q) +{ + return ((u64)q->i_bcnt_hi << 32) | (u64)q->i_bcnt_lo; +} +static inline u64 qm_mcr_cgrtestwrite_a_get64( + const struct qm_mcr_cgrtestwrite *q) +{ + return ((u64)q->a_bcnt_hi << 32) | (u64)q->a_bcnt_lo; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +#define qm_mcr_querycgr_i_set64(q, v) \ + do { \ + struct qm_mcr_querycgr *__q931 = (fd); \ + __q931->i_bcnt_hi = upper_32_bits(v); \ + __q931->i_bcnt_lo = lower_32_bits(v); \ + } while (0) +#define qm_mcr_querycgr_a_set64(q, v) \ + do { \ + struct qm_mcr_querycgr *__q931 = (fd); \ + __q931->a_bcnt_hi = upper_32_bits(v); \ + __q931->a_bcnt_lo = lower_32_bits(v); \ + } while (0) +struct __qm_mcr_querycongestion { + u32 __state[8]; +}; +struct qm_mcr_querycongestion { + u8 __reserved[30]; + /* Access this struct using QM_MCR_QUERYCONGESTION() */ + struct __qm_mcr_querycongestion state; +} __packed; +struct qm_mcr_querywq { + union { + u16 channel_wq; /* ignores wq (3 lsbits) */ + struct { + u16 id:13; /* enum qm_channel */ + u16 __reserved:3; + } __packed channel; + }; + u8 __reserved[28]; + u32 wq_len[8]; +} __packed; +struct qm_mc_result { + u8 verb; + u8 result; + union { + struct qm_mcr_initfq initfq; + struct qm_mcr_queryfq queryfq; + struct qm_mcr_queryfq_np queryfq_np; + struct qm_mcr_alterfq alterfq; + struct qm_mcr_initcgr initcgr; + struct qm_mcr_cgrtestwrite cgrtestwrite; + struct qm_mcr_querycgr querycgr; + struct qm_mcr_querycongestion querycongestion; + struct qm_mcr_querywq querywq; + }; +} __packed; +#define QM_MCR_VERB_RRID 0x80 +#define QM_MCR_VERB_MASK QM_MCC_VERB_MASK +#define QM_MCR_VERB_INITFQ_PARKED QM_MCC_VERB_INITFQ_PARKED +#define QM_MCR_VERB_INITFQ_SCHED QM_MCC_VERB_INITFQ_SCHED +#define QM_MCR_VERB_QUERYFQ QM_MCC_VERB_QUERYFQ +#define QM_MCR_VERB_QUERYFQ_NP QM_MCC_VERB_QUERYFQ_NP +#define QM_MCR_VERB_QUERYWQ QM_MCC_VERB_QUERYWQ +#define QM_MCR_VERB_QUERYWQ_DEDICATED QM_MCC_VERB_QUERYWQ_DEDICATED +#define QM_MCR_VERB_ALTER_SCHED QM_MCC_VERB_ALTER_SCHED +#define QM_MCR_VERB_ALTER_FE QM_MCC_VERB_ALTER_FE +#define QM_MCR_VERB_ALTER_RETIRE QM_MCC_VERB_ALTER_RETIRE +#define QM_MCR_VERB_ALTER_OOS QM_MCC_VERB_ALTER_OOS +#define QM_MCR_RESULT_NULL 0x00 +#define QM_MCR_RESULT_OK 0xf0 +#define QM_MCR_RESULT_ERR_FQID 0xf1 +#define QM_MCR_RESULT_ERR_FQSTATE 0xf2 +#define QM_MCR_RESULT_ERR_NOTEMPTY 0xf3 /* OOS fails if FQ is !empty */ +#define QM_MCR_RESULT_ERR_BADCHANNEL 0xf4 +#define QM_MCR_RESULT_PENDING 0xf8 +#define QM_MCR_RESULT_ERR_BADCOMMAND 0xff +#define QM_MCR_NP_STATE_FE 0x10 +#define QM_MCR_NP_STATE_R 0x08 +#define QM_MCR_NP_STATE_MASK 0x07 /* Reads FQD::STATE; */ +#define QM_MCR_NP_STATE_OOS 0x00 +#define QM_MCR_NP_STATE_RETIRED 0x01 +#define QM_MCR_NP_STATE_TEN_SCHED 0x02 +#define QM_MCR_NP_STATE_TRU_SCHED 0x03 +#define QM_MCR_NP_STATE_PARKED 0x04 +#define QM_MCR_NP_STATE_ACTIVE 0x05 +#define QM_MCR_NP_PTR_MASK 0x07ff /* for RA[12] & OD[123] */ +#define QM_MCR_NP_RA1_NRA(v) (((v) >> 14) & 0x3) /* FQD::NRA */ +#define QM_MCR_NP_RA2_IT(v) (((v) >> 14) & 0x1) /* FQD::IT */ +#define QM_MCR_NP_OD1_NOD(v) (((v) >> 14) & 0x3) /* FQD::NOD */ +#define QM_MCR_NP_OD3_NPC(v) (((v) >> 14) & 0x3) /* FQD::NPC */ +#define QM_MCR_FQS_ORLPRESENT 0x02 /* ORL fragments to come */ +#define QM_MCR_FQS_NOTEMPTY 0x01 /* FQ has enqueued frames */ +/* This extracts the state for congestion group 'n' from a query response. + * Eg. + * u8 cgr = [...]; + * struct qm_mc_result *res = [...]; + * printf("congestion group %d congestion state: %d\n", cgr, + * QM_MCR_QUERYCONGESTION(&res->querycongestion.state, cgr)); + */ +#define __CGR_WORD(num) (num >> 5) +#define __CGR_SHIFT(num) (num & 0x1f) +#define __CGR_NUM (sizeof(struct __qm_mcr_querycongestion) << 3) +static inline int QM_MCR_QUERYCONGESTION(struct __qm_mcr_querycongestion *p, + u8 cgr) +{ + return p->__state[__CGR_WORD(cgr)] & (0x80000000 >> __CGR_SHIFT(cgr)); +} + + +/*********************/ +/* Utility interface */ +/*********************/ + +/* Represents an allocator over a range of FQIDs. NB, accesses are not locked, + * spinlock them yourself if needed. */ +struct qman_fqid_pool; + +/* Create/destroy a FQID pool, num must be a multiple of 32. NB, _destroy() + * always succeeds, but returns non-zero if there were "leaked" FQID + * allocations. */ +struct qman_fqid_pool *qman_fqid_pool_create(u32 fqid_start, u32 num); +int qman_fqid_pool_destroy(struct qman_fqid_pool *pool); +/* Alloc/free a FQID from the range. _alloc() returns zero for success. */ +int qman_fqid_pool_alloc(struct qman_fqid_pool *pool, u32 *fqid); +void qman_fqid_pool_free(struct qman_fqid_pool *pool, u32 fqid); +u32 qman_fqid_pool_used(struct qman_fqid_pool *pool); + +/*******************************************************************/ +/* Managed (aka "shared" or "mux/demux") portal, high-level i/face */ +/*******************************************************************/ + + /* Portal and Frame Queues */ + /* ----------------------- */ +/* Represents a managed portal */ +struct qman_portal; + +/* This object type represents Qman frame queue descriptors (FQD), it is + * cacheline-aligned, and initialised by qman_create_fq(). The structure is + * defined further down. */ +struct qman_fq; + +/* This object type represents a Qman congestion group, it is defined further + * down. */ +struct qman_cgr; + +struct qman_portal_config { + /* If the caller enables DQRR stashing (and thus wishes to operate the + * portal from only one cpu), this is the logical CPU that the portal + * will stash to. Whether stashing is enabled or not, this setting is + * also used for any "core-affine" portals, ie. default portals + * associated to the corresponding cpu. -1 implies that there is no core + * affinity configured. */ + int cpu; + /* portal interrupt line */ + int irq; + /* the unique index of this portal */ + u32 index; + /* Is this portal shared? (If so, it has coarser locking and demuxes + * processing on behalf of other CPUs.) */ + int is_shared; + /* The portal's dedicated channel id, use this value for initialising + * frame queues to target this portal when scheduled. */ + enum qm_channel channel; + /* A mask of which pool channels this portal has dequeue access to + * (using QM_SDQCR_CHANNELS_POOL(n) for the bitmask) */ + u32 pools; + /* Is stashing available? (Depends on PAMU config) */ + int has_stashing; +}; + +/* This enum, and the callback type that returns it, are used when handling + * dequeued frames via DQRR. Note that for "null" callbacks registered with the + * portal object (for handling dequeues that do not demux because contextB is + * NULL), the return value *MUST* be qman_cb_dqrr_consume. */ +enum qman_cb_dqrr_result { + /* DQRR entry can be consumed */ + qman_cb_dqrr_consume, + /* Like _consume, but requests parking - FQ must be held-active */ + qman_cb_dqrr_park, + /* Does not consume, for DCA mode only. This allows out-of-order + * consumes by explicit calls to qman_dca() and/or the use of implicit + * DCA via EQCR entries. */ + qman_cb_dqrr_defer, + /* Stop processing without consuming this ring entry. Exits the current + * qman_poll_dqrr() or interrupt-handling, as appropriate. If within an + * interrupt handler, the callback would typically call + * qman_irqsource_remove(QM_PIRQ_DQRI) before returning this value, + * otherwise the interrupt will reassert immediately. */ + qman_cb_dqrr_stop, + /* Like qman_cb_dqrr_stop, but consumes the current entry. */ + qman_cb_dqrr_consume_stop +}; +typedef enum qman_cb_dqrr_result (*qman_cb_dqrr)(struct qman_portal *qm, + struct qman_fq *fq, + const struct qm_dqrr_entry *dqrr); + +/* This callback type is used when handling ERNs, FQRNs and FQRLs via MR. They + * are always consumed after the callback returns. */ +typedef void (*qman_cb_mr)(struct qman_portal *qm, struct qman_fq *fq, + const struct qm_mr_entry *msg); + +/* s/w-visible states. Ie. tentatively scheduled + truly scheduled + active + + * held-active + held-suspended are just "sched". Things like "retired" will not + * be assumed until it is complete (ie. QMAN_FQ_STATE_CHANGING is set until + * then, to indicate it's completing and to gate attempts to retry the retire + * command). Note, park commands do not set QMAN_FQ_STATE_CHANGING because it's + * technically impossible in the case of enqueue DCAs (which refer to DQRR ring + * index rather than the FQ that ring entry corresponds to), so repeated park + * commands are allowed (if you're silly enough to try) but won't change FQ + * state, and the resulting park notifications move FQs from "sched" to + * "parked". */ +enum qman_fq_state { + qman_fq_state_oos, + qman_fq_state_parked, + qman_fq_state_sched, + qman_fq_state_retired +}; + +/* Frame queue objects (struct qman_fq) are stored within memory passed to + * qman_create_fq(), as this allows stashing of caller-provided demux callback + * pointers at no extra cost to stashing of (driver-internal) FQ state. If the + * caller wishes to add per-FQ state and have it benefit from dequeue-stashing, + * they should; + * + * (a) extend the qman_fq structure with their state; eg. + * + * // myfq is allocated and driver_fq callbacks filled in; + * struct my_fq { + * struct qman_fq base; + * int an_extra_field; + * [ ... add other fields to be associated with each FQ ...] + * } *myfq = some_my_fq_allocator(); + * struct qman_fq *fq = qman_create_fq(fqid, flags, &myfq->base); + * + * // in a dequeue callback, access extra fields from 'fq' via a cast; + * struct my_fq *myfq = (struct my_fq *)fq; + * do_something_with(myfq->an_extra_field); + * [...] + * + * (b) when and if configuring the FQ for context stashing, specify how ever + * many cachelines are required to stash 'struct my_fq', to accelerate not + * only the Qman driver but the callback as well. + */ + +struct qman_fq_cb { + qman_cb_dqrr dqrr; /* for dequeued frames */ + qman_cb_mr ern; /* for s/w ERNs */ + qman_cb_mr dc_ern; /* for diverted h/w ERNs */ + qman_cb_mr fqs; /* frame-queue state changes*/ +}; + +struct qman_fq { + /* Caller of qman_create_fq() provides these demux callbacks */ + struct qman_fq_cb cb; + /* These are internal to the driver, don't touch. In particular, they + * may change, be removed, or extended (so you shouldn't rely on + * sizeof(qman_fq) being a constant). */ + spinlock_t fqlock; + u32 fqid; + volatile unsigned long flags; + enum qman_fq_state state; + int cgr_groupid; + struct rb_node node; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + u32 key; +#endif +}; + +/* This callback type is used when handling congestion group entry/exit. + * 'congested' is non-zero on congestion-entry, and zero on congestion-exit. */ +typedef void (*qman_cb_cgr)(struct qman_portal *qm, + struct qman_cgr *cgr, int congested); + +struct qman_cgr { + /* Set these prior to qman_create_cgr() */ + u32 cgrid; /* 0..255, but u32 to allow specials like -1, 256, etc.*/ + qman_cb_cgr cb; + /* These are private to the driver */ + enum qm_channel chan; /* portal channel this object is created on */ + struct list_head node; +}; + +/* Flags to qman_create_fq() */ +#define QMAN_FQ_FLAG_NO_ENQUEUE 0x00000001 /* can't enqueue */ +#define QMAN_FQ_FLAG_NO_MODIFY 0x00000002 /* can only enqueue */ +#define QMAN_FQ_FLAG_TO_DCPORTAL 0x00000004 /* consumed by CAAM/PME/Fman */ +#define QMAN_FQ_FLAG_LOCKED 0x00000008 /* multi-core locking */ +#define QMAN_FQ_FLAG_AS_IS 0x00000010 /* query h/w state */ +#define QMAN_FQ_FLAG_DYNAMIC_FQID 0x00000020 /* (de)allocate fqid */ + +/* Flags to qman_destroy_fq() */ +#define QMAN_FQ_DESTROY_PARKED 0x00000001 /* FQ can be parked or OOS */ + +/* Flags from qman_fq_state() */ +#define QMAN_FQ_STATE_CHANGING 0x80000000 /* 'state' is changing */ +#define QMAN_FQ_STATE_NE 0x40000000 /* retired FQ isn't empty */ +#define QMAN_FQ_STATE_ORL 0x20000000 /* retired FQ has ORL */ +#define QMAN_FQ_STATE_BLOCKOOS 0xe0000000 /* if any are set, no OOS */ +#define QMAN_FQ_STATE_CGR_EN 0x10000000 /* CGR enabled */ +#define QMAN_FQ_STATE_VDQCR 0x08000000 /* being volatile dequeued */ + +/* Flags to qman_init_fq() */ +#define QMAN_INITFQ_FLAG_SCHED 0x00000001 /* schedule rather than park */ +#define QMAN_INITFQ_FLAG_NULL 0x00000002 /* zero 'contextB', no demux */ +#define QMAN_INITFQ_FLAG_LOCAL 0x00000004 /* set dest portal */ + +/* Flags to qman_volatile_dequeue() */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT +#define QMAN_VOLATILE_FLAG_WAIT 0x00000001 /* wait if VDQCR is in use */ +#define QMAN_VOLATILE_FLAG_WAIT_INT 0x00000002 /* if wait, interruptible? */ +#define QMAN_VOLATILE_FLAG_FINISH 0x00000004 /* wait till VDQCR completes */ +#endif + +/* Flags to qman_enqueue(). NB, the strange numbering is to align with hardware, + * bit-wise. (NB: the PME API is sensitive to these precise numberings too, so + * any change here should be audited in PME.) */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT +#define QMAN_ENQUEUE_FLAG_WAIT 0x00010000 /* wait if EQCR is full */ +#define QMAN_ENQUEUE_FLAG_WAIT_INT 0x00020000 /* if wait, interruptible? */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC +#define QMAN_ENQUEUE_FLAG_WAIT_SYNC 0x00000004 /* if wait, until consumed? */ +#endif +#endif +#define QMAN_ENQUEUE_FLAG_WATCH_CGR 0x00080000 /* watch congestion state */ +#define QMAN_ENQUEUE_FLAG_DCA 0x00008000 /* perform enqueue-DCA */ +#define QMAN_ENQUEUE_FLAG_DCA_PARK 0x00004000 /* If DCA, requests park */ +#define QMAN_ENQUEUE_FLAG_DCA_PTR(p) /* If DCA, p is DQRR entry */ \ + (((u32)(p) << 2) & 0x00000f00) +#define QMAN_ENQUEUE_FLAG_C_GREEN 0x00000000 /* choose one C_*** flag */ +#define QMAN_ENQUEUE_FLAG_C_YELLOW 0x00000008 +#define QMAN_ENQUEUE_FLAG_C_RED 0x00000010 +#define QMAN_ENQUEUE_FLAG_C_OVERRIDE 0x00000018 +/* For the ORP-specific qman_enqueue_orp() variant; + * - this flag indicates "Not Last In Sequence", ie. all but the final fragment + * of a frame. */ +#define QMAN_ENQUEUE_FLAG_NLIS 0x01000000 +/* - this flag performs no enqueue but fills in an ORP sequence number that + * would otherwise block it (eg. if a frame has been dropped). */ +#define QMAN_ENQUEUE_FLAG_HOLE 0x02000000 +/* - this flag performs no enqueue but advances NESN to the given sequence + * number. */ +#define QMAN_ENQUEUE_FLAG_NESN 0x04000000 + +/* Flags to qman_modify_cgr() */ +#define QMAN_CGR_FLAG_USE_INIT 0x00000001 +#define QMAN_CGR_MODE_FRAME 0x00000001 + + /* Portal Management */ + /* ----------------- */ +/** + * qman_get_portal_config - get portal configuration settings + * + * This returns a read-only view of the current cpu's affine portal settings. + */ +const struct qman_portal_config *qman_get_portal_config(void); + +#ifdef CONFIG_FSL_QMAN_NULL_FQ_DEMUX +/** + * qman_get_null_cb - get callbacks currently used for "null" frame queues + * + * Copies the callbacks used for the affine portal of the current cpu. + */ +void qman_get_null_cb(struct qman_fq_cb *null_cb); + +/** + * qman_set_null_cb - set callbacks to use for "null" frame queues + * + * Sets the callbacks to use for the affine portal of the current cpu, whenever + * a DQRR or MR entry refers to a "null" FQ object. (Eg. zero-conf messaging.) + */ +void qman_set_null_cb(const struct qman_fq_cb *null_cb); +#endif + +/** + * qman_irqsource_get - return the portal work that is interrupt-driven + * + * Returns a bitmask of QM_PIRQ_**I processing sources that are currently + * enabled for interrupt handling on the current cpu's affine portal. These + * sources will trigger the portal interrupt and the interrupt handler (or a + * tasklet/bottom-half it defers to) will perform the corresponding processing + * work. The qman_poll_***() functions will only process sources that are not in + * this bitmask. If the current CPU is sharing a portal hosted on another CPU, + * this always returns zero. + */ +u32 qman_irqsource_get(void); + +/** + * qman_irqsource_add - add processing sources to be interrupt-driven + * @bits: bitmask of QM_PIRQ_**I processing sources + * + * Adds processing sources that should be interrupt-driven (rather than + * processed via qman_poll_***() functions). Returns zero for success, or + * -EINVAL if the current CPU is sharing a portal hosted on another CPU. + */ +int qman_irqsource_add(u32 bits); + +/** + * qman_irqsource_remove - remove processing sources from being interrupt-driven + * @bits: bitmask of QM_PIRQ_**I processing sources + * + * Removes processing sources from being interrupt-driven, so that they will + * instead be processed via qman_poll_***() functions. Returns zero for success, + * or -EINVAL if the current CPU is sharing a portal hosted on another CPU. + */ +int qman_irqsource_remove(u32 bits); + +/** + * qman_affine_cpus - return a mask of cpus that have affine portals + */ +const cpumask_t *qman_affine_cpus(void); + +/** + * qman_poll_dqrr - process DQRR (fast-path) entries + * @limit: the maximum number of DQRR entries to process + * + * Use of this function requires that DQRR processing not be interrupt-driven. + * Ie. the value returned by qman_irqsource_get() should not include + * QM_PIRQ_DQRI. If the current CPU is sharing a portal hosted on another CPU, + * this function will return -EINVAL, otherwise the return value is >=0 and + * represents the number of DQRR entries processed. + */ +int qman_poll_dqrr(unsigned int limit); + +/** + * qman_poll_slow - process anything (except DQRR) that isn't interrupt-driven. + * + * This function does any portal processing that isn't interrupt-driven. If the + * current CPU is sharing a portal hosted on another CPU, this function will + * return (u32)-1, otherwise the return value is a bitmask of QM_PIRQ_* sources + * indicating what interrupt sources were actually processed by the call. + */ +u32 qman_poll_slow(void); + +/** + * qman_poll - legacey wrapper for qman_poll_dqrr() and qman_poll_slow() + * + * Dispatcher logic on a cpu can use this to trigger any maintenance of the + * affine portal. There are two classes of portal processing in question; + * fast-path (which involves demuxing dequeue ring (DQRR) entries and tracking + * enqueue ring (EQCR) consumption), and slow-path (which involves EQCR + * thresholds, congestion state changes, etc). This function does whatever + * processing is not triggered by interrupts. + * + * Note, if DQRR and some slow-path processing are poll-driven (rather than + * interrupt-driven) then this function uses a heuristic to determine how often + * to run slow-path processing - as slow-path processing introduces at least a + * minimum latency each time it is run, whereas fast-path (DQRR) processing is + * close to zero-cost if there is no work to be done. Applications can tune this + * behaviour themselves by using qman_poll_dqrr() and qman_poll_slow() directly + * rather than going via this wrapper. + */ +void qman_poll(void); + +/** + * qman_recovery_cleanup_fq - in recovery mode, cleanup a FQ of unknown state + */ +int qman_recovery_cleanup_fq(u32 fqid); + +/** + * qman_recovery_exit - leave recovery mode + */ +int qman_recovery_exit(void); + +/** + * qman_stop_dequeues - Stop h/w dequeuing to the s/w portal + * + * Disables DQRR processing of the portal. This is reference-counted, so + * qman_start_dequeues() must be called as many times as qman_stop_dequeues() to + * truly re-enable dequeuing. + */ +void qman_stop_dequeues(void); + +/** + * qman_start_dequeues - (Re)start h/w dequeuing to the s/w portal + * + * Enables DQRR processing of the portal. This is reference-counted, so + * qman_start_dequeues() must be called as many times as qman_stop_dequeues() to + * truly re-enable dequeuing. + */ +void qman_start_dequeues(void); + +/** + * qman_static_dequeue_add - Add pool channels to the portal SDQCR + * @pools: bit-mask of pool channels, using QM_SDQCR_CHANNELS_POOL(n) + * + * Adds a set of pool channels to the portal's static dequeue command register + * (SDQCR). The requested pools are limited to those the portal has dequeue + * access to. + */ +void qman_static_dequeue_add(u32 pools); + +/** + * qman_static_dequeue_del - Remove pool channels from the portal SDQCR + * @pools: bit-mask of pool channels, using QM_SDQCR_CHANNELS_POOL(n) + * + * Removes a set of pool channels from the portal's static dequeue command + * register (SDQCR). The requested pools are limited to those the portal has + * dequeue access to. + */ +void qman_static_dequeue_del(u32 pools); + +/** + * qman_static_dequeue_get - return the portal's current SDQCR + * + * Returns the portal's current static dequeue command register (SDQCR). The + * entire register is returned, so if only the currently-enabled pool channels + * are desired, mask the return value with QM_SDQCR_CHANNELS_POOL_MASK. + */ +u32 qman_static_dequeue_get(void); + +/** + * qman_dca - Perform a Discrete Consumption Acknowledgement + * @dq: the DQRR entry to be consumed + * @park_request: indicates whether the held-active @fq should be parked + * + * Only allowed in DCA-mode portals, for DQRR entries whose handler callback had + * previously returned 'qman_cb_dqrr_defer'. NB, as with the other APIs, this + * does not take a 'portal' argument but implies the core affine portal from the + * cpu that is currently executing the function. For reasons of locking, this + * function must be called from the same CPU as that which processed the DQRR + * entry in the first place. + */ +void qman_dca(struct qm_dqrr_entry *dq, int park_request); + +/** + * qman_eqcr_is_empty - Determine if portal's EQCR is empty + * + * For use in situations where a cpu-affine caller needs to determine when all + * enqueues for the local portal have been processed by Qman but can't use the + * QMAN_ENQUEUE_FLAG_WAIT_SYNC flag to do this from the final qman_enqueue(). + * The function forces tracking of EQCR consumption (which normally doesn't + * happen until enqueue processing needs to find space to put new enqueue + * commands), and returns zero if the ring still has unprocessed entries, + * non-zero if it is empty. + */ +int qman_eqcr_is_empty(void); + + /* FQ management */ + /* ------------- */ +/** + * qman_create_fq - Allocates a FQ + * @fqid: the index of the FQD to encapsulate, must be "Out of Service" + * @flags: bit-mask of QMAN_FQ_FLAG_*** options + * @fq: memory for storing the 'fq', with callbacks filled in + * + * Creates a frame queue object for the given @fqid, unless the + * QMAN_FQ_FLAG_DYNAMIC_FQID flag is set in @flags, in which case a FQID is + * dynamically allocated (or the function fails if none are available). Once + * created, the caller should not touch the memory at 'fq' except as extended to + * adjacent memory for user-defined fields (see the definition of "struct + * qman_fq" for more info). NO_MODIFY is only intended for enqueuing to + * pre-existing frame-queues that aren't to be otherwise interfered with, it + * prevents all other modifications to the frame queue. The TO_DCPORTAL flag + * causes the driver to honour any contextB modifications requested in the + * qm_init_fq() API, as this indicates the frame queue will be consumed by a + * direct-connect portal (PME, CAAM, or Fman). When frame queues are consumed by + * software portals, the contextB field is controlled by the driver and can't be + * modified by the caller. If the AS_IS flag is specified, management commands + * will be used on portal @p to query state for frame queue @fqid and construct + * a frame queue object based on that, rather than assuming/requiring that it be + * Out of Service. + */ +int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq); + +/** + * qman_destroy_fq - Deallocates a FQ + * @fq: the frame queue object to release + * @flags: bit-mask of QMAN_FQ_FREE_*** options + * + * The memory for this frame queue object ('fq' provided in qman_create_fq()) is + * not deallocated but the caller regains ownership, to do with as desired. The + * FQ must be in the 'out-of-service' state unless the QMAN_FQ_FREE_PARKED flag + * is specified, in which case it may also be in the 'parked' state. + */ +void qman_destroy_fq(struct qman_fq *fq, u32 flags); + +/** + * qman_fq_fqid - Queries the frame queue ID of a FQ object + * @fq: the frame queue object to query + */ +u32 qman_fq_fqid(struct qman_fq *fq); + +/** + * qman_fq_state - Queries the state of a FQ object + * @fq: the frame queue object to query + * @state: pointer to state enum to return the FQ scheduling state + * @flags: pointer to state flags to receive QMAN_FQ_STATE_*** bitmask + * + * Queries the state of the FQ object, without performing any h/w commands. + * This captures the state, as seen by the driver, at the time the function + * executes. + */ +void qman_fq_state(struct qman_fq *fq, enum qman_fq_state *state, u32 *flags); + +/** + * qman_init_fq - Initialises FQ fields, leaves the FQ "parked" or "scheduled" + * @fq: the frame queue object to modify, must be 'parked' or new. + * @flags: bit-mask of QMAN_INITFQ_FLAG_*** options + * @opts: the FQ-modification settings, as defined in the low-level API + * + * The @opts parameter comes from the low-level portal API. Select + * QMAN_INITFQ_FLAG_SCHED in @flags to cause the frame queue to be scheduled + * rather than parked. Select QMAN_INITFQ_FLAG_NULL in @flags to configure a + * frame queue that will not demux to a 'struct qman_fq' object when dequeued + * frames or messages arrive at a software portal, but which will instead + * trigger the portal's 'null_cb' callbacks (see qman_create_portal()). NB, + * @opts can be NULL. + * + * Note that some fields and options within @opts may be ignored or overwritten + * by the driver; + * 1. the 'count' and 'fqid' fields are always ignored (this operation only + * affects one frame queue: @fq). + * 2. the QM_INITFQ_WE_CONTEXTB option of the 'we_mask' field and the associated + * 'fqd' structure's 'context_b' field are sometimes overwritten; + * - if @flags contains QMAN_INITFQ_FLAG_NULL, then context_b is initialised + * to zero by the driver, + * - if @fq was not created with QMAN_FQ_FLAG_TO_DCPORTAL, then context_b is + * initialised to a value used by the driver for demux. + * - if context_b is initialised for demux, so is context_a in case stashing + * is requested (see item 4). + * (So caller control of context_b is only possible for TO_DCPORTAL frame queue + * objects.) + * 3. if @flags contains QMAN_INITFQ_FLAG_LOCAL, the 'fqd' structure's + * 'dest::channel' field will be overwritten to match the portal used to issue + * the command. If the WE_DESTWQ write-enable bit had already been set by the + * caller, the channel workqueue will be left as-is, otherwise the write-enable + * bit is set and the workqueue is set to a default of 4. If the "LOCAL" flag + * isn't set, the destination channel/workqueue fields and the write-enable bit + * are left as-is. + * 4. if the driver overwrites context_a/b for demux, then if + * QM_INITFQ_WE_CONTEXTA is set, the driver will only overwrite + * context_a.address fields and will leave the stashing fields provided by the + * user alone, otherwise it will zero out the context_a.stashing fields. + */ +int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts); + +/** + * qman_schedule_fq - Schedules a FQ + * @fq: the frame queue object to schedule, must be 'parked' + * + * Schedules the frame queue, which must be Parked, which takes it to + * Tentatively-Scheduled or Truly-Scheduled depending on its fill-level. + */ +int qman_schedule_fq(struct qman_fq *fq); + +/** + * qman_retire_fq - Retires a FQ + * @fq: the frame queue object to retire + * @flags: FQ flags (as per qman_fq_state) if retirement completes immediately + * + * Retires the frame queue. This returns zero if it succeeds immediately, +1 if + * the retirement was started asynchronously, otherwise it returns negative for + * failure. When this function returns zero, @flags is set to indicate whether + * the retired FQ is empty and/or whether it has any ORL fragments (to show up + * as ERNs). Otherwise the corresponding flags will be known when a subsequent + * FQRN message shows up on the portal's message ring. + * + * NB, if the retirement is asynchronous (the FQ was in the Truly Scheduled or + * Active state), the completion will be via the message ring as a FQRN - but + * the corresponding callback may occur before this function returns!! Ie. the + * caller should be prepared to accept the callback as the function is called, + * not only once it has returned. + */ +int qman_retire_fq(struct qman_fq *fq, u32 *flags); + +/** + * qman_oos_fq - Puts a FQ "out of service" + * @fq: the frame queue object to be put out-of-service, must be 'retired' + * + * The frame queue must be retired and empty, and if any order restoration list + * was released as ERNs at the time of retirement, they must all be consumed. + */ +int qman_oos_fq(struct qman_fq *fq); + +/** + * qman_query_fq - Queries FQD fields (via h/w query command) + * @fq: the frame queue object to be queried + * @fqd: storage for the queried FQD fields + */ +int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd); + +/** + * qman_query_fq_np - Queries non-programmable FQD fields + * @fq: the frame queue object to be queried + * @np: storage for the queried FQD fields + */ +int qman_query_fq_np(struct qman_fq *fq, struct qm_mcr_queryfq_np *np); + +/** + * qman_query_wq - Queries work queue lengths + * @query_dedicated: If non-zero, query length of WQs in the channel dedicated + * to this software portal. Otherwise, query length of WQs in a + * channel specified in wq. + * @wq: storage for the queried WQs lengths. Also specified the channel to + * to query if query_dedicated is zero. + */ +int qman_query_wq(u8 query_dedicated, struct qm_mcr_querywq *wq); + +/** + * qman_volatile_dequeue - Issue a volatile dequeue command + * @fq: the frame queue object to dequeue from (or NULL) + * @flags: a bit-mask of QMAN_VOLATILE_FLAG_*** options + * @vdqcr: bit mask of QM_VDQCR_*** options, as per qm_dqrr_vdqcr_set() + * + * Attempts to lock access to the portal's VDQCR volatile dequeue functionality. + * The function will block and sleep if QMAN_VOLATILE_FLAG_WAIT is specified and + * the VDQCR is already in use, otherwise returns non-zero for failure. If + * QMAN_VOLATILE_FLAG_FINISH is specified, the function will only return once + * the VDQCR command has finished executing (ie. once the callback for the last + * DQRR entry resulting from the VDQCR command has been called). If not using + * the FINISH flag, completion can be determined either by detecting the + * presence of the QM_DQRR_STAT_UNSCHEDULED and QM_DQRR_STAT_DQCR_EXPIRED bits + * in the "stat" field of the "struct qm_dqrr_entry" passed to the FQ's dequeue + * callback, or by waiting for the QMAN_FQ_STATE_VDQCR bit to disappear from the + * "flags" retrieved from qman_fq_state(). If @fq is non-NULL, the corresponding + * FQID will be substituted in to the VDQCR command, otherwise it is assumed + * that @vdqcr already contains the FQID to dequeue from. + */ +int qman_volatile_dequeue(struct qman_fq *fq, u32 flags, u32 vdqcr); + +/** + * qman_enqueue - Enqueue a frame to a frame queue + * @fq: the frame queue object to enqueue to + * @fd: a descriptor of the frame to be enqueued + * @flags: bit-mask of QMAN_ENQUEUE_FLAG_*** options + * + * Fills an entry in the EQCR of portal @qm to enqueue the frame described by + * @fd. The descriptor details are copied from @fd to the EQCR entry, the 'pid' + * field is ignored. The return value is non-zero on error, such as ring full + * (and FLAG_WAIT not specified), congestion avoidance (FLAG_WATCH_CGR + * specified), etc. If the ring is full and FLAG_WAIT is specified, this + * function will block. If FLAG_INTERRUPT is set, the EQCI bit of the portal + * interrupt will assert when Qman consumes the EQCR entry (subject to "status + * disable", "enable", and "inhibit" registers). If FLAG_DCA is set, Qman will + * perform an implied "discrete consumption acknowledgement" on the dequeue + * ring's (DQRR) entry, at the ring index specified by the FLAG_DCA_IDX(x) + * macro. (As an alternative to issuing explicit DCA actions on DQRR entries, + * this implicit DCA can delay the release of a "held active" frame queue + * corresponding to a DQRR entry until Qman consumes the EQCR entry - providing + * order-preservation semantics in packet-forwarding scenarios.) If FLAG_DCA is + * set, then FLAG_DCA_PARK can also be set to imply that the DQRR consumption + * acknowledgement should "park request" the "held active" frame queue. Ie. + * when the portal eventually releases that frame queue, it will be left in the + * Parked state rather than Tentatively Scheduled or Truly Scheduled. If the + * portal is watching congestion groups, the QMAN_ENQUEUE_FLAG_WATCH_CGR flag + * is requested, and the FQ is a member of a congestion group, then this + * function returns -EAGAIN if the congestion group is currently congested. + * Note, this does not eliminate ERNs, as the async interface means we can be + * sending enqueue commands to an un-congested FQ that becomes congested before + * the enqueue commands are processed, but it does minimise needless thrashing + * of an already busy hardware resource by throttling many of the to-be-dropped + * enqueues "at the source". + */ +int qman_enqueue(struct qman_fq *fq, const struct qm_fd *fd, u32 flags); + +/** + * qman_enqueue_orp - Enqueue a frame to a frame queue using an ORP + * @fq: the frame queue object to enqueue to + * @fd: a descriptor of the frame to be enqueued + * @flags: bit-mask of QMAN_ENQUEUE_FLAG_*** options + * @orp: the frame queue object used as an order restoration point. + * @orp_seqnum: the sequence number of this frame in the order restoration path + * + * Similar to qman_enqueue(), but with the addition of an Order Restoration + * Point (@orp) and corresponding sequence number (@orp_seqnum) for this + * enqueue operation to employ order restoration. Each frame queue object acts + * as an Order Definition Point (ODP) by providing each frame dequeued from it + * with an incrementing sequence number, this value is generally ignored unless + * that sequence of dequeued frames will need order restoration later. Each + * frame queue object also encapsulates an Order Restoration Point (ORP), which + * is a re-assembly context for re-ordering frames relative to their sequence + * numbers as they are enqueued. The ORP does not have to be within the frame + * queue that receives the enqueued frame, in fact it is usually the frame + * queue from which the frames were originally dequeued. For the purposes of + * order restoration, multiple frames (or "fragments") can be enqueued for a + * single sequence number by setting the QMAN_ENQUEUE_FLAG_NLIS flag for all + * enqueues except the final fragment of a given sequence number. Ordering + * between sequence numbers is guaranteed, even if fragments of different + * sequence numbers are interlaced with one another. Fragments of the same + * sequence number will retain the order in which they are enqueued. If no + * enqueue is to performed, QMAN_ENQUEUE_FLAG_HOLE indicates that the given + * sequence number is to be "skipped" by the ORP logic (eg. if a frame has been + * dropped from a sequence), or QMAN_ENQUEUE_FLAG_NESN indicates that the given + * sequence number should become the ORP's "Next Expected Sequence Number". + * + * Side note: a frame queue object can be used purely as an ORP, without + * carrying any frames at all. Care should be taken not to deallocate a frame + * queue object that is being actively used as an ORP, as a future allocation + * of the frame queue object may start using the internal ORP before the + * previous use has finished. + */ +int qman_enqueue_orp(struct qman_fq *fq, const struct qm_fd *fd, u32 flags, + struct qman_fq *orp, u16 orp_seqnum); + +/** + * qman_alloc_fqid_range - Allocate a contiguous range of FQIDs + * @result: is set by the API to the base FQID of the allocated range + * @count: the number of FQIDs required + * @align: required alignment of the allocated range + * @partial: non-zero if the API can return fewer than @count FQIDs + + * Returns the number of frame queues allocated, or a negative error code. If + * @partial is non zero, the allocation request may return a smaller range of + * FQs than requested (though alignment will be as requested). If @partial is + * zero, the return value will either be 'count' or negative. + */ +int qman_alloc_fqid_range(u32 *result, u32 count, u32 align, int partial); +static inline int qman_alloc_fqid(u32 *result) +{ + return qman_alloc_fqid_range(result, 1, 0, 0); +} + +/** + * qman_release_fqid_range - Release the specified range of frame queue IDs + * @fqid: the base FQID of the range to deallocate + * @count: the number of FQIDs in the range + * + * This function can also be used to seed the allocator with ranges of FQIDs + * that it can subsequently use. Returns zero for success. + */ +void qman_release_fqid_range(u32 fqid, unsigned int count); +static inline void qman_release_fqid(u32 fqid) +{ + qman_release_fqid_range(fqid, 1); +} + + /* CGR management */ + /* -------------- */ +/** + * qman_create_cgr - Register a congestion group object + * @cgr: the 'cgr' object, with fields filled in + * @flags: QMAN_CGR_FLAG_* values + * @opts: optional state of CGR settings + * + * Registers this object to receiving congestion entry/exit callbacks on the + * portal affine to the cpu portal on which this API is executed. If opts is + * NULL then only the callback (cgr->cb) function is registered. If @flags + * contains QMAN_CGR_FLAG_USE_INIT, then an init hw command (which will reset + * any unspecified parameters) will be used rather than a modify hw hardware + * (which only modifies the specified parameters). + */ +int qman_create_cgr(struct qman_cgr *cgr, u32 flags, + struct qm_mcc_initcgr *opts); + +/** + * qman_delete_cgr - Deregisters a congestion group object + * @cgr: the 'cgr' object to deregister + * + * "Unplugs" this CGR object from the portal affine to the cpu on which this API + * is executed. This must be excuted on the same affine portal on which it was + * created. + */ +int qman_delete_cgr(struct qman_cgr *cgr); + +/** + * qman_modify_cgr - Modify CGR fields + * @cgr: the 'cgr' object to modify + * @flags: QMAN_CGR_FLAG_* values + * @opts: the CGR-modification settings + * + * The @opts parameter comes from the low-level portal API, and can be NULL. + * Note that some fields and options within @opts may be ignored or overwritten + * by the driver, in particular the 'cgrid' field is ignored (this operation + * only affects the given CGR object). If @flags contains + * QMAN_CGR_FLAG_USE_INIT, then an init hw command (which will reset any + * unspecified parameters) will be used rather than a modify hw hardware (which + * only modifies the specified parameters). + */ +int qman_modify_cgr(struct qman_cgr *cgr, u32 flags, + struct qm_mcc_initcgr *opts); + +/** +* qman_query_cgr - Queries CGR fields +* @cgr: the 'cgr' object to query +* @result: storage for the queried congestion group record +*/ +int qman_query_cgr(struct qman_cgr *cgr, struct qm_mcr_querycgr *result); + +/** + * qman_query_congestion - Queries the state of all congestion groups + * @congestion: storage for the queried state of all congestion groups + */ +int qman_query_congestion(struct qm_mcr_querycongestion *congestion); + + /* Helpers */ + /* ------- */ +/** + * qman_poll_fq_for_init - Check if an FQ has been initialised from OOS + * @fqid: the FQID that will be initialised by other s/w + * + * In many situations, a FQID is provided for communication between s/w + * entities, and whilst the consumer is responsible for initialising and + * scheduling the FQ, the producer(s) generally create a wrapper FQ object using + * and only call qman_enqueue() (no FQ initialisation, scheduling, etc). Ie; + * qman_create_fq(..., QMAN_FQ_FLAG_NO_MODIFY, ...); + * However, data can not be enqueued to the FQ until it is initialised out of + * the OOS state - this function polls for that condition. It is particularly + * useful for users of IPC functions - each endpoint's Rx FQ is the other + * endpoint's Tx FQ, so each side can initialise and schedule their Rx FQ object + * and then use this API on the (NO_MODIFY) Tx FQ object in order to + * synchronise. The function returns zero for success, +1 if the FQ is still in + * the OOS state, or negative if there was an error. + */ +static inline int qman_poll_fq_for_init(struct qman_fq *fq) +{ + struct qm_mcr_queryfq_np np; + int err; + err = qman_query_fq_np(fq, &np); + if (err) + return err; + if ((np.state & QM_MCR_NP_STATE_MASK) == QM_MCR_NP_STATE_OOS) + return 1; + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* FSL_QMAN_H */ + --- linux-ppc-3.8.0.orig/include/linux/efi.h +++ linux-ppc-3.8.0/include/linux/efi.h @@ -333,6 +333,7 @@ unsigned long count, u64 *max_size, int *reset_type); +typedef efi_status_t efi_query_variable_store_t(u32 attributes, unsigned long size); /* * EFI Configuration Table and GUID definitions @@ -575,9 +576,15 @@ #ifdef CONFIG_X86 extern void efi_late_init(void); extern void efi_free_boot_services(void); +extern efi_status_t efi_query_variable_store(u32 attributes, unsigned long size); #else static inline void efi_late_init(void) {} static inline void efi_free_boot_services(void) {} + +static inline efi_status_t efi_query_variable_store(u32 attributes, unsigned long size) +{ + return EFI_SUCCESS; +} #endif extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr); extern u64 efi_get_iobase (void); @@ -731,7 +738,7 @@ efi_get_variable_t *get_variable; efi_get_next_variable_t *get_next_variable; efi_set_variable_t *set_variable; - efi_query_variable_info_t *query_variable_info; + efi_query_variable_store_t *query_variable_store; }; struct efivars { --- linux-ppc-3.8.0.orig/include/linux/hugetlb.h +++ linux-ppc-3.8.0/include/linux/hugetlb.h @@ -185,8 +185,7 @@ extern const struct file_operations hugetlbfs_file_operations; extern const struct vm_operations_struct hugetlb_vm_ops; -struct file *hugetlb_file_setup(const char *name, unsigned long addr, - size_t size, vm_flags_t acct, +struct file *hugetlb_file_setup(const char *name, size_t size, vm_flags_t acct, struct user_struct **user, int creat_flags, int page_size_log); @@ -205,8 +204,8 @@ #define is_file_hugepages(file) 0 static inline struct file * -hugetlb_file_setup(const char *name, unsigned long addr, size_t size, - vm_flags_t acctflag, struct user_struct **user, int creat_flags, +hugetlb_file_setup(const char *name, size_t size, vm_flags_t acctflag, + struct user_struct **user, int creat_flags, int page_size_log) { return ERR_PTR(-ENOSYS); @@ -284,6 +283,13 @@ return hstate_inode(f->f_dentry->d_inode); } +static inline struct hstate *hstate_sizelog(int page_size_log) +{ + if (!page_size_log) + return &default_hstate; + return size_to_hstate(1 << page_size_log); +} + static inline struct hstate *hstate_vma(struct vm_area_struct *vma) { return hstate_file(vma->vm_file); @@ -348,11 +354,23 @@ return h - hstates; } -#else +pgoff_t __basepage_index(struct page *page); + +/* Return page->index in PAGE_SIZE units */ +static inline pgoff_t basepage_index(struct page *page) +{ + if (!PageCompound(page)) + return page->index; + + return __basepage_index(page); +} + +#else /* CONFIG_HUGETLB_PAGE */ struct hstate {}; #define alloc_huge_page_node(h, nid) NULL #define alloc_bootmem_huge_page(h) NULL #define hstate_file(f) NULL +#define hstate_sizelog(s) NULL #define hstate_vma(v) NULL #define hstate_inode(i) NULL #define huge_page_size(h) PAGE_SIZE @@ -367,6 +385,11 @@ } #define hstate_index_to_shift(index) 0 #define hstate_index(h) 0 -#endif + +static inline pgoff_t basepage_index(struct page *page) +{ + return page->index; +} +#endif /* CONFIG_HUGETLB_PAGE */ #endif /* _LINUX_HUGETLB_H */ --- linux-ppc-3.8.0.orig/include/linux/console.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/linux/perf_event.h +++ linux-ppc-3.8.0/include/linux/perf_event.h @@ -794,6 +794,12 @@ static inline void perf_event_task_tick(void) { } #endif +#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_CPU_SUP_INTEL) +extern void perf_restore_debug_store(void); +#else +static inline void perf_restore_debug_store(void) { } +#endif + #define perf_output_put(handle, x) perf_output_copy((handle), &(x), sizeof(x)) /* --- linux-ppc-3.8.0.orig/include/linux/rculist_nulls.h +++ linux-ppc-3.8.0/include/linux/rculist_nulls.h @@ -105,9 +105,14 @@ * @head: the head for your list. * @member: the name of the hlist_nulls_node within the struct. * + * The barrier() is needed to make sure compiler doesn't cache first element [1], + * as this loop can be restarted [2] + * [1] Documentation/atomic_ops.txt around line 114 + * [2] Documentation/RCU/rculist_nulls.txt around line 146 */ #define hlist_nulls_for_each_entry_rcu(tpos, pos, head, member) \ - for (pos = rcu_dereference_raw(hlist_nulls_first_rcu(head)); \ + for (({barrier();}), \ + pos = rcu_dereference_raw(hlist_nulls_first_rcu(head)); \ (!is_a_nulls(pos)) && \ ({ tpos = hlist_nulls_entry(pos, typeof(*tpos), member); 1; }); \ pos = rcu_dereference_raw(hlist_nulls_next_rcu(pos))) --- linux-ppc-3.8.0.orig/include/linux/device-mapper.h +++ linux-ppc-3.8.0/include/linux/device-mapper.h @@ -68,8 +68,8 @@ typedef int (*dm_preresume_fn) (struct dm_target *ti); typedef void (*dm_resume_fn) (struct dm_target *ti); -typedef int (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, - unsigned status_flags, char *result, unsigned maxlen); +typedef void (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, + unsigned status_flags, char *result, unsigned maxlen); typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv); --- linux-ppc-3.8.0.orig/include/linux/huge_mm.h +++ linux-ppc-3.8.0/include/linux/huge_mm.h @@ -113,7 +113,7 @@ do { \ pmd_t *____pmd = (__pmd); \ anon_vma_lock_write(__anon_vma); \ - anon_vma_unlock(__anon_vma); \ + anon_vma_unlock_write(__anon_vma); \ BUG_ON(pmd_trans_splitting(*____pmd) || \ pmd_trans_huge(*____pmd)); \ } while (0) --- linux-ppc-3.8.0.orig/include/linux/cgroup.h +++ linux-ppc-3.8.0/include/linux/cgroup.h @@ -303,9 +303,6 @@ /* CFTYPE_* flags */ unsigned int flags; - /* file xattrs */ - struct simple_xattrs xattrs; - int (*open)(struct inode *inode, struct file *file); ssize_t (*read)(struct cgroup *cgrp, struct cftype *cft, struct file *file, @@ -571,7 +568,7 @@ * * If a subsystem synchronizes against the parent in its ->css_online() and * before starting iterating, and synchronizes against @pos on each - * iteration, any descendant cgroup which finished ->css_offline() is + * iteration, any descendant cgroup which finished ->css_online() is * guaranteed to be visible in the future iterations. * * In other words, the following guarantees that a descendant can't escape --- linux-ppc-3.8.0.orig/include/linux/ipc_namespace.h +++ linux-ppc-3.8.0/include/linux/ipc_namespace.h @@ -43,8 +43,8 @@ size_t shm_ctlmax; size_t shm_ctlall; + unsigned long shm_tot; int shm_ctlmni; - int shm_tot; /* * Defines whether IPC_RMID is forced for _all_ shm segments regardless * of shmctl() --- linux-ppc-3.8.0.orig/include/linux/mm.h +++ linux-ppc-3.8.0/include/linux/mm.h @@ -1623,6 +1623,8 @@ unsigned long pfn); int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); +int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len); + struct page *follow_page(struct vm_area_struct *, unsigned long address, unsigned int foll_flags); --- linux-ppc-3.8.0.orig/include/linux/preempt.h +++ linux-ppc-3.8.0/include/linux/preempt.h @@ -93,14 +93,20 @@ #else /* !CONFIG_PREEMPT_COUNT */ -#define preempt_disable() do { } while (0) -#define sched_preempt_enable_no_resched() do { } while (0) -#define preempt_enable_no_resched() do { } while (0) -#define preempt_enable() do { } while (0) +/* + * Even if we don't have any preemption, we need preempt disable/enable + * to be barriers, so that we don't have things like get_user/put_user + * that can cause faults and scheduling migrate into our preempt-protected + * region. + */ +#define preempt_disable() barrier() +#define sched_preempt_enable_no_resched() barrier() +#define preempt_enable_no_resched() barrier() +#define preempt_enable() barrier() -#define preempt_disable_notrace() do { } while (0) -#define preempt_enable_no_resched_notrace() do { } while (0) -#define preempt_enable_notrace() do { } while (0) +#define preempt_disable_notrace() barrier() +#define preempt_enable_no_resched_notrace() barrier() +#define preempt_enable_notrace() barrier() #endif /* CONFIG_PREEMPT_COUNT */ --- linux-ppc-3.8.0.orig/include/linux/mailbox.h +++ linux-ppc-3.8.0/include/linux/mailbox.h @@ -0,0 +1,17 @@ +/* + * 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 pl320_ipc_transmit(u32 *data); +int pl320_ipc_register_notifier(struct notifier_block *nb); +int pl320_ipc_unregister_notifier(struct notifier_block *nb); --- linux-ppc-3.8.0.orig/include/linux/libps2.h +++ linux-ppc-3.8.0/include/linux/libps2.h @@ -36,7 +36,7 @@ wait_queue_head_t wait; unsigned long flags; - unsigned char cmdbuf[6]; + unsigned char cmdbuf[8]; unsigned char cmdcnt; unsigned char nak; }; --- linux-ppc-3.8.0.orig/include/linux/ata.h +++ linux-ppc-3.8.0/include/linux/ata.h @@ -954,7 +954,7 @@ } } -static inline bool atapi_command_packet_set(const u16 *dev_id) +static inline int atapi_command_packet_set(const u16 *dev_id) { return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f; } --- linux-ppc-3.8.0.orig/include/linux/dw_dmac.h +++ linux-ppc-3.8.0/include/linux/dw_dmac.h @@ -15,6 +15,26 @@ #include /** + * struct dw_dma_slave - Controller-specific information about a slave + * + * @dma_dev: required DMA master device. Depricated. + * @bus_id: name of this device channel, not just a device name since + * devices may have more than one channel e.g. "foo_tx" + * @cfg_hi: Platform-specific initializer for the CFG_HI register + * @cfg_lo: Platform-specific initializer for the CFG_LO register + * @src_master: src master for transfers on allocated channel. + * @dst_master: dest master for transfers on allocated channel. + */ +struct dw_dma_slave { + struct device *dma_dev; + const char *bus_id; + u32 cfg_hi; + u32 cfg_lo; + u8 src_master; + u8 dst_master; +}; + +/** * struct dw_dma_platform_data - Controller configuration parameters * @nr_channels: Number of channels supported by hardware (max 8) * @is_private: The device channels should be marked as private and not for @@ -23,6 +43,8 @@ * @nr_masters: Number of AHB masters supported by the controller * @data_width: Maximum data width supported by hardware per AHB master * (0 - 8bits, 1 - 16bits, ..., 5 - 256bits) + * @sd: slave specific data. Used for configuring channels + * @sd_count: count of slave data structures passed. */ struct dw_dma_platform_data { unsigned int nr_channels; @@ -36,6 +58,9 @@ unsigned short block_size; unsigned char nr_masters; unsigned char data_width[4]; + + struct dw_dma_slave *sd; + unsigned int sd_count; }; /* bursts size */ @@ -50,23 +75,6 @@ DW_DMA_MSIZE_256, }; -/** - * struct dw_dma_slave - Controller-specific information about a slave - * - * @dma_dev: required DMA master device - * @cfg_hi: Platform-specific initializer for the CFG_HI register - * @cfg_lo: Platform-specific initializer for the CFG_LO register - * @src_master: src master for transfers on allocated channel. - * @dst_master: dest master for transfers on allocated channel. - */ -struct dw_dma_slave { - struct device *dma_dev; - u32 cfg_hi; - u32 cfg_lo; - u8 src_master; - u8 dst_master; -}; - /* Platform-configurable bits in CFG_HI */ #define DWC_CFGH_FCMODE (1 << 0) #define DWC_CFGH_FIFO_MODE (1 << 1) @@ -104,5 +112,6 @@ dma_addr_t dw_dma_get_src_addr(struct dma_chan *chan); dma_addr_t dw_dma_get_dst_addr(struct dma_chan *chan); +bool dw_dma_generic_filter(struct dma_chan *chan, void *param); #endif /* DW_DMAC_H */ --- linux-ppc-3.8.0.orig/include/linux/thermal.h +++ linux-ppc-3.8.0/include/linux/thermal.h @@ -44,7 +44,7 @@ /* Adding event notification support elements */ #define THERMAL_GENL_FAMILY_NAME "thermal_event" #define THERMAL_GENL_VERSION 0x01 -#define THERMAL_GENL_MCAST_GROUP_NAME "thermal_mc_group" +#define THERMAL_GENL_MCAST_GROUP_NAME "thermal_mc_grp" /* Default Thermal Governor */ #if defined(CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE) --- linux-ppc-3.8.0.orig/include/linux/fsl_bman.h +++ linux-ppc-3.8.0/include/linux/fsl_bman.h @@ -0,0 +1,471 @@ +/* Copyright 2008-2011 Freescale Semiconductor, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FSL_BMAN_H +#define FSL_BMAN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Last updated for v00.79 of the BG */ + +/* Portal processing (interrupt) sources */ +#define BM_PIRQ_RCRI 0x00000002 /* RCR Ring (below threshold) */ +#define BM_PIRQ_BSCN 0x00000001 /* Buffer depletion State Change */ + +/* This wrapper represents a bit-array for the depletion state of the 64 Bman + * buffer pools. */ +struct bman_depletion { + u32 __state[2]; +}; +#define BMAN_DEPLETION_EMPTY { { 0x00000000, 0x00000000 } } +#define BMAN_DEPLETION_FULL { { 0xffffffff, 0xffffffff } } +#define __bmdep_word(x) ((x) >> 5) +#define __bmdep_shift(x) ((x) & 0x1f) +#define __bmdep_bit(x) (0x80000000 >> __bmdep_shift(x)) +static inline void bman_depletion_init(struct bman_depletion *c) +{ + c->__state[0] = c->__state[1] = 0; +} +static inline void bman_depletion_fill(struct bman_depletion *c) +{ + c->__state[0] = c->__state[1] = ~0; +} +static inline int bman_depletion_get(const struct bman_depletion *c, u8 bpid) +{ + return c->__state[__bmdep_word(bpid)] & __bmdep_bit(bpid); +} +static inline void bman_depletion_set(struct bman_depletion *c, u8 bpid) +{ + c->__state[__bmdep_word(bpid)] |= __bmdep_bit(bpid); +} +static inline void bman_depletion_unset(struct bman_depletion *c, u8 bpid) +{ + c->__state[__bmdep_word(bpid)] &= ~__bmdep_bit(bpid); +} + +/* ------------------------------------------------------- */ +/* --- Bman data structures (and associated constants) --- */ + +/* Represents s/w corenet portal mapped data structures */ +struct bm_rcr_entry; /* RCR (Release Command Ring) entries */ +struct bm_mc_command; /* MC (Management Command) command */ +struct bm_mc_result; /* MC result */ + +/* Code-reduction, define a wrapper for 48-bit buffers. In cases where a buffer + * pool id specific to this buffer is needed (BM_RCR_VERB_CMD_BPID_MULTI, + * BM_MCC_VERB_ACQUIRE), the 'bpid' field is used. */ +struct bm_buffer { + union { + struct { + u8 __reserved1; + u8 bpid; + u16 hi; /* High 16-bits of 48-bit address */ + u32 lo; /* Low 32-bits of 48-bit address */ + }; + struct { + u64 __notaddress:16; + u64 addr:48; + }; + }; +} __attribute__((aligned(8))); +static inline u64 bm_buffer_get64(const struct bm_buffer *buf) +{ + return buf->addr; +} +static inline dma_addr_t bm_buf_addr(const struct bm_buffer *buf) +{ + return (dma_addr_t)buf->addr; +} +/* Macro, so we compile better if 'v' isn't always 64-bit */ +/* Note: this first version is causing a noticable performance degradation, + * which needs analysis, so leaving it commented out for now. The second version + * achieves optimal performance. */ +#if 0 +#define bm_buffer_set64(buf, v) \ + do { \ + struct bm_buffer *__buf931 = (buf); \ + __buf931->addr = v; \ + } while (0) +#else +#define bm_buffer_set64(buf, v) \ + do { \ + struct bm_buffer *__buf931 = (buf); \ + __buf931->hi = upper_32_bits(v); \ + __buf931->lo = lower_32_bits(v); \ + } while (0) +#endif + +/* See 1.5.3.5.4: "Release Command" */ +struct bm_rcr_entry { + union { + struct { + u8 __dont_write_directly__verb; + u8 bpid; /* used with BM_RCR_VERB_CMD_BPID_SINGLE */ + u8 __reserved1[62]; + }; + struct bm_buffer bufs[8]; + }; +} __packed; +#define BM_RCR_VERB_VBIT 0x80 +#define BM_RCR_VERB_CMD_MASK 0x70 /* one of two values; */ +#define BM_RCR_VERB_CMD_BPID_SINGLE 0x20 +#define BM_RCR_VERB_CMD_BPID_MULTI 0x30 +#define BM_RCR_VERB_BUFCOUNT_MASK 0x0f /* values 1..8 */ + +/* See 1.5.3.1: "Acquire Command" */ +/* See 1.5.3.2: "Query Command" */ +struct bm_mcc_acquire { + u8 bpid; + u8 __reserved1[62]; +} __packed; +struct bm_mcc_query { + u8 __reserved2[63]; +} __packed; +struct bm_mc_command { + u8 __dont_write_directly__verb; + union { + struct bm_mcc_acquire acquire; + struct bm_mcc_query query; + }; +} __packed; +#define BM_MCC_VERB_VBIT 0x80 +#define BM_MCC_VERB_CMD_MASK 0x70 /* where the verb contains; */ +#define BM_MCC_VERB_CMD_ACQUIRE 0x10 +#define BM_MCC_VERB_CMD_QUERY 0x40 +#define BM_MCC_VERB_ACQUIRE_BUFCOUNT 0x0f /* values 1..8 go here */ + +/* See 1.5.3.3: "Acquire Reponse" */ +/* See 1.5.3.4: "Query Reponse" */ +struct bm_pool_state { + u8 __reserved1[32]; + /* "availability state" and "depletion state" */ + struct { + u8 __reserved1[8]; + /* Access using bman_depletion_***() */ + struct bman_depletion state; + } as, ds; +}; +struct bm_mc_result { + union { + struct { + u8 verb; + u8 __reserved1[63]; + }; + union { + struct { + u8 __reserved1; + u8 bpid; + u8 __reserved2[62]; + }; + struct bm_buffer bufs[8]; + } acquire; + struct bm_pool_state query; + }; +} __packed; +#define BM_MCR_VERB_VBIT 0x80 +#define BM_MCR_VERB_CMD_MASK BM_MCC_VERB_CMD_MASK +#define BM_MCR_VERB_CMD_ACQUIRE BM_MCC_VERB_CMD_ACQUIRE +#define BM_MCR_VERB_CMD_QUERY BM_MCC_VERB_CMD_QUERY +#define BM_MCR_VERB_CMD_ERR_INVALID 0x60 +#define BM_MCR_VERB_CMD_ERR_ECC 0x70 +#define BM_MCR_VERB_ACQUIRE_BUFCOUNT BM_MCC_VERB_ACQUIRE_BUFCOUNT /* 0..8 */ +/* Determine the "availability state" of pool 'p' from a query result 'r' */ +#define BM_MCR_QUERY_AVAILABILITY(r,p) bman_depletion_get(&r->query.as.state,p) +/* Determine the "depletion state" of pool 'p' from a query result 'r' */ +#define BM_MCR_QUERY_DEPLETION(r,p) bman_depletion_get(&r->query.ds.state,p) + +/*******************************************************************/ +/* Managed (aka "shared" or "mux/demux") portal, high-level i/face */ +/*******************************************************************/ + + /* Portal and Buffer Pools */ + /* ----------------------- */ +/* Represents a managed portal */ +struct bman_portal; + +/* This object type represents Bman buffer pools. */ +struct bman_pool; + +struct bman_portal_config { + /* This is used for any "core-affine" portals, ie. default portals + * associated to the corresponding cpu. -1 implies that there is no core + * affinity configured. */ + int cpu; + /* portal interrupt line */ + int irq; + /* the unique index of this portal */ + u32 index; + /* Is this portal shared? (If so, it has coarser locking and demuxes + * processing on behalf of other CPUs.) */ + int is_shared; + /* These are the buffer pool IDs that may be used via this portal. */ + struct bman_depletion mask; +}; + +/* This callback type is used when handling pool depletion entry/exit. The + * 'cb_ctx' value is the opaque value associated with the pool object in + * bman_new_pool(). 'depleted' is non-zero on depletion-entry, and zero on + * depletion-exit. */ +typedef void (*bman_cb_depletion)(struct bman_portal *bm, + struct bman_pool *pool, void *cb_ctx, int depleted); + +/* This struct specifies parameters for a bman_pool object. */ +struct bman_pool_params { + /* index of the buffer pool to encapsulate (0-63), ignored if + * BMAN_POOL_FLAG_DYNAMIC_BPID is set. */ + u32 bpid; + /* bit-mask of BMAN_POOL_FLAG_*** options */ + u32 flags; + /* depletion-entry/exit callback, if BMAN_POOL_FLAG_DEPLETION is set */ + bman_cb_depletion cb; + /* opaque user value passed as a parameter to 'cb' */ + void *cb_ctx; + /* depletion-entry/exit thresholds, if BMAN_POOL_FLAG_THRESH is set. NB: + * this is only allowed if BMAN_POOL_FLAG_DYNAMIC_BPID is used *and* + * when run in the control plane (which controls Bman CCSR). This array + * matches the definition of bm_pool_set(). */ + u32 thresholds[4]; +}; + +/* Flags to bman_new_pool() */ +#define BMAN_POOL_FLAG_NO_RELEASE 0x00000001 /* can't release to pool */ +#define BMAN_POOL_FLAG_ONLY_RELEASE 0x00000002 /* can only release to pool */ +#define BMAN_POOL_FLAG_DEPLETION 0x00000004 /* track depletion entry/exit */ +#define BMAN_POOL_FLAG_DYNAMIC_BPID 0x00000008 /* (de)allocate bpid */ +#define BMAN_POOL_FLAG_THRESH 0x00000010 /* set depletion thresholds */ +#define BMAN_POOL_FLAG_STOCKPILE 0x00000020 /* stockpile to reduce hw ops */ + +/* Flags to bman_release() */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT +#define BMAN_RELEASE_FLAG_WAIT 0x00000001 /* wait if RCR is full */ +#define BMAN_RELEASE_FLAG_WAIT_INT 0x00000002 /* if we wait, interruptible? */ +#ifdef CONFIG_FSL_DPA_CAN_WAIT_SYNC +#define BMAN_RELEASE_FLAG_WAIT_SYNC 0x00000004 /* if wait, until consumed? */ +#endif +#endif +#define BMAN_RELEASE_FLAG_NOW 0x00000008 /* issue immediate release */ + +/* Flags to bman_acquire() */ +#define BMAN_ACQUIRE_FLAG_STOCKPILE 0x00000001 /* no hw op, stockpile only */ + + /* Portal Management */ + /* ----------------- */ +/** + * bman_get_portal_config - get portal configuration settings + * + * This returns a read-only view of the current cpu's affine portal settings. + */ +const struct bman_portal_config *bman_get_portal_config(void); + +/** + * bman_irqsource_get - return the portal work that is interrupt-driven + * + * Returns a bitmask of BM_PIRQ_**I processing sources that are currently + * enabled for interrupt handling on the current cpu's affine portal. These + * sources will trigger the portal interrupt and the interrupt handler (or a + * tasklet/bottom-half it defers to) will perform the corresponding processing + * work. The bman_poll_***() functions will only process sources that are not in + * this bitmask. If the current CPU is sharing a portal hosted on another CPU, + * this always returns zero. + */ +u32 bman_irqsource_get(void); + +/** + * bman_irqsource_add - add processing sources to be interrupt-driven + * @bits: bitmask of BM_PIRQ_**I processing sources + * + * Adds processing sources that should be interrupt-driven (rather than + * processed via bman_poll_***() functions). Returns zero for success, or + * -EINVAL if the current CPU is sharing a portal hosted on another CPU. */ +int bman_irqsource_add(u32 bits); + +/** + * bman_irqsource_remove - remove processing sources from being interrupt-driven + * @bits: bitmask of BM_PIRQ_**I processing sources + * + * Removes processing sources from being interrupt-driven, so that they will + * instead be processed via bman_poll_***() functions. Returns zero for success, + * or -EINVAL if the current CPU is sharing a portal hosted on another CPU. */ +int bman_irqsource_remove(u32 bits); + +/** + * bman_affine_cpus - return a mask of cpus that have affine portals + */ +const cpumask_t *bman_affine_cpus(void); + +/** + * bman_poll_slow - process anything that isn't interrupt-driven. + * + * This function does any portal processing that isn't interrupt-driven. If the + * current CPU is sharing a portal hosted on another CPU, this function will + * return -EINVAL, otherwise the return value is a bitmask of BM_PIRQ_* sources + * indicating what interrupt sources were actually processed by the call. + * + * NB, unlike the legacy wrapper bman_poll(), this function will + * deterministically check for the presence of portal processing work and do it, + * which implies some latency even if there's nothing to do. The bman_poll() + * wrapper on the other hand (like the qman_poll() wrapper) attenuates this by + * checking for (and doing) portal processing infrequently. Ie. such that + * qman_poll() and bman_poll() can be called from core-processing loops. Use + * bman_poll_slow() when you yourself are deciding when to incur the overhead of + * processing. + */ +u32 bman_poll_slow(void); + +/** + * bman_poll - process anything that isn't interrupt-driven. + * + * Dispatcher logic on a cpu can use this to trigger any maintenance of the + * affine portal. This function does whatever processing is not triggered by + * interrupts. This is a legacy wrapper that can be used in core-processing + * loops but mitigates the performance overhead of portal processing by + * adaptively bypassing true portal processing most of the time. (Processing is + * done once every 10 calls if the previous processing revealed that work needed + * to be done, or once very 1000 calls if the previous processing revealed no + * work needed doing.) If you wish to control this yourself, call + * bman_poll_slow() instead, which always checks for portal processing work. + */ +void bman_poll(void); + +/** + * bman_recovery_cleanup_bpid - in recovery mode, cleanup a buffer pool + */ +int bman_recovery_cleanup_bpid(u32 bpid); + +/** + * bman_recovery_exit - leave recovery mode + */ +int bman_recovery_exit(void); + +/** + * bman_rcr_is_empty - Determine if portal's RCR is empty + * + * For use in situations where a cpu-affine caller needs to determine when all + * releases for the local portal have been processed by Bman but can't use the + * BMAN_RELEASE_FLAG_WAIT_SYNC flag to do this from the final bman_release(). + * The function forces tracking of RCR consumption (which normally doesn't + * happen until release processing needs to find space to put new release + * commands), and returns zero if the ring still has unprocessed entries, + * non-zero if it is empty. + */ +int bman_rcr_is_empty(void); + + + /* Pool management */ + /* --------------- */ +/** + * bman_new_pool - Allocates a Buffer Pool object + * @params: parameters specifying the buffer pool ID and behaviour + * + * Creates a pool object for the given @params. A portal and the depletion + * callback field of @params are only used if the BMAN_POOL_FLAG_DEPLETION flag + * is set. NB, the fields from @params are copied into the new pool object, so + * the structure provided by the caller can be released or reused after the + * function returns. + */ +struct bman_pool *bman_new_pool(const struct bman_pool_params *params); + +/** + * bman_free_pool - Deallocates a Buffer Pool object + * @pool: the pool object to release + * + */ +void bman_free_pool(struct bman_pool *pool); + +/** + * bman_get_params - Returns a pool object's parameters. + * @pool: the pool object + * + * The returned pointer refers to state within the pool object so must not be + * modified and can no longer be read once the pool object is destroyed. + */ +const struct bman_pool_params *bman_get_params(const struct bman_pool *pool); + +/** + * bman_release - Release buffer(s) to the buffer pool + * @pool: the buffer pool object to release to + * @bufs: an array of buffers to release + * @num: the number of buffers in @bufs (1-8) + * @flags: bit-mask of BMAN_RELEASE_FLAG_*** options + * + * Adds the given buffers to RCR entries. If the portal @p was created with the + * "COMPACT" flag, then it will be using a compaction algorithm to improve + * utilisation of RCR. As such, these buffers may join an existing ring entry + * and/or it may not be issued right away so as to allow future releases to join + * the same ring entry. Use the BMAN_RELEASE_FLAG_NOW flag to override this + * behaviour by committing the RCR entry (or entries) right away. If the RCR + * ring is full, the function will return -EBUSY unless BMAN_RELEASE_FLAG_WAIT + * is selected, in which case it will sleep waiting for space to become + * available in RCR. If the function receives a signal before such time (and + * BMAN_RELEASE_FLAG_WAIT_INT is set), the function returns -EINTR. Otherwise, + * it returns zero. + */ +int bman_release(struct bman_pool *pool, const struct bm_buffer *bufs, u8 num, + u32 flags); + +/** + * bman_acquire - Acquire buffer(s) from a buffer pool + * @pool: the buffer pool object to acquire from + * @bufs: array for storing the acquired buffers + * @num: the number of buffers desired (@bufs is at least this big) + * + * Issues an "Acquire" command via the portal's management command interface. + * The return value will be the number of buffers obtained from the pool, or a + * negative error code if a h/w error or pool starvation was encountered. + */ +int bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, u8 num, + u32 flags); + +/** + * bman_flush_stockpile - Flush stockpile buffer(s) to the buffer pool + * @pool: the buffer pool object the stockpile belongs + * @flags: bit-mask of BMAN_RELEASE_FLAG_*** options + * + * Adds stockpile buffers to RCR entries until the stockpile is empty. + * The return value will be a negative error code if a h/w error occured. + * If BMAN_RELEASE_FLAG_NOW flag is passed and RCR ring is full, + * -EAGAIN will be returned. + */ +int bman_flush_stockpile(struct bman_pool *pool, u32 flags); + +/** + * bman_query_pools - Query all buffer pool states + * @state: storage for the queried availability and depletion states + */ +int bman_query_pools(struct bm_pool_state *state); + +#ifdef __cplusplus +} +#endif + +#endif /* FSL_BMAN_H */ --- linux-ppc-3.8.0.orig/include/linux/kvm_types.h +++ linux-ppc-3.8.0/include/linux/kvm_types.h @@ -71,6 +71,7 @@ u64 generation; gpa_t gpa; unsigned long hva; + unsigned long len; struct kvm_memory_slot *memslot; }; --- linux-ppc-3.8.0.orig/include/linux/libata.h +++ linux-ppc-3.8.0/include/linux/libata.h @@ -398,6 +398,7 @@ ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ + ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */ /* DMA mask for user DMA control: User visible values; DO NOT renumber */ @@ -620,6 +621,9 @@ union acpi_object *gtf_cache; unsigned int gtf_filter; #endif +#ifdef CONFIG_SATA_ZPODD + void *zpodd; +#endif struct device tdev; /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ u64 n_sectors; /* size of device, if ATA */ --- linux-ppc-3.8.0.orig/include/linux/serial_core.h +++ linux-ppc-3.8.0/include/linux/serial_core.h @@ -136,7 +136,6 @@ #define UPIO_MEM32 (3) #define UPIO_AU (4) /* Au1x00 type IO */ #define UPIO_TSI (5) /* Tsi108/109 type IO */ -#define UPIO_RM9000 (6) /* RM9000 type IO */ unsigned int read_status_mask; /* driver specific */ unsigned int ignore_status_mask; /* driver specific */ --- linux-ppc-3.8.0.orig/include/linux/blkdev.h +++ linux-ppc-3.8.0/include/linux/blkdev.h @@ -836,7 +836,7 @@ unsigned int cmd_flags) { if (unlikely(cmd_flags & REQ_DISCARD)) - return q->limits.max_discard_sectors; + return min(q->limits.max_discard_sectors, UINT_MAX >> 9); if (unlikely(cmd_flags & REQ_WRITE_SAME)) return q->limits.max_write_same_sectors; --- linux-ppc-3.8.0.orig/include/linux/jbd2.h +++ linux-ppc-3.8.0/include/linux/jbd2.h @@ -498,6 +498,7 @@ T_COMMIT, T_COMMIT_DFLUSH, T_COMMIT_JFLUSH, + T_COMMIT_CALLBACK, T_FINISHED } t_state; @@ -1210,6 +1211,7 @@ int jbd2_journal_start_commit(journal_t *journal, tid_t *tid); int jbd2_journal_force_commit_nested(journal_t *journal); int jbd2_log_wait_commit(journal_t *journal, tid_t tid); +int jbd2_complete_transaction(journal_t *journal, tid_t tid); int jbd2_log_do_checkpoint(journal_t *journal); int jbd2_trans_will_send_data_barrier(journal_t *journal, tid_t tid); --- linux-ppc-3.8.0.orig/include/linux/audit.h +++ linux-ppc-3.8.0/include/linux/audit.h @@ -120,7 +120,7 @@ unsigned long a1, unsigned long a2, unsigned long a3) { - if (unlikely(!audit_dummy_context())) + if (unlikely(current->audit_context)) __audit_syscall_entry(arch, major, a0, a1, a2, a3); } static inline void audit_syscall_exit(void *pt_regs) --- linux-ppc-3.8.0.orig/include/linux/of_mdio.h +++ linux-ppc-3.8.0/include/linux/of_mdio.h @@ -22,6 +22,9 @@ extern struct phy_device *of_phy_connect_fixed_link(struct net_device *dev, void (*hndlr)(struct net_device *), phy_interface_t iface); +extern struct phy_device *of_phy_attach(struct net_device *dev, + struct device_node *phy_np, u32 flags, + phy_interface_t iface); extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np); --- linux-ppc-3.8.0.orig/include/linux/quota.h +++ linux-ppc-3.8.0/include/linux/quota.h @@ -405,6 +405,7 @@ #define INIT_QUOTA_MODULE_NAMES {\ {QFMT_VFS_OLD, "quota_v1"},\ {QFMT_VFS_V0, "quota_v2"},\ + {QFMT_VFS_V1, "quota_v2"},\ {0, NULL}} #endif /* _QUOTA_ */ --- linux-ppc-3.8.0.orig/include/linux/mm_types.h +++ linux-ppc-3.8.0/include/linux/mm_types.h @@ -332,6 +332,7 @@ void (*unmap_area) (struct mm_struct *mm, unsigned long addr); #endif unsigned long mmap_base; /* base of mmap area */ + unsigned long mmap_legacy_base; /* base of mmap area in bottom-up allocations */ unsigned long task_size; /* size of task vm space */ unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ unsigned long free_area_cache; /* first hole of size cached_hole_size or larger */ --- linux-ppc-3.8.0.orig/include/linux/mount.h +++ linux-ppc-3.8.0/include/linux/mount.h @@ -47,6 +47,8 @@ #define MNT_INTERNAL 0x4000 +#define MNT_LOCK_READONLY 0x400000 + struct vfsmount { struct dentry *mnt_root; /* root of the mounted tree */ struct super_block *mnt_sb; /* pointer to superblock */ @@ -66,6 +68,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-ppc-3.8.0.orig/include/linux/regmap.h +++ linux-ppc-3.8.0/include/linux/regmap.h @@ -15,6 +15,7 @@ #include #include +#include struct module; struct device; --- linux-ppc-3.8.0.orig/include/linux/dmaengine.h +++ linux-ppc-3.8.0/include/linux/dmaengine.h @@ -618,6 +618,11 @@ (unsigned long)config); } +static inline bool is_slave_direction(enum dma_transfer_direction direction) +{ + return (direction == DMA_MEM_TO_DEV) || (direction == DMA_DEV_TO_MEM); +} + static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single( struct dma_chan *chan, dma_addr_t buf, size_t len, enum dma_transfer_direction dir, unsigned long flags) --- linux-ppc-3.8.0.orig/include/linux/spinlock_up.h +++ linux-ppc-3.8.0/include/linux/spinlock_up.h @@ -16,7 +16,10 @@ * In the debug case, 1 means unlocked, 0 means locked. (the values * are inverted, to catch initialization bugs) * - * No atomicity anywhere, we are on UP. + * No atomicity anywhere, we are on UP. However, we still need + * the compiler barriers, because we do not want the compiler to + * move potentially faulting instructions (notably user accesses) + * into the locked sequence, resulting in non-atomic execution. */ #ifdef CONFIG_DEBUG_SPINLOCK @@ -25,6 +28,7 @@ static inline void arch_spin_lock(arch_spinlock_t *lock) { lock->slock = 0; + barrier(); } static inline void @@ -32,6 +36,7 @@ { local_irq_save(flags); lock->slock = 0; + barrier(); } static inline int arch_spin_trylock(arch_spinlock_t *lock) @@ -39,32 +44,34 @@ char oldval = lock->slock; lock->slock = 0; + barrier(); return oldval > 0; } static inline void arch_spin_unlock(arch_spinlock_t *lock) { + barrier(); lock->slock = 1; } /* * Read-write spinlocks. No debug version. */ -#define arch_read_lock(lock) do { (void)(lock); } while (0) -#define arch_write_lock(lock) do { (void)(lock); } while (0) -#define arch_read_trylock(lock) ({ (void)(lock); 1; }) -#define arch_write_trylock(lock) ({ (void)(lock); 1; }) -#define arch_read_unlock(lock) do { (void)(lock); } while (0) -#define arch_write_unlock(lock) do { (void)(lock); } while (0) +#define arch_read_lock(lock) do { barrier(); (void)(lock); } while (0) +#define arch_write_lock(lock) do { barrier(); (void)(lock); } while (0) +#define arch_read_trylock(lock) ({ barrier(); (void)(lock); 1; }) +#define arch_write_trylock(lock) ({ barrier(); (void)(lock); 1; }) +#define arch_read_unlock(lock) do { barrier(); (void)(lock); } while (0) +#define arch_write_unlock(lock) do { barrier(); (void)(lock); } while (0) #else /* DEBUG_SPINLOCK */ #define arch_spin_is_locked(lock) ((void)(lock), 0) /* for sched.c and kernel_lock.c: */ -# define arch_spin_lock(lock) do { (void)(lock); } while (0) -# define arch_spin_lock_flags(lock, flags) do { (void)(lock); } while (0) -# define arch_spin_unlock(lock) do { (void)(lock); } while (0) -# define arch_spin_trylock(lock) ({ (void)(lock); 1; }) +# define arch_spin_lock(lock) do { barrier(); (void)(lock); } while (0) +# define arch_spin_lock_flags(lock, flags) do { barrier(); (void)(lock); } while (0) +# define arch_spin_unlock(lock) do { barrier(); (void)(lock); } while (0) +# define arch_spin_trylock(lock) ({ barrier(); (void)(lock); 1; }) #endif /* DEBUG_SPINLOCK */ #define arch_spin_is_contended(lock) (((void)(lock), 0)) --- linux-ppc-3.8.0.orig/include/linux/llist.h +++ linux-ppc-3.8.0/include/linux/llist.h @@ -125,31 +125,6 @@ (pos) = llist_entry((pos)->member.next, typeof(*(pos)), member)) /** - * llist_for_each_entry_safe - iterate safely against remove over some entries - * of lock-less list of given type. - * @pos: the type * to use as a loop cursor. - * @n: another type * to use as a temporary storage. - * @node: the fist entry of deleted list entries. - * @member: the name of the llist_node with the struct. - * - * In general, some entries of the lock-less list can be traversed - * safely only after being removed from list, so start with an entry - * instead of list head. This variant allows removal of entries - * as we iterate. - * - * If being used on entries deleted from lock-less list directly, the - * traverse order is from the newest to the oldest added entry. If - * you want to traverse from the oldest to the newest, you must - * reverse the order by yourself before traversing. - */ -#define llist_for_each_entry_safe(pos, n, node, member) \ - for ((pos) = llist_entry((node), typeof(*(pos)), member), \ - (n) = (pos)->member.next; \ - &(pos)->member != NULL; \ - (pos) = llist_entry(n, typeof(*(pos)), member), \ - (n) = (&(pos)->member != NULL) ? (pos)->member.next : NULL) - -/** * llist_empty - tests whether a lock-less list is empty * @head: the list to test * --- linux-ppc-3.8.0.orig/include/linux/ceph/auth.h +++ linux-ppc-3.8.0/include/linux/ceph/auth.h @@ -52,6 +52,9 @@ */ int (*create_authorizer)(struct ceph_auth_client *ac, int peer_type, struct ceph_auth_handshake *auth); + /* ensure that an existing authorizer is up to date */ + int (*update_authorizer)(struct ceph_auth_client *ac, int peer_type, + struct ceph_auth_handshake *auth); int (*verify_authorizer_reply)(struct ceph_auth_client *ac, struct ceph_authorizer *a, size_t len); void (*destroy_authorizer)(struct ceph_auth_client *ac, @@ -75,6 +78,8 @@ u64 global_id; /* our unique id in system */ const struct ceph_crypto_key *key; /* our secret key */ unsigned want_keys; /* which services we want */ + + struct mutex mutex; }; extern struct ceph_auth_client *ceph_auth_init(const char *name, @@ -94,5 +99,18 @@ void *msg_buf, size_t msg_len); extern int ceph_auth_is_authenticated(struct ceph_auth_client *ac); +extern int ceph_auth_create_authorizer(struct ceph_auth_client *ac, + int peer_type, + struct ceph_auth_handshake *auth); +extern void ceph_auth_destroy_authorizer(struct ceph_auth_client *ac, + struct ceph_authorizer *a); +extern int ceph_auth_update_authorizer(struct ceph_auth_client *ac, + int peer_type, + struct ceph_auth_handshake *a); +extern int ceph_auth_verify_authorizer_reply(struct ceph_auth_client *ac, + struct ceph_authorizer *a, + size_t len); +extern void ceph_auth_invalidate_authorizer(struct ceph_auth_client *ac, + int peer_type); #endif --- linux-ppc-3.8.0.orig/include/linux/mfd/rtsx_pci.h +++ linux-ppc-3.8.0/include/linux/mfd/rtsx_pci.h @@ -184,11 +184,26 @@ #define CARD_SHARE_BAROSSA_SD 0x01 #define CARD_SHARE_BAROSSA_MS 0x02 +/* CARD_DRIVE_SEL */ +#define MS_DRIVE_8mA (0x01 << 6) +#define MMC_DRIVE_8mA (0x01 << 4) +#define XD_DRIVE_8mA (0x01 << 2) +#define GPIO_DRIVE_8mA 0x01 +#define RTS5209_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | MMC_DRIVE_8mA |\ + XD_DRIVE_8mA | GPIO_DRIVE_8mA) +#define RTL8411_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | MMC_DRIVE_8mA |\ + XD_DRIVE_8mA) +#define RTSX_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | GPIO_DRIVE_8mA) + /* SD30_DRIVE_SEL */ #define DRIVER_TYPE_A 0x05 #define DRIVER_TYPE_B 0x03 #define DRIVER_TYPE_C 0x02 #define DRIVER_TYPE_D 0x01 +#define CFG_DRIVER_TYPE_A 0x02 +#define CFG_DRIVER_TYPE_B 0x03 +#define CFG_DRIVER_TYPE_C 0x01 +#define CFG_DRIVER_TYPE_D 0x00 /* FPDCTL */ #define SSC_POWER_DOWN 0x01 @@ -573,6 +588,7 @@ #define CARD_PWR_CTL 0xFD50 #define CARD_CLK_SWITCH 0xFD51 +#define RTL8411B_PACKAGE_MODE 0xFD51 #define CARD_SHARE_MODE 0xFD52 #define CARD_DRIVE_SEL 0xFD53 #define CARD_STOP 0xFD54 @@ -581,8 +597,11 @@ #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 @@ -655,6 +674,8 @@ #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 @@ -676,6 +697,8 @@ #define DUMMY_REG_RESET_0 0xFE90 +#define AUTOLOAD_CFG_BASE 0xFF00 + /* Memory mapping */ #define SRAM_BASE 0xE600 #define RBUF_BASE 0xF400 @@ -684,6 +707,45 @@ #define IMAGE_FLAG_ADDR0 0xCE80 #define IMAGE_FLAG_ADDR1 0xCE81 +/* Phy register */ +#define PHY_PCR 0x00 +#define PHY_RCR0 0x01 +#define PHY_RCR1 0x02 +#define PHY_RCR2 0x03 +#define PHY_RTCR 0x04 +#define PHY_RDR 0x05 +#define PHY_TCR0 0x06 +#define PHY_TCR1 0x07 +#define PHY_TUNE 0x08 +#define PHY_IMR 0x09 +#define PHY_BPCR 0x0A +#define PHY_BIST 0x0B +#define PHY_RAW_L 0x0C +#define PHY_RAW_H 0x0D +#define PHY_RAW_DATA 0x0E +#define PHY_HOST_CLK_CTRL 0x0F +#define PHY_DMR 0x10 +#define PHY_BACR 0x11 +#define PHY_IER 0x12 +#define PHY_BCSR 0x13 +#define PHY_BPR 0x14 +#define PHY_BPNR2 0x15 +#define PHY_BPNR 0x16 +#define PHY_BRNR2 0x17 +#define PHY_BENR 0x18 +#define PHY_REG_REV 0x19 +#define PHY_FLD0 0x1A +#define PHY_FLD1 0x1B +#define PHY_FLD2 0x1C +#define PHY_FLD3 0x1D +#define PHY_FLD4 0x1E +#define PHY_DUM_REG 0x1F + +#define LCTLR 0x80 +#define PCR_SETTING_REG1 0x724 +#define PCR_SETTING_REG2 0x814 +#define PCR_SETTING_REG3 0x747 + #define rtsx_pci_init_cmd(pcr) ((pcr)->ci = 0) struct rtsx_pcr; @@ -705,6 +767,7 @@ u8 voltage); unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); int (*conv_clk_and_div_n)(int clk, int dir); + void (*fetch_vendor_settings)(struct rtsx_pcr *pcr); }; enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; @@ -735,6 +798,7 @@ unsigned int card_inserted; unsigned int card_removed; + unsigned int card_exist; struct delayed_work carddet_work; struct delayed_work idle_work; @@ -745,7 +809,6 @@ struct completion *finish_me; unsigned int cur_clock; - bool ms_pmos; bool remove_pci; bool msi_en; @@ -763,6 +826,16 @@ #define IC_VER_D 3 u8 ic_version; + u8 sd30_drive_sel_1v8; + u8 sd30_drive_sel_3v3; + u8 card_drive_sel; +#define ASPM_L1_EN 0x02 + u8 aspm_en; + +#define PCR_MS_PMOS (1 << 0) +#define PCR_REVERSE_SOCKET (1 << 1) + u32 flags; + const u32 *sd_pull_ctl_enable_tbl; const u32 *sd_pull_ctl_disable_tbl; const u32 *ms_pull_ctl_enable_tbl; @@ -799,6 +872,7 @@ 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); --- linux-ppc-3.8.0.orig/include/linux/mtd/nand.h +++ linux-ppc-3.8.0/include/linux/mtd/nand.h @@ -187,6 +187,13 @@ * This happens with the Renesas AG-AND chips, possibly others. */ #define BBT_AUTO_REFRESH 0x00000080 +/* + * Chip requires ready check on read (for auto-incremented sequential read). + * True only for small page devices; large page devices do not support + * autoincrement. + */ +#define NAND_NEED_READRDY 0x00000100 + /* Chip does not allow subpage writes */ #define NAND_NO_SUBPAGE_WRITE 0x00000200 --- linux-ppc-3.8.0.orig/include/linux/fmd/Kbuild +++ linux-ppc-3.8.0/include/linux/fmd/Kbuild @@ -0,0 +1,5 @@ +header-y += integrations/ +header-y += Peripherals/ + +header-y += ioctls.h +header-y += net_ioctls.h --- linux-ppc-3.8.0.orig/include/linux/fmd/ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/ioctls.h @@ -0,0 +1,96 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File ioctls.h + + @Description Structures and definitions for Command Relay Ioctls +*//***************************************************************************/ + +#ifndef __IOCTLS_H__ +#define __IOCTLS_H__ + +#include + +#include "integration_ioctls.h" + + +/**************************************************************************//** + @Group lnx_ioctl_ncsw_grp NetCommSw Linux User-Space (IOCTL) API + @{ +*//***************************************************************************/ + +#define NCSW_IOC_TYPE_BASE 0xe0 /**< defines the IOCTL type for all + the NCSW Linux module commands */ + + +/**************************************************************************//** + @Description IOCTL Memory allocation types. +*//***************************************************************************/ +typedef enum ioc_mem_type { + e_IOC_MEM_INVALID = 0x00000000, /**< Invalid memory type (error) */ + e_IOC_MEM_CACHABLE_SYS = 0x00000001, /**< Primary DDR, cacheable segment */ + e_IOC_MEM_NOCACHE_SYS = 0x00000004, /**< Primary DDR, non-cacheable segment */ + e_IOC_MEM_SECONDARY = 0x00000002, /**< Either secondary DDR or SDRAM */ + e_IOC_MEM_PRAM = 0x00000008 /**< Multi-user RAM identifier */ +} ioc_mem_type; + +/**************************************************************************//** + @Description Enumeration (bit flags) of communication modes (Transmit, + receive or both). +*//***************************************************************************/ +typedef enum ioc_comm_mode { + e_IOC_COMM_MODE_NONE = 0 /**< No transmit/receive communication */ + , e_IOC_COMM_MODE_RX = 1 /**< Only receive communication */ + , e_IOC_COMM_MODE_TX = 2 /**< Only transmit communication */ + , e_IOC_COMM_MODE_RX_AND_TX = 3 /**< Both transmit and receive communication */ +} ioc_comm_mode; + +/**************************************************************************//** + @Description General Diagnostic Mode +*//***************************************************************************/ +typedef enum ioc_diag_mode +{ + e_IOC_DIAG_MODE_NONE = 0, + e_IOC_DIAG_MODE_CTRL_LOOPBACK, /**< loopback in the controller; E.g. MAC, TDM, etc. */ + e_IOC_DIAG_MODE_CHIP_LOOPBACK, /**< loopback in the chip but not in controller; + E.g. IO-pins, SerDes, etc. */ + e_IOC_DIAG_MODE_PHY_LOOPBACK, /**< loopback in the external PHY */ + e_IOC_DIAG_MODE_LINE_LOOPBACK, /**< loopback in the external line */ + e_IOC_DIAG_MODE_CTRL_ECHO, /**< */ + e_IOC_DIAG_MODE_PHY_ECHO /**< */ +} ioc_diag_mode; + +/** @} */ /* end of lnx_ioctl_ncsw_grp */ + + +#endif /* __IOCTLS_H__ */ --- linux-ppc-3.8.0.orig/include/linux/fmd/net_ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/net_ioctls.h @@ -0,0 +1,383 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File net_ioctls.h + + @Description This file contains common and general netcomm headers definitions. +*//***************************************************************************/ +#ifndef __NET_IOCTLS_H +#define __NET_IOCTLS_H + +#include "ioctls.h" + + +typedef uint8_t ioc_header_field_ppp_t; + +#define IOC_NET_HEADER_FIELD_PPP_PID (1) +#define IOC_NET_HEADER_FIELD_PPP_COMPRESSED (IOC_NET_HEADER_FIELD_PPP_PID << 1) +#define IOC_NET_HEADER_FIELD_PPP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_PPP_PID << 2) - 1) + + +typedef uint8_t ioc_header_field_pppoe_t; + +#define IOC_NET_HEADER_FIELD_PPPoE_VER (1) +#define IOC_NET_HEADER_FIELD_PPPoE_TYPE (IOC_NET_HEADER_FIELD_PPPoE_VER << 1) +#define IOC_NET_HEADER_FIELD_PPPoE_CODE (IOC_NET_HEADER_FIELD_PPPoE_VER << 2) +#define IOC_NET_HEADER_FIELD_PPPoE_SID (IOC_NET_HEADER_FIELD_PPPoE_VER << 3) +#define IOC_NET_HEADER_FIELD_PPPoE_LEN (IOC_NET_HEADER_FIELD_PPPoE_VER << 4) +#define IOC_NET_HEADER_FIELD_PPPoE_SESSION (IOC_NET_HEADER_FIELD_PPPoE_VER << 5) +#define IOC_NET_HEADER_FIELD_PPPoE_PID (IOC_NET_HEADER_FIELD_PPPoE_VER << 6) +#define IOC_NET_HEADER_FIELD_PPPoE_ALL_FIELDS ((IOC_NET_HEADER_FIELD_PPPoE_VER << 7) - 1) + +#define IOC_NET_HEADER_FIELD_PPPMUX_PID (1) +#define IOC_NET_HEADER_FIELD_PPPMUX_CKSUM (IOC_NET_HEADER_FIELD_PPPMUX_PID << 1) +#define IOC_NET_HEADER_FIELD_PPPMUX_COMPRESSED (IOC_NET_HEADER_FIELD_PPPMUX_PID << 2) +#define IOC_NET_HEADER_FIELD_PPPMUX_ALL_FIELDS ((IOC_NET_HEADER_FIELD_PPPMUX_PID << 3) - 1) + +#define IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF (1) +#define IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_LXT (IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 1) +#define IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_LEN (IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 2) +#define IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PID (IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 3) +#define IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_USE_PID (IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 4) +#define IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_ALL_FIELDS ((IOC_NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 5) - 1) + + +typedef uint8_t ioc_header_field_eth_t; + +#define IOC_NET_HEADER_FIELD_ETH_DA (1) +#define IOC_NET_HEADER_FIELD_ETH_SA (IOC_NET_HEADER_FIELD_ETH_DA << 1) +#define IOC_NET_HEADER_FIELD_ETH_LENGTH (IOC_NET_HEADER_FIELD_ETH_DA << 2) +#define IOC_NET_HEADER_FIELD_ETH_TYPE (IOC_NET_HEADER_FIELD_ETH_DA << 3) +#define IOC_NET_HEADER_FIELD_ETH_FINAL_CKSUM (IOC_NET_HEADER_FIELD_ETH_DA << 4) +#define IOC_NET_HEADER_FIELD_ETH_PADDING (IOC_NET_HEADER_FIELD_ETH_DA << 5) +#define IOC_NET_HEADER_FIELD_ETH_ALL_FIELDS ((IOC_NET_HEADER_FIELD_ETH_DA << 6) - 1) + + +typedef uint16_t ioc_header_field_ipv4_t; + +#define IOC_NET_HEADER_FIELD_IPv4_VER (1) +#define IOC_NET_HEADER_FIELD_IPv4_HDR_LEN (IOC_NET_HEADER_FIELD_IPv4_VER << 1) +#define IOC_NET_HEADER_FIELD_IPv4_TOS (IOC_NET_HEADER_FIELD_IPv4_VER << 2) +#define IOC_NET_HEADER_FIELD_IPv4_TOTAL_LEN (IOC_NET_HEADER_FIELD_IPv4_VER << 3) +#define IOC_NET_HEADER_FIELD_IPv4_ID (IOC_NET_HEADER_FIELD_IPv4_VER << 4) +#define IOC_NET_HEADER_FIELD_IPv4_FLAG_D (IOC_NET_HEADER_FIELD_IPv4_VER << 5) +#define IOC_NET_HEADER_FIELD_IPv4_FLAG_M (IOC_NET_HEADER_FIELD_IPv4_VER << 6) +#define IOC_NET_HEADER_FIELD_IPv4_OFFSET (IOC_NET_HEADER_FIELD_IPv4_VER << 7) +#define IOC_NET_HEADER_FIELD_IPv4_TTL (IOC_NET_HEADER_FIELD_IPv4_VER << 8) +#define IOC_NET_HEADER_FIELD_IPv4_PROTO (IOC_NET_HEADER_FIELD_IPv4_VER << 9) +#define IOC_NET_HEADER_FIELD_IPv4_CKSUM (IOC_NET_HEADER_FIELD_IPv4_VER << 10) +#define IOC_NET_HEADER_FIELD_IPv4_SRC_IP (IOC_NET_HEADER_FIELD_IPv4_VER << 11) +#define IOC_NET_HEADER_FIELD_IPv4_DST_IP (IOC_NET_HEADER_FIELD_IPv4_VER << 12) +#define IOC_NET_HEADER_FIELD_IPv4_OPTS (IOC_NET_HEADER_FIELD_IPv4_VER << 13) +#define IOC_NET_HEADER_FIELD_IPv4_OPTS_COUNT (IOC_NET_HEADER_FIELD_IPv4_VER << 14) +#define IOC_NET_HEADER_FIELD_IPv4_ALL_FIELDS ((IOC_NET_HEADER_FIELD_IPv4_VER << 15) - 1) + + +typedef uint8_t ioc_header_field_ipv6_t; + +#define IOC_NET_HEADER_FIELD_IPv6_VER (1) +#define IOC_NET_HEADER_FIELD_IPv6_TC (IOC_NET_HEADER_FIELD_IPv6_VER << 1) +#define IOC_NET_HEADER_FIELD_IPv6_SRC_IP (IOC_NET_HEADER_FIELD_IPv6_VER << 2) +#define IOC_NET_HEADER_FIELD_IPv6_DST_IP (IOC_NET_HEADER_FIELD_IPv6_VER << 3) +#define IOC_NET_HEADER_FIELD_IPv6_NEXT_HDR (IOC_NET_HEADER_FIELD_IPv6_VER << 4) +#define IOC_NET_HEADER_FIELD_IPv6_FL (IOC_NET_HEADER_FIELD_IPv6_VER << 5) +#define IOC_NET_HEADER_FIELD_IPv6_HOP_LIMIT (IOC_NET_HEADER_FIELD_IPv6_VER << 6) +#define IOC_NET_HEADER_FIELD_IPv6_ALL_FIELDS ((IOC_NET_HEADER_FIELD_IPv6_VER << 7) - 1) + +#define IOC_NET_HEADER_FIELD_ICMP_TYPE (1) +#define IOC_NET_HEADER_FIELD_ICMP_CODE (IOC_NET_HEADER_FIELD_ICMP_TYPE << 1) +#define IOC_NET_HEADER_FIELD_ICMP_CKSUM (IOC_NET_HEADER_FIELD_ICMP_TYPE << 2) +#define IOC_NET_HEADER_FIELD_ICMP_ID (IOC_NET_HEADER_FIELD_ICMP_TYPE << 3) +#define IOC_NET_HEADER_FIELD_ICMP_SQ_NUM (IOC_NET_HEADER_FIELD_ICMP_TYPE << 4) +#define IOC_NET_HEADER_FIELD_ICMP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_ICMP_TYPE << 5) - 1) + +#define IOC_NET_HEADER_FIELD_IGMP_VERSION (1) +#define IOC_NET_HEADER_FIELD_IGMP_TYPE (IOC_NET_HEADER_FIELD_IGMP_VERSION << 1) +#define IOC_NET_HEADER_FIELD_IGMP_CKSUM (IOC_NET_HEADER_FIELD_IGMP_VERSION << 2) +#define IOC_NET_HEADER_FIELD_IGMP_DATA (IOC_NET_HEADER_FIELD_IGMP_VERSION << 3) +#define IOC_NET_HEADER_FIELD_IGMP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_IGMP_VERSION << 4) - 1) + + +typedef uint16_t ioc_header_field_tcp_t; + +#define IOC_NET_HEADER_FIELD_TCP_PORT_SRC (1) +#define IOC_NET_HEADER_FIELD_TCP_PORT_DST (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 1) +#define IOC_NET_HEADER_FIELD_TCP_SEQ (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 2) +#define IOC_NET_HEADER_FIELD_TCP_ACK (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 3) +#define IOC_NET_HEADER_FIELD_TCP_OFFSET (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 4) +#define IOC_NET_HEADER_FIELD_TCP_FLAGS (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 5) +#define IOC_NET_HEADER_FIELD_TCP_WINDOW (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 6) +#define IOC_NET_HEADER_FIELD_TCP_CKSUM (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 7) +#define IOC_NET_HEADER_FIELD_TCP_URGPTR (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 8) +#define IOC_NET_HEADER_FIELD_TCP_OPTS (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 9) +#define IOC_NET_HEADER_FIELD_TCP_OPTS_COUNT (IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 10) +#define IOC_NET_HEADER_FIELD_TCP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_TCP_PORT_SRC << 11) - 1) + + +typedef uint8_t ioc_header_field_sctp_t; + +#define IOC_NET_HEADER_FIELD_SCTP_PORT_SRC (1) +#define IOC_NET_HEADER_FIELD_SCTP_PORT_DST (IOC_NET_HEADER_FIELD_SCTP_PORT_SRC << 1) +#define IOC_NET_HEADER_FIELD_SCTP_VER_TAG (IOC_NET_HEADER_FIELD_SCTP_PORT_SRC << 2) +#define IOC_NET_HEADER_FIELD_SCTP_CKSUM (IOC_NET_HEADER_FIELD_SCTP_PORT_SRC << 3) +#define IOC_NET_HEADER_FIELD_SCTP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_SCTP_PORT_SRC << 4) - 1) + + +typedef uint8_t ioc_header_field_dccp_t; + +#define IOC_NET_HEADER_FIELD_DCCP_PORT_SRC (1) +#define IOC_NET_HEADER_FIELD_DCCP_PORT_DST (IOC_NET_HEADER_FIELD_DCCP_PORT_SRC << 1) +#define IOC_NET_HEADER_FIELD_DCCP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_DCCP_PORT_SRC << 2) - 1) + + +typedef uint8_t ioc_header_field_udp_t; + +#define IOC_NET_HEADER_FIELD_UDP_PORT_SRC (1) +#define IOC_NET_HEADER_FIELD_UDP_PORT_DST (IOC_NET_HEADER_FIELD_UDP_PORT_SRC << 1) +#define IOC_NET_HEADER_FIELD_UDP_LEN (IOC_NET_HEADER_FIELD_UDP_PORT_SRC << 2) +#define IOC_NET_HEADER_FIELD_UDP_CKSUM (IOC_NET_HEADER_FIELD_UDP_PORT_SRC << 3) +#define IOC_NET_HEADER_FIELD_UDP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_UDP_PORT_SRC << 4) - 1) + +typedef uint8_t ioc_header_field_udp_encap_esp_t; + +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC (1) +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 1) +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 2) +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 3) +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 4) +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 5) +#define IOC_NET_HEADER_FIELD_UDP_ENCAP_ESP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 6) - 1) + +#define IOC_NET_HEADER_FIELD_IPHC_CID (1) +#define IOC_NET_HEADER_FIELD_IPHC_CID_TYPE (IOC_NET_HEADER_FIELD_IPHC_CID << 1) +#define IOC_NET_HEADER_FIELD_IPHC_HCINDEX (IOC_NET_HEADER_FIELD_IPHC_CID << 2) +#define IOC_NET_HEADER_FIELD_IPHC_GEN (IOC_NET_HEADER_FIELD_IPHC_CID << 3) +#define IOC_NET_HEADER_FIELD_IPHC_D_BIT (IOC_NET_HEADER_FIELD_IPHC_CID << 4) +#define IOC_NET_HEADER_FIELD_IPHC_ALL_FIELDS ((IOC_NET_HEADER_FIELD_IPHC_CID << 5) - 1) + +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE (1) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_FLAGS (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 1) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_LENGTH (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 2) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TSN (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 3) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_ID (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 4) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_SQN (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 5) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_PAYLOAD_PID (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 6) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_UNORDERED (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 7) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_BEGGINING (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 8) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_END (IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 9) +#define IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_ALL_FIELDS ((IOC_NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 10) - 1) + +#define IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT (1) +#define IOC_NET_HEADER_FIELD_L2TPv2_LENGTH_BIT (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 1) +#define IOC_NET_HEADER_FIELD_L2TPv2_SEQUENCE_BIT (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 2) +#define IOC_NET_HEADER_FIELD_L2TPv2_OFFSET_BIT (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 3) +#define IOC_NET_HEADER_FIELD_L2TPv2_PRIORITY_BIT (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 4) +#define IOC_NET_HEADER_FIELD_L2TPv2_VERSION (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 5) +#define IOC_NET_HEADER_FIELD_L2TPv2_LEN (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 6) +#define IOC_NET_HEADER_FIELD_L2TPv2_TUNNEL_ID (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 7) +#define IOC_NET_HEADER_FIELD_L2TPv2_SESSION_ID (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 8) +#define IOC_NET_HEADER_FIELD_L2TPv2_NS (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 9) +#define IOC_NET_HEADER_FIELD_L2TPv2_NR (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 10) +#define IOC_NET_HEADER_FIELD_L2TPv2_OFFSET_SIZE (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 11) +#define IOC_NET_HEADER_FIELD_L2TPv2_FIRST_BYTE (IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 12) +#define IOC_NET_HEADER_FIELD_L2TPv2_ALL_FIELDS ((IOC_NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 13) - 1) + +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT (1) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH_BIT (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 1) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_SEQUENCE_BIT (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 2) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_VERSION (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 3) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 4) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_CONTROL (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 5) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_SENT (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 6) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_RECV (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 7) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_FIRST_BYTE (IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 8) +#define IOC_NET_HEADER_FIELD_L2TPv3_CTRL_ALL_FIELDS ((IOC_NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 9) - 1) + +#define IOC_NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT (1) +#define IOC_NET_HEADER_FIELD_L2TPv3_SESS_VERSION (IOC_NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 1) +#define IOC_NET_HEADER_FIELD_L2TPv3_SESS_ID (IOC_NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 2) +#define IOC_NET_HEADER_FIELD_L2TPv3_SESS_COOKIE (IOC_NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 3) +#define IOC_NET_HEADER_FIELD_L2TPv3_SESS_ALL_FIELDS ((IOC_NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 4) - 1) + + +typedef uint8_t ioc_header_field_vlan_t; + +#define IOC_NET_HEADER_FIELD_VLAN_VPRI (1) +#define IOC_NET_HEADER_FIELD_VLAN_CFI (IOC_NET_HEADER_FIELD_VLAN_VPRI << 1) +#define IOC_NET_HEADER_FIELD_VLAN_VID (IOC_NET_HEADER_FIELD_VLAN_VPRI << 2) +#define IOC_NET_HEADER_FIELD_VLAN_LENGTH (IOC_NET_HEADER_FIELD_VLAN_VPRI << 3) +#define IOC_NET_HEADER_FIELD_VLAN_TYPE (IOC_NET_HEADER_FIELD_VLAN_VPRI << 4) +#define IOC_NET_HEADER_FIELD_VLAN_ALL_FIELDS ((IOC_NET_HEADER_FIELD_VLAN_VPRI << 5) - 1) + + +typedef uint8_t ioc_header_field_llc_t; + +#define IOC_NET_HEADER_FIELD_LLC_DSAP (1) +#define IOC_NET_HEADER_FIELD_LLC_SSAP (IOC_NET_HEADER_FIELD_LLC_DSAP << 1) +#define IOC_NET_HEADER_FIELD_LLC_CTRL (IOC_NET_HEADER_FIELD_LLC_DSAP << 2) +#define IOC_NET_HEADER_FIELD_LLC_ALL_FIELDS ((IOC_NET_HEADER_FIELD_LLC_DSAP << 3) - 1) + +#define IOC_NET_HEADER_FIELD_NLPID_NLPID (1) +#define IOC_NET_HEADER_FIELD_NLPID_ALL_FIELDS ((IOC_NET_HEADER_FIELD_NLPID_NLPID << 1) - 1) + + +typedef uint8_t ioc_header_field_snap_t; + +#define IOC_NET_HEADER_FIELD_SNAP_OUI (1) +#define IOC_NET_HEADER_FIELD_SNAP_PID (IOC_NET_HEADER_FIELD_SNAP_OUI << 1) +#define IOC_NET_HEADER_FIELD_SNAP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_SNAP_OUI << 2) - 1) + + +typedef uint8_t ioc_header_field_llc_snap_t; + +#define IOC_NET_HEADER_FIELD_LLC_SNAP_TYPE (1) +#define IOC_NET_HEADER_FIELD_LLC_SNAP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_LLC_SNAP_TYPE << 1) - 1) + +#define IOC_NET_HEADER_FIELD_ARP_HTYPE (1) +#define IOC_NET_HEADER_FIELD_ARP_PTYPE (IOC_NET_HEADER_FIELD_ARP_HTYPE << 1) +#define IOC_NET_HEADER_FIELD_ARP_HLEN (IOC_NET_HEADER_FIELD_ARP_HTYPE << 2) +#define IOC_NET_HEADER_FIELD_ARP_PLEN (IOC_NET_HEADER_FIELD_ARP_HTYPE << 3) +#define IOC_NET_HEADER_FIELD_ARP_OPER (IOC_NET_HEADER_FIELD_ARP_HTYPE << 4) +#define IOC_NET_HEADER_FIELD_ARP_SHA (IOC_NET_HEADER_FIELD_ARP_HTYPE << 5) +#define IOC_NET_HEADER_FIELD_ARP_SPA (IOC_NET_HEADER_FIELD_ARP_HTYPE << 6) +#define IOC_NET_HEADER_FIELD_ARP_THA (IOC_NET_HEADER_FIELD_ARP_HTYPE << 7) +#define IOC_NET_HEADER_FIELD_ARP_TPA (IOC_NET_HEADER_FIELD_ARP_HTYPE << 8) +#define IOC_NET_HEADER_FIELD_ARP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_ARP_HTYPE << 9) - 1) + +#define IOC_NET_HEADER_FIELD_RFC2684_LLC (1) +#define IOC_NET_HEADER_FIELD_RFC2684_NLPID (IOC_NET_HEADER_FIELD_RFC2684_LLC << 1) +#define IOC_NET_HEADER_FIELD_RFC2684_OUI (IOC_NET_HEADER_FIELD_RFC2684_LLC << 2) +#define IOC_NET_HEADER_FIELD_RFC2684_PID (IOC_NET_HEADER_FIELD_RFC2684_LLC << 3) +#define IOC_NET_HEADER_FIELD_RFC2684_VPN_OUI (IOC_NET_HEADER_FIELD_RFC2684_LLC << 4) +#define IOC_NET_HEADER_FIELD_RFC2684_VPN_IDX (IOC_NET_HEADER_FIELD_RFC2684_LLC << 5) +#define IOC_NET_HEADER_FIELD_RFC2684_ALL_FIELDS ((IOC_NET_HEADER_FIELD_RFC2684_LLC << 6) - 1) + +#define IOC_NET_HEADER_FIELD_USER_DEFINED_SRCPORT (1) +#define IOC_NET_HEADER_FIELD_USER_DEFINED_PCDID (IOC_NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 1) +#define IOC_NET_HEADER_FIELD_USER_DEFINED_ALL_FIELDS ((IOC_NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 2) - 1) + +#define IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER (1) +#define IOC_NET_HEADER_FIELD_PAYLOAD_SIZE (IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER << 1) +#define IOC_NET_HEADER_FIELD_MAX_FRM_SIZE (IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER << 2) +#define IOC_NET_HEADER_FIELD_MIN_FRM_SIZE (IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER << 3) +#define IOC_NET_HEADER_FIELD_PAYLOAD_TYPE (IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER << 4) +#define IOC_NET_HEADER_FIELD_FRAME_SIZE (IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER << 5) +#define IOC_NET_HEADER_FIELD_PAYLOAD_ALL_FIELDS ((IOC_NET_HEADER_FIELD_PAYLOAD_BUFFER << 6) - 1) + + +typedef uint8_t ioc_header_field_gre_t; + +#define IOC_NET_HEADER_FIELD_GRE_TYPE (1) +#define IOC_NET_HEADER_FIELD_GRE_ALL_FIELDS ((IOC_NET_HEADER_FIELD_GRE_TYPE << 1) - 1) + + +typedef uint8_t ioc_header_field_minencap_t; + +#define IOC_NET_HEADER_FIELD_MINENCAP_SRC_IP (1) +#define IOC_NET_HEADER_FIELD_MINENCAP_DST_IP (IOC_NET_HEADER_FIELD_MINENCAP_SRC_IP << 1) +#define IOC_NET_HEADER_FIELD_MINENCAP_TYPE (IOC_NET_HEADER_FIELD_MINENCAP_SRC_IP << 2) +#define IOC_NET_HEADER_FIELD_MINENCAP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_MINENCAP_SRC_IP << 3) - 1) + + +typedef uint8_t ioc_header_field_ipsec_ah_t; + +#define IOC_NET_HEADER_FIELD_IPSEC_AH_SPI (1) +#define IOC_NET_HEADER_FIELD_IPSEC_AH_NH (IOC_NET_HEADER_FIELD_IPSEC_AH_SPI << 1) +#define IOC_NET_HEADER_FIELD_IPSEC_AH_ALL_FIELDS ((IOC_NET_HEADER_FIELD_IPSEC_AH_SPI << 2) - 1) + + +typedef uint8_t ioc_header_field_ipsec_esp_t; + +#define IOC_NET_HEADER_FIELD_IPSEC_ESP_SPI (1) +#define IOC_NET_HEADER_FIELD_IPSEC_ESP_SEQUENCE_NUM (IOC_NET_HEADER_FIELD_IPSEC_ESP_SPI << 1) +#define IOC_NET_HEADER_FIELD_IPSEC_ESP_ALL_FIELDS ((IOC_NET_HEADER_FIELD_IPSEC_ESP_SPI << 2) - 1) + + +typedef uint8_t ioc_header_field_mpls_t; + +#define IOC_NET_HEADER_FIELD_MPLS_LABEL_STACK (1) +#define IOC_NET_HEADER_FIELD_MPLS_LABEL_STACK_ALL_FIELDS ((IOC_NET_HEADER_FIELD_MPLS_LABEL_STACK << 1) - 1) + + +typedef uint8_t ioc_header_field_macsec_t; + +#define IOC_NET_HEADER_FIELD_MACSEC_SECTAG (1) +#define IOC_NET_HEADER_FIELD_MACSEC_ALL_FIELDS ((IOC_NET_HEADER_FIELD_MACSEC_SECTAG << 1) - 1) + +typedef enum { + e_IOC_NET_HEADER_TYPE_NONE = 0, + e_IOC_NET_HEADER_TYPE_PAYLOAD, + e_IOC_NET_HEADER_TYPE_ETH, + e_IOC_NET_HEADER_TYPE_VLAN, + e_IOC_NET_HEADER_TYPE_IPv4, + e_IOC_NET_HEADER_TYPE_IPv6, + e_IOC_NET_HEADER_TYPE_TCP, + e_IOC_NET_HEADER_TYPE_UDP, + e_IOC_NET_HEADER_TYPE_IPHC, + e_IOC_NET_HEADER_TYPE_SCTP, + e_IOC_NET_HEADER_TYPE_SCTP_CHUNK_DATA, + e_IOC_NET_HEADER_TYPE_PPPoE, + e_IOC_NET_HEADER_TYPE_PPP, + e_IOC_NET_HEADER_TYPE_PPPMUX, + e_IOC_NET_HEADER_TYPE_PPPMUX_SUBFRAME, + e_IOC_NET_HEADER_TYPE_L2TPv2, + e_IOC_NET_HEADER_TYPE_L2TPv3_CTRL, + e_IOC_NET_HEADER_TYPE_L2TPv3_SESS, + e_IOC_NET_HEADER_TYPE_LLC, + e_IOC_NET_HEADER_TYPE_LLC_SNAP, + e_IOC_NET_HEADER_TYPE_NLPID, + e_IOC_NET_HEADER_TYPE_SNAP, + e_IOC_NET_HEADER_TYPE_MPLS, + e_IOC_NET_HEADER_TYPE_IPSEC_AH, + e_IOC_NET_HEADER_TYPE_IPSEC_ESP, + e_IOC_NET_HEADER_TYPE_UDP_ENCAP_ESP, /* RFC 3948 */ + e_IOC_NET_HEADER_TYPE_MACSEC, /* moved */ + e_IOC_NET_HEADER_TYPE_GRE, + e_IOC_NET_HEADER_TYPE_MINENCAP, + e_IOC_NET_HEADER_TYPE_DCCP, + e_IOC_NET_HEADER_TYPE_ICMP, + e_IOC_NET_HEADER_TYPE_IGMP, + e_IOC_NET_HEADER_TYPE_ARP, + e_IOC_NET_HEADER_TYPE_CAPWAP, /* new */ + e_IOC_NET_HEADER_TYPE_CAPWAP_DTLS, /* new */ + e_IOC_NET_HEADER_TYPE_RFC2684, + e_IOC_NET_HEADER_TYPE_USER_DEFINED_L2, + e_IOC_NET_HEADER_TYPE_USER_DEFINED_L3, + e_IOC_NET_HEADER_TYPE_USER_DEFINED_L4, + e_IOC_NET_HEADER_TYPE_USER_DEFINED_SHIM1, + e_IOC_NET_HEADER_TYPE_USER_DEFINED_SHIM2, + e_IOC_NET_MAX_HEADER_TYPE_COUNT +} ioc_net_header_type; + + +#endif /* __NET_IOCTLS_H */ --- linux-ppc-3.8.0.orig/include/linux/fmd/Peripherals/Kbuild +++ linux-ppc-3.8.0/include/linux/fmd/Peripherals/Kbuild @@ -0,0 +1,4 @@ +header-y += fm_ioctls.h +header-y += fm_port_ioctls.h +header-y += fm_pcd_ioctls.h +header-y += fm_test_ioctls.h --- linux-ppc-3.8.0.orig/include/linux/fmd/Peripherals/fm_port_ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/Peripherals/fm_port_ioctls.h @@ -0,0 +1,683 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_port_ioctls.h + + @Description FM Port routines +*//***************************************************************************/ +#ifndef __FM_PORT_IOCTLS_H +#define __FM_PORT_IOCTLS_H + +#include "net_ioctls.h" +#include "fm_ioctls.h" +#include "fm_pcd_ioctls.h" + + +/**************************************************************************//** + @Group lnx_ioctl_FM_grp Frame Manager Linux IOCTL API + + @Description FM Linux ioctls definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group lnx_ioctl_FM_PORT_grp FM Port + + @Description FM Port API + + The FM uses a general module called "port" to represent a Tx port + (MAC), an Rx port (MAC), offline parsing flow or host command + flow. There may be up to 17 (may change) ports in an FM - 5 Tx + ports (4 for the 1G MACs, 1 for the 10G MAC), 5 Rx Ports, and 7 + Host command/Offline parsing ports. The SW driver manages these + ports as sub-modules of the FM, i.e. after an FM is initialized, + its ports may be initialized and operated upon. + The port is initialized aware of its type, but other functions on + a port may be indifferent to its type. When necessary, the driver + verifies coherency and returns error if applicable. + On initialization, user specifies the port type and it's index + (relative to the port's type). Host command and Offline parsing + ports share the same id range, I.e user may not initialized host + command port 0 and offline parsing port 0. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group lnx_ioctl_FM_PORT_runtime_control_grp FM Port Runtime Control Unit + + @Description FM Port Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General FM Port defines +*//***************************************************************************/ +#ifdef CONFIG_FMAN_P1023 +#define IOC_FM_PORT_NUM_OF_CONGESTION_GRPS 32 /**< Total number of congestion groups in QM */ +#else +#define IOC_FM_PORT_NUM_OF_CONGESTION_GRPS 256 /**< Total number of congestion groups in QM */ +#endif +/* @} */ + + +/**************************************************************************//** + @Description struct for defining port PCD modes + (must match enum e_FmPortPcdSupport defined in fm_port_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_port_pcd_support { + e_IOC_FM_PORT_PCD_SUPPORT_NONE = 0, /**< BMI to BMI, PCD is not used */ + e_IOC_FM_PORT_PCD_SUPPORT_PRS_ONLY, /**< Use only Parser */ + e_IOC_FM_PORT_PCD_SUPPORT_PLCR_ONLY, /**< Use only Policer */ + e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR, /**< Use Parser and Policer */ + e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_KG, /**< Use Parser and Keygen */ + e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC, /**< Use Parser, Keygen and Coarse Classification */ + e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_CC_AND_PLCR, /**< Use all PCD engines */ + e_IOC_FM_PORT_PCD_SUPPORT_PRS_AND_KG_AND_PLCR, /**< Use Parser, Keygen and Policer */ +#ifdef FM_CAPWAP_SUPPORT + e_IOC_FM_PORT_PCD_SUPPORT_CC_ONLY, /**< Use only Coarse Classification */ + e_IOC_FM_PORT_PCD_SUPPORT_CC_AND_KG, /**< Use Coarse Classification,and Keygen */ + e_IOC_FM_PORT_PCD_SUPPORT_CC_AND_KG_AND_PLCR /**< Use Coarse Classification, Keygen and Policer */ +#endif +} ioc_fm_port_pcd_support; + +/**************************************************************************//** + @Description enum for defining FM Port counters + (must match enum e_FmPortCounters defined in fm_port_ext.h) +*//***************************************************************************/ +typedef enum fm_port_counters { + e_IOC_FM_PORT_COUNTERS_CYCLE, /**< BMI performance counter */ + e_IOC_FM_PORT_COUNTERS_TASK_UTIL, /**< BMI performance counter */ + e_IOC_FM_PORT_COUNTERS_QUEUE_UTIL, /**< BMI performance counter */ + e_IOC_FM_PORT_COUNTERS_DMA_UTIL, /**< BMI performance counter */ + e_IOC_FM_PORT_COUNTERS_FIFO_UTIL, /**< BMI performance counter */ + e_IOC_FM_PORT_COUNTERS_RX_PAUSE_ACTIVATION, /**< BMI Rx only performance counter */ + e_IOC_FM_PORT_COUNTERS_FRAME, /**< BMI statistics counter */ + e_IOC_FM_PORT_COUNTERS_DISCARD_FRAME, /**< BMI statistics counter */ + e_IOC_FM_PORT_COUNTERS_DEALLOC_BUF, /**< BMI deallocate buffer statistics counter */ + e_IOC_FM_PORT_COUNTERS_RX_BAD_FRAME, /**< BMI Rx only statistics counter */ + e_IOC_FM_PORT_COUNTERS_RX_LARGE_FRAME, /**< BMI Rx only statistics counter */ + e_IOC_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, /**< BMI Rx only statistics counter */ + e_IOC_FM_PORT_COUNTERS_RX_FILTER_FRAME, /**< BMI Rx & OP only statistics counter */ + e_IOC_FM_PORT_COUNTERS_RX_LIST_DMA_ERR, /**< BMI Rx, OP & HC only statistics counter */ + e_IOC_FM_PORT_COUNTERS_WRED_DISCARD, /**< BMI OP & HC only statistics counter */ + e_IOC_FM_PORT_COUNTERS_LENGTH_ERR, /**< BMI non-Rx statistics counter */ + e_IOC_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, /**< BMI non-Rx statistics counter */ + e_IOC_FM_PORT_COUNTERS_DEQ_TOTAL, /**< QMI counter */ + e_IOC_FM_PORT_COUNTERS_ENQ_TOTAL, /**< QMI counter */ + e_IOC_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI counter */ + e_IOC_FM_PORT_COUNTERS_DEQ_CONFIRM /**< QMI counter */ +} fm_port_counters; + +/**************************************************************************//** + @Description Structure for Port id parameters. + Fields commented 'IN' are passed by the port module to be used + by the FM module. + Fields commented 'OUT' will be filled by FM before returning to port. +*//***************************************************************************/ +typedef struct ioc_fm_port_congestion_groups_t { + uint16_t num_of_congestion_grps_to_consider; /**< Size of congestion_grps_to_consider array */ + uint8_t congestion_grps_to_consider [IOC_FM_PORT_NUM_OF_CONGESTION_GRPS]; /**< list of congestion groups */ +} ioc_fm_port_congestion_groups_t; + +/**************************************************************************//** + @Description struct for defining Dual Tx rate limiting scale + (identical to e_FmPortDualRateLimiterScaleDown defined in fm_port_ext.h) +*//***************************************************************************/ +typedef enum fm_port_dual_rate_limiter_scale_down { + e_IOC_FM_PORT_DUAL_RATE_LIMITER_NONE = 0, /**< Use only single rate limiter */ + e_IOC_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_2, /**< Divide high rate limiter by 2 */ + e_IOC_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_4, /**< Divide high rate limiter by 4 */ + e_IOC_FM_PORT_DUAL_RATE_LIMITER_SCALE_DOWN_BY_8 /**< Divide high rate limiter by 8 */ +} fm_port_dual_rate_limiter_scale_down; + +/**************************************************************************//** + @Description struct for defining Tx rate limiting + (identical to t_FmPortRateLimit defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_rate_limit { + uint16_t max_burst_size; /**< in KBytes for Tx ports, in frames + for offline parsing ports. (note that + for early chips burst size is + rounded up to a multiply of 1000 frames).*/ + uint32_t rate_limit; /**< in Kb/sec for Tx ports, in frame/sec for + offline parsing ports. Rate limit refers to + data rate (rather than line rate). */ + fm_port_dual_rate_limiter_scale_down rate_limit_divider; /**< For offline parsing ports only. Not-valid + for some earlier chip revisions */ +} ioc_fm_port_rate_limit_t; + + +/**************************************************************************//** + @Function FM_PORT_IOC_DISABLE + + @Description Gracefully disable an FM port. The port will not start new tasks after all + tasks associated with the port are terminated. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). + This is a blocking routine, it returns after port is + gracefully stopped, i.e. the port will not except new frames, + but it will finish all frames or tasks which were already began +*//***************************************************************************/ +#define FM_PORT_IOC_DISABLE _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(1)) + +/**************************************************************************//** + @Function FM_PORT_IOC_ENABLE + + @Description A runtime routine provided to allow disable/enable of port. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_ENABLE _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(2)) + +/**************************************************************************//** + @Function FM_PORT_IOC_SET_RATE_LIMIT + + @Description Calling this routine enables rate limit algorithm. + By default, this functionality is disabled. + Note that rate-limit mechanism uses the FM time stamp. + The selected rate limit specified here would be + rounded to the nearest power of 2 multiplication + (i.e. up to twice the required rate). + + May be used for Tx and offline parsing ports only + + @Param[in] ioc_fm_port_rate_limit A structure of rate limit parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_SET_RATE_LIMIT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(3), ioc_fm_port_rate_limit_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_REMOVE_RATE_LIMIT + + @Description Calling this routine disables the previously enabled rate limit. + + May be used for Tx and offline parsing ports only + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_REMOVE_RATE_LIMIT _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(5)) + +/**************************************************************************//** + @Function FM_PORT_IOC_SET_ERRORS_ROUTE + + @Description Errors selected for this routine will cause a frame with that error + to be enqueued to error queue. + Errors not selected for this routine will cause a frame with that error + to be enqueued to the one of the other port queues. + By default all errors are defined to be enqueued to error queue. + Errors that were configured to be discarded (at initialization) + may not be selected here. + + May be used for Rx and offline parsing ports only + + @Param[in] ioc_fm_port_frame_err_select_t A list of errors to enqueue to error queue + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Config() and before FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_SET_ERRORS_ROUTE _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(4), ioc_fm_port_frame_err_select_t) + +/**************************************************************************//** + @Group lnx_ioctl_FM_PORT_pcd_runtime_control_grp FM Port PCD Runtime Control Unit + + @Description FM Port PCD Runtime control unit API functions, definitions and enums. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description A structure of scheme parameters + (must match struct t_FmPcdKgSchemeSelect defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_scheme_select_t { + bool direct; /**< TRUE to use 'scheme_id' directly, FALSE to use LCV.*/ + void *scheme_id; /**< Relevant for 'direct'=TRUE only. + 'scheme_id' selects the scheme after parser. */ +} ioc_fm_pcd_kg_scheme_select_t; + +/**************************************************************************//** + @Description A structure for defining the Parser starting point + (must match struct t_FmPcdPrsStart defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_prs_start_t { + uint8_t parsing_offset; /**< Number of bytes from begining of packet to + start parsing */ + ioc_net_header_type first_prs_hdr; /**< The type of the first header axpected at + 'parsing_offset' */ +} ioc_fm_pcd_prs_start_t; + +/**************************************************************************//** + @Description Scheme IDs structure + (must match struct t_FmPcdPortSchemesParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_port_schemes_params_t { + uint8_t num_of_schemes; /**< Number of schemes for port to be bound to. */ + void *scheme_ids [IOC_FM_PCD_KG_NUM_OF_SCHEMES]; + /**< Array of 'num_of_schemes' schemes for the + port to be bound to */ +} ioc_fm_pcd_port_schemes_params_t; + +/**************************************************************************//** + @Description Union for defining port protocol parameters for parser + (must match union u_FmPcdHdrPrsOpts defined in fm_port_ext.h) +*//***************************************************************************/ +typedef union ioc_fm_pcd_hdr_prs_opts_u { + /* MPLS */ + struct { + bool label_interpretation_enable;/**< When this bit is set, the last MPLS label will be + interpreted as described in HW spec table. When the bit + is cleared, the parser will advance to MPLS next parse */ + ioc_net_header_type next_parse; /**< must be equal or higher than IPv4 */ + } mpls_prs_options; + /* VLAN */ + struct { + uint16_t tag_protocol_id1; /**< User defined Tag Protocol Identifier, to be recognized + on VLAN TAG on top of 0x8100 and 0x88A8 */ + uint16_t tag_protocol_id2; /**< User defined Tag Protocol Identifier, to be recognized + on VLAN TAG on top of 0x8100 and 0x88A8 */ + } vlan_prs_options; + /* IPV6 */ + struct { + bool routing_hdr_disable; /**< Disable routing header */ + } ipv6_prs_options; + + /* UDP */ + struct { + bool pad_ignore_checksum; /**< TRUE to ignore pad in checksum */ + } udp_prs_options; + + /* TCP */ + struct { + bool pad_ignore_checksum; /**< TRUE to ignore pad in checksum */ + } tcp_prs_options; +} ioc_fm_pcd_hdr_prs_opts_u; + + +/**************************************************************************//** + @Description A structure for defining each header for the parser + (must match struct t_FmPcdPrsAdditionalHdrParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_prs_additional_hdr_params_t { + ioc_net_header_type hdr; /**< Selected header */ + bool err_disable; /**< TRUE to disable error indication */ + bool soft_prs_enable; /**< Enable jump to SW parser when this + header is recognized by the HW parser. */ + uint8_t index_per_hdr; /**< Normally 0, if more than one sw parser + attachments exists for the same header, + (in the main sw parser code) use this + index to distinguish between them. */ + bool use_prs_opts; /**< TRUE to use parser options. */ + ioc_fm_pcd_hdr_prs_opts_u prs_opts; /**< A unuion according to header type, + defining the parser options selected.*/ +} ioc_fm_pcd_prs_additional_hdr_params_t; + +/**************************************************************************//** + @Description struct for defining port PCD parameters + (must match t_FmPortPcdPrsParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_pcd_prs_params_t { + uint8_t prs_res_priv_info; /**< The private info provides a method of inserting + port information into the parser result. This information + may be extracted by Keygen and be used for frames + distribution when a per-port distinction is required, + it may also be used as a port logical id for analyazing + incoming frames. */ + uint8_t parsing_offset; /**< Number of bytes from begining of packet to + start parsing */ + ioc_net_header_type first_prs_hdr; /**< The type of the first header axpected at + 'parsingOffset' */ + bool includeInPrsStatistics; /**< TRUE to include this port in the parser statistics; + NOTE: this field is not valid when the FN is in "guest" mode. */ + uint8_t num_of_hdrs_with_additional_params; + /**< Normally 0, some headers may get + special parameters */ + ioc_fm_pcd_prs_additional_hdr_params_t additional_params[IOC_FM_PCD_PRS_NUM_OF_HDRS]; + /**< A structure of additional parameters + for each header that requires them */ + bool set_vlan_tpid1; /**< TRUE to configure user selection of Ethertype to + indicate a VLAN tag (in addition to the TPID values + 0x8100 and 0x88A8). */ + uint16_t vlan_tpid1; /**< extra tag to use if setVlanTpid1=TRUE. */ + bool set_vlan_tpid2; /**< TRUE to configure user selection of Ethertype to + indicate a VLAN tag (in addition to the TPID values + 0x8100 and 0x88A8). */ + uint16_t vlan_tpid2; /**< extra tag to use if setVlanTpid1=TRUE. */ +} ioc_fm_port_pcd_prs_params_t; + +/**************************************************************************//** + @Description struct for defining coarse alassification parameters + (must match t_FmPortPcdCcParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_pcd_cc_params_t { + void *cc_tree_id; /**< CC tree id */ +} ioc_fm_port_pcd_cc_params_t; + +/**************************************************************************//** + @Description struct for defining keygen parameters + (must match t_FmPortPcdKgParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_pcd_kg_params_t { + uint8_t num_of_schemes; /**< Number of schemes for port to be bound to. */ + void *schemes_ids[IOC_FM_PCD_KG_NUM_OF_SCHEMES]; + /**< Array of 'numOfSchemes' schemes for the + port to be bound to */ + bool direct_scheme; /**< TRUE for going from parser to a specific scheme, + regardless of parser result */ + void *direct_scheme_id; /**< relevant only if direct == TRUE */ +} ioc_fm_port_pcd_kg_params_t; + +/**************************************************************************//** + @Description struct for defining policer parameters + (must match t_FmPortPcdPlcrParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_pcd_plcr_params_t { + void *plcr_profile_id; /**< relevant only if + e_IOC_FM_PCD_SUPPORT_PLCR_ONLY or + e_IOC_FM_PCD_SUPPORT_PRS_AND_PLCR were selected */ +} ioc_fm_port_pcd_plcr_params_t; + +/**************************************************************************//** + @Description struct for defining port PCD parameters + (must match struct t_FmPortPcdParams defined in fm_port_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_pcd_params_t { + ioc_fm_port_pcd_support pcd_support; /**< Relevant for Rx and offline ports only. + Describes the active PCD engines for this port. */ + void *net_env_id; /**< HL Unused in PLCR only mode */ + ioc_fm_port_pcd_prs_params_t *p_prs_params; /**< Parser parameters for this port */ + ioc_fm_port_pcd_cc_params_t *p_cc_params; /**< Coarse classification parameters for this port */ + ioc_fm_port_pcd_kg_params_t *p_kg_params; /**< Keygen parameters for this port */ + ioc_fm_port_pcd_plcr_params_t *p_plcr_params; /**< Policer parameters for this port */ +} ioc_fm_port_pcd_params_t; + +/**************************************************************************//** + @Description FQID parameters structure +*//***************************************************************************/ +typedef struct ioc_fm_port_pcd_fqids_params_t { + uint32_t num_fqids; /**< Number of fqids to be allocated for the port */ + uint8_t alignment; /**< Alignment required for this port */ + uint32_t base_fqid; /**< output parameter - the base fqid */ +} ioc_fm_port_pcd_fqids_params_t; + + +/**************************************************************************//** + @Function FM_PORT_IOC_ALLOC_PCD_FQIDS + + @Description Allocates FQID's + + May be used for Rx and offline parsing ports only + + @Param[in,out] ioc_fm_port_pcd_fqids_params_t Parameters for allocating FQID's + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_ALLOC_PCD_FQIDS _IOWR(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(19), ioc_fm_port_pcd_fqids_params_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_FREE_PCD_FQIDS + + @Description Frees previously-allocated FQIDs + + May be used for Rx and offline parsing ports only + + @Param[in] uint32_t Base FQID of previously allocated range. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_FREE_PCD_FQIDS _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(19), uint32_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_SET_PCD + + @Description Calling this routine defines the port's PCD configuration. + It changes it from its default configuration which is PCD + disabled (BMI to BMI) and configures it according to the passed + parameters. + + May be used for Rx and offline parsing ports only + + @Param[in] ioc_fm_port_pcd_params_t A Structure of parameters defining the port's PCD + configuration. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PORT_IOC_SET_PCD_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(20), ioc_compat_fm_port_pcd_params_t) +#endif +#define FM_PORT_IOC_SET_PCD _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(20), ioc_fm_port_pcd_params_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_DELETE_PCD + + @Description Calling this routine releases the port's PCD configuration. + The port returns to its default configuration which is PCD + disabled (BMI to BMI) and all PCD configuration is removed. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_DELETE_PCD _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(21)) + +/**************************************************************************//** + @Function FM_PORT_IOC_DETACH_PCD + + @Description Calling this routine detaches the port from its PCD functionality. + The port returns to its default flow which is BMI to BMI. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_DETACH_PCD _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(22)) + +/**************************************************************************//** + @Function FM_PORT_IOC_ATTACH_PCD + + @Description This routine may be called after FM_PORT_DetachPCD was called, + to return to the originally configured PCD support flow. + The couple of routines are used to allow PCD configuration changes + that demand that PCD will not be used while changes take place. + + May be used for Rx and offline parsing ports which are + in PCD mode only + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_ATTACH_PCD _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(23)) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_PLCR_ALLOC_PROFILES + + @Description This routine may be called only for ports that use the Policer in + order to allocate private policer profiles. + + @Param[in] uint16_t The number of required policer profiles + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PCD_Init(), and before FM_PORT_SetPCD(). +*//***************************************************************************/ +#define FM_PORT_IOC_PCD_PLCR_ALLOC_PROFILES _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(24), uint16_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_PLCR_FREE_PROFILES + + @Description This routine should be called for freeing private policer profiles. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() and FM_PCD_Init(), and before FM_PORT_SetPCD(). +*//***************************************************************************/ +#define FM_PORT_IOC_PCD_PLCR_FREE_PROFILES _IO(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(25)) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME + + @Description This routine may be called only for ports that use the keygen in + order to change the initial scheme frame should be routed to. + The change may be of a scheme id (in case of direct mode), + from direct to indirect, or from indirect to direct - specifying the scheme id. + + @Param[in] ioc_fm_pcd_kg_scheme_select_t A structure of parameters for defining whether + a scheme is direct/indirect, and if direct - scheme id. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(26), ioc_compat_fm_pcd_kg_scheme_select_t) +#endif +#define FM_PORT_IOC_PCD_KG_MODIFY_INITIAL_SCHEME _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(26), ioc_fm_pcd_kg_scheme_select_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE + + @Description This routine may be called for ports with flows e_IOC_FM_PCD_SUPPORT_PLCR_ONLY or + e_IOC_FM_PCD_SUPPORT_PRS_AND_PLCR only, to change the initial Policer profile frame + should be routed to. The change may be of a profile and/or absolute/direct mode + selection. + + @Param[in] ioc_fm_obj_t Policer profile Id as returned from FM_PCD_PlcrSetProfile. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(27), ioc_compat_fm_obj_t) +#endif +#define FM_PORT_IOC_PCD_PLCR_MODIFY_INITIAL_PROFILE _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(27), ioc_fm_obj_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_CC_MODIFY_TREE + + @Description This routine may be called to change this port connection to + a pre-initializes coarse classification Tree. + + @Param[in] ioc_fm_obj_t Id of new coarse classification tree selected for this port. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PORT_IOC_PCD_CC_MODIFY_TREE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(28), ioc_compat_fm_obj_t) +#endif +#define FM_PORT_IOC_PCD_CC_MODIFY_TREE _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(28), ioc_fm_obj_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_KG_BIND_SCHEMES + + @Description These routines may be called for modifying the binding of ports + to schemes. The scheme itself is not added, + just this specific port starts using it. + + @Param[in] ioc_fm_pcd_port_schemes_params_t Schemes parameters structre + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PORT_IOC_PCD_KG_BIND_SCHEMES_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(30), ioc_compat_fm_pcd_port_schemes_params_t) +#endif +#define FM_PORT_IOC_PCD_KG_BIND_SCHEMES _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(30), ioc_fm_pcd_port_schemes_params_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES + + @Description These routines may be called for modifying the binding of ports + to schemes. The scheme itself is not removed or invalidated, + just this specific port stops using it. + + @Param[in] ioc_fm_pcd_port_schemes_params_t Schemes parameters structre + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(31), ioc_compat_fm_pcd_port_schemes_params_t) +#endif +#define FM_PORT_IOC_PCD_KG_UNBIND_SCHEMES _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(31), ioc_fm_pcd_port_schemes_params_t) + +/**************************************************************************//** + @Function FM_PORT_IOC_PCD_PRS_MODIFY_START_OFFSET + + @Description Runtime change of the parser start offset within the header. + + @Param[in] ioc_fm_pcd_prs_start_t A structure of parameters for defining the + start point for the parser. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init(). +*//***************************************************************************/ +#define FM_PORT_IOC_PCD_PRS_MODIFY_START_OFFSET _IOW(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(32), ioc_fm_pcd_prs_start_t) + +/** @} */ /* end of lnx_ioctl_FM_PORT_pcd_runtime_control_grp group */ +/** @} */ /* end of lnx_ioctl_FM_PORT_runtime_control_grp group */ +/** @} */ /* end of lnx_ioctl_FM_PORT_grp group */ +/** @} */ /* end of lnx_ioctl_FM_grp group */ + + +#endif /* __FM_PORT_IOCTLS_H */ --- linux-ppc-3.8.0.orig/include/linux/fmd/Peripherals/fm_ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/Peripherals/fm_ioctls.h @@ -0,0 +1,322 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_ioctls.h + + @Description FM Char device ioctls +*//***************************************************************************/ +#ifndef __FM_IOCTLS_H +#define __FM_IOCTLS_H + + +/**************************************************************************//** + @Group lnx_ioctl_FM_grp Frame Manager Linux IOCTL API + + @Description FM Linux ioctls definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection FM IOCTL device ('/dev') definitions +*//***************************************************************************/ +#define DEV_FM_NAME "fm" /**< Name of the FM chardev */ + +#define DEV_FM_MINOR_BASE 0 +#define DEV_FM_PCD_MINOR_BASE (DEV_FM_MINOR_BASE + 1) /*/dev/fmx-pcd */ +#define DEV_FM_OH_PORTS_MINOR_BASE (DEV_FM_PCD_MINOR_BASE + 1) /*/dev/fmx-port-ohy */ +#define DEV_FM_RX_PORTS_MINOR_BASE (DEV_FM_OH_PORTS_MINOR_BASE + FM_MAX_NUM_OF_OH_PORTS) /*/dev/fmx-port-rxy */ +#define DEV_FM_TX_PORTS_MINOR_BASE (DEV_FM_RX_PORTS_MINOR_BASE + FM_MAX_NUM_OF_RX_PORTS) /*/dev/fmx-port-txy */ +#define DEV_FM_MAX_MINORS (DEV_FM_TX_PORTS_MINOR_BASE + FM_MAX_NUM_OF_TX_PORTS) + + +#define FM_IOC_NUM(n) n +#define FM_PCD_IOC_NUM(n) (n+20) +#define FM_PORT_IOC_NUM(n) (n+50) +/* @} */ + +#define IOC_FM_MAX_NUM_OF_PORTS 64 + +/**************************************************************************//** + @Collection FM Frame error +*//***************************************************************************/ +typedef uint32_t ioc_fm_port_frame_err_select_t; /**< typedef for defining Frame Descriptor errors */ + +#define IOC_FM_PORT_FRM_ERR_UNSUPPORTED_FORMAT 0x04000000 /**< Offline parsing only! Unsupported Format */ +#define IOC_FM_PORT_FRM_ERR_LENGTH 0x02000000 /**< Offline parsing only! Length Error */ +#define IOC_FM_PORT_FRM_ERR_DMA 0x01000000 /**< DMA Data error */ +#ifdef FM_CAPWAP_SUPPORT +#define IOC_FM_PORT_FRM_ERR_NON_FM 0x00400000 /**< non FMan error; probably come from SEC chained to FM */ +#endif /* FM_CAPWAP_SUPPORT */ +#define IOC_FM_PORT_FRM_ERR_PHYSICAL 0x00080000 /**< Rx FIFO overflow, FCS error, code error, running disparity + error (SGMII and TBI modes), FIFO parity error. PHY + Sequence error, PHY error control character detected. */ +#define IOC_FM_PORT_FRM_ERR_SIZE 0x00040000 /**< Frame too long OR Frame size exceeds max_length_frame */ +#define IOC_FM_PORT_FRM_ERR_CLS_DISCARD 0x00020000 /**< classification discard */ +#define IOC_FM_PORT_FRM_ERR_EXTRACTION 0x00008000 /**< Extract Out of Frame */ +#define IOC_FM_PORT_FRM_ERR_NO_SCHEME 0x00004000 /**< No Scheme Selected */ +#define IOC_FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW 0x00002000 /**< No Scheme Selected */ +#define IOC_FM_PORT_FRM_ERR_COLOR_YELLOW 0x00000400 /**< */ +#define IOC_FM_PORT_FRM_ERR_COLOR_RED 0x00000800 /**< */ +#define IOC_FM_PORT_FRM_ERR_ILL_PLCR 0x00000200 /**< Illegal Policer Profile selected */ +#define IOC_FM_PORT_FRM_ERR_PLCR_FRAME_LEN 0x00000100 /**< Illegal Policer Profile selected */ +#define IOC_FM_PORT_FRM_ERR_PRS_TIMEOUT 0x00000080 /**< Parser Time out Exceed */ +#define IOC_FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT 0x00000040 /**< Invalid Soft Parser instruction */ +#define IOC_FM_PORT_FRM_ERR_PRS_HDR_ERR 0x00000020 /**< Header error was identified during parsing */ +#define IOC_FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED 0x00000008 /**< Frame parsed beyind 256 first bytes */ +#define IOC_FM_PORT_FRM_ERR_PROCESS_TIMEOUT 0x00000001 /**< FPT Frame Processing Timeout Exceeded */ +/* @} */ + + +/**************************************************************************//** + @Description enum for defining port types + (must match enum e_FmPortType defined in fm_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_port_type { + e_IOC_FM_PORT_TYPE_OFFLINE_PARSING, /**< Offline parsing port (id's: 0-6, share id's with + host command, so must have exclusive id) */ + e_IOC_FM_PORT_TYPE_HOST_COMMAND, /**< Host command port (id's: 0-6, share id's with + offline parsing ports, so must have exclusive id) */ + e_IOC_FM_PORT_TYPE_RX, /**< 1G Rx port (id's: 0-3) */ + e_IOC_FM_PORT_TYPE_RX_10G, /**< 10G Rx port (id's: 0) */ + e_IOC_FM_PORT_TYPE_TX, /**< 1G Tx port (id's: 0-3) */ + e_IOC_FM_PORT_TYPE_TX_10G, /**< 10G Tx port (id's: 0) */ + e_IOC_FM_PORT_TYPE_DUMMY +} ioc_fm_port_type; + + +/**************************************************************************//** + @Group lnx_ioctl_FM_lib_grp FM library + + @Description FM API functions, definitions and enums + The FM module is the main driver module and is a mandatory module + for FM driver users. Before any further module initialization, + this module must be initialized. + The FM is a "single-tone" module. It is responsible of the common + HW modules: FPM, DMA, common QMI, common BMI initializations and + run-time control routines. This module must be initialized always + when working with any of the FM modules. + NOTE - We assumes that the FML will be initialize only by core No. 0! + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description FM Exceptions +*//***************************************************************************/ +typedef enum ioc_fm_exceptions { + e_IOC_FM_EX_DMA_BUS_ERROR, /**< DMA bus error. */ + e_IOC_FM_EX_DMA_READ_ECC, /**< Read Buffer ECC error */ + e_IOC_FM_EX_DMA_SYSTEM_WRITE_ECC, /**< Write Buffer ECC error on system side */ + e_IOC_FM_EX_DMA_FM_WRITE_ECC, /**< Write Buffer ECC error on FM side */ + e_IOC_FM_EX_FPM_STALL_ON_TASKS , /**< Stall of tasks on FPM */ + e_IOC_FM_EX_FPM_SINGLE_ECC, /**< Single ECC on FPM. */ + e_IOC_FM_EX_FPM_DOUBLE_ECC, /**< Double ECC error on FPM ram access */ + e_IOC_FM_EX_QMI_SINGLE_ECC, /**< Single ECC on QMI. */ + e_IOC_FM_EX_QMI_DOUBLE_ECC, /**< Double bit ECC occured on QMI */ + e_IOC_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,/**< Dequeu from unknown port id */ + e_IOC_FM_EX_BMI_LIST_RAM_ECC, /**< Linked List RAM ECC error */ + e_IOC_FM_EX_BMI_PIPELINE_ECC, /**< Pipeline Table ECC Error */ + e_IOC_FM_EX_BMI_STATISTICS_RAM_ECC, /**< Statistics Count RAM ECC Error Enable */ + e_IOC_FM_EX_BMI_DISPATCH_RAM_ECC, /**< Dispatch RAM ECC Error Enable */ + e_IOC_FM_EX_IRAM_ECC, /**< Double bit ECC occured on IRAM*/ + e_IOC_FM_EX_MURAM_ECC /**< Double bit ECC occured on MURAM*/ +} ioc_fm_exceptions; + + +/**************************************************************************//** + @Group lnx_ioctl_FM_runtime_control_grp FM Runtime Control Unit + + @Description FM Runtime control unit API functions, definitions and enums. + The FM driver provides a set of control routines for each module. + These routines may only be called after the module was fully + initialized (both configuration and initialization routines were + called). They are typically used to get information from hardware + (status, counters/statistics, revision etc.), to modify a current + state or to force/enable a required action. Run-time control may + be called whenever necessary and as many times as needed. + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General FM defines. + *//***************************************************************************/ +#define IOC_FM_MAX_NUM_OF_VALID_PORTS (FM_MAX_NUM_OF_OH_PORTS + \ + FM_MAX_NUM_OF_1G_RX_PORTS + \ + FM_MAX_NUM_OF_10G_RX_PORTS + \ + FM_MAX_NUM_OF_1G_TX_PORTS + \ + FM_MAX_NUM_OF_10G_TX_PORTS) +/* @} */ + +/**************************************************************************//** + @Description Structure for Port bandwidth requirement. Port is identified + by type and relative id. + (must be identical to t_FmPortBandwidth defined in fm_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_bandwidth_t { + ioc_fm_port_type type; /**< FM port type */ + uint8_t relativePortId; /**< Type relative port id */ + uint8_t bandwidth; /**< bandwidth - (in term of percents) */ +} ioc_fm_port_bandwidth_t; + +/**************************************************************************//** + @Description A Structure containing an array of Port bandwidth requirements. + The user should state the ports requiring bandwidth in terms of + percentage - i.e. all port's bandwidths in the array must add + up to 100. + (must be identical to t_FmPortsBandwidthParams defined in fm_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_port_bandwidth_params { + uint8_t numOfPorts; + /**< num of ports listed in the array below */ +/*TODO:Andy64 BUG*/ + ioc_fm_port_bandwidth_t portsBandwidths[IOC_FM_MAX_NUM_OF_VALID_PORTS]; + /**< for each port, it's bandwidth (all port's + bandwidths must add up to 100.*/ +} ioc_fm_port_bandwidth_params; + +/**************************************************************************//** + @Description enum for defining FM counters +*//***************************************************************************/ +typedef enum ioc_fm_counters { + e_IOC_FM_COUNTERS_ENQ_TOTAL_FRAME, /**< QMI total enqueued frames counter */ + e_IOC_FM_COUNTERS_DEQ_TOTAL_FRAME, /**< QMI total dequeued frames counter */ + e_IOC_FM_COUNTERS_DEQ_0, /**< QMI 0 frames from QMan counter */ + e_IOC_FM_COUNTERS_DEQ_1, /**< QMI 1 frames from QMan counter */ + e_IOC_FM_COUNTERS_DEQ_2, /**< QMI 2 frames from QMan counter */ + e_IOC_FM_COUNTERS_DEQ_3, /**< QMI 3 frames from QMan counter */ + e_IOC_FM_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI dequeue from default queue counter */ + e_IOC_FM_COUNTERS_DEQ_FROM_CONTEXT, /**< QMI dequeue from FQ context counter */ + e_IOC_FM_COUNTERS_DEQ_FROM_FD, /**< QMI dequeue from FD command field counter */ + e_IOC_FM_COUNTERS_DEQ_CONFIRM, /**< QMI dequeue confirm counter */ + e_IOC_FM_COUNTERS_SEMAPHOR_ENTRY_FULL_REJECT, /**< DMA semaphor reject due to full entry counter */ + e_IOC_FM_COUNTERS_SEMAPHOR_QUEUE_FULL_REJECT, /**< DMA semaphor reject due to full CAM queue counter */ + e_IOC_FM_COUNTERS_SEMAPHOR_SYNC_REJECT /**< DMA semaphor reject due to sync counter */ +} ioc_fm_counters; + +typedef struct ioc_fm_obj_t { + void *obj; +} ioc_fm_obj_t; + +/**************************************************************************//** + @Description structure for returning revision information +*//***************************************************************************/ +typedef struct ioc_fm_revision_info_t { + uint8_t major; /**< Major revision */ + uint8_t minor; /**< Minor revision */ +} ioc_fm_revision_info_t; + +/**************************************************************************//** + @Description structure for FM counters +*//***************************************************************************/ +typedef struct ioc_fm_counters_params_t { + ioc_fm_counters cnt; /**< The requested counter */ + uint32_t val; /**< The requested value to get/set from/into the counter */ +} ioc_fm_counters_params_t; + +/**************************************************************************//** + @Function FM_IOC_SET_PORTS_BANDWIDTH + + @Description Sets relative weights between ports when accessing common resources. + + @Param[in] ioc_fm_port_bandwidth_params Port bandwidth percentages, + their sum must equal 100. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +#define FM_IOC_SET_PORTS_BANDWIDTH _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(2), ioc_fm_port_bandwidth_params) + +/**************************************************************************//** + @Function FM_IOC_GET_REVISION + + @Description Returns the FM revision + + @Param[out] ioc_fm_revision_info_t A structure of revision information parameters. + + @Return None. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +#define FM_IOC_GET_REVISION _IOR(FM_IOC_TYPE_BASE, FM_IOC_NUM(3), ioc_fm_revision_info_t) + +/**************************************************************************//** + @Function FM_IOC_GET_COUNTER + + @Description Reads one of the FM counters. + + @Param[in,out] ioc_fm_counters_params_t The requested counter parameters. + + @Return Counter's current value. + + @Cautions Allowed only following FM_Init(). + Note that it is user's responsibilty to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +#define FM_IOC_GET_COUNTER _IOWR(FM_IOC_TYPE_BASE, FM_IOC_NUM(4), ioc_fm_counters_params_t) + +/**************************************************************************//** + @Function FM_IOC_SET_COUNTER + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] ioc_fm_counters_params_t The requested counter parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +#define FM_IOC_SET_COUNTER _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(5), ioc_fm_counters_params_t) + +/**************************************************************************//** + @Function FM_IOC_FORCE_INTR + + @Description Causes an interrupt event on the requested source. + + @Param[in] ioc_fm_exceptions An exception to be forced. + + @Return E_OK on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following FM_Init(). +*//***************************************************************************/ +#define FM_IOC_FORCE_INTR _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(6), ioc_fm_exceptions) + +/** @} */ /* end of lnx_ioctl_FM_runtime_control_grp group */ +/** @} */ /* end of lnx_ioctl_FM_lib_grp group */ +/** @} */ /* end of lnx_ioctl_FM_grp */ + + +#endif /* __FM_IOCTLS_H */ --- linux-ppc-3.8.0.orig/include/linux/fmd/Peripherals/fm_test_ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/Peripherals/fm_test_ioctls.h @@ -0,0 +1,208 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File fm_test_ioctls.h + + @Description FM Char device ioctls +*//***************************************************************************/ +#ifndef __FM_TEST_IOCTLS_H +#define __FM_TEST_IOCTLS_H + +#include "ioctls.h" + + +/**************************************************************************//** + @Group lnx_ioctl_FMT_grp Frame Manager Test Linux IOCTL API + + @Description FM-Test Linux ioctls definitions and enums + + @{ +*//***************************************************************************/ + +#define IOC_FMT_MAX_NUM_OF_PORTS 26 + +/**************************************************************************//** + @Collection TEST Parameters +*//***************************************************************************/ +/**************************************************************************//** + @Description: Name of the FM-Test chardev +*//***************************************************************************/ +#define DEV_FM_TEST_NAME "fm-test-port" + +#define DEV_FM_TEST_PORTS_MINOR_BASE 0 +#define DEV_FM_TEST_MAX_MINORS (DEV_FM_TEST_PORTS_MINOR_BASE + IOC_FMT_MAX_NUM_OF_PORTS) + +#define FMT_PORT_IOC_NUM(n) n +/* @} */ + +/**************************************************************************//** + @Group lnx_ioctl_FMT_lib_grp FM-Test library + + @Description TODO + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description TODO +*//***************************************************************************/ +typedef uint8_t ioc_fmt_xxx_t; + +#define FM_PRS_MAX 32 +#define FM_TIME_STAMP_MAX 8 + +/**************************************************************************//** + @Description FM Port buffer content description +*//***************************************************************************/ +typedef struct ioc_fmt_buff_context_t { + void *p_user_priv; + uint8_t fm_prs_res[FM_PRS_MAX]; + uint8_t fm_time_stamp[FM_TIME_STAMP_MAX]; +} ioc_fmt_buff_context_t; + +#if defined(__KERNEL__) && defined(CONFIG_COMPAT) +typedef struct ioc_fmt_compat_buff_context_t { + compat_uptr_t p_user_priv; + uint8_t fm_prs_res[FM_PRS_MAX]; + uint8_t fm_time_stamp[FM_TIME_STAMP_MAX]; +} ioc_fmt_compat_buff_context_t; +#endif + +/**************************************************************************//** + @Description Buffer descriptor +*//***************************************************************************/ +typedef struct ioc_fmt_buff_desc_t { + uint32_t qid; + void *p_data; + uint32_t size; + uint32_t status; + ioc_fmt_buff_context_t buff_context; +} ioc_fmt_buff_desc_t; + +#if defined(__KERNEL__) && defined(CONFIG_COMPAT) +typedef struct ioc_fmt_compat_buff_desc_t { + uint32_t qid; + compat_uptr_t p_data; + uint32_t size; + uint32_t status; + ioc_fmt_compat_buff_context_t buff_context; +} ioc_fmt_compat_buff_desc_t; +#endif + +/**************************************************************************//** + @Group lnx_ioctl_FMT_runtime_control_grp FM-Test Runtime Control Unit + + @Description TODO + @{ +*//***************************************************************************/ + +/** @} */ /* end of lnx_ioctl_FMT_runtime_control_grp group */ + + +/**************************************************************************//** + @Group lnx_ioctl_FMTP_lib_grp FM-Port-Test library + + @Description TODO + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description FM-Test FM port type +*//***************************************************************************/ +typedef enum ioc_fmt_port_type { + e_IOC_FMT_PORT_T_RXTX, /**< Standard port */ + e_IOC_FMT_PORT_T_OP, /**< Offline-parsing port */ +} ioc_fmt_port_type; + +/**************************************************************************//** + @Description TODO +*//***************************************************************************/ +typedef struct ioc_fmt_port_param_t { + uint8_t fm_id; + ioc_fmt_port_type fm_port_type; + uint8_t fm_port_id; + uint32_t num_tx_queues; +} ioc_fmt_port_param_t; + + +/**************************************************************************//** + @Function FMT_PORT_IOC_INIT + + @Description TODO + + @Param[in] ioc_fmt_port_param_t TODO + + @Cautions Allowed only after the FM equivalent port is already initialized. +*//***************************************************************************/ +#define FMT_PORT_IOC_INIT _IOW(FMT_IOC_TYPE_BASE, FMT_PORT_IOC_NUM(0), ioc_fmt_port_param_t) + +/**************************************************************************//** + @Function FMT_PORT_IOC_SET_DIAG_MODE + + @Description TODO + + @Param[in] ioc_diag_mode TODO + + @Cautions Allowed only following FMT_PORT_IOC_INIT(). +*//***************************************************************************/ +#define FMT_PORT_IOC_SET_DIAG_MODE _IOW(FMT_IOC_TYPE_BASE, FMT_PORT_IOC_NUM(1), ioc_diag_mode) + +/**************************************************************************//** + @Function FMT_PORT_IOC_SET_IP_HEADER_MANIP + + @Description Set IP header manipulations for this port. + + @Param[in] int 1 to enable; 0 to disable + + @Cautions Allowed only following FMT_PORT_IOC_INIT(). +*//***************************************************************************/ +#define FMT_PORT_IOC_SET_IP_HEADER_MANIP _IOW(FMT_IOC_TYPE_BASE, FMT_PORT_IOC_NUM(2), int) + +/**************************************************************************//** + @Function FMT_PORT_IOC_SET_DPAECHO_MODE + + @Description Set DPA in echo mode - all frame are sent back. + + @Param[in] int 1 to enable; 0 to disable + + @Cautions Allowed only following FMT_PORT_IOC_INIT(). +*//***************************************************************************/ +#define FMT_PORT_IOC_SET_DPAECHO_MODE _IOW(FMT_IOC_TYPE_BASE, FMT_PORT_IOC_NUM(3), int) + +/** @} */ /* end of lnx_ioctl_FMTP_lib_grp group */ +/** @} */ /* end of lnx_ioctl_FMT_lib_grp group */ +/** @} */ /* end of lnx_ioctl_FMT_grp */ + + +#endif /* __FM_TEST_IOCTLS_H */ --- linux-ppc-3.8.0.orig/include/linux/fmd/Peripherals/fm_pcd_ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/Peripherals/fm_pcd_ioctls.h @@ -0,0 +1,1538 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/****************************************************************************** + @File fm_pcd_ioctls.h + + @Description FM PCD ... +*//***************************************************************************/ +#ifndef __FM_PCD_IOCTLS_H +#define __FM_PCD_IOCTLS_H + +#include "net_ioctls.h" +#include "fm_ioctls.h" + + +/**************************************************************************//** + @Group lnx_ioctl_FM_grp Frame Manager Linux IOCTL API + + @Description FM Linux ioctls definitions and enums + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Group lnx_ioctl_FM_PCD_grp FM PCD + + @Description FM PCD API functions, definitions and enums + + The FM PCD module is responsible for the initialization of all + global classifying FM modules. This includes the parser general and + common registers, the key generator global and common registers, + and the Policer global and common registers. + In addition, the FM PCD SW module will initialize all required + key generator schemes, coarse classification flows, and Policer + profiles. When An FM module is configured to work with one of these + entities, it will register to it using the FM PORT API. The PCD + module will manage the PCD resources - i.e. resource management of + Keygen schemes, etc. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Collection General PCD defines +*//***************************************************************************/ +#define IOC_FM_PCD_MAX_NUM_OF_PRIVATE_HDRS 2 /**< Number of units/headers saved for user */ + +#define IOC_FM_PCD_PRS_NUM_OF_HDRS 16 /**< Number of headers supported by HW parser */ + +#ifdef CONFIG_FMAN_P1023 +#define IOC_FM_PCD_KG_NUM_OF_SCHEMES 16 /**< Total number of KG schemes */ +#else +#define IOC_FM_PCD_KG_NUM_OF_SCHEMES 32 /**< Total number of KG schemes */ +#endif +#define IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS (32 - IOC_FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) + /**< Maximum number of netenv distinction units */ +#ifdef CONFIG_FMAN_P1023 +#define IOC_FM_PCD_MAX_NUM_OF_OPTIONS 7 /**< Maximum number of netenv distinction units options */ +#else +#define IOC_FM_PCD_MAX_NUM_OF_OPTIONS 8 /**< Maximum number of netenv distinction units options */ +#endif +#define IOC_FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS 4 /**< Maximum number of interchangeable headers in a distinction unit */ +#define IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS 8 /**< Total number of generic KG registers */ +#define IOC_FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY 35 /**< Max number allowed on any configuration. + For reason of HW implemetation, in most + cases less than this will be allowed. The + driver will return error in initialization + time if resource is overused. */ +#ifdef CONFIG_FMAN_P1023 +#define IOC_FM_PCD_MAX_NUM_OF_CLS_PLANS 128 /**< Number of classification plan entries. */ +#else +#define IOC_FM_PCD_MAX_NUM_OF_CLS_PLANS 256 /**< Number of classification plan entries. */ +#endif +#define IOC_FM_PCD_KG_NUM_OF_EXTRACT_MASKS 4 /**< Total number of masks allowed on KG extractions. */ +#define IOC_FM_PCD_KG_NUM_OF_DEFAULT_GROUPS 16 /**< Number of default value logical groups */ + +#define IOC_FM_PCD_PRS_NUM_OF_LABELS 32 /**< Max number of SW parser label */ +/* @} */ + +/**************************************************************************//** + @Group lnx_ioctl_FM_PCD_Runtime_grp FM PCD Runtime Unit + + @Description FM PCD Runtime Unit + + The runtime control allows creation of PCD infrastructure modules + such as Network Environment Characteristics, Classification Plan + Groups and Coarse Classification Trees. + It also allows on-the-fly initialization, modification and removal + of PCD modules such as Keygen schemes, coarse classification nodes + and Policer profiles. + + + In order to explain the programming model of the PCD driver interface + a few terms should be explained, and will be used below. + * Distinction Header - One of the 16 protocols supported by the FM parser, + or one of the shim headers (1-3). May be a header with a special + option (see below). + * Interchangeable Headers Group- This is a group of Headers recognized + by either one of them. For example, if in a specific context the user + chooses to treat IPv4 and IPV6 in the same way, they may create an + Interchangable Headers Unit consisting of these 2 headers. + * A Distinction Unit - a Distinction Header or an Interchangeable Headers + Group. + * Header with special option - applies to ethernet, mpls, vlan, ipv4 and + ipv6, includes multicast, broadcast and other protocol specific options. + In terms of hardware it relates to the options available in the classification + plan. + * Network Environment Characteristics - a set of Distinction Units that define + the total recognizable header selection for a certain environment. This is + NOT the list of all headers that will ever appear in a flow, but rather + everything that needs distinction in a flow, where distinction is made by keygen + schemes and coarse classification action descriptors. + + The PCD runtime modules initialization is done in stages. The first stage after + initializing the PCD module itself is to establish a Network Flows Environment + Definition. The application may choose to establish one or more such environments. + Later, when needed, the application will have to state, for some of its modules, + to which single environment it belongs. + + @{ +*//***************************************************************************/ + +/**************************************************************************//** + @Description PCD counters + (must match enum e_FmPcdCounters defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_pcd_counters { + e_IOC_FM_PCD_KG_COUNTERS_TOTAL, /**< Policer counter */ + e_IOC_FM_PCD_PLCR_COUNTERS_YELLOW, /**< Policer counter */ + e_IOC_FM_PCD_PLCR_COUNTERS_RED, /**< Policer counter */ + e_IOC_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_RED, /**< Policer counter */ + e_IOC_FM_PCD_PLCR_COUNTERS_RECOLORED_TO_YELLOW, /**< Policer counter */ + e_IOC_FM_PCD_PLCR_COUNTERS_TOTAL, /**< Policer counter */ + e_IOC_FM_PCD_PLCR_COUNTERS_LENGTH_MISMATCH, /**< Policer counter */ + e_IOC_FM_PCD_PRS_COUNTERS_PARSE_DISPATCH, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_L2_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_L3_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_L4_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_SHIM_PARSE_RESULT_RETURNED_WITH_ERR, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_SOFT_PRS_CYCLES, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_SOFT_PRS_STALL_CYCLES, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_HARD_PRS_CYCLE_INCL_STALL_CYCLES, /**< Parser counter */ + e_IOC_FM_PCD_PRS_COUNTERS_MURAM_READ_CYCLES, /**< MURAM counter */ + e_IOC_FM_PCD_PRS_COUNTERS_MURAM_READ_STALL_CYCLES, /**< MURAM counter */ + e_IOC_FM_PCD_PRS_COUNTERS_MURAM_WRITE_CYCLES, /**< MURAM counter */ + e_IOC_FM_PCD_PRS_COUNTERS_MURAM_WRITE_STALL_CYCLES, /**< MURAM counter */ + e_IOC_FM_PCD_PRS_COUNTERS_FPM_COMMAND_STALL_CYCLES /**< FPM counter */ +} ioc_fm_pcd_counters; + +/**************************************************************************//** + @Description PCD interrupts + (must match enum e_FmPcdExceptions defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_pcd_exceptions { + e_IOC_FM_PCD_KG_EXCEPTION_DOUBLE_ECC, /**< Keygen ECC error */ + e_IOC_FM_PCD_PLCR_EXCEPTION_DOUBLE_ECC, /**< Read Buffer ECC error */ + e_IOC_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, /**< Write Buffer ECC error on system side */ + e_IOC_FM_PCD_PLCR_EXCEPTION_INIT_ENTRY_ERROR, /**< Write Buffer ECC error on FM side */ + e_IOC_FM_PCD_PLCR_EXCEPTION_PRAM_SELF_INIT_COMPLETE, /**< Self init complete */ + e_IOC_FM_PCD_PLCR_EXCEPTION_ATOMIC_ACTION_COMPLETE, /**< Atomic action complete */ + e_IOC_FM_PCD_PRS_EXCEPTION_DOUBLE_ECC, /**< Parser ECC error */ + e_IOC_FM_PCD_PRS_EXCEPTION_SINGLE_ECC /**< Parser single ECC */ +} ioc_fm_pcd_exceptions; + +/**************************************************************************//** + @Description structure for FM counters +*//***************************************************************************/ +typedef struct ioc_fm_pcd_counters_params_t { + ioc_fm_pcd_counters cnt; /**< The requested counter */ + uint32_t val; /**< The requested value to get/set from/into the counter */ +} ioc_fm_pcd_counters_params_t; + +/**************************************************************************//** + @Description structure for FM exception definitios +*//***************************************************************************/ +typedef struct ioc_fm_pcd_exception_params_t { + ioc_fm_pcd_exceptions exception; /**< The requested exception */ + bool enable; /**< TRUE to enable interrupt, FALSE to mask it. */ +} ioc_fm_pcd_exception_params_t; + +/**************************************************************************//** + @Description A structure for sw parser labels + (must be identical to struct t_FmPcdPrsLabelParams defined in fm_pcd_ext.h) + *//***************************************************************************/ +typedef struct ioc_fm_pcd_prs_label_params_t { + uint32_t instruction_offset; /**< SW parser label instruction offset (2 bytes + resolution), relative to Parser RAM. */ + ioc_net_header_type hdr; /**< The existance of this header will envoke + the sw parser code. */ + uint8_t index_per_hdr; /**< Normally 0, if more than one sw parser + attachments for the same header, use this + index to distinguish between them. */ +} ioc_fm_pcd_prs_label_params_t; + +/**************************************************************************//** + @Description A structure for sw parser + (must be identical to struct t_FmPcdPrsSwParams defined in fm_pcd_ext.h) + *//***************************************************************************/ +typedef struct ioc_fm_pcd_prs_sw_params_t { + bool override; /**< FALSE to invoke a check that nothing else + was loaded to this address, including + internal patched. + TRUE to override any existing code.*/ + uint32_t size; /**< SW parser code size */ + uint16_t base; /**< SW parser base (in instruction counts! + muat be larger than 0x20)*/ + uint8_t *p_code; /**< SW parser code */ + uint32_t sw_prs_data_params[IOC_FM_PCD_PRS_NUM_OF_HDRS]; + /**< SW parser data (parameters) */ + uint8_t num_of_labels; /**< Number of labels for SW parser. */ + ioc_fm_pcd_prs_label_params_t labels_table[IOC_FM_PCD_PRS_NUM_OF_LABELS]; + /**< SW parser labels table, containing n + umOfLabels entries */ +} ioc_fm_pcd_prs_sw_params_t; + +/**************************************************************************//** + @Description A structure to set the a KeyGen default value + *//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_dflt_value_params_t { + uint8_t valueId; /**< 0,1 - one of 2 global default values */ + uint32_t value; /**< The requested default value */ +} ioc_fm_pcd_kg_dflt_value_params_t; + + +/**************************************************************************//** + @Function FM_PCD_IOC_ENABLE + + @Description This routine should be called after PCD is initialized for enabling all + PCD engines according to their existing configuration. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init() and when PCD is disabled. +*//***************************************************************************/ +#define FM_PCD_IOC_ENABLE _IO(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(1)) + +/**************************************************************************//** + @Function FM_PCD_IOC_DISABLE + + @Description This routine may be called when PCD is enabled in order to + disable all PCD engines. It may be called + only when none of the ports in the system are using the PCD. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init() and when PCD is enabled. +*//***************************************************************************/ +#define FM_PCD_IOC_DISABLE _IO(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(2)) + + /**************************************************************************//** + @Function FM_PCD_IOC_PRS_LOAD_SW + + @Description This routine may be called only when all ports in the + system are actively using the classification plan scheme. + In such cases it is recommended in order to save resources. + The driver automatically saves 8 classification plans for + ports that do NOT use the classification plan mechanism, to + avoid this (in order to save those entries) this routine may + be called. + + @Param[in] ioc_fm_pcd_prs_sw_params_t A pointer to the image of the software parser code. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init() and when PCD is disabled. +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_PRS_LOAD_SW_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(3), ioc_compat_fm_pcd_prs_sw_params_t) +#endif +#define FM_PCD_IOC_PRS_LOAD_SW _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(3), ioc_fm_pcd_prs_sw_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_KG_SET_DFLT_VALUE + + @Description Calling this routine sets a global default value to be used + by the keygen when parser does not recognize a required + field/header. + By default default values are 0. + + @Param[in] ioc_fm_pcd_kg_dflt_value_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init() and when PCD is disabled. +*//***************************************************************************/ +#define FM_PCD_IOC_KG_SET_DFLT_VALUE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(6), ioc_fm_pcd_kg_dflt_value_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_KG_SET_ADDITIONAL_DATA_AFTER_PARSING + + @Description Calling this routine allows the keygen to access data past + the parser finishing point. + + @Param[in] uint8_t payload-offset; the number of bytes beyond the parser location. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init() and when PCD is disabled. + +*//***************************************************************************/ +#define FM_PCD_IOC_KG_SET_ADDITIONAL_DATA_AFTER_PARSING _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(7), uint8_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_SET_EXCEPTION + + @Description Calling this routine enables/disables PCD interrupts. + + @Param[in] h_FmPcd FM PCD module descriptor. + @Param[in] ioc_fm_pcd_exception_params_t The exception to be selected. + @Param[in] enable TRUE to enable interrupt, FALSE to mask it. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init(). +*//***************************************************************************/ +#define FM_PCD_IOC_SET_EXCEPTION _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(8), ioc_fm_pcd_exception_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_GET_COUNTER + + @Description Reads one of the FM PCD counters. + + @Param[in,out] ioc_fm_pcd_counters_params_t The requested counter parameters. + + @Return Counter's current value. + + @Cautions Allowed only following FM_PCD_Init(). + Note that it is user's responsibilty to call this routine only + for enabled counters, and there will be no indication if a + disabled counter is accessed. +*//***************************************************************************/ +#define FM_PCD_IOC_GET_COUNTER _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(9), ioc_fm_pcd_counters_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_SET_COUNTER + + @Description Sets a value to an enabled counter. Use "0" to reset the counter. + + @Param[in] ioc_fm_pcd_counters_params_t The requested counter parameters. + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init(). +*//***************************************************************************/ +#define FM_PCD_IOC_SET_COUNTER _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(10), ioc_fm_pcd_counters_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_FORCE_INTR + + @Description Causes an interrupt event on the requested source. + + @Param[in] ioc_fm_pcd_exceptions An exception to be forced. + + @Return E_OK on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following PCD_Init(). +*//***************************************************************************/ +#define FM_PCD_IOC_FORCE_INTR _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(11), ioc_fm_pcd_exceptions) + +/**************************************************************************//** + @Collection Definitions of coarse classification + parameters as required by keygen (when coarse classification + is the next engine after this scheme). +*//***************************************************************************/ +#define IOC_FM_PCD_MAX_NUM_OF_CC_NODES 255 +#define IOC_FM_PCD_MAX_NUM_OF_CC_TREES 8 +#define IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS 16 +#define IOC_FM_PCD_MAX_NUM_OF_CC_UNITS 4 +#define IOC_FM_PCD_MAX_NUM_OF_KEYS 256 +#define IOC_FM_PCD_MAX_SIZE_OF_KEY 56 +#define IOC_FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP 16 +/* @} */ + +/**************************************************************************//** + @Collection A set of definitions to allow protocol + special option description. +*//***************************************************************************/ +typedef uint32_t ioc_protocol_opt_t; /**< A general type to define a protocol option. */ + +typedef ioc_protocol_opt_t ioc_eth_protocol_opt_t; /**< Ethernet protocol options. */ +#define IOC_ETH_BROADCAST 0x80000000 /**< Ethernet Broadcast. */ +#define IOC_ETH_MULTICAST 0x40000000 /**< Ethernet Multicast. */ + +typedef ioc_protocol_opt_t ioc_vlan_protocol_opt_t; /**< Vlan protocol options. */ +#define IOC_VLAN_STACKED 0x20000000 /**< Vlan Stacked. */ + +typedef ioc_protocol_opt_t ioc_mpls_protocol_opt_t; /**< MPLS protocol options. */ +#define IOC_MPLS_STACKED 0x10000000 /**< MPLS Stacked. */ + +typedef ioc_protocol_opt_t ioc_ipv4_protocol_opt_t; /**< IPv4 protocol options. */ +#define IOC_IPV4_BROADCAST_1 0x08000000 /**< IPv4 Broadcast. */ +#define IOC_IPV4_MULTICAST_1 0x04000000 /**< IPv4 Multicast. */ +#define IOC_IPV4_UNICAST_2 0x02000000 /**< Tunneled IPv4 - Unicast. */ +#define IOC_IPV4_MULTICAST_BROADCAST_2 0x01000000 /**< Tunneled IPv4 - Broadcast/Multicast. */ + +typedef ioc_protocol_opt_t ioc_ipv6_protocol_opt_t; /**< IPv6 protocol options. */ +#define IOC_IPV6_MULTICAST_1 0x00800000 /**< IPv6 Multicast. */ +#define IOC_IPV6_UNICAST_2 0x00400000 /**< Tunneled IPv6 - Unicast. */ +#define IOC_IPV6_MULTICAST_2 0x00200000 /**< Tunneled IPv6 - Multicast. */ +/* @} */ + +/**************************************************************************//** + @Description All PCD engines + (must match enum e_FmPcdEngine defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_pcd_engine { + e_IOC_FM_PCD_INVALID = 0, /**< Invalid PCD engine indicated*/ + e_IOC_FM_PCD_DONE, /**< No PCD Engine indicated */ + e_IOC_FM_PCD_KG, /**< Keygen indicated */ + e_IOC_FM_PCD_CC, /**< Coarse classification indicated */ + e_IOC_FM_PCD_PLCR, /**< Policer indicated */ + e_IOC_FM_PCD_PRS /**< Parser indicated */ +} ioc_fm_pcd_engine; + +/**************************************************************************//** + @Description An enum for selecting extraction by header types + (must match enum e_FmPcdExtractByHdrType defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_pcd_extract_by_hdr_type { + e_IOC_FM_PCD_EXTRACT_FROM_HDR, /**< Extract bytes from header */ + e_IOC_FM_PCD_EXTRACT_FROM_FIELD, /**< Extract bytes from header field */ + e_IOC_FM_PCD_EXTRACT_FULL_FIELD /**< Extract a full field */ +} ioc_fm_pcd_extract_by_hdr_type; + +/**************************************************************************//** + @Description An enum for selecting extraction source + (when it is not the header) + (must match enum e_FmPcdExtractFrom defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef enum ioc_fm_pcd_extract_from { + e_IOC_FM_PCD_EXTRACT_FROM_FRAME_START, /**< KG & CC: Extract from beginning of frame */ + e_IOC_FM_PCD_EXTRACT_FROM_DFLT_VALUE, /**< KG only: Extract from a default value */ + e_IOC_FM_PCD_EXTRACT_FROM_CURR_END_OF_PARSE, /**< KG only: Extract from the point where parsing had finished */ + e_IOC_FM_PCD_EXTRACT_FROM_KEY, /**< CC only: Field where saved KEY */ + e_IOC_FM_PCD_EXTRACT_FROM_HASH, /**< CC only: Field where saved HASH */ + e_IOC_FM_PCD_EXTRACT_FROM_PARSE_RESULT, /**< KG & CC: Extract from the parser result */ + e_IOC_FM_PCD_EXTRACT_FROM_ENQ_FQID, /**< KG & CC: Extract from enqueue FQID */ + e_IOC_FM_PCD_EXTRACT_FROM_FLOW_ID /**< CC only: Field where saved Dequeue FQID */ +} ioc_fm_pcd_extract_from; + +/**************************************************************************//** + @Description An enum for selecting extraction type +*//***************************************************************************/ +typedef enum ioc_fm_pcd_extract_type { + e_IOC_FM_PCD_EXTRACT_BY_HDR, /**< Extract according to header */ + e_IOC_FM_PCD_EXTRACT_NON_HDR, /**< Extract from data that is not the header */ + e_IOC_FM_PCD_KG_EXTRACT_PORT_PRIVATE_INFO /**< Extract private info as specified by user */ +} ioc_fm_pcd_extract_type; + +/**************************************************************************//** + @Description An enum for selecting a default +*//***************************************************************************/ +typedef enum ioc_fm_pcd_kg_extract_dflt_select { + e_IOC_FM_PCD_KG_DFLT_GBL_0, /**< Default selection is KG register 0 */ + e_IOC_FM_PCD_KG_DFLT_GBL_1, /**< Default selection is KG register 1 */ + e_IOC_FM_PCD_KG_DFLT_PRIVATE_0, /**< Default selection is a per scheme register 0 */ + e_IOC_FM_PCD_KG_DFLT_PRIVATE_1, /**< Default selection is a per scheme register 1 */ + e_IOC_FM_PCD_KG_DFLT_ILLEGAL /**< Illegal selection */ +} ioc_fm_pcd_kg_extract_dflt_select; + +/**************************************************************************//** + @Description An enum defining all default groups - + each group shares a default value, one of 4 user + initialized values. +*//***************************************************************************/ +typedef enum ioc_fm_pcd_kg_known_fields_dflt_types { + e_IOC_FM_PCD_KG_MAC_ADDR, /**< MAC Address */ + e_IOC_FM_PCD_KG_TCI, /**< TCI field */ + e_IOC_FM_PCD_KG_ENET_TYPE, /**< ENET Type */ + e_IOC_FM_PCD_KG_PPP_SESSION_ID, /**< PPP Session id */ + e_IOC_FM_PCD_KG_PPP_PROTOCOL_ID, /**< PPP Protocol id */ + e_IOC_FM_PCD_KG_MPLS_LABEL, /**< MPLS label */ + e_IOC_FM_PCD_KG_IP_ADDR, /**< IP addr */ + e_IOC_FM_PCD_KG_PROTOCOL_TYPE, /**< Protocol type */ + e_IOC_FM_PCD_KG_IP_TOS_TC, /**< TOS or TC */ + e_IOC_FM_PCD_KG_IPV6_FLOW_LABEL, /**< IPV6 flow label */ + e_IOC_FM_PCD_KG_IPSEC_SPI, /**< IPSEC SPI */ + e_IOC_FM_PCD_KG_L4_PORT, /**< L4 Port */ + e_IOC_FM_PCD_KG_TCP_FLAG, /**< TCP Flag */ + e_IOC_FM_PCD_KG_GENERIC_FROM_DATA, /**< grouping implemented by sw, + any data extraction that is not the full + field described above */ + e_IOC_FM_PCD_KG_GENERIC_FROM_DATA_NO_V, /**< grouping implemented by sw, + any data extraction without validation */ + e_IOC_FM_PCD_KG_GENERIC_NOT_FROM_DATA /**< grouping implemented by sw, + extraction from parser result or + direct use of default value */ +} ioc_fm_pcd_kg_known_fields_dflt_types; + +/**************************************************************************//** + @Description enum for defining header index when headers may repeat +*//***************************************************************************/ +typedef enum ioc_fm_pcd_hdr_index { + e_IOC_FM_PCD_HDR_INDEX_NONE = 0, /**< used when multiple headers not used, also + to specify regular IP (not tunneled). */ + e_IOC_FM_PCD_HDR_INDEX_1, /**< may be used for VLAN, MPLS, tunneled IP */ + e_IOC_FM_PCD_HDR_INDEX_2, /**< may be used for MPLS, tunneled IP */ + e_IOC_FM_PCD_HDR_INDEX_3, /**< may be used for MPLS */ + e_IOC_FM_PCD_HDR_INDEX_LAST = 0xFF /**< may be used for VLAN, MPLS */ +} ioc_fm_pcd_hdr_index; + +/**************************************************************************//** + @Description A structure for selcting the policer profile functional type +*//***************************************************************************/ +typedef enum ioc_fm_pcd_profile_type_selection { + e_IOC_FM_PCD_PLCR_PORT_PRIVATE, /**< Port dedicated profile */ + e_IOC_FM_PCD_PLCR_SHARED /**< Shared profile (shared within partition) */ +} ioc_fm_pcd_profile_type_selection; + +/**************************************************************************//** + @Description A structure for selcting the policer profile algorithem +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_algorithm_selection { + e_IOC_FM_PCD_PLCR_PASS_THROUGH, /**< Policer pass through */ + e_IOC_FM_PCD_PLCR_RFC_2698, /**< Policer algorythm RFC 2698 */ + e_IOC_FM_PCD_PLCR_RFC_4115 /**< Policer algorythm RFC 4115 */ +} ioc_fm_pcd_plcr_algorithm_selection; + +/**************************************************************************//** + @Description A structure for selcting the policer profile color mode +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_color_mode { + e_IOC_FM_PCD_PLCR_COLOR_BLIND, /**< Color blind */ + e_IOC_FM_PCD_PLCR_COLOR_AWARE /**< Color aware */ +} ioc_fm_pcd_plcr_color_mode; + +/**************************************************************************//** + @Description A structure for selcting the policer profile color functional mode +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_color { + e_IOC_FM_PCD_PLCR_GREEN, /**< Green */ + e_IOC_FM_PCD_PLCR_YELLOW, /**< Yellow */ + e_IOC_FM_PCD_PLCR_RED, /**< Red */ + e_IOC_FM_PCD_PLCR_OVERRIDE /**< Color override */ +} ioc_fm_pcd_plcr_color; + +/**************************************************************************//** + @Description A structure for selcting the policer profile packet frame length selector +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_frame_length_select { + e_IOC_FM_PCD_PLCR_L2_FRM_LEN, /**< L2 frame length */ + e_IOC_FM_PCD_PLCR_L3_FRM_LEN, /**< L3 frame length */ + e_IOC_FM_PCD_PLCR_L4_FRM_LEN, /**< L4 frame length */ + e_IOC_FM_PCD_PLCR_FULL_FRM_LEN /**< Full frame length */ +} ioc_fm_pcd_plcr_frame_length_select; + +/**************************************************************************//** + @Description An enum for selecting rollback frame +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_roll_back_frame_select { + e_IOC_FM_PCD_PLCR_ROLLBACK_L2_FRM_LEN, /**< Rollback L2 frame length */ + e_IOC_FM_PCD_PLCR_ROLLBACK_FULL_FRM_LEN /**< Rollback Full frame length */ +} ioc_fm_pcd_plcr_roll_back_frame_select; + +/**************************************************************************//** + @Description A structure for selcting the policer profile packet or byte mode +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_rate_mode { + e_IOC_FM_PCD_PLCR_BYTE_MODE, /**< Byte mode */ + e_IOC_FM_PCD_PLCR_PACKET_MODE /**< Packet mode */ +} ioc_fm_pcd_plcr_rate_mode; + +/**************************************************************************//** + @Description An enum for defining action of frame +*//***************************************************************************/ +typedef enum ioc_fm_pcd_done_action { + e_IOC_FM_PCD_ENQ_FRAME = 0, /**< Enqueue frame */ + e_IOC_FM_PCD_DROP_FRAME /**< Drop frame */ +} ioc_fm_pcd_done_action; + +/**************************************************************************//** + @Description A structure for selcting the policer counter +*//***************************************************************************/ +typedef enum ioc_fm_pcd_plcr_profile_counters { + e_IOC_FM_PCD_PLCR_PROFILE_GREEN_PACKET_TOTAL_COUNTER, /**< Green packets counter */ + e_IOC_FM_PCD_PLCR_PROFILE_YELLOW_PACKET_TOTAL_COUNTER, /**< Yellow packets counter */ + e_IOC_FM_PCD_PLCR_PROFILE_RED_PACKET_TOTAL_COUNTER, /**< Red packets counter */ + e_IOC_FM_PCD_PLCR_PROFILE_RECOLOURED_YELLOW_PACKET_TOTAL_COUNTER, /**< Recolored yellow packets counter */ + e_IOC_FM_PCD_PLCR_PROFILE_RECOLOURED_RED_PACKET_TOTAL_COUNTER /**< Recolored red packets counter */ +} ioc_fm_pcd_plcr_profile_counters; + +/**************************************************************************//** + @Description A structure for selecting action +*//***************************************************************************/ +typedef enum ioc_fm_pcd_action { + e_IOC_FM_PCD_ACTION_NONE, /**< NONE */ + e_IOC_FM_PCD_ACTION_EXACT_MATCH, /**< Exact match on the selected extraction*/ + e_IOC_FM_PCD_ACTION_INDEXED_LOOKUP /**< Indexed lookup on the selected extraction*/ +} ioc_fm_pcd_action; + +/**************************************************************************//** + @Description A type used for returning the order of the key extraction. + each value in this array represents the index of the extraction + command as defined by the user in the initialization extraction array. + The valid size of this array is the user define number of extractions + required (also marked by the second '0' in this array). +*//***************************************************************************/ +typedef uint8_t ioc_fm_pcd_kg_key_order_t [IOC_FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; + +/**************************************************************************//** + @Description A Union of protocol dependent special options +*//***************************************************************************/ +typedef union ioc_fm_pcd_hdr_protocol_opt_u { + ioc_eth_protocol_opt_t eth_opt; /**< Ethernet options */ + ioc_vlan_protocol_opt_t vlan_opt; /**< Vlan options */ + ioc_mpls_protocol_opt_t mpls_opt; /**< MPLS options */ + ioc_ipv4_protocol_opt_t ipv4_opt; /**< IPv4 options */ + ioc_ipv6_protocol_opt_t ipv6_opt; /**< IPv6 options */ +} ioc_fm_pcd_hdr_protocol_opt_u; + +/**************************************************************************//** + @Description A union holding all known protocol fields +*//***************************************************************************/ +typedef union ioc_fm_pcd_fields_u { + ioc_header_field_eth_t eth; /**< eth */ + ioc_header_field_vlan_t vlan; /**< vlan */ + ioc_header_field_llc_snap_t llc_snap; /**< llcSnap */ + ioc_header_field_pppoe_t pppoe; /**< pppoe */ + ioc_header_field_mpls_t mpls; /**< mpls */ + ioc_header_field_ipv4_t ipv4; /**< ipv4 */ + ioc_header_field_ipv6_t ipv6; /**< ipv6 */ + ioc_header_field_udp_t udp; /**< udp */ + ioc_header_field_tcp_t tcp; /**< tcp */ + ioc_header_field_sctp_t sctp; /**< sctp */ + ioc_header_field_dccp_t dccp; /**< dccp */ + ioc_header_field_gre_t gre; /**< gre */ + ioc_header_field_minencap_t minencap; /**< minencap */ + ioc_header_field_ipsec_ah_t ipsec_ah; /**< ipsecAh */ + ioc_header_field_ipsec_esp_t ipsec_esp; /**< ipsecEsp */ +} ioc_fm_pcd_fields_u; + +/**************************************************************************//** + @Description structure for defining header extraction for key generation +*//***************************************************************************/ +typedef struct ioc_fm_pcd_from_hdr_t { + uint8_t size; /**< Size in byte */ + uint8_t offset; /**< Byte offset */ +} ioc_fm_pcd_from_hdr_t; + +/**************************************************************************//** + @Description structure for defining field extraction for key generation +*//***************************************************************************/ +typedef struct ioc_fm_pcd_from_field_t { + ioc_fm_pcd_fields_u field; /**< Field selection */ + uint8_t size; /**< Size in byte */ + uint8_t offset; /**< Byte offset */ +} ioc_fm_pcd_from_field_t; + +/**************************************************************************//** + @Description A structure of parameters used to define a single network + environment unit. + A unit should be defined if it will later be used by one or + more PCD engines to distinguich between flows. +*//***************************************************************************/ +typedef struct ioc_fm_pcd_distinction_unit_t { + struct { + ioc_net_header_type hdr; /**< One of the headers supported by the FM */ + ioc_fm_pcd_hdr_protocol_opt_u opt; /**< only one option !! */ + } hdrs[IOC_FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS]; +} ioc_fm_pcd_distinction_unit_t; + +/**************************************************************************//** + @Description A structure of parameters used to define the different + units supported by a specific PCD Network Environment + Characteristics module. Each unit represent + a protocol or a group of protocols that may be used later + by the different PCD engines to distinguish between flows. + (must match struct t_FmPcdNetEnvParams defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_net_env_params_t { + uint8_t num_of_distinction_units; /**< Number of different units to be identified */ + ioc_fm_pcd_distinction_unit_t units[IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + /**< An array of numOfDistinctionUnits of the + different units to be identified */ + void *id; /**< output parameter; Returns the net-env Id to be used */ +} ioc_fm_pcd_net_env_params_t; + + +/**************************************************************************//** + @Description structure for defining a single extraction action + when creating a key +*//***************************************************************************/ +typedef struct ioc_fm_pcd_extract_entry_t { + ioc_fm_pcd_extract_type type; /**< Extraction type select */ + union { + struct { /**< used when type = e_IOC_FM_PCD_KG_EXTRACT_BY_HDR */ + ioc_net_header_type hdr; /**< Header selection */ + bool ignore_protocol_validation; /**< Ignore protocol validation */ + ioc_fm_pcd_hdr_index hdr_index; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared.*/ + ioc_fm_pcd_extract_by_hdr_type type; /**< Header extraction type select */ + union { + ioc_fm_pcd_from_hdr_t from_hdr; /**< Extract bytes from header parameters */ + ioc_fm_pcd_from_field_t from_field; /**< Extract bytes from field parameters*/ + ioc_fm_pcd_fields_u full_field; /**< Extract full filed parameters*/ + } extract_by_hdr_type; + } extract_by_hdr; + struct{ /**< used when type = e_IOC_FM_PCD_KG_EXTRACT_NON_HDR */ + ioc_fm_pcd_extract_from src; /**< Non-header extraction source */ + ioc_fm_pcd_action action; /**< Relevant for CC Only */ + uint16_t ic_indx_mask; /**< Relevant only for CC where + action=e_FM_PCD_ACTION_INDEXED_LOOKUP */ + uint8_t offset; /**< Byte offset */ + uint8_t size; /**< Size in byte */ + } extract_non_hdr; + } extract_params; +} ioc_fm_pcd_extract_entry_t; + +/**************************************************************************//** + @Description A structure for defining masks for each extracted + field in the key. +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_extract_mask_t { + uint8_t extract_array_index; /**< Index in the extraction array, as initialized by user */ + uint8_t offset; /**< Byte offset */ + uint8_t mask; /**< A byte mask (selected bits will be ignored) */ +} ioc_fm_pcd_kg_extract_mask_t; + +/**************************************************************************//** + @Description A structure for defining default selection per groups + of fields +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_extract_dflt_t { + ioc_fm_pcd_kg_known_fields_dflt_types type; /**< Default type select*/ + ioc_fm_pcd_kg_extract_dflt_select dflt_select; /**< Default register select */ +} ioc_fm_pcd_kg_extract_dflt_t; + +/**************************************************************************//** + @Description A structure for defining all parameters needed for + generation a key and using a hash function +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_key_extract_and_hash_params_t { + uint32_t private_dflt0; /**< Scheme default register 0 */ + uint32_t private_dflt1; /**< Scheme default register 1 */ + uint8_t num_of_used_extracts; /**< defines the valid size of the following array */ + ioc_fm_pcd_extract_entry_t extract_array [IOC_FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY]; + uint8_t num_of_used_dflt; /**< defines the valid size of the following array */ + ioc_fm_pcd_kg_extract_dflt_t dflts[IOC_FM_PCD_KG_NUM_OF_DEFAULT_GROUPS]; + uint8_t num_of_used_masks; /**< defines the valid size of the following array */ + ioc_fm_pcd_kg_extract_mask_t masks[IOC_FM_PCD_KG_NUM_OF_EXTRACT_MASKS]; + uint8_t hash_shift; /**< Select the 24 bits out of the 64 hash result */ + uint32_t hash_distribution_num_of_fqids; /**< must be > 1 and a power of 2. Represents the range + of queues for the key and hash functionality */ + uint8_t hash_distribution_fqids_shift; /**< selects the FQID bits that will be effected by the hash */ + bool symmetric_hash; /**< TRUE to generate the same hash for frames with swapped source and + destination fields on all layers; If TRUE, driver will check that for + all layers, if SRC extraction is selected, DST extraction must also be + selected, and vice versa. */ +} ioc_fm_pcd_kg_key_extract_and_hash_params_t; + +/**************************************************************************//** + @Description A structure of parameters for defining a single + Qid mask (extracted OR). +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_extracted_or_params_t { + ioc_fm_pcd_extract_type type; /**< Extraction type select */ + union{ + struct{ /**< used when type = e_IOC_FM_PCD_KG_EXTRACT_BY_HDR */ + ioc_net_header_type hdr; + ioc_fm_pcd_hdr_index hdr_index; /**< Relevant only for MPLS, VLAN and tunneled + IP. Otherwise should be cleared.*/ + bool ignore_protocol_validation; + } extract_by_hdr; + ioc_fm_pcd_extract_from src; /**< used when type = e_IOC_FM_PCD_KG_EXTRACT_NON_HDR */ + } extract_params; + uint8_t extraction_offset; /**< Offset for extraction */ + ioc_fm_pcd_kg_extract_dflt_select dflt_value; /**< Select register from which extraction is taken if + field not found */ + uint8_t mask; /**< Mask LSB byte of extraction (specified bits are ignored) */ + uint8_t bit_offset_in_fqid; /**< out of 24 bits Qid (max offset = 16) */ +} ioc_fm_pcd_kg_extracted_or_params_t; + +/**************************************************************************//** + @Description A structure for configuring scheme counter +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_scheme_counter_t { + bool update; /**< FALSE to keep the current counter state + and continue from that point, TRUE to update/reset + the counter when the scheme is written. */ + uint32_t value; /**< If update=TRUE, this value will be written into the + counter. clear this field to reset the counter. */ +} ioc_fm_pcd_kg_scheme_counter_t; + +/**************************************************************************//** + @Description A structure for defining policer profile + parameters as required by keygen (when policer + is the next engine after this scheme). +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_plcr_profile_t { + bool shared_profile; /**< TRUE if this profile is shared between ports + (i.e. managed by master partition) May not be TRUE + if profile is after Coarse Classification*/ + bool direct; /**< if TRUE, directRelativeProfileId only selects the profile + id, if FALSE fqidOffsetRelativeProfileIdBase is used + together with fqidOffsetShift and numOfProfiles + parameters, to define a range of profiles from + which the keygen result will determine the + destination policer profile. */ + union{ + uint16_t direct_relative_profile_id; /**< Used if 'direct' is TRUE, to select policer profile. + This parameter should + indicate the policer profile offset within the port's + policer profiles or SHARED window. */ + struct { + uint8_t fqid_offset_shift; /**< shift of KG results without the qid base */ + uint8_t fqid_offset_relative_profile_id_base;/**< OR of KG results without the qid base + This parameter should + indicate the policer profile offset within the port's + policer profiles windowor SHARED window depends on sharedProfile */ + uint8_t num_of_profiles; /**< Range of profiles starting at base */ + } indirect_profile_id; + } profile_select; +} ioc_fm_pcd_kg_plcr_profile_t; + +/**************************************************************************//** + @Description A structure for CC parameters if CC is the next engine after KG +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_cc_t { + void *tree_id; /**< CC Tree id */ + uint8_t grp_id; /**< CC group id within the CC tree */ + bool plcr_next; /**< TRUE if after CC, in case of data frame, + policing is required. */ + bool bypass_plcr_profile_generation; + /**< TRUE to bypass keygen policer profile + generation (profile selected is the one selected at + port initialization). */ + ioc_fm_pcd_kg_plcr_profile_t plcr_profile; /**< only if plcrNext=TRUE */ +} ioc_fm_pcd_kg_cc_t; + +/**************************************************************************//** + @Description A structure for initializing a keygen single scheme + (must match struct t_FmPcdKgSchemeParams defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_scheme_params_t { + bool modify; /**< enables changing an existing scheme */ + union + { + uint8_t relative_scheme_id; + /**< if modify=FALSE:Partition relative scheme id */ + void *scheme_id; /**< if modify=TRUE: a handle of the existing scheme */ + } scm_id; + bool always_direct; /**< This scheme is reached only directly, i.e. + no need for match vector. Keygen will ignore + it when matching */ + struct /**< HL Relevant only if alwaysDirect = FALSE */ + { + void *net_env_id; /**< Network environment id */ + uint8_t num_of_distinction_units; + /**< Number of netenv units listed in unit_ids array */ + uint8_t unit_ids[IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS]; + /**< Indexes as passed to SetNetEnvCharacteristics array*/ + } netEnvParams; + bool use_hash; /**< use the KG Hash functionality */ + ioc_fm_pcd_kg_key_extract_and_hash_params_t key_extract_and_hash_params; + /**< used only if useHash = TRUE */ + bool bypass_fqid_generation; + /**< Normally - FALSE, TRUE to avoid FQID update in the IC; + In such a case FQID after KG will be the default FQID + defined for the relevant port, or the FQID defined by CC + in cases where CC was the previous engine. */ + uint32_t base_fqid; /**< Base FQID */ + uint8_t numOfUsedExtractedOrs; + /**< Number of Fqid masks listed in extractedOrs array*/ + ioc_fm_pcd_kg_extracted_or_params_t extracted_ors[IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS]; + /**< IOC_FM_PCD_KG_NUM_OF_GENERIC_REGS + registers are shared between qidMasks + functionality and some of the extraction + actions; Normally only some will be used + for qidMask. Driver will return error if + resource is full at initialization time. */ + ioc_fm_pcd_engine next_engine; /**< may be BMI, PLCR or CC */ + union{ /**< depends on nextEngine */ + ioc_fm_pcd_done_action done_action; /**< Used when next engine is BMI (done) */ + ioc_fm_pcd_kg_plcr_profile_t plcr_profile; /**< Used when next engine is PLCR */ + ioc_fm_pcd_kg_cc_t cc; /**< Used when next engine is CC */ + } kg_next_engine_params; + ioc_fm_pcd_kg_scheme_counter_t scheme_counter; /**< A structure of parameters for updating + the scheme counter */ + void *id; /**< Returns the scheme Id to be used */ +} ioc_fm_pcd_kg_scheme_params_t; + +/**************************************************************************//** + @Description A structure for defining CC params when CC is the + next engine after a CC node +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_next_cc_params_t { + void *cc_node_id; /**< Id of the next CC node */ +} ioc_fm_pcd_cc_next_cc_params_t; + +/**************************************************************************//** + @Description A structure for defining PLCR params when PLCR is the + next engine after a CC node +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_next_plcr_params_t { + bool override_params; /**< TRUE if CC override previously decided parameters*/ + bool shared_profile; /**< Relevant only if overrideParams=TRUE: + TRUE if this profile is shared between ports */ + uint16_t new_relative_profileId; /**< Relevant only if overrideParams=TRUE: + (otherwise profile id + is taken from keygen); + This parameter should + indicate the policer profile offset within the port's + policer profiles or from SHARED window.*/ + uint32_t new_fqid; /**< Relevant only if overrideParams=TRUE: + FQID for enquing the frame; + In earlier chips if policer next engine is KEYGEN, + this parameter can be 0, because the KEYGEN always decides + the enqueue FQID.*/ + bool statistics_en; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} ioc_fm_pcd_cc_next_plcr_params_t; + +/**************************************************************************//** + @Description A structure for defining enqueue params when BMI is the + next engine after a CC node +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_next_enqueue_params_t { + ioc_fm_pcd_done_action action; /**< Action - when next engine is BMI (done) */ + bool override_fqid; /**< TRUE if CC override previously decided Fqid(by Keygen), + relevant if action = e_FM_PCD_ENQ_FRAME*/ + uint32_t new_fqid; /**< Valid if overrideFqid=TRUE, FQID for enquing the frame + (otherwise FQID is taken from keygen), + relevant if action = e_FM_PCD_ENQ_FRAME*/ + bool statistics_en; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} ioc_fm_pcd_cc_next_enqueue_params_t; + +/**************************************************************************//** + @Description A structure for defining KG params when KG is the + next engine after a CC node +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_next_kg_params_t { + bool override_fqid; /**< TRUE if CC override previously decided Fqid (by keygen), + Note - this parameters unrelevant for earlier chips*/ + uint32_t new_fqid; /**< Valid if overrideFqid=TRUE, FQID for enquing the frame + (otherwise FQID is taken from keygen), + Note - this parameters unrelevant for earlier chips*/ + void *p_direct_scheme; /**< Direct scheme handle to go to. */ + bool statistics_en; /**< In the case of TRUE Statistic counter is + incremented for each received frame passed through + this Coarse Classification entry.*/ +} ioc_fm_pcd_cc_next_kg_params_t; + +/**************************************************************************//** + @Description A structure for defining next engine params after a CC node. + (must match struct t_FmPcdCcNextEngineParams defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_next_engine_params_t { + ioc_fm_pcd_engine next_engine; /**< user has to init parameters according + to nextEngine definition */ + union { + ioc_fm_pcd_cc_next_cc_params_t cc_params; /**< Parameters in case next engine is CC */ + ioc_fm_pcd_cc_next_plcr_params_t plcr_params; /**< Parameters in case next engine is PLCR */ + ioc_fm_pcd_cc_next_enqueue_params_t enqueue_params; /**< Parameters in case next engine is BMI */ + ioc_fm_pcd_cc_next_kg_params_t kg_params; /**< Parameters in case next engine is KG */ + } params; +#if defined(FM_CAPWAP_SUPPORT) + void *p_manip; /**< Handler to headerManip. + Relevant if next engine of the type result + (e_FM_PCD_PLCR, e_FM_PCD_KG, e_FM_PCD_DONE) */ +#endif /* defined(FM_CAPWAP_SUPPORT) */ +} ioc_fm_pcd_cc_next_engine_params_t; + +/**************************************************************************//** + @Description A structure for defining a single CC Key parameters +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_key_params_t { + uint8_t *p_key; /**< pointer to the key of the size defined in keySize */ + uint8_t *p_mask;/**< pointer to the Mask per key of the size defined + in keySize. p_Key and p_Mask (if defined) has to be + of the same size defined in the keySize */ + ioc_fm_pcd_cc_next_engine_params_t cc_next_engine_params; + /**< parameters for the next for the defined Key in + the p_Key */ + +} ioc_fm_pcd_cc_key_params_t; + +/**************************************************************************//** + @Description A structure for defining CC Keys parameters +*//***************************************************************************/ +typedef struct ioc_keys_params_t { + uint8_t num_of_keys; /**< num Of relevant Keys */ + uint8_t key_size; /**< size of the key - in the case of the extraction of + the type FULL_FIELD keySize has to be as standard size of the relevant + key. In the another type of extraction keySize has to be as size of extraction. */ + ioc_fm_pcd_cc_key_params_t key_params[IOC_FM_PCD_MAX_NUM_OF_KEYS]; + /**< it's array with numOfKeys entries each entry in + the array of the type ioc_fm_pcd_cc_key_params_t */ + ioc_fm_pcd_cc_next_engine_params_t cc_next_engine_params_for_miss; + /**< parameters for the next step of + unfound (or undefined) key */ +} ioc_keys_params_t; + +/**************************************************************************//** + @Description A structure for defining the CC node params +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_node_params_t { + ioc_fm_pcd_extract_entry_t extract_cc_params; /**< params which defines extraction parameters */ + ioc_keys_params_t keys_params; /**< params which defines Keys parameters of the + extraction defined in extractParams */ + void *id; /**< output parameter; Returns the CC node Id to be used */ +} ioc_fm_pcd_cc_node_params_t; + +/**************************************************************************//** + @Description A structure for defining each CC tree group in term of + NetEnv units and the action to be taken in each case. + the unit_ids list must be in order from lower to higher indexes. + + ioc_fm_pcd_cc_next_engine_params_t is a list of 2^num_of_distinction_units + structures where each defines the next action to be taken for + each units combination. for example: + num_of_distinction_units = 2 + unit_ids = {1,3} + next_engine_per_entries_in_grp[0] = ioc_fm_pcd_cc_next_engine_params_t for the case that + unit 1 - not found; unit 3 - not found; + next_engine_per_entries_in_grp[1] = ioc_fm_pcd_cc_next_engine_params_t for the case that + unit 1 - not found; unit 3 - found; + next_engine_per_entries_in_grp[2] = ioc_fm_pcd_cc_next_engine_params_t for the case that + unit 1 - found; unit 3 - not found; + next_engine_per_entries_in_grp[3] = ioc_fm_pcd_cc_next_engine_params_t for the case that + unit 1 - found; unit 3 - found; +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_grp_params_t { + uint8_t num_of_distinction_units; /**< up to 4 */ + uint8_t unit_ids [IOC_FM_PCD_MAX_NUM_OF_CC_UNITS]; + /**< Indexes of the units as defined in + FM_PCD_SetNetEnvCharacteristics */ + ioc_fm_pcd_cc_next_engine_params_t next_engine_per_entries_in_grp[IOC_FM_PCD_MAX_NUM_OF_CC_ENTRIES_IN_GRP]; + /**< Max size is 16 - if only one group used */ +} ioc_fm_pcd_cc_grp_params_t; + +/**************************************************************************//** + @Description A structure for defining the CC tree groups + (must match struct t_FmPcdCcTreeParams defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_tree_params_t { + void *net_env_id; /**< Id of the Network environment as returned + by FM_PCD_SetNetEnvCharacteristics */ + uint8_t num_of_groups; /**< Number of CC groups within the CC tree */ + ioc_fm_pcd_cc_grp_params_t fm_pcd_cc_group_params [IOC_FM_PCD_MAX_NUM_OF_CC_GROUPS]; + /**< Parameters for each group. */ + void *id; /**< output parameter; Returns the tree Id to be used */ +} ioc_fm_pcd_cc_tree_params_t; + +/**************************************************************************//** + @Description A structure for defining parameters for byte rate +*//***************************************************************************/ +typedef struct ioc_fm_pcd_plcr_byte_rate_mode_param_t { + ioc_fm_pcd_plcr_frame_length_select frame_length_selection; /**< Frame length selection */ + ioc_fm_pcd_plcr_roll_back_frame_select roll_back_frame_selection; /**< relevant option only e_IOC_FM_PCD_PLCR_L2_FRM_LEN, + e_IOC_FM_PCD_PLCR_FULL_FRM_LEN */ +} ioc_fm_pcd_plcr_byte_rate_mode_param_t; + +/**************************************************************************//** + @Description A structure for selcting the policer profile RFC 2698 or + RFC 4115 parameters +*//***************************************************************************/ +typedef struct ioc_fm_pcd_plcr_non_passthrough_alg_param_t { + ioc_fm_pcd_plcr_rate_mode rate_mode; /**< Byte / Packet */ + ioc_fm_pcd_plcr_byte_rate_mode_param_t byte_mode_param; /**< Valid for Byte NULL for Packet */ + uint32_t comitted_info_rate; /**< KBits/Sec or Packets/Sec */ + uint32_t comitted_burst_size; /**< KBits or Packets */ + uint32_t peak_or_accessive_info_rate; /**< KBits/Sec or Packets/Sec */ + uint32_t peak_or_accessive_burst_size; /**< KBits or Packets */ +} ioc_fm_pcd_plcr_non_passthrough_alg_param_t; + +/**************************************************************************//** + @Description A union for defining Policer next engine parameters +*//***************************************************************************/ +typedef union ioc_fm_pcd_plcr_next_engine_params_u { + ioc_fm_pcd_done_action action; /**< Action - when next engine is BMI (done) */ + void *p_profile; /**< Policer profile handle - used when next engine + is PLCR, must be a SHARED profile */ + void *p_direct_scheme; /**< Direct scheme select - when next engine is Keygen */ +} ioc_fm_pcd_plcr_next_engine_params_u; + +typedef struct fm_pcd_port_params_t { + ioc_fm_port_type port_type; /**< Type of port for this profile */ + uint8_t port_id; /**< FM-Port id of port for this profile */ +} fm_pcd_port_params_t; + +/**************************************************************************//** + @Description A structure for selcting the policer profile entry parameters + (must match struct t_FmPcdPlcrProfileParams defined in fm_pcd_ext.h) +*//***************************************************************************/ +typedef struct ioc_fm_pcd_plcr_profile_params_t { + bool modify; /**< TRUE to change an existing profile */ + union { + struct { + ioc_fm_pcd_profile_type_selection profile_type; /**< Type of policer profile */ + void *p_port; /**< Type of policer profile */ + uint16_t relative_profile_id; /**< Profile id - relative to shared group or to port */ + } new_params; + void *p_profile; /**< A handle to a profile - use it when modify=TRUE */ + } profile_select; + ioc_fm_pcd_plcr_algorithm_selection alg_selection; /**< Profile Algoritem PASS_THROUGH, RFC_2698, RFC_4115 */ + ioc_fm_pcd_plcr_color_mode color_mode; /**< COLOR_BLIND, COLOR_AWARE */ + + union { + ioc_fm_pcd_plcr_color dflt_color; /**< For Color-Blind Pass-Through mode. the policer will re-color + any incoming packet with the deflt value. */ + ioc_fm_pcd_plcr_color override; /**< For Color-Aware modes. The profile response to a + pre-color value of 2'b11. */ + } color; + + ioc_fm_pcd_plcr_non_passthrough_alg_param_t non_passthrough_alg_param; /**< RFC2698 or RFC4115 params */ + + ioc_fm_pcd_engine next_engine_on_green; /**< Green next engine type */ + ioc_fm_pcd_plcr_next_engine_params_u params_on_green; /**< Green next engine params */ + + ioc_fm_pcd_engine next_engine_on_yellow; /**< Yellow next engine type */ + ioc_fm_pcd_plcr_next_engine_params_u params_on_yellow; /**< Yellow next engine params */ + + ioc_fm_pcd_engine next_engine_on_red; /**< Red next engine type */ + ioc_fm_pcd_plcr_next_engine_params_u params_on_red; /**< Red next engine params */ + + bool trap_profile_on_flow_A; /**< Trap on flow A */ + bool trap_profile_on_flow_B; /**< Trap on flow B */ + bool trap_profile_on_flow_C; /**< Trap on flow C */ + void *id; /**< output parameter; Returns the profile Id to be used */ +} ioc_fm_pcd_plcr_profile_params_t; + +/**************************************************************************//** + @Description A structure for modifying CC tree next engine +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_tree_modify_next_engine_params_t { + void *id; /**< CC tree Id to be used */ + uint8_t grp_indx; /**< A Group index in the tree */ + uint8_t indx; /**< Entry index in the group defined by grpId */ + ioc_fm_pcd_cc_next_engine_params_t cc_next_engine_params; + /**< parameters for the next for the defined Key in the p_Key */ +} ioc_fm_pcd_cc_tree_modify_next_engine_params_t; + +/**************************************************************************//** + @Description A structure for modifying CC node next engine +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_node_modify_next_engine_params_t { + void *id; /**< CC node Id to be used */ + uint8_t key_indx; /**< Key index for Next Engine Params modifications; + NOTE: This parameter is IGNORED for miss-key! */ + uint8_t key_size; /**< Key size of added key */ + ioc_fm_pcd_cc_next_engine_params_t cc_next_engine_params; + /**< parameters for the next for the defined Key in the p_Key */ +} ioc_fm_pcd_cc_node_modify_next_engine_params_t; + +/**************************************************************************//** + @Description A structure for modifying CC node key and next engine +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t { + void *id; /**< CC node Id to be used */ + uint8_t key_indx; /**< Key index for Next Engine Params modifications; + NOTE: This parameter is IGNORED for miss-key! */ + uint8_t key_size; /**< Key size of added key */ + ioc_fm_pcd_cc_key_params_t key_params; /**< it's array with numOfKeys entries each entry in + the array of the type ioc_fm_pcd_cc_key_params_t */ +} ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t; + +/**************************************************************************//** + @Description A structure for remove CC node key +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_node_remove_key_params_t { + void *id; /**< CC node Id to be used */ + uint8_t key_indx; /**< Key index for Next Engine Params modifications; + NOTE: This parameter is IGNORED for miss-key! */ +} ioc_fm_pcd_cc_node_remove_key_params_t; + +/**************************************************************************//** + @Description A structure for modifying CC node key +*//***************************************************************************/ +typedef struct ioc_fm_pcd_cc_node_modify_key_params_t { + void *id; /**< CC node Id to be used */ + uint8_t key_indx; /**< Key index for Next Engine Params modifications; + NOTE: This parameter is IGNORED for miss-key! */ + uint8_t key_size; /**< Key size of added key */ + uint8_t *p_key; /**< pointer to the key of the size defined in keySize */ + uint8_t *p_mask; /**< pointer to the Mask per key of the size defined + in keySize. p_Key and p_Mask (if defined) has to be + of the same size defined in the keySize */ +} ioc_fm_pcd_cc_node_modify_key_params_t; + + +/**************************************************************************//** + @Function FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS + + @Description Define a set of Network Environment Charecteristics. + When setting an environment it is important to understand its + application. It is not meant to describe the flows that will run + on the ports using this environment, but what the user means TO DO + with the PCD mechanisms in order to parse-classify-distribute those + frames. + By specifying a distinction unit, the user means it would use that option + for distinction between frames at either a keygen scheme keygen or a coarse + classification action descriptor. Using interchangeable headers to define a + unit means that the user is indifferent to which of the interchangeable + headers is present in the frame, and they want the distinction to be based + on the presence of either one of them. + Depending on context, there are limitations to the use of environments. A + port using the PCD functionality is bound to an environment. Some or even + all ports may share an environment but also an environment per port is + possible. When initializing a scheme, a classification plan group (see below), + or a coarse classification tree, one of the initialized environments must be + stated and related to. When a port is bound to a scheme, a classification + plan group, or a coarse classification tree, it MUST be bound to the same + environment. + The different PCD modules, may relate (for flows definition) ONLY on + distinction units as defined by their environment. When initializing a + scheme for example, it may not choose to select IPV4 as a match for + recognizing flows unless it was defined in the relating environment. In + fact, to guide the user through the configuration of the PCD, each module's + characterization in terms of flows is not done using protocol names, but using + environment indexes. + In terms of HW implementation, the list of distinction units sets the LCV vectors + and later used for match vector, classification plan vectors and coarse classification + indexing. + + @Param[in,out] ioc_fm_pcd_net_env_params_t An structure defining the distiction units for this configuration. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(20), ioc_compat_fm_pcd_net_env_params_t) +#endif +#define FM_PCD_IOC_SET_NET_ENV_CHARACTERISTICS _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(20), ioc_fm_pcd_net_env_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS + + @Description Deletes a set of Network Environment Charecteristics. + + @Param[in] ioc_fm_obj_t An id of a Network environment object. + + @Return E_OK on success; Error code otherwise. +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(21), ioc_compat_fm_obj_t) +#endif +#define FM_PCD_IOC_DELETE_NET_ENV_CHARACTERISTICS _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(21), ioc_fm_obj_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_KG_SET_SCHEME + + @Description Initializing or modifying and enabling a scheme for the keygen. + This routine should be called for adding or modifying a scheme. + When a scheme needs modifying, the API requires that it will be + rewritten. In such a case 'override' should be TRUE. If the + routine is called for a valid scheme and 'override' is FALSE, + it will return error. + + @Param[in] ioc_fm_pcd_kg_scheme_params_t A structure of parameters for defining the scheme + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_KG_SET_SCHEME_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(24), ioc_compat_fm_pcd_kg_scheme_params_t) +#endif +#define FM_PCD_IOC_KG_SET_SCHEME _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(24), ioc_fm_pcd_kg_scheme_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_KG_DEL_SCHEME + + @Description Deleting an initialized scheme. + + @Param[in] ioc_fm_obj_t scheme id as initalized by application at FM_PCD_IOC_KG_SET_SCHEME + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_KG_DEL_SCHEME_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(25), ioc_compat_fm_obj_t) +#endif +#define FM_PCD_IOC_KG_DEL_SCHEME _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(25), ioc_fm_obj_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_BUILD_TREE + + @Description This routine must be called to define a complete coarse + classification tree. This is the way to define coarse + classification to a certain flow - the keygen schemes + may point only to trees defined in this way. + + @Param[in,out] ioc_fm_pcd_cc_tree_params_t A structure of parameters to define the tree. + + @Return 0 on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +//#define FM_PCD_IOC_CC_BUILD_TREE_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(26), ioc_compat_fm_pcd_cc_tree_params_t) +#define FM_PCD_IOC_CC_BUILD_TREE_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(26), compat_uptr_t) +#endif +//#define FM_PCD_IOC_CC_BUILD_TREE _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(26), ioc_fm_pcd_cc_tree_params_t) +#define FM_PCD_IOC_CC_BUILD_TREE _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(26), void *) /* workaround ...*/ + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_DELETE_TREE + + @Description Deleting an built tree. + + @Param[in] ioc_fm_obj_t An id of a CC-tree. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_DELETE_TREE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(27), ioc_compat_fm_obj_t) +#endif +#define FM_PCD_IOC_CC_DELETE_TREE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(27), ioc_fm_obj_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_SET_NODE + + @Description This routine should be called for each CC (coarse classification) + node. The whole CC tree should be built bottom up so that each + node points to already defined nodes. p_NodeId returns the node + Id to be used by other nodes. + + @Param[in,out] ioc_fm_pcd_cc_node_params_t A structure for defining the CC node params + + @Return 0 on success; Error code if the exception is not enabled, + or is not able to create interrupt. + + @Cautions Allowed only following PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_SET_NODE_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(28), compat_uptr_t) +#endif +#define FM_PCD_IOC_CC_SET_NODE _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(28), void *) /* workaround ...*/ + +/**************************************************************************//** + @Function FM_PCD_CcDeleteNode + + @Description Deleting an built node. + + @Param[in] ioc_fm_obj_t An id of a CC-node. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_DELETE_NODE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(29), ioc_compat_fm_obj_t) +#endif +#define FM_PCD_IOC_CC_DELETE_NODE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(29), ioc_fm_obj_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE + + @Description Modify the Next Engine Parameters in the entry of the tree. + + @Param[in] ioc_fm_pcd_cc_tree_modify_next_engine_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcBuildTree(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(30), ioc_compat_fm_pcd_cc_tree_modify_next_engine_params_t) +#endif +#define FM_PCD_IOC_CC_TREE_MODIFY_NEXT_ENGINE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(30), ioc_fm_pcd_cc_tree_modify_next_engine_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE + + @Description Modify the Next Engine Parameters in the relevant key entry of the node. + + @Param[in] ioc_fm_pcd_cc_node_modify_next_engine_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(31), ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t) +#endif +#define FM_PCD_IOC_CC_NODE_MODIFY_NEXT_ENGINE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(31), ioc_fm_pcd_cc_node_modify_next_engine_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE + + @Description Modify the Next Engine Parameters of the Miss key case of the node. + + @Param[in] ioc_fm_pcd_cc_node_modify_next_engine_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(32), ioc_compat_fm_pcd_cc_node_modify_next_engine_params_t) +#endif +#define FM_PCD_IOC_CC_NODE_MODIFY_MISS_NEXT_ENGINE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(32), ioc_fm_pcd_cc_node_modify_next_engine_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_NODE_REMOVE_KEY + + @Description Remove the key (include Next Engine Parameters of this key) defined by the index of the relevant node . + + @Param[in] ioc_fm_pcd_cc_node_remove_key_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevnt node but also + the node that points to this node +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_NODE_REMOVE_KEY_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(33), ioc_compat_fm_pcd_cc_node_remove_key_params_t) +#endif +#define FM_PCD_IOC_CC_NODE_REMOVE_KEY _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(33), ioc_fm_pcd_cc_node_remove_key_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_NODE_ADD_KEY + + @Description Add the key(include Next Engine Parameters of this key)in the index defined by the keyIndex . + + @Param[in] ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevnt node but also + the node that points to this node +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_NODE_ADD_KEY_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(34), ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t) +#endif +#define FM_PCD_IOC_CC_NODE_ADD_KEY _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(34), ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE + + @Description Modify the key and Next Engine Parameters of this key in the index defined by the keyIndex . + + @Param[in] ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevnt node but also + the node that points to this node +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(35), ioc_compat_fm_pcd_cc_node_modify_key_and_next_engine_params_t) +#endif +#define FM_PCD_IOC_CC_NODE_MODIFY_KEY_AND_NEXT_ENGINE _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(35), ioc_fm_pcd_cc_node_modify_key_and_next_engine_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_CC_NODE_MODIFY_KEY + + @Description Modify the key in the index defined by the keyIndex . + + @Param[in] ioc_fm_pcd_cc_node_modify_key_params_t A pointer to a structure with the relevant parameters + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_CcSetNode() not only of the relevant node but also + the node that points to this node +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_CC_NODE_MODIFY_KEY_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(36), ioc_compat_fm_pcd_cc_node_modify_key_params_t) +#endif +#define FM_PCD_IOC_CC_NODE_MODIFY_KEY _IOW(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(36), ioc_fm_pcd_cc_node_modify_key_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_PLCR_SET_PROFILE + + @Description Sets a profile entry in the policer profile table. + The routine overrides any existing value. + + @Param[in,out] ioc_fm_pcd_plcr_profile_params_t A structure of parameters for defining a + policer profile entry. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_PLCR_SET_PROFILE_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(37), ioc_compat_fm_pcd_plcr_profile_params_t) +#endif +#define FM_PCD_IOC_PLCR_SET_PROFILE _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(37), ioc_fm_pcd_plcr_profile_params_t) + +/**************************************************************************//** + @Function FM_PCD_IOC_PLCR_DEL_PROFILE + + @Description Delete a profile entry in the policer profile table. + The routine set entry to invalid. + + @Param[in] ioc_fm_obj_t an id of a policer-profile. + + @Return 0 on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_Init(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_PLCR_DEL_PROFILE_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(38), ioc_compat_fm_obj_t) +#endif +#define FM_PCD_IOC_PLCR_DEL_PROFILE _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(38), ioc_fm_obj_t) + +#endif /* __FM_PCD_IOCTLS_H */ +/** @} */ /* end of lnx_ioctl_FM_PCD_Runtime_grp group */ +/** @} */ /* end of lnx_ioctl_FM_PCD_grp group */ +/** @} */ /* end of lnx_ioctl_FM_grp group */ --- linux-ppc-3.8.0.orig/include/linux/fmd/integrations/Kbuild +++ linux-ppc-3.8.0/include/linux/fmd/integrations/Kbuild @@ -0,0 +1 @@ +header-y += integration_ioctls.h --- linux-ppc-3.8.0.orig/include/linux/fmd/integrations/integration_ioctls.h +++ linux-ppc-3.8.0/include/linux/fmd/integrations/integration_ioctls.h @@ -0,0 +1,47 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/**************************************************************************//** + @File integration_ioctls.h + + @Description External header file for Integration unit routines. +*//***************************************************************************/ + +#ifndef __INTG_IOCTLS_H +#define __INTG_IOCTLS_H + + +#define FM_IOC_TYPE_BASE (NCSW_IOC_TYPE_BASE+1) +#define FMT_IOC_TYPE_BASE (NCSW_IOC_TYPE_BASE+3) + + +#endif /* __INTG_IOCTLS_H */ --- linux-ppc-3.8.0.orig/include/linux/spi/pxa2xx_spi.h +++ linux-ppc-3.8.0/include/linux/spi/pxa2xx_spi.h @@ -28,6 +28,15 @@ u32 clock_enable; u16 num_chipselect; u8 enable_dma; + + /* DMA engine specific config */ + int rx_chan_id; + int tx_chan_id; + int rx_slave_id; + int tx_slave_id; + + /* For non-PXA arches */ + struct ssp_device ssp; }; /* spi_board_info.controller_data for SPI slave devices, @@ -35,6 +44,7 @@ */ struct pxa2xx_spi_chip { u8 tx_threshold; + u8 tx_hi_threshold; u8 rx_threshold; u8 dma_burst_size; u32 timeout; @@ -50,103 +60,5 @@ extern void pxa2xx_set_spi_info(unsigned id, struct pxa2xx_spi_master *info); -#else -/* - * This is the implemtation for CE4100 on x86. ARM defines them in mach/ or - * plat/ include path. - * The CE4100 does not provide DMA support. This bits are here to let the driver - * compile and will never be used. Maybe we get DMA support at a later point in - * time. - */ - -#define DCSR(n) (n) -#define DSADR(n) (n) -#define DTADR(n) (n) -#define DCMD(n) (n) -#define DRCMR(n) (n) - -#define DCSR_RUN (1 << 31) /* Run Bit */ -#define DCSR_NODESC (1 << 30) /* No-Descriptor Fetch */ -#define DCSR_STOPIRQEN (1 << 29) /* Stop Interrupt Enable */ -#define DCSR_REQPEND (1 << 8) /* Request Pending (read-only) */ -#define DCSR_STOPSTATE (1 << 3) /* Stop State (read-only) */ -#define DCSR_ENDINTR (1 << 2) /* End Interrupt */ -#define DCSR_STARTINTR (1 << 1) /* Start Interrupt */ -#define DCSR_BUSERR (1 << 0) /* Bus Error Interrupt */ - -#define DCSR_EORIRQEN (1 << 28) /* End of Receive Interrupt Enable */ -#define DCSR_EORJMPEN (1 << 27) /* Jump to next descriptor on EOR */ -#define DCSR_EORSTOPEN (1 << 26) /* STOP on an EOR */ -#define DCSR_SETCMPST (1 << 25) /* Set Descriptor Compare Status */ -#define DCSR_CLRCMPST (1 << 24) /* Clear Descriptor Compare Status */ -#define DCSR_CMPST (1 << 10) /* The Descriptor Compare Status */ -#define DCSR_EORINTR (1 << 9) /* The end of Receive */ - -#define DRCMR_MAPVLD (1 << 7) /* Map Valid */ -#define DRCMR_CHLNUM 0x1f /* mask for Channel Number */ - -#define DDADR_DESCADDR 0xfffffff0 /* Address of next descriptor */ -#define DDADR_STOP (1 << 0) /* Stop */ - -#define DCMD_INCSRCADDR (1 << 31) /* Source Address Increment Setting. */ -#define DCMD_INCTRGADDR (1 << 30) /* Target Address Increment Setting. */ -#define DCMD_FLOWSRC (1 << 29) /* Flow Control by the source. */ -#define DCMD_FLOWTRG (1 << 28) /* Flow Control by the target. */ -#define DCMD_STARTIRQEN (1 << 22) /* Start Interrupt Enable */ -#define DCMD_ENDIRQEN (1 << 21) /* End Interrupt Enable */ -#define DCMD_ENDIAN (1 << 18) /* Device Endian-ness. */ -#define DCMD_BURST8 (1 << 16) /* 8 byte burst */ -#define DCMD_BURST16 (2 << 16) /* 16 byte burst */ -#define DCMD_BURST32 (3 << 16) /* 32 byte burst */ -#define DCMD_WIDTH1 (1 << 14) /* 1 byte width */ -#define DCMD_WIDTH2 (2 << 14) /* 2 byte width (HalfWord) */ -#define DCMD_WIDTH4 (3 << 14) /* 4 byte width (Word) */ -#define DCMD_LENGTH 0x01fff /* length mask (max = 8K - 1) */ - -/* - * Descriptor structure for PXA's DMA engine - * Note: this structure must always be aligned to a 16-byte boundary. - */ - -typedef enum { - DMA_PRIO_HIGH = 0, - DMA_PRIO_MEDIUM = 1, - DMA_PRIO_LOW = 2 -} pxa_dma_prio; - -/* - * DMA registration - */ - -static inline int pxa_request_dma(char *name, - pxa_dma_prio prio, - void (*irq_handler)(int, void *), - void *data) -{ - return -ENODEV; -} - -static inline void pxa_free_dma(int dma_ch) -{ -} - -/* - * The CE4100 does not have the clk framework implemented and SPI clock can - * not be switched on/off or the divider changed. - */ -static inline void clk_disable(struct clk *clk) -{ -} - -static inline int clk_enable(struct clk *clk) -{ - return 0; -} - -static inline unsigned long clk_get_rate(struct clk *clk) -{ - return 3686400; -} - #endif #endif --- linux-ppc-3.8.0.orig/include/linux/ssb/ssb_driver_chipcommon.h +++ linux-ppc-3.8.0/include/linux/ssb/ssb_driver_chipcommon.h @@ -219,6 +219,7 @@ #define SSB_CHIPCO_PMU_CTL 0x0600 /* PMU control */ #define SSB_CHIPCO_PMU_CTL_ILP_DIV 0xFFFF0000 /* ILP div mask */ #define SSB_CHIPCO_PMU_CTL_ILP_DIV_SHIFT 16 +#define SSB_CHIPCO_PMU_CTL_PLL_UPD 0x00000400 #define SSB_CHIPCO_PMU_CTL_NOILPONW 0x00000200 /* No ILP on wait */ #define SSB_CHIPCO_PMU_CTL_HTREQEN 0x00000100 /* HT req enable */ #define SSB_CHIPCO_PMU_CTL_ALPREQEN 0x00000080 /* ALP req enable */ @@ -667,5 +668,6 @@ void ssb_pmu_set_ldo_voltage(struct ssb_chipcommon *cc, enum ssb_pmu_ldo_volt_id id, u32 voltage); void ssb_pmu_set_ldo_paref(struct ssb_chipcommon *cc, bool on); +void ssb_pmu_spuravoid_pllupdate(struct ssb_chipcommon *cc, int spuravoid); #endif /* LINUX_SSB_CHIPCO_H_ */ --- linux-ppc-3.8.0.orig/include/linux/usb/cdc_ncm.h +++ linux-ppc-3.8.0/include/linux/usb/cdc_ncm.h @@ -127,6 +127,7 @@ u16 connected; }; +extern u8 cdc_ncm_select_altsetting(struct usbnet *dev, struct usb_interface *intf); extern int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting); extern void cdc_ncm_unbind(struct usbnet *dev, struct usb_interface *intf); extern struct sk_buff *cdc_ncm_fill_tx_frame(struct cdc_ncm_ctx *ctx, struct sk_buff *skb, __le32 sign); --- linux-ppc-3.8.0.orig/include/linux/usb/serial.h +++ linux-ppc-3.8.0/include/linux/usb/serial.h @@ -66,6 +66,7 @@ * port. * @flags: usb serial port flags * @write_wait: a wait_queue_head_t used by the port. + * @delta_msr_wait: modem-status-change wait queue * @work: work queue entry for the line discipline waking up. * @throttled: nonzero if the read urb is inactive to throttle the device * @throttle_req: nonzero if the tty wants to throttle us @@ -112,6 +113,7 @@ unsigned long flags; wait_queue_head_t write_wait; + wait_queue_head_t delta_msr_wait; struct work_struct work; char throttled; char throttle_req; --- linux-ppc-3.8.0.orig/include/trace/events/fs.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/trace/events/sched.h +++ linux-ppc-3.8.0/include/trace/events/sched.h @@ -147,7 +147,7 @@ __print_flags(__entry->prev_state & (TASK_STATE_MAX-1), "|", { 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" }, { 16, "Z" }, { 32, "X" }, { 64, "x" }, - { 128, "W" }) : "R", + { 128, "K" }, { 256, "W" }, { 512, "P" }) : "R", __entry->prev_state & TASK_STATE_MAX ? "+" : "", __entry->next_comm, __entry->next_pid, __entry->next_prio) ); --- linux-ppc-3.8.0.orig/include/trace/events/vfs.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/include/drm/drm_pciids.h +++ linux-ppc-3.8.0/include/drm/drm_pciids.h @@ -227,6 +227,7 @@ {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}, \ {0x1002, 0x6821, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6822, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6823, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6824, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ @@ -234,11 +235,13 @@ {0x1002, 0x6827, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6829, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x682A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x682B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x682D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x682F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6830, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6831, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6837, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6838, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6839, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \ @@ -568,7 +571,11 @@ {0x1002, 0x9908, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x9909, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x990A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ - {0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x990B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x990C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x990D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x990E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x990F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x9910, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x9913, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x9917, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ @@ -579,6 +586,15 @@ {0x1002, 0x9992, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x9993, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x9994, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x9995, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x9996, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x9997, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x9998, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x9999, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x999A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x999B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x999C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ + {0x1002, 0x999D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x99A0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x99A2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ {0x1002, 0x99A4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ --- linux-ppc-3.8.0.orig/include/drm/drmP.h +++ linux-ppc-3.8.0/include/drm/drmP.h @@ -919,6 +919,14 @@ /* import dmabuf -> GEM */ struct drm_gem_object * (*gem_prime_import)(struct drm_device *dev, struct dma_buf *dma_buf); + /* low-level interface used by drm_gem_prime_{import,export} */ + int (*gem_prime_pin)(struct drm_gem_object *obj); + struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object *obj); + struct drm_gem_object *(*gem_prime_import_sg_table)( + struct drm_device *dev, size_t size, + struct sg_table *sgt); + void *(*gem_prime_vmap)(struct drm_gem_object *obj); + void (*gem_prime_vunmap)(struct drm_gem_object *obj, void *vaddr); /* vga arb irq handler */ void (*vgaarb_irq)(struct drm_device *dev, bool state); @@ -1540,9 +1548,13 @@ extern int drm_gem_name_info(struct seq_file *m, void *data); +extern struct dma_buf *drm_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *obj, int flags); extern int drm_gem_prime_handle_to_fd(struct drm_device *dev, struct drm_file *file_priv, uint32_t handle, uint32_t flags, int *prime_fd); +extern struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf); extern int drm_gem_prime_fd_to_handle(struct drm_device *dev, struct drm_file *file_priv, int prime_fd, uint32_t *handle); @@ -1559,9 +1571,8 @@ void drm_prime_init_file_private(struct drm_prime_file_private *prime_fpriv); void drm_prime_destroy_file_private(struct drm_prime_file_private *prime_fpriv); -int drm_prime_add_imported_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t handle); -int drm_prime_lookup_imported_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t *handle); -void drm_prime_remove_imported_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf); +int drm_prime_lookup_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf, uint32_t *handle); +void drm_prime_remove_buf_handle(struct drm_prime_file_private *prime_fpriv, struct dma_buf *dma_buf); int drm_prime_add_dma_buf(struct drm_device *dev, struct drm_gem_object *obj); int drm_prime_lookup_obj(struct drm_device *dev, struct dma_buf *buf, --- linux-ppc-3.8.0.orig/include/sound/emu10k1.h +++ linux-ppc-3.8.0/include/sound/emu10k1.h @@ -1787,6 +1787,7 @@ unsigned int next_free_voice; const struct firmware *firmware; + const struct firmware *dock_fw; #ifdef CONFIG_PM_SLEEP unsigned int *saved_ptr; --- linux-ppc-3.8.0.orig/include/asm-generic/tlb.h +++ linux-ppc-3.8.0/include/asm-generic/tlb.h @@ -97,9 +97,12 @@ unsigned long start; unsigned long end; unsigned int need_flush : 1, /* Did free PTEs */ - fast_mode : 1; /* No batching */ - - unsigned int fullmm; + /* we are in the middle of an operation to clear + * a full mm and can make some optimizations */ + fullmm : 1, + /* we have performed an operation which + * requires a complete flush of the tlb */ + need_flush_all : 1; struct mmu_gather_batch *active; struct mmu_gather_batch local; @@ -109,20 +112,7 @@ #define HAVE_GENERIC_MMU_GATHER -static inline int tlb_fast_mode(struct mmu_gather *tlb) -{ -#ifdef CONFIG_SMP - return tlb->fast_mode; -#else - /* - * For UP we don't need to worry about TLB flush - * and page free order so much.. - */ - return 1; -#endif -} - -void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, bool fullmm); +void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end); void tlb_flush_mmu(struct mmu_gather *tlb); void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end); --- linux-ppc-3.8.0.orig/include/asm-generic/pgtable.h +++ linux-ppc-3.8.0/include/asm-generic/pgtable.h @@ -7,6 +7,16 @@ #include #include +/* + * On almost all architectures and configurations, 0 can be used as the + * upper ceiling to free_pgtables(): on many architectures it has the same + * effect as using TASK_SIZE. However, there is one configuration which + * must impose a more careful limit, to avoid freeing kernel pgtables. + */ +#ifndef USER_PGTABLES_CEILING +#define USER_PGTABLES_CEILING 0UL +#endif + #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, --- linux-ppc-3.8.0.orig/init/noinitramfs.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/init/main.c +++ linux-ppc-3.8.0/init/main.c @@ -113,6 +113,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. */ @@ -200,7 +205,7 @@ static int __init quiet_kernel(char *str) { - console_loglevel = 4; + console_loglevel = 2; return 0; } @@ -227,7 +232,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"? */ @@ -244,19 +249,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) @@ -287,6 +293,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) { @@ -386,10 +402,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 && @@ -511,7 +530,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(); --- linux-ppc-3.8.0.orig/init/version.c +++ linux-ppc-3.8.0/init/version.c @@ -42,7 +42,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-ppc-3.8.0.orig/init/Kconfig +++ linux-ppc-3.8.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-ppc-3.8.0.orig/net/compat.c +++ linux-ppc-3.8.0/net/compat.c @@ -734,19 +734,25 @@ asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg, unsigned int flags) { - return sys_sendmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT); + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + return __sys_sendmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT); } asmlinkage long compat_sys_sendmmsg(int fd, struct compat_mmsghdr __user *mmsg, unsigned int vlen, unsigned int flags) { + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; return __sys_sendmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, flags | MSG_CMSG_COMPAT); } asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, unsigned int flags) { - return sys_recvmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT); + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + return __sys_recvmsg(fd, (struct msghdr __user *)msg, flags | MSG_CMSG_COMPAT); } asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, unsigned int flags) @@ -768,6 +774,9 @@ int datagrams; struct timespec ktspec; + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + if (COMPAT_USE_64BIT_TIME) return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, flags | MSG_CMSG_COMPAT, --- linux-ppc-3.8.0.orig/net/socket.c +++ linux-ppc-3.8.0/net/socket.c @@ -1980,7 +1980,7 @@ unsigned int name_len; }; -static int __sys_sendmsg(struct socket *sock, struct msghdr __user *msg, +static int ___sys_sendmsg(struct socket *sock, struct msghdr __user *msg, struct msghdr *msg_sys, unsigned int flags, struct used_address *used_address) { @@ -2095,22 +2095,30 @@ * BSD sendmsg interface */ -SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned int, flags) +long __sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags) { int fput_needed, err; struct msghdr msg_sys; - struct socket *sock = sockfd_lookup_light(fd, &err, &fput_needed); + struct socket *sock; + sock = sockfd_lookup_light(fd, &err, &fput_needed); if (!sock) goto out; - err = __sys_sendmsg(sock, msg, &msg_sys, flags, NULL); + err = ___sys_sendmsg(sock, msg, &msg_sys, flags, NULL); fput_light(sock->file, fput_needed); out: return err; } +SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned int, flags) +{ + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + return __sys_sendmsg(fd, msg, flags); +} + /* * Linux sendmmsg interface */ @@ -2141,15 +2149,16 @@ while (datagrams < vlen) { if (MSG_CMSG_COMPAT & flags) { - err = __sys_sendmsg(sock, (struct msghdr __user *)compat_entry, - &msg_sys, flags, &used_address); + err = ___sys_sendmsg(sock, (struct msghdr __user *)compat_entry, + &msg_sys, flags, &used_address); if (err < 0) break; err = __put_user(err, &compat_entry->msg_len); ++compat_entry; } else { - err = __sys_sendmsg(sock, (struct msghdr __user *)entry, - &msg_sys, flags, &used_address); + err = ___sys_sendmsg(sock, + (struct msghdr __user *)entry, + &msg_sys, flags, &used_address); if (err < 0) break; err = put_user(err, &entry->msg_len); @@ -2173,10 +2182,12 @@ SYSCALL_DEFINE4(sendmmsg, int, fd, struct mmsghdr __user *, mmsg, unsigned int, vlen, unsigned int, flags) { + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; return __sys_sendmmsg(fd, mmsg, vlen, flags); } -static int __sys_recvmsg(struct socket *sock, struct msghdr __user *msg, +static int ___sys_recvmsg(struct socket *sock, struct msghdr __user *msg, struct msghdr *msg_sys, unsigned int flags, int nosec) { struct compat_msghdr __user *msg_compat = @@ -2268,23 +2279,31 @@ * BSD recvmsg interface */ -SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg, - unsigned int, flags) +long __sys_recvmsg(int fd, struct msghdr __user *msg, unsigned flags) { int fput_needed, err; struct msghdr msg_sys; - struct socket *sock = sockfd_lookup_light(fd, &err, &fput_needed); + struct socket *sock; + sock = sockfd_lookup_light(fd, &err, &fput_needed); if (!sock) goto out; - err = __sys_recvmsg(sock, msg, &msg_sys, flags, 0); + err = ___sys_recvmsg(sock, msg, &msg_sys, flags, 0); fput_light(sock->file, fput_needed); out: return err; } +SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg, + unsigned int, flags) +{ + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + return __sys_recvmsg(fd, msg, flags); +} + /* * Linux recvmmsg interface */ @@ -2322,17 +2341,18 @@ * No need to ask LSM for more than the first datagram. */ if (MSG_CMSG_COMPAT & flags) { - err = __sys_recvmsg(sock, (struct msghdr __user *)compat_entry, - &msg_sys, flags & ~MSG_WAITFORONE, - datagrams); + err = ___sys_recvmsg(sock, (struct msghdr __user *)compat_entry, + &msg_sys, flags & ~MSG_WAITFORONE, + datagrams); if (err < 0) break; err = __put_user(err, &compat_entry->msg_len); ++compat_entry; } else { - err = __sys_recvmsg(sock, (struct msghdr __user *)entry, - &msg_sys, flags & ~MSG_WAITFORONE, - datagrams); + err = ___sys_recvmsg(sock, + (struct msghdr __user *)entry, + &msg_sys, flags & ~MSG_WAITFORONE, + datagrams); if (err < 0) break; err = put_user(err, &entry->msg_len); @@ -2399,6 +2419,9 @@ int datagrams; struct timespec timeout_sys; + if (flags & MSG_CMSG_COMPAT) + return -EINVAL; + if (!timeout) return __sys_recvmmsg(fd, mmsg, vlen, flags, NULL); --- linux-ppc-3.8.0.orig/net/netlink/genetlink.c +++ linux-ppc-3.8.0/net/netlink/genetlink.c @@ -142,6 +142,7 @@ int err = 0; BUG_ON(grp->name[0] == '\0'); + BUG_ON(memchr(grp->name, '\0', GENL_NAMSIZ) == NULL); genl_lock(); --- linux-ppc-3.8.0.orig/net/netlabel/netlabel_domainhash.c +++ linux-ppc-3.8.0/net/netlabel/netlabel_domainhash.c @@ -245,6 +245,71 @@ } } +/** + * netlbl_domhsh_validate - Validate a new domain mapping entry + * @entry: the entry to validate + * + * This function validates the new domain mapping entry to ensure that it is + * a valid entry. Returns zero on success, negative values on failure. + * + */ +static int netlbl_domhsh_validate(const struct netlbl_dom_map *entry) +{ + struct netlbl_af4list *iter4; + struct netlbl_domaddr4_map *map4; +#if IS_ENABLED(CONFIG_IPV6) + struct netlbl_af6list *iter6; + struct netlbl_domaddr6_map *map6; +#endif /* IPv6 */ + + if (entry == NULL) + return -EINVAL; + + switch (entry->type) { + case NETLBL_NLTYPE_UNLABELED: + if (entry->type_def.cipsov4 != NULL || + entry->type_def.addrsel != NULL) + return -EINVAL; + break; + case NETLBL_NLTYPE_CIPSOV4: + if (entry->type_def.cipsov4 == NULL) + return -EINVAL; + break; + case NETLBL_NLTYPE_ADDRSELECT: + netlbl_af4list_foreach(iter4, &entry->type_def.addrsel->list4) { + map4 = netlbl_domhsh_addr4_entry(iter4); + switch (map4->type) { + case NETLBL_NLTYPE_UNLABELED: + if (map4->type_def.cipsov4 != NULL) + return -EINVAL; + break; + case NETLBL_NLTYPE_CIPSOV4: + if (map4->type_def.cipsov4 == NULL) + return -EINVAL; + break; + default: + return -EINVAL; + } + } +#if IS_ENABLED(CONFIG_IPV6) + netlbl_af6list_foreach(iter6, &entry->type_def.addrsel->list6) { + map6 = netlbl_domhsh_addr6_entry(iter6); + switch (map6->type) { + case NETLBL_NLTYPE_UNLABELED: + break; + default: + return -EINVAL; + } + } +#endif /* IPv6 */ + break; + default: + return -EINVAL; + } + + return 0; +} + /* * Domain Hash Table Functions */ @@ -311,6 +376,10 @@ struct netlbl_af6list *tmp6; #endif /* IPv6 */ + ret_val = netlbl_domhsh_validate(entry); + if (ret_val != 0) + return ret_val; + /* XXX - we can remove this RCU read lock as the spinlock protects the * entire function, but before we do we need to fixup the * netlbl_af[4,6]list RCU functions to do "the right thing" with --- linux-ppc-3.8.0.orig/net/netlabel/netlabel_unlabeled.c +++ linux-ppc-3.8.0/net/netlabel/netlabel_unlabeled.c @@ -1189,8 +1189,6 @@ struct netlbl_unlhsh_walk_arg cb_arg; u32 skip_bkt = cb->args[0]; u32 skip_chain = cb->args[1]; - u32 skip_addr4 = cb->args[2]; - u32 skip_addr6 = cb->args[3]; u32 iter_bkt; u32 iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0; struct netlbl_unlhsh_iface *iface; @@ -1215,7 +1213,7 @@ continue; netlbl_af4list_foreach_rcu(addr4, &iface->addr4_list) { - if (iter_addr4++ < skip_addr4) + if (iter_addr4++ < cb->args[2]) continue; if (netlbl_unlabel_staticlist_gen( NLBL_UNLABEL_C_STATICLIST, @@ -1231,7 +1229,7 @@ #if IS_ENABLED(CONFIG_IPV6) netlbl_af6list_foreach_rcu(addr6, &iface->addr6_list) { - if (iter_addr6++ < skip_addr6) + if (iter_addr6++ < cb->args[3]) continue; if (netlbl_unlabel_staticlist_gen( NLBL_UNLABEL_C_STATICLIST, @@ -1250,10 +1248,10 @@ unlabel_staticlist_return: rcu_read_unlock(); - cb->args[0] = skip_bkt; - cb->args[1] = skip_chain; - cb->args[2] = skip_addr4; - cb->args[3] = skip_addr6; + cb->args[0] = iter_bkt; + cb->args[1] = iter_chain; + cb->args[2] = iter_addr4; + cb->args[3] = iter_addr6; return skb->len; } @@ -1273,12 +1271,9 @@ { struct netlbl_unlhsh_walk_arg cb_arg; struct netlbl_unlhsh_iface *iface; - u32 skip_addr4 = cb->args[0]; - u32 skip_addr6 = cb->args[1]; - u32 iter_addr4 = 0; + u32 iter_addr4 = 0, iter_addr6 = 0; struct netlbl_af4list *addr4; #if IS_ENABLED(CONFIG_IPV6) - u32 iter_addr6 = 0; struct netlbl_af6list *addr6; #endif @@ -1292,7 +1287,7 @@ goto unlabel_staticlistdef_return; netlbl_af4list_foreach_rcu(addr4, &iface->addr4_list) { - if (iter_addr4++ < skip_addr4) + if (iter_addr4++ < cb->args[0]) continue; if (netlbl_unlabel_staticlist_gen(NLBL_UNLABEL_C_STATICLISTDEF, iface, @@ -1305,7 +1300,7 @@ } #if IS_ENABLED(CONFIG_IPV6) netlbl_af6list_foreach_rcu(addr6, &iface->addr6_list) { - if (iter_addr6++ < skip_addr6) + if (iter_addr6++ < cb->args[1]) continue; if (netlbl_unlabel_staticlist_gen(NLBL_UNLABEL_C_STATICLISTDEF, iface, @@ -1320,8 +1315,8 @@ unlabel_staticlistdef_return: rcu_read_unlock(); - cb->args[0] = skip_addr4; - cb->args[1] = skip_addr6; + cb->args[0] = iter_addr4; + cb->args[1] = iter_addr6; return skb->len; } --- linux-ppc-3.8.0.orig/net/caif/caif_socket.c +++ linux-ppc-3.8.0/net/caif/caif_socket.c @@ -286,6 +286,8 @@ if (m->msg_flags&MSG_OOB) goto read_error; + m->msg_namelen = 0; + skb = skb_recv_datagram(sk, flags, 0 , &ret); if (!skb) goto read_error; --- linux-ppc-3.8.0.orig/net/ipv6/udplite.c +++ linux-ppc-3.8.0/net/ipv6/udplite.c @@ -56,7 +56,7 @@ .compat_setsockopt = compat_udpv6_setsockopt, .compat_getsockopt = compat_udpv6_getsockopt, #endif - .clear_sk = sk_prot_clear_portaddr_nulls, + .clear_sk = udp_v6_clear_sk, }; static struct inet_protosw udplite6_protosw = { --- linux-ppc-3.8.0.orig/net/ipv6/mcast.c +++ linux-ppc-3.8.0/net/ipv6/mcast.c @@ -1340,8 +1340,9 @@ return scount; } -static struct sk_buff *mld_newpack(struct net_device *dev, int size) +static struct sk_buff *mld_newpack(struct inet6_dev *idev, int size) { + struct net_device *dev = idev->dev; struct net *net = dev_net(dev); struct sock *sk = net->ipv6.igmp_sk; struct sk_buff *skb; @@ -1366,7 +1367,7 @@ skb_reserve(skb, hlen); - if (ipv6_get_lladdr(dev, &addr_buf, IFA_F_TENTATIVE)) { + if (__ipv6_get_lladdr(idev, &addr_buf, IFA_F_TENTATIVE)) { /* : * use unspecified address as the source address * when a valid link-local address is not available. @@ -1462,7 +1463,7 @@ struct mld2_grec *pgr; if (!skb) - skb = mld_newpack(dev, dev->mtu); + skb = mld_newpack(pmc->idev, dev->mtu); if (!skb) return NULL; pgr = (struct mld2_grec *)skb_put(skb, sizeof(struct mld2_grec)); @@ -1482,7 +1483,8 @@ static struct sk_buff *add_grec(struct sk_buff *skb, struct ifmcaddr6 *pmc, int type, int gdeleted, int sdeleted) { - struct net_device *dev = pmc->idev->dev; + struct inet6_dev *idev = pmc->idev; + struct net_device *dev = idev->dev; struct mld2_report *pmr; struct mld2_grec *pgr = NULL; struct ip6_sf_list *psf, *psf_next, *psf_prev, **psf_list; @@ -1511,7 +1513,7 @@ AVAILABLE(skb) < grec_size(pmc, type, gdeleted, sdeleted)) { if (skb) mld_sendpack(skb); - skb = mld_newpack(dev, dev->mtu); + skb = mld_newpack(idev, dev->mtu); } } first = 1; @@ -1538,7 +1540,7 @@ pgr->grec_nsrcs = htons(scount); if (skb) mld_sendpack(skb); - skb = mld_newpack(dev, dev->mtu); + skb = mld_newpack(idev, dev->mtu); first = 1; scount = 0; } @@ -1593,8 +1595,8 @@ struct sk_buff *skb = NULL; int type; + read_lock_bh(&idev->lock); if (!pmc) { - read_lock_bh(&idev->lock); for (pmc=idev->mc_list; pmc; pmc=pmc->next) { if (pmc->mca_flags & MAF_NOREPORT) continue; @@ -1606,7 +1608,6 @@ skb = add_grec(skb, pmc, type, 0, 0); spin_unlock_bh(&pmc->mca_lock); } - read_unlock_bh(&idev->lock); } else { spin_lock_bh(&pmc->mca_lock); if (pmc->mca_sfcount[MCAST_EXCLUDE]) @@ -1616,6 +1617,7 @@ skb = add_grec(skb, pmc, type, 0, 0); spin_unlock_bh(&pmc->mca_lock); } + read_unlock_bh(&idev->lock); if (skb) mld_sendpack(skb); } --- linux-ppc-3.8.0.orig/net/ipv6/netfilter.c +++ linux-ppc-3.8.0/net/ipv6/netfilter.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -180,6 +181,10 @@ return csum; }; +static const struct nf_ipv6_ops ipv6ops = { + .chk_addr = ipv6_chk_addr, +}; + static const struct nf_afinfo nf_ip6_afinfo = { .family = AF_INET6, .checksum = nf_ip6_checksum, @@ -192,6 +197,7 @@ int __init ipv6_netfilter_init(void) { + RCU_INIT_POINTER(nf_ipv6_ops, &ipv6ops); return nf_register_afinfo(&nf_ip6_afinfo); } @@ -200,5 +206,6 @@ */ void ipv6_netfilter_fini(void) { + RCU_INIT_POINTER(nf_ipv6_ops, NULL); nf_unregister_afinfo(&nf_ip6_afinfo); } --- linux-ppc-3.8.0.orig/net/ipv6/xfrm6_policy.c +++ linux-ppc-3.8.0/net/ipv6/xfrm6_policy.c @@ -103,8 +103,10 @@ dev_hold(dev); xdst->u.rt6.rt6i_idev = in6_dev_get(dev); - if (!xdst->u.rt6.rt6i_idev) + if (!xdst->u.rt6.rt6i_idev) { + dev_put(dev); return -ENODEV; + } rt6_transfer_peer(&xdst->u.rt6, rt); @@ -236,6 +238,8 @@ { struct xfrm_dst *xdst = (struct xfrm_dst *)dst; + if (likely(xdst->u.rt6.n)) + neigh_release(xdst->u.rt6.n); if (likely(xdst->u.rt6.rt6i_idev)) in6_dev_put(xdst->u.rt6.rt6i_idev); dst_destroy_metrics_generic(dst); --- linux-ppc-3.8.0.orig/net/ipv6/ip6_gre.c +++ linux-ppc-3.8.0/net/ipv6/ip6_gre.c @@ -1137,6 +1137,7 @@ } if (t == NULL) t = netdev_priv(dev); + memset(&p, 0, sizeof(p)); ip6gre_tnl_parm_to_user(&p, &t->parms); if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p))) err = -EFAULT; @@ -1184,6 +1185,7 @@ if (t) { err = 0; + memset(&p, 0, sizeof(p)); ip6gre_tnl_parm_to_user(&p, &t->parms); if (copy_to_user(ifr->ifr_ifru.ifru_data, &p, sizeof(p))) err = -EFAULT; --- linux-ppc-3.8.0.orig/net/ipv6/ip6_fib.c +++ linux-ppc-3.8.0/net/ipv6/ip6_fib.c @@ -634,6 +634,12 @@ return ln; } +static inline bool rt6_qualify_for_ecmp(struct rt6_info *rt) +{ + return (rt->rt6i_flags & (RTF_GATEWAY|RTF_ADDRCONF|RTF_DYNAMIC)) == + RTF_GATEWAY; +} + /* * Insert routing information in a node. */ @@ -648,6 +654,7 @@ int add = (!info->nlh || (info->nlh->nlmsg_flags & NLM_F_CREATE)); int found = 0; + bool rt_can_ecmp = rt6_qualify_for_ecmp(rt); ins = &fn->leaf; @@ -693,9 +700,8 @@ * To avoid long list, we only had siblings if the * route have a gateway. */ - if (rt->rt6i_flags & RTF_GATEWAY && - !(rt->rt6i_flags & RTF_EXPIRES) && - !(iter->rt6i_flags & RTF_EXPIRES)) + if (rt_can_ecmp && + rt6_qualify_for_ecmp(iter)) rt->rt6i_nsiblings++; } @@ -717,7 +723,8 @@ /* Find the first route that have the same metric */ sibling = fn->leaf; while (sibling) { - if (sibling->rt6i_metric == rt->rt6i_metric) { + if (sibling->rt6i_metric == rt->rt6i_metric && + rt6_qualify_for_ecmp(sibling)) { list_add_tail(&rt->rt6i_siblings, &sibling->rt6i_siblings); break; --- linux-ppc-3.8.0.orig/net/ipv6/ip6_input.c +++ linux-ppc-3.8.0/net/ipv6/ip6_input.c @@ -118,6 +118,27 @@ ipv6_addr_loopback(&hdr->daddr)) goto err; + /* RFC4291 Errata ID: 3480 + * Interface-Local scope spans only a single interface on a + * node and is useful only for loopback transmission of + * multicast. Packets with interface-local scope received + * from another node must be discarded. + */ + if (!(skb->pkt_type == PACKET_LOOPBACK || + dev->flags & IFF_LOOPBACK) && + ipv6_addr_is_multicast(&hdr->daddr) && + IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 1) + goto err; + + /* RFC4291 2.7 + * Nodes must not originate a packet to a multicast address whose scope + * field contains the reserved value 0; if such a packet is received, it + * must be silently dropped. + */ + if (ipv6_addr_is_multicast(&hdr->daddr) && + IPV6_ADDR_MC_SCOPE(&hdr->daddr) == 0) + goto err; + /* * RFC4291 2.7 * Multicast addresses must not be used as source addresses in IPv6 @@ -270,7 +291,8 @@ * IPv6 multicast router mode is now supported ;) */ if (dev_net(skb->dev)->ipv6.devconf_all->mc_forwarding && - !(ipv6_addr_type(&hdr->daddr) & IPV6_ADDR_LINKLOCAL) && + !(ipv6_addr_type(&hdr->daddr) & + (IPV6_ADDR_LOOPBACK|IPV6_ADDR_LINKLOCAL)) && likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) { /* * Okay, we try to forward - split and duplicate --- linux-ppc-3.8.0.orig/net/ipv6/ip6mr.c +++ linux-ppc-3.8.0/net/ipv6/ip6mr.c @@ -259,10 +259,12 @@ { struct mr6_table *mrt, *next; + rtnl_lock(); list_for_each_entry_safe(mrt, next, &net->ipv6.mr6_tables, list) { list_del(&mrt->list); ip6mr_free_table(mrt); } + rtnl_unlock(); fib_rules_unregister(net->ipv6.mr6_rules_ops); } #else @@ -289,7 +291,10 @@ static void __net_exit ip6mr_rules_exit(struct net *net) { + rtnl_lock(); ip6mr_free_table(net->ipv6.mrt6); + net->ipv6.mrt6 = NULL; + rtnl_unlock(); } #endif --- linux-ppc-3.8.0.orig/net/ipv6/tcp_ipv6.c +++ linux-ppc-3.8.0/net/ipv6/tcp_ipv6.c @@ -386,9 +386,17 @@ if (dst) dst->ops->redirect(dst, sk, skb); + goto out; } if (type == ICMPV6_PKT_TOOBIG) { + /* We are not interested in TCP_LISTEN and open_requests + * (SYN-ACKs send out by Linux are always <576bytes so + * they should go through unfragmented). + */ + if (sk->sk_state == TCP_LISTEN) + goto out; + tp->mtu_info = ntohl(info); if (!sock_owned_by_user(sk)) tcp_v6_mtu_reduced(sk); @@ -1923,6 +1931,17 @@ } #endif +static void tcp_v6_clear_sk(struct sock *sk, int size) +{ + struct inet_sock *inet = inet_sk(sk); + + /* we do not want to clear pinet6 field, because of RCU lookups */ + sk_prot_clear_nulls(sk, offsetof(struct inet_sock, pinet6)); + + size -= offsetof(struct inet_sock, pinet6) + sizeof(inet->pinet6); + memset(&inet->pinet6 + 1, 0, size); +} + struct proto tcpv6_prot = { .name = "TCPv6", .owner = THIS_MODULE, @@ -1966,6 +1985,7 @@ #ifdef CONFIG_MEMCG_KMEM .proto_cgroup = tcp_proto_cgroup, #endif + .clear_sk = tcp_v6_clear_sk, }; static const struct inet6_protocol tcpv6_protocol = { --- linux-ppc-3.8.0.orig/net/ipv6/route.c +++ linux-ppc-3.8.0/net/ipv6/route.c @@ -300,6 +300,7 @@ { struct rt6_info *rt = (struct rt6_info *)dst; struct inet6_dev *idev = rt->rt6i_idev; + struct dst_entry *from = dst->from; if (rt->n) neigh_release(rt->n); @@ -312,8 +313,8 @@ in6_dev_put(idev); } - if (!(rt->rt6i_flags & RTF_EXPIRES) && dst->from) - dst_release(dst->from); + dst->from = NULL; + dst_release(from); if (rt6_has_peer(rt)) { struct inet_peer *peer = rt6_peer_ptr(rt); @@ -1054,7 +1055,6 @@ rt->rt6i_gateway = ort->rt6i_gateway; rt->rt6i_flags = ort->rt6i_flags; - rt6_clean_expires(rt); rt->rt6i_metric = 0; memcpy(&rt->rt6i_dst, &ort->rt6i_dst, sizeof(struct rt6key)); @@ -1118,10 +1118,13 @@ rt = (struct rt6_info *) skb_dst(skb); if (rt) { - if (rt->rt6i_flags & RTF_CACHE) - rt6_update_expires(rt, 0); - else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) + if (rt->rt6i_flags & RTF_CACHE) { + dst_hold(&rt->dst); + if (ip6_del_rt(rt)) + dst_free(&rt->dst); + } else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) { rt->rt6i_node->fn_sernum = -1; + } } } @@ -1859,8 +1862,6 @@ if ((ort->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF)) == (RTF_DEFAULT | RTF_ADDRCONF)) rt6_set_from(rt, ort); - else - rt6_clean_expires(rt); rt->rt6i_metric = 0; #ifdef CONFIG_IPV6_SUBTREES @@ -1992,7 +1993,8 @@ restart: read_lock_bh(&table->tb6_lock); for (rt = table->tb6_root.leaf; rt; rt = rt->dst.rt6_next) { - if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF)) { + if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ADDRCONF) && + (!rt->rt6i_idev || rt->rt6i_idev->cnf.accept_ra != 2)) { dst_hold(&rt->dst); read_unlock_bh(&table->tb6_lock); ip6_del_rt(rt); --- linux-ppc-3.8.0.orig/net/ipv6/udp.c +++ linux-ppc-3.8.0/net/ipv6/udp.c @@ -955,11 +955,16 @@ struct udphdr *uh; struct udp_sock *up = udp_sk(sk); struct inet_sock *inet = inet_sk(sk); - struct flowi6 *fl6 = &inet->cork.fl.u.ip6; + struct flowi6 *fl6; int err = 0; int is_udplite = IS_UDPLITE(sk); __wsum csum = 0; + if (up->pending == AF_INET) + return udp_push_pending_frames(sk); + + fl6 = &inet->cork.fl.u.ip6; + /* Grab the skbuff where UDP header space exists. */ if ((skb = skb_peek(&sk->sk_write_queue)) == NULL) goto out; @@ -1424,6 +1429,17 @@ } #endif /* CONFIG_PROC_FS */ +void udp_v6_clear_sk(struct sock *sk, int size) +{ + struct inet_sock *inet = inet_sk(sk); + + /* we do not want to clear pinet6 field, because of RCU lookups */ + sk_prot_clear_portaddr_nulls(sk, offsetof(struct inet_sock, pinet6)); + + size -= offsetof(struct inet_sock, pinet6) + sizeof(inet->pinet6); + memset(&inet->pinet6 + 1, 0, size); +} + /* ------------------------------------------------------------------------ */ struct proto udpv6_prot = { @@ -1454,7 +1470,7 @@ .compat_setsockopt = compat_udpv6_setsockopt, .compat_getsockopt = compat_udpv6_getsockopt, #endif - .clear_sk = sk_prot_clear_portaddr_nulls, + .clear_sk = udp_v6_clear_sk, }; static struct inet_protosw udpv6_protosw = { --- linux-ppc-3.8.0.orig/net/ipv6/udp_impl.h +++ linux-ppc-3.8.0/net/ipv6/udp_impl.h @@ -31,6 +31,8 @@ extern int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb); extern void udpv6_destroy_sock(struct sock *sk); +extern void udp_v6_clear_sk(struct sock *sk, int size); + #ifdef CONFIG_PROC_FS extern int udp6_seq_show(struct seq_file *seq, void *v); #endif --- linux-ppc-3.8.0.orig/net/ipv6/addrconf.c +++ linux-ppc-3.8.0/net/ipv6/addrconf.c @@ -1370,6 +1370,23 @@ } EXPORT_SYMBOL(ipv6_dev_get_saddr); +int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr, + unsigned char banned_flags) +{ + struct inet6_ifaddr *ifp; + int err = -EADDRNOTAVAIL; + + list_for_each_entry(ifp, &idev->addr_list, if_list) { + if (ifp->scope == IFA_LINK && + !(ifp->flags & banned_flags)) { + *addr = ifp->addr; + err = 0; + break; + } + } + return err; +} + int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr, unsigned char banned_flags) { @@ -1379,17 +1396,8 @@ rcu_read_lock(); idev = __in6_dev_get(dev); if (idev) { - struct inet6_ifaddr *ifp; - read_lock_bh(&idev->lock); - list_for_each_entry(ifp, &idev->addr_list, if_list) { - if (ifp->scope == IFA_LINK && - !(ifp->flags & banned_flags)) { - *addr = ifp->addr; - err = 0; - break; - } - } + err = __ipv6_get_lladdr(idev, addr, banned_flags); read_unlock_bh(&idev->lock); } rcu_read_unlock(); @@ -1409,7 +1417,7 @@ } int ipv6_chk_addr(struct net *net, const struct in6_addr *addr, - struct net_device *dev, int strict) + const struct net_device *dev, int strict) { struct inet6_ifaddr *ifp; struct hlist_node *node; @@ -2525,6 +2533,9 @@ static void init_loopback(struct net_device *dev) { struct inet6_dev *idev; + struct net_device *sp_dev; + struct inet6_ifaddr *sp_ifa; + struct rt6_info *sp_rt; /* ::1 */ @@ -2536,6 +2547,35 @@ } add_addr(idev, &in6addr_loopback, 128, IFA_HOST); + + /* Add routes to other interface's IPv6 addresses */ + for_each_netdev(dev_net(dev), sp_dev) { + if (!strcmp(sp_dev->name, dev->name)) + continue; + + idev = __in6_dev_get(sp_dev); + if (!idev) + continue; + + read_lock_bh(&idev->lock); + list_for_each_entry(sp_ifa, &idev->addr_list, if_list) { + + if (sp_ifa->flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE)) + continue; + + if (sp_ifa->rt) + continue; + + sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0); + + /* Failure cases are ignored */ + if (!IS_ERR(sp_rt)) { + sp_ifa->rt = sp_rt; + ip6_ins_rt(sp_rt); + } + } + read_unlock_bh(&idev->lock); + } } static void addrconf_add_linklocal(struct inet6_dev *idev, const struct in6_addr *addr) @@ -4489,6 +4529,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; @@ -4579,7 +4697,7 @@ .data = &ipv6_devconf.use_tempaddr, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = addrconf_sysctl_tempaddr, }, { .procname = "temp_valid_lft", @@ -4787,26 +4905,20 @@ static int __net_init addrconf_init_net(struct net *net) { - int err; + int err = -ENOMEM; struct ipv6_devconf *all, *dflt; - err = -ENOMEM; - all = &ipv6_devconf; - dflt = &ipv6_devconf_dflt; - - if (!net_eq(net, &init_net)) { - all = kmemdup(all, sizeof(ipv6_devconf), GFP_KERNEL); - if (all == NULL) - goto err_alloc_all; - - dflt = kmemdup(dflt, sizeof(ipv6_devconf_dflt), GFP_KERNEL); - if (dflt == NULL) - goto err_alloc_dflt; - } else { - /* these will be inherited by all namespaces */ - dflt->autoconf = ipv6_defaults.autoconf; - dflt->disable_ipv6 = ipv6_defaults.disable_ipv6; - } + all = kmemdup(&ipv6_devconf, sizeof(ipv6_devconf), GFP_KERNEL); + if (all == NULL) + goto err_alloc_all; + + dflt = kmemdup(&ipv6_devconf_dflt, sizeof(ipv6_devconf_dflt), GFP_KERNEL); + if (dflt == NULL) + goto err_alloc_dflt; + + /* these will be inherited by all namespaces */ + dflt->autoconf = ipv6_defaults.autoconf; + dflt->disable_ipv6 = ipv6_defaults.disable_ipv6; net->ipv6.devconf_all = all; net->ipv6.devconf_dflt = dflt; --- linux-ppc-3.8.0.orig/net/ipv6/ip6_output.c +++ linux-ppc-3.8.0/net/ipv6/ip6_output.c @@ -843,11 +843,17 @@ const struct flowi6 *fl6) { struct ipv6_pinfo *np = inet6_sk(sk); - struct rt6_info *rt = (struct rt6_info *)dst; + struct rt6_info *rt; if (!dst) goto out; + if (dst->ops->family != AF_INET6) { + dst_release(dst); + return NULL; + } + + rt = (struct rt6_info *)dst; /* Yes, checking route validity in not connected * case is not very simple. Take into account, * that we do not support routing by source, TOS, @@ -1110,11 +1116,12 @@ return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL; } -static void ip6_append_data_mtu(int *mtu, +static void ip6_append_data_mtu(unsigned int *mtu, int *maxfraglen, unsigned int fragheaderlen, struct sk_buff *skb, - struct rt6_info *rt) + struct rt6_info *rt, + bool pmtuprobe) { if (!(rt->dst.flags & DST_XFRM_TUNNEL)) { if (skb == NULL) { @@ -1126,7 +1133,9 @@ * this fragment is not first, the headers * space is regarded as data space. */ - *mtu = dst_mtu(rt->dst.path); + *mtu = min(*mtu, pmtuprobe ? + rt->dst.dev->mtu : + dst_mtu(rt->dst.path)); } *maxfraglen = ((*mtu - fragheaderlen) & ~7) + fragheaderlen - sizeof(struct frag_hdr); @@ -1143,11 +1152,10 @@ struct ipv6_pinfo *np = inet6_sk(sk); struct inet_cork *cork; struct sk_buff *skb, *skb_prev = NULL; - unsigned int maxfraglen, fragheaderlen; + unsigned int maxfraglen, fragheaderlen, mtu; int exthdrlen; int dst_exthdrlen; int hh_len; - int mtu; int copy; int err; int offset = 0; @@ -1164,7 +1172,7 @@ if (WARN_ON(np->cork.opt)) return -EINVAL; - np->cork.opt = kmalloc(opt->tot_len, sk->sk_allocation); + np->cork.opt = kzalloc(opt->tot_len, sk->sk_allocation); if (unlikely(np->cork.opt == NULL)) return -ENOBUFS; @@ -1307,7 +1315,9 @@ /* update mtu and maxfraglen if necessary */ if (skb == NULL || skb_prev == NULL) ip6_append_data_mtu(&mtu, &maxfraglen, - fragheaderlen, skb, rt); + fragheaderlen, skb, rt, + np->pmtudisc == + IPV6_PMTUDISC_PROBE); skb_prev = skb; --- linux-ppc-3.8.0.orig/net/ipv6/reassembly.c +++ linux-ppc-3.8.0/net/ipv6/reassembly.c @@ -26,6 +26,9 @@ * YOSHIFUJI,H. @USAGI Always remove fragment header to * calculate ICV correctly. */ + +#define pr_fmt(fmt) "IPv6: " fmt + #include #include #include @@ -197,9 +200,10 @@ hash = inet6_hash_frag(id, src, dst, ip6_frags.rnd); q = inet_frag_find(&net->ipv6.frags, &ip6_frags, &arg, hash); - if (q == NULL) + if (IS_ERR_OR_NULL(q)) { + inet_frag_maybe_warn_overflow(q, pr_fmt()); return NULL; - + } return container_of(q, struct frag_queue, q); } @@ -338,8 +342,17 @@ } if (fq->q.last_in == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) && - fq->q.meat == fq->q.len) - return ip6_frag_reasm(fq, prev, dev); + fq->q.meat == fq->q.len) { + int res; + unsigned long orefdst = skb->_skb_refdst; + + skb->_skb_refdst = 0UL; + res = ip6_frag_reasm(fq, prev, dev); + skb->_skb_refdst = orefdst; + return res; + } + + skb_dst_drop(skb); write_lock(&ip6_frags.lock); list_move_tail(&fq->q.lru_list, &fq->q.net->lru_list); --- linux-ppc-3.8.0.orig/net/ipv6/netfilter/nf_conntrack_reasm.c +++ linux-ppc-3.8.0/net/ipv6/netfilter/nf_conntrack_reasm.c @@ -14,6 +14,8 @@ * 2 of the License, or (at your option) any later version. */ +#define pr_fmt(fmt) "IPv6-nf: " fmt + #include #include #include @@ -180,13 +182,11 @@ q = inet_frag_find(&net->nf_frag.frags, &nf_frags, &arg, hash); local_bh_enable(); - if (q == NULL) - goto oom; - + if (IS_ERR_OR_NULL(q)) { + inet_frag_maybe_warn_overflow(q, pr_fmt()); + return NULL; + } return container_of(q, struct frag_queue, q); - -oom: - return NULL; } --- linux-ppc-3.8.0.orig/net/ipv6/netfilter/ip6t_rpfilter.c +++ linux-ppc-3.8.0/net/ipv6/netfilter/ip6t_rpfilter.c @@ -71,6 +71,12 @@ return ret; } +static bool rpfilter_is_local(const struct sk_buff *skb) +{ + const struct rt6_info *rt = (const void *) skb_dst(skb); + return rt && (rt->rt6i_flags & RTF_LOCAL); +} + static bool rpfilter_mt(const struct sk_buff *skb, struct xt_action_param *par) { const struct xt_rpfilter_info *info = par->matchinfo; @@ -78,7 +84,7 @@ struct ipv6hdr *iph; bool invert = info->flags & XT_RPFILTER_INVERT; - if (par->in->flags & IFF_LOOPBACK) + if (rpfilter_is_local(skb)) return true ^ invert; iph = ipv6_hdr(skb); --- linux-ppc-3.8.0.orig/net/ipv6/netfilter/ip6t_NPT.c +++ linux-ppc-3.8.0/net/ipv6/netfilter/ip6t_NPT.c @@ -57,7 +57,7 @@ if (pfx_len - i >= 32) mask = 0; else - mask = htonl(~((1 << (pfx_len - i)) - 1)); + mask = htonl((1 << (i - pfx_len + 32)) - 1); idx = i / 32; addr->s6_addr32[idx] &= mask; --- linux-ppc-3.8.0.orig/net/sunrpc/sched.c +++ linux-ppc-3.8.0/net/sunrpc/sched.c @@ -180,6 +180,8 @@ list_add_tail(&task->u.tk_wait.list, &queue->tasks[0]); task->tk_waitqueue = queue; queue->qlen++; + /* barrier matches the read in rpc_wake_up_task_queue_locked() */ + smp_wmb(); rpc_set_queued(task); dprintk("RPC: %5u added to queue %p \"%s\"\n", @@ -322,11 +324,17 @@ * Note: If the task is ASYNC, and is being made runnable after sitting on an * rpc_wait_queue, this must be called with the queue spinlock held to protect * the wait queue operation. + * Note the ordering of rpc_test_and_set_running() and rpc_clear_queued(), + * which is needed to ensure that __rpc_execute() doesn't loop (due to the + * lockless RPC_IS_QUEUED() test) before we've had a chance to test + * the RPC_TASK_RUNNING flag. */ static void rpc_make_runnable(struct rpc_task *task) { + bool need_wakeup = !rpc_test_and_set_running(task); + rpc_clear_queued(task); - if (rpc_test_and_set_running(task)) + if (!need_wakeup) return; if (RPC_IS_ASYNC(task)) { INIT_WORK(&task->u.tk_work, rpc_async_schedule); @@ -430,8 +438,11 @@ */ static void rpc_wake_up_task_queue_locked(struct rpc_wait_queue *queue, struct rpc_task *task) { - if (RPC_IS_QUEUED(task) && task->tk_waitqueue == queue) - __rpc_do_wake_up_task(queue, task); + if (RPC_IS_QUEUED(task)) { + smp_rmb(); + if (task->tk_waitqueue == queue) + __rpc_do_wake_up_task(queue, task); + } } /* --- linux-ppc-3.8.0.orig/net/sunrpc/xprt.c +++ linux-ppc-3.8.0/net/sunrpc/xprt.c @@ -485,13 +485,17 @@ * xprt_wait_for_buffer_space - wait for transport output buffer to clear * @task: task to be put to sleep * @action: function pointer to be executed after wait + * + * Note that we only set the timer for the case of RPC_IS_SOFT(), since + * we don't in general want to force a socket disconnection due to + * an incomplete RPC call transmission. */ void xprt_wait_for_buffer_space(struct rpc_task *task, rpc_action action) { struct rpc_rqst *req = task->tk_rqstp; struct rpc_xprt *xprt = req->rq_xprt; - task->tk_timeout = req->rq_timeout; + task->tk_timeout = RPC_IS_SOFT(task) ? req->rq_timeout : 0; rpc_sleep_on(&xprt->pending, task, action); } EXPORT_SYMBOL_GPL(xprt_wait_for_buffer_space); --- linux-ppc-3.8.0.orig/net/sunrpc/svc.c +++ linux-ppc-3.8.0/net/sunrpc/svc.c @@ -515,15 +515,6 @@ void svc_shutdown_net(struct svc_serv *serv, struct net *net) { - /* - * The set of xprts (contained in the sv_tempsocks and - * sv_permsocks lists) is now constant, since it is modified - * only by accepting new sockets (done by service threads in - * svc_recv) or aging old ones (done by sv_temptimer), or - * configuration changes (excluded by whatever locking the - * caller is using--nfsd_mutex in the case of nfsd). So it's - * safe to traverse those lists and shut everything down: - */ svc_close_net(serv, net); if (serv->sv_shutdown) --- linux-ppc-3.8.0.orig/net/sunrpc/svc_xprt.c +++ linux-ppc-3.8.0/net/sunrpc/svc_xprt.c @@ -856,7 +856,6 @@ struct svc_serv *serv = (struct svc_serv *)closure; struct svc_xprt *xprt; struct list_head *le, *next; - LIST_HEAD(to_be_aged); dprintk("svc_age_temp_xprts\n"); @@ -877,25 +876,15 @@ if (atomic_read(&xprt->xpt_ref.refcount) > 1 || test_bit(XPT_BUSY, &xprt->xpt_flags)) continue; - svc_xprt_get(xprt); - list_move(le, &to_be_aged); + list_del_init(le); set_bit(XPT_CLOSE, &xprt->xpt_flags); set_bit(XPT_DETACHED, &xprt->xpt_flags); - } - spin_unlock_bh(&serv->sv_lock); - - while (!list_empty(&to_be_aged)) { - le = to_be_aged.next; - /* fiddling the xpt_list node is safe 'cos we're XPT_DETACHED */ - list_del_init(le); - xprt = list_entry(le, struct svc_xprt, xpt_list); - dprintk("queuing xprt %p for closing\n", xprt); /* a thread will dequeue and close it soon */ svc_xprt_enqueue(xprt); - svc_xprt_put(xprt); } + spin_unlock_bh(&serv->sv_lock); mod_timer(&serv->sv_temptimer, jiffies + svc_conn_age_period * HZ); } @@ -959,21 +948,24 @@ } EXPORT_SYMBOL_GPL(svc_close_xprt); -static void svc_close_list(struct svc_serv *serv, struct list_head *xprt_list, struct net *net) +static int svc_close_list(struct svc_serv *serv, struct list_head *xprt_list, struct net *net) { struct svc_xprt *xprt; + int ret = 0; spin_lock(&serv->sv_lock); list_for_each_entry(xprt, xprt_list, xpt_list) { if (xprt->xpt_net != net) continue; + ret++; set_bit(XPT_CLOSE, &xprt->xpt_flags); - set_bit(XPT_BUSY, &xprt->xpt_flags); + svc_xprt_enqueue(xprt); } spin_unlock(&serv->sv_lock); + return ret; } -static void svc_clear_pools(struct svc_serv *serv, struct net *net) +static struct svc_xprt *svc_dequeue_net(struct svc_serv *serv, struct net *net) { struct svc_pool *pool; struct svc_xprt *xprt; @@ -988,42 +980,46 @@ if (xprt->xpt_net != net) continue; list_del_init(&xprt->xpt_ready); + spin_unlock_bh(&pool->sp_lock); + return xprt; } spin_unlock_bh(&pool->sp_lock); } + return NULL; } -static void svc_clear_list(struct svc_serv *serv, struct list_head *xprt_list, struct net *net) +static void svc_clean_up_xprts(struct svc_serv *serv, struct net *net) { struct svc_xprt *xprt; - struct svc_xprt *tmp; - LIST_HEAD(victims); - - spin_lock(&serv->sv_lock); - list_for_each_entry_safe(xprt, tmp, xprt_list, xpt_list) { - if (xprt->xpt_net != net) - continue; - list_move(&xprt->xpt_list, &victims); - } - spin_unlock(&serv->sv_lock); - list_for_each_entry_safe(xprt, tmp, &victims, xpt_list) + while ((xprt = svc_dequeue_net(serv, net))) { + set_bit(XPT_CLOSE, &xprt->xpt_flags); svc_delete_xprt(xprt); + } } +/* + * Server threads may still be running (especially in the case where the + * service is still running in other network namespaces). + * + * So we shut down sockets the same way we would on a running server, by + * setting XPT_CLOSE, enqueuing, and letting a thread pick it up to do + * the close. In the case there are no such other threads, + * threads running, svc_clean_up_xprts() does a simple version of a + * server's main event loop, and in the case where there are other + * threads, we may need to wait a little while and then check again to + * see if they're done. + */ void svc_close_net(struct svc_serv *serv, struct net *net) { - svc_close_list(serv, &serv->sv_tempsocks, net); - svc_close_list(serv, &serv->sv_permsocks, net); + int delay = 0; - svc_clear_pools(serv, net); - /* - * At this point the sp_sockets lists will stay empty, since - * svc_xprt_enqueue will not add new entries without taking the - * sp_lock and checking XPT_BUSY. - */ - svc_clear_list(serv, &serv->sv_tempsocks, net); - svc_clear_list(serv, &serv->sv_permsocks, net); + while (svc_close_list(serv, &serv->sv_permsocks, net) + + svc_close_list(serv, &serv->sv_tempsocks, net)) { + + svc_clean_up_xprts(serv, net); + msleep(delay++); + } } /* --- linux-ppc-3.8.0.orig/net/sunrpc/svcsock.c +++ linux-ppc-3.8.0/net/sunrpc/svcsock.c @@ -917,7 +917,10 @@ len = svsk->sk_datalen; npages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; for (i = 0; i < npages; i++) { - BUG_ON(svsk->sk_pages[i] == NULL); + if (svsk->sk_pages[i] == NULL) { + WARN_ON_ONCE(1); + continue; + } put_page(svsk->sk_pages[i]); svsk->sk_pages[i] = NULL; } @@ -1092,8 +1095,10 @@ goto err_noclose; } - if (svc_sock_reclen(svsk) < 8) + if (svsk->sk_datalen < 8) { + svsk->sk_datalen = 0; goto err_delete; /* client is nuts. */ + } rqstp->rq_arg.len = svsk->sk_datalen; rqstp->rq_arg.page_base = 0; --- linux-ppc-3.8.0.orig/net/sunrpc/clnt.c +++ linux-ppc-3.8.0/net/sunrpc/clnt.c @@ -511,7 +511,7 @@ new = rpc_new_client(args, xprt); if (IS_ERR(new)) { err = PTR_ERR(new); - goto out_put; + goto out_err; } atomic_inc(&clnt->cl_count); @@ -524,8 +524,6 @@ new->cl_chatty = clnt->cl_chatty; return new; -out_put: - xprt_put(xprt); out_err: dprintk("RPC: %s: returned error %d\n", __func__, err); return ERR_PTR(err); --- linux-ppc-3.8.0.orig/net/sunrpc/xprtrdma/svc_rdma_marshal.c +++ linux-ppc-3.8.0/net/sunrpc/xprtrdma/svc_rdma_marshal.c @@ -98,6 +98,7 @@ */ static u32 *decode_write_list(u32 *va, u32 *vaend) { + unsigned long start, end; int nchunks; struct rpcrdma_write_array *ary = @@ -113,9 +114,12 @@ return NULL; } nchunks = ntohl(ary->wc_nchunks); - if (((unsigned long)&ary->wc_array[0] + - (sizeof(struct rpcrdma_write_chunk) * nchunks)) > - (unsigned long)vaend) { + + start = (unsigned long)&ary->wc_array[0]; + end = (unsigned long)vaend; + if (nchunks < 0 || + nchunks > (SIZE_MAX - start) / sizeof(struct rpcrdma_write_chunk) || + (start + (sizeof(struct rpcrdma_write_chunk) * nchunks)) > end) { dprintk("svcrdma: ary=%p, wc_nchunks=%d, vaend=%p\n", ary, nchunks, vaend); return NULL; @@ -129,6 +133,7 @@ static u32 *decode_reply_array(u32 *va, u32 *vaend) { + unsigned long start, end; int nchunks; struct rpcrdma_write_array *ary = (struct rpcrdma_write_array *)va; @@ -143,9 +148,12 @@ return NULL; } nchunks = ntohl(ary->wc_nchunks); - if (((unsigned long)&ary->wc_array[0] + - (sizeof(struct rpcrdma_write_chunk) * nchunks)) > - (unsigned long)vaend) { + + start = (unsigned long)&ary->wc_array[0]; + end = (unsigned long)vaend; + if (nchunks < 0 || + nchunks > (SIZE_MAX - start) / sizeof(struct rpcrdma_write_chunk) || + (start + (sizeof(struct rpcrdma_write_chunk) * nchunks)) > end) { dprintk("svcrdma: ary=%p, wc_nchunks=%d, vaend=%p\n", ary, nchunks, vaend); return NULL; --- linux-ppc-3.8.0.orig/net/sctp/outqueue.c +++ linux-ppc-3.8.0/net/sctp/outqueue.c @@ -206,6 +206,8 @@ */ void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q) { + memset(q, 0, sizeof(struct sctp_outq)); + q->asoc = asoc; INIT_LIST_HEAD(&q->out_chunk_list); INIT_LIST_HEAD(&q->control_chunk_list); @@ -213,13 +215,7 @@ INIT_LIST_HEAD(&q->sacked); INIT_LIST_HEAD(&q->abandoned); - q->fast_rtx = 0; - q->outstanding_bytes = 0; q->empty = 1; - q->cork = 0; - - q->malloced = 0; - q->out_qlen = 0; } /* Free the outqueue structure and any related pending chunks. --- linux-ppc-3.8.0.orig/net/sctp/associola.c +++ linux-ppc-3.8.0/net/sctp/associola.c @@ -1080,7 +1080,7 @@ transports) { if (transport == active) - break; + continue; list_for_each_entry(chunk, &transport->transmitted, transmitted_list) { if (key == chunk->subh.data_hdr->tsn) { --- linux-ppc-3.8.0.orig/net/sctp/socket.c +++ linux-ppc-3.8.0/net/sctp/socket.c @@ -4002,6 +4002,12 @@ /* Release our hold on the endpoint. */ sp = sctp_sk(sk); + /* This could happen during socket init, thus we bail out + * early, since the rest of the below is not setup either. + */ + if (sp->ep == NULL) + return; + if (sp->do_auto_asconf) { sp->do_auto_asconf = 0; list_del(&sp->auto_asconf_list); @@ -5653,6 +5659,9 @@ if (len < sizeof(sctp_assoc_t)) return -EINVAL; + /* Allow the struct to grow and fill in as much as possible */ + len = min_t(size_t, len, sizeof(sas)); + if (copy_from_user(&sas, optval, len)) return -EFAULT; @@ -5686,9 +5695,6 @@ /* Mark beginning of a new observation period */ asoc->stats.max_obs_rto = asoc->rto_min; - /* Allow the struct to grow and fill in as much as possible */ - len = min_t(size_t, len, sizeof(sas)); - if (put_user(len, optlen)) return -EFAULT; --- linux-ppc-3.8.0.orig/net/sctp/sm_statefuns.c +++ linux-ppc-3.8.0/net/sctp/sm_statefuns.c @@ -2082,7 +2082,7 @@ } /* Delete the tempory new association. */ - sctp_add_cmd_sf(commands, SCTP_CMD_NEW_ASOC, SCTP_ASOC(new_asoc)); + sctp_add_cmd_sf(commands, SCTP_CMD_SET_ASOC, SCTP_ASOC(new_asoc)); sctp_add_cmd_sf(commands, SCTP_CMD_DELETE_TCB, SCTP_NULL()); /* Restore association pointer to provide SCTP command interpeter --- linux-ppc-3.8.0.orig/net/llc/af_llc.c +++ linux-ppc-3.8.0/net/llc/af_llc.c @@ -720,6 +720,8 @@ int target; /* Read at least this many bytes */ long timeo; + msg->msg_namelen = 0; + lock_sock(sk); copied = -ENOTCONN; if (unlikely(sk->sk_type == SOCK_STREAM && sk->sk_state == TCP_LISTEN)) --- linux-ppc-3.8.0.orig/net/iucv/af_iucv.c +++ linux-ppc-3.8.0/net/iucv/af_iucv.c @@ -1331,6 +1331,8 @@ struct sk_buff *skb, *rskb, *cskb; int err = 0; + msg->msg_namelen = 0; + if ((sk->sk_state == IUCV_DISCONN) && skb_queue_empty(&iucv->backlog_skb_q) && skb_queue_empty(&sk->sk_receive_queue) && --- linux-ppc-3.8.0.orig/net/ax25/af_ax25.c +++ linux-ppc-3.8.0/net/ax25/af_ax25.c @@ -1647,6 +1647,7 @@ ax25_address src; const unsigned char *mac = skb_mac_header(skb); + memset(sax, 0, sizeof(struct full_sockaddr_ax25)); ax25_addr_parse(mac + 1, skb->data - mac - 1, &src, NULL, &digi, NULL, NULL); sax->sax25_family = AF_AX25; --- linux-ppc-3.8.0.orig/net/netrom/af_netrom.c +++ linux-ppc-3.8.0/net/netrom/af_netrom.c @@ -1177,6 +1177,7 @@ } if (sax != NULL) { + memset(sax, 0, sizeof(*sax)); sax->sax25_family = AF_NETROM; skb_copy_from_linear_data_offset(skb, 7, sax->sax25_call.ax25_call, AX25_ADDR_LEN); --- linux-ppc-3.8.0.orig/net/wireless/sysfs.c +++ linux-ppc-3.8.0/net/wireless/sysfs.c @@ -83,6 +83,14 @@ return 0; } +static void cfg80211_leave_all(struct cfg80211_registered_device *rdev) +{ + struct wireless_dev *wdev; + + list_for_each_entry(wdev, &rdev->wdev_list, list) + cfg80211_leave(rdev, wdev); +} + static int wiphy_suspend(struct device *dev, pm_message_t state) { struct cfg80211_registered_device *rdev = dev_to_rdev(dev); @@ -90,12 +98,19 @@ rdev->suspend_at = get_seconds(); - if (rdev->ops->suspend) { - rtnl_lock(); - if (rdev->wiphy.registered) - ret = rdev_suspend(rdev); - rtnl_unlock(); + rtnl_lock(); + if (rdev->wiphy.registered) { + if (!rdev->wowlan) + cfg80211_leave_all(rdev); + if (rdev->ops->suspend) + ret = rdev_suspend(rdev, rdev->wowlan); + if (ret == 1) { + /* Driver refuse to configure wowlan */ + cfg80211_leave_all(rdev); + ret = rdev_suspend(rdev, NULL); + } } + rtnl_unlock(); return ret; } --- linux-ppc-3.8.0.orig/net/wireless/core.h +++ linux-ppc-3.8.0/net/wireless/core.h @@ -481,6 +481,9 @@ void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev, enum nl80211_iftype iftype, int num); +void cfg80211_leave(struct cfg80211_registered_device *rdev, + struct wireless_dev *wdev); + #define CFG80211_MAX_NUM_DIFFERENT_CHANNELS 10 #ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS --- linux-ppc-3.8.0.orig/net/wireless/nl80211.c +++ linux-ppc-3.8.0/net/wireless/nl80211.c @@ -5800,12 +5800,14 @@ void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp) { + struct cfg80211_registered_device *rdev = ((void **)skb->cb)[0]; void *hdr = ((void **)skb->cb)[1]; struct nlattr *data = ((void **)skb->cb)[2]; nla_nest_end(skb, data); genlmsg_end(skb, hdr); - genlmsg_multicast(skb, 0, nl80211_testmode_mcgrp.id, gfp); + genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), skb, 0, + nl80211_testmode_mcgrp.id, gfp); } EXPORT_SYMBOL(cfg80211_testmode_event); #endif @@ -8754,7 +8756,8 @@ genlmsg_end(msg, hdr); - genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, gfp); + genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, + nl80211_mlme_mcgrp.id, gfp); return; nla_put_failure: --- linux-ppc-3.8.0.orig/net/wireless/reg.c +++ linux-ppc-3.8.0/net/wireless/reg.c @@ -883,7 +883,7 @@ return; REG_DBG_PRINT("Disabling freq %d MHz\n", chan->center_freq); - chan->flags = IEEE80211_CHAN_DISABLED; + chan->flags |= IEEE80211_CHAN_DISABLED; return; } --- linux-ppc-3.8.0.orig/net/wireless/core.c +++ linux-ppc-3.8.0/net/wireless/core.c @@ -597,17 +597,21 @@ * cfg80211_mutex lock */ res = rfkill_register(rdev->rfkill); - if (res) - goto out_rm_dev; + if (res) { + device_del(&rdev->wiphy.dev); + + mutex_lock(&cfg80211_mutex); + debugfs_remove_recursive(rdev->wiphy.debugfsdir); + list_del_rcu(&rdev->list); + wiphy_regulatory_deregister(wiphy); + mutex_unlock(&cfg80211_mutex); + return res; + } rtnl_lock(); rdev->wiphy.registered = true; rtnl_unlock(); return 0; - -out_rm_dev: - device_del(&rdev->wiphy.dev); - return res; } EXPORT_SYMBOL(wiphy_register); @@ -806,6 +810,47 @@ rdev->num_running_monitor_ifaces += num; } +void cfg80211_leave(struct cfg80211_registered_device *rdev, + struct wireless_dev *wdev) +{ + struct net_device *dev = wdev->netdev; + + switch (wdev->iftype) { + case NL80211_IFTYPE_ADHOC: + cfg80211_leave_ibss(rdev, dev, true); + break; + case NL80211_IFTYPE_P2P_CLIENT: + case NL80211_IFTYPE_STATION: + mutex_lock(&rdev->sched_scan_mtx); + __cfg80211_stop_sched_scan(rdev, false); + mutex_unlock(&rdev->sched_scan_mtx); + + wdev_lock(wdev); +#ifdef CONFIG_CFG80211_WEXT + kfree(wdev->wext.ie); + wdev->wext.ie = NULL; + wdev->wext.ie_len = 0; + wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; +#endif + __cfg80211_disconnect(rdev, dev, + WLAN_REASON_DEAUTH_LEAVING, true); + cfg80211_mlme_down(rdev, dev); + wdev_unlock(wdev); + break; + case NL80211_IFTYPE_MESH_POINT: + cfg80211_leave_mesh(rdev, dev); + break; + case NL80211_IFTYPE_AP: + case NL80211_IFTYPE_P2P_GO: + cfg80211_stop_ap(rdev, dev); + break; + default: + break; + } + + wdev->beacon_interval = 0; +} + static int cfg80211_netdev_notifier_call(struct notifier_block *nb, unsigned long state, void *ndev) @@ -874,38 +919,7 @@ dev->priv_flags |= IFF_DONT_BRIDGE; break; case NETDEV_GOING_DOWN: - switch (wdev->iftype) { - case NL80211_IFTYPE_ADHOC: - cfg80211_leave_ibss(rdev, dev, true); - break; - case NL80211_IFTYPE_P2P_CLIENT: - case NL80211_IFTYPE_STATION: - mutex_lock(&rdev->sched_scan_mtx); - __cfg80211_stop_sched_scan(rdev, false); - mutex_unlock(&rdev->sched_scan_mtx); - - wdev_lock(wdev); -#ifdef CONFIG_CFG80211_WEXT - kfree(wdev->wext.ie); - wdev->wext.ie = NULL; - wdev->wext.ie_len = 0; - wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; -#endif - __cfg80211_disconnect(rdev, dev, - WLAN_REASON_DEAUTH_LEAVING, true); - cfg80211_mlme_down(rdev, dev); - wdev_unlock(wdev); - break; - case NL80211_IFTYPE_MESH_POINT: - cfg80211_leave_mesh(rdev, dev); - break; - case NL80211_IFTYPE_AP: - cfg80211_stop_ap(rdev, dev); - break; - default: - break; - } - wdev->beacon_interval = 0; + cfg80211_leave(rdev, wdev); break; case NETDEV_DOWN: cfg80211_update_iface_num(rdev, wdev->iftype, -1); --- linux-ppc-3.8.0.orig/net/wireless/rdev-ops.h +++ linux-ppc-3.8.0/net/wireless/rdev-ops.h @@ -6,11 +6,12 @@ #include "core.h" #include "trace.h" -static inline int rdev_suspend(struct cfg80211_registered_device *rdev) +static inline int rdev_suspend(struct cfg80211_registered_device *rdev, + struct cfg80211_wowlan *wowlan) { int ret; - trace_rdev_suspend(&rdev->wiphy, rdev->wowlan); - ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan); + trace_rdev_suspend(&rdev->wiphy, wowlan); + ret = rdev->ops->suspend(&rdev->wiphy, wowlan); trace_rdev_return_int(&rdev->wiphy, ret); return ret; } --- linux-ppc-3.8.0.orig/net/packet/af_packet.c +++ linux-ppc-3.8.0/net/packet/af_packet.c @@ -693,36 +693,33 @@ smp_rmb(); - if (likely(TP_STATUS_KERNEL == BLOCK_STATUS(pbd1))) { + /* We could have just memset this but we will lose the + * flexibility of making the priv area sticky + */ - /* We could have just memset this but we will lose the - * flexibility of making the priv area sticky - */ - BLOCK_SNUM(pbd1) = pkc1->knxt_seq_num++; - BLOCK_NUM_PKTS(pbd1) = 0; - BLOCK_LEN(pbd1) = BLK_PLUS_PRIV(pkc1->blk_sizeof_priv); - getnstimeofday(&ts); - h1->ts_first_pkt.ts_sec = ts.tv_sec; - h1->ts_first_pkt.ts_nsec = ts.tv_nsec; - pkc1->pkblk_start = (char *)pbd1; - pkc1->nxt_offset = pkc1->pkblk_start + BLK_PLUS_PRIV(pkc1->blk_sizeof_priv); - BLOCK_O2FP(pbd1) = (__u32)BLK_PLUS_PRIV(pkc1->blk_sizeof_priv); - BLOCK_O2PRIV(pbd1) = BLK_HDR_LEN; - pbd1->version = pkc1->version; - pkc1->prev = pkc1->nxt_offset; - pkc1->pkblk_end = pkc1->pkblk_start + pkc1->kblk_size; - prb_thaw_queue(pkc1); - _prb_refresh_rx_retire_blk_timer(pkc1); + BLOCK_SNUM(pbd1) = pkc1->knxt_seq_num++; + BLOCK_NUM_PKTS(pbd1) = 0; + BLOCK_LEN(pbd1) = BLK_PLUS_PRIV(pkc1->blk_sizeof_priv); - smp_wmb(); + getnstimeofday(&ts); - return; - } + h1->ts_first_pkt.ts_sec = ts.tv_sec; + h1->ts_first_pkt.ts_nsec = ts.tv_nsec; + + pkc1->pkblk_start = (char *)pbd1; + pkc1->nxt_offset = pkc1->pkblk_start + BLK_PLUS_PRIV(pkc1->blk_sizeof_priv); - WARN(1, "ERROR block:%p is NOT FREE status:%d kactive_blk_num:%d\n", - pbd1, BLOCK_STATUS(pbd1), pkc1->kactive_blk_num); - dump_stack(); - BUG(); + BLOCK_O2FP(pbd1) = (__u32)BLK_PLUS_PRIV(pkc1->blk_sizeof_priv); + BLOCK_O2PRIV(pbd1) = BLK_HDR_LEN; + + pbd1->version = pkc1->version; + pkc1->prev = pkc1->nxt_offset; + pkc1->pkblk_end = pkc1->pkblk_start + pkc1->kblk_size; + + prb_thaw_queue(pkc1); + _prb_refresh_rx_retire_blk_timer(pkc1); + + smp_wmb(); } /* @@ -813,10 +810,6 @@ prb_close_block(pkc, pbd, po, status); return; } - - WARN(1, "ERROR-pbd[%d]:%p\n", pkc->kactive_blk_num, pbd); - dump_stack(); - BUG(); } static int prb_curr_blk_in_use(struct tpacket_kbdq_core *pkc, @@ -2776,12 +2769,11 @@ return -EOPNOTSUPP; uaddr->sa_family = AF_PACKET; + memset(uaddr->sa_data, 0, sizeof(uaddr->sa_data)); rcu_read_lock(); dev = dev_get_by_index_rcu(sock_net(sk), pkt_sk(sk)->ifindex); if (dev) - strncpy(uaddr->sa_data, dev->name, 14); - else - memset(uaddr->sa_data, 0, 14); + strlcpy(uaddr->sa_data, dev->name, sizeof(uaddr->sa_data)); rcu_read_unlock(); *uaddr_len = sizeof(*uaddr); --- linux-ppc-3.8.0.orig/net/dcb/dcbnl.c +++ linux-ppc-3.8.0/net/dcb/dcbnl.c @@ -284,6 +284,7 @@ if (!netdev->dcbnl_ops->getpermhwaddr) return -EOPNOTSUPP; + memset(perm_addr, 0, sizeof(perm_addr)); netdev->dcbnl_ops->getpermhwaddr(netdev, perm_addr); return nla_put(skb, DCB_ATTR_PERM_HWADDR, sizeof(perm_addr), perm_addr); @@ -1042,6 +1043,7 @@ if (ops->ieee_getets) { struct ieee_ets ets; + memset(&ets, 0, sizeof(ets)); err = ops->ieee_getets(netdev, &ets); if (!err && nla_put(skb, DCB_ATTR_IEEE_ETS, sizeof(ets), &ets)) @@ -1050,6 +1052,7 @@ if (ops->ieee_getmaxrate) { struct ieee_maxrate maxrate; + memset(&maxrate, 0, sizeof(maxrate)); err = ops->ieee_getmaxrate(netdev, &maxrate); if (!err) { err = nla_put(skb, DCB_ATTR_IEEE_MAXRATE, @@ -1061,6 +1064,7 @@ if (ops->ieee_getpfc) { struct ieee_pfc pfc; + memset(&pfc, 0, sizeof(pfc)); err = ops->ieee_getpfc(netdev, &pfc); if (!err && nla_put(skb, DCB_ATTR_IEEE_PFC, sizeof(pfc), &pfc)) @@ -1094,6 +1098,7 @@ /* get peer info if available */ if (ops->ieee_peer_getets) { struct ieee_ets ets; + memset(&ets, 0, sizeof(ets)); err = ops->ieee_peer_getets(netdev, &ets); if (!err && nla_put(skb, DCB_ATTR_IEEE_PEER_ETS, sizeof(ets), &ets)) @@ -1102,6 +1107,7 @@ if (ops->ieee_peer_getpfc) { struct ieee_pfc pfc; + memset(&pfc, 0, sizeof(pfc)); err = ops->ieee_peer_getpfc(netdev, &pfc); if (!err && nla_put(skb, DCB_ATTR_IEEE_PEER_PFC, sizeof(pfc), &pfc)) @@ -1280,6 +1286,7 @@ /* peer info if available */ if (ops->cee_peer_getpg) { struct cee_pg pg; + memset(&pg, 0, sizeof(pg)); err = ops->cee_peer_getpg(netdev, &pg); if (!err && nla_put(skb, DCB_ATTR_CEE_PEER_PG, sizeof(pg), &pg)) @@ -1288,6 +1295,7 @@ if (ops->cee_peer_getpfc) { struct cee_pfc pfc; + memset(&pfc, 0, sizeof(pfc)); err = ops->cee_peer_getpfc(netdev, &pfc); if (!err && nla_put(skb, DCB_ATTR_CEE_PEER_PFC, sizeof(pfc), &pfc)) --- linux-ppc-3.8.0.orig/net/nfc/core.c +++ linux-ppc-3.8.0/net/nfc/core.c @@ -338,7 +338,7 @@ dev->active_target = target; dev->rf_mode = NFC_RF_INITIATOR; - if (dev->ops->check_presence) + if (dev->ops->check_presence && !dev->shutting_down) mod_timer(&dev->check_pres_timer, jiffies + msecs_to_jiffies(NFC_CHECK_PRES_FREQ_MS)); } @@ -429,7 +429,7 @@ rc = dev->ops->im_transceive(dev, dev->active_target, skb, cb, cb_context); - if (!rc && dev->ops->check_presence) + if (!rc && dev->ops->check_presence && !dev->shutting_down) mod_timer(&dev->check_pres_timer, jiffies + msecs_to_jiffies(NFC_CHECK_PRES_FREQ_MS)); } else if (dev->rf_mode == NFC_RF_TARGET && dev->ops->tm_send != NULL) { @@ -684,11 +684,6 @@ pr_debug("dev_name=%s\n", dev_name(&dev->dev)); - if (dev->ops->check_presence) { - del_timer_sync(&dev->check_pres_timer); - cancel_work_sync(&dev->check_pres_work); - } - nfc_genl_data_exit(&dev->genl_data); kfree(dev->targets); kfree(dev); @@ -706,15 +701,16 @@ rc = dev->ops->check_presence(dev, dev->active_target); if (rc == -EOPNOTSUPP) goto exit; - if (!rc) { - mod_timer(&dev->check_pres_timer, jiffies + - msecs_to_jiffies(NFC_CHECK_PRES_FREQ_MS)); - } else { + if (rc) { u32 active_target_idx = dev->active_target->idx; device_unlock(&dev->dev); nfc_target_lost(dev, active_target_idx); return; } + + if (!dev->shutting_down) + mod_timer(&dev->check_pres_timer, jiffies + + msecs_to_jiffies(NFC_CHECK_PRES_FREQ_MS)); } exit: @@ -853,26 +849,27 @@ id = dev->idx; - mutex_lock(&nfc_devlist_mutex); - nfc_devlist_generation++; - - /* lock to avoid unregistering a device while an operation - is in progress */ - device_lock(&dev->dev); - device_del(&dev->dev); - device_unlock(&dev->dev); + if (dev->ops->check_presence) { + device_lock(&dev->dev); + dev->shutting_down = true; + device_unlock(&dev->dev); + del_timer_sync(&dev->check_pres_timer); + cancel_work_sync(&dev->check_pres_work); + } - mutex_unlock(&nfc_devlist_mutex); + rc = nfc_genl_device_removed(dev); + if (rc) + pr_debug("The userspace won't be notified that the device %s " + "was removed\n", dev_name(&dev->dev)); nfc_llcp_unregister_device(dev); - rc = nfc_genl_device_removed(dev); - if (rc) - pr_debug("The userspace won't be notified that the device %s was removed\n", - dev_name(&dev->dev)); + mutex_lock(&nfc_devlist_mutex); + nfc_devlist_generation++; + device_del(&dev->dev); + mutex_unlock(&nfc_devlist_mutex); ida_simple_remove(&nfc_index_ida, id); - } EXPORT_SYMBOL(nfc_unregister_device); --- linux-ppc-3.8.0.orig/net/nfc/hci/hcp.c +++ linux-ppc-3.8.0/net/nfc/hci/hcp.c @@ -105,6 +105,13 @@ } mutex_lock(&hdev->msg_tx_mutex); + + if (hdev->shutting_down) { + err = -ESHUTDOWN; + mutex_unlock(&hdev->msg_tx_mutex); + goto out_skb_err; + } + list_add_tail(&cmd->msg_l, &hdev->msg_tx_queue); mutex_unlock(&hdev->msg_tx_mutex); --- linux-ppc-3.8.0.orig/net/nfc/hci/core.c +++ linux-ppc-3.8.0/net/nfc/hci/core.c @@ -57,6 +57,8 @@ int r = 0; mutex_lock(&hdev->msg_tx_mutex); + if (hdev->shutting_down) + goto exit; if (hdev->cmd_pending_msg) { if (timer_pending(&hdev->cmd_timer) == 0) { @@ -295,6 +297,12 @@ goto exit; } + if (hdev->ops->event_received) { + r = hdev->ops->event_received(hdev, gate, event, skb); + if (r <= 0) + goto exit_noskb; + } + switch (event) { case NFC_HCI_EVT_TARGET_DISCOVERED: if (skb->len < 1) { /* no status data? */ @@ -320,17 +328,15 @@ r = nfc_hci_target_discovered(hdev, gate); break; default: - if (hdev->ops->event_received) { - hdev->ops->event_received(hdev, gate, event, skb); - return; - } - + pr_info("Discarded unknown event %x to gate %x\n", event, gate); + r = -EINVAL; break; } exit: kfree_skb(skb); +exit_noskb: if (r) { /* TODO: There was an error dispatching the event, * how to propagate up to nfc core? @@ -669,8 +675,10 @@ if (hdev->ops->tm_send) return hdev->ops->tm_send(hdev, skb); - else - return -ENOTSUPP; + + kfree_skb(skb); + + return -ENOTSUPP; } static int hci_check_presence(struct nfc_dev *nfc_dev, @@ -787,6 +795,7 @@ struct nfc_hci_dev *nfc_hci_allocate_device(struct nfc_hci_ops *ops, struct nfc_hci_init_data *init_data, + unsigned long quirks, u32 protocols, const char *llc_name, int tx_headroom, @@ -830,6 +839,8 @@ memset(hdev->gate2pipe, NFC_HCI_INVALID_PIPE, sizeof(hdev->gate2pipe)); + hdev->quirks = quirks; + return hdev; } EXPORT_SYMBOL(nfc_hci_allocate_device); @@ -868,6 +879,28 @@ { struct hci_msg *msg, *n; + mutex_lock(&hdev->msg_tx_mutex); + + if (hdev->cmd_pending_msg) { + if (hdev->cmd_pending_msg->cb) + hdev->cmd_pending_msg->cb( + hdev->cmd_pending_msg->cb_context, + NULL, -ESHUTDOWN); + kfree(hdev->cmd_pending_msg); + hdev->cmd_pending_msg = NULL; + } + + hdev->shutting_down = true; + + mutex_unlock(&hdev->msg_tx_mutex); + + del_timer_sync(&hdev->cmd_timer); + cancel_work_sync(&hdev->msg_tx_work); + + cancel_work_sync(&hdev->msg_rx_work); + + nfc_unregister_device(hdev->ndev); + skb_queue_purge(&hdev->rx_hcp_frags); skb_queue_purge(&hdev->msg_rx_queue); @@ -876,13 +909,6 @@ skb_queue_purge(&msg->msg_frags); kfree(msg); } - - del_timer_sync(&hdev->cmd_timer); - - nfc_unregister_device(hdev->ndev); - - cancel_work_sync(&hdev->msg_tx_work); - cancel_work_sync(&hdev->msg_rx_work); } EXPORT_SYMBOL(nfc_hci_unregister_device); --- linux-ppc-3.8.0.orig/net/nfc/hci/command.c +++ linux-ppc-3.8.0/net/nfc/hci/command.c @@ -280,14 +280,19 @@ static int nfc_hci_clear_all_pipes(struct nfc_hci_dev *hdev) { u8 param[2]; + size_t param_len = 2; /* TODO: Find out what the identity reference data is * and fill param with it. HCI spec 6.1.3.5 */ pr_debug("\n"); + if (test_bit(NFC_HCI_QUIRK_SHORT_CLEAR, &hdev->quirks)) + param_len = 0; + return nfc_hci_execute_cmd(hdev, NFC_HCI_ADMIN_PIPE, - NFC_HCI_ADM_CLEAR_ALL_PIPE, param, 2, NULL); + NFC_HCI_ADM_CLEAR_ALL_PIPE, param, param_len, + NULL); } int nfc_hci_disconnect_gate(struct nfc_hci_dev *hdev, u8 gate) --- linux-ppc-3.8.0.orig/net/nfc/llcp/sock.c +++ linux-ppc-3.8.0/net/nfc/llcp/sock.c @@ -644,6 +644,8 @@ pr_debug("%p %zu\n", sk, len); + msg->msg_namelen = 0; + lock_sock(sk); if (sk->sk_state == LLCP_CLOSED && @@ -684,6 +686,7 @@ pr_debug("Datagram socket %d %d\n", ui_cb->dsap, ui_cb->ssap); + memset(&sockaddr, 0, sizeof(sockaddr)); sockaddr.sa_family = AF_NFC; sockaddr.nfc_protocol = NFC_PROTO_NFC_DEP; sockaddr.dsap = ui_cb->dsap; --- linux-ppc-3.8.0.orig/net/x25/af_x25.c +++ linux-ppc-3.8.0/net/x25/af_x25.c @@ -1586,11 +1586,11 @@ case SIOCX25CALLACCPTAPPRV: { rc = -EINVAL; lock_sock(sk); - if (sk->sk_state != TCP_CLOSE) - break; - clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags); + if (sk->sk_state == TCP_CLOSE) { + clear_bit(X25_ACCPT_APPRV_FLAG, &x25->flags); + rc = 0; + } release_sock(sk); - rc = 0; break; } @@ -1598,14 +1598,15 @@ rc = -EINVAL; lock_sock(sk); if (sk->sk_state != TCP_ESTABLISHED) - break; + goto out_sendcallaccpt_release; /* must call accptapprv above */ if (test_bit(X25_ACCPT_APPRV_FLAG, &x25->flags)) - break; + goto out_sendcallaccpt_release; x25_write_internal(sk, X25_CALL_ACCEPTED); x25->state = X25_STATE_3; - release_sock(sk); rc = 0; +out_sendcallaccpt_release: + release_sock(sk); break; } --- linux-ppc-3.8.0.orig/net/ceph/mon_client.c +++ linux-ppc-3.8.0/net/ceph/mon_client.c @@ -737,7 +737,7 @@ __validate_auth(monc); - if (monc->auth->ops->is_authenticated(monc->auth)) + if (ceph_auth_is_authenticated(monc->auth)) __send_subscribe(monc); } __schedule_delayed(monc); @@ -892,8 +892,7 @@ mutex_lock(&monc->mutex); had_debugfs_info = have_debugfs_info(monc); - if (monc->auth->ops) - was_auth = monc->auth->ops->is_authenticated(monc->auth); + was_auth = ceph_auth_is_authenticated(monc->auth); monc->pending_auth = 0; ret = ceph_handle_auth_reply(monc->auth, msg->front.iov_base, msg->front.iov_len, @@ -904,7 +903,7 @@ wake_up_all(&monc->client->auth_wq); } else if (ret > 0) { __send_prepared_auth_request(monc, ret); - } else if (!was_auth && monc->auth->ops->is_authenticated(monc->auth)) { + } else if (!was_auth && ceph_auth_is_authenticated(monc->auth)) { dout("authenticated, starting session\n"); monc->client->msgr.inst.name.type = CEPH_ENTITY_TYPE_CLIENT; --- linux-ppc-3.8.0.orig/net/ceph/auth_none.c +++ linux-ppc-3.8.0/net/ceph/auth_none.c @@ -39,6 +39,11 @@ return xi->starting; } +static int build_request(struct ceph_auth_client *ac, void *buf, void *end) +{ + return 0; +} + /* * the generic auth code decode the global_id, and we carry no actual * authenticate state, so nothing happens here. @@ -106,6 +111,7 @@ .destroy = destroy, .is_authenticated = is_authenticated, .should_authenticate = should_authenticate, + .build_request = build_request, .handle_reply = handle_reply, .create_authorizer = ceph_auth_none_create_authorizer, .destroy_authorizer = ceph_auth_none_destroy_authorizer, --- linux-ppc-3.8.0.orig/net/ceph/auth.c +++ linux-ppc-3.8.0/net/ceph/auth.c @@ -47,6 +47,7 @@ if (!ac) goto out; + mutex_init(&ac->mutex); ac->negotiating = true; if (name) ac->name = name; @@ -73,10 +74,12 @@ */ void ceph_auth_reset(struct ceph_auth_client *ac) { + mutex_lock(&ac->mutex); dout("auth_reset %p\n", ac); if (ac->ops && !ac->negotiating) ac->ops->reset(ac); ac->negotiating = true; + mutex_unlock(&ac->mutex); } int ceph_entity_name_encode(const char *name, void **p, void *end) @@ -102,6 +105,7 @@ int i, num; int ret; + mutex_lock(&ac->mutex); dout("auth_build_hello\n"); monhdr->have_version = 0; monhdr->session_mon = cpu_to_le16(-1); @@ -122,15 +126,19 @@ ret = ceph_entity_name_encode(ac->name, &p, end); if (ret < 0) - return ret; + goto out; ceph_decode_need(&p, end, sizeof(u64), bad); ceph_encode_64(&p, ac->global_id); ceph_encode_32(&lenp, p - lenp - sizeof(u32)); - return p - buf; + ret = p - buf; +out: + mutex_unlock(&ac->mutex); + return ret; bad: - return -ERANGE; + ret = -ERANGE; + goto out; } static int ceph_build_auth_request(struct ceph_auth_client *ac, @@ -151,11 +159,13 @@ if (ret < 0) { pr_err("error %d building auth method %s request\n", ret, ac->ops->name); - return ret; + goto out; } dout(" built request %d bytes\n", ret); ceph_encode_32(&p, ret); - return p + ret - msg_buf; + ret = p + ret - msg_buf; +out: + return ret; } /* @@ -176,6 +186,7 @@ int result_msg_len; int ret = -EINVAL; + mutex_lock(&ac->mutex); dout("handle_auth_reply %p %p\n", p, end); ceph_decode_need(&p, end, sizeof(u32) * 3 + sizeof(u64), bad); protocol = ceph_decode_32(&p); @@ -227,33 +238,103 @@ ret = ac->ops->handle_reply(ac, result, payload, payload_end); if (ret == -EAGAIN) { - return ceph_build_auth_request(ac, reply_buf, reply_len); + ret = ceph_build_auth_request(ac, reply_buf, reply_len); } else if (ret) { pr_err("auth method '%s' error %d\n", ac->ops->name, ret); - return ret; } - return 0; -bad: - pr_err("failed to decode auth msg\n"); out: + mutex_unlock(&ac->mutex); return ret; + +bad: + pr_err("failed to decode auth msg\n"); + ret = -EINVAL; + goto out; } int ceph_build_auth(struct ceph_auth_client *ac, void *msg_buf, size_t msg_len) { + int ret = 0; + + mutex_lock(&ac->mutex); if (!ac->protocol) - return ceph_auth_build_hello(ac, msg_buf, msg_len); - BUG_ON(!ac->ops); - if (ac->ops->should_authenticate(ac)) - return ceph_build_auth_request(ac, msg_buf, msg_len); - return 0; + ret = ceph_auth_build_hello(ac, msg_buf, msg_len); + else if (ac->ops->should_authenticate(ac)) + ret = ceph_build_auth_request(ac, msg_buf, msg_len); + mutex_unlock(&ac->mutex); + return ret; } int ceph_auth_is_authenticated(struct ceph_auth_client *ac) { - if (!ac->ops) - return 0; - return ac->ops->is_authenticated(ac); + int ret = 0; + + mutex_lock(&ac->mutex); + if (ac->ops) + ret = ac->ops->is_authenticated(ac); + mutex_unlock(&ac->mutex); + return ret; +} +EXPORT_SYMBOL(ceph_auth_is_authenticated); + +int ceph_auth_create_authorizer(struct ceph_auth_client *ac, + int peer_type, + struct ceph_auth_handshake *auth) +{ + int ret = 0; + + mutex_lock(&ac->mutex); + if (ac->ops && ac->ops->create_authorizer) + ret = ac->ops->create_authorizer(ac, peer_type, auth); + mutex_unlock(&ac->mutex); + return ret; +} +EXPORT_SYMBOL(ceph_auth_create_authorizer); + +void ceph_auth_destroy_authorizer(struct ceph_auth_client *ac, + struct ceph_authorizer *a) +{ + mutex_lock(&ac->mutex); + if (ac->ops && ac->ops->destroy_authorizer) + ac->ops->destroy_authorizer(ac, a); + mutex_unlock(&ac->mutex); +} +EXPORT_SYMBOL(ceph_auth_destroy_authorizer); + +int ceph_auth_update_authorizer(struct ceph_auth_client *ac, + int peer_type, + struct ceph_auth_handshake *a) +{ + int ret = 0; + + mutex_lock(&ac->mutex); + if (ac->ops && ac->ops->update_authorizer) + ret = ac->ops->update_authorizer(ac, peer_type, a); + mutex_unlock(&ac->mutex); + return ret; +} +EXPORT_SYMBOL(ceph_auth_update_authorizer); + +int ceph_auth_verify_authorizer_reply(struct ceph_auth_client *ac, + struct ceph_authorizer *a, size_t len) +{ + int ret = 0; + + mutex_lock(&ac->mutex); + if (ac->ops && ac->ops->verify_authorizer_reply) + ret = ac->ops->verify_authorizer_reply(ac, a, len); + mutex_unlock(&ac->mutex); + return ret; +} +EXPORT_SYMBOL(ceph_auth_verify_authorizer_reply); + +void ceph_auth_invalidate_authorizer(struct ceph_auth_client *ac, int peer_type) +{ + mutex_lock(&ac->mutex); + if (ac->ops && ac->ops->invalidate_authorizer) + ac->ops->invalidate_authorizer(ac, peer_type); + mutex_unlock(&ac->mutex); } +EXPORT_SYMBOL(ceph_auth_invalidate_authorizer); --- linux-ppc-3.8.0.orig/net/ceph/osd_client.c +++ linux-ppc-3.8.0/net/ceph/osd_client.c @@ -673,8 +673,7 @@ if (atomic_dec_and_test(&osd->o_ref) && osd->o_auth.authorizer) { struct ceph_auth_client *ac = osd->o_osdc->client->monc.auth; - if (ac->ops && ac->ops->destroy_authorizer) - ac->ops->destroy_authorizer(ac, osd->o_auth.authorizer); + ceph_auth_destroy_authorizer(ac, osd->o_auth.authorizer); kfree(osd); } } @@ -1339,13 +1338,13 @@ __register_request(osdc, req); __unregister_linger_request(osdc, req); } + reset_changed_osds(osdc); mutex_unlock(&osdc->request_mutex); if (needmap) { dout("%d requests for down osds, need new map\n", needmap); ceph_monc_request_next_osdmap(&osdc->client->monc); } - reset_changed_osds(osdc); } @@ -2129,13 +2128,17 @@ struct ceph_auth_handshake *auth = &o->o_auth; if (force_new && auth->authorizer) { - if (ac->ops && ac->ops->destroy_authorizer) - ac->ops->destroy_authorizer(ac, auth->authorizer); + ceph_auth_destroy_authorizer(ac, auth->authorizer); auth->authorizer = NULL; } - if (!auth->authorizer && ac->ops && ac->ops->create_authorizer) { - int ret = ac->ops->create_authorizer(ac, CEPH_ENTITY_TYPE_OSD, - auth); + if (!auth->authorizer) { + int ret = ceph_auth_create_authorizer(ac, CEPH_ENTITY_TYPE_OSD, + auth); + if (ret) + return ERR_PTR(ret); + } else { + int ret = ceph_auth_update_authorizer(ac, CEPH_ENTITY_TYPE_OSD, + auth); if (ret) return ERR_PTR(ret); } @@ -2151,11 +2154,7 @@ struct ceph_osd_client *osdc = o->o_osdc; struct ceph_auth_client *ac = osdc->client->monc.auth; - /* - * XXX If ac->ops or ac->ops->verify_authorizer_reply is null, - * XXX which do we do: succeed or fail? - */ - return ac->ops->verify_authorizer_reply(ac, o->o_auth.authorizer, len); + return ceph_auth_verify_authorizer_reply(ac, o->o_auth.authorizer, len); } static int invalidate_authorizer(struct ceph_connection *con) @@ -2164,9 +2163,7 @@ struct ceph_osd_client *osdc = o->o_osdc; struct ceph_auth_client *ac = osdc->client->monc.auth; - if (ac->ops && ac->ops->invalidate_authorizer) - ac->ops->invalidate_authorizer(ac, CEPH_ENTITY_TYPE_OSD); - + ceph_auth_invalidate_authorizer(ac, CEPH_ENTITY_TYPE_OSD); return ceph_monc_validate_auth(&osdc->client->monc); } --- linux-ppc-3.8.0.orig/net/ceph/auth_x.h +++ linux-ppc-3.8.0/net/ceph/auth_x.h @@ -29,6 +29,7 @@ struct ceph_buffer *buf; unsigned int service; u64 nonce; + u64 secret_id; char reply_buf[128]; /* big enough for encrypted blob */ }; --- linux-ppc-3.8.0.orig/net/ceph/messenger.c +++ linux-ppc-3.8.0/net/ceph/messenger.c @@ -1546,7 +1546,6 @@ con->error_msg = "connect authorization failure"; return -1; } - con->auth_retry = 1; con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) @@ -1631,7 +1630,7 @@ WARN_ON(con->state != CON_STATE_NEGOTIATING); con->state = CON_STATE_OPEN; - + con->auth_retry = 0; /* we authenticated; clear flag */ con->peer_global_seq = le32_to_cpu(con->in_reply.global_seq); con->connect_seq++; con->peer_features = server_feat; --- linux-ppc-3.8.0.orig/net/ceph/auth_x.c +++ linux-ppc-3.8.0/net/ceph/auth_x.c @@ -298,6 +298,7 @@ return -ENOMEM; } au->service = th->service; + au->secret_id = th->secret_id; msg_a = au->buf->vec.iov_base; msg_a->struct_v = 1; @@ -555,6 +556,26 @@ return 0; } +static int ceph_x_update_authorizer( + struct ceph_auth_client *ac, int peer_type, + struct ceph_auth_handshake *auth) +{ + struct ceph_x_authorizer *au; + struct ceph_x_ticket_handler *th; + + th = get_ticket_handler(ac, peer_type); + if (IS_ERR(th)) + return PTR_ERR(th); + + au = (struct ceph_x_authorizer *)auth->authorizer; + if (au->secret_id < th->secret_id) { + dout("ceph_x_update_authorizer service %u secret %llu < %llu\n", + au->service, au->secret_id, th->secret_id); + return ceph_x_build_authorizer(ac, th, au); + } + return 0; +} + static int ceph_x_verify_authorizer_reply(struct ceph_auth_client *ac, struct ceph_authorizer *a, size_t len) { @@ -630,7 +651,7 @@ th = get_ticket_handler(ac, peer_type); if (!IS_ERR(th)) - remove_ticket_handler(ac, th); + memset(&th->validity, 0, sizeof(th->validity)); } @@ -641,6 +662,7 @@ .build_request = ceph_x_build_request, .handle_reply = ceph_x_handle_reply, .create_authorizer = ceph_x_create_authorizer, + .update_authorizer = ceph_x_update_authorizer, .verify_authorizer_reply = ceph_x_verify_authorizer_reply, .destroy_authorizer = ceph_x_destroy_authorizer, .invalidate_authorizer = ceph_x_invalidate_authorizer, --- linux-ppc-3.8.0.orig/net/bluetooth/af_bluetooth.c +++ linux-ppc-3.8.0/net/bluetooth/af_bluetooth.c @@ -230,6 +230,8 @@ if (flags & (MSG_OOB)) return -EOPNOTSUPP; + msg->msg_namelen = 0; + skb = skb_recv_datagram(sk, flags, noblock, &err); if (!skb) { if (sk->sk_shutdown & RCV_SHUTDOWN) @@ -237,8 +239,6 @@ return err; } - msg->msg_namelen = 0; - copied = skb->len; if (len < copied) { msg->msg_flags |= MSG_TRUNC; --- linux-ppc-3.8.0.orig/net/bluetooth/l2cap_core.c +++ linux-ppc-3.8.0/net/bluetooth/l2cap_core.c @@ -2748,6 +2748,9 @@ BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %u", conn, code, ident, dlen); + if (conn->mtu < L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE) + return NULL; + len = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + dlen; count = min_t(unsigned int, conn->mtu, len); @@ -3573,10 +3576,14 @@ } static inline int l2cap_command_rej(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_cmd_rej_unk *rej = (struct l2cap_cmd_rej_unk *) data; + if (cmd_len < sizeof(*rej)) + return -EPROTO; + if (rej->reason != L2CAP_REJ_NOT_UNDERSTOOD) return 0; @@ -3725,11 +3732,14 @@ } static int l2cap_connect_req(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, u8 *data) { struct hci_dev *hdev = conn->hcon->hdev; struct hci_conn *hcon = conn->hcon; + if (cmd_len < sizeof(struct l2cap_conn_req)) + return -EPROTO; + hci_dev_lock(hdev); if (test_bit(HCI_MGMT, &hdev->dev_flags) && !test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &hcon->flags)) @@ -3743,7 +3753,8 @@ } static int l2cap_connect_create_rsp(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_conn_rsp *rsp = (struct l2cap_conn_rsp *) data; u16 scid, dcid, result, status; @@ -3751,6 +3762,9 @@ u8 req[128]; int err; + if (cmd_len < sizeof(*rsp)) + return -EPROTO; + scid = __le16_to_cpu(rsp->scid); dcid = __le16_to_cpu(rsp->dcid); result = __le16_to_cpu(rsp->result); @@ -3848,6 +3862,9 @@ struct l2cap_chan *chan; int len, err = 0; + if (cmd_len < sizeof(*req)) + return -EPROTO; + dcid = __le16_to_cpu(req->dcid); flags = __le16_to_cpu(req->flags); @@ -3871,7 +3888,7 @@ /* Reject if config buffer is too small. */ len = cmd_len - sizeof(*req); - if (len < 0 || chan->conf_len + len > sizeof(chan->conf_req)) { + if (chan->conf_len + len > sizeof(chan->conf_req)) { l2cap_send_cmd(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(chan, rsp, L2CAP_CONF_REJECT, flags), rsp); @@ -3949,14 +3966,18 @@ } static inline int l2cap_config_rsp(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_conf_rsp *rsp = (struct l2cap_conf_rsp *)data; u16 scid, flags, result; struct l2cap_chan *chan; - int len = le16_to_cpu(cmd->len) - sizeof(*rsp); + int len = cmd_len - sizeof(*rsp); int err = 0; + if (cmd_len < sizeof(*rsp)) + return -EPROTO; + scid = __le16_to_cpu(rsp->scid); flags = __le16_to_cpu(rsp->flags); result = __le16_to_cpu(rsp->result); @@ -4057,7 +4078,8 @@ } static inline int l2cap_disconnect_req(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_disconn_req *req = (struct l2cap_disconn_req *) data; struct l2cap_disconn_rsp rsp; @@ -4065,6 +4087,9 @@ struct l2cap_chan *chan; struct sock *sk; + if (cmd_len != sizeof(*req)) + return -EPROTO; + scid = __le16_to_cpu(req->scid); dcid = __le16_to_cpu(req->dcid); @@ -4104,12 +4129,16 @@ } static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_disconn_rsp *rsp = (struct l2cap_disconn_rsp *) data; u16 dcid, scid; struct l2cap_chan *chan; + if (cmd_len != sizeof(*rsp)) + return -EPROTO; + scid = __le16_to_cpu(rsp->scid); dcid = __le16_to_cpu(rsp->dcid); @@ -4139,11 +4168,15 @@ } static inline int l2cap_information_req(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_info_req *req = (struct l2cap_info_req *) data; u16 type; + if (cmd_len != sizeof(*req)) + return -EPROTO; + type = __le16_to_cpu(req->type); BT_DBG("type 0x%4.4x", type); @@ -4190,11 +4223,15 @@ } static inline int l2cap_information_rsp(struct l2cap_conn *conn, - struct l2cap_cmd_hdr *cmd, u8 *data) + struct l2cap_cmd_hdr *cmd, u16 cmd_len, + u8 *data) { struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) data; u16 type, result; + if (cmd_len < sizeof(*rsp)) + return -EPROTO; + type = __le16_to_cpu(rsp->type); result = __le16_to_cpu(rsp->result); @@ -5060,16 +5097,16 @@ switch (cmd->code) { case L2CAP_COMMAND_REJ: - l2cap_command_rej(conn, cmd, data); + l2cap_command_rej(conn, cmd, cmd_len, data); break; case L2CAP_CONN_REQ: - err = l2cap_connect_req(conn, cmd, data); + err = l2cap_connect_req(conn, cmd, cmd_len, data); break; case L2CAP_CONN_RSP: case L2CAP_CREATE_CHAN_RSP: - err = l2cap_connect_create_rsp(conn, cmd, data); + err = l2cap_connect_create_rsp(conn, cmd, cmd_len, data); break; case L2CAP_CONF_REQ: @@ -5077,15 +5114,15 @@ break; case L2CAP_CONF_RSP: - err = l2cap_config_rsp(conn, cmd, data); + err = l2cap_config_rsp(conn, cmd, cmd_len, data); break; case L2CAP_DISCONN_REQ: - err = l2cap_disconnect_req(conn, cmd, data); + err = l2cap_disconnect_req(conn, cmd, cmd_len, data); break; case L2CAP_DISCONN_RSP: - err = l2cap_disconnect_rsp(conn, cmd, data); + err = l2cap_disconnect_rsp(conn, cmd, cmd_len, data); break; case L2CAP_ECHO_REQ: @@ -5096,11 +5133,11 @@ break; case L2CAP_INFO_REQ: - err = l2cap_information_req(conn, cmd, data); + err = l2cap_information_req(conn, cmd, cmd_len, data); break; case L2CAP_INFO_RSP: - err = l2cap_information_rsp(conn, cmd, data); + err = l2cap_information_rsp(conn, cmd, cmd_len, data); break; case L2CAP_CREATE_CHAN_REQ: --- linux-ppc-3.8.0.orig/net/bluetooth/hci_core.c +++ linux-ppc-3.8.0/net/bluetooth/hci_core.c @@ -777,6 +777,8 @@ done: hci_req_unlock(hdev); hci_dev_put(hdev); + if (!ret && hdev->load_firmware) + hdev->load_firmware(hdev); return ret; } @@ -1139,11 +1141,15 @@ static void hci_power_on(struct work_struct *work) { struct hci_dev *hdev = container_of(work, struct hci_dev, power_on); + int err; BT_DBG("%s", hdev->name); - if (hci_dev_open(hdev->id) < 0) + err = hci_dev_open(hdev->id); + if (err < 0) { + mgmt_set_powered_failed(hdev, err); return; + } if (test_bit(HCI_AUTO_OFF, &hdev->dev_flags)) schedule_delayed_work(&hdev->power_off, HCI_AUTO_OFF_TIMEOUT); @@ -2187,6 +2193,7 @@ return 0; } +EXPORT_SYMBOL(hci_send_cmd); /* Get data from the previously sent command */ void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 opcode) --- linux-ppc-3.8.0.orig/net/bluetooth/mgmt.c +++ linux-ppc-3.8.0/net/bluetooth/mgmt.c @@ -2957,6 +2957,27 @@ return err; } +int mgmt_set_powered_failed(struct hci_dev *hdev, int err) +{ + struct pending_cmd *cmd; + u8 status; + + cmd = mgmt_pending_find(MGMT_OP_SET_POWERED, hdev); + if (!cmd) + return -ENOENT; + + if (err == -ERFKILL) + status = MGMT_STATUS_RFKILLED; + else + status = MGMT_STATUS_FAILED; + + err = cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_POWERED, status); + + mgmt_pending_remove(cmd); + + return err; +} + int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable) { struct cmd_lookup match = { NULL, hdev }; --- linux-ppc-3.8.0.orig/net/bluetooth/sco.c +++ linux-ppc-3.8.0/net/bluetooth/sco.c @@ -361,6 +361,7 @@ sco_chan_del(sk, ECONNRESET); break; + case BT_CONNECT2: case BT_CONNECT: case BT_DISCONN: sco_chan_del(sk, ECONNRESET); @@ -666,6 +667,7 @@ test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) { hci_conn_accept(pi->conn->hcon, 0); sk->sk_state = BT_CONFIG; + msg->msg_namelen = 0; release_sock(sk); return 0; --- linux-ppc-3.8.0.orig/net/bluetooth/rfcomm/sock.c +++ linux-ppc-3.8.0/net/bluetooth/rfcomm/sock.c @@ -610,6 +610,7 @@ if (test_and_clear_bit(RFCOMM_DEFER_SETUP, &d->flags)) { rfcomm_dlc_accept(d); + msg->msg_namelen = 0; return 0; } --- linux-ppc-3.8.0.orig/net/rds/message.c +++ linux-ppc-3.8.0/net/rds/message.c @@ -197,6 +197,9 @@ { struct rds_message *rm; + if (extra_len > KMALLOC_MAX_SIZE - sizeof(struct rds_message)) + return NULL; + rm = kzalloc(sizeof(struct rds_message) + extra_len, gfp); if (!rm) goto out; --- linux-ppc-3.8.0.orig/net/rds/ib_send.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/net/tipc/socket.c +++ linux-ppc-3.8.0/net/tipc/socket.c @@ -806,6 +806,7 @@ if (addr) { addr->family = AF_TIPC; addr->addrtype = TIPC_ADDR_ID; + memset(&addr->addr, 0, sizeof(addr->addr)); addr->addr.id.ref = msg_origport(msg); addr->addr.id.node = msg_orignode(msg); addr->addr.name.domain = 0; /* could leave uninitialized */ @@ -920,6 +921,9 @@ goto exit; } + /* will be updated in set_orig_addr() if needed */ + m->msg_namelen = 0; + timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); restart: @@ -1029,6 +1033,9 @@ goto exit; } + /* will be updated in set_orig_addr() if needed */ + m->msg_namelen = 0; + target = sock_rcvlowat(sk, flags & MSG_WAITALL, buf_len); timeout = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); --- linux-ppc-3.8.0.orig/net/core/sock_diag.c +++ linux-ppc-3.8.0/net/core/sock_diag.c @@ -121,6 +121,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-ppc-3.8.0.orig/net/core/neighbour.c +++ linux-ppc-3.8.0/net/core/neighbour.c @@ -239,7 +239,7 @@ we must kill timers etc. and move it to safe state. */ - skb_queue_purge(&n->arp_queue); + __skb_queue_purge(&n->arp_queue); n->arp_queue_len_bytes = 0; n->output = neigh_blackhole; if (n->nud_state & NUD_VALID) @@ -302,7 +302,7 @@ if (!n) goto out_entries; - skb_queue_head_init(&n->arp_queue); + __skb_queue_head_init(&n->arp_queue); rwlock_init(&n->lock); seqlock_init(&n->ha_lock); n->updated = n->used = now; @@ -724,7 +724,9 @@ if (neigh_del_timer(neigh)) pr_warn("Impossible event\n"); - skb_queue_purge(&neigh->arp_queue); + write_lock_bh(&neigh->lock); + __skb_queue_purge(&neigh->arp_queue); + write_unlock_bh(&neigh->lock); neigh->arp_queue_len_bytes = 0; if (dev->netdev_ops->ndo_neigh_destroy) @@ -870,7 +872,7 @@ neigh->ops->error_report(neigh, skb); write_lock(&neigh->lock); } - skb_queue_purge(&neigh->arp_queue); + __skb_queue_purge(&neigh->arp_queue); neigh->arp_queue_len_bytes = 0; } @@ -1222,7 +1224,7 @@ write_lock_bh(&neigh->lock); } - skb_queue_purge(&neigh->arp_queue); + __skb_queue_purge(&neigh->arp_queue); neigh->arp_queue_len_bytes = 0; } out: --- linux-ppc-3.8.0.orig/net/core/dev_addr_lists.c +++ linux-ppc-3.8.0/net/core/dev_addr_lists.c @@ -38,7 +38,7 @@ ha->type = addr_type; ha->refcount = 1; ha->global_use = global; - ha->synced = false; + ha->synced = 0; list_add_tail_rcu(&ha->list, &list->list); list->count++; @@ -166,7 +166,7 @@ addr_len, ha->type); if (err) break; - ha->synced = true; + ha->synced++; ha->refcount++; } else if (ha->refcount == 1) { __hw_addr_del(to_list, ha->addr, addr_len, ha->type); @@ -187,7 +187,7 @@ if (ha->synced) { __hw_addr_del(to_list, ha->addr, addr_len, ha->type); - ha->synced = false; + ha->synced--; __hw_addr_del(from_list, ha->addr, addr_len, ha->type); } --- linux-ppc-3.8.0.orig/net/core/dst.c +++ linux-ppc-3.8.0/net/core/dst.c @@ -179,6 +179,7 @@ dst_init_metrics(dst, dst_default_metrics, true); dst->expires = 0UL; dst->path = dst; + dst->from = NULL; #ifdef CONFIG_XFRM dst->xfrm = NULL; #endif --- linux-ppc-3.8.0.orig/net/core/rtnetlink.c +++ linux-ppc-3.8.0/net/core/rtnetlink.c @@ -976,6 +976,7 @@ * report anything. */ ivi.spoofchk = -1; + memset(ivi.mac, 0, sizeof(ivi.mac)); if (dev->netdev_ops->ndo_get_vf_config(dev, i, &ivi)) break; vf_mac.vf = @@ -1067,7 +1068,7 @@ rcu_read_lock(); cb->seq = net->dev_base_seq; - if (nlmsg_parse(cb->nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, + if (nlmsg_parse(cb->nlh, sizeof(struct ifinfomsg), tb, IFLA_MAX, ifla_policy) >= 0) { if (tb[IFLA_EXT_MASK]) @@ -1923,7 +1924,7 @@ u32 ext_filter_mask = 0; u16 min_ifinfo_dump_size = 0; - if (nlmsg_parse(nlh, sizeof(struct rtgenmsg), tb, IFLA_MAX, + if (nlmsg_parse(nlh, sizeof(struct ifinfomsg), tb, IFLA_MAX, ifla_policy) >= 0) { if (tb[IFLA_EXT_MASK]) ext_filter_mask = nla_get_u32(tb[IFLA_EXT_MASK]); @@ -2538,7 +2539,7 @@ struct rtattr *attr = (void *)nlh + NLMSG_ALIGN(min_len); while (RTA_OK(attr, attrlen)) { - unsigned int flavor = attr->rta_type; + unsigned int flavor = attr->rta_type & NLA_TYPE_MASK; if (flavor) { if (flavor > rta_max[sz_idx]) return -EINVAL; --- linux-ppc-3.8.0.orig/net/core/flow.c +++ linux-ppc-3.8.0/net/core/flow.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -49,7 +48,6 @@ struct flow_flush_info { struct flow_cache *cache; atomic_t cpuleft; - struct completion completion; }; struct flow_cache { @@ -100,7 +98,7 @@ kmem_cache_free(flow_cachep, fle); } -static void flow_cache_gc_task(struct work_struct *work) +static void flow_cache_gc_task(void) { struct list_head gc_list; struct flow_cache_entry *fce, *n; @@ -113,7 +111,6 @@ list_for_each_entry_safe(fce, n, &gc_list, u.gc_list) flow_entry_kill(fce); } -static DECLARE_WORK(flow_cache_gc_work, flow_cache_gc_task); static void flow_cache_queue_garbage(struct flow_cache_percpu *fcp, int deleted, struct list_head *gc_list) @@ -123,7 +120,7 @@ spin_lock_bh(&flow_cache_gc_lock); list_splice_tail(gc_list, &flow_cache_gc_list); spin_unlock_bh(&flow_cache_gc_lock); - schedule_work(&flow_cache_gc_work); + flow_cache_gc_task(); } } @@ -320,8 +317,7 @@ flow_cache_queue_garbage(fcp, deleted, &gc_list); - if (atomic_dec_and_test(&info->cpuleft)) - complete(&info->completion); + atomic_dec(&info->cpuleft); } static void flow_cache_flush_per_cpu(void *data) @@ -329,7 +325,7 @@ struct flow_flush_info *info = data; struct tasklet_struct *tasklet; - tasklet = this_cpu_ptr(&info->cache->percpu->flush_tasklet); + tasklet = &this_cpu_ptr(info->cache->percpu)->flush_tasklet; tasklet->data = (unsigned long)info; tasklet_schedule(tasklet); } @@ -337,22 +333,23 @@ void flow_cache_flush(void) { struct flow_flush_info info; - static DEFINE_MUTEX(flow_flush_sem); + static DEFINE_SPINLOCK(flow_flush_lock); /* Don't want cpus going down or up during this. */ get_online_cpus(); - mutex_lock(&flow_flush_sem); + spin_lock_bh(&flow_flush_lock); info.cache = &flow_cache_global; atomic_set(&info.cpuleft, num_online_cpus()); - init_completion(&info.completion); local_bh_disable(); smp_call_function(flow_cache_flush_per_cpu, &info, 0); flow_cache_flush_tasklet((unsigned long)&info); local_bh_enable(); - wait_for_completion(&info.completion); - mutex_unlock(&flow_flush_sem); + while (atomic_read(&info.cpuleft) != 0) + cpu_relax(); + + spin_unlock_bh(&flow_flush_lock); put_online_cpus(); } --- linux-ppc-3.8.0.orig/net/core/dev.c +++ linux-ppc-3.8.0/net/core/dev.c @@ -1591,7 +1591,6 @@ return; } #endif - WARN_ON(in_interrupt()); static_key_slow_inc(&netstamp_needed); } EXPORT_SYMBOL(net_enable_timestamp); @@ -1738,6 +1737,7 @@ skb->mark = 0; secpath_reset(skb); nf_reset(skb); + nf_reset_trace(skb); return netif_rx(skb); } EXPORT_SYMBOL_GPL(dev_forward_skb); @@ -2018,6 +2018,9 @@ struct net_device *dev = skb->dev; const char *driver = ""; + if (!net_ratelimit()) + return; + if (dev && dev->dev.parent) driver = dev_driver_string(dev->dev.parent); @@ -2287,7 +2290,7 @@ * 2. skb is fragmented and the device does not support SG. */ static inline int skb_needs_linearize(struct sk_buff *skb, - int features) + netdev_features_t features) { return skb_is_nonlinear(skb) && ((skb_has_frag_list(skb) && @@ -2670,6 +2673,12 @@ skb_update_prio(skb); + if (dev->features & NETIF_F_HW_QDISC) { + txq = netdev_pick_tx(dev, skb); + rc = dev_hard_start_xmit(skb, dev, txq); + goto out; + } + txq = netdev_pick_tx(dev, skb); q = rcu_dereference_bh(txq->qdisc); @@ -3277,6 +3286,7 @@ if (dev->rx_handler) return -EBUSY; + /* Note: rx_handler_data must be set before rx_handler */ rcu_assign_pointer(dev->rx_handler_data, rx_handler_data); rcu_assign_pointer(dev->rx_handler, rx_handler); @@ -3297,6 +3307,11 @@ ASSERT_RTNL(); RCU_INIT_POINTER(dev->rx_handler, NULL); + /* a reader seeing a non NULL rx_handler in a rcu_read_lock() + * section has a guarantee to see a non NULL rx_handler_data + * as well. + */ + synchronize_net(); RCU_INIT_POINTER(dev->rx_handler_data, NULL); } EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister); @@ -3419,6 +3434,7 @@ } switch (rx_handler(&skb)) { case RX_HANDLER_CONSUMED: + ret = NET_RX_SUCCESS; goto unlock; case RX_HANDLER_ANOTHER: goto another_round; --- linux-ppc-3.8.0.orig/net/core/sock.c +++ linux-ppc-3.8.0/net/core/sock.c @@ -208,7 +208,7 @@ "sk_lock-AF_TIPC" , "sk_lock-AF_BLUETOOTH", "sk_lock-IUCV" , "sk_lock-AF_RXRPC" , "sk_lock-AF_ISDN" , "sk_lock-AF_PHONET" , "sk_lock-AF_IEEE802154", "sk_lock-AF_CAIF" , "sk_lock-AF_ALG" , - "sk_lock-AF_NFC" , "sk_lock-AF_MAX" + "sk_lock-AF_NFC" , "sk_lock-AF_VSOCK" , "sk_lock-AF_MAX" }; static const char *const af_family_slock_key_strings[AF_MAX+1] = { "slock-AF_UNSPEC", "slock-AF_UNIX" , "slock-AF_INET" , @@ -224,7 +224,7 @@ "slock-AF_TIPC" , "slock-AF_BLUETOOTH", "slock-AF_IUCV" , "slock-AF_RXRPC" , "slock-AF_ISDN" , "slock-AF_PHONET" , "slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG" , - "slock-AF_NFC" , "slock-AF_MAX" + "slock-AF_NFC" , "slock-AF_VSOCK" ,"slock-AF_MAX" }; static const char *const af_family_clock_key_strings[AF_MAX+1] = { "clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" , @@ -240,7 +240,7 @@ "clock-AF_TIPC" , "clock-AF_BLUETOOTH", "clock-AF_IUCV" , "clock-AF_RXRPC" , "clock-AF_ISDN" , "clock-AF_PHONET" , "clock-AF_IEEE802154", "clock-AF_CAIF" , "clock-AF_ALG" , - "clock-AF_NFC" , "clock-AF_MAX" + "clock-AF_NFC" , "clock-AF_VSOCK" , "clock-AF_MAX" }; /* @@ -1189,18 +1189,6 @@ #endif } -/* - * caches using SLAB_DESTROY_BY_RCU should let .next pointer from nulls nodes - * un-modified. Special care is taken when initializing object to zero. - */ -static inline void sk_prot_clear_nulls(struct sock *sk, int size) -{ - if (offsetof(struct sock, sk_node.next) != 0) - memset(sk, 0, offsetof(struct sock, sk_node.next)); - memset(&sk->sk_node.pprev, 0, - size - offsetof(struct sock, sk_node.pprev)); -} - void sk_prot_clear_portaddr_nulls(struct sock *sk, int size) { unsigned long nulls1, nulls2; --- linux-ppc-3.8.0.orig/net/core/scm.c +++ linux-ppc-3.8.0/net/core/scm.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -52,7 +53,8 @@ if (!uid_valid(uid) || !gid_valid(gid)) return -EINVAL; - if ((creds->pid == task_tgid_vnr(current) || nsown_capable(CAP_SYS_ADMIN)) && + if ((creds->pid == task_tgid_vnr(current) || + ns_capable(current->nsproxy->pid_ns->user_ns, CAP_SYS_ADMIN)) && ((uid_eq(uid, cred->uid) || uid_eq(uid, cred->euid) || uid_eq(uid, cred->suid)) || nsown_capable(CAP_SETUID)) && ((gid_eq(gid, cred->gid) || gid_eq(gid, cred->egid) || --- linux-ppc-3.8.0.orig/net/core/ethtool.c +++ linux-ppc-3.8.0/net/core/ethtool.c @@ -1418,7 +1418,7 @@ void __user *useraddr = ifr->ifr_data; u32 ethcmd; int rc; - u32 old_features; + netdev_features_t old_features; if (!dev || !netif_device_present(dev)) return -ENODEV; --- linux-ppc-3.8.0.orig/net/sched/sch_fq_codel.c +++ linux-ppc-3.8.0/net/sched/sch_fq_codel.c @@ -195,7 +195,7 @@ flow->deficit = q->quantum; flow->dropped = 0; } - if (++sch->q.qlen < sch->limit) + if (++sch->q.qlen <= sch->limit) return NET_XMIT_SUCCESS; q->drop_overlimit++; --- linux-ppc-3.8.0.orig/net/sched/sch_atm.c +++ linux-ppc-3.8.0/net/sched/sch_atm.c @@ -605,6 +605,7 @@ struct sockaddr_atmpvc pvc; int state; + memset(&pvc, 0, sizeof(pvc)); pvc.sap_family = AF_ATMPVC; pvc.sap_addr.itf = flow->vcc->dev ? flow->vcc->dev->number : -1; pvc.sap_addr.vpi = flow->vcc->vpi; --- linux-ppc-3.8.0.orig/net/sched/sch_cbq.c +++ linux-ppc-3.8.0/net/sched/sch_cbq.c @@ -962,8 +962,11 @@ cbq_update(q); if ((incr -= incr2) < 0) incr = 0; + q->now += incr; + } else { + if (now > q->now) + q->now = now; } - q->now += incr; q->now_rt = now; for (;;) { @@ -1465,6 +1468,7 @@ unsigned char *b = skb_tail_pointer(skb); struct tc_cbq_wrropt opt; + memset(&opt, 0, sizeof(opt)); opt.flags = 0; opt.allot = cl->allot; opt.priority = cl->priority + 1; --- linux-ppc-3.8.0.orig/net/sched/act_ipt.c +++ linux-ppc-3.8.0/net/sched/act_ipt.c @@ -8,7 +8,7 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * - * Copyright: Jamal Hadi Salim (2002-4) + * Copyright: Jamal Hadi Salim (2002-13) */ #include @@ -305,17 +305,44 @@ .walk = tcf_generic_walker }; -MODULE_AUTHOR("Jamal Hadi Salim(2002-4)"); +static struct tc_action_ops act_xt_ops = { + .kind = "xt", + .hinfo = &ipt_hash_info, + .type = TCA_ACT_IPT, + .capab = TCA_CAP_NONE, + .owner = THIS_MODULE, + .act = tcf_ipt, + .dump = tcf_ipt_dump, + .cleanup = tcf_ipt_cleanup, + .lookup = tcf_hash_search, + .init = tcf_ipt_init, + .walk = tcf_generic_walker +}; + +MODULE_AUTHOR("Jamal Hadi Salim(2002-13)"); MODULE_DESCRIPTION("Iptables target actions"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("act_xt"); static int __init ipt_init_module(void) { - return tcf_register_action(&act_ipt_ops); + int ret1, ret2; + ret1 = tcf_register_action(&act_xt_ops); + if (ret1 < 0) + printk("Failed to load xt action\n"); + ret2 = tcf_register_action(&act_ipt_ops); + if (ret2 < 0) + printk("Failed to load ipt action\n"); + + if (ret1 < 0 && ret2 < 0) + return ret1; + else + return 0; } static void __exit ipt_cleanup_module(void) { + tcf_unregister_action(&act_xt_ops); tcf_unregister_action(&act_ipt_ops); } --- linux-ppc-3.8.0.orig/net/mac80211/ieee80211_i.h +++ linux-ppc-3.8.0/net/mac80211/ieee80211_i.h @@ -346,6 +346,7 @@ struct ieee80211_channel *chan; bool started, abort, hw_begun, notified; + bool to_be_freed; unsigned long hw_start_time; @@ -1363,7 +1364,7 @@ void ieee80211_roc_setup(struct ieee80211_local *local); void ieee80211_start_next_roc(struct ieee80211_local *local); void ieee80211_roc_purge(struct ieee80211_sub_if_data *sdata); -void ieee80211_roc_notify_destroy(struct ieee80211_roc_work *roc); +void ieee80211_roc_notify_destroy(struct ieee80211_roc_work *roc, bool free); void ieee80211_sw_roc_work(struct work_struct *work); void ieee80211_handle_roc_started(struct ieee80211_roc_work *roc); --- linux-ppc-3.8.0.orig/net/mac80211/offchannel.c +++ linux-ppc-3.8.0/net/mac80211/offchannel.c @@ -299,10 +299,13 @@ } } -void ieee80211_roc_notify_destroy(struct ieee80211_roc_work *roc) +void ieee80211_roc_notify_destroy(struct ieee80211_roc_work *roc, bool free) { struct ieee80211_roc_work *dep, *tmp; + if (WARN_ON(roc->to_be_freed)) + return; + /* was never transmitted */ if (roc->frame) { cfg80211_mgmt_tx_status(&roc->sdata->wdev, @@ -318,9 +321,12 @@ GFP_KERNEL); list_for_each_entry_safe(dep, tmp, &roc->dependents, list) - ieee80211_roc_notify_destroy(dep); + ieee80211_roc_notify_destroy(dep, true); - kfree(roc); + if (free) + kfree(roc); + else + roc->to_be_freed = true; } void ieee80211_sw_roc_work(struct work_struct *work) @@ -333,6 +339,9 @@ mutex_lock(&local->mtx); + if (roc->to_be_freed) + goto out_unlock; + if (roc->abort) goto finish; @@ -372,7 +381,7 @@ finish: list_del(&roc->list); started = roc->started; - ieee80211_roc_notify_destroy(roc); + ieee80211_roc_notify_destroy(roc, !roc->abort); if (started) { drv_flush(local, false); @@ -412,7 +421,7 @@ list_del(&roc->list); - ieee80211_roc_notify_destroy(roc); + ieee80211_roc_notify_destroy(roc, true); /* if there's another roc, start it now */ ieee80211_start_next_roc(local); @@ -462,12 +471,14 @@ list_for_each_entry_safe(roc, tmp, &tmp_list, list) { if (local->ops->remain_on_channel) { list_del(&roc->list); - ieee80211_roc_notify_destroy(roc); + ieee80211_roc_notify_destroy(roc, true); } else { ieee80211_queue_delayed_work(&local->hw, &roc->work, 0); /* work will clean up etc */ flush_delayed_work(&roc->work); + WARN_ON(!roc->to_be_freed); + kfree(roc); } } --- linux-ppc-3.8.0.orig/net/mac80211/pm.c +++ linux-ppc-3.8.0/net/mac80211/pm.c @@ -52,8 +52,8 @@ ieee80211_stop_queues_by_reason(hw, IEEE80211_QUEUE_STOP_REASON_SUSPEND); - /* flush out all packets */ - synchronize_net(); + /* flush out all packets and station cleanup call_rcu()s */ + rcu_barrier(); drv_flush(local, false); @@ -92,7 +92,7 @@ return err; } else if (err > 0) { WARN_ON(err != 1); - local->wowlan = false; + return err; } else { list_for_each_entry(sdata, &local->interfaces, list) { cancel_work_sync(&sdata->work); --- linux-ppc-3.8.0.orig/net/mac80211/rx.c +++ linux-ppc-3.8.0/net/mac80211/rx.c @@ -935,8 +935,14 @@ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); - /* Drop duplicate 802.11 retransmissions (IEEE 802.11 Chap. 9.2.9) */ - if (rx->sta && !is_multicast_ether_addr(hdr->addr1)) { + /* + * Drop duplicate 802.11 retransmissions + * (IEEE 802.11-2012: 9.3.2.10 "Duplicate detection and recovery") + */ + if (rx->skb->len >= 24 && rx->sta && + !ieee80211_is_ctl(hdr->frame_control) && + !ieee80211_is_qos_nullfunc(hdr->frame_control) && + !is_multicast_ether_addr(hdr->addr1)) { if (unlikely(ieee80211_has_retry(hdr->frame_control) && rx->sta->last_seq_ctrl[rx->seqno_idx] == hdr->seq_ctrl)) { @@ -2950,6 +2956,9 @@ * and location updates. Note that mac80211 * itself never looks at these frames. */ + if (!multicast && + !ether_addr_equal(sdata->vif.addr, hdr->addr1)) + return 0; if (ieee80211_is_public_action(hdr, skb->len)) return 1; if (!ieee80211_is_beacon(hdr->frame_control)) --- linux-ppc-3.8.0.orig/net/mac80211/iface.c +++ linux-ppc-3.8.0/net/mac80211/iface.c @@ -1657,6 +1657,15 @@ ASSERT_RTNL(); + /* + * Close all AP_VLAN interfaces first, as otherwise they + * might be closed while the AP interface they belong to + * is closed, causing unregister_netdevice_many() to crash. + */ + list_for_each_entry(sdata, &local->interfaces, list) + if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) + dev_close(sdata->dev); + mutex_lock(&local->iflist_mtx); list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) { list_del(&sdata->list); --- linux-ppc-3.8.0.orig/net/mac80211/sta_info.c +++ linux-ppc-3.8.0/net/mac80211/sta_info.c @@ -756,6 +756,7 @@ struct ieee80211_local *local; struct ieee80211_sub_if_data *sdata; int ret, i; + bool have_key = false; might_sleep(); @@ -783,12 +784,19 @@ list_del_rcu(&sta->list); mutex_lock(&local->key_mtx); - for (i = 0; i < NUM_DEFAULT_KEYS; i++) + for (i = 0; i < NUM_DEFAULT_KEYS; i++) { __ieee80211_key_free(key_mtx_dereference(local, sta->gtk[i])); - if (sta->ptk) + have_key = true; + } + if (sta->ptk) { __ieee80211_key_free(key_mtx_dereference(local, sta->ptk)); + have_key = true; + } mutex_unlock(&local->key_mtx); + if (!have_key) + synchronize_net(); + sta->dead = true; local->num_sta--; --- linux-ppc-3.8.0.orig/net/mac80211/mlme.c +++ linux-ppc-3.8.0/net/mac80211/mlme.c @@ -1812,6 +1812,8 @@ WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY, transmit_frame, frame_buf); ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED; + ieee80211_wake_queues_by_reason(&sdata->local->hw, + IEEE80211_QUEUE_STOP_REASON_CSA); mutex_unlock(&ifmgd->mtx); /* @@ -1856,8 +1858,6 @@ container_of(work, struct ieee80211_sub_if_data, u.mgd.csa_connection_drop_work); - ieee80211_wake_queues_by_reason(&sdata->local->hw, - IEEE80211_QUEUE_STOP_REASON_CSA); __ieee80211_disconnect(sdata, true); } @@ -3401,12 +3401,16 @@ ret = 0; out: + /* don't print the message below for VHT mismatch if VHT is disabled */ + if (ret & IEEE80211_STA_DISABLE_VHT) + vht_chandef = *chandef; + while (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, IEEE80211_CHAN_DISABLED)) { if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) { ret = IEEE80211_STA_DISABLE_HT | IEEE80211_STA_DISABLE_VHT; - goto out; + break; } ret |= chandef_downgrade(chandef); @@ -3719,8 +3723,16 @@ /* prep auth_data so we don't go into idle on disassoc */ ifmgd->auth_data = auth_data; - if (ifmgd->associated) - ieee80211_set_disassoc(sdata, 0, 0, false, NULL); + if (ifmgd->associated) { + u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN]; + + ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, + WLAN_REASON_UNSPECIFIED, + false, frame_buf); + + __cfg80211_send_deauth(sdata->dev, frame_buf, + sizeof(frame_buf)); + } sdata_info(sdata, "authenticate with %pM\n", req->bss->bssid); @@ -3779,8 +3791,16 @@ mutex_lock(&ifmgd->mtx); - if (ifmgd->associated) - ieee80211_set_disassoc(sdata, 0, 0, false, NULL); + if (ifmgd->associated) { + u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN]; + + ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, + WLAN_REASON_UNSPECIFIED, + false, frame_buf); + + __cfg80211_send_deauth(sdata->dev, frame_buf, + sizeof(frame_buf)); + } if (ifmgd->auth_data && !ifmgd->auth_data->done) { err = -EBUSY; @@ -4072,6 +4092,17 @@ { struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; + /* + * Make sure some work items will not run after this, + * they will not do anything but might not have been + * cancelled when disconnecting. + */ + cancel_work_sync(&ifmgd->monitor_work); + cancel_work_sync(&ifmgd->beacon_connection_loss_work); + cancel_work_sync(&ifmgd->request_smps_work); + cancel_work_sync(&ifmgd->csa_connection_drop_work); + cancel_work_sync(&ifmgd->chswitch_work); + mutex_lock(&ifmgd->mtx); if (ifmgd->assoc_data) ieee80211_destroy_assoc_data(sdata, false); --- linux-ppc-3.8.0.orig/net/mac80211/cfg.c +++ linux-ppc-3.8.0/net/mac80211/cfg.c @@ -638,6 +638,8 @@ if (sta->sdata->dev != dev) continue; + sinfo.filled = 0; + sta_set_sinfo(sta, &sinfo); i = 0; ADD_STA_STATS(sta); } @@ -2499,7 +2501,7 @@ list_del(&dep->list); mutex_unlock(&local->mtx); - ieee80211_roc_notify_destroy(dep); + ieee80211_roc_notify_destroy(dep, true); return 0; } @@ -2539,7 +2541,7 @@ ieee80211_start_next_roc(local); mutex_unlock(&local->mtx); - ieee80211_roc_notify_destroy(found); + ieee80211_roc_notify_destroy(found, true); } else { /* work may be pending so use it all the time */ found->abort = true; @@ -2549,6 +2551,8 @@ /* work will clean up etc */ flush_delayed_work(&found->work); + WARN_ON(!found->to_be_freed); + kfree(found); } return 0; --- linux-ppc-3.8.0.orig/net/can/gw.c +++ linux-ppc-3.8.0/net/can/gw.c @@ -436,7 +436,7 @@ if (gwj->src.dev == dev || gwj->dst.dev == dev) { hlist_del(&gwj->list); cgw_unregister_filter(gwj); - kfree(gwj); + kmem_cache_free(cgw_cache, gwj); } } } @@ -829,7 +829,7 @@ hlist_for_each_entry_safe(gwj, n, nx, &cgw_list, list) { hlist_del(&gwj->list); cgw_unregister_filter(gwj); - kfree(gwj); + kmem_cache_free(cgw_cache, gwj); } } @@ -885,7 +885,7 @@ hlist_del(&gwj->list); cgw_unregister_filter(gwj); - kfree(gwj); + kmem_cache_free(cgw_cache, gwj); err = 0; break; } --- linux-ppc-3.8.0.orig/net/unix/af_unix.c +++ linux-ppc-3.8.0/net/unix/af_unix.c @@ -384,7 +384,7 @@ #endif } -static int unix_release_sock(struct sock *sk, int embrion) +static void unix_release_sock(struct sock *sk, int embrion) { struct unix_sock *u = unix_sk(sk); struct path path; @@ -453,8 +453,6 @@ if (unix_tot_inflight) unix_gc(); /* Garbage collect fds */ - - return 0; } static void init_peercred(struct sock *sk) @@ -701,9 +699,10 @@ if (!sk) return 0; + unix_release_sock(sk, 0); sock->sk = NULL; - return unix_release_sock(sk, 0); + return 0; } static int unix_autobind(struct socket *sock) @@ -1996,7 +1995,7 @@ if ((UNIXCB(skb).pid != siocb->scm->pid) || (UNIXCB(skb).cred != siocb->scm->cred)) break; - } else { + } else if (test_bit(SOCK_PASSCRED, &sock->flags)) { /* Copy credentials */ scm_set_cred(siocb->scm, UNIXCB(skb).pid, UNIXCB(skb).cred); check_creds = 1; --- linux-ppc-3.8.0.orig/net/key/af_key.c +++ linux-ppc-3.8.0/net/key/af_key.c @@ -1705,6 +1705,7 @@ hdr->sadb_msg_version = PF_KEY_V2; hdr->sadb_msg_errno = (uint8_t) 0; hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); + hdr->sadb_msg_reserved = 0; pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net); @@ -2075,6 +2076,7 @@ pol->sadb_x_policy_type = IPSEC_POLICY_NONE; } pol->sadb_x_policy_dir = dir+1; + pol->sadb_x_policy_reserved = 0; pol->sadb_x_policy_id = xp->index; pol->sadb_x_policy_priority = xp->priority; @@ -2689,6 +2691,7 @@ hdr->sadb_msg_version = PF_KEY_V2; hdr->sadb_msg_errno = (uint8_t) 0; hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); + hdr->sadb_msg_reserved = 0; pfkey_broadcast(skb_out, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net); return 0; @@ -3109,7 +3112,9 @@ pol->sadb_x_policy_exttype = SADB_X_EXT_POLICY; pol->sadb_x_policy_type = IPSEC_POLICY_IPSEC; pol->sadb_x_policy_dir = XFRM_POLICY_OUT + 1; + pol->sadb_x_policy_reserved = 0; pol->sadb_x_policy_id = xp->index; + pol->sadb_x_policy_priority = xp->priority; /* Set sadb_comb's. */ if (x->id.proto == IPPROTO_AH) @@ -3497,6 +3502,7 @@ pol->sadb_x_policy_exttype = SADB_X_EXT_POLICY; pol->sadb_x_policy_type = IPSEC_POLICY_IPSEC; pol->sadb_x_policy_dir = dir + 1; + pol->sadb_x_policy_reserved = 0; pol->sadb_x_policy_id = 0; pol->sadb_x_policy_priority = 0; --- linux-ppc-3.8.0.orig/net/ipv4/af_inet.c +++ linux-ppc-3.8.0/net/ipv4/af_inet.c @@ -248,8 +248,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) { @@ -259,7 +263,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); @@ -1590,7 +1595,7 @@ static const struct net_protocol icmp_protocol = { .handler = icmp_rcv, - .err_handler = ping_err, + .err_handler = icmp_err, .no_policy = 1, .netns_ok = 1, }; --- linux-ppc-3.8.0.orig/net/ipv4/tcp_minisocks.c +++ linux-ppc-3.8.0/net/ipv4/tcp_minisocks.c @@ -581,8 +581,13 @@ * * Note that even if there is new data in the SYN packet * they will be thrown away too. + * + * Reset timer after retransmitting SYNACK, similar to + * the idea of fast retransmit in recovery. */ - inet_rtx_syn_ack(sk, req); + if (!inet_rtx_syn_ack(sk, req)) + req->expires = min(TCP_TIMEOUT_INIT << req->num_timeout, + TCP_RTO_MAX) + jiffies; return NULL; } --- linux-ppc-3.8.0.orig/net/ipv4/ip_fragment.c +++ linux-ppc-3.8.0/net/ipv4/ip_fragment.c @@ -255,8 +255,7 @@ if (!head->dev) goto out_rcu_unlock; - /* skb dst is stale, drop it, and perform route lookup again */ - skb_dst_drop(head); + /* skb has no dst, perform route lookup again */ iph = ip_hdr(head); err = ip_route_input_noref(head, iph->daddr, iph->saddr, iph->tos, head->dev); @@ -299,14 +298,11 @@ hash = ipqhashfn(iph->id, iph->saddr, iph->daddr, iph->protocol); q = inet_frag_find(&net->ipv4.frags, &ip4_frags, &arg, hash); - if (q == NULL) - goto out_nomem; - + if (IS_ERR_OR_NULL(q)) { + inet_frag_maybe_warn_overflow(q, pr_fmt()); + return NULL; + } return container_of(q, struct ipq, q); - -out_nomem: - LIMIT_NETDEBUG(KERN_ERR pr_fmt("ip_frag_create: no memory left !\n")); - return NULL; } /* Is the fragment too far ahead to be part of ipq? */ @@ -528,8 +524,16 @@ qp->q.max_size = skb->len + ihl; if (qp->q.last_in == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) && - qp->q.meat == qp->q.len) - return ip_frag_reasm(qp, prev, dev); + qp->q.meat == qp->q.len) { + unsigned long orefdst = skb->_skb_refdst; + + skb->_skb_refdst = 0UL; + err = ip_frag_reasm(qp, prev, dev); + skb->_skb_refdst = orefdst; + return err; + } + + skb_dst_drop(skb); write_lock(&ip4_frags.lock); list_move_tail(&qp->q.lru_list, &qp->q.net->lru_list); --- linux-ppc-3.8.0.orig/net/ipv4/tcp_output.c +++ linux-ppc-3.8.0/net/ipv4/tcp_output.c @@ -1032,11 +1032,13 @@ &md5); tcp_header_size = tcp_options_size + sizeof(struct tcphdr); - if (tcp_packets_in_flight(tp) == 0) { + if (tcp_packets_in_flight(tp) == 0) tcp_ca_event(sk, CA_EVENT_TX_START); - skb->ooo_okay = 1; - } else - skb->ooo_okay = 0; + + /* if no packet is in qdisc/device queue, then allow XPS to select + * another queue. + */ + skb->ooo_okay = sk_wmem_alloc_get(sk) == 0; skb_push(skb, tcp_header_size); skb_reset_transport_header(skb); @@ -1298,7 +1300,6 @@ eat = min_t(int, len, skb_headlen(skb)); if (eat) { __skb_pull(skb, eat); - skb->avail_size -= eat; len -= eat; if (!len) return; @@ -1351,8 +1352,8 @@ return 0; } -/* Calculate MSS. Not accounting for SACKs here. */ -int tcp_mtu_to_mss(struct sock *sk, int pmtu) +/* Calculate MSS not accounting any TCP options. */ +static inline int __tcp_mtu_to_mss(struct sock *sk, int pmtu) { const struct tcp_sock *tp = tcp_sk(sk); const struct inet_connection_sock *icsk = inet_csk(sk); @@ -1381,13 +1382,17 @@ /* Then reserve room for full set of TCP options and 8 bytes of data */ if (mss_now < 48) mss_now = 48; - - /* Now subtract TCP options size, not including SACKs */ - mss_now -= tp->tcp_header_len - sizeof(struct tcphdr); - return mss_now; } +/* Calculate MSS. Not accounting for SACKs here. */ +int tcp_mtu_to_mss(struct sock *sk, int pmtu) +{ + /* Subtract TCP options size, not including SACKs */ + return __tcp_mtu_to_mss(sk, pmtu) - + (tcp_sk(sk)->tcp_header_len - sizeof(struct tcphdr)); +} + /* Inverse of above */ int tcp_mss_to_mtu(struct sock *sk, int mss) { @@ -1806,8 +1811,11 @@ goto send_now; } - /* Ok, it looks like it is advisable to defer. */ - tp->tso_deferred = 1 | (jiffies << 1); + /* Ok, it looks like it is advisable to defer. + * Do not rearm the timer if already set to not break TCP ACK clocking. + */ + if (!tp->tso_deferred) + tp->tso_deferred = 1 | (jiffies << 1); return true; @@ -2382,8 +2390,12 @@ */ TCP_SKB_CB(skb)->when = tcp_time_stamp; - /* make sure skb->data is aligned on arches that require it */ - if (unlikely(NET_IP_ALIGN && ((unsigned long)skb->data & 3))) { + /* make sure skb->data is aligned on arches that require it + * and check if ack-trimming & collapsing extended the headroom + * beyond what csum_start can cover. + */ + if (unlikely((NET_IP_ALIGN && ((unsigned long)skb->data & 3)) || + skb_headroom(skb) >= 0xFFFF)) { struct sk_buff *nskb = __pskb_copy(skb, MAX_TCP_HEADER, GFP_ATOMIC); return nskb ? tcp_transmit_skb(sk, nskb, 0, GFP_ATOMIC) : @@ -2930,7 +2942,7 @@ */ if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < tp->rx_opt.mss_clamp) tp->rx_opt.mss_clamp = tp->rx_opt.user_mss; - space = tcp_mtu_to_mss(sk, inet_csk(sk)->icsk_pmtu_cookie) - + space = __tcp_mtu_to_mss(sk, inet_csk(sk)->icsk_pmtu_cookie) - MAX_TCP_OPTION_SPACE; syn_data = skb_copy_expand(syn, skb_headroom(syn), space, --- linux-ppc-3.8.0.orig/net/ipv4/ip_input.c +++ linux-ppc-3.8.0/net/ipv4/ip_input.c @@ -190,10 +190,7 @@ { struct net *net = dev_net(skb->dev); - __skb_pull(skb, ip_hdrlen(skb)); - - /* Point into the IP datagram, just past the header. */ - skb_reset_transport_header(skb); + __skb_pull(skb, skb_network_header_len(skb)); rcu_read_lock(); { @@ -442,6 +439,8 @@ goto drop; } + skb->transport_header = skb->network_header + iph->ihl*4; + /* Remove any debris in the socket control block */ memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); --- linux-ppc-3.8.0.orig/net/ipv4/icmp.c +++ linux-ppc-3.8.0/net/ipv4/icmp.c @@ -934,6 +934,29 @@ goto drop; } +void icmp_err(struct sk_buff *skb, u32 info) +{ + struct iphdr *iph = (struct iphdr *)skb->data; + struct icmphdr *icmph = (struct icmphdr *)(skb->data+(iph->ihl<<2)); + int type = icmp_hdr(skb)->type; + int code = icmp_hdr(skb)->code; + struct net *net = dev_net(skb->dev); + + /* + * Use ping_err to handle all icmp errors except those + * triggered by ICMP_ECHOREPLY which sent from kernel. + */ + if (icmph->type != ICMP_ECHOREPLY) { + ping_err(skb, info); + return; + } + + if (type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED) + ipv4_update_pmtu(skb, net, info, 0, 0, IPPROTO_ICMP, 0); + else if (type == ICMP_REDIRECT) + ipv4_redirect(skb, net, 0, 0, IPPROTO_ICMP, 0); +} + /* * This table is the definition of how we handle ICMP. */ --- linux-ppc-3.8.0.orig/net/ipv4/ip_options.c +++ linux-ppc-3.8.0/net/ipv4/ip_options.c @@ -370,7 +370,6 @@ } switch (optptr[3]&0xF) { case IPOPT_TS_TSONLY: - opt->ts = optptr - iph; if (skb) timeptr = &optptr[optptr[2]-1]; opt->ts_needtime = 1; @@ -381,7 +380,6 @@ pp_ptr = optptr + 2; goto error; } - opt->ts = optptr - iph; if (rt) { spec_dst_fill(&spec_dst, skb); memcpy(&optptr[optptr[2]-1], &spec_dst, 4); @@ -396,7 +394,6 @@ pp_ptr = optptr + 2; goto error; } - opt->ts = optptr - iph; { __be32 addr; memcpy(&addr, &optptr[optptr[2]-1], 4); @@ -429,12 +426,12 @@ pp_ptr = optptr + 3; goto error; } - opt->ts = optptr - iph; if (skb) { optptr[3] = (optptr[3]&0xF)|((overflow+1)<<4); opt->is_changed = 1; } } + opt->ts = optptr - iph; break; case IPOPT_RA: if (optlen < 4) { --- linux-ppc-3.8.0.orig/net/ipv4/tcp_input.c +++ linux-ppc-3.8.0/net/ipv4/tcp_input.c @@ -116,6 +116,7 @@ #define FLAG_DSACKING_ACK 0x800 /* SACK blocks contained D-SACK info */ #define FLAG_NONHEAD_RETRANS_ACKED 0x1000 /* Non-head rexmitted data was ACKed */ #define FLAG_SACK_RENEGING 0x2000 /* snd_una advanced to a sacked seq */ +#define FLAG_UPDATE_TS_RECENT 0x4000 /* tcp_replace_ts_recent() */ #define FLAG_ACKED (FLAG_DATA_ACKED|FLAG_SYN_ACKED) #define FLAG_NOT_DUP (FLAG_DATA|FLAG_WIN_UPDATE|FLAG_ACKED) @@ -2064,11 +2065,8 @@ if (tcp_is_reno(tp)) tcp_reset_reno_sack(tp); - if (!how) { - /* Push undo marker, if it was plain RTO and nothing - * was retransmitted. */ - tp->undo_marker = tp->snd_una; - } else { + tp->undo_marker = tp->snd_una; + if (how) { tp->sacked_out = 0; tp->fackets_out = 0; } @@ -2894,8 +2892,8 @@ * tcp_xmit_retransmit_queue(). */ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, - int prior_sacked, bool is_dupack, - int flag) + int prior_sacked, int prior_packets, + bool is_dupack, int flag) { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); @@ -2961,7 +2959,8 @@ 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; + newly_acked_sacked = prior_packets - tp->packets_out + + tp->sacked_out - prior_sacked; break; case TCP_CA_Loss: if (flag & FLAG_DATA_ACKED) @@ -2983,7 +2982,8 @@ if (is_dupack) tcp_add_reno_sack(sk); } - newly_acked_sacked = pkts_acked + tp->sacked_out - prior_sacked; + newly_acked_sacked = prior_packets - tp->packets_out + + tp->sacked_out - prior_sacked; if (icsk->icsk_ca_state <= TCP_CA_Disorder) tcp_try_undo_dsack(sk); @@ -3575,6 +3575,27 @@ } } +static void tcp_store_ts_recent(struct tcp_sock *tp) +{ + tp->rx_opt.ts_recent = tp->rx_opt.rcv_tsval; + tp->rx_opt.ts_recent_stamp = get_seconds(); +} + +static void tcp_replace_ts_recent(struct tcp_sock *tp, u32 seq) +{ + if (tp->rx_opt.saw_tstamp && !after(seq, tp->rcv_wup)) { + /* PAWS bug workaround wrt. ACK frames, the PAWS discard + * extra check below makes sure this can only happen + * for pure ACK frames. -DaveM + * + * Not only, also it occurs for expired timestamps. + */ + + if (tcp_paws_check(&tp->rx_opt, 0)) + tcp_store_ts_recent(tp); + } +} + /* This routine deals with incoming acks, but not outgoing ones. */ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) { @@ -3586,9 +3607,10 @@ bool is_dupack = false; u32 prior_in_flight; u32 prior_fackets; - int prior_packets; + int prior_packets = tp->packets_out; int prior_sacked = tp->sacked_out; int pkts_acked = 0; + int previous_packets_out = 0; bool frto_cwnd = false; /* If the ack is older than previous acks @@ -3627,6 +3649,12 @@ prior_fackets = tp->fackets_out; prior_in_flight = tcp_packets_in_flight(tp); + /* ts_recent update must be made after we are sure that the packet + * is in window. + */ + if (flag & FLAG_UPDATE_TS_RECENT) + tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); + if (!(flag & FLAG_SLOWPATH) && after(ack, prior_snd_una)) { /* Window is constant, pure forward advance. * No more checks are required. @@ -3662,14 +3690,14 @@ sk->sk_err_soft = 0; icsk->icsk_probes_out = 0; tp->rcv_tstamp = tcp_time_stamp; - prior_packets = tp->packets_out; if (!prior_packets) goto no_queue; /* See if we can take anything off of the retransmit queue. */ + previous_packets_out = tp->packets_out; flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una); - pkts_acked = prior_packets - tp->packets_out; + pkts_acked = previous_packets_out - tp->packets_out; if (tp->frto_counter) frto_cwnd = tcp_process_frto(sk, flag); @@ -3684,7 +3712,7 @@ tcp_cong_avoid(sk, ack, prior_in_flight); is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP)); tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, - is_dupack, flag); + prior_packets, is_dupack, flag); } else { if ((flag & FLAG_DATA_ACKED) && !frto_cwnd) tcp_cong_avoid(sk, ack, prior_in_flight); @@ -3701,7 +3729,7 @@ /* If data was DSACKed, see if we can undo a cwnd reduction. */ if (flag & FLAG_DSACKING_ACK) tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, - is_dupack, flag); + prior_packets, 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 * it needs to be for normal retransmission. @@ -3721,7 +3749,7 @@ if (TCP_SKB_CB(skb)->sacked) { flag |= tcp_sacktag_write_queue(sk, skb, prior_snd_una); tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, - is_dupack, flag); + prior_packets, is_dupack, flag); } SOCK_DEBUG(sk, "Ack %u before %u:%u\n", ack, tp->snd_una, tp->snd_nxt); @@ -3943,27 +3971,6 @@ EXPORT_SYMBOL(tcp_parse_md5sig_option); #endif -static inline void tcp_store_ts_recent(struct tcp_sock *tp) -{ - tp->rx_opt.ts_recent = tp->rx_opt.rcv_tsval; - tp->rx_opt.ts_recent_stamp = get_seconds(); -} - -static inline void tcp_replace_ts_recent(struct tcp_sock *tp, u32 seq) -{ - if (tp->rx_opt.saw_tstamp && !after(seq, tp->rcv_wup)) { - /* PAWS bug workaround wrt. ACK frames, the PAWS discard - * extra check below makes sure this can only happen - * for pure ACK frames. -DaveM - * - * Not only, also it occurs for expired timestamps. - */ - - if (tcp_paws_check(&tp->rx_opt, 0)) - tcp_store_ts_recent(tp); - } -} - /* Sorry, PAWS as specified is broken wrt. pure-ACKs -DaveM * * It is not fatal. If this ACK does _not_ change critical state (seqs, window) @@ -5498,6 +5505,9 @@ if (tcp_checksum_complete_user(sk, skb)) goto csum_error; + if ((int)skb->truesize > sk->sk_forward_alloc) + goto step5; + /* Predicted packet is in window by definition. * seq == rcv_nxt and rcv_wup <= rcv_nxt. * Hence, check seq<=rcv_wup reduces to: @@ -5509,9 +5519,6 @@ tcp_rcv_rtt_measure_ts(sk, skb); - if ((int)skb->truesize > sk->sk_forward_alloc) - goto step5; - NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPHPHITS); /* Bulk data transfer: receiver */ @@ -5559,14 +5566,9 @@ return 0; step5: - if (tcp_ack(sk, skb, FLAG_SLOWPATH) < 0) + if (tcp_ack(sk, skb, FLAG_SLOWPATH | FLAG_UPDATE_TS_RECENT) < 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. */ @@ -6000,7 +6002,8 @@ /* step 5: check the ACK field */ if (true) { - int acceptable = tcp_ack(sk, skb, FLAG_SLOWPATH) > 0; + int acceptable = tcp_ack(sk, skb, FLAG_SLOWPATH | + FLAG_UPDATE_TS_RECENT) > 0; switch (sk->sk_state) { case TCP_SYN_RECV: @@ -6151,11 +6154,6 @@ } } - /* 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-ppc-3.8.0.orig/net/ipv4/route.c +++ linux-ppc-3.8.0/net/ipv4/route.c @@ -741,10 +741,15 @@ { struct rtable *rt; struct flowi4 fl4; + const struct iphdr *iph = (const struct iphdr *) skb->data; + int oif = skb->dev->ifindex; + u8 tos = RT_TOS(iph->tos); + u8 prot = iph->protocol; + u32 mark = skb->mark; rt = (struct rtable *) dst; - ip_rt_build_flow_key(&fl4, sk, skb); + __build_flow_key(&fl4, sk, iph, oif, tos, prot, mark, 0); __ip_do_redirect(rt, skb, &fl4, true); } --- linux-ppc-3.8.0.orig/net/ipv4/udp.c +++ linux-ppc-3.8.0/net/ipv4/udp.c @@ -774,7 +774,7 @@ /* * Push out all pending data as one UDP datagram. Socket is locked. */ -static int udp_push_pending_frames(struct sock *sk) +int udp_push_pending_frames(struct sock *sk) { struct udp_sock *up = udp_sk(sk); struct inet_sock *inet = inet_sk(sk); @@ -793,6 +793,7 @@ up->pending = 0; return err; } +EXPORT_SYMBOL(udp_push_pending_frames); int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len) --- linux-ppc-3.8.0.orig/net/ipv4/ipip.c +++ linux-ppc-3.8.0/net/ipv4/ipip.c @@ -489,6 +489,7 @@ if (tos & 1) tos = old_iph->tos; + memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); if (!dst) { /* NBMA tunnel */ if ((rt = skb_rtable(skb)) == NULL) { @@ -571,7 +572,6 @@ skb->transport_header = skb->network_header; skb_push(skb, sizeof(struct iphdr)); skb_reset_network_header(skb); - memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); IPCB(skb)->flags &= ~(IPSKB_XFRM_TUNNEL_SIZE | IPSKB_XFRM_TRANSFORMED | IPSKB_REROUTED); skb_dst_drop(skb); --- linux-ppc-3.8.0.orig/net/ipv4/inet_fragment.c +++ linux-ppc-3.8.0/net/ipv4/inet_fragment.c @@ -21,6 +21,7 @@ #include #include +#include #include static void inet_frag_secret_rebuild(unsigned long dummy) @@ -276,6 +277,7 @@ { struct inet_frag_queue *q; struct hlist_node *n; + int depth = 0; hlist_for_each_entry(q, n, &f->hash[hash], list) { if (q->net == nf && f->match(q, key)) { @@ -283,9 +285,25 @@ read_unlock(&f->lock); return q; } + depth++; } read_unlock(&f->lock); - return inet_frag_create(nf, f, key); + if (depth <= INETFRAGS_MAXDEPTH) + return inet_frag_create(nf, f, key); + else + return ERR_PTR(-ENOBUFS); } EXPORT_SYMBOL(inet_frag_find); + +void inet_frag_maybe_warn_overflow(struct inet_frag_queue *q, + const char *prefix) +{ + static const char msg[] = "inet_frag_find: Fragment hash bucket" + " list length grew over limit " __stringify(INETFRAGS_MAXDEPTH) + ". Dropping fragment.\n"; + + if (PTR_ERR(q) == -ENOBUFS) + LIMIT_NETDEBUG(KERN_WARNING "%s%s", prefix, msg); +} +EXPORT_SYMBOL(inet_frag_maybe_warn_overflow); --- linux-ppc-3.8.0.orig/net/ipv4/esp4.c +++ linux-ppc-3.8.0/net/ipv4/esp4.c @@ -139,8 +139,6 @@ /* skb is pure payload to encrypt */ - err = -ENOMEM; - esp = x->data; aead = esp->aead; alen = crypto_aead_authsize(aead); @@ -176,8 +174,10 @@ } tmp = esp_alloc_tmp(aead, nfrags + sglists, seqhilen); - if (!tmp) + if (!tmp) { + err = -ENOMEM; goto error; + } seqhi = esp_tmp_seqhi(tmp); iv = esp_tmp_iv(aead, tmp, seqhilen); --- linux-ppc-3.8.0.orig/net/ipv4/tcp.c +++ linux-ppc-3.8.0/net/ipv4/tcp.c @@ -773,7 +773,7 @@ * Make sure that we have exactly size bytes * available to the caller, no more, no less. */ - skb->avail_size = size; + skb->reserved_tailroom = skb->end - skb->tail - size; return skb; } __kfree_skb(skb); @@ -3371,8 +3371,11 @@ for (i = 0; i < shi->nr_frags; ++i) { const struct skb_frag_struct *f = &shi->frags[i]; - struct page *page = skb_frag_page(f); - sg_set_page(&sg, page, skb_frag_size(f), f->page_offset); + unsigned int offset = f->page_offset; + struct page *page = skb_frag_page(f) + (offset >> PAGE_SHIFT); + + sg_set_page(&sg, page, skb_frag_size(f), + offset_in_page(offset)); if (crypto_hash_update(desc, &sg, skb_frag_size(f))) return 1; } --- linux-ppc-3.8.0.orig/net/ipv4/syncookies.c +++ linux-ppc-3.8.0/net/ipv4/syncookies.c @@ -348,8 +348,8 @@ * hasn't changed since we received the original syn, but I see * no easy way to do this. */ - flowi4_init_output(&fl4, 0, sk->sk_mark, RT_CONN_FLAGS(sk), - RT_SCOPE_UNIVERSE, IPPROTO_TCP, + flowi4_init_output(&fl4, sk->sk_bound_dev_if, sk->sk_mark, + RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE, IPPROTO_TCP, inet_sk_flowi_flags(sk), (opt && opt->srr) ? opt->faddr : ireq->rmt_addr, ireq->loc_addr, th->source, th->dest); --- linux-ppc-3.8.0.orig/net/ipv4/ip_vti.c +++ linux-ppc-3.8.0/net/ipv4/ip_vti.c @@ -645,17 +645,10 @@ struct iphdr *iph = &tunnel->parms.iph; struct vti_net *ipn = net_generic(dev_net(dev), vti_net_id); - tunnel->dev = dev; - strcpy(tunnel->parms.name, dev->name); - iph->version = 4; iph->protocol = IPPROTO_IPIP; iph->ihl = 5; - dev->tstats = alloc_percpu(struct pcpu_tstats); - if (!dev->tstats) - return -ENOMEM; - dev_hold(dev); rcu_assign_pointer(ipn->tunnels_wc[0], tunnel); return 0; --- linux-ppc-3.8.0.orig/net/ipv4/ip_gre.c +++ linux-ppc-3.8.0/net/ipv4/ip_gre.c @@ -761,15 +761,13 @@ if (dev->header_ops && dev->type == ARPHRD_IPGRE) { gre_hlen = 0; - if (skb->protocol == htons(ETH_P_IP)) - tiph = (const struct iphdr *)skb->data; - else - tiph = &tunnel->parms.iph; + tiph = (const struct iphdr *)skb->data; } else { gre_hlen = tunnel->hlen; tiph = &tunnel->parms.iph; } + memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); if ((dst = tiph->daddr) == 0) { /* NBMA tunnel */ @@ -915,7 +913,6 @@ skb_push(skb, gre_hlen); skb_reset_network_header(skb); skb_set_transport_header(skb, sizeof(*iph)); - memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); IPCB(skb)->flags &= ~(IPSKB_XFRM_TUNNEL_SIZE | IPSKB_XFRM_TRANSFORMED | IPSKB_REROUTED); skb_dst_drop(skb); --- linux-ppc-3.8.0.orig/net/ipv4/sysctl_net_ipv4.c +++ linux-ppc-3.8.0/net/ipv4/sysctl_net_ipv4.c @@ -35,6 +35,8 @@ static int tcp_adv_win_scale_max = 31; static int ip_ttl_min = 1; static int ip_ttl_max = 255; +static int tcp_syn_retries_min = 1; +static int tcp_syn_retries_max = MAX_TCP_SYNCNT; static int ip_ping_group_range_min[] = { 0, 0 }; static int ip_ping_group_range_max[] = { GID_T_MAX, GID_T_MAX }; @@ -330,7 +332,9 @@ .data = &sysctl_tcp_syn_retries, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec + .proc_handler = proc_dointvec_minmax, + .extra1 = &tcp_syn_retries_min, + .extra2 = &tcp_syn_retries_max }, { .procname = "tcp_synack_retries", --- linux-ppc-3.8.0.orig/net/ipv4/ping.c +++ linux-ppc-3.8.0/net/ipv4/ping.c @@ -322,8 +322,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-ppc-3.8.0.orig/net/ipv4/tcp_ipv4.c +++ linux-ppc-3.8.0/net/ipv4/tcp_ipv4.c @@ -274,13 +274,6 @@ struct inet_sock *inet = inet_sk(sk); u32 mtu = tcp_sk(sk)->mtu_info; - /* We are not interested in TCP_LISTEN and open_requests (SYN-ACKs - * send out by Linux are always <576bytes so they should go through - * unfragmented). - */ - if (sk->sk_state == TCP_LISTEN) - return; - dst = inet_csk_update_pmtu(sk, mtu); if (!dst) return; @@ -408,6 +401,13 @@ goto out; if (code == ICMP_FRAG_NEEDED) { /* PMTU discovery (RFC1191) */ + /* We are not interested in TCP_LISTEN and open_requests + * (SYN-ACKs send out by Linux are always <576bytes so + * they should go through unfragmented). + */ + if (sk->sk_state == TCP_LISTEN) + goto out; + tp->mtu_info = info; if (!sock_owned_by_user(sk)) { tcp_v4_mtu_reduced(sk); @@ -1003,7 +1003,7 @@ struct tcp_sock *tp = tcp_sk(sk); struct tcp_md5sig_info *md5sig; - key = tcp_md5_do_lookup(sk, (union tcp_md5_addr *)&addr, AF_INET); + key = tcp_md5_do_lookup(sk, addr, family); if (key) { /* Pre-existing entry - just update that one. */ memcpy(key->key, newkey, newkeylen); @@ -1048,7 +1048,7 @@ struct tcp_md5sig_key *key; struct tcp_md5sig_info *md5sig; - key = tcp_md5_do_lookup(sk, (union tcp_md5_addr *)&addr, AF_INET); + key = tcp_md5_do_lookup(sk, addr, family); if (!key) return -ENOENT; hlist_del_rcu(&key->node); --- linux-ppc-3.8.0.orig/net/ipv4/netfilter/ipt_ULOG.c +++ linux-ppc-3.8.0/net/ipv4/netfilter/ipt_ULOG.c @@ -217,8 +217,10 @@ put_unaligned(tv.tv_usec, &pm->timestamp_usec); put_unaligned(skb->mark, &pm->mark); pm->hook = hooknum; - if (prefix != NULL) - strncpy(pm->prefix, prefix, sizeof(pm->prefix)); + if (prefix != NULL) { + strncpy(pm->prefix, prefix, sizeof(pm->prefix) - 1); + pm->prefix[sizeof(pm->prefix) - 1] = '\0'; + } else if (loginfo->prefix[0] != '\0') strncpy(pm->prefix, loginfo->prefix, sizeof(pm->prefix)); else --- linux-ppc-3.8.0.orig/net/ipv4/netfilter/ipt_rpfilter.c +++ linux-ppc-3.8.0/net/ipv4/netfilter/ipt_rpfilter.c @@ -66,6 +66,12 @@ return dev_match; } +static bool rpfilter_is_local(const struct sk_buff *skb) +{ + const struct rtable *rt = skb_rtable(skb); + return rt && (rt->rt_flags & RTCF_LOCAL); +} + static bool rpfilter_mt(const struct sk_buff *skb, struct xt_action_param *par) { const struct xt_rpfilter_info *info; @@ -76,7 +82,7 @@ info = par->matchinfo; invert = info->flags & XT_RPFILTER_INVERT; - if (par->in->flags & IFF_LOOPBACK) + if (rpfilter_is_local(skb)) return true ^ invert; iph = ip_hdr(skb); --- linux-ppc-3.8.0.orig/net/netfilter/nf_conntrack_helper.c +++ linux-ppc-3.8.0/net/netfilter/nf_conntrack_helper.c @@ -236,7 +236,9 @@ /* We only allow helper re-assignment of the same sort since * we cannot reallocate the helper extension area. */ - if (help->helper != helper) { + struct nf_conntrack_helper *tmp = rcu_dereference(help->helper); + + if (tmp && tmp->help != helper->help) { RCU_INIT_POINTER(help->helper, NULL); goto out; } --- linux-ppc-3.8.0.orig/net/netfilter/xt_TCPMSS.c +++ linux-ppc-3.8.0/net/netfilter/xt_TCPMSS.c @@ -44,17 +44,22 @@ static int tcpmss_mangle_packet(struct sk_buff *skb, - const struct xt_tcpmss_info *info, + const struct xt_action_param *par, unsigned int in_mtu, unsigned int tcphoff, unsigned int minlen) { + const struct xt_tcpmss_info *info = par->targinfo; struct tcphdr *tcph; unsigned int tcplen, i; __be16 oldval; u16 newmss; u8 *opt; + /* This is a fragment, no TCP header is available */ + if (par->fragoff != 0) + return XT_CONTINUE; + if (!skb_make_writable(skb, skb->len)) return -1; @@ -124,6 +129,18 @@ skb_put(skb, TCPOLEN_MSS); + /* + * IPv4: RFC 1122 states "If an MSS option is not received at + * connection setup, TCP MUST assume a default send MSS of 536". + * IPv6: RFC 2460 states IPv6 has a minimum MTU of 1280 and a minimum + * length IPv6 header of 60, ergo the default MSS value is 1220 + * Since no MSS was provided, we must use the default values + */ + if (par->family == NFPROTO_IPV4) + newmss = min(newmss, (u16)536); + else + newmss = min(newmss, (u16)1220); + opt = (u_int8_t *)tcph + sizeof(struct tcphdr); memmove(opt + TCPOLEN_MSS, opt, tcplen - sizeof(struct tcphdr)); @@ -181,7 +198,7 @@ __be16 newlen; int ret; - ret = tcpmss_mangle_packet(skb, par->targinfo, + ret = tcpmss_mangle_packet(skb, par, tcpmss_reverse_mtu(skb, PF_INET), iph->ihl * 4, sizeof(*iph) + sizeof(struct tcphdr)); @@ -210,7 +227,7 @@ tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr, &frag_off); if (tcphoff < 0) return NF_DROP; - ret = tcpmss_mangle_packet(skb, par->targinfo, + ret = tcpmss_mangle_packet(skb, par, tcpmss_reverse_mtu(skb, PF_INET6), tcphoff, sizeof(*ipv6h) + sizeof(struct tcphdr)); --- linux-ppc-3.8.0.orig/net/netfilter/xt_LOG.c +++ linux-ppc-3.8.0/net/netfilter/xt_LOG.c @@ -730,7 +730,7 @@ dump_sk_uid_gid(m, skb->sk); /* Max length: 16 "MARK=0xFFFFFFFF " */ - if (!recurse && skb->mark) + if (recurse && skb->mark) sb_add(m, "MARK=0x%x ", skb->mark); } --- linux-ppc-3.8.0.orig/net/netfilter/nfnetlink_cttimeout.c +++ linux-ppc-3.8.0/net/netfilter/nfnetlink_cttimeout.c @@ -220,9 +220,12 @@ rcu_read_lock(); list_for_each_entry_rcu(cur, &cttimeout_list, head) { - if (last && cur != last) - continue; + if (last) { + if (cur != last) + continue; + last = NULL; + } if (ctnl_timeout_fill_info(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, NFNL_MSG_TYPE(cb->nlh->nlmsg_type), --- linux-ppc-3.8.0.orig/net/netfilter/xt_addrtype.c +++ linux-ppc-3.8.0/net/netfilter/xt_addrtype.c @@ -22,6 +22,7 @@ #include #endif +#include #include #include @@ -33,12 +34,12 @@ #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES) static u32 match_lookup_rt6(struct net *net, const struct net_device *dev, - const struct in6_addr *addr) + const struct in6_addr *addr, u16 mask) { const struct nf_afinfo *afinfo; struct flowi6 flow; struct rt6_info *rt; - u32 ret; + u32 ret = 0; int route_err; memset(&flow, 0, sizeof(flow)); @@ -49,12 +50,19 @@ rcu_read_lock(); afinfo = nf_get_afinfo(NFPROTO_IPV6); - if (afinfo != NULL) + if (afinfo != NULL) { + const struct nf_ipv6_ops *v6ops; + + if (dev && (mask & XT_ADDRTYPE_LOCAL)) { + v6ops = nf_get_ipv6_ops(); + if (v6ops && v6ops->chk_addr(net, addr, dev, true)) + ret = XT_ADDRTYPE_LOCAL; + } route_err = afinfo->route(net, (struct dst_entry **)&rt, - flowi6_to_flowi(&flow), !!dev); - else + flowi6_to_flowi(&flow), false); + } else { route_err = 1; - + } rcu_read_unlock(); if (route_err) @@ -62,15 +70,12 @@ if (rt->rt6i_flags & RTF_REJECT) ret = XT_ADDRTYPE_UNREACHABLE; - else - ret = 0; - if (rt->rt6i_flags & RTF_LOCAL) + if (dev == NULL && rt->rt6i_flags & RTF_LOCAL) ret |= XT_ADDRTYPE_LOCAL; if (rt->rt6i_flags & RTF_ANYCAST) ret |= XT_ADDRTYPE_ANYCAST; - dst_release(&rt->dst); return ret; } @@ -90,7 +95,7 @@ if ((XT_ADDRTYPE_LOCAL | XT_ADDRTYPE_ANYCAST | XT_ADDRTYPE_UNREACHABLE) & mask) - return !!(mask & match_lookup_rt6(net, dev, addr)); + return !!(mask & match_lookup_rt6(net, dev, addr, mask)); return true; } --- linux-ppc-3.8.0.orig/net/netfilter/xt_TCPOPTSTRIP.c +++ linux-ppc-3.8.0/net/netfilter/xt_TCPOPTSTRIP.c @@ -30,18 +30,31 @@ static unsigned int tcpoptstrip_mangle_packet(struct sk_buff *skb, - const struct xt_tcpoptstrip_target_info *info, + const struct xt_action_param *par, unsigned int tcphoff, unsigned int minlen) { + const struct xt_tcpoptstrip_target_info *info = par->targinfo; unsigned int optl, i, j; struct tcphdr *tcph; u_int16_t n, o; u_int8_t *opt; + int len; + + /* This is a fragment, no TCP header is available */ + if (par->fragoff != 0) + return XT_CONTINUE; if (!skb_make_writable(skb, skb->len)) return NF_DROP; + len = skb->len - tcphoff; + if (len < (int)sizeof(struct tcphdr)) + return NF_DROP; + tcph = (struct tcphdr *)(skb_network_header(skb) + tcphoff); + if (tcph->doff * 4 > len) + return NF_DROP; + opt = (u_int8_t *)tcph; /* @@ -76,7 +89,7 @@ static unsigned int tcpoptstrip_tg4(struct sk_buff *skb, const struct xt_action_param *par) { - return tcpoptstrip_mangle_packet(skb, par->targinfo, ip_hdrlen(skb), + return tcpoptstrip_mangle_packet(skb, par, ip_hdrlen(skb), sizeof(struct iphdr) + sizeof(struct tcphdr)); } @@ -94,7 +107,7 @@ if (tcphoff < 0) return NF_DROP; - return tcpoptstrip_mangle_packet(skb, par->targinfo, tcphoff, + return tcpoptstrip_mangle_packet(skb, par, tcphoff, sizeof(*ipv6h) + sizeof(struct tcphdr)); } #endif --- linux-ppc-3.8.0.orig/net/netfilter/nf_nat_core.c +++ linux-ppc-3.8.0/net/netfilter/nf_nat_core.c @@ -468,33 +468,22 @@ struct nf_nat_proto_clean { u8 l3proto; u8 l4proto; - bool hash; }; -/* Clear NAT section of all conntracks, in case we're loaded again. */ -static int nf_nat_proto_clean(struct nf_conn *i, void *data) +/* kill conntracks with affected NAT section */ +static int nf_nat_proto_remove(struct nf_conn *i, void *data) { const struct nf_nat_proto_clean *clean = data; struct nf_conn_nat *nat = nfct_nat(i); if (!nat) return 0; - if (!(i->status & IPS_SRC_NAT_DONE)) - return 0; + if ((clean->l3proto && nf_ct_l3num(i) != clean->l3proto) || (clean->l4proto && nf_ct_protonum(i) != clean->l4proto)) return 0; - if (clean->hash) { - spin_lock_bh(&nf_nat_lock); - hlist_del_rcu(&nat->bysource); - spin_unlock_bh(&nf_nat_lock); - } else { - memset(nat, 0, sizeof(*nat)); - i->status &= ~(IPS_NAT_MASK | IPS_NAT_DONE_MASK | - IPS_SEQ_ADJUST); - } - return 0; + return i->status & IPS_NAT_MASK ? 1 : 0; } static void nf_nat_l4proto_clean(u8 l3proto, u8 l4proto) @@ -506,16 +495,8 @@ struct net *net; rtnl_lock(); - /* Step 1 - remove from bysource hash */ - clean.hash = true; for_each_net(net) - nf_ct_iterate_cleanup(net, nf_nat_proto_clean, &clean); - synchronize_rcu(); - - /* Step 2 - clean NAT section */ - clean.hash = false; - for_each_net(net) - nf_ct_iterate_cleanup(net, nf_nat_proto_clean, &clean); + nf_ct_iterate_cleanup(net, nf_nat_proto_remove, &clean); rtnl_unlock(); } @@ -527,16 +508,9 @@ struct net *net; rtnl_lock(); - /* Step 1 - remove from bysource hash */ - clean.hash = true; - for_each_net(net) - nf_ct_iterate_cleanup(net, nf_nat_proto_clean, &clean); - synchronize_rcu(); - /* Step 2 - clean NAT section */ - clean.hash = false; for_each_net(net) - nf_ct_iterate_cleanup(net, nf_nat_proto_clean, &clean); + nf_ct_iterate_cleanup(net, nf_nat_proto_remove, &clean); rtnl_unlock(); } @@ -774,7 +748,7 @@ { struct nf_nat_proto_clean clean = {}; - nf_ct_iterate_cleanup(net, &nf_nat_proto_clean, &clean); + nf_ct_iterate_cleanup(net, &nf_nat_proto_remove, &clean); synchronize_rcu(); nf_ct_free_hashtable(net->ct.nat_bysource, net->ct.nat_htable_size); } --- linux-ppc-3.8.0.orig/net/netfilter/nfnetlink_acct.c +++ linux-ppc-3.8.0/net/netfilter/nfnetlink_acct.c @@ -147,9 +147,12 @@ rcu_read_lock(); list_for_each_entry_rcu(cur, &nfnl_acct_list, head) { - if (last && cur != last) - continue; + if (last) { + if (cur != last) + continue; + last = NULL; + } if (nfnl_acct_fill_info(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, NFNL_MSG_TYPE(cb->nlh->nlmsg_type), --- linux-ppc-3.8.0.orig/net/netfilter/core.c +++ linux-ppc-3.8.0/net/netfilter/core.c @@ -29,6 +29,8 @@ const struct nf_afinfo __rcu *nf_afinfo[NFPROTO_NUMPROTO] __read_mostly; EXPORT_SYMBOL(nf_afinfo); +const struct nf_ipv6_ops __rcu *nf_ipv6_ops __read_mostly; +EXPORT_SYMBOL_GPL(nf_ipv6_ops); int nf_register_afinfo(const struct nf_afinfo *afinfo) { --- linux-ppc-3.8.0.orig/net/netfilter/nf_conntrack_netlink.c +++ linux-ppc-3.8.0/net/netfilter/nf_conntrack_netlink.c @@ -1705,6 +1705,9 @@ if (nlh->nlmsg_flags & NLM_F_CREATE) { enum ip_conntrack_events events; + if (!cda[CTA_TUPLE_ORIG] || !cda[CTA_TUPLE_REPLY]) + return -EINVAL; + ct = ctnetlink_create_conntrack(net, zone, cda, &otuple, &rtuple, u3); if (IS_ERR(ct)) --- linux-ppc-3.8.0.orig/net/netfilter/nf_conntrack_sip.c +++ linux-ppc-3.8.0/net/netfilter/nf_conntrack_sip.c @@ -1547,7 +1547,7 @@ msglen = origlen = end - dptr; if (msglen > datalen) - return NF_DROP; + return NF_ACCEPT; ret = process_sip_msg(skb, ct, protoff, dataoff, &dptr, &msglen); --- linux-ppc-3.8.0.orig/net/netfilter/ipvs/ip_vs_ctl.c +++ linux-ppc-3.8.0/net/netfilter/ipvs/ip_vs_ctl.c @@ -2556,6 +2556,7 @@ struct ip_vs_dest *dest; struct ip_vs_dest_entry entry; + memset(&entry, 0, sizeof(entry)); list_for_each_entry(dest, &svc->destinations, n_list) { if (count >= get->num_dests) break; --- linux-ppc-3.8.0.orig/net/netfilter/ipvs/ip_vs_core.c +++ linux-ppc-3.8.0/net/netfilter/ipvs/ip_vs_core.c @@ -1002,6 +1002,32 @@ return th->rst; } +static inline bool is_new_conn(const struct sk_buff *skb, + struct ip_vs_iphdr *iph) +{ + switch (iph->protocol) { + case IPPROTO_TCP: { + struct tcphdr _tcph, *th; + + th = skb_header_pointer(skb, iph->len, sizeof(_tcph), &_tcph); + if (th == NULL) + return false; + return th->syn; + } + case IPPROTO_SCTP: { + sctp_chunkhdr_t *sch, schunk; + + sch = skb_header_pointer(skb, iph->len + sizeof(sctp_sctphdr_t), + sizeof(schunk), &schunk); + if (sch == NULL) + return false; + return sch->type == SCTP_CID_INIT; + } + default: + return false; + } +} + /* Handle response packets: rewrite addresses and send away... */ static unsigned int @@ -1432,7 +1458,8 @@ /* do the statistics and put it back */ ip_vs_in_stats(cp, skb); - if (IPPROTO_TCP == cih->protocol || IPPROTO_UDP == cih->protocol) + if (IPPROTO_TCP == cih->protocol || IPPROTO_UDP == cih->protocol || + IPPROTO_SCTP == cih->protocol) offset += 2 * sizeof(__u16); verdict = ip_vs_icmp_xmit(skb, cp, pp, offset, hooknum, &ciph); @@ -1627,6 +1654,15 @@ * Check if the packet belongs to an existing connection entry */ cp = pp->conn_in_get(af, skb, &iph, 0); + + if (unlikely(sysctl_expire_nodest_conn(ipvs)) && cp && cp->dest && + unlikely(!atomic_read(&cp->dest->weight)) && !iph.fragoffs && + is_new_conn(skb, &iph)) { + ip_vs_conn_expire_now(cp); + __ip_vs_conn_put(cp); + cp = NULL; + } + if (unlikely(!cp) && !iph.fragoffs) { /* No (second) fragments need to enter here, as nf_defrag_ipv6 * replayed fragment zero will already have created the cp --- linux-ppc-3.8.0.orig/net/netfilter/ipvs/ip_vs_pe_sip.c +++ linux-ppc-3.8.0/net/netfilter/ipvs/ip_vs_pe_sip.c @@ -37,14 +37,10 @@ if (ret > 0) break; if (!ret) - return 0; + return -EINVAL; dataoff += *matchoff; } - /* Empty callid is useless */ - if (!*matchlen) - return -EINVAL; - /* Too large is useless */ if (*matchlen > IP_VS_PEDATA_MAXLEN) return -EINVAL; --- linux-ppc-3.8.0.orig/net/netfilter/ipset/ip_set_list_set.c +++ linux-ppc-3.8.0/net/netfilter/ipset/ip_set_list_set.c @@ -174,9 +174,13 @@ { const struct set_elem *e = list_set_elem(map, i); - if (i == map->size - 1 && e->id != IPSET_INVALID_ID) - /* Last element replaced: e.g. add new,before,last */ - ip_set_put_byindex(e->id); + if (e->id != IPSET_INVALID_ID) { + const struct set_elem *x = list_set_elem(map, map->size - 1); + + /* Last element replaced or pushed off */ + if (x->id != IPSET_INVALID_ID) + ip_set_put_byindex(x->id); + } if (with_timeout(map->timeout)) list_elem_tadd(map, i, id, ip_set_timeout_set(timeout)); else --- linux-ppc-3.8.0.orig/net/netfilter/ipset/ip_set_core.c +++ linux-ppc-3.8.0/net/netfilter/ipset/ip_set_core.c @@ -1470,7 +1470,8 @@ if (ret == -EAGAIN) ret = 1; - return ret < 0 ? ret : ret > 0 ? 0 : -IPSET_ERR_EXIST; + return (ret < 0 && ret != -ENOTEMPTY) ? ret : + ret > 0 ? 0 : -IPSET_ERR_EXIST; } /* Get headed data of a set */ --- linux-ppc-3.8.0.orig/net/irda/af_irda.c +++ linux-ppc-3.8.0/net/irda/af_irda.c @@ -1386,6 +1386,8 @@ IRDA_DEBUG(4, "%s()\n", __func__); + msg->msg_namelen = 0; + skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, flags & MSG_DONTWAIT, &err); if (!skb) @@ -2584,8 +2586,10 @@ NULL, NULL, NULL); /* Check if the we got some results */ - if (!self->cachedaddr) - return -EAGAIN; /* Didn't find any devices */ + if (!self->cachedaddr) { + err = -EAGAIN; /* Didn't find any devices */ + goto out; + } daddr = self->cachedaddr; /* Cleanup */ self->cachedaddr = 0; --- linux-ppc-3.8.0.orig/net/batman-adv/bat_iv_ogm.c +++ linux-ppc-3.8.0/net/batman-adv/bat_iv_ogm.c @@ -1298,7 +1298,8 @@ batadv_ogm_packet = (struct batadv_ogm_packet *)packet_buff; /* unpack the aggregated packets and process them one by one */ - do { + while (batadv_iv_ogm_aggr_packet(buff_pos, packet_len, + batadv_ogm_packet->tt_num_changes)) { tt_buff = packet_buff + buff_pos + BATADV_OGM_HLEN; batadv_iv_ogm_process(ethhdr, batadv_ogm_packet, tt_buff, @@ -1309,8 +1310,7 @@ packet_pos = packet_buff + buff_pos; batadv_ogm_packet = (struct batadv_ogm_packet *)packet_pos; - } while (batadv_iv_ogm_aggr_packet(buff_pos, packet_len, - batadv_ogm_packet->tt_num_changes)); + } kfree_skb(skb); return NET_RX_SUCCESS; --- linux-ppc-3.8.0.orig/net/ieee802154/6lowpan.h +++ linux-ppc-3.8.0/net/ieee802154/6lowpan.h @@ -84,7 +84,7 @@ (memcmp(addr1, addr2, length >> 3) == 0) /* local link, i.e. FE80::/10 */ -#define is_addr_link_local(a) (((a)->s6_addr16[0]) == 0x80FE) +#define is_addr_link_local(a) (((a)->s6_addr16[0]) == htons(0xFE80)) /* * check whether we can compress the IID to 16 bits, --- linux-ppc-3.8.0.orig/net/ieee802154/6lowpan.c +++ linux-ppc-3.8.0/net/ieee802154/6lowpan.c @@ -1234,7 +1234,7 @@ return rtnl_link_register(&lowpan_link_ops); } -static inline void __init lowpan_netlink_fini(void) +static inline void lowpan_netlink_fini(void) { rtnl_link_unregister(&lowpan_link_ops); } --- linux-ppc-3.8.0.orig/net/8021q/vlan_dev.c +++ linux-ppc-3.8.0/net/8021q/vlan_dev.c @@ -73,6 +73,8 @@ { struct vlan_priority_tci_mapping *mp; + smp_rmb(); /* coupled with smp_wmb() in vlan_dev_set_egress_priority() */ + mp = vlan_dev_priv(dev)->egress_priority_map[(skb->priority & 0xF)]; while (mp) { if (mp->priority == skb->priority) { @@ -248,6 +250,11 @@ np->next = mp; np->priority = skb_prio; np->vlan_qos = vlan_qos; + /* Before inserting this element in hash table, make sure all its fields + * are committed to memory. + * coupled with smp_rmb() in vlan_dev_get_egress_qos_mask() + */ + smp_wmb(); vlan->egress_priority_map[skb_prio & 0xF] = np; if (vlan_qos) vlan->nr_egress_mappings++; @@ -617,7 +624,7 @@ netdev_features_t features) { struct net_device *real_dev = vlan_dev_priv(dev)->real_dev; - u32 old_features = features; + netdev_features_t old_features = features; features &= real_dev->vlan_features; features |= NETIF_F_RXCSUM; --- linux-ppc-3.8.0.orig/net/8021q/vlan.c +++ linux-ppc-3.8.0/net/8021q/vlan.c @@ -86,13 +86,6 @@ grp = &vlan_info->grp; - /* Take it out of our own structures, but be sure to interlock with - * HW accelerating devices or SW vlan input packet processing if - * VLAN is not 0 (leave it there for 802.1p). - */ - if (vlan_id) - vlan_vid_del(real_dev, vlan_id); - grp->nr_vlan_devs--; if (vlan->flags & VLAN_FLAG_GVRP) @@ -108,6 +101,13 @@ if (grp->nr_vlan_devs == 0) vlan_gvrp_uninit_applicant(real_dev); + /* Take it out of our own structures, but be sure to interlock with + * HW accelerating devices or SW vlan input packet processing if + * VLAN is not 0 (leave it there for 802.1p). + */ + if (vlan_id) + vlan_vid_del(real_dev, vlan_id); + /* Get rid of the vlan's reference to real_dev */ dev_put(real_dev); } --- linux-ppc-3.8.0.orig/net/atm/common.c +++ linux-ppc-3.8.0/net/atm/common.c @@ -532,6 +532,8 @@ struct sk_buff *skb; int copied, error = -EINVAL; + msg->msg_namelen = 0; + if (sock->state != SS_CONNECTED) return -ENOTCONN; --- linux-ppc-3.8.0.orig/net/bridge/br_stp_timer.c +++ linux-ppc-3.8.0/net/bridge/br_stp_timer.c @@ -107,7 +107,7 @@ br_debug(br, "tcn timer expired\n"); spin_lock(&br->lock); - if (br->dev->flags & IFF_UP) { + if (!br_is_root_bridge(br) && (br->dev->flags & IFF_UP)) { br_transmit_tcn(br); mod_timer(&br->tcn_timer,jiffies + br->bridge_hello_time); --- linux-ppc-3.8.0.orig/net/bridge/br_netlink.c +++ linux-ppc-3.8.0/net/bridge/br_netlink.c @@ -28,6 +28,7 @@ + nla_total_size(1) /* IFLA_BRPORT_MODE */ + nla_total_size(1) /* IFLA_BRPORT_GUARD */ + nla_total_size(1) /* IFLA_BRPORT_PROTECT */ + + nla_total_size(1) /* IFLA_BRPORT_FAST_LEAVE */ + 0; } --- linux-ppc-3.8.0.orig/net/bridge/br_mdb.c +++ linux-ppc-3.8.0/net/bridge/br_mdb.c @@ -82,6 +82,7 @@ port = p->port; if (port) { struct br_mdb_entry e; + memset(&e, 0, sizeof(e)); e.ifindex = port->dev->ifindex; e.state = p->state; if (p->addr.proto == htons(ETH_P_IP)) @@ -138,6 +139,7 @@ break; bpm = nlmsg_data(nlh); + memset(bpm, 0, sizeof(*bpm)); bpm->ifindex = dev->ifindex; if (br_mdb_fill_info(skb, cb, dev) < 0) goto out; @@ -173,6 +175,7 @@ return -EMSGSIZE; bpm = nlmsg_data(nlh); + memset(bpm, 0, sizeof(*bpm)); bpm->family = AF_BRIDGE; bpm->ifindex = dev->ifindex; nest = nla_nest_start(skb, MDBA_MDB); @@ -230,6 +233,7 @@ { struct br_mdb_entry entry; + memset(&entry, 0, sizeof(entry)); entry.ifindex = port->dev->ifindex; entry.addr.proto = group->proto; entry.addr.u.ip4 = group->u.ip4; --- linux-ppc-3.8.0.orig/net/bridge/br_multicast.c +++ linux-ppc-3.8.0/net/bridge/br_multicast.c @@ -458,8 +458,9 @@ skb_set_transport_header(skb, skb->len); mldq = (struct mld_msg *) icmp6_hdr(skb); - interval = ipv6_addr_any(group) ? br->multicast_last_member_interval : - br->multicast_query_response_interval; + interval = ipv6_addr_any(group) ? + br->multicast_query_response_interval : + br->multicast_last_member_interval; mldq->mld_type = ICMPV6_MGM_QUERY; mldq->mld_code = 0; --- linux-ppc-3.8.0.orig/net/9p/trans_common.c +++ linux-ppc-3.8.0/net/9p/trans_common.c @@ -24,11 +24,11 @@ */ void p9_release_pages(struct page **pages, int nr_pages) { - int i = 0; - while (pages[i] && nr_pages--) { - put_page(pages[i]); - i++; - } + int i; + + for (i = 0; i < nr_pages; i++) + if (pages[i]) + put_page(pages[i]); } EXPORT_SYMBOL(p9_release_pages); --- linux-ppc-3.8.0.orig/net/mac802154/mac802154.h +++ linux-ppc-3.8.0/net/mac802154/mac802154.h @@ -90,7 +90,7 @@ #define MAC802154_MAX_XMIT_ATTEMPTS 3 -#define MAC802154_CHAN_NONE (~(u8)0) /* No channel is assigned */ +#define MAC802154_CHAN_NONE 0xff /* No channel is assigned */ extern struct ieee802154_reduced_mlme_ops mac802154_mlme_reduced; extern struct ieee802154_mlme_ops mac802154_mlme_wpan; --- linux-ppc-3.8.0.orig/net/rose/af_rose.c +++ linux-ppc-3.8.0/net/rose/af_rose.c @@ -1257,6 +1257,7 @@ skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); if (srose != NULL) { + memset(srose, 0, msg->msg_namelen); srose->srose_family = AF_ROSE; srose->srose_addr = rose->dest_addr; srose->srose_call = rose->dest_call; --- linux-ppc-3.8.0.orig/net/l2tp/l2tp_ppp.c +++ linux-ppc-3.8.0/net/l2tp/l2tp_ppp.c @@ -345,18 +345,19 @@ skb_put(skb, 2); /* Copy user data into skb */ - error = memcpy_fromiovec(skb->data, m->msg_iov, total_len); + error = memcpy_fromiovec(skb_put(skb, total_len), m->msg_iov, + total_len); if (error < 0) { kfree_skb(skb); goto error_put_sess_tun; } - skb_put(skb, total_len); l2tp_xmit_skb(session, skb, session->hdr_len); sock_put(ps->tunnel_sock); + sock_put(sk); - return error; + return total_len; error_put_sess_tun: sock_put(ps->tunnel_sock); @@ -1830,7 +1831,8 @@ static const struct pppox_proto pppol2tp_proto = { .create = pppol2tp_create, - .ioctl = pppol2tp_ioctl + .ioctl = pppol2tp_ioctl, + .owner = THIS_MODULE, }; #ifdef CONFIG_L2TP_V3 --- linux-ppc-3.8.0.orig/net/l2tp/l2tp_ip6.c +++ linux-ppc-3.8.0/net/l2tp/l2tp_ip6.c @@ -684,6 +684,7 @@ lsa->l2tp_addr = ipv6_hdr(skb)->saddr; lsa->l2tp_flowinfo = 0; lsa->l2tp_scope_id = 0; + lsa->l2tp_conn_id = 0; if (ipv6_addr_type(&lsa->l2tp_addr) & IPV6_ADDR_LINKLOCAL) lsa->l2tp_scope_id = IP6CB(skb)->iif; } --- linux-ppc-3.8.0.orig/crypto/ahash.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/pcompress.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/aead.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/shash.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/internal.h +++ linux-ppc-3.8.0/crypto/internal.h @@ -103,6 +103,12 @@ int crypto_unregister_notifier(struct notifier_block *nb); int crypto_probing_notify(unsigned long val, void *v); +static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) +{ + atomic_inc(&alg->cra_refcnt); + return alg; +} + static inline void crypto_alg_put(struct crypto_alg *alg) { if (atomic_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy) --- linux-ppc-3.8.0.orig/crypto/blkcipher.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/ablkcipher.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/algboss.c +++ linux-ppc-3.8.0/crypto/algboss.c @@ -45,10 +45,9 @@ } nu32; } attrs[CRYPTO_MAX_ATTRS]; - char larval[CRYPTO_MAX_ALG_NAME]; char template[CRYPTO_MAX_ALG_NAME]; - struct completion *completion; + struct crypto_larval *larval; u32 otype; u32 omask; @@ -87,7 +86,8 @@ crypto_tmpl_put(tmpl); out: - complete_all(param->completion); + complete_all(¶m->larval->completion); + crypto_alg_put(¶m->larval->alg); kfree(param); module_put_and_exit(0); } @@ -187,18 +187,19 @@ param->otype = larval->alg.cra_flags; param->omask = larval->mask; - memcpy(param->larval, larval->alg.cra_name, CRYPTO_MAX_ALG_NAME); - - param->completion = &larval->completion; + crypto_alg_get(&larval->alg); + param->larval = larval; thread = kthread_run(cryptomgr_probe, param, "cryptomgr_probe"); if (IS_ERR(thread)) - goto err_free_param; + goto err_put_larval; wait_for_completion_interruptible(&larval->completion); return NOTIFY_STOP; +err_put_larval: + crypto_alg_put(&larval->alg); err_free_param: kfree(param); err_put_module: --- linux-ppc-3.8.0.orig/crypto/gcm.c +++ linux-ppc-3.8.0/crypto/gcm.c @@ -44,6 +44,7 @@ struct crypto_rfc4543_req_ctx { u8 auth_tag[16]; + u8 assocbuf[32]; struct scatterlist cipher[1]; struct scatterlist payload[2]; struct scatterlist assoc[2]; @@ -1142,9 +1143,19 @@ scatterwalk_crypto_chain(payload, dst, vdst == req->iv + 8, 2); assoclen += 8 + req->cryptlen - (enc ? 0 : authsize); - sg_init_table(assoc, 2); - sg_set_page(assoc, sg_page(req->assoc), req->assoc->length, - req->assoc->offset); + if (req->assoc->length == req->assoclen) { + sg_init_table(assoc, 2); + sg_set_page(assoc, sg_page(req->assoc), req->assoc->length, + req->assoc->offset); + } else { + BUG_ON(req->assoclen > sizeof(rctx->assocbuf)); + + scatterwalk_map_and_copy(rctx->assocbuf, req->assoc, 0, + req->assoclen, 0); + + sg_init_table(assoc, 2); + sg_set_buf(assoc, rctx->assocbuf, req->assoclen); + } scatterwalk_crypto_chain(assoc, payload, 0, 2); aead_request_set_tfm(subreq, ctx->child); --- linux-ppc-3.8.0.orig/crypto/algif_skcipher.c +++ linux-ppc-3.8.0/crypto/algif_skcipher.c @@ -432,6 +432,7 @@ long copied = 0; lock_sock(sk); + msg->msg_namelen = 0; for (iov = msg->msg_iov, iovlen = msg->msg_iovlen; iovlen > 0; iovlen--, iov++) { unsigned long seglen = iov->iov_len; --- linux-ppc-3.8.0.orig/crypto/algif_hash.c +++ linux-ppc-3.8.0/crypto/algif_hash.c @@ -161,6 +161,8 @@ else if (len < ds) msg->msg_flags |= MSG_TRUNC; + msg->msg_namelen = 0; + lock_sock(sk); if (ctx->more) { ctx->more = 0; --- linux-ppc-3.8.0.orig/crypto/rng.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/crypto_user.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/crypto/api.c +++ linux-ppc-3.8.0/crypto/api.c @@ -34,12 +34,6 @@ BLOCKING_NOTIFIER_HEAD(crypto_chain); EXPORT_SYMBOL_GPL(crypto_chain); -static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) -{ - atomic_inc(&alg->cra_refcnt); - return alg; -} - struct crypto_alg *crypto_mod_get(struct crypto_alg *alg) { return try_module_get(alg->cra_module) ? crypto_alg_get(alg) : NULL; --- linux-ppc-3.8.0.orig/crypto/algapi.c +++ linux-ppc-3.8.0/crypto/algapi.c @@ -495,7 +495,8 @@ struct crypto_template *crypto_lookup_template(const char *name) { - return try_then_request_module(__crypto_lookup_template(name), name); + return try_then_request_module(__crypto_lookup_template(name), "%s", + name); } EXPORT_SYMBOL_GPL(crypto_lookup_template); --- linux-ppc-3.8.0.orig/security/security.c +++ linux-ppc-3.8.0/security/security.c @@ -396,6 +396,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) { @@ -412,6 +413,7 @@ 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) @@ -420,6 +422,7 @@ return 0; 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) @@ -438,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) { @@ -445,6 +449,7 @@ return 0; return security_ops->path_chmod(path, mode); } +EXPORT_SYMBOL(security_path_chmod); int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) { @@ -452,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) { @@ -528,6 +534,7 @@ return 0; return security_ops->inode_readlink(dentry); } +EXPORT_SYMBOL(security_inode_readlink); int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) { @@ -542,6 +549,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) { @@ -663,6 +671,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL(security_file_permission); int security_file_alloc(struct file *file) { @@ -723,6 +732,7 @@ return ret; return ima_file_mmap(file, prot); } +EXPORT_SYMBOL(security_mmap_file); int security_mmap_addr(unsigned long addr) { --- linux-ppc-3.8.0.orig/security/commoncap.c +++ linux-ppc-3.8.0/security/commoncap.c @@ -988,9 +988,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-ppc-3.8.0.orig/security/device_cgroup.c +++ linux-ppc-3.8.0/security/device_cgroup.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -631,6 +632,7 @@ return __devcgroup_check_permission(type, imajor(inode), iminor(inode), access); } +EXPORT_SYMBOL(__devcgroup_inode_permission); int devcgroup_inode_mknod(int mode, dev_t dev) { --- linux-ppc-3.8.0.orig/security/keys/compat.c +++ linux-ppc-3.8.0/security/keys/compat.c @@ -40,12 +40,12 @@ ARRAY_SIZE(iovstack), iovstack, &iov); if (ret < 0) - return ret; + goto err; if (ret == 0) goto no_payload_free; ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid); - +err: if (iov != iovstack) kfree(iov); return ret; --- linux-ppc-3.8.0.orig/security/keys/process_keys.c +++ linux-ppc-3.8.0/security/keys/process_keys.c @@ -57,7 +57,7 @@ kenter("%p{%u}", user, uid); - if (user->uid_keyring) { + if (user->uid_keyring && user->session_keyring) { kleave(" = 0 [exist]"); return 0; } @@ -367,6 +367,8 @@ switch (PTR_ERR(key_ref)) { case -EAGAIN: /* no key */ + if (ret) + break; case -ENOKEY: /* negative key */ ret = key_ref; break; @@ -837,7 +839,7 @@ new-> sgid = old-> sgid; new->fsgid = old->fsgid; new->user = get_uid(old->user); - new->user_ns = get_user_ns(new->user_ns); + new->user_ns = get_user_ns(old->user_ns); new->group_info = get_group_info(old->group_info); new->securebits = old->securebits; --- linux-ppc-3.8.0.orig/security/apparmor/mount.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/Makefile +++ linux-ppc-3.8.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/uapi/linux/capability.h \ $(src)/Makefile @@ -63,3 +95,8 @@ $(obj)/rlim_names.h : $(srctree)/include/uapi/asm-generic/resource.h \ $(src)/Makefile $(call cmd,make-rlim) +$(obj)/net_names.h : $(srctree)/include/linux/socket.h \ + $(srctree)/include/linux/net.h \ + $(src)/Makefile + $(call cmd,make-af) + $(call cmd,make-sock) --- linux-ppc-3.8.0.orig/security/apparmor/policy.c +++ linux-ppc-3.8.0/security/apparmor/policy.c @@ -747,6 +747,7 @@ 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); --- linux-ppc-3.8.0.orig/security/apparmor/domain.c +++ linux-ppc-3.8.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; --- linux-ppc-3.8.0.orig/security/apparmor/net.c +++ linux-ppc-3.8.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); + + 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-ppc-3.8.0.orig/security/apparmor/audit.c +++ linux-ppc-3.8.0/security/apparmor/audit.c @@ -44,6 +44,10 @@ "file_mmap", "file_mprotect", + "pivotroot", + "mount", + "umount", + "create", "post_create", "bind", --- linux-ppc-3.8.0.orig/security/apparmor/apparmorfs.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/policy_unpack.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/lsm.c +++ linux-ppc-3.8.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(const char *dev_name, struct path *path, const 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-ppc-3.8.0.orig/security/apparmor/include/net.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/include/apparmor.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/include/domain.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/include/audit.h +++ linux-ppc-3.8.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; kuid_t ouid; } fs; + struct { + int type, protocol; + struct sock *sk; + } net; }; }; --- linux-ppc-3.8.0.orig/security/apparmor/include/mount.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/apparmor/include/policy.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/security/selinux/xfrm.c +++ linux-ppc-3.8.0/security/selinux/xfrm.c @@ -310,7 +310,7 @@ if (old_ctx) { new_ctx = kmalloc(sizeof(*old_ctx) + old_ctx->ctx_len, - GFP_KERNEL); + GFP_ATOMIC); if (!new_ctx) return -ENOMEM; --- linux-ppc-3.8.0.orig/ipc/shm.c +++ linux-ppc-3.8.0/ipc/shm.c @@ -462,7 +462,7 @@ size_t size = params->u.size; int error; struct shmid_kernel *shp; - int numpages = (size + PAGE_SIZE -1) >> PAGE_SHIFT; + size_t numpages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; struct file * file; char name[13]; int id; @@ -491,10 +491,20 @@ sprintf (name, "SYSV%08x", key); if (shmflg & SHM_HUGETLB) { + struct hstate *hs = hstate_sizelog((shmflg >> SHM_HUGE_SHIFT) + & SHM_HUGE_MASK); + size_t hugesize; + + if (!hs) { + error = -EINVAL; + goto no_file; + } + hugesize = ALIGN(size, huge_page_size(hs)); + /* hugetlb_file_setup applies strict accounting */ if (shmflg & SHM_NORESERVE) acctflag = VM_NORESERVE; - file = hugetlb_file_setup(name, 0, size, acctflag, + file = hugetlb_file_setup(name, hugesize, acctflag, &shp->mlock_user, HUGETLB_SHMFS_INODE, (shmflg >> SHM_HUGE_SHIFT) & SHM_HUGE_MASK); } else { --- linux-ppc-3.8.0.orig/ipc/msg.c +++ linux-ppc-3.8.0/ipc/msg.c @@ -820,15 +820,17 @@ struct msg_msg *copy = NULL; unsigned long copy_number = 0; + ns = current->nsproxy->ipc_ns; + if (msqid < 0 || (long) bufsz < 0) return -EINVAL; if (msgflg & MSG_COPY) { - copy = prepare_copy(buf, bufsz, msgflg, &msgtyp, ©_number); + copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax), + msgflg, &msgtyp, ©_number); if (IS_ERR(copy)) return PTR_ERR(copy); } mode = convert_mode(&msgtyp, msgflg); - ns = current->nsproxy->ipc_ns; msq = msg_lock_check(ns, msqid); if (IS_ERR(msq)) { @@ -870,6 +872,7 @@ goto out_unlock; break; } + msg = ERR_PTR(-EAGAIN); } else break; msg_counter++; --- linux-ppc-3.8.0.orig/ipc/msgutil.c +++ linux-ppc-3.8.0/ipc/msgutil.c @@ -117,9 +117,6 @@ if (alen > DATALEN_MSG) alen = DATALEN_MSG; - dst->next = NULL; - dst->security = NULL; - memcpy(dst + 1, src + 1, alen); len -= alen; --- linux-ppc-3.8.0.orig/ipc/mqueue.c +++ linux-ppc-3.8.0/ipc/mqueue.c @@ -330,8 +330,16 @@ int flags, const char *dev_name, void *data) { - if (!(flags & MS_KERNMOUNT)) - data = current->nsproxy->ipc_ns; + if (!(flags & MS_KERNMOUNT)) { + struct ipc_namespace *ns = current->nsproxy->ipc_ns; + /* Don't allow mounting unless the caller has CAP_SYS_ADMIN + * over the ipc namespace. + */ + if (!ns_capable(ns->user_ns, CAP_SYS_ADMIN)) + return ERR_PTR(-EPERM); + + data = ns; + } return mount_ns(fs_type, flags, data, mqueue_fill_super); } @@ -840,7 +848,8 @@ fd = error; } mutex_unlock(&root->d_inode->i_mutex); - mnt_drop_write(mnt); + if (!ro) + mnt_drop_write(mnt); out_putname: putname(name); return fd; --- linux-ppc-3.8.0.orig/arch/Kconfig +++ linux-ppc-3.8.0/arch/Kconfig @@ -373,4 +373,10 @@ help Architecture has the first two arguments of clone(2) swapped. +config CLONE_BACKWARDS3 + bool + help + Architecture has tls passed as the 3rd argument of clone(2), + not the 5th one. + source "kernel/gcov/Kconfig" --- linux-ppc-3.8.0.orig/arch/h8300/include/asm/signal.h +++ linux-ppc-3.8.0/arch/h8300/include/asm/signal.h @@ -29,6 +29,7 @@ void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/sparc/kernel/tsb.S +++ linux-ppc-3.8.0/arch/sparc/kernel/tsb.S @@ -136,12 +136,43 @@ nop /* It is a huge page, use huge page TSB entry address we - * calculated above. + * calculated above. If the huge page TSB has not been + * allocated, setup a trap stack and call hugetlb_setup() + * to do so, then return from the trap to replay the TLB + * miss. + * + * This is necessary to handle the case of transparent huge + * pages where we don't really have a non-atomic context + * in which to allocate the hugepage TSB hash table. When + * the 'mm' faults in the hugepage for the first time, we + * thus handle it here. This also makes sure that we can + * allocate the TSB hash table on the correct NUMA node. */ TRAP_LOAD_TRAP_BLOCK(%g7, %g2) - ldx [%g7 + TRAP_PER_CPU_TSB_HUGE_TEMP], %g2 - cmp %g2, -1 - movne %xcc, %g2, %g1 + ldx [%g7 + TRAP_PER_CPU_TSB_HUGE_TEMP], %g1 + cmp %g1, -1 + bne,pt %xcc, 60f + nop + +661: rdpr %pstate, %g5 + wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate + .section .sun4v_2insn_patch, "ax" + .word 661b + SET_GL(1) + nop + .previous + + rdpr %tl, %g3 + cmp %g3, 1 + bne,pn %xcc, winfix_trampoline + nop + ba,pt %xcc, etrap + rd %pc, %g7 + call hugetlb_setup + add %sp, PTREGS_OFF, %o0 + ba,pt %xcc, rtrap + nop + 60: #endif --- linux-ppc-3.8.0.orig/arch/sparc/kernel/smp_64.c +++ linux-ppc-3.8.0/arch/sparc/kernel/smp_64.c @@ -849,7 +849,7 @@ } extern unsigned long xcall_flush_tlb_mm; -extern unsigned long xcall_flush_tlb_pending; +extern unsigned long xcall_flush_tlb_page; extern unsigned long xcall_flush_tlb_kernel_range; extern unsigned long xcall_fetch_glob_regs; extern unsigned long xcall_fetch_glob_pmu; @@ -1074,22 +1074,55 @@ put_cpu(); } +struct tlb_pending_info { + unsigned long ctx; + unsigned long nr; + unsigned long *vaddrs; +}; + +static void tlb_pending_func(void *info) +{ + struct tlb_pending_info *t = info; + + __flush_tlb_pending(t->ctx, t->nr, t->vaddrs); +} + void smp_flush_tlb_pending(struct mm_struct *mm, unsigned long nr, unsigned long *vaddrs) { u32 ctx = CTX_HWBITS(mm->context); + struct tlb_pending_info info; int cpu = get_cpu(); + info.ctx = ctx; + info.nr = nr; + info.vaddrs = vaddrs; + if (mm == current->mm && atomic_read(&mm->mm_users) == 1) cpumask_copy(mm_cpumask(mm), cpumask_of(cpu)); else - smp_cross_call_masked(&xcall_flush_tlb_pending, - ctx, nr, (unsigned long) vaddrs, - mm_cpumask(mm)); + smp_call_function_many(mm_cpumask(mm), tlb_pending_func, + &info, 1); __flush_tlb_pending(ctx, nr, vaddrs); put_cpu(); } + +void smp_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr) +{ + unsigned long context = CTX_HWBITS(mm->context); + int cpu = get_cpu(); + + if (mm == current->mm && atomic_read(&mm->mm_users) == 1) + cpumask_copy(mm_cpumask(mm), cpumask_of(cpu)); + else + smp_cross_call_masked(&xcall_flush_tlb_page, + context, vaddr, 0, + mm_cpumask(mm)); + __flush_tlb_page(context, vaddr); + + put_cpu(); +} void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end) { --- linux-ppc-3.8.0.orig/arch/sparc/kernel/asm-offsets.c +++ linux-ppc-3.8.0/arch/sparc/kernel/asm-offsets.c @@ -34,6 +34,8 @@ DEFINE(AOFF_task_thread, offsetof(struct task_struct, thread)); BLANK(); DEFINE(AOFF_mm_context, offsetof(struct mm_struct, context)); + BLANK(); + DEFINE(VMA_VM_MM, offsetof(struct vm_area_struct, vm_mm)); /* DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28); */ return 0; --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/pgtable_64.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/pgtable_64.h @@ -915,6 +915,7 @@ return remap_pfn_range(vma, from, phys_base >> PAGE_SHIFT, size, prot); } +#include #include /* We provide our own get_unmapped_area to cope with VA holes and --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/tsb.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/tsb.h @@ -157,17 +157,26 @@ andn REG2, 0x7, REG2; \ add REG1, REG2, REG1; - /* This macro exists only to make the PMD translator below easier - * to read. It hides the ELF section switch for the sun4v code - * patching. + /* These macros exists only to make the PMD translator below + * easier to read. It hides the ELF section switch for the + * sun4v code patching. */ -#define OR_PTE_BIT(REG, NAME) \ +#define OR_PTE_BIT_1INSN(REG, NAME) \ 661: or REG, _PAGE_##NAME##_4U, REG; \ .section .sun4v_1insn_patch, "ax"; \ .word 661b; \ or REG, _PAGE_##NAME##_4V, REG; \ .previous; +#define OR_PTE_BIT_2INSN(REG, TMP, NAME) \ +661: sethi %hi(_PAGE_##NAME##_4U), TMP; \ + or REG, TMP, REG; \ + .section .sun4v_2insn_patch, "ax"; \ + .word 661b; \ + mov -1, TMP; \ + or REG, _PAGE_##NAME##_4V, REG; \ + .previous; + /* Load into REG the PTE value for VALID, CACHE, and SZHUGE. */ #define BUILD_PTE_VALID_SZHUGE_CACHE(REG) \ 661: sethi %uhi(_PAGE_VALID|_PAGE_SZHUGE_4U), REG; \ @@ -214,12 +223,13 @@ andn REG1, PMD_HUGE_PROTBITS, REG2; \ sllx REG2, PMD_PADDR_SHIFT, REG2; \ /* REG2 now holds PFN << PAGE_SHIFT */ \ - andcc REG1, PMD_HUGE_EXEC, %g0; \ - bne,a,pt %xcc, 1f; \ - OR_PTE_BIT(REG2, EXEC); \ -1: andcc REG1, PMD_HUGE_WRITE, %g0; \ + andcc REG1, PMD_HUGE_WRITE, %g0; \ bne,a,pt %xcc, 1f; \ - OR_PTE_BIT(REG2, W); \ + OR_PTE_BIT_1INSN(REG2, W); \ +1: andcc REG1, PMD_HUGE_EXEC, %g0; \ + be,pt %xcc, 1f; \ + nop; \ + OR_PTE_BIT_2INSN(REG2, REG1, EXEC); \ /* REG1 can now be clobbered, build final PTE */ \ 1: BUILD_PTE_VALID_SZHUGE_CACHE(REG1); \ ba,pt %xcc, PTE_LABEL; \ --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/page_64.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/page_64.h @@ -27,8 +27,8 @@ #ifndef __ASSEMBLY__ #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) -struct mm_struct; -extern void hugetlb_setup(struct mm_struct *mm); +struct pt_regs; +extern void hugetlb_setup(struct pt_regs *regs); #endif #define WANT_PAGE_VIRTUAL --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/tlbflush_64.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/tlbflush_64.h @@ -11,24 +11,40 @@ struct tlb_batch { struct mm_struct *mm; unsigned long tlb_nr; + unsigned long active; unsigned long vaddrs[TLB_BATCH_NR]; }; extern void flush_tsb_kernel_range(unsigned long start, unsigned long end); extern void flush_tsb_user(struct tlb_batch *tb); +extern void flush_tsb_user_page(struct mm_struct *mm, unsigned long vaddr); /* TLB flush operations. */ -extern void flush_tlb_pending(void); +static inline void flush_tlb_mm(struct mm_struct *mm) +{ +} + +static inline void flush_tlb_page(struct vm_area_struct *vma, + unsigned long vmaddr) +{ +} + +static inline void flush_tlb_range(struct vm_area_struct *vma, + unsigned long start, unsigned long end) +{ +} + +#define __HAVE_ARCH_ENTER_LAZY_MMU_MODE -#define flush_tlb_range(vma,start,end) \ - do { (void)(start); flush_tlb_pending(); } while (0) -#define flush_tlb_page(vma,addr) flush_tlb_pending() -#define flush_tlb_mm(mm) flush_tlb_pending() +extern void flush_tlb_pending(void); +extern void arch_enter_lazy_mmu_mode(void); +extern void arch_leave_lazy_mmu_mode(void); +#define arch_flush_lazy_mmu_mode() do {} while (0) /* Local cpu only. */ extern void __flush_tlb_all(void); - +extern void __flush_tlb_page(unsigned long context, unsigned long vaddr); extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end); #ifndef CONFIG_SMP @@ -38,15 +54,24 @@ __flush_tlb_kernel_range(start,end); \ } while (0) +static inline void global_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr) +{ + __flush_tlb_page(CTX_HWBITS(mm->context), vaddr); +} + #else /* CONFIG_SMP */ extern void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end); +extern void smp_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr); #define flush_tlb_kernel_range(start, end) \ do { flush_tsb_kernel_range(start,end); \ smp_flush_tlb_kernel_range(start, end); \ } while (0) +#define global_flush_tlb_page(mm, vaddr) \ + smp_flush_tlb_page(mm, vaddr) + #endif /* ! CONFIG_SMP */ #endif /* _SPARC64_TLBFLUSH_H */ --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/hugetlb.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/hugetlb.h @@ -12,7 +12,6 @@ static inline void hugetlb_prefault_arch_hook(struct mm_struct *mm) { - hugetlb_setup(mm); } static inline int is_hugepage_only_range(struct mm_struct *mm, --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/signal.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/signal.h @@ -26,5 +26,7 @@ void __user *ka_restorer; }; +#define __ARCH_HAS_SA_RESTORER + #endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGNAL_H) */ --- linux-ppc-3.8.0.orig/arch/sparc/include/asm/switch_to_64.h +++ linux-ppc-3.8.0/arch/sparc/include/asm/switch_to_64.h @@ -18,8 +18,7 @@ * and 2 stores in this critical code path. -DaveM */ #define switch_to(prev, next, last) \ -do { flush_tlb_pending(); \ - save_and_clear_fpu(); \ +do { save_and_clear_fpu(); \ /* If you are tempted to conditionalize the following */ \ /* so that ASI is only written if it changes, think again. */ \ __asm__ __volatile__("wr %%g0, %0, %%asi" \ --- linux-ppc-3.8.0.orig/arch/sparc/mm/init_64.c +++ linux-ppc-3.8.0/arch/sparc/mm/init_64.c @@ -314,16 +314,31 @@ struct tsb *tsb = mm->context.tsb_block[tsb_index].tsb; unsigned long tag; + if (unlikely(!tsb)) + return; + tsb += ((address >> tsb_hash_shift) & (mm->context.tsb_block[tsb_index].tsb_nentries - 1UL)); tag = (address >> 22UL); tsb_insert(tsb, tag, tte); } +#if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) +static inline bool is_hugetlb_pte(pte_t pte) +{ + if ((tlb_type == hypervisor && + (pte_val(pte) & _PAGE_SZALL_4V) == _PAGE_SZHUGE_4V) || + (tlb_type != hypervisor && + (pte_val(pte) & _PAGE_SZALL_4U) == _PAGE_SZHUGE_4U)) + return true; + return false; +} +#endif + void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) { - unsigned long tsb_index, tsb_hash_shift, flags; struct mm_struct *mm; + unsigned long flags; pte_t pte = *ptep; if (tlb_type != hypervisor) { @@ -335,25 +350,16 @@ mm = vma->vm_mm; - tsb_index = MM_TSB_BASE; - tsb_hash_shift = PAGE_SHIFT; - spin_lock_irqsave(&mm->context.lock, flags); #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) - if (mm->context.tsb_block[MM_TSB_HUGE].tsb != NULL) { - if ((tlb_type == hypervisor && - (pte_val(pte) & _PAGE_SZALL_4V) == _PAGE_SZHUGE_4V) || - (tlb_type != hypervisor && - (pte_val(pte) & _PAGE_SZALL_4U) == _PAGE_SZHUGE_4U)) { - tsb_index = MM_TSB_HUGE; - tsb_hash_shift = HPAGE_SHIFT; - } - } + if (mm->context.huge_pte_count && is_hugetlb_pte(pte)) + __update_mmu_tsb_insert(mm, MM_TSB_HUGE, HPAGE_SHIFT, + address, pte_val(pte)); + else #endif - - __update_mmu_tsb_insert(mm, tsb_index, tsb_hash_shift, - address, pte_val(pte)); + __update_mmu_tsb_insert(mm, MM_TSB_BASE, PAGE_SHIFT, + address, pte_val(pte)); spin_unlock_irqrestore(&mm->context.lock, flags); } @@ -1093,7 +1099,14 @@ m->size = *val; val = mdesc_get_property(md, node, "address-congruence-offset", NULL); - m->offset = *val; + + /* The address-congruence-offset property is optional. + * Explicity zero it be identifty this. + */ + if (val) + m->offset = *val; + else + m->offset = 0UL; numadbg("MBLOCK[%d]: base[%llx] size[%llx] offset[%llx]\n", count - 1, m->base, m->size, m->offset); @@ -2712,14 +2725,28 @@ load_secondary_context(mm); } -void hugetlb_setup(struct mm_struct *mm) +void hugetlb_setup(struct pt_regs *regs) { - struct tsb_config *tp = &mm->context.tsb_block[MM_TSB_HUGE]; + struct mm_struct *mm = current->mm; + struct tsb_config *tp; - if (likely(tp->tsb != NULL)) - return; + if (in_atomic() || !mm) { + const struct exception_table_entry *entry; + + entry = search_exception_tables(regs->tpc); + if (entry) { + regs->tpc = entry->fixup; + regs->tnpc = regs->tpc + 4; + return; + } + pr_alert("Unexpected HugeTLB setup in atomic context.\n"); + die_if_kernel("HugeTSB in atomic", regs); + } + + tp = &mm->context.tsb_block[MM_TSB_HUGE]; + if (likely(tp->tsb == NULL)) + tsb_grow(mm, MM_TSB_HUGE, 0); - tsb_grow(mm, MM_TSB_HUGE, 0); tsb_context_switch(mm); smp_tsb_sync(mm); --- linux-ppc-3.8.0.orig/arch/sparc/mm/swift.S +++ linux-ppc-3.8.0/arch/sparc/mm/swift.S @@ -105,7 +105,7 @@ .globl swift_flush_cache_range swift_flush_cache_range: - ld [%o0 + 0x0], %o0 /* XXX vma->vm_mm, GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 sub %o2, %o1, %o2 sethi %hi(4096), %o3 cmp %o2, %o3 @@ -116,7 +116,7 @@ .globl swift_flush_cache_page swift_flush_cache_page: - ld [%o0 + 0x0], %o0 /* XXX vma->vm_mm, GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 70: ld [%o0 + AOFF_mm_context], %g2 cmp %g2, -1 @@ -219,7 +219,7 @@ .globl swift_flush_tlb_range .globl swift_flush_tlb_all swift_flush_tlb_range: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 swift_flush_tlb_mm: ld [%o0 + AOFF_mm_context], %g2 cmp %g2, -1 @@ -233,7 +233,7 @@ .globl swift_flush_tlb_page swift_flush_tlb_page: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 mov SRMMU_CTX_REG, %g1 ld [%o0 + AOFF_mm_context], %o3 andn %o1, (PAGE_SIZE - 1), %o1 --- linux-ppc-3.8.0.orig/arch/sparc/mm/tlb.c +++ linux-ppc-3.8.0/arch/sparc/mm/tlb.c @@ -24,11 +24,17 @@ void flush_tlb_pending(void) { struct tlb_batch *tb = &get_cpu_var(tlb_batch); + struct mm_struct *mm = tb->mm; - if (tb->tlb_nr) { - flush_tsb_user(tb); + if (!tb->tlb_nr) + goto out; - if (CTX_VALID(tb->mm->context)) { + flush_tsb_user(tb); + + if (CTX_VALID(mm->context)) { + if (tb->tlb_nr == 1) { + global_flush_tlb_page(mm, tb->vaddrs[0]); + } else { #ifdef CONFIG_SMP smp_flush_tlb_pending(tb->mm, tb->tlb_nr, &tb->vaddrs[0]); @@ -37,12 +43,30 @@ tb->tlb_nr, &tb->vaddrs[0]); #endif } - tb->tlb_nr = 0; } + tb->tlb_nr = 0; + +out: put_cpu_var(tlb_batch); } +void arch_enter_lazy_mmu_mode(void) +{ + struct tlb_batch *tb = &__get_cpu_var(tlb_batch); + + tb->active = 1; +} + +void arch_leave_lazy_mmu_mode(void) +{ + struct tlb_batch *tb = &__get_cpu_var(tlb_batch); + + if (tb->tlb_nr) + flush_tlb_pending(); + tb->active = 0; +} + static void tlb_batch_add_one(struct mm_struct *mm, unsigned long vaddr, bool exec) { @@ -60,6 +84,12 @@ nr = 0; } + if (!tb->active) { + flush_tsb_user_page(mm, vaddr); + global_flush_tlb_page(mm, vaddr); + goto out; + } + if (nr == 0) tb->mm = mm; @@ -68,6 +98,7 @@ if (nr >= TLB_BATCH_NR) flush_tlb_pending(); +out: put_cpu_var(tlb_batch); } @@ -135,8 +166,15 @@ mm->context.huge_pte_count++; else mm->context.huge_pte_count--; - if (mm->context.huge_pte_count == 1) - hugetlb_setup(mm); + + /* Do not try to allocate the TSB hash table if we + * don't have one already. We have various locks held + * and thus we'll end up doing a GFP_KERNEL allocation + * in an atomic context. + * + * Instead, we let the first TLB miss on a hugepage + * take care of this. + */ } if (!pmd_none(orig)) { --- linux-ppc-3.8.0.orig/arch/sparc/mm/ultra.S +++ linux-ppc-3.8.0/arch/sparc/mm/ultra.S @@ -53,6 +53,33 @@ nop .align 32 + .globl __flush_tlb_page +__flush_tlb_page: /* 22 insns */ + /* %o0 = context, %o1 = vaddr */ + rdpr %pstate, %g7 + andn %g7, PSTATE_IE, %g2 + wrpr %g2, %pstate + mov SECONDARY_CONTEXT, %o4 + ldxa [%o4] ASI_DMMU, %g2 + stxa %o0, [%o4] ASI_DMMU + andcc %o1, 1, %g0 + andn %o1, 1, %o3 + be,pn %icc, 1f + or %o3, 0x10, %o3 + stxa %g0, [%o3] ASI_IMMU_DEMAP +1: stxa %g0, [%o3] ASI_DMMU_DEMAP + membar #Sync + stxa %g2, [%o4] ASI_DMMU + sethi %hi(KERNBASE), %o4 + flush %o4 + retl + wrpr %g7, 0x0, %pstate + nop + nop + nop + nop + + .align 32 .globl __flush_tlb_pending __flush_tlb_pending: /* 26 insns */ /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */ @@ -203,6 +230,31 @@ retl wrpr %g7, 0x0, %pstate +__cheetah_flush_tlb_page: /* 22 insns */ + /* %o0 = context, %o1 = vaddr */ + rdpr %pstate, %g7 + andn %g7, PSTATE_IE, %g2 + wrpr %g2, 0x0, %pstate + wrpr %g0, 1, %tl + mov PRIMARY_CONTEXT, %o4 + ldxa [%o4] ASI_DMMU, %g2 + srlx %g2, CTX_PGSZ1_NUC_SHIFT, %o3 + sllx %o3, CTX_PGSZ1_NUC_SHIFT, %o3 + or %o0, %o3, %o0 /* Preserve nucleus page size fields */ + stxa %o0, [%o4] ASI_DMMU + andcc %o1, 1, %g0 + be,pn %icc, 1f + andn %o1, 1, %o3 + stxa %g0, [%o3] ASI_IMMU_DEMAP +1: stxa %g0, [%o3] ASI_DMMU_DEMAP + membar #Sync + stxa %g2, [%o4] ASI_DMMU + sethi %hi(KERNBASE), %o4 + flush %o4 + wrpr %g0, 0, %tl + retl + wrpr %g7, 0x0, %pstate + __cheetah_flush_tlb_pending: /* 27 insns */ /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */ rdpr %pstate, %g7 @@ -269,6 +321,20 @@ retl nop +__hypervisor_flush_tlb_page: /* 11 insns */ + /* %o0 = context, %o1 = vaddr */ + mov %o0, %g2 + mov %o1, %o0 /* ARG0: vaddr + IMMU-bit */ + mov %g2, %o1 /* ARG1: mmu context */ + mov HV_MMU_ALL, %o2 /* ARG2: flags */ + srlx %o0, PAGE_SHIFT, %o0 + sllx %o0, PAGE_SHIFT, %o0 + ta HV_MMU_UNMAP_ADDR_TRAP + brnz,pn %o0, __hypervisor_tlb_tl0_error + mov HV_MMU_UNMAP_ADDR_TRAP, %o1 + retl + nop + __hypervisor_flush_tlb_pending: /* 16 insns */ /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */ sllx %o1, 3, %g1 @@ -339,6 +405,13 @@ call tlb_patch_one mov 19, %o2 + sethi %hi(__flush_tlb_page), %o0 + or %o0, %lo(__flush_tlb_page), %o0 + sethi %hi(__cheetah_flush_tlb_page), %o1 + or %o1, %lo(__cheetah_flush_tlb_page), %o1 + call tlb_patch_one + mov 22, %o2 + sethi %hi(__flush_tlb_pending), %o0 or %o0, %lo(__flush_tlb_pending), %o0 sethi %hi(__cheetah_flush_tlb_pending), %o1 @@ -397,10 +470,9 @@ nop nop - .globl xcall_flush_tlb_pending -xcall_flush_tlb_pending: /* 21 insns */ - /* %g5=context, %g1=nr, %g7=vaddrs[] */ - sllx %g1, 3, %g1 + .globl xcall_flush_tlb_page +xcall_flush_tlb_page: /* 17 insns */ + /* %g5=context, %g1=vaddr */ mov PRIMARY_CONTEXT, %g4 ldxa [%g4] ASI_DMMU, %g2 srlx %g2, CTX_PGSZ1_NUC_SHIFT, %g4 @@ -408,20 +480,16 @@ or %g5, %g4, %g5 mov PRIMARY_CONTEXT, %g4 stxa %g5, [%g4] ASI_DMMU -1: sub %g1, (1 << 3), %g1 - ldx [%g7 + %g1], %g5 - andcc %g5, 0x1, %g0 + andcc %g1, 0x1, %g0 be,pn %icc, 2f - - andn %g5, 0x1, %g5 + andn %g1, 0x1, %g5 stxa %g0, [%g5] ASI_IMMU_DEMAP 2: stxa %g0, [%g5] ASI_DMMU_DEMAP membar #Sync - brnz,pt %g1, 1b - nop stxa %g2, [%g4] ASI_DMMU retry nop + nop .globl xcall_flush_tlb_kernel_range xcall_flush_tlb_kernel_range: /* 25 insns */ @@ -656,15 +724,13 @@ membar #Sync retry - .globl __hypervisor_xcall_flush_tlb_pending -__hypervisor_xcall_flush_tlb_pending: /* 21 insns */ - /* %g5=ctx, %g1=nr, %g7=vaddrs[], %g2,%g3,%g4,g6=scratch */ - sllx %g1, 3, %g1 + .globl __hypervisor_xcall_flush_tlb_page +__hypervisor_xcall_flush_tlb_page: /* 17 insns */ + /* %g5=ctx, %g1=vaddr */ mov %o0, %g2 mov %o1, %g3 mov %o2, %g4 -1: sub %g1, (1 << 3), %g1 - ldx [%g7 + %g1], %o0 /* ARG0: virtual address */ + mov %g1, %o0 /* ARG0: virtual address */ mov %g5, %o1 /* ARG1: mmu context */ mov HV_MMU_ALL, %o2 /* ARG2: flags */ srlx %o0, PAGE_SHIFT, %o0 @@ -673,8 +739,6 @@ mov HV_MMU_UNMAP_ADDR_TRAP, %g6 brnz,a,pn %o0, __hypervisor_tlb_xcall_error mov %o0, %g5 - brnz,pt %g1, 1b - nop mov %g2, %o0 mov %g3, %o1 mov %g4, %o2 @@ -757,6 +821,13 @@ call tlb_patch_one mov 10, %o2 + sethi %hi(__flush_tlb_page), %o0 + or %o0, %lo(__flush_tlb_page), %o0 + sethi %hi(__hypervisor_flush_tlb_page), %o1 + or %o1, %lo(__hypervisor_flush_tlb_page), %o1 + call tlb_patch_one + mov 11, %o2 + sethi %hi(__flush_tlb_pending), %o0 or %o0, %lo(__flush_tlb_pending), %o0 sethi %hi(__hypervisor_flush_tlb_pending), %o1 @@ -788,12 +859,12 @@ call tlb_patch_one mov 21, %o2 - sethi %hi(xcall_flush_tlb_pending), %o0 - or %o0, %lo(xcall_flush_tlb_pending), %o0 - sethi %hi(__hypervisor_xcall_flush_tlb_pending), %o1 - or %o1, %lo(__hypervisor_xcall_flush_tlb_pending), %o1 + sethi %hi(xcall_flush_tlb_page), %o0 + or %o0, %lo(xcall_flush_tlb_page), %o0 + sethi %hi(__hypervisor_xcall_flush_tlb_page), %o1 + or %o1, %lo(__hypervisor_xcall_flush_tlb_page), %o1 call tlb_patch_one - mov 21, %o2 + mov 17, %o2 sethi %hi(xcall_flush_tlb_kernel_range), %o0 or %o0, %lo(xcall_flush_tlb_kernel_range), %o0 --- linux-ppc-3.8.0.orig/arch/sparc/mm/fault_64.c +++ linux-ppc-3.8.0/arch/sparc/mm/fault_64.c @@ -472,8 +472,13 @@ #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) mm_rss = mm->context.huge_pte_count; if (unlikely(mm_rss > - mm->context.tsb_block[MM_TSB_HUGE].tsb_rss_limit)) - tsb_grow(mm, MM_TSB_HUGE, mm_rss); + mm->context.tsb_block[MM_TSB_HUGE].tsb_rss_limit)) { + if (mm->context.tsb_block[MM_TSB_HUGE].tsb) + tsb_grow(mm, MM_TSB_HUGE, mm_rss); + else + hugetlb_setup(regs); + + } #endif return; --- linux-ppc-3.8.0.orig/arch/sparc/mm/viking.S +++ linux-ppc-3.8.0/arch/sparc/mm/viking.S @@ -108,7 +108,7 @@ viking_flush_cache_page: viking_flush_cache_range: #ifndef CONFIG_SMP - ld [%o0 + 0x0], %o0 /* XXX vma->vm_mm, GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 #endif viking_flush_cache_mm: #ifndef CONFIG_SMP @@ -148,7 +148,7 @@ #endif viking_flush_tlb_range: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 mov SRMMU_CTX_REG, %g1 ld [%o0 + AOFF_mm_context], %o3 lda [%g1] ASI_M_MMUREGS, %g5 @@ -173,7 +173,7 @@ #endif viking_flush_tlb_page: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 mov SRMMU_CTX_REG, %g1 ld [%o0 + AOFF_mm_context], %o3 lda [%g1] ASI_M_MMUREGS, %g5 @@ -239,7 +239,7 @@ tst %g5 bne 3f mov SRMMU_CTX_REG, %g1 - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 ld [%o0 + AOFF_mm_context], %o3 lda [%g1] ASI_M_MMUREGS, %g5 sethi %hi(~((1 << SRMMU_PGDIR_SHIFT) - 1)), %o4 @@ -265,7 +265,7 @@ tst %g5 bne 2f mov SRMMU_CTX_REG, %g1 - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 ld [%o0 + AOFF_mm_context], %o3 lda [%g1] ASI_M_MMUREGS, %g5 and %o1, PAGE_MASK, %o1 --- linux-ppc-3.8.0.orig/arch/sparc/mm/hypersparc.S +++ linux-ppc-3.8.0/arch/sparc/mm/hypersparc.S @@ -74,7 +74,7 @@ /* The things we do for performance... */ hypersparc_flush_cache_range: - ld [%o0 + 0x0], %o0 /* XXX vma->vm_mm, GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 #ifndef CONFIG_SMP ld [%o0 + AOFF_mm_context], %g1 cmp %g1, -1 @@ -163,7 +163,7 @@ */ /* Verified, my ass... */ hypersparc_flush_cache_page: - ld [%o0 + 0x0], %o0 /* XXX vma->vm_mm, GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 ld [%o0 + AOFF_mm_context], %g2 #ifndef CONFIG_SMP cmp %g2, -1 @@ -284,7 +284,7 @@ sta %g5, [%g1] ASI_M_MMUREGS hypersparc_flush_tlb_range: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 mov SRMMU_CTX_REG, %g1 ld [%o0 + AOFF_mm_context], %o3 lda [%g1] ASI_M_MMUREGS, %g5 @@ -307,7 +307,7 @@ sta %g5, [%g1] ASI_M_MMUREGS hypersparc_flush_tlb_page: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 mov SRMMU_CTX_REG, %g1 ld [%o0 + AOFF_mm_context], %o3 andn %o1, (PAGE_SIZE - 1), %o1 --- linux-ppc-3.8.0.orig/arch/sparc/mm/tsb.c +++ linux-ppc-3.8.0/arch/sparc/mm/tsb.c @@ -7,11 +7,10 @@ #include #include #include -#include -#include -#include #include +#include #include +#include #include extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES]; @@ -46,23 +45,27 @@ } } -static void __flush_tsb_one(struct tlb_batch *tb, unsigned long hash_shift, - unsigned long tsb, unsigned long nentries) +static void __flush_tsb_one_entry(unsigned long tsb, unsigned long v, + unsigned long hash_shift, + unsigned long nentries) { - unsigned long i; + unsigned long tag, ent, hash; - for (i = 0; i < tb->tlb_nr; i++) { - unsigned long v = tb->vaddrs[i]; - unsigned long tag, ent, hash; + v &= ~0x1UL; + hash = tsb_hash(v, hash_shift, nentries); + ent = tsb + (hash * sizeof(struct tsb)); + tag = (v >> 22UL); - v &= ~0x1UL; + tsb_flush(ent, tag); +} - hash = tsb_hash(v, hash_shift, nentries); - ent = tsb + (hash * sizeof(struct tsb)); - tag = (v >> 22UL); +static void __flush_tsb_one(struct tlb_batch *tb, unsigned long hash_shift, + unsigned long tsb, unsigned long nentries) +{ + unsigned long i; - tsb_flush(ent, tag); - } + for (i = 0; i < tb->tlb_nr; i++) + __flush_tsb_one_entry(tsb, tb->vaddrs[i], hash_shift, nentries); } void flush_tsb_user(struct tlb_batch *tb) @@ -90,6 +93,30 @@ spin_unlock_irqrestore(&mm->context.lock, flags); } +void flush_tsb_user_page(struct mm_struct *mm, unsigned long vaddr) +{ + unsigned long nentries, base, flags; + + spin_lock_irqsave(&mm->context.lock, flags); + + base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb; + nentries = mm->context.tsb_block[MM_TSB_BASE].tsb_nentries; + if (tlb_type == cheetah_plus || tlb_type == hypervisor) + base = __pa(base); + __flush_tsb_one_entry(base, vaddr, PAGE_SHIFT, nentries); + +#if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) + if (mm->context.tsb_block[MM_TSB_HUGE].tsb) { + base = (unsigned long) mm->context.tsb_block[MM_TSB_HUGE].tsb; + nentries = mm->context.tsb_block[MM_TSB_HUGE].tsb_nentries; + if (tlb_type == cheetah_plus || tlb_type == hypervisor) + base = __pa(base); + __flush_tsb_one_entry(base, vaddr, HPAGE_SHIFT, nentries); + } +#endif + spin_unlock_irqrestore(&mm->context.lock, flags); +} + #define HV_PGSZ_IDX_BASE HV_PGSZ_IDX_8K #define HV_PGSZ_MASK_BASE HV_PGSZ_MASK_8K @@ -314,7 +341,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-ppc-3.8.0.orig/arch/sparc/mm/tsunami.S +++ linux-ppc-3.8.0/arch/sparc/mm/tsunami.S @@ -24,7 +24,7 @@ /* Sliiick... */ tsunami_flush_cache_page: tsunami_flush_cache_range: - ld [%o0 + 0x0], %o0 /* XXX vma->vm_mm, GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 tsunami_flush_cache_mm: ld [%o0 + AOFF_mm_context], %g2 cmp %g2, -1 @@ -46,7 +46,7 @@ /* More slick stuff... */ tsunami_flush_tlb_range: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 tsunami_flush_tlb_mm: ld [%o0 + AOFF_mm_context], %g2 cmp %g2, -1 @@ -65,7 +65,7 @@ /* This one can be done in a fine grained manner... */ tsunami_flush_tlb_page: - ld [%o0 + 0x00], %o0 /* XXX vma->vm_mm GROSS XXX */ + ld [%o0 + VMA_VM_MM], %o0 mov SRMMU_CTX_REG, %g1 ld [%o0 + AOFF_mm_context], %o3 andn %o1, (PAGE_SIZE - 1), %o1 --- linux-ppc-3.8.0.orig/arch/m68k/kernel/head.S +++ linux-ppc-3.8.0/arch/m68k/kernel/head.S @@ -2752,11 +2752,9 @@ #ifdef CONFIG_MAC L(scc_initable_mac): - .byte 9,12 /* Reset */ .byte 4,0x44 /* x16, 1 stopbit, no parity */ .byte 3,0xc0 /* receiver: 8 bpc */ .byte 5,0xe2 /* transmitter: 8 bpc, assert dtr/rts */ - .byte 9,0 /* no interrupts */ .byte 10,0 /* NRZ */ .byte 11,0x50 /* use baud rate generator */ .byte 12,1,13,0 /* 38400 baud */ @@ -2899,6 +2897,7 @@ is_not_mac(L(serial_init_not_mac)) #ifdef SERIAL_DEBUG + /* You may define either or both of these. */ #define MAC_USE_SCC_A /* Modem port */ #define MAC_USE_SCC_B /* Printer port */ @@ -2908,9 +2907,21 @@ #define mac_scc_cha_b_data_offset 0x4 #define mac_scc_cha_a_data_offset 0x6 +#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B) + movel %pc@(L(mac_sccbase)),%a0 + /* Reset SCC device */ + moveb #9,%a0@(mac_scc_cha_a_ctrl_offset) + moveb #0xc0,%a0@(mac_scc_cha_a_ctrl_offset) + /* Wait for 5 PCLK cycles, which is about 68 CPU cycles */ + /* 5 / 3.6864 MHz = approx. 1.36 us = 68 / 50 MHz */ + movel #35,%d0 +5: + subq #1,%d0 + jne 5b +#endif + #ifdef MAC_USE_SCC_A /* Initialize channel A */ - movel %pc@(L(mac_sccbase)),%a0 lea %pc@(L(scc_initable_mac)),%a1 5: moveb %a1@+,%d0 jmi 6f @@ -2922,9 +2933,6 @@ #ifdef MAC_USE_SCC_B /* Initialize channel B */ -#ifndef MAC_USE_SCC_A /* Load mac_sccbase only if needed */ - movel %pc@(L(mac_sccbase)),%a0 -#endif /* MAC_USE_SCC_A */ lea %pc@(L(scc_initable_mac)),%a1 7: moveb %a1@+,%d0 jmi 8f @@ -2933,6 +2941,7 @@ jra 7b 8: #endif /* MAC_USE_SCC_B */ + #endif /* SERIAL_DEBUG */ jra L(serial_init_done) @@ -3006,17 +3015,17 @@ #ifdef SERIAL_DEBUG -#ifdef MAC_USE_SCC_A +#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B) movel %pc@(L(mac_sccbase)),%a1 +#endif + +#ifdef MAC_USE_SCC_A 3: btst #2,%a1@(mac_scc_cha_a_ctrl_offset) jeq 3b moveb %d0,%a1@(mac_scc_cha_a_data_offset) #endif /* MAC_USE_SCC_A */ #ifdef MAC_USE_SCC_B -#ifndef MAC_USE_SCC_A /* Load mac_sccbase only if needed */ - movel %pc@(L(mac_sccbase)),%a1 -#endif /* MAC_USE_SCC_A */ 4: btst #2,%a1@(mac_scc_cha_b_ctrl_offset) jeq 4b moveb %d0,%a1@(mac_scc_cha_b_data_offset) --- linux-ppc-3.8.0.orig/arch/m68k/include/asm/div64.h +++ linux-ppc-3.8.0/arch/m68k/include/asm/div64.h @@ -15,16 +15,17 @@ unsigned long long n64; \ } __n; \ unsigned long __rem, __upper; \ + unsigned long __base = (base); \ \ __n.n64 = (n); \ if ((__upper = __n.n32[0])) { \ asm ("divul.l %2,%1:%0" \ - : "=d" (__n.n32[0]), "=d" (__upper) \ - : "d" (base), "0" (__n.n32[0])); \ + : "=d" (__n.n32[0]), "=d" (__upper) \ + : "d" (__base), "0" (__n.n32[0])); \ } \ asm ("divu.l %2,%1:%0" \ - : "=d" (__n.n32[1]), "=d" (__rem) \ - : "d" (base), "1" (__upper), "0" (__n.n32[1])); \ + : "=d" (__n.n32[1]), "=d" (__rem) \ + : "d" (__base), "1" (__upper), "0" (__n.n32[1])); \ (n) = __n.n64; \ __rem; \ }) --- linux-ppc-3.8.0.orig/arch/m68k/include/asm/signal.h +++ linux-ppc-3.8.0/arch/m68k/include/asm/signal.h @@ -29,6 +29,7 @@ __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/m68k/emu/natfeat.c +++ linux-ppc-3.8.0/arch/m68k/emu/natfeat.c @@ -18,9 +18,11 @@ #include #include +extern long nf_get_id2(const char *feature_name); + asm("\n" -" .global nf_get_id,nf_call\n" -"nf_get_id:\n" +" .global nf_get_id2,nf_call\n" +"nf_get_id2:\n" " .short 0x7300\n" " rts\n" "nf_call:\n" @@ -29,12 +31,25 @@ "1: moveq.l #0,%d0\n" " rts\n" " .section __ex_table,\"a\"\n" -" .long nf_get_id,1b\n" +" .long nf_get_id2,1b\n" " .long nf_call,1b\n" " .previous"); -EXPORT_SYMBOL_GPL(nf_get_id); EXPORT_SYMBOL_GPL(nf_call); +long nf_get_id(const char *feature_name) +{ + /* feature_name may be in vmalloc()ed memory, so make a copy */ + char name_copy[32]; + size_t n; + + n = strlcpy(name_copy, feature_name, sizeof(name_copy)); + if (n >= sizeof(name_copy)) + return 0; + + return nf_get_id2(name_copy); +} +EXPORT_SYMBOL_GPL(nf_get_id); + void nfprint(const char *fmt, ...) { static char buf[256]; --- linux-ppc-3.8.0.orig/arch/ia64/kernel/irq.c +++ linux-ppc-3.8.0/arch/ia64/kernel/irq.c @@ -23,6 +23,8 @@ #include #include +#include + /* * 'what should we do if we get a hw irq event on an illegal vector'. * each architecture has to answer this themselves. @@ -83,6 +85,12 @@ #endif /* CONFIG_SMP */ +int __init arch_early_irq_init(void) +{ + ia64_mca_irq_init(); + return 0; +} + #ifdef CONFIG_HOTPLUG_CPU unsigned int vectors_in_migration[NR_IRQS]; --- linux-ppc-3.8.0.orig/arch/ia64/kernel/mca.c +++ linux-ppc-3.8.0/arch/ia64/kernel/mca.c @@ -2074,22 +2074,16 @@ printk(KERN_INFO "MCA related initialization done\n"); } + /* - * ia64_mca_late_init - * - * Opportunity to setup things that require initialization later - * than ia64_mca_init. Setup a timer to poll for CPEs if the - * platform doesn't support an interrupt driven mechanism. - * - * Inputs : None - * Outputs : Status + * These pieces cannot be done in ia64_mca_init() because it is called before + * early_irq_init() which would wipe out our percpu irq registrations. But we + * cannot leave them until ia64_mca_late_init() because by then all the other + * processors have been brought online and have set their own CMC vectors to + * point at a non-existant action. Called from arch_early_irq_init(). */ -static int __init -ia64_mca_late_init(void) +void __init ia64_mca_irq_init(void) { - if (!mca_init) - return 0; - /* * Configure the CMCI/P vector and handler. Interrupts for CMC are * per-processor, so AP CMC interrupts are setup in smp_callin() (smpboot.c). @@ -2108,6 +2102,23 @@ /* Setup the CPEI/P handler */ register_percpu_irq(IA64_CPEP_VECTOR, &mca_cpep_irqaction); #endif +} + +/* + * ia64_mca_late_init + * + * Opportunity to setup things that require initialization later + * than ia64_mca_init. Setup a timer to poll for CPEs if the + * platform doesn't support an interrupt driven mechanism. + * + * Inputs : None + * Outputs : Status + */ +static int __init +ia64_mca_late_init(void) +{ + if (!mca_init) + return 0; register_hotcpu_notifier(&mca_cpu_notifier); --- linux-ppc-3.8.0.orig/arch/ia64/kvm/vtlb.c +++ linux-ppc-3.8.0/arch/ia64/kvm/vtlb.c @@ -256,7 +256,7 @@ "srlz.d;;" "ssm psr.i;;" "srlz.d;;" - : "=r"(ret) : "r"(iha), "r"(pte):"memory"); + : "=&r"(ret) : "r"(iha), "r"(pte) : "memory"); return ret; } --- linux-ppc-3.8.0.orig/arch/ia64/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/ia64/include/asm/tlb.h @@ -22,7 +22,7 @@ * unmapping a portion of the virtual address space, these hooks are called according to * the following template: * - * tlb <- tlb_gather_mmu(mm, full_mm_flush); // start unmap for address space MM + * tlb <- tlb_gather_mmu(mm, start, end); // start unmap for address space MM * { * for each vma that needs a shootdown do { * tlb_start_vma(tlb, vma); @@ -46,12 +46,6 @@ #include #include -#ifdef CONFIG_SMP -# define tlb_fast_mode(tlb) ((tlb)->nr == ~0U) -#else -# define tlb_fast_mode(tlb) (1) -#endif - /* * If we can't allocate a page to make a big batch of page pointers * to work on, then just handle a few from the on-stack structure. @@ -60,10 +54,11 @@ struct mmu_gather { struct mm_struct *mm; - unsigned int nr; /* == ~0U => fast mode */ + unsigned int nr; unsigned int max; unsigned char fullmm; /* non-zero means full mm flush */ unsigned char need_flush; /* really unmapped some PTEs? */ + unsigned long start, end; unsigned long start_addr; unsigned long end_addr; struct page **pages; @@ -103,6 +98,7 @@ static inline void ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) { + unsigned long i; unsigned int nr; if (!tlb->need_flush) @@ -141,13 +137,11 @@ /* lastly, release the freed pages */ nr = tlb->nr; - if (!tlb_fast_mode(tlb)) { - unsigned long i; - tlb->nr = 0; - tlb->start_addr = ~0UL; - for (i = 0; i < nr; ++i) - free_page_and_swap_cache(tlb->pages[i]); - } + + tlb->nr = 0; + tlb->start_addr = ~0UL; + for (i = 0; i < nr; ++i) + free_page_and_swap_cache(tlb->pages[i]); } static inline void __tlb_alloc_page(struct mmu_gather *tlb) @@ -162,26 +156,15 @@ static inline void -tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int full_mm_flush) +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) { tlb->mm = mm; tlb->max = ARRAY_SIZE(tlb->local); tlb->pages = tlb->local; - /* - * Use fast mode if only 1 CPU is online. - * - * It would be tempting to turn on fast-mode for full_mm_flush as well. But this - * doesn't work because of speculative accesses and software prefetching: the page - * table of "mm" may (and usually is) the currently active page table and even - * though the kernel won't do any user-space accesses during the TLB shoot down, a - * compiler might use speculation or lfetch.fault on what happens to be a valid - * user-space address. This in turn could trigger a TLB miss fault (or a VHPT - * walk) and re-insert a TLB entry we just removed. Slow mode avoids such - * problems. (We could make fast-mode work by switching the current task to a - * different "mm" during the shootdown.) --davidm 08/02/2002 - */ - tlb->nr = (num_online_cpus() == 1) ? ~0U : 0; - tlb->fullmm = full_mm_flush; + tlb->nr = 0; + tlb->fullmm = !(start | (end+1)); + tlb->start = start; + tlb->end = end; tlb->start_addr = ~0UL; } @@ -214,11 +197,6 @@ { tlb->need_flush = 1; - if (tlb_fast_mode(tlb)) { - free_page_and_swap_cache(page); - return 1; /* avoid calling tlb_flush_mmu */ - } - if (!tlb->nr && tlb->pages == tlb->local) __tlb_alloc_page(tlb); --- linux-ppc-3.8.0.orig/arch/ia64/include/asm/futex.h +++ linux-ppc-3.8.0/arch/ia64/include/asm/futex.h @@ -106,16 +106,15 @@ return -EFAULT; { - register unsigned long r8 __asm ("r8"); + register unsigned long r8 __asm ("r8") = 0; unsigned long prev; __asm__ __volatile__( " mf;; \n" - " mov %0=r0 \n" " mov ar.ccv=%4;; \n" "[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n" " .xdata4 \"__ex_table\", 1b-., 2f-. \n" "[2:]" - : "=r" (r8), "=r" (prev) + : "+r" (r8), "=&r" (prev) : "r" (uaddr), "r" (newval), "rO" ((long) (unsigned) oldval) : "memory"); --- linux-ppc-3.8.0.orig/arch/ia64/include/asm/mca.h +++ linux-ppc-3.8.0/arch/ia64/include/asm/mca.h @@ -143,6 +143,7 @@ extern int cpe_vector; extern int ia64_cpe_irq; extern void ia64_mca_init(void); +extern void ia64_mca_irq_init(void); extern void ia64_mca_cpu_init(void *); extern void ia64_os_mca_dispatch(void); extern void ia64_os_mca_dispatch_end(void); --- linux-ppc-3.8.0.orig/arch/m32r/include/asm/signal.h +++ linux-ppc-3.8.0/arch/m32r/include/asm/signal.h @@ -22,6 +22,7 @@ __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/tile/Kconfig +++ linux-ppc-3.8.0/arch/tile/Kconfig @@ -366,11 +366,17 @@ config KERNEL_PL int "Processor protection level for kernel" range 1 2 - default "1" + default 2 if TILEGX + default 1 if !TILEGX ---help--- - This setting determines the processor protection level the - kernel will be built to run at. Generally you should use - the default value here. + Since MDE 4.2, the Tilera hypervisor runs the kernel + at PL2 by default. If running under an older hypervisor, + or as a KVM guest, you must run at PL1. (The current + hypervisor may also be recompiled with "make HV_PL=2" to + allow it to run a kernel at PL1, but clients running at PL1 + are not expected to be supported indefinitely.) + + If you're not sure, don't change the default. source "arch/tile/gxio/Kconfig" --- linux-ppc-3.8.0.orig/arch/tile/kernel/compat.c +++ linux-ppc-3.8.0/arch/tile/kernel/compat.c @@ -76,6 +76,18 @@ ((loff_t)len_hi << 32) | len_lo); } +/* + * Avoid bug in generic sys_llseek() that specifies offset_high and + * offset_low as "unsigned long", thus making it possible to pass + * a sign-extended high 32 bits in offset_low. + */ +long compat_sys_llseek(unsigned int fd, unsigned int offset_high, + unsigned int offset_low, loff_t __user * result, + unsigned int origin) +{ + return sys_llseek(fd, offset_high, offset_low, result, origin); +} + /* Provide the compat syscall number to call mapping. */ #undef __SYSCALL #define __SYSCALL(nr, call) [nr] = (call), @@ -83,6 +95,7 @@ /* See comments in sys.c */ #define compat_sys_fadvise64_64 sys32_fadvise64_64 #define compat_sys_readahead sys32_readahead +#define sys_llseek compat_sys_llseek /* Call the assembly trampolines where necessary. */ #define compat_sys_rt_sigreturn _compat_sys_rt_sigreturn --- linux-ppc-3.8.0.orig/arch/tile/kernel/setup.c +++ linux-ppc-3.8.0/arch/tile/kernel/setup.c @@ -1004,15 +1004,8 @@ #ifdef CONFIG_BLK_DEV_INITRD -/* - * Note that the kernel can potentially support other compression - * techniques than gz, though we don't do so by default. If we ever - * decide to do so we can either look for other filename extensions, - * or just allow a file with this name to be compressed with an - * arbitrary compressor (somewhat counterintuitively). - */ static int __initdata set_initramfs_file; -static char __initdata initramfs_file[128] = "initramfs.cpio.gz"; +static char __initdata initramfs_file[128] = "initramfs"; static int __init setup_initramfs_file(char *str) { @@ -1026,9 +1019,9 @@ early_param("initramfs_file", setup_initramfs_file); /* - * We look for an "initramfs.cpio.gz" file in the hvfs. - * If there is one, we allocate some memory for it and it will be - * unpacked to the initramfs. + * We look for a file called "initramfs" in the hvfs. If there is one, we + * allocate some memory for it and it will be unpacked to the initramfs. + * If it's compressed, the initd code will uncompress it first. */ static void __init load_hv_initrd(void) { @@ -1038,10 +1031,16 @@ fd = hv_fs_findfile((HV_VirtAddr) initramfs_file); if (fd == HV_ENOENT) { - if (set_initramfs_file) + if (set_initramfs_file) { pr_warning("No such hvfs initramfs file '%s'\n", initramfs_file); - return; + return; + } else { + /* Try old backwards-compatible name. */ + fd = hv_fs_findfile((HV_VirtAddr)"initramfs.cpio.gz"); + if (fd == HV_ENOENT) + return; + } } BUG_ON(fd < 0); stat = hv_fs_fstat(fd); --- linux-ppc-3.8.0.orig/arch/tile/kernel/head_64.S +++ linux-ppc-3.8.0/arch/tile/kernel/head_64.S @@ -34,13 +34,19 @@ ENTRY(_start) /* Notify the hypervisor of what version of the API we want */ { +#if KERNEL_PL == 1 && _HV_VERSION == 13 + /* Support older hypervisors by asking for API version 12. */ + movei r0, _HV_VERSION_OLD_HV_INIT +#else + movei r0, _HV_VERSION +#endif movei r1, TILE_CHIP - movei r2, TILE_CHIP_REV } { - moveli r0, _HV_VERSION - jal hv_init + movei r2, TILE_CHIP_REV + movei r3, KERNEL_PL } + jal hv_init /* Get a reasonable default ASID in r0 */ { move r0, zero --- linux-ppc-3.8.0.orig/arch/tile/kernel/head_32.S +++ linux-ppc-3.8.0/arch/tile/kernel/head_32.S @@ -38,7 +38,7 @@ movei r2, TILE_CHIP_REV } { - moveli r0, _HV_VERSION + moveli r0, _HV_VERSION_OLD_HV_INIT jal hv_init } /* Get a reasonable default ASID in r0 */ --- linux-ppc-3.8.0.orig/arch/tile/include/hv/hypervisor.h +++ linux-ppc-3.8.0/arch/tile/include/hv/hypervisor.h @@ -107,7 +107,22 @@ #define HV_DISPATCH_ENTRY_SIZE 32 /** Version of the hypervisor interface defined by this file */ -#define _HV_VERSION 11 +#define _HV_VERSION 13 + +/** Last version of the hypervisor interface with old hv_init() ABI. + * + * The change from version 12 to version 13 corresponds to launching + * the client by default at PL2 instead of PL1 (corresponding to the + * hv itself running at PL3 instead of PL2). To make this explicit, + * the hv_init() API was also extended so the client can report its + * desired PL, resulting in a more helpful failure diagnostic. If you + * call hv_init() with _HV_VERSION_OLD_HV_INIT and omit the client_pl + * argument, the hypervisor will assume client_pl = 1. + * + * Note that this is a deprecated solution and we do not expect to + * support clients of the Tilera hypervisor running at PL1 indefinitely. + */ +#define _HV_VERSION_OLD_HV_INIT 12 /* Index into hypervisor interface dispatch code blocks. * @@ -377,7 +392,11 @@ #ifndef __ASSEMBLER__ /** Pass HV_VERSION to hv_init to request this version of the interface. */ -typedef enum { HV_VERSION = _HV_VERSION } HV_VersionNumber; +typedef enum { + HV_VERSION = _HV_VERSION, + HV_VERSION_OLD_HV_INIT = _HV_VERSION_OLD_HV_INIT, + +} HV_VersionNumber; /** Initializes the hypervisor. * @@ -385,9 +404,11 @@ * that this program expects, typically HV_VERSION. * @param chip_num Architecture number of the chip the client was built for. * @param chip_rev_num Revision number of the chip the client was built for. + * @param client_pl Privilege level the client is built for + * (not required if interface_version_number == HV_VERSION_OLD_HV_INIT). */ void hv_init(HV_VersionNumber interface_version_number, - int chip_num, int chip_rev_num); + int chip_num, int chip_rev_num, int client_pl); /** Queries we can make for hv_sysconf(). --- linux-ppc-3.8.0.orig/arch/tile/include/asm/compat.h +++ linux-ppc-3.8.0/arch/tile/include/asm/compat.h @@ -296,6 +296,9 @@ long compat_sys_fallocate(int fd, int mode, u32 offset_lo, u32 offset_hi, u32 len_lo, u32 len_hi); +long compat_sys_llseek(unsigned int fd, unsigned int offset_high, + unsigned int offset_low, loff_t __user * result, + unsigned int origin); /* Assembly trampoline to avoid clobbering r0. */ long _compat_sys_rt_sigreturn(void); --- linux-ppc-3.8.0.orig/arch/tile/lib/exports.c +++ linux-ppc-3.8.0/arch/tile/lib/exports.c @@ -84,4 +84,6 @@ EXPORT_SYMBOL(__ashrdi3); uint64_t __ashldi3(uint64_t, unsigned int); EXPORT_SYMBOL(__ashldi3); +int __ffsdi2(uint64_t); +EXPORT_SYMBOL(__ffsdi2); #endif --- linux-ppc-3.8.0.orig/arch/xtensa/include/asm/signal.h +++ linux-ppc-3.8.0/arch/xtensa/include/asm/signal.h @@ -21,6 +21,7 @@ void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/sh/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/sh/include/asm/tlb.h @@ -36,10 +36,12 @@ } static inline void -tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int full_mm_flush) +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) { tlb->mm = mm; - tlb->fullmm = full_mm_flush; + tlb->start = start; + tlb->end = end; + tlb->fullmm = !(start | (end+1)); init_tlb_gather(tlb); } --- linux-ppc-3.8.0.orig/arch/um/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/um/include/asm/tlb.h @@ -45,10 +45,12 @@ } static inline void -tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int full_mm_flush) +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) { tlb->mm = mm; - tlb->fullmm = full_mm_flush; + tlb->start = start; + tlb->end = end; + tlb->fullmm = !(start | (end+1)); init_tlb_gather(tlb); } --- linux-ppc-3.8.0.orig/arch/microblaze/Kconfig +++ linux-ppc-3.8.0/arch/microblaze/Kconfig @@ -26,7 +26,7 @@ select GENERIC_ATOMIC64 select GENERIC_CLOCKEVENTS select MODULES_USE_ELF_RELA - select CLONE_BACKWARDS + select CLONE_BACKWARDS3 config SWAP def_bool n --- linux-ppc-3.8.0.orig/arch/s390/kernel/ipl.c +++ linux-ppc-3.8.0/arch/s390/kernel/ipl.c @@ -754,9 +754,9 @@ .write = reipl_fcp_scpdata_write, }; -DEFINE_IPL_ATTR_RW(reipl_fcp, wwpn, "0x%016llx\n", "%016llx\n", +DEFINE_IPL_ATTR_RW(reipl_fcp, wwpn, "0x%016llx\n", "%llx\n", reipl_block_fcp->ipl_info.fcp.wwpn); -DEFINE_IPL_ATTR_RW(reipl_fcp, lun, "0x%016llx\n", "%016llx\n", +DEFINE_IPL_ATTR_RW(reipl_fcp, lun, "0x%016llx\n", "%llx\n", reipl_block_fcp->ipl_info.fcp.lun); DEFINE_IPL_ATTR_RW(reipl_fcp, bootprog, "%lld\n", "%lld\n", reipl_block_fcp->ipl_info.fcp.bootprog); @@ -1323,9 +1323,9 @@ /* FCP dump device attributes */ -DEFINE_IPL_ATTR_RW(dump_fcp, wwpn, "0x%016llx\n", "%016llx\n", +DEFINE_IPL_ATTR_RW(dump_fcp, wwpn, "0x%016llx\n", "%llx\n", dump_block_fcp->ipl_info.fcp.wwpn); -DEFINE_IPL_ATTR_RW(dump_fcp, lun, "0x%016llx\n", "%016llx\n", +DEFINE_IPL_ATTR_RW(dump_fcp, lun, "0x%016llx\n", "%llx\n", dump_block_fcp->ipl_info.fcp.lun); DEFINE_IPL_ATTR_RW(dump_fcp, bootprog, "%lld\n", "%lld\n", dump_block_fcp->ipl_info.fcp.bootprog); --- linux-ppc-3.8.0.orig/arch/s390/kernel/entry64.S +++ linux-ppc-3.8.0/arch/s390/kernel/entry64.S @@ -678,8 +678,9 @@ UPDATE_VTIME %r14,__LC_MCCK_ENTER_TIMER LAST_BREAK %r14 mcck_skip: - lghi %r14,__LC_GPREGS_SAVE_AREA - mvc __PT_R0(128,%r11),0(%r14) + lghi %r14,__LC_GPREGS_SAVE_AREA+64 + stmg %r0,%r7,__PT_R0(%r11) + mvc __PT_R8(64,%r11),0(%r14) stmg %r8,%r9,__PT_PSW(%r11) xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) lgr %r2,%r11 # pass pointer to pt_regs --- linux-ppc-3.8.0.orig/arch/s390/kernel/entry.S +++ linux-ppc-3.8.0/arch/s390/kernel/entry.S @@ -636,7 +636,8 @@ UPDATE_VTIME %r14,%r15,__LC_MCCK_ENTER_TIMER mcck_skip: SWITCH_ASYNC __LC_GPREGS_SAVE_AREA+32,__LC_PANIC_STACK,PAGE_SHIFT - mvc __PT_R0(64,%r11),__LC_GPREGS_SAVE_AREA + stm %r0,%r7,__PT_R0(%r11) + mvc __PT_R8(32,%r11),__LC_GPREGS_SAVE_AREA+32 stm %r8,%r9,__PT_PSW(%r11) xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15) l %r1,BASED(.Ldo_machine_check) --- linux-ppc-3.8.0.orig/arch/s390/kvm/kvm-s390.c +++ linux-ppc-3.8.0/arch/s390/kvm/kvm-s390.c @@ -613,14 +613,25 @@ kvm_s390_deliver_pending_interrupts(vcpu); vcpu->arch.sie_block->icptcode = 0; - preempt_disable(); - kvm_guest_enter(); - preempt_enable(); VCPU_EVENT(vcpu, 6, "entering sie flags %x", atomic_read(&vcpu->arch.sie_block->cpuflags)); trace_kvm_s390_sie_enter(vcpu, atomic_read(&vcpu->arch.sie_block->cpuflags)); + + /* + * As PF_VCPU will be used in fault handler, between guest_enter + * and guest_exit should be no uaccess. + */ + preempt_disable(); + kvm_guest_enter(); + preempt_enable(); rc = sie64a(vcpu->arch.sie_block, vcpu->run->s.regs.gprs); + kvm_guest_exit(); + + VCPU_EVENT(vcpu, 6, "exit sie icptcode %d", + vcpu->arch.sie_block->icptcode); + trace_kvm_s390_sie_exit(vcpu, vcpu->arch.sie_block->icptcode); + if (rc) { if (kvm_is_ucontrol(vcpu->kvm)) { rc = SIE_INTERCEPT_UCONTROL; @@ -631,10 +642,6 @@ rc = 0; } } - VCPU_EVENT(vcpu, 6, "exit sie icptcode %d", - vcpu->arch.sie_block->icptcode); - trace_kvm_s390_sie_exit(vcpu, vcpu->arch.sie_block->icptcode); - kvm_guest_exit(); memcpy(&vcpu->run->s.regs.gprs[14], &vcpu->arch.sie_block->gg14, 16); return rc; @@ -766,6 +773,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; --- linux-ppc-3.8.0.orig/arch/s390/include/asm/bitops.h +++ linux-ppc-3.8.0/arch/s390/include/asm/bitops.h @@ -698,7 +698,7 @@ size -= offset; p = addr + offset / __BITOPS_WORDSIZE; if (bit) { - set = __flo_word(0, *p & (~0UL << bit)); + set = __flo_word(0, *p & (~0UL >> bit)); if (set >= size) return size + offset; if (set < __BITOPS_WORDSIZE) --- linux-ppc-3.8.0.orig/arch/s390/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/s390/include/asm/tlb.h @@ -32,6 +32,7 @@ struct mm_struct *mm; struct mmu_table_batch *batch; unsigned int fullmm; + unsigned long start, end; }; struct mmu_table_batch { @@ -48,10 +49,13 @@ static inline void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, - unsigned int full_mm_flush) + unsigned long start, + unsigned long end) { tlb->mm = mm; - tlb->fullmm = full_mm_flush; + tlb->start = start; + tlb->end = end; + tlb->fullmm = !(start | (end+1)); tlb->batch = NULL; if (tlb->fullmm) __tlb_flush_mm(mm); --- linux-ppc-3.8.0.orig/arch/s390/include/asm/signal.h +++ linux-ppc-3.8.0/arch/s390/include/asm/signal.h @@ -34,6 +34,7 @@ void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/s390/include/asm/io.h +++ linux-ppc-3.8.0/arch/s390/include/asm/io.h @@ -50,10 +50,6 @@ #define ioremap_nocache(addr, size) ioremap(addr, size) #define ioremap_wc ioremap_nocache -/* TODO: s390 cannot support io_remap_pfn_range... */ -#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ - remap_pfn_range(vma, vaddr, pfn, size, prot) - static inline void __iomem *ioremap(unsigned long offset, unsigned long size) { return (void __iomem *) offset; --- linux-ppc-3.8.0.orig/arch/s390/include/asm/pgtable.h +++ linux-ppc-3.8.0/arch/s390/include/asm/pgtable.h @@ -56,6 +56,10 @@ (((unsigned long)(vaddr)) &zero_page_mask)))) #define __HAVE_COLOR_ZERO_PAGE +/* TODO: s390 cannot support io_remap_pfn_range... */ +#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ + remap_pfn_range(vma, vaddr, pfn, size, prot) + #endif /* !__ASSEMBLY__ */ /* --- linux-ppc-3.8.0.orig/arch/s390/include/asm/tlbflush.h +++ linux-ppc-3.8.0/arch/s390/include/asm/tlbflush.h @@ -74,8 +74,6 @@ static inline void __tlb_flush_mm(struct mm_struct * mm) { - if (unlikely(cpumask_empty(mm_cpumask(mm)))) - return; /* * If the machine has IDTE we prefer to do a per mm flush * on all cpus instead of doing a local flush if the mm --- linux-ppc-3.8.0.orig/arch/mn10300/include/asm/signal.h +++ linux-ppc-3.8.0/arch/mn10300/include/asm/signal.h @@ -39,6 +39,7 @@ __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/parisc/kernel/cache.c +++ linux-ppc-3.8.0/arch/parisc/kernel/cache.c @@ -419,6 +419,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-ppc-3.8.0.orig/arch/parisc/include/asm/pgtable.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/parisc/lib/memcpy.c +++ linux-ppc-3.8.0/arch/parisc/lib/memcpy.c @@ -2,6 +2,7 @@ * Optimized memory copy routines. * * Copyright (C) 2004 Randolph Chung + * Copyright (C) 2013 Helge Deller * * 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 @@ -153,17 +154,21 @@ #define prefetch_dst(addr) do { } while(0) #endif +#define PA_MEMCPY_OK 0 +#define PA_MEMCPY_LOAD_ERROR 1 +#define PA_MEMCPY_STORE_ERROR 2 + /* Copy from a not-aligned src to an aligned dst, using shifts. Handles 4 words * per loop. This code is derived from glibc. */ -static inline unsigned long copy_dstaligned(unsigned long dst, unsigned long src, unsigned long len, unsigned long o_dst, unsigned long o_src, unsigned long o_len) +static inline unsigned long copy_dstaligned(unsigned long dst, + unsigned long src, unsigned long len) { /* gcc complains that a2 and a3 may be uninitialized, but actually * they cannot be. Initialize a2/a3 to shut gcc up. */ register unsigned int a0, a1, a2 = 0, a3 = 0; int sh_1, sh_2; - struct exception_data *d; /* prefetch_src((const void *)src); */ @@ -197,7 +202,7 @@ goto do2; case 0: if (len == 0) - return 0; + return PA_MEMCPY_OK; /* a3 = ((unsigned int *) src)[0]; a0 = ((unsigned int *) src)[1]; */ ldw(s_space, 0, src, a3, cda_ldw_exc); @@ -256,42 +261,35 @@ preserve_branch(handle_load_error); preserve_branch(handle_store_error); - return 0; + return PA_MEMCPY_OK; handle_load_error: __asm__ __volatile__ ("cda_ldw_exc:\n"); - d = &__get_cpu_var(exception_data); - DPRINTF("cda_ldw_exc: o_len=%lu fault_addr=%lu o_src=%lu ret=%lu\n", - o_len, d->fault_addr, o_src, o_len - d->fault_addr + o_src); - return o_len * 4 - d->fault_addr + o_src; + return PA_MEMCPY_LOAD_ERROR; handle_store_error: __asm__ __volatile__ ("cda_stw_exc:\n"); - d = &__get_cpu_var(exception_data); - DPRINTF("cda_stw_exc: o_len=%lu fault_addr=%lu o_dst=%lu ret=%lu\n", - o_len, d->fault_addr, o_dst, o_len - d->fault_addr + o_dst); - return o_len * 4 - d->fault_addr + o_dst; + return PA_MEMCPY_STORE_ERROR; } -/* Returns 0 for success, otherwise, returns number of bytes not transferred. */ -static unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len) +/* Returns PA_MEMCPY_OK, PA_MEMCPY_LOAD_ERROR or PA_MEMCPY_STORE_ERROR. + * In case of an access fault the faulty address can be read from the per_cpu + * exception data struct. */ +static unsigned long pa_memcpy_internal(void *dstp, const void *srcp, + unsigned long len) { register unsigned long src, dst, t1, t2, t3; register unsigned char *pcs, *pcd; register unsigned int *pws, *pwd; register double *pds, *pdd; - unsigned long ret = 0; - unsigned long o_dst, o_src, o_len; - struct exception_data *d; + unsigned long ret; src = (unsigned long)srcp; dst = (unsigned long)dstp; pcs = (unsigned char *)srcp; pcd = (unsigned char *)dstp; - o_dst = dst; o_src = src; o_len = len; - /* prefetch_src((const void *)srcp); */ if (len < THRESHOLD) @@ -401,7 +399,7 @@ len--; } - return 0; + return PA_MEMCPY_OK; unaligned_copy: /* possibly we are aligned on a word, but not on a double... */ @@ -438,8 +436,7 @@ src = (unsigned long)pcs; } - ret = copy_dstaligned(dst, src, len / sizeof(unsigned int), - o_dst, o_src, o_len); + ret = copy_dstaligned(dst, src, len / sizeof(unsigned int)); if (ret) return ret; @@ -454,17 +451,41 @@ handle_load_error: __asm__ __volatile__ ("pmc_load_exc:\n"); - d = &__get_cpu_var(exception_data); - DPRINTF("pmc_load_exc: o_len=%lu fault_addr=%lu o_src=%lu ret=%lu\n", - o_len, d->fault_addr, o_src, o_len - d->fault_addr + o_src); - return o_len - d->fault_addr + o_src; + return PA_MEMCPY_LOAD_ERROR; handle_store_error: __asm__ __volatile__ ("pmc_store_exc:\n"); + return PA_MEMCPY_STORE_ERROR; +} + + +/* Returns 0 for success, otherwise, returns number of bytes not transferred. */ +static unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len) +{ + unsigned long ret, fault_addr, reference; + struct exception_data *d; + + ret = pa_memcpy_internal(dstp, srcp, len); + if (likely(ret == PA_MEMCPY_OK)) + return 0; + + /* if a load or store fault occured we can get the faulty addr */ d = &__get_cpu_var(exception_data); - DPRINTF("pmc_store_exc: o_len=%lu fault_addr=%lu o_dst=%lu ret=%lu\n", - o_len, d->fault_addr, o_dst, o_len - d->fault_addr + o_dst); - return o_len - d->fault_addr + o_dst; + fault_addr = d->fault_addr; + + /* error in load or store? */ + if (ret == PA_MEMCPY_LOAD_ERROR) + reference = (unsigned long) srcp; + else + reference = (unsigned long) dstp; + + DPRINTF("pa_memcpy: fault type = %lu, len=%lu fault_addr=%lu ref=%lu\n", + ret, len, fault_addr, reference); + + if (fault_addr >= reference) + return len - (fault_addr - reference); + else + return len; } #ifdef __KERNEL__ --- linux-ppc-3.8.0.orig/arch/cris/include/asm/signal.h +++ linux-ppc-3.8.0/arch/cris/include/asm/signal.h @@ -29,6 +29,7 @@ void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/x86/Kconfig +++ linux-ppc-3.8.0/arch/x86/Kconfig @@ -402,6 +402,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 @@ -1253,10 +1259,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 @@ -2218,6 +2220,7 @@ config IA32_EMULATION bool "IA32 Emulation" depends on X86_64 + select BINFMT_ELF select COMPAT_BINFMT_ELF select HAVE_UID16 ---help--- @@ -2285,6 +2288,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "fs/Kconfig" --- linux-ppc-3.8.0.orig/arch/x86/pci/xen.c +++ linux-ppc-3.8.0/arch/x86/pci/xen.c @@ -162,6 +162,9 @@ struct msi_desc *msidesc; int *v; + if (type == PCI_CAP_ID_MSI && nvec > 1) + return 1; + v = kzalloc(sizeof(int) * max(1, nvec), GFP_KERNEL); if (!v) return -ENOMEM; @@ -220,6 +223,9 @@ struct msi_desc *msidesc; struct msi_msg msg; + if (type == PCI_CAP_ID_MSI && nvec > 1) + return 1; + list_for_each_entry(msidesc, &dev->msi_list, list) { __read_msi_msg(msidesc, &msg); pirq = MSI_ADDR_EXT_DEST_ID(msg.address_hi) | @@ -263,6 +269,9 @@ int ret = 0; struct msi_desc *msidesc; + if (type == PCI_CAP_ID_MSI && nvec > 1) + return 1; + list_for_each_entry(msidesc, &dev->msi_list, list) { struct physdev_map_pirq map_irq; domid_t domid; --- linux-ppc-3.8.0.orig/arch/x86/pci/common.c +++ linux-ppc-3.8.0/arch/x86/pci/common.c @@ -618,7 +618,9 @@ pa_data = boot_params.hdr.setup_data; while (pa_data) { - data = phys_to_virt(pa_data); + data = ioremap(pa_data, sizeof(*rom)); + if (!data) + return -ENOMEM; if (data->type == SETUP_PCI) { rom = (struct pci_setup_rom *)data; @@ -635,6 +637,7 @@ } } pa_data = data->next; + iounmap(data); } return 0; } --- linux-ppc-3.8.0.orig/arch/x86/platform/efi/efi.c +++ linux-ppc-3.8.0/arch/x86/platform/efi/efi.c @@ -51,6 +51,13 @@ #define EFI_DEBUG 1 +#define EFI_MIN_RESERVE 5120 + +#define EFI_DUMMY_GUID \ + EFI_GUID(0x4424ac57, 0xbe4b, 0x47dd, 0x9e, 0x97, 0xed, 0x50, 0xf0, 0x9f, 0x92, 0xa9) + +static efi_char16_t efi_dummy_name[6] = { 'D', 'U', 'M', 'M', 'Y', 0 }; + struct efi __read_mostly efi = { .mps = EFI_INVALID_TABLE_ADDR, .acpi = EFI_INVALID_TABLE_ADDR, @@ -69,11 +76,6 @@ 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; /* @@ -85,9 +87,10 @@ } EXPORT_SYMBOL(efi_enabled); +static bool disable_runtime = false; static int __init setup_noefi(char *arg) { - clear_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); + disable_runtime = true; return 0; } early_param("noefi", setup_noefi); @@ -102,6 +105,15 @@ } early_param("add_efi_memmap", setup_add_efi_memmap); +static bool efi_no_storage_paranoia; + +static int __init setup_storage_paranoia(char *arg) +{ + efi_no_storage_paranoia = true; + return 0; +} +early_param("efi_no_storage_paranoia", setup_storage_paranoia); + static efi_status_t virt_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc) { @@ -734,7 +746,7 @@ if (!efi_is_native()) pr_info("No EFI runtime due to 32/64-bit mismatch with kernel\n"); else { - if (efi_runtime_init()) + if (disable_runtime || efi_runtime_init()) return; set_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); } @@ -967,6 +979,13 @@ runtime_code_page_mkexec(); kfree(new_memmap); + + /* clean DUMMY object */ + efi.set_variable(efi_dummy_name, &EFI_DUMMY_GUID, + EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS, + 0, NULL); } /* @@ -1004,3 +1023,85 @@ } return 0; } + +/* + * Some firmware has serious problems when using more than 50% of the EFI + * variable store, i.e. it triggers bugs that can brick machines. Ensure that + * we never use more than this safe limit. + * + * Return EFI_SUCCESS if it is safe to write 'size' bytes to the variable + * store. + */ +efi_status_t efi_query_variable_store(u32 attributes, unsigned long size) +{ + efi_status_t status; + u64 storage_size, remaining_size, max_size; + + if (!(attributes & EFI_VARIABLE_NON_VOLATILE)) + return 0; + + status = efi.query_variable_info(attributes, &storage_size, + &remaining_size, &max_size); + if (status != EFI_SUCCESS) + return status; + + /* + * Some firmware implementations refuse to boot if there's insufficient + * space in the variable store. We account for that by refusing the + * write if permitting it would reduce the available space to under + * 5KB. This figure was provided by Samsung, so should be safe. + */ + if ((remaining_size - size < EFI_MIN_RESERVE) && + !efi_no_storage_paranoia) { + + /* + * Triggering garbage collection may require that the firmware + * generate a real EFI_OUT_OF_RESOURCES error. We can force + * that by attempting to use more space than is available. + */ + unsigned long dummy_size = remaining_size + 1024; + void *dummy = kzalloc(dummy_size, GFP_ATOMIC); + + if (!dummy) + return EFI_OUT_OF_RESOURCES; + + status = efi.set_variable(efi_dummy_name, &EFI_DUMMY_GUID, + EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS, + dummy_size, dummy); + + if (status == EFI_SUCCESS) { + /* + * This should have failed, so if it didn't make sure + * that we delete it... + */ + efi.set_variable(efi_dummy_name, &EFI_DUMMY_GUID, + EFI_VARIABLE_NON_VOLATILE | + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_RUNTIME_ACCESS, + 0, dummy); + } + + kfree(dummy); + + /* + * The runtime code may now have triggered a garbage collection + * run, so check the variable info again + */ + status = efi.query_variable_info(attributes, &storage_size, + &remaining_size, &max_size); + + if (status != EFI_SUCCESS) + return status; + + /* + * There still isn't enough room, so return an error + */ + if (remaining_size - size < EFI_MIN_RESERVE) + return EFI_OUT_OF_RESOURCES; + } + + return EFI_SUCCESS; +} +EXPORT_SYMBOL_GPL(efi_query_variable_store); --- linux-ppc-3.8.0.orig/arch/x86/boot/video.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/boot/compressed/eboot.c +++ linux-ppc-3.8.0/arch/x86/boot/compressed/eboot.c @@ -19,23 +19,28 @@ static efi_system_table_t *sys_table; +static void efi_char16_printk(efi_char16_t *str) +{ + struct efi_simple_text_output_protocol *out; + + out = (struct efi_simple_text_output_protocol *)sys_table->con_out; + efi_call_phys2(out->output_string, out, str); +} + static void efi_printk(char *str) { char *s8; for (s8 = str; *s8; s8++) { - struct efi_simple_text_output_protocol *out; efi_char16_t ch[2] = { 0 }; ch[0] = *s8; - out = (struct efi_simple_text_output_protocol *)sys_table->con_out; - if (*s8 == '\n') { efi_char16_t nl[2] = { '\r', 0 }; - efi_call_phys2(out->output_string, out, nl); + efi_char16_printk(nl); } - efi_call_phys2(out->output_string, out, ch); + efi_char16_printk(ch); } } @@ -709,7 +714,12 @@ if ((u8 *)p >= (u8 *)filename_16 + sizeof(filename_16)) break; - *p++ = *str++; + if (*str == '/') { + *p++ = '\\'; + *str++; + } else { + *p++ = *str++; + } } *p = '\0'; @@ -737,7 +747,9 @@ status = efi_call_phys5(fh->open, fh, &h, filename_16, EFI_FILE_MODE_READ, (u64)0); if (status != EFI_SUCCESS) { - efi_printk("Failed to open initrd file\n"); + efi_printk("Failed to open initrd file: "); + efi_char16_printk(filename_16); + efi_printk("\n"); goto close_handles; } @@ -980,18 +992,20 @@ efi_memory_desc_t *mem_map; efi_status_t status; __u32 desc_version; + bool called_exit = false; u8 nr_entries; int i; size = sizeof(*mem_map) * 32; again: - size += sizeof(*mem_map); + size += sizeof(*mem_map) * 2; _size = size; status = low_alloc(size, 1, (unsigned long *)&mem_map); if (status != EFI_SUCCESS) return status; +get_map: status = efi_call_phys5(sys_table->boottime->get_memory_map, &size, mem_map, &key, &desc_size, &desc_version); if (status == EFI_BUFFER_TOO_SMALL) { @@ -1017,8 +1031,20 @@ /* Might as well exit boot services now */ status = efi_call_phys2(sys_table->boottime->exit_boot_services, handle, key); - if (status != EFI_SUCCESS) - goto free_mem_map; + if (status != EFI_SUCCESS) { + /* + * ExitBootServices() will fail if any of the event + * handlers change the memory map. In which case, we + * must be prepared to retry, but only once so that + * we're guaranteed to exit on repeated failures instead + * of spinning forever. + */ + if (called_exit) + goto free_mem_map; + + called_exit = true; + goto get_map; + } /* Historic? */ boot_params->alt_mem_k = 32 * 1024; --- linux-ppc-3.8.0.orig/arch/x86/boot/compressed/Makefile +++ linux-ppc-3.8.0/arch/x86/boot/compressed/Makefile @@ -4,7 +4,7 @@ # create a compressed vmlinux image from the original vmlinux # -targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo head_$(BITS).o misc.o string.o cmdline.o early_serial_console.o piggy.o +targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 KBUILD_CFLAGS += -fno-strict-aliasing -fPIC @@ -29,7 +29,6 @@ $(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 @@ -43,7 +42,7 @@ $(obj)/vmlinux.bin: vmlinux FORCE $(call if_changed,objcopy) -targets += vmlinux.bin.all vmlinux.relocs +targets += $(patsubst $(obj)/%,%,$(VMLINUX_OBJS)) vmlinux.bin.all vmlinux.relocs CMD_RELOCS = arch/x86/tools/relocs quiet_cmd_relocs = RELOCS $@ --- linux-ppc-3.8.0.orig/arch/x86/lguest/boot.c +++ linux-ppc-3.8.0/arch/x86/lguest/boot.c @@ -1333,6 +1333,7 @@ pv_mmu_ops.read_cr3 = lguest_read_cr3; pv_mmu_ops.lazy_mode.enter = paravirt_enter_lazy_mmu; pv_mmu_ops.lazy_mode.leave = lguest_leave_lazy_mmu_mode; + pv_mmu_ops.lazy_mode.flush = paravirt_flush_lazy_mmu; pv_mmu_ops.pte_update = lguest_pte_update; pv_mmu_ops.pte_update_defer = lguest_pte_update; --- linux-ppc-3.8.0.orig/arch/x86/xen/spinlock.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/xen/enlighten.c +++ linux-ppc-3.8.0/arch/x86/xen/enlighten.c @@ -67,6 +67,7 @@ #include #include #include +#include #ifdef CONFIG_ACPI #include @@ -155,6 +156,21 @@ BUG_ON(HYPERVISOR_shared_info == &xen_dummy_shared_info); + /* + * This path is called twice on PVHVM - first during bootup via + * smp_init -> xen_hvm_cpu_notify, and then if the VCPU is being + * hotplugged: cpu_up -> xen_hvm_cpu_notify. + * As we can only do the VCPUOP_register_vcpu_info once lets + * not over-write its result. + * + * For PV it is called during restore (xen_vcpu_restore) and bootup + * (xen_setup_vcpu_info_placement). The hotplug mechanism does not + * use this function. + */ + if (xen_hvm_domain()) { + if (per_cpu(xen_vcpu, cpu) == &per_cpu(xen_vcpu_info, cpu)) + return; + } if (cpu < MAX_VIRT_CPUS) per_cpu(xen_vcpu,cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; @@ -1417,7 +1433,14 @@ */ acpi_numa = -1; #endif - +#ifdef CONFIG_X86_PAT + /* + * For right now disable the PAT. We should remove this once + * git commit 8eaffa67b43e99ae581622c5133e20b0f48bcef1 + * (xen/pat: Disable PAT support for now) is reverted. + */ + pat_enabled = 0; +#endif /* Don't do the full vcpu_info placement stuff until we have a possible map and a non-dummy shared_info. */ per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0]; @@ -1581,8 +1604,11 @@ switch (action) { case CPU_UP_PREPARE: xen_vcpu_setup(cpu); - if (xen_have_vector_callback) + if (xen_have_vector_callback) { xen_init_lock_cpu(cpu); + if (xen_feature(XENFEAT_hvm_safe_pvclock)) + xen_setup_timer(cpu); + } break; default: break; --- linux-ppc-3.8.0.orig/arch/x86/xen/smp.c +++ linux-ppc-3.8.0/arch/x86/xen/smp.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -432,6 +433,13 @@ play_dead_common(); HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); cpu_bringup(); + /* + * commit 4b0c0f294 (tick: Cleanup NOHZ per cpu data on cpu down) + * clears certain data that the cpu_idle loop (which called us + * and that we return from) expects. The only way to get that + * data back is to call: + */ + tick_nohz_idle_enter(); } #else /* !CONFIG_HOTPLUG_CPU */ @@ -658,6 +666,8 @@ unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL); unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), NULL); unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL); + xen_uninit_lock_cpu(cpu); + xen_teardown_timer(cpu); native_cpu_die(cpu); } --- linux-ppc-3.8.0.orig/arch/x86/xen/mmu.c +++ linux-ppc-3.8.0/arch/x86/xen/mmu.c @@ -2190,6 +2190,7 @@ .lazy_mode = { .enter = paravirt_enter_lazy_mmu, .leave = xen_leave_lazy_mmu, + .flush = paravirt_flush_lazy_mmu, }, .set_fixmap = xen_set_fixmap, --- linux-ppc-3.8.0.orig/arch/x86/xen/time.c +++ linux-ppc-3.8.0/arch/x86/xen/time.c @@ -36,9 +36,8 @@ /* snapshots of runstate info */ static DEFINE_PER_CPU(struct vcpu_runstate_info, xen_runstate_snapshot); -/* unused ns of stolen and blocked time */ +/* unused ns of stolen time */ static DEFINE_PER_CPU(u64, xen_residual_stolen); -static DEFINE_PER_CPU(u64, xen_residual_blocked); /* return an consistent snapshot of 64-bit time/counter value */ static u64 get64(const u64 *p) @@ -115,7 +114,7 @@ { struct vcpu_runstate_info state; struct vcpu_runstate_info *snap; - s64 blocked, runnable, offline, stolen; + s64 runnable, offline, stolen; cputime_t ticks; get_runstate_snapshot(&state); @@ -125,7 +124,6 @@ snap = &__get_cpu_var(xen_runstate_snapshot); /* work out how much time the VCPU has not been runn*ing* */ - blocked = state.time[RUNSTATE_blocked] - snap->time[RUNSTATE_blocked]; runnable = state.time[RUNSTATE_runnable] - snap->time[RUNSTATE_runnable]; offline = state.time[RUNSTATE_offline] - snap->time[RUNSTATE_offline]; @@ -141,17 +139,6 @@ ticks = iter_div_u64_rem(stolen, NS_PER_TICK, &stolen); __this_cpu_write(xen_residual_stolen, stolen); account_steal_ticks(ticks); - - /* Add the appropriate number of ticks of blocked time, - including any left-overs from last time. */ - blocked += __this_cpu_read(xen_residual_blocked); - - if (blocked < 0) - blocked = 0; - - ticks = iter_div_u64_rem(blocked, NS_PER_TICK, &blocked); - __this_cpu_write(xen_residual_blocked, blocked); - account_idle_ticks(ticks); } /* Get the TSC speed from Xen */ @@ -497,7 +484,11 @@ { int cpu = smp_processor_id(); xen_setup_runstate_info(cpu); - xen_setup_timer(cpu); + /* + * xen_setup_timer(cpu) - snprintf is bad in atomic context. Hence + * doing it xen_hvm_cpu_notify (which gets called by smp_init during + * early bootup and also during CPU hotplug events). + */ xen_setup_cpu_clockevents(); } --- linux-ppc-3.8.0.orig/arch/x86/kernel/irq.c +++ linux-ppc-3.8.0/arch/x86/kernel/irq.c @@ -165,10 +165,6 @@ u64 arch_irq_stat(void) { u64 sum = atomic_read(&irq_err_count); - -#ifdef CONFIG_X86_IO_APIC - sum += atomic_read(&irq_mis_count); -#endif return sum; } --- linux-ppc-3.8.0.orig/arch/x86/kernel/paravirt.c +++ linux-ppc-3.8.0/arch/x86/kernel/paravirt.c @@ -263,6 +263,18 @@ leave_lazy(PARAVIRT_LAZY_MMU); } +void paravirt_flush_lazy_mmu(void) +{ + preempt_disable(); + + if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU) { + arch_leave_lazy_mmu_mode(); + arch_enter_lazy_mmu_mode(); + } + + preempt_enable(); +} + void paravirt_start_context_switch(struct task_struct *prev) { BUG_ON(preemptible()); @@ -292,18 +304,6 @@ return this_cpu_read(paravirt_lazy_mode); } -void arch_flush_lazy_mmu_mode(void) -{ - preempt_disable(); - - if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU) { - arch_leave_lazy_mmu_mode(); - arch_enter_lazy_mmu_mode(); - } - - preempt_enable(); -} - struct pv_info pv_info = { .name = "bare hardware", .paravirt_enabled = 0, @@ -475,6 +475,7 @@ .lazy_mode = { .enter = paravirt_nop, .leave = paravirt_nop, + .flush = paravirt_nop, }, .set_fixmap = native_set_fixmap, --- linux-ppc-3.8.0.orig/arch/x86/kernel/setup.c +++ linux-ppc-3.8.0/arch/x86/kernel/setup.c @@ -1135,8 +1135,7 @@ * mismatched firmware/kernel archtectures since there is no * support for runtime services. */ - if (efi_enabled(EFI_BOOT) && - IS_ENABLED(CONFIG_X86_64) != efi_enabled(EFI_64BIT)) { + if (efi_enabled(EFI_BOOT) && !efi_is_native()) { pr_info("efi: Setup done, disabling due to 32/64-bit mismatch\n"); efi_unmap_memmap(); } --- linux-ppc-3.8.0.orig/arch/x86/kernel/kvmclock.c +++ linux-ppc-3.8.0/arch/x86/kernel/kvmclock.c @@ -218,6 +218,9 @@ void __init kvmclock_init(void) { unsigned long mem; + int size; + + size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); if (!kvm_para_available()) return; @@ -231,16 +234,15 @@ printk(KERN_INFO "kvm-clock: Using msrs %x and %x", msr_kvm_system_time, msr_kvm_wall_clock); - mem = memblock_alloc(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS, - PAGE_SIZE); + mem = memblock_alloc(size, PAGE_SIZE); if (!mem) return; hv_clock = __va(mem); + memset(hv_clock, 0, size); if (kvm_register_clock("boot clock")) { hv_clock = NULL; - memblock_free(mem, - sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); + memblock_free(mem, size); return; } pv_time_ops.sched_clock = kvm_clock_read; @@ -275,7 +277,7 @@ struct pvclock_vcpu_time_info *vcpu_time; unsigned int size; - size = sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS; + size = PAGE_ALIGN(sizeof(struct pvclock_vsyscall_time_info)*NR_CPUS); preempt_disable(); cpu = smp_processor_id(); --- linux-ppc-3.8.0.orig/arch/x86/kernel/pvclock.c +++ linux-ppc-3.8.0/arch/x86/kernel/pvclock.c @@ -185,7 +185,7 @@ for (idx = 0; idx <= (PVCLOCK_FIXMAP_END-PVCLOCK_FIXMAP_BEGIN); idx++) { __set_fixmap(PVCLOCK_FIXMAP_BEGIN + idx, - __pa_symbol(i) + (idx*PAGE_SIZE), + __pa(i) + (idx*PAGE_SIZE), PAGE_KERNEL_VVAR); } --- linux-ppc-3.8.0.orig/arch/x86/kernel/reboot.c +++ linux-ppc-3.8.0/arch/x86/kernel/reboot.c @@ -423,6 +423,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", @@ -447,6 +455,38 @@ 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"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 390. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 390", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 390"), + }, + }, { } }; --- linux-ppc-3.8.0.orig/arch/x86/kernel/early-quirks.c +++ linux-ppc-3.8.0/arch/x86/kernel/early-quirks.c @@ -18,6 +18,7 @@ #include #include #include +#include static void __init fix_hypertransport_config(int num, int slot, int func) { @@ -192,6 +193,29 @@ } #endif +static void __init intel_remapping_check(int num, int slot, int func) +{ + u8 revision; + u16 device; + + device = read_pci_config_16(num, slot, func, PCI_DEVICE_ID); + revision = read_pci_config_byte(num, slot, func, PCI_REVISION_ID); + + /* + * Revision 13 of all triggering devices id in this quirk have + * a problem draining interrupts when irq remapping is enabled, + * and should be flagged as broken. Additionally revisions 0x12 + * and 0x22 of device id 0x3405 has this problem. + */ + if (revision == 0x13) + set_irq_remapping_broken(); + else if ((device == 0x3405) && + ((revision == 0x12) || + (revision == 0x22))) + set_irq_remapping_broken(); + +} + #define QFLAG_APPLY_ONCE 0x1 #define QFLAG_APPLIED 0x2 #define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED) @@ -221,6 +245,12 @@ PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs }, { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd }, + { PCI_VENDOR_ID_INTEL, 0x3403, PCI_CLASS_BRIDGE_HOST, + PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, + { PCI_VENDOR_ID_INTEL, 0x3405, PCI_CLASS_BRIDGE_HOST, + PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, + { PCI_VENDOR_ID_INTEL, 0x3406, PCI_CLASS_BRIDGE_HOST, + PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, {} }; --- linux-ppc-3.8.0.orig/arch/x86/kernel/sys_x86_64.c +++ linux-ppc-3.8.0/arch/x86/kernel/sys_x86_64.c @@ -101,7 +101,7 @@ *begin = new_begin; } } else { - *begin = TASK_UNMAPPED_BASE; + *begin = current->mm->mmap_legacy_base; *end = TASK_SIZE; } } --- linux-ppc-3.8.0.orig/arch/x86/kernel/i387.c +++ linux-ppc-3.8.0/arch/x86/kernel/i387.c @@ -22,23 +22,19 @@ /* * Were we in an interrupt that interrupted kernel mode? * - * For now, with eagerfpu we will return interrupted kernel FPU - * state as not-idle. TBD: Ideally we can change the return value - * to something like __thread_has_fpu(current). But we need to - * be careful of doing __thread_clear_has_fpu() before saving - * the FPU etc for supporting nested uses etc. For now, take - * the simple route! - * * On others, we can do a kernel_fpu_begin/end() pair *ONLY* if that * pair does nothing at all: the thread must not have fpu (so * that we don't try to save the FPU state), and TS must * be set (so that the clts/stts pair does nothing that is * visible in the interrupted kernel thread). + * + * Except for the eagerfpu case when we return 1 unless we've already + * been eager and saved the state in kernel_fpu_begin(). */ static inline bool interrupted_kernel_fpu_idle(void) { if (use_eager_fpu()) - return 0; + return __thread_has_fpu(current); return !__thread_has_fpu(current) && (read_cr0() & X86_CR0_TS); @@ -78,8 +74,8 @@ struct task_struct *me = current; if (__thread_has_fpu(me)) { - __save_init_fpu(me); __thread_clear_has_fpu(me); + __save_init_fpu(me); /* We do 'stts()' in __kernel_fpu_end() */ } else if (!use_eager_fpu()) { this_cpu_write(fpu_owner_task, NULL); @@ -120,7 +116,7 @@ if (cpu_has_fxsr) { memset(&fx_scratch, 0, sizeof(struct i387_fxsave_struct)); - asm volatile("fxsave %0" : : "m" (fx_scratch)); + asm volatile("fxsave %0" : "+m" (fx_scratch)); mask = fx_scratch.mxcsr_mask; if (mask == 0) mask = 0x0000ffbf; --- linux-ppc-3.8.0.orig/arch/x86/kernel/relocate_kernel_64.S +++ linux-ppc-3.8.0/arch/x86/kernel/relocate_kernel_64.S @@ -160,7 +160,7 @@ xorq %rbp, %rbp xorq %r8, %r8 xorq %r9, %r9 - xorq %r10, %r9 + xorq %r10, %r10 xorq %r11, %r11 xorq %r12, %r12 xorq %r13, %r13 --- linux-ppc-3.8.0.orig/arch/x86/kernel/head.c +++ linux-ppc-3.8.0/arch/x86/kernel/head.c @@ -5,8 +5,6 @@ #include #include -#define BIOS_LOWMEM_KILOBYTES 0x413 - /* * The BIOS places the EBDA/XBDA at the top of conventional * memory, and usually decreases the reported amount of @@ -16,17 +14,30 @@ * chipset: reserve a page before VGA to prevent PCI prefetch * into it (errata #56). Usually the page is reserved anyways, * unless you have no PS/2 mouse plugged in. + * + * This functions is deliberately very conservative. Losing + * memory in the bottom megabyte is rarely a problem, as long + * as we have enough memory to install the trampoline. Using + * memory that is in use by the BIOS or by some DMA device + * the BIOS didn't shut down *is* a big problem. */ + +#define BIOS_LOWMEM_KILOBYTES 0x413 +#define LOWMEM_CAP 0x9f000U /* Absolute maximum */ +#define INSANE_CUTOFF 0x20000U /* Less than this = insane */ + void __init reserve_ebda_region(void) { unsigned int lowmem, ebda_addr; - /* To determine the position of the EBDA and the */ - /* end of conventional memory, we need to look at */ - /* the BIOS data area. In a paravirtual environment */ - /* that area is absent. We'll just have to assume */ - /* that the paravirt case can handle memory setup */ - /* correctly, without our help. */ + /* + * To determine the position of the EBDA and the + * end of conventional memory, we need to look at + * the BIOS data area. In a paravirtual environment + * that area is absent. We'll just have to assume + * that the paravirt case can handle memory setup + * correctly, without our help. + */ if (paravirt_enabled()) return; @@ -37,19 +48,23 @@ /* start of EBDA area */ ebda_addr = get_bios_ebda(); - /* Fixup: bios puts an EBDA in the top 64K segment */ - /* of conventional memory, but does not adjust lowmem. */ - if ((lowmem - ebda_addr) <= 0x10000) - lowmem = ebda_addr; - - /* Fixup: bios does not report an EBDA at all. */ - /* Some old Dells seem to need 4k anyhow (bugzilla 2990) */ - if ((ebda_addr == 0) && (lowmem >= 0x9f000)) - lowmem = 0x9f000; - - /* Paranoia: should never happen, but... */ - if ((lowmem == 0) || (lowmem >= 0x100000)) - lowmem = 0x9f000; + /* + * Note: some old Dells seem to need 4k EBDA without + * reporting so, so just consider the memory above 0x9f000 + * to be off limits (bugzilla 2990). + */ + + /* If the EBDA address is below 128K, assume it is bogus */ + if (ebda_addr < INSANE_CUTOFF) + ebda_addr = LOWMEM_CAP; + + /* If lowmem is less than 128K, assume it is bogus */ + if (lowmem < INSANE_CUTOFF) + lowmem = LOWMEM_CAP; + + /* Use the lower of the lowmem and EBDA markers as the cutoff */ + lowmem = min(lowmem, ebda_addr); + lowmem = min(lowmem, LOWMEM_CAP); /* Absolute cap */ /* reserve all memory between lowmem and the 1MB mark */ memblock_reserve(lowmem, 0x100000 - lowmem); --- linux-ppc-3.8.0.orig/arch/x86/kernel/acpi/sleep.c +++ linux-ppc-3.8.0/arch/x86/kernel/acpi/sleep.c @@ -48,9 +48,20 @@ #ifndef CONFIG_64BIT store_gdt((struct desc_ptr *)&header->pmode_gdt); + /* + * We have to check that we can write back the value, and not + * just read it. At least on 90 nm Pentium M (Family 6, Model + * 13), reading an invalid MSR is not guaranteed to trap, see + * Erratum X4 in "Intel Pentium M Processor on 90 nm Process + * with 2-MB L2 Cache and Intel® Processor A100 and A110 on 90 + * nm process with 512-KB L2 Cache Specification Update". + */ if (!rdmsr_safe(MSR_EFER, &header->pmode_efer_low, - &header->pmode_efer_high)) + &header->pmode_efer_high) && + !wrmsr_safe(MSR_EFER, + header->pmode_efer_low, + header->pmode_efer_high)) header->pmode_behavior |= (1 << WAKEUP_BEHAVIOR_RESTORE_EFER); #endif /* !CONFIG_64BIT */ @@ -61,7 +72,10 @@ } if (!rdmsr_safe(MSR_IA32_MISC_ENABLE, &header->pmode_misc_en_low, - &header->pmode_misc_en_high)) + &header->pmode_misc_en_high) && + !wrmsr_safe(MSR_IA32_MISC_ENABLE, + header->pmode_misc_en_low, + header->pmode_misc_en_high)) header->pmode_behavior |= (1 << WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE); header->realmode_flags = acpi_realmode_flags; --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/perf_event_intel_lbr.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/perf_event_intel_lbr.c @@ -310,7 +310,7 @@ * - in case there is no HW filter * - in case the HW filter has errata or limitations */ -static void intel_pmu_setup_sw_lbr_filter(struct perf_event *event) +static int intel_pmu_setup_sw_lbr_filter(struct perf_event *event) { u64 br_type = event->attr.branch_sample_type; int mask = 0; @@ -318,8 +318,11 @@ if (br_type & PERF_SAMPLE_BRANCH_USER) mask |= X86_BR_USER; - if (br_type & PERF_SAMPLE_BRANCH_KERNEL) + if (br_type & PERF_SAMPLE_BRANCH_KERNEL) { + if (perf_paranoid_kernel() && !capable(CAP_SYS_ADMIN)) + return -EACCES; mask |= X86_BR_KERNEL; + } /* we ignore BRANCH_HV here */ @@ -339,6 +342,8 @@ * be used by fixup code for some CPU */ event->hw.branch_reg.reg = mask; + + return 0; } /* @@ -386,7 +391,9 @@ /* * setup SW LBR filter */ - intel_pmu_setup_sw_lbr_filter(event); + ret = intel_pmu_setup_sw_lbr_filter(event); + if (ret) + return ret; /* * setup HW LBR filter, if any @@ -442,8 +449,18 @@ return X86_BR_NONE; addr = buf; - } else - addr = (void *)from; + } else { + /* + * The LBR logs any address in the IP, even if the IP just + * faulted. This means userspace can control the from address. + * Ensure we don't blindy read any address by validating it is + * a known text address. + */ + if (kernel_text_address(from)) + addr = (void *)from; + else + return X86_BR_NONE; + } /* * decoder needs to know the ABI especially --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/perf_event_intel.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/perf_event_intel.c @@ -128,8 +128,14 @@ }; static struct extra_reg intel_snb_extra_regs[] __read_mostly = { - INTEL_EVENT_EXTRA_REG(0xb7, MSR_OFFCORE_RSP_0, 0x3fffffffffull, RSP_0), - INTEL_EVENT_EXTRA_REG(0xbb, MSR_OFFCORE_RSP_1, 0x3fffffffffull, RSP_1), + INTEL_EVENT_EXTRA_REG(0xb7, MSR_OFFCORE_RSP_0, 0x3f807f8fffull, RSP_0), + INTEL_EVENT_EXTRA_REG(0xbb, MSR_OFFCORE_RSP_1, 0x3f807f8fffull, RSP_1), + EVENT_EXTRA_END +}; + +static struct extra_reg intel_snbep_extra_regs[] __read_mostly = { + INTEL_EVENT_EXTRA_REG(0xb7, MSR_OFFCORE_RSP_0, 0x3fffff8fffull, RSP_0), + INTEL_EVENT_EXTRA_REG(0xbb, MSR_OFFCORE_RSP_1, 0x3fffff8fffull, RSP_1), EVENT_EXTRA_END }; @@ -2072,7 +2078,10 @@ x86_pmu.event_constraints = intel_snb_event_constraints; x86_pmu.pebs_constraints = intel_snb_pebs_event_constraints; x86_pmu.pebs_aliases = intel_pebs_aliases_snb; - x86_pmu.extra_regs = intel_snb_extra_regs; + if (boot_cpu_data.x86_model == 45) + x86_pmu.extra_regs = intel_snbep_extra_regs; + else + x86_pmu.extra_regs = intel_snb_extra_regs; /* all extra regs are per-cpu when HT is on */ x86_pmu.er_flags |= ERF_HAS_RSP_1; x86_pmu.er_flags |= ERF_NO_HT_SHARING; @@ -2098,7 +2107,10 @@ x86_pmu.event_constraints = intel_snb_event_constraints; x86_pmu.pebs_constraints = intel_ivb_pebs_event_constraints; x86_pmu.pebs_aliases = intel_pebs_aliases_snb; - x86_pmu.extra_regs = intel_snb_extra_regs; + if (boot_cpu_data.x86_model == 62) + x86_pmu.extra_regs = intel_snbep_extra_regs; + else + x86_pmu.extra_regs = intel_snb_extra_regs; /* all extra regs are per-cpu when HT is on */ x86_pmu.er_flags |= ERF_HAS_RSP_1; x86_pmu.er_flags |= ERF_NO_HT_SHARING; --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/mshyperv.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/kernel/cpu/perf_event_intel_ds.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/perf_event_intel_ds.c @@ -729,3 +729,13 @@ } } } + +void perf_restore_debug_store(void) +{ + struct debug_store *ds = __this_cpu_read(cpu_hw_events.ds); + + if (!x86_pmu.bts && !x86_pmu.pebs) + return; + + wrmsrl(MSR_IA32_DS_AREA, (unsigned long)ds); +} --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/perf_event_intel_uncore.c @@ -315,8 +315,8 @@ static struct uncore_event_desc snbep_uncore_qpi_events[] = { INTEL_UNCORE_EVENT_DESC(clockticks, "event=0x14"), INTEL_UNCORE_EVENT_DESC(txl_flits_active, "event=0x00,umask=0x06"), - INTEL_UNCORE_EVENT_DESC(drs_data, "event=0x02,umask=0x08"), - INTEL_UNCORE_EVENT_DESC(ncb_data, "event=0x03,umask=0x04"), + INTEL_UNCORE_EVENT_DESC(drs_data, "event=0x102,umask=0x08"), + INTEL_UNCORE_EVENT_DESC(ncb_data, "event=0x103,umask=0x04"), { /* end: all zeroes */ }, }; @@ -2428,7 +2428,7 @@ static int __init uncore_type_init(struct intel_uncore_type *type) { struct intel_uncore_pmu *pmus; - struct attribute_group *events_group; + struct attribute_group *attr_group; struct attribute **attrs; int i, j; @@ -2455,19 +2455,19 @@ while (type->event_descs[i].attr.attr.name) i++; - events_group = kzalloc(sizeof(struct attribute *) * (i + 1) + - sizeof(*events_group), GFP_KERNEL); - if (!events_group) + attr_group = kzalloc(sizeof(struct attribute *) * (i + 1) + + sizeof(*attr_group), GFP_KERNEL); + if (!attr_group) goto fail; - attrs = (struct attribute **)(events_group + 1); - events_group->name = "events"; - events_group->attrs = attrs; + attrs = (struct attribute **)(attr_group + 1); + attr_group->name = "events"; + attr_group->attrs = attrs; for (j = 0; j < i; j++) attrs[j] = &type->event_descs[j].attr.attr; - type->events_group = events_group; + type->events_group = attr_group; } type->pmu_group = &uncore_pmu_attr_group; @@ -2853,6 +2853,7 @@ msr_uncores = nhm_msr_uncores; break; case 42: /* Sandy Bridge */ + case 58: /* Ivy Bridge */ if (snb_uncore_cbox.num_boxes > max_cores) snb_uncore_cbox.num_boxes = max_cores; msr_uncores = snb_msr_uncores; --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/mcheck/therm_throt.c @@ -181,11 +181,6 @@ this_cpu, level == CORE_LEVEL ? "Core" : "Package", state->count); - else - printk(KERN_CRIT "CPU%d: %s power limit notification (total events = %lu)\n", - this_cpu, - level == CORE_LEVEL ? "Core" : "Package", - state->count); return 1; } if (old_event) { @@ -193,10 +188,6 @@ printk(KERN_INFO "CPU%d: %s temperature/speed normal\n", this_cpu, level == CORE_LEVEL ? "Core" : "Package"); - else - printk(KERN_INFO "CPU%d: %s power limit normal\n", - this_cpu, - level == CORE_LEVEL ? "Core" : "Package"); return 1; } @@ -219,6 +210,15 @@ return 1; } +static bool int_pln_enable; +static int __init int_pln_enable_setup(char *s) +{ + int_pln_enable = true; + + return 1; +} +__setup("int_pln_enable", int_pln_enable_setup); + #ifdef CONFIG_SYSFS /* Add/Remove thermal_throttle interface for CPU device: */ static __cpuinit int thermal_throttle_add_dev(struct device *dev, @@ -231,7 +231,7 @@ if (err) return err; - if (cpu_has(c, X86_FEATURE_PLN)) + if (cpu_has(c, X86_FEATURE_PLN) && int_pln_enable) err = sysfs_add_file_to_group(&dev->kobj, &dev_attr_core_power_limit_count.attr, thermal_attr_group.name); @@ -239,7 +239,7 @@ err = sysfs_add_file_to_group(&dev->kobj, &dev_attr_package_throttle_count.attr, thermal_attr_group.name); - if (cpu_has(c, X86_FEATURE_PLN)) + if (cpu_has(c, X86_FEATURE_PLN) && int_pln_enable) err = sysfs_add_file_to_group(&dev->kobj, &dev_attr_package_power_limit_count.attr, thermal_attr_group.name); @@ -352,7 +352,7 @@ CORE_LEVEL) != 0) mce_log_therm_throt_event(msr_val); - if (this_cpu_has(X86_FEATURE_PLN)) + if (this_cpu_has(X86_FEATURE_PLN) && int_pln_enable) therm_throt_process(msr_val & THERM_STATUS_POWER_LIMIT, POWER_LIMIT_EVENT, CORE_LEVEL); @@ -362,7 +362,7 @@ therm_throt_process(msr_val & PACKAGE_THERM_STATUS_PROCHOT, THERMAL_THROTTLING_EVENT, PACKAGE_LEVEL); - if (this_cpu_has(X86_FEATURE_PLN)) + if (this_cpu_has(X86_FEATURE_PLN) && int_pln_enable) therm_throt_process(msr_val & PACKAGE_THERM_STATUS_POWER_LIMIT, POWER_LIMIT_EVENT, @@ -470,9 +470,13 @@ apic_write(APIC_LVTTHMR, h); rdmsr(MSR_IA32_THERM_INTERRUPT, l, h); - if (cpu_has(c, X86_FEATURE_PLN)) + if (cpu_has(c, X86_FEATURE_PLN) && !int_pln_enable) + wrmsr(MSR_IA32_THERM_INTERRUPT, + (l | (THERM_INT_LOW_ENABLE + | THERM_INT_HIGH_ENABLE)) & ~THERM_INT_PLN_ENABLE, h); + else if (cpu_has(c, X86_FEATURE_PLN) && int_pln_enable) wrmsr(MSR_IA32_THERM_INTERRUPT, - l | (THERM_INT_LOW_ENABLE + l | (THERM_INT_LOW_ENABLE | THERM_INT_HIGH_ENABLE | THERM_INT_PLN_ENABLE), h); else wrmsr(MSR_IA32_THERM_INTERRUPT, @@ -480,9 +484,14 @@ if (cpu_has(c, X86_FEATURE_PTS)) { rdmsr(MSR_IA32_PACKAGE_THERM_INTERRUPT, l, h); - if (cpu_has(c, X86_FEATURE_PLN)) + if (cpu_has(c, X86_FEATURE_PLN) && !int_pln_enable) + wrmsr(MSR_IA32_PACKAGE_THERM_INTERRUPT, + (l | (PACKAGE_THERM_INT_LOW_ENABLE + | PACKAGE_THERM_INT_HIGH_ENABLE)) + & ~PACKAGE_THERM_INT_PLN_ENABLE, h); + else if (cpu_has(c, X86_FEATURE_PLN) && int_pln_enable) wrmsr(MSR_IA32_PACKAGE_THERM_INTERRUPT, - l | (PACKAGE_THERM_INT_LOW_ENABLE + l | (PACKAGE_THERM_INT_LOW_ENABLE | PACKAGE_THERM_INT_HIGH_ENABLE | PACKAGE_THERM_INT_PLN_ENABLE), h); else --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/mtrr/main.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/mtrr/main.c @@ -305,7 +305,8 @@ return -EINVAL; } - if (base & size_or_mask || size & size_or_mask) { + if ((base | (base + size - 1)) >> + (boot_cpu_data.x86_phys_bits - PAGE_SHIFT)) { pr_warning("mtrr: base or size exceeds the MTRR width\n"); return -EINVAL; } @@ -583,6 +584,7 @@ int __initdata changed_by_mtrr_cleanup; +#define SIZE_OR_MASK_BITS(n) (~((1ULL << ((n) - PAGE_SHIFT)) - 1)) /** * mtrr_bp_init - initialize mtrrs on the boot CPU * @@ -600,7 +602,7 @@ if (cpu_has_mtrr) { mtrr_if = &generic_mtrr_ops; - size_or_mask = 0xff000000; /* 36 bits */ + size_or_mask = SIZE_OR_MASK_BITS(36); size_and_mask = 0x00f00000; phys_addr = 36; @@ -619,7 +621,7 @@ boot_cpu_data.x86_mask == 0x4)) phys_addr = 36; - size_or_mask = ~((1ULL << (phys_addr - PAGE_SHIFT)) - 1); + size_or_mask = SIZE_OR_MASK_BITS(phys_addr); size_and_mask = ~size_or_mask & 0xfffff00000ULL; } else if (boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR && boot_cpu_data.x86 == 6) { @@ -627,7 +629,7 @@ * VIA C* family have Intel style MTRRs, * but don't support PAE */ - size_or_mask = 0xfff00000; /* 32 bits */ + size_or_mask = SIZE_OR_MASK_BITS(32); size_and_mask = 0; phys_addr = 32; } @@ -637,21 +639,21 @@ if (cpu_has_k6_mtrr) { /* Pre-Athlon (K6) AMD CPU MTRRs */ mtrr_if = mtrr_ops[X86_VENDOR_AMD]; - size_or_mask = 0xfff00000; /* 32 bits */ + size_or_mask = SIZE_OR_MASK_BITS(32); size_and_mask = 0; } break; case X86_VENDOR_CENTAUR: if (cpu_has_centaur_mcr) { mtrr_if = mtrr_ops[X86_VENDOR_CENTAUR]; - size_or_mask = 0xfff00000; /* 32 bits */ + size_or_mask = SIZE_OR_MASK_BITS(32); size_and_mask = 0; } break; case X86_VENDOR_CYRIX: if (cpu_has_cyrix_arr) { mtrr_if = mtrr_ops[X86_VENDOR_CYRIX]; - size_or_mask = 0xfff00000; /* 32 bits */ + size_or_mask = SIZE_OR_MASK_BITS(32); size_and_mask = 0; } break; --- linux-ppc-3.8.0.orig/arch/x86/kernel/cpu/mtrr/generic.c +++ linux-ppc-3.8.0/arch/x86/kernel/cpu/mtrr/generic.c @@ -510,8 +510,9 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base, unsigned long *size, mtrr_type *type) { - unsigned int mask_lo, mask_hi, base_lo, base_hi; - unsigned int tmp, hi; + u32 mask_lo, mask_hi, base_lo, base_hi; + unsigned int hi; + u64 tmp, mask; /* * get_mtrr doesn't need to update mtrr_state, also it could be called @@ -532,18 +533,18 @@ rdmsr(MTRRphysBase_MSR(reg), base_lo, base_hi); /* Work out the shifted address mask: */ - tmp = mask_hi << (32 - PAGE_SHIFT) | mask_lo >> PAGE_SHIFT; - mask_lo = size_or_mask | tmp; + tmp = (u64)mask_hi << (32 - PAGE_SHIFT) | mask_lo >> PAGE_SHIFT; + mask = size_or_mask | tmp; /* Expand tmp with high bits to all 1s: */ - hi = fls(tmp); + hi = fls64(tmp); if (hi > 0) { - tmp |= ~((1<<(hi - 1)) - 1); + tmp |= ~((1ULL<<(hi - 1)) - 1); - if (tmp != mask_lo) { + if (tmp != mask) { printk(KERN_WARNING "mtrr: your BIOS has configured an incorrect mask, fixing it.\n"); add_taint(TAINT_FIRMWARE_WORKAROUND); - mask_lo = tmp; + mask = tmp; } } @@ -551,8 +552,8 @@ * This works correctly if size is a power of two, i.e. a * contiguous range: */ - *size = -mask_lo; - *base = base_hi << (32 - PAGE_SHIFT) | base_lo >> PAGE_SHIFT; + *size = -mask; + *base = (u64)base_hi << (32 - PAGE_SHIFT) | base_lo >> PAGE_SHIFT; *type = base_lo & 0xff; out_put_cpu: --- linux-ppc-3.8.0.orig/arch/x86/kernel/apic/ipi.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/kernel/apic/apic.c +++ linux-ppc-3.8.0/arch/x86/kernel/apic/apic.c @@ -131,7 +131,7 @@ { if (config_enabled(CONFIG_X86_32) && !arg) force_enable_local_apic = 1; - else if (!strncmp(arg, "notscdeadline", 13)) + else if (arg && !strncmp(arg, "notscdeadline", 13)) setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER); return 0; } --- linux-ppc-3.8.0.orig/arch/x86/kvm/lapic.c +++ linux-ppc-3.8.0/arch/x86/kvm/lapic.c @@ -1781,7 +1781,7 @@ if (!pv_eoi_enabled(vcpu)) return 0; return kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.pv_eoi.data, - addr); + addr, sizeof(u8)); } void kvm_lapic_init(void) --- linux-ppc-3.8.0.orig/arch/x86/kvm/emulate.c +++ linux-ppc-3.8.0/arch/x86/kvm/emulate.c @@ -4030,6 +4030,10 @@ break; case OpMem8: ctxt->memop.bytes = 1; + if (ctxt->memop.type == OP_REG) { + ctxt->memop.addr.reg = decode_register(ctxt, ctxt->modrm_rm, 1); + fetch_register_operand(&ctxt->memop); + } goto mem_common; case OpMem16: ctxt->memop.bytes = 2; --- linux-ppc-3.8.0.orig/arch/x86/kvm/vmx.c +++ linux-ppc-3.8.0/arch/x86/kvm/vmx.c @@ -5059,6 +5059,12 @@ return 0; } + if (vcpu->arch.halt_request) { + vcpu->arch.halt_request = 0; + ret = kvm_emulate_halt(vcpu); + goto out; + } + if (signal_pending(current)) goto out; if (need_resched()) --- linux-ppc-3.8.0.orig/arch/x86/kvm/x86.c +++ linux-ppc-3.8.0/arch/x86/kvm/x86.c @@ -558,8 +558,6 @@ if (index != XCR_XFEATURE_ENABLED_MASK) return 1; xcr0 = xcr; - if (kvm_x86_ops->get_cpl(vcpu) != 0) - return 1; if (!(xcr0 & XSTATE_FP)) return 1; if ((xcr0 & XSTATE_YMM) && !(xcr0 & XSTATE_SSE)) @@ -573,7 +571,8 @@ int kvm_set_xcr(struct kvm_vcpu *vcpu, u32 index, u64 xcr) { - if (__kvm_set_xcr(vcpu, index, xcr)) { + if (kvm_x86_ops->get_cpl(vcpu) != 0 || + __kvm_set_xcr(vcpu, index, xcr)) { kvm_inject_gp(vcpu, 0); return 1; } @@ -1408,25 +1407,15 @@ unsigned long flags, this_tsc_khz; struct kvm_vcpu_arch *vcpu = &v->arch; struct kvm_arch *ka = &v->kvm->arch; - void *shared_kaddr; s64 kernel_ns, max_kernel_ns; u64 tsc_timestamp, host_tsc; - struct pvclock_vcpu_time_info *guest_hv_clock; + struct pvclock_vcpu_time_info guest_hv_clock; u8 pvclock_flags; bool use_master_clock; kernel_ns = 0; host_tsc = 0; - /* Keep irq disabled to prevent changes to the clock */ - local_irq_save(flags); - this_tsc_khz = __get_cpu_var(cpu_tsc_khz); - if (unlikely(this_tsc_khz == 0)) { - local_irq_restore(flags); - kvm_make_request(KVM_REQ_CLOCK_UPDATE, v); - return 1; - } - /* * If the host uses TSC clock, then passthrough TSC as stable * to the guest. @@ -1438,6 +1427,15 @@ kernel_ns = ka->master_kernel_ns; } spin_unlock(&ka->pvclock_gtod_sync_lock); + + /* Keep irq disabled to prevent changes to the clock */ + local_irq_save(flags); + this_tsc_khz = __get_cpu_var(cpu_tsc_khz); + if (unlikely(this_tsc_khz == 0)) { + local_irq_restore(flags); + kvm_make_request(KVM_REQ_CLOCK_UPDATE, v); + return 1; + } if (!use_master_clock) { host_tsc = native_read_tsc(); kernel_ns = get_kernel_ns(); @@ -1465,7 +1463,7 @@ local_irq_restore(flags); - if (!vcpu->time_page) + if (!vcpu->pv_time_enabled) return 0; /* @@ -1527,12 +1525,12 @@ */ vcpu->hv_clock.version += 2; - shared_kaddr = kmap_atomic(vcpu->time_page); - - guest_hv_clock = shared_kaddr + vcpu->time_offset; + if (unlikely(kvm_read_guest_cached(v->kvm, &vcpu->pv_time, + &guest_hv_clock, sizeof(guest_hv_clock)))) + return 0; /* retain PVCLOCK_GUEST_STOPPED if set in guest copy */ - pvclock_flags = (guest_hv_clock->flags & PVCLOCK_GUEST_STOPPED); + pvclock_flags = (guest_hv_clock.flags & PVCLOCK_GUEST_STOPPED); if (vcpu->pvclock_set_guest_stopped_request) { pvclock_flags |= PVCLOCK_GUEST_STOPPED; @@ -1545,12 +1543,9 @@ vcpu->hv_clock.flags = pvclock_flags; - memcpy(shared_kaddr + vcpu->time_offset, &vcpu->hv_clock, - sizeof(vcpu->hv_clock)); - - kunmap_atomic(shared_kaddr); - - mark_page_dirty(v->kvm, vcpu->time >> PAGE_SHIFT); + kvm_write_guest_cached(v->kvm, &vcpu->pv_time, + &vcpu->hv_clock, + sizeof(vcpu->hv_clock)); return 0; } @@ -1829,7 +1824,8 @@ return 0; } - if (kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.apf.data, gpa)) + if (kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.apf.data, gpa, + sizeof(u32))) return 1; vcpu->arch.apf.send_user_only = !(data & KVM_ASYNC_PF_SEND_ALWAYS); @@ -1839,10 +1835,7 @@ static void kvmclock_reset(struct kvm_vcpu *vcpu) { - if (vcpu->arch.time_page) { - kvm_release_page_dirty(vcpu->arch.time_page); - vcpu->arch.time_page = NULL; - } + vcpu->arch.pv_time_enabled = false; } static void accumulate_steal_time(struct kvm_vcpu *vcpu) @@ -1948,6 +1941,7 @@ break; case MSR_KVM_SYSTEM_TIME_NEW: case MSR_KVM_SYSTEM_TIME: { + u64 gpa_offset; kvmclock_reset(vcpu); vcpu->arch.time = data; @@ -1957,14 +1951,14 @@ if (!(data & 1)) break; - /* ...but clean it before doing the actual write */ - vcpu->arch.time_offset = data & ~(PAGE_MASK | 1); - - vcpu->arch.time_page = - gfn_to_page(vcpu->kvm, data >> PAGE_SHIFT); + gpa_offset = data & ~(PAGE_MASK | 1); - if (is_error_page(vcpu->arch.time_page)) - vcpu->arch.time_page = NULL; + if (kvm_gfn_to_hva_cache_init(vcpu->kvm, + &vcpu->arch.pv_time, data & ~1ULL, + sizeof(struct pvclock_vcpu_time_info))) + vcpu->arch.pv_time_enabled = false; + else + vcpu->arch.pv_time_enabled = true; break; } @@ -1981,7 +1975,8 @@ return 1; if (kvm_gfn_to_hva_cache_init(vcpu->kvm, &vcpu->arch.st.stime, - data & KVM_STEAL_VALID_BITS)) + data & KVM_STEAL_VALID_BITS, + sizeof(struct kvm_steal_time))) return 1; vcpu->arch.st.msr_val = data; @@ -2967,7 +2962,7 @@ */ static int kvm_set_guest_paused(struct kvm_vcpu *vcpu) { - if (!vcpu->arch.time_page) + if (!vcpu->arch.pv_time_enabled) return -EINVAL; vcpu->arch.pvclock_set_guest_stopped_request = true; kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu); @@ -6661,6 +6656,7 @@ goto fail_free_wbinvd_dirty_mask; vcpu->arch.ia32_tsc_adjust_msr = 0x0; + vcpu->arch.pv_time_enabled = false; kvm_async_pf_hash_reset(vcpu); kvm_pmu_init(vcpu); --- linux-ppc-3.8.0.orig/arch/x86/include/asm/syscall.h +++ linux-ppc-3.8.0/arch/x86/include/asm/syscall.h @@ -29,13 +29,13 @@ */ static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs) { - return regs->orig_ax & __SYSCALL_MASK; + return regs->orig_ax; } static inline void syscall_rollback(struct task_struct *task, struct pt_regs *regs) { - regs->ax = regs->orig_ax & __SYSCALL_MASK; + regs->ax = regs->orig_ax; } static inline long syscall_get_error(struct task_struct *task, --- linux-ppc-3.8.0.orig/arch/x86/include/asm/dma-mapping.h +++ linux-ppc-3.8.0/arch/x86/include/asm/dma-mapping.h @@ -163,8 +163,6 @@ { struct dma_map_ops *ops = get_dma_ops(dev); - WARN_ON(irqs_disabled()); /* for portability */ - if (dma_release_from_coherent(dev, get_order(size), vaddr)) return; --- linux-ppc-3.8.0.orig/arch/x86/include/asm/paravirt_types.h +++ linux-ppc-3.8.0/arch/x86/include/asm/paravirt_types.h @@ -91,6 +91,7 @@ /* Set deferred update mode, used for batching operations. */ void (*enter)(void); void (*leave)(void); + void (*flush)(void); }; struct pv_time_ops { @@ -679,6 +680,7 @@ void paravirt_enter_lazy_mmu(void); void paravirt_leave_lazy_mmu(void); +void paravirt_flush_lazy_mmu(void); void _paravirt_nop(void); u32 _paravirt_ident_32(u32); --- linux-ppc-3.8.0.orig/arch/x86/include/asm/kvm_host.h +++ linux-ppc-3.8.0/arch/x86/include/asm/kvm_host.h @@ -419,8 +419,8 @@ gpa_t time; struct pvclock_vcpu_time_info hv_clock; unsigned int hw_tsc_khz; - unsigned int time_offset; - struct page *time_page; + struct gfn_to_hva_cache pv_time; + bool pv_time_enabled; /* set guest stopped flag in pvclock flags field */ bool pvclock_set_guest_stopped_request; --- linux-ppc-3.8.0.orig/arch/x86/include/asm/paravirt.h +++ linux-ppc-3.8.0/arch/x86/include/asm/paravirt.h @@ -703,7 +703,10 @@ PVOP_VCALL0(pv_mmu_ops.lazy_mode.leave); } -void arch_flush_lazy_mmu_mode(void); +static inline void arch_flush_lazy_mmu_mode(void) +{ + PVOP_VCALL0(pv_mmu_ops.lazy_mode.flush); +} static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx, phys_addr_t phys, pgprot_t flags) --- linux-ppc-3.8.0.orig/arch/x86/include/asm/efi.h +++ linux-ppc-3.8.0/arch/x86/include/asm/efi.h @@ -102,7 +102,14 @@ extern void efi_unmap_memmap(void); extern void efi_memory_uc(u64 addr, unsigned long size); -#ifndef CONFIG_EFI +#ifdef CONFIG_EFI + +static inline bool efi_is_native(void) +{ + return IS_ENABLED(CONFIG_X86_64) == efi_enabled(EFI_64BIT); +} + +#else /* * IF EFI is not configured, have the EFI calls return -ENOSYS. */ --- linux-ppc-3.8.0.orig/arch/x86/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/x86/include/asm/tlb.h @@ -7,7 +7,7 @@ #define tlb_flush(tlb) \ { \ - if (tlb->fullmm == 0) \ + if (!tlb->fullmm && !tlb->need_flush_all) \ flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end, 0UL); \ else \ flush_tlb_mm_range(tlb->mm, 0UL, TLB_FLUSH_ALL, 0UL); \ --- linux-ppc-3.8.0.orig/arch/x86/include/asm/signal.h +++ linux-ppc-3.8.0/arch/x86/include/asm/signal.h @@ -31,6 +31,9 @@ #include #ifndef __ASSEMBLY__ extern void do_notify_resume(struct pt_regs *, void *, __u32); + +#define __ARCH_HAS_SA_RESTORER + #ifdef __i386__ struct old_sigaction { __sighandler_t sa_handler; --- linux-ppc-3.8.0.orig/arch/x86/include/asm/mmzone_32.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/include/asm/irq_remapping.h +++ linux-ppc-3.8.0/arch/x86/include/asm/irq_remapping.h @@ -23,6 +23,14 @@ #define __X86_IRQ_REMAPPING_H #include +#include + +struct IO_APIC_route_entry; +struct io_apic_irq_attr; +struct irq_chip; +struct msi_msg; +struct pci_dev; +struct irq_cfg; #ifdef CONFIG_IRQ_REMAP @@ -30,6 +38,7 @@ extern void setup_irq_remapping_ops(void); extern int irq_remapping_supported(void); +extern void set_irq_remapping_broken(void); extern int irq_remapping_prepare(void); extern int irq_remapping_enable(void); extern void irq_remapping_disable(void); @@ -58,6 +67,7 @@ static inline void setup_irq_remapping_ops(void) { } static inline int irq_remapping_supported(void) { return 0; } +static inline void set_irq_remapping_broken(void) { } static inline int irq_remapping_prepare(void) { return -ENODEV; } static inline int irq_remapping_enable(void) { return -ENODEV; } static inline void irq_remapping_disable(void) { } --- linux-ppc-3.8.0.orig/arch/x86/include/asm/xen/hypercall.h +++ linux-ppc-3.8.0/arch/x86/include/asm/xen/hypercall.h @@ -382,14 +382,14 @@ return _hypercall3(int, console_io, cmd, count, str); } -extern int __must_check HYPERVISOR_physdev_op_compat(int, void *); +extern int __must_check xen_physdev_op_compat(int, void *); static inline int HYPERVISOR_physdev_op(int cmd, void *arg) { int rc = _hypercall2(int, physdev_op, cmd, arg); if (unlikely(rc == -ENOSYS)) - rc = HYPERVISOR_physdev_op_compat(cmd, arg); + rc = xen_physdev_op_compat(cmd, arg); return rc; } --- linux-ppc-3.8.0.orig/arch/x86/crypto/crc32c-pcl-intel-asm_64.S +++ linux-ppc-3.8.0/arch/x86/crypto/crc32c-pcl-intel-asm_64.S @@ -42,6 +42,8 @@ * SOFTWARE. */ +#include + ## ISCSI CRC 32 Implementation with crc32 and pclmulqdq Instruction .macro LABEL prefix n @@ -224,10 +226,10 @@ movdqa (bufp), %xmm0 # 2 consts: K1:K2 movq crc_init, %xmm1 # CRC for block 1 - pclmulqdq $0x00,%xmm0,%xmm1 # Multiply by K2 + PCLMULQDQ 0x00,%xmm0,%xmm1 # Multiply by K2 movq crc1, %xmm2 # CRC for block 2 - pclmulqdq $0x10, %xmm0, %xmm2 # Multiply by K1 + PCLMULQDQ 0x10, %xmm0, %xmm2 # Multiply by K1 pxor %xmm2,%xmm1 movq %xmm1, %rax --- linux-ppc-3.8.0.orig/arch/x86/mm/mmap.c +++ linux-ppc-3.8.0/arch/x86/mm/mmap.c @@ -112,12 +112,14 @@ */ void arch_pick_mmap_layout(struct mm_struct *mm) { + mm->mmap_legacy_base = mmap_legacy_base(); + mm->mmap_base = mmap_base(); + if (mmap_is_legacy()) { - mm->mmap_base = mmap_legacy_base(); + mm->mmap_base = mm->mmap_legacy_base; mm->get_unmapped_area = arch_get_unmapped_area; mm->unmap_area = arch_unmap_area; } else { - mm->mmap_base = mmap_base(); mm->get_unmapped_area = arch_get_unmapped_area_topdown; mm->unmap_area = arch_unmap_area_topdown; } --- linux-ppc-3.8.0.orig/arch/x86/mm/fault.c +++ linux-ppc-3.8.0/arch/x86/mm/fault.c @@ -378,10 +378,12 @@ if (pgd_none(*pgd_ref)) return -1; - if (pgd_none(*pgd)) + if (pgd_none(*pgd)) { set_pgd(pgd, *pgd_ref); - else + arch_flush_lazy_mmu_mode(); + } else { BUG_ON(pgd_page_vaddr(*pgd) != pgd_page_vaddr(*pgd_ref)); + } /* * Below here mismatches are bugs because these lower tables --- linux-ppc-3.8.0.orig/arch/x86/mm/pgtable.c +++ linux-ppc-3.8.0/arch/x86/mm/pgtable.c @@ -58,6 +58,13 @@ void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) { paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); + /* + * NOTE! For PAE, any changes to the top page-directory-pointer-table + * entries need a full cr3 reload to flush. + */ +#ifdef CONFIG_X86_PAE + tlb->need_flush_all = 1; +#endif tlb_remove_page(tlb, virt_to_page(pmd)); } --- linux-ppc-3.8.0.orig/arch/x86/mm/numa_32.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/mm/numa.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/mm/init.c +++ linux-ppc-3.8.0/arch/x86/mm/init.c @@ -45,11 +45,15 @@ int i; unsigned long puds = 0, pmds = 0, ptes = 0, tables; unsigned long start = 0, good_end; + unsigned long pgd_extra = 0; phys_addr_t base; for (i = 0; i < nr_range; i++) { unsigned long range, extra; + if ((mr[i].end >> PGDIR_SHIFT) - (mr[i].start >> PGDIR_SHIFT)) + pgd_extra++; + range = mr[i].end - mr[i].start; puds += (range + PUD_SIZE - 1) >> PUD_SHIFT; @@ -74,6 +78,7 @@ tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); tables += roundup(pmds * sizeof(pmd_t), PAGE_SIZE); tables += roundup(ptes * sizeof(pte_t), PAGE_SIZE); + tables += (pgd_extra * PAGE_SIZE); #ifdef CONFIG_X86_32 /* for fixmap */ --- linux-ppc-3.8.0.orig/arch/x86/mm/numa_internal.h +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/x86/lib/usercopy_64.c +++ linux-ppc-3.8.0/arch/x86/lib/usercopy_64.c @@ -74,10 +74,10 @@ char c; unsigned zero_len; - for (; len; --len) { + for (; len; --len, to++) { if (__get_user_nocheck(c, from++, sizeof(char))) break; - if (__put_user_nocheck(c, to++, sizeof(char))) + if (__put_user_nocheck(c, to, sizeof(char))) break; } --- linux-ppc-3.8.0.orig/arch/x86/power/cpu.c +++ linux-ppc-3.8.0/arch/x86/power/cpu.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -228,6 +229,7 @@ do_fpu_end(); x86_platform.restore_sched_clock_state(); mtrr_bp_restore(); + perf_restore_debug_store(); } /* Needed by apm.c */ --- linux-ppc-3.8.0.orig/arch/x86/power/hibernate_32.c +++ linux-ppc-3.8.0/arch/x86/power/hibernate_32.c @@ -129,8 +129,6 @@ } } - resume_map_numa_kva(pgd_base); - return 0; } --- linux-ppc-3.8.0.orig/arch/arm64/kernel/signal32.c +++ linux-ppc-3.8.0/arch/arm64/kernel/signal32.c @@ -76,7 +76,7 @@ struct compat_ucontext { compat_ulong_t uc_flags; - struct compat_ucontext *uc_link; + compat_uptr_t uc_link; compat_stack_t uc_stack; struct compat_sigcontext uc_mcontext; compat_sigset_t uc_sigmask; @@ -703,7 +703,7 @@ err |= copy_siginfo_to_user32(&frame->info, info); __put_user_error(0, &frame->sig.uc.uc_flags, err); - __put_user_error(NULL, &frame->sig.uc.uc_link, err); + __put_user_error(0, &frame->sig.uc.uc_link, err); memset(&stack, 0, sizeof(stack)); stack.ss_sp = (compat_uptr_t)current->sas_ss_sp; --- linux-ppc-3.8.0.orig/arch/arm64/kernel/perf_event.c +++ linux-ppc-3.8.0/arch/arm64/kernel/perf_event.c @@ -107,7 +107,12 @@ static int armpmu_map_event(const unsigned (*event_map)[PERF_COUNT_HW_MAX], u64 config) { - int mapping = (*event_map)[config]; + int mapping; + + if (config >= PERF_COUNT_HW_MAX) + return -EINVAL; + + mapping = (*event_map)[config]; return mapping == HW_OP_UNSUPPORTED ? -ENOENT : mapping; } @@ -317,6 +322,9 @@ struct hw_perf_event fake_event = event->hw; struct pmu *leader_pmu = event->group_leader->pmu; + if (is_software_event(event)) + return 1; + if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF) return 1; @@ -1331,6 +1339,7 @@ { struct frame_tail __user *tail; + perf_callchain_store(entry, regs->pc); tail = (struct frame_tail __user *)regs->regs[29]; while (entry->nr < PERF_MAX_STACK_DEPTH && --- linux-ppc-3.8.0.orig/arch/arm64/kernel/debug-monitors.c +++ linux-ppc-3.8.0/arch/arm64/kernel/debug-monitors.c @@ -136,8 +136,6 @@ */ static void clear_os_lock(void *unused) { - asm volatile("msr mdscr_el1, %0" : : "r" (0)); - isb(); asm volatile("msr oslar_el1, %0" : : "r" (0)); isb(); } --- linux-ppc-3.8.0.orig/arch/arm64/kernel/traps.c +++ linux-ppc-3.8.0/arch/arm64/kernel/traps.c @@ -317,14 +317,20 @@ */ asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr) { + siginfo_t info; + void __user *pc = (void __user *)instruction_pointer(regs); console_verbose(); pr_crit("Bad mode in %s handler detected, code 0x%08x\n", handler[reason], esr); + __show_regs(regs); - die("Oops - bad mode", regs, 0); - local_irq_disable(); - panic("bad mode"); + info.si_signo = SIGILL; + info.si_errno = 0; + info.si_code = ILL_ILLOPC; + info.si_addr = pc; + + arm64_notify_die("Oops - bad mode", regs, &info, 0); } void __pte_error(const char *file, int line, unsigned long val) --- linux-ppc-3.8.0.orig/arch/arm64/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/arm64/include/asm/tlb.h @@ -35,6 +35,7 @@ struct mm_struct *mm; unsigned int fullmm; struct vm_area_struct *vma; + unsigned long start, end; unsigned long range_start; unsigned long range_end; unsigned int nr; @@ -97,10 +98,12 @@ } static inline void -tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int fullmm) +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) { tlb->mm = mm; - tlb->fullmm = fullmm; + tlb->fullmm = !(start | (end+1)); + tlb->start = start; + tlb->end = end; tlb->vma = NULL; tlb->max = ARRAY_SIZE(tlb->local); tlb->pages = tlb->local; --- linux-ppc-3.8.0.orig/arch/arm64/mm/proc.S +++ linux-ppc-3.8.0/arch/arm64/mm/proc.S @@ -119,8 +119,7 @@ mov x0, #3 << 20 msr cpacr_el1, x0 // Enable FP/ASIMD - mov x0, #1 - msr oslar_el1, x0 // Set the debug OS lock + msr mdscr_el1, xzr // Reset mdscr_el1 tlbi vmalle1is // invalidate I + D TLBs /* * Memory region attributes for LPAE: --- linux-ppc-3.8.0.orig/arch/arm64/mm/fault.c +++ linux-ppc-3.8.0/arch/arm64/mm/fault.c @@ -148,27 +148,11 @@ #define VM_FAULT_BADACCESS 0x020000 #define ESR_WRITE (1 << 6) +#define ESR_CM (1 << 8) #define ESR_LNX_EXEC (1 << 24) -/* - * Check that the permissions on the VMA allow for the fault which occurred. - * If we encountered a write fault, we must have write permission, otherwise - * we allow any permission. - */ -static inline bool access_error(unsigned int esr, struct vm_area_struct *vma) -{ - unsigned int mask = VM_READ | VM_WRITE | VM_EXEC; - - if (esr & ESR_WRITE) - mask = VM_WRITE; - if (esr & ESR_LNX_EXEC) - mask = VM_EXEC; - - return vma->vm_flags & mask ? false : true; -} - static int __do_page_fault(struct mm_struct *mm, unsigned long addr, - unsigned int esr, unsigned int flags, + unsigned int mm_flags, unsigned long vm_flags, struct task_struct *tsk) { struct vm_area_struct *vma; @@ -186,12 +170,17 @@ * it. */ good_area: - if (access_error(esr, vma)) { + /* + * Check that the permissions on the VMA allow for the fault which + * occurred. If we encountered a write or exec fault, we must have + * appropriate permissions, otherwise we allow any permission. + */ + if (!(vma->vm_flags & vm_flags)) { fault = VM_FAULT_BADACCESS; goto out; } - return handle_mm_fault(mm, vma, addr & PAGE_MASK, flags); + return handle_mm_fault(mm, vma, addr & PAGE_MASK, mm_flags); check_stack: if (vma->vm_flags & VM_GROWSDOWN && !expand_stack(vma, addr)) @@ -206,9 +195,15 @@ struct task_struct *tsk; struct mm_struct *mm; int fault, sig, code; - int write = esr & ESR_WRITE; - unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | - (write ? FAULT_FLAG_WRITE : 0); + unsigned long vm_flags = VM_READ | VM_WRITE | VM_EXEC; + unsigned int mm_flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; + + if (esr & ESR_LNX_EXEC) { + vm_flags = VM_EXEC; + } else if ((esr & ESR_WRITE) && !(esr & ESR_CM)) { + vm_flags = VM_WRITE; + mm_flags |= FAULT_FLAG_WRITE; + } tsk = current; mm = tsk->mm; @@ -246,7 +241,7 @@ #endif } - fault = __do_page_fault(mm, addr, esr, flags, tsk); + fault = __do_page_fault(mm, addr, mm_flags, vm_flags, tsk); /* * If we need to retry but a fatal signal is pending, handle the @@ -263,7 +258,7 @@ */ perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); - if (flags & FAULT_FLAG_ALLOW_RETRY) { + if (mm_flags & FAULT_FLAG_ALLOW_RETRY) { if (fault & VM_FAULT_MAJOR) { tsk->maj_flt++; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, regs, @@ -278,7 +273,7 @@ * Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk of * starvation. */ - flags &= ~FAULT_FLAG_ALLOW_RETRY; + mm_flags &= ~FAULT_FLAG_ALLOW_RETRY; goto retry; } } --- linux-ppc-3.8.0.orig/arch/arm64/mm/cache.S +++ linux-ppc-3.8.0/arch/arm64/mm/cache.S @@ -52,7 +52,7 @@ add x2, x2, #4 // add 4 (line length offset) mov x4, #0x3ff and x4, x4, x1, lsr #3 // find maximum number on the way size - clz x5, x4 // find bit position of way size increment + clz w5, w4 // find bit position of way size increment mov x7, #0x7fff and x7, x7, x1, lsr #13 // extract max number of the index size loop2: --- linux-ppc-3.8.0.orig/arch/powerpc/Kconfig +++ linux-ppc-3.8.0/arch/powerpc/Kconfig @@ -275,6 +275,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" @@ -570,7 +574,7 @@ config PPC_DENORMALISATION bool "PowerPC denormalisation exception handling" depends on PPC_BOOK3S_64 - default "n" + default "y" if PPC_POWERNV ---help--- Add support for handling denormalisation of single precision values. Useful for bare metal only. If unsure say Y here. @@ -718,6 +722,26 @@ help Freescale General-purpose Timers support +config HAS_FSL_PAMU + bool + default n + +config FSL_PAMU + bool "PAMU/IOMMU support" + depends on HAS_FSL_PAMU + help + Freescale PAMU/IOMMU support + +config HAS_FSL_QBMAN + bool "Datapath Acceleration Queue and Buffer management" + help + Datapath Acceleration Queue and Buffer management + +config HAS_FSL_PME + bool + depends on HAS_FSL_QBMAN + default n + # Yes MCA RS/6000s exist but Linux-PPC does not currently support any config MCA bool @@ -1006,6 +1030,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/irq.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/irq.c @@ -162,7 +162,7 @@ * in case we also had a rollover while hard disabled */ local_paca->irq_happened &= ~PACA_IRQ_DEC; - if (decrementer_check_overflow()) + if ((happened & PACA_IRQ_DEC) || decrementer_check_overflow()) return 0x900; /* Finally check if an external interrupt happened */ --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/rtas.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/rtas.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -807,6 +808,95 @@ __rtas_suspend_cpu((struct rtas_suspend_me_data *)info, 1); } +enum rtas_cpu_state { + DOWN, + UP, +}; + +#ifndef CONFIG_SMP +static int rtas_cpu_state_change_mask(enum rtas_cpu_state state, + cpumask_var_t cpus) +{ + if (!cpumask_empty(cpus)) { + cpumask_clear(cpus); + return -EINVAL; + } else + return 0; +} +#else +/* On return cpumask will be altered to indicate CPUs changed. + * CPUs with states changed will be set in the mask, + * CPUs with status unchanged will be unset in the mask. */ +static int rtas_cpu_state_change_mask(enum rtas_cpu_state state, + cpumask_var_t cpus) +{ + int cpu; + int cpuret = 0; + int ret = 0; + + if (cpumask_empty(cpus)) + return 0; + + for_each_cpu(cpu, cpus) { + switch (state) { + case DOWN: + cpuret = cpu_down(cpu); + break; + case UP: + cpuret = cpu_up(cpu); + break; + } + if (cpuret) { + pr_debug("%s: cpu_%s for cpu#%d returned %d.\n", + __func__, + ((state == UP) ? "up" : "down"), + cpu, cpuret); + if (!ret) + ret = cpuret; + if (state == UP) { + /* clear bits for unchanged cpus, return */ + cpumask_shift_right(cpus, cpus, cpu); + cpumask_shift_left(cpus, cpus, cpu); + break; + } else { + /* clear bit for unchanged cpu, continue */ + cpumask_clear_cpu(cpu, cpus); + } + } + } + + return ret; +} +#endif + +int rtas_online_cpus_mask(cpumask_var_t cpus) +{ + int ret; + + ret = rtas_cpu_state_change_mask(UP, cpus); + + if (ret) { + cpumask_var_t tmp_mask; + + if (!alloc_cpumask_var(&tmp_mask, GFP_TEMPORARY)) + return ret; + + /* Use tmp_mask to preserve cpus mask from first failure */ + cpumask_copy(tmp_mask, cpus); + rtas_offline_cpus_mask(tmp_mask); + free_cpumask_var(tmp_mask); + } + + return ret; +} +EXPORT_SYMBOL(rtas_online_cpus_mask); + +int rtas_offline_cpus_mask(cpumask_var_t cpus) +{ + return rtas_cpu_state_change_mask(DOWN, cpus); +} +EXPORT_SYMBOL(rtas_offline_cpus_mask); + int rtas_ibm_suspend_me(struct rtas_args *args) { long state; @@ -814,6 +904,8 @@ unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; struct rtas_suspend_me_data data; DECLARE_COMPLETION_ONSTACK(done); + cpumask_var_t offline_mask; + int cpuret; if (!rtas_service_present("ibm,suspend-me")) return -ENOSYS; @@ -837,11 +929,24 @@ return 0; } + if (!alloc_cpumask_var(&offline_mask, GFP_TEMPORARY)) + return -ENOMEM; + atomic_set(&data.working, 0); atomic_set(&data.done, 0); atomic_set(&data.error, 0); data.token = rtas_token("ibm,suspend-me"); data.complete = &done; + + /* All present CPUs must be online */ + cpumask_andnot(offline_mask, cpu_present_mask, cpu_online_mask); + cpuret = rtas_online_cpus_mask(offline_mask); + if (cpuret) { + pr_err("%s: Could not bring present CPUs online.\n", __func__); + atomic_set(&data.error, cpuret); + goto out; + } + stop_topology_update(); /* Call function on all CPUs. One of us will make the @@ -857,6 +962,14 @@ start_topology_update(); + /* Take down CPUs not online prior to suspend */ + cpuret = rtas_offline_cpus_mask(offline_mask); + if (cpuret) + pr_warn("%s: Could not restore CPUs to offline state.\n", + __func__); + +out: + free_cpumask_var(offline_mask); return atomic_read(&data.error); } #else /* CONFIG_PPC_PSERIES */ --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/pci-common.c @@ -1477,11 +1477,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); @@ -1494,9 +1497,15 @@ return pci_enable_resources(dev, mask); } +/* Before assuming too much here, take care to realize that we need sign + * extension from 32-bit pointers to 64-bit resource addresses to work. + */ resource_size_t pcibios_io_space_offset(struct pci_controller *hose) { - return (unsigned long) hose->io_base_virt - _IO_BASE; + long vbase = (long)hose->io_base_virt; + long io_base = _IO_BASE; + + return (resource_size_t)(vbase - io_base); } static void pcibios_setup_phb_resources(struct pci_controller *hose, --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/cpu_setup_power.S +++ linux-ppc-3.8.0/arch/powerpc/kernel/cpu_setup_power.S @@ -64,6 +64,7 @@ mflr r11 mfmsr r3 rldicl. r0,r3,4,63 + mtlr r11 beqlr li r0,0 mtspr SPRN_LPID,r0 --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/ptrace.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/ptrace.c @@ -1413,7 +1413,9 @@ */ if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE) { len = bp_info->addr2 - bp_info->addr; - } else if (bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT) { + } else if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_EXACT) + len = 1; + else { ptrace_put_breakpoints(child); return -EINVAL; } --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/udbg.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/udbg.c @@ -136,8 +136,12 @@ void __init udbg_progress(char *s, unsigned short hex) { +#ifdef CONFIG_PRINTK + if (console_loglevel <= 4) + return; udbg_puts(s); udbg_puts("\n"); +#endif } /* --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/vmlinux.lds.S +++ linux-ppc-3.8.0/arch/powerpc/kernel/vmlinux.lds.S @@ -38,9 +38,6 @@ #endif SECTIONS { - . = 0; - reloc_start = .; - . = KERNELBASE; /* --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/process.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/process.c @@ -1169,7 +1169,7 @@ #ifdef CONFIG_PPC64 /* Called with hard IRQs off */ -void __ppc64_runlatch_on(void) +void notrace __ppc64_runlatch_on(void) { struct thread_info *ti = current_thread_info(); unsigned long ctrl; @@ -1182,7 +1182,7 @@ } /* Called with hard IRQs off */ -void __ppc64_runlatch_off(void) +void notrace __ppc64_runlatch_off(void) { struct thread_info *ti = current_thread_info(); unsigned long ctrl; --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/entry_32.S +++ linux-ppc-3.8.0/arch/powerpc/kernel/entry_32.S @@ -851,7 +851,7 @@ /* check current_thread_info, _TIF_EMULATE_STACK_STORE */ CURRENT_THREAD_INFO(r9, r1) lwz r8,TI_FLAGS(r9) - andis. r8,r8,_TIF_EMULATE_STACK_STORE@h + andis. r0,r8,_TIF_EMULATE_STACK_STORE@h beq+ 1f addi r8,r1,INT_FRAME_SIZE /* Get the kprobed function entry */ --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/of_platform.c +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/powerpc/kernel/entry_64.S +++ linux-ppc-3.8.0/arch/powerpc/kernel/entry_64.S @@ -634,7 +634,7 @@ /* Clear _TIF_EMULATE_STACK_STORE flag */ lis r11,_TIF_EMULATE_STACK_STORE@h addi r5,r9,TI_FLAGS - ldarx r4,0,r5 +0: ldarx r4,0,r5 andc r4,r4,r11 stdcx. r4,0,r5 bne- 0b --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/traps.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/traps.c @@ -961,7 +961,10 @@ #ifdef CONFIG_PPC64 /* Emulate the mfspr rD, DSCR. */ - if (((instword & PPC_INST_MFSPR_DSCR_MASK) == PPC_INST_MFSPR_DSCR) && + if ((((instword & PPC_INST_MFSPR_DSCR_USER_MASK) == + PPC_INST_MFSPR_DSCR_USER) || + ((instword & PPC_INST_MFSPR_DSCR_MASK) == + PPC_INST_MFSPR_DSCR)) && cpu_has_feature(CPU_FTR_DSCR)) { PPC_WARN_EMULATED(mfdscr, regs); rd = (instword >> 21) & 0x1f; @@ -969,7 +972,10 @@ return 0; } /* Emulate the mtspr DSCR, rD. */ - if (((instword & PPC_INST_MTSPR_DSCR_MASK) == PPC_INST_MTSPR_DSCR) && + if ((((instword & PPC_INST_MTSPR_DSCR_USER_MASK) == + PPC_INST_MTSPR_DSCR_USER) || + ((instword & PPC_INST_MTSPR_DSCR_MASK) == + PPC_INST_MTSPR_DSCR)) && cpu_has_feature(CPU_FTR_DSCR)) { PPC_WARN_EMULATED(mtdscr, regs); rd = (instword >> 21) & 0x1f; @@ -1069,6 +1075,16 @@ _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); } +/* + * This occurs when running in hypervisor mode on POWER6 or later + * and an illegal instruction is encountered. + */ +void __kprobes emulation_assist_interrupt(struct pt_regs *regs) +{ + regs->msr |= REASON_ILLEGAL; + program_check_exception(regs); +} + void alignment_exception(struct pt_regs *regs) { int sig, code, fixed = 0; --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/cputable.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/cputable.c @@ -275,7 +275,7 @@ .cpu_features = CPU_FTRS_PPC970, .cpu_user_features = COMMON_USER_POWER4 | PPC_FEATURE_HAS_ALTIVEC_COMP, - .mmu_features = MMU_FTR_HPTE_TABLE, + .mmu_features = MMU_FTRS_PPC970, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/setup_64.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/setup_64.c @@ -76,7 +76,7 @@ #endif int boot_cpuid = 0; -int __initdata spinning_secondaries; +int spinning_secondaries; u64 ppc64_pft_size; /* Pick defaults since we might want to patch instructions @@ -156,6 +156,15 @@ #define check_smt_enabled() #endif /* CONFIG_SMP */ +/** Fix up paca fields required for the boot cpu */ +static void fixup_boot_paca(void) +{ + /* The boot cpu is started */ + get_paca()->cpu_start = 1; + /* Allow percpu accesses to work until we setup percpu data */ + get_paca()->data_offset = 0; +} + /* * Early initialization entry point. This is called by head.S * with MMU translation disabled. We rely on the "feature" of @@ -185,6 +194,7 @@ /* Assume we're on cpu 0 for now. Don't write to the paca yet! */ initialise_paca(&boot_paca, 0); setup_paca(&boot_paca); + fixup_boot_paca(); /* Initialize lockdep early or else spinlocks will blow */ lockdep_init(); @@ -205,11 +215,7 @@ /* Now we know the logical id of our boot cpu, setup the paca. */ setup_paca(&paca[boot_cpuid]); - - /* Fix up paca fields required for the boot cpu */ - get_paca()->cpu_start = 1; - /* Allow percpu accesses to "work" until we setup percpu data */ - get_paca()->data_offset = 0; + fixup_boot_paca(); /* Probe the machine type */ probe_machine(); --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/head_64.S +++ linux-ppc-3.8.0/arch/powerpc/kernel/head_64.S @@ -490,6 +490,7 @@ sync addi r5,r5,8 addi r6,r6,8 + isync blr .align 8 --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/machine_kexec_64.c +++ linux-ppc-3.8.0/arch/powerpc/kernel/machine_kexec_64.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -162,6 +163,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 +247,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 +286,7 @@ if (ppc_md.kexec_cpu_down) ppc_md.kexec_cpu_down(0, 0); local_irq_disable(); + hard_irq_disable(); } #endif /* SMP */ @@ -330,10 +336,13 @@ pr_debug("kexec: Starting switchover sequence.\n"); /* switch to a staticly allocated stack. Based on irq stack code. + * We setup preempt_count to avoid using VMX in memcpy. * XXX: the task struct will likely be invalid once we do the copy! */ kexec_stack.thread_info.task = current_thread_info()->task; kexec_stack.thread_info.flags = 0; + kexec_stack.thread_info.preempt_count = HARDIRQ_OFFSET; + kexec_stack.thread_info.cpu = current_thread_info()->cpu; /* We need a static PACA, too; copy this CPU's PACA over and switch to * it. Also poison per_cpu_offset to catch anyone using non-static --- linux-ppc-3.8.0.orig/arch/powerpc/kernel/exceptions-64s.S +++ linux-ppc-3.8.0/arch/powerpc/kernel/exceptions-64s.S @@ -655,7 +655,7 @@ STD_EXCEPTION_COMMON(0xb00, trap_0b, .unknown_exception) STD_EXCEPTION_COMMON(0xd00, single_step, .single_step_exception) STD_EXCEPTION_COMMON(0xe00, trap_0e, .unknown_exception) - STD_EXCEPTION_COMMON(0xe40, emulation_assist, .program_check_exception) + STD_EXCEPTION_COMMON(0xe40, emulation_assist, .emulation_assist_interrupt) STD_EXCEPTION_COMMON(0xe60, hmi_exception, .unknown_exception) STD_EXCEPTION_COMMON_ASYNC(0xf00, performance_monitor, .performance_monitor_exception) STD_EXCEPTION_COMMON(0x1300, instruction_breakpoint, .instruction_breakpoint_exception) @@ -740,7 +740,7 @@ _MASKABLE_RELON_EXCEPTION_PSERIES(0x502, hardware_interrupt, EXC_HV, SOFTEN_TEST_HV) FTR_SECTION_ELSE _MASKABLE_RELON_EXCEPTION_PSERIES(0x500, hardware_interrupt, EXC_STD, SOFTEN_TEST_PR) - ALT_FTR_SECTION_END_IFSET(CPU_FTR_ARCH_206) + ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE) STD_RELON_EXCEPTION_PSERIES(0x4600, 0x600, alignment) STD_RELON_EXCEPTION_PSERIES(0x4700, 0x700, program_check) STD_RELON_EXCEPTION_PSERIES(0x4800, 0x800, fp_unavailable) @@ -1268,20 +1268,36 @@ _GLOBAL(do_stab_bolted) stw r9,PACA_EXSLB+EX_CCR(r13) /* save CR in exc. frame */ std r11,PACA_EXSLB+EX_SRR0(r13) /* save SRR0 in exc. frame */ + mfspr r11,SPRN_DAR /* ea */ + /* + * check for bad kernel/user address + * (ea & ~REGION_MASK) >= PGTABLE_RANGE + */ + rldicr. r9,r11,4,(63 - 46 - 4) + li r9,0 /* VSID = 0 for bad address */ + bne- 0f + + /* + * Calculate VSID: + * This is the kernel vsid, we take the top for context from + * the range. context = (MAX_USER_CONTEXT) + ((ea >> 60) - 0xc) + 1 + * Here we know that (ea >> 60) == 0xc + */ + lis r9,(MAX_USER_CONTEXT + 1)@ha + addi r9,r9,(MAX_USER_CONTEXT + 1)@l + + srdi r10,r11,SID_SHIFT + rldimi r10,r9,ESID_BITS,0 /* proto vsid */ + ASM_VSID_SCRAMBLE(r10, r9, 256M) + rldic r9,r10,12,16 /* r9 = vsid << 12 */ + +0: /* Hash to the primary group */ ld r10,PACASTABVIRT(r13) - mfspr r11,SPRN_DAR - srdi r11,r11,28 + srdi r11,r11,SID_SHIFT rldimi r10,r11,7,52 /* r10 = first ste of the group */ - /* Calculate VSID */ - /* This is a kernel address, so protovsid = ESID | 1 << 37 */ - li r9,0x1 - rldimi r11,r9,(CONTEXT_BITS + USER_ESID_BITS),0 - ASM_VSID_SCRAMBLE(r11, r9, 256M) - rldic r9,r11,12,16 /* r9 = vsid << 12 */ - /* Search the primary group for a free entry */ 1: ld r11,0(r10) /* Test valid bit of the current ste */ andi. r11,r11,0x80 --- linux-ppc-3.8.0.orig/arch/powerpc/kvm/e500mc.c +++ linux-ppc-3.8.0/arch/powerpc/kvm/e500mc.c @@ -108,6 +108,8 @@ { } +static DEFINE_PER_CPU(struct kvm_vcpu *, last_vcpu_on_cpu); + void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu) { struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); @@ -136,8 +138,11 @@ mtspr(SPRN_GDEAR, vcpu->arch.shared->dar); mtspr(SPRN_GESR, vcpu->arch.shared->esr); - if (vcpu->arch.oldpir != mfspr(SPRN_PIR)) + if (vcpu->arch.oldpir != mfspr(SPRN_PIR) || + __get_cpu_var(last_vcpu_on_cpu) != vcpu) { kvmppc_e500_tlbil_all(vcpu_e500); + __get_cpu_var(last_vcpu_on_cpu) = vcpu; + } kvmppc_load_guest_fp(vcpu); } --- linux-ppc-3.8.0.orig/arch/powerpc/kvm/book3s_64_mmu_host.c +++ linux-ppc-3.8.0/arch/powerpc/kvm/book3s_64_mmu_host.c @@ -326,8 +326,8 @@ vcpu3s->context_id[0] = err; vcpu3s->proto_vsid_max = ((vcpu3s->context_id[0] + 1) - << USER_ESID_BITS) - 1; - vcpu3s->proto_vsid_first = vcpu3s->context_id[0] << USER_ESID_BITS; + << ESID_BITS) - 1; + vcpu3s->proto_vsid_first = vcpu3s->context_id[0] << ESID_BITS; vcpu3s->proto_vsid_next = vcpu3s->proto_vsid_first; kvmppc_mmu_hpte_init(vcpu); --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/exception-64s.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/exception-64s.h @@ -413,7 +413,7 @@ */ #define STD_EXCEPTION_COMMON_ASYNC(trap, label, hdlr) \ EXCEPTION_COMMON(trap, label, hdlr, ret_from_except_lite, \ - FINISH_NAP;RUNLATCH_ON;DISABLE_INTS) + FINISH_NAP;DISABLE_INTS;RUNLATCH_ON) /* * When the idle code in power4_idle puts the CPU into NAP mode, --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/ppc-opcode.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/ppc-opcode.h @@ -112,6 +112,10 @@ #define PPC_INST_MFSPR_DSCR_MASK 0xfc1fffff #define PPC_INST_MTSPR_DSCR 0x7c1103a6 #define PPC_INST_MTSPR_DSCR_MASK 0xfc1fffff +#define PPC_INST_MFSPR_DSCR_USER 0x7c0302a6 +#define PPC_INST_MFSPR_DSCR_USER_MASK 0xfc1fffff +#define PPC_INST_MTSPR_DSCR_USER 0x7c0303a6 +#define PPC_INST_MTSPR_DSCR_USER_MASK 0xfc1fffff #define PPC_INST_SLBFEE 0x7c0007a7 #define PPC_INST_STRING 0x7c00042a --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/rtas.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/rtas.h @@ -262,6 +262,8 @@ extern void rtas_initialize(void); extern int rtas_suspend_cpu(struct rtas_suspend_me_data *data); extern int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data); +extern int rtas_online_cpus_mask(cpumask_var_t cpus); +extern int rtas_offline_cpus_mask(cpumask_var_t cpus); extern int rtas_ibm_suspend_me(struct rtas_args *); struct rtc_time; --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/signal.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/signal.h @@ -1,6 +1,7 @@ #ifndef _ASM_POWERPC_SIGNAL_H #define _ASM_POWERPC_SIGNAL_H +#define __ARCH_HAS_SA_RESTORER #include #endif /* _ASM_POWERPC_SIGNAL_H */ --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/module.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/module.h @@ -82,10 +82,9 @@ void sort_ex_table(struct exception_table_entry *start, struct exception_table_entry *finish); -#ifdef CONFIG_MODVERSIONS +#if defined(CONFIG_MODVERSIONS) && defined(CONFIG_PPC64) #define ARCH_RELOCATES_KCRCTAB - -extern const unsigned long reloc_start[]; +#define reloc_start PHYSICAL_START #endif #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_MODULE_H */ --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/mmu-hash64.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/mmu-hash64.h @@ -343,17 +343,16 @@ /* * VSID allocation (256MB segment) * - * We first generate a 38-bit "proto-VSID". For kernel addresses this - * is equal to the ESID | 1 << 37, for user addresses it is: - * (context << USER_ESID_BITS) | (esid & ((1U << USER_ESID_BITS) - 1) - * - * This splits the proto-VSID into the below range - * 0 - (2^(CONTEXT_BITS + USER_ESID_BITS) - 1) : User proto-VSID range - * 2^(CONTEXT_BITS + USER_ESID_BITS) - 2^(VSID_BITS) : Kernel proto-VSID range - * - * We also have CONTEXT_BITS + USER_ESID_BITS = VSID_BITS - 1 - * That is, we assign half of the space to user processes and half - * to the kernel. + * We first generate a 37-bit "proto-VSID". Proto-VSIDs are generated + * from mmu context id and effective segment id of the address. + * + * For user processes max context id is limited to ((1ul << 19) - 5) + * for kernel space, we use the top 4 context ids to map address as below + * NOTE: each context only support 64TB now. + * 0x7fffc - [ 0xc000000000000000 - 0xc0003fffffffffff ] + * 0x7fffd - [ 0xd000000000000000 - 0xd0003fffffffffff ] + * 0x7fffe - [ 0xe000000000000000 - 0xe0003fffffffffff ] + * 0x7ffff - [ 0xf000000000000000 - 0xf0003fffffffffff ] * * The proto-VSIDs are then scrambled into real VSIDs with the * multiplicative hash: @@ -363,41 +362,49 @@ * VSID_MULTIPLIER is prime, so in particular it is * co-prime to VSID_MODULUS, making this a 1:1 scrambling function. * Because the modulus is 2^n-1 we can compute it efficiently without - * a divide or extra multiply (see below). - * - * This scheme has several advantages over older methods: - * - * - We have VSIDs allocated for every kernel address - * (i.e. everything above 0xC000000000000000), except the very top - * segment, which simplifies several things. - * - * - We allow for USER_ESID_BITS significant bits of ESID and - * CONTEXT_BITS bits of context for user addresses. - * i.e. 64T (46 bits) of address space for up to half a million contexts. - * - * - The scramble function gives robust scattering in the hash - * table (at least based on some initial results). The previous - * method was more susceptible to pathological cases giving excessive - * hash collisions. + * a divide or extra multiply (see below). The scramble function gives + * robust scattering in the hash table (at least based on some initial + * results). + * + * We also consider VSID 0 special. We use VSID 0 for slb entries mapping + * bad address. This enables us to consolidate bad address handling in + * hash_page. + * + * We also need to avoid the last segment of the last context, because that + * would give a protovsid of 0x1fffffffff. That will result in a VSID 0 + * because of the modulo operation in vsid scramble. But the vmemmap + * (which is what uses region 0xf) will never be close to 64TB in size + * (it's 56 bytes per page of system memory). + */ + +#define CONTEXT_BITS 19 +#define ESID_BITS 18 +#define ESID_BITS_1T 6 + +/* + * 256MB segment + * The proto-VSID space has 2^(CONTEX_BITS + ESID_BITS) - 1 segments + * available for user + kernel mapping. The top 4 contexts are used for + * kernel mapping. Each segment contains 2^28 bytes. Each + * context maps 2^46 bytes (64TB) so we can support 2^19-1 contexts + * (19 == 37 + 28 - 46). */ +#define MAX_USER_CONTEXT ((ASM_CONST(1) << CONTEXT_BITS) - 5) /* * This should be computed such that protovosid * vsid_mulitplier * doesn't overflow 64 bits. It should also be co-prime to vsid_modulus */ #define VSID_MULTIPLIER_256M ASM_CONST(12538073) /* 24-bit prime */ -#define VSID_BITS_256M 38 +#define VSID_BITS_256M (CONTEXT_BITS + ESID_BITS) #define VSID_MODULUS_256M ((1UL<= \ * 2^36-1, then r3+1 has the 2^36 bit set. So, if r3+1 has \ * the bit clear, r3 already has the answer we want, if it \ @@ -513,34 +521,6 @@ }) #endif /* 1 */ -/* - * This is only valid for addresses >= PAGE_OFFSET - * The proto-VSID space is divided into two class - * User: 0 to 2^(CONTEXT_BITS + USER_ESID_BITS) -1 - * kernel: 2^(CONTEXT_BITS + USER_ESID_BITS) to 2^(VSID_BITS) - 1 - * - * With KERNEL_START at 0xc000000000000000, the proto vsid for - * the kernel ends up with 0xc00000000 (36 bits). With 64TB - * support we need to have kernel proto-VSID in the - * [2^37 to 2^38 - 1] range due to the increased USER_ESID_BITS. - */ -static inline unsigned long get_kernel_vsid(unsigned long ea, int ssize) -{ - unsigned long proto_vsid; - /* - * We need to make sure proto_vsid for the kernel is - * >= 2^(CONTEXT_BITS + USER_ESID_BITS[_1T]) - */ - if (ssize == MMU_SEGSIZE_256M) { - proto_vsid = ea >> SID_SHIFT; - proto_vsid |= (1UL << (CONTEXT_BITS + USER_ESID_BITS)); - return vsid_scramble(proto_vsid, 256M); - } - proto_vsid = ea >> SID_SHIFT_1T; - proto_vsid |= (1UL << (CONTEXT_BITS + USER_ESID_BITS_1T)); - return vsid_scramble(proto_vsid, 1T); -} - /* Returns the segment size indicator for a user address */ static inline int user_segment_size(unsigned long addr) { @@ -550,17 +530,41 @@ return MMU_SEGSIZE_256M; } -/* This is only valid for user addresses (which are below 2^44) */ static inline unsigned long get_vsid(unsigned long context, unsigned long ea, int ssize) { + /* + * Bad address. We return VSID 0 for that + */ + if ((ea & ~REGION_MASK) >= PGTABLE_RANGE) + return 0; + if (ssize == MMU_SEGSIZE_256M) - return vsid_scramble((context << USER_ESID_BITS) + return vsid_scramble((context << ESID_BITS) | (ea >> SID_SHIFT), 256M); - return vsid_scramble((context << USER_ESID_BITS_1T) + return vsid_scramble((context << ESID_BITS_1T) | (ea >> SID_SHIFT_1T), 1T); } +/* + * This is only valid for addresses >= PAGE_OFFSET + * + * For kernel space, we use the top 4 context ids to map address as below + * 0x7fffc - [ 0xc000000000000000 - 0xc0003fffffffffff ] + * 0x7fffd - [ 0xd000000000000000 - 0xd0003fffffffffff ] + * 0x7fffe - [ 0xe000000000000000 - 0xe0003fffffffffff ] + * 0x7ffff - [ 0xf000000000000000 - 0xf0003fffffffffff ] + */ +static inline unsigned long get_kernel_vsid(unsigned long ea, int ssize) +{ + unsigned long context; + + /* + * kernel take the top 4 context from the available range + */ + context = (MAX_USER_CONTEXT) + ((ea >> 60) - 0xc) + 1; + return get_vsid(context, ea, ssize); +} #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_MMU_HASH64_H_ */ --- linux-ppc-3.8.0.orig/arch/powerpc/include/asm/eeh.h +++ linux-ppc-3.8.0/arch/powerpc/include/asm/eeh.h @@ -201,6 +201,7 @@ void __init eeh_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 *, int); /** @@ -240,6 +241,8 @@ 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, int purge_pe) { } static inline void eeh_lock(void) { } --- linux-ppc-3.8.0.orig/arch/powerpc/mm/mmu_context_hash64.c +++ linux-ppc-3.8.0/arch/powerpc/mm/mmu_context_hash64.c @@ -29,15 +29,6 @@ static DEFINE_SPINLOCK(mmu_context_lock); static DEFINE_IDA(mmu_context_ida); -/* - * 256MB segment - * The proto-VSID space has 2^(CONTEX_BITS + USER_ESID_BITS) - 1 segments - * available for user mappings. Each segment contains 2^28 bytes. Each - * context maps 2^46 bytes (64TB) so we can support 2^19-1 contexts - * (19 == 37 + 28 - 46). - */ -#define MAX_CONTEXT ((1UL << CONTEXT_BITS) - 1) - int __init_new_context(void) { int index; @@ -56,7 +47,7 @@ else if (err) return err; - if (index > MAX_CONTEXT) { + if (index > MAX_USER_CONTEXT) { spin_lock(&mmu_context_lock); ida_remove(&mmu_context_ida, index); spin_unlock(&mmu_context_lock); --- linux-ppc-3.8.0.orig/arch/powerpc/mm/slb_low.S +++ linux-ppc-3.8.0/arch/powerpc/mm/slb_low.S @@ -31,10 +31,15 @@ * No other registers are examined or changed. */ _GLOBAL(slb_allocate_realmode) - /* r3 = faulting address */ + /* + * check for bad kernel/user address + * (ea & ~REGION_MASK) >= PGTABLE_RANGE + */ + rldicr. r9,r3,4,(63 - 46 - 4) + bne- 8f srdi r9,r3,60 /* get region */ - srdi r10,r3,28 /* get esid */ + srdi r10,r3,SID_SHIFT /* get esid */ cmpldi cr7,r9,0xc /* cmp PAGE_OFFSET for later use */ /* r3 = address, r10 = esid, cr7 = <> PAGE_OFFSET */ @@ -56,12 +61,14 @@ */ _GLOBAL(slb_miss_kernel_load_linear) li r11,0 - li r9,0x1 /* - * for 1T we shift 12 bits more. slb_finish_load_1T will do - * the necessary adjustment + * context = (MAX_USER_CONTEXT) + ((ea >> 60) - 0xc) + 1 + * r9 = region id. */ - rldimi r10,r9,(CONTEXT_BITS + USER_ESID_BITS),0 + addis r9,r9,(MAX_USER_CONTEXT - 0xc + 1)@ha + addi r9,r9,(MAX_USER_CONTEXT - 0xc + 1)@l + + BEGIN_FTR_SECTION b slb_finish_load END_MMU_FTR_SECTION_IFCLR(MMU_FTR_1T_SEGMENT) @@ -91,24 +98,19 @@ _GLOBAL(slb_miss_kernel_load_io) li r11,0 6: - li r9,0x1 /* - * for 1T we shift 12 bits more. slb_finish_load_1T will do - * the necessary adjustment + * context = (MAX_USER_CONTEXT) + ((ea >> 60) - 0xc) + 1 + * r9 = region id. */ - rldimi r10,r9,(CONTEXT_BITS + USER_ESID_BITS),0 + addis r9,r9,(MAX_USER_CONTEXT - 0xc + 1)@ha + addi r9,r9,(MAX_USER_CONTEXT - 0xc + 1)@l + BEGIN_FTR_SECTION b slb_finish_load END_MMU_FTR_SECTION_IFCLR(MMU_FTR_1T_SEGMENT) b slb_finish_load_1T -0: /* user address: proto-VSID = context << 15 | ESID. First check - * if the address is within the boundaries of the user region - */ - srdi. r9,r10,USER_ESID_BITS - bne- 8f /* invalid ea bits set */ - - +0: /* when using slices, we extract the psize off the slice bitmaps * and then we need to get the sllp encoding off the mmu_psize_defs * array. @@ -164,15 +166,13 @@ ld r9,PACACONTEXTID(r13) BEGIN_FTR_SECTION cmpldi r10,0x1000 -END_MMU_FTR_SECTION_IFSET(MMU_FTR_1T_SEGMENT) - rldimi r10,r9,USER_ESID_BITS,0 -BEGIN_FTR_SECTION bge slb_finish_load_1T END_MMU_FTR_SECTION_IFSET(MMU_FTR_1T_SEGMENT) b slb_finish_load 8: /* invalid EA */ li r10,0 /* BAD_VSID */ + li r9,0 /* BAD_VSID */ li r11,SLB_VSID_USER /* flags don't much matter */ b slb_finish_load @@ -221,8 +221,6 @@ /* get context to calculate proto-VSID */ ld r9,PACACONTEXTID(r13) - rldimi r10,r9,USER_ESID_BITS,0 - /* fall through slb_finish_load */ #endif /* __DISABLED__ */ @@ -231,9 +229,10 @@ /* * Finish loading of an SLB entry and return * - * r3 = EA, r10 = proto-VSID, r11 = flags, clobbers r9, cr7 = <> PAGE_OFFSET + * r3 = EA, r9 = context, r10 = ESID, r11 = flags, clobbers r9, cr7 = <> PAGE_OFFSET */ slb_finish_load: + rldimi r10,r9,ESID_BITS,0 ASM_VSID_SCRAMBLE(r10,r9,256M) /* * bits above VSID_BITS_256M need to be ignored from r10 @@ -298,10 +297,11 @@ /* * Finish loading of a 1T SLB entry (for the kernel linear mapping) and return. * - * r3 = EA, r10 = proto-VSID, r11 = flags, clobbers r9 + * r3 = EA, r9 = context, r10 = ESID(256MB), r11 = flags, clobbers r9 */ slb_finish_load_1T: - srdi r10,r10,40-28 /* get 1T ESID */ + srdi r10,r10,(SID_SHIFT_1T - SID_SHIFT) /* get 1T ESID */ + rldimi r10,r9,ESID_BITS_1T,0 ASM_VSID_SCRAMBLE(r10,r9,1T) /* * bits above VSID_BITS_1T need to be ignored from r10 --- linux-ppc-3.8.0.orig/arch/powerpc/mm/tlb_hash64.c +++ linux-ppc-3.8.0/arch/powerpc/mm/tlb_hash64.c @@ -82,11 +82,11 @@ if (!is_kernel_addr(addr)) { ssize = user_segment_size(addr); vsid = get_vsid(mm->context.id, addr, ssize); - WARN_ON(vsid == 0); } else { vsid = get_kernel_vsid(addr, mmu_kernel_ssize); ssize = mmu_kernel_ssize; } + WARN_ON(vsid == 0); vpn = hpt_vpn(addr, vsid, ssize); rpte = __real_pte(__pte(pte), ptep); --- linux-ppc-3.8.0.orig/arch/powerpc/mm/numa.c +++ linux-ppc-3.8.0/arch/powerpc/mm/numa.c @@ -201,7 +201,7 @@ int distance = LOCAL_DISTANCE; if (!form1_affinity) - return distance; + return ((a == b) ? LOCAL_DISTANCE : REMOTE_DISTANCE); for (i = 0; i < distance_ref_points_depth; i++) { if (distance_lookup_table[a][i] == distance_lookup_table[b][i]) --- linux-ppc-3.8.0.orig/arch/powerpc/mm/hash_utils_64.c +++ linux-ppc-3.8.0/arch/powerpc/mm/hash_utils_64.c @@ -194,6 +194,11 @@ unsigned long vpn = hpt_vpn(vaddr, vsid, ssize); unsigned long tprot = prot; + /* + * If we hit a bad address return error. + */ + if (!vsid) + return -1; /* Make kernel text executable */ if (overlaps_kernel_text(vaddr, vaddr + step)) tprot &= ~HPTE_R_N; @@ -758,6 +763,8 @@ /* Initialize stab / SLB management */ if (mmu_has_feature(MMU_FTR_SLB)) slb_initialize(); + else + stab_initialize(get_paca()->stab_real); } #ifdef CONFIG_SMP @@ -921,11 +928,6 @@ DBG_LOW("hash_page(ea=%016lx, access=%lx, trap=%lx\n", ea, access, trap); - if ((ea & ~REGION_MASK) >= PGTABLE_RANGE) { - DBG_LOW(" out of pgtable range !\n"); - return 1; - } - /* Get region & vsid */ switch (REGION_ID(ea)) { case USER_REGION_ID: @@ -956,6 +958,11 @@ } DBG_LOW(" mm=%p, mm->pgdir=%p, vsid=%016lx\n", mm, mm->pgd, vsid); + /* Bad address. */ + if (!vsid) { + DBG_LOW("Bad address!\n"); + return 1; + } /* Get pgdir */ pgdir = mm->pgd; if (pgdir == NULL) @@ -1125,6 +1132,8 @@ /* Get VSID */ ssize = user_segment_size(ea); vsid = get_vsid(mm->context.id, ea, ssize); + if (!vsid) + return; /* Hash doesn't like irqs */ local_irq_save(flags); @@ -1217,6 +1226,9 @@ hash = hpt_hash(vpn, PAGE_SHIFT, mmu_kernel_ssize); hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP); + /* Don't create HPTE entries for bad address */ + if (!vsid) + return; ret = ppc_md.hpte_insert(hpteg, vpn, __pa(vaddr), mode, HPTE_V_BOLTED, mmu_linear_psize, mmu_kernel_ssize); --- linux-ppc-3.8.0.orig/arch/powerpc/mm/pgtable_64.c +++ linux-ppc-3.8.0/arch/powerpc/mm/pgtable_64.c @@ -61,7 +61,7 @@ #endif #ifdef CONFIG_PPC_STD_MMU_64 -#if TASK_SIZE_USER64 > (1UL << (USER_ESID_BITS + SID_SHIFT)) +#if TASK_SIZE_USER64 > (1UL << (ESID_BITS + SID_SHIFT)) #error TASK_SIZE_USER64 exceeds user VSID range #endif #endif --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/Makefile +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_P4080_DS) += p4080_ds.o corenet_ds.o obj-$(CONFIG_P5020_DS) += p5020_ds.o corenet_ds.o obj-$(CONFIG_P5040_DS) += p5040_ds.o corenet_ds.o +obj-$(CONFIG_FSL_P4080_DS_MDIO) += p4080_ds_mdio.o obj-$(CONFIG_STX_GP3) += stx_gp3.o obj-$(CONFIG_TQM85xx) += tqm85xx.o obj-$(CONFIG_SBC8548) += sbc8548.o @@ -30,3 +31,4 @@ obj-$(CONFIG_XES_MPC85xx) += xes_mpc85xx.o obj-$(CONFIG_GE_IMP3A) += ge_imp3a.o obj-$(CONFIG_PPC_QEMU_E500) += qemu_e500.o +obj-$(CONFIG_SGY_CTS1000) += sgy_cts1000.o --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/sgy_cts1000.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/sgy_cts1000.c @@ -0,0 +1,176 @@ +/* + * Servergy CTS-1000 Setup + * + * Maintained by Ben Collins + * + * Copyright 2012 by Servergy, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +static struct device_node *halt_node; + +static struct of_device_id child_match[] = { + { + .compatible = "sgy,gpio-halt", + }, + {}, +}; + +static void gpio_halt_wfn(struct work_struct *work) +{ + /* Likely wont return */ + orderly_poweroff(true); +} +static DECLARE_WORK(gpio_halt_wq, gpio_halt_wfn); + +static void gpio_halt_cb(void) +{ + enum of_gpio_flags flags; + int trigger, gpio; + + if (!halt_node) + return; + + gpio = of_get_gpio_flags(halt_node, 0, &flags); + + if (!gpio_is_valid(gpio)) + return; + + trigger = (flags == OF_GPIO_ACTIVE_LOW); + + printk(KERN_INFO "gpio-halt: triggering GPIO.\n"); + + /* Probably wont return */ + gpio_set_value(gpio, trigger); +} + +/* This IRQ means someone pressed the power button and it is waiting for us + * to handle the shutdown/poweroff. */ +static irqreturn_t gpio_halt_irq(int irq, void *__data) +{ + printk(KERN_INFO "gpio-halt: shutdown due to power button IRQ.\n"); + schedule_work(&gpio_halt_wq); + + return IRQ_HANDLED; +}; + +static int gpio_halt_probe(struct platform_device *pdev) +{ + enum of_gpio_flags flags; + struct device_node *node = pdev->dev.of_node; + int gpio, err, irq; + int trigger; + + if (!node) + return -ENODEV; + + /* If there's no matching child, this isn't really an error */ + halt_node = of_find_matching_node(node, child_match); + if (!halt_node) + return 0; + + /* Technically we could just read the first one, but punish + * DT writers for invalid form. */ + if (of_gpio_count(halt_node) != 1) + return -EINVAL; + + /* Get the gpio number relative to the dynamic base. */ + gpio = of_get_gpio_flags(halt_node, 0, &flags); + if (!gpio_is_valid(gpio)) + return -EINVAL; + + err = gpio_request(gpio, "gpio-halt"); + if (err) { + printk(KERN_ERR "gpio-halt: error requesting GPIO %d.\n", + gpio); + halt_node = NULL; + return err; + } + + trigger = (flags == OF_GPIO_ACTIVE_LOW); + + gpio_direction_output(gpio, !trigger); + + /* Now get the IRQ which tells us when the power button is hit */ + irq = irq_of_parse_and_map(halt_node, 0); + err = request_irq(irq, gpio_halt_irq, IRQF_TRIGGER_RISING | + IRQF_TRIGGER_FALLING, "gpio-halt", halt_node); + if (err) { + printk(KERN_ERR "gpio-halt: error requesting IRQ %d for " + "GPIO %d.\n", irq, gpio); + gpio_free(gpio); + halt_node = NULL; + return err; + } + + /* Register our halt function */ + ppc_md.halt = gpio_halt_cb; + ppc_md.power_off = gpio_halt_cb; + + printk(KERN_INFO "gpio-halt: registered GPIO %d (%d trigger, %d" + " irq).\n", gpio, trigger, irq); + + return 0; +} + +static int gpio_halt_remove(struct platform_device *pdev) +{ + if (halt_node) { + int gpio = of_get_gpio(halt_node, 0); + int irq = irq_of_parse_and_map(halt_node, 0); + + free_irq(irq, halt_node); + + ppc_md.halt = NULL; + ppc_md.power_off = NULL; + + gpio_free(gpio); + + halt_node = NULL; + } + + return 0; +} + +static struct of_device_id gpio_halt_match[] = { + /* We match on the gpio bus itself and scan the children since they + * wont be matched against us. We know the bus wont match until it + * has been registered too. */ + { + .compatible = "fsl,qoriq-gpio", + }, + {}, +}; +MODULE_DEVICE_TABLE(of, gpio_halt_match); + +static struct platform_driver gpio_halt_driver = { + .driver = { + .name = "gpio-halt", + .owner = THIS_MODULE, + .of_match_table = gpio_halt_match, + }, + .probe = gpio_halt_probe, + .remove = gpio_halt_remove, +}; + +module_platform_driver(gpio_halt_driver); + +MODULE_DESCRIPTION("Driver to support GPIO triggered system halt for Servergy CTS-1000 Systems."); +MODULE_VERSION("1.0"); +MODULE_AUTHOR("Ben Collins "); +MODULE_LICENSE("GPL"); --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/p4080_ds.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/p4080_ds.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -66,6 +67,18 @@ return 0; } +#if defined(CONFIG_PHYLIB) && defined(CONFIG_VITESSE_PHY) +int vsc824x_add_skew(struct phy_device *phydev); +#define PHY_ID_VSC8244 0x000fc6c0 +static int __init board_fixups(void) +{ + phy_register_fixup_for_uid(PHY_ID_VSC8244, 0xfffff, vsc824x_add_skew); + + return 0; +} +machine_device_initcall(p4080_ds, board_fixups); +#endif + define_machine(p4080_ds) { .name = "P4080 DS", .probe = p4080_ds_probe, @@ -79,9 +92,11 @@ .calibrate_decr = generic_calibrate_decr, .progress = udbg_progress, .power_save = e500_idle, + .init_early = corenet_ds_init_early, }; -machine_arch_initcall(p4080_ds, corenet_ds_publish_devices); +machine_arch_initcall(p4080_ds, declare_of_platform_devices); + #ifdef CONFIG_SWIOTLB machine_arch_initcall(p4080_ds, swiotlb_setup_bus_notifier); #endif --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/p4080_ds_mdio.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/p4080_ds_mdio.c @@ -0,0 +1,331 @@ +/* + * Provides proper gpio muxing for the MDIO buses on the corenet DS boards + * + * Author: Andy Fleming + * + * Copyright (c) 2009-2010 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + +struct p4080ds_mdio { + struct mii_bus *real_bus; + unsigned int num_gpios; + unsigned int *gpios; + int *gpio_values; +}; + +/* Set the GPIO mux, and then write the MDIO regs */ +int p4080ds_mdio_write(struct mii_bus *bus, int port_addr, + int regnum, u16 value) +{ + struct p4080ds_mdio *priv = bus->priv; + int i; + + /* Write the GPIO regs to select this bus */ + for (i = 0; i < priv->num_gpios; i++) + gpio_set_value(priv->gpios[i], priv->gpio_values[i]); + + /* Write through to the attached MDIO bus */ + return priv->real_bus->write(priv->real_bus, port_addr, + regnum, value); +} + +/* Set the GPIO muxing, and then read from the MDIO bus */ +int p4080ds_mdio_read(struct mii_bus *bus, int port_addr, int regnum) +{ + struct p4080ds_mdio *priv = bus->priv; + int i; + + /* Write the GPIO regs to select this bus */ + for (i = 0; i < priv->num_gpios; i++) + gpio_set_value(priv->gpios[i], priv->gpio_values[i]); + + return priv->real_bus->read(priv->real_bus, port_addr, regnum); +} + + +/* Reset the MIIM registers, and wait for the bus to free */ +static int p4080ds_mdio_reset(struct mii_bus *bus) +{ + struct p4080ds_mdio *priv = bus->priv; + + mutex_lock(&bus->mdio_lock); + priv->real_bus->reset(priv->real_bus); + mutex_unlock(&bus->mdio_lock); + + return 0; +} + + +static int p4080ds_mdio_probe(struct platform_device *ofdev) +{ + struct device_node *np = ofdev->dev.of_node; + struct mii_bus *new_bus; + struct p4080ds_mdio *priv; + struct device_node *mdio; + struct platform_device *ofmdiodev; + int i; + const u32 *val; + u32 gpio_mask; + int gpio; + int err = 0; + + new_bus = mdiobus_alloc(); + if (NULL == new_bus) + return -ENOMEM; + + new_bus->name = "Freescale P4080DS MDIO Bus", + new_bus->read = &p4080ds_mdio_read, + new_bus->write = &p4080ds_mdio_write, + new_bus->reset = &p4080ds_mdio_reset, + + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + if (!priv) { + err = -ENOMEM; + goto err_priv_alloc; + } + + new_bus->priv = priv; + + mdio = of_parse_phandle(np, "fsl,mdio-handle", 0); + + if (mdio == NULL) { + printk(KERN_ERR "Could not find real MDIO bus for %s\n", + new_bus->id); + err = -ENODEV; + goto err_no_mdio_node; + } + + ofmdiodev = of_find_device_by_node(mdio); + + if (!ofmdiodev) { + printk(KERN_ERR "No of_device for MDIO node %s\n", mdio->name); + err = -ENODEV; + goto err_no_mdio_dev; + } + + of_node_put(mdio); + + priv->real_bus = dev_get_drvdata(&ofmdiodev->dev); + + if (!priv->real_bus) { + printk(KERN_ERR "The MDIO bus has no ofdev!\n"); + err = -ENODEV; + goto err_no_ofdev; + } + + new_bus->irq = kcalloc(PHY_MAX_ADDR, sizeof(int), GFP_KERNEL); + + if (NULL == new_bus->irq) { + err = -ENOMEM; + goto err_irq_alloc; + } + + for (i = 0; i < PHY_MAX_ADDR; i++) + new_bus->irq[i] = PHY_POLL; + + new_bus->parent = &ofdev->dev; + dev_set_drvdata(&ofdev->dev, new_bus); + + /* Get the number of GPIO pins specified for this MDIO node */ + priv->num_gpios = of_gpio_count(mdio); + if (priv->num_gpios == 0) { + printk(KERN_ERR "No GPIO pins specified for MDIO node %s\n", + mdio->name); + err = -ENODEV; + goto err_no_gpios; + } + + priv->gpios = kzalloc(sizeof(unsigned int) * priv->num_gpios, + GFP_KERNEL); + if (!priv->gpios) { + err = -ENOMEM; + goto err_gpios_alloc; + } + + priv->gpio_values = kzalloc(sizeof(int) * priv->num_gpios, GFP_KERNEL); + if (!priv->gpio_values) { + err = -ENOMEM; + goto err_gpio_values_alloc; + } + + /* Grab the value to write to the GPIO */ + val = of_get_property(np, "fsl,muxval", NULL); + + if (!val) { + printk(KERN_ERR "No mux value found for %s\n", np->full_name); + err = -ENODEV; + goto err_get_muxval; + } + if (*val >= (1 << priv->num_gpios)) { + printk(KERN_ERR "Mux value for %s is out of range: [0 - %d]\n", + np->full_name, (1 << priv->num_gpios) - 1); + err = -EINVAL; + goto err_get_muxval; + } + + for (i = 0; i < priv->num_gpios; i++) { + /* Based on GPIO pin specified in DT, get a pin number relative + * to the GPIO controller's dynamically assigned base */ + gpio = of_get_gpio_flags(mdio, i, NULL); + if (gpio < 0) { + printk(KERN_ERR "Failed to get GPIO pin value\n"); + err = gpio; + goto err_gpio_get; + } + priv->gpios[i] = gpio; + if (!gpio_is_valid(priv->gpios[i])) { + printk(KERN_ERR "Invalid GPIO pin value: %d\n", + priv->gpios[i]); + err = -EINVAL; + goto err_gpio_get; + } + + /* Set the value to be written to the GPIO pin + * in order to select this mdio bus */ + gpio_mask = 1 << (priv->num_gpios - i - 1); + priv->gpio_values[i] = !!(*val & gpio_mask); + + /* Request the pin (check that pin number is valid & in range). + * More than one P4080 MDIO bus will use these pins; if already + * requested, continue without error */ + err = gpio_request(priv->gpios[i], NULL); + if ((err < 0) && (err != -EBUSY)) { + printk(KERN_ERR "Failed to reserve GPIO pin %d\n", + priv->gpios[i]); + goto err_gpio_req; + } + + /* Set the direction to output (we will write to this pin). + * Should be already set from u-boot, but make sure + * it's correct nonetheless */ + err = gpio_direction_output(priv->gpios[i], 0); + if (err < 0) { + printk(KERN_ERR "Failed to configure direction for " + "GPIO pin %d\n", priv->gpios[i]); + goto err_gpio_dir; + } + } + + sprintf(new_bus->id, "%s@%d", np->name, *val); + + err = of_mdiobus_register(new_bus, np); + + if (err) { + printk(KERN_ERR "%s: Cannot register as MDIO bus\n", + new_bus->name); + goto err_registration; + } + + return 0; + +err_registration: +err_gpio_dir: + for (i = 0; i < priv->num_gpios; i++) + gpio_free(priv->gpios[i]); +err_gpio_req: +err_gpio_get: +err_get_muxval: + kfree(priv->gpio_values); +err_gpio_values_alloc: + kfree(priv->gpios); +err_gpios_alloc: +err_no_gpios: + kfree(new_bus->irq); +err_irq_alloc: +err_no_ofdev: +err_no_mdio_dev: +err_no_mdio_node: + kfree(priv); +err_priv_alloc: + kfree(new_bus); + + return err; +} + +static int p4080ds_mdio_remove(struct platform_device *ofdev) +{ + struct device *device = &ofdev->dev; + struct mii_bus *bus = dev_get_drvdata(device); + struct p4080ds_mdio *priv = bus->priv; + int i; + + for (i = 0; i < priv->num_gpios; i++) + gpio_free(priv->gpios[i]); + kfree(priv->gpios); + kfree(priv->gpio_values); + + mdiobus_unregister(bus); + + dev_set_drvdata(device, NULL); + + bus->priv = NULL; + mdiobus_free(bus); + + return 0; +} + +static struct of_device_id p4080ds_mdio_match[] = { + { + .compatible = "fsl,p4080ds-mdio", + }, + { + .compatible = "fsl,p4080ds-xmdio", + }, + {} +}; + +static struct platform_driver p4080ds_mdio_driver = { + .driver = { + .name = "p4080ds_mdio", + .of_match_table = p4080ds_mdio_match, + }, + .probe = p4080ds_mdio_probe, + .remove = p4080ds_mdio_remove, +}; + +int __init p4080ds_mdio_init(void) +{ + return platform_driver_register(&p4080ds_mdio_driver); +} + +void p4080ds_mdio_exit(void) +{ + platform_driver_unregister(&p4080ds_mdio_driver); +} +subsys_initcall_sync(p4080ds_mdio_init); +module_exit(p4080ds_mdio_exit); --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/corenet_ds.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/corenet_ds.c @@ -69,6 +69,9 @@ .compatible = "simple-bus" }, { + .compatible = "fsl,dpaa" + }, + { .compatible = "fsl,srio", }, { @@ -97,3 +100,49 @@ { return of_platform_bus_probe(NULL, of_device_ids, NULL); } + +int __init declare_of_platform_devices(void) +{ + struct device_node *np; + int err; + + err = of_platform_bus_probe(NULL, of_device_ids, NULL); + if (err) + return err; + + /* Now probe the fake MDIO buses */ + for_each_compatible_node(np, NULL, "fsl,p4080ds-mdio") + of_platform_device_create(np, NULL, NULL); + + for_each_compatible_node(np, NULL, "fsl,p4080ds-xmdio") + of_platform_device_create(np, NULL, NULL); + + return 0; +} + +/* Early setup is required for large chunks of contiguous (and coarsely-aligned) + * memory. The following shoe-horns Qman/Bman "init_early" calls into the + * platform setup to let them parse their CCSR nodes early on. */ +#ifdef CONFIG_FSL_QMAN_CONFIG +void __init qman_init_early(void); +#endif +#ifdef CONFIG_FSL_BMAN_CONFIG +void __init bman_init_early(void); +#endif +#ifdef CONFIG_FSL_PME2_CTRL +void __init pme2_init_early(void); +#endif + +__init void corenet_ds_init_early(void) +{ +#ifdef CONFIG_FSL_QMAN_CONFIG + qman_init_early(); +#endif +#ifdef CONFIG_FSL_BMAN_CONFIG + bman_init_early(); +#endif +#ifdef CONFIG_FSL_PME2_CTRL + pme2_init_early(); +#endif +} + --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/corenet_ds.h +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/corenet_ds.h @@ -1,7 +1,7 @@ /* * Corenet based SoC DS Setup * - * Copyright 2009 Freescale Semiconductor Inc. + * Copyright 2009-2010 Freescale Semiconductor Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -15,5 +15,7 @@ extern void __init corenet_ds_pic_init(void); extern void __init corenet_ds_setup_arch(void); extern int __init corenet_ds_publish_devices(void); +extern int __init declare_of_platform_devices(void); +extern void __init corenet_ds_init_early(void); #endif --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/85xx/Kconfig +++ linux-ppc-3.8.0/arch/powerpc/platforms/85xx/Kconfig @@ -216,6 +216,7 @@ select GPIO_MPC8XXX select HAS_RAPIDIO select PPC_EPAPR_HV_PIC + select HAS_FSL_PAMU help This option enables support for the P2041 RDB board @@ -229,6 +230,9 @@ select GPIO_MPC8XXX select HAS_RAPIDIO select PPC_EPAPR_HV_PIC + select HAS_FSL_PAMU + select HAS_FSL_QBMAN + select HAS_FSL_PME help This option enables support for the P3041 DS board @@ -242,9 +246,21 @@ select GPIO_MPC8XXX select HAS_RAPIDIO select PPC_EPAPR_HV_PIC + select HAS_FSL_PAMU + select HAS_FSL_QBMAN + select HAS_FSL_PME + select FSL_P4080_DS_MDIO if PHYLIB help This option enables support for the P4080 DS board +config SGY_CTS1000 + tristate "Servergy CTS-1000 support" + select GPIOLIB + select OF_GPIO + depends on P4080_DS + help + Enable this to support functionality in Servergy's CTS-1000 systems. + endif # PPC32 config P5020_DS @@ -258,6 +274,9 @@ select GPIO_MPC8XXX select HAS_RAPIDIO select PPC_EPAPR_HV_PIC + select HAS_FSL_PAMU + select HAS_FSL_QBMAN + select HAS_FSL_PME help This option enables support for the P5020 DS board @@ -293,5 +312,10 @@ endif # FSL_SOC_BOOKE +config FSL_P4080_DS_MDIO + bool + select VITESSE_PHY + depends on PHYLIB + config TQM85xx bool --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/cell/spufs/inode.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/cell/spufs/inode.c @@ -99,6 +99,7 @@ if (!inode) goto out; + inode->i_ino = get_next_ino(); inode->i_mode = mode; inode->i_uid = current_fsuid(); inode->i_gid = current_fsgid(); --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/pseries/eeh_pseries.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/pseries/eeh_pseries.c @@ -83,7 +83,11 @@ ibm_configure_pe = rtas_token("ibm,configure-pe"); ibm_configure_bridge = rtas_token("ibm,configure-bridge"); - /* necessary sanity check */ + /* + * Necessary sanity check. We needn't check "get-config-addr-info" + * and its variant since the old firmware probably support address + * of domain/bus/slot/function for EEH RTAS operations. + */ if (ibm_set_eeh_option == RTAS_UNKNOWN_SERVICE) { pr_warning("%s: RTAS service invalid\n", __func__); @@ -102,12 +106,6 @@ pr_warning("%s: RTAS service invalid\n", __func__); return -EINVAL; - } else if (ibm_get_config_addr_info2 == RTAS_UNKNOWN_SERVICE && - ibm_get_config_addr_info == RTAS_UNKNOWN_SERVICE) { - pr_warning("%s: RTAS service and " - " invalid\n", - __func__); - return -EINVAL; } else if (ibm_configure_pe == RTAS_UNKNOWN_SERVICE && ibm_configure_bridge == RTAS_UNKNOWN_SERVICE) { pr_warning("%s: RTAS service and " --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/pseries/eeh.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/pseries/eeh.c @@ -788,7 +788,6 @@ dev->dev.archdata.edev = edev; eeh_addr_cache_insert_dev(dev); - eeh_sysfs_add_device(dev); } /** @@ -815,6 +814,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 * @purge_pe: remove the PE or not --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/pseries/eeh_pe.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/pseries/eeh_pe.c @@ -639,7 +639,8 @@ if (pe->type & EEH_PE_PHB) { bus = pe->phb->bus; - } else if (pe->type & EEH_PE_BUS) { + } else if (pe->type & EEH_PE_BUS || + pe->type & EEH_PE_DEVICE) { edev = list_first_entry(&pe->edevs, struct eeh_dev, list); pdev = eeh_dev_to_pci_dev(edev); if (pdev) --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/pseries/suspend.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/pseries/suspend.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include @@ -126,11 +127,15 @@ struct device_attribute *attr, const char *buf, size_t count) { + cpumask_var_t offline_mask; int rc; if (!capable(CAP_SYS_ADMIN)) return -EPERM; + if (!alloc_cpumask_var(&offline_mask, GFP_TEMPORARY)) + return -ENOMEM; + stream_id = simple_strtoul(buf, NULL, 16); do { @@ -140,15 +145,32 @@ } while (rc == -EAGAIN); if (!rc) { + /* All present CPUs must be online */ + cpumask_andnot(offline_mask, cpu_present_mask, + cpu_online_mask); + rc = rtas_online_cpus_mask(offline_mask); + if (rc) { + pr_err("%s: Could not bring present CPUs online.\n", + __func__); + goto out; + } + stop_topology_update(); rc = pm_suspend(PM_SUSPEND_MEM); start_topology_update(); + + /* Take down CPUs not online prior to suspend */ + if (!rtas_offline_cpus_mask(offline_mask)) + pr_warn("%s: Could not restore CPUs to offline " + "state.\n", __func__); } stream_id = 0; if (!rc) rc = count; +out: + free_cpumask_var(offline_mask); return rc; } --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/pseries/lpar.c +++ linux-ppc-3.8.0/arch/powerpc/platforms/pseries/lpar.c @@ -186,7 +186,13 @@ (0x1UL << 4), &dummy1, &dummy2); if (lpar_rc == H_SUCCESS) return i; - BUG_ON(lpar_rc != H_NOT_FOUND); + + /* + * The test for adjunct partition is performed before the + * ANDCOND test. H_RESOURCE may be returned, so we need to + * check for that as well. + */ + BUG_ON(lpar_rc != H_NOT_FOUND && lpar_rc != H_RESOURCE); slot_offset++; slot_offset &= 0x7; --- linux-ppc-3.8.0.orig/arch/powerpc/platforms/pseries/Kconfig +++ linux-ppc-3.8.0/arch/powerpc/platforms/pseries/Kconfig @@ -17,6 +17,8 @@ select PPC_NATIVE select PPC_PCI_CHOICE if EXPERT select ZLIB_DEFLATE + select HOTPLUG if SMP + select HOTPLUG_CPU if SMP default y config PPC_SPLPAR --- linux-ppc-3.8.0.orig/arch/powerpc/sysdev/Makefile +++ linux-ppc-3.8.0/arch/powerpc/sysdev/Makefile @@ -21,6 +21,7 @@ obj-$(CONFIG_FSL_LBC) += fsl_lbc.o obj-$(CONFIG_FSL_IFC) += fsl_ifc.o obj-$(CONFIG_FSL_GTM) += fsl_gtm.o +obj-$(CONFIG_FSL_PAMU) += fsl_pamu.o obj-$(CONFIG_FSL_85XX_CACHE_SRAM) += fsl_85xx_l2ctlr.o fsl_85xx_cache_sram.o obj-$(CONFIG_SIMPLE_GPIO) += simple_gpio.o obj-$(CONFIG_FSL_RIO) += fsl_rio.o fsl_rmu.o --- linux-ppc-3.8.0.orig/arch/powerpc/sysdev/fsl_pamu.c +++ linux-ppc-3.8.0/arch/powerpc/sysdev/fsl_pamu.c @@ -0,0 +1,426 @@ +/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "fsl_pamu.h" + +#define PAMUBYPENR 0x604 + +/* define indexes for each operation mapping scenario */ +#define OMI_QMAN 0x00 +#define OMI_FMAN 0x01 +#define OMI_QMAN_PRIV 0x02 +#define OMI_CAAM 0x03 + +void setup_omt(struct ome *omt) +{ + struct ome *ome; + + /* Configure OMI_QMAN */ + ome = &omt[OMI_QMAN]; + + ome->moe[IOE_READ_IDX] = EOE_VALID | EOE_READ; + ome->moe[IOE_EREAD0_IDX] = EOE_VALID | EOE_RSA; + ome->moe[IOE_WRITE_IDX] = EOE_VALID | EOE_WRITE; + ome->moe[IOE_EWRITE0_IDX] = EOE_VALID | EOE_WWSAO; + + /* + * When it comes to stashing DIRECTIVEs, the QMan BG says + * (1.5.6.7.1: FQD Context_A field used for dequeued etc. + * etc. stashing control): + * - AE/DE/CE == 0: don't stash exclusive. Use DIRECT0, + * which should be a non-PE LOADEC. + * - AE/DE/CE == 1: stash exclusive via DIRECT1, i.e. + * LOADEC-PE + * If one desires to alter how the three different types of + * stashing are done, please alter rx_conf.exclusive in + * ipfwd_a.c (that specifies the 3-bit AE/DE/CE field), and + * do not alter the settings here. - bgrayson + */ + ome->moe[IOE_DIRECT0_IDX] = EOE_VALID | EOE_LDEC; + ome->moe[IOE_DIRECT1_IDX] = EOE_VALID | EOE_LDECPE; + + /* Configure OMI_FMAN */ + ome = &omt[OMI_FMAN]; + ome->moe[IOE_READ_IDX] = EOE_VALID | EOE_READI; + ome->moe[IOE_WRITE_IDX] = EOE_VALID | EOE_WRITE; + + /* Configure OMI_QMAN private */ + ome = &omt[OMI_QMAN_PRIV]; + ome->moe[IOE_READ_IDX] = EOE_VALID | EOE_READ; + ome->moe[IOE_WRITE_IDX] = EOE_VALID | EOE_WRITE; + ome->moe[IOE_EREAD0_IDX] = EOE_VALID | EOE_RSA; + ome->moe[IOE_EWRITE0_IDX] = EOE_VALID | EOE_WWSA; + + /* Configure OMI_CAAM */ + ome = &omt[OMI_CAAM]; + ome->moe[IOE_READ_IDX] = EOE_VALID | EOE_READI; + ome->moe[IOE_WRITE_IDX] = EOE_VALID | EOE_WRITE; +} + +#define L1 1 +#define L2 2 +#define L3 3 + +u32 get_stash_id(u32 stash_dest_hint, struct device_node *portal_dn) +{ + const u32 *prop; + struct device_node *node; + u32 cache_level; + + /* Fastpath, exit early if L3/CPC cache is target for stashing */ + if (stash_dest_hint == L3) { + node = of_find_compatible_node(NULL, NULL, + "fsl,p4080-l3-cache-controller"); + if (node) { + prop = of_get_property(node, "cache-stash-id", 0); + if (!prop) { + printk(KERN_ERR "missing cache-stash-id at %s\n", node->full_name); + of_node_put(node); + return ~(u32)0; + } + of_node_put(node); + return *prop; + } + return ~(u32)0; + } + + prop = of_get_property(portal_dn, "cpu-handle", 0); + /* if no cpu-phandle assume that this is not a per-cpu portal */ + if (!prop) + return ~(u32)0; + + node = of_find_node_by_phandle(*prop); + if (!node) { + printk(KERN_ERR "bad cpu phandle reference in %s\n", + portal_dn->full_name); + return ~(u32)0; + } + + /* find the hwnode that represents the cache */ + for (cache_level = L1; cache_level <= L3; cache_level++) { + if (stash_dest_hint == cache_level) { + prop = of_get_property(node, "cache-stash-id", 0); + if (!prop) { + printk(KERN_ERR "missing cache-stash-id at %s\n", node->full_name); + of_node_put(node); + return ~(u32)0; + } + of_node_put(node); + return *prop; + } + + prop = of_get_property(node, "next-level-cache", 0); + if (!prop) { + printk(KERN_ERR "can't find next-level-cache at %s\n", + node->full_name); + of_node_put(node); + return ~(u32)0; /* can't traverse any further */ + } + of_node_put(node); + + /* advance to next node in cache hierarchy */ + node = of_find_node_by_phandle(*prop); + if (!node) { + printk(KERN_ERR "bad cpu phandle reference in %s\n", + portal_dn->full_name); + return ~(u32)0; + } + } + + printk(KERN_ERR "stash dest not found for %d on %s\n", + stash_dest_hint, portal_dn->full_name); + return ~(u32)0; +} + +void setup_liodns(struct ppaace *ppaact) +{ + int i, len; + struct ppaace *ppaace; + struct device_node *qman_portal_dn = NULL; + struct device_node *qman_dn = NULL; + const u32 *prop; + u32 cache_id, prop_cnt; + + for (i = 0; i < PAACE_NUMBER_ENTRIES; i++) { + ppaace = &ppaact[i]; + ppaace->pt = PAACE_PT_PRIMARY; + ppaace->domain_attr.to_host.coherency_required = + PAACE_M_COHERENCE_REQ; + /* window size is 2^(WSE+1) bytes */ + ppaace->wse = 35; /* 36-bit phys. addr space */ + ppaace->wbah = ppaace->wbal = 0; + ppaace->atm = PAACE_ATM_NO_XLATE; + ppaace->ap = PAACE_AP_PERMS_ALL; + mb(); + ppaace->v = 1; + } + + /* + * Now, do specific stashing setup for qman portals. + * We need stashing setup for LIODNs for qman portal(s) dqrr stashing + * (DLIODNs), qman portal(s) data stashing (FLIODNs) + */ + + for_each_compatible_node(qman_portal_dn, NULL, "fsl,qman-portal") { + + pr_debug("qman portal found, name = %s\n", + qman_portal_dn->full_name); + prop = of_get_property(qman_portal_dn, "fsl,liodn", &len); + if (prop) { + prop_cnt = len / sizeof(u32); + do { + pr_debug("liodn = %d\n", *prop); + ppaace = &ppaact[*prop++]; + ppaace->otm = PAACE_OTM_INDEXED; + ppaace->op_encode.index_ot.omi = OMI_QMAN; + cache_id = get_stash_id(L1, qman_portal_dn); + pr_debug("cache_stash_id = %d\n", cache_id); + if (~cache_id != 0) + ppaace->impl_attr.cid = cache_id; + } while(--prop_cnt); + } else { + printk (KERN_ERR "missing fsl,liodn property at %s\n", + qman_portal_dn->full_name); + } + } + + /* + * Next, do stashing setups for qman private memory access + */ + + qman_dn = of_find_compatible_node(NULL, NULL, "fsl,qman"); + if (qman_dn) { + prop = of_get_property(qman_dn, "fsl,liodn", NULL); + if (prop) { + ppaace = &ppaact[*prop]; + ppaace->otm = PAACE_OTM_INDEXED; + ppaace->op_encode.index_ot.omi = OMI_QMAN_PRIV; + cache_id = get_stash_id(L3, qman_dn); + pr_debug("cache_stash_id = %d\n", cache_id); + if (~cache_id != 0) + ppaace->impl_attr.cid = cache_id; + } else { + printk (KERN_ERR "missing fsl,liodn property at %s\n", + qman_dn->full_name); + } + of_node_put(qman_dn); + } +} + +int setup_one_pamu(unsigned long pamu_reg_base, unsigned long pamu_reg_size, + struct ppaace *ppaact, struct ome *omt) +{ + u32 *pc; + phys_addr_t phys; + struct pamu_mmap_regs *pamu_regs; + + pc = (u32 *) (pamu_reg_base + PAMU_PC); + pamu_regs = (struct pamu_mmap_regs *) + (pamu_reg_base + PAMU_MMAP_REGS_BASE); + + /* set up pointers to corenet control blocks */ + + phys = virt_to_phys(ppaact); + out_be32(&pamu_regs->ppbah, ((u64)phys) >> 32); + out_be32(&pamu_regs->ppbal, phys); + phys = virt_to_phys(ppaact + PAACE_NUMBER_ENTRIES); + out_be32(&pamu_regs->pplah, ((u64)phys) >> 32); + out_be32(&pamu_regs->pplal, phys); + + phys = virt_to_phys(omt); + out_be32(&pamu_regs->obah, ((u64)phys) >> 32); + out_be32(&pamu_regs->obal, phys); + phys = virt_to_phys(omt + OME_NUMBER_ENTRIES); + out_be32(&pamu_regs->olah, ((u64)phys) >> 32); + out_be32(&pamu_regs->olal, phys); + + /* + * set PAMU enable bit, + * allow ppaact & omt to be cached + * & enable PAMU access violation interrupts. + */ + + out_be32((u32 *)(pamu_reg_base + PAMU_PICS), + PAMU_ACCESS_VIOLATION_ENABLE); + out_be32(pc, PAMU_PC_PE | PAMU_PC_OCE | PAMU_PC_SPCC | PAMU_PC_PPCC); + return 0; +} + +irqreturn_t pamu_av_isr(int irq, void *arg) +{ + panic("FSL_PAMU: access violation interrupt\n"); + /* NOTREACHED */ +} + +static int fsl_of_pamu_probe(struct platform_device *dev) +{ + void __iomem *pamu_regs, *guts_regs; + u32 pamubypenr, pamu_counter; + unsigned long pamu_reg_base, pamu_reg_off; + struct device_node *guts_node; + u64 size; + struct ppaace *ppaact = NULL; + struct ome *omt = NULL; + int irq; + struct page *p; + + printk(KERN_INFO "Setting Freescale static PAMU/IOMMU configuration\n"); + + /* + * enumerate all PAMUs and allocate and setup PAMU tables + * for each of them, + * NOTE : All PAMUs share the same LIODN tables. + */ + + pamu_regs = of_iomap(dev->dev.of_node, 0); + if (!pamu_regs) { + dev_err(&dev->dev, "ioremap failed\n"); + return -ENOMEM; + } + of_get_address(dev->dev.of_node, 0, &size, NULL); + + guts_node = of_find_compatible_node(NULL, NULL, + "fsl,qoriq-device-config-1.0"); + if (!guts_node) { + dev_err(&dev->dev, "%s guts devnode not found!\n", + dev->dev.of_node->full_name); + iounmap(pamu_regs); + return -ENODEV; + } + + guts_regs = of_iomap(guts_node, 0); + if (!guts_regs) { + dev_err(&dev->dev, "guts ioremap failed\n"); + iounmap(pamu_regs); + return -ENOMEM; + } + of_node_put(guts_node); + + p = alloc_pages(GFP_KERNEL, get_order(PAACT_SIZE)); + if (!p) { + printk(KERN_ERR "Unable to allocate space for PAACT table\n"); + iounmap(pamu_regs); + iounmap(guts_regs); + return -ENOMEM; + } + ppaact = page_address(p); + memset(ppaact, 0, PAACT_SIZE); + + pr_debug("fsl_pamu, paact_mem, v : %p, p : 0x%lx\n", + ppaact, virt_to_phys(ppaact)); + + p = alloc_pages(GFP_KERNEL, get_order(OMT_SIZE)); + if (!p) { + printk(KERN_ERR "Unable to allocate space for OMT table\n"); + iounmap(pamu_regs); + iounmap(guts_regs); + free_pages((unsigned long)ppaact, get_order(PAACT_SIZE)); + return -ENOMEM; + } + omt = page_address(p); + memset(omt, 0, OMT_SIZE); + + pr_debug("fsl_pamu, omt_mem, v : %p, p : 0x%lx\n", + omt, virt_to_phys(omt)); + + pamubypenr = in_be32(guts_regs + PAMUBYPENR); + + for (pamu_reg_off = 0, pamu_counter = 0x80000000; pamu_reg_off < size; + pamu_reg_off += PAMU_OFFSET, pamu_counter >>= 1) { + + pamu_reg_base = (unsigned long) pamu_regs + pamu_reg_off; + setup_one_pamu(pamu_reg_base, pamu_reg_off, ppaact, omt); + + /* Disable PAMU bypass for this PAMU */ + pamubypenr &= ~pamu_counter; + } + + setup_omt(omt); + + irq = irq_of_parse_and_map(dev->dev.of_node, 0); + if (request_irq(irq, pamu_av_isr, IRQF_DISABLED, "pamu", 0) < 0) { + printk(KERN_ERR "Cannot request PAMU AV interrupt\n"); + iounmap(pamu_regs); + iounmap(guts_regs); + free_pages((unsigned long)ppaact, get_order(PAACT_SIZE)); + free_pages((unsigned long)omt, get_order(OMT_SIZE)); + return -ENODEV; + } + + /* + * setup all LIODNS(s) to define a 1:1 mapping for the entire + * 36-bit physical address space + */ + setup_liodns(ppaact); + mb(); + + /* Enable all relevant PAMU(s) */ + out_be32(guts_regs + PAMUBYPENR, pamubypenr); + + return 0; +} + +static const struct of_device_id fsl_of_pamu_ids[] = { + { + .compatible = "fsl,p4080-pamu", + }, + { + .compatible = "fsl,pamu", + }, + {}, +}; + +static struct platform_driver fsl_of_pamu_driver = { + .driver = { + .name = "fsl-of-pamu", + .of_match_table = fsl_of_pamu_ids, + }, + .probe = fsl_of_pamu_probe, +}; + +static __init int fsl_of_pamu_init(void) +{ + return platform_driver_register(&fsl_of_pamu_driver); +} + +arch_initcall(fsl_of_pamu_init); --- linux-ppc-3.8.0.orig/arch/powerpc/sysdev/fsl_pamu.h +++ linux-ppc-3.8.0/arch/powerpc/sysdev/fsl_pamu.h @@ -0,0 +1,382 @@ +/* Copyright (c) 2008-2010 Freescale Semiconductor, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __PAMU_H +#define __PAMU_H + +/* PAMU CCSR space */ +#define PAMU_PGC 0x00000000 /* Allows all peripheral accesses */ +#define PAMU_PE 0x40000000 /* enable PAMU */ + +/* PAMU_OFFSET to the next pamu space in ccsr */ +#define PAMU_OFFSET 0x1000 + +#define PAMU_MMAP_REGS_BASE 0 + +struct pamu_mmap_regs { + u32 ppbah; + u32 ppbal; + u32 pplah; + u32 pplal; + u32 spbah; + u32 spbal; + u32 splah; + u32 splal; + u32 obah; + u32 obal; + u32 olah; + u32 olal; +}; + +/* PAMU Error Registers */ +#define PAMU_POES1 0x0040 +#define PAMU_POES2 0x0044 +#define PAMU_POEAH 0x0048 +#define PAMU_POEAL 0x004C +#define PAMU_AVS1 0x0050 +#define PAMU_AVS1_AV 0x1 +#define PAMU_AVS1_OTV 0x6 +#define PAMU_AVS1_APV 0x78 +#define PAMU_AVS1_WAV 0x380 +#define PAMU_AVS1_LAV 0x1c00 +#define PAMU_AVS1_GCV 0x2000 +#define PAMU_AVS1_PDV 0x4000 +#define PAMU_AV_MASK (PAMU_AVS1_AV | PAMU_AVS1_OTV | PAMU_AVS1_APV | PAMU_AVS1_WAV \ + | PAMU_AVS1_LAV | PAMU_AVS1_GCV | PAMU_AVS1_PDV) +#define PAMU_AVS1_LIODN_SHIFT 16 +#define PAMU_LAV_LIODN_NOT_IN_PPAACT 0x400 + +#define PAMU_AVS2 0x0054 +#define PAMU_AVAH 0x0058 +#define PAMU_AVAL 0x005C +#define PAMU_EECTL 0x0060 +#define PAMU_EEDIS 0x0064 +#define PAMU_EEINTEN 0x0068 +#define PAMU_EEDET 0x006C +#define PAMU_EEATTR 0x0070 +#define PAMU_EEAHI 0x0074 +#define PAMU_EEALO 0x0078 +#define PAMU_EEDHI 0X007C +#define PAMU_EEDLO 0x0080 +#define PAMU_EECC 0x0084 + +/* PAMU Revision Registers */ +#define PAMU_PR1 0x0BF8 +#define PAMU_PR2 0x0BFC + +/* PAMU Capabilities Registers */ +#define PAMU_PC1 0x0C00 +#define PAMU_PC2 0x0C04 +#define PAMU_PC3 0x0C08 +#define PAMU_PC4 0x0C0C + +/* PAMU Control Register */ +#define PAMU_PC 0x0C10 + +/* PAMU control defs */ +#define PAMU_CONTROL 0x0C10 +#define PAMU_PC_PGC 0x80000000 /* 1 = PAMU Gate Closed : block all +peripheral access, 0 : may allow peripheral access */ + +#define PAMU_PC_PE 0x40000000 /* 0 = PAMU disabled, 1 = PAMU enabled */ +#define PAMU_PC_SPCC 0x00000010 /* sPAACE cache enable */ +#define PAMU_PC_PPCC 0x00000001 /* pPAACE cache enable */ +#define PAMU_PC_OCE 0x00001000 /* OMT cache enable */ + +#define PAMU_PFA1 0x0C14 +#define PAMU_PFA2 0x0C18 + +/* PAMU Interrupt control and Status Register */ +#define PAMU_PICS 0x0C1C +#define PAMU_ACCESS_VIOLATION_STAT 0x8 +#define PAMU_ACCESS_VIOLATION_ENABLE 0x4 + +/* PAMU Debug Registers */ +#define PAMU_PD1 0x0F00 +#define PAMU_PD2 0x0F04 +#define PAMU_PD3 0x0F08 +#define PAMU_PD4 0x0F0C + +#define PAACE_AP_PERMS_DENIED 0x0 +#define PAACE_AP_PERMS_QUERY 0x1 +#define PAACE_AP_PERMS_UPDATE 0x2 +#define PAACE_AP_PERMS_ALL 0x3 +#define PAACE_DD_TO_HOST 0x0 +#define PAACE_DD_TO_IO 0x1 +#define PAACE_PT_PRIMARY 0x0 +#define PAACE_PT_SECONDARY 0x1 +#define PAACE_V_INVALID 0x0 +#define PAACE_V_VALID 0x1 +#define PAACE_MW_SUBWINDOWS 0x1 + +#define PAACE_WSE_4K 0xB +#define PAACE_WSE_8K 0xC +#define PAACE_WSE_16K 0xD +#define PAACE_WSE_32K 0xE +#define PAACE_WSE_64K 0xF +#define PAACE_WSE_128K 0x10 +#define PAACE_WSE_256K 0x11 +#define PAACE_WSE_512K 0x12 +#define PAACE_WSE_1M 0x13 +#define PAACE_WSE_2M 0x14 +#define PAACE_WSE_4M 0x15 +#define PAACE_WSE_8M 0x16 +#define PAACE_WSE_16M 0x17 +#define PAACE_WSE_32M 0x18 +#define PAACE_WSE_64M 0x19 +#define PAACE_WSE_128M 0x1A +#define PAACE_WSE_256M 0x1B +#define PAACE_WSE_512M 0x1C +#define PAACE_WSE_1G 0x1D +#define PAACE_WSE_2G 0x1E +#define PAACE_WSE_4G 0x1F + +#define PAACE_DID_PCI_EXPRESS_1 0x00 +#define PAACE_DID_PCI_EXPRESS_2 0x01 +#define PAACE_DID_PCI_EXPRESS_3 0x02 +#define PAACE_DID_PCI_EXPRESS_4 0x03 +#define PAACE_DID_LOCAL_BUS 0x04 +#define PAACE_DID_SRIO 0x0C +#define PAACE_DID_MEM_1 0x10 +#define PAACE_DID_MEM_2 0x11 +#define PAACE_DID_MEM_3 0x12 +#define PAACE_DID_MEM_4 0x13 +#define PAACE_DID_MEM_1_2 0x14 +#define PAACE_DID_MEM_3_4 0x15 +#define PAACE_DID_MEM_1_4 0x16 +#define PAACE_DID_BM_SW_PORTAL 0x18 +#define PAACE_DID_PAMU 0x1C +#define PAACE_DID_CAAM 0x21 +#define PAACE_DID_QM_SW_PORTAL 0x3C +#define PAACE_DID_CORE0_INST 0x80 +#define PAACE_DID_CORE0_DATA 0x81 +#define PAACE_DID_CORE1_INST 0x82 +#define PAACE_DID_CORE1_DATA 0x83 +#define PAACE_DID_CORE2_INST 0x84 +#define PAACE_DID_CORE2_DATA 0x85 +#define PAACE_DID_CORE3_INST 0x86 +#define PAACE_DID_CORE3_DATA 0x87 +#define PAACE_DID_CORE4_INST 0x88 +#define PAACE_DID_CORE4_DATA 0x89 +#define PAACE_DID_CORE5_INST 0x8A +#define PAACE_DID_CORE5_DATA 0x8B +#define PAACE_DID_CORE6_INST 0x8C +#define PAACE_DID_CORE6_DATA 0x8D +#define PAACE_DID_CORE7_INST 0x8E +#define PAACE_DID_CORE7_DATA 0x8F +#define PAACE_DID_BROADCAST 0xFF + +#define PAACE_ATM_NO_XLATE 0x00 +#define PAACE_ATM_WINDOW_XLATE 0x01 +#define PAACE_ATM_PAGE_XLATE 0x02 +#define PAACE_ATM_WIN_PG_XLATE \ + ( PAACE_ATM_WINDOW_XLATE | PAACE_ATM_PAGE_XLATE ) +#define PAACE_OTM_NO_XLATE 0x00 +#define PAACE_OTM_IMMEDIATE 0x01 +#define PAACE_OTM_INDEXED 0x02 +#define PAACE_OTM_RESERVED 0x03 + +#define PAACE_M_COHERENCE_REQ 0x01 + +#define PAACE_PID_0 0x0 +#define PAACE_PID_1 0x1 +#define PAACE_PID_2 0x2 +#define PAACE_PID_3 0x3 +#define PAACE_PID_4 0x4 +#define PAACE_PID_5 0x5 +#define PAACE_PID_6 0x6 +#define PAACE_PID_7 0x7 + +#define PAACE_TCEF_FORMAT0_8B 0x00 +#define PAACE_TCEF_FORMAT1_RSVD 0x01 + +#define PAACE_NUMBER_ENTRIES 0xFF + +#define OME_NUMBER_ENTRIES 16 /* based on P4080 2.0 silicon plan */ + +/* PAMU Data Structures */ + +struct ppaace { + /* PAACE Offset 0x00 */ + /* Window Base Address */ + u32 wbah; + unsigned int wbal : 20; + /* Window Size, 2^(N+1), N must be > 10 */ + unsigned int wse : 6; + /* 1 Means there are secondary windows, wce is count */ + unsigned int mw : 1; + /* Permissions, see PAACE_AP_PERMS_* defines */ + unsigned int ap : 2; + /* + * Destination Domain, see PAACE_DD_* defines, + * defines data structure reference for ingress ops into + * host/coherency domain or ingress ops into I/O domain + */ + unsigned int dd : 1; + /* PAACE Type, see PAACE_PT_* defines */ + unsigned int pt : 1; + /* PAACE Valid, 0 is invalid */ + unsigned int v : 1; + + /* PAACE Offset 0x08 */ + /* Interpretation of first 32 bits dependent on DD above */ + union { + struct { + /* Destination ID, see PAACE_DID_* defines */ + u8 did; + /* Partition ID */ + u8 pid; + /* Snoop ID */ + u8 snpid; + unsigned int coherency_required : 1; + unsigned int reserved : 7; + } to_host; + struct { + /* Destination ID, see PAACE_DID_* defines */ + u8 did; + unsigned int __reserved : 24; + } to_io; + } __attribute__ ((packed)) domain_attr; + /* Implementation attributes */ + struct { + unsigned int reserved1 : 8; + unsigned int cid : 8; + unsigned int reserved2 : 8; + } __attribute__ ((packed)) impl_attr; + /* Window Count; 2^(N+1) sub-windows; only valid for primary PAACE */ + unsigned int wce : 4; + /* Address translation mode, see PAACE_ATM_* defines */ + unsigned int atm : 2; + /* Operation translation mode, see PAACE_OTM_* defines */ + unsigned int otm : 2; + + /* PAACE Offset 0x10 */ + /* Translated window base address */ + u32 twbah; + unsigned int twbal : 20; + /* Subwindow size encoding; 2^(N+1), N > 10 */ + unsigned int swse : 6; + unsigned int reserved4 : 6; + + /* PAACE Offset 0x18 */ + u32 fspi; + union { + struct { + u8 ioea; + u8 moea; + u8 ioeb; + u8 moeb; + } immed_ot; + struct { + u16 reserved; + u16 omi; + } index_ot; + } __attribute__ ((packed)) op_encode; + + /* PAACE Offset 0x20 */ + u32 sbah; + unsigned int sbal : 20; + unsigned int sse : 6; + unsigned int reserved5 : 6; + + /* PAACE Offset 0x28 */ + u32 tctbah; + unsigned int tctbal : 20; + unsigned int pse : 6; + unsigned int tcef :1; + unsigned int reserved6 : 5; + + /* PAACE Offset 0x30 */ + u32 reserved7[2]; + + /* PAACE Offset 0x38 */ + u32 reserved8[2]; +} __attribute__ ((packed)) ppaace; + +/* MOE : Mapped Operation Encodings */ +#define NUM_MOE 128 +struct ome { + u8 moe[NUM_MOE]; +} __attribute__((packed)) ome; + +#define PAACT_SIZE (sizeof(struct ppaace) * PAACE_NUMBER_ENTRIES) +#define OMT_SIZE (sizeof(struct ome) * OME_NUMBER_ENTRIES) + +#define IOE_READ 0x00 +#define IOE_READ_IDX 0x00 +#define IOE_WRITE 0x81 +#define IOE_WRITE_IDX 0x01 +#define IOE_EREAD0 0x82 /* Enhanced read type 0 */ +#define IOE_EREAD0_IDX 0x02 /* Enhanced read type 0 */ +#define IOE_EWRITE0 0x83 /* Enhanced write type 0 */ +#define IOE_EWRITE0_IDX 0x03 /* Enhanced write type 0 */ +#define IOE_DIRECT0 0x84 /* Directive type 0 */ +#define IOE_DIRECT0_IDX 0x04 /* Directive type 0 */ +#define IOE_EREAD1 0x85 /* Enhanced read type 1 */ +#define IOE_EREAD1_IDX 0x05 /* Enhanced read type 1 */ +#define IOE_EWRITE1 0x86 /* Enhanced write type 1 */ +#define IOE_EWRITE1_IDX 0x06 /* Enhanced write type 1 */ +#define IOE_DIRECT1 0x87 /* Directive type 1 */ +#define IOE_DIRECT1_IDX 0x07 /* Directive type 1 */ +#define IOE_RAC 0x8c /* Read with Atomic clear */ +#define IOE_RAC_IDX 0x0c /* Read with Atomic clear */ +#define IOE_RAS 0x8d /* Read with Atomic set */ +#define IOE_RAS_IDX 0x0d /* Read with Atomic set */ +#define IOE_RAD 0x8e /* Read with Atomic decrement */ +#define IOE_RAD_IDX 0x0e /* Read with Atomic decrement */ +#define IOE_RAI 0x8f /* Read with Atomic increment */ +#define IOE_RAI_IDX 0x0f /* Read with Atomic increment */ + +#define EOE_READ 0x00 +#define EOE_WRITE 0x01 +#define EOE_RAC 0x0c /* Read with Atomic clear */ +#define EOE_RAS 0x0d /* Read with Atomic set */ +#define EOE_RAD 0x0e /* Read with Atomic decrement */ +#define EOE_RAI 0x0f /* Read with Atomic increment */ +#define EOE_LDEC 0x10 /* Load external cache */ +#define EOE_LDECL 0x11 /* Load external cache with stash lock */ +#define EOE_LDECPE 0x12 /* Load external cache with preferred exclusive */ +#define EOE_LDECPEL 0x13 /* Load external cache with preferred exclusive and lock */ +#define EOE_LDECFE 0x14 /* Load external cache with forced exclusive */ +#define EOE_LDECFEL 0x15 /* Load external cache with forced exclusive and lock */ +#define EOE_RSA 0x16 /* Read with stash allocate */ +#define EOE_RSAU 0x17 /* Read with stash allocate and unlock */ +#define EOE_READI 0x18 /* Read with invalidate */ +#define EOE_RWNITC 0x19 /* Read with no intention to cache */ +#define EOE_WCI 0x1a /* Write cache inhibited */ +#define EOE_WWSA 0x1b /* Write with stash allocate */ +#define EOE_WWSAL 0x1c /* Write with stash allocate and lock */ +#define EOE_WWSAO 0x1d /* Write with stash allocate only */ +#define EOE_WWSAOL 0x1e /* Write with stash allocate only and lock */ +#define EOE_VALID 0x80 + +#endif /* __PAMU_H */ --- linux-ppc-3.8.0.orig/arch/powerpc/lib/Makefile +++ linux-ppc-3.8.0/arch/powerpc/lib/Makefile @@ -19,9 +19,7 @@ checksum_wrappers_64.o hweight_64.o \ copyuser_power7.o string_64.o copypage_power7.o \ memcpy_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-ppc-3.8.0.orig/arch/arm/Kconfig.debug +++ linux-ppc-3.8.0/arch/arm/Kconfig.debug @@ -291,6 +291,13 @@ Say Y here if you want kernel low-level debugging support on MVEBU based platforms. + config DEBUG_OMAP2PLUS_UART + bool "Kernel low-level debugging messages via OMAP2PLUS UART" + depends on ARCH_OMAP2PLUS + help + Say Y here if you want kernel low-level debugging support + on OMAP2PLUS based platforms. + config DEBUG_PICOXCELL_UART depends on ARCH_PICOXCELL bool "Use PicoXcell UART for low-level debug" @@ -461,6 +468,54 @@ choice prompt "Low-level debug console UART" + depends on DEBUG_OMAP2PLUS_UART + + config DEBUG_OMAP2UART1 + bool "OMAP2/3/4 UART1 (omap2/3 sdp boards and some omap3 boards)" + help + This covers at least h4, 2430sdp, 3430sdp, 3630sdp, + omap3 torpedo and 3530 lv som. + + config DEBUG_OMAP2UART2 + bool "OMAP2/3/4 UART2" + + config DEBUG_OMAP2UART3 + bool "OMAP2 UART3 (n8x0)" + + config DEBUG_OMAP3UART3 + bool "OMAP3 UART3 (most omap3 boards)" + help + This covers at least cm_t3x, beagle, crane, devkit8000, + igep00x0, ldp, n900, n9(50), pandora, overo, touchbook, + and 3517evm. + + config DEBUG_OMAP4UART3 + bool "OMAP4/5 UART3 (omap4 blaze, panda, omap5 sevm)" + + config DEBUG_OMAP3UART4 + bool "OMAP36XX UART4" + + config DEBUG_OMAP4UART4 + bool "OMAP4/5 UART4" + + config DEBUG_TI81XXUART1 + bool "TI81XX UART1 (ti8148evm)" + + config DEBUG_TI81XXUART2 + bool "TI81XX UART2" + + config DEBUG_TI81XXUART3 + bool "TI81XX UART3 (ti8168evm)" + + config DEBUG_AM33XXUART1 + bool "AM33XX UART1" + + config DEBUG_ZOOM_UART + bool "Zoom2/3 UART" +endchoice + +choice + prompt "Low-level debug console UART" depends on DEBUG_LL && DEBUG_TEGRA_UART config TEGRA_DEBUG_UART_AUTO_ODMDATA @@ -501,6 +556,7 @@ DEBUG_IMX6Q_UART default "debug/highbank.S" if DEBUG_HIGHBANK_UART default "debug/mvebu.S" if DEBUG_MVEBU_UART + default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART default "debug/socfpga.S" if DEBUG_SOCFPGA_UART default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1 --- linux-ppc-3.8.0.orig/arch/arm/Kconfig +++ linux-ppc-3.8.0/arch/arm/Kconfig @@ -17,7 +17,6 @@ select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNLEN_USER select HARDIRQS_SW_RESEND - select HAVE_AOUT select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL select HAVE_ARCH_KGDB select HAVE_ARCH_SECCOMP_FILTER @@ -190,7 +189,8 @@ default DRAM_BASE if REMAP_VECTORS_TO_RAM default 0x00000000 help - The base address of exception vectors. + The base address of exception vectors. This must be two pages + in size. config ARM_PATCH_PHYS_VIRT bool "Patch physical to virtual translations at runtime" if EMBEDDED @@ -937,17 +937,24 @@ help Support for TI's DaVinci platform. -config ARCH_OMAP - bool "TI OMAP" +config ARCH_OMAP1 + bool "TI OMAP1" depends on MMU select ARCH_HAS_CPUFREQ select ARCH_HAS_HOLES_MEMORYMODEL + select ARCH_OMAP select ARCH_REQUIRE_GPIOLIB + select CLKDEV_LOOKUP select CLKSRC_MMIO select GENERIC_CLOCKEVENTS + select GENERIC_IRQ_CHIP select HAVE_CLK + select HAVE_IDE + select IRQ_DOMAIN + select NEED_MACH_IO_H if PCCARD + select NEED_MACH_MEMORY_H help - Support for TI's OMAP platform (OMAP1/2/3/4). + Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx) config ARCH_VT8500_SINGLE bool "VIA/WonderMedia 85xx" @@ -1294,6 +1301,16 @@ is not correctly implemented in PL310 as clean lines are not invalidated as a result of these operations. +config ARM_ERRATA_643719 + bool "ARM errata: LoUIS bit field in CLIDR register is incorrect" + depends on CPU_V7 && SMP + help + This option enables the workaround for the 643719 Cortex-A9 (prior to + r1p0) erratum. On affected cores the LoUIS bit field of the CLIDR + register returns zero when it should return one. The workaround + corrects this value, ensuring cache maintenance operations which use + it behave as intended and avoiding data corruption. + config ARM_ERRATA_720789 bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID" depends on CPU_V7 @@ -2313,6 +2330,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/arm/Kconfig.debug" --- linux-ppc-3.8.0.orig/arch/arm/vfp/vfpmodule.c +++ linux-ppc-3.8.0/arch/arm/vfp/vfpmodule.c @@ -413,7 +413,7 @@ * If there isn't a second FP instruction, exit now. Note that * the FPEXC.FP2V bit is valid only if FPEXC.EX is 1. */ - if (fpexc ^ (FPEXC_EX | FPEXC_FP2V)) + if ((fpexc & (FPEXC_EX | FPEXC_FP2V)) != (FPEXC_EX | FPEXC_FP2V)) goto exit; /* --- linux-ppc-3.8.0.orig/arch/arm/mach-footbridge/dc21285.c +++ linux-ppc-3.8.0/arch/arm/mach-footbridge/dc21285.c @@ -276,8 +276,6 @@ sys->mem_offset = DC21285_PCI_MEM; - pci_ioremap_io(0, DC21285_PCI_IO); - pci_add_resource_offset(&sys->resources, &res[0], sys->mem_offset); pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset); --- linux-ppc-3.8.0.orig/arch/arm/mach-kirkwood/ts219-setup.c +++ linux-ppc-3.8.0/arch/arm/mach-kirkwood/ts219-setup.c @@ -124,7 +124,7 @@ static int __init ts219_pci_init(void) { if (machine_is_ts219()) - kirkwood_pcie_init(KW_PCIE0); + kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); return 0; } --- linux-ppc-3.8.0.orig/arch/arm/mach-kirkwood/board-dt.c +++ linux-ppc-3.8.0/arch/arm/mach-kirkwood/board-dt.c @@ -41,16 +41,12 @@ struct device_node *np = of_find_compatible_node( NULL, NULL, "marvell,kirkwood-gating-clock"); - struct of_phandle_args clkspec; + struct clk *clk; clkspec.np = np; clkspec.args_count = 1; - clkspec.args[0] = CGC_BIT_GE0; - orion_clkdev_add(NULL, "mv643xx_eth_port.0", - of_clk_get_from_provider(&clkspec)); - clkspec.args[0] = CGC_BIT_PEX0; orion_clkdev_add("0", "pcie", of_clk_get_from_provider(&clkspec)); @@ -63,14 +59,24 @@ orion_clkdev_add("1", "pcie", of_clk_get_from_provider(&clkspec)); - clkspec.args[0] = CGC_BIT_GE1; - orion_clkdev_add(NULL, "mv643xx_eth_port.1", - of_clk_get_from_provider(&clkspec)); - clkspec.args[0] = CGC_BIT_SDIO; orion_clkdev_add(NULL, "mvsdio", of_clk_get_from_provider(&clkspec)); + /* + * The ethernet interfaces forget the MAC address assigned by + * u-boot if the clocks are turned off. Until proper DT support + * is available we always enable them for now. + */ + clkspec.args[0] = CGC_BIT_GE0; + clk = of_clk_get_from_provider(&clkspec); + orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk); + clk_prepare_enable(clk); + + clkspec.args[0] = CGC_BIT_GE1; + clk = of_clk_get_from_provider(&clkspec); + orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk); + clk_prepare_enable(clk); } static void __init kirkwood_of_clk_init(void) --- linux-ppc-3.8.0.orig/arch/arm/mach-highbank/Makefile +++ linux-ppc-3.8.0/arch/arm/mach-highbank/Makefile @@ -1,3 +1,5 @@ +KBUILD_CFLAGS += -I$(srctree)/arch/arm/mach-highbank/include + obj-y := highbank.o system.o smc.o plus_sec := $(call as-instr,.arch_extension sec,+sec) --- linux-ppc-3.8.0.orig/arch/arm/mach-highbank/highbank.c +++ linux-ppc-3.8.0/arch/arm/mach-highbank/highbank.c @@ -147,6 +147,7 @@ { struct resource *res; int reg = -1; + u32 val; struct device *dev = __dev; if (event != BUS_NOTIFY_ADD_DEVICE) @@ -173,10 +174,10 @@ return NOTIFY_DONE; if (of_property_read_bool(dev->of_node, "dma-coherent")) { - writel(0xff31, sregs_base + reg); + val = readl(sregs_base + reg); + writel(val | 0xff01, sregs_base + reg); set_dma_ops(dev, &arm_coherent_dma_ops); - } else - writel(0, sregs_base + reg); + } return NOTIFY_OK; } --- linux-ppc-3.8.0.orig/arch/arm/mach-highbank/hotplug.c +++ linux-ppc-3.8.0/arch/arm/mach-highbank/hotplug.c @@ -28,13 +28,11 @@ */ void __ref highbank_cpu_die(unsigned int cpu) { - flush_cache_all(); - highbank_set_cpu_jump(cpu, phys_to_virt(0)); - highbank_set_core_pwr(); - cpu_do_idle(); + flush_cache_louis(); + highbank_set_core_pwr(); - /* We should never return from idle */ - panic("highbank: cpu %d unexpectedly exit from shutdown\n", cpu); + while (1) + cpu_do_idle(); } --- linux-ppc-3.8.0.orig/arch/arm/mach-highbank/Kconfig +++ linux-ppc-3.8.0/arch/arm/mach-highbank/Kconfig @@ -1,5 +1,7 @@ config ARCH_HIGHBANK bool "Calxeda ECX-1000/2000 (Highbank/Midway)" if ARCH_MULTI_V7 + select ARCH_HAS_CPUFREQ + select ARCH_HAS_OPP select ARCH_WANT_OPTIONAL_GPIOLIB select ARM_AMBA select ARM_GIC @@ -11,5 +13,7 @@ select GENERIC_CLOCKEVENTS select HAVE_ARM_SCU select HAVE_SMP + select MAILBOX + select PL320_MBOX select SPARSE_IRQ select USE_OF --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/imx6q-sabrelite.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -131,6 +131,11 @@ }; }; }; + + ahci@0x02200000 { /* AHCI SATA */ + status = "okay"; + }; + }; regulators { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9x25ek.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9x25ek.dts @@ -11,6 +11,20 @@ /include/ "at91sam9x5ek.dtsi" / { - model = "Atmel AT91SAM9G25-EK"; + model = "Atmel AT91SAM9X25-EK"; compatible = "atmel,at91sam9x25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; + + ahb { + apb { + macb0: ethernet@f802c000 { + phy-mode = "rmii"; + status = "okay"; + }; + + macb1: ethernet@f8030000 { + phy-mode = "rmii"; + status = "okay"; + }; + }; + }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-ns2-common.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-ns2-common.dtsi @@ -23,7 +23,6 @@ }; serial@12000 { - clock-frequency = <166666667>; status = "okay"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-dockstar.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-dockstar.dts @@ -37,7 +37,6 @@ }; }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-lschlv2.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-lschlv2.dts @@ -13,7 +13,6 @@ ocp@f1000000 { serial@12000 { - clock-frequency = <166666667>; status = "okay"; }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9g25.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9g25.dtsi @@ -10,7 +10,7 @@ / { model = "Atmel AT91SAM9G25 SoC"; - compatible = "atmel, at91sam9g25, atmel,at91sam9x5"; + compatible = "atmel,at91sam9g25", "atmel,at91sam9x5"; ahb { apb { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-dns320.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-dns320.dts @@ -42,12 +42,10 @@ ocp@f1000000 { serial@12000 { - clock-frequency = <166666667>; status = "okay"; }; serial@12100 { - clock-frequency = <166666667>; status = "okay"; }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-topkick.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-topkick.dts @@ -17,7 +17,6 @@ ocp@f1000000 { serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9n12.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9n12.dtsi @@ -324,8 +324,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf801c000 0x4000>; interrupts = <5 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart0>; status = "disabled"; @@ -335,8 +333,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf8020000 0x4000>; interrupts = <6 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart1>; status = "disabled"; @@ -346,8 +342,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf8024000 0x4000>; interrupts = <7 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart2>; status = "disabled"; @@ -357,8 +351,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf8028000 0x4000>; interrupts = <8 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart3>; status = "disabled"; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/tegra30.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/tegra30.dtsi @@ -309,7 +309,7 @@ spi@7000d800 { compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink"; - reg = <0x7000d480 0x200>; + reg = <0x7000d800 0x200>; interrupts = <0 83 0x04>; nvidia,dma-request-selector = <&apbdma 17>; #address-cells = <1>; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-nsa310.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-nsa310.dts @@ -18,7 +18,6 @@ ocp@f1000000 { serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-dreamplug.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-dreamplug.dts @@ -38,7 +38,6 @@ }; }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-iconnect.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-iconnect.dts @@ -78,7 +78,6 @@ }; }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-goflexnet.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-goflexnet.dts @@ -73,11 +73,11 @@ }; }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; nand@3000000 { + chip-delay = <40>; status = "okay"; partition@0 { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9n12ek.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9n12ek.dts @@ -14,11 +14,11 @@ compatible = "atmel,at91sam9n12ek", "atmel,at91sam9n12", "atmel,at91sam9"; chosen { - bootargs = "mem=128M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2"; + bootargs = "console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=jffs2"; }; memory { - reg = <0x20000000 0x10000000>; + reg = <0x20000000 0x8000000>; }; clocks { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/tegra20.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/tegra20.dtsi @@ -314,7 +314,7 @@ spi@7000d800 { compatible = "nvidia,tegra20-slink"; - reg = <0x7000d480 0x200>; + reg = <0x7000d800 0x200>; interrupts = <0 83 0x04>; nvidia,dma-request-selector = <&apbdma 17>; #address-cells = <1>; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9x25.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9x25.dtsi @@ -10,7 +10,7 @@ / { model = "Atmel AT91SAM9X25 SoC"; - compatible = "atmel, at91sam9x25, atmel,at91sam9x5"; + compatible = "atmel,at91sam9x25", "atmel,at91sam9x5"; ahb { apb { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9g35ek.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9g35ek.dts @@ -13,4 +13,13 @@ / { model = "Atmel AT91SAM9G35-EK"; compatible = "atmel,at91sam9g35ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; + + ahb { + apb { + macb0: ethernet@f802c000 { + phy-mode = "rmii"; + status = "okay"; + }; + }; + }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9g15.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9g15.dtsi @@ -10,7 +10,7 @@ / { model = "Atmel AT91SAM9G15 SoC"; - compatible = "atmel, at91sam9g15, atmel,at91sam9x5"; + compatible = "atmel,at91sam9g15", "atmel,at91sam9x5"; ahb { apb { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/imx6q.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/imx6q.dtsi @@ -1056,5 +1056,13 @@ clocks = <&clks 133>, <&clks 134>, <&clks 137>; clock-names = "bus", "di0", "di1"; }; + + ahci@0x02200000 { /* AHCI SATA */ + compatible = "fsl,imx6q-ahci"; + reg = <0x02200000 0x4000>; + interrupts = <0 39 0x04>; + clocks = <&clks 154>; + status = "disabled"; + }; }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9x35.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9x35.dtsi @@ -10,7 +10,7 @@ / { model = "Atmel AT91SAM9X35 SoC"; - compatible = "atmel, at91sam9x35, atmel,at91sam9x5"; + compatible = "atmel,at91sam9x35", "atmel,at91sam9x5"; ahb { apb { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9x5.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9x5.dtsi @@ -402,8 +402,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf801c000 0x200>; interrupts = <5 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart0>; status = "disabled"; @@ -413,8 +411,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf8020000 0x200>; interrupts = <6 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart1>; status = "disabled"; @@ -424,8 +420,6 @@ compatible = "atmel,at91sam9260-usart"; reg = <0xf8024000 0x200>; interrupts = <7 4 5>; - atmel,use-dma-rx; - atmel,use-dma-tx; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usart2>; status = "disabled"; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-dns325.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-dns325.dts @@ -50,7 +50,6 @@ }; }; serial@12000 { - clock-frequency = <200000000>; status = "okay"; }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-km_kirkwood.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-km_kirkwood.dts @@ -34,7 +34,6 @@ }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-lsxhl.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-lsxhl.dts @@ -13,7 +13,6 @@ ocp@f1000000 { serial@12000 { - clock-frequency = <200000000>; status = "okay"; }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9g15ek.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9g15ek.dts @@ -11,6 +11,6 @@ /include/ "at91sam9x5ek.dtsi" / { - model = "Atmel AT91SAM9G25-EK"; + model = "Atmel AT91SAM9G15-EK"; compatible = "atmel,at91sam9g15ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9260.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9260.dtsi @@ -158,8 +158,8 @@ usart1 { pinctrl_usart1: usart1-0 { atmel,pins = - <2 6 0x1 0x1 /* PB6 periph A with pullup */ - 2 7 0x1 0x0>; /* PB7 periph A */ + <1 6 0x1 0x1 /* PB6 periph A with pullup */ + 1 7 0x1 0x0>; /* PB7 periph A */ }; pinctrl_usart1_rts: usart1_rts-0 { @@ -194,18 +194,18 @@ usart3 { pinctrl_usart3: usart3-0 { atmel,pins = - <2 10 0x1 0x1 /* PB10 periph A with pullup */ - 2 11 0x1 0x0>; /* PB11 periph A */ + <1 10 0x1 0x1 /* PB10 periph A with pullup */ + 1 11 0x1 0x0>; /* PB11 periph A */ }; pinctrl_usart3_rts: usart3_rts-0 { atmel,pins = - <3 8 0x2 0x0>; /* PB8 periph B */ + <2 8 0x2 0x0>; /* PC8 periph B */ }; pinctrl_usart3_cts: usart3_cts-0 { atmel,pins = - <3 10 0x2 0x0>; /* PB10 periph B */ + <2 10 0x2 0x0>; /* PC10 periph B */ }; }; @@ -220,8 +220,8 @@ uart1 { pinctrl_uart1: uart1-0 { atmel,pins = - <2 12 0x1 0x1 /* PB12 periph A with pullup */ - 2 13 0x1 0x0>; /* PB13 periph A */ + <1 12 0x1 0x1 /* PB12 periph A with pullup */ + 1 13 0x1 0x0>; /* PB13 periph A */ }; }; @@ -264,7 +264,7 @@ atmel,pins = <0 10 0x2 0x0 /* PA10 periph B */ 0 11 0x2 0x0 /* PA11 periph B */ - 0 24 0x2 0x0 /* PA24 periph B */ + 0 22 0x2 0x0 /* PA22 periph B */ 0 25 0x2 0x0 /* PA25 periph B */ 0 26 0x2 0x0 /* PA26 periph B */ 0 27 0x2 0x0 /* PA27 periph B */ --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9g35.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9g35.dtsi @@ -10,7 +10,7 @@ / { model = "Atmel AT91SAM9G35 SoC"; - compatible = "atmel, at91sam9g35, atmel,at91sam9x5"; + compatible = "atmel,at91sam9g35", "atmel,at91sam9x5"; ahb { apb { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood.dtsi @@ -38,6 +38,7 @@ interrupt-controller; #interrupt-cells = <2>; interrupts = <35>, <36>, <37>, <38>; + clocks = <&gate_clk 7>; }; gpio1: gpio@10140 { @@ -49,6 +50,7 @@ interrupt-controller; #interrupt-cells = <2>; interrupts = <39>, <40>, <41>; + clocks = <&gate_clk 7>; }; serial@12000 { @@ -57,7 +59,6 @@ reg-shift = <2>; interrupts = <33>; clocks = <&gate_clk 7>; - /* set clock-frequency in board dts */ status = "disabled"; }; @@ -67,7 +68,6 @@ reg-shift = <2>; interrupts = <34>; clocks = <&gate_clk 7>; - /* set clock-frequency in board dts */ status = "disabled"; }; @@ -75,6 +75,7 @@ compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc"; reg = <0x10300 0x20>; interrupts = <53>; + clocks = <&gate_clk 7>; }; spi@10600 { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9x35ek.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9x35ek.dts @@ -13,4 +13,13 @@ / { model = "Atmel AT91SAM9X35-EK"; compatible = "atmel,at91sam9x35ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; + + ahb { + apb { + macb0: ethernet@f802c000 { + phy-mode = "rmii"; + status = "okay"; + }; + }; + }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-openblocks_a6.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-openblocks_a6.dts @@ -18,12 +18,10 @@ ocp@f1000000 { serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; serial@12100 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9x5ek.dtsi +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9x5ek.dtsi @@ -13,7 +13,7 @@ compatible = "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; chosen { - bootargs = "128M console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs"; + bootargs = "console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs"; }; ahb { @@ -52,11 +52,6 @@ status = "okay"; }; - macb0: ethernet@f802c000 { - phy-mode = "rmii"; - status = "okay"; - }; - i2c0: i2c@f8010000 { status = "okay"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/highbank.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/highbank.dts @@ -37,6 +37,16 @@ next-level-cache = <&L2>; clocks = <&a9pll>; clock-names = "cpu"; + operating-points = < + /* kHz ignored */ + 1300000 1000000 + 1200000 1000000 + 1100000 1000000 + 800000 1000000 + 400000 1000000 + 200000 1000000 + >; + clock-latency = <100000>; }; cpu@901 { --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-mplcec4.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-mplcec4.dts @@ -91,7 +91,6 @@ }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts @@ -96,11 +96,11 @@ marvell,function = "gpio"; }; pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 { - marvell,pins = "mpp44"; + marvell,pins = "mpp46"; marvell,function = "gpio"; }; pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 { - marvell,pins = "mpp45"; + marvell,pins = "mpp47"; marvell,function = "gpio"; }; @@ -115,7 +115,6 @@ }; serial@12000 { - clock-frequency = <200000000>; status = "ok"; }; @@ -158,14 +157,14 @@ gpios = <&gpio0 16 0>; linux,default-trigger = "default-on"; }; - health_led1 { + rebuild_led { + label = "status:white:rebuild_led"; + gpios = <&gpio1 4 0>; + }; + health_led { label = "status:red:health_led"; gpios = <&gpio1 5 0>; }; - health_led2 { - label = "status:white:health_led"; - gpios = <&gpio1 4 0>; - }; backup_led { label = "status:blue:backup_led"; gpios = <&gpio0 15 0>; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/kirkwood-ib62x0.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/kirkwood-ib62x0.dts @@ -51,7 +51,6 @@ }; }; serial@12000 { - clock-frequency = <200000000>; status = "okay"; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/dts/at91sam9g25ek.dts +++ linux-ppc-3.8.0/arch/arm/boot/dts/at91sam9g25ek.dts @@ -13,4 +13,13 @@ / { model = "Atmel AT91SAM9G25-EK"; compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; + + ahb { + apb { + macb0: ethernet@f802c000 { + phy-mode = "rmii"; + status = "okay"; + }; + }; + }; }; --- linux-ppc-3.8.0.orig/arch/arm/boot/compressed/Makefile +++ linux-ppc-3.8.0/arch/arm/boot/compressed/Makefile @@ -121,7 +121,7 @@ endif ccflags-y := -fpic -fno-builtin -I$(obj) -asflags-y := -Wa,-march=all -DZIMAGE +asflags-y := -DZIMAGE # Supply kernel BSS size to the decompressor via a linker symbol. KBSS_SZ = $(shell $(CROSS_COMPILE)size $(obj)/../../../../vmlinux | \ --- linux-ppc-3.8.0.orig/arch/arm/boot/compressed/head-shark.S +++ linux-ppc-3.8.0/arch/arm/boot/compressed/head-shark.S @@ -18,6 +18,7 @@ .section ".start", "ax" + .arch armv4 b __beginning __ofw_data: .long 0 @ the number of memory blocks --- linux-ppc-3.8.0.orig/arch/arm/boot/compressed/head-sa1100.S +++ linux-ppc-3.8.0/arch/arm/boot/compressed/head-sa1100.S @@ -11,6 +11,7 @@ #include .section ".start", "ax" + .arch armv4 __SA1100_start: --- linux-ppc-3.8.0.orig/arch/arm/boot/compressed/head.S +++ linux-ppc-3.8.0/arch/arm/boot/compressed/head.S @@ -11,6 +11,7 @@ #include #include + .arch armv7-a /* * Debugging stuff * --- linux-ppc-3.8.0.orig/arch/arm/plat-samsung/include/plat/debug-macro.S +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/arm/mach-shmobile/setup-emev2.c +++ linux-ppc-3.8.0/arch/arm/mach-shmobile/setup-emev2.c @@ -287,14 +287,14 @@ static struct resource gio3_resources[] = { [0] = { .name = "GIO_096", - .start = 0xe0050100, - .end = 0xe005012b, + .start = 0xe0050180, + .end = 0xe00501ab, .flags = IORESOURCE_MEM, }, [1] = { .name = "GIO_096", - .start = 0xe0050140, - .end = 0xe005015f, + .start = 0xe00501c0, + .end = 0xe00501df, .flags = IORESOURCE_MEM, }, [2] = { --- linux-ppc-3.8.0.orig/arch/arm/mach-versatile/pci.c +++ linux-ppc-3.8.0/arch/arm/mach-versatile/pci.c @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -327,12 +328,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-ppc-3.8.0.orig/arch/arm/mach-versatile/core.c +++ linux-ppc-3.8.0/arch/arm/mach-versatile/core.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -65,16 +66,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 */ @@ -102,7 +115,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-ppc-3.8.0.orig/arch/arm/mach-exynos/common.c +++ linux-ppc-3.8.0/arch/arm/mach-exynos/common.c @@ -299,6 +299,7 @@ void exynos5_restart(char mode, const char *cmd) { + struct device_node *np; u32 val; void __iomem *addr; @@ -306,8 +307,9 @@ val = 0x1; addr = EXYNOS_SWRESET; } else if (of_machine_is_compatible("samsung,exynos5440")) { - val = (0x10 << 20) | (0x1 << 16); - addr = EXYNOS5440_SWRESET; + np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); + addr = of_iomap(np, 0) + 0xcc; + val = (0xfff << 20) | (0x1 << 16); } else { pr_err("%s: cannot support non-DT\n", __func__); return; --- linux-ppc-3.8.0.orig/arch/arm/mach-exynos/pmu.c +++ linux-ppc-3.8.0/arch/arm/mach-exynos/pmu.c @@ -227,6 +227,7 @@ { EXYNOS5_DIS_IRQ_ISP_ARM_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, { EXYNOS5_ARM_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x2} }, { EXYNOS5_ARM_L2_SYS_PWR_REG, { 0x3, 0x3, 0x3} }, + { EXYNOS5_ARM_L2_OPTION, { 0x10, 0x10, 0x0 } }, { EXYNOS5_CMU_ACLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, { EXYNOS5_CMU_SCLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, { EXYNOS5_CMU_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, @@ -352,11 +353,9 @@ /* * SKIP_DEACTIVATE_ACEACP_IN_PWDN_BITFIELD Enable - * MANUAL_L2RSTDISABLE_CONTROL_BITFIELD Enable */ tmp = __raw_readl(EXYNOS5_ARM_COMMON_OPTION); - tmp |= (EXYNOS5_MANUAL_L2RSTDISABLE_CONTROL | - EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN); + tmp |= EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN; __raw_writel(tmp, EXYNOS5_ARM_COMMON_OPTION); /* --- linux-ppc-3.8.0.orig/arch/arm/mach-exynos/include/mach/regs-pmu.h +++ linux-ppc-3.8.0/arch/arm/mach-exynos/include/mach/regs-pmu.h @@ -344,6 +344,7 @@ #define EXYNOS5_FSYS_ARM_OPTION S5P_PMUREG(0x2208) #define EXYNOS5_ISP_ARM_OPTION S5P_PMUREG(0x2288) #define EXYNOS5_ARM_COMMON_OPTION S5P_PMUREG(0x2408) +#define EXYNOS5_ARM_L2_OPTION S5P_PMUREG(0x2608) #define EXYNOS5_TOP_PWR_OPTION S5P_PMUREG(0x2C48) #define EXYNOS5_TOP_PWR_SYSMEM_OPTION S5P_PMUREG(0x2CC8) #define EXYNOS5_JPEG_MEM_OPTION S5P_PMUREG(0x2F48) --- linux-ppc-3.8.0.orig/arch/arm/mach-cns3xxx/core.c +++ linux-ppc-3.8.0/arch/arm/mach-cns3xxx/core.c @@ -22,19 +22,9 @@ static struct map_desc cns3xxx_io_desc[] __initdata = { { - .virtual = CNS3XXX_TC11MP_TWD_BASE_VIRT, - .pfn = __phys_to_pfn(CNS3XXX_TC11MP_TWD_BASE), - .length = SZ_4K, - .type = MT_DEVICE, - }, { - .virtual = CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT, - .pfn = __phys_to_pfn(CNS3XXX_TC11MP_GIC_CPU_BASE), - .length = SZ_4K, - .type = MT_DEVICE, - }, { - .virtual = CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT, - .pfn = __phys_to_pfn(CNS3XXX_TC11MP_GIC_DIST_BASE), - .length = SZ_4K, + .virtual = CNS3XXX_TC11MP_SCU_BASE_VIRT, + .pfn = __phys_to_pfn(CNS3XXX_TC11MP_SCU_BASE), + .length = SZ_8K, .type = MT_DEVICE, }, { .virtual = CNS3XXX_TIMER1_2_3_BASE_VIRT, --- linux-ppc-3.8.0.orig/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h +++ linux-ppc-3.8.0/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h @@ -94,10 +94,10 @@ #define RTC_INTR_STS_OFFSET 0x34 #define CNS3XXX_MISC_BASE 0x76000000 /* Misc Control */ -#define CNS3XXX_MISC_BASE_VIRT 0xFFF07000 /* Misc Control */ +#define CNS3XXX_MISC_BASE_VIRT 0xFB000000 /* Misc Control */ #define CNS3XXX_PM_BASE 0x77000000 /* Power Management Control */ -#define CNS3XXX_PM_BASE_VIRT 0xFFF08000 +#define CNS3XXX_PM_BASE_VIRT 0xFB001000 #define PM_CLK_GATE_OFFSET 0x00 #define PM_SOFT_RST_OFFSET 0x04 @@ -109,7 +109,7 @@ #define PM_PLL_HM_PD_OFFSET 0x1C #define CNS3XXX_UART0_BASE 0x78000000 /* UART 0 */ -#define CNS3XXX_UART0_BASE_VIRT 0xFFF09000 +#define CNS3XXX_UART0_BASE_VIRT 0xFB002000 #define CNS3XXX_UART1_BASE 0x78400000 /* UART 1 */ #define CNS3XXX_UART1_BASE_VIRT 0xFFF0A000 @@ -130,7 +130,7 @@ #define CNS3XXX_I2S_BASE_VIRT 0xFFF10000 #define CNS3XXX_TIMER1_2_3_BASE 0x7C800000 /* Timer */ -#define CNS3XXX_TIMER1_2_3_BASE_VIRT 0xFFF10800 +#define CNS3XXX_TIMER1_2_3_BASE_VIRT 0xFB003000 #define TIMER1_COUNTER_OFFSET 0x00 #define TIMER1_AUTO_RELOAD_OFFSET 0x04 @@ -227,16 +227,16 @@ * Testchip peripheral and fpga gic regions */ #define CNS3XXX_TC11MP_SCU_BASE 0x90000000 /* IRQ, Test chip */ -#define CNS3XXX_TC11MP_SCU_BASE_VIRT 0xFF000000 +#define CNS3XXX_TC11MP_SCU_BASE_VIRT 0xFB004000 #define CNS3XXX_TC11MP_GIC_CPU_BASE 0x90000100 /* Test chip interrupt controller CPU interface */ -#define CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT 0xFF000100 +#define CNS3XXX_TC11MP_GIC_CPU_BASE_VIRT (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x100) #define CNS3XXX_TC11MP_TWD_BASE 0x90000600 -#define CNS3XXX_TC11MP_TWD_BASE_VIRT 0xFF000600 +#define CNS3XXX_TC11MP_TWD_BASE_VIRT (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x600) #define CNS3XXX_TC11MP_GIC_DIST_BASE 0x90001000 /* Test chip interrupt controller distributor */ -#define CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT 0xFF001000 +#define CNS3XXX_TC11MP_GIC_DIST_BASE_VIRT (CNS3XXX_TC11MP_SCU_BASE_VIRT + 0x1000) #define CNS3XXX_TC11MP_L220_BASE 0x92002000 /* L220 registers */ #define CNS3XXX_TC11MP_L220_BASE_VIRT 0xFF002000 --- linux-ppc-3.8.0.orig/arch/arm/mach-at91/board-foxg20.c +++ linux-ppc-3.8.0/arch/arm/mach-at91/board-foxg20.c @@ -176,6 +176,7 @@ /* If you choose to use a pin other than PB16 it needs to be 3.3V */ .pin = AT91_PIN_PB16, .is_open_drain = 1, + .ext_pullup_enable_pin = -EINVAL, }; static struct platform_device w1_device = { --- linux-ppc-3.8.0.orig/arch/arm/mach-at91/board-stamp9g20.c +++ linux-ppc-3.8.0/arch/arm/mach-at91/board-stamp9g20.c @@ -188,6 +188,7 @@ static struct w1_gpio_platform_data w1_gpio_pdata = { .pin = AT91_PIN_PA29, .is_open_drain = 1, + .ext_pullup_enable_pin = -EINVAL, }; static struct platform_device w1_device = { --- linux-ppc-3.8.0.orig/arch/arm/mach-at91/setup.c +++ linux-ppc-3.8.0/arch/arm/mach-at91/setup.c @@ -333,7 +333,7 @@ of_id = of_match_node(rstc_ids, np); if (!of_id) - panic("AT91: rtsc no restart function availlable\n"); + panic("AT91: rtsc no restart function available\n"); arm_pm_restart = of_id->data; --- linux-ppc-3.8.0.orig/arch/arm/xen/enlighten.c +++ linux-ppc-3.8.0/arch/arm/xen/enlighten.c @@ -237,7 +237,7 @@ xen_init_IRQ(); if (request_percpu_irq(xen_events_irq, xen_arm_callback, - "events", xen_vcpu)) { + "events", &xen_vcpu)) { pr_err("Error requesting IRQ %d\n", xen_events_irq); return -EINVAL; } --- linux-ppc-3.8.0.orig/arch/arm/mach-davinci/board-dm644x-evm.c +++ linux-ppc-3.8.0/arch/arm/mach-davinci/board-dm644x-evm.c @@ -153,6 +153,7 @@ .parts = davinci_evm_nandflash_partition, .nr_parts = ARRAY_SIZE(davinci_evm_nandflash_partition), .ecc_mode = NAND_ECC_HW, + .ecc_bits = 1, .bbt_options = NAND_BBT_USE_FLASH, .timing = &davinci_evm_nandflash_timing, }; --- linux-ppc-3.8.0.orig/arch/arm/mach-davinci/board-dm355-leopard.c +++ linux-ppc-3.8.0/arch/arm/mach-davinci/board-dm355-leopard.c @@ -75,6 +75,7 @@ .parts = davinci_nand_partitions, .nr_parts = ARRAY_SIZE(davinci_nand_partitions), .ecc_mode = NAND_ECC_HW_SYNDROME, + .ecc_bits = 4, .bbt_options = NAND_BBT_USE_FLASH, }; --- linux-ppc-3.8.0.orig/arch/arm/mach-davinci/board-neuros-osd2.c +++ linux-ppc-3.8.0/arch/arm/mach-davinci/board-neuros-osd2.c @@ -88,6 +88,7 @@ .parts = davinci_ntosd2_nandflash_partition, .nr_parts = ARRAY_SIZE(davinci_ntosd2_nandflash_partition), .ecc_mode = NAND_ECC_HW, + .ecc_bits = 1, .bbt_options = NAND_BBT_USE_FLASH, }; --- linux-ppc-3.8.0.orig/arch/arm/mach-davinci/dma.c +++ linux-ppc-3.8.0/arch/arm/mach-davinci/dma.c @@ -743,6 +743,9 @@ */ int edma_alloc_slot(unsigned ctlr, int slot) { + if (!edma_cc[ctlr]) + return -EINVAL; + if (slot >= 0) slot = EDMA_CHAN_SLOT(slot); --- linux-ppc-3.8.0.orig/arch/arm/mach-davinci/board-dm646x-evm.c +++ linux-ppc-3.8.0/arch/arm/mach-davinci/board-dm646x-evm.c @@ -90,6 +90,7 @@ .parts = davinci_nand_partitions, .nr_parts = ARRAY_SIZE(davinci_nand_partitions), .ecc_mode = NAND_ECC_HW, + .ecc_bits = 1, .options = 0, }; --- linux-ppc-3.8.0.orig/arch/arm/kernel/vmlinux.lds.S +++ linux-ppc-3.8.0/arch/arm/kernel/vmlinux.lds.S @@ -148,6 +148,23 @@ . = ALIGN(PAGE_SIZE); __init_begin = .; #endif + /* + * The vectors and stubs are relocatable code, and the + * only thing that matters is their relative offsets + */ + __vectors_start = .; + .vectors 0 : AT(__vectors_start) { + *(.vectors) + } + . = __vectors_start + SIZEOF(.vectors); + __vectors_end = .; + + __stubs_start = .; + .stubs 0x1000 : AT(__stubs_start) { + *(.stubs) + } + . = __stubs_start + SIZEOF(.stubs); + __stubs_end = .; INIT_TEXT_SECTION(8) .exit.text : { --- linux-ppc-3.8.0.orig/arch/arm/kernel/smp.c +++ linux-ppc-3.8.0/arch/arm/kernel/smp.c @@ -693,6 +693,9 @@ if (freq->flags & CPUFREQ_CONST_LOOPS) return NOTIFY_OK; + if (arm_delay_ops.const_clock) + return NOTIFY_OK; + if (!per_cpu(l_p_j_ref, cpu)) { per_cpu(l_p_j_ref, cpu) = per_cpu(cpu_data, cpu).loops_per_jiffy; --- linux-ppc-3.8.0.orig/arch/arm/kernel/perf_event.c +++ linux-ppc-3.8.0/arch/arm/kernel/perf_event.c @@ -53,7 +53,12 @@ static int armpmu_map_hw_event(const unsigned (*event_map)[PERF_COUNT_HW_MAX], u64 config) { - int mapping = (*event_map)[config]; + int mapping; + + if (config >= PERF_COUNT_HW_MAX) + return -EINVAL; + + mapping = (*event_map)[config]; return mapping == HW_OP_UNSUPPORTED ? -ENOENT : mapping; } @@ -261,7 +266,13 @@ struct arm_pmu *armpmu = to_arm_pmu(event->pmu); struct pmu *leader_pmu = event->group_leader->pmu; - if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF) + if (is_software_event(event)) + return 1; + + if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF) + return 1; + + if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec) return 1; return armpmu->get_event_idx(hw_events, event) >= 0; @@ -576,6 +587,7 @@ return; } + perf_callchain_store(entry, regs->ARM_pc); tail = (struct frame_tail __user *)regs->ARM_fp - 1; while ((entry->nr < PERF_MAX_STACK_DEPTH) && --- linux-ppc-3.8.0.orig/arch/arm/kernel/sched_clock.c +++ linux-ppc-3.8.0/arch/arm/kernel/sched_clock.c @@ -45,12 +45,12 @@ static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read; -static inline u64 cyc_to_ns(u64 cyc, u32 mult, u32 shift) +static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift) { return (cyc * mult) >> shift; } -static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask) +static unsigned long long notrace cyc_to_sched_clock(u32 cyc, u32 mask) { u64 epoch_ns; u32 epoch_cyc; @@ -93,11 +93,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-ppc-3.8.0.orig/arch/arm/kernel/perf_event_v7.c +++ linux-ppc-3.8.0/arch/arm/kernel/perf_event_v7.c @@ -774,7 +774,7 @@ /* * PMXEVTYPER: Event selection reg */ -#define ARMV7_EVTYPE_MASK 0xc00000ff /* Mask for writable bits */ +#define ARMV7_EVTYPE_MASK 0xc80000ff /* Mask for writable bits */ #define ARMV7_EVTYPE_EVENT 0xff /* Mask for EVENT bits */ /* --- linux-ppc-3.8.0.orig/arch/arm/kernel/topology.c +++ linux-ppc-3.8.0/arch/arm/kernel/topology.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -200,6 +201,7 @@ * cpu topology table */ struct cputopo_arm cpu_topology[NR_CPUS]; +EXPORT_SYMBOL_GPL(cpu_topology); const struct cpumask *cpu_coregroup_mask(int cpu) { --- linux-ppc-3.8.0.orig/arch/arm/kernel/traps.c +++ linux-ppc-3.8.0/arch/arm/kernel/traps.c @@ -807,39 +807,54 @@ return; } -static void __init kuser_get_tls_init(unsigned long vectors) +#ifdef CONFIG_KUSER_HELPERS +static void __init kuser_init(void *vectors) { + extern char __kuser_helper_start[], __kuser_helper_end[]; + int kuser_sz = __kuser_helper_end - __kuser_helper_start; + + memcpy(vectors + 0x1000 - kuser_sz, __kuser_helper_start, kuser_sz); + /* * vectors + 0xfe0 = __kuser_get_tls * vectors + 0xfe8 = hardware TLS instruction at 0xffff0fe8 */ if (tls_emu || has_tls_reg) - memcpy((void *)vectors + 0xfe0, (void *)vectors + 0xfe8, 4); + memcpy(vectors + 0xfe0, vectors + 0xfe8, 4); } +#else +static void __init kuser_init(void *vectors) +{ +} +#endif void __init early_trap_init(void *vectors_base) { unsigned long vectors = (unsigned long)vectors_base; extern char __stubs_start[], __stubs_end[]; extern char __vectors_start[], __vectors_end[]; - extern char __kuser_helper_start[], __kuser_helper_end[]; - int kuser_sz = __kuser_helper_end - __kuser_helper_start; + unsigned i; vectors_page = vectors_base; /* + * Poison the vectors page with an undefined instruction. This + * instruction is chosen to be undefined for both ARM and Thumb + * ISAs. The Thumb version is an undefined instruction with a + * branch back to the undefined instruction. + */ + for (i = 0; i < PAGE_SIZE / sizeof(u32); i++) + ((u32 *)vectors_base)[i] = 0xe7fddef1; + + /* * Copy the vectors, stubs and kuser helpers (in entry-armv.S) * into the vector page, mapped at 0xffff0000, and ensure these * are visible to the instruction stream. */ memcpy((void *)vectors, __vectors_start, __vectors_end - __vectors_start); - memcpy((void *)vectors + 0x200, __stubs_start, __stubs_end - __stubs_start); - memcpy((void *)vectors + 0x1000 - kuser_sz, __kuser_helper_start, kuser_sz); + memcpy((void *)vectors + 0x1000, __stubs_start, __stubs_end - __stubs_start); - /* - * Do processor specific fixups for the kuser helpers - */ - kuser_get_tls_init(vectors); + kuser_init(vectors_base); /* * Copy signal return handlers into the vector page, and @@ -848,6 +863,6 @@ memcpy((void *)(vectors + KERN_SIGRETURN_CODE - CONFIG_VECTORS_BASE), sigreturn_codes, sizeof(sigreturn_codes)); - flush_icache_range(vectors, vectors + PAGE_SIZE); + flush_icache_range(vectors, vectors + PAGE_SIZE * 2); modify_domain(DOMAIN_USER, DOMAIN_CLIENT); } --- linux-ppc-3.8.0.orig/arch/arm/kernel/asm-offsets.c +++ linux-ppc-3.8.0/arch/arm/kernel/asm-offsets.c @@ -107,7 +107,7 @@ BLANK(); #endif #ifdef CONFIG_CPU_HAS_ASID - DEFINE(MM_CONTEXT_ID, offsetof(struct mm_struct, context.id)); + DEFINE(MM_CONTEXT_ID, offsetof(struct mm_struct, context.id.counter)); BLANK(); #endif DEFINE(VMA_VM_MM, offsetof(struct vm_area_struct, vm_mm)); --- linux-ppc-3.8.0.orig/arch/arm/kernel/smp_twd.c +++ linux-ppc-3.8.0/arch/arm/kernel/smp_twd.c @@ -31,7 +31,6 @@ static struct clk *twd_clk; static unsigned long twd_timer_rate; -static bool common_setup_called; static DEFINE_PER_CPU(bool, percpu_setup_called); static struct clock_event_device __percpu **twd_evt; @@ -121,7 +120,7 @@ * changing cpu. */ if (flags == POST_RATE_CHANGE) - smp_call_function(twd_update_frequency, + on_each_cpu(twd_update_frequency, (void *)&cnd->new_rate, 1); return NOTIFY_OK; @@ -239,25 +238,28 @@ return IRQ_NONE; } -static struct clk *twd_get_clock(void) +static void twd_get_clock(struct device_node *np) { - struct clk *clk; int err; - clk = clk_get_sys("smp_twd", NULL); - if (IS_ERR(clk)) { - pr_err("smp_twd: clock not found: %d\n", (int)PTR_ERR(clk)); - return clk; + if (np) + twd_clk = of_clk_get(np, 0); + else + twd_clk = clk_get_sys("smp_twd", NULL); + + if (IS_ERR(twd_clk)) { + pr_err("smp_twd: clock not found %d\n", (int) PTR_ERR(twd_clk)); + return; } - err = clk_prepare_enable(clk); + err = clk_prepare_enable(twd_clk); if (err) { pr_err("smp_twd: clock failed to prepare+enable: %d\n", err); - clk_put(clk); - return ERR_PTR(err); + clk_put(twd_clk); + return; } - return clk; + twd_timer_rate = clk_get_rate(twd_clk); } /* @@ -280,26 +282,7 @@ } per_cpu(percpu_setup_called, cpu) = true; - /* - * This stuff only need to be done once for the entire TWD cluster - * during the runtime of the system. - */ - if (!common_setup_called) { - twd_clk = twd_get_clock(); - - /* - * We use IS_ERR_OR_NULL() here, because if the clock stubs - * are active we will get a valid clk reference which is - * however NULL and will return the rate 0. In that case we - * need to calibrate the rate instead. - */ - if (!IS_ERR_OR_NULL(twd_clk)) - twd_timer_rate = clk_get_rate(twd_clk); - else - twd_calibrate_rate(); - - common_setup_called = true; - } + twd_calibrate_rate(); /* * The following is done once per CPU the first time .setup() is @@ -330,7 +313,7 @@ .stop = twd_timer_stop, }; -static int __init twd_local_timer_common_register(void) +static int __init twd_local_timer_common_register(struct device_node *np) { int err; @@ -350,6 +333,8 @@ if (err) goto out_irq; + twd_get_clock(np); + return 0; out_irq: @@ -373,7 +358,7 @@ if (!twd_base) return -ENOMEM; - return twd_local_timer_common_register(); + return twd_local_timer_common_register(NULL); } #ifdef CONFIG_OF @@ -405,7 +390,7 @@ goto out; } - err = twd_local_timer_common_register(); + err = twd_local_timer_common_register(np); out: WARN(err, "twd_local_timer_of_register failed (%d)\n", err); --- linux-ppc-3.8.0.orig/arch/arm/kernel/entry-armv.S +++ linux-ppc-3.8.0/arch/arm/kernel/entry-armv.S @@ -784,6 +784,18 @@ #endif .endm + .macro kuser_pad, sym, size + .if (. - \sym) & 3 + .rept 4 - (. - \sym) & 3 + .byte 0 + .endr + .endif + .rept (\size - (. - \sym)) / 4 + .word 0xe7fddef1 + .endr + .endm + +#ifdef CONFIG_KUSER_HELPERS .align 5 .globl __kuser_helper_start __kuser_helper_start: @@ -874,18 +886,13 @@ #error "incoherent kernel configuration" #endif - /* pad to next slot */ - .rept (16 - (. - __kuser_cmpxchg64)/4) - .word 0 - .endr - - .align 5 + kuser_pad __kuser_cmpxchg64, 64 __kuser_memory_barrier: @ 0xffff0fa0 smp_dmb arm usr_ret lr - .align 5 + kuser_pad __kuser_memory_barrier, 32 __kuser_cmpxchg: @ 0xffff0fc0 @@ -958,13 +965,14 @@ #endif - .align 5 + kuser_pad __kuser_cmpxchg, 32 __kuser_get_tls: @ 0xffff0fe0 ldr r0, [pc, #(16 - 8)] @ read TLS, set in kuser_get_tls_init usr_ret lr mrc p15, 0, r0, c13, c0, 3 @ 0xffff0fe8 hardware TLS code - .rep 4 + kuser_pad __kuser_get_tls, 16 + .rep 3 .word 0 @ 0xffff0ff0 software TLS value, then .endr @ pad up to __kuser_helper_version @@ -974,14 +982,16 @@ .globl __kuser_helper_end __kuser_helper_end: +#endif + THUMB( .thumb ) /* * Vector stubs. * - * This code is copied to 0xffff0200 so we can use branches in the - * vectors, rather than ldr's. Note that this code must not - * exceed 0x300 bytes. + * This code is copied to 0xffff1000 so we can use branches in the + * vectors, rather than ldr's. Note that this code must not exceed + * a page size. * * Common stub entry macro: * Enter in IRQ mode, spsr = SVC/USR CPSR, lr = SVC/USR PC @@ -1028,8 +1038,17 @@ 1: .endm - .globl __stubs_start + .section .stubs, "ax", %progbits __stubs_start: + @ This must be the first word + .word vector_swi + +vector_rst: + ARM( swi SYS_ERROR0 ) + THUMB( svc #0 ) + THUMB( nop ) + b vector_und + /* * Interrupt dispatcher */ @@ -1124,6 +1143,16 @@ .align 5 /*============================================================================= + * Address exception handler + *----------------------------------------------------------------------------- + * These aren't too critical. + * (they're not supposed to happen, and won't happen in 32-bit data mode). + */ + +vector_addrexcptn: + b vector_addrexcptn + +/*============================================================================= * Undefined FIQs *----------------------------------------------------------------------------- * Enter in FIQ mode, spsr = ANY CPSR, lr = ANY PC @@ -1136,45 +1165,16 @@ vector_fiq: subs pc, lr, #4 -/*============================================================================= - * Address exception handler - *----------------------------------------------------------------------------- - * These aren't too critical. - * (they're not supposed to happen, and won't happen in 32-bit data mode). - */ - -vector_addrexcptn: - b vector_addrexcptn - -/* - * We group all the following data together to optimise - * for CPUs with separate I & D caches. - */ - .align 5 - -.LCvswi: - .word vector_swi - - .globl __stubs_end -__stubs_end: - - .equ stubs_offset, __vectors_start + 0x200 - __stubs_start - - .globl __vectors_start + .section .vectors, "ax", %progbits __vectors_start: - ARM( swi SYS_ERROR0 ) - THUMB( svc #0 ) - THUMB( nop ) - W(b) vector_und + stubs_offset - W(ldr) pc, .LCvswi + stubs_offset - W(b) vector_pabt + stubs_offset - W(b) vector_dabt + stubs_offset - W(b) vector_addrexcptn + stubs_offset - W(b) vector_irq + stubs_offset - W(b) vector_fiq + stubs_offset - - .globl __vectors_end -__vectors_end: + W(b) vector_rst + W(b) vector_und + W(ldr) pc, __vectors_start + 0x1000 + W(b) vector_pabt + W(b) vector_dabt + W(b) vector_addrexcptn + W(b) vector_irq + W(b) vector_fiq .data --- linux-ppc-3.8.0.orig/arch/arm/kernel/head.S +++ linux-ppc-3.8.0/arch/arm/kernel/head.S @@ -184,13 +184,22 @@ orr r3, r3, #3 @ PGD block type mov r6, #4 @ PTRS_PER_PGD mov r7, #1 << (55 - 32) @ L_PGD_SWAPPER -1: str r3, [r0], #4 @ set bottom PGD entry bits +1: +#ifdef CONFIG_CPU_ENDIAN_BE8 str r7, [r0], #4 @ set top PGD entry bits + str r3, [r0], #4 @ set bottom PGD entry bits +#else + str r3, [r0], #4 @ set bottom PGD entry bits + str r7, [r0], #4 @ set top PGD entry bits +#endif add r3, r3, #0x1000 @ next PMD table subs r6, r6, #1 bne 1b add r4, r4, #0x1000 @ point to the PMD tables +#ifdef CONFIG_CPU_ENDIAN_BE8 + add r4, r4, #4 @ we only write the bottom word +#endif #endif ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags @@ -258,6 +267,11 @@ addne r6, r6, #1 << SECTION_SHIFT strne r6, [r3] +#if defined(CONFIG_LPAE) && defined(CONFIG_CPU_ENDIAN_BE8) + sub r4, r4, #4 @ Fixup page table pointer + @ for 64-bit descriptors +#endif + #ifdef CONFIG_DEBUG_LL #if !defined(CONFIG_DEBUG_ICEDCC) && !defined(CONFIG_DEBUG_SEMIHOSTING) /* @@ -276,13 +290,17 @@ orr r3, r7, r3, lsl #SECTION_SHIFT #ifdef CONFIG_ARM_LPAE mov r7, #1 << (54 - 32) @ XN +#ifdef CONFIG_CPU_ENDIAN_BE8 + str r7, [r0], #4 + str r3, [r0], #4 #else - orr r3, r3, #PMD_SECT_XN -#endif str r3, [r0], #4 -#ifdef CONFIG_ARM_LPAE str r7, [r0], #4 #endif +#else + orr r3, r3, #PMD_SECT_XN + str r3, [r0], #4 +#endif #else /* CONFIG_DEBUG_ICEDCC || CONFIG_DEBUG_SEMIHOSTING */ /* we don't need any serial debugging mappings */ --- linux-ppc-3.8.0.orig/arch/arm/plat-orion/common.c +++ linux-ppc-3.8.0/arch/arm/plat-orion/common.c @@ -373,7 +373,7 @@ static struct platform_device orion_ge10_shared = { .name = MV643XX_ETH_SHARED_NAME, - .id = 1, + .id = 2, .dev = { .platform_data = &orion_ge10_shared_data, }, @@ -388,8 +388,8 @@ static struct platform_device orion_ge10 = { .name = MV643XX_ETH_NAME, - .id = 1, - .num_resources = 2, + .id = 2, + .num_resources = 1, .resource = orion_ge10_resources, .dev = { .coherent_dma_mask = DMA_BIT_MASK(32), @@ -425,7 +425,7 @@ static struct platform_device orion_ge11_shared = { .name = MV643XX_ETH_SHARED_NAME, - .id = 1, + .id = 3, .dev = { .platform_data = &orion_ge11_shared_data, }, @@ -440,8 +440,8 @@ static struct platform_device orion_ge11 = { .name = MV643XX_ETH_NAME, - .id = 1, - .num_resources = 2, + .id = 3, + .num_resources = 1, .resource = orion_ge11_resources, .dev = { .coherent_dma_mask = DMA_BIT_MASK(32), --- linux-ppc-3.8.0.orig/arch/arm/mach-imx/clk-imx25.c +++ linux-ppc-3.8.0/arch/arm/mach-imx/clk-imx25.c @@ -224,6 +224,9 @@ clk_prepare_enable(clk[emi_ahb]); + /* Clock source for gpt must be derived from AHB */ + clk_set_parent(clk[per5_sel], clk[ahb]); + clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0"); clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); --- linux-ppc-3.8.0.orig/arch/arm/mach-imx/clk-imx6q.c +++ linux-ppc-3.8.0/arch/arm/mach-imx/clk-imx6q.c @@ -436,6 +436,9 @@ for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) clk_prepare_enable(clk[clks_init_on[i]]); + if (IS_ENABLED(CONFIG_SATA_AHCI_PLATFORM)) + clk_prepare_enable(clk[sata_ref_100m]); + /* Set initial power mode */ imx6q_set_lpm(WAIT_CLOCKED); --- linux-ppc-3.8.0.orig/arch/arm/mach-imx/src.c +++ linux-ppc-3.8.0/arch/arm/mach-imx/src.c @@ -43,6 +43,18 @@ src_base + SRC_GPR1 + cpu * 8); } +u32 imx_get_cpu_arg(int cpu) +{ + cpu = cpu_logical_map(cpu); + return readl_relaxed(src_base + SRC_GPR1 + cpu * 8 + 4); +} + +void imx_set_cpu_arg(int cpu, u32 arg) +{ + cpu = cpu_logical_map(cpu); + writel_relaxed(arg, src_base + SRC_GPR1 + cpu * 8 + 4); +} + void imx_src_prepare_restart(void) { u32 val; --- linux-ppc-3.8.0.orig/arch/arm/mach-imx/hotplug.c +++ linux-ppc-3.8.0/arch/arm/mach-imx/hotplug.c @@ -46,11 +46,23 @@ void imx_cpu_die(unsigned int cpu) { cpu_enter_lowpower(); + /* + * We use the cpu jumping argument register to sync with + * imx_cpu_kill() which is running on cpu0 and waiting for + * the register being cleared to kill the cpu. + */ + imx_set_cpu_arg(cpu, ~0); cpu_do_idle(); } int imx_cpu_kill(unsigned int cpu) { + unsigned long timeout = jiffies + msecs_to_jiffies(50); + + while (imx_get_cpu_arg(cpu) == 0) + if (time_after(jiffies, timeout)) + return 0; imx_enable_cpu(cpu, false); + imx_set_cpu_arg(cpu, 0); return 1; } --- linux-ppc-3.8.0.orig/arch/arm/mach-imx/common.h +++ linux-ppc-3.8.0/arch/arm/mach-imx/common.h @@ -116,6 +116,8 @@ extern void imx_enable_cpu(int cpu, bool enable); extern void imx_set_cpu_jump(int cpu, void *jump_addr); +extern u32 imx_get_cpu_arg(int cpu); +extern void imx_set_cpu_arg(int cpu, u32 arg); #ifdef CONFIG_DEBUG_LL extern void imx_lluart_map_io(void); #else --- linux-ppc-3.8.0.orig/arch/arm/mach-imx/clk-imx35.c +++ linux-ppc-3.8.0/arch/arm/mach-imx/clk-imx35.c @@ -257,6 +257,7 @@ clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0"); clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); + clk_register_clkdev(clk[admux_gate], "audmux", NULL); clk_prepare_enable(clk[spba_gate]); clk_prepare_enable(clk[gpio1_gate]); @@ -264,6 +265,8 @@ clk_prepare_enable(clk[gpio3_gate]); clk_prepare_enable(clk[iim_gate]); clk_prepare_enable(clk[emi_gate]); + clk_prepare_enable(clk[max_gate]); + clk_prepare_enable(clk[iomuxc_gate]); /* * SCC is needed to boot via mmc after a watchdog reset. The clock code --- linux-ppc-3.8.0.orig/arch/arm/configs/at91sam9g45_defconfig +++ linux-ppc-3.8.0/arch/arm/configs/at91sam9g45_defconfig @@ -173,7 +173,6 @@ # CONFIG_MMC_BLOCK_BOUNCE is not set CONFIG_SDIO_UART=m CONFIG_MMC_ATMELMCI=y -CONFIG_MMC_ATMELMCI_DMA=y CONFIG_LEDS_ATMEL_PWM=y CONFIG_LEDS_GPIO=y CONFIG_LEDS_TRIGGER_TIMER=y --- linux-ppc-3.8.0.orig/arch/arm/configs/mxs_defconfig +++ linux-ppc-3.8.0/arch/arm/configs/mxs_defconfig @@ -118,6 +118,7 @@ CONFIG_FONTS=y CONFIG_LOGO=y CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_STORAGE=y --- linux-ppc-3.8.0.orig/arch/arm/configs/omap2plus_defconfig +++ linux-ppc-3.8.0/arch/arm/configs/omap2plus_defconfig @@ -20,9 +20,10 @@ CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_OMAP=y +CONFIG_ARCH_OMAP2PLUS=y CONFIG_OMAP_RESET_CLOCKS=y CONFIG_OMAP_MUX_DEBUG=y +CONFIG_ARCH_VEXPRESS_CA9X4=y CONFIG_ARM_THUMBEE=y CONFIG_ARM_ERRATA_411920=y CONFIG_NO_HZ=y @@ -121,6 +122,8 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_DETECT_IRQ=y CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y CONFIG_HW_RANDOM=y CONFIG_I2C_CHARDEV=y CONFIG_SPI=y @@ -194,6 +197,7 @@ CONFIG_MMC=y CONFIG_MMC_UNSAFE_RESUME=y CONFIG_SDIO_UART=y +CONFIG_MMC_ARMMMCI=y CONFIG_MMC_OMAP=y CONFIG_MMC_OMAP_HS=y CONFIG_RTC_CLASS=y --- linux-ppc-3.8.0.orig/arch/arm/include/uapi/asm/Kbuild +++ linux-ppc-3.8.0/arch/arm/include/uapi/asm/Kbuild @@ -1,7 +1,6 @@ # UAPI Header export list include include/uapi/asm-generic/Kbuild.asm -header-y += a.out.h header-y += byteorder.h header-y += fcntl.h header-y += hwcap.h --- linux-ppc-3.8.0.orig/arch/arm/include/asm/cmpxchg.h +++ linux-ppc-3.8.0/arch/arm/include/asm/cmpxchg.h @@ -233,15 +233,15 @@ ((__typeof__(*(ptr)))atomic64_cmpxchg(container_of((ptr), \ atomic64_t, \ counter), \ - (unsigned long)(o), \ - (unsigned long)(n))) + (unsigned long long)(o), \ + (unsigned long long)(n))) #define cmpxchg64_local(ptr, o, n) \ ((__typeof__(*(ptr)))local64_cmpxchg(container_of((ptr), \ local64_t, \ a), \ - (unsigned long)(o), \ - (unsigned long)(n))) + (unsigned long long)(o), \ + (unsigned long long)(n))) #endif /* __LINUX_ARM_ARCH__ >= 6 */ --- linux-ppc-3.8.0.orig/arch/arm/include/asm/percpu.h +++ linux-ppc-3.8.0/arch/arm/include/asm/percpu.h @@ -30,8 +30,15 @@ static inline unsigned long __my_cpu_offset(void) { unsigned long off; - /* Read TPIDRPRW */ - asm("mrc p15, 0, %0, c13, c0, 4" : "=r" (off) : : "memory"); + register unsigned long *sp asm ("sp"); + + /* + * Read TPIDRPRW. + * We want to allow caching the value, so avoid using volatile and + * instead use a fake stack read to hazard against barrier(). + */ + asm("mrc p15, 0, %0, c13, c0, 4" : "=r" (off) : "Q" (*sp)); + return off; } #define __my_cpu_offset __my_cpu_offset() --- linux-ppc-3.8.0.orig/arch/arm/include/asm/cacheflush.h +++ linux-ppc-3.8.0/arch/arm/include/asm/cacheflush.h @@ -320,9 +320,7 @@ } #define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE -static inline void flush_kernel_dcache_page(struct page *page) -{ -} +extern void flush_kernel_dcache_page(struct page *); #define flush_dcache_mmap_lock(mapping) \ spin_lock_irq(&(mapping)->tree_lock) --- linux-ppc-3.8.0.orig/arch/arm/include/asm/processor.h +++ linux-ppc-3.8.0/arch/arm/include/asm/processor.h @@ -54,7 +54,6 @@ #define start_thread(regs,pc,sp) \ ({ \ - unsigned long *stack = (unsigned long *)sp; \ memset(regs->uregs, 0, sizeof(regs->uregs)); \ if (current->personality & ADDR_LIMIT_32BIT) \ regs->ARM_cpsr = USR_MODE; \ @@ -65,9 +64,6 @@ regs->ARM_cpsr |= PSR_ENDSTATE; \ regs->ARM_pc = pc & ~1; /* pc */ \ regs->ARM_sp = sp; /* sp */ \ - regs->ARM_r2 = stack[2]; /* r2 (envp) */ \ - regs->ARM_r1 = stack[1]; /* r1 (argv) */ \ - regs->ARM_r0 = stack[0]; /* r0 (argc) */ \ nommu_start_thread(regs); \ }) --- linux-ppc-3.8.0.orig/arch/arm/include/asm/tlb.h +++ linux-ppc-3.8.0/arch/arm/include/asm/tlb.h @@ -33,18 +33,6 @@ #include #include -/* - * We need to delay page freeing for SMP as other CPUs can access pages - * which have been removed but not yet had their TLB entries invalidated. - * Also, as ARMv7 speculative prefetch can drag new entries into the TLB, - * we need to apply this same delaying tactic to ensure correct operation. - */ -#if defined(CONFIG_SMP) || defined(CONFIG_CPU_32v7) -#define tlb_fast_mode(tlb) 0 -#else -#define tlb_fast_mode(tlb) 1 -#endif - #define MMU_GATHER_BUNDLE 8 /* @@ -55,6 +43,7 @@ struct mm_struct *mm; unsigned int fullmm; struct vm_area_struct *vma; + unsigned long start, end; unsigned long range_start; unsigned long range_end; unsigned int nr; @@ -112,19 +101,19 @@ static inline void tlb_flush_mmu(struct mmu_gather *tlb) { tlb_flush(tlb); - if (!tlb_fast_mode(tlb)) { - free_pages_and_swap_cache(tlb->pages, tlb->nr); - tlb->nr = 0; - if (tlb->pages == tlb->local) - __tlb_alloc_page(tlb); - } + free_pages_and_swap_cache(tlb->pages, tlb->nr); + tlb->nr = 0; + if (tlb->pages == tlb->local) + __tlb_alloc_page(tlb); } static inline void -tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int fullmm) +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) { tlb->mm = mm; - tlb->fullmm = fullmm; + tlb->fullmm = !(start | (end+1)); + tlb->start = start; + tlb->end = end; tlb->vma = NULL; tlb->max = ARRAY_SIZE(tlb->local); tlb->pages = tlb->local; @@ -178,11 +167,6 @@ static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page) { - if (tlb_fast_mode(tlb)) { - free_page_and_swap_cache(page); - return 1; /* avoid calling tlb_flush_mmu */ - } - tlb->pages[tlb->nr++] = page; VM_BUG_ON(tlb->nr > tlb->max); return tlb->max - tlb->nr; --- linux-ppc-3.8.0.orig/arch/arm/include/asm/signal.h +++ linux-ppc-3.8.0/arch/arm/include/asm/signal.h @@ -29,6 +29,7 @@ __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- linux-ppc-3.8.0.orig/arch/arm/include/asm/thread_info.h +++ linux-ppc-3.8.0/arch/arm/include/asm/thread_info.h @@ -155,7 +155,6 @@ #define TIF_USING_IWMMXT 17 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */ #define TIF_RESTORE_SIGMASK 20 -#define TIF_SWITCH_MM 22 /* deferred switch_mm */ #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) --- linux-ppc-3.8.0.orig/arch/arm/include/asm/mmu_context.h +++ linux-ppc-3.8.0/arch/arm/include/asm/mmu_context.h @@ -25,7 +25,7 @@ #ifdef CONFIG_CPU_HAS_ASID void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk); -#define init_new_context(tsk,mm) ({ mm->context.id = 0; }) +#define init_new_context(tsk,mm) ({ atomic64_set(&mm->context.id, 0); 0; }) #else /* !CONFIG_CPU_HAS_ASID */ @@ -45,7 +45,7 @@ * on non-ASID CPUs, the old mm will remain valid until the * finish_arch_post_lock_switch() call. */ - set_ti_thread_flag(task_thread_info(tsk), TIF_SWITCH_MM); + mm->context.switch_pending = 1; else cpu_switch_mm(mm->pgd, mm); } @@ -54,9 +54,21 @@ finish_arch_post_lock_switch static inline void finish_arch_post_lock_switch(void) { - if (test_and_clear_thread_flag(TIF_SWITCH_MM)) { - struct mm_struct *mm = current->mm; - cpu_switch_mm(mm->pgd, mm); + struct mm_struct *mm = current->mm; + + if (mm && mm->context.switch_pending) { + /* + * Preemption must be disabled during cpu_switch_mm() as we + * have some stateful cache flush implementations. Check + * switch_pending again in case we were preempted and the + * switch to this mm was already done. + */ + preempt_disable(); + if (mm->context.switch_pending) { + mm->context.switch_pending = 0; + cpu_switch_mm(mm->pgd, mm); + } + preempt_enable_no_resched(); } } --- linux-ppc-3.8.0.orig/arch/arm/include/asm/delay.h +++ linux-ppc-3.8.0/arch/arm/include/asm/delay.h @@ -24,6 +24,7 @@ void (*delay)(unsigned long); void (*const_udelay)(unsigned long); void (*udelay)(unsigned long); + bool const_clock; } arm_delay_ops; #define __delay(n) arm_delay_ops.delay(n) --- linux-ppc-3.8.0.orig/arch/arm/include/asm/mmu.h +++ linux-ppc-3.8.0/arch/arm/include/asm/mmu.h @@ -5,15 +5,17 @@ typedef struct { #ifdef CONFIG_CPU_HAS_ASID - u64 id; + atomic64_t id; +#else + int switch_pending; #endif - unsigned int vmalloc_seq; + unsigned int vmalloc_seq; } mm_context_t; #ifdef CONFIG_CPU_HAS_ASID #define ASID_BITS 8 #define ASID_MASK ((~0ULL) << ASID_BITS) -#define ASID(mm) ((mm)->context.id & ~ASID_MASK) +#define ASID(mm) ((mm)->context.id.counter & ~ASID_MASK) #else #define ASID(mm) (0) #endif @@ -26,7 +28,7 @@ * modified for 2.6 by Hyok S. Choi */ typedef struct { - unsigned long end_brk; + unsigned long end_brk; } mm_context_t; #endif --- linux-ppc-3.8.0.orig/arch/arm/include/asm/pgtable.h +++ linux-ppc-3.8.0/arch/arm/include/asm/pgtable.h @@ -61,6 +61,15 @@ #define FIRST_USER_ADDRESS PAGE_SIZE /* + * Use TASK_SIZE as the ceiling argument for free_pgtables() and + * free_pgd_range() to avoid freeing the modules pmd when LPAE is enabled (pmd + * page shared between user and kernel). + */ +#ifdef CONFIG_ARM_LPAE +#define USER_PGTABLES_CEILING TASK_SIZE +#endif + +/* * The pgprot_* and protection_map entries will be fixed up in runtime * to include the cachable and bufferable bits based on memory policy, * as well as any architecture dependent bits like global/ASID and SMP @@ -240,7 +249,8 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { - const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | L_PTE_NONE; + const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | + L_PTE_NONE | L_PTE_VALID; pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); return pte; } --- linux-ppc-3.8.0.orig/arch/arm/include/asm/hardware/iop3xx.h +++ linux-ppc-3.8.0/arch/arm/include/asm/hardware/iop3xx.h @@ -37,7 +37,7 @@ * IOP3XX processor registers */ #define IOP3XX_PERIPHERAL_PHYS_BASE 0xffffe000 -#define IOP3XX_PERIPHERAL_VIRT_BASE 0xfeffe000 +#define IOP3XX_PERIPHERAL_VIRT_BASE 0xfedfe000 #define IOP3XX_PERIPHERAL_SIZE 0x00002000 #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\ IOP3XX_PERIPHERAL_SIZE - 1) --- linux-ppc-3.8.0.orig/arch/arm/include/debug/omap2plus.S +++ linux-ppc-3.8.0/arch/arm/include/debug/omap2plus.S @@ -0,0 +1,190 @@ +/* + * Debugging macro include header + * + * Copyright (C) 1994-1999 Russell King + * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * +*/ + +#include + +/* OMAP2 serial ports */ +#define OMAP2_UART1_BASE 0x4806a000 +#define OMAP2_UART2_BASE 0x4806c000 +#define OMAP2_UART3_BASE 0x4806e000 + +/* OMAP3 serial ports */ +#define OMAP3_UART1_BASE OMAP2_UART1_BASE +#define OMAP3_UART2_BASE OMAP2_UART2_BASE +#define OMAP3_UART3_BASE 0x49020000 +#define OMAP3_UART4_BASE 0x49042000 /* Only on 36xx */ +#define OMAP3_UART4_AM35XX_BASE 0x4809E000 /* Only on AM35xx */ + +/* OMAP4 serial ports */ +#define OMAP4_UART1_BASE OMAP2_UART1_BASE +#define OMAP4_UART2_BASE OMAP2_UART2_BASE +#define OMAP4_UART3_BASE 0x48020000 +#define OMAP4_UART4_BASE 0x4806e000 + +/* TI81XX serial ports */ +#define TI81XX_UART1_BASE 0x48020000 +#define TI81XX_UART2_BASE 0x48022000 +#define TI81XX_UART3_BASE 0x48024000 + +/* AM3505/3517 UART4 */ +#define AM35XX_UART4_BASE 0x4809E000 /* Only on AM3505/3517 */ + +/* AM33XX serial port */ +#define AM33XX_UART1_BASE 0x44E09000 + +/* OMAP5 serial ports */ +#define OMAP5_UART1_BASE OMAP2_UART1_BASE +#define OMAP5_UART2_BASE OMAP2_UART2_BASE +#define OMAP5_UART3_BASE OMAP4_UART3_BASE +#define OMAP5_UART4_BASE OMAP4_UART4_BASE +#define OMAP5_UART5_BASE 0x48066000 +#define OMAP5_UART6_BASE 0x48068000 + +/* External port on Zoom2/3 */ +#define ZOOM_UART_BASE 0x10000000 +#define ZOOM_UART_VIRT 0xfa400000 + +#define OMAP_PORT_SHIFT 2 +#define ZOOM_PORT_SHIFT 1 + +#define UART_OFFSET(addr) ((addr) & 0x00ffffff) + + .pushsection .data +omap_uart_phys: .word 0 +omap_uart_virt: .word 0 +omap_uart_lsr: .word 0 + .popsection + + .macro addruart, rp, rv, tmp + + /* Use omap_uart_phys/virt if already configured */ +10: adr \rp, 99f @ get effective addr of 99f + ldr \rv, [\rp] @ get absolute addr of 99f + sub \rv, \rv, \rp @ offset between the two + ldr \rp, [\rp, #4] @ abs addr of omap_uart_phys + sub \tmp, \rp, \rv @ make it effective + ldr \rp, [\tmp, #0] @ omap_uart_phys + ldr \rv, [\tmp, #4] @ omap_uart_virt + cmp \rp, #0 @ is port configured? + cmpne \rv, #0 + bne 100f @ already configured + + /* Configure the UART offset from the phys/virt base */ +#ifdef CONFIG_DEBUG_OMAP2UART1 + mov \rp, #UART_OFFSET(OMAP2_UART1_BASE) @ omap2/3/4 + b 98f +#endif +#ifdef CONFIG_DEBUG_OMAP2UART2 + mov \rp, #UART_OFFSET(OMAP2_UART2_BASE) @ omap2/3/4 + b 98f +#endif +#ifdef CONFIG_DEBUG_OMAP2UART3 + mov \rp, #UART_OFFSET(OMAP2_UART3_BASE) + b 98f +#endif +#ifdef CONFIG_DEBUG_OMAP3UART3 + mov \rp, #UART_OFFSET(OMAP3_UART1_BASE) + add \rp, \rp, #0x00fb0000 + add \rp, \rp, #0x00006000 @ OMAP3_UART3_BASE + b 98f +#endif +#ifdef CONFIG_DEBUG_OMAP4UART3 + mov \rp, #UART_OFFSET(OMAP4_UART3_BASE) + b 98f +#endif +#ifdef CONFIG_DEBUG_OMAP3UART4 + mov \rp, #UART_OFFSET(OMAP3_UART1_BASE) + add \rp, \rp, #0x00fb0000 + add \rp, \rp, #0x00028000 @ OMAP3_UART4_BASE + b 98f +#endif +#ifdef CONFIG_DEBUG_OMAP4UART4 + mov \rp, #UART_OFFSET(OMAP4_UART4_BASE) + b 98f +#endif +#ifdef CONFIG_DEBUG_TI81XXUART1 + mov \rp, #UART_OFFSET(TI81XX_UART1_BASE) + b 98f +#endif +#ifdef CONFIG_DEBUG_TI81XXUART2 + mov \rp, #UART_OFFSET(TI81XX_UART2_BASE) + b 98f +#endif +#ifdef CONFIG_DEBUG_TI81XXUART3 + mov \rp, #UART_OFFSET(TI81XX_UART3_BASE) + b 98f +#endif +#ifdef CONFIG_DEBUG_AM33XXUART1 + ldr \rp, =AM33XX_UART1_BASE + and \rp, \rp, #0x00ffffff + b 97f +#endif +#ifdef CONFIG_DEBUG_ZOOM_UART + ldr \rp, =ZOOM_UART_BASE + str \rp, [\tmp, #0] @ omap_uart_phys + ldr \rp, =ZOOM_UART_VIRT + str \rp, [\tmp, #4] @ omap_uart_virt + mov \rp, #(UART_LSR << ZOOM_PORT_SHIFT) + str \rp, [\tmp, #8] @ omap_uart_lsr +#endif + b 10b + + /* AM33XX: Store both phys and virt address for the uart */ +97: add \rp, \rp, #0x44000000 @ phys base + str \rp, [\tmp, #0] @ omap_uart_phys + sub \rp, \rp, #0x44000000 @ phys base + add \rp, \rp, #0xf9000000 @ virt base + str \rp, [\tmp, #4] @ omap_uart_virt + mov \rp, #(UART_LSR << OMAP_PORT_SHIFT) + str \rp, [\tmp, #8] @ omap_uart_lsr + + b 10b + + /* Store both phys and virt address for the uart */ +98: add \rp, \rp, #0x48000000 @ phys base + str \rp, [\tmp, #0] @ omap_uart_phys + sub \rp, \rp, #0x48000000 @ phys base + add \rp, \rp, #0xfa000000 @ virt base + str \rp, [\tmp, #4] @ omap_uart_virt + mov \rp, #(UART_LSR << OMAP_PORT_SHIFT) + str \rp, [\tmp, #8] @ omap_uart_lsr + + b 10b + + .align +99: .word . + .word omap_uart_phys + .ltorg + +100: /* Pass the UART_LSR reg address */ + ldr \tmp, [\tmp, #8] @ omap_uart_lsr + add \rp, \rp, \tmp + add \rv, \rv, \tmp + .endm + + .macro senduart,rd,rx + orr \rd, \rd, \rx, lsl #24 @ preserve LSR reg offset + bic \rx, \rx, #0xff @ get base (THR) reg address + strb \rd, [\rx] @ send lower byte of rd + orr \rx, \rx, \rd, lsr #24 @ restore original rx (LSR) + bic \rd, \rd, #(0xff << 24) @ restore original rd + .endm + + .macro busyuart,rd,rx +1001: ldrb \rd, [\rx] @ rx contains UART_LSR address + and \rd, \rd, #(UART_LSR_TEMT | UART_LSR_THRE) + teq \rd, #(UART_LSR_TEMT | UART_LSR_THRE) + bne 1001b + .endm + + .macro waituart,rd,rx + .endm --- linux-ppc-3.8.0.orig/arch/arm/crypto/sha1-armv4-large.S +++ linux-ppc-3.8.0/arch/arm/crypto/sha1-armv4-large.S @@ -51,13 +51,12 @@ @ Profiler-assisted and platform-specific optimization resulted in 10% @ improvement on Cortex A8 core and 12.2 cycles per byte. -.text +#include -.global sha1_block_data_order -.type sha1_block_data_order,%function +.text .align 2 -sha1_block_data_order: +ENTRY(sha1_block_data_order) stmdb sp!,{r4-r12,lr} add r2,r1,r2,lsl#6 @ r2 to point at the end of r1 ldmia r0,{r3,r4,r5,r6,r7} @@ -194,8 +193,9 @@ eor r10,r10,r7,ror#2 @ F_00_19(B,C,D) str r9,[r14,#-4]! add r3,r3,r10 @ E+=F_00_19(B,C,D) - teq r14,sp + cmp r14,sp bne .L_00_15 @ [((11+4)*5+2)*3] + sub sp,sp,#25*4 #if __ARM_ARCH__<7 ldrb r10,[r1,#2] ldrb r9,[r1,#3] @@ -291,7 +291,6 @@ add r3,r3,r10 @ E+=F_00_19(B,C,D) ldr r8,.LK_20_39 @ [+15+16*4] - sub sp,sp,#25*4 cmn sp,#0 @ [+3], clear carry to denote 20_39 .L_20_39_or_60_79: ldr r9,[r14,#15*4] @@ -374,7 +373,9 @@ @ F_xx_xx add r3,r3,r9 @ E+=X[i] add r3,r3,r10 @ E+=F_20_39(B,C,D) - teq r14,sp @ preserve carry + ARM( teq r14,sp ) @ preserve carry + THUMB( mov r11,sp ) + THUMB( teq r14,r11 ) @ preserve carry bne .L_20_39_or_60_79 @ [+((12+3)*5+2)*4] bcs .L_done @ [+((12+3)*5+2)*4], spare 300 bytes @@ -466,7 +467,7 @@ add r3,r3,r9 @ E+=X[i] add r3,r3,r10 @ E+=F_40_59(B,C,D) add r3,r3,r11,ror#2 - teq r14,sp + cmp r14,sp bne .L_40_59 @ [+((12+5)*5+2)*4] ldr r8,.LK_60_79 @@ -485,19 +486,12 @@ teq r1,r2 bne .Lloop @ [+18], total 1307 -#if __ARM_ARCH__>=5 ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet - .word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif .align 2 .LK_00_19: .word 0x5a827999 .LK_20_39: .word 0x6ed9eba1 .LK_40_59: .word 0x8f1bbcdc .LK_60_79: .word 0xca62c1d6 -.size sha1_block_data_order,.-sha1_block_data_order +ENDPROC(sha1_block_data_order) .asciz "SHA1 block transform for ARMv4, CRYPTOGAMS by " .align 2 --- linux-ppc-3.8.0.orig/arch/arm/crypto/aes-armv4.S +++ linux-ppc-3.8.0/arch/arm/crypto/aes-armv4.S @@ -34,8 +34,9 @@ @ A little glue here to select the correct code below for the ARM CPU @ that is being targetted. +#include + .text -.code 32 .type AES_Te,%object .align 5 @@ -145,10 +146,8 @@ @ void AES_encrypt(const unsigned char *in, unsigned char *out, @ const AES_KEY *key) { -.global AES_encrypt -.type AES_encrypt,%function .align 5 -AES_encrypt: +ENTRY(AES_encrypt) sub r3,pc,#8 @ AES_encrypt stmdb sp!,{r1,r4-r12,lr} mov r12,r0 @ inp @@ -239,15 +238,8 @@ strb r6,[r12,#14] strb r3,[r12,#15] #endif -#if __ARM_ARCH__>=5 ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet - .word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif -.size AES_encrypt,.-AES_encrypt +ENDPROC(AES_encrypt) .type _armv4_AES_encrypt,%function .align 2 @@ -386,10 +378,8 @@ ldr pc,[sp],#4 @ pop and return .size _armv4_AES_encrypt,.-_armv4_AES_encrypt -.global private_AES_set_encrypt_key -.type private_AES_set_encrypt_key,%function .align 5 -private_AES_set_encrypt_key: +ENTRY(private_AES_set_encrypt_key) _armv4_AES_set_encrypt_key: sub r3,pc,#8 @ AES_set_encrypt_key teq r0,#0 @@ -658,15 +648,11 @@ .Ldone: mov r0,#0 ldmia sp!,{r4-r12,lr} -.Labrt: tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet - .word 0xe12fff1e @ interoperable with Thumb ISA:-) -.size private_AES_set_encrypt_key,.-private_AES_set_encrypt_key +.Labrt: mov pc,lr +ENDPROC(private_AES_set_encrypt_key) -.global private_AES_set_decrypt_key -.type private_AES_set_decrypt_key,%function .align 5 -private_AES_set_decrypt_key: +ENTRY(private_AES_set_decrypt_key) str lr,[sp,#-4]! @ push lr #if 0 @ kernel does both of these in setkey so optimise this bit out by @@ -748,15 +734,8 @@ bne .Lmix mov r0,#0 -#if __ARM_ARCH__>=5 ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet - .word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif -.size private_AES_set_decrypt_key,.-private_AES_set_decrypt_key +ENDPROC(private_AES_set_decrypt_key) .type AES_Td,%object .align 5 @@ -862,10 +841,8 @@ @ void AES_decrypt(const unsigned char *in, unsigned char *out, @ const AES_KEY *key) { -.global AES_decrypt -.type AES_decrypt,%function .align 5 -AES_decrypt: +ENTRY(AES_decrypt) sub r3,pc,#8 @ AES_decrypt stmdb sp!,{r1,r4-r12,lr} mov r12,r0 @ inp @@ -956,15 +933,8 @@ strb r6,[r12,#14] strb r3,[r12,#15] #endif -#if __ARM_ARCH__>=5 ldmia sp!,{r4-r12,pc} -#else - ldmia sp!,{r4-r12,lr} - tst lr,#1 - moveq pc,lr @ be binary compatible with V4, yet - .word 0xe12fff1e @ interoperable with Thumb ISA:-) -#endif -.size AES_decrypt,.-AES_decrypt +ENDPROC(AES_decrypt) .type _armv4_AES_decrypt,%function .align 2 @@ -1064,7 +1034,9 @@ and r9,lr,r1,lsr#8 ldrb r7,[r10,r7] @ Td4[s1>>0] - ldrb r1,[r10,r1,lsr#24] @ Td4[s1>>24] + ARM( ldrb r1,[r10,r1,lsr#24] ) @ Td4[s1>>24] + THUMB( add r1,r10,r1,lsr#24 ) @ Td4[s1>>24] + THUMB( ldrb r1,[r1] ) ldrb r8,[r10,r8] @ Td4[s1>>16] eor r0,r7,r0,lsl#24 ldrb r9,[r10,r9] @ Td4[s1>>8] @@ -1077,7 +1049,9 @@ ldrb r8,[r10,r8] @ Td4[s2>>0] and r9,lr,r2,lsr#16 - ldrb r2,[r10,r2,lsr#24] @ Td4[s2>>24] + ARM( ldrb r2,[r10,r2,lsr#24] ) @ Td4[s2>>24] + THUMB( add r2,r10,r2,lsr#24 ) @ Td4[s2>>24] + THUMB( ldrb r2,[r2] ) eor r0,r0,r7,lsl#8 ldrb r9,[r10,r9] @ Td4[s2>>16] eor r1,r8,r1,lsl#16 @@ -1090,7 +1064,9 @@ and r9,lr,r3 @ i2 ldrb r9,[r10,r9] @ Td4[s3>>0] - ldrb r3,[r10,r3,lsr#24] @ Td4[s3>>24] + ARM( ldrb r3,[r10,r3,lsr#24] ) @ Td4[s3>>24] + THUMB( add r3,r10,r3,lsr#24 ) @ Td4[s3>>24] + THUMB( ldrb r3,[r3] ) eor r0,r0,r7,lsl#16 ldr r7,[r11,#0] eor r1,r1,r8,lsl#8 --- linux-ppc-3.8.0.orig/arch/arm/mach-s5pv210/clock.c +++ linux-ppc-3.8.0/arch/arm/mach-s5pv210/clock.c @@ -214,11 +214,6 @@ .name = "pcmcdclk", }; -static struct clk dummy_apb_pclk = { - .name = "apb_pclk", - .id = -1, -}; - static struct clk *clkset_vpllsrc_list[] = { [0] = &clk_fin_vpll, [1] = &clk_sclk_hdmi27m, @@ -305,18 +300,6 @@ static struct clk init_clocks_off[] = { { - .name = "dma", - .devname = "dma-pl330.0", - .parent = &clk_hclk_psys.clk, - .enable = s5pv210_clk_ip0_ctrl, - .ctrlbit = (1 << 3), - }, { - .name = "dma", - .devname = "dma-pl330.1", - .parent = &clk_hclk_psys.clk, - .enable = s5pv210_clk_ip0_ctrl, - .ctrlbit = (1 << 4), - }, { .name = "rot", .parent = &clk_hclk_dsys.clk, .enable = s5pv210_clk_ip0_ctrl, @@ -573,6 +556,20 @@ .ctrlbit = (1<<19), }; +static struct clk clk_pdma0 = { + .name = "pdma0", + .parent = &clk_hclk_psys.clk, + .enable = s5pv210_clk_ip0_ctrl, + .ctrlbit = (1 << 3), +}; + +static struct clk clk_pdma1 = { + .name = "pdma1", + .parent = &clk_hclk_psys.clk, + .enable = s5pv210_clk_ip0_ctrl, + .ctrlbit = (1 << 4), +}; + static struct clk *clkset_uart_list[] = { [6] = &clk_mout_mpll.clk, [7] = &clk_mout_epll.clk, @@ -1075,6 +1072,8 @@ &clk_hsmmc1, &clk_hsmmc2, &clk_hsmmc3, + &clk_pdma0, + &clk_pdma1, }; /* Clock initialisation code */ @@ -1333,6 +1332,8 @@ CLKDEV_INIT(NULL, "spi_busclk0", &clk_p), CLKDEV_INIT("s5pv210-spi.0", "spi_busclk1", &clk_sclk_spi0.clk), CLKDEV_INIT("s5pv210-spi.1", "spi_busclk1", &clk_sclk_spi1.clk), + CLKDEV_INIT("dma-pl330.0", "apb_pclk", &clk_pdma0), + CLKDEV_INIT("dma-pl330.1", "apb_pclk", &clk_pdma1), }; void __init s5pv210_register_clocks(void) @@ -1361,6 +1362,5 @@ for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++) s3c_disable_clocks(clk_cdev[ptr], 1); - s3c24xx_register_clock(&dummy_apb_pclk); s3c_pwmclk_init(); } --- linux-ppc-3.8.0.orig/arch/arm/mach-ixp4xx/vulcan-setup.c +++ linux-ppc-3.8.0/arch/arm/mach-ixp4xx/vulcan-setup.c @@ -163,6 +163,7 @@ static struct w1_gpio_platform_data vulcan_w1_gpio_pdata = { .pin = 14, + .ext_pullup_enable_pin = -EINVAL, }; static struct platform_device vulcan_w1_gpio = { --- linux-ppc-3.8.0.orig/arch/arm/mach-omap1/i2c.c +++ linux-ppc-3.8.0/arch/arm/mach-omap1/i2c.c @@ -91,3 +91,9 @@ return platform_device_register(pdev); } + +static int __init omap_i2c_cmdline(void) +{ + return omap_register_i2c_bus_cmdline(); +} +subsys_initcall(omap_i2c_cmdline); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap1/dma.c +++ linux-ppc-3.8.0/arch/arm/mach-omap1/dma.c @@ -24,7 +24,7 @@ #include #include #include - +#include #include #include @@ -270,11 +270,17 @@ return errata; } +static const struct platform_device_info omap_dma_dev_info = { + .name = "omap-dma-engine", + .id = -1, + .dma_mask = DMA_BIT_MASK(32), +}; + static int __init omap1_system_dma_init(void) { struct omap_system_dma_plat_info *p; struct omap_dma_dev_attr *d; - struct platform_device *pdev; + struct platform_device *pdev, *dma_pdev; int ret; pdev = platform_device_alloc("omap_dma_system", 0); @@ -380,8 +386,16 @@ dma_common_ch_start = CPC; dma_common_ch_end = COLOR; + dma_pdev = platform_device_register_full(&omap_dma_dev_info); + if (IS_ERR(dma_pdev)) { + ret = PTR_ERR(dma_pdev); + goto exit_release_pdev; + } + return ret; +exit_release_pdev: + platform_device_del(pdev); exit_release_chan: kfree(d->chan); exit_release_d: --- linux-ppc-3.8.0.orig/arch/arm/plat-omap/Makefile +++ linux-ppc-3.8.0/arch/arm/plat-omap/Makefile @@ -2,6 +2,8 @@ # Makefile for the linux kernel. # +ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-omap/include + # Common support obj-y := sram.o dma.o counter_32k.o obj-m := --- linux-ppc-3.8.0.orig/arch/arm/plat-omap/i2c.c +++ linux-ppc-3.8.0/arch/arm/plat-omap/i2c.c @@ -68,7 +68,7 @@ * Register busses defined in command line but that are not registered with * omap_register_i2c_bus from board initialization code. */ -static int __init omap_register_i2c_bus_cmdline(void) +int __init omap_register_i2c_bus_cmdline(void) { int i, err = 0; @@ -83,7 +83,6 @@ out: return err; } -subsys_initcall(omap_register_i2c_bus_cmdline); /** * omap_register_i2c_bus - register I2C bus with device descriptors --- linux-ppc-3.8.0.orig/arch/arm/plat-omap/Kconfig +++ linux-ppc-3.8.0/arch/arm/plat-omap/Kconfig @@ -5,36 +5,6 @@ config ARCH_OMAP_OTG bool -choice - prompt "OMAP System Type" - default ARCH_OMAP2PLUS - -config ARCH_OMAP1 - bool "TI OMAP1" - select CLKDEV_LOOKUP - select CLKSRC_MMIO - select GENERIC_IRQ_CHIP - select HAVE_IDE - select IRQ_DOMAIN - select NEED_MACH_IO_H if PCCARD - select NEED_MACH_MEMORY_H - help - "Systems based on omap7xx, omap15xx or omap16xx" - -config ARCH_OMAP2PLUS - bool "TI OMAP2/3/4" - select CLKDEV_LOOKUP - select GENERIC_IRQ_CHIP - select OMAP_DM_TIMER - select PINCTRL - select PROC_DEVICETREE if PROC_FS - select SPARSE_IRQ - select USE_OF - help - "Systems based on OMAP2, OMAP3, OMAP4 or OMAP5" - -endchoice - comment "OMAP Feature Selections" config OMAP_DEBUG_DEVICES @@ -118,7 +88,7 @@ config OMAP_MBOX_FWK tristate "Mailbox framework support" - depends on ARCH_OMAP + depends on ARCH_OMAP && !ARCH_MULTIPLATFORM help Say Y here if you want to use OMAP Mailbox framework support for DSP, IVA1.0 and IVA2 in OMAP1/2/3. --- linux-ppc-3.8.0.orig/arch/arm/plat-omap/include/plat/i2c.h +++ linux-ppc-3.8.0/arch/arm/plat-omap/include/plat/i2c.h @@ -32,6 +32,7 @@ extern int omap_register_i2c_bus(int bus_id, u32 clkrate, struct i2c_board_info const *info, unsigned len); +extern int omap_register_i2c_bus_cmdline(void); #else static inline int omap_register_i2c_bus(int bus_id, u32 clkrate, struct i2c_board_info const *info, @@ -39,6 +40,11 @@ { return 0; } + +static inline int omap_register_i2c_bus_cmdline(void) +{ + return 0; +} #endif struct omap_hwmod; --- linux-ppc-3.8.0.orig/arch/arm/mach-integrator/integrator_ap.c +++ linux-ppc-3.8.0/arch/arm/mach-integrator/integrator_ap.c @@ -613,7 +613,6 @@ static void __init ap_map_io_atag(void) { iotable_init(ap_io_desc_atag, ARRAY_SIZE(ap_io_desc_atag)); - ap_syscon_base = __io_address(INTEGRATOR_SC_BASE); ap_map_io(); } @@ -685,6 +684,7 @@ platform_device_register(&cfi_flash_device); + ap_syscon_base = __io_address(INTEGRATOR_SC_BASE); sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET); for (i = 0; i < 4; i++) { struct lm_device *lmdev; --- linux-ppc-3.8.0.orig/arch/arm/mm/cache-l2x0.c +++ linux-ppc-3.8.0/arch/arm/mm/cache-l2x0.c @@ -299,7 +299,7 @@ int lockregs; int i; - switch (cache_id) { + switch (cache_id & L2X0_CACHE_ID_PART_MASK) { case L2X0_CACHE_ID_PART_L310: lockregs = 8; break; @@ -333,15 +333,14 @@ if (cache_id_part_number_from_dt) cache_id = cache_id_part_number_from_dt; else - cache_id = readl_relaxed(l2x0_base + L2X0_CACHE_ID) - & L2X0_CACHE_ID_PART_MASK; + cache_id = readl_relaxed(l2x0_base + L2X0_CACHE_ID); aux = readl_relaxed(l2x0_base + L2X0_AUX_CTRL); aux &= aux_mask; aux |= aux_val; /* Determine the number of ways */ - switch (cache_id) { + switch (cache_id & L2X0_CACHE_ID_PART_MASK) { case L2X0_CACHE_ID_PART_L310: if (aux & (1 << 16)) ways = 16; @@ -725,7 +724,6 @@ .flush_all = l2x0_flush_all, .inv_all = l2x0_inv_all, .disable = l2x0_disable, - .set_debug = pl310_set_debug, }, }; @@ -814,9 +812,8 @@ data->save(); of_init = true; - l2x0_init(l2x0_base, aux_val, aux_mask); - memcpy(&outer_cache, &data->outer_cache, sizeof(outer_cache)); + l2x0_init(l2x0_base, aux_val, aux_mask); return 0; } --- linux-ppc-3.8.0.orig/arch/arm/mm/flush.c +++ linux-ppc-3.8.0/arch/arm/mm/flush.c @@ -298,6 +298,39 @@ EXPORT_SYMBOL(flush_dcache_page); /* + * Ensure cache coherency for the kernel mapping of this page. We can + * assume that the page is pinned via kmap. + * + * If the page only exists in the page cache and there are no user + * space mappings, this is a no-op since the page was already marked + * dirty at creation. Otherwise, we need to flush the dirty kernel + * cache lines directly. + */ +void flush_kernel_dcache_page(struct page *page) +{ + if (cache_is_vivt() || cache_is_vipt_aliasing()) { + struct address_space *mapping; + + mapping = page_mapping(page); + + if (!mapping || mapping_mapped(mapping)) { + void *addr; + + addr = page_address(page); + /* + * kmap_atomic() doesn't set the page virtual + * address for highmem pages, and + * kunmap_atomic() takes care of cache + * flushing already. + */ + if (!IS_ENABLED(CONFIG_HIGHMEM) || addr) + __cpuc_flush_dcache_area(addr, PAGE_SIZE); + } + } +} +EXPORT_SYMBOL(flush_kernel_dcache_page); + +/* * Flush an anonymous page so that users of get_user_pages() * can safely access the data. The expected sequence is: * --- linux-ppc-3.8.0.orig/arch/arm/mm/alignment.c +++ linux-ppc-3.8.0/arch/arm/mm/alignment.c @@ -749,7 +749,6 @@ unsigned long instr = 0, instrptr; int (*handler)(unsigned long addr, unsigned long instr, struct pt_regs *regs); unsigned int type; - mm_segment_t fs; unsigned int fault; u16 tinstr = 0; int isize = 4; @@ -760,16 +759,15 @@ instrptr = instruction_pointer(regs); - fs = get_fs(); - set_fs(KERNEL_DS); if (thumb_mode(regs)) { - fault = __get_user(tinstr, (u16 *)(instrptr & ~1)); + u16 *ptr = (u16 *)(instrptr & ~1); + fault = probe_kernel_address(ptr, tinstr); if (!fault) { if (cpu_architecture() >= CPU_ARCH_ARMv7 && IS_T32(tinstr)) { /* Thumb-2 32-bit */ u16 tinst2 = 0; - fault = __get_user(tinst2, (u16 *)(instrptr+2)); + fault = probe_kernel_address(ptr + 1, tinst2); instr = (tinstr << 16) | tinst2; thumb2_32b = 1; } else { @@ -778,8 +776,7 @@ } } } else - fault = __get_user(instr, (u32 *)instrptr); - set_fs(fs); + fault = probe_kernel_address(instrptr, instr); if (fault) { type = TYPE_FAULT; --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-arm926.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-arm926.S @@ -402,7 +402,7 @@ /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ .globl cpu_arm926_suspend_size .equ cpu_arm926_suspend_size, 4 * 3 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_arm926_do_suspend) stmfd sp!, {r4 - r6, lr} mrc p15, 0, r4, c13, c0, 0 @ PID --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-v6.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-v6.S @@ -138,7 +138,7 @@ /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */ .globl cpu_v6_suspend_size .equ cpu_v6_suspend_size, 4 * 6 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_v6_do_suspend) stmfd sp!, {r4 - r9, lr} mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID --- linux-ppc-3.8.0.orig/arch/arm/mm/cache-v7.S +++ linux-ppc-3.8.0/arch/arm/mm/cache-v7.S @@ -46,6 +46,14 @@ mrc p15, 1, r0, c0, c0, 1 @ read clidr, r0 = clidr ALT_SMP(ands r3, r0, #(7 << 21)) @ extract LoUIS from clidr ALT_UP(ands r3, r0, #(7 << 27)) @ extract LoUU from clidr +#ifdef CONFIG_ARM_ERRATA_643719 + ALT_SMP(mrceq p15, 0, r2, c0, c0, 0) @ read main ID register + ALT_UP(moveq pc, lr) @ LoUU is zero, so nothing to do + ldreq r1, =0x410fc090 @ ID of ARM Cortex A9 r0p? + biceq r2, r2, #0x0000000f @ clear minor revision number + teqeq r2, r1 @ test for errata affected core and if so... + orreqs r3, #(1 << 21) @ fix LoUIS value (and set flags state to 'ne') +#endif ALT_SMP(mov r3, r3, lsr #20) @ r3 = LoUIS * 2 ALT_UP(mov r3, r3, lsr #26) @ r3 = LoUU * 2 moveq pc, lr @ return if level == 0 --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-xsc3.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-xsc3.S @@ -413,7 +413,7 @@ .globl cpu_xsc3_suspend_size .equ cpu_xsc3_suspend_size, 4 * 6 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_xsc3_do_suspend) stmfd sp!, {r4 - r9, lr} mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode --- linux-ppc-3.8.0.orig/arch/arm/mm/context.c +++ linux-ppc-3.8.0/arch/arm/mm/context.c @@ -149,9 +149,9 @@ return 0; } -static void new_context(struct mm_struct *mm, unsigned int cpu) +static u64 new_context(struct mm_struct *mm, unsigned int cpu) { - u64 asid = mm->context.id; + u64 asid = atomic64_read(&mm->context.id); u64 generation = atomic64_read(&asid_generation); if (asid != 0 && is_reserved_asid(asid)) { @@ -178,13 +178,14 @@ cpumask_clear(mm_cpumask(mm)); } - mm->context.id = asid; + return asid; } void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk) { unsigned long flags; unsigned int cpu = smp_processor_id(); + u64 asid; if (unlikely(mm->context.vmalloc_seq != init_mm.context.vmalloc_seq)) __check_vmalloc_seq(mm); @@ -195,20 +196,24 @@ */ cpu_set_reserved_ttbr0(); - if (!((mm->context.id ^ atomic64_read(&asid_generation)) >> ASID_BITS) - && atomic64_xchg(&per_cpu(active_asids, cpu), mm->context.id)) + asid = atomic64_read(&mm->context.id); + if (!((asid ^ atomic64_read(&asid_generation)) >> ASID_BITS) + && atomic64_xchg(&per_cpu(active_asids, cpu), asid)) goto switch_mm_fastpath; raw_spin_lock_irqsave(&cpu_asid_lock, flags); /* Check that our ASID belongs to the current generation. */ - if ((mm->context.id ^ atomic64_read(&asid_generation)) >> ASID_BITS) - new_context(mm, cpu); - - atomic64_set(&per_cpu(active_asids, cpu), mm->context.id); - cpumask_set_cpu(cpu, mm_cpumask(mm)); + asid = atomic64_read(&mm->context.id); + if ((asid ^ atomic64_read(&asid_generation)) >> ASID_BITS) { + asid = new_context(mm, cpu); + atomic64_set(&mm->context.id, asid); + } if (cpumask_test_and_clear_cpu(cpu, &tlb_flush_pending)) local_flush_tlb_all(); + + atomic64_set(&per_cpu(active_asids, cpu), asid); + cpumask_set_cpu(cpu, mm_cpumask(mm)); raw_spin_unlock_irqrestore(&cpu_asid_lock, flags); switch_mm_fastpath: --- linux-ppc-3.8.0.orig/arch/arm/mm/cache-feroceon-l2.c +++ linux-ppc-3.8.0/arch/arm/mm/cache-feroceon-l2.c @@ -343,6 +343,7 @@ outer_cache.inv_range = feroceon_l2_inv_range; outer_cache.clean_range = feroceon_l2_clean_range; outer_cache.flush_range = feroceon_l2_flush_range; + outer_cache.inv_all = l2_inv_all; enable_l2(); --- linux-ppc-3.8.0.orig/arch/arm/mm/nommu.c +++ linux-ppc-3.8.0/arch/arm/mm/nommu.c @@ -57,6 +57,12 @@ } EXPORT_SYMBOL(flush_dcache_page); +void flush_kernel_dcache_page(struct page *page) +{ + __cpuc_flush_dcache_area(page_address(page), PAGE_SIZE); +} +EXPORT_SYMBOL(flush_kernel_dcache_page); + void copy_to_user_page(struct vm_area_struct *vma, struct page *page, unsigned long uaddr, void *dst, const void *src, unsigned long len) --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-arm920.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-arm920.S @@ -387,7 +387,7 @@ /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ .globl cpu_arm920_suspend_size .equ cpu_arm920_suspend_size, 4 * 3 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_arm920_do_suspend) stmfd sp!, {r4 - r6, lr} mrc p15, 0, r4, c13, c0, 0 @ PID --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-sa1100.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-sa1100.S @@ -172,7 +172,7 @@ .globl cpu_sa1100_suspend_size .equ cpu_sa1100_suspend_size, 4 * 3 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_sa1100_do_suspend) stmfd sp!, {r4 - r6, lr} mrc p15, 0, r4, c3, c0, 0 @ domain ID --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-xscale.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-xscale.S @@ -528,7 +528,7 @@ .globl cpu_xscale_suspend_size .equ cpu_xscale_suspend_size, 4 * 6 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_xscale_do_suspend) stmfd sp!, {r4 - r9, lr} mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode --- linux-ppc-3.8.0.orig/arch/arm/mm/dma-mapping.c +++ linux-ppc-3.8.0/arch/arm/mm/dma-mapping.c @@ -330,6 +330,7 @@ { struct dma_pool *pool = &atomic_pool; pgprot_t prot = pgprot_dmacoherent(pgprot_kernel); + gfp_t gfp = GFP_KERNEL | GFP_DMA; unsigned long nr_pages = pool->size >> PAGE_SHIFT; unsigned long *bitmap; struct page *page; @@ -348,8 +349,8 @@ if (IS_ENABLED(CONFIG_CMA)) ptr = __alloc_from_contiguous(NULL, pool->size, prot, &page); else - ptr = __alloc_remap_buffer(NULL, pool->size, GFP_KERNEL, prot, - &page, NULL); + ptr = __alloc_remap_buffer(NULL, pool->size, gfp, prot, &page, + NULL); if (ptr) { int i; --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-mohawk.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-mohawk.S @@ -350,7 +350,7 @@ .globl cpu_mohawk_suspend_size .equ cpu_mohawk_suspend_size, 4 * 6 -#ifdef CONFIG_PM_SLEEP +#ifdef CONFIG_ARM_CPU_SUSPEND ENTRY(cpu_mohawk_do_suspend) stmfd sp!, {r4 - r9, lr} mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode --- linux-ppc-3.8.0.orig/arch/arm/mm/proc-v7.S +++ linux-ppc-3.8.0/arch/arm/mm/proc-v7.S @@ -407,8 +407,8 @@ */ .type __v7_pj4b_proc_info, #object __v7_pj4b_proc_info: - .long 0x562f5840 - .long 0xfffffff0 + .long 0x560f5800 + .long 0xff0fff00 __v7_proc __v7_pj4b_setup .size __v7_pj4b_proc_info, . - __v7_pj4b_proc_info #endif /* CONFIG_ARM_LPAE */ --- linux-ppc-3.8.0.orig/arch/arm/mm/mmu.c +++ linux-ppc-3.8.0/arch/arm/mm/mmu.c @@ -1114,7 +1114,7 @@ /* * Allocate the vector page early. */ - vectors = early_alloc(PAGE_SIZE); + vectors = early_alloc(PAGE_SIZE * 2); early_trap_init(vectors); @@ -1164,10 +1164,18 @@ if (!vectors_high()) { map.virtual = 0; + map.length = PAGE_SIZE * 2; map.type = MT_LOW_VECTORS; create_mapping(&map); } + /* Now create a kernel read-only mapping */ + map.pfn += 1; + map.virtual = 0xffff0000 + PAGE_SIZE; + map.length = PAGE_SIZE; + map.type = MT_LOW_VECTORS; + create_mapping(&map); + /* * Ask the machine support to map in the statically mapped devices. */ --- linux-ppc-3.8.0.orig/arch/arm/mm/Kconfig +++ linux-ppc-3.8.0/arch/arm/mm/Kconfig @@ -404,24 +404,28 @@ select CPU_USE_DOMAINS if MMU select NEEDS_SYSCALL_FOR_CMPXCHG if SMP select TLS_REG_EMUL if SMP || !MMU + select NEED_KUSER_HELPERS config CPU_32v4 bool select CPU_USE_DOMAINS if MMU select NEEDS_SYSCALL_FOR_CMPXCHG if SMP select TLS_REG_EMUL if SMP || !MMU + select NEED_KUSER_HELPERS config CPU_32v4T bool select CPU_USE_DOMAINS if MMU select NEEDS_SYSCALL_FOR_CMPXCHG if SMP select TLS_REG_EMUL if SMP || !MMU + select NEED_KUSER_HELPERS config CPU_32v5 bool select CPU_USE_DOMAINS if MMU select NEEDS_SYSCALL_FOR_CMPXCHG if SMP select TLS_REG_EMUL if SMP || !MMU + select NEED_KUSER_HELPERS config CPU_32v6 bool @@ -756,6 +760,7 @@ config TLS_REG_EMUL bool + select NEED_KUSER_HELPERS help An SMP system using a pre-ARMv6 processor (there are apparently a few prototypes like that in existence) and therefore access to @@ -763,11 +768,43 @@ config NEEDS_SYSCALL_FOR_CMPXCHG bool + select NEED_KUSER_HELPERS help SMP on a pre-ARMv6 processor? Well OK then. Forget about fast user space cmpxchg support. It is just not possible. +config NEED_KUSER_HELPERS + bool + +config KUSER_HELPERS + bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS + default y + help + Warning: disabling this option may break user programs. + + Provide kuser helpers in the vector page. The kernel provides + helper code to userspace in read only form at a fixed location + in the high vector page to allow userspace to be independent of + the CPU type fitted to the system. This permits binaries to be + run on ARMv4 through to ARMv7 without modification. + + See Documentation/arm/kernel_user_helpers.txt for details. + + However, the fixed address nature of these helpers can be used + by ROP (return orientated programming) authors when creating + exploits. + + If all of the binaries and libraries which run on your platform + are built specifically for your platform, and make no use of + these helpers, then you can turn this option off to hinder + such exploits. However, in that case, if a binary or library + relying on those helpers is run, it will receive a SIGILL signal, + which will terminate the program. + + Say N here only if you are absolutely certain that you do not + need these helpers; otherwise, the safe option is to say Y. + config DMA_CACHE_RWFO bool "Enable read/write for ownership DMA cache maintenance" depends on CPU_V6K && SMP --- linux-ppc-3.8.0.orig/arch/arm/mach-s3c24xx/pm-h1940.S +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/arm/mach-s3c24xx/sleep-s3c2410.S +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/arm/mach-s3c24xx/sleep-s3c2412.S +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/arm/mach-s3c24xx/include/mach/entry-macro.S +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/arm/mach-s3c24xx/include/mach/debug-macro.S +++ linux-ppc-3.8.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-ppc-3.8.0.orig/arch/arm/mach-u300/include/mach/u300-regs.h +++ linux-ppc-3.8.0/arch/arm/mach-u300/include/mach/u300-regs.h @@ -95,7 +95,7 @@ #define U300_SPI_BASE (U300_FAST_PER_PHYS_BASE+0x6000) /* Fast UART1 on U335 only */ -#define U300_UART1_BASE (U300_SLOW_PER_PHYS_BASE+0x7000) +#define U300_UART1_BASE (U300_FAST_PER_PHYS_BASE+0x7000) /* * SLOW peripherals --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/gpmc.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/gpmc.c @@ -1205,7 +1205,7 @@ } -postcore_initcall(gpmc_init); +omap_postcore_initcall(gpmc_init); module_exit(gpmc_exit); static int __init omap_gpmc_init(void) @@ -1225,7 +1225,7 @@ return IS_ERR(pdev) ? PTR_ERR(pdev) : 0; } -postcore_initcall(omap_gpmc_init); +omap_postcore_initcall(omap_gpmc_init); static irqreturn_t gpmc_handle_irq(int irq, void *dev) { --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/board-omap4panda.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/board-omap4panda.c @@ -47,6 +47,16 @@ #include "common-board-devices.h" #include "dss-common.h" +/* + * These device paths represent the onboard USB <-> Ethernet bridge, and + * the WLAN module on Panda, both of which need their random or all-zeros + * mac address replacing with a per-cpu stable generated one + */ +static const char * const panda_fixup_mac_device_paths[] = { + "usb1/1-1/1-1.1/1-1.1:1.0", + "mmc1:0001:2", +}; + #define GPIO_HUB_POWER 1 #define GPIO_HUB_NRESET 62 #define GPIO_WIFI_PMENA 43 @@ -435,6 +445,10 @@ omap4_mux_init(board_mux, NULL, package); omap_panda_wlan_data.irq = gpio_to_irq(GPIO_WIFI_IRQ); + + omap_register_mac_device_fixup_paths(panda_fixup_mac_device_paths, + ARRAY_SIZE(panda_fixup_mac_device_paths)); + ret = wl12xx_set_platform_data(&omap_panda_wlan_data); if (ret) pr_err("error setting wl12xx data: %d\n", ret); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/drm.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/drm.c @@ -63,6 +63,6 @@ } -arch_initcall(omap_init_drm); +omap_arch_initcall(omap_init_drm); #endif --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/Makefile +++ linux-ppc-3.8.0/arch/arm/mach-omap2/Makefile @@ -2,6 +2,9 @@ # Makefile for the linux kernel. # +ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ + -I$(srctree)/arch/arm/plat-omap/include + # Common support obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \ common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \ --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/clock3xxx.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/clock3xxx.c @@ -94,6 +94,6 @@ return ret; } -arch_initcall(omap3xxx_clk_arch_init); +omap_arch_initcall(omap3xxx_clk_arch_init); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/wd_timer.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/wd_timer.c @@ -130,4 +130,4 @@ dev_name, oh->name); return 0; } -subsys_initcall(omap_init_wdt); +omap_subsys_initcall(omap_init_wdt); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/omap_device.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/omap_device.c @@ -89,6 +89,7 @@ #include #include +#include "soc.h" #include "omap_device.h" #include "omap_hwmod.h" @@ -1259,7 +1260,7 @@ bus_register_notifier(&platform_bus_type, &platform_nb); return 0; } -core_initcall(omap_device_init); +omap_core_initcall(omap_device_init); /** * omap_device_late_idle - idle devices without drivers @@ -1297,4 +1298,4 @@ bus_for_each_dev(&platform_bus_type, NULL, NULL, omap_device_late_idle); return 0; } -late_initcall(omap_device_late_init); +omap_late_initcall(omap_device_late_init); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/pm-debug.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/pm-debug.c @@ -279,6 +279,6 @@ return 0; } -arch_initcall(pm_dbg_init); +omap_arch_initcall(pm_dbg_init); #endif --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/clock2xxx.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/clock2xxx.c @@ -52,6 +52,6 @@ return ret; } -arch_initcall(omap2xxx_clk_arch_init); +omap_arch_initcall(omap2xxx_clk_arch_init); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/hdq1w.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/hdq1w.c @@ -27,6 +27,7 @@ #include #include +#include "soc.h" #include "omap_hwmod.h" #include "omap_device.h" #include "hdq1w.h" @@ -93,4 +94,4 @@ return 0; } -arch_initcall(omap_init_hdq); +omap_arch_initcall(omap_init_hdq); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/opp3xxx_data.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/opp3xxx_data.c @@ -168,4 +168,4 @@ return r; } -device_initcall(omap3_opp_init); +omap_device_initcall(omap3_opp_init); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/soc.h +++ linux-ppc-3.8.0/arch/arm/mach-omap2/soc.h @@ -42,6 +42,9 @@ #undef MULTI_OMAP2 #undef OMAP_NAME +#ifdef CONFIG_ARCH_MULTIPLATFORM +#define MULTI_OMAP2 +#endif #ifdef CONFIG_SOC_OMAP2420 # ifdef OMAP_NAME # undef MULTI_OMAP2 @@ -112,6 +115,11 @@ */ unsigned int omap_rev(void); +static inline int soc_is_omap(void) +{ + return omap_rev() != 0; +} + /* * Get the CPU revision for OMAP devices */ @@ -465,5 +473,26 @@ OMAP4_HAS_FEATURE(perf_silicon, PERF_SILICON) +/* + * We need to make sure omap initcalls don't run when + * multiplatform kernels are booted on other SoCs. + */ +#define omap_initcall(level, fn) \ +static int __init __used __##fn(void) \ +{ \ + if (!soc_is_omap()) \ + return 0; \ + return fn(); \ +} \ +level(__##fn); + +#define omap_early_initcall(fn) omap_initcall(early_initcall, fn) +#define omap_core_initcall(fn) omap_initcall(core_initcall, fn) +#define omap_postcore_initcall(fn) omap_initcall(postcore_initcall, fn) +#define omap_arch_initcall(fn) omap_initcall(arch_initcall, fn) +#define omap_subsys_initcall(fn) omap_initcall(subsys_initcall, fn) +#define omap_device_initcall(fn) omap_initcall(device_initcall, fn) +#define omap_late_initcall(fn) omap_initcall(late_initcall, fn) + #endif /* __ASSEMBLY__ */ --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/gpio.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/gpio.c @@ -23,6 +23,7 @@ #include #include +#include "soc.h" #include "omap_hwmod.h" #include "omap_device.h" #include "omap-pm.h" @@ -147,7 +148,7 @@ /* * gpio_init needs to be done before * machine_init functions access gpio APIs. - * Hence gpio_init is a postcore_initcall. + * Hence gpio_init is a omap_postcore_initcall. */ static int __init omap2_gpio_init(void) { @@ -157,4 +158,4 @@ return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init, NULL); } -postcore_initcall(omap2_gpio_init); +omap_postcore_initcall(omap2_gpio_init); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/pm.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/pm.c @@ -328,6 +328,12 @@ omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva"); } +static inline void omap_init_cpufreq(void) +{ + struct platform_device_info devinfo = { .name = "omap-cpufreq", }; + platform_device_register_full(&devinfo); +} + static int __init omap2_common_pm_init(void) { if (!of_have_populated_dt()) @@ -336,7 +342,7 @@ return 0; } -postcore_initcall(omap2_common_pm_init); +omap_postcore_initcall(omap2_common_pm_init); int __init omap2_common_pm_late_init(void) { @@ -359,6 +365,9 @@ /* Smartreflex device init */ omap_devinit_smartreflex(); + /* cpufreq dummy device instantiation */ + omap_init_cpufreq(); + #ifdef CONFIG_SUSPEND suspend_set_ops(&omap_pm_ops); #endif --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/hwspinlock.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/hwspinlock.c @@ -57,4 +57,4 @@ return retval; } /* early board code might need to reserve specific hwspinlock instances */ -postcore_initcall(hwspinlocks_init); +omap_postcore_initcall(hwspinlocks_init); --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/omap_hwmod.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/omap_hwmod.c @@ -3303,7 +3303,7 @@ return 0; } -core_initcall(omap_hwmod_setup_all); +omap_core_initcall(omap_hwmod_setup_all); /** * omap_hwmod_enable - enable an omap_hwmod --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/board-rx51-peripherals.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/board-rx51-peripherals.c @@ -73,11 +73,11 @@ #define LIS302_IRQ1_GPIO 181 #define LIS302_IRQ2_GPIO 180 /* Not yet in use */ -/* list all spi devices here */ +/* List all SPI devices here. Note that the list/probe order seems to matter! */ enum { RX51_SPI_WL1251, - RX51_SPI_MIPID, /* LCD panel */ RX51_SPI_TSC2005, /* Touch Controller */ + RX51_SPI_MIPID, /* LCD panel */ }; static struct wl12xx_platform_data wl1251_pdata; --- linux-ppc-3.8.0.orig/arch/arm/mach-omap2/board-rx51-video.c +++ linux-ppc-3.8.0/arch/arm/mach-omap2/board-rx51-video.c @@ -18,6 +18,7 @@ #include